<?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>233865</bug_id>
          
          <creation_ts>2021-12-05 22:51:22 -0800</creation_ts>
          <short_desc>SourceBufferParser should be using contiguous shared buffer</short_desc>
          <delta_ts>2021-12-14 17:26:42 -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>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233677</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820530</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 22:51:22 -0800</bug_when>
    <thetext>The SourceBufferParser uses SharedBuffer but assert that those contain a single segment at most.

Follow-up on bug 233677.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820533</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-05 23:06:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/86085253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820537</commentid>
    <comment_count>2</comment_count>
      <attachid>446004</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 23:25:40 -0800</bug_when>
    <thetext>Created attachment 446004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820541</commentid>
    <comment_count>3</comment_count>
      <attachid>446007</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 23:29:51 -0800</bug_when>
    <thetext>Created attachment 446007
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820937</commentid>
    <comment_count>4</comment_count>
      <attachid>446137</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 01:34:17 -0800</bug_when>
    <thetext>Created attachment 446137
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824009</commentid>
    <comment_count>5</comment_count>
      <attachid>446004</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-12-14 08:39:06 -0800</bug_when>
    <thetext>Comment on attachment 446004
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Covered by existing tests, no observable differences.

It would be helpful to have a brief description of why this change was made here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824180</commentid>
    <comment_count>6</comment_count>
      <attachid>447178</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-14 16:50:58 -0800</bug_when>
    <thetext>Created attachment 447178
Patch

Improve ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824181</commentid>
    <comment_count>7</comment_count>
      <attachid>447179</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-14 16:53:48 -0800</bug_when>
    <thetext>Created attachment 447179
Patch

Add Reviewed-By line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824188</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-14 17:26:29 -0800</bug_when>
    <thetext>Committed r287059 (245255@main): &lt;https://commits.webkit.org/245255@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447179.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446004</attachid>
            <date>2021-12-05 23:25:40 -0800</date>
            <delta_ts>2021-12-14 16:50:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233865-20211206182539.patch</filename>
            <type>text/plain</type>
            <size>17550</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY4Y2I4YzNhNzA5NDZj
ZGJiYTg3YjI0NjkyOGI5Y2MwZDI3NjYyMi4uNTIyZWU3YTU3MzI1ODRkMzc3NzJjN2IxYTU4MDNj
MjYyYzY1ZjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTA1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU291cmNlQnVmZmVyUGFy
c2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBkaWZm
ZXJlbmNlcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJl
ZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHA6CisKIDIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwZjE3NmU5
Yzk4ZGE0NDMxYzMyNDU0OWEwNjFkZDJmZjM3ZGViMjMuLjY2ZjJiOTQwNTM1NmMyN2I2ODRkMTkw
MzAwMWI2MGZmMjEzNzMzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTItMDUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTb3VyY2VCdWZm
ZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMgc2hhcmVkIGJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmg6CisKIDIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggZDM3OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNS4uMmIzY2RlMzYwODI0
NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAgICAvLyBodHRw
czovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9vcAogICAgIC8v
IFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9rZWQsIHJ1biB0
aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOwog
ICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlzIGVtcHR5LCB0aGVuIGp1
bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAgaWYgKCFhcHBlbmREYXRh
IHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IGQ0Yzg1
NzljMGJiZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcuLjUyMGMwNzc1Njk2YTJmMGUyZTcz
MDA3MzVlOGM5Nzc0OTVmMWE2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3ZpZGVyOwogCi0gICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBUaW1lciBtX2Fw
cGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJh
Y2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4IGYzMjE0Mjk1MWIxNzk5NmU2Y2UxNjc1
NjMxNmJmZDQ3M2ZhYTRlZGYuLmU4YjE5YmYzNGViYTIzYjg1NzIwN2JlODhjZTFiNDViZjhmMmNj
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBB
dWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAK
IHB1YmxpYzoKLSAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAg
ICBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwCmluZGV4IGQzZTFiNTgwNGU4NWE5OTExY2YyMGZjZWQzNGJmMjU1YTMxNDQzNGIuLjU0OTlm
MzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBA
IC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVT
YW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVwZGF0ZUhpZ2hl
c3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
OjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggNmI3
ZDk1ZTUyYjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2Zi4uZWY4NmE0NzM2OTM3MWM4M2U4
ODNiMjliYmI2YjlhYjk2ZWNhNWYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDksNyArNDksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJj
ZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFBhcnNl
clN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKaW5kZXggZWFkMDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OS4u
NzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1YzA3ZjhlODhhOTM1Y2QwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0xNTMs
NyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKLSAgICB2
b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZp
bmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
ZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAyNGFlMGUxNDA2MDE5MTQzZmFk
NGYxNTI5ZTY4ZWQ0OWI0MTY1M2NhLi4zYTI4NjdhMWFjMjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5
NDhmYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
ZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNw
cAppbmRleCBjOGE4MDYxMjIwNTNmNjQ4YWRkYjAyYWMzODljZTcxNDM2OGRiYmEwLi5mNzQ3ZDgw
ZmI2MWQzMGZjNTAyMmU2ODJkNjM1NjEzM2QzY2E2OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXI6OnNldE1pbmlt
dW1BdWRpb1NhbXBsZUR1cmF0aW9uKGZsb2F0KQogewogfQogCi1Tb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OlNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTEwMSw3
ICsxMDEsNyBAQCBzaXplX3QgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpzaXplKCkgY29u
c3QKICAgICAgICAgICAgIHJldHVybiBjbGFtcFRvPHNpemVfdD4oTVRQbHVnaW5CeXRlU291cmNl
R2V0TGVuZ3RoKGJ5dGVTb3VyY2UuZ2V0KCkpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAg
ICBbXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAg
W10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAg
YXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJl
YWRFcnJvcj4geyBSZWFkRXJyb3I6OkZhdGFsRXJyb3IgfTsKICAgICAgICAgfSwKICNlbmRpZgot
ICAgICAgICBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlYWRSZXN1bHQKICAgICAgICAgewogICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVz
dGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9SZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXpl
VG9SZWFkOwpAQCAtMTMzLDcgKzEzMyw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAg
KTsKIH0KIAotUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6
U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpA
QCAtMTQyLDI4ICsxNDIsMjggQEAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1
ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHJlYWRSZXN1bHQg
PSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5kYXRhKCkpOwogICAgICAgICAgICAgaWYg
KCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZFJlc3VsdC52
YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4
Y2hhbmdlKGJ1ZmZlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAog
I2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCi0gICAgICAgIFsmXShjb25zdCBSZXRh
aW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJl
Zj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZl
ci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA3Mjk3YTc5MTRh
NzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkLi41MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0
ZDIzMTU1OTRhODg4MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDUsNyArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgTWVkaWFT
YW1wbGU7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CiBwdWJsaWM6CkBAIC02OSwx
MSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAg
ICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5k
aWYKLSAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
ICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVu
dCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtl
U2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVu
dCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2ls
bCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZl
ci4KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBwdWJs
aWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgICAgIFJldGFp
blB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2VuZGlmCi0gICAgICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+CiAgICAg
ICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKaW5kZXggOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUyNS4uZGU2ZGVi
ZTJiZDRjYTEzNjA0MGZjMGMzYTQ1ZGM0ZWEzOWY0ODlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKQEAgLTM2NSw5ICszNjUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjprV291bGRCbG9jayk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
RnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKKyAgICBzdGF0aWMg
dm9pZCBGcmVlU2hhcmVkQnVmZmVyKHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7
Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihy
ZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1
ZmZlcio+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKQEAgLTM4
OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21l
bnQoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50
U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwogICAg
ICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAg
ICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3QgZGVzdGlu
YXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOCwxMSArNDA4LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gcmVhZFJlc3VsdC52YWx1ZSgp
OwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVu
dCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xl
IERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGRvZXNuJ3QgaGF2ZSB0aHJlYWQtc2FmZSByZWZjb3VudGluZywgYXMgc3VjaCB3ZSBtdXN0
IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIERhdGFTZWdtZW50IGluc3RlYWQuCiAgICAgICAgICAg
ICAgICAgLy8gVE9ETzogY291bGQgd2Ugb25seSBjcmVhdGUgYSBuZXcgQ01CbG9ja0J1ZmZlciBp
ZiB0aGUgYmFja2VuZCBtZW1vcnkgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgb25lPwotICAg
ICAgICAgICAgICAgIGF1dG8gZmlyc3RTZWdtZW50ID0gc2hhcmVkQnVmZmVyLT5iZWdpbigpLT5z
ZWdtZW50OwotICAgICAgICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjptaW48c2l6ZV90
PihudW1Ub1JlYWQsIGZpcnN0U2VnbWVudC0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQpOworICAgICAgICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjptaW48c2l6ZV90Pihu
dW1Ub1JlYWQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQp
OwogICAgICAgICAgICAgICAgIC8vIEZyb20gQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNl
IGRvY3VtZW50YXRpb246CiAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGZvciA2NC1iaXQg
YXJjaGl0ZWN0dXJlcywgdGhpcyBzdHJ1Y3QgY29udGFpbnMgbWlzYWxpZ25lZCBmdW5jdGlvbiBw
b2ludGVycy4KICAgICAgICAgICAgICAgICAvLyBUbyBhdm9pZCBsaW5rLXRpbWUgaXNzdWVzLCBp
dCBpcyByZWNvbW1lbmRlZCB0aGF0IGNsaWVudHMgZmlsbCBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxv
Y2tTb3VyY2UncyBmdW5jdGlvbiBwb2ludGVyIGZpZWxkcwpAQCAtNDIwLDEwICs0MTcsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSBh
bGxvY2F0b3I7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnZlcnNpb24gPSAwOwogICAgICAg
ICAgICAgICAgIGFsbG9jYXRvci5BbGxvY2F0ZUJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgICAg
ICAgICBhbGxvY2F0b3IuRnJlZUJsb2NrID0gRnJlZURhdGFTZWdtZW50OwotICAgICAgICAgICAg
ICAgIGFsbG9jYXRvci5yZWZDb24gPSBmaXJzdFNlZ21lbnQucHRyKCk7Ci0gICAgICAgICAgICAg
ICAgZmlyc3RTZWdtZW50LT5yZWYoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6
Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhudWxscHRyLCBzdGF0aWNfY2FzdDx2
b2lkKj4oY29uc3RfY2FzdDx1aW50OF90Kj4oZmlyc3RTZWdtZW50LT5kYXRhKCkpKSwgZmlyc3RT
ZWdtZW50LT5zaXplKCksIG51bGxwdHIsICZhbGxvY2F0b3IsIG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50LCBjYW5SZWFkLCAwLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGFsbG9j
YXRvci5GcmVlQmxvY2sgPSBGcmVlU2hhcmVkQnVmZmVyOworICAgICAgICAgICAgICAgIGFsbG9j
YXRvci5yZWZDb24gPSBzaGFyZWRCdWZmZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgc2hhcmVk
QnVmZmVyLT5yZWYoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1
ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhudWxscHRyLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29u
c3RfY2FzdDx1aW50OF90Kj4oc2hhcmVkQnVmZmVyLT5kYXRhKCkpKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCksIG51bGxwdHIsICZhbGxvY2F0b3IsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBjYW5S
ZWFkLCAwLCAmcmF3QmxvY2tCdWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgIT0ga0NN
QmxvY2tCdWZmZXJOb0VycikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0
dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gY2FuUmVh
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDAwNWEzN2NjMjZlYzRjMDkw
MWJmNGYzNzEyMjM4NjVkZTJkMTY2YmYuLjk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdhYmE1YWVkMmM3
YTk0Yzc0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgs
NyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZSgpCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlLmgKaW5kZXggZWE1ZmEzZWMzNmMyYjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2Ni4u
MzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJj
ZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7
Ci0gICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUo
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446007</attachid>
            <date>2021-12-05 23:29:51 -0800</date>
            <delta_ts>2021-12-07 01:34:17 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>751087</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0Li43MDgwYTZjZjdhNmQgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
