<?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>204856</bug_id>
          
          <creation_ts>2019-12-04 12:24:54 -0800</creation_ts>
          <short_desc>Make MediaPlayer::client() private</short_desc>
          <delta_ts>2019-12-04 16:48:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595552</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-04 12:24:54 -0800</bug_when>
    <thetext>MediaPlayerPrivate* shouldn&apos;t need to access the client pointer directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595553</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-04 12:25:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/57633186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595557</commentid>
    <comment_count>2</comment_count>
      <attachid>384834</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-04 12:29:53 -0800</bug_when>
    <thetext>Created attachment 384834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595562</commentid>
    <comment_count>3</comment_count>
      <attachid>384838</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-04 13:02:21 -0800</bug_when>
    <thetext>Created attachment 384838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595575</commentid>
    <comment_count>4</comment_count>
      <attachid>384843</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-04 13:44:17 -0800</bug_when>
    <thetext>Created attachment 384843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595634</commentid>
    <comment_count>5</comment_count>
      <attachid>384843</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 16:48:50 -0800</bug_when>
    <thetext>Comment on attachment 384843
Patch

Clearing flags on attachment: 384843

Committed r253133: &lt;https://trac.webkit.org/changeset/253133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595635</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 16:48:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384834</attachid>
            <date>2019-12-04 12:29:53 -0800</date>
            <delta_ts>2019-12-04 13:02:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204856-20191204122952.patch</filename>
            <type>text/plain</type>
            <size>43335</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhYmIwNjcwMzNjZmFk
