<?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>208859</bug_id>
          
          <creation_ts>2020-03-10 06:02:16 -0700</creation_ts>
          <short_desc>Accurate style invalidation for user action pseudo classes</short_desc>
          <delta_ts>2020-03-12 12:32:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=209009</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>emilio</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1628204</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-10 06:02:16 -0700</bug_when>
    <thetext>We invalidate too much for :hover, :focus and :active.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628208</commentid>
    <comment_count>1</comment_count>
      <attachid>393139</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-10 06:04:36 -0700</bug_when>
    <thetext>Created attachment 393139
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628239</commentid>
    <comment_count>2</comment_count>
      <attachid>393148</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-10 07:42:36 -0700</bug_when>
    <thetext>Created attachment 393148
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628242</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-10 07:43:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/55196888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628245</commentid>
    <comment_count>4</comment_count>
      <attachid>393150</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-10 07:49:11 -0700</bug_when>
    <thetext>Created attachment 393150
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628608</commentid>
    <comment_count>5</comment_count>
      <attachid>393227</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-11 05:54:19 -0700</bug_when>
    <thetext>Created attachment 393227
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628771</commentid>
    <comment_count>6</comment_count>
      <attachid>393270</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-11 11:34:10 -0700</bug_when>
    <thetext>Created attachment 393270
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628780</commentid>
    <comment_count>7</comment_count>
      <attachid>393271</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-11 12:08:52 -0700</bug_when>
    <thetext>Created attachment 393271
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629128</commentid>
    <comment_count>8</comment_count>
      <attachid>393355</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-12 03:41:41 -0700</bug_when>
    <thetext>Created attachment 393355
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629138</commentid>
    <comment_count>9</comment_count>
      <attachid>393361</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-12 05:44:03 -0700</bug_when>
    <thetext>Created attachment 393361
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629150</commentid>
    <comment_count>10</comment_count>
      <attachid>393361</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-12 06:30:15 -0700</bug_when>
    <thetext>Comment on attachment 393361
patch

Clearing flags on attachment: 393361

Committed r258321: &lt;https://trac.webkit.org/changeset/258321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629151</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-12 06:30:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393139</attachid>
            <date>2020-03-10 06:04:36 -0700</date>
            <delta_ts>2020-03-10 07:42:36 -0700</delta_ts>
            <desc>wip</desc>
            <filename>pseudo-class-invalidation.patch</filename>
            <type>text/plain</type>
            <size>20094</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggMWI4YjgyM2NjN2YuLjA0ZTJmMDNhYzYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjM3Miw2ICsyMzcyLDcgQEAgc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
IHN0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAKIHN0eWxlL1BhZ2VSdWxlQ29sbGVj
dG9yLmNwcAogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9SdWxlRGF0YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJl
LmNwcAogc3R5bGUvUnVsZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MjU2NGEzN2VjYy4uNjhlNzRjNTRlNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ4ODcsNiArNDg4Nyw3IEBACiAJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJn
aW5UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZFN0FBMjYyMUMzN0I2MzAwMjk2RENEIC8qIE1hcmdpblR5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkz
MTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlu
bGluZUNvbnRlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2
NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKKwkJRTQ1QTZDNzcyNDE3QkE1OTAw
NkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUg
LyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0
OTI2QzAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3
IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEz
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0
ZXIuaCAqLzsgfTsKIAkJRTQ2MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2
MDVGRUEyMTY2NDgwODAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTI5MCw2ICsxNTI5MSw4
IEBACiAJCUU0NTM5MDM0MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsVmlld0lPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdp
ZGdldElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdl
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAw
MzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDVBNkM3MzI0MTdCQTRDMDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QTgyMzc0OTI2
QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QUIyMzc0OTI3QjAwNERGQzA3IC8qIE1hdGNoZWREZWNs
YXJhdGlvbnNDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25z
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVCQTZCMjIzNzYyMjdF
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZUFkanVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI3MjYwLDYgKzI3MjYzLDggQEAKIAkJCQlGQkRCNjFBMDE2RDYwMzdFMDBCQjMzOTQgLyog
UGFnZVJ1bGVDb2xsZWN0b3IuaCAqLywKIAkJCQlFNEFCQUJFNTIzNjFBMzQyMDBGQTQzNDUgLyog
UHJvcGVydHlDYXNjYWRlLmNwcCAqLywKIAkJCQlFNEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyog
UHJvcGVydHlDYXNjYWRlLmggKi8sCisJCQkJRTQ1QTZDNzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNDVBNkM3NjI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNDg2
M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEuY3BwICovLAogCQkJCUU0ODYzQ0ZEMjM4
NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovLAogCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMy
RTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCkBAIC0zMTE1OCw2ICszMTE2Myw3IEBACiAJCQkJ
QjJGQTNENTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNENTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHQ2xpcFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDVBNkM3NzI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2
MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzMyMmQzYTZjMjEuLmI4NTE2OGZhMDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9p
bnRlckxvY2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC03MTAsMjUg
KzcxMSwxMiBAQCB2b2lkIEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogICAgIGlmIChm
bGFnID09IGhvdmVyZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQoKS51c2Vy
QWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0aGlzLCBmbGFnKTsKLQotICAgIGF1dG8qIHN0
eWxlID0gcmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwotICAgIGlmIChzdHlsZSAmJiAo
c3R5bGUtPmFmZmVjdGVkQnlIb3ZlcigpIHx8IGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkpKQot
ICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0KLSAgICBpZiAoIXJlbmRlcmVy
KCkpIHsKLSAgICAgICAgLy8gV2hlbiBzZXR0aW5nIGhvdmVyIHRvIGZhbHNlLCB0aGUgc3R5bGUg
bmVlZHMgdG8gYmUgcmVjYWxjJ2QgZXZlbiB3aGVuCi0gICAgICAgIC8vIHRoZXJlJ3Mgbm8gcmVu
ZGVyZXIgKGltYWdpbmUgc2V0dGluZyBkaXNwbGF5Om5vbmUgaW4gdGhlIDpob3ZlciBjbGFzcywK
LSAgICAgICAgLy8gaWYgYSBuaWwgcmVuZGVyZXIgd291bGQgcHJldmVudCB0aGlzIGVsZW1lbnQg
ZnJvbSByZWNhbGN1bGF0aW5nIGl0cwotICAgICAgICAvLyBzdHlsZSwgaXQgd291bGQgbmV2ZXIg
Z28gYmFjayB0byBpdHMgbm9ybWFsIHN0eWxlIGFuZCByZW1haW4KLSAgICAgICAgLy8gc3R1Y2sg
aW4gaXRzIGhvdmVyZWQgc3R5bGUpLgotICAgICAgICBpZiAoIWZsYWcgJiYgIXN0eWxlKQotICAg
ICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotCi0gICAgICAgIHJldHVybjsK
KyAgICB7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHls
ZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIpOworICAg
ICAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVyZWQoKnRoaXMsIGZs
YWcpOwogICAgIH0KIAotICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQorICAgIGlmIChh
dXRvKiBzdHlsZSA9IHJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKTsgc3R5bGUgJiYgc3R5
bGUtPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNo
YW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCBjMzA0
Y2YxY2UxNi4uMzkzZGEwYzYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtMTI1LDEwICsxMjUsMTAgQEAgcHVibGljIDoKIAogICAg
IH5SZW5kZXJUcmVlTmVlZHNMYXlvdXRDaGVja2VyKCkKICAgICB7Ci0gICAgICAgIGF1dG8gcmVw
b3J0TmVlZHNMYXlvdXRFcnJvciA9IFtdIChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSB7
CisgICAgICAgIGF1dG8gcmVwb3J0TmVlZHNMYXlvdXRFcnJvciA9IFtdIChjb25zdCBSZW5kZXJP
YmplY3QmKSB7CiAgICAgICAgICAgICBXVEZSZXBvcnRFcnJvcihfX0ZJTEVfXywgX19MSU5FX18s
IFdURl9QUkVUVFlfRlVOQ1RJT04sICJwb3N0LWxheW91dDogZGlydHkgcmVuZGVyZXIocykiKTsK
LSAgICAgICAgICAgIHJlbmRlcmVyLnNob3dSZW5kZXJUcmVlRm9yVGhpcygpOwotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisvLyAgICAgICAgICAgIHJlbmRlcmVyLnNob3dSZW5k
ZXJUcmVlRm9yVGhpcygpOworLy8gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfTsKIAogICAgICAgICBpZiAobV9sYXlvdXRSb290Lm5lZWRzTGF5b3V0KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQ4YTMzMGU1
MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5o
IgorCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJTdHlsZUlu
dmFsaWRhdGlvbkZ1bmN0aW9ucy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
U3R5bGUgeworCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52
YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MpCit7Cisg
ICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOworICAgIGJvb2wgbWF5QWZm
ZWN0U3R5bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKKworICAgIHRyYXZlcnNlUnVsZUZlYXR1cmVz
KG1fZWxlbWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMsIGJvb2wgbWF5
QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJlZSAmJiBm
ZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzLmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAg
ICAgIG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGZlYXR1
cmVzLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAg
ICAgICAgICAgIHNob3VsZEludmFsaWRhdGVDdXJyZW50ID0gdHJ1ZTsKKyAgICB9KTsKKworICAg
IGlmIChtYXlBZmZlY3RTdHlsZUluU2hhZG93VHJlZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGRvIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gZm9yIHNoYWRvdyB0cmVlLgorICAg
ICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIH0KKworICAg
IGlmIChzaG91bGRJbnZhbGlkYXRlQ3VycmVudCkKKyAgICAgICAgbV9lbGVtZW50LmludmFsaWRh
dGVTdHlsZSgpOworCisgICAgYXV0byYgcnVsZVNldHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZl
cigpLnJ1bGVTZXRzKCk7CisgICAgaWYgKGF1dG8qIGludmFsaWRhdGlvblJ1bGVTZXRzID0gcnVs
ZVNldHMucHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhwc2V1ZG9DbGFzcykpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVT
ZXRzKQorICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMo
bV9tYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgfQorfQor
Cit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRo
UnVsZVNldHMoKQoreworICAgIEludmFsaWRhdG9yOjppbnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVu
dFJ1bGVTZXRzKG1fZWxlbWVudCwgbV9tYXRjaEVsZW1lbnRSdWxlU2V0cyk7Cit9CisKK30KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYjQ3OTJmYzUx
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisj
aW5jbHVkZSAiU3R5bGVJbnZhbGlkYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIFBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHsKK3B1YmxpYzoKKyAgICBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7Cisg
ICAgflBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBjb21wdXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAg
IHZvaWQgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisKKyAgICBjb25zdCBib29sIG1f
aXNFbmFibGVkOworICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKKworICAgIEludmFsaWRhdG9yOjpN
YXRjaEVsZW1lbnRSdWxlU2V0cyBtX21hdGNoRWxlbWVudFJ1bGVTZXRzOworfTsKKworaW5saW5l
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbihFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVk
b0NsYXNzVHlwZSkKKyAgICA6IG1faXNFbmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRh
dGlvbigpKQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisKK3sKKyAgICBpZiAoIW1faXNFbmFi
bGVkKQorICAgICAgICByZXR1cm47CisgICAgY29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFz
c1R5cGUpOworICAgIGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworfQorCitpbmxpbmUg
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246On5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbigpCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlu
dmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVGZWF0dXJlLmNwcAppbmRleCA3ZGZmZGFlYzBiNi4uZTNmZWM1Y2Q1NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKQEAgLTE1Myw3ICsxNTMsOCBAQCB2b2lkIFJ1bGVG
ZWF0dXJlU2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTZWxlY3Rv
ckZlYXR1cmVzJiBzZQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9y
LT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykKKyAgICAgICAgICAgIHNlbGVj
dG9yRmVhdHVyZXMucHNldWRvQ2xhc3Nlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2VsZWN0b3It
PnBzZXVkb0NsYXNzVHlwZSgpLCBtYXRjaEVsZW1lbnQpKTsKIAogICAgICAgICBpZiAoIXNlbGVj
dG9yRmVhdHVyZXMuaGFzU2libGluZ1NlbGVjdG9yICYmIHNlbGVjdG9yLT5pc1NpYmxpbmdTZWxl
Y3RvcigpKQogICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3Ig
PSB0cnVlOwpAQCAtMTk5LDYgKzIwMCwxMyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0
RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAgICAgICBpZiAobWF0Y2hFbGVt
ZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3Rp
bmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKSk7CiAgICAgfQorICAgIGZvciAoYXV0byYga2V5QW5kTWF0Y2ggOiBzZWxl
Y3RvckZlYXR1cmVzLnBzZXVkb0NsYXNzZXMpIHsKKyAgICAgICAgcHNldWRvQ2xhc3NSdWxlcy5l
bnN1cmUoa2V5QW5kTWF0Y2guZmlyc3QsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kKHsgcnVsZURhdGEsIGtleUFuZE1hdGNoLnNlY29uZCB9KTsKKyAgICAgICAgaWYgKGtl
eUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCisgICAgICAgICAgICBwc2V1
ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQoa2V5QW5kTWF0Y2guZmlyc3QpOworICAgIH0KIH0K
IAogdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikK
QEAgLTIyNCw2ICsyMzIsMTMgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVG
ZWF0dXJlU2V0JiBvdGhlcikKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRk
KG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNB
ZmZlY3RpbmdIb3N0LmVuZCgpKTsKIAorICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3Ro
ZXIucHNldWRvQ2xhc3NSdWxlcykgeworICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShr
ZXlWYWx1ZVBhaXIua2V5LCBbXSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZl
Y3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKKyAgICB9CisgICAgcHNldWRvQ2xhc3Nlc0FmZmVj
dGluZ0hvc3QuYWRkKG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90
aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKKwogICAgIHVzZXNGaXJzdExp
bmVSdWxlcyA9IHVzZXNGaXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7
CiAgICAgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB8fCBvdGhl
ci51c2VzRmlyc3RMZXR0ZXJSdWxlczsKIH0KQEAgLTI0OCw2ICsyNjMsOCBAQCB2b2lkIFJ1bGVG
ZWF0dXJlU2V0OjpjbGVhcigpCiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKICAg
ICBhdHRyaWJ1dGVSdWxlcy5jbGVhcigpOwogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmNs
ZWFyKCk7CisgICAgcHNldWRvQ2xhc3NSdWxlcy5jbGVhcigpOworICAgIHBzZXVkb0NsYXNzZXNB
ZmZlY3RpbmdIb3N0LmNsZWFyKCk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gZmFsc2U7CiAg
ICAgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSBmYWxzZTsKIH0KQEAgLTI2MCw2ICsyNzcsOCBAQCB2
b2lkIFJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtU
b0ZpdCgpOwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBhdHRyaWJ1dGVSdWxlcy52YWx1ZXMoKSkK
ICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CisgICAgZm9yIChhdXRvJiBydWxlcyA6IHBz
ZXVkb0NsYXNzUnVsZXMudmFsdWVzKCkpCisgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKaW5k
ZXggY2M2N2YzZmIwMTIuLjQ0MThmZjZhYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmgKQEAgLTc1LDggKzc1LDEwIEBAIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAgICAgCiAgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+
IGNsYXNzUnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1bGVz
OworICAgIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxSdWxlRmVhdHVyZT4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVsZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBj
bGFzc2VzQWZmZWN0aW5nSG9zdDsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZXNB
ZmZlY3RpbmdIb3N0OworICAgIEhhc2hTZXQ8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwg
V1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc2Vz
QWZmZWN0aW5nSG9zdDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsK
ICAgICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKQEAgLTkwLDYgKzkyLDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIE1hdGNo
RWxlbWVudD4sIDMyPiBjbGFzc2VzOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IENT
U1NlbGVjdG9yKiwgTWF0Y2hFbGVtZW50PiwgMzI+IGF0dHJpYnV0ZXM7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgTWF0Y2hFbGVtZW50Piwg
MzI+IHBzZXVkb0NsYXNzZXM7CiAgICAgfTsKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZl
YXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYs
IE1hdGNoRWxlbWVudCA9IE1hdGNoRWxlbWVudDo6U3ViamVjdCk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggZTMxM2QwMjI5YTYuLmRiM2Iy
YmFhYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNl
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAK
QEAgLTE5NiwxMyArMTk2LDE1IEBAIHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVz
KCkgY29uc3QKIAogICAgIG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOwogICAg
IG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKKyAgICBtX3BzZXVkb0Ns
YXNzSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKKwogICAgIG1fY2FjaGVkSGFzQ29tcGxl
eFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlID0gV1RGOjpudWxsb3B0OwogCiAgICAgbV9mZWF0
dXJlcy5zaHJpbmtUb0ZpdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSdWxlRmVhdHVyZVR5
cGU+Ci1zdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRp
b25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBrZXksIEhhc2hNYXA8QXRvbVN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+JiBydWxlU2V0TWFwLCBj
b25zdCBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1
cmVUeXBlPj4+JiBydWxlRmVhdHVyZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBl
bmFtZSBSdWxlRmVhdHVyZVR5cGUsIHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIEhhc2hUcmFpdHM+
CitzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25S
dWxlU2V0cyhjb25zdCBLZXlUeXBlJiBrZXksIEhhc2hNYXA8S2V5VHlwZSwgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxl
U2V0TWFwLCBjb25zdCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVs
ZUZlYXR1cmVUeXBlPj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlRmVhdHVyZXMpCiB7CiAgICAg
cmV0dXJuIHJ1bGVTZXRNYXAuZW5zdXJlKGtleSwgWyZdICgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+IHsKICAgICAgICAgYXV0byogZmVhdHVyZXMgPSBy
dWxlRmVhdHVyZXMuZ2V0KGtleSk7CkBAIC0yNDEsNiArMjQzLDExIEBAIGNvbnN0IFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6YXR0cmlidXRlSW52YWxpZGF0aW9u
UnVsZVNldHMoCiAgICAgcmV0dXJuIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGF0dHJpYnV0
ZU5hbWUsIG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMsIG1fZmVhdHVyZXMuYXR0cmli
dXRlUnVsZXMpOwogfQogCitjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIFNjb3Bl
UnVsZVNldHM6OnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcykgY29uc3QKK3sKKyAgICByZXR1cm4gZW5zdXJlSW52
YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3MsIG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25S
dWxlU2V0cywgbV9mZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzKTsKK30KKwogYm9vbCBTY29wZVJ1
bGVTZXRzOjpoYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewog
ICAgIGF1dG8gY29tcHV0ZSA9IFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlUnVsZVNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVS
dWxlU2V0cy5oCmluZGV4IDhjY2NmYWFhZGQ0Li5lNGUzZjVjNjJlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgog
CiAgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBjbGFzc0ludmFsaWRhdGlv
blJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSkgY29uc3Q7CiAgICAgY29uc3Qg
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBhdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0
cyhjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKKyAgICBjb25zdCBWZWN0
b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIHBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMo
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSkgY29uc3Q7CiAKICAgICBib29sIGhhc0NvbXBs
ZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC0xMDEsNiArMTAyLDcg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmli
dXRlUnVsZVNldDsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJbnZhbGlkYXRpb25SdWxl
U2V0czsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNl
dHM7CisgICAgbXV0YWJsZSBIYXNoTWFwPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+LCBXVEY6OkludEhhc2g8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25S
dWxlU2V0czsKIAogICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9jYWNoZWRIYXNDb21wbGV4
U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393148</attachid>
            <date>2020-03-10 07:42:36 -0700</date>
            <delta_ts>2020-03-10 07:49:11 -0700</delta_ts>
            <desc>wip</desc>
            <filename>pseudo-class-invalidation-2.patch</filename>
            <type>text/plain</type>
            <size>21963</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggMWI4YjgyM2NjN2YuLjA0ZTJmMDNhYzYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjM3Miw2ICsyMzcyLDcgQEAgc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