Y29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0x
MS0yMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1Bl
cmZvcm1hbmNlIHRlc3RdW2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxh
eW91dCBpbnNpZGUgYSBjb21wbGV4IGRvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBiYTJiZTEzOTE2MjguLmQxNzI0MjAxNWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAzICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJ1Y3R1cmVJREJsb2IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2Nh
MmMyMzNhOC4uYjQ2OTNmOTFjNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVy
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8g
T25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
IGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBiZGYwNTlhMDkyMWEuLjUyMmVlN2E1NzMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEwMzIgQEAKKzIwMjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM4NjUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODYwODUyNTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLCBubyBvYnNlcnZhYmxlIGRpZmZlcmVuY2VzLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6
Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKworMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xh
c3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAg
dHlwZXMuCisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW06CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxv
Yi5oOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICog
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29u
dGVudEZpbHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5j
cHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToK
KyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAg
KiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05v
d1BsYXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVR5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3RXcml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcy
MDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICBy
ZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIsIGEgU2hhcmVkQnVmZmVyIGNhbiBub3cg
b25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAgIGEgU2hhcmVkQnVmZmVyQnVpbGRlci4g
QSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAg
IEZseS1CeTogUGFzcyBTaGFyZWRCdWZmZXIgdmlhIGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRl
cnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRvIGRvIHNvLgorICAgICAgICBObyBjaGFuZ2Ug
aW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpz
ZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
ZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0
dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRU
cmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0Nv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNF
bXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1Bl
bmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAg
ICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5
aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQg
d2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhh
dmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNo
IGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91
cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNo
YXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMg
d2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAg
Y29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNs
eSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5l
ZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBi
ZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9u
IGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4K
KyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBi
ZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hh
cmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3Nh
cnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAg
ICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZs
YXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBv
aW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhl
IGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8g
bW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAg
ICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBh
IHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisg
ICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRy
YWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2Rl
IGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGlj
aCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1
ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJs
ZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAg
IENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgor
CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQp
OgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJl
YWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFk
QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNv
bXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlk
cyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRl
cmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlE
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
SGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtl
eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6
OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJD
dXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRv
U2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3Nj
ZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNo
aXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgor
ICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVt
ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRl
RG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAg
KiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Rmls
dGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNo
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
UHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVj
dGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNv
dXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1v
bml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0
KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdl
U2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVy
OjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNl
Z21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRh
aW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6
U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRO
b3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1b
V2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXpl
Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFy
c2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6
CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
SlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1l
ZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVU
YWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6
Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxp
Y0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZh
cmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25z
dHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5
cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRl
eCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1
YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVM
aXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJl
TGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxh
bmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNl
dEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0
YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVz
U2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250
RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jl
c3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAg
ICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTAzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEJyb2FkY2FzdENo
YW5uZWwsIENPT1AsIENPRVAgYW5kIFdlYiBMb2NrcyB0byBmZWF0dXJlcy5qc29uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggMzM1NGI1MmE1MGNiLi5kYTMzNmU2ZjViMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRl
eCAyYjYyNjI4NDE5YjAuLjZlMjIwNDhjZjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5o
CkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
c3RydWN0IENsaXBib2FyZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAg
IENsaXBib2FyZEltYWdlUmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBi
b29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAg
IFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjAuLmVmZjEwYjViNjVmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsy
MTYsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBs
ZXRpb25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRh
KCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYg
ISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0
cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAg
ICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
ZGF0YSkuY29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9t
RGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjUsOSAr
MjY1LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0
ZXh0L2h0bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7
Ci0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
bV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAg
ICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJv
bVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRh
KSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0
YSk7CiAKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgIH0K
IAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1ZmZlclRv
U2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7Cisg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAgIGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAg
YnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJj
YzJjOGUxYTU0ZS4uMzdjODI1ZTIzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBj
bGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9r
ZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0
cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47
CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxv
YWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5t
bQppbmRleCA0MzAyMzYxZTZmZTIuLjI3NGUwMzhkNDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICht
X21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUlt
YWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQg
PSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0
YzMxY2E1MDYzOS4uMzgyMWIwMzcxODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUg
PT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAg
IGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29u
dGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9
IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFn
ZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVz
ZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsg
fV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2Mx
YWFlNzgzYS4uZjA1YzIzMzA3YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0
b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFu
ZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25z
ZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVk
QnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRp
b24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3Bv
bnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9u
c2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3Rv
cjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFz
a0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBj
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3
ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6
OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNo
UHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVz
dWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZv
JiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAg
IGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYg
cmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVz
cG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJl
c3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0g
bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUg
ewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5p
c29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJl
cXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21p
c2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5k
YXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShk
YXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzLi5jMGY4MDMyYjA0
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5
LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAg
ICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKICAgICB9LCBbXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1
cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBT
aGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAg
IH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4NTBkYmEx
ZTNiZi4uOWQxYmM2NzRmYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3VwcG9ydHNJ
bml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJl
dHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29u
dGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERhdGFSZWdp
c3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsK
IH0KIAotYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJp
dmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAg
IGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMS4uZDdiMWQ1
M2QwNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgK
QEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDog
cHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZh
dGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0Zi4u
NDEwZWQyZmI2NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJh
Y2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYi4uNmY4ODhlMTc4NThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKQEAgLTU0LDEzICs1NCwxMyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90
IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAog
ICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICgh
dmFsdWUpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgaWYg
KCFraWRzQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsK
ICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtl
eUlEKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIHJldHVy
biBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlk
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVl
KCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5w
dXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6
OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQK
ICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdp
c3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUxLDkgKzE1MSw5IEBA
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5Ojpl
eHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6
OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9
IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpA
QCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAgICAgcmV0dXJuIGtl
eUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQ
U1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAt
MTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNh
bml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVy
LmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0
YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVuY0tleUlELCBzbyBz
aG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6ZS4KQEAgLTIwNSwx
MCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAK
LXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJN
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwogICAgIGlmICghc2Fu
aXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0yMzMsNyAr
MjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiAKIEluaXREYXRh
UmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBl
KTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6
ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXRE
YXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhCiAg
ICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5Ojpl
eHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChp
dGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMy4uNzdkNjA0YjA4YmI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0
cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5
JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdp
c3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVj
dCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRh
Q2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZm
ZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVy
Jik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJh
Y3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJt
TmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hl
c0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0
cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lz
dHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyLi4xNDc3NmMyMDE1MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5n
dGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4g
SWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBM
ZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNp
b24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJ
bml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBl
LCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERh
dGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBz
dGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9y
LgogICAgICAgICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUg
PSAwOwogICAgICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNl
bnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFz
ZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
aWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRp
b24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBl
LCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlz
LCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjIs
NyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3Vy
Y2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2LiBSdW4gdGhlIGZv
bGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRh
dGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyA2
LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXpl
ZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShy
ZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
OwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYg
c2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkg
Y3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2Fu
aXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
ICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQu
IFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9p
bnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25U
eXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQs
IG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1
cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1l
ZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2Fn
ZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VU
eXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQog
ewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcx
Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2Fn
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzZDk2Zjg4MDJlNzQuLjM2NWFjZTVjMDk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNzIERlZmVycmVk
UHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFLZXlzOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBAIC04NywyMCAr
ODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Qcm9taXNlUHJv
eHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7IHJldHVybiBt
X2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
PFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFuY2VTZXNzaW9u
T2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lvbi0+cmVmQ291
bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYsIFdlYWtQ
dHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZl
SWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7Ci0gICAg
dm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGlyYXRpb24oZG91
YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6Oktl
eVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3Nh
Z2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2Vu
ZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsKIApAQCAtMTQw
LDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBlIG1fc2Vzc2lv
blR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGlt
ZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKLSAgICBWZWN0
b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVz
ZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1l
ZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAgRGlzcGxheUNo
YW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCmluZGV4IDczZjc0ZTRmNzBmYy4uMzk4ZThhYjFiNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6
OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1z
dGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9
IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5k
YXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNN
YXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0
ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlh
S2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkp
OworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtl
eVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBS
ZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmQuLjYwZDYyYWFmZjgwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggODNiMjRhY2Vh
YTViLi4zNjdmMzFkMTg2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlh
S2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVk
aWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRp
YUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQog
ewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1D
bGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0
RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3YjU5YTNiYzZkMjIuLjkxYTFh
MDcxMTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMo
RG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50
U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RN
PiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAg
ICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjYuLjAwMzkz
MDJmN2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApA
QCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlP
d25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9k
eTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRh
Qm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0
aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVy
LT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNv
bHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhN
RTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8g
b3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJv
ZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAg
ICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYg
KGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRh
OjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9y
bURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFj
ZGYuLjIyMTNkNjIzMDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0
Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9i
dWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1l
UHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxi
YWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewog
ICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3Np
bmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBt
X3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9z
aW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBt
X3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQu
cmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSks
IHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFt
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJp
bmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBl
OjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAg
IGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBl
LCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNv
bnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpA
QCAtMzI0LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVl
KEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1
ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9i
dWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7Cit9CisK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURh
dGEoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBtX2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0Nyw3IEBA
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlC
dWZmZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVy
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzU1LDcgQEAg
UmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6
OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRl
bnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5n
ZShtX2J1ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0
YSgpOwotICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9j
b250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50
YWtlKCktPmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2NCw4IEBAIFN0cmluZyBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0
RnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4
dDsKIH0KIApAQCAtMzgzLDEwICszODUsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNl
dENvbnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8
RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291
cmNlKTsKLSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9i
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxw
dHI7Ci0gICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUo
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApp
bmRleCAyYjA1NmYxMjY0M2IuLjg3MWQyYzA4NjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAK
ICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0g
V1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtl
RGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigp
OwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQ
dHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4Li4wM2Y4OWI2MWNhNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5j
YW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3Ry
ZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3Rh
cnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAgICBhdXRvIGZpcnN0
Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOS4uNDYxMmQwZTBlM2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zOSwxNCArMzks
MTQgQEAgY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXI7CiBjbGFzcyBGZXRjaExvYWRlckNsaWVudDsK
IGNsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBG
ZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNoQm9keUNvbnN1bWVy
Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVyKCk7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogCiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQmxvYiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNGRmODQyNmM3
MThiLi5lMzhhODNhZGU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6
Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNr
JiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZj
aHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRT
dHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWlu
ZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0
U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCmluZGV4IDM0MjBjNmEzOGQzYy4uY2Y3ODYzMjM5ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5r
Q2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1p
bmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFt
aW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRpb25DYWxs
YmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAgICAgICBD
b25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygpIHsgcmV0
dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZC4u
MWE2NmJmODE4MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdo
bGlnaHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlz
TmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOwpAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdo
dC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGln
aHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAg
ICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQy
NzYuLjVlODBmMGMwNzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwxNSArNDQsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0Rmls
ZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBw
bGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
IGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAg
IHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURh
dGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBXVEY6
OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAqdGhpczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhLi5iNWRhZjYwMjUzOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewogV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAg
IHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwog
ICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4Zi4uZTVkZTg0OTRmMzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAgIG1fZG9j
dW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZShoaWdobGln
aHQpKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9B
cHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0
IHNjcm9sbCkKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBw
SGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9I
aWdobGlnaHQgc2Nyb2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhpZ2hsaWdo
dFJhbmdlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQuLmUyNzY2MzNiNDg0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsK
IGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfkFwcEhp
Z2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdo
bGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3Rv
cmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hp
Z2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBI
aWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0
KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAgIE1vbm90
b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUF0TGFz
dFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUoKSB7IG1f
dGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3Li4yN2NkOGVlYzUzZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAg
Ym9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3Rv
cmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlv
bigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNh
Y3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtl
eVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsK
QEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAg
LTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVj
b3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5k
ZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRf
dCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJl
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGlu
IHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1
ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1
ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jl
c3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4
aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0
ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5z
YWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlE
YXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBA
IC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGlu
IGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0
LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5
UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURC
S2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5n
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyAr
MjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBw
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRG
b3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBr
ZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5k
ZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwx
NCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsK
IAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURh
dGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBs
b3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5
ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5n
ZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0
aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOS4uNDg2MTAz
NGQzYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxv
YihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5
KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxp
dGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJp
bmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRl
bWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0
NjliZDBiZDFmLi5jOWQ2ZGE2YmRkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBp
bmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxC
bG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBi
dWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1l
VHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsg
ZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZl
bnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNi4uMWU5Yjc0YWIx
N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlz
cGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQcml2YXRlUmVj
b3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwgVGFrZVByaXZh
dGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5k
ZXggM2Y0YzliY2QxMzNhLi44NzRhYTdmMGIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ly8gU2FuaXRpemUgdGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2Ut
PnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAK
aW5kZXggZmViMWI4ZmZmYjdiLi5jYzVhODY1NzMwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAg
ICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNz
YWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1l
c3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1Bl
bmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGY1ODI3ZGY5
Mzc5NC4uNzM5NDJhODM1OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFs
IDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAg
ICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07
CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1Bl
bmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTMuLjNjZWVkMGEwMTFlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBA
IC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRl
bnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdE
YXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoT24obWVzc2Fn
ZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICAgICAg
Y2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAg
ICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3Rh
dGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyLi4xMWJkNDVkZTkxNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04Miw3
ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsKLSAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hh
bmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgUGVu
ZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdlKFBl
bmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgcHJv
Y2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
aW5kZXggMzA5YzAyNjQzZjVhLi42M2YxYzNjYmUxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25z
dCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwog
CiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRh
LmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jl
c291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
LSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2Vs
ZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQo
KTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigp
OwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAK
ICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUo
bV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291
cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5t
YWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwo
KSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQuLmNlMDA5ZDRlNWVkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVS
TDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJj
ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxS
ZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRl
eCAzZTgyYWMyMjE2NzkuLjEzMDNlYzRkMjU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2Up
CiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2Rl
bEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApp
bmRleCAwYjg5OGY2YWRiNTcuLmQ1MTczZmJmOGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRh
YmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVh
ZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJk
NWMuLmI4Yjc3ODVmOTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVi
bGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIg
JiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAg
ICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAg
ICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1Rv
cDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcp
IHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9T
dHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRp
Z3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7Cisg
ICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
Y29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNi4uZWYzN2YxZDBjYTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczsKIGNs
YXNzIElEQlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1hcEJhY2tp
bmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
ZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKIAogZW51bSBjbGFzcyBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZS4uMTA4ZTZjODc2N2QwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNl
bGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250
OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9u
dERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7
CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQx
Y2Y0Li5jNDJlYzA1MWZlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00
MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBh
c3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBl
Rm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYS4uYzVlOWUy
NmIzNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTMzLDcgKzQxMzMsNyBA
QCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhF
bGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB7IGF0dGFjaG1lbnQtPnVuaXF1ZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3ZlKGFkZGl0aW9uYWxEYXRhKSB9
OwogfQogCi12b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgRWRp
dG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoYXV0
byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5h
bWUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUw
NDRlLi4xZDA3MTZjNWI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNz
IFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURh
dGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMC4uOTU3YjRm
ZDRhNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAt
NzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3Ry
aW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRG
aWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRI
VE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJbWFnZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogICAg
IGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsK
ICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBy
ZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2VuZGlmCiB9
OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChj
b25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmID0geyB9
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBy
ZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJv
b2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdkMmU0YzAu
LjExN2RiYTY4ZWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFt
ZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNy
ZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5l
eHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3
YzhlYy4uOWQ4MTYwNWYxOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsK
ICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVm
PEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzguLjA3ODI0ODM2MmFhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcg
QEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRh
dGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBl
ID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVy
IHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAg
ICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1p
bWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9
IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZp
bGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAg
ICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVy
bCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVy
KiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3Jh
cHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAg
IGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1
ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCmluZGV4IDZhYTNjZDU0ZTgyYi4uNzZiMWEwMDlkZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjQ1
LDcgKzI0NSw3IEBAIHN0YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRh
KGNvbnN0IEZyYW1lJiBmcmFtZSkKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVm
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkU2l6ZSkKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8g
YXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0
YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJl
cGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJh
Z21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJj
ZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERh
dGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1l
VHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVu
dERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQog
CiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcg
KzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVu
dEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50
c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcg
QEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBm
cmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVu
dEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmpl
Y3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlv
bkluZm8pIHsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAg
ICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJr
dXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQog
ewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVm
ZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVk
QnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsg
U3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZl
LnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmlu
Zzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2Fu
aXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlv
bkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVp
cmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcp
PiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1
YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFy
Y2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJl
c291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6
OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAg
ICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUu
Y29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQs
IE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00
OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRp
emVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2lu
Z0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAK
LWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1F
VHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJj
aGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEyLDEyICs2MTIsMTIgQEAgYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4g
IW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJd
KTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJh
bWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNjI2LDExICs2MjYsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdl
dCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02Mzks
MTIgKzYzOSwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChm
cmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBh
dXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmlu
Zy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NjUzLDExICs2NTMsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRN
YXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIGJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7
CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZy
YW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAKLXN0YXRpYyBSZWY8SFRN
TEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJl
c2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0
YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtODMzLDcgKzgz
Myw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQog
ewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmlu
ZGV4IDYwNDg2ZTcxYWQ1OS4uZDNlOTgxOWJkNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRp
b25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQog
ewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpm
cmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTQuLmJj
YTY2OTZlYmU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
QmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBF
eGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKaW5kZXggNTU5ZWJjYzQ4YzVmLi40MmY0MTgwZGZhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIE5ldHdv
cmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygpCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcFBy
b2Nlc3NpbmcgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgpLCBbdGhp
c10oY29uc3QgQ1N0cmluZyYgdXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmluZyh1dGY4
KTsKLSAgICAgICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAg
IH0sIFt0aGlzXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAgICAgICAg
ICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVSYXdEYXRhKTsKICAgICAgICAgfSwgW3Ro
aXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVlUmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIp
IHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gbG9hZGVyLT5lcnJvckNvZGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggNTUxZjcwZjkxNjdi
Li5kMjNjZmViYjQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsK
IGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDog
cHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0g
ICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVy
PiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJp
YW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JM
b2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcg
bV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzMuLmQyYjg3NDFhMDQ0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBA
IHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERG
TUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRh
dGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVu
dCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVt
ZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2QuLjY2MWRlYzkzNzZkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBA
IGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgUmVuZGVyQXR0YWNo
bWVudDsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChI
VE1MQXR0YWNobWVudEVsZW1lbnQpOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSBm
aW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKIAogICAgIElu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDUxNzFiOWNkYzc4OS4uMWE1NmJjMDM1OWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vz
c2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVy
SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDY5NTY2OTQ5NjMxMC4uNmMzYjY5M2I3YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZO
ZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0
NDJkMDk0NmJlMjUuLjAwZDhmMjM5ZDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50Ojp1cGRhdGVEdXJp
bmdQYXJzaW5nKCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAgICAgICBjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSgpOwogCi0gICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCisgICAgaWYgKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQogICAg
ICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIp
OwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZURv
Y3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFyc2VyKCktPmlzU3RvcHBl
ZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSA9ICptX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKTsKIAogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdlLCBtYWtl
IGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0YQogICAg
ICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGE3Y2E3MTYyZDc5MS4uMTg3OTNmZjA2NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1
MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQo
KSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRl
bnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzLi5kMjk1
NzgxMGQ4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93Owog
Y2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4m
Jik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsx
Mjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0
YmMzYmEwMTkuLmYwNjQwM2E2MjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYgbG8KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50
ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBo
YW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92
ZShoYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggZjc2MTE0Y2U5OGY0Li4wN2I0
MjFiNTljMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBG
cmFtZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBz
dGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7Cisg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJu
YWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
c3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAK
IGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAg
ICAgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVy
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0Zi4uZjMyZjY2MGI5MTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJ
ZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBA
IHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRl
bnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkp
OwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRh
QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0K
IAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJl
dHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXIt
PmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0
YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9
CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhh
c0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRh
QnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAg
IEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRh
QnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgp
OwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxz
ZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFC
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9
IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
KyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAg
ICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0y
NjcsNyArMjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3Vy
Y2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEt
PnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVz
b3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVz
dElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExLi5lZTM5NDU3Zjc2
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQwLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBO
ZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04
OCw4ICs5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+
IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9CiAgICAgICAg
IHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7
IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAg
ICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQor
ICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAogICAgICAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVJ
bmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZv
KSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZvOyB9CkBAIC0xMDMsMTAgKzEw
NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNldFJlc3Bv
bnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7
IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVu
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1
bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksOCArMTIxLDggQEAgcHVibGlj
OgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
bV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291
cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlw
ZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0NCw3
ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VT
aGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNv
dXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyLi4xODlmMjZiMDk4YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9u
RW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAog
ICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsK
ICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMK
ICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5
IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVu
Y29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAg
ICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVh
dEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVy
ID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAg
ICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
ICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAg
ICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZS4uNmJjZDg3
ZGRjZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAog
ICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2Vh
cmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29y
aWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0y
MDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJl
c3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
KyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBA
IC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEuLjFiNjQ2YWEyMTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtMTAwLDE1ICsxMDAsMTUgQEAgc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXgKIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRh
KCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
SW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3Vt
ZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wg
SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNv
ZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250
ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0
RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRl
bnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpAQCAt
MTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwg
bG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGI1MWFkZGIxYmQ4Zi4uM2Q1ZTU2NmRiZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVz
b3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFy
ZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJj
ZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5n
KiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNl
TWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMuLjZhZTUyNjU5N2NkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZv
aWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VS
VChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVz
b3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291
cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0
YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OwogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9OwogICAg
IFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVudERhdGEp
LCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBsb2FkaW5n
QmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzIuLjNiOTBlZjRj
NTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMTEs
NyArMjExLDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAjZW5kaWYKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEo
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjpt
YWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgp
OwpAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0
ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAg
QVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJj
ZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEg
PSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJl
c291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBl
KG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVu
dCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVz
b3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRh
LT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogfQpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVu
dExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29u
c3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwpAQCAtMjI1NSw4
ICsyMjU1LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAg
ICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+
ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBjb21taXRM
b2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEt
PnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpA
QCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGlu
ZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9uRm9ySWNv
bnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsK
IApAQCAtMjMxMyw3ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJ
Y29uTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Zmlu
aXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICAvLyBJZiB0aGUg
RG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2Fk
cyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2MGU0
Li4zMzk4NzNkNWQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBA
IC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBD
YWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29u
dGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVs
ZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xh
c3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJj
ZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAg
IERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBA
IC0zOTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxv
YWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNv
bihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
Jik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMo
KSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9Owog
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lz
aW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFw
PHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNv
bj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNC4uMDhhMGFlMTlhMzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFz
cyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyAr
NzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hl
UG9saWN5IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggNGZkNjM3YTkwMTRhLi5lZTlmM2QwYzk4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJkNjNlZC4u
MjlkMmUzZjQ2MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAt
NTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJy
ZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1
NTk2MzIwMC4uNjA0M2FjOWJlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQog
Ci12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkz
Zi4uYjUxNzRlZGM5NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXgg
YzYyNzc2ODU4YTZkLi5kOTRiNzAwMDc0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyArMTU1LDcg
QEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRl
cyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0
b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFy
ZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGht
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0byBjcnlw
dG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEzZGM1N2M4
NzguLjgzYjg2MTNjZmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAg
c3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVu
Y29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29u
c3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dy
YXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRo
bSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTguLmRmMTM5NTg4ZThk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3
Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2Fk
ZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAs
IG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigp
IH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1Bv
bGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUu
cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7
CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNl
cygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51
bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIg
PSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWlu
YWxTdGF0ZSgpKQpAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERh
dGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAK
ICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZm
ZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5y
ZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRl
UmVzb3VyY2UoKQpAQCAtMzI5LDI5ICszMzAsMjkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2ls
bFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgp
OwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAg
ICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsK
LSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVy
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisg
ICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgaWYgKCFtX3Jlc291cmNlRGF0YS0+
aXNOdWxsKCkpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwogfQogCiBib29sIFJl
c291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU1MSwxNCArNTUy
LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiog
YSBTaGFyZWRCdWZmZXIuCisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGEr
bGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIEFTU0VSVCghYnVmZmVy
IHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBk
ZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KQEAg
LTU3MSw3ICs1NzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIs
IHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0
IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lh
bnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNl
bmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCkBAIC03MzUsNyArNzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiLi41NGIxYjg2NmRmODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwog
Y2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxv
YWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291
cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNw
b25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3ICsxMTAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2OSw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0
dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5IHJl
ZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5
OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3ICsxOTQsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0g
ICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBTaGFyZWRC
dWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2Fk
VHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29ya0xv
YWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CkBAIC0y
MjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJl
Y3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTEuLjM3ZDBiYjgyMWFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01
MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQ
YXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRl
ciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQog
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApAQCAtNTYxLDcg
KzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+
dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+
dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmLi44
MzJjOWYwZTczZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAg
LTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNr
UmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
aW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRD
b21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5k
ZXggZjY2MjkyZTMxY2JlLi5hOGE0OWI0N2Y5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNv
bnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAg
ICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAg
ICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdV
Ukw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Np
b25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4Li5jZjJkZTBjNjJkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDEyICszNywx
NCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRh
LmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5
KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIp
IHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5
KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikg
eyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgp
KTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisgICAg
U3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1fdXJsKFdU
Rk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAg
ICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA4OWYzYjBmMWRjMzkuLjAzNmVmZDIwZTQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYw
NSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
LmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0
aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBp
cyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2Fj
aGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3Vs
ZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NS4uNTE5NzhmNDEyMzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVh
dGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBh
IGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29w
eSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAg
ICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNl
LmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7
CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0
LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNl
KCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEg
Y29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxs
IHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZp
ZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAg
ICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcuLmI5NjM1NmU3ODU2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJh
bWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBw
bGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYz
MDEuLjJiYjNmZTc1Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNl
PiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICBpZiAoIWJ1
ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGMKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFdU
Rk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBw
YXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJl
c291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgOiBTdWJzdGl0
dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShkYXRh
KSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKQEAgLTUxLDcgKzUx
LDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
LmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkp
OworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRleCA4
OGM5NGRlMWE3NzQuLmMyODhlNzAzNmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAg
IHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJp
bmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShj
b25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25z
dCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwog
CiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5Li43YjJmYjZjOWMyNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCAxYjMzYWM5NWJjZGUuLjhjZjA1Y2NlMTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03
ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVz
b3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFT
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxs
UGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgx
NCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJp
bmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291
cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3Miwx
MiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRl
bWVudChlbnRyeVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAorCiAgICAgLy8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0
byBhIGZpbGU/IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQg
ZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAg
ICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVh
cigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9y
YWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjczLDcgKzEyNzIsNyBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0
RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzbwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVE
YXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxl
RXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
aW5kZXggOWE5NTMwMDg3NjZhLi40MTAyYTE4MDhiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
ZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
Kik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBT
dHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJv
b2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVz
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkLi40ZWY5Y2Q2NmJkMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0
NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+
IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlw
ZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0
YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1F
VHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNz
ZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBU
aGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlw
ZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZl
PiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBi
dWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hp
dmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUu
aXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAK
LVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2
ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5Li41NTY0NTE1YzllMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAt
MzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXJjaGl2ZUZhY3Rv
cnkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0
cmluZyYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJl
ZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJL
bm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwCmluZGV4IGZjMjBkYTNkYTAzMi4uMDczODM5NGE4Mjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJl
c291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVS
ZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1v
dmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2Rp
bmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNl
OjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9u
c2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5
ZTk3MTdhZWIwLi4wNTQ4ZWY3MjFlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNy
ZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgp
KTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVu
VW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmlu
ZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcAppbmRleCBkZTdkYWRkZGFjMjIuLjcxMTUwY2JkZDg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRh
IGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRh
UmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURh
dGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwg
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBS
ZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNl
LT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5
TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2Ug
cmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkg
ewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5
TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7
CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEz
ICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBv
ZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRv
IHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYg
Q0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlE
KCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNv
dXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3Jl
YXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNw
b25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNDgsMjMgKzI0OCwyMyBAQCBSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRhKTsK
IH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0
aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBh
cmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
ZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVycm9y
UmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJvcGVy
dHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11
dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJVRwpA
QCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAgICAg
IENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAK
KwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlw
ZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFyY2hp
dmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRp
bmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNo
aXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJvcnRp
bmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5
V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGljdCkg
ewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiByZXNv
dXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMzMyw3
ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVm
IGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJyZXNv
dXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAgICAg
YWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0K
QEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhdXRv
IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1lQXJj
aGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZyYW1l
QXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIGJv
b2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkK
ICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52YWxp
ZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0
cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJs
KCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3aXRo
b3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBpZiAo
cmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZy
YW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1cm4g
YXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBp
biBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1
bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAg
ICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJn
aW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwi
OTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9u
c2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVjOWY3
NWFiYS4uNWEwN2IxMGI0YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1w
bGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJj
aGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8
UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdl
YkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZy
YW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2Zi
YmI3MDIwMjIuLmQwMTM5Zjg3YTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVm
PE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJj
aGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8
TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3
ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICghTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2wo
KS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBN
SFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNo
aXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKIHsKICAg
ICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAgICAgUGFnZVNl
cmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsxNjIsOCBAQCBS
ZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBh
Z2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNj
aWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJ
IGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCku
aXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAg
bWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgp
KTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZl
cj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNv
bnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3Ry
aW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAg
Ly8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFt
IHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJl
c291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJj
ZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVv
dGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFBy
aW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEu
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAg
ICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBp
dCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4K
QEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0g
aW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRt
bERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAg
ICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRl
eCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3Ry
aW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBt
aHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgp
KTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcu
bGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRh
LnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDIuLjJkZmU4N2U4MmU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1IVE1M
UGFyc2VyOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNo
aXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVS
TCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0dWFsIH5N
SFRNTEFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwMy4uNWVlOTE4Njg0YTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1VudGlsQm91bmRh
cnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0
MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJv
dW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAot
ICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRP
ZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFs
c2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1F
SGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVh
ZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5k
IG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAg
ICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBl
bmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxy
XG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1f
bGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5k
IG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNo
IGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFw
cGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29u
dGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAg
ICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRl
cjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVy
IHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRo
aXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJt
aW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIp
OworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBj
b250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAg
IHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2Fz
ZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2
NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8g
ZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29u
dGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAg
ICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFy
dC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDExICsyMDUsMTEgQEAg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3Qg
TUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0
YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250
aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVh
ZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0
YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRh
LmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlLi4w
ZDYwNDM0M2YzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVI
ZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJz
ZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDcuLmUxYTg3NTE2YmQ4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChk
YXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJp
Y3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjQuLjM3OThhOWI0ZDkwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlv
bmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MS4uMzhhMmUxN2YwZDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0
OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAg
IHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVj
b2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBi
aXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRD
U1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNo
ZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewot
ICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rpbmcg
YW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5k
IG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBj
aGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7Cisg
ICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwog
ICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVl
ZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXgg
NWQ0ZGQzZGM3ZTM1Li5lNjU1YzY5ZTNlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rlciog
dGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQo
KTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjOC4uZDJiYzI4MjE0NzljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCAr
NjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVu
dCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNp
emUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
bWV0cmljcyk7CiB9CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVm
ZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1
LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3
YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmLi4xMzQ2
NmNjOTlkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYy
OWVlOTBmLi45NDYyNzk1MjBkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdl
OjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkp
OwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVk
SW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1v
bm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygp
IDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNv
bnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBo
YXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRp
bmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMs
NyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0
YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3
ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRh
LCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNo
ZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29u
dmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5Myw3ICs1
OTUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZQogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVw
bGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewotICAgICAg
ICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJl
amlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFs
bG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0
aGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBj
YW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJj
ZSBidWZmZXIuCiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3KTogSXQg
d291bGQgYmUgYmV0dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2UncyBkZWNv
ZGVyIHRvIHN3YXAgaW4gdGhlIG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcgYW55dGhp
bmcuCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNh
Zi4uMDgzZjkyZjg4ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lk
dGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXpl
VHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxk
RGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsK
ICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
aGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVm
ZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5h
bChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VT
aGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODguLjg5
NWRiMTE1OGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNo
ZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUs
CiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29k
ZWRTaXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFM
ZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZp
ZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0
dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9t
IG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlz
aExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRh
U2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNE
YXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsK
ICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZm
ZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBA
IC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAg
IERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZm
ZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAg
ICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0g
ICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+
ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChp
bmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MS4uYTc4NjVmOGFkMTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBT
dGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlk
ZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXIqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNF
KFFVSUNLX0xPT0spCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGly
ZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBz
dHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBt
X2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Yy4uYmY2OWU4MGU1NzZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNo
ZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ0LDcg
KzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05Mjcs
OCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNo
YXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5k
KG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVw
bGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxLi5jOTgyZGQ2OTM3YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9
CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9y
KENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2Rh
MTQ4NTFhNzA3Li5kYjQzMTYwN2FlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0cmluZyBD
YWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUg
YSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVu
dCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShu
dWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKaW5kZXggZThjMTVmMzYwZmM5Li40NDVlNGY5ZjQyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTMu
LmQyYzFkZTQ3ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAg
U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRT
Y29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwor
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAK
aW5kZXggNDdhOWY1NzYwN2I5Li5iNjczOThiMGU0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5zaWduZWQg
Q2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQog
Ci12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4Ny4uODY1MWU2MzlhZDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IDEyMjk4MTUwMzEyOC4uMGM4NDI4YmI5OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRl
eHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwx
MyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
KnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzLi4w
OWI0MzM5YTM3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODcuLmQyZWZmMmQyZDQwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4
NDJiNjQ0ZjYxYy4uYmQyMzEyMTRmMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNi4uNjZiOTM1OGVjNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZh
dGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDgsNyArNTAsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwog
CkBAIC02MCwxNyArNjIsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWwgeyB9OwogICAgIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7
CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252
ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHBy
ZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7
CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIKLSAgICB2b2lkIHByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBy
b3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBm
aW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBS
ZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VM
b2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFs
c2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQx
OGIyNTJlOTc1Ni4uNzQ4ZmVkYjhlYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5
UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NF
UlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigp
OworICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsK
ICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQogCi12
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZl
cnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byBy
ZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNvdXJj
ZUxvYWRlcikKQEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6
cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiAg
ICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVy
KTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5
UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUs
NyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlz
KSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJl
dmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3Jp
Z2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0
YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291
cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50
LmgKaW5kZXggODIzNzRlNzI2MmM3Li5lYTYxNWRmZjRkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaApAQCAtMzgsMTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGll
czsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAg
LTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VB
ZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNv
bnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVk
RmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAq
LywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVm
ZXJyZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
LyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3Qg
U3RyaW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBp
ZGVudGlmaWVyICovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5k
ZXggMWExMjEwZmE4MzM3Li5hYzUzY2IxNGJmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRk
SW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcK
ICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFn
ZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEo
KSA6IDA7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJl
bmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6
IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEo
KTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9S
ZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMu
YXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29u
dGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkLi43NTgzNmI4
NzkxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFS
ZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFS
ZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVE
YXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhd
LT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZp
bGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKICAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxl
cy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAor
CiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdG
aWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsK
ICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29t
cGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ob3dQbGF5aW5nTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWlu
Z01hbmFnZXIuaAppbmRleCBlMzgwNmU4N2RmNzkuLmZjNjZjMzY1YTJmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5m
bzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxB
cnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwCmluZGV4IDE1NzMxZWIyM2ZhNy4uMDdlZDQ4ZTU4ODRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFt
ZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdk
MjQ3ZGNkMWExNi4uMzU3NjNlZTEyYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCkBAIC02MSwxMiArNjEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIApAQCAtMTQ3LDE2
ICsxNDgsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3Qg
U3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZElt
YWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHRpdGxlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5n
JikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wg
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFk
UlRGRChTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVk
QnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTcxLDcgKzE3
Miw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVi
b2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBA
IC0yOTYsNyArMjk3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0
ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0
cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAg
VVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5j
cHAKaW5kZXggOWQzZjg3YTkxMTRjLi43YjRiM2QzNmFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikK
IHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAg
ICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVy
biB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pihv
dGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3
ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0Vu
ZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1
c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRk
T3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsK
IH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkg
ewogICAgICAgICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5
LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+
JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxh
dGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0
YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkg
ewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAo
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5n
PihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAg
ICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTMu
Ljk3ZmY5ODVlMjRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAg
ICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0
YTsKKyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9h
cmRDdXN0b21EYXRhKCk7CkBAIC02NSwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVy
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0
cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAK
ICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmlu
Z0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwog
CiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAg
IHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0
Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25z
dDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3Vz
dG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAu
LmM0MWUwODUyNDQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKQEAgLTMxLDEwICszMSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0Owog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0
ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9h
cmRVUkw7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2
NF90IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29uc3Qg
UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBD
b2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCAzZjQ4MzJhNWE2NTgu
LjllNzJlNDRhMmVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1D
b250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAg
IHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5k
ZXggN2EyYTMxMDA3NDI1Li43MWRmYjkzZTU3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9w
YXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBvd25l
cnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNy4uNjMxYWRlN2NjZjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjMs
OSArNjMsOSBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3
RXJyb3IoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKIH0KIAotY29uc3QgU2hh
cmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Citjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3By
ZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWlu
UmVzb3VyY2UoKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0
ZU1haW5SZXNvdXJjZSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBw
ZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkgPiBtX2xlbmd0aEFwcGVuZGVkKSB7
CiAgICAgICAgIGF1dG8gbmV3RGF0YSA9IGJ1ZmZlci5nZXRTb21lRGF0YShtX2xlbmd0aEFwcGVu
ZGVkKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmll
d0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmll
d0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7
CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICpt
X3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVy
dGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzOSw3ICsy
MzksNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlz
aENvbnZlcnRpbmcoKnRoaXMpOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRl
RGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBQcmV2aWV3Q29u
dmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzIHsgUmVmIHsgKnRoaXMgfSB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5
MjI3OTljLi45MjAyZWRkZDllMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyOwogCiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtl
V2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQ
bGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImKSA9IDA7CiB9OwpAQCAtNzIsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmll
d0Vycm9yKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNv
bnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29u
c3Q7CiAKICAgICB2b2lkIGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGlu
ZygpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3
b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBw
ZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21C
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xp
ZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5n
V2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGlu
ZygpOwpAQCAtMTA2LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9j
a1dpdGhQYXNzd29yZChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURl
bGVnYXRlCi0gICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGZpbmFsOworICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRp
bmcoKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJikgZmluYWw7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
cHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmll
d0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVw
ZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
Q2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiLi45Y2VlOTMzMjBiMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdl
YWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252
ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBQcmV2aWV3
Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4g
ewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJl
dmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3
Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4IDgyNzg2MzkzZmNlZC4uYjk4
NmVlNDBkMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlclByb3ZpZGVy
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVN
YWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSA9
IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBk
OGU2OGUzMzc3ODEuLjM3ZTQ1MzY3Mzg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0zNyw2MyArMzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShm
aWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRl
cikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0K
IAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVy
KSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCi0gICAgOiBtX3Np
emUobWFwcGVkQnVmZmVyLnNpemUoKSkKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRP
d25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBt
YXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0g
ICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAg
ICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3Vj
Y2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAg
fQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0
aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6
ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CisjZW5kaWYKIAotc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8
dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rv
cjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzkyLDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9
IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRz
LmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNl
Z21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJu
IG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hh
cmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTM5LDcgKzEx
NCw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURh
dGEoKQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkK
IHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBA
IC0xNTQsMTMgKzEyOSwxMyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0
YSgpCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXcg
U2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitTaGFyZWRC
dWZmZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxl
bWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJuIHsgZWxl
bWVudC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlv
biB9OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNo
YXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QK
K2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRp
b24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwogICAg
IGF1dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0xNzEsNyArMTQ2LDcgQEAgY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21l
bnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1
ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
CiAgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE4MSw3ICsxNTYs
MjIgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitzaXplX3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKwor
Ym9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIXNpemUoKTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3Vv
dXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKK1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFh
cnJheUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTAsNjggQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJy
YXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJp
bmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3Nl
Z21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50
cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50
cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50
LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUg
Kz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSAr
PSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFt
X2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNs
ZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRz
LnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7
IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAg
ICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHBy
b3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAg
ICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBz
ZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBz
ZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0
c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMjgzLDcgKzI3Myw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAs
MTIgKzMwMCwxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNv
bnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9u
LCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBz
aXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICszNDMsMTMgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpo
YXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGFzT25l
U2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0
ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgp
ID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVy
bmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50
ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzcyLDcgKzM2
MSw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAog
fQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
KQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21l
bnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkg
fSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sK
KyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3Vv
dXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6
ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
CisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9j
b250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1h
eVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBw
ZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3Mp
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1h
cHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWlu
dDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsMTMgKzQz
MCwxMyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwog
fQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNFKENGKQotdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQog
I2VuZGlmCkBAIC00MDcsNyArNDQ2LDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFy
ZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJvb2wgU2hhcmVkQnVm
ZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTUsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXpl
X3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4g
c2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVf
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXco
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2Vn
bWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21l
bnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3Np
dGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUzOCwxNyBAQCBjb25zdCB1aW50OF90KiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+
ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0IGNoYXIqIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwogUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21l
bnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRh
dGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7
IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQz
Mi4uMDU0YzQ2Y2QzYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTYyLDE0NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFT
ZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBi
eSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9j
YXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIp
OyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0
YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAg
IHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5E
QVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAg
UmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNE
YXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNy
ZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQog
I2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVz
Kik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0K
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxs
aW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRv
IG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhl
IHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6
IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3
aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4g
Y29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWlu
dDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJh
eUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAot
ICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRv
IGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0g
ICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9u
PGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXpl
OworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3Zp
ZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQg
YmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0
cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcg
RGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
c2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0g
ICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0Yp
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4m
JiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNl
bmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRy
PEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBz
dHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4g
ZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9Owot
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYg
VVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAj
ZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
LAorI2VuZGlmCisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQ
cm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVy
JiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3Zp
ZGVyKSkgeyB9Cit9OworCitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBt
YXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlk
ZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVT
RShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVh
dGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENG
KQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNl
bmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUo
R0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAj
ZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAg
ICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5
RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBj
b3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3Rl
YWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hh
cmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0
ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIn
cyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNl
Z21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0Owot
ICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0Owor
CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2Vl
cCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAg
ICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTYgKzE5NywxNzcgQEAgcHVibGlj
OgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9y
RW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVj
dG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgp
OyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2Ug
TygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBj
b25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90
TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
U2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OwogCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNv
bnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJik7Citwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKworICAg
IERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBm
YWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04p
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYg
VVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5k
aWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQg
cmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXIoKTsKIAorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBh
bmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsK
ICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24o
c2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAg
IHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3Nl
Z21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29u
c2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQorLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVu
dCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVy
IDogcHVibGljIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
QXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4o
QXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7
CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAg
ICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5
VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0Uo
Q0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRh
KCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVm
UHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9
OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBh
IHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRl
ZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZl
ci0+aXNDb250aWd1b3VzKCkpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1
ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90
IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBh
cyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAg
IC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1
ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6
IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVy
KCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
IWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7
IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAg
cmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAg
ICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkK
ICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3NiwxNyBAQCBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3Np
dGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXpl
ID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRC
dWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRh
QXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9V
TkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNl
bmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
bV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNv
bnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9z
aXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQuLjlkMDU1Y2UyN2Q4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwp
CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRC
dWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1f
aXRlcmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVm
ZmVyLT5lbmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJh
dG9yRW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBA
IC00NCw3ICs0NCw3IEBAIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgY2hhciogc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdp
bigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50
KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+
c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYy4uMWM2NDA4ZDRj
NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciB7CiBwdWJsaWM6Ci0gICAgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBz
ZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKKyAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hh
ciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IFZlY3RvcjxjaGFy
PiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKQEAgLTU4LDggKzU4LDgg
QEAgcHVibGljOgogICAgIHNpemVfdCBwZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAK
IHByaXZhdGU6Ci0gICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKKyAgICBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRv
ckN1cnJlbnQ7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CiAgICAgY29uc3QgdWludDhfdCog
bV9zZWdtZW50IHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsK
ICAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAppbmRleCBiMmQ3YTU1MGQ0NjAuLmE0YjRi
YjEwNGI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRh
LndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5
cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4
IGMwOWI2ZGUzMWYyZS4uZWRkNzEzNjIzZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgU3RhdGljUGFzdGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1
YmxpYzoKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5D
dXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2
b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFy
KCkgZmluYWw7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3
OTU5MDBjNWFkLi4xZDY1YmM0MDNhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKICAgICBTdHJpbmcgc3JjOwogICAg
IFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAogICAg
IHsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6
b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBOb3dQbGF5aW5nSW4KICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gaW1hZ2VEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW1hZ2VEYXRhKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJi
Nzg4YWZhMWU5MS4uN2YwNDk2MGM1OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7
Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmlu
Zzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MS4uODE5ZTI2ZmE0Y2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KENGRGF0YVJlZiBkYXRhKQogewogICAgIGFwcGVuZChkYXRhKTsKIH0KQEAgLTQzLDI0ICs0Mywy
MCBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKICNpZiAhVVNF
KEZPVU5EQVRJT04pCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBp
ZiAoaGFzT25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRf
aWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRh
YmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAg
IGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVu
ZEJ5dGVzKGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0
YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0
CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAg
aWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC03MCw5ICs2Niw4IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7
CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaAppbmRleCAwNzk3ZGZiZThkMDEuLmNiZTg3NzFhNDVkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwLi4yZWYyNzAxZmU2NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBOZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICBzZW1hcGhvcmUu
d2FpdCgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
aAppbmRleCAwNjhjZGNiMzgzZjQuLjY3OWFlOTMyOTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5k
ZXggYjQ2MWY5NzUzNmRlLi4xYzk2MDQ3MTZiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1l
bnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxh
Y2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjLi5iODE3MDgxN2NlYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE5TQml0bWFwSW1hZ2VGaWxlVHlwZSBiaXRtYXBQTkdGaWxl
VHlwZSgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0vLyBNYWtpbmcgdGhpcyBub24t
aW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVk
ZSBTaGFyZWRCdWZmZXIuaC4KKy8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJL
aXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuaC4KIFBhc3RlYm9hcmRXZWJDb250ZW50OjpQYXN0ZWJvYXJkV2ViQ29udGVudCgpID0g
ZGVmYXVsdDsKIFBhc3RlYm9hcmRXZWJDb250ZW50Ojp+UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9
IGRlZmF1bHQ7CiAKQEAgLTIxMSw5ICsyMTEsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJk
Ojp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykK
LXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYg
dGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFn
ZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6
QHsgfV07CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpp
bmRleCA5ZWUwYzBiNTVkNzkuLjI1ZjMxMWYyNTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBA
QAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29y
ZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2Vn
bWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0
YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6
KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRC
dWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2Vn
bWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUlu
dGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtz
dXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50
JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRl
Z2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKQEAgLTg4LDEzICs4OCwxNCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZShOU0RhdGEgKmRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGJyaWRnZV9jYXN0KGRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKE5TRGF0YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0
dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKQEAgLTEwNSwxMCArMTA2LDggQEAg
UmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogCiBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7
Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIs
IDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJy
aWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCkBA
IC0xMTksMTQgKzExOCwxNCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1SZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0Rh
dGFBcnJheSgpIGNvbnN0CitSZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KG1fc2VnbWVudHMsIFtdIChhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdtZW50
LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpOwogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRh
PiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWlu
UHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRh
U2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCBm
YmMyODNmYmMzMzYuLjJkZTQxOTM0ZGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNs
YXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9u
Owogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFu
Y2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2
YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUK
QEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2Qw
N2M3YmYyZC4uZDI1OTIyNWJhOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMsMTYg
KzQzLDE2IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9u
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVz
OwotICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJl
ZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OworICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3Rv
cjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1N
ZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZv
cm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgU3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlk
dWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpID0gMDsKIAogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yOwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8
TWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3Rk
OjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVz
aW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBz
ZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0
aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIFNl
c3Npb25Mb2FkRmFpbHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcgKzEw
MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT47CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNp
bmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5
U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nl
c3NWYWx1ZSk+OworICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5k
ZXggY2M2ZGM3ZjE0MGNkLi41MmE2MTQ4YzgzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzczLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRl
eCBmMjE4Zjk3OTA0ZmIuLjRiYTc1YmYwMGQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBA
IENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9K
U0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tl
eXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJl
ZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlk
QXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVj
dG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIo
KSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApp
bmRleCBhNTg0YjZjZDI2NmIuLmUxZTA5OGExZDVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0
dXMsIFdURk1vdmUoa2V5SUQpLCBXVEZNb3ZlKGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAg
Ym9vbCB0YWtlVmFsdWVJZkRpZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZS4uZmNhNmYyMzg4YTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RN
VXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2Jq
ZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWls
IG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVu
c2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtNDYs
NyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFy
c2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0
IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8g
dmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5oCmluZGV4IDc0ZjUxNWIwYmQyYS4uZmNmNWJkZGE3YzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAt
MzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxp
dGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAppbmRleCBkZDM0NTdiZmRlOGMuLjMxYTlmZGZhMDJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5z
ZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQog
Ly8gXTsKIAogLy8gVGhpcyBmdW5jdGlvbiBleHRyYWN0cyB0aGUgS2V5SWRzIGNvdW50IGFuZCB0
aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEtleUlkIGluIGluaXREYXRhIGJ1ZmZlci4KLXN0YXRp
YyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgc3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAoMCwgMCk7CiAKQEAgLTEzOCw3ICsx
MzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5
KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXRE
YXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgp
OwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTg4LDE1ICsx
ODksMTUgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlp
ZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBj
aGVja3MgaWYgdGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5pdERh
dGEuCi1zdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQorc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5
SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7
CiAgICAgcmV0dXJuICgoa2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOwog
fQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRz
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlk
czsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVk
IGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlk
IENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAg
cmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIy
NCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRh
dGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOwor
ICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlz
IGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGlu
aXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAg
ICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNv
bnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFu
IGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2
NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElE
IHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXkt
PnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRh
LmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5
SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1
cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xl
YXJLZXk6OnNpbmdsZXRvbigpCkBAIC0zODgsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25z
dAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmpl
Y3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0
KGluaXREYXRhKSkKQEAgLTQwNSw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9i
amVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkK
QEAgLTQzMSw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNr
KHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICAvLyBSZWplY3Qgc2V0dGluZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxiYWNr
KEZhaWxlZCk7CkBAIC00NTMsNyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4g
Q0RNSW5zdGFuY2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJL
ZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1
ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpAQCAtNDc1LDcgKzQ3Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24g
SUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJl
IGJlY2F1c2UKQEAgLTU2Niw3ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAg
IEFTU0VSVChzZXNzaW9uSWQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRjaENh
bGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFj
a10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAgICAg
IFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoCiAgICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp3
ZWFrVGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0b3Ig
PSBXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBz
dWNjZXNzXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpA
QCAtNTc5LDcgKzU4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29uc3Ry
dWN0IHRoZSBLZXlTdGF0dXNWZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQga2V5
cywgYW5kIHRoZSBtZXNzYWdlIGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1h
dC4KICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5hbGxL
ZXlzQXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtZXNzYWdlOwogICAgIHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCByZXBy
ZXNlbnRzIHRoZSAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMnIGFy
cmF5CiAgICAgICAgIC8vIG9mIGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBrZXlz
IHRoYXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTkzLDE0ICs1OTUs
MTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
Q29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAgICAv
LyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2JqZWN0
LgogICAgICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0cmlu
ZygpOwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51dGY4
KCk7CiAgICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmlu
Zy5kYXRhKCksIG1lc3NhZ2VDU3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0
b3JlLnVucmVmQWxsS2V5cygpOwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0
dXNWZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkKTsKKyAgICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNj
ZWVkZWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJlY29y
ZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4
IDljMDc0N2RjMWJkOC4uOWUyN2ZlOTEyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
QEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiB9OwogCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9CiAgICAgdm9pZCBpbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTA5
LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVi
bGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2Vl
Li5lY2Y0ZTA4YzliOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXll
ZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
U2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjLi45MzdkMWZiNmYwYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cApAQCAtMjYsMTYgKzI2LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0
ZXMpOwogICAgIG1fc2l6ZSA9IGdfYnl0ZXNfZ2V0X3NpemUoYnl0ZXMpOwogICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4oYnl0ZXMp
KSB9KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVz
KiBieXRlcykKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoYnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKIEdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUdCeXRlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKaW5kZXggOWZjNGVhODJlYmJjLi5kYzFmYjE2ZWEwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgRm9udENhY2hlOwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgR2x5cGhQ
YWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogc3RydWN0IEdseXBoRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NS4uZmJiY2NjNDM2
ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBP
bmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2Vy
dmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1My4uZTMyYTM2YzYwNzYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQs
NyArMTA0LDcgQEAgYm9vbCBJbWFnZTo6aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2U6OnNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5j
b2RlZEltYWdlRGF0YSA9IFdURk1vdmUoZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCmluZGV4IDZhMDgxNjk1N2FhOS4uNjU1ZGZlNzNjZmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMg
bm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVz
IGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFs
IEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykg
eyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgU3Ry
aW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVu
a25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJl
ZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdl
RGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVy
biBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9
CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAg
LTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhl
bFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZl
ciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRp
b25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRkZGI2ZGY4M2VjYi4uZGUzM2YxYWY0MTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3Bp
eGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEo
KSkpOwogICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6
ZSkpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRh
dGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBt
X3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVp
bnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0K
IApAQCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xv
cjo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7
IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0
OyAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZv
ciBHSUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4OC4uN2M1NDk0N2Y0ZDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBJbWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkK
IH0KICNlbmRpZgogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4
YWRjMTc1ZC4uNmE4ZmZjYjYwZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVm
YXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlw
ZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5
cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRl
SW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQ
dHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CiAKICAgICBzdHJ1Y3Qg
SW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBw
b3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRh
UmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJD
YWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAxOTI4NC4uMzA3NzQzMzE1YTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgm
bV9ydW5Mb29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNl
OjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VT
b3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNv
ZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVu
c3VyZURlY29kZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyAr
MTA0LDEzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERh
dGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0
YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291
cmNlOjpkYXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEo
ZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAw
YTkuLjgxNGYwZTEyZWJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNv
ZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VT
b3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQg
Y2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBF
bmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgcmVzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2Vk
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAg
ICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFD
YWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6
OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSk7CiAKLSAgICBib29sIGVuc3VyZURlY29kZXJB
dmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZURlY29kZXJBdmFp
bGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAgICAgYm9vbCBpc0RlY29kZXJB
dmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAg
dm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBsb25nIGRlY29kZWRTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQuLjU3
N2JkNTA4YTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVs
PiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwg
VVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7
CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5
cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAs
IG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlm
MTEuLmU2YmRlMTY2Zjk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5n
LCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVs
KCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhw
bGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyAr
NjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+
KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTljNTg1OGQyNC4uODg2OTFk
YzI1NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOCArNTEsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAg
dmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIFNoYXJlZEJ1ZmZlci4KKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVkKHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjNy4uOGIwNGY5YmU5NmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTg2LDEyICs4NiwxMiBAQCBj
b25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKQog
ICAgIHJldHVybiBza2Q7CiB9CiAKLXN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDog
Insgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgp
KSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAg
ICAgaWYgKCF2YWx1ZSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgaWYgKCFzaW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IHNpbmZzOwogICAgIHNpbmZzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZkFycmF5
LT5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnNpbmZBcnJheSkgewpAQCAt
MTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RT
aW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIH0KIAogdXNpbmcgU2NoZW1lQW5k
S2V5UmVzdWx0ID0gVmVjdG9yPHN0ZDo6cGFpcjxGb3VyQ0MsIFZlY3Rvcjx1aW50OF90Pj4+Owot
c3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0
cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGF1dG8gYnVmZmVycyA9IGV4dHJhY3RTaW5mRGF0YShidWZmZXIpOwog
ICAgIGlmICghYnVmZmVycy5zaXplKCkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIFNjaGVt
ZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFj
dEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRz
ID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0
byYgcmVzdWx0IDogcmVzdWx0cykgewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpl
eHRyYWN0S2V5CiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVTRURf
UEFSQU0oYnVmZmVyKTsKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIEluIHRoZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEgaXMgdGhl
IGtleSBJRC4KLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVu
ZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcgKzM5Myw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAg
ICBpZiAoIXZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IGJjOTNm
NmY2YTdiZC4uMzE3YmI4ZDU3ZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaApAQCAtNzEsMTcgKzcxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0
aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIHNpbmZOYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVy
Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRC
dWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCAxNTliOTBjZGI0OGYuLjU2YjU4YzI1YTI4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xp
ZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAq
c3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJv
b2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0
YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNl
cnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNl
c3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBl
Y3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250
ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25E
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50
CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7
CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAg
dm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVz
dChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChB
VkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVx
dWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxD
RE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNl
c3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNz
aW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUg
fTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0
cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25z
OwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENs
b3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOS4uYmE1MDYx
ZWJiNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIEFM
TE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgcmV0dXJuIEF0b21TdHJpbmcobnNJ
bml0VHlwZSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRh
dGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250
ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIEFWQ29udGVu
dEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb250ZW50
S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsKIH0KIAotUmV0YWluUHRy
PEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmV0YWluUHRy
PEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkK
IHsKICAgICBmb3IgKGF1dG8gcmVxdWVzdEl0ZXIgPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5i
ZWdpbigpOyByZXF1ZXN0SXRlciAhPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5lbmQoKTsgKyty
ZXF1ZXN0SXRlcikgewogICAgICAgICBhdXRvJiByZXF1ZXN0ID0gKnJlcXVlc3RJdGVyOwpAQCAt
MzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAgUmVzcG9uc2VNYXAgbV9yZXNwb25zZXM7CiB9
OwogCi1zdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZh
bHVlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWls
IG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVu
c2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtMzI0
LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290
IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAg
ICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTM4MCw3ICszODAs
NyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRp
ZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGF1dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAg
aWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Np
b25LZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25L
ZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7
CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewogICAgICAgICAgICAgICAgIHJldHVybiBr
ZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwogICAgICAgICAgICAgfSkgIT0gbm90Rm91
bmQ7CiAgICAgICAgIH0pKQpAQCAtNjczLDcgKzY3Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VU
eXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwg
IlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAg
ICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZO
YW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBp
ZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVRE
QVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5j
TmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hT
dHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0g
W05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0
cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJy
b3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAgLTczNiw3ICs3MzYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBpc0VxdWFsKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAg
ICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1
YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJl
dHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4
cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3ds
ZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2Vy
dmVyQ2VydGlmaWNhdGUoKTsKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBp
cmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5n
ZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25S
ZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlm
aWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgcmVxdWVz
dCkgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1
ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdl
dCgpOwogICAgICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBA
IC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAg
ICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpw
YXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9i
bGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250
ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkz
NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjps
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRh
KiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5
YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURz
LmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtl
eVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEg
PSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw5ICsxMTUzLDkg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVy
Q2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47
CisgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxi
YWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFj
a0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgdXNpbmcgQ2FsbGJhY2tGdW5jdGlvbiA9IEZ1bmN0aW9u
PHZvaWQoUmVxdWVzdHNEYXRhJiYpPjsKICAgICAgICAgc3RhdGljIFJlZlB0cjxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uJiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAg
YXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBr
ZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJl
cXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAg
ICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhr
ZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAg
ICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5
bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJl
cXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIx
MSw4ICsxMjExLDggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5IHsKICAgICAg
ICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMp
IHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0Lmdl
dCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShr
ZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBhdXRv
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJ
ZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdU
Rk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0o
ZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92
ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVx
dWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7
CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0
ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0
byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAK
LSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJ
ZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVy
cm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApp
bmRleCAwMzM0ZDYyM2IyYTcuLjYyYjgzZmJmZDU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBwdWJs
aWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdl
RGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBv
cnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3NldFRyYWNrICpmaXJz
dEVuYWJsZWRUcmFjaygpOwogICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNS4uMzVj
NmNlNjdlODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1Nh
bXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpD
CiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24g
bWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91
dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBA
QCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTpt
X2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRT
aXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiLi5jOWQ5YjJhOTY4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaWRlb0xheWVy
TWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBAIC00MjYsNyArNDI2LDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50
VGltZTsKICAgICBtdXRhYmxlIGludCBtX3RpbWVDb250cm9sU3RhdHVzQXRDYWNoZWRDdXJyZW50
VGltZSB7IDAgfTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX3JlcXVlc3RlZFJhdGVBdENhY2hlZEN1
cnJlbnRUaW1lIHsgMCB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CiAgICAgZG91YmxlIG1fY2Fj
aGVkUmF0ZSB7IDAgfTsKICAgICBib29sIG1fcmVxdWVzdGVkUGxheWluZyB7IGZhbHNlIH07CiAg
ICAgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZSB7IDEuMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
aW5kZXggZDE4YTg1YTc5NGY1Li5iMWM2MDc5YzY0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjc5Miw3ICsyNzkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmMKICAgICBpZiAo
IW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CisgICAgYXV0byBpbnN0YW5jZVNl
c3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CiAgICAgaWYgKCFpbnN0YW5jZVNl
c3Npb24pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0Li40ZGQ2Yjkx
YTk0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8g
bnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYg
KG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGlu
dWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdp
dGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0Li43NTRiMWUyZWVjMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzMs
NyArNzMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTIyMSw3ICsyMjEs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFW
RShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1f
a2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRT
aXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjYuLjBlZmVlYWVmNWIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTQzLDcgKzQzLDcg
QEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNsYXNzIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5T
aGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3
YjExMDcuLmY5MjFmM2RhMGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsg
fQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9y
ZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRl
ciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZvaWQg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50
LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAot
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVz
dCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWUuLjk0MTliY2VhMzhk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsMTAgKzMxLDExIEBAIHR5
cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwog
CkBAIC00NSw3ICs0Niw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKLSAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZU
X0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOworICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFj
ZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIH5Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
KCkgPSBkZWZhdWx0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3Jl
YXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29uc3QgU3Ry
aW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmLi5iNmQzZWIzNjMxMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTI0NCwxNiArMjQ0LDE2IEBAIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRl
c0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwKIAog
dm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiB7Ci0gICAgU2hhcmVkQnVmZmVy
KiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2hhcmVkQnVmZmVyLT5kZXJlZigpOwogfQog
I2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2Rl
ckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1
dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlk
ZW50aWZpZXJIaW50OwpAQCAtNTYyLDIzICs1NjIsMjQgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFn
ZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGkKICAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCi12
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRh
UmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAv
LyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0
bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgotICAg
IC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBD
RkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKLSAgICAv
LyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VV
cGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhv
dXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCisgICAgLy8gV2UgdXNl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBD
RkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKKyAgICAv
LyByZWFsbHkgbG9va2luZyBhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBDR0lt
YWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQot
ICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICBkYXRhLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNh
bGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRC
dWZmZXIKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgorICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250
aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CisgICAgLy8gV2UgdXNl
IHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQ
b2ludGVyIG9uZSBiZWNhdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5v
dCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50
ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9y
IHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRp
cmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVy
R2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRy
PENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUo
KSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92
aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOTc0MDczNmEyMWFjLi5hMGFjMWMyZmJl
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkg
ZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCAzMWMyN2MwNjliMmIuLmZmNzdiNTNlOWQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMx
OSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShi
b29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
KTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BE
RkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMy4uZGU2ZGVi
ZTJiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY1LDkgKzM2
NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2Nr
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29u
LCB2b2lkKiwgc2l6ZV90KQorICAgIHN0YXRpYyB2b2lkIEZyZWVTaGFyZWRCdWZmZXIodm9pZCog
cmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVp
bnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAg
ICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXIqPihyZWZjb24p
OwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC00MDgsMTEgKzQwOCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IHJlYWRSZXN1bHQudmFsdWUoKTsK
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbk9mZnNldCA9IDA7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChzaGFyZWRCdWZmZXItPmhhc09uZVNlZ21lbnQo
KSwgIkNhbiBvbmx5IGRlYWwgd2l0aCBzaGFyZWRCdWZmZXIgY29udGFpbmluZyBhIHNpbmdsZSBE
YXRhU2VnbWVudCIpOwotICAgICAgICAgICAgICAgIC8vIEEgU2hhcmVkQnVmZmVyIGRvZXNuJ3Qg
aGF2ZSB0aHJlYWQtc2FmZSByZWZjb3VudGluZywgYXMgc3VjaCB3ZSBtdXN0IGtlZXAgYSByZWZl
cmVuY2UgdG8gdGhlIERhdGFTZWdtZW50IGluc3RlYWQuCiAgICAgICAgICAgICAgICAgLy8gVE9E
TzogY291bGQgd2Ugb25seSBjcmVhdGUgYSBuZXcgQ01CbG9ja0J1ZmZlciBpZiB0aGUgYmFja2Vu
ZCBtZW1vcnkgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgb25lPwotICAgICAgICAgICAgICAg
IGF1dG8gZmlyc3RTZWdtZW50ID0gc2hhcmVkQnVmZmVyLT5iZWdpbigpLT5zZWdtZW50OwotICAg
ICAgICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjptaW48c2l6ZV90PihudW1Ub1JlYWQs
IGZpcnN0U2VnbWVudC0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQpOworICAgICAg
ICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjptaW48c2l6ZV90PihudW1Ub1JlYWQsIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQpOwogICAgICAgICAg
ICAgICAgIC8vIEZyb20gQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlIGRvY3VtZW50YXRp
b246CiAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGZvciA2NC1iaXQgYXJjaGl0ZWN0dXJl
cywgdGhpcyBzdHJ1Y3QgY29udGFpbnMgbWlzYWxpZ25lZCBmdW5jdGlvbiBwb2ludGVycy4KICAg
ICAgICAgICAgICAgICAvLyBUbyBhdm9pZCBsaW5rLXRpbWUgaXNzdWVzLCBpdCBpcyByZWNvbW1l
bmRlZCB0aGF0IGNsaWVudHMgZmlsbCBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UncyBm
dW5jdGlvbiBwb2ludGVyIGZpZWxkcwpAQCAtNDIwLDEwICs0MTcsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSBhbGxvY2F0b3I7CiAg
ICAgICAgICAgICAgICAgYWxsb2NhdG9yLnZlcnNpb24gPSAwOwogICAgICAgICAgICAgICAgIGFs
bG9jYXRvci5BbGxvY2F0ZUJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBhbGxvY2F0
b3IuRnJlZUJsb2NrID0gRnJlZURhdGFTZWdtZW50OwotICAgICAgICAgICAgICAgIGFsbG9jYXRv
ci5yZWZDb24gPSBmaXJzdFNlZ21lbnQucHRyKCk7Ci0gICAgICAgICAgICAgICAgZmlyc3RTZWdt
ZW50LT5yZWYoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhudWxscHRyLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3Rf
Y2FzdDx1aW50OF90Kj4oZmlyc3RTZWdtZW50LT5kYXRhKCkpKSwgZmlyc3RTZWdtZW50LT5zaXpl
KCksIG51bGxwdHIsICZhbGxvY2F0b3IsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBjYW5SZWFk
LCAwLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5GcmVlQmxv
Y2sgPSBGcmVlU2hhcmVkQnVmZmVyOworICAgICAgICAgICAgICAgIGFsbG9jYXRvci5yZWZDb24g
PSBzaGFyZWRCdWZmZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYo
KTsKKyAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdp
dGhNZW1vcnlCbG9jayhudWxscHRyLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1aW50
OF90Kj4oc2hhcmVkQnVmZmVyLT5kYXRhKCkpKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIG51bGxw
dHIsICZhbGxvY2F0b3IsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBjYW5SZWFkLCAwLCAmcmF3
QmxvY2tCdWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJO
b0VycikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91
Z2hNZW1vcnkpOwogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gY2FuUmVhZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggZTgwNTA5ZWNjYTA1Li42
MzhlNjgzOTdhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCkBAIC03MjksNyArNzI5LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpz
d2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRl
bUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsK
ICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVk
U2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0
T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5l
SXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5l
SXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVt
KTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4My4uYjMxYmM1ZmQ0ZTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xMDIsNyArMTAyLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE2OCw3ICsxNjgsNyBAQCBw
dWJsaWM6CiAgICAgLy8gd2l0aCBwYWRkaW5nIGJldHdlZW4gZWFjaCBpdGVtIHRvIGVuc3VyZSB0
aGF0IGFsbCBpdGVtcyBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLgogICAgIC8vCiAgICAgLy8gSWYg
YSB3cml0aW5nIGNsaWVudCBpcyBwcmVzZW50IGFuZCByZXF1aXJlcyBjdXN0b20gZW5jb2Rpbmcg
Zm9yIHRoZSBnaXZlbiBpdGVtIHR5cGUgVCwgdGhlCi0gICAgLy8gaXRlbSBidWZmZXIgd2lsbCBh
c2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29k
ZWQgZGF0YSBmb3IgdGhlCisgICAgLy8gaXRlbSBidWZmZXIgd2lsbCBhc2sgdGhlIGNsaWVudCBm
b3IgYW4gb3BhcXVlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRh
dGEgZm9yIHRoZQogICAgIC8vIGl0ZW0uIFRoaXMgZW5jb2RlZCBkYXRhIGlzIHRoZW4gYXBwZW5k
ZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3aXRoIHBhZGRpbmcgdG8gZW5zdXJlIHRoYXQKICAgICAv
LyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGlzIGRhdGEgYXJlIGFsaWduZWQgdG8gOCBieXRlcywg
aWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNvZGVkCiAgICAgLy8gaXRlbSBkYXRhLCBh
IGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgd2lsbCBiZSByZXF1aXJlZCB0
byBjb252ZXJ0IHRoaXMgZW5jb2RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1Li4yYjQ0M2ZiYmVkMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVs
ZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tl
eV90IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2Ug
ZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgOiBtX2Zv
bnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0X2ZhY2UoZnJl
ZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVmKCk7IC8vIFRo
aXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNlQ3VzdG9tRm9u
dERhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5
Yjg3NmIyNy4uZGZiYzU4MGZiOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSog
dG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1l
clNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0
cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJ
bWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJH
U3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJl
YW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAg
cHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRh
U3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9
CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29k
ZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9
IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdT
dHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1
ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAg
bV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTQuLmQzZWY2
YTQ1Y2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNDEsOCAr
NDEsOCBAQCBjbGFzcyBJbWFnZURlY29kZXJHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VE
ZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
LSAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJHU3RyZWFt
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRp
YVR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVvOyB9CkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxs
RGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC0xMjIsNyArMTIyLDcgQEAg
cHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1w
bGU+JiYpOwotICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
IAogICAgIGNvbnN0IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogc2FtcGxlQXRJbmRleChz
aXplX3QpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IDc5Nzk0ODBmOTFjNS4uYjMyNGNmMTE0NjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY5Miw3ICszNjky
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVk
dWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUi
LCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAg
ICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJp
bml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5p
dERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4NmZiMWFm
NDg3Li45MzAxOTA5OTQ1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oCmluZGV4IDY5MmE5OTZkMTljMi4uMzQ5YmZkY2FhZDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJL
ZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5Q2xlYXJLZXkuaApAQCAtNjIsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICBDRE1Q
cm94eUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByb3h5Q2xlYXJLZXko
KTsKIAotICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVu
IFNoYXJlZEJ1ZmZlcnMsCisgICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3Rl
bmN5IGJldHdlZW4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMsCiAgICAgLy8gVmVjdG9yPGNoYXI+
J3MgYW5kIHt1aW50OF90KixzaXplX3R9IGlkaW9tcyBmb3IgcmVwcmVzZW50aW5nIGEgY2h1bmsg
b2YKLSAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBTaGFyZWRCdWZmZXJzIGFy
ZSBkYW5nZXJvdXMgc2luY2UKKyAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCiAgICAgLy8gdGhleSdy
ZSBub3QgdGhyZWFkLXNhZmUgYW5kIHRoaXMgY2xhc3MgbXVzdCBtYWludGFpbgotICAgIC8vIHRo
cmVhZC1zYWZldHksIGJ1dCBtYXliZSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50IGNvdWxkIGJl
CisgICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50IGNvdWxkIGJlCiAgICAgLy8gbWFkZSB0byB3b3JrLCBob3dldmVyIHRoYXQg
aGFzIHplcm8gaGVscGVycyBmb3IgZHJvcHBpbmcgaW50bwogICAgIC8vIGl0ZXJhdG9yLWF3YXJl
IC8gY29tcGFyYXRvci1hd2FyZSBjb250YWluZXJzLi4uCiAgICAgc3RydWN0IGNlbmNEZWNyeXB0
Q29udGV4dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCAyZWZhMDQzNjBlODguLmMz
ODkxNmU3ZDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZm
ZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGll
czo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENE
TVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpA
QCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2so
U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lz
dGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9j
YXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUt
PnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4g
Q0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29u
c3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgewogICAgICAg
ICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxv
YWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VS
VChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXls
b2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXls
b2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUu
aGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBj
b25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBh
bHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUtl
eU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
UGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAg
IGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKICAgICBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNE
TSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgp
LCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hh
cmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3Ms
IHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9S
KCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAg
ICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2UgPSBbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBt
X2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Np
b25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0
ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9u
TnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUsMTMgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9u
Q2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsK
IAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Npb25JRC51dGY4KCku
ZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3Nh
Z2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01NjIs
NyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2Fn
ZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAot
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2Vzcykg
ewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcsNyArNTk3LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1l
c3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYg
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgp
KTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6
dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJt
ZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3Bh
aXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNl
bnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4K
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQgPT0gc2Vzc2lvbklE
KTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVu
ZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAg
ICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXls
b2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RF
QlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklE
LnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdU
Rk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEyMTEyM2MuLjEwMjBl
MTUzMjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAs
NyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRp
b25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVu
dGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9
CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpA
QCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwg
OiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5j
ZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1
c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAg
dXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAK
LSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlw
ZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9y
Q2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNr
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0
RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNl
c3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9u
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxp
emF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+
IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNr
PiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NC4uZWE4OTBmNjdkYTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJy
b3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFy
a3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNz
dGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6
OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxv
YWQpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5j
SWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsK
ICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOS4uMjdkZDRlYWUwZDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDgg
KzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXls
b2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0
OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlk
cyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgog
ICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0
aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNh
bm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3Bh
eWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRC
dWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lm
TmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAg
ICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
fQogCi0gICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBwYXlsb2FkKQorICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0
ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChX
VEZNb3ZlKHBheWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2Fk
LT5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBh
cnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2
b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEK
ICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9w
YXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5h
cHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJl
dHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29u
c3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNl
bmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RD
ZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5
bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjLi42OTI4YTYzZTk3MWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3
YjAzODkuLjY4YmNjODg0NmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1
bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVu
dFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzLi5mYTAw
MDgxMTYwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsOSArMzUsMTAgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBz
dHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjYuLjBmYThmMzA2YWQ5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBH
U1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5j
ZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBl
VmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQg
T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMg
cmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2
aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVy
KTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2
b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0
aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5U
eXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6
R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0
aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhLi4wZGI0YWZhZGIzZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RX
cml0ZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCkBAIC00Myw3ICs0Myw3IEBAIGVudW0gRFdSSVRFX0ZP
TlRfU1RSRVRDSDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IG5hbWVzcGFjZSBEaXJlY3RXcml0ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IDVmMTBmNzM5MmQwNC4uMDhmYzlmMTllYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJl
c291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFn
Z2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJl
U2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA2MjllMGU2MWExMDQuLjc3
MzU3MzliOTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lk
IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlm
ICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CmluZGV4IDRmNDcyNTg2YjQyNC4uYzIzNjVmZDc0NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
aApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBJbWFnZURlY29kZXJEaXJlY3QyRCBmaW5hbCA6IHB1
YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgogICAgIEltYWdlRGVjb2RlckRpcmVjdDJEKCk7
CiAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUoU2hhcmVkQnVm
ZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRp
YyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKSk7CiAgICAgfQpA
QCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAg
ICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERh
dGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmlu
YWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VXaW4uY3BwCmluZGV4IDBkODgyMGU5ZjNkNi4uMmQ5NzI3MGE3MzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogLy8gVGhpcyBmdW5jdGlvbiBs
b2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopOworUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciop
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBkOTU2ZDllNzYyNWQuLjMzYzk1ZWMzMzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIp
CitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNp
Z25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1LDcgQEAgYm9v
bCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0cjxTY2Fs
YWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUltYWdlRGVj
b2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dF
QlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmEuLjljNDA1NTc4MjQxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZy
b20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0aGVyZSBpc24n
dCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29k
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4g
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIApAQCAtNzAsMTYgKzcwLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFT
dGF0dXM6OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYg
KG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAg
Ly8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGlu
IGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5i
ZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRp
Z3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdp
bigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVj
b2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShh
bGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOwogICAgIFZlY3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLCAxPiBt
X2ZyYW1lQnVmZmVyQ2FjaGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIG11dGFi
bGUgTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5jcHAKaW5kZXggN2M2MDNmZDgzNThjLi4yNmY4ODY0OTZlNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVh
ZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikK
IAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29s
IEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitib29sIEFWSUZJbWFnZVJlYWRlcjo6
cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVt
b3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgIT0gQVZJ
Rl9SRVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVjZWl2ZWQgPyBtX2RlY29kZXIt
PnNldEZhaWxlZCgpIDogZmFsc2U7CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgQVZJRkltYWdlUmVh
ZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBi
b29sIGFsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNv
ZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVm
ZmVyLCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1h
Z2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhKQogewogICAgIGlmIChtX2RlY29kZXItPmZhaWxlZCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAppbmRleCBjYmNhMGI4YzEyNGIuLjQ5NmY2OWY4
MTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1Ymxp
YzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAg
IH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRl
Y29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsK
ICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291
bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2
ZWMuLmY3NDU1YzE0NmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNi4uNjRkZWQ2
YWJiZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmlu
YWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNp
emVfdCBpbmRleCkgZmluYWw7CiAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8
bV9yZWFkZXJ8LiBCZSBjYXJlZnVsIHRvIGF2b2lkCiAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQg
bWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oCmluZGV4IDQ4NDRmMzgwZGMxNy4uYmQ0MzBlOGE4YmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBw
dWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRp
bmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMg
aW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50
MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBv
ZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgm
cmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVp
bnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
aW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAg
ICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAm
ZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBC
TVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2Rl
ZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2sp
OwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVy
KSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRh
dGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBp
cyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNz
YXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHBy
aXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAv
LyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5n
IGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2
MDEyMDM3NGY5YzQuLjRhMjEyNTVhOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNr
aW5nU3RvcmVDYWlyby5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFn
ZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAogICAgICAgICByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PHVpbnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAgICAg
ICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwg
c2l6ZSgpLndpZHRoKCkgKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJvX3Vz
ZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3Vz
ZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCks
IFtdKHZvaWQqIGRhdGEpIHsgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+
KGRhdGEpLT5kZXJlZigpOyB9KTsKKyAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3Vy
ZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBk
YXRhKSB7CisgICAgICAgIHN0YXRpY19jYXN0PERhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7
CisgICAgfSk7CiAKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggZTZhYmUwZDk1NDRiLi5iOWVjMDFiOGFlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAK
IEdJRkltYWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBH
SUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IDM1ZGYzM2Y2ZGZj
NC4uYzc0NzE5OTk5Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikg
ZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0
aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5oCmluZGV4IDQyMTQ2ZTAzMjkzMi4uMTA4MmZkZjBkZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KICAgICAvLyBG
SVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBib29sIGRlY29kZShXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7CiAK
QEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVfdCBtX2N1cnJlbnREZWNvZGlu
Z0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21wbGV0ZWQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNzE3YzQ1ZDMwNTcuLmMwNzEzNDViOGJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNv
ZGVyOjpJQ09JbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3AKIAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZh
dWx0OwogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggZmI3YTkwM2IyYTA3Li4xMGVlOWI0ZDJlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIK
ICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNv
Il9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5h
bDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmLi41Y2ZhYzlm
MjM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3
IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIp
CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdf
c2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJr
ZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5m
bykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtl
clNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVm
ZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRh
ICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKIH0KICNlbmRpZgogCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgogICAgICAgICBtX2J5
dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tpcCwgc3RhdGljX2Nhc3Q8
bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9vbCBkZWNvZGUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUp
CiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBF
RzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3
ZS4uMjA0NzNmMGVlZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURl
Y29kZXIuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAg
IHN0cnVjdCBSZWFkZXIgewotICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
OworICAgICAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAg
ICAgICAgc2l6ZV90IG9mZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZS4uNGNiZDMyM2Q5YTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShj
b25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNp
Z25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAg
ICAgICAgUE5HSW1hZ2VEZWNvZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNv
ZGVyKj4ocG5nX2dldF9wcm9ncmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDAyZjFiMDlkYmM3Ni4uYjFiZWM1NWU3OGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVjb2Rl
cjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRlZmF1
bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRo
cmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0
aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNh
bGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEK
ICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25z
aXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEo
bV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEo
KSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0
YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXRE
YXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggYWYz
NjVlOWNmOWM3Li5kZDI4YmM4OGRmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7
CiAKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAid2VicCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5h
bDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFs
OwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXpl
X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQppbmRleCA5MDllOGU3NjhhZGIuLmIyMzc3ZmUzNDExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIzNiwxNCAr
MjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlk
Z2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWRO
b3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5h
bGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBA
IC0yNTEsNyArMjUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNl
bmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdl
VHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAg
ICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJl
c3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5k
ZXggMTY3Y2VmMDJkNzhkLi4xNmIzZDVkNDQxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzM4LDcgKzMzOCw3
IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0g
Y29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRh
W2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRl
bnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Nd
IGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Nd
IGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmli
dXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRh
OwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25z
VG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0
LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNs
aWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkp
CiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5
cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNl
RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZElt
YWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1
Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEo
KSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0
eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJv
cC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBj
YW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBh
cmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2Ig
YW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3Zl
cmAKQEAgLTY3Miw4ICs2NzIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Omdl
dDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsK
IAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNj
NDQwM2QuLjdhNGEyYjE2NWIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHBy
b3ZpZGVyKQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQor
ICAgIDogbV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3Zp
ZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dl
YlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10p
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
Njc3ZjhjYWRhYjU5Li4wZDI1NDk4Yjg2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxl
V3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3
cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlw
ZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zNjIsNyArMzYy
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBs
YWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFp
bnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1
dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0
ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJM
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2IuLjg4ZDA0
MDI1ODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50
LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250
ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5s
ZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVz
c0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAg
ICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNl
dE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3Ry
aW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAK
ICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMuLmMz
YjRkMmQ5NjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAg
ICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1U
eXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAg
ICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkK
ICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5n
ZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAg
fQogCkBAIC0zNDEsMTIgKzM0MSwxMiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4g
W21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMp
LmdldCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQogewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JU
eXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3Jp
dGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAg
LTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0
ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBs
YXRmb3JtVHlwZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
cikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3Jt
RGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAg
ICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaAppbmRleCA2ODEzZDVkYTdkY2IuLjc5NjU1NGY0Yzk3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsK
IGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zOwogCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3Ry
ZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERh
dGFDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkg
Y29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1
ZGY5MTU3NGE2Li40OThkNGVlMTM0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6Omdl
bmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
azo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZm
ZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJh
Y3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZi4uOWMyYzc5
N2I4MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRl
b1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVC
dWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZygpOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91Ymxl
KT4mJik7CiAKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygp
OwogICAgIHZvaWQgY29tcGxldGVGZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOwogCiAgICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlk
ZW8geyBmYWxzZSB9OwpAQCAtMTE3LDggKzExNyw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2sp
OwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91
YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmlu
ZGV4IDhjMWY3YzBlNTMxMy4uODQ4NDEwMGVhYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBA
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
KQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9p
bnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91
bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgog
ICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9z
ZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC00OTUsNyArNDkzLDcgQEAgdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAg
ICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRv
IGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1f
ZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
aAppbmRleCBhOWIyOWQ1OWU5YWEuLmNkZWU2MDM1MjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBm
YWZkZmU4N2M4MzcuLjRiZWJjYjUwOThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdl
UXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzYu
LmJhOGZkNGZmNGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12
b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVj
ZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2
MzM3ZDU2Y2U4Yy4uYzRmMDU0ODVmMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBA
IGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGlj
eSB7CiAgICAgU3RvcmFnZUFsbG93ZWQsCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50
Ki8pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3Vy
Y2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNi4uMDA4ZTIyNmZmOTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAg
ICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5h
bFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2Up
CiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0
YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBz
dHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0
Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNl
U3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBT
ZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VT
dGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRh
c2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxS
ZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJv
b2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+
IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJl
cXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRM
ZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVz
dCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vz
bid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50
aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhl
IGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdl
dCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAg
aWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAg
ICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIs
IGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3Ig
PSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAg
IGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4Owog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5z
aXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRM
ZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgp
OworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVy
ZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTEs
NyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdl
dChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
ZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRv
ci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IDQwNDg4NWFlNjM3Ni4uY2U0YzI1NDVjZGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
IGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hv
dWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRl
c1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJP
T0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJs
ZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJl
Y3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRp
b25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToo
bnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFp
bGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWIuLjhjODlkOTM4NjU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CkBAIC02NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4g
W21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07
CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9Owog
ICAgIGlmICghbV90YXNrKQpAQCAtOTE1LDExICs5MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25z
dCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwg
cmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3Bl
cmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShk
YXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEt
PnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdh
dGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Np
b24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHAKaW5kZXggYzM2ZTFmODg3NjQzLi4zNDk0NDU5MjU0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3du
bG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggYTNhYTBjZjVmY2QyLi5jZGU0NDQ1
Nzc1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJl
cXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3Vy
bERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBs
b25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShD
dXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShD
dXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZp
Y2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRh
M2ZiZGE3NTguLjA5MGQwMzliYTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5
LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShD
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVu
ZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25v
cmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkg
eyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRD
b21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJ
dCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAg
ICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVy
LmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkp
OwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5oCmluZGV4IDVjMDhiY2M1ZWIzZS4uOWExYTFiYmQxOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVs
dGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFy
dEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGll
bnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRp
ZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApp
bmRleCBmZDEzZmQzODEzMTQuLmM4MTM4ODZhOGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcAppbmRleCBkMzViMGU4MzkxOTUuLmQ4MmRkM2MxMGFjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYs
NyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYm
IGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJl
ZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZy
b21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRl
ZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25z
dCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVy
biBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBD
dXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZG93bmxvYWRNdXRleCB9OwpAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxl
LCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAog
dm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJh
MzcuLjNjN2NkZDg4M2ViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwog
CiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDdXJsUmVx
dWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCwgcHVibGljIEN1cmxNdWx0
aXBhcnRIYW5kbGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgQ1VS
TCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNpemVfdCB3aWxsU2VuZERhdGEoY2hh
ciosIHNpemVfdCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcm
Jik7Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAg
IHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2Fu
Y2VsVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmFsaXplVHJhbnNmZXIoKTsKQEAg
LTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3Jr
TG9hZE1ldHJpY3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHdyaXRl
RGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKICAgICB2b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAgICAgdm9pZCBjbGVhbnVwRG93bmxv
YWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhjODZjN2Q0Njg0Li4zNDc5ODMyZjU3
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0
OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJs
UmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMS4uMzA1ZDRlNWM5ZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNSArMTQy
LDE2IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBD
dXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJs
Q2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJl
Y2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXIt
PnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRD
b21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCmluZGV4IDZkNTU4NjQ0NTJmZC4uZGFmMGE1OWE0
ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVz
dCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1
cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWEuLjFmNGExOTMx
MzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6
IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFz
c3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhLi40NTM2ODFi
ZGFiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3Vz
dG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNvdW50
ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsg
Kytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CiAK
ICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05NzQsNyArOTc0LDcgQEAgc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwgZGF0
YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05ODYsMTUgKzk4NiwxNSBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAg
ICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50
cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAg
R2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
ZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFk
YXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxl
TmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxl
LgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRl
ZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdy
aXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAg
ICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBk
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDAp
OwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVt
cFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDcxLDcgKzEwNzEs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKSB8fCAhY2FjaGVkSW1hZ2Ut
PmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNoYXJlZEJ1ZmZlciogaW1hZ2VC
dWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkp
LT5kYXRhKCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQx
MWVkYmIzNTE3Yi4uODRmYTI5Y2UxZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
LCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6
OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
ZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAg
dmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rv
cnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAg
IGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25z
LmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tD
RE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJl
dHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1v
Y2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25z
dAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBt
X3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1
cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBj
b25zdAogewogICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXRE
YXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJv
b2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1
b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3Ry
aW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBp
ZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1J
bnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRp
ZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0
aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNp
emUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBj
YWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZh
bGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RN
SW5zdGFuY2U+JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFu
Y2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkg
ewpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkp
LCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/
IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBA
IC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJl
c3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNw
b25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEuLmQ5NmMxNTZlZTRkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSArNzcsOSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gbV9zZXNz
aW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KLSAgICB2b2lkIGFkZEtleXNU
b1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKKyAg
ICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAgY29uc3QgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKIAogcHJpdmF0ZToKICAg
ICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1Nlc3Npb25zIHsgdHJ1
ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX3Nl
c3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJp
dmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRBbmRJbml0
aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYp
IGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OwpA
QCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1wbGVtZW50YXRpb25U
eXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0
aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlm
aWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoK
ICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Np
b24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwg
Q2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAK
aW5kZXggZmMxMjdiN2I2N2JlLi4wNTlmM2EzODZiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNb2Nr
Q29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICBtYXliZURldGVybWluZVN0
YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVu
dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmRhdGEoKSwgbV9yZXBsYWNl
bWVudERhdGEuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuaAppbmRleCA0MTFhMzAwOTQ3YjUuLjYzNWFjODRiZTc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5Li41Zjg1NDVl
YmE1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsK
LSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYs
MTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3Jp
cHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlw
dEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5n
ZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkp
KTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYw
LDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3Jp
cHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVy
LT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIu
Z2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAog
dm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBp
ZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVm
ZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAuLmZkMmMxYWUyZjYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZl
ciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgU2NyaXB0
QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKQogICAgIHsKICAgICB9CkBAIC00OCwxNyArNDgsMTcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJp
bmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciog
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVy
LT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21l
bnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04
IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENv
bnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdk
N2IuLjQwNjZmYjM1MmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmws
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1f
dXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRG
cm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9udExv
YWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAg
ICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtl
ckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jv
b2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVy
biAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOwor
fQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1f
ZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAg
ICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGln
dW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAg
ICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9l
cnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBi
OWZjZmIxZDZmZWEuLjFiM2Q3ODcwZjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUy
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAg
ICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29sIGVycm9yT2NjdXJyZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIApAQCAtNzYsNyArNzcs
NyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVl
c3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTYuLjA5NzU0M2UxYjNiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckZldGNoLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29y
a2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENs
aWVudCwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewpAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlh
ODc1ZjhhZmMwLi45YThmYjM1Y2E1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDog
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7
CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UuLmZjY2MyYTllZDIwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1MSHR0cFJlcXVlc3Q6
OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBt
X3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogICAgICwg
bV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhp
cywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAgLTIwNyw4ICsyMDgs
OCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAKICAg
ICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNz
LCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAg
ICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRy
KS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051
bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPmV4
dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5v
cm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6Olllcykp
OyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBp
bmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOCAr
MjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlw
ZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVs
bHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIGF1
dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSA/IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0
MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygp
CiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1l
bnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAg
LTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAg
Ly8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEs
IGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0
YWY2Y2M0Ny4uMTYyY2E5NWFlYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgi
CiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJj
aFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VC
dWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3NzY5MTQ5NzZiMi4uNjZmMmI5NDA1MzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzMiBAQAorMjAyMS0xMi0wNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlciBzaG91bGQgYmUgdXNpbmcg
Y29udGlndW91cyBzaGFyZWQgYnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM4NjUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODYwODUyNTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKworMjAyMS0x
Mi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1
ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVp
ciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NXaW4uY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1
Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWls
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIFdlYiBjb250ZW50IHByb2Nlc3Mgc29tZXRpbWVzIGNyYXNoZXMg
dW5kZXIgV2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5k
ZXggNTczMDY3ZTNkZDA1Li4zMWMyZDc2ZjJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJv
eHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRl
eCA4ZTczZDNkOWE2NGIuLjAyYzVjZDM3YWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
cik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmLi5kZTgyNzNi
OWNmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBA
QCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24p
XSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2Uo
dHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBb
Y29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25J
ZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9u
LT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5
U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Np
b25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwg
W2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAg
ICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lv
bkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNl
c3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1
CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShr
ZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpz
ZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJjLi5mZTczMDk3MTMxZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1
c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNv
cmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
IGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAg
IHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApp
bmRleCA5YWIzNTc1ZjRjM2IuLmY3Y2I2YTYzZWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAg
UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94
eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJl
bW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5k
ZXggNjkyNGU3NGUzZjUwLi4zYjY2Yzc3NTc4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1
aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsK
IHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJs
aWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdjYzc0Li5kZThmNmRmNTVh
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzLi4xNTQ2YmRmZGZkY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2IuLjYxN2Y0NzY4OTU2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2Ns
aWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgK
aW5kZXggZDEzZDI1ZjY1ZjAyLi41YjdhN2UyYTc0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4m
Jik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWlu
dDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIz
YTc0YTIuLmU4M2Y5MTQzZDIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAg
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1
dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRh
dGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOworICAg
ICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMi4uNzFmZDAyMjI5YmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07
CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAzZjM5ZWIzMmYxYWEuLmQ4
OTIwZTk4NzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0
aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjEuLmUxMWJm
NTYzMTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNh
Li5lMDQ5ZTViMTJkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGJhYzAyMmFiNDU0My4uNzk3NWQ0
MWJhZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGll
bnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2
ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNv
ZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NS4u
ZWU1ZWIwMDZhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZS4uMzQ4Y2ZmYjllOGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0z
Miw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6
IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2
Li4wZTVlYjVhZGMwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3Qg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJj
ZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBj
b25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNw
b25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkK
LSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXRE
ZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVh
dGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBs
eVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNM
b2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3Vz
UmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAs
IG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNl
cyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwg
bV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRD
cmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZv
ckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAs
IG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxv
YWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAg
LTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1
bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwg
bV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0K
IAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpA
QCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAgICBp
ZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAg
ICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFN
SU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5
KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRl
clN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZv
ciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMg
Y2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFs
IGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0
aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZh
bGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODU4LDcg
Kzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3Bv
bnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251
bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1
ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0l
ZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVu
dHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0
KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0
dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBn
ZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRh
TGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJl
ZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVy
ZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+
Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1
cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAg
ICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0K
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291
cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2LDE5ICsxMjU4LDE5
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVk
ZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgp
CiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5n
ZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVt
cHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKQEAgLTEyODEs
NyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVF
bnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6
IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3Jpbmcg
Y2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09y
aWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAg
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5n
IGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRj
aENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RG
TW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAg
ICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkg
aW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUg
eworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1f
cmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7
ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFC
TEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFu
ZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjVi
ZWVhLi45ODQ0MjRhMzA2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3ICsx
MTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7
CkBAIC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdU
aW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9p
ZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJv
eEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpA
QCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERh
dGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVy
ZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBA
IC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVy
aW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpF
bnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNX
YWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0
NWI3Mi4uMWFmMWUwOGUzYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAg
ZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygi
ZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCAxOWVjOGNlYjkyZTMuLmFiMjlhMGIxYWM4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5k
ZXggNDU1NzgyZDU0YTJlLi4xN2Q0NzkwN2EzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25u
ZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgK
aW5kZXggMWMxZmYxNjQ3MTExLi44NTgwOGUxMjFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzcuLjgxOTY2MzAyMGM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzQs
MTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygp
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAg
IG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNS4uZWUxYmM4YjdkNmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CmluZGV4IDhlZTExMmE5ZGY4Mi4uN2EyNjIyMTlkZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBS
ZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlz
RW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAg
IH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAg
ICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmlu
ZGV4IDE4ZjU0NjkxZjM3Yy4uNDRmYzA2ODVmYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZm
OTk5Li5kZDMwNWFmMjk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hl
Ojpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBz
dGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAg
IAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRh
KQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5
KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xs
ZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24o
bV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFr
ZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpj
b2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Np
b24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBw
ZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVk
Qm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaAppbmRleCAxOTlmMGNmYjczMjUuLmVkMDRlYmNhMGIzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3
IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIg
PSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5m
byYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3
ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYs
IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0b3Jl
RGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFr
ZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogCiAg
ICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5
ZTJjMjZhLi43NjEwNzhkZWEwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6
RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitF
bnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRp
bWU6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAg
QEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAog
CiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkp
OwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsK
KyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
Ym9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0
KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBt
X2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2
LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29u
c3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNl
U3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6
ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QK
K1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAog
ewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFn
ZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMy4uOWMwNDIwZDQ0YTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5n
UmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVz
dCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwog
ICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0Owog
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJl
Y3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJz
OwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJl
Y3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxl
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlh
Zi4uN2IwYWRjNDBmMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNl
ID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVk
ZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlm
aWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTIw
LDE3ICsxMjAsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGlu
IGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsx
MzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5z
dG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEg
c3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1f
Y2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1h
a2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtl
RW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0Li4xYjg0M2RiN2VjMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKaW5kZXggNWUyZTAyZTJmYmEwLi4zMTk5YmZmMzExYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVu
dHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3Bv
bnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShj
b25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQg
eyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RV
cmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0g
bWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYS4u
NTJjMGIxMGZjYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1YmxpYzoKIAogICAgIHN0
cnVjdCBFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAg
IEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogCi0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZm
ZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0Owog
ICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29uc3QgVVJMJik7Ci0g
ICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3RvcmUoY29uc3QgVVJM
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5Zi4uNDE2NjhhNWIx
Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVy
U2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CmluZGV4IGU3ODBkNmMxYzNjZC4uMzA1MWYxNjljYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
QEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9
CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVk
ICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3
YjY2M2U2ZjcuLjM3ZjI5NDE2NjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShD
dXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29y
a0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMg
eyAqdGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUo
KSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxvYWQoKSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuaAppbmRleCAxYzQyN2RkYjc4ZDYuLjQ1YmU1Y2UxODQzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxSZXF1
ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVxdWVz
dFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERpZFNl
bmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Jiwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4Li4zM2Q0M2I3MjIzOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25z
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMi4uMTdmMDhjMjhlYTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNo
YXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRh
IGluIGEgbmV3IFNoYXJlZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUg
RGVjb2RlciwgdXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFS
ZWZlcmVuY2UgaW5zdGVhZC4KIAogI3ByYWdtYSBvbmNlCkBAIC00MywxMSArNDMsMTIgQEAgcHVi
bGljOgogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVk
QnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1ZTk3ODUuLjY3ZWM4ZTVlOTJiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlz
IHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8gRW5j
b2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJl
Y2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJhZ21h
IG9uY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2
ZWUyOTA1My4uYzAyNmY1NDk1NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIFJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgp
IC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyYy4uMWI0ZmRmYWY2ODM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
Y2xhc3MgRW5jb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikKQEAg
LTEyMCw3ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIGZh
Y3RvcnkgZnVuY3Rpb25zIHRvIHJldHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2ggb24g
ZmFpbHVyZS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90
KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29w
eUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsK
ICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIy
NzczNS4uMTEwZTBhZGRlNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJB
cmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBS
ZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZE
YXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJh
bGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAg
ICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJh
MjguLjNjMWI1N2Q1YWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCwxMyArNTY0LDEyIEBA
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZh
Y2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBV
cG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNh
bid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8g
bG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFj
ZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtl
Q29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xs
ZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyLi42ZmEw
MmE3YmMzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRh
dGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PnNpemUoKTsgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyLi44NDNmZDQ3MzEzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcg
KzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5
TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VN
RU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQg
ZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5j
b2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hh
cmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBE
byBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4
LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJl
ZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVj
YXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmls
ZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGlu
IHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFs
cmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMK
ICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NTcxLgpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmlu
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5h
cHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1NTAsMTAgKzE1
NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAg
ICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9v
bCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Pihw
bGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2Rl
ciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEp
LnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMjk3
Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJu
IHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNiArMzAxMCwzNCBA
QCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUAogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQo
KSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSk7CkBAIC0zMTA3LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uu
c2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0z
MTE3LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAuLjZmYWMyYWExZWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEx
NCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQ
YXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWlu
Z0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAt
NzUxLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29k
ZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkLi5iNjA3YWNlODM4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2Vi
SGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBp
bWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikg
ewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
aW5kZXggMjVhMzA3ZjM4MjllLi42NzE3NThhMjgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXND
dXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXND
dXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVj
dGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwg
Y2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYy4uMTQ5MGM1MTFiZGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCw3ICs5OCw3IEBA
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJ
bWFnZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkLi5mZTUw
ZTUzOGI4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aApAQCAtMzksNiArMzksNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2
b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNF
bmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDdmYzA1
NDU3ZTY0Yy4uNGUyNjZmMzY3YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCmluZGV4IDU2MjM0MDE0NTlkYS4uMTExZjA5MjYzZjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7
IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVm
PFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3Qq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhLi5kZmVmM2UwNzBmOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFj
aG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBl
ciByZWd1bGFyRmlsZUNvbnRlbnRzXS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1h
Z2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyLi4wMWM4MTAyNzhlZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsx
NTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhp
Z2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0
ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9w
dE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQu
aGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7Cisg
ICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGlu
aXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hs
aWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxl
Z2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGlu
TmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0
T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNS4uYzgwMjljMTQwYTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3
IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
Mzg1NTg4MmM4N2RjLi44ZDNhODU2NDYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZVdpdGhGaWxlTmFtZTpmaWxlTmFtZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xMjMyLDcg
KzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRl
bGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0
aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4
MDJmZmFhNmQ2ZWQuLjY4MzM3M2VhZTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEy
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25z
KCkKICAgICAgICAgaWYgKG5vRXJyICE9IEF1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3Ry
YXRpb25zKCZyZWdpc3RyYXRpb25zKSB8fCAhcmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25z
KV0gKCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1Ro
aXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lz
dHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRhIH0pLCAwKTsKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3Ry
YXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
aW5kZXggM2Y2ZGQxZjI0MmU3Li5mNTg5MTI0MTcwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhO
U1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwg
TlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAg
ICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcg
KmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5n
ICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hp
dmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRP
cmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
LCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRs
ZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwg
TlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRP
d25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQo
TlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDll
ODc3YjBjYjcuLjYyMzY3ZGM1YWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KQEAgLTQ0NDksNyArNDQ0OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNp
b24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAq
ZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcg
KnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2
ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRp
ZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6
OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBO
U1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFz
dGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQogewogICAgIE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3Rl
Ym9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5
RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CkBAIC00NDcwLDcgKzQ0NzAsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFn
ZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFt
ZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAg
IGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBm
b3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6
bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJy
YXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlm
IChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1f
cHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6
bmlsXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNl
Li5iNDYyZDhkYjVjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMy
OCw3ICszMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmly
dHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252
ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVhODMyZTU1YWNiYS4uZTVlYWY0MWYz
OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1
OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5M
b29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2
ZmQ2OTcuLjE5OTdlYWUyMGFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJM
U2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAK
ICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2Zy
YW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUlu
Zm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmND
b21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpA
QCAtMTY4LDcgKzE2OSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQog
ICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlm
IChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1
LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAg
ICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1f
c3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAg
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShk
YXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1f
dXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9y
KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCmluZGV4IDZhODU2MDIxYjEyOS4uNzk5NDJmOWIyMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewog
Y2xhc3MgRnJhbWVJbmZvOwpAQCAtNDMsNyArNDQsOCBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTg0LDcgKzg2LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwog
ICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5
cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
LSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CkBAIC0x
MTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIg
bV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNE
YXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNE
YXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2Fs
bGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQu
aAppbmRleCA3ODY2Y2RiMTc3NDYuLjcyNzlmODQ0Y2MyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3Rr
Q2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOwor
ICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3Jp
dGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4
M2IzMGYuLjU5NjZkNTU3NGMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsxMjYsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJl
YWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBj
b21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxl
cikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAg
ICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAg
fQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwog
fTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9y
bWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBndGtfY2xpcGJvYXJkX3Jl
cXVlc3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdka19hdG9tX2ludGVybihmb3JtYXQsIFRSVUUp
LCBbXShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb24sIGdwb2ludGVy
IHVzZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRh
PiBkYXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4IDA3YWJi
NzEzMTk4OC4uNWI4MWZhOGYyOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCB2b2lkIENsaXBib2FyZDo6
cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
IGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5k
bGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikK
ICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAg
ICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7
CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBm
b3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbnN0IGNoYXIqIG1p
bWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBnZGtfY2xpcGJvYXJkX3JlYWRf
YXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklUWV9ERUZBVUxULCBudWxscHRy
LCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1
c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaAppbmRleCBkMjIzOGZkYzlkMTYuLmFiODdjMmE3ZThjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEwMCw4ICsxMDAs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJy
aWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5n
JiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6
RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYg
dGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVV
UkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKKyAgICAg
ICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlu
cHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3Np
dGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZi4uYzM2M2U5NTVlODc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC00
MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0
RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1h
Z2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4Li4w
MWQ4NDBhMmE2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAg
ICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2Ut
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNO
dWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5
OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggZmE5NDAyNWVk
NzQ3Li5jMjhmZTY1ZjBjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBSZW1vdGVDRE06OnN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYs
IGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkg
Y29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAg
Ly8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKICAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRv
bmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxp
Y2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFkZGY4MzM1M2I2Li44YzQ1
NGViODNlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
cyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0g
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAg
IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1J
bnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFs
aXplKCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlw
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERh
dGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5NWEuLmExM2U1MTQ2MGY2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIp
OwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBj
YWxsYmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYxYy4uMmM3ODUxZTQ0
MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBs
ZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CiAgICAgUmVm
UHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBkOC4uYzc0MGMwNDUw
NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwpAQCAtNjUs
NyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3Rv
cnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnMKICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtl
eXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVm
ZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAg
ICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVh
bE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmgKaW5kZXggNGZmZTRjYWNlY2NkLi40ZTRjZDJjMDA1YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xp
ZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVh
ckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5
cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAK
aW5kZXggOWEyMTlhNTQ0ZTU1Li42MjkyNjc5OGM1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBh
bGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWREYXRhU3Rh
dHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVy
IHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICgh
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmgKaW5kZXggZTVjZmU5NGVjZDNhLi40MGQzNzM0ZjdhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAg
ICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJl
bW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIm
IG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZUltYWdlRGVjb2RlckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAg
IH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xl
dmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6
RGVjb2RpbmdPcHRpb25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5k
ZXggNDFkNTM4ODAyM2QzLi4wODJiMzM2NmM4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
K1JlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFn
ZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpv
cHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwog
ICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9
OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6
c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjpp
bnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNN
ZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwK
LSAgICAgICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWlt
ZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAg
IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIzNzgy
YjY1MDRlLi4zNjE4YWZkMTIwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5o
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2Vi
Q29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlv
biwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8gR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlk
Q2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cAppbmRleCAxMWI0YTg2ZTQ4NTIuLmI0MDg5ZmQzNTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3Rv
cmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjoKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhh
bmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBtX2lkZW50aWZpZXIpOwog
fQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZldGNoRGF0YSB7IH0sIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtaW1lVHlwZSA9
IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUpIG11dGFibGUgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSkKICAgICAg
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgbWltZVR5
cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1NGY3NmYxOC4uNTc2
ZmQxYzZlOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZQogICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpW
aWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQg
c3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZv
aWQgc3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFdl
YkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6QXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0Li4wMzUzYWFiZjdkNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAg
LTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBhMDYzNTIwNDMzNWIuLjE4MGIx
MTExZWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lv
bjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJh
bWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUy
NWM2ZS4uM2Y0MWIxZjMzOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcApAQCAtNjUsMTUgKzY1LDE2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VT
aGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
RGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9h
ZERhdGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBk
YXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYo
KTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUo
KSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBj
b250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250
aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFS
ZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0
b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxS
ZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCmluZGV4IDM2YmQ5ODBiMmZhYS4uODYzYmRhYjYyODRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29u
c3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVS
TFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJ
OjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5t
bQppbmRleCBlNTI0ZDhlMWIwMTcuLmE3ODRlYzM4OGIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
ICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCA5NGQ5ZDJjYzNlYjIuLjk3NTZmNTE5MjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNv
dXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBm
cm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NS4uMzEwZmNhNzg3NWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBpZiAo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSht
X2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAgICAgICBhdXRvIGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9uc2UoaW50ZXJj
ZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25z
ZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lv
bkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFt
ZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBw
b2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9u
c2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVz
ZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRD
b250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7
CkBAIC0yOTUsMTEgKzI5NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJj
ZToiKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJl
YWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUg
dG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5m
cmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAg
ICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9z
dGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JL
ZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJG
YWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3
Li5hN2Y0NWM4NDAxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJvb2wgZ2V0
Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Ny
b2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5IYW5kbGVz
Q29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQppbmRleCBkMjNhYmI5ZTY1MTEuLmQ0N2YzMmI3ZDQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIs
NyBAQCB2b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1
cGRhdGVTY3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRh
dGEgPSBsaXZlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCmluZGV4IDg4ZjQ1Y2U1MWNlMy4uNThkNzBhMzlhMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2lu
dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnRJbkxvY2FsQ29vcmRpbmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVS
ZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggZDU0ZjI3ZjA3MDkxLi43ZmIyMGM1OTJkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBs
dWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVu
dC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGlu
Z1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVu
ZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQ
bHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFs
U3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwot
ICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAg
ICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwog
ICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI2LDExICs5MjQsMTEgQEAgdm9pZCBQbHVn
aW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVu
ZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmll
dzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQg
fHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAg
ICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4g
bV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFu
dWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3Ry
ZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21h
bnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRy
OwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTUuLmQxNTNhMjljYTE0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50
dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0xMTUsNyArMTE2LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CiAgICAgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQ
b2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGlu
Z1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0
OwpAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1
c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5n
IHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRp
bmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXgg
ZmVlOGZlYTdiY2M4Li5iMDRjY2NmMTEzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwCkBAIC03MSwxNiArNzEsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAg
ICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBt
X3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8
U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYp
IHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0g
ICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVm
ZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0
KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsK
ICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWYuLjZiMGE0MTdjZjBkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODIsNyArODMsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAg
IGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
eyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9y
bURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRh
OwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAppbmRleCA4MWUzNzllMzNkMWEuLjdjZmMwM2E4NWQzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBw
bHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlm
aWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQuLmIwNTg2MTg5MWVjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92
ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJD
b3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYy4uMTRhMDgz
Y2EyMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCArMTE4
OCw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAg
ICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRh
ID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwg
bWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2Fk
aW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2Vz
dGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2Li40YThiZWU1N2ZkYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgaW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3Qg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVy
LT5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0
ZjUuLjFmZjgzZTExYmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjYs
NyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qg
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWUuLmQ0
MTU5MDRjNzFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CkBAIC00NSwxMyArNDUsMTMgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xv
YWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmls
ZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7
IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAg
ICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewog
fQogCiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0g
ZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1f
cGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xl
YXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1
ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1
ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNl
ZWMyZjliLi5jYzNiMjRiNzI5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNDUsNyArNTAsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wg
c3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwog
ICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRl
eCBhNjRjNmE4YjNjNjkuLmUxZTBlNjExMmEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2Uo
KTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5p
bWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5k
YXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1h
Z2VCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDliZDRjZDJkMGNiMS4uZDg4ZjQ0Y2ZjZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBT
dHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGlu
ZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNB
c1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBiM2IwZmJjYzc2ZTYuLmFjZTIzMTU2NjJlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3MzgsNyArMTczOCw3IEBA
IE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVu
Y2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklE
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRh
OjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2
b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRh
OjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdl
dCgpKTsKQEAgLTE3NTMsNyArMTc1Myw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNoCiAKICAg
ICAvLyBMZXQgdGhlIEluamVjdGVkQnVuZGxlIGtub3cgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRo
ZSBsb2FkLCBwYXNzaW5nIHRoZSB1c2VyIGRhdGEgZnJvbSB0aGUgVUlQcm9jZXNzCiAgICAgLy8g
dG8gYWxsIHRoZSBjbGllbnQgdG8gc2V0IHVwIGFueSBuZWVkZWQgc3RhdGUuCi0gICAgbV9sb2Fk
ZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEu
bWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRh
LmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT53
aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5t
aW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEu
ZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICAvLyBJbml0YXRlIHRoZSBs
b2FkIGluIFdlYkNvcmUuCiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCpt
X21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKQEAgLTM4
NjEsNyArMzg2MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6
Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmll
d0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAgICAgICAgICAgICBidWZmZXIgPSBwbHVn
aW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0zODc3LDcgKzM4NzcsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi1zdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVz
b3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMzg5Miw3ICszODkyLDcg
QEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKIAogdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCBy
ZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1l
KGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAtNjk3Nyw3ICs2OTc3LDcgQEAg
dm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5k
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVn
ZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICBkb2N1bWVudExv
YWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIu
dG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM1YzIzZmU2
MDJlYi4uZjZkZGQ3OGVhMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rp
b25HZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7
CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAKQEAgLTE1OTksNyArMTU5OSw3IEBA
IHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAg
IHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1w
bCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQg
dHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGM5NWMz
ODQ2MzkyMi4uODVlNjUxODY5MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50
LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAg
LTQ2ODMsNyArNDY4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGZpbGVOYW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VCghYnVmZmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRm
Li5jNjFiODUxMmJhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJv
b2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVT
RURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9J
TlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJv
b2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4IGQz
ZDM4Y2FjNDEyMS4uMzdmMjdlOTUyZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxv
YWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
IG5hbWUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3NzZl
ODJkZjEzMi4uMzc3N2YyYTU2YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
Lzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisg
ICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciBy
ZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBpZGVtcG90
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdI
YW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5o
CmluZGV4IDFmNTU4NGZhMzg3ZC4uYTI1NTYwYTEwYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2
YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBs
ZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZv
aWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAg
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSop
IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA3NmFhNmFhZjg0ZGUuLjIwNTg0NTM0NDk4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTAzICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1
ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSBy
ZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAor
ICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlJlc291cmNlLm1tOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RP
TUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291
cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0
ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJl
c291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0p
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJH
UFVdIEhvb2sgdXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFm
MjY2ZGYuLjYzNTViNmY5MDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICop
ZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSBy
YXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRh
KCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRh
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmlu
ZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYu
Ljk1OWQ3NDhiNTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDgsNyArMjQ4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYm
KT4mJikgZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0g
ICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOworICAg
IHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fbG9hZGluZ0ljb24g
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBiODQ5ZDJhYWMyYTku
LmFhMmNjOTgxNDc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyAr
MjAxMiw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0
cmluZz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxl
SGFuZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRl
TlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJh
eS5nZXQoKSkKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1l
bnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciogYnVmZmVyKSB7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH1dIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgZmluaXNoZWRMb2FkaW5nSWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3Rh
dGljIE5TSW1hZ2UgKndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUg
c2l6ZSkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
IGljb25EYXRhKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNv
bihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMC4uNTI3ZmE1NTIxOTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAg
aW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1
ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUo
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXgg
ZmMwNzc2ZTYyZDY2Li4zOTg2ODU5ZjczMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRU
eXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JU
eXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MS4uODNlODU5
MTQzNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCkBAIC00NjAsMTAgKzQ2MCwxMCBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNE
YXRhICopZGF0YQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+
KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3Ni4uMzhkN2U1
MzJkNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2Fu
U2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlm
IChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAg
U2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBf
ZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJz
ZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5w
YXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4Li4yOGQ4NzU5MjljY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAt
MzU0MCw4ICszNTQwLDggQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFy
ZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKICAgICB9CiAKICAgICBp
ZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgaWYgKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgICAgIFtpdGVt
cyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1
ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQu
c2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYTguLmFhZGNmYmZlYTM1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBA
IC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2Rlcgog
ewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAg
ICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRh
OwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAq
dGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRh
dGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNl
LT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29k
aW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAg
ICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAg
fQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFL
ZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNv
dXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJl
c291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5
OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0
RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIs
NyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJl
c291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjcsOCArMzY3
LDggQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFs
aWQoKSkKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAK
LSAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZf
cHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNv
ZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3Jl
RGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDAp
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAg
IHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29y
ZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNv
cmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKaW5kZXggMDJlOTQ2YmMxZmIwLi5hNmQ3YWZkMDBmY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIg
Y2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1l
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAg
ICAgdHlwZXMuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAqIE1lbW9y
eVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYkZy
YW1lLmg6CisgICAgICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5j
cHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKworMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9y
eVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAg
KFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgor
ICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2ViIExvY2sg
QVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDUuLjA4OTdjN2MwNTQ4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3Ry
ZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5t
YWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRh
U291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJl
c2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkw
YTVhMGExMzM2ZS4uNTU4ZTEzYzdmMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCkBAIC01NTksNyArNTU5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0lu
X29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
QlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIg
ZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5n
TmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVU
eXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1p
bWVUeXBlKQpAQCAtNTg1LDIxICs1ODUsMjEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkK
IHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewog
ICAgICAgICBpZiAoIXN0YXQuY2JTaXplLkhpZ2hQYXJ0ICYmIHN0YXQuY2JTaXplLkxvd1BhcnQp
IHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhQnVmZmVyKHN0YXQuY2JTaXplLkxvd1Bh
cnQpOwogICAgICAgICAgICAgVUxPTkcgcmVhZDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlz
IGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRv
IHRoZSBTaGFyZWRCdWZmZXIKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVk
bGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNv
bWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkK
LSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNo
YXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0
YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1v
dmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0
cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNv
ZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDQzNjA1NGZkOWRkYi4uZmE5YzM4MWNjNTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZy
YW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRl
eHRSZWY7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAog
ICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VV
UkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05h
bWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50
REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBh
Z2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXpl
T3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA5NjIwMTk4YjRiNTQuLjI3
NGI3ZDJkNmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExM
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0xNjUs
OCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNob3Vs
ZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0IGZ1
bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9h
ZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dF
QktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1l
KQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291cmNl
IGlkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZDEwZmMyZmZlYjJiLi41MGQzMDU0NTU0YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMyAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZm
ZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVu
YW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAg
ICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxp
c3RUZXN0cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisKIDIwMjEtMTItMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gV2ViIGNvbnRlbnQgcHJvY2VzcyBzb21ldGltZXMgY3Jhc2hlcyB1bmRl
ciBXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggODU4M2IyOWFkOTkwLi5iODQ3ZDNhODI2YjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00
NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhN
RTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5n
bGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYjk4NmEyYTU4ODg0Li5hYjQ3MmU1MGI4MzUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RU
ZXN0cy5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1C
dWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVy
LCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29u
c3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAgICAgICAgICAgICBt
X2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
aW5kZXggZGRiZmMxZjJiMTgyLi5hMDYzMGJhNjc1YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC00MSw4MCArNDEsNzMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZm
ZXIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAg
IEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5zaXplKCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQor
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCks
IDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwot
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBj
b3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4
aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsK
LSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPmRhdGEoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVy
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpW3N0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
ImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwotfQotCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogewogICAgIGNoYXIg
dGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwog
ICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4o
dGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4o
dGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4o
dGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJl
ZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBl
bmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVz
dERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJh
eUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hh
ciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNT
RVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwg
YXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0K
IAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXJMYXJnZVNlZ21lbnRzKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAw
MCwgJ2EnKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4
NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAg
ICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytp
KSB7CkBAIC0xMzEsNyArMTI0LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjb3B5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQog
ewogICAgIGNoYXIgdGVzdERhdGFbXSA9ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVu
dCBhIHNjZWxlcmlzcXVlISBFbmltIGVsaXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0
IG1vbnRlcyB1bHRyaWNlcyB0cmlzdGlxdWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMg
aW50ZWdlciByaG9uY3VzIHNvY2lpcyBhbWV0IGZhY2lsaXNpcywiCkBAIC0xNTEsMTcgKzE0NCw1
MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3Np
bSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5h
dGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBB
YywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBs
ZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWls
ZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3Qg
Y29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNv
cHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0g
ICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgw
LCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXpl
KCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9F
UShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwg
YnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5z
aXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWls
ZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1Rf
RVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5
ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkp
OyAvLyBXZSBoYXZlIGRpZmZlcmVudCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCisgICAgRVhQRUNU
X0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlk
ZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5
KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0
aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJM
ZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTczLDcwICsyMDIsODAgQEAgc3RhdGlj
IHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVu
Z3RoLCBjb25zdCBjaGFyKgogICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtp
XSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMy
ID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywg
J2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAg
IFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBo
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNv
bWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBh
dXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAg
IGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0
byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRh
KCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2gu
c2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAi
Z2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hl
Y2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVm
ZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZn
aGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIo
Z2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgp
LCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBn
aDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCks
ICJsIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VC
dWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVu
dHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRv
IGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8g
YnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAn
YicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycs
ICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWls
ZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScg
fSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsg
eyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsK
ICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9F
UShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5y
ZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZm
ZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJl
YWQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29u
c3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAot
ICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1
dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAg
ICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJp
bmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CkBAIC0yNDksMTYgKzI4OCwxNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMjY2LDcgKzMwNiw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCByZWFkKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0
ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAot
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9v
bCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0
ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9y
ID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1
ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5r
UmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2Vw
YXJhdG9yKTsKQEAgLTI5OSw3ICszMzksNyBAQCBzdGF0aWMgdm9pZCBjaGVja0RhdGFJblJhbmdl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogewot
ICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1
dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAg
ICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwg
Ilx4MTBceDExXHgxMiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gb3V0OwogICAgICAgICBF
WFBFQ1RfVFJVRShjaHVua1JlYWRlci5uZXh0Q2h1bmsob3V0KSk7CkBAIC0zMTMsMjIgKzM1Mywy
NCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9y
KQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2
OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihkYXRhLCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAg
Y2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVU
ZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJp
bmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFs
bGJhY2soKTsKQEAgLTM1OCwyMiArNDAwLDIzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIHBlZWtEYXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVY
UEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhp
c3RvcnkgdGhlcmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0
aGVyZSAiLCAicy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSIpOwpAQCAtNDA2LDE3ICs0NDksMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQp
OyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsK
LSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3Ip
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAKaW5kZXggOWI4YjEzYTc1ZDUyLi5kMDM0MWE4MWRlZGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lk
IFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1
LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRv
d24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2
ZmMuLmEzOTJhMDUxOTQ3NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IGQ4NDZj
MDI1ZTBkYy4uYWZlYWExZTFhMThlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZp
ZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlz
cGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBm
aW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzLi5jM2I1ZDNlOGQ3YzAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlz
RXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAg
IH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAK
ICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxv
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxv
RGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRh
IF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAg
IE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3Ro
OjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0
YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
d29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVu
dCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Imhl
bGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxs
b0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAg
ICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0
aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVu
Z3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3Vu
dCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
RGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9u
ID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+
c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
YnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNp
emUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1
aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1l
bnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERh
dGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUg
PSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyLi41YmU2NjU5NDYx
MzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0
IGNoYXIqKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446137</attachid>
            <date>2021-12-07 01:34:17 -0800</date>
            <delta_ts>2021-12-14 02:53:42 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>754292</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0Li43MDgwYTZjZjdhNmQgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