ZWNiMTAxMDYxMWJlZGUwZGVkYWExYTFkMS4uMmQ2ODA2OTVjN2VhODVmNGExOTBkOWYyZjdkOWVm
OGViZWY0OGZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxOS0xMi0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1lZGlh
UGxheWVyOjpjbGllbnQoKSBwcml2YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ4NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMzMTg2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgTWFrZSBNZWRpYVBsYXllcjo6Y2xpZW50IHByaXZhdGUgYW5kIGNyZWF0ZSBhY2Nlc3NvcnMg
Zm9yIGFsbCBvZiB0aGUgY2xpZW50IG1ldGhvZHMKKyAgICAgICAgdGhhdCB3ZXJlIGJlaW5nIGFj
Y2Vzc2VkIGRpcmVjdGx5LiBBbHNvIHJlbW92ZSB0aGUgTWVkaWFQbGF5ZXIqIHBhcmFtZXRlcnMg
ZnJvbQorICAgICAgICB0aGUgY2xpZW50IG1ldGhvZHMgc2luY2Ugbm9uZSBvZiB0aGVtIHdlcmUg
dXNlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZXR3b3JrU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2Nl
bGVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmN1cnJlbnRQbGF5YmFja1Rh
cmdldElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
ZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZWFk
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6dm9sdW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bXV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6ZHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2aWNlQWRhcHRlciBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyQ2xpZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5
ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVu
dDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0
ZWRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJD
bGllbnQ6Om1lZGlhUGxheWVyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJDaGFy
YWN0ZXJpc3RpY0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6
bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1Rhcmdl
dElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5k
ZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpyZW5kZXJpbmdNb2RlQ2hhbmdlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllcjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVudHNTY2FsZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc3JlcXVl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNsaWVudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnByZWZlcnJlZFJlbmRlcmluZ01vZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpz
ZXRVcFZpZGVvUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0
Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZUFWUGxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkZXN0cm95TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjplbnN1cmVEZWNvbXByZXNzaW9uU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjplbnN1cmVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVSZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRpZEVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKToKKwogMjAxOS0xMi0wMiAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlIGFuZCBSZWFsdGltZU91dGdvaW5nVmlkZW9vU291cmNlIG9ic2VydmVTb3VyY2UvdW5v
YnNlcnZlU291cmNlIHBhdHRlcm4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDNmODdhZWU0MDI1MmUyOWVkMDY0M2ZhYzllNzk0Y2RiMWFiNjI5OTUuLjQ5ZTg1
MDBjNGUyOWRjOTQwNzE2ZTcwYTE1YTMzNGVlMjQ1N2Q1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAwMyw3ICsxMDAzLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpCiAgICAgfSk7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZChj
b25zdCBNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0
aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogewogICAgIG1faGFzRXZlckhhZEF1ZGlvIHw9IGhh
c0F1ZGlvKCk7CiAgICAgbV9oYXNFdmVySGFkVmlkZW8gfD0gaGFzVmlkZW8oKTsKQEAgLTIyMzAs
NyArMjIzMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0Fu
ZENhbGxiYWNrcygpCiAgICAgcmVqZWN0UGVuZGluZ1BsYXlQcm9taXNlcyhXVEZNb3ZlKG1fcGVu
ZGluZ1BsYXlQcm9taXNlcyksIERPTUV4Y2VwdGlvbjo6Y3JlYXRlKEFib3J0RXJyb3IpKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5ldHdvcmtT
dGF0ZUNoYW5nZWQoKQogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2so
KTsKICAgICBzZXROZXR3b3JrU3RhdGUobV9wbGF5ZXItPm5ldHdvcmtTdGF0ZSgpKTsKQEAgLTIz
NzYsNyArMjM3Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2hhbmdlTmV0d29ya1N0YXRl
RnJvbUxvYWRpbmdUb0lkbGUoKQogICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19JRExFOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlYWR5U3Rh
dGVDaGFuZ2VkKCkKIHsKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7
CiAKQEAgLTI1OTQsNyArMjU5NCw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmCiAgICAgcmV0
dXJuIG1fd2ViS2l0TWVkaWFLZXlzID8gbV93ZWJLaXRNZWRpYUtleXMtPmNhY2hlZEtleUZvcktl
eUlkKGtleUlkKSA6IG51bGxwdHI7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0YSkKK2Jvb2wg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERh
dGEpCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00ODIxLDcgKzQ4MjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc1Jl
bW92ZWQoSFRNTFNvdXJjZUVsZW1lbnQmIHNvdXJjZSkKICAgICB9CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoKQogewogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogCkBAIC00OTQ5LDcgKzQ5NDksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRpbWVyRmlyZWQoKQogI2VuZGlmCiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlh
UGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2Vk
KCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNDk2NSw3ICs0OTY1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoTWVkaWFQ
bGF5ZXIqKQogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciop
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoKQogewogICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC00OTc1LDE0ICs0OTc1LDE0IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciopCiAg
ICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciogcGxheWVy
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCgpCiB7
CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRp
YVBsYXllckNhbGxiYWNrKCk7CiAKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5kdXJh
dGlvbmNoYW5nZUV2ZW50KTsKLSAgICBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChw
bGF5ZXIpOworICAgIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKICAgICBN
ZWRpYVRpbWUgbm93ID0gY3VycmVudE1lZGlhVGltZSgpOwogICAgIE1lZGlhVGltZSBkdXIgPSBk
dXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtNDk5Miw3ICs0OTkyLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciogcGxheWVyKQog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoKQogewogICAgIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIApAQCAtNTAxMCw3ICs1MDEwLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikK
ICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIq
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2Vk
KCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTAyOCw3ICs1MDI4LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFj
a3MoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNhd1Vu
c3VwcG9ydGVkVHJhY2tzKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAt
NTAzOSw3ICs1MDM5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNhd1Vu
c3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxheWVyKikKICAgICAgICAgZG93bmNhc3Q8TWVkaWFEb2N1
bWVudD4oZG9jdW1lbnQoKSkubWVkaWFFbGVtZW50U2F3VW5zdXBwb3J0ZWRUcmFja3MoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVk
KE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXNvdXJj
ZU5vdFN1cHBvcnRlZCgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTUw
NDgsNyArNTA0OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXNvdXJj
ZU5vdFN1cHBvcnRlZChNZWRpYVBsYXllciopCiB9CiAKIC8vIE1lZGlhUGxheWVyUHJlc2VudGF0
aW9uIG1ldGhvZHMKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXBhaW50KE1l
ZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXBhaW50KCkK
IHsKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAgdXBkYXRl
RGlzcGxheVN0YXRlKCk7CkBAIC01MDU3LDcgKzUwNTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyUmVwYWludChNZWRpYVBsYXllciopCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJTaXplQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAK
QEAgLTUwNzEsMTQgKzUwNzEsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjaygpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVy
aW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCgpCiB7CiAgICAgYXV0byogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIHJldHVybiBpczxSZW5kZXJWaWRlbz4ocmVu
ZGVyZXIpCiAgICAgICAgICYmIGRvd25jYXN0PFJlbmRlclZpZGVvPigqcmVuZGVyZXIpLnZpZXco
KS5jb21wb3NpdG9yKCkuY2FuQWNjZWxlcmF0ZVZpZGVvUmVuZGVyaW5nKGRvd25jYXN0PFJlbmRl
clZpZGVvPigqcmVuZGVyZXIpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKQEAgLTUxNTMsNyArNTE1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkKICNlbmRpZgogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpCiB7CiAgICAgSU5GT19M
T0coTE9HSURFTlRJRklFUik7CiAKQEAgLTUxNjYsMTkgKzUxNjYsMTkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5ZXIqKQogICAgIHNj
aGVkdWxlTWVkaWFFbmdpbmVXYXNVcGRhdGVkKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoTWVkaWFQbGF5ZXIqKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgp
CiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnQgZGlzcGxheSBtb2RlID0g
IiwgKGludClkaXNwbGF5TW9kZSgpKTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKICAgICBpZiAoZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlk
ZW8pIHsKICAgICAgICAgc2V0RGlzcGxheU1vZGUoVmlkZW8pOwotICAgICAgICBtZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyLmdldCgpKTsKKyAgICAgICAgbWVkaWFQbGF5
ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogICAgIH0KICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQ
bGF5ZXJDYWxsYmFjaygpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
Q2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKQogewogICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIpOwogCkBAIC01MTkxLDcgKzUxOTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogICAg
IGlmIChwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRp
bmdGb3JWaWRlbykgewogICAgICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7Ci0gICAgICAgIG1l
ZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIuZ2V0KCkpOworICAgICAgICBt
ZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgfQogCiAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKQEAgLTU4NjYsNyArNTg2Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKQogICAgIGVucXVldWVQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQo
TWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCkKIHsKICAgICBzZXRJc1BsYXlpbmdUb1dp
cmVsZXNzVGFyZ2V0KG1fcGxheWVyICYmIG1fcGxheWVyLT5pc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRl
eCBhNjljZWJiMmZmMzNjMTMwN2MzZTBiZDAwNjgzNWMxNzZhYzIzNDY0Li5iM2Y3ODU2ZmM3OGZj
ZTMzOTk4ODNjZjYzNjJjY2NkYWFlNzAyYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaApAQCAtNjYzLDMzICs2NjMsMzMgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgZWZm
ZWN0aXZlUGxheWJhY2tSYXRlKCkgY29uc3Q7CiAgICAgZG91YmxlIHJlcXVlc3RlZFBsYXliYWNr
UmF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyUmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyVGltZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJNdXRl
Q2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJEdXJh
dGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVy
UmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVy
UGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1l
ZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAg
ICB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKSBvdmVy
cmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyUmVwYWludChNZWRpYVBsYXllciopIG92ZXJyaWRl
OwotICAgIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRl
OwotICAgIGJvb2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKE1lZGlhUGxh
eWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtZWRpYVBsYXllckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllckVuZ2lu
ZVVwZGF0ZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyTmV0
d29ya1N0YXRlQ2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRl
Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCgpIGZpbmFs
OworICAgIHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBt
ZWRpYVBsYXllck11dGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllckR1cmF0
aW9uQ2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCgpIGZp
bmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCgpIGZpbmFsOwor
ICAgIHZvaWQgbWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcygpIGZpbmFsOworICAgIHZv
aWQgbWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpIGZpbmFsOworICAgIHZvaWQgbWVk
aWFQbGF5ZXJSZXBhaW50KCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2Vk
KCkgZmluYWw7CisgICAgYm9vbCBtZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQo
KSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKSBmaW5h
bDsKKyAgICBib29sIG1lZGlhUGxheWVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBm
aW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpIGZpbmFsOwogCiAgICAg
dm9pZCBzY2hlZHVsZU1lZGlhRW5naW5lV2FzVXBkYXRlZCgpOwogICAgIHZvaWQgbWVkaWFFbmdp
bmVXYXNVcGRhdGVkKCk7CiAKLSAgICB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZh
aWxhYmxlKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllckNoYXJh
Y3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQ
bGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxh
eWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCkgZmluYWw7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKSBvdmVycmlk
ZTsKLSAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtl
eUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgbWVk
aWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIFN0cmluZyBtZWRpYVBs
YXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKQEAgLTcwNCw3ICs3MDQsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2
b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVk
aWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGVucXVldWVQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOwogCiAgICAgdXNpbmcgRXZlbnRUYXJn
ZXQ6OmRpc3BhdGNoRXZlbnQ7CkBAIC03NDAsNyArNzQwLDcgQEAgcHJpdmF0ZToKICAgICBHcmFw
aGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0
IE1lZGlhUGxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgbWVkaWFQ
bGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZChjb25zdCBNZWRpYVBsYXllciopIG92ZXJy
aWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBtZWRpYVBsYXllckhhbmRsZVBsYXliYWNrQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpIG92ZXJy
aWRlIHsgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQsIG51bGxwdHIpOyB9
CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IGFiZTg2OTQxOTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUuLjdkNWJjY2Q5
MGIxNzk0YzcxNmVmM2ViMWQxOTk2ZDYzYTc3NTUwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2
b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXll
ckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNZWRpYUVuZ2luZSAh
PSBlbmdpbmUpIHsKICAgICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUgPSBlbmdpbmU7CiAgICAg
ICAgIG1fcHJpdmF0ZSA9IGVuZ2luZS0+Y29uc3RydWN0b3IodGhpcyk7Ci0gICAgICAgIGNsaWVu
dCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKKyAgICAgICAgY2xpZW50KCkubWVk
aWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CiAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CiAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJl
bG9hZChtX3ByZWxvYWQpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByZXNlcnZlc1BpdGNoKHBy
ZXNlcnZlc1BpdGNoKCkpOwpAQCAtNTEyLDggKzUxMiw4IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Omxv
YWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkK
ICAgICAgICAgbV9wcml2YXRlLT5sb2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBtX3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRo
aXMpOwotICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7Ci0g
ICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQodGhpcyk7Cisg
ICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpOworICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCk7CiAgICAgfQogCiAgICAgbV9p
bml0aWFsaXppbmdNZWRpYUVuZ2luZSA9IGZhbHNlOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXI6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJs
ZWQpCiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3ND
aGFuZ2VkKCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1Rhcmdl
dElzV2lyZWxlc3NDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyQ3VycmVu
dFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXll
cjo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0CkBAIC0xMTc3LDEyICsx
MTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGNsaWVudCgpLm1lZGlhUGxheWVy
TmV0d29ya1N0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllck5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5n
ZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQodGhpcyk7
CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCgpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCkBAIC0xMTkzLDcg
KzExOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1
bWUpCiAjZWxzZQogICAgIG1fdm9sdW1lID0gbmV3Vm9sdW1lOwogI2VuZGlmCi0gICAgY2xpZW50
KCkubWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyVm9sdW1lQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjptdXRlQ2hhbmdlZChi
b29sIG5ld011dGVkKQpAQCAtMTIwMiw0NyArMTIwMiw0NyBAQCB2b2lkIE1lZGlhUGxheWVyOjpt
dXRlQ2hhbmdlZChib29sIG5ld011dGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX211dGVk
ID0gbmV3TXV0ZWQ7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCh0aGlzKTsK
KyAgICBjbGllbnQoKS5tZWRpYVBsYXllck11dGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXI6OnRpbWVDaGFuZ2VkKCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXllclRpbWVDaGFu
Z2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyVGltZUNoYW5nZWQoKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllcjo6c2l6ZUNoYW5nZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyU2l6ZUNoYW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJTaXplQ2hhbmdl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpyZXBhaW50KCkKIHsKLSAgICBjbGllbnQoKS5t
ZWRpYVBsYXllclJlcGFpbnQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXBhaW50
KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCiB7Ci0gICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVk
aWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6cmF0ZUNo
YW5nZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmF0ZUNoYW5nZWQodGhpcyk7Cisg
ICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJQ
bGF5YmFja1N0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllclBsYXli
YWNrU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZSgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2Vk
KCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCh0aGlz
KTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpOwogfQog
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTEyNjMsNyArMTI2Myw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5
SWQpIGNvbnN0CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQodGhpcywg
aW5pdERhdGEpOworICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0
RGF0YSk7CiB9CiAKIFN0cmluZyBNZWRpYVBsYXllcjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0CkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBsb25nIE1lZGlhUGxheWVyOjpwbGF0Zm9y
bUVycm9yQ29kZSgpIGNvbnN0CiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBNZWRpYVBsYXllcjo6Z3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJHcmFwaGljc0Rl
dmljZUFkYXB0ZXIodGhpcyk7CisgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyR3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZGJiYzQ1NjM3NGE2OTcwOTg3MzczNTI2
OWEyMDlkOTg0NGE2NmMzNy4uMzVhMGI3NmUwNWQzNmMxYTc0ZGY2ZmIyYjVjNmJiODBjOTE5NmQz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CkBAIC05OSw3MiArOTksNzIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCiAgICAgLy8gdGhlIG5ldHdvcmsgc3RhdGUgaGFzIGNoYW5nZWQK
LSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdl
ZCgpIHsgfQogCiAgICAgLy8gdGhlIHJlYWR5IHN0YXRlIGhhcyBjaGFuZ2VkCi0gICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCgpIHsgfQogCiAgICAg
Ly8gdGhlIHZvbHVtZSBzdGF0ZSBoYXMgY2hhbmdlZAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllclZvbHVtZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKCkgeyB9CiAKICAgICAvLyB0aGUgbXV0ZSBzdGF0ZSBoYXMg
Y2hhbmdlZAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck11dGVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoKSB7IH0K
IAogICAgIC8vIHRpbWUgaGFzIGp1bXBlZCwgZWcuIG5vdCBhcyBhIHJlc3VsdCBvZiBub3JtYWwg
cGxheWJhY2sKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBs
YXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKCkgeyB9
CiAKICAgICAvLyB0aGUgbWVkaWEgZmlsZSBkdXJhdGlvbiBoYXMgY2hhbmdlZCwgb3IgaXMgbm93
IGtub3duCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKE1lZGlh
UGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2Vk
KCkgeyB9CiAKICAgICAvLyB0aGUgcGxheWJhY2sgcmF0ZSBoYXMgY2hhbmdlZAotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoKSB7IH0KIAogICAgIC8vIHRoZSBwbGF5
L3BhdXNlIHN0YXR1cyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheWJh
Y2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCgpIHsgfQogCiAgICAgLy8gVGhlIE1lZGlhUGxheWVy
IGhhcyBmb3VuZCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBtZWRpYSBjb250ZW50LgogICAgIC8v
IFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHRyaWdnZXIgc3dhcHBpbmcgZnJvbSBhIDx2aWRl
bz4KICAgICAvLyBlbGVtZW50IHRvIGFuIDxlbWJlZD4gaW4gc3RhbmRhbG9uZSBkb2N1bWVudHMK
LSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBs
YXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJh
Y2tzKCkgeyB9CiAKICAgICAvLyBUaGUgTWVkaWFQbGF5ZXIgY291bGQgbm90IGRpc2NvdmVyIGFu
IGVuZ2luZSB3aGljaCBzdXBwb3J0cyB0aGUgcmVxdWVzdGVkIHJlc291cmNlLgotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKE1lZGlhUGxheWVyKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKSB7IH0K
IAogLy8gUHJlc2VudGF0aW9uLXJlbGF0ZWQgbWV0aG9kcwogICAgIC8vIGEgbmV3IGZyYW1lIG9m
IHZpZGVvIGlzIGF2YWlsYWJsZQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlcGFpbnQo
TWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZXBhaW50KCkg
eyB9CiAKICAgICAvLyB0aGUgbW92aWUgc2l6ZSBoYXMgY2hhbmdlZAotICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkgeyB9CiAKICAgICAvLyBUaGUgZmlyc3QgZnJhbWUg
b2YgdmlkZW8gaXMgYXZhaWxhYmxlIHRvIHJlbmRlci4gQSBtZWRpYSBlbmdpbmUgbmVlZCBvbmx5
IG1ha2UgdGhpcyBjYWxsYmFjayBpZiB0aGUKICAgICAvLyBmaXJzdCBmcmFtZSBpcyBub3QgYXZh
aWxhYmxlIGltbWVkaWF0ZWx5IHdoZW4gcHJlcGFyZUZvclJlbmRlcmluZyBpcyBjYWxsZWQuCi0g
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlh
UGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKCkgeyB9CiAKICAgICAvLyBBIGNoYXJhY3RlcmlzdGljIG9mIHRoZSBtZWRpYSBm
aWxlLCBlZy4gdmlkZW8sIGF1ZGlvLCBjbG9zZWQgY2FwdGlvbnMsIGV0YywgaGFzIGNoYW5nZWQu
Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlh
UGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWND
aGFuZ2VkKCkgeyB9CiAgICAgCiAgICAgLy8gd2hldGhlciB0aGUgcmVuZGVyaW5nIHN5c3RlbSBj
YW4gYWNjZWxlcmF0ZSB0aGUgZGlzcGxheSBvZiB0aGlzIE1lZGlhUGxheWVyLgotICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoTWVkaWFQbGF5ZXIq
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclJlbmRlcmlu
Z0NhbkJlQWNjZWxlcmF0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gY2FsbGVkIHdo
ZW4gdGhlIG1lZGlhIHBsYXllcidzIHJlbmRlcmluZyBtb2RlIGNoYW5nZWQsIHdoaWNoIGluZGlj
YXRlcyBhIGNoYW5nZSBpbiB0aGUKICAgICAvLyBhdmFpbGFiaWxpdHkgb2YgdGhlIHBsYXRmb3Jt
TGF5ZXIoKS4KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdl
ZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCkgeyB9CiAKICAgICAvLyB3aGV0aGVyIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIGlzIGVuYWJsZWQgZm9yIHZpZGVvIHJlbmRlcmluZwogICAgIHZpcnR1YWwgYm9vbCBtZWRp
YVBsYXllckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2Vk
KGNvbnN0IE1lZGlhUGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQWN0
aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKSB7IH0KIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KEFWRk9VTkRBVElPTikKLSAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQ
bGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlh
UGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBT
dHJpbmcmKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIG1lZGlh
UGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRp
ZgogCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJD
dXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzQ2hhbmdlZCgpIHsgfTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5
ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CkBAIC00MTYsOCArNDE2LDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZXBhaW50KCk7CiAKLSAgICBNZWRpYVBsYXllckNsaWVu
dCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9Ci0KICAgICBib29sIGhhc0F2
YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKICAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmco
KTsKIApAQCAtNTgwLDkgKzU3OCwyNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZElnbm9y
ZUludHJpbnNpY1NpemUoKTsKIAorICAgIGJvb2wgcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCgp
IGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVy
YXRlZCgpOyB9CisgICAgdm9pZCByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpIGNvbnN0ICB7IGNsaWVu
dCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsgfQorICAgIGJvb2wgYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7IH0KKyAgICB2b2lkIGFjdGl2ZVNvdXJjZUJ1
ZmZlcnNDaGFuZ2VkKCkgeyBjbGllbnQoKS5tZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnND
aGFuZ2VkKCk7IH0KKyAgICBMYXlvdXRSZWN0IHBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29uc3Qg
eyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpOyB9CisgICAgZmxv
YXQgcGxheWVyQ29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ29udGVudHNTY2FsZSgpOyB9CisgICAgYm9vbCBzaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUo
KSBjb25zdCB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllclNob3VsZFVzZVBlcnNpc3RlbnRD
YWNoZSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCk7IH0KKyAg
ICBib29sIGlzVmlkZW9QbGF5ZXIoKSBjb25zdCB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXll
cklzVmlkZW8oKTsgfQorICAgIHZvaWQgbWVkaWFFbmdpbmVVcGRhdGVkKCkgeyBjbGllbnQoKS5t
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsgfQorICAgIGJvb2wgaXNMb29waW5nKCkgY29uc3Qg
eyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJJc0xvb3BpbmcoKTsgfQorCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNyZXF1ZXN0SW5z
dGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2smIGNhbGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNyZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
Jik7CiAKKyAgICBNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1f
Y2xpZW50OyB9CisKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVkaWFF
bmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KikgY29uc3Q7CiAgICAgdm9pZCBsb2FkV2l0
aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKTsKICAgICB2b2lkIHJl
bG9hZFRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggMWI5YTkyMTU3YTdiZTNlMzExYmExN2I0NTg3
N2E4MzY2MzY2YTZiNS4uYTdkMDQ3MGEzZjA0MDljODAzODliMjMyYzk3ZmM5N2M0MDI4MTcxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246Ok1lZGlhUmVuZGVyaW5nTW9kZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpbwogICAg
IGlmICghbV9wbGF5ZXItPnZpc2libGUoKSB8fCBhc3NldFN0YXR1cygpID09IE1lZGlhUGxheWVy
QVZBc3NldFN0YXR1c1Vua25vd24pCiAgICAgICAgIHJldHVybiBNZWRpYVJlbmRlcmluZ05vbmU7
CiAKLSAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVyLT5j
bGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIpKQor
ICAgIGlmIChzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgJiYgbV9wbGF5ZXItPnJlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5nVG9M
YXllcjsKIAogICAgIHJldHVybiBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDsKQEAgLTE0Niw3ICsx
NDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRlb1Jl
bmRlcmluZygpCiAKICAgICAvLyBJZiB1c2luZyBhIG1vdmllIGxheWVyLCBpbmZvcm0gdGhlIGNs
aWVudCBzbyB0aGUgY29tcG9zaXRpbmcgdHJlZSBpcyB1cGRhdGVkLgogICAgIGlmIChjdXJyZW50
TW9kZSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVycmVkTW9kZSA9PSBNZWRpYVJl
bmRlcmluZ1RvTGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJl
bmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICAgICAgbV9wbGF5ZXItPnJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Ojp0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgc2V0
VXBWaWRlb1JlbmRlcmluZygpOwogCiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkgPT0g
TWVkaWFSZW5kZXJpbmdUb0xheWVyIHx8IHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSA9PSBNZWRp
YVJlbmRlcmluZ1RvTGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICAgICAgbV9wbGF5ZXItPnJlbmRl
cmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggODQyMTEyMzc0YTVkNmE4MTViOGM3NmRhNGUwZjkzMDVhNTRmYjFlYi4uMjRjNWNhNDQ0Y2Ux
N2E4MDNkM2ZiZWE0NDY1MTVjZGM0M2RiYjBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC01NzYsNyArNTc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjcmVhdGVWaWRlb0xheWVyKCkKICAgICAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAj
ZW5kaWYKIAotICAgICAgICBwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdN
b2RlQ2hhbmdlZChwbGF5ZXIoKSk7CisgICAgICAgIHBsYXllcigpLT5yZW5kZXJpbmdNb2RlQ2hh
bmdlZCgpOwogICAgIH0pOwogfQogCkBAIC01OTMsOCArNTkzLDggQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKCkKICNlbmRpZgog
ICAgIFttX3ZpZGVvTGF5ZXIgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAInJlYWR5Rm9yRGlzcGxheSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9u
TmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29u
dGV4dEFWUGxheWVyTGF5ZXJdOwogICAgIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7Ci0gICAg
W21fdmlkZW9MYXllciBzZXRDb250ZW50c1NjYWxlOnBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBs
YXllckNvbnRlbnRzU2NhbGUoKV07Ci0gICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJ
bnRSZWN0KHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNp
emUoKTsKKyAgICBbbV92aWRlb0xheWVyIHNldENvbnRlbnRzU2NhbGU6cGxheWVyKCktPnBsYXll
ckNvbnRlbnRzU2NhbGUoKV07CisgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJbnRS
ZWN0KHBsYXllcigpLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCk7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT5zZXRWaWRlb0xheWVyKG1fdmlkZW9MYXllci5nZXQoKSwgZGVmYXVsdFNpemUpOwpAQCAtODM2
LDExICs4MzYsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
cmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIH0KICNlbmRpZgogCi0gICAg
Ym9vbCB1c2VQZXJzaXN0ZW50Q2FjaGUgPSBwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJT
aG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKKyAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNoZSA9
IHBsYXllcigpLT5zaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKICAgICBbb3B0aW9ucyBzZXRP
YmplY3Q6QCghdXNlUGVyc2lzdGVudENhY2hlKSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1BlcnNp
c3RlbnRDYWNoZUtleV07CiAgICAgCiAgICAgaWYgKHVzZVBlcnNpc3RlbnRDYWNoZSkKLSAgICAg
ICAgW29wdGlvbnMgc2V0T2JqZWN0OmFzc2V0Q2FjaGVGb3JQYXRoKHBsYXllcigpLT5jbGllbnQo
KS5tZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkgZm9yS2V5OkFWVVJMQXNzZXRDYWNo
ZUtleV07CisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChwbGF5
ZXIoKS0+bWVkaWFDYWNoZURpcmVjdG9yeSgpKSBmb3JLZXk6QVZVUkxBc3NldENhY2hlS2V5XTsK
IAogICAgIE5TVVJMICpjb2NvYVVSTCA9IGNhbm9uaWNhbFVSTCh1cmwpOwogICAgIG1fYXZBc3Nl
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0aFVSTDpj
b2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKQEAgLTkyMiw3ICs5MjIsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyKCkKICAg
ICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0TXV0ZWQ6bV9tdXRlZF07CiAgICAgfQogCi0gICAg
aWYgKHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllcklzVmlkZW8oKSkKKyAgICBpZiAocGxh
eWVyKCktPmlzVmlkZW9QbGF5ZXIoKSkKICAgICAgICAgY3JlYXRlQVZQbGF5ZXJMYXllcigpOwog
CiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4
IDllODViZDNlMTg2ZTg3YzgxMGViYzVlNDM1MDE3MTMwNGQ3MTg4YjQuLjcxNTI4Yzk5YzBjYzYw
N2QzOGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
QEAgLTY3Nyw3ICs2NzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQoKQogewotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckFjdGl2ZVNvdXJj
ZUJ1ZmZlcnNDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+YWN0aXZlU291cmNlQnVm
ZmVyc0NoYW5nZWQoKTsKIH0KIAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKQEAgLTc2
NCw4ICs3NjQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
ZW5zdXJlTGF5ZXIoKQogICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjptX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKV07CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQog
ICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZS0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5nZXQoKSk7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBwZWRJ
bnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNp
emUoKSk7Ci0gICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNo
YW5nZWQobV9wbGF5ZXIpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRW
aWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBzbmFwcGVkSW50UmVj
dChtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKKyAgICBtX3BsYXll
ci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmRlc3Ryb3lMYXllcigpCkBAIC03ODMsNyArNzgzLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRlc3Ryb3lMYXllcigpCiAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPmRpZERlc3Ryb3lWaWRlb0xheWVyKCk7
CiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBudWxscHRyOwogICAgIHNldEhhc0F2
YWlsYWJsZVZpZGVvRnJhbWUoZmFsc2UpOwotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+cmVuZGVy
aW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OmVuc3VyZURlY29tcHJlc3Npb25TZXNzaW9uKCkKQEAgLTc5Nyw3ICs3OTcsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlRGVjb21w
cmVzc2lvblNlc3Npb24oKQogICAgIGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkKICAgICAgICAg
bV9tZWRpYVNvdXJjZVByaXZhdGUtPnNldERlY29tcHJlc3Npb25TZXNzaW9uKG1fZGVjb21wcmVz
c2lvblNlc3Npb24uZ2V0KCkpOwogCi0gICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
UmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworICAgIG1fcGxheWVyLT5yZW5kZXJpbmdN
b2RlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6ZGVzdHJveURlY29tcHJlc3Npb25TZXNzaW9uKCkKQEAgLTExMjgsNyArMTEyOCw3IEBA
IEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgW2F1ZGlvUmVuZGVyZXIgc2V0
QXVkaW9UaW1lUGl0Y2hBbGdvcml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQaXRjaCgpID8gQVZB
dWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRo
bVZhcmlzcGVlZCldOwogCiAgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOmF1ZGlvUmVu
ZGVyZXJdOwotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVD
aGFuZ2VkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsK
IH0KIAogQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgpAQCAtMTE0NSw3ICsxMTQ1
LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICB9XTsKIAogICAgIG1f
c2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlck1hcC5yZW1vdmUoaXRlcik7Ci0gICAgbV9wbGF5ZXIt
PmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworICAg
IG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggZjNlMjdkOGU3ZjQ4OWE2MGY3MzBiY2E5MzZkYWE0
YTFjMThkM2E5Zi4uNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0ZmM4ZTcxOTFkZjNmNDU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQogICAgIG1fYmFj
a2dyb3VuZExheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6
OmJsYWNrKTsKICAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJvdW5k
c0NoYW5nZSA9IFlFUzsKIAotICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJbnRSZWN0KG1fcGxheWVy
LT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKKyAgICBhdXRv
IHNpemUgPSBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKSku
c2l6ZSgpOwogICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmJvdW5kcyA9IENHUmVjdE1ha2Uo
MCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIAogICAgIFttX3N0YXR1c0NoYW5n
ZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nTGF5ZXJzXTsKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlUmVuZGVyaW5nTW9k
ZSgpCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgbV90cmFuc2Zv
cm1Jc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3BsYXllcikKLSAgICAgICAgICAgIG1f
cGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVy
KTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogICAgIH0p
OwogCiB9CkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5k
ZXJpbmdTdGF0ZUNoYW5nZWQoKQogewotICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQ
bGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkKKyAgICBpZiAobV9wbGF5
ZXItPnJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgZW5zdXJlTGF5ZXJzKCk7
CiAgICAgZWxzZQogICAgICAgICBkZXN0cm95TGF5ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGY1YTk1Zjk1OWJmNmMwZGYxODBh
MWQ1NDk1OWZhZjFiZGRkZWFiNWMuLjAxMjdjNTdkMWFiODUxZjNjMjQ3NjhlMGE1NTcxYThmZjNm
YWU2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKEdPYmplY3QqIG9iamVjdCkKICAgICBpZiAoZ19z
dHJjbXAwKEdfT0JKRUNUX1RZUEVfTkFNRShvYmplY3QpLCAiR3N0UHVsc2VTaW5rIikpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+Y2xpZW50KCku
bWVkaWFQbGF5ZXJJc1ZpZGVvKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBjb25zdCBjaGFy
KiByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOwog
ICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcoInN0cmVhbS1w
cm9wZXJ0aWVzIiwgIm1lZGlhLnJvbGUiLCBHX1RZUEVfU1RSSU5HLCByb2xlLCBudWxscHRyKTsK
ICAgICBnX29iamVjdF9zZXQob2JqZWN0LCAic3RyZWFtLXByb3BlcnRpZXMiLCBzdHJ1Y3R1cmUs
IG51bGxwdHIpOwogICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShzdHJ1Y3R1cmUpOwpAQCAtMTE2OCw3
ICsxMTY4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXll
ck9mVmlkZW8oKQogCiAgICAgaWYgKHVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1QocGlwZWxpbmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBC
YWlsaW5nIG91dCBub3cuIik7Ci0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXll
ckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgICAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVV
cGRhdGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOTksNyArMTE5OSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkK
ICAgICBwdXJnZUludmFsaWRWaWRlb1RyYWNrcyh2YWxpZFZpZGVvU3RyZWFtcyk7CiAjZW5kaWYK
IAotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9wbGF5
ZXIpOworICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2soTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9TaW5rQ2Fwc0NoYW5nZWRDYWxs
YmFjayhNZWRpYVBsYXllclByaXZhdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCkKIHsKICAgICBtX3ZpZGVvU2l6ZSA9IEludFNpemUo
KTsKLSAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1fcGxh
eWVyKTsKKyAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWRDYWxsYmFjayhNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKQEAgLTEyNDIsNyArMTI0Miw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKIAogICAgIGlm
ICh1c2VNZWRpYVNvdXJjZSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxlbWVudC4gQmFpbGluZyBvdXQgbm93LiIpOwot
ICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1fcGxh
eWVyKTsKKyAgICAgICAgbV9wbGF5ZXItPm1lZGlhRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAgICAgcHVyZ2VJbnZhbGlkQXVk
aW9UcmFja3ModmFsaWRBdWRpb1N0cmVhbXMpOwogI2VuZGlmCiAKLSAgICBtX3BsYXllci0+Y2xp
ZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+
bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0x
NjYyLDcgKzE2NjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
VHJhY2tzKCkKICAgICBpZiAobV9oYXNWaWRlbykKICAgICAgICAgbV9wbGF5ZXItPnNpemVDaGFu
Z2VkKCk7CiAKLSAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVk
KG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjbGVhclRyYWNrcygpCkBAIC0yMDkzLDcg
KzIwOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNh
bGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgICAg
ICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3Nh
Z2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rl
c2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCku
cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQo
KSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1Z2luQ2Fs
bGJhY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fcGxheWVyLT5yZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpmcm9t
VVRGOChkZXNjcmlwdGlvbi5nZXQoKSksIG1pc3NpbmdQbHVnaW5DYWxsYmFjay5nZXQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShH
U1RSRUFNRVJfTVBFR1RTKQpAQCAtMjc4MCw3ICsyNzgwLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmRpZEVuZCgpCiAKICAgICBtX2lzRW5kUmVhY2hlZCA9IHRydWU7CiAK
LSAgICBpZiAoIW1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllcklzTG9vcGluZygpKSB7Cisg
ICAgaWYgKCFtX3BsYXllci0+aXNMb29waW5nKCkpIHsKICAgICAgICAgbV9pc1BhdXNlZCA9IHRy
dWU7CiAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAgICAg
ICAgbV9kaWREb3dubG9hZEZpbmlzaCA9IGZhbHNlOwpAQCAtMjk5Nyw3ICsyOTk3LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5VGltZXJGaXJlZCgpCiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hh
bmdlZCgpCiB7Ci0gICAgbV9jYW5SZW5kZXJpbmdCZUFjY2VsZXJhdGVkID0gbV9wbGF5ZXIgJiYg
bV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoKTsKKyAgICBtX2NhblJlbmRlcmluZ0JlQWNjZWxlcmF0ZWQgPSBtX3BsYXllciAmJiBtX3Bs
YXllci0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKIH0KIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384838</attachid>
            <date>2019-12-04 13:02:21 -0800</date>
            <delta_ts>2019-12-04 13:44:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204856-20191204130220.patch</filename>
            <type>text/plain</type>
            <size>43623</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhYmIwNjcwMzNjZmFk
ZWNiMTAxMDYxMWJlZGUwZGVkYWExYTFkMS4uODA3MDUyMGYyMjkyNzIxZDQ2ZWZmZDZjZmFlYWFh
MmY2NWYzODNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxOS0xMi0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1lZGlh
UGxheWVyOjpjbGllbnQoKSBwcml2YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ4NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMzMTg2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgTWFrZSBNZWRpYVBsYXllcjo6Y2xpZW50IHByaXZhdGUgYW5kIGNyZWF0ZSBhY2Nlc3NvcnMg
Zm9yIGFsbCBvZiB0aGUgY2xpZW50IG1ldGhvZHMKKyAgICAgICAgdGhhdCB3ZXJlIGJlaW5nIGFj
Y2Vzc2VkIGRpcmVjdGx5LiBBbHNvIHJlbW92ZSB0aGUgTWVkaWFQbGF5ZXIqIHBhcmFtZXRlcnMg
ZnJvbQorICAgICAgICB0aGUgY2xpZW50IG1ldGhvZHMgc2luY2Ugbm9uZSBvZiB0aGVtIHdlcmUg
dXNlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZXR3b3JrU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2Nl
bGVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmN1cnJlbnRQbGF5YmFja1Rh
cmdldElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
ZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZWFk
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6dm9sdW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bXV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6ZHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2aWNlQWRhcHRlciBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyQ2xpZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5
ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVu
dDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0
ZWRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJD
bGllbnQ6Om1lZGlhUGxheWVyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJDaGFy
YWN0ZXJpc3RpY0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6
bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1Rhcmdl
dElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5k
ZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpyZW5kZXJpbmdNb2RlQ2hhbmdlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllcjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVudHNTY2FsZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6cHJlZmVycmVkUmVuZGVyaW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVwVmlkZW9SZW5kZXJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpwcmVwYXJlRm9yUmVu
ZGVyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjplbnN1cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmVuc3VyZURlY29tcHJlc3Npb25TZXNz
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZVJlbmRlcmluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNldEF1ZGlvU3RyZWFtUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvQ2Fwcyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBs
YXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorCiAy
MDE5LTEyLTAyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb29Tb3VyY2Ugb2JzZXJ2ZVNvdXJjZS91bm9ic2VydmVTb3VyY2UgcGF0dGVybgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2Y4N2FlZTQwMjUyZTI5ZWQw
NjQzZmFjOWU3OTRjZGIxYWI2Mjk5NS4uMzdkZmNkNzRiNmU1YzRjN2UxOTlhZjA5ODAxOTYyODY3
NjAyYmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0x
MDAzLDcgKzEwMDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJj
ZUNoaWxkKCkKICAgICB9KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiB7
CiAgICAgbV9oYXNFdmVySGFkQXVkaW8gfD0gaGFzQXVkaW8oKTsKICAgICBtX2hhc0V2ZXJIYWRW
aWRlbyB8PSBoYXNWaWRlbygpOwpAQCAtMjIzMCw3ICsyMjMwLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKICAgICByZWplY3RQZW5k
aW5nUGxheVByb21pc2VzKFdURk1vdmUobV9wZW5kaW5nUGxheVByb21pc2VzKSwgRE9NRXhjZXB0
aW9uOjpjcmVhdGUoQWJvcnRFcnJvcikpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CiAgICAgYmVnaW5Q
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIHNldE5ldHdvcmtTdGF0ZShtX3Bs
YXllci0+bmV0d29ya1N0YXRlKCkpOwpAQCAtMjM3Niw3ICsyMzc2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpjaGFuZ2VOZXR3b3JrU3RhdGVGcm9tTG9hZGluZ1RvSWRsZSgpCiAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBORVRXT1JLX0lETEU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIApAQCAtMjU5NCw3ICsyNTk0LDcgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZv
cktleUlkKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMgPyBtX3dl
YktpdE1lZGlhS2V5cy0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpIDogbnVsbHB0cjsKIH0KIAot
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllcios
IFVpbnQ4QXJyYXkqIGluaXREYXRhKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ4MjEsNyArNDgyMSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNlRWxlbWVudCYgc291
cmNlKQogICAgIH0KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTQ5NDks
NyArNDk0OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1RvUGxheWJhY2tQb3NpdGlv
bkVuZGVkVGltZXJGaXJlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKQogewogICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogCkBAIC00OTY1LDcgKzQ5NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllck11dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJNdXRlQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAK
QEAgLTQ5NzUsMTQgKzQ5NzUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ck11dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjaygpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRp
b25DaGFuZ2VkKE1lZGlhUGxheWVyKiBwbGF5ZXIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAogICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOwotICAgIG1lZGlh
UGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKHBsYXllcik7CisgICAgbWVkaWFQbGF5ZXJDaGFy
YWN0ZXJpc3RpY0NoYW5nZWQoKTsKIAogICAgIE1lZGlhVGltZSBub3cgPSBjdXJyZW50TWVkaWFU
aW1lKCk7CiAgICAgTWVkaWFUaW1lIGR1ciA9IGR1cmF0aW9uTWVkaWFUaW1lKCk7CkBAIC00OTky
LDcgKzQ5OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25D
aGFuZ2VkKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJS
YXRlQ2hhbmdlZCgpCiB7CiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygp
OwogCkBAIC01MDEwLDcgKzUwMTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXll
ckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5
YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoKQogewogICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogCkBAIC01MDI4LDcgKzUwMjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgIGVuZFByb2Nl
c3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciopCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoKQogewogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC01MDM5LDcgKzUwMzksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIq
KQogICAgICAgICBkb3duY2FzdDxNZWRpYURvY3VtZW50Pihkb2N1bWVudCgpKS5tZWRpYUVsZW1l
bnRTYXdVbnN1cHBvcnRlZFRyYWNrcygpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCkKIHsKICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTA0OCw3ICs1MDQ4LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKE1lZGlhUGxheWVyKikK
IH0KIAogLy8gTWVkaWFQbGF5ZXJQcmVzZW50YXRpb24gbWV0aG9kcwotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlcGFpbnQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlcGFpbnQoKQogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlh
UGxheWVyQ2FsbGJhY2soKTsKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKQEAgLTUwNTcsNyAr
NTA1Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlh
UGxheWVyKikKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIq
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKCkKIHsKICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTA3MSwxNCArNTA3MSwxNCBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLWJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKE1lZGlhUGxh
eWVyKikKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFj
Y2VsZXJhdGVkKCkKIHsKICAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgcmV0dXJuIGlzPFJlbmRlclZpZGVvPihyZW5kZXJlcikKICAgICAgICAgJiYgZG93bmNhc3Q8
UmVuZGVyVmlkZW8+KCpyZW5kZXJlcikudmlldygpLmNvbXBvc2l0b3IoKS5jYW5BY2NlbGVyYXRl
VmlkZW9SZW5kZXJpbmcoZG93bmNhc3Q8UmVuZGVyVmlkZW8+KCpyZW5kZXJlcikpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ01v
ZGVDaGFuZ2VkKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTA5Myw3
ICs1MDkzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCkKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRB
VElPTikKIAotR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0CitHcmFw
aGljc0RldmljZUFkYXB0ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNTE1Myw3ICs1MTUzLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2VuZGlmCiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlhUGxheWVyKikKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkKIHsKICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2NiwxOSArNTE2NiwxOSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopCiAgICAg
c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShNZWRpYVBsYXllciopCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
KCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY3VycmVudCBkaXNwbGF5IG1vZGUg
PSAiLCAoaW50KWRpc3BsYXlNb2RlKCkpOwogCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5
ZXJDYWxsYmFjaygpOwogICAgIGlmIChkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JW
aWRlbykgewogICAgICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7Ci0gICAgICAgIG1lZGlhUGxh
eWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIuZ2V0KCkpOworICAgICAgICBtZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgfQogICAgIGVuZFByb2Nlc3NpbmdNZWRp
YVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKQEAgLTUxOTEsNyArNTE5MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQogCiAg
ICAgaWYgKHBvdGVudGlhbGx5UGxheWluZygpICYmIGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2Fp
dGluZ0ZvclZpZGVvKSB7CiAgICAgICAgIHNldERpc3BsYXlNb2RlKFZpZGVvKTsKLSAgICAgICAg
bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChtX3BsYXllci5nZXQoKSk7CisgICAgICAg
IG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKICAgICB9CiAKICAgICBpZiAoaGFz
TWVkaWFDb250cm9scygpKQpAQCAtNTg2Niw3ICs1ODY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpCiAgICAgZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdl
ZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVu
dFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKQogewogICAgIHNldElzUGxheWluZ1Rv
V2lyZWxlc3NUYXJnZXQobV9wbGF5ZXIgJiYgbV9wbGF5ZXItPmlzQ3VycmVudFBsYXliYWNrVGFy
Z2V0V2lyZWxlc3MoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGE2OWNlYmIyZmYzM2MxMzA3YzNlMGJkMDA2ODM1YzE3NmFjMjM0NjQuLmIzZjc4NTZmYzc4
ZmNlMzM5OTg4M2NmNjM2MmNjY2RhYWU3MDJhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC02NjMsMzMgKzY2MywzMyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBl
ZmZlY3RpdmVQbGF5YmFja1JhdGUoKSBjb25zdDsKICAgICBkb3VibGUgcmVxdWVzdGVkUGxheWJh
Y2tSYXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdl
ZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRl
Q2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJUaW1l
Q2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJWb2x1
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllck11
dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllckR1
cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5
ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5
ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
bWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciopIG92ZXJyaWRlOwot
ICAgIHZvaWQgbWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZChNZWRpYVBsYXllciopIG92
ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBtZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoTWVkaWFQ
bGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5n
ZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICBib29sIG1lZGlhUGxheWVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJO
ZXR3b3JrU3RhdGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclJlYWR5U3Rh
dGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKCkgZmlu
YWw7CisgICAgdm9pZCBtZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lk
IG1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyRHVy
YXRpb25DaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKCkg
ZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2VkKCkgZmluYWw7
CisgICAgdm9pZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKCkgZmluYWw7CisgICAg
dm9pZCBtZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCkgZmluYWw7CisgICAgdm9pZCBt
ZWRpYVBsYXllclJlcGFpbnQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5n
ZWQoKSBmaW5hbDsKKyAgICBib29sIG1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRl
ZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpIGZp
bmFsOworICAgIGJvb2wgbWVkaWFQbGF5ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgp
IGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkgZmluYWw7CiAKICAg
ICB2b2lkIHNjaGVkdWxlTWVkaWFFbmdpbmVXYXNVcGRhdGVkKCk7CiAgICAgdm9pZCBtZWRpYUVu
Z2luZVdhc1VwZGF0ZWQoKTsKIAotICAgIHZvaWQgbWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyQ2hh
cmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRp
YVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopIG92ZXJy
aWRlOwotICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgU3RyaW5nIG1lZGlh
UGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtNzA0LDcgKzcwNCw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAg
IHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChN
ZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJh
Y2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7CiAKICAgICB1c2luZyBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudDsKQEAgLTc0MCw3ICs3NDAsNyBAQCBwcml2YXRlOgogICAgIEdy
YXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29u
c3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBtZWRp
YVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIG1lZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkgb3Zl
cnJpZGUgeyBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCwgbnVsbHB0cik7
IH0KICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggYWJlODY5NDE5NGZmN2MxNzUxMDBiNjk4ODA0YTEyNDBiZDYyYzg0ZS4uN2Q1YmNj
ZDkwYjE3OTRjNzE2ZWYzZWIxZDE5OTZkNjNhNzc1NTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNDkwLDcgKzQ5MCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogY3VycmVudCkKICAgICB9IGVsc2UgaWYgKG1fY3VycmVudE1lZGlhRW5naW5l
ICE9IGVuZ2luZSkgewogICAgICAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9IGVuZ2luZTsKICAg
ICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jb25zdHJ1Y3Rvcih0aGlzKTsKLSAgICAgICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOworICAgICAgICBjbGllbnQoKS5t
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKICAgICAgICAgbV9wcml2YXRlLT5zZXRQcml2YXRl
QnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKICAgICAgICAgbV9wcml2YXRlLT5zZXRQ
cmVsb2FkKG1fcHJlbG9hZCk7CiAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJlc2VydmVzUGl0Y2go
cHJlc2VydmVzUGl0Y2goKSk7CkBAIC01MTIsOCArNTEyLDggQEAgdm9pZCBNZWRpYVBsYXllcjo6
bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50
KQogICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fcHJpdmF0ZSA9IG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4o
dGhpcyk7Ci0gICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsK
LSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCh0aGlzKTsK
KyAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgIGNs
aWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKICAgICB9CiAKICAgICBt
X2luaXRpYWxpemluZ01lZGlhRW5naW5lID0gZmFsc2U7CkBAIC05OTEsNyArOTkxLDcgQEAgdm9p
ZCBNZWRpYVBsYXllcjo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNh
YmxlZCkKIAogdm9pZCBNZWRpYVBsYXllcjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
c0NoYW5nZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFy
Z2V0SXNXaXJlbGVzc0NoYW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJDdXJy
ZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpOwogfQogCiBib29sIE1lZGlhUGxh
eWVyOjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKQEAgLTExNzcsMTIg
KzExNzcsMTIgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyTmV0
d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpyZWFkeVN0YXRlQ2hh
bmdlZCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCh0aGlz
KTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXI6OnZvbHVtZUNoYW5nZWQoZG91YmxlIG5ld1ZvbHVtZSkKQEAgLTExOTMs
NyArMTE5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnZvbHVtZUNoYW5nZWQoZG91YmxlIG5ld1Zv
bHVtZSkKICNlbHNlCiAgICAgbV92b2x1bWUgPSBuZXdWb2x1bWU7CiAjZW5kaWYKLSAgICBjbGll
bnQoKS5tZWRpYVBsYXllclZvbHVtZUNoYW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQ
bGF5ZXJWb2x1bWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6Om11dGVDaGFuZ2Vk
KGJvb2wgbmV3TXV0ZWQpCkBAIC0xMjAyLDQ3ICsxMjAyLDQ3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
Om11dGVDaGFuZ2VkKGJvb2wgbmV3TXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbXV0
ZWQgPSBuZXdNdXRlZDsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXllck11dGVDaGFuZ2VkKHRoaXMp
OworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllcjo6dGltZUNoYW5nZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyVGltZUNo
YW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCgpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQ
bGF5ZXJTaXplQ2hhbmdlZCh0aGlzKTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllclNpemVDaGFu
Z2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnJlcGFpbnQoKQogewotICAgIGNsaWVudCgp
Lm1lZGlhUGxheWVyUmVwYWludCh0aGlzKTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllclJlcGFp
bnQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6ZHVyYXRpb25DaGFuZ2VkKCkKIHsKLSAgICBj
bGllbnQoKS5tZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCh0aGlzKTsKKyAgICBjbGllbnQoKS5t
ZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpyYXRl
Q2hhbmdlZCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCh0aGlzKTsK
KyAgICBjbGllbnQoKS5tZWRpYVBsYXllclJhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXI6OnBsYXliYWNrU3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXll
clBsYXliYWNrU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUGxh
eWJhY2tTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6Zmlyc3RWaWRlb0Zy
YW1lQXZhaWxhYmxlKCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXllckZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZSh0aGlzKTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllckZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjaGFyYWN0ZXJpc3RpY0NoYW5n
ZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKHRo
aXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiB9
CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMTI2Myw3ICsxMjYzLDcgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKIAogYm9vbCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGlu
aXREYXRhKQogewotICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllcktleU5lZWRlZCh0aGlz
LCBpbml0RGF0YSk7CisgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGlu
aXREYXRhKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3QKQEAgLTEzMjIsNyArMTMyMiw3IEBAIGxvbmcgTWVkaWFQbGF5ZXI6OnBsYXRm
b3JtRXJyb3JDb2RlKCkgY29uc3QKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiBHcmFwaGljc0RldmljZUFkYXB0ZXIqIE1lZGlhUGxheWVyOjpncmFwaGljc0RldmljZUFk
YXB0ZXIoKSBjb25zdAogewotICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckdyYXBoaWNz
RGV2aWNlQWRhcHRlcih0aGlzKTsKKyAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJHcmFw
aGljc0RldmljZUFkYXB0ZXIoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBkYmJjNDU2Mzc0YTY5NzA5ODczNzM1
MjY5YTIwOWQ5ODQ0YTY2YzM3Li5mYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBkYjk4OWMy
MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTk5LDcyICs5OSw3MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyB0aGUgbmV0d29yayBzdGF0ZSBoYXMgY2hhbmdl
ZAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQ
bGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFu
Z2VkKCkgeyB9CiAKICAgICAvLyB0aGUgcmVhZHkgc3RhdGUgaGFzIGNoYW5nZWQKLSAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKCkgeyB9CiAKICAg
ICAvLyB0aGUgdm9sdW1lIHN0YXRlIGhhcyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKSB7IH0KIAogICAgIC8vIHRoZSBtdXRlIHN0YXRlIGhh
cyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoTWVkaWFQ
bGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCgpIHsg
fQogCiAgICAgLy8gdGltZSBoYXMganVtcGVkLCBlZy4gbm90IGFzIGEgcmVzdWx0IG9mIG5vcm1h
bCBwbGF5YmFjawotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlh
UGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVGltZUNoYW5nZWQoKSB7
IH0KIAogICAgIC8vIHRoZSBtZWRpYSBmaWxlIGR1cmF0aW9uIGhhcyBjaGFuZ2VkLCBvciBpcyBu
b3cga25vd24KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVk
aWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5n
ZWQoKSB7IH0KIAogICAgIC8vIHRoZSBwbGF5YmFjayByYXRlIGhhcyBjaGFuZ2VkCi0gICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCgpIHsgfQogCiAgICAgLy8gdGhlIHBs
YXkvcGF1c2Ugc3RhdHVzIGNoYW5nZWQKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5
YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2VkKCkgeyB9CiAKICAgICAvLyBUaGUgTWVkaWFQbGF5
ZXIgaGFzIGZvdW5kIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIG1lZGlhIGNvbnRlbnQuCiAgICAg
Ly8gVGhpcyBpcyB1c2VkIGludGVybmFsbHkgdG8gdHJpZ2dlciBzd2FwcGluZyBmcm9tIGEgPHZp
ZGVvPgogICAgIC8vIGVsZW1lbnQgdG8gYW4gPGVtYmVkPiBpbiBzdGFuZGFsb25lIGRvY3VtZW50
cwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKE1lZGlh
UGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRU
cmFja3MoKSB7IH0KIAogICAgIC8vIFRoZSBNZWRpYVBsYXllciBjb3VsZCBub3QgZGlzY292ZXIg
YW4gZW5naW5lIHdoaWNoIHN1cHBvcnRzIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuCi0gICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpIHsg
fQogCiAvLyBQcmVzZW50YXRpb24tcmVsYXRlZCBtZXRob2RzCiAgICAgLy8gYSBuZXcgZnJhbWUg
b2YgdmlkZW8gaXMgYXZhaWxhYmxlCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVwYWlu
dChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlcGFpbnQo
KSB7IH0KIAogICAgIC8vIHRoZSBtb3ZpZSBzaXplIGhhcyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKSB7IH0KIAogICAgIC8vIFRoZSBmaXJzdCBmcmFt
ZSBvZiB2aWRlbyBpcyBhdmFpbGFibGUgdG8gcmVuZGVyLiBBIG1lZGlhIGVuZ2luZSBuZWVkIG9u
bHkgbWFrZSB0aGlzIGNhbGxiYWNrIGlmIHRoZQogICAgIC8vIGZpcnN0IGZyYW1lIGlzIG5vdCBh
dmFpbGFibGUgaW1tZWRpYXRlbHkgd2hlbiBwcmVwYXJlRm9yUmVuZGVyaW5nIGlzIGNhbGxlZC4K
LSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoTWVk
aWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJh
bWVBdmFpbGFibGUoKSB7IH0KIAogICAgIC8vIEEgY2hhcmFjdGVyaXN0aWMgb2YgdGhlIG1lZGlh
IGZpbGUsIGVnLiB2aWRlbywgYXVkaW8sIGNsb3NlZCBjYXB0aW9ucywgZXRjLCBoYXMgY2hhbmdl
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVk
aWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoKSB7IH0KICAgICAKICAgICAvLyB3aGV0aGVyIHRoZSByZW5kZXJpbmcgc3lzdGVt
IGNhbiBhY2NlbGVyYXRlIHRoZSBkaXNwbGF5IG9mIHRoaXMgTWVkaWFQbGF5ZXIuCi0gICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXll
ciopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyUmVuZGVy
aW5nQ2FuQmVBY2NlbGVyYXRlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBjYWxsZWQg
d2hlbiB0aGUgbWVkaWEgcGxheWVyJ3MgcmVuZGVyaW5nIG1vZGUgY2hhbmdlZCwgd2hpY2ggaW5k
aWNhdGVzIGEgY2hhbmdlIGluIHRoZQogICAgIC8vIGF2YWlsYWJpbGl0eSBvZiB0aGUgcGxhdGZv
cm1MYXllcigpLgotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFu
Z2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVuZGVy
aW5nTW9kZUNoYW5nZWQoKSB7IH0KIAogICAgIC8vIHdoZXRoZXIgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgaXMgZW5hYmxlZCBmb3IgdmlkZW8gcmVuZGVyaW5nCiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5n
ZWQoY29uc3QgTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJB
Y3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpIHsgfQogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQotICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRp
YVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVk
aWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1
YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0
IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVk
aWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KikgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogI2Vu
ZGlmCiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2ly
ZWxlc3NDaGFuZ2VkKCkgeyB9OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBs
YXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KQEAgLTQxNiw4ICs0MTYs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcGFpbnQoKTsKIAotICAgIE1lZGlhUGxheWVyQ2xp
ZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KLQogICAgIGJvb2wgaGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0OwogICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmlu
ZygpOwogCkBAIC01ODAsOSArNTc4LDI3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkSWdu
b3JlSW50cmluc2ljU2l6ZSgpOwogCisgICAgYm9vbCByZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVk
KCkgY29uc3QgeyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2Vs
ZXJhdGVkKCk7IH0KKyAgICB2b2lkIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCkgY29uc3QgIHsgY2xp
ZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOyB9CisgICAgYm9vbCBhY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpIHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsgfQorICAgIHZvaWQgYWN0aXZlU291cmNl
QnVmZmVyc0NoYW5nZWQoKSB7IGNsaWVudCgpLm1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVy
c0NoYW5nZWQoKTsgfQorICAgIExheW91dFJlY3QgcGxheWVyQ29udGVudEJveFJlY3QoKSBjb25z
dCB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCk7IH0KKyAgICBm
bG9hdCBwbGF5ZXJDb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gY2xpZW50KCkubWVkaWFQ
bGF5ZXJDb250ZW50c1NjYWxlKCk7IH0KKyAgICBib29sIHNob3VsZFVzZVBlcnNpc3RlbnRDYWNo
ZSgpIGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVu
dENhY2hlKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsgfQor
ICAgIGJvb2wgaXNWaWRlb1BsYXllcigpIGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVySXNWaWRlbygpOyB9CisgICAgdm9pZCBtZWRpYUVuZ2luZVVwZGF0ZWQoKSB7IGNsaWVudCgp
Lm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpOyB9CisgICAgYm9vbCBpc0xvb3BpbmcoKSBjb25z
dCB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllcklzTG9vcGluZygpOyB9CisKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorICAgIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBT
dHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVx
dWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBjYWxsYmFjaykgeyBjbGllbnQoKS5y
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFj
ayk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xp
ZW50Jik7CiAKKyAgICBNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4g
Km1fY2xpZW50OyB9CisKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KikgY29uc3Q7CiAgICAgdm9pZCBsb2Fk
V2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKTsKICAgICB2b2lk
IHJlbG9hZFRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggMWI5YTkyMTU3YTdiZTNlMzExYmExN2I0
NTg3N2E4MzY2MzY2YTZiNS4uYTdkMDQ3MGEzZjA0MDljODAzODliMjMyYzk3ZmM5N2M0MDI4MTcx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246Ok1lZGlhUmVuZGVyaW5nTW9kZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpbwog
ICAgIGlmICghbV9wbGF5ZXItPnZpc2libGUoKSB8fCBhc3NldFN0YXR1cygpID09IE1lZGlhUGxh
eWVyQVZBc3NldFN0YXR1c1Vua25vd24pCiAgICAgICAgIHJldHVybiBNZWRpYVJlbmRlcmluZ05v
bmU7CiAKLSAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVy
LT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIp
KQorICAgIGlmIChzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgJiYgbV9wbGF5ZXItPnJl
bmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5n
VG9MYXllcjsKIAogICAgIHJldHVybiBNZWRpYVJlbmRlcmluZ1RvQ29udGV4dDsKQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0VXBWaWRl
b1JlbmRlcmluZygpCiAKICAgICAvLyBJZiB1c2luZyBhIG1vdmllIGxheWVyLCBpbmZvcm0gdGhl
IGNsaWVudCBzbyB0aGUgY29tcG9zaXRpbmcgdHJlZSBpcyB1cGRhdGVkLgogICAgIGlmIChjdXJy
ZW50TW9kZSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVycmVkTW9kZSA9PSBNZWRp
YVJlbmRlcmluZ1RvTGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICAgICAgbV9wbGF5ZXItPnJlbmRl
cmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjp0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAg
c2V0VXBWaWRlb1JlbmRlcmluZygpOwogCiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkg
PT0gTWVkaWFSZW5kZXJpbmdUb0xheWVyIHx8IHByZWZlcnJlZFJlbmRlcmluZ01vZGUoKSA9PSBN
ZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICAgICAgbV9wbGF5ZXItPnJl
bmRlcmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
aW5kZXggODQyMTEyMzc0YTVkNmE4MTViOGM3NmRhNGUwZjkzMDVhNTRmYjFlYi4uMjRjNWNhNDQ0
Y2UxN2E4MDNkM2ZiZWE0NDY1MTVjZGM0M2RiYjBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVWaWRlb0xheWVyKCkKICAgICAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7
CiAjZW5kaWYKIAotICAgICAgICBwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJp
bmdNb2RlQ2hhbmdlZChwbGF5ZXIoKSk7CisgICAgICAgIHBsYXllcigpLT5yZW5kZXJpbmdNb2Rl
Q2hhbmdlZCgpOwogICAgIH0pOwogfQogCkBAIC01OTMsOCArNTkzLDggQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKCkKICNlbmRp
ZgogICAgIFttX3ZpZGVvTGF5ZXIgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDpAInJlYWR5Rm9yRGlzcGxheSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dEFWUGxheWVyTGF5ZXJdOwogICAgIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7Ci0g
ICAgW21fdmlkZW9MYXllciBzZXRDb250ZW50c1NjYWxlOnBsYXllcigpLT5jbGllbnQoKS5tZWRp
YVBsYXllckNvbnRlbnRzU2NhbGUoKV07Ci0gICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBw
ZWRJbnRSZWN0KHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkp
LnNpemUoKTsKKyAgICBbbV92aWRlb0xheWVyIHNldENvbnRlbnRzU2NhbGU6cGxheWVyKCktPnBs
YXllckNvbnRlbnRzU2NhbGUoKV07CisgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJ
bnRSZWN0KHBsYXllcigpLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCk7CiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0xheWVyKG1fdmlkZW9MYXllci5nZXQoKSwgZGVmYXVsdFNpemUpOwpAQCAt
ODM2LDExICs4MzYsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIH0KICNlbmRpZgogCi0g
ICAgYm9vbCB1c2VQZXJzaXN0ZW50Q2FjaGUgPSBwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5
ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKKyAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNo
ZSA9IHBsYXllcigpLT5zaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKICAgICBbb3B0aW9ucyBz
ZXRPYmplY3Q6QCghdXNlUGVyc2lzdGVudENhY2hlKSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1Bl
cnNpc3RlbnRDYWNoZUtleV07CiAgICAgCiAgICAgaWYgKHVzZVBlcnNpc3RlbnRDYWNoZSkKLSAg
ICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OmFzc2V0Q2FjaGVGb3JQYXRoKHBsYXllcigpLT5jbGll
bnQoKS5tZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkgZm9yS2V5OkFWVVJMQXNzZXRD
YWNoZUtleV07CisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChw
bGF5ZXIoKS0+bWVkaWFDYWNoZURpcmVjdG9yeSgpKSBmb3JLZXk6QVZVUkxBc3NldENhY2hlS2V5
XTsKIAogICAgIE5TVVJMICpjb2NvYVVSTCA9IGNhbm9uaWNhbFVSTCh1cmwpOwogICAgIG1fYXZB
c3NldCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0aFVS
TDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKQEAgLTkyMiw3ICs5MjIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyKCkK
ICAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0TXV0ZWQ6bV9tdXRlZF07CiAgICAgfQogCi0g
ICAgaWYgKHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllcklzVmlkZW8oKSkKKyAgICBpZiAo
cGxheWVyKCktPmlzVmlkZW9QbGF5ZXIoKSkKICAgICAgICAgY3JlYXRlQVZQbGF5ZXJMYXllcigp
OwogCiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmlu
ZGV4IDllODViZDNlMTg2ZTg3YzgxMGViYzVlNDM1MDE3MTMwNGQ3MTg4YjQuLjcxNTI4Yzk5YzBj
YzYwN2QzOGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KQEAgLTY3Nyw3ICs2NzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVy
c0NoYW5nZWQoKQogewotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckFjdGl2ZVNv
dXJjZUJ1ZmZlcnNDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+YWN0aXZlU291cmNl
QnVmZmVyc0NoYW5nZWQoKTsKIH0KIAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKQEAg
LTc2NCw4ICs3NjQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6ZW5zdXJlTGF5ZXIoKQogICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjptX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRl
KQogICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZS0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKSk7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXItPnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBw
ZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkp
LnNpemUoKSk7Ci0gICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9k
ZUNoYW5nZWQobV9wbGF5ZXIpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5z
ZXRWaWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBzbmFwcGVkSW50
UmVjdChtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKKyAgICBtX3Bs
YXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmRlc3Ryb3lMYXllcigpCkBAIC03ODMsNyArNzgzLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRlc3Ryb3lMYXllcigp
CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPmRpZERlc3Ryb3lWaWRlb0xheWVy
KCk7CiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBudWxscHRyOwogICAgIHNldEhh
c0F2YWlsYWJsZVZpZGVvRnJhbWUoZmFsc2UpOwotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRp
YVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+cmVu
ZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmVuc3VyZURlY29tcHJlc3Npb25TZXNzaW9uKCkKQEAgLTc5Nyw3ICs3OTcs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlRGVj
b21wcmVzc2lvblNlc3Npb24oKQogICAgIGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkKICAgICAg
ICAgbV9tZWRpYVNvdXJjZVByaXZhdGUtPnNldERlY29tcHJlc3Npb25TZXNzaW9uKG1fZGVjb21w
cmVzc2lvblNlc3Npb24uZ2V0KCkpOwogCi0gICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxh
eWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworICAgIG1fcGxheWVyLT5yZW5kZXJp
bmdNb2RlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6ZGVzdHJveURlY29tcHJlc3Npb25TZXNzaW9uKCkKQEAgLTExMjgsNyArMTEyOCw3
IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgW2F1ZGlvUmVuZGVyZXIg
c2V0QXVkaW9UaW1lUGl0Y2hBbGdvcml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQaXRjaCgpID8g
QVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQaXRjaEFsZ29y
aXRobVZhcmlzcGVlZCldOwogCiAgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOmF1ZGlv
UmVuZGVyZXJdOwotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01v
ZGVDaGFuZ2VkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQo
KTsKIH0KIAogQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgpAQCAtMTE0NSw3ICsx
MTQ1LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICB9XTsKIAogICAg
IG1fc2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlck1hcC5yZW1vdmUoaXRlcik7Ci0gICAgbV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwor
ICAgIG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggZjNlMjdkOGU3ZjQ4OWE2MGY3MzBiY2E5MzZk
YWE0YTFjMThkM2E5Zi4uNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0ZmM4ZTcxOTFkZjNmNDU0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQogICAgIG1f
YmFja2dyb3VuZExheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrKTsKICAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJv
dW5kc0NoYW5nZSA9IFlFUzsKIAotICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJbnRSZWN0KG1fcGxh
eWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKKyAgICBh
dXRvIHNpemUgPSBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3Qo
KSkuc2l6ZSgpOwogICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmJvdW5kcyA9IENHUmVjdE1h
a2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIAogICAgIFttX3N0YXR1c0No
YW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nTGF5ZXJzXTsKQEAgLTgyOCw3ICs4MjgsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlUmVuZGVyaW5n
TW9kZSgpCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgbV90cmFu
c2Zvcm1Jc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3BsYXllcikKLSAgICAgICAgICAg
IG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxh
eWVyKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogICAg
IH0pOwogCiB9CkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQogewotICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVk
aWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkKKyAgICBpZiAobV9w
bGF5ZXItPnJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgZW5zdXJlTGF5ZXJz
KCk7CiAgICAgZWxzZQogICAgICAgICBkZXN0cm95TGF5ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGY1YTk1Zjk1OWJmNmMwZGYx
ODBhMWQ1NDk1OWZhZjFiZGRkZWFiNWMuLjAxMjdjNTdkMWFiODUxZjNjMjQ3NjhlMGE1NTcxYThm
ZjNmYWU2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKEdPYmplY3QqIG9iamVjdCkKICAgICBpZiAo
Z19zdHJjbXAwKEdfT0JKRUNUX1RZUEVfTkFNRShvYmplY3QpLCAiR3N0UHVsc2VTaW5rIikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+Y2xpZW50
KCkubWVkaWFQbGF5ZXJJc1ZpZGVvKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBjb25zdCBj
aGFyKiByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMi
OwogICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcoInN0cmVh
bS1wcm9wZXJ0aWVzIiwgIm1lZGlhLnJvbGUiLCBHX1RZUEVfU1RSSU5HLCByb2xlLCBudWxscHRy
KTsKICAgICBnX29iamVjdF9zZXQob2JqZWN0LCAic3RyZWFtLXByb3BlcnRpZXMiLCBzdHJ1Y3R1
cmUsIG51bGxwdHIpOwogICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShzdHJ1Y3R1cmUpOwpAQCAtMTE2
OCw3ICsxMTY4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBs
YXllck9mVmlkZW8oKQogCiAgICAgaWYgKHVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50
LiBCYWlsaW5nIG91dCBub3cuIik7Ci0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgICAgICBtX3BsYXllci0+bWVkaWFFbmdp
bmVVcGRhdGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOTksNyArMTE5OSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVv
KCkKICAgICBwdXJnZUludmFsaWRWaWRlb1RyYWNrcyh2YWxpZFZpZGVvU3RyZWFtcyk7CiAjZW5k
aWYKIAotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9w
bGF5ZXIpOworICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2so
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCkBAIC0xMjEyLDcgKzEyMTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9TaW5rQ2Fwc0NoYW5nZWRD
YWxsYmFjayhNZWRpYVBsYXllclByaXZhdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCkKIHsKICAgICBtX3ZpZGVvU2l6ZSA9IEludFNp
emUoKTsKLSAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1f
cGxheWVyKTsKKyAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWRDYWxsYmFjayhNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKQEAgLTEyNDIsNyArMTI0Miw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKIAogICAg
IGlmICh1c2VNZWRpYVNvdXJjZSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxlbWVudC4gQmFpbGluZyBvdXQgbm93LiIp
OwotICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1f
cGxheWVyKTsKKyAgICAgICAgbV9wbGF5ZXItPm1lZGlhRW5naW5lVXBkYXRlZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAgICAgcHVyZ2VJbnZhbGlk
QXVkaW9UcmFja3ModmFsaWRBdWRpb1N0cmVhbXMpOwogI2VuZGlmCiAKLSAgICBtX3BsYXllci0+
Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1fcGxheWVyKTsKKyAgICBtX3BsYXll
ci0+bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC0xNjYyLDcgKzE2NjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBk
YXRlVHJhY2tzKCkKICAgICBpZiAobV9oYXNWaWRlbykKICAgICAgICAgbV9wbGF5ZXItPnNpemVD
aGFuZ2VkKCk7CiAKLSAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRh
dGVkKG1fcGxheWVyKTsKKyAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjbGVhclRyYWNrcygpCkBAIC0yMDkz
LDcgKzIwOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVz
c2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdp
bkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAg
ICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21l
c3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0
X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50
KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5n
ZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1Z2lu
Q2FsbGJhY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fcGxheWVyLT5yZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpm
cm9tVVRGOChkZXNjcmlwdGlvbi5nZXQoKSksIG1pc3NpbmdQbHVnaW5DYWxsYmFjay5nZXQoKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVT
RShHU1RSRUFNRVJfTVBFR1RTKQpAQCAtMjc4MCw3ICsyNzgwLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmRpZEVuZCgpCiAKICAgICBtX2lzRW5kUmVhY2hlZCA9IHRydWU7
CiAKLSAgICBpZiAoIW1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllcklzTG9vcGluZygpKSB7
CisgICAgaWYgKCFtX3BsYXllci0+aXNMb29waW5nKCkpIHsKICAgICAgICAgbV9pc1BhdXNlZCA9
IHRydWU7CiAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAg
ICAgICAgbV9kaWREb3dubG9hZEZpbmlzaCA9IGZhbHNlOwpAQCAtMjk5Nyw3ICsyOTk3LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5VGltZXJGaXJlZCgpCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRl
Q2hhbmdlZCgpCiB7Ci0gICAgbV9jYW5SZW5kZXJpbmdCZUFjY2VsZXJhdGVkID0gbV9wbGF5ZXIg
JiYgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoKTsKKyAgICBtX2NhblJlbmRlcmluZ0JlQWNjZWxlcmF0ZWQgPSBtX3BsYXllciAmJiBt
X3BsYXllci0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKIH0KIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384843</attachid>
            <date>2019-12-04 13:44:17 -0800</date>
            <delta_ts>2019-12-04 16:48:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204856-20191204134416.patch</filename>
            <type>text/plain</type>
            <size>43814</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhYmIwNjcwMzNjZmFk
ZWNiMTAxMDYxMWJlZGUwZGVkYWExYTFkMS4uODA3MDUyMGYyMjkyNzIxZDQ2ZWZmZDZjZmFlYWFh
MmY2NWYzODNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxOS0xMi0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE1lZGlh
UGxheWVyOjpjbGllbnQoKSBwcml2YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQ4NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NjMzMTg2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgTWFrZSBNZWRpYVBsYXllcjo6Y2xpZW50IHByaXZhdGUgYW5kIGNyZWF0ZSBhY2Nlc3NvcnMg
Zm9yIGFsbCBvZiB0aGUgY2xpZW50IG1ldGhvZHMKKyAgICAgICAgdGhhdCB3ZXJlIGJlaW5nIGFj
Y2Vzc2VkIGRpcmVjdGx5LiBBbHNvIHJlbW92ZSB0aGUgTWVkaWFQbGF5ZXIqIHBhcmFtZXRlcnMg
ZnJvbQorICAgICAgICB0aGUgY2xpZW50IG1ldGhvZHMgc2luY2Ugbm9uZSBvZiB0aGVtIHdlcmUg
dXNlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZXR3b3JrU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2Nl
bGVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmN1cnJlbnRQbGF5YmFja1Rh
cmdldElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
ZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZWFk
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6dm9sdW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bXV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6ZHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2aWNlQWRhcHRlciBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyQ2xpZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5
ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVu
dDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0
ZWRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJD
bGllbnQ6Om1lZGlhUGxheWVyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJDaGFy
YWN0ZXJpc3RpY0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6
bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1Rhcmdl
dElzV2lyZWxlc3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5k
ZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpyZW5kZXJpbmdNb2RlQ2hhbmdlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllcjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVudHNTY2FsZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6cHJlZmVycmVkUmVuZGVyaW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVwVmlkZW9SZW5kZXJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpwcmVwYXJlRm9yUmVu
ZGVyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjplbnN1cmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmRlc3Ryb3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmVuc3VyZURlY29tcHJlc3Npb25TZXNz
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZVJlbmRlcmluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNldEF1ZGlvU3RyZWFtUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvQ2Fwcyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBs
YXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorCiAy
MDE5LTEyLTAyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aW1wbGlmeSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb29Tb3VyY2Ugb2JzZXJ2ZVNvdXJjZS91bm9ic2VydmVTb3VyY2UgcGF0dGVybgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2Y4N2FlZTQwMjUyZTI5ZWQw
NjQzZmFjOWU3OTRjZGIxYWI2Mjk5NS4uMzdkZmNkNzRiNmU1YzRjN2UxOTlhZjA5ODAxOTYyODY3
NjAyYmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0x
MDAzLDcgKzEwMDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJj
ZUNoaWxkKCkKICAgICB9KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiB7
CiAgICAgbV9oYXNFdmVySGFkQXVkaW8gfD0gaGFzQXVkaW8oKTsKICAgICBtX2hhc0V2ZXJIYWRW
aWRlbyB8PSBoYXNWaWRlbygpOwpAQCAtMjIzMCw3ICsyMjMwLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKICAgICByZWplY3RQZW5k
aW5nUGxheVByb21pc2VzKFdURk1vdmUobV9wZW5kaW5nUGxheVByb21pc2VzKSwgRE9NRXhjZXB0
aW9uOjpjcmVhdGUoQWJvcnRFcnJvcikpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CiAgICAgYmVnaW5Q
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIHNldE5ldHdvcmtTdGF0ZShtX3Bs
YXllci0+bmV0d29ya1N0YXRlKCkpOwpAQCAtMjM3Niw3ICsyMzc2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpjaGFuZ2VOZXR3b3JrU3RhdGVGcm9tTG9hZGluZ1RvSWRsZSgpCiAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBORVRXT1JLX0lETEU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIApAQCAtMjU5NCw3ICsyNTk0LDcgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZv
cktleUlkKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMgPyBtX3dl
YktpdE1lZGlhS2V5cy0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpIDogbnVsbHB0cjsKIH0KIAot
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllcios
IFVpbnQ4QXJyYXkqIGluaXREYXRhKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ4MjEsNyArNDgyMSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNlRWxlbWVudCYgc291
cmNlKQogICAgIH0KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTQ5NDks
NyArNDk0OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1RvUGxheWJhY2tQb3NpdGlv
bkVuZGVkVGltZXJGaXJlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKQogewogICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogCkBAIC00OTY1LDcgKzQ5NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllck11dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJNdXRlQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAK
QEAgLTQ5NzUsMTQgKzQ5NzUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ck11dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjaygpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRp
b25DaGFuZ2VkKE1lZGlhUGxheWVyKiBwbGF5ZXIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAogICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOwotICAgIG1lZGlh
UGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKHBsYXllcik7CisgICAgbWVkaWFQbGF5ZXJDaGFy
YWN0ZXJpc3RpY0NoYW5nZWQoKTsKIAogICAgIE1lZGlhVGltZSBub3cgPSBjdXJyZW50TWVkaWFU
aW1lKCk7CiAgICAgTWVkaWFUaW1lIGR1ciA9IGR1cmF0aW9uTWVkaWFUaW1lKCk7CkBAIC00OTky
LDcgKzQ5OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25D
aGFuZ2VkKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJS
YXRlQ2hhbmdlZCgpCiB7CiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygp
OwogCkBAIC01MDEwLDcgKzUwMTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXll
ckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5
YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoKQogewogICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogCkBAIC01MDI4LDcgKzUwMjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgIGVuZFByb2Nl
c3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciopCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoKQogewogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC01MDM5LDcgKzUwMzksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIq
KQogICAgICAgICBkb3duY2FzdDxNZWRpYURvY3VtZW50Pihkb2N1bWVudCgpKS5tZWRpYUVsZW1l
bnRTYXdVbnN1cHBvcnRlZFRyYWNrcygpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCkKIHsKICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTA0OCw3ICs1MDQ4LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKE1lZGlhUGxheWVyKikK
IH0KIAogLy8gTWVkaWFQbGF5ZXJQcmVzZW50YXRpb24gbWV0aG9kcwotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlcGFpbnQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlcGFpbnQoKQogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlh
UGxheWVyQ2FsbGJhY2soKTsKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKQEAgLTUwNTcsNyAr
NTA1Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlh
UGxheWVyKikKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIq
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKCkKIHsKICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTA3MSwxNCArNTA3MSwxNCBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLWJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKE1lZGlhUGxh
eWVyKikKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFj
Y2VsZXJhdGVkKCkKIHsKICAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgcmV0dXJuIGlzPFJlbmRlclZpZGVvPihyZW5kZXJlcikKICAgICAgICAgJiYgZG93bmNhc3Q8
UmVuZGVyVmlkZW8+KCpyZW5kZXJlcikudmlldygpLmNvbXBvc2l0b3IoKS5jYW5BY2NlbGVyYXRl
VmlkZW9SZW5kZXJpbmcoZG93bmNhc3Q8UmVuZGVyVmlkZW8+KCpyZW5kZXJlcikpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ01v
ZGVDaGFuZ2VkKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTA5Myw3
ICs1MDkzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCkKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRB
VElPTikKIAotR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0CitHcmFw
aGljc0RldmljZUFkYXB0ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNTE1Myw3ICs1MTUzLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2VuZGlmCiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlhUGxheWVyKikKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkKIHsKICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNTE2NiwxOSArNTE2NiwxOSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopCiAgICAg
c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShNZWRpYVBsYXllciopCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
KCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY3VycmVudCBkaXNwbGF5IG1vZGUg
PSAiLCAoaW50KWRpc3BsYXlNb2RlKCkpOwogCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5
ZXJDYWxsYmFjaygpOwogICAgIGlmIChkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JW
aWRlbykgewogICAgICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7Ci0gICAgICAgIG1lZGlhUGxh
eWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIuZ2V0KCkpOworICAgICAgICBtZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgfQogICAgIGVuZFByb2Nlc3NpbmdNZWRp
YVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpCiB7CiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKQEAgLTUxOTEsNyArNTE5MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQogCiAg
ICAgaWYgKHBvdGVudGlhbGx5UGxheWluZygpICYmIGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2Fp
dGluZ0ZvclZpZGVvKSB7CiAgICAgICAgIHNldERpc3BsYXlNb2RlKFZpZGVvKTsKLSAgICAgICAg
bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChtX3BsYXllci5nZXQoKSk7CisgICAgICAg
IG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKICAgICB9CiAKICAgICBpZiAoaGFz
TWVkaWFDb250cm9scygpKQpAQCAtNTg2Niw3ICs1ODY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpCiAgICAgZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdl
ZChNZWRpYVBsYXllciopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVu
dFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKQogewogICAgIHNldElzUGxheWluZ1Rv
V2lyZWxlc3NUYXJnZXQobV9wbGF5ZXIgJiYgbV9wbGF5ZXItPmlzQ3VycmVudFBsYXliYWNrVGFy
Z2V0V2lyZWxlc3MoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGE2OWNlYmIyZmYzM2MxMzA3YzNlMGJkMDA2ODM1YzE3NmFjMjM0NjQuLjEyZDEwN2Y5M2Q5
MzA5NDQ5ZTEyZGYzYWRlOGU4YmI4YzllYjg2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC02NjMsMzMgKzY2MywzMyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBl
ZmZlY3RpdmVQbGF5YmFja1JhdGUoKSBjb25zdDsKICAgICBkb3VibGUgcmVxdWVzdGVkUGxheWJh
Y2tSYXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdl
ZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRl
Q2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJUaW1l
Q2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJWb2x1
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllck11
dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllckR1
cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5
ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5
ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZvaWQg
bWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciopIG92ZXJyaWRlOwot
ICAgIHZvaWQgbWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZChNZWRpYVBsYXllciopIG92
ZXJyaWRlOwotICAgIHZvaWQgbWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBtZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoTWVkaWFQ
bGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5n
ZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICBib29sIG1lZGlhUGxheWVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJO
ZXR3b3JrU3RhdGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclJlYWR5U3Rh
dGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKCkgZmlu
YWw7CisgICAgdm9pZCBtZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lk
IG1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyRHVy
YXRpb25DaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKCkg
ZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2VkKCkgZmluYWw7
CisgICAgdm9pZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKCkgZmluYWw7CisgICAg
dm9pZCBtZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCkgZmluYWw7CisgICAgdm9pZCBt
ZWRpYVBsYXllclJlcGFpbnQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5n
ZWQoKSBmaW5hbDsKKyAgICBib29sIG1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRl
ZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpIGZp
bmFsOworICAgIGJvb2wgbWVkaWFQbGF5ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgp
IGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkgZmluYWw7CiAKICAg
ICB2b2lkIHNjaGVkdWxlTWVkaWFFbmdpbmVXYXNVcGRhdGVkKCk7CiAgICAgdm9pZCBtZWRpYUVu
Z2luZVdhc1VwZGF0ZWQoKTsKIAotICAgIHZvaWQgbWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIG1lZGlhUGxheWVyQ2hh
cmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRp
YVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopIG92ZXJy
aWRlOwotICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgU3RyaW5nIG1lZGlh
UGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtNzA0LDcgKzcwNCw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAg
IHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChN
ZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJh
Y2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7CiAKICAgICB1c2luZyBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudDsKQEAgLTczNywxMCArNzM3LDEwIEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nJiBtZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCBvdmVy
cmlkZTsKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBHcmFw
aGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0
IE1lZGlhUGxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NEZXZpY2VBZGFwdGVy
KiBtZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIG1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoY29u
c3QgTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyQWN0aXZlU291
cmNlQnVmZmVyc0NoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbWVkaWFQbGF5ZXJIYW5k
bGVQbGF5YmFja0NvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSBjb21tYW5kKSBvdmVycmlkZSB7IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChjb21tYW5kLCBudWxscHRyKTsgfQogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBhYmU4Njk0MTk0ZmY3YzE3NTEwMGI2OTg4MDRh
MTI0MGJkNjJjODRlLi43ZDViY2NkOTBiMTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3NzU1MDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogICAgIH0gZWxzZSBpZiAo
bV9jdXJyZW50TWVkaWFFbmdpbmUgIT0gZW5naW5lKSB7CiAgICAgICAgIG1fY3VycmVudE1lZGlh
RW5naW5lID0gZW5naW5lOwogICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNvbnN0cnVjdG9y
KHRoaXMpOwotICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7
CisgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBt
X3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2luZ01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogICAg
ICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQobV9wcmVsb2FkKTsKICAgICAgICAgbV9wcml2YXRl
LT5zZXRQcmVzZXJ2ZXNQaXRjaChwcmVzZXJ2ZXNQaXRjaCgpKTsKQEAgLTUxMiw4ICs1MTIsOCBA
QCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBs
YXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJp
bmcoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcml2YXRlID0gbWFrZVVuaXF1ZTxOdWxs
TWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJF
bmdpbmVVcGRhdGVkKHRoaXMpOwotICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllclJlc291cmNl
Tm90U3VwcG9ydGVkKHRoaXMpOworICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVw
ZGF0ZWQoKTsKKyAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRl
ZCgpOwogICAgIH0KIAogICAgIG1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUgPSBmYWxzZTsKQEAg
LTk5MSw3ICs5OTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogCiB2b2lkIE1lZGlhUGxheWVyOjpjdXJyZW50UGxh
eWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCh0aGlzKTsKKyAgICBjbGll
bnQoKS5tZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCk7
CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQo
KSBjb25zdApAQCAtMTE3NywxMiArMTE3NywxMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpuZXR3b3Jr
U3RhdGVDaGFuZ2VkKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAg
ICBjbGllbnQoKS5tZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXllclJl
YWR5U3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmVhZHlTdGF0
ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6dm9sdW1lQ2hhbmdlZChkb3VibGUg
bmV3Vm9sdW1lKQpAQCAtMTE5Myw3ICsxMTkzLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6dm9sdW1l
Q2hhbmdlZChkb3VibGUgbmV3Vm9sdW1lKQogI2Vsc2UKICAgICBtX3ZvbHVtZSA9IG5ld1ZvbHVt
ZTsKICNlbmRpZgotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZCh0aGlzKTsK
KyAgICBjbGllbnQoKS5tZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllcjo6bXV0ZUNoYW5nZWQoYm9vbCBuZXdNdXRlZCkKQEAgLTEyMDIsNDcgKzEyMDIsNDcg
QEAgdm9pZCBNZWRpYVBsYXllcjo6bXV0ZUNoYW5nZWQoYm9vbCBuZXdNdXRlZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG5ld011dGVkOwotICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyTXV0ZUNoYW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJNdXRlQ2hhbmdl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjp0aW1lQ2hhbmdlZCgpCiB7Ci0gICAgY2xpZW50
KCkubWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCh0aGlzKTsKKyAgICBjbGllbnQoKS5tZWRpYVBsYXll
clRpbWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnNpemVDaGFuZ2VkKCkKIHsK
LSAgICBjbGllbnQoKS5tZWRpYVBsYXllclNpemVDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgp
Lm1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6cmVwYWlu
dCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXBhaW50KHRoaXMpOworICAgIGNsaWVu
dCgpLm1lZGlhUGxheWVyUmVwYWludCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpkdXJhdGlv
bkNoYW5nZWQoKQogewotICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKHRo
aXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXI6OnJhdGVDaGFuZ2VkKCkKIHsKLSAgICBjbGllbnQoKS5tZWRpYVBsYXll
clJhdGVDaGFuZ2VkKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmF0ZUNoYW5nZWQo
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoKQogewotICAg
IGNsaWVudCgpLm1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKQogewotICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKHRoaXMpOworICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6
OmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpCiB7Ci0gICAgY2xpZW50KCkubWVkaWFQbGF5ZXJDaGFy
YWN0ZXJpc3RpY0NoYW5nZWQodGhpcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJDaGFyYWN0
ZXJpc3RpY0NoYW5nZWQoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCkBAIC0xMjYzLDcg
KzEyNjMsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IE1lZGlhUGxheWVyOjpjYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogCiBib29sIE1lZGlhUGxheWVyOjprZXlO
ZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiB7Ci0gICAgcmV0dXJuIGNsaWVudCgpLm1lZGlh
UGxheWVyS2V5TmVlZGVkKHRoaXMsIGluaXREYXRhKTsKKyAgICByZXR1cm4gY2xpZW50KCkubWVk
aWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOwogfQogCiBTdHJpbmcgTWVkaWFQbGF5ZXI6Om1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtMTMyMiw3ICsxMzIyLDcgQEAgbG9u
ZyBNZWRpYVBsYXllcjo6cGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdAogI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogTWVkaWFQbGF5
ZXI6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNsaWVudCgp
Lm1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKHRoaXMpOworICAgIHJldHVybiBjbGll
bnQoKS5tZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcigpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRi
YmM0NTYzNzRhNjk3MDk4NzM3MzUyNjlhMjA5ZDk4NDRhNjZjMzcuLmZiOWViYTBlNGFiZTMxYzc1
MjcwMGNiN2NlNjg5MGRiOTg5YzIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtOTksNzIgKzk5LDcyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5NZWRpYVBsYXllckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIC8vIHRoZSBuZXR3
b3JrIHN0YXRlIGhhcyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTmV0d29y
a1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllck5ldHdvcmtTdGF0ZUNoYW5nZWQoKSB7IH0KIAogICAgIC8vIHRoZSByZWFkeSBzdGF0ZSBo
YXMgY2hhbmdlZAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVhZHlTdGF0
ZUNoYW5nZWQoKSB7IH0KIAogICAgIC8vIHRoZSB2b2x1bWUgc3RhdGUgaGFzIGNoYW5nZWQKLSAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZCgpIHsgfQogCiAgICAg
Ly8gdGhlIG11dGUgc3RhdGUgaGFzIGNoYW5nZWQKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllck11dGVDaGFuZ2VkKCkgeyB9CiAKICAgICAvLyB0aW1lIGhhcyBqdW1wZWQsIGVnLiBub3Qg
YXMgYSByZXN1bHQgb2Ygbm9ybWFsIHBsYXliYWNrCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJUaW1lQ2hhbmdlZCgpIHsgfQogCiAgICAgLy8gdGhlIG1lZGlhIGZpbGUgZHVyYXRpb24g
aGFzIGNoYW5nZWQsIG9yIGlzIG5vdyBrbm93bgotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckR1cmF0aW9uQ2hhbmdlZCgpIHsgfQogCiAgICAgLy8gdGhlIHBsYXliYWNrIHJhdGUg
aGFzIGNoYW5nZWQKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRp
YVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKCkg
eyB9CiAKICAgICAvLyB0aGUgcGxheS9wYXVzZSBzdGF0dXMgY2hhbmdlZAotICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoKSB7IH0KIAog
ICAgIC8vIFRoZSBNZWRpYVBsYXllciBoYXMgZm91bmQgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMg
bWVkaWEgY29udGVudC4KICAgICAvLyBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSB0byB0cmlnZ2Vy
IHN3YXBwaW5nIGZyb20gYSA8dmlkZW8+CiAgICAgLy8gZWxlbWVudCB0byBhbiA8ZW1iZWQ+IGlu
IHN0YW5kYWxvbmUgZG9jdW1lbnRzCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2F3VW5z
dXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcygpIHsgfQogCiAgICAgLy8gVGhlIE1lZGlhUGxheWVy
IGNvdWxkIG5vdCBkaXNjb3ZlciBhbiBlbmdpbmUgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVlc3Rl
ZCByZXNvdXJjZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBv
cnRlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlc291
cmNlTm90U3VwcG9ydGVkKCkgeyB9CiAKIC8vIFByZXNlbnRhdGlvbi1yZWxhdGVkIG1ldGhvZHMK
ICAgICAvLyBhIG5ldyBmcmFtZSBvZiB2aWRlbyBpcyBhdmFpbGFibGUKLSAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyUmVwYWludCgpIHsgfQogCiAgICAgLy8gdGhlIG1vdmllIHNpemUgaGFzIGNo
YW5nZWQKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBsYXll
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2VkKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlhUGxheWVyKikg
eyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpIHsgfQogCiAg
ICAgLy8gVGhlIGZpcnN0IGZyYW1lIG9mIHZpZGVvIGlzIGF2YWlsYWJsZSB0byByZW5kZXIuIEEg
bWVkaWEgZW5naW5lIG5lZWQgb25seSBtYWtlIHRoaXMgY2FsbGJhY2sgaWYgdGhlCiAgICAgLy8g
Zmlyc3QgZnJhbWUgaXMgbm90IGF2YWlsYWJsZSBpbW1lZGlhdGVseSB3aGVuIHByZXBhcmVGb3JS
ZW5kZXJpbmcgaXMgY2FsbGVkLgotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZShNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpIHsgfQogCiAgICAgLy8gQSBjaGFyYWN0
ZXJpc3RpYyBvZiB0aGUgbWVkaWEgZmlsZSwgZWcuIHZpZGVvLCBhdWRpbywgY2xvc2VkIGNhcHRp
b25zLCBldGMsIGhhcyBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNoYXJh
Y3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpIHsgfQogICAgIAogICAgIC8vIHdoZXRoZXIg
dGhlIHJlbmRlcmluZyBzeXN0ZW0gY2FuIGFjY2VsZXJhdGUgdGhlIGRpc3BsYXkgb2YgdGhpcyBN
ZWRpYVBsYXllci4KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFj
Y2VsZXJhdGVkKE1lZGlhUGxheWVyKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKCkgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIC8vIGNhbGxlZCB3aGVuIHRoZSBtZWRpYSBwbGF5ZXIncyByZW5kZXJpbmcgbW9k
ZSBjaGFuZ2VkLCB3aGljaCBpbmRpY2F0ZXMgYSBjaGFuZ2UgaW4gdGhlCiAgICAgLy8gYXZhaWxh
YmlsaXR5IG9mIHRoZSBwbGF0Zm9ybUxheWVyKCkuCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpIHsgfQogCiAgICAgLy8gd2hldGhl
ciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkIGZvciB2aWRlbyByZW5kZXJpbmcK
ICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJBY3Rp
dmVTb3VyY2VCdWZmZXJzQ2hhbmdlZChjb25zdCBNZWRpYVBsYXllciopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkgeyB9CiAKICNp
ZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCi0gICAgdmlydHVhbCBHcmFwaGlj
c0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0IE1l
ZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgR3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVpbnQ4
QXJyYXkqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktl
eU5lZWRlZChVaW50OEFycmF5KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBl
bXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQoTWVkaWFQbGF5ZXIqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ3VycmVu
dFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKSB7IH07CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQpAQCAtNDE2LDggKzQxNiw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwYWludCgpOwog
Ci0gICAgTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVu
dDsgfQotCiAgICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICAgdm9p
ZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKQEAgLTU4MCw5ICs1NzgsMjcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCk7CiAKKyAgICBib29sIHJlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXll
clJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoKTsgfQorICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNo
YW5nZWQoKSBjb25zdCAgeyBjbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2Vk
KCk7IH0KKyAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgeyByZXR1cm4g
Y2xpZW50KCkubWVkaWFQbGF5ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOyB9Cisg
ICAgdm9pZCBhY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpIHsgY2xpZW50KCkubWVkaWFQbGF5
ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpOyB9CisgICAgTGF5b3V0UmVjdCBwbGF5ZXJD
b250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QoKTsgfQorICAgIGZsb2F0IHBsYXllckNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRzU2NhbGUoKTsgfQorICAgIGJvb2wgc2hv
dWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3QgeyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5
ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgbWVkaWFD
YWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTWVkaWFD
YWNoZURpcmVjdG9yeSgpOyB9CisgICAgYm9vbCBpc1ZpZGVvUGxheWVyKCkgY29uc3QgeyByZXR1
cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJJc1ZpZGVvKCk7IH0KKyAgICB2b2lkIG1lZGlhRW5naW5l
VXBkYXRlZCgpIHsgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7IH0KKyAgICBi
b29sIGlzTG9vcGluZygpIGNvbnN0IHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVySXNMb29w
aW5nKCk7IH0KKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNh
bGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoZGV0YWlscywg
ZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmKTsKIAorICAgIE1lZGlhUGxheWVyQ2xpZW50JiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KKwogICAgIGNvbnN0IE1lZGlhUGxheWVy
RmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKSBj
b25zdDsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdG9yeSopOwogICAgIHZvaWQgcmVsb2FkVGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCAxYjlh
OTIxNTdhN2JlM2UzMTFiYTE3YjQ1ODc3YTgzNjYzNjZhNmI1Li5hN2QwNDcwYTNmMDQwOWM4MDM4
OWIyMzJjOTdmYzk3YzQwMjgxNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6TWVkaWFSZW5kZXJpbmdNb2RlIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvCiAgICAgaWYgKCFtX3BsYXllci0+dmlzaWJsZSgpIHx8IGFzc2V0
U3RhdHVzKCkgPT0gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzVW5rbm93bikKICAgICAgICAgcmV0
dXJuIE1lZGlhUmVuZGVyaW5nTm9uZTsKIAotICAgIGlmIChzdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkgJiYgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVB
Y2NlbGVyYXRlZChtX3BsYXllcikpCisgICAgaWYgKHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSAmJiBtX3BsYXllci0+cmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCgpKQogICAgICAgICBy
ZXR1cm4gTWVkaWFSZW5kZXJpbmdUb0xheWVyOwogCiAgICAgcmV0dXJuIE1lZGlhUmVuZGVyaW5n
VG9Db250ZXh0OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpzZXRVcFZpZGVvUmVuZGVyaW5nKCkKIAogICAgIC8vIElmIHVzaW5nIGEgbW92
aWUgbGF5ZXIsIGluZm9ybSB0aGUgY2xpZW50IHNvIHRoZSBjb21wb3NpdGluZyB0cmVlIGlzIHVw
ZGF0ZWQuCiAgICAgaWYgKGN1cnJlbnRNb2RlID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciB8fCBw
cmVmZXJyZWRNb2RlID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikKLSAgICAgICAgbV9wbGF5ZXIt
PmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworICAg
ICAgICBtX3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnRlYXJEb3duVmlkZW9SZW5kZXJpbmcoKQpAQCAtNDUy
LDcgKzQ1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpwcmVwYXJl
Rm9yUmVuZGVyaW5nKCkKICAgICBzZXRVcFZpZGVvUmVuZGVyaW5nKCk7CiAKICAgICBpZiAoY3Vy
cmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVycmVk
UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllcikKLSAgICAgICAgbV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwor
ICAgICAgICBtX3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4NDIxMTIzNzRhNWQ2YTgxNWI4Yzc2ZGE0ZTBmOTMw
NWE1NGZiMWViLi4yNGM1Y2E0NDRjZTE3YTgwM2QzZmJlYTQ0NjUxNWNkYzQzZGJiMGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoKQogICAgICAgICAgICAg
Y3JlYXRlVmlkZW9PdXRwdXQoKTsKICNlbmRpZgogCi0gICAgICAgIHBsYXllcigpLT5jbGllbnQo
KS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKHBsYXllcigpKTsKKyAgICAgICAgcGxh
eWVyKCktPnJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgfSk7CiB9CiAKQEAgLTU5Myw4ICs1
OTMsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIoKQogI2VuZGlmCiAgICAgW21fdmlkZW9MYXllciBhZGRPYnNlcnZlcjptX29i
amNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmVhZHlGb3JEaXNwbGF5IiBvcHRpb25zOk5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZG
b3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXllcl07CiAgICAgdXBkYXRlVmlk
ZW9MYXllckdyYXZpdHkoKTsKLSAgICBbbV92aWRlb0xheWVyIHNldENvbnRlbnRzU2NhbGU6cGxh
eWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudHNTY2FsZSgpXTsKLSAgICBJbnRTaXpl
IGRlZmF1bHRTaXplID0gc25hcHBlZEludFJlY3QocGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxh
eWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpOworICAgIFttX3ZpZGVvTGF5ZXIgc2V0Q29udGVu
dHNTY2FsZTpwbGF5ZXIoKS0+cGxheWVyQ29udGVudHNTY2FsZSgpXTsKKyAgICBJbnRTaXplIGRl
ZmF1bHRTaXplID0gc25hcHBlZEludFJlY3QocGxheWVyKCktPnBsYXllckNvbnRlbnRCb3hSZWN0
KCkpLnNpemUoKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgbV92aWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV92aWRlb0xheWVyLmdldCgp
LCBkZWZhdWx0U2l6ZSk7CkBAIC04MzYsMTEgKzgzNiwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwp
CiAgICAgfQogI2VuZGlmCiAKLSAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNoZSA9IHBsYXllcigp
LT5jbGllbnQoKS5tZWRpYVBsYXllclNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpOworICAgIGJv
b2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxheWVyKCktPnNob3VsZFVzZVBlcnNpc3RlbnRDYWNo
ZSgpOwogICAgIFtvcHRpb25zIHNldE9iamVjdDpAKCF1c2VQZXJzaXN0ZW50Q2FjaGUpIGZvcktl
eTpBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5XTsKICAgICAKICAgICBpZiAodXNl
UGVyc2lzdGVudENhY2hlKQotICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6YXNzZXRDYWNoZUZv
clBhdGgocGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgp
KSBmb3JLZXk6QVZVUkxBc3NldENhY2hlS2V5XTsKKyAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0
OmFzc2V0Q2FjaGVGb3JQYXRoKHBsYXllcigpLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktl
eTpBVlVSTEFzc2V0Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2Fs
VVJMKHVybCk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWVVJMQXNzZXRJ
bnN0YW5jZSgpIGluaXRXaXRoVVJMOmNvY29hVVJMIG9wdGlvbnM6b3B0aW9ucy5nZXQoKV0pOwpA
QCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXIoKQogICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRNdXRlZDpt
X211dGVkXTsKICAgICB9CiAKLSAgICBpZiAocGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVy
SXNWaWRlbygpKQorICAgIGlmIChwbGF5ZXIoKS0+aXNWaWRlb1BsYXllcigpKQogICAgICAgICBj
cmVhdGVBVlBsYXllckxheWVyKCk7CiAKICAgICBpZiAobV9hdlBsYXllckl0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KaW5kZXggOWU4NWJkM2UxODZlODdjODEwZWJjNWU0MzUwMTcxMzA0
ZDcxODhiNC4uNzE1MjhjOTljMGNjNjA3ZDM4ZjJlZjNlMDcyODhjZjZkMzM1MWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNjc3LDcgKzY3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hh
bmdlZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpub3Rp
ZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiB7Ci0gICAgbV9wbGF5ZXItPmNsaWVudCgp
Lm1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQobV9wbGF5ZXIpOworICAgIG1f
cGxheWVyLT5hY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpOwogfQogCiBNZWRpYVBsYXllcjo6
TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om1vdmll
TG9hZFR5cGUoKSBjb25zdApAQCAtNzY0LDggKzc2NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjplbnN1cmVMYXllcigpCiAgICAgW21fc3luY2hyb25pemVy
IGFkZFJlbmRlcmVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICAgICBpZiAo
bV9tZWRpYVNvdXJjZVByaXZhdGUpCiAgICAgICAgIG1fbWVkaWFTb3VyY2VQcml2YXRlLT5zZXRW
aWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpKTsKLSAgICBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5nZXQoKSwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxh
eWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKLSAgICBtX3BsYXllci0+Y2xpZW50KCkubWVk
aWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChtX3BsYXllcik7CisgICAgbV92aWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuZ2V0KCksIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgp
KS5zaXplKCkpOworICAgIG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkK
QEAgLTc4Myw3ICs3ODMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6ZGVzdHJveUxheWVyKCkKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+
ZGlkRGVzdHJveVZpZGVvTGF5ZXIoKTsKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9
IG51bGxwdHI7CiAgICAgc2V0SGFzQXZhaWxhYmxlVmlkZW9GcmFtZShmYWxzZSk7Ci0gICAgbV9w
bGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIp
OworICAgIG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlRGVjb21wcmVzc2lvblNlc3Np
b24oKQpAQCAtNzk3LDcgKzc5Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjplbnN1cmVEZWNvbXByZXNzaW9uU2Vzc2lvbigpCiAgICAgaWYgKG1fbWVkaWFT
b3VyY2VQcml2YXRlKQogICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZS0+c2V0RGVjb21wcmVz
c2lvblNlc3Npb24obV9kZWNvbXByZXNzaW9uU2Vzc2lvbi5nZXQoKSk7CiAKLSAgICBtX3BsYXll
ci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChtX3BsYXllcik7Cisg
ICAgbV9wbGF5ZXItPnJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkZXN0cm95RGVjb21wcmVzc2lvblNlc3Npb24o
KQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQK
ICAgICBbYXVkaW9SZW5kZXJlciBzZXRBdWRpb1RpbWVQaXRjaEFsZ29yaXRobToobV9wbGF5ZXIt
PnByZXNlcnZlc1BpdGNoKCkgPyBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwgOiBB
VkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkKV07CiAKICAgICBbbV9zeW5jaHJvbml6
ZXIgYWRkUmVuZGVyZXI6YXVkaW9SZW5kZXJlcl07Ci0gICAgbV9wbGF5ZXItPmNsaWVudCgpLm1l
ZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworICAgIG1fcGxheWVyLT5y
ZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRT
X0JFR0lOCkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRT
X0VORAogICAgIH1dOwogCiAgICAgbV9zYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyTWFwLnJlbW92
ZShpdGVyKTsKLSAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2Rl
Q2hhbmdlZChtX3BsYXllcik7CisgICAgbV9wbGF5ZXItPnJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjaGFyYWN0
ZXJpc3RpY3NDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBmM2UyN2Q4
ZTdmNDg5YTYwZjczMGJjYTkzNmRhYTRhMWMxOGQzYTlmLi42MzE0ODE0YmM4OGZjOWNmN2ViYmNl
OTRmYzhlNzE5MWRmM2Y0NTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00ODUs
NyArNDg1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
c3VyZUxheWVycygpCiAgICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9y
ID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwogICAgIG1fYmFja2dyb3VuZExheWVyLmdl
dCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOwogCi0gICAgYXV0byBzaXplID0g
c25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJl
Y3QoKSkuc2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5w
bGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCk7CiAgICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0
KCkuYm91bmRzID0gQ0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
OwogCiAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdOwpA
QCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVSZW5kZXJpbmdNb2RlKCkKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhp
c10gewogICAgICAgICBtX3RyYW5zZm9ybUlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1f
cGxheWVyKQotICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVy
aW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworICAgICAgICAgICAgbV9wbGF5ZXItPnJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCk7CiAgICAgfSk7CiAKIH0KQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1f
cGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9w
bGF5ZXIpKQorICAgIGlmIChtX3BsYXllci0+cmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCgpKQog
ICAgICAgICBlbnN1cmVMYXllcnMoKTsKICAgICBlbHNlCiAgICAgICAgIGRlc3Ryb3lMYXllcnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggZjVhOTVmOTU5YmY2YzBkZjE4MGExZDU0OTU5ZmFmMWJkZGRlYWI1Yy4uMDEyN2M1N2QxYWI4
NTFmM2MyNDc2OGUwYTU1NzFhOGZmM2ZhZTZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEwNjMsNyArMTA2Myw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMoR09iamVj
dCogb2JqZWN0KQogICAgIGlmIChnX3N0cmNtcDAoR19PQkpFQ1RfVFlQRV9OQU1FKG9iamVjdCks
ICJHc3RQdWxzZVNpbmsiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgY2hhciogcm9s
ZSA9IG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllcklzVmlkZW8oKSA/ICJ2aWRlbyIgOiAi
bXVzaWMiOworICAgIGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigp
ID8gInZpZGVvIiA6ICJtdXNpYyI7CiAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rf
c3RydWN0dXJlX25ldygic3RyZWFtLXByb3BlcnRpZXMiLCAibWVkaWEucm9sZSIsIEdfVFlQRV9T
VFJJTkcsIHJvbGUsIG51bGxwdHIpOwogICAgIGdfb2JqZWN0X3NldChvYmplY3QsICJzdHJlYW0t
cHJvcGVydGllcyIsIHN0cnVjdHVyZSwgbnVsbHB0cik7CiAgICAgZ3N0X3N0cnVjdHVyZV9mcmVl
KHN0cnVjdHVyZSk7CkBAIC0xMTY4LDcgKzExNjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAKICAgICBpZiAodXNlTWVkaWFTb3Vy
Y2UpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiVHJhY2tzIG1hbmFn
ZWQgYnkgc291cmNlIGVsZW1lbnQuIEJhaWxpbmcgb3V0IG5vdy4iKTsKLSAgICAgICAgbV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChtX3BsYXllcik7CisgICAgICAg
IG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgIHB1cmdlSW52YWxpZFZpZGVvVHJhY2tzKHZhbGlk
VmlkZW9TdHJlYW1zKTsKICNlbmRpZgogCi0gICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZChtX3BsYXllcik7CisgICAgbV9wbGF5ZXItPm1lZGlhRW5naW5lVXBk
YXRlZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9TaW5r
Q2Fwc0NoYW5nZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikK
QEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2
aWRlb1NpbmtDYXBzQ2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0CiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMoKQogewogICAg
IG1fdmlkZW9TaXplID0gSW50U2l6ZSgpOwotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVw
ZGF0ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvQ2hh
bmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQpAQCAtMTI0
Miw3ICsxMjQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBs
YXllck9mQXVkaW8oKQogCiAgICAgaWYgKHVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50
LiBCYWlsaW5nIG91dCBub3cuIik7Ci0gICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgICAgICBtX3BsYXllci0+bWVkaWFFbmdp
bmVVcGRhdGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNzMsNyArMTI3Myw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlv
KCkKICAgICBwdXJnZUludmFsaWRBdWRpb1RyYWNrcyh2YWxpZEF1ZGlvU3RyZWFtcyk7CiAjZW5k
aWYKIAotICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9w
bGF5ZXIpOworICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIH0KIAogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKQEAgLTE2NjIsNyArMTY2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgIGlmIChtX2hhc1ZpZGVvKQogICAg
ICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKIAotICAgIG1fcGxheWVyLT5jbGllbnQoKS5t
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgIG1fcGxheWVyLT5tZWRpYUVu
Z2luZVVwZGF0ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNs
ZWFyVHJhY2tzKCkKQEAgLTIwOTMsNyArMjA5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAg
ICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJh
Y2suY29weVJlZigpKTsKICAgICAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRldGFpbChn
c3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfaW5zdGFsbGVyX2RldGFpbChtZXNzYWdlKSk7
CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXNjcmlwdGlvbihnc3RfbWlzc2lu
Z19wbHVnaW5fbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24obWVzc2FnZSkpOwotICAgICAgICAgICAg
ICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKFN0cmlu
Zzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpmcm9tVVRGOChkZXNjcmlwdGlvbi5n
ZXQoKSksIG1pc3NpbmdQbHVnaW5DYWxsYmFjay5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9w
bGF5ZXItPnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRh
aWwuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1Bs
dWdpbkNhbGxiYWNrLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJM
RShWSURFT19UUkFDSykgJiYgVVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0yNzgwLDcgKzI3ODAs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKIAogICAgIG1f
aXNFbmRSZWFjaGVkID0gdHJ1ZTsKIAotICAgIGlmICghbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlh
UGxheWVySXNMb29waW5nKCkpIHsKKyAgICBpZiAoIW1fcGxheWVyLT5pc0xvb3BpbmcoKSkgewog
ICAgICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsKICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfUkVBRFkpOwogICAgICAgICBtX2RpZERvd25sb2FkRmluaXNoID0gZmFsc2U7CkBA
IC0yOTk3LDcgKzI5OTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVh
ZHlUaW1lckZpcmVkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmFjY2Vs
ZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBtX2NhblJlbmRlcmluZ0JlQWNj
ZWxlcmF0ZWQgPSBtX3BsYXllciAmJiBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOworICAgIG1fY2FuUmVuZGVyaW5nQmVBY2NlbGVy
YXRlZCA9IG1fcGxheWVyICYmIG1fcGxheWVyLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZCgpOwogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>