IHN0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAKIHN0eWxlL1BhZ2VSdWxlQ29sbGVj
dG9yLmNwcAogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9SdWxlRGF0YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJl
LmNwcAogc3R5bGUvUnVsZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjYzNTE5ZDYzNC4uZDRiMDI0M2Y3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ4ODcsNiArNDg4Nyw3IEBACiAJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJn
aW5UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZFN0FBMjYyMUMzN0I2MzAwMjk2RENEIC8qIE1hcmdpblR5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkz
MTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlu
bGluZUNvbnRlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2
NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKKwkJRTQ1QTZDNzcyNDE3QkE1OTAw
NkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUg
LyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0
OTI2QzAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3
IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEz
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0
ZXIuaCAqLzsgfTsKIAkJRTQ2MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2
MDVGRUEyMTY2NDgwODAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTI5MCw2ICsxNTI5MSw4
IEBACiAJCUU0NTM5MDM0MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsVmlld0lPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdp
ZGdldElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdl
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAw
MzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDVBNkM3MzI0MTdCQTRDMDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QTgyMzc0OTI2
QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QUIyMzc0OTI3QjAwNERGQzA3IC8qIE1hdGNoZWREZWNs
YXJhdGlvbnNDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25z
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVCQTZCMjIzNzYyMjdF
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZUFkanVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI3MjYwLDYgKzI3MjYzLDggQEAKIAkJCQlGQkRCNjFBMDE2RDYwMzdFMDBCQjMzOTQgLyog
UGFnZVJ1bGVDb2xsZWN0b3IuaCAqLywKIAkJCQlFNEFCQUJFNTIzNjFBMzQyMDBGQTQzNDUgLyog
UHJvcGVydHlDYXNjYWRlLmNwcCAqLywKIAkJCQlFNEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyog
UHJvcGVydHlDYXNjYWRlLmggKi8sCisJCQkJRTQ1QTZDNzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNDVBNkM3NjI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNDg2
M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEuY3BwICovLAogCQkJCUU0ODYzQ0ZEMjM4
NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovLAogCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMy
RTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCkBAIC0zMTE1OCw2ICszMTE2Myw3IEBACiAJCQkJ
QjJGQTNENTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNENTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHQ2xpcFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDVBNkM3NzI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2
MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjVmYzkxMDA5MmEuLjE0MTUxOWI2MmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9p
bnRlckxvY2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC02MzEsMTcg
KzYzMiwxNSBAQCB2b2lkIEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2Up
CiB7CiAgICAgaWYgKGZsYWcgPT0gYWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRv
Y3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QWN0aXZlKCp0aGlzLCBmbGFnKTsKLQot
ICAgIGF1dG8qIHJlbmRlclN0eWxlID0gcmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwot
ICAgIGJvb2wgcmVhY3RzVG9QcmVzcyA9IChyZW5kZXJTdHlsZSAmJiByZW5kZXJTdHlsZS0+YWZm
ZWN0ZWRCeUFjdGl2ZSgpKSB8fCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLSAgICBpZiAocmVh
Y3RzVG9QcmVzcykKLSAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIHsK
KyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOworICAgICAgICBk
b2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7Cisg
ICAgfQogCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29s
IHJlYWN0c1RvUHJlc3MgPSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNB
cHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVy
KCksIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3Mg
PSB0cnVlOwogCkBAIC02NTEsNiArNjUwLDkgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9v
bCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpLnN1cHBvcnRzSW1tZWRpYXRlSW52YWxpZGF0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChyZW5kZXJTdHlsZSgpLmFmZmVjdGVkQnlBY3RpdmUoKSkKKyAgICAgICAg
cmVhY3RzVG9QcmVzcyA9IHRydWU7CisKICAgICBpZiAocmVhY3RzVG9QcmVzcyAmJiBwYXVzZSkg
ewogICAgICAgICAvLyBUaGUgZGVsYXkgaGVyZSBpcyBzdWJ0bGUuIEl0IHJlbGllcyBvbiBhbiBh
c3N1bXB0aW9uLCBuYW1lbHkgdGhhdCB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMKICAgICAg
ICAgLy8gdG8gcmVwYWludCB0aGUgImRvd24iIHN0YXRlIG9mIHRoZSBjb250cm9sIGlzIGFib3V0
IHRoZSBzYW1lIHRpbWUgYXMgaXQgd291bGQgdGFrZSB0byByZXBhaW50IHRoZQpAQCAtNjgwLDkg
KzY4MiwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldEZvY3VzKGJvb2wgZmxhZykKIHsKICAgICBpZiAo
ZmxhZyA9PSBmb2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50KCkudXNl
ckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7Ci0gICAgaW52YWxpZGF0
ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NGb2N1cyk7CisgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCku
c2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7CisgICAgfQogCiAgICAgLy8gU2hhZG93IGhvc3Qgd2l0
aCBhIHNsb3QgdGhhdCBjb250YWluIGZvY3VzZWQgZWxlbWVudCBpcyBub3QgY29uc2lkZXJlZCBm
b2N1c2VkLgogICAgIGZvciAoYXV0byogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCk7IHJv
b3Q7IHJvb3QgPSByb290LT5ob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKQEAgLTY5
OSwyNSArNzAyLDEyIEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcpCiAgICAg
aWYgKGZsYWcgPT0gaG92ZXJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudCgp
LnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVyZWQoKnRoaXMsIGZsYWcpOwotCi0gICAgYXV0
byogc3R5bGUgPSByZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCk7Ci0gICAgaWYgKHN0eWxl
ICYmIChzdHlsZS0+YWZmZWN0ZWRCeUhvdmVyKCkgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIo
KSkpCi0gICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLQotICAgIGlmICghcmVu
ZGVyZXIoKSkgewotICAgICAgICAvLyBXaGVuIHNldHRpbmcgaG92ZXIgdG8gZmFsc2UsIHRoZSBz
dHlsZSBuZWVkcyB0byBiZSByZWNhbGMnZCBldmVuIHdoZW4KLSAgICAgICAgLy8gdGhlcmUncyBu
byByZW5kZXJlciAoaW1hZ2luZSBzZXR0aW5nIGRpc3BsYXk6bm9uZSBpbiB0aGUgOmhvdmVyIGNs
YXNzLAotICAgICAgICAvLyBpZiBhIG5pbCByZW5kZXJlciB3b3VsZCBwcmV2ZW50IHRoaXMgZWxl
bWVudCBmcm9tIHJlY2FsY3VsYXRpbmcgaXRzCi0gICAgICAgIC8vIHN0eWxlLCBpdCB3b3VsZCBu
ZXZlciBnbyBiYWNrIHRvIGl0cyBub3JtYWwgc3R5bGUgYW5kIHJlbWFpbgotICAgICAgICAvLyBz
dHVjayBpbiBpdHMgaG92ZXJlZCBzdHlsZSkuCi0gICAgICAgIGlmICghZmxhZyAmJiAhc3R5bGUp
Ci0gICAgICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0KLSAgICAgICAgcmV0
dXJuOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
IHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zlcik7
CisgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0SG92ZXJlZCgqdGhp
cywgZmxhZyk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCisgICAg
aWYgKGF1dG8qIHN0eWxlID0gcmVuZGVyU3R5bGUoKTsgc3R5bGUgJiYgc3R5bGUtPmhhc0FwcGVh
cmFuY2UoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRl
cmVyKCksIENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCBjMzA0Y2YxY2UxNi4uMzkz
ZGEwYzYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250
ZXh0LmNwcApAQCAtMTI1LDEwICsxMjUsMTAgQEAgcHVibGljIDoKIAogICAgIH5SZW5kZXJUcmVl
TmVlZHNMYXlvdXRDaGVja2VyKCkKICAgICB7Ci0gICAgICAgIGF1dG8gcmVwb3J0TmVlZHNMYXlv
dXRFcnJvciA9IFtdIChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSB7CisgICAgICAgIGF1
dG8gcmVwb3J0TmVlZHNMYXlvdXRFcnJvciA9IFtdIChjb25zdCBSZW5kZXJPYmplY3QmKSB7CiAg
ICAgICAgICAgICBXVEZSZXBvcnRFcnJvcihfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlf
RlVOQ1RJT04sICJwb3N0LWxheW91dDogZGlydHkgcmVuZGVyZXIocykiKTsKLSAgICAgICAgICAg
IHJlbmRlcmVyLnNob3dSZW5kZXJUcmVlRm9yVGhpcygpOwotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisvLyAgICAgICAgICAgIHJlbmRlcmVyLnNob3dSZW5kZXJUcmVlRm9yVGhp
cygpOworLy8gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfTsKIAog
ICAgICAgICBpZiAobV9sYXlvdXRSb290Lm5lZWRzTGF5b3V0KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQ4YTMzMGU1MDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVk
ZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkZ1
bmN0aW9ucy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgeworCit2
b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MpCit7CisgICAgYm9vbCBzaG91
bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOworICAgIGJvb2wgbWF5QWZmZWN0U3R5bGVJblNo
YWRvd1RyZWUgPSBmYWxzZTsKKworICAgIHRyYXZlcnNlUnVsZUZlYXR1cmVzKG1fZWxlbWVudCwg
WyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMsIGJvb2wgbWF5QWZmZWN0U2hhZG93
VHJlZSkgeworICAgICAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJlZSAmJiBmZWF0dXJlcy5wc2V1
ZG9DbGFzc1J1bGVzLmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAgICAgIG1heUFmZmVj
dFN0eWxlSW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGZlYXR1cmVzLnBzZXVkb0Ns
YXNzZXNBZmZlY3RpbmdIb3N0LmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAgICAgIHNo
b3VsZEludmFsaWRhdGVDdXJyZW50ID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIGlmIChtYXlBZmZl
Y3RTdHlsZUluU2hhZG93VHJlZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGZp
bmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gZm9yIHNoYWRvdyB0cmVlLgorICAgICAgICBtX2VsZW1l
bnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIH0KKworICAgIGlmIChzaG91bGRJ
bnZhbGlkYXRlQ3VycmVudCkKKyAgICAgICAgbV9lbGVtZW50LmludmFsaWRhdGVTdHlsZSgpOwor
CisgICAgYXV0byYgcnVsZVNldHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRz
KCk7CisgICAgaWYgKGF1dG8qIGludmFsaWRhdGlvblJ1bGVTZXRzID0gcnVsZVNldHMucHNldWRv
Q2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhwc2V1ZG9DbGFzcykpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVTZXRzKQorICAgICAg
ICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9tYXRjaEVsZW1l
bnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgfQorfQorCit2b2lkIFBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKQor
eworICAgIEludmFsaWRhdG9yOjppbnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKG1f
ZWxlbWVudCwgbV9tYXRjaEVsZW1lbnRSdWxlU2V0cyk7Cit9CisKK30KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYjQ3OTJmYzUxNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiU3R5
bGVJbnZhbGlkYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIFBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uIHsKK3B1YmxpYzoKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CisgICAgflBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb21wdXRlSW52
YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIHZvaWQgaW52YWxp
ZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisKKyAgICBjb25zdCBib29sIG1faXNFbmFibGVkOwor
ICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKKworICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRS
dWxlU2V0cyBtX21hdGNoRWxlbWVudFJ1bGVTZXRzOworfTsKKworaW5saW5lIFBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50
JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzVHlwZSkK
KyAgICA6IG1faXNFbmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigpKQorICAg
ICwgbV9lbGVtZW50KGVsZW1lbnQpCisKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisgICAgY29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFzc1R5cGUpOworICAg
IGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworfQorCitpbmxpbmUgUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb246On5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigpCit7Cisg
ICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGludmFsaWRhdGVTdHls
ZVdpdGhSdWxlU2V0cygpOworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmNwcAppbmRleCA3ZGZmZGFlYzBiNi4uZTNmZWM1Y2Q1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRmVhdHVyZS5jcHAKQEAgLTE1Myw3ICsxNTMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpy
ZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTZWxlY3RvckZlYXR1cmVzJiBz
ZQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykKKyAgICAgICAgICAgIHNlbGVjdG9yRmVhdHVyZXMu
cHNldWRvQ2xhc3Nlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2VsZWN0b3ItPnBzZXVkb0NsYXNz
VHlwZSgpLCBtYXRjaEVsZW1lbnQpKTsKIAogICAgICAgICBpZiAoIXNlbGVjdG9yRmVhdHVyZXMu
aGFzU2libGluZ1NlbGVjdG9yICYmIHNlbGVjdG9yLT5pc1NpYmxpbmdTZWxlY3RvcigpKQogICAg
ICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IgPSB0cnVlOwpAQCAt
MTk5LDYgKzIwMCwxMyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29u
c3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNo
RWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChz
ZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KSk7CiAgICAgfQorICAgIGZvciAoYXV0byYga2V5QW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVz
LnBzZXVkb0NsYXNzZXMpIHsKKyAgICAgICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUoa2V5QW5k
TWF0Y2guZmlyc3QsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
dWxlRmVhdHVyZT4+KCk7CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKHsgcnVs
ZURhdGEsIGtleUFuZE1hdGNoLnNlY29uZCB9KTsKKyAgICAgICAgaWYgKGtleUFuZE1hdGNoLnNl
Y29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCisgICAgICAgICAgICBwc2V1ZG9DbGFzc2VzQWZm
ZWN0aW5nSG9zdC5hZGQoa2V5QW5kTWF0Y2guZmlyc3QpOworICAgIH0KIH0KIAogdm9pZCBSdWxl
RmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKQEAgLTIyNCw2ICsy
MzIsMTMgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBv
dGhlcikKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLmF0dHJp
YnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0
LmVuZCgpKTsKIAorICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIucHNldWRvQ2xh
c3NSdWxlcykgeworICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIu
a2V5LCBbXSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1
cmU+PigpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFs
dWVQYWlyLnZhbHVlKTsKKyAgICB9CisgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRk
KG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLnBzZXVkb0Ns
YXNzZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKKwogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IHVz
ZXNGaXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgdXNlc0Zp
cnN0TGV0dGVyUnVsZXMgPSB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RM
ZXR0ZXJSdWxlczsKIH0KQEAgLTI0OCw2ICsyNjMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpj
bGVhcigpCiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKICAgICBhdHRyaWJ1dGVS
dWxlcy5jbGVhcigpOwogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7CisgICAg
cHNldWRvQ2xhc3NSdWxlcy5jbGVhcigpOworICAgIHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0
LmNsZWFyKCk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gZmFsc2U7CiAgICAgdXNlc0ZpcnN0
TGV0dGVyUnVsZXMgPSBmYWxzZTsKIH0KQEAgLTI2MCw2ICsyNzcsOCBAQCB2b2lkIFJ1bGVGZWF0
dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwogICAg
IGZvciAoYXV0byYgcnVsZXMgOiBhdHRyaWJ1dGVSdWxlcy52YWx1ZXMoKSkKICAgICAgICAgcnVs
ZXMtPnNocmlua1RvRml0KCk7CisgICAgZm9yIChhdXRvJiBydWxlcyA6IHBzZXVkb0NsYXNzUnVs
ZXMudmFsdWVzKCkpCisgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKaW5kZXggY2M2N2YzZmIw
MTIuLjQ0MThmZjZhYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVh
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTc1LDgg
Kzc1LDEwIEBAIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAgICAgCiAgICAgSGFzaE1hcDxBdG9t
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGNsYXNzUnVsZXM7
CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0
dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1bGVzOworICAgIEhhc2hN
YXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxS
dWxlRmVhdHVyZT4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4s
IFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+
IHBzZXVkb0NsYXNzUnVsZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBjbGFzc2VzQWZmZWN0
aW5nSG9zdDsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0
OworICAgIEhhc2hTZXQ8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgV1RGOjpJbnRIYXNo
PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9z
dDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIHVz
ZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIE1hdGNoRWxlbWVudD4sIDMy
PiBjbGFzc2VzOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IENTU1NlbGVjdG9yKiwg
TWF0Y2hFbGVtZW50PiwgMzI+IGF0dHJpYnV0ZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgTWF0Y2hFbGVtZW50PiwgMzI+IHBzZXVkb0Ns
YXNzZXM7CiAgICAgfTsKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNl
bGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIE1hdGNoRWxlbWVu
dCA9IE1hdGNoRWxlbWVudDo6U3ViamVjdCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggZTMxM2QwMjI5YTYuLmRiM2IyYmFhYTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTE5NiwxMyAr
MTk2LDE1IEBAIHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKCkgY29uc3QKIAog
ICAgIG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOwogICAgIG1fYXR0cmlidXRl
SW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKKyAgICBtX3BzZXVkb0NsYXNzSW52YWxpZGF0
aW9uUnVsZVNldHMuY2xlYXIoKTsKKwogICAgIG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0Zv
clN0eWxlQXR0cmlidXRlID0gV1RGOjpudWxsb3B0OwogCiAgICAgbV9mZWF0dXJlcy5zaHJpbmtU
b0ZpdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSdWxlRmVhdHVyZVR5cGU+Ci1zdGF0aWMg
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhj
b25zdCBBdG9tU3RyaW5nJiBrZXksIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+JiBydWxlU2V0TWFwLCBjb25zdCBIYXNoTWFw
PEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVUeXBlPj4+JiBy
dWxlRmVhdHVyZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBSdWxlRmVh
dHVyZVR5cGUsIHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIEhhc2hUcmFpdHM+CitzdGF0aWMgVmVj
dG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25z
dCBLZXlUeXBlJiBrZXksIEhhc2hNYXA8S2V5VHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0Pj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlU2V0TWFwLCBjb25z
dCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVUeXBl
Pj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlRmVhdHVyZXMpCiB7CiAgICAgcmV0dXJuIHJ1bGVT
ZXRNYXAuZW5zdXJlKGtleSwgWyZdICgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxp
ZGF0aW9uUnVsZVNldD4+IHsKICAgICAgICAgYXV0byogZmVhdHVyZXMgPSBydWxlRmVhdHVyZXMu
Z2V0KGtleSk7CkBAIC0yNDEsNiArMjQzLDExIEBAIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25S
dWxlU2V0PiogU2NvcGVSdWxlU2V0czo6YXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMoCiAg
ICAgcmV0dXJuIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGF0dHJpYnV0ZU5hbWUsIG1fYXR0
cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMsIG1fZmVhdHVyZXMuYXR0cmlidXRlUnVsZXMpOwog
fQogCitjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIFNjb3BlUnVsZVNldHM6OnBz
ZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlw
ZSBwc2V1ZG9DbGFzcykgY29uc3QKK3sKKyAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0aW9uUnVs
ZVNldHMocHNldWRvQ2xhc3MsIG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cywgbV9m
ZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzKTsKK30KKwogYm9vbCBTY29wZVJ1bGVTZXRzOjpoYXND
b21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIGF1dG8gY29t
cHV0ZSA9IFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCmlu
ZGV4IDhjY2NmYWFhZGQ0Li5lNGUzZjVjNjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBjbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNv
bnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEludmFs
aWRhdGlvblJ1bGVTZXQ+KiBhdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9t
U3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0
aW9uUnVsZVNldD4qIHBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZSkgY29uc3Q7CiAKICAgICBib29sIGhhc0NvbXBsZXhTZWxlY3RvcnNG
b3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC0xMDEsNiArMTAyLDcgQEAgcHJpdmF0ZToK
ICAgICBtdXRhYmxlIFJlZlB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsK
ICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKICAgICBt
dXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlk
YXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHM7CisgICAgbXV0
YWJsZSBIYXNoTWFwPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZT4+IG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKIAog
ICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0b3JzRm9y
U3R5bGVBdHRyaWJ1dGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393150</attachid>
            <date>2020-03-10 07:49:11 -0700</date>
            <delta_ts>2020-03-11 05:54:19 -0700</delta_ts>
            <desc>wip</desc>
            <filename>pseudo-class-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>21969</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggMWI4YjgyM2NjN2YuLjA0ZTJmMDNhYzYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjM3Miw2ICsyMzcyLDcgQEAgc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
IHN0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAKIHN0eWxlL1BhZ2VSdWxlQ29sbGVj
dG9yLmNwcAogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9SdWxlRGF0YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJl
LmNwcAogc3R5bGUvUnVsZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjYzNTE5ZDYzNC4uZDRiMDI0M2Y3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ4ODcsNiArNDg4Nyw3IEBACiAJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJn
aW5UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZFN0FBMjYyMUMzN0I2MzAwMjk2RENEIC8qIE1hcmdpblR5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkz
MTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlu
bGluZUNvbnRlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2
NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKKwkJRTQ1QTZDNzcyNDE3QkE1OTAw
NkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUg
LyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0
OTI2QzAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3
IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEz
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0
ZXIuaCAqLzsgfTsKIAkJRTQ2MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2
MDVGRUEyMTY2NDgwODAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTI5MCw2ICsxNTI5MSw4
IEBACiAJCUU0NTM5MDM0MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsVmlld0lPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdp
ZGdldElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdl
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAw
MzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDVBNkM3MzI0MTdCQTRDMDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QTgyMzc0OTI2
QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QUIyMzc0OTI3QjAwNERGQzA3IC8qIE1hdGNoZWREZWNs
YXJhdGlvbnNDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25z
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVCQTZCMjIzNzYyMjdF
MDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZUFkanVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI3MjYwLDYgKzI3MjYzLDggQEAKIAkJCQlGQkRCNjFBMDE2RDYwMzdFMDBCQjMzOTQgLyog
UGFnZVJ1bGVDb2xsZWN0b3IuaCAqLywKIAkJCQlFNEFCQUJFNTIzNjFBMzQyMDBGQTQzNDUgLyog
UHJvcGVydHlDYXNjYWRlLmNwcCAqLywKIAkJCQlFNEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyog
UHJvcGVydHlDYXNjYWRlLmggKi8sCisJCQkJRTQ1QTZDNzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNDVBNkM3NjI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNDg2
M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEuY3BwICovLAogCQkJCUU0ODYzQ0ZEMjM4
NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovLAogCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMy
RTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCkBAIC0zMTE1OCw2ICszMTE2Myw3IEBACiAJCQkJ
QjJGQTNENTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNENTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHQ2xpcFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDVBNkM3NzI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2
MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjVmYzkxMDA5MmEuLjRmODc1NGQ5MWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9p
bnRlckxvY2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC02MzEsMTcg
KzYzMiwxNSBAQCB2b2lkIEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2Up
CiB7CiAgICAgaWYgKGZsYWcgPT0gYWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRv
Y3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QWN0aXZlKCp0aGlzLCBmbGFnKTsKLQot
ICAgIGF1dG8qIHJlbmRlclN0eWxlID0gcmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwot
ICAgIGJvb2wgcmVhY3RzVG9QcmVzcyA9IChyZW5kZXJTdHlsZSAmJiByZW5kZXJTdHlsZS0+YWZm
ZWN0ZWRCeUFjdGl2ZSgpKSB8fCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLSAgICBpZiAocmVh
Y3RzVG9QcmVzcykKLSAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIHsK
KyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOworICAgICAgICBk
b2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7Cisg
ICAgfQogCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29s
IHJlYWN0c1RvUHJlc3MgPSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNB
cHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVy
KCksIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3Mg
PSB0cnVlOwogCkBAIC02NTEsNiArNjUwLDkgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9v
bCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpLnN1cHBvcnRzSW1tZWRpYXRlSW52YWxpZGF0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLmFmZmVjdGVkQnlBY3RpdmUoKSkKKyAg
ICAgICAgcmVhY3RzVG9QcmVzcyA9IHRydWU7CisKICAgICBpZiAocmVhY3RzVG9QcmVzcyAmJiBw
YXVzZSkgewogICAgICAgICAvLyBUaGUgZGVsYXkgaGVyZSBpcyBzdWJ0bGUuIEl0IHJlbGllcyBv
biBhbiBhc3N1bXB0aW9uLCBuYW1lbHkgdGhhdCB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMK
ICAgICAgICAgLy8gdG8gcmVwYWludCB0aGUgImRvd24iIHN0YXRlIG9mIHRoZSBjb250cm9sIGlz
IGFib3V0IHRoZSBzYW1lIHRpbWUgYXMgaXQgd291bGQgdGFrZSB0byByZXBhaW50IHRoZQpAQCAt
NjgwLDkgKzY4MiwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldEZvY3VzKGJvb2wgZmxhZykKIHsKICAg
ICBpZiAoZmxhZyA9PSBmb2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50
KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7Ci0gICAgaW52
YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NGb2N1cyk7CisgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1l
bnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7CisgICAgfQogCiAgICAgLy8gU2hhZG93IGhv
c3Qgd2l0aCBhIHNsb3QgdGhhdCBjb250YWluIGZvY3VzZWQgZWxlbWVudCBpcyBub3QgY29uc2lk
ZXJlZCBmb2N1c2VkLgogICAgIGZvciAoYXV0byogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290
KCk7IHJvb3Q7IHJvb3QgPSByb290LT5ob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsK
QEAgLTY5OSwyNSArNzAyLDEyIEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcp
CiAgICAgaWYgKGZsYWcgPT0gaG92ZXJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1
bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVyZWQoKnRoaXMsIGZsYWcpOwotCi0g
ICAgYXV0byogc3R5bGUgPSByZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCk7Ci0gICAgaWYg
KHN0eWxlICYmIChzdHlsZS0+YWZmZWN0ZWRCeUhvdmVyKCkgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5
SG92ZXIoKSkpCi0gICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLQotICAgIGlm
ICghcmVuZGVyZXIoKSkgewotICAgICAgICAvLyBXaGVuIHNldHRpbmcgaG92ZXIgdG8gZmFsc2Us
IHRoZSBzdHlsZSBuZWVkcyB0byBiZSByZWNhbGMnZCBldmVuIHdoZW4KLSAgICAgICAgLy8gdGhl
cmUncyBubyByZW5kZXJlciAoaW1hZ2luZSBzZXR0aW5nIGRpc3BsYXk6bm9uZSBpbiB0aGUgOmhv
dmVyIGNsYXNzLAotICAgICAgICAvLyBpZiBhIG5pbCByZW5kZXJlciB3b3VsZCBwcmV2ZW50IHRo
aXMgZWxlbWVudCBmcm9tIHJlY2FsY3VsYXRpbmcgaXRzCi0gICAgICAgIC8vIHN0eWxlLCBpdCB3
b3VsZCBuZXZlciBnbyBiYWNrIHRvIGl0cyBub3JtYWwgc3R5bGUgYW5kIHJlbWFpbgotICAgICAg
ICAvLyBzdHVjayBpbiBpdHMgaG92ZXJlZCBzdHlsZSkuCi0gICAgICAgIGlmICghZmxhZyAmJiAh
c3R5bGUpCi0gICAgICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0KLSAgICAg
ICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NI
b3Zlcik7CisgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0SG92ZXJl
ZCgqdGhpcywgZmxhZyk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkp
CisgICAgaWYgKGF1dG8qIHN0eWxlID0gcmVuZGVyU3R5bGUoKTsgc3R5bGUgJiYgc3R5bGUtPmhh
c0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQo
KnJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OkhvdmVyU3RhdGUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCBjMzA0Y2YxY2Ux
Ni4uMzkzZGEwYzYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlv
dXRDb250ZXh0LmNwcApAQCAtMTI1LDEwICsxMjUsMTAgQEAgcHVibGljIDoKIAogICAgIH5SZW5k
ZXJUcmVlTmVlZHNMYXlvdXRDaGVja2VyKCkKICAgICB7Ci0gICAgICAgIGF1dG8gcmVwb3J0TmVl
ZHNMYXlvdXRFcnJvciA9IFtdIChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSB7CisgICAg
ICAgIGF1dG8gcmVwb3J0TmVlZHNMYXlvdXRFcnJvciA9IFtdIChjb25zdCBSZW5kZXJPYmplY3Qm
KSB7CiAgICAgICAgICAgICBXVEZSZXBvcnRFcnJvcihfX0ZJTEVfXywgX19MSU5FX18sIFdURl9Q
UkVUVFlfRlVOQ1RJT04sICJwb3N0LWxheW91dDogZGlydHkgcmVuZGVyZXIocykiKTsKLSAgICAg
ICAgICAgIHJlbmRlcmVyLnNob3dSZW5kZXJUcmVlRm9yVGhpcygpOwotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisvLyAgICAgICAgICAgIHJlbmRlcmVyLnNob3dSZW5kZXJUcmVl
Rm9yVGhpcygpOworLy8gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fTsKIAogICAgICAgICBpZiAobV9sYXlvdXRSb290Lm5lZWRzTGF5b3V0KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQ4YTMzMGU1MDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgorCisj
aW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRh
dGlvbkZ1bmN0aW9ucy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUg
eworCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0
aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MpCit7CisgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOworICAgIGJvb2wgbWF5QWZmZWN0U3R5
bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKKworICAgIHRyYXZlcnNlUnVsZUZlYXR1cmVzKG1fZWxl
bWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMsIGJvb2wgbWF5QWZmZWN0
U2hhZG93VHJlZSkgeworICAgICAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJlZSAmJiBmZWF0dXJl
cy5wc2V1ZG9DbGFzc1J1bGVzLmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAgICAgIG1h
eUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICAgICAgaWYgKGZlYXR1cmVzLnBz
ZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAg
ICAgIHNob3VsZEludmFsaWRhdGVDdXJyZW50ID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIGlmICht
YXlBZmZlY3RTdHlsZUluU2hhZG93VHJlZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGRvIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gZm9yIHNoYWRvdyB0cmVlLgorICAgICAgICBt
X2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIH0KKworICAgIGlmIChz
aG91bGRJbnZhbGlkYXRlQ3VycmVudCkKKyAgICAgICAgbV9lbGVtZW50LmludmFsaWRhdGVTdHls
ZSgpOworCisgICAgYXV0byYgcnVsZVNldHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1
bGVTZXRzKCk7CisgICAgaWYgKGF1dG8qIGludmFsaWRhdGlvblJ1bGVTZXRzID0gcnVsZVNldHMu
cHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhwc2V1ZG9DbGFzcykpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVTZXRzKQor
ICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9tYXRj
aEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgfQorfQorCit2b2lk
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNl
dHMoKQoreworICAgIEludmFsaWRhdG9yOjppbnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVT
ZXRzKG1fZWxlbWVudCwgbV9tYXRjaEVsZW1lbnRSdWxlU2V0cyk7Cit9CisKK30KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYjQ3OTJmYzUxNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU3R5bGVJbnZhbGlkYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIFBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uIHsKK3B1YmxpYzoKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CisgICAgflBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb21w
dXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIHZvaWQg
aW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisKKyAgICBjb25zdCBib29sIG1faXNFbmFi
bGVkOworICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKKworICAgIEludmFsaWRhdG9yOjpNYXRjaEVs
ZW1lbnRSdWxlU2V0cyBtX21hdGNoRWxlbWVudFJ1bGVTZXRzOworfTsKKworaW5saW5lIFBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihF
bGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNz
VHlwZSkKKyAgICA6IG1faXNFbmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigp
KQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQor
ICAgICAgICByZXR1cm47CisgICAgY29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFzc1R5cGUp
OworICAgIGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworfQorCitpbmxpbmUgUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246On5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigp
Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGludmFsaWRh
dGVTdHlsZVdpdGhSdWxlU2V0cygpOworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVG
ZWF0dXJlLmNwcAppbmRleCA3ZGZmZGFlYzBiNi4uZTNmZWM1Y2Q1NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlRmVhdHVyZS5jcHAKQEAgLTE1Myw3ICsxNTMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJl
U2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTZWxlY3RvckZlYXR1
cmVzJiBzZQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLT5tYXRj
aCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykKKyAgICAgICAgICAgIHNlbGVjdG9yRmVh
dHVyZXMucHNldWRvQ2xhc3Nlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2VsZWN0b3ItPnBzZXVk
b0NsYXNzVHlwZSgpLCBtYXRjaEVsZW1lbnQpKTsKIAogICAgICAgICBpZiAoIXNlbGVjdG9yRmVh
dHVyZXMuaGFzU2libGluZ1NlbGVjdG9yICYmIHNlbGVjdG9yLT5pc1NpYmxpbmdTZWxlY3Rvcigp
KQogICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IgPSB0cnVl
OwpAQCAtMTk5LDYgKzIwMCwxMyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVy
ZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09
IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0
LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKSk7CiAgICAgfQorICAgIGZvciAoYXV0byYga2V5QW5kTWF0Y2ggOiBzZWxlY3RvckZl
YXR1cmVzLnBzZXVkb0NsYXNzZXMpIHsKKyAgICAgICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUo
a2V5QW5kTWF0Y2guZmlyc3QsIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZl
Y3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5k
KHsgcnVsZURhdGEsIGtleUFuZE1hdGNoLnNlY29uZCB9KTsKKyAgICAgICAgaWYgKGtleUFuZE1h
dGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCisgICAgICAgICAgICBwc2V1ZG9DbGFz
c2VzQWZmZWN0aW5nSG9zdC5hZGQoa2V5QW5kTWF0Y2guZmlyc3QpOworICAgIH0KIH0KIAogdm9p
ZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKQEAgLTIy
NCw2ICsyMzIsMTMgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJl
U2V0JiBvdGhlcikKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVy
LmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNBZmZlY3Rp
bmdIb3N0LmVuZCgpKTsKIAorICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIucHNl
dWRvQ2xhc3NSdWxlcykgeworICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1
ZVBhaXIua2V5LCBbXSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVs
ZUZlYXR1cmU+PigpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigq
a2V5VmFsdWVQYWlyLnZhbHVlKTsKKyAgICB9CisgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hv
c3QuYWRkKG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLnBz
ZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKKwogICAgIHVzZXNGaXJzdExpbmVSdWxl
cyA9IHVzZXNGaXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAg
dXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB8fCBvdGhlci51c2Vz
Rmlyc3RMZXR0ZXJSdWxlczsKIH0KQEAgLTI0OCw2ICsyNjMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJl
U2V0OjpjbGVhcigpCiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKICAgICBhdHRy
aWJ1dGVSdWxlcy5jbGVhcigpOwogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7
CisgICAgcHNldWRvQ2xhc3NSdWxlcy5jbGVhcigpOworICAgIHBzZXVkb0NsYXNzZXNBZmZlY3Rp
bmdIb3N0LmNsZWFyKCk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gZmFsc2U7CiAgICAgdXNl
c0ZpcnN0TGV0dGVyUnVsZXMgPSBmYWxzZTsKIH0KQEAgLTI2MCw2ICsyNzcsOCBAQCB2b2lkIFJ1
bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgp
OwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBhdHRyaWJ1dGVSdWxlcy52YWx1ZXMoKSkKICAgICAg
ICAgcnVsZXMtPnNocmlua1RvRml0KCk7CisgICAgZm9yIChhdXRvJiBydWxlcyA6IHBzZXVkb0Ns
YXNzUnVsZXMudmFsdWVzKCkpCisgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVs
ZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKaW5kZXggY2M2
N2YzZmIwMTIuLjQ0MThmZjZhYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAg
LTc1LDggKzc1LDEwIEBAIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAgICAgCiAgICAgSGFzaE1h
cDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGNsYXNz
UnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1
bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1bGVzOworICAg
IEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxSdWxlRmVhdHVyZT4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZT4+IHBzZXVkb0NsYXNzUnVsZXM7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBjbGFzc2Vz
QWZmZWN0aW5nSG9zdDsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZXNBZmZlY3Rp
bmdIb3N0OworICAgIEhhc2hTZXQ8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgV1RGOjpJ
bnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc2VzQWZmZWN0
aW5nSG9zdDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBi
b29sIHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIE1hdGNoRWxlbWVu
dD4sIDMyPiBjbGFzc2VzOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IENTU1NlbGVj
dG9yKiwgTWF0Y2hFbGVtZW50PiwgMzI+IGF0dHJpYnV0ZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgTWF0Y2hFbGVtZW50PiwgMzI+IHBz
ZXVkb0NsYXNzZXM7CiAgICAgfTsKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVz
RnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIE1hdGNo
RWxlbWVudCA9IE1hdGNoRWxlbWVudDo6U3ViamVjdCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggZTMxM2QwMjI5YTYuLmRiM2IyYmFhYTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTE5
NiwxMyArMTk2LDE1IEBAIHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKCkgY29u
c3QKIAogICAgIG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOwogICAgIG1fYXR0
cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKKyAgICBtX3BzZXVkb0NsYXNzSW52
YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKKwogICAgIG1fY2FjaGVkSGFzQ29tcGxleFNlbGVj
dG9yc0ZvclN0eWxlQXR0cmlidXRlID0gV1RGOjpudWxsb3B0OwogCiAgICAgbV9mZWF0dXJlcy5z
aHJpbmtUb0ZpdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSdWxlRmVhdHVyZVR5cGU+Ci1z
dGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxl
U2V0cyhjb25zdCBBdG9tU3RyaW5nJiBrZXksIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+JiBydWxlU2V0TWFwLCBjb25zdCBI
YXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVUeXBl
Pj4+JiBydWxlRmVhdHVyZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBS
dWxlRmVhdHVyZVR5cGUsIHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIEhhc2hUcmFpdHM+CitzdGF0
aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyhjb25zdCBLZXlUeXBlJiBrZXksIEhhc2hNYXA8S2V5VHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlU2V0TWFw
LCBjb25zdCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1
cmVUeXBlPj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBydWxlRmVhdHVyZXMpCiB7CiAgICAgcmV0dXJu
IHJ1bGVTZXRNYXAuZW5zdXJlKGtleSwgWyZdICgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4+IHsKICAgICAgICAgYXV0byogZmVhdHVyZXMgPSBydWxlRmVh
dHVyZXMuZ2V0KGtleSk7CkBAIC0yNDEsNiArMjQzLDExIEBAIGNvbnN0IFZlY3RvcjxJbnZhbGlk
YXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6YXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNl
dHMoCiAgICAgcmV0dXJuIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGF0dHJpYnV0ZU5hbWUs
IG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMsIG1fZmVhdHVyZXMuYXR0cmlidXRlUnVs
ZXMpOwogfQogCitjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIFNjb3BlUnVsZVNl
dHM6OnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSBwc2V1ZG9DbGFzcykgY29uc3QKK3sKKyAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0
aW9uUnVsZVNldHMocHNldWRvQ2xhc3MsIG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0
cywgbV9mZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzKTsKK30KKwogYm9vbCBTY29wZVJ1bGVTZXRz
OjpoYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIGF1
dG8gY29tcHV0ZSA9IFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlUnVsZVNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0
cy5oCmluZGV4IDhjY2NmYWFhZGQ0Li5lNGUzZjVjNjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBjbGFzc0ludmFsaWRhdGlvblJ1bGVT
ZXRzKGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9y
PEludmFsaWRhdGlvblJ1bGVTZXQ+KiBhdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25z
dCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4qIHBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSkgY29uc3Q7CiAKICAgICBib29sIGhhc0NvbXBsZXhTZWxl
Y3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC0xMDEsNiArMTAyLDcgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVs
ZVNldDsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsK
ICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHM7Cisg
ICAgbXV0YWJsZSBIYXNoTWFwPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+LCBXVEY6OkludEhhc2g8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0
czsKIAogICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0
b3JzRm9yU3R5bGVBdHRyaWJ1dGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393227</attachid>
            <date>2020-03-11 05:54:19 -0700</date>
            <delta_ts>2020-03-11 11:34:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pseudo-class-invalidation-4.patch</filename>
            <type>text/plain</type>
            <size>32171</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2E2ZmI0ZDM3MS4uYzMxMWI4YzFhZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMy0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWNjdXJhdGUgc3R5bGUgaW52YWxpZGF0aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3Nl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlv
bi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1j
aGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9z
dHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcnVieS1ybC1leHBlY3RlZC50eHQ6CisKIDIw
MjAtMDMtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIE1ha2Ugc3VyZSBhIE1lZGlTdHJlYW1UcmFjayBjbG9uZSBkb2VzIG5vdCBpbnRlcnJ1cHQg
dGhlIGJlaW5nIGNsb25lZCB0cmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRl
c2NlbmRhbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVy
LWNoYW5nZS1kZXNjZW5kYW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52
YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMDc0N2Y1NzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2Vu
ZGFudHMuaHRtbApAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKzxzdHlsZT4KKy5jb250YWluZXIg
eworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhl
aWdodDogNjAwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworfQorLmluZXJ0IHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWln
aHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy50YXJnZXQgeworICAgIGJh
Y2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisuY29udGFpbmVyOmhvdmVyIC50YXJnZXQg
eworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorLmNoaWxkIHsKKyAgICB3aWR0aDog
NTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz1jb250YWlu
ZXI+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPXRh
cmdldD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAg
IDxkaXYgY2xhc3M9dGFyZ2V0PgorICAgICAgICA8ZGl2IGNsYXNzPSJpbmVydCBjaGlsZCI+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgICAg
IDxkaXYgY2xhc3M9InRhcmdldCBjaGlsZCI+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
PC9kaXY+Cis8cHJlIGlkPWxvZz48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RTdHls
ZUNoYW5nZVR5cGUoc2VsZWN0b3IsIGV4cGVjdGVkVHlwZSkKK3sKKyAgICBsZXQgcGFzcyA9IHRy
dWU7CisgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVj
dG9yKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGNvbnN0IHR5cGUgPSB3aW5kb3cuaW50ZXJuYWxzLnN0eWxlQ2hhbmdlVHlwZShlbGVt
ZW50c1tpXSk7CisgICAgICAgIGlmICh0eXBlICE9IGV4cGVjdGVkVHlwZSkgeworICAgICAgICAg
ICAgbG9nLnRleHRDb250ZW50ICs9IGBGQUlMICR7c2VsZWN0b3J9IHN0eWxlQ2hhbmdlVHlwZSB3
YXMgJHt0eXBlfSBleHBlY3RlZCAke2V4cGVjdGVkVHlwZX1cbmA7CisgICAgICAgICAgICBwYXNz
ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhc3MpCisgICAgICAgIGxvZy50
ZXh0Q29udGVudCArPSAiUEFTU1xuIjsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgp
IHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsNTApOworCisgICAgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9m
ZnNldExlZnQ7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzAwLDUwKTsKKworICAgIHRl
c3RTdHlsZUNoYW5nZVR5cGUoIi50YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsKKyAgICB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuY29udGFpbmVyIiwgIk5vU3R5bGVDaGFuZ2UiKTsKKyAgICB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpOworfTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9u
LWhvdmVyLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92
ZXItY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5ncy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5n
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZDJmZmFjZWJk
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRh
dGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MuaHRtbApAQCAtMCwwICsxLDg1IEBACis8aHRtbD4K
KzxzdHlsZT4KKy5jb250YWluZXIgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAg
d2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworfQorLmluZXJ0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
K30KKy50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB3aWR0aDogMTAw
cHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisuaW5l
cnQ6aG92ZXIgfiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKy5p
bmVydDpob3ZlciB+IC5pbmVydCA+IC50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorLmNoaWxkIHsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9
Cis8L3N0eWxlPgorPGRpdiBjbGFzcz1jb250YWluZXI+CisgICAgPGRpdiBjbGFzcz1pbmVydD4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPXRhcmdldD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJpbmVydCBjaGlsZCI+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
ICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgICAgIDxkaXYgY2xhc3M9InRhcmdldCBjaGlsZCI+
CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cis8cHJlIGlkPWxvZz48L3ByZT4K
KworPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RTdHlsZUNoYW5nZVR5cGUoc2VsZWN0b3IsIGV4cGVj
dGVkVHlwZSkKK3sKKyAgICBsZXQgcGFzcyA9IHRydWU7CisgICAgY29uc3QgZWxlbWVudHMgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGNvbnN0IHR5cGUgPSB3aW5kb3cu
aW50ZXJuYWxzLnN0eWxlQ2hhbmdlVHlwZShlbGVtZW50c1tpXSk7CisgICAgICAgIGlmICh0eXBl
ICE9IGV4cGVjdGVkVHlwZSkgeworICAgICAgICAgICAgbG9nLnRleHRDb250ZW50ICs9IGBGQUlM
ICR7c2VsZWN0b3J9IHN0eWxlQ2hhbmdlVHlwZSB3YXMgJHt0eXBlfSBleHBlY3RlZCAke2V4cGVj
dGVkVHlwZX1cbmA7CisgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKHBhc3MpCisgICAgICAgIGxvZy50ZXh0Q29udGVudCArPSAiUEFTU1xuIjsKK30K
Kword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
NTAsNTApOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHls
ZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHls
ZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hh
bmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oMzAwLDUwKTsKKworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi50YXJnZXQi
LCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuY29udGFp
bmVyIiwgIk5vU3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuaW5lcnQi
LCAiTm9TdHlsZUNoYW5nZSIpOworfTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L3NlbGVjdGlvbi1ydWJ5LXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9zZWxlY3Rpb24tcnVieS1ybC1leHBlY3RlZC50eHQKaW5kZXggOTU5
MTVlNjYwMGYuLmFlYjFmODk2MDkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFp
bnQvc2VsZWN0aW9uLXJ1YnktcmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVwYWludC9zZWxlY3Rpb24tcnVieS1ybC1leHBlY3RlZC50eHQKQEAgLTksNiArOSwxMCBAQCBU
ZXN0aW5nIGJvdGggaGl0IHRlc3RpbmcgYW5kIHBhaW50aW5nIG9mIHNlbGVjdGlvbi4KIFRlc3Rp
bmcgYm90aCBoaXQgdGVzdGluZyBhbmQgcGFpbnRpbmcgb2Ygc2VsZWN0aW9uLgogVGVzdGluZyBi
b3RoIGhpdCB0ZXN0aW5nIGFuZCBwYWludGluZyBvZiBzZWxlY3Rpb24uCiAocmVwYWludCByZWN0
cworICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgNzI4IDggMTggMzEzKQorICAocmVjdCA3
MjggOCAyOCAzMTMpCisgIChyZWN0IDYwMiA4IDE5MCA1ODQpCiAgIChyZWN0IDc3NCAzOCAxOCA3
OSkKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0NTczMDVlODRlLi5lNjA2YTc1ZWY4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTAzLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KKworICAgICAgICBBY2N1cmF0ZSBzdHlsZSBpbnZhbGlkYXRpb24gZm9yIHVzZXIg
YWN0aW9uIHBzZXVkbyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTk2ODg4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSA6aG92ZXIsIDpmb2N1cywgOmZvY3VzLXdpdGhpbiBhbmQgOmFjdGl2ZSBsYWNrIGZpbmUgZ3Jh
aW5lZCBpbnZhbGlkYXRpb24gdXNpbmcKKyAgICAgICAgcnVsZSBzZXRzIGxpa2Ugd2UgZG8gd2l0
aCBjbGFzcyBhbmQgYXR0cmlidXRlIHNlbGVjdG9ycy4KKworICAgICAgICBUaGlzIGNhbiBiZSBh
ZGRlZCBlYXNpbHkgZm9sbG93aW5nIHRoZSBzYW1lIHBhdHRlcm4uCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5n
ZS1zaWJsaW5ncy5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhh
c0ZvY3VzV2l0aGluKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhvdmVyZWQpOgor
CisgICAgICAgIFVzZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi4KKworICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNGb2N1c1dp
dGhpbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVOZWVkc0xheW91dENoZWNrZXI6On5SZW5k
ZXJUcmVlTmVlZHNMYXlvdXRDaGVja2VyKToKKyAgICAgICAgKiBzdHlsZS9Qc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKworICAg
ICAgICBDb21wdXRlIGludmFsaWRhdGlvbiBydWxlIHNldCBmb3IgYSBwc2V1ZG8gY2xhc3MgY2hh
bmdlLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cyk6CisgICAgICAgICogc3R5bGUvUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKiBz
dHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZUZlYXR1
cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKworICAg
ICAgICBDb2xsZWN0IHBzZXVkbyBjbGFzcyBmZWF0dXJlcywgc2ltaWxhciB0byBjbGFzc2VzL2F0
dHJpYnV0ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6YWRk
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCk6CisgICAg
ICAgICogc3R5bGUvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVs
ZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlUnVsZVNldHM6OmNvbGxl
Y3RGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZW5zdXJlSW52YWxp
ZGF0aW9uUnVsZVNldHMpOgorCisgICAgICAgIE1ha2UgbW9yZSBnZW5lcmljIHRvIGFsbG93IGVu
dW0ga2V5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6cHNldWRv
Q2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyBjb25zdCk6CisKKyAgICAgICAgQ3JlYXRlIHBzZXVk
byBjbGFzcyBpbnZhbGlkYXRpb24gcnVsZXNldC4KKworICAgICAgICAqIHN0eWxlL1N0eWxlU2Nv
cGVSdWxlU2V0cy5oOgorCiAyMDIwLTAzLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBNYWtlIHN1cmUgYSBNZWRpU3RyZWFtVHJhY2sgY2xvbmUg
ZG9lcyBub3QgaW50ZXJydXB0IHRoZSBiZWluZyBjbG9uZWQgdHJhY2sKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggMWI4YjgyM2NjN2YuLjA0ZTJmMDNhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjM3Miw2ICsy
MzcyLDcgQEAgc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKIHN0eWxlL01hdGNoZWRE
ZWNsYXJhdGlvbnNDYWNoZS5jcHAKIHN0eWxlL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcAogc3R5bGUv
UHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwCiBzdHlsZS9SdWxlRGF0YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJlLmNwcAogc3R5bGUvUnVs
ZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMjYzNTE5ZDYzNC4uZDRiMDI0M2Y3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4ODcsNiArNDg4
Nyw3IEBACiAJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5UeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFN0FBMjYyMUMzN0I2
MzAwMjk2RENEIC8qIE1hcmdpblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJ
bmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUzMjJB
QzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNl
bGVjdG9yUXVlcnkuaCAqLzsgfTsKKwkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8qIFBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERGQzA3IC8q
IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNoZWREZWNs
YXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5
bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsgfTsKIAkJ
RTQ2MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2MDVGRUEyMTY2NDgwODAw
RTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTI5MCw2ICsxNTI5MSw4IEBACiAJCUU0NTM5MDM0
MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsVmlld0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldElPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3Rl
bU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0
ZW1NZW1vcnlJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDVBNkM3MzI0
MTdCQTRDMDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDVBNkM3NjI0MTdCQTU5
MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQ1QkE2QUIyMzc0OTI3QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVCQTZCMjIzNzYyMjdFMDA0REZDMDcgLyogU3R5
bGVBZGp1c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHls
ZUFkanVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjYwLDYgKzI3
MjYzLDggQEAKIAkJCQlGQkRCNjFBMDE2RDYwMzdFMDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0
b3IuaCAqLywKIAkJCQlFNEFCQUJFNTIzNjFBMzQyMDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRl
LmNwcCAqLywKIAkJCQlFNEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRl
LmggKi8sCisJCQkJRTQ1QTZDNzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNDg2M0NGQTIzODQyRTg3MDA5
NzIxNTggLyogUnVsZURhdGEuY3BwICovLAogCQkJCUU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAv
KiBSdWxlRGF0YS5oICovLAogCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlRmVh
dHVyZS5jcHAgKi8sCkBAIC0zMTE1OCw2ICszMTE2Myw3IEBACiAJCQkJQjJGQTNENTcwQUI3NUE2
RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNENTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNENUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2xpcFBhdGhFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDVBNkM3NzI0MTdCQTU5MDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVG
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdD
dXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggYjVmYzkxMDA5MmEuLjRkNTgwZWVhMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNs
dWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC02MzEsMTcgKzYzMiwxNSBAQCB2b2lk
IEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UpCiB7CiAgICAgaWYgKGZs
YWcgPT0gYWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50KCkudXNlckFj
dGlvbkVsZW1lbnRzKCkuc2V0QWN0aXZlKCp0aGlzLCBmbGFnKTsKLQotICAgIGF1dG8qIHJlbmRl
clN0eWxlID0gcmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwotICAgIGJvb2wgcmVhY3Rz
VG9QcmVzcyA9IChyZW5kZXJTdHlsZSAmJiByZW5kZXJTdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZSgp
KSB8fCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLSAgICBpZiAocmVhY3RzVG9QcmVzcykKLSAg
ICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIHsKKyAgICAgICAgU3R5bGU6
OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOworICAgICAgICBkb2N1bWVudCgpLnVzZXJB
Y3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CisgICAgfQogCiAgICAgaWYg
KCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHJlYWN0c1RvUHJlc3Mg
PSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYg
cmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0
ZXM6OlByZXNzZWRTdGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOwogCkBAIC02
NTEsNiArNjUwLDkgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBmbGFnLCBib29sIHBh
dXNlKQogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBv
cnRzSW1tZWRpYXRlSW52YWxpZGF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChy
ZW5kZXJlcigpLT5zdHlsZSgpLmFmZmVjdGVkQnlBY3RpdmUoKSkKKyAgICAgICAgcmVhY3RzVG9Q
cmVzcyA9IHRydWU7CisKICAgICBpZiAocmVhY3RzVG9QcmVzcyAmJiBwYXVzZSkgewogICAgICAg
ICAvLyBUaGUgZGVsYXkgaGVyZSBpcyBzdWJ0bGUuIEl0IHJlbGllcyBvbiBhbiBhc3N1bXB0aW9u
LCBuYW1lbHkgdGhhdCB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMKICAgICAgICAgLy8gdG8g
cmVwYWludCB0aGUgImRvd24iIHN0YXRlIG9mIHRoZSBjb250cm9sIGlzIGFib3V0IHRoZSBzYW1l
IHRpbWUgYXMgaXQgd291bGQgdGFrZSB0byByZXBhaW50IHRoZQpAQCAtNjgwLDkgKzY4MiwxMCBA
QCB2b2lkIEVsZW1lbnQ6OnNldEZvY3VzKGJvb2wgZmxhZykKIHsKICAgICBpZiAoZmxhZyA9PSBm
b2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVs
ZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7Ci0gICAgaW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NG
b2N1cyk7CisgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNl
ZCgqdGhpcywgZmxhZyk7CisgICAgfQogCiAgICAgLy8gU2hhZG93IGhvc3Qgd2l0aCBhIHNsb3Qg
dGhhdCBjb250YWluIGZvY3VzZWQgZWxlbWVudCBpcyBub3QgY29uc2lkZXJlZCBmb2N1c2VkLgog
ICAgIGZvciAoYXV0byogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3Qg
PSByb290LT5ob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKQEAgLTY5MCwzNCArNjkz
LDMwIEBAIHZvaWQgRWxlbWVudDo6c2V0Rm9jdXMoYm9vbCBmbGFnKQogICAgICAgICByb290LT5o
b3N0KCktPmludmFsaWRhdGVTdHlsZSgpOwogICAgIH0KIAotICAgIGZvciAoRWxlbWVudCogZWxl
bWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5D
b21wb3NlZFRyZWUoKSkKKyAgICBmb3IgKGF1dG8qIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBl
bGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpCiAgICAgICAg
IGVsZW1lbnQtPnNldEhhc0ZvY3VzV2l0aGluKGZsYWcpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNl
dEhvdmVyZWQoYm9vbCBmbGFnKQordm9pZCBFbGVtZW50OjpzZXRIYXNGb2N1c1dpdGhpbihib29s
IGZsYWcpCiB7Ci0gICAgaWYgKGZsYWcgPT0gaG92ZXJlZCgpKQorICAgIGlmIChoYXNGb2N1c1dp
dGhpbigpID09IGZsYWcpCiAgICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXNXaXRoaW4pOworICAgICAgICBzZXRGbGFnKGZsYWcs
IEhhc0ZvY3VzV2l0aGluKTsKKyAgICB9Cit9CiAKLSAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25F
bGVtZW50cygpLnNldEhvdmVyZWQoKnRoaXMsIGZsYWcpOwotCi0gICAgYXV0byogc3R5bGUgPSBy
ZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCk7Ci0gICAgaWYgKHN0eWxlICYmIChzdHlsZS0+
YWZmZWN0ZWRCeUhvdmVyKCkgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSkpCi0gICAgICAg
IGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLQotICAgIGlmICghcmVuZGVyZXIoKSkgewot
ICAgICAgICAvLyBXaGVuIHNldHRpbmcgaG92ZXIgdG8gZmFsc2UsIHRoZSBzdHlsZSBuZWVkcyB0
byBiZSByZWNhbGMnZCBldmVuIHdoZW4KLSAgICAgICAgLy8gdGhlcmUncyBubyByZW5kZXJlciAo
aW1hZ2luZSBzZXR0aW5nIGRpc3BsYXk6bm9uZSBpbiB0aGUgOmhvdmVyIGNsYXNzLAotICAgICAg
ICAvLyBpZiBhIG5pbCByZW5kZXJlciB3b3VsZCBwcmV2ZW50IHRoaXMgZWxlbWVudCBmcm9tIHJl
Y2FsY3VsYXRpbmcgaXRzCi0gICAgICAgIC8vIHN0eWxlLCBpdCB3b3VsZCBuZXZlciBnbyBiYWNr
IHRvIGl0cyBub3JtYWwgc3R5bGUgYW5kIHJlbWFpbgotICAgICAgICAvLyBzdHVjayBpbiBpdHMg
aG92ZXJlZCBzdHlsZSkuCi0gICAgICAgIGlmICghZmxhZyAmJiAhc3R5bGUpCi0gICAgICAgICAg
ICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0KK3ZvaWQgRWxlbWVudDo6c2V0SG92ZXJl
ZChib29sIGZsYWcpCit7CisgICAgaWYgKGZsYWcgPT0gaG92ZXJlZCgpKQogICAgICAgICByZXR1
cm47CisgICAgeworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24g
c3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsK
KyAgICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0aGlz
LCBmbGFnKTsKICAgICB9CiAKLSAgICBpZiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKKyAgICBp
ZiAoYXV0byogc3R5bGUgPSByZW5kZXJTdHlsZSgpOyBzdHlsZSAmJiBzdHlsZS0+aGFzQXBwZWFy
YW5jZSgpKQogICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVy
ZXIoKSwgQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IDZmZDU5OTNlNmJkLi5hN2RlYWZlM2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC04NDYs
MTUgKzg0Niw2IEBAIGlubGluZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgJiYg
ZWxlbWVudC5kb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIEVs
ZW1lbnQ6OnNldEhhc0ZvY3VzV2l0aGluKGJvb2wgZmxhZykKLXsKLSAgICBpZiAoaGFzRm9jdXNX
aXRoaW4oKSA9PSBmbGFnKQotICAgICAgICByZXR1cm47Ci0gICAgc2V0RmxhZyhmbGFnLCBIYXNG
b2N1c1dpdGhpbik7Ci0gICAgaWYgKHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkpCi0gICAg
ICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUu
Li4gUXVhbGlmaWVkTmFtZXM+CiBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWVz
Ji4uLiBuYW1lcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Bz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Bz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uYjcxNWJjOWEzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgeworCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGUgcHNldWRvQ2xhc3MpCit7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9
IGZhbHNlOworICAgIGJvb2wgbWF5QWZmZWN0U3R5bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKKwor
ICAgIHRyYXZlcnNlUnVsZUZlYXR1cmVzKG1fZWxlbWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVy
ZVNldCYgZmVhdHVyZXMsIGJvb2wgbWF5QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAgICBpZiAo
bWF5QWZmZWN0U2hhZG93VHJlZSAmJiBmZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzLmNvbnRhaW5z
KHBzZXVkb0NsYXNzKSkKKyAgICAgICAgICAgIG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0g
dHJ1ZTsKKyAgICAgICAgaWYgKG1fZWxlbWVudC5zaGFkb3dSb290KCkgJiYgZmVhdHVyZXMucHNl
dWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuY29udGFpbnMocHNldWRvQ2xhc3MpKQorICAgICAgICAg
ICAgc2hvdWxkSW52YWxpZGF0ZUN1cnJlbnQgPSB0cnVlOworICAgIH0pOworCisgICAgaWYgKG1h
eUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
ZG8gZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBmb3Igc2hhZG93IHRyZWUuCisgICAgICAgIG1f
ZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgfQorCisgICAgaWYgKHNo
b3VsZEludmFsaWRhdGVDdXJyZW50KQorICAgICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxl
KCk7CisKKyAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVs
ZVNldHMoKTsKKyAgICBpZiAoYXV0byogaW52YWxpZGF0aW9uUnVsZVNldHMgPSBydWxlU2V0cy5w
c2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKHBzZXVkb0NsYXNzKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGludmFsaWRhdGlvblJ1bGVTZXQgOiAqaW52YWxpZGF0aW9uUnVsZVNldHMpCisg
ICAgICAgICAgICBJbnZhbGlkYXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0cyhtX21hdGNo
RWxlbWVudFJ1bGVTZXRzLCBpbnZhbGlkYXRpb25SdWxlU2V0KTsKKyAgICB9Cit9CisKK3ZvaWQg
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0
cygpCit7CisgICAgSW52YWxpZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNl
dHMobV9lbGVtZW50LCBtX21hdGNoRWxlbWVudFJ1bGVTZXRzKTsKK30KKworfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmViNDc5MmZjNTE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTdHlsZUludmFsaWRhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKworbmFtZXNwYWNlIFN0eWxlIHsKKworY2xhc3MgUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24geworcHVibGljOgorICAgIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uKEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICB+UHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbXB1
dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CisgICAgdm9pZCBp
bnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsKKworICAgIGNvbnN0IGJvb2wgbV9pc0VuYWJs
ZWQ7CisgICAgRWxlbWVudCYgbV9lbGVtZW50OworCisgICAgSW52YWxpZGF0b3I6Ok1hdGNoRWxl
bWVudFJ1bGVTZXRzIG1fbWF0Y2hFbGVtZW50UnVsZVNldHM7Cit9OworCitpbmxpbmUgUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVs
ZW1lbnQmIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NU
eXBlKQorICAgIDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkp
CisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKworeworICAgIGlmICghbV9pc0VuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzVHlwZSk7
CisgICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7Cit9CisKK2lubGluZSBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKCkK
K3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0
ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7Cit9CisKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZl
YXR1cmUuY3BwCmluZGV4IDdkZmZkYWVjMGI2Li5lM2ZlYzVjZDU3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtMTUzLDcgKzE1Myw4IEBAIHZvaWQgUnVsZUZlYXR1cmVT
ZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVy
ZXMmIHNlCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3ItPm1hdGNo
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKQorICAgICAgICAgICAgc2VsZWN0b3JGZWF0
dXJlcy5wc2V1ZG9DbGFzc2VzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzZWxlY3Rvci0+cHNldWRv
Q2xhc3NUeXBlKCksIG1hdGNoRWxlbWVudCkpOwogCiAgICAgICAgIGlmICghc2VsZWN0b3JGZWF0
dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IgJiYgc2VsZWN0b3ItPmlzU2libGluZ1NlbGVjdG9yKCkp
CiAgICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmhhc1NpYmxpbmdTZWxlY3RvciA9IHRydWU7
CkBAIC0xOTksNiArMjAwLDEzIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJl
cyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0g
TWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Qu
YWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpKTsKICAgICB9CisgICAgZm9yIChhdXRvJiBrZXlBbmRNYXRjaCA6IHNlbGVjdG9yRmVh
dHVyZXMucHNldWRvQ2xhc3NlcykgeworICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShr
ZXlBbmRNYXRjaC5maXJzdCwgW10geworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVj
dG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQo
eyBydWxlRGF0YSwga2V5QW5kTWF0Y2guc2Vjb25kIH0pOworICAgICAgICBpZiAoa2V5QW5kTWF0
Y2guc2Vjb25kID09IE1hdGNoRWxlbWVudDo6SG9zdCkKKyAgICAgICAgICAgIHBzZXVkb0NsYXNz
ZXNBZmZlY3RpbmdIb3N0LmFkZChrZXlBbmRNYXRjaC5maXJzdCk7CisgICAgfQogfQogCiB2b2lk
IFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQpAQCAtMjI0
LDYgKzIzMiwxMyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVT
ZXQmIG90aGVyKQogICAgIH0KICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIu
YXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGlu
Z0hvc3QuZW5kKCkpOwogCisgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5wc2V1
ZG9DbGFzc1J1bGVzKSB7CisgICAgICAgIHBzZXVkb0NsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVl
UGFpci5rZXksIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxl
RmVhdHVyZT4+KCk7CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCpr
ZXlWYWx1ZVBhaXIudmFsdWUpOworICAgIH0KKyAgICBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9z
dC5hZGQob3RoZXIucHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIucHNl
dWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOworCiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVz
ID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG90aGVyLnVzZXNGaXJzdExpbmVSdWxlczsKICAgICB1
c2VzRmlyc3RMZXR0ZXJSdWxlcyA9IHVzZXNGaXJzdExldHRlclJ1bGVzIHx8IG90aGVyLnVzZXNG
aXJzdExldHRlclJ1bGVzOwogfQpAQCAtMjQ4LDYgKzI2Myw4IEBAIHZvaWQgUnVsZUZlYXR1cmVT
ZXQ6OmNsZWFyKCkKICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5jbGVhcigpOwogICAgIGF0dHJp
YnV0ZVJ1bGVzLmNsZWFyKCk7CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsK
KyAgICBwc2V1ZG9DbGFzc1J1bGVzLmNsZWFyKCk7CisgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGlu
Z0hvc3QuY2xlYXIoKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSBmYWxzZTsKICAgICB1c2Vz
Rmlyc3RMZXR0ZXJSdWxlcyA9IGZhbHNlOwogfQpAQCAtMjYwLDYgKzI3Nyw4IEBAIHZvaWQgUnVs
ZUZlYXR1cmVTZXQ6OnNocmlua1RvRml0KCkKICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7
CiAgICAgZm9yIChhdXRvJiBydWxlcyA6IGF0dHJpYnV0ZVJ1bGVzLnZhbHVlcygpKQogICAgICAg
ICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKKyAgICBmb3IgKGF1dG8mIHJ1bGVzIDogcHNldWRvQ2xh
c3NSdWxlcy52YWx1ZXMoKSkKKyAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
RmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCBjYzY3
ZjNmYjAxMi4uNDQxOGZmNmFiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVGZWF0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaApAQCAt
NzUsOCArNzUsMTAgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICAKICAgICBIYXNoTWFw
PEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4gY2xhc3NS
dWxlczsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVs
ZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3I+Pj4gYXR0cmlidXRlUnVsZXM7CisgICAg
SGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFJ1bGVGZWF0dXJlPj4sIFdURjo6SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlPj4gcHNldWRvQ2xhc3NSdWxlczsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGNsYXNzZXNB
ZmZlY3RpbmdIb3N0OwogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlc0FmZmVjdGlu
Z0hvc3Q7CisgICAgSGFzaFNldDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBXVEY6Oklu
dEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzZXNBZmZlY3Rp
bmdIb3N0OwogCiAgICAgYm9vbCB1c2VzRmlyc3RMaW5lUnVsZXMgeyBmYWxzZSB9OwogICAgIGJv
b2wgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OwpAQCAtOTAsNiArOTIsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbVN0cmluZywgTWF0Y2hFbGVtZW50
PiwgMzI+IGNsYXNzZXM7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgQ1NTU2VsZWN0
b3IqLCBNYXRjaEVsZW1lbnQ+LCAzMj4gYXR0cmlidXRlczsKKyAgICAgICAgVmVjdG9yPHN0ZDo6
cGFpcjxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBNYXRjaEVsZW1lbnQ+LCAzMj4gcHNl
dWRvQ2xhc3NlczsKICAgICB9OwogICAgIHZvaWQgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNG
cm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYsIGNvbnN0IENTU1NlbGVjdG9yJiwgTWF0Y2hF
bGVtZW50ID0gTWF0Y2hFbGVtZW50OjpTdWJqZWN0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAppbmRleCBlMzEzZDAyMjlhNi4uZGIzYjJiYWFhMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtMTk2
LDEzICsxOTYsMTUgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25z
dAogCiAgICAgbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9hdHRy
aWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOworICAgIG1fcHNldWRvQ2xhc3NJbnZh
bGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOworCiAgICAgbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0
b3JzRm9yU3R5bGVBdHRyaWJ1dGUgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBtX2ZlYXR1cmVzLnNo
cmlua1RvRml0KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJ1bGVGZWF0dXJlVHlwZT4KLXN0
YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKGNvbnN0IEF0b21TdHJpbmcmIGtleSwgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4mIHJ1bGVTZXRNYXAsIGNvbnN0IEhh
c2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZVR5cGU+
Pj4mIHJ1bGVGZWF0dXJlcykKK3RlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFJ1
bGVGZWF0dXJlVHlwZSwgdHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgSGFzaFRyYWl0cz4KK3N0YXRp
YyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRz
KGNvbnN0IEtleVR5cGUmIGtleSwgSGFzaE1hcDxLZXlUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PiwgSGFzaCwgSGFzaFRyYWl0cz4mIHJ1bGVTZXRNYXAs
IGNvbnN0IEhhc2hNYXA8S2V5VHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVy
ZVR5cGU+PiwgSGFzaCwgSGFzaFRyYWl0cz4mIHJ1bGVGZWF0dXJlcykKIHsKICAgICByZXR1cm4g
cnVsZVNldE1hcC5lbnN1cmUoa2V5LCBbJl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0Pj4gewogICAgICAgICBhdXRvKiBmZWF0dXJlcyA9IHJ1bGVGZWF0
dXJlcy5nZXQoa2V5KTsKQEAgLTI0MSw2ICsyNDMsMTEgQEAgY29uc3QgVmVjdG9yPEludmFsaWRh
dGlvblJ1bGVTZXQ+KiBTY29wZVJ1bGVTZXRzOjphdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0
cygKICAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoYXR0cmlidXRlTmFtZSwg
bV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cywgbV9mZWF0dXJlcy5hdHRyaWJ1dGVSdWxl
cyk7CiB9CiAKK2NvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0
czo6cHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NUeXBlIHBzZXVkb0NsYXNzKSBjb25zdAoreworICAgIHJldHVybiBlbnN1cmVJbnZhbGlkYXRp
b25SdWxlU2V0cyhwc2V1ZG9DbGFzcywgbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRz
LCBtX2ZlYXR1cmVzLnBzZXVkb0NsYXNzUnVsZXMpOworfQorCiBib29sIFNjb3BlUnVsZVNldHM6
Omhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgYXV0
byBjb21wdXRlID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGVSdWxlU2V0cy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRz
LmgKaW5kZXggOGNjY2ZhYWFkZDQuLmU0ZTNmNWM2MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlUnVsZVNldHMuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGNsYXNzSW52YWxpZGF0aW9uUnVsZVNl
dHMoY29uc3QgQXRvbVN0cmluZyYgY2xhc3NOYW1lKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4qIGF0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0
IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0PiogcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQ29tcGxleFNlbGVj
dG9yc0ZvclN0eWxlQXR0cmlidXRlKCkgY29uc3Q7CiAKQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgUmVmUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxl
U2V0OwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwog
ICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPElu
dmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0czsKKyAg
ICBtdXRhYmxlIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIFdURjo6SW50SGFzaDxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRz
OwogCiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3Rv
cnNGb3JTdHlsZUF0dHJpYnV0ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393270</attachid>
            <date>2020-03-11 11:34:10 -0700</date>
            <delta_ts>2020-03-11 12:08:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pseudo-class-invalidation-5.patch</filename>
            <type>text/plain</type>
            <size>32335</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2E2ZmI0ZDM3MS4uZWJlMWUwZjZlYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMy0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWNjdXJhdGUgc3R5bGUgaW52YWxpZGF0aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3Nl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlv
bi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1j
aGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9z
dHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcnVieS1ybC1leHBlY3RlZC50eHQ6IE1vcmUg
YWNjdXJhdGUgcGFpbnQgaW52YWxpZGF0aW9uIGhlcmUuCisKIDIwMjAtMDMtMTAgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1ha2Ugc3VyZSBhIE1l
ZGlTdHJlYW1UcmFjayBjbG9uZSBkb2VzIG5vdCBpbnRlcnJ1cHQgdGhlIGJlaW5nIGNsb25lZCB0
cmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9u
LWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRp
b24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNo
YW5nZS1kZXNjZW5kYW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5hMDc0N2Y1NzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbApAQCAtMCww
ICsxLDgyIEBACis8aHRtbD4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICAgIGJhY2tncm91bmQt
Y29sb3I6IGJsdWU7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworfQorLmluZXJ0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5
ZWxsb3c7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKK30KKy50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJl
ZDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Cit9CisuY29udGFpbmVyOmhvdmVyIC50YXJnZXQgeworICAgIGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOworfQorLmNoaWxkIHsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6
IDUwcHg7Cit9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz1jb250YWluZXI+CisgICAgPGRpdiBjbGFz
cz1pbmVydD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPXRhcmdldD4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0
PgorICAgICAgICA8ZGl2IGNsYXNzPSJpbmVydCBjaGlsZCI+CisgICAgICAgIDwvZGl2PgorICAg
IDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgICAgIDxkaXYgY2xhc3M9InRhcmdl
dCBjaGlsZCI+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cis8cHJlIGlkPWxv
Zz48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RTdHlsZUNoYW5nZVR5cGUoc2VsZWN0
b3IsIGV4cGVjdGVkVHlwZSkKK3sKKyAgICBsZXQgcGFzcyA9IHRydWU7CisgICAgY29uc3QgZWxl
bWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGNvbnN0IHR5cGUg
PSB3aW5kb3cuaW50ZXJuYWxzLnN0eWxlQ2hhbmdlVHlwZShlbGVtZW50c1tpXSk7CisgICAgICAg
IGlmICh0eXBlICE9IGV4cGVjdGVkVHlwZSkgeworICAgICAgICAgICAgbG9nLnRleHRDb250ZW50
ICs9IGBGQUlMICR7c2VsZWN0b3J9IHN0eWxlQ2hhbmdlVHlwZSB3YXMgJHt0eXBlfSBleHBlY3Rl
ZCAke2V4cGVjdGVkVHlwZX1cbmA7CisgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKHBhc3MpCisgICAgICAgIGxvZy50ZXh0Q29udGVudCArPSAiUEFT
U1xuIjsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oNTAsNTApOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJ
bmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIi
LCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJO
b1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oMzAwLDUwKTsKKworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUo
Ii50YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCIuY29udGFpbmVyIiwgIk5vU3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCIuaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpOworfTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJs
aW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRp
b24taG92ZXItY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxp
ZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5ncy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZDJmZmFjZWJkZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Ut
c2libGluZ3MuaHRtbApAQCAtMCwwICsxLDg1IEBACis8aHRtbD4KKzxzdHlsZT4KKy5jb250YWlu
ZXIgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgd2lkdGg6IDIwMHB4OworICAg
IGhlaWdodDogNjAwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworfQorLmluZXJ0IHsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy50YXJnZXQgeworICAg
IGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisuaW5lcnQ6aG92ZXIgfiAudGFyZ2V0
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKy5pbmVydDpob3ZlciB+IC5pbmVy
dCA+IC50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorLmNoaWxkIHsK
KyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9Cis8L3N0eWxlPgorPGRpdiBj
bGFzcz1jb250YWluZXI+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPXRhcmdldD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAg
IDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0PgorICAgICAgICA8ZGl2IGNsYXNzPSJpbmVy
dCBjaGlsZCI+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5l
cnQ+CisgICAgICAgIDxkaXYgY2xhc3M9InRhcmdldCBjaGlsZCI+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvZGl2PgorPC9kaXY+Cis8cHJlIGlkPWxvZz48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0
aW9uIHRlc3RTdHlsZUNoYW5nZVR5cGUoc2VsZWN0b3IsIGV4cGVjdGVkVHlwZSkKK3sKKyAgICBs
ZXQgcGFzcyA9IHRydWU7CisgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKHNlbGVjdG9yKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGNvbnN0IHR5cGUgPSB3aW5kb3cuaW50ZXJuYWxzLnN0eWxlQ2hh
bmdlVHlwZShlbGVtZW50c1tpXSk7CisgICAgICAgIGlmICh0eXBlICE9IGV4cGVjdGVkVHlwZSkg
eworICAgICAgICAgICAgbG9nLnRleHRDb250ZW50ICs9IGBGQUlMICR7c2VsZWN0b3J9IHN0eWxl
Q2hhbmdlVHlwZSB3YXMgJHt0eXBlfSBleHBlY3RlZCAke2V4cGVjdGVkVHlwZX1cbmA7CisgICAg
ICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhc3MpCisg
ICAgICAgIGxvZy50ZXh0Q29udGVudCArPSAiUEFTU1xuIjsKK30KKword2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1
cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9m
ZnNldExlZnQ7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsNTApOworCisgICAgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRl
c3RTdHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRl
c3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzAwLDUw
KTsKKworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi50YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFu
Z2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuY29udGFpbmVyIiwgIk5vU3R5bGVDaGFu
Z2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIp
OworfTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3Nl
bGVjdGlvbi1ydWJ5LXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9z
ZWxlY3Rpb24tcnVieS1ybC1leHBlY3RlZC50eHQKaW5kZXggOTU5MTVlNjYwMGYuLmFlYjFmODk2
MDkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvc2VsZWN0aW9uLXJ1Ynkt
cmwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9zZWxlY3Rpb24t
cnVieS1ybC1leHBlY3RlZC50eHQKQEAgLTksNiArOSwxMCBAQCBUZXN0aW5nIGJvdGggaGl0IHRl
c3RpbmcgYW5kIHBhaW50aW5nIG9mIHNlbGVjdGlvbi4KIFRlc3RpbmcgYm90aCBoaXQgdGVzdGlu
ZyBhbmQgcGFpbnRpbmcgb2Ygc2VsZWN0aW9uLgogVGVzdGluZyBib3RoIGhpdCB0ZXN0aW5nIGFu
ZCBwYWludGluZyBvZiBzZWxlY3Rpb24uCiAocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAw
IDYwMCkKKyAgKHJlY3QgNzI4IDggMTggMzEzKQorICAocmVjdCA3MjggOCAyOCAzMTMpCisgIChy
ZWN0IDYwMiA4IDE5MCA1ODQpCiAgIChyZWN0IDc3NCAzOCAxOCA3OSkKICkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGM0NTczMDVlODRlLi5lNjA2YTc1ZWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBA
CisyMDIwLTAzLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBBY2N1cmF0ZSBzdHlsZSBpbnZhbGlkYXRpb24gZm9yIHVzZXIgYWN0aW9uIHBzZXVkbyBjbGFz
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg4
NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTk2ODg4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSA6aG92ZXIsIDpmb2N1cywg
OmZvY3VzLXdpdGhpbiBhbmQgOmFjdGl2ZSBsYWNrIGZpbmUgZ3JhaW5lZCBpbnZhbGlkYXRpb24g
dXNpbmcKKyAgICAgICAgcnVsZSBzZXRzIGxpa2Ugd2UgZG8gd2l0aCBjbGFzcyBhbmQgYXR0cmli
dXRlIHNlbGVjdG9ycy4KKworICAgICAgICBUaGlzIGNhbiBiZSBhZGRlZCBlYXNpbHkgZm9sbG93
aW5nIHRoZSBzYW1lIHBhdHRlcm4uCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3NzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5ncy5odG1sCisK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEZv
Y3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhhc0ZvY3VzV2l0aGluKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhvdmVyZWQpOgorCisgICAgICAgIFVzZSBQc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNGb2N1c1dpdGhpbik6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVOZWVkc0xheW91dENoZWNrZXI6On5SZW5kZXJUcmVlTmVlZHNMYXlvdXRD
aGVja2VyKToKKyAgICAgICAgKiBzdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKworICAgICAgICBDb21wdXRlIGludmFs
aWRhdGlvbiBydWxlIHNldCBmb3IgYSBwc2V1ZG8gY2xhc3MgY2hhbmdlLgorCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVT
dHlsZVdpdGhSdWxlU2V0cyk6CisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5
Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKworICAgICAgICBDb2xsZWN0IHBzZXVk
byBjbGFzcyBmZWF0dXJlcywgc2ltaWxhciB0byBjbGFzc2VzL2F0dHJpYnV0ZXMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogc3R5bGUvUnVsZUZl
YXR1cmUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlUnVsZVNldHM6OmNvbGxlY3RGZWF0dXJlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMpOgor
CisgICAgICAgIE1ha2UgbW9yZSBnZW5lcmljIHRvIGFsbG93IGVudW0ga2V5LgorCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6cHNldWRvQ2xhc3NJbnZhbGlkYXRpb25S
dWxlU2V0cyBjb25zdCk6CisKKyAgICAgICAgQ3JlYXRlIHBzZXVkbyBjbGFzcyBpbnZhbGlkYXRp
b24gcnVsZXNldC4KKworICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oOgorCiAy
MDIwLTAzLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBNYWtlIHN1cmUgYSBNZWRpU3RyZWFtVHJhY2sgY2xvbmUgZG9lcyBub3QgaW50ZXJydXB0
IHRoZSBiZWluZyBjbG9uZWQgdHJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWI4YjgyM2NjN2YuLjA0
ZTJmMDNhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjM3Miw2ICsyMzcyLDcgQEAgc3R5bGUvSW5z
cGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKIHN0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5j
cHAKIHN0eWxlL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcAogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNw
cAorc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9SdWxlRGF0
YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJlLmNwcAogc3R5bGUvUnVsZVNldC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjYz
NTE5ZDYzNC4uZDRiMDI0M2Y3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4ODcsNiArNDg4Nyw3IEBACiAJCUU0NTFDNjMy
MjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFN0FBMjYyMUMzN0I2MzAwMjk2RENEIC8qIE1hcmdp
blR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYzMzIzOTQw
NThFMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIg
LyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsg
fTsKKwkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICov
OyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5
RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAqLzsgfTsKIAkJRTQ2MDVGRUMyMTY2NDgwOTAw
RTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2MDVGRUEyMTY2NDgwODAwRTUzMDQ2IC8qIFByZXdhcm1J
bmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xNTI5MCw2ICsxNTI5MSw4IEBACiAJCUU0NTM5MDM0MEVBRkQ2MzcwMDM2OTVDOCAv
KiBTY3JvbGxWaWV3SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2Nyb2xsVmlld0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1Mzkw
M0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDVBNkM3MzI0MTdCQTRDMDA2RTRDRDUgLyog
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnND
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRp
b25zQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QUIyMzc0OTI3
QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNDVCQTZCMjIzNzYyMjdFMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUFkanVzdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjYwLDYgKzI3MjYzLDggQEAKIAkJCQlGQkRC
NjFBMDE2RDYwMzdFMDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0b3IuaCAqLywKIAkJCQlFNEFC
QUJFNTIzNjFBMzQyMDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmNwcCAqLywKIAkJCQlFNEFC
QUJFMjIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmggKi8sCisJCQkJRTQ1QTZD
NzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAq
LywKKwkJCQlFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaCAqLywKIAkJCQlFNDg2M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEu
Y3BwICovLAogCQkJCUU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovLAog
CQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCkBAIC0z
MTE1OCw2ICszMTE2Myw3IEBACiAJCQkJQjJGQTNENTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENTkwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNE
NUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2xpcFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNDVBNkM3NzI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdEZWZzRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjVmYzkxMDA5
MmEuLmJkODM3ZmYwZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04NSw2ICs4NSw3IEBA
CiAjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9pbnRl
ckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVu
dGVkRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJCYWNraW5nLmgiCkBAIC02MzEsMTcgKzYzMiwxNSBAQCB2b2lkIEVsZW1lbnQ6OnNldEFjdGl2
ZShib29sIGZsYWcsIGJvb2wgcGF1c2UpCiB7CiAgICAgaWYgKGZsYWcgPT0gYWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0
QWN0aXZlKCp0aGlzLCBmbGFnKTsKLQotICAgIGF1dG8qIHJlbmRlclN0eWxlID0gcmVuZGVyT3JE
aXNwbGF5Q29udGVudHNTdHlsZSgpOwotICAgIGJvb2wgcmVhY3RzVG9QcmVzcyA9IChyZW5kZXJT
dHlsZSAmJiByZW5kZXJTdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZSgpKSB8fCBzdHlsZUFmZmVjdGVk
QnlBY3RpdmUoKTsKLSAgICBpZiAocmVhY3RzVG9QcmVzcykKLSAgICAgICAgaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NBY3RpdmUpOworICAgICAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNl
dEFjdGl2ZSgqdGhpcywgZmxhZyk7CisgICAgfQogCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBib29sIHJlYWN0c1RvUHJlc3MgPSBmYWxzZTsKICAgICBpZiAo
cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUo
KS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZSkp
CiAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOwogCkBAIC02NTEsNiArNjUwLDkgQEAgdm9p
ZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQogICAgIGlmICghZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzSW1tZWRpYXRlSW52YWxp
ZGF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgp
LmFmZmVjdGVkQnlBY3RpdmUoKSkKKyAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRydWU7CisKICAg
ICBpZiAocmVhY3RzVG9QcmVzcyAmJiBwYXVzZSkgewogICAgICAgICAvLyBUaGUgZGVsYXkgaGVy
ZSBpcyBzdWJ0bGUuIEl0IHJlbGllcyBvbiBhbiBhc3N1bXB0aW9uLCBuYW1lbHkgdGhhdCB0aGUg
YW1vdW50IG9mIHRpbWUgaXQgdGFrZXMKICAgICAgICAgLy8gdG8gcmVwYWludCB0aGUgImRvd24i
IHN0YXRlIG9mIHRoZSBjb250cm9sIGlzIGFib3V0IHRoZSBzYW1lIHRpbWUgYXMgaXQgd291bGQg
dGFrZSB0byByZXBhaW50IHRoZQpAQCAtNjgwLDkgKzY4MiwxMiBAQCB2b2lkIEVsZW1lbnQ6OnNl
dEZvY3VzKGJvb2wgZmxhZykKIHsKICAgICBpZiAoZmxhZyA9PSBmb2N1c2VkKCkpCiAgICAgICAg
IHJldHVybjsKKyAgICB7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbiBmb2N1c1N0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NGb2N1cyk7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBk
aXJlY3RGb2N1c1N0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NEaXJlY3RGb2N1cyk7CiAKLSAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNl
dEZvY3VzZWQoKnRoaXMsIGZsYWcpOwotICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsK
KyAgICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRGb2N1c2VkKCp0aGlz
LCBmbGFnKTsKKyAgICB9CiAKICAgICAvLyBTaGFkb3cgaG9zdCB3aXRoIGEgc2xvdCB0aGF0IGNv
bnRhaW4gZm9jdXNlZCBlbGVtZW50IGlzIG5vdCBjb25zaWRlcmVkIGZvY3VzZWQuCiAgICAgZm9y
IChhdXRvKiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3Qt
Pmhvc3QoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewpAQCAtNjkwLDM0ICs2OTUsMzAgQEAg
dm9pZCBFbGVtZW50OjpzZXRGb2N1cyhib29sIGZsYWcpCiAgICAgICAgIHJvb3QtPmhvc3QoKS0+
aW52YWxpZGF0ZVN0eWxlKCk7CiAgICAgfQogCi0gICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0g
dGhpczsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2Vk
VHJlZSgpKQorICAgIGZvciAoYXV0byogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1lbnQg
PSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKSkKICAgICAgICAgZWxlbWVu
dC0+c2V0SGFzRm9jdXNXaXRoaW4oZmxhZyk7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0SG92ZXJl
ZChib29sIGZsYWcpCit2b2lkIEVsZW1lbnQ6OnNldEhhc0ZvY3VzV2l0aGluKGJvb2wgZmxhZykK
IHsKLSAgICBpZiAoZmxhZyA9PSBob3ZlcmVkKCkpCisgICAgaWYgKGhhc0ZvY3VzV2l0aGluKCkg
PT0gZmxhZykKICAgICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NGb2N1c1dpdGhpbik7CisgICAgICAgIHNldEZsYWcoZmxhZywgSGFzRm9j
dXNXaXRoaW4pOworICAgIH0KK30KIAotICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRz
KCkuc2V0SG92ZXJlZCgqdGhpcywgZmxhZyk7Ci0KLSAgICBhdXRvKiBzdHlsZSA9IHJlbmRlck9y
RGlzcGxheUNvbnRlbnRzU3R5bGUoKTsKLSAgICBpZiAoc3R5bGUgJiYgKHN0eWxlLT5hZmZlY3Rl
ZEJ5SG92ZXIoKSB8fCBjaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcigpKSkKLSAgICAgICAgaW52YWxp
ZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotCi0gICAgaWYgKCFyZW5kZXJlcigpKSB7Ci0gICAgICAg
IC8vIFdoZW4gc2V0dGluZyBob3ZlciB0byBmYWxzZSwgdGhlIHN0eWxlIG5lZWRzIHRvIGJlIHJl
Y2FsYydkIGV2ZW4gd2hlbgotICAgICAgICAvLyB0aGVyZSdzIG5vIHJlbmRlcmVyIChpbWFnaW5l
IHNldHRpbmcgZGlzcGxheTpub25lIGluIHRoZSA6aG92ZXIgY2xhc3MsCi0gICAgICAgIC8vIGlm
IGEgbmlsIHJlbmRlcmVyIHdvdWxkIHByZXZlbnQgdGhpcyBlbGVtZW50IGZyb20gcmVjYWxjdWxh
dGluZyBpdHMKLSAgICAgICAgLy8gc3R5bGUsIGl0IHdvdWxkIG5ldmVyIGdvIGJhY2sgdG8gaXRz
IG5vcm1hbCBzdHlsZSBhbmQgcmVtYWluCi0gICAgICAgIC8vIHN0dWNrIGluIGl0cyBob3ZlcmVk
IHN0eWxlKS4KLSAgICAgICAgaWYgKCFmbGFnICYmICFzdHlsZSkKLSAgICAgICAgICAgIGludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLQordm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wg
ZmxhZykKK3sKKyAgICBpZiAoZmxhZyA9PSBob3ZlcmVkKCkpCiAgICAgICAgIHJldHVybjsKKyAg
ICB7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUlu
dmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIpOworICAgICAg
ICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVyZWQoKnRoaXMsIGZsYWcp
OwogICAgIH0KIAotICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQorICAgIGlmIChhdXRv
KiBzdHlsZSA9IHJlbmRlclN0eWxlKCk7IHN0eWxlICYmIHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkp
CiAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpIb3ZlclN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNmZk
NTk5M2U2YmQuLmE3ZGVhZmUzY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTg0NiwxNSArODQ2
LDYgQEAgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50
LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKTsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudDo6
c2V0SGFzRm9jdXNXaXRoaW4oYm9vbCBmbGFnKQotewotICAgIGlmIChoYXNGb2N1c1dpdGhpbigp
ID09IGZsYWcpCi0gICAgICAgIHJldHVybjsKLSAgICBzZXRGbGFnKGZsYWcsIEhhc0ZvY3VzV2l0
aGluKTsKLSAgICBpZiAoc3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKSkKLSAgICAgICAgaW52
YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBRdWFs
aWZpZWROYW1lcz4KIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZXMmLi4uIG5h
bWVzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5iNzE1YmM5YTM1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmgiCisKKyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK3ZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb246OmNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBw
c2V1ZG9DbGFzcykKK3sKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVDdXJyZW50ID0gZmFsc2U7
CisgICAgYm9vbCBtYXlBZmZlY3RTdHlsZUluU2hhZG93VHJlZSA9IGZhbHNlOworCisgICAgdHJh
dmVyc2VSdWxlRmVhdHVyZXMobV9lbGVtZW50LCBbJl0gKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBm
ZWF0dXJlcywgYm9vbCBtYXlBZmZlY3RTaGFkb3dUcmVlKSB7CisgICAgICAgIGlmIChtYXlBZmZl
Y3RTaGFkb3dUcmVlICYmIGZlYXR1cmVzLnBzZXVkb0NsYXNzUnVsZXMuY29udGFpbnMocHNldWRv
Q2xhc3MpKQorICAgICAgICAgICAgbWF5QWZmZWN0U3R5bGVJblNoYWRvd1RyZWUgPSB0cnVlOwor
ICAgICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBmZWF0dXJlcy5wc2V1ZG9DbGFz
c2VzQWZmZWN0aW5nSG9zdC5jb250YWlucyhwc2V1ZG9DbGFzcykpCisgICAgICAgICAgICBzaG91
bGRJbnZhbGlkYXRlQ3VycmVudCA9IHRydWU7CisgICAgfSk7CisKKyAgICBpZiAobWF5QWZmZWN0
U3R5bGVJblNoYWRvd1RyZWUpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBmaW5l
LWdyYWluZWQgaW52YWxpZGF0aW9uIGZvciBzaGFkb3cgdHJlZS4KKyAgICAgICAgbV9lbGVtZW50
LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkSW52
YWxpZGF0ZUN1cnJlbnQpCisgICAgICAgIG1fZWxlbWVudC5pbnZhbGlkYXRlU3R5bGUoKTsKKwor
ICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygp
OworICAgIGlmIChhdXRvKiBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHJ1bGVTZXRzLnBzZXVkb0Ns
YXNzSW52YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3MpKSB7CisgICAgICAgIGZvciAoYXV0
byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykKKyAgICAgICAg
ICAgIEludmFsaWRhdG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fbWF0Y2hFbGVtZW50
UnVsZVNldHMsIGludmFsaWRhdGlvblJ1bGVTZXQpOworICAgIH0KK30KKwordm9pZCBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCkKK3sK
KyAgICBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVdpdGhNYXRjaEVsZW1lbnRSdWxlU2V0cyhtX2Vs
ZW1lbnQsIG1fbWF0Y2hFbGVtZW50UnVsZVNldHMpOworfQorCit9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWI0NzkyZmM1MTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIlN0eWxl
SW52YWxpZGF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworCituYW1lc3BhY2UgU3R5bGUgeworCitjbGFzcyBQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbiB7CitwdWJsaWM6CisgICAgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24o
RWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIH5Qc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbigpOworCitwcml2YXRlOgorICAgIHZvaWQgY29tcHV0ZUludmFs
aWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICB2b2lkIGludmFsaWRh
dGVTdHlsZVdpdGhSdWxlU2V0cygpOworCisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsKKyAg
ICBFbGVtZW50JiBtX2VsZW1lbnQ7CisKKyAgICBJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVs
ZVNldHMgbV9tYXRjaEVsZW1lbnRSdWxlU2V0czsKK307CisKK2lubGluZSBQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYg
ZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCisg
ICAgOiBtX2lzRW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKKyAgICAs
IG1fZWxlbWVudChlbGVtZW50KQorCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIGNvbXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlKTsKKyAgICBp
bnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsKK30KKworaW5saW5lIFBzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uOjp+UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oKQoreworICAg
IGlmICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlU3R5bGVX
aXRoUnVsZVNldHMoKTsKK30KKworfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5j
cHAKaW5kZXggN2RmZmRhZWMwYjYuLmUzZmVjNWNkNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVs
ZUZlYXR1cmUuY3BwCkBAIC0xNTMsNyArMTUzLDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6cmVj
dXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYgc2UK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpCisgICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLnBz
ZXVkb0NsYXNzZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNlbGVjdG9yLT5wc2V1ZG9DbGFzc1R5
cGUoKSwgbWF0Y2hFbGVtZW50KSk7CiAKICAgICAgICAgaWYgKCFzZWxlY3RvckZlYXR1cmVzLmhh
c1NpYmxpbmdTZWxlY3RvciAmJiBzZWxlY3Rvci0+aXNTaWJsaW5nU2VsZWN0b3IoKSkKICAgICAg
ICAgICAgIHNlbGVjdG9yRmVhdHVyZXMuaGFzU2libGluZ1NlbGVjdG9yID0gdHJ1ZTsKQEAgLTE5
OSw2ICsyMDAsMTMgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0
IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVs
ZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2Vs
ZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkp
OwogICAgIH0KKyAgICBmb3IgKGF1dG8mIGtleUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5w
c2V1ZG9DbGFzc2VzKSB7CisgICAgICAgIHBzZXVkb0NsYXNzUnVsZXMuZW5zdXJlKGtleUFuZE1h
dGNoLmZpcnN0LCBbXSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVs
ZUZlYXR1cmU+PigpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZCh7IHJ1bGVE
YXRhLCBrZXlBbmRNYXRjaC5zZWNvbmQgfSk7CisgICAgICAgIGlmIChrZXlBbmRNYXRjaC5zZWNv
bmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQorICAgICAgICAgICAgcHNldWRvQ2xhc3Nlc0FmZmVj
dGluZ0hvc3QuYWRkKGtleUFuZE1hdGNoLmZpcnN0KTsKKyAgICB9CiB9CiAKIHZvaWQgUnVsZUZl
YXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCkBAIC0yMjQsNiArMjMy
LDEzIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3Ro
ZXIpCiAgICAgfQogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1
dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5l
bmQoKSk7CiAKKyAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLnBzZXVkb0NsYXNz
UnVsZXMpIHsKKyAgICAgICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtl
eSwgW10geworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVl
UGFpci52YWx1ZSk7CisgICAgfQorICAgIHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChv
dGhlci5wc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5wc2V1ZG9DbGFz
c2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CisKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2Vz
Rmlyc3RMaW5lUnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNGaXJz
dExldHRlclJ1bGVzID0gdXNlc0ZpcnN0TGV0dGVyUnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGV0
dGVyUnVsZXM7CiB9CkBAIC0yNDgsNiArMjYzLDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y2xl
YXIoKQogICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7CiAgICAgYXR0cmlidXRlUnVs
ZXMuY2xlYXIoKTsKICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5jbGVhcigpOworICAgIHBz
ZXVkb0NsYXNzUnVsZXMuY2xlYXIoKTsKKyAgICBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5j
bGVhcigpOwogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IGZhbHNlOwogICAgIHVzZXNGaXJzdExl
dHRlclJ1bGVzID0gZmFsc2U7CiB9CkBAIC0yNjAsNiArMjc3LDggQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6c2hyaW5rVG9GaXQoKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKICAgICBm
b3IgKGF1dG8mIHJ1bGVzIDogYXR0cmlidXRlUnVsZXMudmFsdWVzKCkpCiAgICAgICAgIHJ1bGVz
LT5zaHJpbmtUb0ZpdCgpOworICAgIGZvciAoYXV0byYgcnVsZXMgOiBwc2V1ZG9DbGFzc1J1bGVz
LnZhbHVlcygpKQorICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgU3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCmluZGV4IGNjNjdmM2ZiMDEy
Li40NDE4ZmY2YWJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCkBAIC03NSw4ICs3
NSwxMCBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewogICAgIAogICAgIEhhc2hNYXA8QXRvbVN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZT4+PiBjbGFzc1J1bGVzOwog
ICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVy
ZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcj4+PiBhdHRyaWJ1dGVSdWxlczsKKyAgICBIYXNoTWFw
PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVs
ZUZlYXR1cmU+PiwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBw
c2V1ZG9DbGFzc1J1bGVzOwogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gY2xhc3Nlc0FmZmVjdGlu
Z0hvc3Q7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdDsK
KyAgICBIYXNoU2V0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIFdURjo6SW50SGFzaDxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3Q7
CiAKICAgICBib29sIHVzZXNGaXJzdExpbmVSdWxlcyB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2Vz
Rmlyc3RMZXR0ZXJSdWxlcyB7IGZhbHNlIH07CkBAIC05MCw2ICs5Miw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBNYXRjaEVsZW1lbnQ+LCAzMj4g
Y2xhc3NlczsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBDU1NTZWxlY3RvciosIE1h
dGNoRWxlbWVudD4sIDMyPiBhdHRyaWJ1dGVzOworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIE1hdGNoRWxlbWVudD4sIDMyPiBwc2V1ZG9DbGFz
c2VzOwogICAgIH07CiAgICAgdm9pZCByZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxl
Y3RvcihTZWxlY3RvckZlYXR1cmVzJiwgY29uc3QgQ1NTU2VsZWN0b3ImLCBNYXRjaEVsZW1lbnQg
PSBNYXRjaEVsZW1lbnQ6OlN1YmplY3QpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlUnVsZVNldHMuY3BwCmluZGV4IGUzMTNkMDIyOWE2Li5kYjNiMmJhYWExNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC0xOTYsMTMgKzE5
NiwxNSBAQCB2b2lkIFNjb3BlUnVsZVNldHM6OmNvbGxlY3RGZWF0dXJlcygpIGNvbnN0CiAKICAg
ICBtX2NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKICAgICBtX2F0dHJpYnV0ZUlu
dmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CisgICAgbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlv
blJ1bGVTZXRzLmNsZWFyKCk7CisKICAgICBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JT
dHlsZUF0dHJpYnV0ZSA9IFdURjo6bnVsbG9wdDsKIAogICAgIG1fZmVhdHVyZXMuc2hyaW5rVG9G
aXQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUnVsZUZlYXR1cmVUeXBlPgotc3RhdGljIFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29u
c3QgQXRvbVN0cmluZyYga2V5LCBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+PiYgcnVsZVNldE1hcCwgY29uc3QgSGFzaE1hcDxB
dG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlVHlwZT4+PiYgcnVs
ZUZlYXR1cmVzKQordGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgUnVsZUZlYXR1
cmVUeXBlLCB0eXBlbmFtZSBIYXNoLCB0eXBlbmFtZSBIYXNoVHJhaXRzPgorc3RhdGljIFZlY3Rv
cjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3Qg
S2V5VHlwZSYga2V5LCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4+LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVsZVNldE1hcCwgY29uc3Qg
SGFzaE1hcDxLZXlUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlVHlwZT4+
LCBIYXNoLCBIYXNoVHJhaXRzPiYgcnVsZUZlYXR1cmVzKQogewogICAgIHJldHVybiBydWxlU2V0
TWFwLmVuc3VyZShrZXksIFsmXSAoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRh
dGlvblJ1bGVTZXQ+PiB7CiAgICAgICAgIGF1dG8qIGZlYXR1cmVzID0gcnVsZUZlYXR1cmVzLmdl
dChrZXkpOwpAQCAtMjQxLDYgKzI0MywxMSBAQCBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4qIFNjb3BlUnVsZVNldHM6OmF0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKAogICAg
IHJldHVybiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhhdHRyaWJ1dGVOYW1lLCBtX2F0dHJp
YnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzLCBtX2ZlYXR1cmVzLmF0dHJpYnV0ZVJ1bGVzKTsKIH0K
IAorY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBTY29wZVJ1bGVTZXRzOjpwc2V1
ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUg
cHNldWRvQ2xhc3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKHBzZXVkb0NsYXNzLCBtX3BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMsIG1fZmVh
dHVyZXMucHNldWRvQ2xhc3NSdWxlcyk7Cit9CisKIGJvb2wgU2NvcGVSdWxlU2V0czo6aGFzQ29t
cGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbXB1
dGUgPSBbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1
bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRl
eCA4Y2NjZmFhYWRkNC4uZTRlM2Y1YzYyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGVSdWxlU2V0cy5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25z
dCBBdG9tU3RyaW5nJiBjbGFzc05hbWUpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxJbnZhbGlk
YXRpb25SdWxlU2V0PiogYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0
cmluZyYgYXR0cmlidXRlTmFtZSkgY29uc3Q7CisgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+KiBwc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGUpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNDb21wbGV4U2VsZWN0b3JzRm9y
U3R5bGVBdHRyaWJ1dGUoKSBjb25zdDsKIApAQCAtMTAxLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBSZWZQdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CiAg
ICAgbXV0YWJsZSBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4+PiBtX2NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHM7CiAgICAgbXV0
YWJsZSBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0
aW9uUnVsZVNldD4+PiBtX2F0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzOworICAgIG11dGFi
bGUgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PiwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGU+PiBtX3BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHM7CiAKICAg
ICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0
eWxlQXR0cmlidXRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393271</attachid>
            <date>2020-03-11 12:08:52 -0700</date>
            <delta_ts>2020-03-12 03:41:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pseudo-class-invalidation-6.patch</filename>
            <type>text/plain</type>
            <size>31634</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2E2ZmI0ZDM3MS4uYTkyNjQ0NTg3MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wMy0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWNjdXJhdGUgc3R5bGUgaW52YWxpZGF0aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3Nl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlv
bi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1j
aGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9z
dHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWw6IEFkZGVkLgorCiAy
MDIwLTAzLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBNYWtlIHN1cmUgYSBNZWRpU3RyZWFtVHJhY2sgY2xvbmUgZG9lcyBub3QgaW50ZXJydXB0
IHRoZSBiZWluZyBjbG9uZWQgdHJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1k
ZXNjZW5kYW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjAzMzViYmViZDlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3IEBACitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zl
ci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTA3NDdmNTc0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2Nl
bmRhbnRzLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+Cis8c3R5bGU+CisuY29udGFpbmVy
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIHdpZHRoOiAyMDBweDsKKyAgICBo
ZWlnaHQ6IDYwMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKK30KKy5pbmVydCB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisudGFyZ2V0IHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMTAw
cHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmNvbnRhaW5lcjpob3ZlciAudGFyZ2V0
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKy5jaGlsZCB7CisgICAgd2lkdGg6
IDUwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9Y29udGFp
bmVyPgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz10
YXJnZXQ+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPXRhcmdldD4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW5lcnQgY2hpbGQiPgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJ0YXJnZXQgY2hpbGQiPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4K
KzwvZGl2PgorPHByZSBpZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKHNlbGVjdG9yLCBleHBlY3RlZFR5cGUpCit7CisgICAgbGV0IHBhc3MgPSB0
cnVlOworICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxl
Y3Rvcik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgewor
ICAgICAgICBjb25zdCB0eXBlID0gd2luZG93LmludGVybmFscy5zdHlsZUNoYW5nZVR5cGUoZWxl
bWVudHNbaV0pOworICAgICAgICBpZiAodHlwZSAhPSBleHBlY3RlZFR5cGUpIHsKKyAgICAgICAg
ICAgIGxvZy50ZXh0Q29udGVudCArPSBgRkFJTCAke3NlbGVjdG9yfSBzdHlsZUNoYW5nZVR5cGUg
d2FzICR7dHlwZX0gZXhwZWN0ZWQgJHtleHBlY3RlZFR5cGV9XG5gOworICAgICAgICAgICAgcGFz
cyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChwYXNzKQorICAgICAgICBsb2cu
dGV4dENvbnRlbnQgKz0gIlBBU1NcbiI7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAo
KSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0Owor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLDUwKTsKKworICAgIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoIi50YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCIuY29udGFpbmVyIiwgIk5vU3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCIuaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpOworCisgICAgZG9jdW1lbnQuYm9keS5v
ZmZzZXRMZWZ0OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDMwMCw1MCk7CisKKyAgICB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIik7CisgICAg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0eWxlQ2hhbmdlIik7CisgICAg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKTsKK307Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlv
bi1ob3Zlci1jaGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAzMzViYmViZDlmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWhv
dmVyLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitQQVNTCitQ
QVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGlu
Z3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmQyZmZhY2Vi
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlk
YXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPGh0bWw+
Cis8c3R5bGU+CisuY29udGFpbmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAg
IHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKK30KKy5pbmVydCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgd2lkdGg6IDEw
MHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmlu
ZXJ0OmhvdmVyIH4gLnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9Cisu
aW5lcnQ6aG92ZXIgfiAuaW5lcnQgPiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsKK30KKy5jaGlsZCB7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0OiA1MHB4Owor
fQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+
CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgPC9kaXY+CisgICAgPGRp
diBjbGFzcz1pbmVydD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPXRhcmdldD4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iaW5lcnQgY2hpbGQiPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgICAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgY2hpbGQi
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHByZSBpZD1sb2c+PC9wcmU+
CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0U3R5bGVDaGFuZ2VUeXBlKHNlbGVjdG9yLCBleHBl
Y3RlZFR5cGUpCit7CisgICAgbGV0IHBhc3MgPSB0cnVlOworICAgIGNvbnN0IGVsZW1lbnRzID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBjb25zdCB0eXBlID0gd2luZG93
LmludGVybmFscy5zdHlsZUNoYW5nZVR5cGUoZWxlbWVudHNbaV0pOworICAgICAgICBpZiAodHlw
ZSAhPSBleHBlY3RlZFR5cGUpIHsKKyAgICAgICAgICAgIGxvZy50ZXh0Q29udGVudCArPSBgRkFJ
TCAke3NlbGVjdG9yfSBzdHlsZUNoYW5nZVR5cGUgd2FzICR7dHlwZX0gZXhwZWN0ZWQgJHtleHBl
Y3RlZFR5cGV9XG5gOworICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIGlmIChwYXNzKQorICAgICAgICBsb2cudGV4dENvbnRlbnQgKz0gIlBBU1NcbiI7Cit9
CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgcmV0dXJuOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KDUwLDUwKTsKKworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi50YXJnZXQiLCAiSW5saW5lU3R5
bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuY29udGFpbmVyIiwgIk5vU3R5
bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuaW5lcnQiLCAiTm9TdHlsZUNo
YW5nZSIpOworCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKDMwMCw1MCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIudGFyZ2V0
IiwgIklubGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmNvbnRh
aW5lciIsICJOb1N0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0
IiwgIk5vU3R5bGVDaGFuZ2UiKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNDU3MzA1
ZTg0ZS4uZTYwNmE3NWVmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAyMC0wMy0x
MSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQWNjdXJhdGUg
c3R5bGUgaW52YWxpZGF0aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3NlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgOmhvdmVyLCA6Zm9jdXMsIDpmb2N1cy13aXRo
aW4gYW5kIDphY3RpdmUgbGFjayBmaW5lIGdyYWluZWQgaW52YWxpZGF0aW9uIHVzaW5nCisgICAg
ICAgIHJ1bGUgc2V0cyBsaWtlIHdlIGRvIHdpdGggY2xhc3MgYW5kIGF0dHJpYnV0ZSBzZWxlY3Rv
cnMuCisKKyAgICAgICAgVGhpcyBjYW4gYmUgYWRkZWQgZWFzaWx5IGZvbGxvd2luZyB0aGUgc2Ft
ZSBwYXR0ZXJuLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24t
aG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0
eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MuaHRtbAorCisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRGb2N1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNGb2N1c1dpdGhpbik6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpzZXRIb3ZlcmVkKToKKworICAgICAgICBVc2UgUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0SGFzRm9jdXNXaXRoaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
cmVlTmVlZHNMYXlvdXRDaGVja2VyOjp+UmVuZGVyVHJlZU5lZWRzTGF5b3V0Q2hlY2tlcik6Cisg
ICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6
Y29tcHV0ZUludmFsaWRhdGlvbik6CisKKyAgICAgICAgQ29tcHV0ZSBpbnZhbGlkYXRpb24gcnVs
ZSBzZXQgZm9yIGEgcHNldWRvIGNsYXNzIGNoYW5nZS4KKworICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVs
ZVNldHMpOgorICAgICAgICAqIHN0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246On5Qc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbik6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGZWF0
dXJlc0Zyb21TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZUZlYXR1cmVT
ZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisKKyAgICAgICAgQ29sbGVjdCBwc2V1ZG8gY2xhc3MgZmVh
dHVyZXMsIHNpbWlsYXIgdG8gY2xhc3Nlcy9hdHRyaWJ1dGVzLgorCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UnVsZUZlYXR1cmVTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UnVsZUZlYXR1cmVTZXQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVh
dHVyZVNldDo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIHN0eWxlL1J1bGVGZWF0dXJlLmg6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKToKKworICAgICAgICBN
YWtlIG1vcmUgZ2VuZXJpYyB0byBhbGxvdyBlbnVtIGtleS4KKworICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlUnVsZVNldHM6OnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMgY29u
c3QpOgorCisgICAgICAgIENyZWF0ZSBwc2V1ZG8gY2xhc3MgaW52YWxpZGF0aW9uIHJ1bGVzZXQu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaDoKKwogMjAyMC0wMy0xMCAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFrZSBz
dXJlIGEgTWVkaVN0cmVhbVRyYWNrIGNsb25lIGRvZXMgbm90IGludGVycnVwdCB0aGUgYmVpbmcg
Y2xvbmVkIHRyYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFiOGI4MjNjYzdmLi4wNGUyZjAzYWM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIzNzIsNiArMjM3Miw3IEBAIHN0eWxlL0luc3BlY3RvckNTU09N
V3JhcHBlcnMuY3BwCiBzdHlsZS9NYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY3BwCiBzdHlsZS9Q
YWdlUnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKK3N0eWxlL1Bz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvUnVsZURhdGEuY3BwCiBzdHls
ZS9SdWxlRmVhdHVyZS5jcHAKIHN0eWxlL1J1bGVTZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzI2MzUxOWQ2MzQuLmQ0
YjAyNDNmN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00ODg3LDYgKzQ4ODcsNyBAQAogCQlFNDUxQzYzMjIzOTQwMzFBMDA5
OTMxOTAgLyogTWFyZ2luVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZGRTdBQTI2MjFDMzdCNjMwMDI5NkRDRCAvKiBNYXJnaW5UeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NTFDNjM0
MjM5NDA1OEYwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MUM2MzMyMzk0MDU4RTAwOTkzMTkw
IC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9y
UXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi87IH07CisJCUU0NUE2
Qzc3MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QTZDNzYyNDE3
QkE1OTAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJ
CUU0NUJBNkFBMjM3NDkyNkMwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NUJBNkE4MjM3
NDkyNkIwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCAqLzsgfTsKIAkJRTQ1
QkE2QjYyMzc2MjJBMzAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAv
KiBTdHlsZUFkanVzdGVyLmggKi87IH07CiAJCUU0NjA1RkVDMjE2NjQ4MDkwMEU1MzA0NiAvKiBQ
cmV3YXJtSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0NjA1RkVBMjE2NjQ4MDgwMEU1MzA0NiAvKiBQcmV3YXJtSW5mb3JtYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTUy
OTAsNiArMTUyOTEsOCBAQAogCQlFNDUzOTAzNDBFQUZENjM3MDAzNjk1QzggLyogU2Nyb2xsVmll
d0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFZp
ZXdJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTM5MDNDMEVBRkQ2Mzcw
MDM2OTVDOCAvKiBXaWRnZXRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXaWRnZXRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTM5
MEFEMEVBRkY0QjUwMDM2OTVDOCAvKiBTeXN0ZW1NZW1vcnlJT1MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtTWVtb3J5SU9TLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTQ1QTZDNzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTQ1QTZDNzYyNDE3QkE1OTAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
NUJBNkE4MjM3NDkyNkIwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NUJBNkFCMjM3NDkyN0IwMDRERkMwNyAv
KiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0Y2hl
ZERlY2xhcmF0aW9uc0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1
QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVBZGp1c3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNzI2MCw2ICsyNzI2Myw4IEBACiAJCQkJRkJEQjYxQTAxNkQ2MDM3
RTAwQkIzMzk0IC8qIFBhZ2VSdWxlQ29sbGVjdG9yLmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0
MjAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5jcHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMy
OTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovLAorCQkJCUU0NUE2QzczMjQxN0JBNEMw
MDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCisJCQkJRTQ1
QTZDNzYyNDE3QkE1OTAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgg
Ki8sCiAJCQkJRTQ4NjNDRkEyMzg0MkU4NzAwOTcyMTU4IC8qIFJ1bGVEYXRhLmNwcCAqLywKIAkJ
CQlFNDg2M0NGRDIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCAqLywKIAkJCQlBNzlCQUQ5
RDE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuY3BwICovLApAQCAtMzExNTgsNiArMzEx
NjMsNyBAQAogCQkJCUIyRkEzRDU3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDU5MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDVCMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0NsaXBQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1
QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNE
NjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ3Vyc29yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNENjMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRGVmc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI1ZmM5MTAwOTJhLi5iZDgzN2Zm
MGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUg
IlBvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBvaW50ZXJFdmVudC5oIgog
I2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5o
IgpAQCAtNjMxLDE3ICs2MzIsMTUgQEAgdm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBmbGFn
LCBib29sIHBhdXNlKQogewogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhp
cywgZmxhZyk7Ci0KLSAgICBhdXRvKiByZW5kZXJTdHlsZSA9IHJlbmRlck9yRGlzcGxheUNvbnRl
bnRzU3R5bGUoKTsKLSAgICBib29sIHJlYWN0c1RvUHJlc3MgPSAocmVuZGVyU3R5bGUgJiYgcmVu
ZGVyU3R5bGUtPmFmZmVjdGVkQnlBY3RpdmUoKSkgfHwgc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCk7
Ci0gICAgaWYgKHJlYWN0c1RvUHJlc3MpCi0gICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWUoKTsKKyAgICB7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
biBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZl
KTsKKyAgICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRBY3RpdmUoKnRo
aXMsIGZsYWcpOworICAgIH0KIAogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgYm9vbCByZWFjdHNUb1ByZXNzID0gZmFsc2U7CiAgICAgaWYgKHJlbmRlcmVyKCkt
PnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpICYmIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFu
Z2VkKCpyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUpKQogICAgICAgICBy
ZWFjdHNUb1ByZXNzID0gdHJ1ZTsKIApAQCAtNjUxLDYgKzY1MCw5IEBAIHZvaWQgRWxlbWVudDo6
c2V0QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVzZSkKICAgICBpZiAoIWRvY3VtZW50KCkucGFn
ZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c0ltbWVkaWF0ZUludmFsaWRhdGlvbigpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5hZmZlY3RlZEJ5
QWN0aXZlKCkpCisgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOworCiAgICAgaWYgKHJlYWN0
c1RvUHJlc3MgJiYgcGF1c2UpIHsKICAgICAgICAgLy8gVGhlIGRlbGF5IGhlcmUgaXMgc3VidGxl
LiBJdCByZWxpZXMgb24gYW4gYXNzdW1wdGlvbiwgbmFtZWx5IHRoYXQgdGhlIGFtb3VudCBvZiB0
aW1lIGl0IHRha2VzCiAgICAgICAgIC8vIHRvIHJlcGFpbnQgdGhlICJkb3duIiBzdGF0ZSBvZiB0
aGUgY29udHJvbCBpcyBhYm91dCB0aGUgc2FtZSB0aW1lIGFzIGl0IHdvdWxkIHRha2UgdG8gcmVw
YWludCB0aGUKQEAgLTY4MCw5ICs2ODIsMTIgQEAgdm9pZCBFbGVtZW50OjpzZXRGb2N1cyhib29s
IGZsYWcpCiB7CiAgICAgaWYgKGZsYWcgPT0gZm9jdXNlZCgpKQogICAgICAgICByZXR1cm47Cisg
ICAgeworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZm9jdXNT
dHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXMpOwor
ICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGlyZWN0Rm9jdXNT
dHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyZWN0Rm9j
dXMpOwogCi0gICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRGb2N1c2VkKCp0
aGlzLCBmbGFnKTsKLSAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgICAgIGRv
Y3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7Cisg
ICAgfQogCiAgICAgLy8gU2hhZG93IGhvc3Qgd2l0aCBhIHNsb3QgdGhhdCBjb250YWluIGZvY3Vz
ZWQgZWxlbWVudCBpcyBub3QgY29uc2lkZXJlZCBmb2N1c2VkLgogICAgIGZvciAoYXV0byogcm9v
dCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5ob3N0KCktPmNv
bnRhaW5pbmdTaGFkb3dSb290KCkpIHsKQEAgLTY5MCwzNCArNjk1LDMwIEBAIHZvaWQgRWxlbWVu
dDo6c2V0Rm9jdXMoYm9vbCBmbGFnKQogICAgICAgICByb290LT5ob3N0KCktPmludmFsaWRhdGVT
dHlsZSgpOwogICAgIH0KIAotICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKSkKKyAg
ICBmb3IgKGF1dG8qIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpCiAgICAgICAgIGVsZW1lbnQtPnNldEhhc0Zv
Y3VzV2l0aGluKGZsYWcpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFn
KQordm9pZCBFbGVtZW50OjpzZXRIYXNGb2N1c1dpdGhpbihib29sIGZsYWcpCiB7Ci0gICAgaWYg
KGZsYWcgPT0gaG92ZXJlZCgpKQorICAgIGlmIChoYXNGb2N1c1dpdGhpbigpID09IGZsYWcpCiAg
ICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzRm9jdXNXaXRoaW4pOworICAgICAgICBzZXRGbGFnKGZsYWcsIEhhc0ZvY3VzV2l0aGluKTsK
KyAgICB9Cit9CiAKLSAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVy
ZWQoKnRoaXMsIGZsYWcpOwotCi0gICAgYXV0byogc3R5bGUgPSByZW5kZXJPckRpc3BsYXlDb250
ZW50c1N0eWxlKCk7Ci0gICAgaWYgKHN0eWxlICYmIChzdHlsZS0+YWZmZWN0ZWRCeUhvdmVyKCkg
fHwgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSkpCi0gICAgICAgIGludmFsaWRhdGVTdHlsZUZv
clN1YnRyZWUoKTsKLQotICAgIGlmICghcmVuZGVyZXIoKSkgewotICAgICAgICAvLyBXaGVuIHNl
dHRpbmcgaG92ZXIgdG8gZmFsc2UsIHRoZSBzdHlsZSBuZWVkcyB0byBiZSByZWNhbGMnZCBldmVu
IHdoZW4KLSAgICAgICAgLy8gdGhlcmUncyBubyByZW5kZXJlciAoaW1hZ2luZSBzZXR0aW5nIGRp
c3BsYXk6bm9uZSBpbiB0aGUgOmhvdmVyIGNsYXNzLAotICAgICAgICAvLyBpZiBhIG5pbCByZW5k
ZXJlciB3b3VsZCBwcmV2ZW50IHRoaXMgZWxlbWVudCBmcm9tIHJlY2FsY3VsYXRpbmcgaXRzCi0g
ICAgICAgIC8vIHN0eWxlLCBpdCB3b3VsZCBuZXZlciBnbyBiYWNrIHRvIGl0cyBub3JtYWwgc3R5
bGUgYW5kIHJlbWFpbgotICAgICAgICAvLyBzdHVjayBpbiBpdHMgaG92ZXJlZCBzdHlsZSkuCi0g
ICAgICAgIGlmICghZmxhZyAmJiAhc3R5bGUpCi0gICAgICAgICAgICBpbnZhbGlkYXRlU3R5bGVG
b3JTdWJ0cmVlKCk7Ci0KK3ZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcpCit7Cisg
ICAgaWYgKGZsYWcgPT0gaG92ZXJlZCgpKQogICAgICAgICByZXR1cm47CisgICAgeworICAgICAg
ICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsKKyAgICAgICAgZG9jdW1lbnQo
KS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0aGlzLCBmbGFnKTsKICAgICB9CiAK
LSAgICBpZiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKKyAgICBpZiAoYXV0byogc3R5bGUgPSBy
ZW5kZXJTdHlsZSgpOyBzdHlsZSAmJiBzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRl
czo6SG92ZXJTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZmZDU5OTNlNmJkLi5h
N2RlYWZlM2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC04NDYsMTUgKzg0Niw2IEBAIGlubGlu
ZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCYgZWxlbWVudCkK
ICAgICByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC5kb2N1bWVudCgp
LmlzSFRNTERvY3VtZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEhhc0ZvY3Vz
V2l0aGluKGJvb2wgZmxhZykKLXsKLSAgICBpZiAoaGFzRm9jdXNXaXRoaW4oKSA9PSBmbGFnKQot
ICAgICAgICByZXR1cm47Ci0gICAgc2V0RmxhZyhmbGFnLCBIYXNGb2N1c1dpdGhpbik7Ci0gICAg
aWYgKHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkpCi0gICAgICAgIGludmFsaWRhdGVTdHls
ZUZvclN1YnRyZWUoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gUXVhbGlmaWVkTmFtZXM+
CiBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWVzJi4uLiBuYW1lcykgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjcx
NWJjOWEzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5oIgorCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJT
dHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgU3R5bGUgeworCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21w
dXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3Mp
Cit7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOworICAgIGJvb2wg
bWF5QWZmZWN0U3R5bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKKworICAgIHRyYXZlcnNlUnVsZUZl
YXR1cmVzKG1fZWxlbWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMsIGJv
b2wgbWF5QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJl
ZSAmJiBmZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzLmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAg
ICAgICAgICAgIG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1fZWxlbWVudC5zaGFkb3dSb290KCkgJiYgZmVhdHVyZXMucHNldWRvQ2xhc3Nlc0FmZmVjdGlu
Z0hvc3QuY29udGFpbnMocHNldWRvQ2xhc3MpKQorICAgICAgICAgICAgc2hvdWxkSW52YWxpZGF0
ZUN1cnJlbnQgPSB0cnVlOworICAgIH0pOworCisgICAgaWYgKG1heUFmZmVjdFN0eWxlSW5TaGFk
b3dUcmVlKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gZmluZS1ncmFpbmVkIGlu
dmFsaWRhdGlvbiBmb3Igc2hhZG93IHRyZWUuCisgICAgICAgIG1fZWxlbWVudC5pbnZhbGlkYXRl
U3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgfQorCisgICAgaWYgKHNob3VsZEludmFsaWRhdGVDdXJy
ZW50KQorICAgICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7CisKKyAgICBhdXRvJiBy
dWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBpZiAo
YXV0byogaW52YWxpZGF0aW9uUnVsZVNldHMgPSBydWxlU2V0cy5wc2V1ZG9DbGFzc0ludmFsaWRh
dGlvblJ1bGVTZXRzKHBzZXVkb0NsYXNzKSkgeworICAgICAgICBmb3IgKGF1dG8mIGludmFsaWRh
dGlvblJ1bGVTZXQgOiAqaW52YWxpZGF0aW9uUnVsZVNldHMpCisgICAgICAgICAgICBJbnZhbGlk
YXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0cyhtX21hdGNoRWxlbWVudFJ1bGVTZXRzLCBp
bnZhbGlkYXRpb25SdWxlU2V0KTsKKyAgICB9Cit9CisKK3ZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpCit7CisgICAgSW52YWxp
ZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMobV9lbGVtZW50LCBtX21h
dGNoRWxlbWVudFJ1bGVTZXRzKTsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE0YzU4MGNjMmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdG9y
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgU3R5bGUgeworCitjbGFzcyBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiB7Citw
dWJsaWM6CisgICAgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIH5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbigpOworCitwcml2YXRlOgorICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICB2b2lkIGludmFsaWRhdGVTdHlsZVdpdGhSdWxl
U2V0cygpOworCisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsKKyAgICBFbGVtZW50JiBtX2Vs
ZW1lbnQ7CisKKyAgICBJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9tYXRjaEVs
ZW1lbnRSdWxlU2V0czsKK307CisKK2lubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCisgICAgOiBtX2lzRW5hYmxl
ZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKKyAgICAsIG1fZWxlbWVudChlbGVt
ZW50KQorCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNv
bXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlKTsKKyAgICBpbnZhbGlkYXRlU3R5bGVX
aXRoUnVsZVNldHMoKTsKK30KKworaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
Ojp+UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oKQoreworICAgIGlmICghbV9pc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsK
K30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCmluZGV4IDdkZmZkYWVj
MGI2Li5lM2ZlYzVjZDU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZl
YXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAt
MTUzLDcgKzE1Myw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZl
YXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmIHNlCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKQorICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5wc2V1ZG9DbGFzc2VzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihzZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBlKCksIG1hdGNoRWxlbWVu
dCkpOwogCiAgICAgICAgIGlmICghc2VsZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3Ig
JiYgc2VsZWN0b3ItPmlzU2libGluZ1NlbGVjdG9yKCkpCiAgICAgICAgICAgICBzZWxlY3RvckZl
YXR1cmVzLmhhc1NpYmxpbmdTZWxlY3RvciA9IHRydWU7CkBAIC0xOTksNiArMjAwLDEzIEBAIHZv
aWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEpCiAgICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAg
ICAgICAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICB9CisgICAgZm9y
IChhdXRvJiBrZXlBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMucHNldWRvQ2xhc3Nlcykgewor
ICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlBbmRNYXRjaC5maXJzdCwgW10gewor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwga2V5QW5kTWF0Y2gu
c2Vjb25kIH0pOworICAgICAgICBpZiAoa2V5QW5kTWF0Y2guc2Vjb25kID09IE1hdGNoRWxlbWVu
dDo6SG9zdCkKKyAgICAgICAgICAgIHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChrZXlB
bmRNYXRjaC5maXJzdCk7CisgICAgfQogfQogCiB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQpAQCAtMjI0LDYgKzIzMiwxMyBAQCB2b2lkIFJ1bGVG
ZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIH0KICAgICBh
dHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Qu
YmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwogCisgICAgZm9y
IChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5wc2V1ZG9DbGFzc1J1bGVzKSB7CisgICAgICAg
IHBzZXVkb0NsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXksIFtdIHsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOworICAg
IH0KKyAgICBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIucHNldWRvQ2xhc3Nl
c0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIucHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3Qu
ZW5kKCkpOworCiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8
IG90aGVyLnVzZXNGaXJzdExpbmVSdWxlczsKICAgICB1c2VzRmlyc3RMZXR0ZXJSdWxlcyA9IHVz
ZXNGaXJzdExldHRlclJ1bGVzIHx8IG90aGVyLnVzZXNGaXJzdExldHRlclJ1bGVzOwogfQpAQCAt
MjQ4LDYgKzI2Myw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNsZWFyKCkKICAgICBjbGFzc2Vz
QWZmZWN0aW5nSG9zdC5jbGVhcigpOwogICAgIGF0dHJpYnV0ZVJ1bGVzLmNsZWFyKCk7CiAgICAg
YXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKKyAgICBwc2V1ZG9DbGFzc1J1bGVzLmNs
ZWFyKCk7CisgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKICAgICB1c2Vz
Rmlyc3RMaW5lUnVsZXMgPSBmYWxzZTsKICAgICB1c2VzRmlyc3RMZXR0ZXJSdWxlcyA9IGZhbHNl
OwogfQpAQCAtMjYwLDYgKzI3Nyw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnNocmlua1RvRml0
KCkKICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiAgICAgZm9yIChhdXRvJiBydWxlcyA6
IGF0dHJpYnV0ZVJ1bGVzLnZhbHVlcygpKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsK
KyAgICBmb3IgKGF1dG8mIHJ1bGVzIDogcHNldWRvQ2xhc3NSdWxlcy52YWx1ZXMoKSkKKyAgICAg
ICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFN0eWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCBjYzY3ZjNmYjAxMi4uNDQxOGZmNmFiZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaApAQCAtNzUsOCArNzUsMTAgQEAgc3RydWN0IFJ1
bGVGZWF0dXJlU2V0IHsKICAgICAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4gY2xhc3NSdWxlczsKICAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9u
U2VsZWN0b3I+Pj4gYXR0cmlidXRlUnVsZXM7CisgICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4sIFdURjo6
SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3NSdWxlczsK
ICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGNsYXNzZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hT
ZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Q7CisgICAgSGFzaFNldDxDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0OwogCiAgICAgYm9vbCB1c2Vz
Rmlyc3RMaW5lUnVsZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgdXNlc0ZpcnN0TGV0dGVyUnVsZXMg
eyBmYWxzZSB9OwpAQCAtOTAsNiArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8QXRvbVN0cmluZywgTWF0Y2hFbGVtZW50PiwgMzI+IGNsYXNzZXM7CiAgICAgICAg
IFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgQ1NTU2VsZWN0b3IqLCBNYXRjaEVsZW1lbnQ+LCAzMj4g
YXR0cmlidXRlczsKKyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NUeXBlLCBNYXRjaEVsZW1lbnQ+LCAzMj4gcHNldWRvQ2xhc3NlczsKICAgICB9OwogICAg
IHZvaWQgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0
dXJlcyYsIGNvbnN0IENTU1NlbGVjdG9yJiwgTWF0Y2hFbGVtZW50ID0gTWF0Y2hFbGVtZW50OjpT
dWJqZWN0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNw
cAppbmRleCBlMzEzZDAyMjlhNi4uZGIzYjJiYWFhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtMTk2LDEzICsxOTYsMTUgQEAgdm9pZCBTY29w
ZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25zdAogCiAgICAgbV9jbGFzc0ludmFsaWRh
dGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0
cy5jbGVhcigpOworICAgIG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigp
OworCiAgICAgbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUgPSBX
VEY6Om51bGxvcHQ7CiAKICAgICBtX2ZlYXR1cmVzLnNocmlua1RvRml0KCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFJ1bGVGZWF0dXJlVHlwZT4KLXN0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9u
UnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGtl
eSwgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+Pj4mIHJ1bGVTZXRNYXAsIGNvbnN0IEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZVR5cGU+Pj4mIHJ1bGVGZWF0dXJlcykKK3RlbXBs
YXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFJ1bGVGZWF0dXJlVHlwZSwgdHlwZW5hbWUg
SGFzaCwgdHlwZW5hbWUgSGFzaFRyYWl0cz4KK3N0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEtleVR5cGUmIGtleSwgSGFz
aE1hcDxLZXlUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
PiwgSGFzaCwgSGFzaFRyYWl0cz4mIHJ1bGVTZXRNYXAsIGNvbnN0IEhhc2hNYXA8S2V5VHlwZSwg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZVR5cGU+PiwgSGFzaCwgSGFzaFRyYWl0
cz4mIHJ1bGVGZWF0dXJlcykKIHsKICAgICByZXR1cm4gcnVsZVNldE1hcC5lbnN1cmUoa2V5LCBb
Jl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4gewog
ICAgICAgICBhdXRvKiBmZWF0dXJlcyA9IHJ1bGVGZWF0dXJlcy5nZXQoa2V5KTsKQEAgLTI0MSw2
ICsyNDMsMTEgQEAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBTY29wZVJ1bGVT
ZXRzOjphdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cygKICAgICByZXR1cm4gZW5zdXJlSW52
YWxpZGF0aW9uUnVsZVNldHMoYXR0cmlidXRlTmFtZSwgbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25S
dWxlU2V0cywgbV9mZWF0dXJlcy5hdHRyaWJ1dGVSdWxlcyk7CiB9CiAKK2NvbnN0IFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6cHNldWRvQ2xhc3NJbnZhbGlkYXRp
b25SdWxlU2V0cyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzKSBjb25z
dAoreworICAgIHJldHVybiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhwc2V1ZG9DbGFzcywg
bV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLCBtX2ZlYXR1cmVzLnBzZXVkb0NsYXNz
UnVsZXMpOworfQorCiBib29sIFNjb3BlUnVsZVNldHM6Omhhc0NvbXBsZXhTZWxlY3RvcnNGb3JT
dHlsZUF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjb21wdXRlID0gWyZdIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKaW5kZXggOGNjY2ZhYWFkZDQuLmU0
ZTNmNWM2MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVs
ZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaApA
QCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9u
UnVsZVNldD4qIGNsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYgY2xh
c3NOYW1lKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGF0
dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogcHNldWRv
Q2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKSBj
b25zdDsKIAogICAgIGJvb2wgaGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlKCkg
Y29uc3Q7CiAKQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRy
PFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwogICAgIG11dGFibGUgSGFzaE1h
cDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
Pj4gbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9t
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9h
dHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0czsKKyAgICBtdXRhYmxlIEhhc2hNYXA8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRp
b25SdWxlU2V0Pj4sIFdURjo6SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4g
bV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogCiAgICAgbXV0YWJsZSBPcHRpb25h
bDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZTsKIAo=
</data>
<flag name="review"
          id="408648"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393355</attachid>
            <date>2020-03-12 03:41:41 -0700</date>
            <delta_ts>2020-03-12 05:44:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pseudo-class-invalidation-7.patch</filename>
            <type>text/plain</type>
            <size>44858</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2E2ZmI0ZDM3MS4uMGMzMjhhNDgxZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAyMC0wMy0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWNjdXJhdGUgc3R5bGUgaW52YWxpZGF0aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3Nl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlk
YXRpb24tZm9jdXMtY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNj
ZW5kYW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZh
bGlkYXRpb24tZm9jdXMtY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1zaWJs
aW5ncy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlk
YXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRo
aW4tY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0
b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLXNpYmxpbmdzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0
aW9uLWZvY3VzLXdpdGhpbi1jaGFuZ2Utc2libGluZ3MuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5n
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMt
MTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1h
a2Ugc3VyZSBhIE1lZGlTdHJlYW1UcmFjayBjbG9uZSBkb2VzIG5vdCBpbnRlcnJ1cHQgdGhlIGJl
aW5nIGNsb25lZCB0cmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMv
c3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtY2hh
bmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtY2hhbmdlLWRlc2NlbmRhbnRz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUt
aW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOWVmZjBkZWY0
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbApAQCAtMCwwICsxLDgyIEBA
Cis8aHRtbD4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworfQorLmluZXJ0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKK30KKy50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB3
aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisuY29udGFpbmVyOmZvY3VzIC50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorLmNoaWxkIHsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9
Cis8L3N0eWxlPgorPGRpdiBjbGFzcz1jb250YWluZXIgdGFiaW5kZXg9MSBpZD1mb2N1c1Rhcmdl
dD4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFy
Z2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAgICAg
PGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8
L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0eWxl
Q2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0gdHJ1
ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0
b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVsZW1l
bnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAgICAg
ICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBlIHdh
cyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBhc3Mg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9nLnRl
eHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkg
eworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAg
ICBmb2N1c1RhcmdldC5mb2N1cygpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250
YWluZXIiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsgLy8gU3R5bGUgY2hhbmdlIGR1ZSB0byB0byBV
QSBzdHlsZSBzaGVldC4KKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuaW5lcnQiLCAiTm9TdHls
ZUNoYW5nZSIpOworCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGZvY3VzVGFy
Z2V0LmJsdXIoKTsKKworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi50YXJnZXQiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuY29udGFpbmVyIiwgIklu
bGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5v
U3R5bGVDaGFuZ2UiKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9u
LWZvY3VzLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjAzMzViYmViZDlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1zaWJs
aW5ncy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0
eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3MuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3Mu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODNkMGQ1NWUyMmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZh
bGlkYXRpb24tZm9jdXMtY2hhbmdlLXNpYmxpbmdzLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPGh0
bWw+Cis8c3R5bGU+CisuY29udGFpbmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKK30KKy5pbmVydCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Cit9CisudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgd2lkdGg6
IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQor
OmZvY3VzIH4gLnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9Cis6Zm9j
dXMgfiAuaW5lcnQgPiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30K
Ky5jaGlsZCB7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQorPC9zdHls
ZT4KKzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICAgIDwhLS1TdHlsZSBjaGFuZ2UgZHVlIHRvIHRv
IFVBIHN0eWxlIHNoZWV0Li0tPgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0IHRhYmluZGV4PTEgaWQ9
Zm9jdXNUYXJnZXQ+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgPC9k
aXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPXRh
cmdldD4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW5lcnQgY2hpbGQiPgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgICAgICA8ZGl2IGNsYXNzPSJ0
YXJnZXQgY2hpbGQiPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHByZSBp
ZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0U3R5bGVDaGFuZ2VUeXBlKHNl
bGVjdG9yLCBleHBlY3RlZFR5cGUpCit7CisgICAgbGV0IHBhc3MgPSB0cnVlOworICAgIGNvbnN0
IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBjb25zdCB0
eXBlID0gd2luZG93LmludGVybmFscy5zdHlsZUNoYW5nZVR5cGUoZWxlbWVudHNbaV0pOworICAg
ICAgICBpZiAodHlwZSAhPSBleHBlY3RlZFR5cGUpIHsKKyAgICAgICAgICAgIGxvZy50ZXh0Q29u
dGVudCArPSBgRkFJTCAke3NlbGVjdG9yfSBzdHlsZUNoYW5nZVR5cGUgd2FzICR7dHlwZX0gZXhw
ZWN0ZWQgJHtleHBlY3RlZFR5cGV9XG5gOworICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChwYXNzKQorICAgICAgICBsb2cudGV4dENvbnRlbnQgKz0g
IlBBU1NcbiI7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGZvY3VzVGFyZ2V0
LmZvY3VzKCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVD
aGFuZ2UiKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBmb2N1c1Rhcmdl
dC5ibHVyKCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVD
aGFuZ2UiKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Vs
ZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLWRlc2NlbmRhbnRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRh
dGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9j
dXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBA
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hh
bmdlLWRlc2NlbmRhbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1p
bnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjNhYzgzZmY0NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1
cy13aXRoaW4tY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+
Cis8c3R5bGU+CisuY29udGFpbmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAg
IHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKK30KKy5pbmVydCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgd2lkdGg6IDEw
MHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmNv
bnRhaW5lcjpmb2N1cy13aXRoaW4gLnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47Cit9CisuY2hpbGQgeworICAgIHdpZHRoOiA1MHB4OworICAgIGhlaWdodDogNTBweDsKK30K
Kzwvc3R5bGU+Cis8ZGl2IGNsYXNzPWNvbnRhaW5lcj4KKyAgICA8ZGl2IGNsYXNzPXRhcmdldCB0
YWJpbmRleD0xIGlkPWZvY3VzVGFyZ2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFy
Z2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAgICAg
PGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8
L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0eWxl
Q2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0gdHJ1
ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0
b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVsZW1l
bnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAgICAg
ICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBlIHdh
cyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBhc3Mg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9nLnRl
eHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkg
eworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAg
ICBmb2N1c1RhcmdldC5mb2N1cygpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250
YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVy
dCIsICJOb1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7Cisg
ICAgZm9jdXNUYXJnZXQuYmx1cigpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250
YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVy
dCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5n
ZS1zaWJsaW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHls
ZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAzMzViYmViZDlmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0
aW9uLWZvY3VzLXdpdGhpbi1jaGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGlu
LWNoYW5nZS1zaWJsaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUt
aW52YWxpZGF0aW9uLWZvY3VzLXdpdGhpbi1jaGFuZ2Utc2libGluZ3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjkyYzg4NzdiODIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMt
d2l0aGluLWNoYW5nZS1zaWJsaW5ncy5odG1sCkBAIC0wLDAgKzEsODggQEAKKzxodG1sPgorPHN0
eWxlPgorLmNvbnRhaW5lciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB3aWR0
aDogMjAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9
CisuaW5lcnQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQor
LnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIHdpZHRoOiAxMDBweDsK
KyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5pbmVydDpm
b2N1cy13aXRoaW4gfiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30K
Ky5pbmVydDpmb2N1cy13aXRoaW4gfiAuaW5lcnQgPiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKK30KKy5jaGlsZCB7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0
OiA1MHB4OworfQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICAgIDxkaXYgY2xh
c3M9aW5lcnQ+CisgICAgICAgIDwhLS1TdHlsZSBjaGFuZ2UgZHVlIHRvIHRvIFVBIHN0eWxlIHNo
ZWV0Li0tPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgY2hpbGQiIHRhYmluZGV4PTEgaWQ9
Zm9jdXNUYXJnZXQ+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
dGFyZ2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAg
ICAgPGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0
eWxlQ2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0g
dHJ1ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2Vs
ZWN0b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVs
ZW1lbnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAg
ICAgICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBl
IHdhcyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBh
c3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9n
LnRleHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24g
KCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsK
KyAgICBmb2N1c1RhcmdldC5mb2N1cygpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRh
cmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5j
b250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5p
bmVydCIsICJOb1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7
CisgICAgZm9jdXNUYXJnZXQuYmx1cigpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRh
cmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5j
b250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5p
bmVydCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRl
c2NlbmRhbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxl
LWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzM1YmJlYmQ5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1o
b3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRh
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24t
aG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmEwNzQ3ZjU3NDZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzxodG1sPgorPHN0eWxlPgorLmNvbnRhaW5lciB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiA2MDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisuaW5lcnQgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
MTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLnRhcmdldCB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5jb250YWluZXI6aG92ZXIgLnRhcmdldCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9CisuY2hpbGQgeworICAgIHdpZHRoOiA1MHB4
OworICAgIGhlaWdodDogNTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2IGNsYXNzPWNvbnRhaW5lcj4K
KyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0
PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAgPGRp
diBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAgICAgPGRp
diBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rp
dj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0eWxlQ2hh
bmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0gdHJ1ZTsK
KyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3Ip
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVsZW1lbnRz
W2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAgICAgICBs
b2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBlIHdhcyAk
e3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBhc3MgPSBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9nLnRleHRD
b250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewor
ICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCw1MCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCIudGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgiLmNvbnRhaW5lciIsICJOb1N0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgiLmluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
TGVmdDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsNTApOworCisgICAgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RT
dHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RT
dHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9OworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRp
b24taG92ZXItY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzM1YmJlYmQ5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdl
LXNpYmxpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlk
YXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjZkMmZmYWNlYmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5n
cy5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzxodG1sPgorPHN0eWxlPgorLmNvbnRhaW5lciB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiA2MDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisuaW5lcnQgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
MTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLnRhcmdldCB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5pbmVydDpob3ZlciB+IC50YXJnZXQgeworICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorLmluZXJ0OmhvdmVyIH4gLmluZXJ0ID4gLnRh
cmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9CisuY2hpbGQgeworICAgIHdp
ZHRoOiA1MHB4OworICAgIGhlaWdodDogNTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2IGNsYXNzPWNv
bnRhaW5lcj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9dGFyZ2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+
CisgICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxk
Ij4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAg
ICAgICAgPGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9k
aXY+Cis8L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dFN0eWxlQ2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNz
ID0gdHJ1ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
c2VsZWN0b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBl
KGVsZW1lbnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAg
ICAgICAgICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VU
eXBlIHdhcyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAg
IHBhc3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAg
bG9nLnRleHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24gKCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVm
dDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCw1MCk7CisKKyAgICB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKTsKKworICAgIGRvY3VtZW50LmJv
ZHkub2Zmc2V0TGVmdDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsNTApOworCisg
ICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOwor
ICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOwor
ICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9Owor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDQzMWY4ODk1OTkyLi4xMmU0MThlYWIyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTcwMSw2ICs3MDEsOCBAQCBmYXN0L3NlbGVjdG9ycy9ob3Zlci1x
dWlya3MuaHRtbCBbIFNraXAgXQogZmFzdC9zZWxlY3RvcnMvaG92ZXItc3RyaWN0Lmh0bWwgWyBT
a2lwIF0KIGZhc3Qvc2VsZWN0b3JzL25vdC1hY3RpdmUtaG92ZXItcXVpcmtzLmh0bWwgWyBTa2lw
IF0KIGZhc3Qvc2VsZWN0b3JzL25vdC1hY3RpdmUtaG92ZXItc3RyaWN0Lmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFu
dHMuaHRtbCBbIFNraXAgXQorZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVy
LWNoYW5nZS1zaWJsaW5ncy5odG1sIFsgU2tpcCBdCiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRl
LWZsb2F0cy9zaGFwZS1vdXRzaWRlLWNsaXAtcGF0aC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQog
ZmFzdC9zaGFkb3ctZG9tL21vdXNlZW50ZXItbW91c2VsZWF2ZS1hY3Jvc3Mtc2hhZG93LWJvdW5k
YXJ5Lmh0bWwgWyBTa2lwIF0KIGZhc3Qvc2hhZG93LWRvbS9tb3VzZWVudGVyLW1vdXNlbGVhdmUt
aW5zaWRlLXNoYWRvdy10cmVlLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjA4MjYwZjU4YjEuLmVmNjE4ODZmYzUzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjg2Miw2ICsyODYyLDgg
QEAgd2Via2l0Lm9yZy9iLzExNzMyMiBmYXN0L3NlbGVjdG9ycy90ZXh0LWZpZWxkLXNlbGVjdGlv
bi13aW5kb3ctaW5hY3RpdmUtdGV4dC1zaGEKIHdlYmtpdC5vcmcvYi8xNDA1MTkgWyBEZWJ1ZyBd
IGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQtd2l0aC1tdWx0aXBsZS1lbGVtZW50cy13
aXRoLXNhbWUtaWQuaHRtbCBbIFNraXAgXSAgIyBDcmFzaGluZwogZmFzdC9zZWxlY3RvcnMvcXVl
cnlTZWxlY3Rvci13aW5kb3ctaW5hY3RpdmUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9zZWxlY3Rv
cnMvcmVhZC1vbmx5LXJlYWQtd3JpdGUtaW5wdXQtYmFzaWNzLmh0bWwgWyBGYWlsdXJlIF0KK2Zh
c3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMu
aHRtbCBbIFNraXAgXQorZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNo
YW5nZS1zaWJsaW5ncy5odG1sIFsgU2tpcCBdCiAKIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwMi5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0NTczMDVlODRlLi40NGZhYzRjOTQ4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTAzLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBY2N1cmF0ZSBzdHlsZSBpbnZhbGlkYXRpb24gZm9yIHVz
ZXIgYWN0aW9uIHBzZXVkbyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDg4NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTk2ODg4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBDdXJyZW50
bHkgOmhvdmVyLCA6Zm9jdXMsIDpmb2N1cy13aXRoaW4gYW5kIDphY3RpdmUgbGFjayBmaW5lIGdy
YWluZWQgaW52YWxpZGF0aW9uIHVzaW5nCisgICAgICAgIHJ1bGUgc2V0cyBsaWtlIHdlIGRvIHdp
dGggY2xhc3MgYW5kIGF0dHJpYnV0ZSBzZWxlY3RvcnMuCisKKyAgICAgICAgVGhpcyBjYW4gYmUg
YWRkZWQgZWFzaWx5IGZvbGxvd2luZyB0aGUgc2FtZSBwYXR0ZXJuLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFu
Z2Utc2libGluZ3MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0
aW9uLWZvY3VzLWNoYW5nZS1zaWJsaW5ncy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9z
dHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtY2hhbmdlLXNpYmxpbmdzLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLXNpYmxp
bmdzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1
cy13aXRoaW4tY2hhbmdlLXNpYmxpbmdzLmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SGFzRm9jdXNXaXRoaW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
c2V0SG92ZXJlZCk6CisKKyAgICAgICAgVXNlIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldEhhc0ZvY3VzV2l0aGluKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xh
eW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZU5lZWRzTGF5b3V0
Q2hlY2tlcjo6flJlbmRlclRyZWVOZWVkc0xheW91dENoZWNrZXIpOgorICAgICAgICAqIHN0eWxl
L1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlk
YXRpb24pOgorCisgICAgICAgIENvbXB1dGUgaW52YWxpZGF0aW9uIHJ1bGUgc2V0IGZvciBhIHBz
ZXVkbyBjbGFzcyBjaGFuZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKToKKyAgICAg
ICAgKiBzdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6UHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjp+UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24p
OgorICAgICAgICAqIHN0eWxlL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSdWxlRmVhdHVyZVNldDo6cmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVh
dHVyZXMpOgorCisgICAgICAgIENvbGxlY3QgcHNldWRvIGNsYXNzIGZlYXR1cmVzLCBzaW1pbGFy
IHRvIGNsYXNzZXMvYXR0cmlidXRlcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVG
ZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZUZlYXR1cmVTZXQ6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5oOgorICAgICAgICAqIHN0eWxl
L1N0eWxlU2NvcGVSdWxlU2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVS
dWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyk6CisKKyAgICAgICAgTWFrZSBtb3JlIGdlbmVy
aWMgdG8gYWxsb3cgZW51bSBrZXkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZVJ1
bGVTZXRzOjpwc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzIGNvbnN0KToKKworICAgICAg
ICBDcmVhdGUgcHNldWRvIGNsYXNzIGludmFsaWRhdGlvbiBydWxlc2V0LgorCisgICAgICAgICog
c3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmg6CisKIDIwMjAtMDMtMTAgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1ha2Ugc3VyZSBhIE1lZGlTdHJl
YW1UcmFjayBjbG9uZSBkb2VzIG5vdCBpbnRlcnJ1cHQgdGhlIGJlaW5nIGNsb25lZCB0cmFjawpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCAxYjhiODIzY2M3Zi4uMDRlMmYwM2FjNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0yMzcyLDYgKzIzNzIsNyBAQCBzdHlsZS9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAog
c3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmNwcAogc3R5bGUvUGFnZVJ1bGVDb2xsZWN0
b3IuY3BwCiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCitzdHlsZS9Qc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL1J1bGVEYXRhLmNwcAogc3R5bGUvUnVsZUZlYXR1cmUu
Y3BwCiBzdHlsZS9SdWxlU2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyNjM1MTlkNjM0Li5kNGIwMjQzZjdmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDg4Nyw2ICs0ODg3LDcgQEAKIAkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8qIE1hcmdp
blR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUxQzYzNDIzOTQwNThGMDA5OTMx
OTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTFDNjMzMjM5NDA1OEUwMDk5MzE5MCAvKiBEaXNwbGF5SW5s
aW5lQ29udGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzMjJBQTE0MENFMjY3
MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovOyB9OworCQlFNDVBNkM3NzI0MTdCQTU5MDA2
RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAv
KiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNDVCQTZBQTIzNzQ5
MjZDMDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcg
LyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi87IH07CiAJCUU0NUJBNkI2MjM3NjIyQTMw
MDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDVCQTZCNTIzNzYyMjlGMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rl
ci5oICovOyB9OwogCQlFNDYwNUZFQzIxNjY0ODA5MDBFNTMwNDYgLyogUHJld2FybUluZm9ybWF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDYw
NUZFQTIxNjY0ODA4MDBFNTMwNDYgLyogUHJld2FybUluZm9ybWF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MjkwLDYgKzE1MjkxLDgg
QEAKIAkJRTQ1MzkwMzQwRUFGRDYzNzAwMzY5NUM4IC8qIFNjcm9sbFZpZXdJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzOTAzQzBFQUZENjM3MDAzNjk1QzggLyogV2lk
Z2V0SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2lkZ2V0
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzOTBBRDBFQUZGNEI1MDAz
Njk1QzggLyogU3lzdGVtTWVtb3J5SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN5c3RlbU1lbW9yeUlPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUU0NUE2QzczMjQxN0JBNEMwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0
NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVCQTZBODIzNzQ5MjZC
MDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDVCQTZBQjIzNzQ5MjdCMDA0REZDMDcgLyogTWF0Y2hlZERlY2xh
cmF0aW9uc0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGNoZWREZWNsYXJhdGlvbnND
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NUJBNkIyMjM3NjIyN0Uw
MDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0eWxlQWRqdXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjcyNjAsNiArMjcyNjMsOCBAQAogCQkJCUZCREI2MUEwMTZENjAzN0UwMEJCMzM5NCAvKiBQ
YWdlUnVsZUNvbGxlY3Rvci5oICovLAogCQkJCUU0QUJBQkU1MjM2MUEzNDIwMEZBNDM0NSAvKiBQ
cm9wZXJ0eUNhc2NhZGUuY3BwICovLAogCQkJCUU0QUJBQkUyMjM2MUEzMjkwMEZBNDM0NSAvKiBQ
cm9wZXJ0eUNhc2NhZGUuaCAqLywKKwkJCQlFNDVBNkM3MzI0MTdCQTRDMDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAorCQkJCUU0NUE2Qzc2MjQxN0JBNTkw
MDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCUU0ODYz
Q0ZBMjM4NDJFODcwMDk3MjE1OCAvKiBSdWxlRGF0YS5jcHAgKi8sCiAJCQkJRTQ4NjNDRkQyMzg0
MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggKi8sCiAJCQkJQTc5QkFEOUQxNjFFN0YzRjAwQzJF
NjUyIC8qIFJ1bGVGZWF0dXJlLmNwcCAqLywKQEAgLTMxMTU4LDYgKzMxMTYzLDcgQEAKIAkJCQlC
MkZBM0Q1NzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q1OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdDaXJjbGVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q1QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdDbGlwUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NUE2Qzc3MjQxN0JBNTkw
MDZFNENENSAvKiBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNENUYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDYxMEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR0N1cnNvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDYz
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0RlZnNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBiNWZjOTEwMDkyYS4uYzA2MWRjMDU4ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJQb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnQuaCIKICNpbmNsdWRlICJQb2lu
dGVyTG9ja0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKQEAgLTYzMSwxNyAr
NjMyLDE1IEBAIHZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVzZSkK
IHsKICAgICBpZiAoZmxhZyA9PSBhY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgZG9j
dW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRBY3RpdmUoKnRoaXMsIGZsYWcpOwotCi0g
ICAgYXV0byogcmVuZGVyU3R5bGUgPSByZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCk7Ci0g
ICAgYm9vbCByZWFjdHNUb1ByZXNzID0gKHJlbmRlclN0eWxlICYmIHJlbmRlclN0eWxlLT5hZmZl
Y3RlZEJ5QWN0aXZlKCkpIHx8IHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpOwotICAgIGlmIChyZWFj
dHNUb1ByZXNzKQotICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgewor
ICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlk
YXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSk7CisgICAgICAgIGRv
Y3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QWN0aXZlKCp0aGlzLCBmbGFnKTsKKyAg
ICB9CiAKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGJvb2wg
cmVhY3RzVG9QcmVzcyA9IGZhbHNlOwogICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLmhhc0Fw
cGVhcmFuY2UoKSAmJiByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIo
KSwgQ29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKSkKICAgICAgICAgcmVhY3RzVG9QcmVzcyA9
IHRydWU7CiAKQEAgLTY4MCw5ICs2NzksMTEgQEAgdm9pZCBFbGVtZW50OjpzZXRGb2N1cyhib29s
IGZsYWcpCiB7CiAgICAgaWYgKGZsYWcgPT0gZm9jdXNlZCgpKQogICAgICAgICByZXR1cm47Ci0K
LSAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEZvY3VzZWQoKnRoaXMsIGZs
YWcpOwotICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKKyAgICB7CisgICAgICAgIFN0
eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBmb2N1c1N0eWxlSW52YWxpZGF0aW9u
KCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1cyk7CisgICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXJlY3RGb2N1c1N0eWxlSW52YWxpZGF0aW9u
KCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXJlY3RGb2N1cyk7CisgICAgICAgIGRv
Y3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7Cisg
ICAgfQogCiAgICAgLy8gU2hhZG93IGhvc3Qgd2l0aCBhIHNsb3QgdGhhdCBjb250YWluIGZvY3Vz
ZWQgZWxlbWVudCBpcyBub3QgY29uc2lkZXJlZCBmb2N1c2VkLgogICAgIGZvciAoYXV0byogcm9v
dCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5ob3N0KCktPmNv
bnRhaW5pbmdTaGFkb3dSb290KCkpIHsKQEAgLTY5MCwzNCArNjkxLDMwIEBAIHZvaWQgRWxlbWVu
dDo6c2V0Rm9jdXMoYm9vbCBmbGFnKQogICAgICAgICByb290LT5ob3N0KCktPmludmFsaWRhdGVT
dHlsZSgpOwogICAgIH0KIAotICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKSkKKyAg
ICBmb3IgKGF1dG8qIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpCiAgICAgICAgIGVsZW1lbnQtPnNldEhhc0Zv
Y3VzV2l0aGluKGZsYWcpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFn
KQordm9pZCBFbGVtZW50OjpzZXRIYXNGb2N1c1dpdGhpbihib29sIGZsYWcpCiB7Ci0gICAgaWYg
KGZsYWcgPT0gaG92ZXJlZCgpKQorICAgIGlmIChoYXNGb2N1c1dpdGhpbigpID09IGZsYWcpCiAg
ICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzRm9jdXNXaXRoaW4pOworICAgICAgICBzZXRGbGFnKGZsYWcsIEhhc0ZvY3VzV2l0aGluKTsK
KyAgICB9Cit9CiAKLSAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVy
ZWQoKnRoaXMsIGZsYWcpOwotCi0gICAgYXV0byogc3R5bGUgPSByZW5kZXJPckRpc3BsYXlDb250
ZW50c1N0eWxlKCk7Ci0gICAgaWYgKHN0eWxlICYmIChzdHlsZS0+YWZmZWN0ZWRCeUhvdmVyKCkg
fHwgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSkpCi0gICAgICAgIGludmFsaWRhdGVTdHlsZUZv
clN1YnRyZWUoKTsKLQotICAgIGlmICghcmVuZGVyZXIoKSkgewotICAgICAgICAvLyBXaGVuIHNl
dHRpbmcgaG92ZXIgdG8gZmFsc2UsIHRoZSBzdHlsZSBuZWVkcyB0byBiZSByZWNhbGMnZCBldmVu
IHdoZW4KLSAgICAgICAgLy8gdGhlcmUncyBubyByZW5kZXJlciAoaW1hZ2luZSBzZXR0aW5nIGRp
c3BsYXk6bm9uZSBpbiB0aGUgOmhvdmVyIGNsYXNzLAotICAgICAgICAvLyBpZiBhIG5pbCByZW5k
ZXJlciB3b3VsZCBwcmV2ZW50IHRoaXMgZWxlbWVudCBmcm9tIHJlY2FsY3VsYXRpbmcgaXRzCi0g
ICAgICAgIC8vIHN0eWxlLCBpdCB3b3VsZCBuZXZlciBnbyBiYWNrIHRvIGl0cyBub3JtYWwgc3R5
bGUgYW5kIHJlbWFpbgotICAgICAgICAvLyBzdHVjayBpbiBpdHMgaG92ZXJlZCBzdHlsZSkuCi0g
ICAgICAgIGlmICghZmxhZyAmJiAhc3R5bGUpCi0gICAgICAgICAgICBpbnZhbGlkYXRlU3R5bGVG
b3JTdWJ0cmVlKCk7Ci0KK3ZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcpCit7Cisg
ICAgaWYgKGZsYWcgPT0gaG92ZXJlZCgpKQogICAgICAgICByZXR1cm47CisgICAgeworICAgICAg
ICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsKKyAgICAgICAgZG9jdW1lbnQo
KS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0aGlzLCBmbGFnKTsKICAgICB9CiAK
LSAgICBpZiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKKyAgICBpZiAoYXV0byogc3R5bGUgPSBy
ZW5kZXJTdHlsZSgpOyBzdHlsZSAmJiBzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRl
czo6SG92ZXJTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZmZDU5OTNlNmJkLi5h
N2RlYWZlM2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC04NDYsMTUgKzg0Niw2IEBAIGlubGlu
ZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCYgZWxlbWVudCkK
ICAgICByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC5kb2N1bWVudCgp
LmlzSFRNTERvY3VtZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEhhc0ZvY3Vz
V2l0aGluKGJvb2wgZmxhZykKLXsKLSAgICBpZiAoaGFzRm9jdXNXaXRoaW4oKSA9PSBmbGFnKQot
ICAgICAgICByZXR1cm47Ci0gICAgc2V0RmxhZyhmbGFnLCBIYXNGb2N1c1dpdGhpbik7Ci0gICAg
aWYgKHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkpCi0gICAgICAgIGludmFsaWRhdGVTdHls
ZUZvclN1YnRyZWUoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gUXVhbGlmaWVkTmFtZXM+
CiBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWVzJi4uLiBuYW1lcykgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjcx
NWJjOWEzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5oIgorCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJT
dHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgU3R5bGUgeworCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21w
dXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3Mp
Cit7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOworICAgIGJvb2wg
bWF5QWZmZWN0U3R5bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKKworICAgIHRyYXZlcnNlUnVsZUZl
YXR1cmVzKG1fZWxlbWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMsIGJv
b2wgbWF5QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJl
ZSAmJiBmZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVzLmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAg
ICAgICAgICAgIG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1fZWxlbWVudC5zaGFkb3dSb290KCkgJiYgZmVhdHVyZXMucHNldWRvQ2xhc3Nlc0FmZmVjdGlu
Z0hvc3QuY29udGFpbnMocHNldWRvQ2xhc3MpKQorICAgICAgICAgICAgc2hvdWxkSW52YWxpZGF0
ZUN1cnJlbnQgPSB0cnVlOworICAgIH0pOworCisgICAgaWYgKG1heUFmZmVjdFN0eWxlSW5TaGFk
b3dUcmVlKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gZmluZS1ncmFpbmVkIGlu
dmFsaWRhdGlvbiBmb3Igc2hhZG93IHRyZWUuCisgICAgICAgIG1fZWxlbWVudC5pbnZhbGlkYXRl
U3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgfQorCisgICAgaWYgKHNob3VsZEludmFsaWRhdGVDdXJy
ZW50KQorICAgICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7CisKKyAgICBhdXRvJiBy
dWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBpZiAo
YXV0byogaW52YWxpZGF0aW9uUnVsZVNldHMgPSBydWxlU2V0cy5wc2V1ZG9DbGFzc0ludmFsaWRh
dGlvblJ1bGVTZXRzKHBzZXVkb0NsYXNzKSkgeworICAgICAgICBmb3IgKGF1dG8mIGludmFsaWRh
dGlvblJ1bGVTZXQgOiAqaW52YWxpZGF0aW9uUnVsZVNldHMpCisgICAgICAgICAgICBJbnZhbGlk
YXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0cyhtX21hdGNoRWxlbWVudFJ1bGVTZXRzLCBp
bnZhbGlkYXRpb25SdWxlU2V0KTsKKyAgICB9Cit9CisKK3ZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpCit7CisgICAgSW52YWxp
ZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMobV9lbGVtZW50LCBtX21h
dGNoRWxlbWVudFJ1bGVTZXRzKTsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE0YzU4MGNjMmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdG9y
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgU3R5bGUgeworCitjbGFzcyBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiB7Citw
dWJsaWM6CisgICAgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIH5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbigpOworCitwcml2YXRlOgorICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICB2b2lkIGludmFsaWRhdGVTdHlsZVdpdGhSdWxl
U2V0cygpOworCisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsKKyAgICBFbGVtZW50JiBtX2Vs
ZW1lbnQ7CisKKyAgICBJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9tYXRjaEVs
ZW1lbnRSdWxlU2V0czsKK307CisKK2lubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCisgICAgOiBtX2lzRW5hYmxl
ZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKKyAgICAsIG1fZWxlbWVudChlbGVt
ZW50KQorCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNv
bXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlKTsKKyAgICBpbnZhbGlkYXRlU3R5bGVX
aXRoUnVsZVNldHMoKTsKK30KKworaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
Ojp+UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oKQoreworICAgIGlmICghbV9pc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsK
K30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCmluZGV4IDdkZmZkYWVj
MGI2Li5lM2ZlYzVjZDU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZl
YXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAt
MTUzLDcgKzE1Myw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZl
YXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmIHNlCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKQorICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5wc2V1ZG9DbGFzc2VzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihzZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBlKCksIG1hdGNoRWxlbWVu
dCkpOwogCiAgICAgICAgIGlmICghc2VsZWN0b3JGZWF0dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3Ig
JiYgc2VsZWN0b3ItPmlzU2libGluZ1NlbGVjdG9yKCkpCiAgICAgICAgICAgICBzZWxlY3RvckZl
YXR1cmVzLmhhc1NpYmxpbmdTZWxlY3RvciA9IHRydWU7CkBAIC0xOTksNiArMjAwLDEzIEBAIHZv
aWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEpCiAgICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAg
ICAgICAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICB9CisgICAgZm9y
IChhdXRvJiBrZXlBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMucHNldWRvQ2xhc3Nlcykgewor
ICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlBbmRNYXRjaC5maXJzdCwgW10gewor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwga2V5QW5kTWF0Y2gu
c2Vjb25kIH0pOworICAgICAgICBpZiAoa2V5QW5kTWF0Y2guc2Vjb25kID09IE1hdGNoRWxlbWVu
dDo6SG9zdCkKKyAgICAgICAgICAgIHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChrZXlB
bmRNYXRjaC5maXJzdCk7CisgICAgfQogfQogCiB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQpAQCAtMjI0LDYgKzIzMiwxMyBAQCB2b2lkIFJ1bGVG
ZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIH0KICAgICBh
dHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Qu
YmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwogCisgICAgZm9y
IChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5wc2V1ZG9DbGFzc1J1bGVzKSB7CisgICAgICAg
IHBzZXVkb0NsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXksIFtdIHsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOworICAg
IH0KKyAgICBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIucHNldWRvQ2xhc3Nl
c0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIucHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3Qu
ZW5kKCkpOworCiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8
IG90aGVyLnVzZXNGaXJzdExpbmVSdWxlczsKICAgICB1c2VzRmlyc3RMZXR0ZXJSdWxlcyA9IHVz
ZXNGaXJzdExldHRlclJ1bGVzIHx8IG90aGVyLnVzZXNGaXJzdExldHRlclJ1bGVzOwogfQpAQCAt
MjQ4LDYgKzI2Myw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNsZWFyKCkKICAgICBjbGFzc2Vz
QWZmZWN0aW5nSG9zdC5jbGVhcigpOwogICAgIGF0dHJpYnV0ZVJ1bGVzLmNsZWFyKCk7CiAgICAg
YXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKKyAgICBwc2V1ZG9DbGFzc1J1bGVzLmNs
ZWFyKCk7CisgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKICAgICB1c2Vz
Rmlyc3RMaW5lUnVsZXMgPSBmYWxzZTsKICAgICB1c2VzRmlyc3RMZXR0ZXJSdWxlcyA9IGZhbHNl
OwogfQpAQCAtMjYwLDYgKzI3Nyw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnNocmlua1RvRml0
KCkKICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiAgICAgZm9yIChhdXRvJiBydWxlcyA6
IGF0dHJpYnV0ZVJ1bGVzLnZhbHVlcygpKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsK
KyAgICBmb3IgKGF1dG8mIHJ1bGVzIDogcHNldWRvQ2xhc3NSdWxlcy52YWx1ZXMoKSkKKyAgICAg
ICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFN0eWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCBjYzY3ZjNmYjAxMi4uNDQxOGZmNmFiZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaApAQCAtNzUsOCArNzUsMTAgQEAgc3RydWN0IFJ1
bGVGZWF0dXJlU2V0IHsKICAgICAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4gY2xhc3NSdWxlczsKICAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9u
U2VsZWN0b3I+Pj4gYXR0cmlidXRlUnVsZXM7CisgICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4sIFdURjo6
SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3NSdWxlczsK
ICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGNsYXNzZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hT
ZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Q7CisgICAgSGFzaFNldDxDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0OwogCiAgICAgYm9vbCB1c2Vz
Rmlyc3RMaW5lUnVsZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgdXNlc0ZpcnN0TGV0dGVyUnVsZXMg
eyBmYWxzZSB9OwpAQCAtOTAsNiArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8QXRvbVN0cmluZywgTWF0Y2hFbGVtZW50PiwgMzI+IGNsYXNzZXM7CiAgICAgICAg
IFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgQ1NTU2VsZWN0b3IqLCBNYXRjaEVsZW1lbnQ+LCAzMj4g
YXR0cmlidXRlczsKKyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NUeXBlLCBNYXRjaEVsZW1lbnQ+LCAzMj4gcHNldWRvQ2xhc3NlczsKICAgICB9OwogICAg
IHZvaWQgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0
dXJlcyYsIGNvbnN0IENTU1NlbGVjdG9yJiwgTWF0Y2hFbGVtZW50ID0gTWF0Y2hFbGVtZW50OjpT
dWJqZWN0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNw
cAppbmRleCBlMzEzZDAyMjlhNi4uZGIzYjJiYWFhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtMTk2LDEzICsxOTYsMTUgQEAgdm9pZCBTY29w
ZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25zdAogCiAgICAgbV9jbGFzc0ludmFsaWRh
dGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0
cy5jbGVhcigpOworICAgIG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigp
OworCiAgICAgbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUgPSBX
VEY6Om51bGxvcHQ7CiAKICAgICBtX2ZlYXR1cmVzLnNocmlua1RvRml0KCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFJ1bGVGZWF0dXJlVHlwZT4KLXN0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9u
UnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGtl
eSwgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+Pj4mIHJ1bGVTZXRNYXAsIGNvbnN0IEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZVR5cGU+Pj4mIHJ1bGVGZWF0dXJlcykKK3RlbXBs
YXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFJ1bGVGZWF0dXJlVHlwZSwgdHlwZW5hbWUg
SGFzaCwgdHlwZW5hbWUgSGFzaFRyYWl0cz4KK3N0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEtleVR5cGUmIGtleSwgSGFz
aE1hcDxLZXlUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
PiwgSGFzaCwgSGFzaFRyYWl0cz4mIHJ1bGVTZXRNYXAsIGNvbnN0IEhhc2hNYXA8S2V5VHlwZSwg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZVR5cGU+PiwgSGFzaCwgSGFzaFRyYWl0
cz4mIHJ1bGVGZWF0dXJlcykKIHsKICAgICByZXR1cm4gcnVsZVNldE1hcC5lbnN1cmUoa2V5LCBb
Jl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4gewog
ICAgICAgICBhdXRvKiBmZWF0dXJlcyA9IHJ1bGVGZWF0dXJlcy5nZXQoa2V5KTsKQEAgLTI0MSw2
ICsyNDMsMTEgQEAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBTY29wZVJ1bGVT
ZXRzOjphdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cygKICAgICByZXR1cm4gZW5zdXJlSW52
YWxpZGF0aW9uUnVsZVNldHMoYXR0cmlidXRlTmFtZSwgbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25S
dWxlU2V0cywgbV9mZWF0dXJlcy5hdHRyaWJ1dGVSdWxlcyk7CiB9CiAKK2NvbnN0IFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6cHNldWRvQ2xhc3NJbnZhbGlkYXRp
b25SdWxlU2V0cyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzKSBjb25z
dAoreworICAgIHJldHVybiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhwc2V1ZG9DbGFzcywg
bV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLCBtX2ZlYXR1cmVzLnBzZXVkb0NsYXNz
UnVsZXMpOworfQorCiBib29sIFNjb3BlUnVsZVNldHM6Omhhc0NvbXBsZXhTZWxlY3RvcnNGb3JT
dHlsZUF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjb21wdXRlID0gWyZdIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKaW5kZXggOGNjY2ZhYWFkZDQuLmU0
ZTNmNWM2MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVs
ZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaApA
QCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9u
UnVsZVNldD4qIGNsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYgY2xh
c3NOYW1lKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGF0
dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogcHNldWRv
Q2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKSBj
b25zdDsKIAogICAgIGJvb2wgaGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlKCkg
Y29uc3Q7CiAKQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRy
PFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwogICAgIG11dGFibGUgSGFzaE1h
cDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
Pj4gbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9t
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9h
dHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0czsKKyAgICBtdXRhYmxlIEhhc2hNYXA8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRp
b25SdWxlU2V0Pj4sIFdURjo6SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4g
bV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogCiAgICAgbXV0YWJsZSBPcHRpb25h
bDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393361</attachid>
            <date>2020-03-12 05:44:03 -0700</date>
            <delta_ts>2020-03-12 06:30:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pseudo-class-invalidation-8.patch</filename>
            <type>text/plain</type>
            <size>45309</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2E2ZmI0ZDM3MS4uMGMzMjhhNDgxZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAyMC0wMy0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWNjdXJhdGUgc3R5bGUgaW52YWxpZGF0aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3Nl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlk
YXRpb24tZm9jdXMtY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNj
ZW5kYW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZh
bGlkYXRpb24tZm9jdXMtY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1zaWJs
aW5ncy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlk
YXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRo
aW4tY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0
b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLXNpYmxpbmdzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0
aW9uLWZvY3VzLXdpdGhpbi1jaGFuZ2Utc2libGluZ3MuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5n
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMt
MTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1h
a2Ugc3VyZSBhIE1lZGlTdHJlYW1UcmFjayBjbG9uZSBkb2VzIG5vdCBpbnRlcnJ1cHQgdGhlIGJl
aW5nIGNsb25lZCB0cmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMv
c3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtY2hh
bmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtY2hhbmdlLWRlc2NlbmRhbnRz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUt
aW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOWVmZjBkZWY0
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbApAQCAtMCwwICsxLDgyIEBA
Cis8aHRtbD4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworfQorLmluZXJ0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKK30KKy50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB3
aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisuY29udGFpbmVyOmZvY3VzIC50YXJnZXQgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorLmNoaWxkIHsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cit9
Cis8L3N0eWxlPgorPGRpdiBjbGFzcz1jb250YWluZXIgdGFiaW5kZXg9MSBpZD1mb2N1c1Rhcmdl
dD4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFy
Z2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAgICAg
PGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8
L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0eWxl
Q2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0gdHJ1
ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0
b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVsZW1l
bnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAgICAg
ICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBlIHdh
cyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBhc3Mg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9nLnRl
eHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkg
eworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAg
ICBmb2N1c1RhcmdldC5mb2N1cygpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250
YWluZXIiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsgLy8gU3R5bGUgY2hhbmdlIGR1ZSB0byB0byBV
QSBzdHlsZSBzaGVldC4KKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuaW5lcnQiLCAiTm9TdHls
ZUNoYW5nZSIpOworCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGZvY3VzVGFy
Z2V0LmJsdXIoKTsKKworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi50YXJnZXQiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKTsKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIuY29udGFpbmVyIiwgIklu
bGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5v
U3R5bGVDaGFuZ2UiKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9u
LWZvY3VzLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjAzMzViYmViZDlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZvY3VzLWNoYW5nZS1zaWJs
aW5ncy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0
eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3MuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3Mu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODNkMGQ1NWUyMmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZh
bGlkYXRpb24tZm9jdXMtY2hhbmdlLXNpYmxpbmdzLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPGh0
bWw+Cis8c3R5bGU+CisuY29udGFpbmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKK30KKy5pbmVydCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Cit9CisudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgd2lkdGg6
IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQor
OmZvY3VzIH4gLnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9Cis6Zm9j
dXMgfiAuaW5lcnQgPiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30K
Ky5jaGlsZCB7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQorPC9zdHls
ZT4KKzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICAgIDwhLS1TdHlsZSBjaGFuZ2UgZHVlIHRvIHRv
IFVBIHN0eWxlIHNoZWV0Li0tPgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0IHRhYmluZGV4PTEgaWQ9
Zm9jdXNUYXJnZXQ+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgPC9k
aXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPXRh
cmdldD4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW5lcnQgY2hpbGQiPgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgICAgICA8ZGl2IGNsYXNzPSJ0
YXJnZXQgY2hpbGQiPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHByZSBp
ZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0U3R5bGVDaGFuZ2VUeXBlKHNl
bGVjdG9yLCBleHBlY3RlZFR5cGUpCit7CisgICAgbGV0IHBhc3MgPSB0cnVlOworICAgIGNvbnN0
IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBjb25zdCB0
eXBlID0gd2luZG93LmludGVybmFscy5zdHlsZUNoYW5nZVR5cGUoZWxlbWVudHNbaV0pOworICAg
ICAgICBpZiAodHlwZSAhPSBleHBlY3RlZFR5cGUpIHsKKyAgICAgICAgICAgIGxvZy50ZXh0Q29u
dGVudCArPSBgRkFJTCAke3NlbGVjdG9yfSBzdHlsZUNoYW5nZVR5cGUgd2FzICR7dHlwZX0gZXhw
ZWN0ZWQgJHtleHBlY3RlZFR5cGV9XG5gOworICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChwYXNzKQorICAgICAgICBsb2cudGV4dENvbnRlbnQgKz0g
IlBBU1NcbiI7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGZvY3VzVGFyZ2V0
LmZvY3VzKCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVD
aGFuZ2UiKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBmb2N1c1Rhcmdl
dC5ibHVyKCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0
eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVD
aGFuZ2UiKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Vs
ZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLWRlc2NlbmRhbnRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRh
dGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDMzNWJiZWJkOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9j
dXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBA
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hh
bmdlLWRlc2NlbmRhbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1p
bnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjNhYzgzZmY0NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1
cy13aXRoaW4tY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+
Cis8c3R5bGU+CisuY29udGFpbmVyIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAg
IHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKK30KKy5pbmVydCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgd2lkdGg6IDEw
MHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmNv
bnRhaW5lcjpmb2N1cy13aXRoaW4gLnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47Cit9CisuY2hpbGQgeworICAgIHdpZHRoOiA1MHB4OworICAgIGhlaWdodDogNTBweDsKK30K
Kzwvc3R5bGU+Cis8ZGl2IGNsYXNzPWNvbnRhaW5lcj4KKyAgICA8ZGl2IGNsYXNzPXRhcmdldCB0
YWJpbmRleD0xIGlkPWZvY3VzVGFyZ2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFy
Z2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAgICAg
PGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8
L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0eWxl
Q2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0gdHJ1
ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0
b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVsZW1l
bnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAgICAg
ICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBlIHdh
cyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBhc3Mg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9nLnRl
eHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkg
eworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAg
ICBmb2N1c1RhcmdldC5mb2N1cygpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250
YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVy
dCIsICJOb1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7Cisg
ICAgZm9jdXNUYXJnZXQuYmx1cigpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250
YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVy
dCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5n
ZS1zaWJsaW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHls
ZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1zaWJsaW5ncy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAzMzViYmViZDlmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0
aW9uLWZvY3VzLXdpdGhpbi1jaGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGlu
LWNoYW5nZS1zaWJsaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUt
aW52YWxpZGF0aW9uLWZvY3VzLXdpdGhpbi1jaGFuZ2Utc2libGluZ3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjkyYzg4NzdiODIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMt
d2l0aGluLWNoYW5nZS1zaWJsaW5ncy5odG1sCkBAIC0wLDAgKzEsODggQEAKKzxodG1sPgorPHN0
eWxlPgorLmNvbnRhaW5lciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB3aWR0
aDogMjAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9
CisuaW5lcnQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQor
LnRhcmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIHdpZHRoOiAxMDBweDsK
KyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5pbmVydDpm
b2N1cy13aXRoaW4gfiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30K
Ky5pbmVydDpmb2N1cy13aXRoaW4gfiAuaW5lcnQgPiAudGFyZ2V0IHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKK30KKy5jaGlsZCB7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0
OiA1MHB4OworfQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICAgIDxkaXYgY2xh
c3M9aW5lcnQ+CisgICAgICAgIDwhLS1TdHlsZSBjaGFuZ2UgZHVlIHRvIHRvIFVBIHN0eWxlIHNo
ZWV0Li0tPgorICAgICAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgY2hpbGQiIHRhYmluZGV4PTEgaWQ9
Zm9jdXNUYXJnZXQ+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
dGFyZ2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAg
ICAgPGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0
eWxlQ2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0g
dHJ1ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2Vs
ZWN0b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVs
ZW1lbnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAg
ICAgICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBl
IHdhcyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBh
c3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9n
LnRleHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24g
KCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsK
KyAgICBmb2N1c1RhcmdldC5mb2N1cygpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRh
cmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5j
b250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5p
bmVydCIsICJOb1N0eWxlQ2hhbmdlIik7CisKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7
CisgICAgZm9jdXNUYXJnZXQuYmx1cigpOworCisgICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRh
cmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5j
b250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5p
bmVydCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRl
c2NlbmRhbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxl
LWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzM1YmJlYmQ5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1o
b3Zlci1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdlLWRlc2NlbmRh
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24t
aG92ZXItY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmEwNzQ3ZjU3NDZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzxodG1sPgorPHN0eWxlPgorLmNvbnRhaW5lciB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiA2MDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisuaW5lcnQgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
MTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLnRhcmdldCB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5jb250YWluZXI6aG92ZXIgLnRhcmdldCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9CisuY2hpbGQgeworICAgIHdpZHRoOiA1MHB4
OworICAgIGhlaWdodDogNTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2IGNsYXNzPWNvbnRhaW5lcj4K
KyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9dGFyZ2V0
PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+CisgICAgPGRp
diBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxkIj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAgICAgICAgPGRp
diBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rp
dj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN0eWxlQ2hh
bmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNzID0gdHJ1ZTsK
KyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3Ip
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGVsZW1lbnRz
W2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAgICAgICAgICBs
b2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VUeXBlIHdhcyAk
e3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAgIHBhc3MgPSBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAgbG9nLnRleHRD
b250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewor
ICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCw1MCk7CisKKyAgICB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCIudGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgiLmNvbnRhaW5lciIsICJOb1N0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgiLmluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
TGVmdDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsNTApOworCisgICAgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOworICAgIHRlc3RT
dHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOworICAgIHRlc3RT
dHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9OworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRp
b24taG92ZXItY2hhbmdlLXNpYmxpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzM1YmJlYmQ5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWlu
dmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24taG92ZXItY2hhbmdl
LXNpYmxpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlk
YXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjZkMmZmYWNlYmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5nZS1zaWJsaW5n
cy5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzxodG1sPgorPHN0eWxlPgorLmNvbnRhaW5lciB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiA2MDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisuaW5lcnQgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
MTAwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLnRhcmdldCB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5pbmVydDpob3ZlciB+IC50YXJnZXQgeworICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorLmluZXJ0OmhvdmVyIH4gLmluZXJ0ID4gLnRh
cmdldCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9CisuY2hpbGQgeworICAgIHdp
ZHRoOiA1MHB4OworICAgIGhlaWdodDogNTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2IGNsYXNzPWNv
bnRhaW5lcj4KKyAgICA8ZGl2IGNsYXNzPWluZXJ0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9dGFyZ2V0PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9aW5lcnQ+CisgICAgPC9kaXY+
CisgICAgPGRpdiBjbGFzcz10YXJnZXQ+CisgICAgICAgIDxkaXYgY2xhc3M9ImluZXJ0IGNoaWxk
Ij4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz1pbmVydD4KKyAg
ICAgICAgPGRpdiBjbGFzcz0idGFyZ2V0IGNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9k
aXY+Cis8L2Rpdj4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dFN0eWxlQ2hhbmdlVHlwZShzZWxlY3RvciwgZXhwZWN0ZWRUeXBlKQoreworICAgIGxldCBwYXNz
ID0gdHJ1ZTsKKyAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
c2VsZWN0b3IpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgY29uc3QgdHlwZSA9IHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBl
KGVsZW1lbnRzW2ldKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gZXhwZWN0ZWRUeXBlKSB7CisgICAg
ICAgICAgICBsb2cudGV4dENvbnRlbnQgKz0gYEZBSUwgJHtzZWxlY3Rvcn0gc3R5bGVDaGFuZ2VU
eXBlIHdhcyAke3R5cGV9IGV4cGVjdGVkICR7ZXhwZWN0ZWRUeXBlfVxuYDsKKyAgICAgICAgICAg
IHBhc3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFzcykKKyAgICAgICAg
bG9nLnRleHRDb250ZW50ICs9ICJQQVNTXG4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24gKCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVm
dDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCw1MCk7CisKKyAgICB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCIudGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiLmNvbnRhaW5lciIsICJOb1N0eWxlQ2hhbmdlIik7CisgICAgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiLmluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKTsKKworICAgIGRvY3VtZW50LmJv
ZHkub2Zmc2V0TGVmdDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsNTApOworCisg
ICAgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiLnRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpOwor
ICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5jb250YWluZXIiLCAiTm9TdHlsZUNoYW5nZSIpOwor
ICAgIHRlc3RTdHlsZUNoYW5nZVR5cGUoIi5pbmVydCIsICJOb1N0eWxlQ2hhbmdlIik7Cit9Owor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDQzMWY4ODk1OTkyLi4xMmU0MThlYWIyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTcwMSw2ICs3MDEsOCBAQCBmYXN0L3NlbGVjdG9ycy9ob3Zlci1x
dWlya3MuaHRtbCBbIFNraXAgXQogZmFzdC9zZWxlY3RvcnMvaG92ZXItc3RyaWN0Lmh0bWwgWyBT
a2lwIF0KIGZhc3Qvc2VsZWN0b3JzL25vdC1hY3RpdmUtaG92ZXItcXVpcmtzLmh0bWwgWyBTa2lw
IF0KIGZhc3Qvc2VsZWN0b3JzL25vdC1hY3RpdmUtaG92ZXItc3RyaWN0Lmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2UtZGVzY2VuZGFu
dHMuaHRtbCBbIFNraXAgXQorZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVy
LWNoYW5nZS1zaWJsaW5ncy5odG1sIFsgU2tpcCBdCiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRl
LWZsb2F0cy9zaGFwZS1vdXRzaWRlLWNsaXAtcGF0aC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQog
ZmFzdC9zaGFkb3ctZG9tL21vdXNlZW50ZXItbW91c2VsZWF2ZS1hY3Jvc3Mtc2hhZG93LWJvdW5k
YXJ5Lmh0bWwgWyBTa2lwIF0KIGZhc3Qvc2hhZG93LWRvbS9tb3VzZWVudGVyLW1vdXNlbGVhdmUt
aW5zaWRlLXNoYWRvdy10cmVlLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjA4MjYwZjU4YjEuLjczYTIzZmQzNzU0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjg2Myw2ICsyODYzLDE0
IEBAIHdlYmtpdC5vcmcvYi8xNDA1MTkgWyBEZWJ1ZyBdIGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2Vs
ZWN0b3ItaWQtd2l0aC1tdWx0aXBsZS1lbGVtCiBmYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9y
LXdpbmRvdy1pbmFjdGl2ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L3NlbGVjdG9ycy9yZWFkLW9u
bHktcmVhZC13cml0ZS1pbnB1dC1iYXNpY3MuaHRtbCBbIEZhaWx1cmUgXQogCisjIFdpbiBwb3J0
IHNvbWV0aW1lcyBmb3JjZXMgc3luY2hyb25vdXMgc3R5bGUgcmVjYWxjIG9uIGZvY3VzL2hvdmVy
IG1ha2luZyB0aGVzZSB1bnJlbGlhYmxlLgorZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0
aW9uLWZvY3VzLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2Zhc3Qv
c2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2Utc2libGluZ3MuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCitmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMt
d2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2Zhc3Qvc2Vs
ZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy13aXRoaW4tY2hhbmdlLXNpYmxpbmdzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQorZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhv
dmVyLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2Zhc3Qvc2VsZWN0
b3JzL3N0eWxlLWludmFsaWRhdGlvbi1ob3Zlci1jaGFuZ2Utc2libGluZ3MuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCisKIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNp
ZGUtaW1hZ2UtZml0LTAwMi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogZmFzdC90
YWJsZS9ib3JkZXItY29sbGFwc2luZy9jYWNoZWQtY2hhbmdlLXRib2R5LWJvcmRlci13aWR0aC5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNDU3MzA1ZTg0ZS4uYmQ3MjljNjk1
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAyMC0wMy0xMSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQWNjdXJhdGUgc3R5bGUgaW52YWxpZGF0
aW9uIGZvciB1c2VyIGFjdGlvbiBwc2V1ZG8gY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NTE5Njg4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAg
ICAgQ3VycmVudGx5IDpob3ZlciwgOmZvY3VzLCA6Zm9jdXMtd2l0aGluIGFuZCA6YWN0aXZlIGxh
Y2sgZmluZSBncmFpbmVkIGludmFsaWRhdGlvbiB1c2luZworICAgICAgICBydWxlIHNldHMgbGlr
ZSB3ZSBkbyB3aXRoIGNsYXNzIGFuZCBhdHRyaWJ1dGUgc2VsZWN0b3JzLgorCisgICAgICAgIFRo
aXMgY2FuIGJlIGFkZGVkIGVhc2lseSBmb2xsb3dpbmcgdGhlIHNhbWUgcGF0dGVybi4KKworICAg
ICAgICBUZXN0czogZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWhvdmVyLWNoYW5n
ZS1kZXNjZW5kYW50cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NlbGVjdG9ycy9zdHlsZS1p
bnZhbGlkYXRpb24taG92ZXItY2hhbmdlLXNpYmxpbmdzLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3Qvc2VsZWN0b3JzL3N0eWxlLWludmFsaWRhdGlvbi1mb2N1cy1jaGFuZ2UtZGVzY2VuZGFudHMu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9zZWxlY3RvcnMvc3R5bGUtaW52YWxpZGF0aW9uLWZv
Y3VzLWNoYW5nZS1zaWJsaW5ncy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NlbGVjdG9ycy9z
dHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0aGluLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3NlbGVjdG9ycy9zdHlsZS1pbnZhbGlkYXRpb24tZm9jdXMtd2l0
aGluLWNoYW5nZS1zaWJsaW5ncy5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QWN0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNldEhhc0ZvY3VzV2l0aGluKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhv
dmVyZWQpOgorCisgICAgICAgIFVzZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi4KKwor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRI
YXNGb2N1c1dpdGhpbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVOZWVkc0xheW91dENoZWNr
ZXI6On5SZW5kZXJUcmVlTmVlZHNMYXlvdXRDaGVja2VyKToKKyAgICAgICAgKiBzdHlsZS9Qc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9u
KToKKworICAgICAgICBDb21wdXRlIGludmFsaWRhdGlvbiBydWxlIHNldCBmb3IgYSBwc2V1ZG8g
Y2xhc3MgY2hhbmdlLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cyk6CisgICAgICAgICog
c3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAg
ICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVz
KToKKworICAgICAgICBDb2xsZWN0IHBzZXVkbyBjbGFzcyBmZWF0dXJlcywgc2ltaWxhciB0byBj
bGFzc2VzL2F0dHJpYnV0ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVy
ZVNldDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0Zp
dCk6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHls
ZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlUnVsZVNl
dHM6OmNvbGxlY3RGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZW5z
dXJlSW52YWxpZGF0aW9uUnVsZVNldHMpOgorCisgICAgICAgIE1ha2UgbW9yZSBnZW5lcmljIHRv
IGFsbG93IGVudW0ga2V5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0
czo6cHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyBjb25zdCk6CisKKyAgICAgICAgQ3Jl
YXRlIHBzZXVkbyBjbGFzcyBpbnZhbGlkYXRpb24gcnVsZXNldC4KKworICAgICAgICAqIHN0eWxl
L1N0eWxlU2NvcGVSdWxlU2V0cy5oOgorCiAyMDIwLTAzLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNYWtlIHN1cmUgYSBNZWRpU3RyZWFtVHJh
Y2sgY2xvbmUgZG9lcyBub3QgaW50ZXJydXB0IHRoZSBiZWluZyBjbG9uZWQgdHJhY2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggMWI4YjgyM2NjN2YuLjA0ZTJmMDNhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjM3Miw2ICsyMzcyLDcgQEAgc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKIHN0eWxl
L01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAKIHN0eWxlL1BhZ2VSdWxlQ29sbGVjdG9yLmNw
cAogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCiBzdHlsZS9SdWxlRGF0YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJlLmNwcAog
c3R5bGUvUnVsZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzMjYzNTE5ZDYzNC4uZDRiMDI0M2Y3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4
ODcsNiArNDg4Nyw3IEBACiAJCUU0NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5UeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFN0FB
MjYyMUMzN0I2MzAwMjk2RENEIC8qIE1hcmdpblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8q
IERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNv
bnRlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEw
RjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKKwkJRTQ1QTZDNzcyNDE3QkE1OTAwNkU0Q0Q1
IC8qIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDVBNkM3NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKIAkJRTQ1QkE2QUEyMzc0OTI2QzAw
NERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovOyB9OwogCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZD
MDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ1QkE2QjUyMzc2MjI5RjAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCAq
LzsgfTsKIAkJRTQ2MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2MDVGRUEy
MTY2NDgwODAwRTUzMDQ2IC8qIFByZXdhcm1JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTI5MCw2ICsxNTI5MSw4IEBACiAJ
CUU0NTM5MDM0MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsVmlld0lPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldElPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAwMzY5NUM4
IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDVBNkM3MzI0MTdCQTRDMDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDVBNkM3
NjI0MTdCQTU5MDA2RTRDRDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1QkE2QTgyMzc0OTI2QjAwNERG
QzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQ1QkE2QUIyMzc0OTI3QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDVCQTZCMjIzNzYyMjdFMDA0REZD
MDcgLyogU3R5bGVBZGp1c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHlsZUFkanVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3
MjYwLDYgKzI3MjYzLDggQEAKIAkJCQlGQkRCNjFBMDE2RDYwMzdFMDBCQjMzOTQgLyogUGFnZVJ1
bGVDb2xsZWN0b3IuaCAqLywKIAkJCQlFNEFCQUJFNTIzNjFBMzQyMDBGQTQzNDUgLyogUHJvcGVy
dHlDYXNjYWRlLmNwcCAqLywKIAkJCQlFNEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVy
dHlDYXNjYWRlLmggKi8sCisJCQkJRTQ1QTZDNzMyNDE3QkE0QzAwNkU0Q0Q1IC8qIFBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNDVBNkM3NjI0MTdCQTU5MDA2RTRD
RDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNDg2M0NGQTIz
ODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEuY3BwICovLAogCQkJCUU0ODYzQ0ZEMjM4NDJFOUUw
MDk3MjE1OCAvKiBSdWxlRGF0YS5oICovLAogCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMyRTY1MiAv
KiBSdWxlRmVhdHVyZS5jcHAgKi8sCkBAIC0zMTE1OCw2ICszMTE2Myw3IEBACiAJCQkJQjJGQTNE
NTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjJGQTNENTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2lyY2xlRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNENUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ2xp
cFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDVBNkM3NzI0MTdCQTU5MDA2RTRD
RDUgLyogUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzRDVGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MTBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdDdXJzb3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0Q2MzBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggYjVmYzkxMDA5MmEuLmMwNjFkYzA1OGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckNhcHR1cmVDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxv
Y2tDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC02MzEsMTcgKzYzMiwx
NSBAQCB2b2lkIEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UpCiB7CiAg
ICAgaWYgKGZsYWcgPT0gYWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50
KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QWN0aXZlKCp0aGlzLCBmbGFnKTsKLQotICAgIGF1
dG8qIHJlbmRlclN0eWxlID0gcmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwotICAgIGJv
b2wgcmVhY3RzVG9QcmVzcyA9IChyZW5kZXJTdHlsZSAmJiByZW5kZXJTdHlsZS0+YWZmZWN0ZWRC
eUFjdGl2ZSgpKSB8fCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLSAgICBpZiAocmVhY3RzVG9Q
cmVzcykKLSAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIHsKKyAgICAg
ICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9u
KCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOworICAgICAgICBkb2N1bWVu
dCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CisgICAgfQog
CiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHJlYWN0
c1RvUHJlc3MgPSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJh
bmNlKCkgJiYgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENv
bnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0ZSkpCiAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVl
OwogCkBAIC02ODAsOSArNjc5LDExIEBAIHZvaWQgRWxlbWVudDo6c2V0Rm9jdXMoYm9vbCBmbGFn
KQogewogICAgIGlmIChmbGFnID09IGZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAg
ZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRGb2N1c2VkKCp0aGlzLCBmbGFnKTsK
LSAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgeworICAgICAgICBTdHlsZTo6
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZm9jdXNTdHlsZUludmFsaWRhdGlvbigqdGhp
cywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXMpOworICAgICAgICBTdHlsZTo6UHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGlyZWN0Rm9jdXNTdHlsZUludmFsaWRhdGlvbigqdGhp
cywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyZWN0Rm9jdXMpOworICAgICAgICBkb2N1bWVu
dCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEZvY3VzZWQoKnRoaXMsIGZsYWcpOworICAgIH0K
IAogICAgIC8vIFNoYWRvdyBob3N0IHdpdGggYSBzbG90IHRoYXQgY29udGFpbiBmb2N1c2VkIGVs
ZW1lbnQgaXMgbm90IGNvbnNpZGVyZWQgZm9jdXNlZC4KICAgICBmb3IgKGF1dG8qIHJvb3QgPSBj
b250YWluaW5nU2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+aG9zdCgpLT5jb250YWlu
aW5nU2hhZG93Um9vdCgpKSB7CkBAIC02OTAsMzQgKzY5MSwzMCBAQCB2b2lkIEVsZW1lbnQ6OnNl
dEZvY3VzKGJvb2wgZmxhZykKICAgICAgICAgcm9vdC0+aG9zdCgpLT5pbnZhbGlkYXRlU3R5bGUo
KTsKICAgICB9CiAKLSAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBl
bGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpCisgICAgZm9y
IChhdXRvKiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVu
dEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKQogICAgICAgICBlbGVtZW50LT5zZXRIYXNGb2N1c1dp
dGhpbihmbGFnKTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgZmxhZykKK3Zv
aWQgRWxlbWVudDo6c2V0SGFzRm9jdXNXaXRoaW4oYm9vbCBmbGFnKQogewotICAgIGlmIChmbGFn
ID09IGhvdmVyZWQoKSkKKyAgICBpZiAoaGFzRm9jdXNXaXRoaW4oKSA9PSBmbGFnKQogICAgICAg
ICByZXR1cm47CisgICAgeworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Zv
Y3VzV2l0aGluKTsKKyAgICAgICAgc2V0RmxhZyhmbGFnLCBIYXNGb2N1c1dpdGhpbik7CisgICAg
fQorfQogCi0gICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0
aGlzLCBmbGFnKTsKLQotICAgIGF1dG8qIHN0eWxlID0gcmVuZGVyT3JEaXNwbGF5Q29udGVudHNT
dHlsZSgpOwotICAgIGlmIChzdHlsZSAmJiAoc3R5bGUtPmFmZmVjdGVkQnlIb3ZlcigpIHx8IGNo
aWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkpKQotICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0
cmVlKCk7Ci0KLSAgICBpZiAoIXJlbmRlcmVyKCkpIHsKLSAgICAgICAgLy8gV2hlbiBzZXR0aW5n
IGhvdmVyIHRvIGZhbHNlLCB0aGUgc3R5bGUgbmVlZHMgdG8gYmUgcmVjYWxjJ2QgZXZlbiB3aGVu
Ci0gICAgICAgIC8vIHRoZXJlJ3Mgbm8gcmVuZGVyZXIgKGltYWdpbmUgc2V0dGluZyBkaXNwbGF5
Om5vbmUgaW4gdGhlIDpob3ZlciBjbGFzcywKLSAgICAgICAgLy8gaWYgYSBuaWwgcmVuZGVyZXIg
d291bGQgcHJldmVudCB0aGlzIGVsZW1lbnQgZnJvbSByZWNhbGN1bGF0aW5nIGl0cwotICAgICAg
ICAvLyBzdHlsZSwgaXQgd291bGQgbmV2ZXIgZ28gYmFjayB0byBpdHMgbm9ybWFsIHN0eWxlIGFu
ZCByZW1haW4KLSAgICAgICAgLy8gc3R1Y2sgaW4gaXRzIGhvdmVyZWQgc3R5bGUpLgotICAgICAg
ICBpZiAoIWZsYWcgJiYgIXN0eWxlKQotICAgICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZSgpOwotCit2b2lkIEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQoreworICAgIGlm
IChmbGFnID09IGhvdmVyZWQoKSkKICAgICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgU3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlz
LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zlcik7CisgICAgICAgIGRvY3VtZW50KCkudXNl
ckFjdGlvbkVsZW1lbnRzKCkuc2V0SG92ZXJlZCgqdGhpcywgZmxhZyk7CiAgICAgfQogCi0gICAg
aWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCisgICAgaWYgKGF1dG8qIHN0eWxlID0gcmVuZGVy
U3R5bGUoKTsgc3R5bGUgJiYgc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmVuZGVy
ZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6Okhv
dmVyU3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2ZmQ1OTkzZTZiZC4uYTdkZWFm
ZTNjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtODQ2LDE1ICs4NDYsNiBAQCBpbmxpbmUgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
cmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpICYmIGVsZW1lbnQuZG9jdW1lbnQoKS5pc0hU
TUxEb2N1bWVudCgpOwogfQogCi1pbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRIYXNGb2N1c1dpdGhp
bihib29sIGZsYWcpCi17Ci0gICAgaWYgKGhhc0ZvY3VzV2l0aGluKCkgPT0gZmxhZykKLSAgICAg
ICAgcmV0dXJuOwotICAgIHNldEZsYWcoZmxhZywgSGFzRm9jdXNXaXRoaW4pOwotICAgIGlmIChz
dHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpKQotICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JT
dWJ0cmVlKCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFF1YWxpZmllZE5hbWVzPgogaW5s
aW5lIGNvbnN0IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lcyYuLi4gbmFtZXMpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3MTViYzlh
MzViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aCIKKworI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiU3R5bGVJ
bnZhbGlkYXRpb25GdW5jdGlvbnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IFN0eWxlIHsKKwordm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUlu
dmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzKQorewor
ICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUN1cnJlbnQgPSBmYWxzZTsKKyAgICBib29sIG1heUFm
ZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gZmFsc2U7CisKKyAgICB0cmF2ZXJzZVJ1bGVGZWF0dXJl
cyhtX2VsZW1lbnQsIFsmXSAoY29uc3QgUnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVzLCBib29sIG1h
eUFmZmVjdFNoYWRvd1RyZWUpIHsKKyAgICAgICAgaWYgKG1heUFmZmVjdFNoYWRvd1RyZWUgJiYg
ZmVhdHVyZXMucHNldWRvQ2xhc3NSdWxlcy5jb250YWlucyhwc2V1ZG9DbGFzcykpCisgICAgICAg
ICAgICBtYXlBZmZlY3RTdHlsZUluU2hhZG93VHJlZSA9IHRydWU7CisgICAgICAgIGlmIChtX2Vs
ZW1lbnQuc2hhZG93Um9vdCgpICYmIGZlYXR1cmVzLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0
LmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAgICAgIHNob3VsZEludmFsaWRhdGVDdXJy
ZW50ID0gdHJ1ZTsKKyAgICB9KTsKKworICAgIGlmIChtYXlBZmZlY3RTdHlsZUluU2hhZG93VHJl
ZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGZpbmUtZ3JhaW5lZCBpbnZhbGlk
YXRpb24gZm9yIHNoYWRvdyB0cmVlLgorICAgICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZSgpOworICAgIH0KKworICAgIGlmIChzaG91bGRJbnZhbGlkYXRlQ3VycmVudCkK
KyAgICAgICAgbV9lbGVtZW50LmludmFsaWRhdGVTdHlsZSgpOworCisgICAgYXV0byYgcnVsZVNl
dHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CisgICAgaWYgKGF1dG8q
IGludmFsaWRhdGlvblJ1bGVTZXRzID0gcnVsZVNldHMucHNldWRvQ2xhc3NJbnZhbGlkYXRpb25S
dWxlU2V0cyhwc2V1ZG9DbGFzcykpIHsKKyAgICAgICAgZm9yIChhdXRvJiBpbnZhbGlkYXRpb25S
dWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVTZXRzKQorICAgICAgICAgICAgSW52YWxpZGF0b3I6
OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9tYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52YWxp
ZGF0aW9uUnVsZVNldCk7CisgICAgfQorfQorCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKQoreworICAgIEludmFsaWRhdG9y
OjppbnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKG1fZWxlbWVudCwgbV9tYXRjaEVs
ZW1lbnRSdWxlU2V0cyk7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5hNGM1ODBjYzJkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3Iu
aCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiU3R5bGVJbnZhbGlkYXRvci5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IFN0eWxlIHsKKworY2xhc3MgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGlj
OgorICAgIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICB+UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24o
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZSk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMo
KTsKKworICAgIGNvbnN0IGJvb2wgbV9pc0VuYWJsZWQ7CisgICAgRWxlbWVudCYgbV9lbGVtZW50
OworCisgICAgSW52YWxpZGF0b3I6Ok1hdGNoRWxlbWVudFJ1bGVTZXRzIG1fbWF0Y2hFbGVtZW50
UnVsZVNldHM7Cit9OworCitpbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NUeXBlKQorICAgIDogbV9pc0VuYWJsZWQoZWxl
bWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkK
KworeworICAgIGlmICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBjb21wdXRl
SW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzVHlwZSk7CisgICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1
bGVTZXRzKCk7Cit9CisKK2lubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQor
ICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7Cit9CisK
K30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCA3ZGZmZGFlYzBiNi4u
ZTNmZWM1Y2Q1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKQEAgLTE1Myw3
ICsxNTMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJl
c0Zyb21TZWxlY3RvcihTZWxlY3RvckZlYXR1cmVzJiBzZQogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
cykKKyAgICAgICAgICAgIHNlbGVjdG9yRmVhdHVyZXMucHNldWRvQ2xhc3Nlcy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoc2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpLCBtYXRjaEVsZW1lbnQpKTsK
IAogICAgICAgICBpZiAoIXNlbGVjdG9yRmVhdHVyZXMuaGFzU2libGluZ1NlbGVjdG9yICYmIHNl
bGVjdG9yLT5pc1NpYmxpbmdTZWxlY3RvcigpKQogICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJl
cy5oYXNTaWJsaW5nU2VsZWN0b3IgPSB0cnVlOwpAQCAtMTk5LDYgKzIwMCwxMyBAQCB2b2lkIFJ1
bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQog
ICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAg
ICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9j
YWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgfQorICAgIGZvciAoYXV0
byYga2V5QW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVzLnBzZXVkb0NsYXNzZXMpIHsKKyAgICAg
ICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUoa2V5QW5kTWF0Y2guZmlyc3QsIFtdIHsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAg
IH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKHsgcnVsZURhdGEsIGtleUFuZE1hdGNoLnNlY29u
ZCB9KTsKKyAgICAgICAgaWYgKGtleUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhv
c3QpCisgICAgICAgICAgICBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQoa2V5QW5kTWF0
Y2guZmlyc3QpOworICAgIH0KIH0KIAogdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1
bGVGZWF0dXJlU2V0JiBvdGhlcikKQEAgLTIyNCw2ICsyMzIsMTMgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICB9CiAgICAgYXR0cmli
dXRlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2lu
KCksIG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKIAorICAgIGZvciAoYXV0
byYga2V5VmFsdWVQYWlyIDogb3RoZXIucHNldWRvQ2xhc3NSdWxlcykgeworICAgICAgICBwc2V1
ZG9DbGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKKyAgICB9Cisg
ICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLnBzZXVkb0NsYXNzZXNBZmZl
Y3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmVuZCgp
KTsKKwogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IHVzZXNGaXJzdExpbmVSdWxlcyB8fCBvdGhl
ci51c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSB1c2VzRmly
c3RMZXR0ZXJSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMZXR0ZXJSdWxlczsKIH0KQEAgLTI0OCw2
ICsyNjMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpjbGVhcigpCiAgICAgY2xhc3Nlc0FmZmVj
dGluZ0hvc3QuY2xlYXIoKTsKICAgICBhdHRyaWJ1dGVSdWxlcy5jbGVhcigpOwogICAgIGF0dHJp
YnV0ZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7CisgICAgcHNldWRvQ2xhc3NSdWxlcy5jbGVhcigp
OworICAgIHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7CiAgICAgdXNlc0ZpcnN0
TGluZVJ1bGVzID0gZmFsc2U7CiAgICAgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSBmYWxzZTsKIH0K
QEAgLTI2MCw2ICsyNzcsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAg
ICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBhdHRy
aWJ1dGVSdWxlcy52YWx1ZXMoKSkKICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CisgICAg
Zm9yIChhdXRvJiBydWxlcyA6IHBzZXVkb0NsYXNzUnVsZXMudmFsdWVzKCkpCisgICAgICAgIHJ1
bGVzLT5zaHJpbmtUb0ZpdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBTdHlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVGZWF0dXJlLmgKaW5kZXggY2M2N2YzZmIwMTIuLjQ0MThmZjZhYmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTc1LDggKzc1LDEwIEBAIHN0cnVjdCBSdWxlRmVh
dHVyZVNldCB7CiAgICAgCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGNsYXNzUnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVj
dG9yPj4+IGF0dHJpYnV0ZVJ1bGVzOworICAgIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZT4+LCBXVEY6OkludEhh
c2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFp
dHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVsZXM7CiAgICAg
SGFzaFNldDxBdG9tU3RyaW5nPiBjbGFzc2VzQWZmZWN0aW5nSG9zdDsKICAgICBIYXNoU2V0PEF0
b21TdHJpbmc+IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0OworICAgIEhhc2hTZXQ8Q1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzVHlwZSwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGU+PiBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0
TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFs
c2UgfTsKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBWZWN0b3I8c3RkOjpw
YWlyPEF0b21TdHJpbmcsIE1hdGNoRWxlbWVudD4sIDMyPiBjbGFzc2VzOwogICAgICAgICBWZWN0
b3I8c3RkOjpwYWlyPGNvbnN0IENTU1NlbGVjdG9yKiwgTWF0Y2hFbGVtZW50PiwgMzI+IGF0dHJp
YnV0ZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSwgTWF0Y2hFbGVtZW50PiwgMzI+IHBzZXVkb0NsYXNzZXM7CiAgICAgfTsKICAgICB2b2lk
IHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMm
LCBjb25zdCBDU1NTZWxlY3RvciYsIE1hdGNoRWxlbWVudCA9IE1hdGNoRWxlbWVudDo6U3ViamVj
dCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5k
ZXggZTMxM2QwMjI5YTYuLmRiM2IyYmFhYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTE5NiwxMyArMTk2LDE1IEBAIHZvaWQgU2NvcGVSdWxl
U2V0czo6Y29sbGVjdEZlYXR1cmVzKCkgY29uc3QKIAogICAgIG1fY2xhc3NJbnZhbGlkYXRpb25S
dWxlU2V0cy5jbGVhcigpOwogICAgIG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMuY2xl
YXIoKTsKKyAgICBtX3BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKKwog
ICAgIG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlID0gV1RGOjpu
dWxsb3B0OwogCiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBSdWxlRmVhdHVyZVR5cGU+Ci1zdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVT
ZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBrZXksIEhh
c2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxl
U2V0Pj4+JiBydWxlU2V0TWFwLCBjb25zdCBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVUeXBlPj4+JiBydWxlRmVhdHVyZXMpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBSdWxlRmVhdHVyZVR5cGUsIHR5cGVuYW1lIEhhc2gs
IHR5cGVuYW1lIEhhc2hUcmFpdHM+CitzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBLZXlUeXBlJiBrZXksIEhhc2hNYXA8
S2V5VHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIEhh
c2gsIEhhc2hUcmFpdHM+JiBydWxlU2V0TWFwLCBjb25zdCBIYXNoTWFwPEtleVR5cGUsIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVUeXBlPj4sIEhhc2gsIEhhc2hUcmFpdHM+JiBy
dWxlRmVhdHVyZXMpCiB7CiAgICAgcmV0dXJuIHJ1bGVTZXRNYXAuZW5zdXJlKGtleSwgWyZdICgp
IC0+IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+IHsKICAgICAg
ICAgYXV0byogZmVhdHVyZXMgPSBydWxlRmVhdHVyZXMuZ2V0KGtleSk7CkBAIC0yNDEsNiArMjQz
LDExIEBAIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6
YXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMoCiAgICAgcmV0dXJuIGVuc3VyZUludmFsaWRh
dGlvblJ1bGVTZXRzKGF0dHJpYnV0ZU5hbWUsIG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNl
dHMsIG1fZmVhdHVyZXMuYXR0cmlidXRlUnVsZXMpOwogfQogCitjb25zdCBWZWN0b3I8SW52YWxp
ZGF0aW9uUnVsZVNldD4qIFNjb3BlUnVsZVNldHM6OnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVs
ZVNldHMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcykgY29uc3QKK3sK
KyAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3MsIG1fcHNl
dWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cywgbV9mZWF0dXJlcy5wc2V1ZG9DbGFzc1J1bGVz
KTsKK30KKwogYm9vbCBTY29wZVJ1bGVTZXRzOjpoYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVB
dHRyaWJ1dGUoKSBjb25zdAogewogICAgIGF1dG8gY29tcHV0ZSA9IFsmXSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCmluZGV4IDhjY2NmYWFhZGQ0Li5lNGUzZjVj
NjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY1
LDYgKzY1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVT
ZXQ+KiBjbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFt
ZSkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBhdHRyaWJ1
dGVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBj
b25zdDsKKyAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIHBzZXVkb0NsYXNz
SW52YWxpZGF0aW9uUnVsZVNldHMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSkgY29uc3Q7
CiAKICAgICBib29sIGhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0
OwogCkBAIC0xMDEsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxSdWxl
U2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRv
bVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1f
Y2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmli
dXRlSW52YWxpZGF0aW9uUnVsZVNldHM7CisgICAgbXV0YWJsZSBIYXNoTWFwPENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc1R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6
U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IG1fcHNl
dWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKIAogICAgIG11dGFibGUgT3B0aW9uYWw8Ym9v
bD4gbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>