Y29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0x
MS0yMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1Bl
cmZvcm1hbmNlIHRlc3RdW2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxh
eW91dCBpbnNpZGUgYSBjb21wbGV4IGRvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBiYTJiZTEzOTE2MjguLmQxNzI0MjAxNWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAzICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJ1Y3R1cmVJREJsb2IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2Nh
MmMyMzNhOC4uYjQ2OTNmOTFjNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVy
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8g
T25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
IGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyNWEwODI0YmI3YzcuLjY1MTg2MGU5ZjFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEwMzIgQEAKKzIwMjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM4NjUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODYwODUyNTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLCBubyBvYnNlcnZhYmxlIGRpZmZlcmVuY2VzLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6
Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKworMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xh
c3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAg
dHlwZXMuCisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW06CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxv
Yi5oOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICog
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29u
dGVudEZpbHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5j
cHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToK
KyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAg
KiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05v
d1BsYXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVR5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3RXcml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcy
MDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICBy
ZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIsIGEgU2hhcmVkQnVmZmVyIGNhbiBub3cg
b25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAgIGEgU2hhcmVkQnVmZmVyQnVpbGRlci4g
QSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAg
IEZseS1CeTogUGFzcyBTaGFyZWRCdWZmZXIgdmlhIGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRl
cnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRvIGRvIHNvLgorICAgICAgICBObyBjaGFuZ2Ug
aW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpz
ZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
ZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0
dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRU
cmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0Nv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNF
bXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1Bl
bmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAg
ICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5n
IGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hp
bGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlv
dXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1
YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBk
YXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJl
ZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGln
dW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2Vy
ZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29u
dmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwg
YSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRl
ZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBh
Y2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlz
IG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAg
ICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWlu
ZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
LgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVk
IGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3Nhcnkg
dG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAg
ICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0
ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50
cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1
ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9y
ZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAg
d291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBv
dGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAg
ICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNr
aW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNv
dmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBt
YWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAy
MzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBv
bmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENv
dmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1
dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6
CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpr
ZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0
b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Vy
aWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFz
SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJp
bmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJz
b3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2Vu
ZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRv
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5o
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZl
ZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06
CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
Rik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBs
b2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJj
ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0
b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2Vy
aWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpT
aGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1
dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNl
Z21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQ
bGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0p
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VK
U09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNP
TlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
bmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Q0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRm
b3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0Nv
cnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaElu
Zm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlh
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1
Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJD
b3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0
aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlz
dDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdT
eXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1
YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1
c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTA2ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gVXNlIGVuZCBiaXRzIGluIHRleHQgYm94IGl0ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKaW5kZXggMzM1NGI1MmE1MGNiLi5kYTMzNmU2ZjViMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
Cit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5
YjAuLjZlMjIwNDhjZjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICsz
MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBi
b2FyZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIENsaXBib2FyZElt
YWdlUmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21p
bWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAppbmRleCBkMDc0NmRhMmRhMjAuLmVmZjEwYjViNjVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lk
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVy
KCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxT
dHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBz
dGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRh
LndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJl
ZigpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURh
dGEodHlwZSwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5
UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjUsOSArMjY1LDkgQEAgdm9p
ZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3Mp
IHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0
byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
OworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAg
ICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKQEAgLTI3
OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgIH0KIAogICAgIGlmICht
X3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7CisgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRh
KSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgYnVmZmVyVG9TYW5p
dGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJjYzJjOGUxYTU0ZS4u
MzdjODI1ZTIzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVh
ZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1Ymxp
YyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25I
YW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3Mg
Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwg
cHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAy
MzYxZTZmZTIuLjI3NGUwMzhkNDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJl
YWRlcklPUy5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09
ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
VUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVh
dGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOS4u
MzgyMWIwMzcxODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1t
CkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBi
b2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3Bu
ZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGlt
YWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNn
SW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGlu
dHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tO
U0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAg
ICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2lu
Z1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYS4uZjA1
YzIzMzA3YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApA
QCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVj
b3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikp
OwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFz
a0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVj
ZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQ
b3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyBy
ZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5m
bz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFs
dWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3Bv
bnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFk
ZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtl
Q29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJj
ZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2
b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9k
eSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9u
KHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShF
eGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0z
NzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVm
PEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25z
ZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYg
PSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
LCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29u
c3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0
YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHko
KSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVl
KCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5r
LT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdp
dGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAg
ICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzLi5jMGY4MDMyYjA0NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzIs
NyArMTMyLDcgQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3Bv
bnNlQm9keSYgYm9keSkKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKICAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5j
b3B5KCk7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIg
YXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNh
Y2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZi4uOWQxYmM2
NzRmYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZh
dGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVk
KCkuc2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBD
RE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2
YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMS4uZDdiMWQ1M2QwNDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNv
dW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5p
dERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0Zi4uNDEwZWQyZmI2NDI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xp
ZW50LmgKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
RE1JbnN0YW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGll
bnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2Fy
eSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4
IDBiZjVlYWE3NGVkYi4uNmY4ODhlMTc4NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0
LDEzICs1NCwxMyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJZHNNYXhL
ZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5o
dG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXpl
KCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFs
dWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC03
NCw3ICs3NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0
byBrZXlJRCA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMs
NyArOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQt
bWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTA0
LDE0ICsxMDQsMTQgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUo
KTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAg
IGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtp
ZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5n
KCkudXRmOCgpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRh
KCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3No
Qm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRw
czovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0
YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURz
Q2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3No
Qm94ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4
NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFS
ZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IElu
aXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3Jt
YXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1y
ZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0K
IAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICAvLyBU
aGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVuY0tleUlELCBzbyBzaG91bGQgYmUgbGVz
cyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBz
YW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
ZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwogICAgIGlmICghc2FuaXRpemVkQnVmZmVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5p
dERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiAKIEluaXREYXRhUmVnaXN0cnk6On5J
bml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0
RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAo
aXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpA
QCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0
ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURz
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJ
bml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8g
aXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlw
ZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5o
CmluZGV4IGNkMTM4N2E2YmQwMy4uNzdkNjA0YjA4YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAt
MzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsK
ICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5
cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBG
dW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAg
ICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAg
ICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJ
bml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBA
IC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5
aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0g
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hl
c0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyLi4xNDc3NmMyMDE1MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2lu
ZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXRE
YXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3Zl
KGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGluaXQg
ZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRpemVk
IGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5pdCBk
YXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1f
aW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0
YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0
RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwg
cmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBp
ZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAg
ICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lv
blR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwg
W3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5
cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjIsNyArNDIyLDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNl
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVw
cyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9u
c2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5p
dGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9m
IHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJl
c3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9
IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAg
IC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJl
c3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBl
RXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9u
c2UtPmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMu
IExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2Rt
IHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywg
d2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5
cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2lu
c3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5
cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4K
IH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVk
aWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8vIDYu
NC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQg
TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkKIHsKICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaAppbmRleCAzZDk2Zjg4MDJlNzQuLjM2NWFjZTVjMDk1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
CkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNs
YXNzIE1lZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFLZXlzOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
SURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBAIC04NywyMCArODcsMjAgQEAgcHVi
bGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Qcm9taXNlUHJveHk8SURMVW5kZWZp
bmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7IHJldHVybiBtX2Nsb3NlZFByb21p
c2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZl
cj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNl
czsgfQorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVz
ZXM7IH0KIAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFuY2VTZXNzaW9uT2JqZWN0UmVmQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lvbi0+cmVmQ291bnQoKTsgfQogCiBw
cml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYsIFdlYWtQdHI8TWVkaWFLZXlz
PiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwg
UmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7Ci0gICAgdm9pZCBlbnF1ZXVl
TWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGlyYXRpb24oZG91YmxlKTsKICAgICB2
b2lkIHNlc3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1
cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3Rv
ciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RN
TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsKIApAQCAtMTQwLDEwICsxNDAsMTAg
QEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBlIG1fc2Vzc2lvblR5cGU7CiAgICAg
UmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiBt
X2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3Jk
T2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3Jl
Y29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKICAg
ICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKLSAgICBWZWN0b3I8c3RkOjpwYWly
PFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CisgICAgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVz
Pj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNl
cnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZl
ciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDcz
Zjc0ZTRmNzBmYy4uMzk4ZThhYjFiNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYs
MTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAg
IHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBr
ZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
K3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwog
ICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0
aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Yi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25z
dCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8
S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4g
TWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWly
ID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxC
dWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlC
dWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuaAppbmRleCBjMjExMTEzYTJjNmQuLjYwZDYyYWFmZjgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtl
eVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
S2V5U3RhdHVzTWFwPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggODNiMjRhY2VhYTViLi4zNjdmMzFk
MTg2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlhS2V5czo6aGFzT3Bl
blNlc3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjp1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVx
dWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAo
YXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xp
ZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGlu
aXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3YjU5YTNiYzZkMjIuLjkxYTFhMDcxMTQzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
CkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBi
b29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
LCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RN
SW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVx
dWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9n
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjYuLjAwMzkzMDJmN2RjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIz
NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hh
cmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92
ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEo
V1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZv
cm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMu
CkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNv
bnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEg
PSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0
ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQs
NyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRv
IGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAg
IH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGYuLjIyMTNkNjIz
MDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTog
ewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZv
cm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICsz
MjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5k
KGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIucmVzZXQo
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7Cit9CisKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQoreworICAg
IGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51
bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlC
dWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250
ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29u
dGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwg
bnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJl
dHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7
CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJh
Y3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2NCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVs
bHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAt
MzgzLDEwICszODUsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9t
aXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291
cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBp
ZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQor
ICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFr
ZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYx
MjY0M2IuLjg3MWQyYzA4NjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRh
KTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAg
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmlu
ZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUg
bV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5
U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4Li4wM2Y4OWI2MWNhNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmco
KQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2Nv
bnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOS4uNDYxMmQwZTBlM2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zOSwxNCArMzksMTQgQEAgY2xhc3Mg
RmV0Y2hCb2R5Q29uc3VtZXI7CiBjbGFzcyBGZXRjaExvYWRlckNsaWVudDsKIGNsYXNzIEZldGNo
UmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBGZXRjaExvYWRlciBm
aW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBGZXRj
aExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgfkZldGNoTG9hZGVyKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFy
dFN0cmVhbWluZygpOwogCiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdGFydChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQmxvYiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNGRmODQyNmM3MThiLi5lMzhhODNh
ZGU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAK
QEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAg
IGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6
OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAg
QVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0
MjBjNmEzOGQzYy4uY2Y3ODYzMjM5ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7
CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAg
ICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0
dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5
Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUo
bV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZC4uMWE2NmJmODE4MzIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQu
aApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQgewotICAg
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CiAg
ICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OwpAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdo
bGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAx
KTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8
PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzYuLjVlODBmMGMw
NzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwxNSArNDQsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9
IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0
aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBj
b250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRh
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRS
YW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAqdGhpczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgK
aW5kZXggY2Y2MzgxYWNmYjBhLi5iNWRhZjYwMjUzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0z
MywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdI
TElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2Rl
UGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJp
bmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4Zi4uZTVkZTg0OTRmMzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNw
cApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBI
aWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAot
dm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKK3Zv
aWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Ny
b2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQuLmUyNzY2MzNiNDg0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hs
aWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0
YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxU
b0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICB2b2lk
IHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAgIE1vbm90b25pY1RpbWUgbGFz
dFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNo
OyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUoKSB7IG1fdGltZUF0TGFzdFJh
bmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3Li4yN2NkOGVlYzUzZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmpl
Y3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVE
Qik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAg
YXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwog
ICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6
ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNh
dmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyAr
MTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZl
cnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgp
KTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2
NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhS
ZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGlu
IHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGlu
IGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9y
ZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0
aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkK
ICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBr
ZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp
b24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmpl
Y3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwor
ICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBp
ZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5
NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBz
dG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7
CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAg
IGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJL
ZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWlu
aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAg
aWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50
NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9
IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlU
eXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8g
bG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0o
KSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3Vu
dCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBw
ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOS4uNDg2MTAzNGQzYTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vy
c29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJy
ZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50Qmlu
ZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6
OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJl
bnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmLi5j
OWQ2ZGE2YmRkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJs
b2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNy
ZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9i
OjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9i
OjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNl
LCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3Rl
ZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNi4uMWU5Yjc0YWIxN2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hFcnJvcihF
eGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQcml2YXRlUmVjb3JkZXIgeyBObywg
WWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAg
IHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAg
dm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwgVGFrZVByaXZhdGVSZWNvcmRlcik7
CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggM2Y0YzliY2Qx
MzNhLi44NzRhYTdmMGIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0
d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUg
dGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+
ZGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0
aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RG
TW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4
ZmZmYjdiLi5jYzVhODY1NzMwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJl
YWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRv
JiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+
ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAg
IG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGY1ODI3ZGY5Mzc5NC4uNzM5NDJh
ODM1OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJU
Q0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVibGljIFJU
Q0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsNyAr
NzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAgICAgICBib29sIGlz
UmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgVmVjdG9y
PE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTMuLjNjZWVkMGEwMTFlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05Nyw4ICs5Nyw4
IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IGNv
bnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1l
c3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVy
PiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICAgICAgY2xpZW50LmRpZFJl
Y2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRp
ZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3Rh
dGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKaW5kZXggNDFmOTUyODIxZTYyLi4xMWJkNDVkZTkxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04Miw3ICs4Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsKLSAgICB1c2luZyBNZXNz
YWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgUGVuZGluZ01lc3NhZ2Vz
ID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdlKFBlbmRpbmdNZXNzYWdl
cyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgcHJvY2Vzc01lc3NhZ2Uo
Y29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMzA5YzAy
NjQzZjVhLi42M2YxYzNjYmUxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkK
IAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBt
X2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1f
cmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNl
dFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAK
ICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRD
bGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
CiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQo
bV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQog
ICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAg
ICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQs
NyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFD
b21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVh
c2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsK
KyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91
cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBp
bnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aAppbmRleCAwNWExY2RhYTNlMTQuLmNlMDA5ZDRlNWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0x
MzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7
CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+
IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2
NzkuLjEzMDNlYzRkMjU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2Fk
ZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0
ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxl
SGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VE
KGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRleCAwYjg5OGY2
YWRiNTcuLmQ1MTczZmJmOGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1T
aW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWMuLmI4Yjc3ODVm
OTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAg
ICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRh
aW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29u
dGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
OwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29u
dGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAg
ICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3Nj
cmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250
YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6
ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAg
ICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAg
LTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1f
c2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIg
PSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNp
Z25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3Jp
cHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5
QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNi4uZWYzN2YxZDBjYTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNTUs
NyArNTUsNyBAQCBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczsKIGNsYXNzIElEQlZhbHVl
OwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1hcEJhY2tpbmc7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKIAogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZS4uMTA4ZTZjODc2N2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9u
dENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9u
Owogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9u
dFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5n
czsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0Li5jNDJlYzA1
MWZlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcg
QEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxl
bmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYS4uYzVlOWUyNmIzNzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTMzLDcgKzQxMzMsNyBAQCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVt
ZW50KQogICAgIHJldHVybiB7IGF0dGFjaG1lbnQtPnVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92
ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3ZlKGFkZGl0aW9uYWxEYXRhKSB9OwogfQogCi12b2lk
IEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgRWRpdG9yOjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoYXV0byogY2xpZW50ID0g
dGhpcy0+Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
ZmllcihpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlLi4xZDA3MTZj
NWI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3Mg
QXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRp
dENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2Ns
YXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBF
ZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC03NCw3ICs3NSw3
IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRX
cml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tS
ZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMC4uOTU3YjRmZDRhNTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29s
IHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZl
cihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCkBAIC05OSwx
NiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcm
LCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFC
dWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJl
YWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJl
YWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERh
dGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdkMmU0YzAuLjExN2RiYTY4ZWRi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12
b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgp
LCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlYy4uOWQ4MTYw
NWYxOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRl
eCBkNDhlMTFjOTZiNzguLjA3ODI0ODM2MmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNV
UkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1
YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBl
ICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291
cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxl
V3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRG
aWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIz
MDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBw
ZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNv
dXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBk
YXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICgh
ZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1l
ID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJj
ZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
RmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNl
LCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAgIGlmIChTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAg
ICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZh
YTNjZDU0ZTgyYi4uNzZiMWEwMDlkZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjQ1LDcgKzI0NSw3IEBA
IHN0YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGNvbnN0IEZyYW1l
JiBmcmFtZSkKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkK
IHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8gYXR0YWNobWVudCA9
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywg
ZG9jdW1lbnQpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNl
RW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsg
YXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5k
KHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFz
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7
CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1M
T2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVu
ZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2Ut
PnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAg
LTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hp
dmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZl
PiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJj
aGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBp
ZiAoIWFyY2hpdmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFy
a3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYK
ICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9t
VVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25O
dWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgo
bWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2
ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBX
aXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBN
YXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RR
dWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3Vt
CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJh
bWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAg
IE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07
CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWly
a3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9y
RnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBt
c29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdl
cygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIs
NyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjEyLDEyICs2MTIsMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0Vt
cHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1F
VHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRv
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5n
ZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2
LDExICs2MjYsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksMTIgKzYzOSwxMiBA
QCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDExICs2NTMs
MTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6
OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJU
KGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50
KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAKLXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0
dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRh
dGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwog
ICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxO
YW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIGlmIChi
dWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcx
YWQ1OS4uZDNlOTgxOWJkNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VS
VChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTQuLmJjYTY2OTZlYmU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsK
IGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5
ZWJjYzQ4YzVmLi40MmY0MTgwZGZhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6
OnByb2Nlc3NNZXNzYWdlcygpCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcFByb2Nlc3NpbmcgPSBm
YWxzZTsKICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgpLCBbdGhpc10oY29uc3QgQ1N0
cmluZyYgdXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmluZyh1dGY4KTsKLSAgICAgICAg
fSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAgIH0sIFt0aGlzXShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAgICAgICAgICAgIGRhdGEtPmZv
ckVhY2hTZWdtZW50KG1fd3JpdGVSYXdEYXRhKTsKICAgICAgICAgfSwgW3RoaXMsICZzaG91bGRT
dG9wUHJvY2Vzc2luZ10oVW5pcXVlUmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIpIHsKICAgICAgICAg
ICAgIGF1dG8gZXJyb3JDb2RlID0gbG9hZGVyLT5lcnJvckNvZGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggNTUxZjcwZjkxNjdiLi5kMjNjZmViYjQ1
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JM
b2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVz
c2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVm
PEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAg
ICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRl
eCA1NmEwNmZjYWYyNzMuLmQyYjg3NDFhMDQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBib29s
IG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWlt
ZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5n
SW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9IHNoYWRvd0hv
c3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50KSB8fCAhYnVm
ZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aAppbmRleCA1NzNlYzJlYWUxY2QuLjY2MWRlYzkzNzZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEZpbGU7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNz
IFNoYXJlYWJsZUJpdG1hcDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MQXR0YWNobWVu
dEVsZW1lbnQpOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5Tm9uQXR0
cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0lt
YWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5h
aWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDUxNzFiOWNkYzc4OS4uMWE1NmJjMDM1OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAg
YXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5
NTY2OTQ5NjMxMC4uNmMzYjY5M2I3YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1DbGllbnQK
ICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBm
aW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0NmJlMjUu
LjAwZDhmMjM5ZDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0x
NDEsNyArMTQxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkK
ICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAgICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVy
ZSgpOwogCi0gICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCkpCisgICAgaWYgKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdl
RWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1h
Z2VVcGRhdGVkKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpmaW5p
c2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFyc2VyKCktPmlzU3RvcHBlZCgpICYmIG1faW1h
Z2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9ICptX2ltYWdl
RWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKIAog
ICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0
aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0YQogICAgICAgICAvLyB3aWxs
IGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGE3Y2E3MTYy
ZDc5MS4uMTg3OTNmZjA2NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVz
dChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAg
bmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RG
TW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzLi5kMjk1NzgxMGQ4MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRv
d1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29j
a2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7
CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZv
aWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9h
ZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFnZW50
cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
ZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTkuLmYw
NjQwM2E2MjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZUxvYWRlciYgbG8KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJu
YWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2Vw
dFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggZjc2MTE0Y2U5OGY0Li4wN2I0MjFiNTljMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25z
dCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3Vs
ZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZv
aWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsK
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJu
YWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2
LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0
UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhh
bmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0Zi4uZjMyZjY2MGI5MTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50
U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1f
bG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlm
IChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICBy
ZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmICho
YXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVD
b250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOwor
fQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6
ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7
Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRh
QnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYg
KG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9j
b250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJl
c291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiBy
ZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBp
ZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExLi5lZTM5NDU3Zjc2NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTQwLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291
cmNlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04OCw4ICs5MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBj
b25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVj
b2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9
IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBz
ZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQorICAgICAgICB2b2lk
IHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAogICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2Vy
dGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlm
aWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZvOyB9CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1w
KFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAg
ICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQor
ICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBz
aXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNv
ZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksOCArMTIxLDggQEAgcHVibGljOgogICAgICAgICBT
dHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
ZGF0YUJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0
ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0
ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0NCw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNv
bnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNvdXJjZURhdGEgY29u
c3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJl
bW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggNDRlMDg0YTI4ODQyLi4xODlmMjZiMDk4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEx
NDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBA
IC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVy
cmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5
cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0
byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpA
QCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vz
c2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAg
ICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQog
ICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNv
dXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0
RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVz
dWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0g
YmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZS4uNmJjZDg3ZGRjZDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50
ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2Vh
cmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVm
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4m
KTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9u
c2Uob3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxs
cHRyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9p
ZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFt
X3Jlc3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1
LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9vcmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhh
bmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRs
ZXI7CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAzZGFmZTY0MzdkZjEuLjFiNjQ2YWEyMTczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
MTAwLDE1ICsxMDAsMTUgQEAgc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1l
LT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAg
IHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29u
dGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpAQCAtMTU2LDcgKzE1Niw3
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwog
ICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwo
KSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGI1MWFk
ZGIxYmQ4Zi4uM2Q1ZTU2NmRiZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3Mg
SW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBj
bGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQp
OwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAg
fTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250
ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAg
IHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShG
cmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJv
b2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAppbmRleCBiNGU2YTNhNTNiNGMuLjZhZTUyNjU5N2NkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5k
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIo
KSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVz
b3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1f
Y2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBz
dGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9p
ZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnRE
YXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tp
bmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVE
YXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWls
aW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2Ug
eyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzIuLjNiOTBlZjRjNTgyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
RG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAjZW5kaWYKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VE
YXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgpOwpAQCAtMTYwOCwx
MSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQog
ICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJj
aGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hp
dmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291
cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEo
KS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJj
ZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBj
b21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1h
aW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpA
QCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJj
aGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
YXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwpAQCAtMjI1NSw4ICsyMjU1LDggQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRl
ZCA9IGZhbHNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5S
ZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNv
dXJjZURhdGEtPnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjI5Miw3ICsy
MjkyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgbV9m
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoaWNvbkRlY2lz
aW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2
NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2lj
b25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMyw3
ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5z
dGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5n
SWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmVyKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2Fk
ZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2
ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2MGU0Li4zMzk4NzNkNWQz
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3
IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNv
dXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBG
b3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRl
cjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3Jp
dGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0zOTIsOCArMzkz
LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNp
c2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hh
cmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVy
JiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJl
dHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhh
c2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVl
X3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNv
bnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNC4uMDhhMGFlMTlhMzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFt
ZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBD
aHJvbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZk
NjM3YTkwMTRhLi5lZTlmM2QwYzk4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJkNjNlZC4uMjlkMmUzZjQ2MTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBA
QCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRl
cjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMC4uNjA0
M2FjOWJlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxw
dHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewog
ICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBl
bmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZi4uYjUxNzRlZGM5
NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBj
YWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXggYzYyNzc2ODU4YTZk
Li5kOTRiNzAwMDc0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29t
cHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3Jh
cGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRo
bSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzguLjgzYjg2MTNj
ZmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qgewog
ICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25h
bDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9n
cmFwaGljRGlnZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+
IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopOwogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RG
b3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9p
ZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTguLmRmMTM5NTg4ZThkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0
YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzI5LDI5ICszMzAsMjkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vi
c3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURh
dGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVz
b3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJS
ZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNv
dXJjZURhdGEtPmNsZWFyKCk7CisgICAgaWYgKCFtX3Jlc291cmNlRGF0YS0+aXNOdWxsKCkpCisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwogfQogCiBib29sIFJlc291cmNlTG9hZGVy
Ojppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU1MSwxNCArNTUyLDE0IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5n
dGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgLy8g
VGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZm
ZXIuCisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiog
YSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAm
JiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRo
b2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KQEAgLTU3MSw3ICs1NzIs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkn
cyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBw
cmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmls
ZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1Bv
bGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
ZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4o
ZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5k
aWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2Fz
dDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MpCkBAIC03MzUsNyArNzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBkaWRS
ZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5
dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiLi41NGIxYjg2NmRmODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUs
NiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5
UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1Ymxp
YyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xp
ZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQo
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0g
ICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9h
ZGluZygpCkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNs
ZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2Fz
Q2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2Vs
bGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAK
ICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5
KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVm
ZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVm
ZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGRE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRh
UGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAg
dm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAt
MjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
YyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291
cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMwLDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTEuLjM3ZDBiYjgyMWFiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRh
dGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmll
d0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRo
aXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVy
KCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51
cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmLi44MzJjOWYwZTczZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVj
dGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlw
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMx
Y2JlLi5hOGE0OWI0N2Y5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250
ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAg
ICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRy
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5n
ZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAg
ICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJM
OyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4Li5jZjJkZTBjNjJkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDEyICszNywxNCBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
OyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRh
LCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAg
dmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJl
c291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkK
ICAgICAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0
YShXVEZNb3ZlKGRhdGEpKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBm
MWRjMzkuLjAzNmVmZDIwZTQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFy
c2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMg
d3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSBy
ZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFy
c2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CmluZGV4IDYwMzI4MTg4ODM3NS4uNTE5NzhmNDEyMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1
NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNv
bnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsK
LSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2Ug
ZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3Vy
Y2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5
KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2Uu
cGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlm
IChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkp
IHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUg
U2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBv
bmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAg
ICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0g
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcuLmI5NjM1NmU3ODU2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAg
LTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGlj
YXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3
ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDEuLjJiYjNmZTc1
Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VS
VCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTQw
LDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGMKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFdURk1vdmUocmVzb3Vy
Y2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBwYXRoKSk7CiB9CiAK
LUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2Uo
V1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShkYXRhKSkKICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBS
ZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2
ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNl
QW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRl
ci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBk
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRk
VHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRleCA4OGM5NGRlMWE3NzQu
LmMyODhlNzAzNmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAg
c3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBh
dGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5Li43YjJmYjZjOWMyNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJj
ZGUuLjhjZjA1Y2NlMTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChk
YXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBp
ZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgxNCw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBh
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkK
LSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJl
c291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRyeVN0
YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgLy8g
RGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/IElm
IHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBv
dGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQ
YXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAg
ICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3Vy
Y2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjczLDcgKzEyNzIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNh
dGlvbkNhY2hlUmVzbwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHR5cGUsICJ2aWRlby8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0
ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQog
ewogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggOWE5NTMw
MDg3NjZhLi40MTAyYTE4MDhiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2lu
UmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3Rv
cmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9p
ZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRh
VG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5k
ZXggNmRlODBjMTBhYzdkLi40ZWY5Y2Q2NmJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVh
dGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8
QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVu
Y3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAK
IC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJl
ZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3Ig
bWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRl
PHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFj
dG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZh
Y3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpA
QCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYm
IGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNo
aXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZh
Y3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5Li41NTY0NTE1YzllMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAtMzQsMTIgKzM0LDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAg
IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZl
PiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVN
SU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCmluZGV4IGZjMjBkYTNkYTAzMi4uMDczODM5NGE4Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNo
aXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGlu
ZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwg
eyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAg
ICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29k
aW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVz
b3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1S
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1
cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAot
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwLi4w
NTQ4ZWY3MjFlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAg
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmco
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2
YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNo
aXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5n
IG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBk
ZTdkYWRkZGFjMjIuLjcxMTUwY2JkZDg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0
eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0
byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5
TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwg
Y2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2Vu
dGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9y
IHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBp
ZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2Vu
dGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9u
c2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAg
IAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2Uo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0
YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVz
cG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktl
eSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQo
cmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25z
ZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQg
cmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9w
ZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lv
bik7CiAgICAgfQogCkBAIC0yNDgsMjMgKzI0OCwyMyBAQCBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291
cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRhKTsKIH0KIAotUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3
IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gY3Jl
YXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEu
Y3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVycm9yUmVmIGVycm9yID0g
bnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0g
YWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRl
V2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZl
cnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsy
NzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAgICAgIENGUmVsZWFzZShl
cnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmIChD
RkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkg
bGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBX
ZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAg
IGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBX
ZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBD
RkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFy
eVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1h
aW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGljdCkgewogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBpbiBhcmNo
aXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBi
b29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkp
CiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJl
c291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0
ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3Vy
Y2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICsz
NTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhdXRvIHN1YmZyYW1lQXJj
aGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFj
dChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZN
b3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJmcmFtZSBh
cmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKIHsK
ICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgCisK
ICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhl
cmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwu
aXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAg
aWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKLSAg
ICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUg
c28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2gg
d2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlm
cmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBc
IiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1c
IiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5z
dHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVjOWY3NWFiYS4uNWEwN2Ix
MGI0YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNs
YXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVS
ZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYm
IHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJh
bWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjIuLmQw
MTM5Zjg3YTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPE1IVE1MQXJjaGl2
ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1IVE1M
QXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxvYWQg
TUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygp
KSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBt
YWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8UGFn
ZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIgcGFn
ZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8g
V2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNl
cyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMg
aW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgp
KTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
bWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5j
bGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNo
aXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGlu
ZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxu
XHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBh
c2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXpl
KCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxl
KSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29k
ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0
YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBh
cmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQg
dGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyAr
MTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERh
dGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVu
Y29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXpl
X3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGlt
dW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVk
RGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5k
KGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0g
bWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0
cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRt
bERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwog
Ci0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDIuLjJkZmU4N2U4MmU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTM4LDE0
ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1IVE1MUGFyc2VyOwogY2xh
c3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0dWFsIH5NSFRNTEFyY2hpdmUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwMy4uNWVlOTE4Njg0YTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQ
YXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBt
X2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVI
ZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1w
dHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29u
dGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBj
b250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFy
eS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYg
KG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5h
cnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQt
PmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShw
YXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5w
ZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFz
Y2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGlu
ZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0
ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQo
bGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1l
SGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhl
IFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0
aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVz
LgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAg
ICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAg
ICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29u
dGVudCA9IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6
UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJp
dDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29k
aW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlLi4wZDYwNDM0M2YzZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBN
SFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVm
ZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciop
OwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDcuLmUxYTg3NTE2YmQ4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAK
LXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjQuLjM3OThhOWI0ZDkwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBB
cHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0
IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MS4uMzhhMmUxN2YwZDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQo
TUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2Rl
Y29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCBy
ZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5
Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lk
IENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0
OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAg
IC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhl
IHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0g
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5j
b2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgp
CisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFy
IHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0
ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1
Li5lNjU1YzY5ZTNlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjOC4uZDJiYzI4MjE0NzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
ICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRl
ZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
Rm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9
CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewot
ICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0
ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZl
cik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1
ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBA
IHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikK
IHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVu
dHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgp
KQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmLi4xMzQ2NmNjOTlkMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBA
QCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmLi45NDYy
Nzk1MjBkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdl
KCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250
aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0
ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3Vs
ZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6
Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1h
Z2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRh
KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAg
IGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRh
dGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlz
UG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91
cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQ
b3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2Ny
aXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2Fu
Y2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlw
dCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAg
RW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwog
fQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlm
TmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5Myw3ICs1OTUsNyBAQCB2b2lk
IENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZQogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1
ZmZlckNvbnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewotICAgICAgICAvLyBMZXQgdGhl
IEltYWdlIGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBp
dCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNv
dXJjZSBidWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9m
IGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCiAg
ICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3KTogSXQgd291bGQgYmUgYmV0
dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2UncyBkZWNvZGVyIHRvIHN3YXAg
aW4gdGhlIG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcgYW55dGhpbmcuCiAgICAgICAg
IG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZi4uMDgzZjkyZjg4
ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjks
OCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAg
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYg
bV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAg
ICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVk
RGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZv
aWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJy
aWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0
KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwo
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJD
b250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODguLjg5NWRiMTE1OGI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJU
KGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAg
ICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01
Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJh
d1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdl
dFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5s
b29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAg
ICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29k
ZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpA
QCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8g
V2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUg
Y2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEw
NywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJp
bmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3ko
KTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8g
aW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsK
LSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBp
ZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhk
YXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERh
dGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MS4uYTc4NjVmOGFkMTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJy
b3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50
c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29s
IG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxs
b3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXIqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXll
ZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5p
c2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Yy4uYmY2OWU4MGU1NzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMzNCw3ICszMzQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1l
dHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQog
ICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lk
IENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MjcsOCArOTI3LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYg
bmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7
CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1
ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxLi5jOTgyZGQ2OTM3YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0OSw3IEBA
IGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVh
bCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291
cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3Li5k
YjQzMTYwN2FlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1
bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCku
bmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUg
YmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50
LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3Nl
dHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVu
dChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7
CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0K
ICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXgg
ZThjMTVmMzYwZmM5Li40NDVlNGY5ZjQyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVy
KiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVy
LmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTMuLmQyYzFkZTQ3ZWZi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApA
QCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAg
ICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1
NzYwN2I5Li5iNjczOThiMGU0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0
OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAg
IHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4Ny4uODY1MWU2MzlhZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNv
ZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVy
LmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEy
OC4uMGM4NDI4YmI5OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2Fj
aGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291
cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAg
ICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzLi4wOWI0MzM5YTM3YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAg
LTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBs
YWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBk
b1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODcuLmQyZWZmMmQyZDQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEs
MTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0g
ICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxYy4u
YmQyMzEyMTRmMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURl
Y29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3No
ZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2
MWQ2YzgxNi4uNjZiOTM1OGVjNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0Nv
bnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDgsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9v
bCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29s
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJv
b2wgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxNyAr
NjIsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRh
dGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5h
bDsKLSAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVy
dGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252
ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0
ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIKLSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CiAgICAg
dm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAg
IFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmln
aW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxE
YXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAg
Ym9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1Ni4u
NjFjYzZkZDQyMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
CiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252
ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLT5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJl
c3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQogCi12b2lkIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVy
dGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byByZXNvdXJjZUxvYWRl
ciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKQEAg
LTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3
b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgbV9jbGllbnQt
PmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2
aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRl
cjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAg
TGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0
ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBt
X2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1l
KCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcuLmVhNjE1ZGZmNGRkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCwxMiArMzgsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50
OF90OwogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5v
ZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBW
aXNpYmxlU2VsZWN0aW9uOwpAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
LyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3Qg
U3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBj
b25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNv
bnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAppbmRleCAxYTEyMTBmYTgzMzcuLmFjNTNjYjE0YmYwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwg
UmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBp
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVs
ZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9
KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRk
KHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5
NmFkMDgyNTQzZGQuLjc1ODM2Yjg3OTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURh
dGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAg
OiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAg
IAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSAr
NzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJ
bmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5n
RmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBS
YXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwogICAgIGZpbGUuZmls
ZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVz
UmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGlu
Z0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3OS4uZmM2NmMz
NjVhMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0cnVjdCBBcnR3b3JrQ2FjaGUgewogICAgICAg
ICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAgfTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5aW5nSW5mb0FydHdvcms7
CiAgICAgYm9vbCBtX3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggMTU3MzFlYjIzZmE3Li4wN2VkNDhl
NTg4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2Li4zNTc2M2VlMTJhMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBs
ZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFBs
YWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRE
YXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogI2VuZGlm
CiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsK
ICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiBj
bGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5k
ZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0
bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMuLjdiNGIzZDM2YWE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBjb3B5UGxhdGZvcm1EYXRhKGNv
bnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCitzdGF0
aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBjb3B5
UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxTdHJpbmc+KG90aGVyKSB9
OwogCi0gICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90
aGVyKSkKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90aGVy
KS5jb3B5UmVmKCkgfTsKKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAg
ICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUgfTsKIH0K
IAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKIHsKICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9
IHsgV1RGTW92ZShkYXRhKSB9OwogfQpAQCAtMjAyLDE0ICsyMDIsMTQgQEAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnNhbWVPcmlnaW5DdXN0b21TdHJpbmdE
YXRhKCkgY29uc3QKICAgICByZXR1cm4gY3VzdG9tRGF0YTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGlmIChlbnRyeS50eXBlICE9IHR5cGUpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5
UmVmKCk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSku
Y29weVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTI2NSwxMSAr
MjY1LDExIEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hDdXN0b21TdHJpbmco
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgfQogfQogCi12b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNo
YXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKK3ZvaWQgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGF1dG8mIGRhdGEgPSBlbnRyeS5wbGF0Zm9y
bURhdGE7Ci0gICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEp
ICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgaWYgKChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNO
dWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihkYXRhKSkKICAgICAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LnR5cGUsIGRhdGEpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CmluZGV4IDJiZTgxZDI5MzhhMy4uOTdmZjk4NWUyNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAt
NDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0
cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTY1LDExICs2NiwxMSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAg
IFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsK
ICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0Owot
ICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZm
ZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JC
dWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFu
dDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsK
ICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CmluZGV4IDFjMDcyNmZlYjNlMC4uYzQxZTA4NTI0NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBp
bnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2
NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5o
CmluZGV4IDNmNDgzMmE1YTY1OC4uOWU3MmU0NGEyZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1D
b250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFk
ZGluZ0RhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKICAgICB2aXJ0dWFsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlcigpIGNvbnN0ID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUuLjcxZGZiOTNlNTc1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0
NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURh
dGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBh
c3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVi
b2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC04
NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4g
MCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdF
QkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChj
b25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xv
cihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3
ZGY3Li42MzFhZGU3Y2NmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZp
ZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJldmlld0Vy
cm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0
ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQo
KTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUHJl
dmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKICAgICB9KTsKIH0KIAotdm9pZCBQ
cmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNpemUoKSA+
IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVyLmdldFNv
bWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmll
d0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50
KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsK
IAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQp
KQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBt
X3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5
VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQgUHJldmll
d0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
eyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWMuLjkyMDJlZGRkOWUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtNDEsMTUgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsK
IHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKIHN0cnVjdCBQcmV2aWV3UGxhdGZv
cm1EZWxlZ2F0ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAg
ICAgdmlydHVhbCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5p
c2hMb2FkaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03Miw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBS
ZXNvdXJjZUVycm9yJiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZm
ZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgcHJldmlld0RhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAg
ICB2b2lkIGZpbmlzaFVwZGF0aW5nKCk7CkBAIC05NCw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1BsYXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxs
YmFjayk7Ci0gICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZv
aWQgZGlkRmFpbENvbnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgZGlkRmFpbFVwZGF0aW5nKCk7CkBAIC0xMDYsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Ly8gUHJldmlld1BsYXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2Vp
dmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRl
bGVnYXRlRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWls
V2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApAQCAtMTE4LDcgKzEyMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vy
cm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAppbmRleCAwNGVhMzY4MDY5MmIuLjljZWU5MzMy
MGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJD
bGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBy
ZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAg
dmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQyLDcgKzQy
LDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2
aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0Rh
dGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBuZXdEYXRh
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKaW5k
ZXggODI3ODYzOTNmY2VkLi5iOTg2ZWU0MGQxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5N
YWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2
aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MS4uN2ZhZjY3N2Q3MjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM3LDYzICszNyw2OSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogfQog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsKIH0KIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKLSAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVE
YXRhKSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJv
dmlkZXImJiBwcm92aWRlcikKLSAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3Rv
cikpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQot
ICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworCitGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZmlsZURhdGEpCisgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7Cisg
ICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKSB9KTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorICAgIDogbV9zaXpl
KHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNl
RmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAg
ICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFw
cGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNz
KQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAot
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVy
KSk7Cit9CisKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRC
dWZmZXIuc2l6ZSgpKQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKK30KKyNlbmRpZgorCitzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwpAQCAtMTAzLDMzICsxMDksMTkgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29t
YmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUg
YW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2Vz
IG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8o
bl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkg
PD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAg
cmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdt
ZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
c2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0g
Y29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMu
Y2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4g
bV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBTaGFy
ZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMzksNyArMTMx
LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAg
IHJldHVybiBkYXRhOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0
YSgpCitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQog
ewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTE1NCwxMyArMTQ2LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRh
KCkKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBT
aGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1
ZmZlckRhdGFWaWV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBw
b3NpdGlvbikgY29uc3QKIHsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVt
ZW50ID0gZ2V0U2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVt
ZW50LT5zZWdtZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9u
IH07CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hh
cmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAor
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlv
bikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAg
YXV0byBjb21wYXJhdG9yID0gW10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSYgZW50cnkpIHsKQEAgLTE3MSw3ICsxNjMsNyBAQCBjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVu
dEZvclBvc2l0aW9uKAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVm
ZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
dG9IZXhTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
ICAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTgxLDcgKzE3Myw3
IEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4g
c3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVy
PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVm
ZmVyKSB7CkBAIC0yMDAsNjggKzE5Miw2MyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZl
cjsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMu
cmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUo
KSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0g
ICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3Np
emUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVt
ZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0
aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKICAgICBt
X3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwog
fQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25z
dAogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIpOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6
ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQot
ICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Q
b3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJu
IGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQotdm9pZCBTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CiAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNwYW4geyBz
ZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZp
eC5lbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyNzAsNyBAQCBib29s
IFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitWZWN0b3I8
dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChv
ZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzEwLDEyICsyOTcsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAg
IHJldHVybiBkYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIEFT
U0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUo
KSkKQEAgLTM1MywxNCArMzQwLDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9
CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBhdXRv
IGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsK
LX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5
Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNzIsNDIgKzM1MywxMyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3Qg
dWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShH
TElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9k
YXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsg
fSwKLSAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1t
dXRhYmxlRGF0YSk7Ci19Ci0KICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgp
IH19OwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0
aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTYsNyArNDA4LDExOCBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCit7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6
ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFT
U0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZl
ci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7Cisg
ICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQu
Y29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3Vv
dXMgPSB0cnVlOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmls
ZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBw
aW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVN
b2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBh
dGgpOworfQorCitjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorewor
ICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHsgeyBkYXRhKCksIHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5r
VG9GaXQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7Cit9CisKKyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50Ojpj
cmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNF
KEdMSUIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0
ZXM+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNl
Z21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
IGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOworfQorI2VuZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21l
bnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitj
b25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNp
dG9yID0gV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBV
U0UoQ0YpCisgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBj
b25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAor
I2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisj
aWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9
LAorI2VuZGlmCisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBk
YXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIp
IC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7Cisg
ICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9v
bCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1f
aW1tdXRhYmxlRGF0YSk7Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7
CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0s
CkBAIC00NzUsNyArNTM4LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0
YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAg
ICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUg
OiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyMiAr
NTUyLDEyIEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQot
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAg
IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQot
CiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
c2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRh
KCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCld
KCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBz
aXplOyB9CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggZjIzZjVkNjlhZDMyLi4xMTlmMzg0ZTU4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMjUgQEAgY2xhc3MgRGVjb2Rl
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3
cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNh
biBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmlu
ZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVu
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0g
Y2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5n
OjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5
PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgog
I2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25z
dDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAg
dm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJik7CiAjZW5kaWYKLQogI2lm
IFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7
Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJik7
CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiYpOwogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0KLSAgICAv
LyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2Ug
dGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90
IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBD
cmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250
ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRl
ZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogCi0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0g
ICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOwor
ICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+
IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJik7CiAK
LSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxl
IGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBU
byBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQu
Ci0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0
YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUo
KSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0Uo
Q0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJl
Zj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
ICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVm
UHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0
YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAg
ICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCoo
KT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9
OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlk
ZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21l
bnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAj
aWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAg
ICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4s
CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKKyAgICBmcmllbmQgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCit9OworCitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6
OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0g
ICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxl
RGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29w
eWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7
IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsg
fQogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0
aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcg
RGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90
IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNzUgKzE4OSwxOTcgQEAgcHVibGljOgogICAgIHVzaW5n
IERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+Owog
ICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9p
dGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9v
bCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsgfQogCiAgICAgLy8gYmVnaW4gYW5kIGVu
ZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRC
dWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3Np
dGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgZGVjb2RlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3Bl
cmF0b3I9PShvdGhlcik7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIAotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7
CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1
b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoKTsKKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsg
YXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
KTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdC
eXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNl
bmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25l
U2VnbWVudCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhf
dD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUg
c2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVh
cmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorICAgIC8vIENvbWJpbmVzIGFsbCB0
aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBj
bGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVu
dHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0
YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQK
LSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9Owog
Ci1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQorLy8g
QSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRv
IGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBt
ZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAg
ICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChz
aXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3Ms
IFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9
CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBw
aW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0Owor
I2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+
IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2Ug
dG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAg
IGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGln
dW91cygpKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAg
IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRh
a2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNy
ZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29u
dGlndW91cygpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVu
ZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAg
ICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsg
fQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgp
IDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9
IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7Cisg
ICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+Y29weSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVC
dWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7Cit9OworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJl
dHVybiB0YWtlRGF0YSgpOwogICAgIHJldHVybiBjb3B5RGF0YSgpOwogfQogCi1jbGFzcyBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRh
VmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKLSAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+
JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBu
ZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJE
YXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lm
IFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0ZC4uOWQwNTVjZTI3ZDg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVO
QUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRv
cikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9y
KQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVy
YXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50
ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDog
bnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0K
IAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChi
dWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAg
LCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0
b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJj
Li4xYzY0MDhkNGM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVk
QnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0
b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3Qg
VmVjdG9yPGNoYXI+Jik7CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAt
NTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwg
c2l6ZV90KTsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25z
dCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudElu
ZGV4IHsgMCB9OwogICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUw
ZDQ2MC4uYTRiNGJiMTA0YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6Ondy
aXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBt
X2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12b2lkIFN0YXRpY1Bh
c3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKK3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX25vbkRl
ZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53cml0ZURhdGEodHlw
ZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmgKaW5kZXggYzA5YjZkZTMxZjJlLi5lZGQ3MTM2MjNmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3Rl
Ym9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZv
aWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZp
bmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJ
bkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAg
IHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8u
aAppbmRleCA2ODc5NTkwMGM1YWQuLjFkNjViYzQwM2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmlu
ZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIp
IGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBp
bmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFn
ZURhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KaW5kZXggYmI3ODhhZmExZTkxLi43ZjA0OTYwYzU5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgog
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAg
ICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5p
bWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWlt
ZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRp
ZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxLi44MTllMjZmYTRjZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihDRkRhdGFSZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwogfQpAQCAt
NDMsMjQgKzQzLDIwIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRh
KQogI2lmICFVU0UoRk9VTkRBVElPTikKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEg
PSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0g
ICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6
ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAg
Q0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5z
aXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENG
RGF0YVJlZiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihk
YXRhKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigp
IGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50cykg
ewogICAgICAgICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTcwLDkgKzY2
LDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRh
KSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMS4uY2JlODc3MWE0NWQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAuLjJlZjI3MDFmZTY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lk
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAg
IHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERh
dGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNC4uNjc5YWU5MzI5NTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQppbmRleCBiNDYxZjk3NTM2ZGUuLjFjOTYwNDcxNmI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRl
KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
OjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewog
ICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGMuLmI4MTcwODE3
Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJp
dG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2lu
ZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2
ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBz
byB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJD
b250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2Vi
Q29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+
IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExB
VEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hh
cmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRU
SUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTog
dGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdE
YXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkg
cHJvcGVydGllczpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0
YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZl
ckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OS4uMjVmMzExZjI1ODliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUs
MTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVy
ZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBX
ZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9z
aXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
Q29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNv
cmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247
CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFs
bG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
YXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0
YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilz
aXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNp
emU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtODgsMTMgKzg4LDE0IEBAIEBlbmQKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0Rh
dGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIApAQCAtMTA1LDEw
ICsxMDYsOCBAQCBSZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
KCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2Vn
bWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAg
ICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEo
KSk7CiB9CiAKQEAgLTExOSwxNCArMTE4LDE0IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgcmV0
dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgfSk7CiB9CiAKLVJldGFp
blB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBp
bml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZS5oCmluZGV4IGZiYzI4M2ZiYzMzNi4uMmRlNDE5MzRkYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0
YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxDRE1JbnN0YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNl
Q2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9
OwogCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNl
ZCBmcm9tIHRoZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50
U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
aW5kZXggMzdjZDA3YzdiZjJkLi5kMjU5MjI1YmE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBD
RE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0
YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmly
dHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMg
QEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vu
c2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNp
bmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1l
c3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVu
dW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7
CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2QuLjUyYTYxNDhjODNjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzMs
OCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJv
eHkuY3BwCmluZGV4IGYyMThmOTc5MDRmYi4uNGJhNzViZjAwZDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcs
NyArMjI3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6
OmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9y
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGtleSA6IG1fa2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChz
dGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
PiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAgICAgICBr
ZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1No
YXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0
b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5oCmluZGV4IGE1ODRiNmNkMjY2Yi4uZTFlMDk4YTFkNWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5
SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7
CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9
CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkp
OyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFu
dCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlLi5mY2E2ZjIzODhhNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5h
bWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05P
YmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBw
YXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8g
YSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCk7CkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVj
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUg
cm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owog
CiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYg
KCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhLi5mY2Y1YmRkYTdjNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3Bh
Y2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2Jq
ZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4Yy4uMzFhOWZkZmEwMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wg
cGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmpl
Y3QmIHJvb3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMg
Y291bnQgYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVm
ZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0
YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApA
QCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXRE
YXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBk
YXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5p
dERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXRE
YXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgp
OwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBA
IC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlz
IGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQg
Q0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAu
c2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAg
ICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUs
MTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRh
IGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3Vz
SW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBj
b250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlk
cy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVy
biBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYg
aW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0Vt
cHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcs
MTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNP
TiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMi
CiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBp
cyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5n
IHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlk
czsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENE
TUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkg
Y29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBh
biBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJz
ZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENE
TVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVD
bGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFz
IGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3Qo
cmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAg
ICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAg
ICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nl
c3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJL
ZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2Ug
dGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29y
IGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRv
IGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5
U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0
YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUo
bWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVh
cktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAg
ICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyBy
ZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVs
ZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tl
eVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNP
TiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcg
YSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBm
b3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01
OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9v
dE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAot
ICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3Qu
CisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+
dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdl
U3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1l
c3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAog
ICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZN
b3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vz
c1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0
dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNz
VmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4Li45ZTI3ZmU5MTJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENE
TUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBm
aW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmlu
YWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkg
ZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAg
ICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBl
OTY4ZTk4NWM3ZWUuLmVjZjRlMDhjOWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDog
cHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGMuLjkzN2Qx
ZmI2ZjBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAg
IEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAg
ICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5
dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmMuLmRjMWZiMTZlYTBiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1
Li5mYmJjY2M0MzY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3Jp
dGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBp
bW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAo
aW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzLi5l
MzJhMzZjNjA3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0
YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5Li42NTVkZmU3M2Nm
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNzAsNyAr
NzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3Mg
RmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEy
NCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50
PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmlydHVhbCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1
cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFS
ZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsgfQogCiAgICAg
dmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBz
dHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwog
Ci0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdl
dCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9l
bmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURh
dGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9y
IHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKICAgICBJ
bWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVy
PiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggNGRkYjZkZjgzZWNiLi5k
ZTMzZjFhZjQxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0g
ICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3Bp
eGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3Zl
clNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5t
X3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4
ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgp
KSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1f
cGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3Qg
bV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZl
ciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4Li43YzU0
OTQ3ZjRkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJG
YWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgK
aW5kZXggYTFhMDhhZGMxNzVkLi42YThmZmNiNjBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0zNywxMiArMzcsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNv
ZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpAQCAtOTEsNyAr
OTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVzaW5nIFN1cHBv
cnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAgICAgdXNpbmcg
Q2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKLSAgICB1
c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rl
cj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1
bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKIAog
ICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9ydHNNZWRpYVR5
cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBs
b25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJG
cmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgxYzQ4MDE5Mjg0Li4zMDc3NDMz
MTVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAg
ICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wg
SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQor
Ym9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6
OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICgh
ZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgq
ZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRh
KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAg
c2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0
dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4
IDhhZjUwODBhMDBhOS4uODE0ZjBlMTJlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewog
ICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUlt
YWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMg
ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRl
Y29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1
NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJh
bWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAo
SW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5z
dXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJl
RGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29s
IGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZv
aWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZy
YW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTll
YTlkMDhkZC4uNTc3YmQ1MDhhNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZN
b3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRh
dGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdU
Rk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4
IDA2NTgxMzM3OWYxMS4uZTZiZGUxNjZmOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4g
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+TW9kZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJM
KTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7
CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7
CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2Rl
ciA8PCBtX3VybDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNzQ1OWM1ODU4
ZDI0Li44ODY5MWRjMjU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4
ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQg
YmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVy
LgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Li44YjA0ZjliZTk2YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIg
Kzg2LDEyIEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0
aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1
ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFy
cmF5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2lu
ZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVp
bnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJ
ZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtl
eVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRh
KGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBz
dGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURz
OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBh
dXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAg
ICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAog
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29u
c3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQg
ZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURz
OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBr
ZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0z
OTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBj
b25zdAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFU
eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJl
c3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgK
aW5kZXggYmM5M2Y2ZjZhN2JkLi4zMTdiYjhkNTdlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVT
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1p
bmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5MGNkYjQ4Zi4u
NTZiNThjMjVhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9
CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNp
c3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RN
SW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAog
ICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgp
OyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9w
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBj
b250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+
IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFp
blB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0
aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVs
ZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVl
c3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRP
YnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBm
aW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRl
bnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtl
eXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0
OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lv
bkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29u
dGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxv
d2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZl
Y3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExv
YWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1
ZGI5Li5iYTUwNjFlYmI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyAr
MjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRv
bVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRp
YWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcg
QEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQog
Ci1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtl
eVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3Rz
LmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVz
dEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jl
c3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4g
cGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8g
YSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VK
U09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5p
bmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAt
MzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5p
dGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1f
c2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4
ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygp
OwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hp
bmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55
T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNl
c3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShj
b25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9
KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0
dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
IWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxp
Y2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlv
bkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFU
eXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBp
ZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7
CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
RGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5H
X0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVn
aXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJw
c3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5
UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29s
IGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGlj
IGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0
YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2lu
c3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNB
cnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJl
dHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBp
cmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVy
OmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwog
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
U3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRl
eCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChh
dXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JS
ZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmlu
ZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkg
PT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAg
ICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAg
ICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3Jl
cXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAg
ICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250
ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVh
bWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwot
ICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJl
c3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUo
cmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQg
b25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBA
IC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAg
Zm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlT
ZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZp
ZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0p
IHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRL
ZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtl
eXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0
QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0
byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAg
IGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5T
RGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3Qo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAg
IFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRl
bnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBv
cHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUz
LDkgKzExNTMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3Rh
bmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVz
dHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRy
PE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBz
dHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9u
ID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRy
PENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAg
ICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBw
YXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmlu
Zygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6
ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkp
KTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVU
b1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAg
ICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAg
ICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0
cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0
KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQg
PSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50
aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5
SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAo
KSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZD
b24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8q
IGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSBy
ZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVu
dEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNy4uNjJiODNmYmZkNTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNs
YXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZG
T2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJB
VkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmly
dHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApAQCAt
OTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEltYWdlRGVj
b2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSW1h
Z2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2Rl
ckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0
VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2
YTA4M2Q1Li4zNWM2Y2U2N2U4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNT
YW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVj
b2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFW
Rk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFn
ZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFW
Rm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZB
c3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyAr
MzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFW
Rk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUp
CiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtMzA5
LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9w
dE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBk
YXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9s
b2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNl
dERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUo
RElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRW
YWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVy
Oltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDEsOSAr
NjQxLDkgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVj
dGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVj
b2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBk
YXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZl
ZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAppbmRleCAyMDBlMWE4ZjlhZmIuLmM5ZDliMmE5Njg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVk
aWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsK
IGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENh
Y2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENh
Y2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0
ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9r
ZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBk
b3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsg
ZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUuLmIxYzYwNzljNjQ4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFu
YwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5
SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAgICBhdXRv
IGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAgICBpZiAo
IWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2Ey
MTQuLjRkZDZiOTFhOTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdz
KQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7
Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1
dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdz
OjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0Rh
dGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51
aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjQuLjc1NGIxZTJlZWMwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAt
MjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNi4uMGVmZWVhZWY1YjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAt
NDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwog
Y2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAK
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBS
ZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IGEyMmE5OTdiMTEwNy4uZjkyMWYzZGEwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQgKzE1NiwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAg
ICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRh
U2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVk
IGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWls
ZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJl
c291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUo
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjExLDEzICsyMTEs
MTAgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAg
ICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Km1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBt
X3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0K
IAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lk
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGlu
ZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3Qq
IGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFS
ZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZS4u
OTQxOWJjZWEzOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwxMCAr
MzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWYuLmI2ZDNlYjM2
MzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIHsKLSAgICBT
aGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGlu
Zm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRCdWZmZXItPmRl
cmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQot
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
CiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VT
b3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMgKzU2MiwyNCBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1h
Z2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
bV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNh
biBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93
bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNl
bGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJ
TyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRh
IGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5k
ZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAg
ICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNl
bGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJ
TyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgorICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVk
KTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0
UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNh
dXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKKyAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAg
IC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIg
YW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1
aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0
YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxs
YmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCks
IGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgp
LCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQwNzM2YTIxYWMu
LmEwYWMxYzJmYmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVy
Q0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMg
UmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERh
dGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0K
ICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYi4uZmY3N2I1M2U5ZDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURl
Y29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBh
ZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgp
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1
ZmQzLi5kZTZkZWJlMmJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBA
IC0zNjUsOSArMzY1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a1dvdWxkQmxvY2spOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2
b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgc3RhdGljIHZvaWQgRnJlZVNoYXJlZEJ1
ZmZlcih2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBi
dWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZj
b24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZl
cio+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKQEAgLTQwOCwx
MSArNDA4LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gcmVhZFJlc3Vs
dC52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFz
T25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5n
IGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZm
ZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qg
a2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAg
ICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlm
IHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/Ci0gICAg
ICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNl
Z21lbnQ7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+
KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVu
dCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51
bVRvUmVhZCwgc2hhcmVkQnVmZmVyLT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7
CiAgICAgICAgICAgICAgICAgLy8gRnJvbSBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2Ug
ZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIDY0LWJpdCBh
cmNoaXRlY3R1cmVzLCB0aGlzIHN0cnVjdCBjb250YWlucyBtaXNhbGlnbmVkIGZ1bmN0aW9uIHBv
aW50ZXJzLgogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpbmstdGltZSBpc3N1ZXMsIGl0
IGlzIHJlY29tbWVuZGVkIHRoYXQgY2xpZW50cyBmaWxsIENNQmxvY2tCdWZmZXJDdXN0b21CbG9j
a1NvdXJjZSdzIGZ1bmN0aW9uIHBvaW50ZXIgZmllbGRzCkBAIC00MjAsMTAgKzQxNywxMCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlIGFs
bG9jYXRvcjsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lvbiA9IDA7CiAgICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRyOwotICAgICAgICAgICAg
ICAgIGFsbG9jYXRvci5GcmVlQmxvY2sgPSBGcmVlRGF0YVNlZ21lbnQ7Ci0gICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsKLSAgICAgICAgICAgICAg
ICBmaXJzdFNlZ21lbnQtPnJlZigpOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZv
aWQqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRhdGEoKSkpLCBmaXJzdFNl
Z21lbnQtPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQsIGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICAgICAgYWxsb2Nh
dG9yLkZyZWVCbG9jayA9IEZyZWVTaGFyZWRCdWZmZXI7CisgICAgICAgICAgICAgICAgYWxsb2Nh
dG9yLnJlZkNvbiA9IHNoYXJlZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRC
dWZmZXItPnJlZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVm
ZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25z
dF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSkpLCBzaGFyZWRCdWZmZXItPnNp
emUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQsIGNhblJl
YWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01C
bG9ja0J1ZmZlck5vRXJyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a05vdEVub3VnaE1lbW9yeSk7CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBjYW5SZWFk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA0MDI1
ZTA2OTJkYzUuLmJhNjA1ZGNiMzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTczNyw3ICs3MzcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0
ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVz
KQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3Jh
cnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVu
dC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAg
ICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRl
bXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzLi5iMzFiYzVmZDRl
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3
ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcg
KzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0g
dG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8K
ICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3Rv
bSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1
ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRh
aW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0
aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5n
IGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMg
dGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUg
dGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0
byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBp
dGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJl
IHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTUuLjJiNDQz
ZmJiZWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgdm9pZCByZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAgICBzdGF0aWNf
Y2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRpYyBjYWlyb191
c2VyX2RhdGFfa2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
OjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICA6IG1fZm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0ZV9mb3Jf
ZnRfZmFjZShmcmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAgIGJ1ZmZlci5y
ZWYoKTsgLy8gVGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigpIGluIHJlbGVh
c2VDdXN0b21Gb250RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
aW5kZXggOWFkMTliODc2YjI3Li5kZmJjNTgwZmI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFn
ZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElt
YWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5LDcgQEAgUGxhdGZvcm1JbWFn
ZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBAIC00MjYsMTAgKzQyNiwxMSBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6
VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
eworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwog
ICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0g
YnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdl
RGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUp
OwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3Jh
cGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDY2ZjMzNzI4
NDZhNC4uZDNlZjZhNDVjZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
CkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1
YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVj
b2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVk
aWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87
IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3
ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVm
UHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1w
bGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1Li5iMzI0Y2YxMTQ2NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0z
NjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9E
RUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBv
ZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEo
KSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NU
X01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihp
bml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
KyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSks
IGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVy
LT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVy
VHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCA1ZDg2ZmIxYWY0ODcuLjkzMDE5MDk5NDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sp
PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyLi4zNDliZmRjYWFkNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGlj
OgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJv
eHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3Rl
bmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sg
b2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBW
ZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRp
bmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJl
ZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21l
aG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAg
ICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWlu
Ci0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhv
d2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRl
cmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3Qg
Y2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEw
NDM2MGU4OC4uYzM4OTE2ZTdkMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIy
MCw3ICsyMjAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nlc3Npb25zKCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGlu
aXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYg
Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3LDcgKzIzNyw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5j
b3B5KCk7CiB9CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6Omlu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKICAg
ICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9yIGVycm9yID0g
b3BlbmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0
KCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBj
ZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBDRE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZShjb25zdCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAg
ICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0
dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQo
KSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAg
IGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFT
U0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJl
dHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZS5oYXNfdmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5
cGUgdHlwZSgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsg
fQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlh
S2V5TWVzc2FnZVR5cGUgYWx0ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUu
dmFsdWUoKSA6IGFsdGVybmF0ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5n
ZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1
ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3NSw3ICs0NzUs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJh
Y2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdT
VF9FUlJPUigiQ0RNIGVycm9yIik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNz
YWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdAogICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBt
X2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lv
bkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAg
ICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxv
YWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBm
YWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3ICs1MTUsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9
IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAg
aWYgKG1fc2Vzc2lvbklELmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3Vs
ZCBub3QgY3JlYXRlIHNlc3Npb24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRh
LnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUsMTMgKzU0NSwx
MyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWlsdXJlKCkKICAg
ICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9z
ZXNzaW9uSUQpOwogCiAgICAgR1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVzIiwgc2Vzc2lv
bklELnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vz
c2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2Fn
ZSkKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAg
ICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9u
c2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdl
KTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQo
KSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RG
TW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUco
ImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2Ut
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JRAogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNz
aW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRD
YWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29s
IHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2Fn
ZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlm
IChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU5Nyw3
ICs1OTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExp
Y2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIFBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAg
ICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdl
IG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NU
X01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBz
dGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2Fn
ZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9
PSBzZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3Ro
aXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxs
YmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1
Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7
CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAg
ICAgICBHU1RfREVCVUcoInNlc3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1Iiwg
bV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJl
bGVhc2VkKSwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IGNkZDhkYTIx
MTIzYy4uMTAyMGUxNTMyMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9r
ZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAg
ICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQx
LDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIq
IGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0g
dm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChi
b29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJh
Y2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAg
IHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVy
cm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsK
ICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRl
OgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3Mg
bV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9u
PiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRz
SW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0
ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFu
Z2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Li5lYTg5MGY2
N2RhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29u
dGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQ
YXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQs
IG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVu
cGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9h
ZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5Li4y
N2RkNGVhZTBkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRp
YV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAg
ICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEo
KSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Ig
c3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3Qg
U3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29t
bW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBu
dWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0g
ICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4
dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkK
KyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAg
ICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVl
ZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9h
ZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUs
MTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2Fy
ZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAot
ICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAg
bV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9h
ZDsgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5l
clR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWMuLjY5MjhhNjNlOTcxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmlu
ZGV4IDgzZTZhZjdiMDM4OS4uNjhiY2M4ODQ2YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3Vu
ZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1
YzQ1OTMuLmZhMDAwODExNjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw5
ICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1v
cnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBFT1RIZWFkZXIgewogICAgIEVPVEhlYWRlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNi4uMGZhOGYzMDZhZDk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0zODEsNyArMzgxLDcg
QEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4
VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2
X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsK
ICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRl
VGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhp
cyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpW
aGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRh
YmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcg
KzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdz
dWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpi
dWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWEuLjBk
YjRhZmFkYjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51
bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0Li4wOGZjOWYxOWVhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dG
b250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBG
b250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4g
Rm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDYyOWUw
ZTYxYTEwNC4uNzczNTczOWI5MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3
Miw3ICsyNzIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7
CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmgKaW5kZXggNGY0NzI1ODZiNDI0Li5jMjM2NWZkNzQ0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJE
IGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVy
RGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0
ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgp
KTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2Li4yZDk3MjcwYTczNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNw
cApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlz
IGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGQ5NTZkOWU3NjI1ZC4uMzNjOTVlYzMzMzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNo
YXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNo
YXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBi
dWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsx
MzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAot
UmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDog
IlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0
dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYS4uOWM0MDU1
NzgyNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9y
dGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNl
IHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJs
ZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1h
Z2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiAr
NzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0g
ICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMg
aW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAg
IGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlm
IChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91
c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAg
ICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlE
ZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgog
ICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7
CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMuLjI2Zjg4NjQ5
NmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBB
VklGSW1hZ2VSZWFkZXI6OkFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4m
JiBkZWNvZGVyKQogCiBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1
bHQ7CiAKLWJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRklt
YWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNv
ZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/
IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGJvb2wgYWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VS
ZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2
b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0
Yi4uNDk2ZjY5ZjgxMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKQEAgLTM5LDggKzM5
LDggQEAgcHVibGljOgogICAgIEFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rl
cj4mJik7CiAgICAgfkFWSUZJbWFnZVJlYWRlcigpOwogCi0gICAgYm9vbCBwYXJzZUhlYWRlcihj
b25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wgcGFyc2VI
ZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAgICAgZG91YmxlIHJl
cGV0aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4
IDcyNzY5YTY5MjZlYy4uZjc0NTVjMTQ2YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lk
IEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFm
ZWE2Li42NGRlZDZhYmJlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9Ci0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
KyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZl
ckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQo
KSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3Np
bmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggNDg0NGYzODBkYzE3Li5iZDQzMGU4YThiZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJNUEltYWdl
UmVhZGVyIHsKIHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0YVtvZmZzZXRd
fCwgY29udmVydGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUKICAgICAvLyBlbmRpYW5uZXNzLgot
ICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2
X3QgcmVhZFVpbnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQxNl90IHJlc3VsdDsKICAgICAg
ICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRp
YyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVp
bnQzMihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50
IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5
KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVi
bGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQsIHNp
emVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9vbCB1
c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZv
aWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiBJZiB8
b25seVNpemV8IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2VzIGFzIGZh
ciBhcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0yNzIsNyAr
MjcyLDcgQEAgcHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBtX2J1ZmZl
cjsKIAogICAgIC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9kYXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8bV9kYXRhfCBy
ZXByZXNlbnRpbmcgaG93IG11Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAgIHNpemVfdCBt
X2RlY29kZWRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwCmluZGV4IDYwMTIwMzc0ZjljNC4uNGEyMTI1NWE4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0
cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgp
LmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0
aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3Vy
ZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3Bp
eGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3Vz
ZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCks
IFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRh
KS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGIuLmI5ZWMwMWI4YWU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVy
OjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0
OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYg
KGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
MzVkZjMzZjZkZmM0Li5jNzQ3MTk5OTliOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9z
OyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKaW5kZXggNDIxNDZlMDMyOTMyLi4xMDgyZmRmMGRmZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsg
fQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wg
ZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRB
dEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3Vy
cmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1Ny4uYzA3MTM0
NWI4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBJ
Q09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVjb2Rlcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDcuLjEwZWU5YjRkMmU4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUlt
YWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJpY28iX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgp
IGNvbnN0IGZpbmFsOwogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXpl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2
ZmYuLjVjZmFjOWYyMzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0y
MjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAg
IGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBt
YXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2Vy
KG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nf
c3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5z
aWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwot
ICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPiht
YXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZl
ci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsg
aWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlz
RW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtl
Q29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBz
dGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRl
Y29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9v
bCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXpl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
YmVjZjY0NTAyNzdlLi4yMDQ3M2YwZWVlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVH
MjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1h
Z2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRh
LCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlLi40
Y2JkMzIzZDlhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUy
LDcgQEAgcHVibGljOgogICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJv
b2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6
ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNp
Z25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNp
emVPbmx5OwogICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQ
TkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDJmMWIwOWRiYzc2Li5iMWJlYzU1ZTc4YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQ
SW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2Rl
cigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6
OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMy
LDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4g
dGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhl
IGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0
aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5n
ZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBp
biBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2Rh
dGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJv
dGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVk
RGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0
ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0
aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aAppbmRleCBhZjM2NWU5Y2Y5YzcuLmRkMjhiYzg4ZGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFn
ZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYs
IGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJB
dEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYi4uYjIzNzdmZTM0
MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpA
QCAtMjM2LDE0ICsyMzYsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
IAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3Ry
aW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZE
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFz
dGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJl
YWRlci5yZWFkUlRGRCgqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNv
dW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hh
bmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYo
KmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogI2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3Vw
cG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5h
bGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHR5cGUsIGl0ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
ID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQuLjE2YjNkNWQ0NDE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0z
MzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNDYz
LDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVz
LnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50
RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50
LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChj
b250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFy
Y2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0
cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFy
Y2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0
cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
ICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09i
amVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3Jp
Z2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAt
NTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJv
YXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6
ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRh
W2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlP
ck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUo
dXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFn
ZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpw
YXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBA
IC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2lu
Q3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZl
ciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBw
YXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBk
cmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0g
cHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJv
YXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9t
IGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJp
bmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVd
OwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmlu
ZGV4IDU0NDY1M2M0NDAzZC4uY2FiYWFhMTE4ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBA
ZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252
ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAgICwgbV9v
cmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVy
IH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVy
dGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OS4u
MGQyNTQ5OGI4NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
Q29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3Qg
UGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVm
ZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1h
Z2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1
cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0
ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVk
U3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVk
U3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiLi44OGQwNDAyNTg0MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0x
MjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5n
Rm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0
YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
d2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdl
YkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1
c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29u
dGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3Rv
bURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBh
c3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjLi5jM2I0ZDJkOTYyMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRm
b3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQxLDEy
ICszNDEsMTIgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQg
ZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpu
aWxdOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0
X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAo
IWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZl
ciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJk
VHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0LDgg
QEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRl
bShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9y
VHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5n
ID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKaW5kZXggNjgxM2Q1ZGE3ZGNiLi43OTY1NTRmNGM5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBNZWRpYVN0
cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRm
b3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVk
aW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZhdGUmKTsK
IAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsK
KyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikg
PSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRhNi4uNDk4
ZDRlZTEzNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Myw3
ICs5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3Vu
dGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShG
ZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1
ZmZlci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWYuLjljMmM3OTdiODE5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIo
TWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2
b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAg
dm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNv
bXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJv
b2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsK
QEAgLTExNyw4ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RG
X0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUz
MTMuLjg0ODQxMDBlYWM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93
cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3Vs
ZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8g
Y2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0
ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG51bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92
ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwog
fQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlk
NTllOWFhLi5jZGVlNjAzNTIzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBuYW1lc3BhY2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdjODM3Li40
YmViY2I1MDk4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3Mg
VGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2Li5iYThmZDRmZjRmMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRs
ZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1NmNlOGMuLmM0
ZjA1NDg1ZjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3Jh
Z2VBbGxvd2VkLApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50
Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTYuLjAwOGUyMjZmZjkxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNw
b25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJl
c291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhf
dCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENv
bXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRo
ZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tE
YXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAg
ZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9
IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAg
LTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdl
IHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3Vj
aCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhh
cyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0
aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5z
aXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRv
KiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNr
ID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0
YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0
ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0
YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAg
ICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5k
ZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisg
ICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRh
KGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJ
bmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEo
Y29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBl
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcp
OwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEt
PmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25z
ZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzYuLmNlNGMyNTQ1Y2RlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5
dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5z
aWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRS
ZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENh
Y2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwot
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0
YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjoo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KaW5kZXggZTA0MDEwYTk4MTFiLi44Yzg5ZDkzODY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
YXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2ln
bmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUyLDcgKzY1
Miw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3Vy
Y2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFz
aykKQEAgLTkxNSwxMSArOTE1LDExIEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0
dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdl
KS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRh
dGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9y
ZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25n
U2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAg
ICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ry
b25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAg
ICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJM
U2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwog
ICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVS
TFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGMzNmUx
Zjg4NzY0My4uMzQ5NDQ1OTI1NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZv
aWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1
ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMi4uY2RlNDQ0NTc3NWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5o
CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVD
dXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShD
dXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVy
cmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBD
dXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhF
cnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4Li4wOTBk
MDM5YmE0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTExOSwxMiArMTE5LDEyIEBA
IEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhh
bmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJl
dHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcu
CiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJl
IHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNo
IG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVm
ZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4
YmNjNWViM2UuLjlhMWExYmJkMTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgx
MzE0Li5jODEzODg2YThkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAt
MjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxT
aGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1
YjBlODM5MTk1Li5kODJkZDNjMTBhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNp
emVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8v
IGNhbGxlZCB3aXRoIGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2
aWEgaGVhZGVyQ2FsbGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChp
c0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0
NCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBD
dXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJs
UmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZp
bGVQYXRoOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlm
RW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6Ondy
aXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2Fk
TXV0ZXggfTsKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFU
b0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9
CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3du
bG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVl
c3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3Li4zYzdjZGQ4ODNl
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1
cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJl
cXVlc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMg
Q3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xp
ZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNm
ZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNp
emVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVf
dCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVj
ZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRy
YW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcg
QEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7
CiAKICAgICAvLyBEb3dubG9hZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBj
bG9zZURvd25sb2FkRmlsZSgpOwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdENsaWVudC5oCmluZGV4IDA4Yzg2YzdkNDY4NC4uMzQ3OTgzMmY1NzZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
JiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEuLjMwNWQ0ZTVjOWZjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBAQCB2b2lkIEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1
ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxs
ZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdl
cjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxl
LCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6
c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZt
X2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQog
CiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJl
cXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQuLmRhZjBhNTlhNGU1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsK
ICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9u
c2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAg
ICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
JikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJl
c291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJmMjFhLi4xZjRhMTkzMTMzMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YS4uNDUzNjgxYmRhYjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyAr
MzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFz
dGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYp
IGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0
ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJ
bWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0
ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAg
ICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1v
cnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayht
ZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFy
ZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQo
Y29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAog
ICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdP
UkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAg
ICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3
cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xv
c2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRl
ZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVS
TCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVk
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOworICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2IuLjg0
ZmEyOWNlMWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0o
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rv
cnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIGtleXMpCit2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiYga2V5cykKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbnMuYWRkKGlk
LCBXVEZNb3ZlKGtleXMpKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCCiAgICAgICAgIHZhbHVlLmFwcGVuZChX
VEZNb3ZlKGtleSkpOwogfQogCi1WZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0
b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1ZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlz
RnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0ID0gbV9z
ZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgz
LDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVt
b3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RGTW92ZShp
dC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RN
RmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2Nv
bnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6
a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRv
IGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQo
KSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBj
b25zdAogICAgIHJldHVybiBtX2ZhY3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25z
KCk7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29s
IE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBp
ZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTEsMTIgKzIxMSwxMyBAQCBib29sIE1vY2tDRE06OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
QXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFy
cmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNjksOSArMjcwLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAg
ICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJp
bmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKIH0KQEAgLTI5Nyw3ICsyOTgsNyBAQCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmIGlu
c3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5j
ZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMyMyw3ICsz
MjQsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lvbklELCBm
YWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5m
YWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMxLDcgKzMzMiw3
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgp
LCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Bv
bnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29u
dGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFs
dWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXgg
ZjVjZGE1MDVjZjJhLi5kOTZjMTU2ZWU0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMo
aWQpOyB9CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsg
bV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29u
c3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVL
ZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlz
VG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3Rv
cnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5z
dGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7
IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vz
c2lvbnM7CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIx
LDggKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
IAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzks
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRh
dGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7
IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVy
c2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oKSBmaW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3Yjdi
NjdiZS4uMDU5ZjNhMzg2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6
OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Q
b2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBN
b2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDEx
YTMwMDk0N2I1Li42MzVhYzg0YmU3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9j
a0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOS4uNWY4NTQ1ZWJhNWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAg
bV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0
QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1
ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3Ry
aW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcg
U2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250
YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZm
ZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2Vn
bWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBt
X2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigp
LT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVm
ZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikK
LSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRm
OCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRm
OC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXgg
YjM5ZDljMTMwMzMwLi5mZDJjMWFlMmY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgog
ICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAot
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51
bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiht
X2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlw
dC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRG
LTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVm
ZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiLi40MDY2ZmIzNTJl
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExv
YWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVy
bCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7
CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9h
ZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwg
V1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5n
ICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJy
ZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQor
ICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0
YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5h
cHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9
IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhLi4x
YjNkNzg3MGYxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAog
c3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
dXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xv
YWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRp
bmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToK
ICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVs
bHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmgKaW5kZXggZWIyNjZiNmMwN2U2Li4wOTc1NDNlMWIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNs
YXNzIENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMC4uOWE4
ZmIzNWNhNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0
QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBk
aXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFu
eSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVy
OjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXpl
KSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6
TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNX
U2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXgg
YWI5OTYwM2VhNTNlLi5mY2NjMmE5ZWQyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hl
SXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
VU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNw
b25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVu
dFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVx
dWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+
IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdl
IGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5k
aW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3Rk
OjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRh
KCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAg
IGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwog
ICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VN
SU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAg
IHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRh
dGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIo
KQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVy
KTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAg
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShu
dWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9u
c2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAg
ICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAg
ICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUs
NiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVy
LT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5h
cnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAg
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDcuLjE2MmNh
OTVhZWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZh
cmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0y
MzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25z
ZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA3MTc5NDc1ZjdkZmQuLjdjNjcwZjA1YjliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MzIgQEAKKzIwMjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMgc2hh
cmVkIGJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzODY1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisKKzIwMjEtMTItMDMgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVy
IGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFt
ZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAg
ICAgIHR5cGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0Nh
Y2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29y
ZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1
ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6
OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29w
eTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNl
OjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpk
ZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgor
ICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAg
ICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29u
c3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRy
b3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNj
ZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
Y2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBh
c3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGlu
Z0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291
cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlk
ZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0w
NSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZm
ZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1Li4zMWMyZDc2ZjJlZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50
KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGIuLjAyYzVjZDM3YWU1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5z
dGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAot
ICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVx
dWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5k
ZXggZTU3NjZjMjMzNGNmLi5kZTgyNzNiOWNmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGlu
aXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1f
c2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZm
ZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
IChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdU
Rk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2Vl
ZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTEx
NSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5
cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Np
b25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24p
XSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3Rk
OjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25z
RGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRT
ZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAg
ICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBA
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtl
eVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBk
YXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0p
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5
ZDVmYWJjLi5mZTczMDk3MTMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQK
ICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2Vi
Q29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJl
dHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2IuLmY3Y2I2YTYzZWI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
Y3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3Rl
Q0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Q
cm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwLi4zYjY2Yzc3NTc4NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENE
TVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
OwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkq
IGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXgg
ZTJjZDA1ZDdjYzc0Li5kZThmNmRmNTVhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzLi4x
NTQ2YmRmZGZkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNl
c3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2IuLjYx
N2Y0NzY4OTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRh
UmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291
cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
ICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMs
IFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXggZDEzZDI1ZjY1ZjAyLi41YjdhN2UyYTc0MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYp
OwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIuLmU4M2Y5MTQzZDIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
YXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93
cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBh
dXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRh
dGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29k
ZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMi4uNzFmZDAy
MjI5YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUg
eyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCAzZjM5ZWIzMmYxYWEuLmQ4OTIwZTk4NzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNL
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApp
bmRleCBiYmIxNDYyYTMxNjEuLmUxMWJmNTYzMTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgKaW5kZXggZDYwMThmNjEzODNhLi5lMDQ5ZTViMTJkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IGJhYzAyMmFiNDU0My4uNzk3NWQ0MWJhZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29y
a0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBk
YXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9
IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCmluZGV4IGMzNzczYzk4Nzg1NS4uZWU1ZWIwMDZhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRh
KHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1Nl
bmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3
ZS4uMzQ4Y2ZmYjllOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBl
bnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2Li4wZTVlYjVhZGMwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91
c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRh
JiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkp
OwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051
bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1
ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFw
cGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
CiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxO
ZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDEx
IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZN
b3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAg
ICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5n
VGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAg
IGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1l
ID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYg
KGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJh
bWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlm
ICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAg
ICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZElu
Zm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVt
QnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdU
aW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJp
bmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91
cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmICht
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAg
ICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0
aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0
IE5vdCBNb2RpZmllZApAQCAtODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
QEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBk
YXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25z
dCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4
OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2lu
UHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBP
UyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgog
ICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0g
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxs
KCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3Ro
OwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTEx
LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNo
cm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNo
cm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xv
YWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhl
IGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1
ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEt
PmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAg
ICB9CkBAIC0xMjU2LDE5ICsxMjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsK
KyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0
d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3lu
Y2hyb25vdXMoKSk7CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xP
RygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2Ug
cmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIg
KzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVu
dHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAg
ICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNo
ZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1
dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFi
bGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRC
b2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhLi45ODQ0MjRhMzA2ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBj
bGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTExNCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJp
bmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwog
CiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRh
dGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RD
b3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBt
X3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNo
ZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFs
aWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JD
YWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3Mi4uMWFmMWUwOGUzYzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQg
UGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQogCi12
b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBQ
aW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7
CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCAx
OWVjOGNlYjkyZTMuLmFiMjlhMGIxYWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2
b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlLi4xN2Q0NzkwN2EzZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBA
IC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExLi44NTgwOGUxMjFiNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzcuLjgxOTY2
MzAyMGM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAo
bV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNl
ZmExNS4uZWUxYmM4YjdkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mi4uN2EyNjIyMTlkZTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlm
ICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXIt
PnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZl
ci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3Yy4uNDRmYzA2ODVmYTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAt
NjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5Li5kZDMwNWFmMjk3NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1
NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92
ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6
bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6
bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNw
b25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQ
cm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkp
OwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1h
a2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdv
cmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25z
ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURh
dGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjUuLmVkMDRlYmNh
MGIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBM
b3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9
IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1h
cHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3Rv
cmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRp
cmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRp
bmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRy
aWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNp
emVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtl
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBt
YWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhLi43NjEwNzhkZWEwOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2
YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQog
ICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNw
b25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZm
ZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkg
fTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsK
KyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwg
eyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZl
ckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3Vy
Y2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGlu
aXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1
YzM4MDFjMy4uOWMwNDIwZDQ0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0
IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNv
bnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRp
cmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3
ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZi4uNDFkODIzNTAyNDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6
U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFs
RnJhbWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVl
c3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNW
YWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJl
CiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25z
ZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0
cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2
YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsg
Ly8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2Fj
aGVFbnRyeSkKQEAgLTEyMCwxNyArMTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsK
IAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQg
bWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBz
aXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBt
YXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9
CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlk
Q29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0
b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVu
dHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAg
ICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4K
ICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZh
dWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdU
Rk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNC4uMWI4NDNk
YjdlYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBm
YWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMC4uMzE5OWJmZjMxMWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNo
Q2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6
RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9u
c2UoV1RGTW92ZShyZXNwb25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAt
NzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZl
dGNoQ2FjaGU6OnRha2UoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4
cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29u
c3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENh
Y2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNz
aW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRl
eCBhMjUxNTIwYjMxZWEuLjUyYzBiMTBmY2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0K
KyAgICAgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZm
ZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
ZGlyZWN0UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtl
KGNvbnN0IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lk
IHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVj
dChjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRl
ZWJiOWYuLjQxNjY4YTViMWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAg
ICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QuLjMwNTFmMTY5Y2IwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3Jr
TG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRh
VGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5jcHAKaW5kZXggOGZjN2I2NjNlNmY3Li4zN2YyOTQxNjY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9r
ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1
cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJl
ZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2Fu
Y2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFp
c0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2Li40NWJlNWNlMTg0
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxX
ZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAg
ICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpD
dXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJs
RGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJDb3Jl
OjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1
OC4uMzNkNDNiNzIyMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1
Y3QgUGFja2V0T3B0aW9uczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFi
bGVEb21haW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDIuLjE3ZjA4YzI4ZWExMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAt
MjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2Yg
dGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVj
b2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBj
b3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRv
IHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpAQCAtNDMs
MTEgKzQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
IHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFy
ZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAg
ICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAg
ICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29w
eShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisgICAgICAg
IDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1Li42N2VjOGU1ZTky
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFS
ZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29k
ZWQgZGF0YS4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZl
cmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQg
ZGF0YS4KIAogI3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcAppbmRleCBkMjQwNmVlMjkwNTMuLmMwMjZmNTQ5NTY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0
cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiBS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qg
ZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAg
ICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMw
MmMuLjFiNGZkZmFmNjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBA
IC00NSw2ICs0NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNp
ZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1lbW9y
eT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlC
dWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxl
JiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNj
cmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bQppbmRleCBjYTBjMjRiMjc3MzUuLjExMGUwYWRkZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMg
dm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+
ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRh
KCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVS
ZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggODdmNGViMWViYTI4Li4zYzFiNTdkNWFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01
NjQsMTMgKzU2NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAg
ICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwg
c28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0
LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVl
KCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURh
dGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2
OTYxYzcxNDQwMi4uNmZhMDJhN2JjM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMi4uODQzZmQ0
NzMxM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZP
Ul9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVG
SU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29k
ZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKK3N0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAh
YnVmZmVyOwogICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRp
YyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCi0gICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIg
ZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8g
RG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29k
aW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGlt
dW0gbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRp
bmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5l
Y3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMg
bWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29k
ZXIsIFZlY3RvcjxTdHJpbgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAo
aGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1E
YXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURh
dGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSku
cHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVu
dHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRy
eSYgZGF0YSkKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5
cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0z
MDEwLDYgKzMwMTAsMzQgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZm
ZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICszMTM1LDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmly
c3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vj
b25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdl
RGF0YTsKIH0KIApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZm
ZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEw
Li42ZmFjMmFhMWVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9y
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzgsNyArMTM5LDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlw
dEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwog
Y2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50czsKQEAgLTc1MSw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAj
ZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZC4uYjYwN2FjZTgzOGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAg
ICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNp
emUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZS4uNjcxNzU4YTI4MGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEg
PSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0
YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hh
cmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAK
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsK
ICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2MuLjE0OTBjNTExYmRj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApA
QCAtOTgsNyArOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxl
U2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0
YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFm
YTkyOWNmMDkzZC4uZmU1MGU1MzhiOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgp
IGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2lu
Z0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaAppbmRleCA3ZmMwNTQ1N2U2NGMuLjRlMjY2ZjM2N2FjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMw
LDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGEuLjExMWYwOTI2
M2Y4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRz
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5LDcgKzEx
OSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRp
b25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YS4uZGZlZjNl
MDcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJl
dHVybiBbZmlsZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEo
KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2lu
Z0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0Mi4uMDFjODEwMjc4
ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25z
dCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4
dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdr
SGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdo
bGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0
IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGln
aGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7
CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOild
KQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hp
Z2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpo
aWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUuLmM4MDI5YzE0MGE2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgK
QEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
ICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYy4uOGQzYTg1NjQ2MmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIwLDcg
KzEyMjAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9
CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBp
ZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1f
d2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkLi42ODMzNzNlYWUwMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBA
IC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9u
ZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZl
dGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihy
ZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0
Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAg
ICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVk
aW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAg
ICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDAp
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlNy4uZjU4OTEyNDE3MDJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTUwNiw3ICs1MDYs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRl
bSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAgICAgdm9pZCBzZXRG
aWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBO
U1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBOU1Bh
c3RlYm9hcmQgKik7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJ
bWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcg
KnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3Ry
aW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAq
cGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKICAgICB2b2lkIHBh
c3RlYm9hcmRDaGFuZ2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZvaWQgcHJvdmlkZURh
dGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlwZSk7CiAgICAgTlNB
cnJheSAqbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJv
cERlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3Li42MjM2N2RjNWFkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00NDQ5LDcgKzQ0NDksNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBO
U1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9CiAKLXZv
aWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBp
bWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAq
dGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJp
bmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJp
bmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAq
dmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZl
ciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikK
IHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0pOwpAQCAt
NDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5k
VVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFz
dGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0
YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9
IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUw
MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3Rl
Ym9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRh
ICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcg
KzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5n
SW1tZWRpYXRlIGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IGM0ODVjN2ZjMzEzZS4uYjQ2MmQ4ZGI1Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0Uo
QVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YTgzMmU1
NWFjYmEuLmU1ZWFmNDFmMzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRh
dGlvbkJ1YmJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKaW5kZXggZGY1OWQ1NmZkNjk3Li4xOTk3ZWFlMjBhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNj
aGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwg
V2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVl
c3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBh
cmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4g
RQogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
LT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMo
KSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNE
YXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQog
CkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBs
ZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEg
PSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAg
c2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwg
ZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRh
c2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJj
ZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjkuLjc5OTQyZjliMjBhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAgY2xhc3Mg
RnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBl
IHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
ICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25U
eXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZv
aWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENv
bXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2Li43Mjc5Zjg0NGNjMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYm
KTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAgdm9pZCBj
bGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHAKaW5kZXggYzJiZjUxODNiMzBmLi41OTY2ZDU1NzRjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHZv
aWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZl
ckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxl
cikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21w
bGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNo
YXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVy
KGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
Z3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRl
cm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2Vs
ZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVh
ZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4o
dXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0
LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjViODFmYThmMjlkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAg
dm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVm
ZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5k
bGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNv
bXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3Qg
Y2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZm
ZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2Rr
X2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlf
REVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Li5hYjg3YzJhN2U4YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5o
CkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhV
bmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVj
dG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFn
KGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVC
dWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3Vy
ZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0
RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYyZWYuLmMzNjNl
OTU1ZTg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0
RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAg
ICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4
IGUwM2UwODBhZWUwOC4uMDFkODQwYTJhNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNo
YXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2
ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3Bw
CmluZGV4IGZhOTQwMjVlZDc0Ny4uYzI4ZmU2NWYwY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJv
b2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90
ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRl
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5p
dGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBh
ZGRmODMzNTNiNi4uOGM0NTRlYjgzZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAg
IGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNE
TVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1l
bnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBj
b25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9p
ZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5
OTVhLi5hMTNlNTE0NjBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0
aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3Rv
cnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNi
MTE2MWMuLjJjNzg1MWU0NDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2
YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50
U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5
c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0
YzkwZDguLmM3NDBjMDQ1MDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAt
NDksNyArNDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwg
RmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9
LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNz
aW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1Zl
Y3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4m
JiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2Ug
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5i
dWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZl
cigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtl
eXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZC4uNGU0Y2QyYzAw
NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsg
fQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NS4uNjI5MjY3OThjNWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURl
Y29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVu
dFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0
cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBs
b29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYS4uNDBkMzczNGY3YTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUo
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwg
bWltZVR5cGUpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29y
ZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlv
bnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXRE
YXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
KyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJG
cmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuY3BwCmluZGV4IDQxZDUzODgwMjNkMy4uMDgyYjMzNjZjOGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURl
Y29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNv
ZGVySWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAg
IEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29k
ZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhp
c10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VE
ZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5oCmluZGV4IGMyMzc4MmI2NTA0ZS4uMzYxOGFmZDEyMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6
QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBS
ZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2Vi
Q29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
IAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyLi5iNDA4OWZkMzU0OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3Qg
V2ViQ29yZTo6CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29ubmVj
dGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpG
ZXRjaERhdGEgeyB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbWltZVR5cGUgPSBtaW1lVHlwZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0
YS5zaXplKCkpCiAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1lQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAz
MDNhNTRmNzZmMTguLjU3NmZkMWM2ZTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBm
aW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRp
YVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6
OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNC4u
MDM1M2FhYmY3ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2
MzUyMDQzMzViLi4xODBiMTExMWVjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBE
T01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsg
fQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYs
IEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2Um
LCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0
PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA4ZDUyNGI1MjVjNmUuLjk0ZmVkMmU3ZTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDE4ICs2MiwxOSBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNp
Z25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYo
KSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3Qo
KS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRh
KSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxB
UEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRC
dWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRp
Z3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZl
ci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQ
SSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5
cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hh
YmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aAppbmRleCAzNmJkOTgwYjJmYWEuLjg2M2JkYWI2Mjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUy
NGQ4ZTFiMDE3Li5hNzg0ZWMzODhiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQog
ICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxl
UGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQy
Y2MzZWIyLi4wMjI3MGE1M2FmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgx
LDkgKzI4MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291
cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxl
LnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNv
dXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNv
dXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1Li4zMTBm
Y2E3ODc1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3Vs
ZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UpKSB7CiAg
ICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5JbnRlcmNl
cHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2Fk
ZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50
aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURl
Y2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0
b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVu
dGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVk
UmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92
ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAh
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBp
bnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAgICAg
ICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNlcHRl
ZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHBy
b2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdF
QlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0
byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byogZnJh
bWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5v
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAppbmRleCA0MmRlNDYxNDE5NzcuLmE3ZjQ1Yzg0MDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmlu
YWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAg
ICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3Qo
KSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMS4uZDQ3ZjMyYjdkNDkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTI1NTIsNyArMjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9k
ZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAog
ewogICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzLi41OGQ3MGEzOWExNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2
MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBj
bGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTEuLjdmYjIwYzU5MmRiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4
OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBw
bHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdl
YlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0
ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9t
YW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsK
ICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYg
QEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAg
ICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFz
UmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAg
ICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQog
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9p
c0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJl
YW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsK
LSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEg
KzkyNCwxMSBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9w
bHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFs
U3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpG
aW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAg
IGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
KyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVn
aW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZl
UmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBk
YXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3Ry
ZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVh
bURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVy
LmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2Vn
bWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NS4uZDE1M2EyOWNh
MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAK
QEAgLTExNSw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0
aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VE
YXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdl
dFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25z
dDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JikgY29uc3Q7CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAv
LyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUg
cGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzguLmIwNGNjY2YxMTNlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcxLDE2ICs3MSwxNSBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIp
OwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsK
LSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Piht
X3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29w
eSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VE
YXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigp
OworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSku
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIw
Niw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3Ro
aXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAg
ICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0
aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAg
ICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1
Zi4uNmIwYTQxN2NmMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00
OSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVm
PFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7
CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVy
PiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRh
PiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAg
ICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYS4uN2NmYzAzYTg1ZDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUs
IGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
ZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwg
ZGF0YS5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZC4uYjA1
ODYxODkxZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NGJkYmJjY2QzZmJjLi4xNGEwODNjYTIwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTE4OCw4ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+
c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRl
ci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjVi
YjYuLjRhOGJlZTU3ZmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAg
LTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdD
aGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAg
aWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IGUyODA5OTYzZjRmNS4uMWZmODNlMTFiYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDA3YjE2N2UwZWVlZS4uZDQxNTkwNGM3MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRp
IH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY5LDEz
ICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmco
KQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkp
OwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVy
LT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWIuLmNjM2IyNGI3MjliMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRl
IDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJh
bWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
U3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OS4uZTFlMGU2MTEyYTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VC
dWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxLi5kODhmNDRjZmNkZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNi4uYWNlMjMxNTY2
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RX
YWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0
IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0
IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQ
YWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBh
cmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRo
ZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRl
ZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywg
cmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50
KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2Rp
bmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Cisg
ICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNv
bnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQo
KSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGlu
ZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAog
ICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vi
c3RpdHV0ZURhdGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3Vy
Y2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBs
dWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAg
ICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4Nzcs
NyArMzg3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJl
ZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFG
b3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIp
CkBAIC0zODkyLDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdl
YlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwg
cmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0g
cmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBA
IC02OTc3LDcgKzY5NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0g
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxv
YWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFi
bGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lz
aW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRh
dGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggMzVjMjNmZTYwMmViLi5mNmRkZDc4ZWExOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3Mg
VGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTEzOTYsNyAr
MTM5Niw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVlc3RQYXNz
d29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKIApA
QCAtMTU5OSw3ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFt
ZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29u
c3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0g
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwor
ICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwm
IGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAv
LyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggYzk1YzM4NDYzOTIyLi44NWU2NTE4NjkyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3
LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMy
X3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxS
ZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAg
aWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+
cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEy
ODJmYzVkYzYuLmYzZWRjMjkxZmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVk
TWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhj
YWM0MTIxLi4zN2YyN2U5NTJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFt
ZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRm
MTMyLi4zNzc3ZjJhNTZiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5
NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAg
ICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxl
Y3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRs
ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5k
ZXggMWY1NTg0ZmEzODdkLi5hMjU1NjBhMTBjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29tcGxldGUo
eyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCkgZmlu
YWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBk
aWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmlu
YWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZS4uNWY2MTAyMTk2YTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVy
IGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFt
ZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAg
ICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUmVzb3VyY2UubW06CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAg
IHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAyICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSG9v
ayB1cCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZi4u
NjM1NWI2ZjkwMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVw
cmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdl
RGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWlt
ZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3Ni4uOTU5ZDc0
OGI1NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBm
aW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBm
aW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOS4uYWEyY2M5
ODE0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcg
QEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
X2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7
CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAg
ICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFB
cnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgp
KQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9h
ZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAg
fQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRl
ci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZm
ZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
dHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5p
c2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJ
bWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQog
fQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRh
dGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwLi41MjdmYTU1MjE5MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90
IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9y
VHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZl
NjJkNjYuLjM5ODY4NTlmNzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAt
MTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsK
IH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3Qg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVm
ZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxLi44M2U4NTkxNDM0NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KQEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilk
YXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBt
YWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVy
biBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVz
ZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2Li4zOGQ3ZTUzMmQ2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNX
ZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxm
IF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRC
dWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVu
dExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hp
dmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFy
Y2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTguLjI4ZDg3NTkyOWNjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDgg
KzM1NDAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0
ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRv
KiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAg
IFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgp
XV0pLmdldCgpXTsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9i
amVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdp
dGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5z
aXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3Rl
ZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOC4uYWFkY2ZiZmVhMzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2Mywy
MSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVj
b2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAg
YXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAg
IE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAg
TlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5j
b2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1
cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVU
eXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsK
ICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNw
b25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07Cisg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0
YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VV
UkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVz
b3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGlu
ZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIs
NyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2Up
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ut
PmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICszNjcsOCBAQCAt
IChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQog
ICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAotICAgIFNo
YXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRl
LT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRl
Y29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5k
YXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
ID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgcmV0dXJu
IGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/
IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEg
PyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCAwMmU5NDZiYzFmYjAuLjg5ZDM0ODg2NDYzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8g
U2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBl
cy4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICogTWVtb3J5U3RyZWFt
Lmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViRnJhbWUuaDoK
KyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0Mgor
ICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2Fk
RGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84
NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
TWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToK
KyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9y
eVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2
ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRh
dGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICog
V2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToK
KyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkgd29yayBh
Y3Jvc3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNS4uMDg5N2M3YzA1NDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhS
RVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJl
YW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAot
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1
b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJl
cHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24q
KiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZl
Li41NThlMTNjN2YxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1
OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2Vi
VVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFt
ZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVU
eXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJM
KQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RS
IGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmco
bWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBA
IC01ODUsMjEgKzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdl
YkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5
cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VD
Q0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CiAgICAgICAgIGlm
ICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewogICAgICAg
ICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7CiAgICAg
ICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5l
ZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJl
ZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHks
IHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgog
ICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAg
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVy
LmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNp
emUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRC
dWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBs
b2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwg
dXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiLi5mYTljMzgxY2M1NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAg
LTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBs
b2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBC
U1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBi
YXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29k
aW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAg
dm9pZCBzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHBhZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZs
b2F0IG1heGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAg
ICAgdm9pZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NC4uMjc0YjdkMmQ2Y2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBA
QCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVy
IG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0
eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1
ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAg
aW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OTQ4YWYxOTg3
YmYuLjFjZTdkMGE0MzczYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8g
U2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBl
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVz
dC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
clRlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RX
ZWJDb3JlU3R1YnMuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTEx
LTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGlu
Z3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5k
IGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0w
NSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZm
ZWN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4
IDg1ODNiMjlhZDk5MC4uYjg0N2QzYTgyNmIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVh
dGVUZXN0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFu
ZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJlZmFjdG9y
IEZpbGVTeXN0ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmds
ZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewog
cHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGQyM2Y3
ZTFlNzI5ZS4uZWEyYWUyYzdlOGIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAg
VEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAgICAgcmV0
dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRl
bUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxp
c3RJdGVtKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0
SXRlbSkgY29uc3QgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpbmRleCA9IG1f
aXRlbXMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoc3RkOjpnZXQ8U3Ryb2tl
UGF0aD4oZGlzcGxheUxpc3RJdGVtKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4Mi4uMTdjZTg3OTQx
YmE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDc1IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxl
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
Zk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1
ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwot
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3Rp
bmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
b3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3Vv
dXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1
ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29w
eS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZm
ZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBF
Q1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIs
IDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
KHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQor
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
IHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtd
ID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2Ri
eWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENv
bmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVu
YXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAw
LCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVj
dG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUo
dmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAg
IEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcgKzEyNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIg
ZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWdu
aXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVy
cGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAt
MTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1h
dHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMs
IGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJh
dWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMg
cmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJl
ZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAw
KSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZl
ci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgp
LCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGgg
KiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXpl
KCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShs
ZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHku
CisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwor
fQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAg
Y2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVp
bGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOwor
ICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwg
YnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIg
Y29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVu
KHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxT
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjA0
LDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltp
XSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURh
dGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewot
ICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rv
cjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAg
IGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRv
IGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRh
KDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihn
aC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAi
aCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsK
ICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tC
dWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAg
IGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVm
ZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1Rf
RVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRh
KCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVh
bFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAg
ICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVu
dHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29u
dGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250
ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAg
IH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319
KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcg
fSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAg
ICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7
Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2Mn
LCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VC
dWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7
J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsK
LSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwg
eydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVY
UEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
LCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
dG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgx
Mn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
ICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwor
ICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBF
WFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFk
KQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBs
ZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJl
YWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBF
WFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyOTAs
MTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgp
ICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZm
ZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNU
X0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDgsNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXpl
X3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJl
dHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5n
PiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Ig
PSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVh
ZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5j
bHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNo
dW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcg
Y2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwg
c2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNl
cGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZz
aGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91
dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAt
MzEzLDIyICszNTUsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5j
bHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytp
KSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZj
LCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciog
Y29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8g
Y2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sg
PSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAK
ICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0zNTgsMjIgKzQwMiwyMyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAg
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkK
IHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3Qg
cmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+
IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91
dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3Vz
IGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAg
ICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFu
Z2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1Mi4uZDAzNDFhODFkZWRh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVh
ZCgpOwogCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQog
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
clRlc3Q6OlRlYXJEb3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJE
b3duKCkKIHsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5k
ZXggNjQwMTE5YmRlNmZjLi5hMzkyYTA1MTk0NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyArMjksNyBA
QAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cAppbmRleCA3YTMyMDdmOTVjNjIuLjg1ODI4ZjAzOTIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxC
dWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNp
dHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZM
aW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1My4uYzNiNWQzZThk
N2MwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSwxOSArNDUsMjAgQEAgc3RhdGljIHZvaWQgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxO
U0RhdGEgKj4KICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0Rh
dGFBcnJheSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
QXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5p
bCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
d29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVp
bGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxs
b0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjYs
MzUgKzY3LDM1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkK
ICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRh
U2VnbWVudCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
Rm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0
aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhl
bGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0g
aGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdl
ciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIu
Z2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNF
cXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVD
VF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50
ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdo
aWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3Jl
bWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGls
ZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1l
bnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxU
b0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRp
b24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFz
dEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBh
dXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0g
MSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFs
VG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsK
ICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFi
Mi4uNWJlNjY1OTQ2MTM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0
V2ViQ29yZVN0dWJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29y
ZVN0dWJzLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKikKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQogewogICAgIHJldHVybiBu
dWxscHRyOwogfQo=
</data>
<flag name="commit-queue"
          id="471492"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447178</attachid>
            <date>2021-12-14 16:50:58 -0800</date>
            <delta_ts>2021-12-14 16:53:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233865-20211215115057.patch</filename>
            <type>text/plain</type>
            <size>18134</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNlOWEwYmQ5MGUzYWZh
Yzk3NWZmNTBkZTRmYTg0NWY4ZjZiM2YxMi4uZjE4OTA4NDNlMmI3YjMyZTdkZTczZTgwYjMwOWY5
ZDcyNWEwYmI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU291cmNlQnVmZmVyUGFy
c2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIFNoYXJlZEJ1ZmZlciBzZW50IHRvIHRoZSBTb3VyY2VCdWZmZXJQYXJz
ZXIgY2FuIG9ubHkgZXZlciBjb250YWluIG9uZQorICAgICAgICBEYXRhU2VnbWVudCBhbmQgd2Ug
aGFkIGFzc2VydGlvbnMgdG8gdGhhdCBlZmZlY3QuIFRoZSBTaGFyZWRCdWZmZXIgY2xhc3MKKyAg
ICAgICAgdHlwZSBub3cgZ3VhcmFudGVlcyBob3cgdGhlIGRhdGEgaXMgc3RydWN0dXJlZCBhbmQg
YWxsb3cgZm9yIG1vcmUgZXhwbGljaXQKKyAgICAgICAgY29kZSB3aGljaCBpbXByb3ZlcyByZWFk
YWJpbGl0eS4KKyAgICAgICAgV2UgYWxzbyBoYWQgc29tZSB3b3JrYXJvdW5kcyBmb3IgdGhlIGZh
Y3QgdGhhdCBTaGFyZWRCdWZmZXIgZGlkbid0IHVzZQorICAgICAgICB0aHJlYWQtc2FmZSByZWZj
b3VudGluZyBhbmQgaW5zdGVhZCB3ZSByZWZlcmVuY2VkIHRoZSBpbm5lciBEYXRhU2VnbWVudC4K
KyAgICAgICAgVGhpcyBjYW4gYmUgcmVtb3ZlZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLCBubyBvYnNlcnZhYmxlIGRpZmZlcmVuY2VzLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyIG5vdCBtb2RpZnkgdGhlIFNoYXJlZEJ1ZmZlciBvbmNlIHJldHVybmVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDMxMTNmMThjZTgyYTk0NDFlOWJkODg0M2ZmYjM2YTRkNGNiNDNhNDMuLjZlNTBhOGE4
NWExZDFhMzdmOTU4ODJlN2I0NzBmODhlNGRiNDY0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBTb3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMgc2hhcmVk
IGJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzODY1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FmYXJpIGludGVybWl0dGVudGx5IHN0
b3BwaW5nIHBsYXlpbmcgU3BvdGlmeSBXZWIgUGxheWVyIChjdXJyZW50VGltZSBnb2VzIGJhY2t3
YXJkcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAppbmRleCBkMzc4YWZjNmY4YTFiNTdhMDMwMmUyYzg2OGIyNDBhMjA5N2ZlNGM1
Li4yYjNjZGUzNjA4MjQ3MWMxMWM4N2ZjZjYxY2M4MWNjMzYwYzM5ZDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01
MzAsNyArNTMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQo
KQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1zZWdtZW50LXBhcnNl
ci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBwYXJzZXIgbG9vcCBhbGdvcml0aG0gaXMg
aW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5n
QXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZmZXIgaXMg
ZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4KICAgICBp
ZiAoIWFwcGVuZERhdGEgfHwgIWFwcGVuZERhdGEtPnNpemUoKSkgewogICAgICAgICBzb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmgKaW5kZXggZDRjODU3OWMwYmJkNDQzYTUxMmZhOWY2OGM0MjdlYzA0ODg1ZDBkNy4uNTIwYzA3
NzU2OTZhMmYwZTJlNzMwMDczNWU4Yzk3NzQ5NWYxYTYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0yMjIsNyArMjIyLDcg
QEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJv
dmlkZXI7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBw
ZW5kRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRhOwog
ICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAKICAgICBSZWZQdHI8VmlkZW9UcmFja0xp
c3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggZDRiYjU3OWYz
MDBjNWZlMjFlNGRlMDg0MTEwYTk0NmQ2OTRjNzNkOS4uYzE0OTRlYWIxZjI4NjRlNzczOTUyNGJl
OWRhZjU5MjY1ZWEyMGI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMTMwLDcgKzEz
MCw3IEBAIGNsYXNzIEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggZDNlMWI1ODA0ZTg1YTk5MTFjZjIwZmNlZDM0YmYyNTVh
MzE0NDM0Yi4uNTQ5OWYzN2E3ZjM2NDZiZDVmMzk1YTQ4YjA5ZDk0MTFkNGM5YjY2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKQEAgLTEzMTgsNyArMTMxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6ZGlkUmVjZWl2ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAg
ICAgdXBkYXRlSGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBhcHBlbmQoYnVmZmVyLT5leHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaAppbmRleCA2YjdkOTVlNTJiOWRmMGM4MWFmM2JlMWQ2ZDlmM2M4ZWQzOTU0MTZmLi5lZjg2
YTQ3MzY5MzcxYzgzZTg4M2IyOWJiYjZiOWFiOTZlY2E1ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00
OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVu
dW0gY2xhc3MgU291cmNlQnVmZmVyQXBwZW5kTW9kZSA6IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJp
dmF0ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
TWVkaWFTb3VyY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCBlYWQwODNhNmNjN2U3MzZiNDIxNzEwZmFjMzky
YTA3ZGZmOTJiZTU5Li43NTRiMWUyZWVjMDJkZjMzOTVlNWNkYjVjMDdmOGU4OGE5MzVjZDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBj
b25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92
ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDI0YWUw
ZTE0MDYwMTkxNDNmYWQ0ZjE1MjllNjhlZDQ5YjQxNjUzY2EuLjNhMjg2N2ExYWMyNDNiYjljOTNj
OWQ2YjcwY2E1NmIwMjk0OGZjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm8KICAgICBVTlVTRURfUEFSQU0oaGFzU2Vzc2lvblNlbWFwaG9yZSk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuY3BwCmluZGV4IGM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4
ZGJiYTAuLmY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQog
ewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBs
dWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAog
I2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQorICAgICAgICBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEy
NSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXpl
X3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJu
IFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAg
ICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAorICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZm
ZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAg
ICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVh
ZCwgdWludDgKICAgICApOwogfQogCi1SZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKK1JlZjxTaGFyZWRCdWZm
ZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZP
Uk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKICAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAgICAgIGF1
dG8gcmVhZFJlc3VsdCA9IHJlYWQoMCwgdmVjdG9yLnNpemUoKSwgdmVjdG9yLmRhdGEoKSk7CiAg
ICAgICAgICAgICBpZiAoIXJlYWRSZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICAgICAgdmVjdG9yLnNocmlu
ayhyZWFkUmVzdWx0LnZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CiAgICAgICAgIH0sCiAjZW5kaWYK
LSAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAg
ICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpOwogICAgICAgICB9CiAgICAgKTsKIH0KIAotUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVm
ZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKLSAgICAgICAg
WyZdKGNvbnN0IFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JikgLT4gUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVn
aW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsm
XShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gYnVmZmVyLnB0cigpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmlu
ZGV4IDcyOTdhNzkxNGE3OWFkZjY0MmRjNmIxNmIzNmU2MGY5Y2QwMjlmMGQuLjUyMGI1MjA3ZmMy
NzFkNzk4MTUzM2ZiMTRkMjMxNTU5NGE4ODgzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBA
IC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7
CiBjbGFzcyBNZWRpYVNhbXBsZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKIHB1
YmxpYzoKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9S
TUFUX1JFQURFUikKICAgICAgICAgU2VnbWVudChSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNl
UmVmPiYmKTsKICNlbmRpZgotICAgICAgICBTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAg
U2VnbWVudChTZWdtZW50JiYpID0gZGVmYXVsdDsKLSAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVs
bHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIu
Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBnZXRTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOwor
ICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0
IGEgU2hhcmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXRTaGFyZWRC
dWZmZXIoKSBjb25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAg
ICAgICAgICAgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4sCiAjZW5kaWYKLSAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4KICAgICAgICAgPiBtX3NlZ21lbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcAppbmRleCA5YmMxODk0MTk4NjMwYmFkOGQ3Y2JkMGIzYTViMjhlNDZl
OWVmZTI1Li5kZTZkZWJlMmJkNGNhMTM2MDQwZmMwYzNhNDVkYzRlYTM5ZjQ4OWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY1LDkgKzM2NSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtXb3VsZEJsb2NrKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90
KQorICAgIHN0YXRpYyB2b2lkIEZyZWVTaGFyZWRCdWZmZXIodm9pZCogcmVmY29uLCB2b2lkKiwg
c2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxE
YXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwog
ICAgIH0KIApAQCAtMzg4LDcgKzM4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhZHZh
bmNlVG9OZXh0U2VnbWVudCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gY3VycmVudFNlZ21lbnQuZ2V0U2hhcmVk
QnVmZmVyKCk7CiAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIHJhd0Jsb2NrQnVmZmVyID0g
bnVsbHB0cjsKICAgICAgICAgICAgIHVpbnQ2NF90IGxhc3RSZWFkID0gMDsKICAgICAgICAgICAg
IHNpemVfdCBkZXN0aW5hdGlvbk9mZnNldCA9IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwpAQCAt
NDA4LDExICs0MDgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSByZWFk
UmVzdWx0LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVy
LT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRh
aW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBh
cyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVh
ZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBD
TUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2
aW91cyBvbmU/Ci0gICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZm
ZXItPmJlZ2luKCktPnNlZ21lbnQ7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBz
dGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6
Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgc2hhcmVkQnVmZmVyLT5zaXplKCkgLSBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudCk7CiAgICAgICAgICAgICAgICAgLy8gRnJvbSBDTUJsb2NrQnVmZmVyQ3Vz
dG9tQmxvY2tTb3VyY2UgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRo
YXQgZm9yIDY0LWJpdCBhcmNoaXRlY3R1cmVzLCB0aGlzIHN0cnVjdCBjb250YWlucyBtaXNhbGln
bmVkIGZ1bmN0aW9uIHBvaW50ZXJzLgogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpbmst
dGltZSBpc3N1ZXMsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgY2xpZW50cyBmaWxsIENNQmxvY2tC
dWZmZXJDdXN0b21CbG9ja1NvdXJjZSdzIGZ1bmN0aW9uIHBvaW50ZXIgZmllbGRzCkBAIC00MjAs
MTAgKzQxNywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3Rv
bUJsb2NrU291cmNlIGFsbG9jYXRvcjsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lv
biA9IDA7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRy
OwotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5GcmVlQmxvY2sgPSBGcmVlRGF0YVNlZ21lbnQ7
Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsK
LSAgICAgICAgICAgICAgICBmaXJzdFNlZ21lbnQtPnJlZigpOwotICAgICAgICAgICAgICAgIGF1
dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIs
IHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRh
dGEoKSkpLCBmaXJzdFNlZ21lbnQtPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQsIGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVTaGFyZWRCdWZmZXI7CisgICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLnJlZkNvbiA9IHNoYXJlZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAg
ICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0g
UEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19j
YXN0PHZvaWQqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSkpLCBz
aGFyZWRCdWZmZXItPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQsIGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CiAgICAgICAgICAgICAgICAg
aWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAgICAgICAgICAgICAgICAgbGFz
dFJlYWQgPSBjYW5SZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggMDA1
YTM3Y2MyNmVjNGMwOTAxYmY0ZjM3MTIyMzg2NWRlMmQxNjZiZi4uOTY2ZmM5M2I3N2FmYWEzZTYy
MDhkN2FiYTVhZWQyYzdhOTRjNzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6On5Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQog
ewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCBlYTVmYTNlYzM2YzJiODU5ZWU1NzhjY2QwZTAz
NDhjNzNjYjg2ZDY2Li4zNjAxNzViZmJlOWQxYWY4M2VkNTc5MTM3M2I3NzVlZTc1MGFjN2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAgICB2b2lkIHNldEFjdGl2
ZShib29sKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVz
ZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgp
IGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447179</attachid>
            <date>2021-12-14 16:53:48 -0800</date>
            <delta_ts>2021-12-14 17:26:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233865-20211215115346.patch</filename>
            <type>text/plain</type>
            <size>18130</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNlOWEwYmQ5MGUzYWZh
Yzk3NWZmNTBkZTRmYTg0NWY4ZjZiM2YxMi4uOGNiNzQwMzllNTY1ZjBmNmFlMjhmYTJjZjQyNjEx
NGYyMWViZmQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU291cmNlQnVmZmVyUGFy
c2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgIFRoZSBTaGFyZWRCdWZmZXIgc2VudCB0byB0aGUgU291cmNlQnVmZmVyUGFyc2Vy
IGNhbiBvbmx5IGV2ZXIgY29udGFpbiBvbmUKKyAgICAgICAgRGF0YVNlZ21lbnQgYW5kIHdlIGhh
ZCBhc3NlcnRpb25zIHRvIHRoYXQgZWZmZWN0LiBUaGUgU2hhcmVkQnVmZmVyIGNsYXNzCisgICAg
ICAgIHR5cGUgbm93IGd1YXJhbnRlZXMgaG93IHRoZSBkYXRhIGlzIHN0cnVjdHVyZWQgYW5kIGFs
bG93IGZvciBtb3JlIGV4cGxpY2l0CisgICAgICAgIGNvZGUgd2hpY2ggaW1wcm92ZXMgcmVhZGFi
aWxpdHkuCisgICAgICAgIFdlIGFsc28gaGFkIHNvbWUgd29ya2Fyb3VuZHMgZm9yIHRoZSBmYWN0
IHRoYXQgU2hhcmVkQnVmZmVyIGRpZG4ndCB1c2UKKyAgICAgICAgdGhyZWFkLXNhZmUgcmVmY291
bnRpbmcgYW5kIGluc3RlYWQgd2UgcmVmZXJlbmNlZCB0aGUgaW5uZXIgRGF0YVNlZ21lbnQuCisg
ICAgICAgIFRoaXMgY2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBkaWZmZXJlbmNlcy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisKIDIwMjEtMTItMTQgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlciBub3QgbW9kaWZ5IHRoZSBTaGFyZWRCdWZmZXIgb25jZSByZXR1cm5lZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzMTEzZjE4Y2U4MmE5NDQxZTliZDg4NDNmZmIzNmE0ZDRjYjQzYTQzLi5lYzVjMDJkZWY2
YzBhYmIwZmEyNzQxN2VmMWRmZmMwZTFjMGVjNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIHNoYXJlZCBi
dWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
Mzg2NQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjA4NTI1MworCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKwogMjAyMS0xMi0xNCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTYWZhcmkgaW50ZXJtaXR0ZW50bHkgc3RvcHBp
bmcgcGxheWluZyBTcG90aWZ5IFdlYiBQbGF5ZXIgKGN1cnJlbnRUaW1lIGdvZXMgYmFja3dhcmRz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwCmluZGV4IGQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0YzUuLjJi
M2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTUzMCw3
ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAg
ICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxv
b3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZv
a2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBl
bmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBlbXB0
eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgogICAgIGlmICgh
YXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApp
bmRleCBkNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3Li41MjBjMDc3NTY5
NmEyZjBlMmU3MzAwNzM1ZThjOTc3NDk1ZjFhNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBw
cml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92aWRl
cjsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmRE
YXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAgICAg
VGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlzdD4g
bV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBkNGJiNTc5ZjMwMGM1
ZmUyMWU0ZGUwODQxMTBhOTQ2ZDY5NGM3M2Q5Li5jMTQ5NGVhYjFmMjg2NGU3NzM5NTI0YmU5ZGFm
NTkyNjVlYTIwYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcg
QEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCBkM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0
MzRiLi41NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQxMWQ0YzliNjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
CmluZGV4IDZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYuLmVmODZhNDcz
NjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBj
bGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRl
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IGVhZDA4M2E2Y2M3ZTczNmI0MjE3MTBmYWMzOTJhMDdk
ZmY5MmJlNTkuLjc1NGIxZTJlZWMwMmRmMzM5NWU1Y2RiNWMwN2Y4ZTg4YTkzNWNkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFE
YXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJp
ZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQg
YWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2
b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggMjRhZTBlMTQw
NjAxOTE0M2ZhZDRmMTUyOWU2OGVkNDliNDE2NTNjYS4uM2EyODY3YTFhYzI0M2JiOWM5M2M5ZDZi
NzBjYTU2YjAyOTQ4ZmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGbwogICAgIFVOVVNFRF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5jcHAKaW5kZXggYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3MTQzNjhkYmJh
MC4uZjc0N2Q4MGZiNjFkMzBmYzUwMjJlNjgyZDYzNTYxMzNkM2NhNjk3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
OjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVm
ZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9
CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6
c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2lu
Qnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5k
aWYKLSAgICAgICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CisgICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUoKTsKICAgICAgICAgfQpAQCAtMTI1LDcg
KzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBw
b3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgICAgICAgICByZXR1cm4gVW5l
eHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpGYXRhbEVycm9yIH07CiAgICAgICAgIH0s
CiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZmZlci0+
Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAgICBy
ZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1
aW50OAogICAgICk7CiB9CiAKLVJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVmPFNoYXJlZEJ1ZmZlcj4g
U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFU
X1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byBy
ZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAg
ICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJl
YWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAg
ICAgICBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
c2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0o
Y29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJldGFpblB0cjxNVFBsdWdpbkJ5
dGVTb3VyY2VSZWY+JikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNv
bnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXgg
NzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZC4uNTIwYjUyMDdmYzI3MWQ3
OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNs
YXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGlj
OgpAQCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRf
UkVBREVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+
JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOworICAgICAgICBTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdt
ZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRy
IGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAg
ICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBT
aGFyZWRCdWZmZXIuCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3
LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAg
ICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CisgICAgICAgICAgICBSZWY8U2hhcmVkQnVm
ZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IDliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZl
MjUuLmRlNmRlYmUyYmQ0Y2ExMzYwNDBmYzBjM2E0NWRjNGVhMzlmNDg5ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjUsOSArMzY1LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisg
ICAgc3RhdGljIHZvaWQgRnJlZVNoYXJlZEJ1ZmZlcih2b2lkKiByZWZjb24sIHZvaWQqLCBzaXpl
X3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFT
ZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxTaGFyZWRCdWZmZXIqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAg
fQogCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VU
b05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gY3VycmVudFNlZ21lbnQuZ2V0U2hhcmVkQnVmZmVyKCk7CisgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZm
ZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6
ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDgs
MTEgKzQwOCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IHJlYWRSZXN1
bHQudmFsdWUoKTsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbk9mZnNldCA9IDA7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChzaGFyZWRCdWZmZXItPmhh
c09uZVNlZ21lbnQoKSwgIkNhbiBvbmx5IGRlYWwgd2l0aCBzaGFyZWRCdWZmZXIgY29udGFpbmlu
ZyBhIHNpbmdsZSBEYXRhU2VnbWVudCIpOwotICAgICAgICAgICAgICAgIC8vIEEgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1
Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgog
ICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxv
Y2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3Vz
IG9uZT8KLSAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+
YmVnaW4oKS0+c2VnbWVudDsKLSAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6
bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWlu
PHNpemVfdD4obnVtVG9SZWFkLCBzaGFyZWRCdWZmZXItPnNpemUoKSAtIG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50KTsKICAgICAgICAgICAgICAgICAvLyBGcm9tIENNQmxvY2tCdWZmZXJDdXN0b21C
bG9ja1NvdXJjZSBkb2N1bWVudGF0aW9uOgogICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBm
b3IgNjQtYml0IGFyY2hpdGVjdHVyZXMsIHRoaXMgc3RydWN0IGNvbnRhaW5zIG1pc2FsaWduZWQg
ZnVuY3Rpb24gcG9pbnRlcnMuCiAgICAgICAgICAgICAgICAgLy8gVG8gYXZvaWQgbGluay10aW1l
IGlzc3VlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBjbGllbnRzIGZpbGwgQ01CbG9ja0J1ZmZl
ckN1c3RvbUJsb2NrU291cmNlJ3MgZnVuY3Rpb24gcG9pbnRlciBmaWVsZHMKQEAgLTQyMCwxMCAr
NDE3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxv
Y2tTb3VyY2UgYWxsb2NhdG9yOwogICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0g
MDsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgYWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVEYXRhU2VnbWVudDsKLSAg
ICAgICAgICAgICAgICBhbGxvY2F0b3IucmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOwotICAg
ICAgICAgICAgICAgIGZpcnN0U2VnbWVudC0+cmVmKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBl
cnIgPSBQQUw6OkNNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3Rh
dGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgp
KSksIGZpcnN0U2VnbWVudC0+c2l6ZSgpLCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudCwgY2FuUmVhZCwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAg
ICAgICBhbGxvY2F0b3IuRnJlZUJsb2NrID0gRnJlZVNoYXJlZEJ1ZmZlcjsKKyAgICAgICAgICAg
ICAgICBhbGxvY2F0b3IucmVmQ29uID0gc2hhcmVkQnVmZmVyLmdldCgpOworICAgICAgICAgICAg
ICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6
OkNNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8
dm9pZCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZEJ1ZmZlci0+ZGF0YSgpKSksIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpLCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudCwgY2FuUmVhZCwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKICAgICAgICAgICAgICAgICBpZiAo
ZXJyICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKICAgICAgICAgICAgICAgICBsYXN0UmVh
ZCA9IGNhblJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAwMDVhMzdj
YzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1ZGUyZDE2NmJmLi45NjZmYzkzYjc3YWZhYTNlNjIwOGQ3
YWJhNWFlZDJjN2E5NGM3NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAg
ICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3
M2NiODZkNjYuLjM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJv
b2wpIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBh
cnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmlu
YWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>