<?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>189248</bug_id>
          
          <creation_ts>2018-09-03 10:54:34 -0700</creation_ts>
          <short_desc>Simplify RenderLayer filter code</short_desc>
          <delta_ts>2018-09-04 13:28:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188950</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456188</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-09-03 10:54:34 -0700</bug_when>
    <thetext>Simplify RenderLayer filter code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456189</commentid>
    <comment_count>1</comment_count>
      <attachid>348778</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-09-03 10:57:44 -0700</bug_when>
    <thetext>Created attachment 348778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456430</commentid>
    <comment_count>2</comment_count>
      <attachid>348778</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-04 13:27:16 -0700</bug_when>
    <thetext>Comment on attachment 348778
Patch

Clearing flags on attachment: 348778

Committed r235630: &lt;https://trac.webkit.org/changeset/235630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456431</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-04 13:27:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456433</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 13:28:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/44110188&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348778</attachid>
            <date>2018-09-03 10:57:44 -0700</date>
            <delta_ts>2018-09-04 13:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189248-20180903105742.patch</filename>
            <type>text/plain</type>
            <size>62115</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFmYTk0YTA2YWNkMjJm
ZTE5NGEwZDVkNjhhM2NhOGVjYmY5MTMzZC4uYTBiNzMwZmQ1NWNkZWZhZDRmODk5MWYzMDM5NmI2
N2JhMWI5ODcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE4LTA5LTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IFJl
bmRlckxheWVyIGZpbHRlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODkyNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIFBhaW50aW5nIGZpbHRlcnMgaW4gUmVuZGVyTGF5ZXIgaW52
b2x2ZWQgdGhlIGNvbmZ1c2luZ2x5IG5hbWVkIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvLAorICAg
ICAgICBhbmQgRmlsdGVyRWZmZWN0UmVuZGVyZXIvRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIu
IFJlZHVjZSBjb25mdXNpb24gYnkganVzdCBjb2xsYXBzaW5nCisgICAgICAgIHRoZXNlIHRvZ2V0
aGVyIGludG8gUmVuZGVyTGF5ZXJGaWx0ZXJzLiBSZW5kZXJMYXllckZpbHRlcnMgc3RvcmVzIGEg
cmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBDU1NGaWx0ZXIsIGFuZCBrbm93cyBob3cgdG8gc2V0
IGl0IHVwLCBhbmQgdmVuZCBhIEdyYXBoaWNzQ29udGV4dCogZm9yIHBhaW50aW5nIHRoZSBjb250
ZW50CisgICAgICAgIHRvIGJlIGZpbHRlcmVkLgorICAgICAgICAKKyAgICAgICAgSXQncyBhbHNv
IHNpbXBsZXIgdG8ganVzdCBnaXZlIFJlbmRlckxheWVyIGEgbWVtYmVyIHZhcmlhYmxlIGZvciBS
ZW5kZXJMYXllckZpbHRlcnMsIHJhdGhlcgorICAgICAgICB0aGFuIHVzaW5nIGEgc2lkZSBoYXNo
ICh3ZSBjYW4gcmVjb3VwIHRoZSBzcGFjZSBpbiBvdGhlciB3YXlzIGxheWVyKS4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL0NTU0ZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJl
bmRlcmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludHNXaXRoRmlsdGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cmVxdWlyZXNGdWxsTGF5ZXJJbWFnZUZvckZpbHRlcnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRp
bmdJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmZpbHRlcnNGb3JQYWlu
dGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphcHBseUZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpmaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmZpbHRlclBhaW50ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OlJlbmRlckxheWVyRmlsdGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6On5SZW5kZXJMYXllckZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpoYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyRmlsdGVyczo6dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OnJlbW92ZVJlZmVyZW5jZUZpbHRlckNs
aWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZm
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaC4K
KwogMjAxOC0wOS0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgRmlsdGVyRWZmZWN0UmVuZGVyZXIgdG8gQ1NTRmlsdGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDBkY2FhODMxZTdmZDc2MzYzMmVmYWE1MTAyNmE0ZWQ2MGYyMWNiMDcuLmQ5ZDkz
ZGYyZDM1NzA4ODBmNjY0Mzg0MmM3ODJkY2VmODcxMjdjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0x
ODQxLDcgKzE4NDEsNiBAQCByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAogcmVuZGVyaW5nL0NsaXBS
ZWN0LmNwcAogcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAogcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcAotcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAogcmVuZGVyaW5nL0ZsZXhp
YmxlQm94QWxnb3JpdGhtLmNwcAogcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiByZW5k
ZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMTg5Niw3ICsxODk1LDcgQEAgcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAotcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKK3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKIHJl
bmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMWFlNjgyN2FkY2MwMGNhMGZiMDQxNDM2NDkwOTk5YzA1NGNkYjYxMy4uYWRmNDhk
Y2JmNDlhODFiMDZiMjgzOGJmMWJkYWVmNDBjZTM5ZDEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODg2LDcgKzg4Niw2IEBA
CiAJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4OEU3MTBFMzAwNUQ2
MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oICovOyB9OwogCQkzMTI4Q0E2QjE0NzMzMTYz
MDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkzMTJDMEM0MTE0NkRDNkNDMDAxNkM5MTEgLyogTm90aWZpY2F0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0
RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzEzMTNGNjYxNDQzQjM1RjAwNkUyQTkwIC8q
IEZpbHRlckVmZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuaCAqLzsgfTsKIAkJMzEzMTcxNTYxRkIwNzlFNTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzE3MTU0
MUZCMDc5RDEwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEzNTkxMDYxRTdEREM3MzAwRjMwNjMwIC8qIFJU
Q0ljZUNvbm5lY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzNTkxMDAxRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUNvbm5lY3Rpb25T
dGF0ZS5oICovOyB9OwogCQkzMTM1OTEwNzFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlR2F0aGVy
aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxMzU5MTAxMUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VHYXRoZXJpbmdTdGF0ZS5oICovOyB9
OwpAQCAtMTM1MCw3ICsxMzQ5LDYgQEAKIAkJNTA0QUFDQ0UxODM0NDU1OTAwRTNEOUJDIC8qIElu
c3BlY3Rvck5vZGVGaW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUwNEFBQ0NDMTgzNDQ1NTkwMEUzRDlCQyAvKiBJbnNwZWN0b3JOb2RlRmluZGVy
LmggKi87IH07CiAJCTUwODFFM0UwM0NGRjgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUw
ODFFM0UxM0QwMjgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0Yx
MDZCMDAzMTUxRjMgLyogUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGcmFnbWVudGVkRmxvdy5oICovOyB9OwotCQk1MEQxMEQ5QTE1NDVGNTc2MDA5NkQyODgg
LyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MEQxMEQ5ODE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRB
ODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTEwMTkyRDIxOEI2QjlBQjAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwMTkyRDAxOEI2QjlBQjAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNSb290RWxlbWVu
dE1hYy5oICovOyB9OwogCQk1MTAxOTJENjE4QjZCOUI3MDA3RkM3QTEgLyogSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTAxOTJENDE4QjZCOUI3MDA3RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50
LmggKi87IH07CkBAIC01NjExLDYgKzU2MDksOCBAQAogCQkwRjQ5NjZBOTFEQjQwQzQzMDBBMjc0
QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRE9NUG9pbnRSZWFkT25seS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjUzRkI4MTIxM0IxQkI4MDBDNDBEMzQgLyogQ1NTRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNTNGQjgzMjEzQjFCQjgwMEM0MEQzNCAvKiBDU1NGaWx0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNTNGQjg5MjEzQjc2ODQwMEM0MEQzNCAvKiBSZW5kZXJMYXllckZpbHRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTGF5ZXJGaWx0ZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNTNGQjhCMjEzQjc2ODQwMEM0MEQzNCAvKiBSZW5kZXJMYXllckZp
bHRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NERDRTMxODgxMDUxRDAwM0VFREJCIC8qIFRl
eHRBdXRvU2l6aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRBdXRvU2l6aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NERDRTQx
ODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRBdXRvU2l6aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNTRERDA1MTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUb3VjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Njc0OSw4ICs2NzQ5LDYgQEAKIAkJMzEyODhFNzEwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tleWZy
YW1lc1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTS2V5ZnJhbWVz
UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4Q0E2NzE0NzMzMTUyMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTMxM0Y2MzE0
NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVy
RWZmZWN0UmVuZGVyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVy
RWZmZWN0UmVuZGVyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEzMTcxNTQx
RkIwNzlEMTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FudmFzQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMx
NzE1NzFGQjA5NjlFMDA4RDkxRkMgLyogQ2FudmFzQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEzNTkxMDAxRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUNvbm5lY3Rpb25TdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENJY2VDb25uZWN0aW9uU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3OTksOCArNzc5Nyw2IEBACiAJ
CTUwODFFM0UxM0QwMjgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyog
UmVuZGVyRnJhZ21lbnRlZEZsb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyRnJhZ21lbnRlZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4
Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZyYWdtZW50ZWRGbG93LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZyYWdtZW50ZWRGbG93LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTBEMTBEOTcxNTQ1RjU3NjAwOTZEMjg4IC8q
IFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJMYXllckZpbHRlckluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MEQxMEQ5ODE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckxheWVyRmlsdGVySW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNo
ZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhY2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAx
OTJDRjE4QjZCOUFCMDA3RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ29udHJvbHNSb290RWxl
bWVudE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTc0Myw4ICsyNTcz
OSw2IEBACiAJCQkJMEY1M0ZCODMyMTNCMUJCODAwQzQwRDM0IC8qIENTU0ZpbHRlci5oICovLAog
CQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCiAJCQkJ
QThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8qIEVsbGlwc2lzQm94LmggKi8sCi0JCQkJMzEzMTNG
NjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLywKLQkJCQkz
MTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLywKIAkJ
CQlBOENGRjA0ODBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgKi8sCiAJ
CQkJQThDRkYwNEEwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCAqLywKIAkJ
CQk5NERENzk3MjFFNTRFM0EyMDA1OEZCODAgLyogRmxleGlibGVCb3hBbGdvcml0aG0uY3BwICov
LApAQCAtMjU4NjUsOCArMjU4NTksOCBAQAogCQkJCTBGNTgwQ0ZCMEYxMkRFOUIwMDUxRDY4OSAv
KiBSZW5kZXJMYXllckJhY2tpbmcuaCAqLywKIAkJCQkwRjU4MENGQTBGMTJERTlCMDA1MUQ2ODkg
LyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCAqLywKIAkJCQkwRjU4MENGOTBGMTJERTlCMDA1
MUQ2ODkgLyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggKi8sCi0JCQkJNTBEMTBEOTcxNTQ1RjU3
NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgKi8sCi0JCQkJNTBEMTBEOTgx
NTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5oICovLAorCQkJCTBGNTNG
QjhCMjEzQjc2ODQwMEM0MEQzNCAvKiBSZW5kZXJMYXllckZpbHRlcnMuY3BwICovLAorCQkJCTBG
NTNGQjg5MjEzQjc2ODQwMEM0MEQzNCAvKiBSZW5kZXJMYXllckZpbHRlcnMuaCAqLywKIAkJCQkz
QzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgKi8s
CiAJCQkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3Qu
aCAqLywKIAkJCQlCQzMzRkIxQTBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3Qu
Y3BwICovLApAQCAtMjc4NjEsNyArMjc4NTUsNiBAQAogCQkJCTcxMkJFNDgzMUZFODY1REQwMDIw
MzFDQyAvKiBGaWxsTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAw
QTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDOTI1MUEwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEzMTNGNjYxNDQz
QjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUVDRUI2RTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI5Nzk3LDcgKzI5NzkwLDYgQEAKIAkJCQlCQ0VBNDg3
QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTgwQ0ZGMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckJhY2tpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTgwQ0ZEMEYxMkRFOUIwMDUxRDY4OSAvKiBSZW5kZXJMYXllckNvbXBvc2l0
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUwRDEwRDlBMTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5k
ZXJMYXllckZpbHRlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTNDMjQ0RkVBQTM3NUFDNjMz
Rjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
QkUwMzBBMjBGMzExMkZCMDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRUE0ODY0MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMaW5lQnJlYWsuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
CmluZGV4IDZmMjUzZDEzYjMzMTMzOTIyMWUxNTJiYmZiNjg4ZjRiOWNkODQxYWUuLjczNDgyODI1
YjAzOTg1MTM4ZTI4YzAwN2M2ODkyMWIyODBmOTA1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDU1NG
aWx0ZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRleCBj
MmEyMzg3ODBiMTAzYjdjYjliMTc4MDA2ODhmZjA5OGM5NDNjYzU2Li40OTM3MjlmOTQ5MWI5MTE1
MjlmMmUyNDFhNGI5MjA2ZTIyYmM2N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCkBAIC00Myw5ICs0Myw4IEBAIGVudW0gY2xhc3MgRmlsdGVyQ29uc3VtZXIgeyBGaWx0ZXJQ
cm9wZXJ0eSwgRmlsdGVyRnVuY3Rpb24gfTsKIAogY2xhc3MgQ1NTRmlsdGVyIGZpbmFsIDogcHVi
bGljIEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIGNs
YXNzIFJlbmRlckxheWVyRmlsdGVyczsKIHB1YmxpYzoKLSAgICBmcmllbmQgY2xhc3MgRmlsdGVy
RWZmZWN0UmVuZGVyZXJIZWxwZXI7Ci0KICAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRl
KCk7CiAKICAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2I1ZDI1OTg0NjY4ODllYjE2MDA1ZjAzYWFk
ODA4Y2QyNWYwMTEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZp
bHRlckVmZmVjdFJlbmRlcmVyLmgiCi0KLSNpbmNsdWRlICJDU1NGaWx0ZXIuaCIKLSNpbmNsdWRl
ICJDYWNoZWRTVkdEb2N1bWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiRkVDb2xvck1h
dHJpeC5oIgotI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKLSNpbmNsdWRlICJGRURy
b3BTaGFkb3cuaCIKLSNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgotI2luY2x1ZGUgIkZFTWVy
Z2UuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNp
bmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgotI2lu
Y2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgotI2luY2x1ZGUg
IlNvdXJjZUdyYXBoaWMuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KLQotI2lmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVs
cGVyOjpwcmVwYXJlRmlsdGVyRWZmZWN0KFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgTGF5b3V0
UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQotewotICAgIEFTU0VSVChtX2hhdmVGaWx0ZXJF
ZmZlY3QpOwotICAgIEFTU0VSVChsYXllci5maWx0ZXIoKSk7Ci0KLSAgICBhdXRvJiBmaWx0ZXIg
PSAqbGF5ZXIuZmlsdGVyKCk7Ci0gICAgYXV0byBmaWx0ZXJTb3VyY2VSZWN0ID0gZmlsdGVyLmNv
bXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0
KTsKLQotICAgIGlmIChmaWx0ZXJTb3VyY2VSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBU
aGUgZGlydHkgcmVjdCBpcyBub3QgaW4gdmlldywganVzdCBiYWlsIG91dC4KLSAgICAgICAgbV9o
YXZlRmlsdGVyRWZmZWN0ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBib29sIGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUgPSBmaWx0ZXIudXBkYXRlQmFja2luZ1N0
b3JlUmVjdChmaWx0ZXJTb3VyY2VSZWN0KTsKLQotICAgIG1fcmVuZGVyTGF5ZXIgPSAmbGF5ZXI7
Ci0gICAgaWYgKCFmaWx0ZXIuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpCi0gICAgICAgIG1f
cmVwYWludFJlY3QgPSBkaXJ0eVJlY3Q7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChoYXNVcGRh
dGVkQmFja2luZ1N0b3JlKQotICAgICAgICAgICAgbV9yZXBhaW50UmVjdCA9IGZpbHRlclNvdXJj
ZVJlY3Q7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9yZXBhaW50UmVjdCA9IGRpcnR5
UmVjdDsKLSAgICAgICAgICAgIG1fcmVwYWludFJlY3QudW5pdGUobGF5ZXJSZXBhaW50UmVjdCk7
Ci0gICAgICAgICAgICBtX3JlcGFpbnRSZWN0LmludGVyc2VjdChmaWx0ZXJTb3VyY2VSZWN0KTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3BhaW50T2Zmc2V0ID0gZmlsdGVyU291cmNlUmVjdC5s
b2NhdGlvbigpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUdyYXBoaWNzQ29udGV4dCogRmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmZpbHRlckNvbnRleHQoKSBjb25zdAotewotICAgIGlm
ICghbV9oYXZlRmlsdGVyRWZmZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gbV9yZW5kZXJMYXllci0+ZmlsdGVyKCktPmlucHV0Q29udGV4dCgpOwotfQotCi1ib29sIEZp
bHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdCgpCi17Ci0gICAgQVNT
RVJUKG1fcmVuZGVyTGF5ZXIpOwotICAgIEFTU0VSVChtX3JlbmRlckxheWVyLT5maWx0ZXIoKSk7
Ci0KLSAgICBhdXRvJiBmaWx0ZXIgPSAqbV9yZW5kZXJMYXllci0+ZmlsdGVyKCk7Ci0gICAgZmls
dGVyLmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQobV90YXJnZXRDb250ZXh0KTsKLSAgICAv
LyBQYWludCBpbnRvIHRoZSBjb250ZXh0IHRoYXQgcmVwcmVzZW50cyB0aGUgU291cmNlR3JhcGhp
YyBvZiB0aGUgZmlsdGVyLgotICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGZpbHRl
ci5pbnB1dENvbnRleHQoKTsKLSAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCB8fCBmaWx0
ZXIuZmlsdGVyUmVnaW9uKCkuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFt
cGluZyhmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuc2l6ZSgpKSkgewotICAgICAgICAvLyBEaXNhYmxl
IHRoZSBmaWx0ZXJzIGFuZCBjb250aW51ZS4KLSAgICAgICAgbV9oYXZlRmlsdGVyRWZmZWN0ID0g
ZmFsc2U7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBUcmFuc2xhdGUg
dGhlIGNvbnRleHQgc28gdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIGxheWVyIGlzIGNhcHR1cmVk
IGluIHRoZSBvZmZzY3JlZW4gbWVtb3J5IGJ1ZmZlci4KLSAgICBzb3VyY2VHcmFwaGljc0NvbnRl
eHQtPnNhdmUoKTsKLSAgICBzb3VyY2VHcmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtbV9wYWlu
dE9mZnNldCk7Ci0gICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QobV9yZXBhaW50
UmVjdCk7Ci0gICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5jbGlwKG1fcmVwYWludFJlY3QpOwot
Ci0gICAgbV9zdGFydGVkRmlsdGVyRWZmZWN0ID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCi17Ci0gICAgQVNTRVJUKG1faGF2ZUZp
bHRlckVmZmVjdCk7Ci0gICAgQVNTRVJUKG1fcmVuZGVyTGF5ZXIpOwotICAgIEFTU0VSVChtX3Jl
bmRlckxheWVyLT5maWx0ZXIoKSk7Ci0gICAgQVNTRVJUKG1fcmVuZGVyTGF5ZXItPmZpbHRlcigp
LT5pbnB1dENvbnRleHQoKSk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFt
IDw8ICJcbkZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyICIgPDwgdGhpcyA8PCAiIGFwcGx5Rmls
dGVyRWZmZWN0Iik7Ci0KLSAgICBhdXRvJiBmaWx0ZXIgPSAqbV9yZW5kZXJMYXllci0+ZmlsdGVy
KCk7Ci0gICAgZmlsdGVyLmlucHV0Q29udGV4dCgpLT5yZXN0b3JlKCk7Ci0KLSAgICBmaWx0ZXIu
YXBwbHkoKTsKLQotICAgIC8vIEdldCB0aGUgZmlsdGVyZWQgb3V0cHV0IGFuZCBkcmF3IGl0IGlu
IHBsYWNlLgotICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIub3V0cHV0UmVjdCgpOwot
ICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsK
LQotICAgIGlmIChhdXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXIub3V0cHV0KCkpCi0gICAgICAg
IGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwgc25hcFJl
Y3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLQotICAgIGZpbHRlci5jbGVhckludGVybWVk
aWF0ZVJlc3VsdHMoKTsKLQotICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwg
IkZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZm
ZWN0IGRvbmVcbiIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzZmIxYTM0MjdmMmI5MGJkNzFlM2I4NzdlM2Y4MTIxOTI1ZmY3ZDdhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
Y2xhc3MgUmVuZGVyTGF5ZXI7Ci0KLWNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGaWx0ZXJFZmZlY3RS
ZW5kZXJlckhlbHBlcihib29sIGhhdmVGaWx0ZXJFZmZlY3QsIEdyYXBoaWNzQ29udGV4dCYgdGFy
Z2V0Q29udGV4dCkKLSAgICAgICAgOiBtX3RhcmdldENvbnRleHQodGFyZ2V0Q29udGV4dCkKLSAg
ICAgICAgLCBtX2hhdmVGaWx0ZXJFZmZlY3QoaGF2ZUZpbHRlckVmZmVjdCkKLSAgICB7Ci0gICAg
fQotCi0gICAgYm9vbCBoYXZlRmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXZlRmls
dGVyRWZmZWN0OyB9Ci0gICAgYm9vbCBoYXNTdGFydGVkRmlsdGVyRWZmZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydGVkRmlsdGVyRWZmZWN0OyB9Ci0KLSAgICBib29sIHByZXBhcmVGaWx0ZXJF
ZmZlY3QoUmVuZGVyTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25z
dCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJl
Y3QpOwotICAgIGJvb2wgYmVnaW5GaWx0ZXJFZmZlY3QoKTsKLSAgICB2b2lkIGFwcGx5RmlsdGVy
RWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKLSAgICAKLSAgICBH
cmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQoKSBjb25zdDsKLQotICAgIGNvbnN0IExheW91
dFJlY3QmIHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsgfQotCi1w
cml2YXRlOgotICAgIFJlbmRlckxheWVyKiBtX3JlbmRlckxheWVyIHsgbnVsbHB0ciB9OyAvLyBG
SVhNRTogdGhpcyBpcyBtYWlubHkgdXNlZCB0byBnZXQgdGhlIENTU0ZpbHRlci4gRmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXIgc2hvdWxkIGJlIHdlYW5lZCBvZmYgaXQuCi0gICAgTGF5b3V0UG9p
bnQgbV9wYWludE9mZnNldDsKLSAgICBMYXlvdXRSZWN0IG1fcmVwYWludFJlY3Q7Ci0gICAgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBtX3RhcmdldENvbnRleHQ7Ci0gICAgYm9vbCBtX2hhdmVGaWx0
ZXJFZmZlY3QgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9zdGFydGVkRmlsdGVyRWZmZWN0IHsgZmFs
c2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDhhMDc0YjQyMDY2ZjIxZTA1OWViMTlhMjM4NjQxNWEx
Nzg4YjgzNTcuLmQzOTBjMTM5YjNkNThjOGI0ZWJkODAyNjIxNTk2MWM3NDcxZmY1ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNTksNyArNTksNiBAQAog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKICNp
bmNsdWRlICJGRU1lcmdlLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKICNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKQEAgLTk2LDcgKzk1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyQ29tcG9zaXRvci5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVyRmlsdGVySW5mby5o
IgorI2luY2x1ZGUgIlJlbmRlckxheWVyRmlsdGVycy5oIgogI2luY2x1ZGUgIlJlbmRlck1hcnF1
ZWUuaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkZsb3cuaCIKICNpbmNsdWRlICJSZW5k
ZXJSZXBsaWNhLmgiCkBAIC0zMTIsNyArMzExLDYgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVy
KFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyTGF5ZXJNb2RlbE9iamVjdCkKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCh0cnVlKQog
I2VuZGlmCi0gICAgLCBtX2hhc0ZpbHRlckluZm8oZmFsc2UpCiAjaWYgRU5BQkxFKENTU19DT01Q
T1NJVElORykKICAgICAsIG1fYmxlbmRNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihCbGVuZE1v
ZGU6Ok5vcm1hbCkpCiAgICAgLCBtX2hhc05vdElzb2xhdGVkQ29tcG9zaXRlZEJsZW5kaW5nRGVz
Y2VuZGFudHMoZmFsc2UpCkBAIC0zNzAsNyArMzY4LDcgQEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJM
YXllcigpCiAgICAgY2xlYXJTY3JvbGxDb3JuZXIoKTsKICAgICBjbGVhclJlc2l6ZXIoKTsKIAot
ICAgIEZpbHRlckluZm86OnJlbW92ZSgqdGhpcyk7CisgICAgY2xlYXJMYXllckZpbHRlcnMoKTsK
IAogICAgIC8vIENoaWxkIGxheWVycyB3aWxsIGJlIGRlbGV0ZWQgYnkgdGhlaXIgY29ycmVzcG9u
ZGluZyByZW5kZXIgb2JqZWN0cywgc28KICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIGRlbGV0ZSB0
aGVtIG91cnNlbHZlcy4KQEAgLTQ1MiwyNCArNDUwLDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnBh
aW50c1dpdGhGaWx0ZXJzKCkgY29uc3QKICAgICBpZiAoIWlzQ29tcG9zaXRlZCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghbV9iYWNraW5nIHx8ICFtX2JhY2tpbmctPmNhbkNv
bXBvc2l0ZUZpbHRlcnMoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuICFtX2JhY2tpbmctPmNhbkNvbXBvc2l0ZUZpbHRlcnMoKTsKIH0KIAog
Ym9vbCBSZW5kZXJMYXllcjo6cmVxdWlyZXNGdWxsTGF5ZXJJbWFnZUZvckZpbHRlcnMoKSBjb25z
dCAKIHsKICAgICBpZiAoIXBhaW50c1dpdGhGaWx0ZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBhdXRvKiBjc3NGaWx0ZXIgPSBmaWx0ZXIoKTsKLSAgICByZXR1cm4gY3NzRmlsdGVy
ICYmIGNzc0ZpbHRlci0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7Ci19CiAKLUNTU0ZpbHRl
ciogUmVuZGVyTGF5ZXI6OmZpbHRlcigpIGNvbnN0Ci17Ci0gICAgYXV0byogZmlsdGVySW5mbyA9
IEZpbHRlckluZm86OmdldElmRXhpc3RzKCp0aGlzKTsKLSAgICByZXR1cm4gZmlsdGVySW5mbyA/
IGZpbHRlckluZm8tPmZpbHRlcigpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9maWx0ZXJzICYm
IG1fZmlsdGVycy0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7CiB9CiAKIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwgT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZz4gZmxhZ3MpCkBA
IC0xNjA4LDE2ICsxNTk3LDE5IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
RmlsdGVyUmVwYWludExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorLy8g
RklYTUU6IFRoaXMgbmVlZWRzIGEgYmV0dGVyIG5hbWUuCiB2b2lkIFJlbmRlckxheWVyOjpzZXRG
aWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qp
CiB7CisgICAgQVNTRVJUKHJlcXVpcmVzRnVsbExheWVySW1hZ2VGb3JGaWx0ZXJzKCkpOworICAg
IEFTU0VSVChtX2ZpbHRlcnMpOworCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgTGF5b3V0UmVjdCByZWN0Rm9yUmVwYWludCA9IHJlY3Q7CiAgICAg
cmVuZGVyZXIoKS5zdHlsZSgpLmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KHJlY3RGb3JSZXBh
aW50KTsKIAotICAgIEZpbHRlckluZm8mIGZpbHRlckluZm8gPSBGaWx0ZXJJbmZvOjpnZXQoKnRo
aXMpOwotICAgIGZpbHRlckluZm8uZXhwYW5kRGlydHlTb3VyY2VSZWN0KHJlY3RGb3JSZXBhaW50
KTsKKyAgICBtX2ZpbHRlcnMtPmV4cGFuZERpcnR5U291cmNlUmVjdChyZWN0Rm9yUmVwYWludCk7
CiAgICAgCiAgICAgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyID0gZW5jbG9zaW5nRmlsdGVyUmVw
YWludExheWVyKCk7CiAgICAgQVNTRVJUKHBhcmVudExheWVyKTsKQEAgLTQxOTYsNDMgKzQxODgs
MzAgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
ZDo6cGFpcjxSZW5kZXJMYXllcjo6RmlsdGVySW5mbyosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlcj4+IFJlbmRlckxheWVyOjpmaWx0ZXJQYWludGVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzKSBj
b25zdAorUmVuZGVyTGF5ZXJGaWx0ZXJzKiBSZW5kZXJMYXllcjo6ZmlsdGVyc0ZvclBhaW50aW5n
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWlu
dEZsYWdzKSBjb25zdAogewogICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAocGFp
bnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcGFpbnRzV2l0
aEZpbHRlcnMoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8qIGluZm8gPSBGaWx0
ZXJJbmZvOjpnZXRJZkV4aXN0cygqdGhpcyk7Ci0gICAgaWYgKCFpbmZvIHx8ICFpbmZvLT5maWx0
ZXIoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8gaGVscGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4odHJ1ZSwgY29udGV4dCk7Ci0gICAg
aWYgKCFoZWxwZXItPmhhdmVGaWx0ZXJFZmZlY3QoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4geyBpbmZvLCBXVEZNb3ZlKGhlbHBl
cikgfTsKLX0KKyAgICBpZiAobV9maWx0ZXJzICYmIG1fZmlsdGVycy0+ZmlsdGVyKCkpCisgICAg
ICAgIHJldHVybiBtX2ZpbHRlcnMuZ2V0KCk7CiAKLWJvb2wgUmVuZGVyTGF5ZXI6Omhhc0ZpbHRl
clRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFBhaW50
TGF5ZXJGbGFnPiBwYWludEZsYWdzKSBjb25zdAotewotICAgIHJldHVybiAhIWZpbHRlclBhaW50
ZXIoY29udGV4dCwgcGFpbnRGbGFncykuZmlyc3Q7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6
OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJv
dW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCitHcmFwaGljc0NvbnRleHQq
IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNv
bnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExh
eWVyRmxhZz4gcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExh
eW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29t
cHV0ZWQpCiB7Ci0gICAgYXV0byBwYWludGVyID0gZmlsdGVyUGFpbnRlcihjb250ZXh0LCBwYWlu
dEZsYWdzKTsKLSAgICBpZiAoIXBhaW50ZXIuZmlyc3QpCisgICAgYXV0byogcGFpbnRpbmdGaWx0
ZXJzID0gZmlsdGVyc0ZvclBhaW50aW5nKGRlc3RpbmF0aW9uQ29udGV4dCwgcGFpbnRGbGFncyk7
CisgICAgaWYgKCFwYWludGluZ0ZpbHRlcnMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byYgZmlsdGVySW5mbyA9ICpwYWludGVyLmZpcnN0OwotICAgIGF1dG8mIGZpbHRlclBh
aW50ZXIgPSAqcGFpbnRlci5zZWNvbmQ7Ci0KLSAgICBMYXlvdXRSZWN0IGZpbHRlclJlcGFpbnRS
ZWN0ID0gZmlsdGVySW5mby5kaXJ0eVNvdXJjZVJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGZpbHRl
clJlcGFpbnRSZWN0ID0gcGFpbnRpbmdGaWx0ZXJzLT5kaXJ0eVNvdXJjZVJlY3QoKTsKICAgICBm
aWx0ZXJSZXBhaW50UmVjdC5tb3ZlKG9mZnNldEZyb21Sb290KTsKIAogICAgIGlmICghcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQpIHsKQEAgLTQyNDAsMzUgKzQyMTksMjggQEAgc3RkOjp1bmlx
dWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBSZW5kZXJMYXllcjo6c2V0dXBGaWx0
ZXJzKEdyYXBoaWNzQ28KICAgICAgICAgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQgPSB0cnVl
OwogICAgIH0KIAotICAgIGlmICghZmlsdGVyUGFpbnRlci5wcmVwYXJlRmlsdGVyRWZmZWN0KCp0
aGlzLCBlbmNsb3NpbmdJbnRSZWN0KHJvb3RSZWxhdGl2ZUJvdW5kcyksIGVuY2xvc2luZ0ludFJl
Y3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZW5jbG9zaW5nSW50UmVjdChmaWx0ZXJS
ZXBhaW50UmVjdCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIE5vdyB3ZSBr
bm93IGZvciBzdXJlIHRoYXQgdGhlIHNvdXJjZSBpbWFnZSB3aWxsIGJlIHVwZGF0ZWQsIHNvIHdl
IGNhbiByZXZlcnQgb3VyIHRyYWNraW5nIHJlcGFpbnQgcmVjdCBiYWNrIHRvIHplcm8uCi0gICAg
ZmlsdGVySW5mby5yZXNldERpcnR5U291cmNlUmVjdCgpOwotCi0gICAgaWYgKCFmaWx0ZXJQYWlu
dGVyLmJlZ2luRmlsdGVyRWZmZWN0KCkpCisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250
ZXh0ID0gcGFpbnRpbmdGaWx0ZXJzLT5iZWdpbkZpbHRlckVmZmVjdChkZXN0aW5hdGlvbkNvbnRl
eHQsIGVuY2xvc2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVj
dChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJl
cGFpbnRSZWN0KSk7CisgICAgaWYgKCFmaWx0ZXJDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCA9IGZpbHRlclBhaW50ZXIu
cmVwYWludFJlY3QoKTsKKyAgICBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QgPSBwYWludGlu
Z0ZpbHRlcnMtPnJlcGFpbnRSZWN0KCk7CiAKICAgICAvLyBJZiB0aGUgZmlsdGVyIG5lZWRzIHRo
ZSBmdWxsIHNvdXJjZSBpbWFnZSwgd2UgbmVlZCB0byBhdm9pZCB1c2luZyB0aGUgY2xpcCByZWN0
YW5nbGVzLgogICAgIC8vIE90aGVyd2lzZSwgaWYgZm9yIGV4YW1wbGUgdGhpcyBsYXllciBoYXMg
b3ZlcmZsb3c6aGlkZGVuLCBhIGRyb3Agc2hhZG93IHdpbGwgbm90IGNvbXB1dGUgY29ycmVjdGx5
LgogICAgIC8vIE5vdGUgdGhhdCB3ZSB3aWxsIHN0aWxsIGFwcGx5IHRoZSBjbGlwcGluZyBvbiB0
aGUgZmluYWwgcmVuZGVyaW5nIG9mIHRoZSBmaWx0ZXIuCi0gICAgcGFpbnRpbmdJbmZvLmNsaXBU
b0RpcnR5UmVjdCA9ICFmaWx0ZXJJbmZvLmZpbHRlcigpLT5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKTsKKyAgICBwYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ID0gIXBhaW50aW5nRmlsdGVy
cy0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7CiAKLSAgICBwYWludGluZ0luZm8ucmVxdWly
ZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA9IGZpbHRlckluZm8uZmlsdGVyKCktPmhh
c0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCk7CisgICAgcGFp
bnRpbmdJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMgPSBwYWludGlu
Z0ZpbHRlcnMtPmhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2lu
KCk7CiAKLSAgICByZXR1cm4gV1RGTW92ZShwYWludGVyLnNlY29uZCk7CisgICAgcmV0dXJuIGZp
bHRlckNvbnRleHQ7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlciogZmlsdGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0JiBvcmln
aW5hbENvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIGNvbnN0
IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykKK3ZvaWQgUmVuZGVyTGF5ZXI6OmFwcGx5
RmlsdGVycyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIHBhaW50aW5nSW5mbywgY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21l
bnRzKQogewotICAgIEFTU0VSVChmaWx0ZXJQYWludGVyLT5oYXNTdGFydGVkRmlsdGVyRWZmZWN0
KCkpOwotCiAgICAgLy8gRklYTUU6IEhhbmRsZSBtb3JlIHRoYW4gb25lIGZyYWdtZW50LgogICAg
IENsaXBSZWN0IGJhY2tncm91bmRSZWN0ID0gbGF5ZXJGcmFnbWVudHMuaXNFbXB0eSgpID8gQ2xp
cFJlY3QoKSA6IGxheWVyRnJhZ21lbnRzWzBdLmJhY2tncm91bmRSZWN0OwogICAgIGNsaXBUb1Jl
Y3Qob3JpZ2luYWxDb250ZXh0LCBwYWludGluZ0luZm8sIGJhY2tncm91bmRSZWN0KTsKLSAgICBm
aWx0ZXJQYWludGVyLT5hcHBseUZpbHRlckVmZmVjdChvcmlnaW5hbENvbnRleHQpOworICAgIG1f
ZmlsdGVycy0+YXBwbHlGaWx0ZXJFZmZlY3Qob3JpZ2luYWxDb250ZXh0KTsKICAgICByZXN0b3Jl
Q2xpcChvcmlnaW5hbENvbnRleHQsIHBhaW50aW5nSW5mbywgYmFja2dyb3VuZFJlY3QpOwogfQog
CkBAIC00MzE4LDcgKzQyOTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogCiAgICAgLy8g
QXBwbHkgY2xpcC1wYXRoIHRvIGNvbnRleHQuCiAgICAgTGF5b3V0U2l6ZSBjb2x1bW5Bd2FyZU9m
ZnNldEZyb21Sb290ID0gb2Zmc2V0RnJvbVJvb3Q7Ci0gICAgaWYgKHJlbmRlcmVyKCkuZW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3coKSAmJiAocmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGhhc0Zp
bHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50RmxhZ3MpKSkKKyAgICBpZiAocmVuZGVy
ZXIoKS5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpICYmIChyZW5kZXJlcigpLmhhc0NsaXBQYXRo
KCkgfHwgZmlsdGVyc0ZvclBhaW50aW5nKGNvbnRleHQsIHBhaW50RmxhZ3MpKSkKICAgICAgICAg
Y29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IHRvTGF5b3V0U2l6ZShjb252ZXJ0VG9MYXllckNv
b3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBMYXlvdXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1
bW5zKSk7CiAKICAgICBib29sIGhhc0NsaXBQYXRoID0gZmFsc2U7CkBAIC00MzM1LDkgKzQzMDcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogCiAgICAgeyAvLyBTY29wZSBmb3IgZmlsdGVy
LXJlbGF0ZWQgc3RhdGUgY2hhbmdlcy4KICAgICAgICAgTGF5ZXJQYWludGluZ0luZm8gbG9jYWxQ
YWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRl
ckVmZmVjdFJlbmRlcmVySGVscGVyPiBmaWx0ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKGNvbnRl
eHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21S
b290LCByb290UmVsYXRpdmVCb3VuZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLQot
ICAgICAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBmaWx0ZXJQYWludGVyID8g
ZmlsdGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4dCgpIDogbnVsbHB0cjsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gc2V0dXBGaWx0ZXJzKGNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLCBwYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290LCByb290UmVs
YXRpdmVCb3VuZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKICAgICAgICAgaWYgKGZp
bHRlckNvbnRleHQgJiYgaGF2ZVRyYW5zcGFyZW5jeSkgewogICAgICAgICAgICAgLy8gSWYgd2Ug
aGF2ZSBhIGZpbHRlciBhbmQgdHJhbnNwYXJlbmN5LCB3ZSBoYXZlIHRvIGVhZ2VybHkgc3RhcnQg
YSB0cmFuc3BhcmVuY3kgbGF5ZXIgaGVyZSwgcmF0aGVyIHRoYW4gcmlzayBhIGNoaWxkIGxheWVy
IGxhemlseSBzdGFydHMgb25lIHdpdGggdGhlIHdyb25nIGNvbnRleHQuCiAgICAgICAgICAgICBi
ZWdpblRyYW5zcGFyZW5jeUxheWVycyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRp
bmdJbmZvLnBhaW50RGlydHlSZWN0KTsKQEAgLTQ0MzEsOCArNDQwMSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IExheWVyUGFpbnRpCiAgICAgICAgICAgICAgICAgKGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRz
KSA/IElnbm9yZU92ZXJmbG93Q2xpcCA6IFJlc3BlY3RPdmVyZmxvd0NsaXAsIG9mZnNldEZyb21S
b290KTsKICAgICAgICAgICAgIHVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyhsYXllckZy
YWdtZW50cywgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MsIHNob3VsZFBhaW50Q29udGVu
dCwgb2Zmc2V0RnJvbVJvb3QpOwogCi0gICAgICAgICAgICBhcHBseUZpbHRlcnMoZmlsdGVyUGFp
bnRlci5nZXQoKSwgY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsYXllckZyYWdtZW50cyk7Ci0gICAg
ICAgICAgICBmaWx0ZXJQYWludGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGFwcGx5RmlsdGVy
cyhjb250ZXh0LCBwYWludGluZ0luZm8sIGxheWVyRnJhZ21lbnRzKTsKICAgICAgICAgfQogICAg
IH0KICAgICAKQEAgLTU5NjYsNyArNTkzNSw3IEBAIFJlbmRlckxheWVyQmFja2luZyogUmVuZGVy
TGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5
ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAotICAgICAgICB1cGRhdGVPclJlbW92ZUZpbHRl
ckVmZmVjdFJlbmRlcmVyKCk7CisgICAgICAgIHVwZGF0ZUZpbHRlclBhaW50aW5nU3RyYXRlZ3ko
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fYmFja2luZy5nZXQoKTsKIH0KQEAgLTU5NzgsNyArNTk0
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQmFja2luZyhib29sIGxheWVyQmVpbmdEZXN0
cm95ZWQpCiAgICAgbV9iYWNraW5nID0gbnVsbHB0cjsKIAogICAgIGlmICghbGF5ZXJCZWluZ0Rl
c3Ryb3llZCkKLSAgICAgICAgdXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOwor
ICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CiB9CiAKIGJvb2wgUmVuZGVy
TGF5ZXI6Omhhc0NvbXBvc2l0ZWRNYXNrKCkgY29uc3QKQEAgLTY2ODgsMTMgKzY2NTcsMTMgQEAg
dm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAg
IHVwZGF0ZUJsZW5kTW9kZSgpOwogI2VuZGlmCi0gICAgdXBkYXRlT3JSZW1vdmVGaWx0ZXJDbGll
bnRzKCk7CisgICAgdXBkYXRlRmlsdGVyc0FmdGVyU3R5bGVDaGFuZ2UoKTsKIAogICAgIHVwZGF0
ZU5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogCiAgICAgY29tcG9zaXRvcigpLmxheWVyU3R5
bGVDaGFuZ2VkKGRpZmYsICp0aGlzLCBvbGRTdHlsZSk7CiAKLSAgICB1cGRhdGVPclJlbW92ZUZp
bHRlckVmZmVjdFJlbmRlcmVyKCk7CisgICAgdXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgp
OwogCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChk
aWZmID09IFN0eWxlRGlmZmVyZW5jZTo6UmVjb21wb3NpdGVMYXllciB8fCBkaWZmID49IFN0eWxl
RGlmZmVyZW5jZTo6TGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25seSkKQEAgLTY4NjAsMzAgKzY4
MjksNDUgQEAgUmVuZGVyU3R5bGUgUmVuZGVyTGF5ZXI6OmNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgp
CiAgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPclJl
bW92ZUZpbHRlckNsaWVudHMoKQordm9pZCBSZW5kZXJMYXllcjo6ZW5zdXJlTGF5ZXJGaWx0ZXJz
KCkKK3sKKyAgICBpZiAobV9maWx0ZXJzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9m
aWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKK30K
Kwordm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJMYXllckZpbHRlcnMoKQoreworICAgIG1fZmlsdGVy
cyA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUZpbHRlcnNBZnRlclN0
eWxlQ2hhbmdlKCkKIHsKICAgICBpZiAoIWhhc0ZpbHRlcigpKSB7Ci0gICAgICAgIEZpbHRlcklu
Zm86OnJlbW92ZSgqdGhpcyk7CisgICAgICAgIGNsZWFyTGF5ZXJGaWx0ZXJzKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisKICAgICAvLyBBZGQgdGhlIGZpbHRlciBhcyBhIGNsaWVudCB0byB0
aGlzIHJlbmRlcmVyLCB1bmxlc3Mgd2UgYXJlIGEgUmVuZGVyTGF5ZXIgYWNjb21tb2RhdGluZwog
ICAgIC8vIGFuIFNWRy4gSW4gdGhhdCBjYXNlIGl0IHRha2VzIGNhcmUgb2YgaXRzIG93biByZXNv
dXJjZSBtYW5hZ2VtZW50IGZvciBmaWx0ZXJzLgotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCku
ZmlsdGVyKCkuaGFzUmVmZXJlbmNlRmlsdGVyKCkgJiYgIXJlbmRlcmVyKCkuaXNTVkdSb290KCkp
Ci0gICAgICAgIEZpbHRlckluZm86OmdldCgqdGhpcykudXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xp
ZW50cyhyZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyKCkpOwotICAgIGVsc2UgaWYgKEZpbHRlcklu
Zm8qIGZpbHRlckluZm8gPSBGaWx0ZXJJbmZvOjpnZXRJZkV4aXN0cygqdGhpcykpCi0gICAgICAg
IGZpbHRlckluZm8tPnJlbW92ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMoKTsKKyAgICBpZiAocmVu
ZGVyZXIoKS5zdHlsZSgpLmZpbHRlcigpLmhhc1JlZmVyZW5jZUZpbHRlcigpICYmICFyZW5kZXJl
cigpLmlzU1ZHUm9vdCgpKSB7CisgICAgICAgIGVuc3VyZUxheWVyRmlsdGVycygpOworICAgICAg
ICBtX2ZpbHRlcnMtPnVwZGF0ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMocmVuZGVyZXIoKS5zdHls
ZSgpLmZpbHRlcigpKTsKKyAgICB9IGVsc2UgaWYgKG1fZmlsdGVycykKKyAgICAgICAgbV9maWx0
ZXJzLT5yZW1vdmVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0UmVuZGVyZXIoKQordm9pZCBSZW5kZXJMYXll
cjo6dXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgpCiB7Ci0gICAgLy8gRmlsdGVyRWZmZWN0
UmVuZGVyZXIgaXMgb25seSB1c2VkIHRvIHJlbmRlciB0aGUgZmlsdGVycyBpbiBzb2Z0d2FyZSBt
b2RlLAotICAgIC8vIHNvIHdlIGFsd2F5cyBuZWVkIHRvIHJ1biB1cGRhdGVPclJlbW92ZUZpbHRl
ckVmZmVjdFJlbmRlcmVyIGFmdGVyIHRoZSBjb21wb3NpdGVkCisgICAgLy8gUmVuZGVyTGF5ZXJG
aWx0ZXJzIGlzIG9ubHkgdXNlZCB0byByZW5kZXIgdGhlIGZpbHRlcnMgaW4gc29mdHdhcmUgbW9k
ZSwKKyAgICAvLyBzbyB3ZSBhbHdheXMgbmVlZCB0byBydW4gdXBkYXRlRmlsdGVyUGFpbnRpbmdT
dHJhdGVneSgpIGFmdGVyIHRoZSBjb21wb3NpdGVkCiAgICAgLy8gbW9kZSBtaWdodCBoYXZlIGNo
YW5nZWQgZm9yIHRoaXMgbGF5ZXIuCiAgICAgaWYgKCFwYWludHNXaXRoRmlsdGVycygpKSB7CiAg
ICAgICAgIC8vIERvbid0IGRlbGV0ZSB0aGUgd2hvbGUgZmlsdGVyIGluZm8gaGVyZSwgYmVjYXVz
ZSB3ZSBtaWdodCB1c2UgaXQKICAgICAgICAgLy8gZm9yIGxvYWRpbmcgU1ZHIHJlZmVyZW5jZSBm
aWx0ZXIgZmlsZXMuCi0gICAgICAgIGlmIChGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gRmlsdGVy
SW5mbzo6Z2V0SWZFeGlzdHMoKnRoaXMpKQotICAgICAgICAgICAgZmlsdGVySW5mby0+c2V0Rmls
dGVyKG51bGxwdHIpOworICAgICAgICBpZiAobV9maWx0ZXJzKQorICAgICAgICAgICAgbV9maWx0
ZXJzLT5zZXRGaWx0ZXIobnVsbHB0cik7CiAKICAgICAgICAgLy8gRWFybHktcmV0dXJuIG9ubHkg
aWYgd2UgKmRvbid0KiBoYXZlIHJlZmVyZW5jZSBmaWx0ZXJzLgogICAgICAgICAvLyBGb3IgcmVm
ZXJlbmNlIGZpbHRlcnMsIHdlIHN0aWxsIHdhbnQgdGhlIEZpbHRlckVmZmVjdCBncmFwaCBidWls
dApAQCAtNjg5MiwyNCArNjg3Niw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3Zl
RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBGaWx0ZXJJbmZvJiBmaWx0ZXJJbmZvID0gRmlsdGVySW5mbzo6Z2V0KCp0aGlzKTsKLSAg
ICBpZiAoIWZpbHRlckluZm8uZmlsdGVyKCkpIHsKLSAgICAgICAgYXV0byBjc3NGaWx0ZXIgPSBD
U1NGaWx0ZXI6OmNyZWF0ZSgpOwotICAgICAgICBjc3NGaWx0ZXItPnNldEZpbHRlclNjYWxlKHBh
Z2UoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgY3NzRmlsdGVyLT5zZXRSZW5kZXJp
bmdNb2RlKHJlbmRlcmVyKCkuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkg
PyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwotICAgICAgICBmaWx0ZXJJbmZvLnNldEZp
bHRlcihXVEZNb3ZlKGNzc0ZpbHRlcikpOwotICAgICAgICAKLSAgICAgICAgLy8gV2UgY2FuIG9w
dGltaXplIGF3YXkgY29kZSBwYXRocyBpbiBvdGhlciBwbGFjZXMgaWYgd2Uga25vdyB0aGF0IHRo
ZXJlIGFyZSBubyBzb2Z0d2FyZSBmaWx0ZXJzLgotICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5z
ZXRIYXNTb2Z0d2FyZUZpbHRlcnModHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChmaWx0ZXJJbmZvLmZp
bHRlcigpLT5maWx0ZXJTY2FsZSgpICE9IHBhZ2UoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSB7Ci0g
ICAgICAgIGZpbHRlckluZm8uZmlsdGVyKCktPnNldEZpbHRlclNjYWxlKHBhZ2UoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLSAgICAgICAgZmlsdGVySW5mby5maWx0ZXIoKS0+Y2xlYXJJbnRlcm1l
ZGlhdGVSZXN1bHRzKCk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIGZpbHRlciBmYWlscyB0byBi
dWlsZCwgcmVtb3ZlIGl0IGZyb20gdGhlIGxheWVyLiBJdCB3aWxsIHN0aWxsIGF0dGVtcHQgdG8K
LSAgICAvLyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vzc2luZyAoZS5nLiBjb21wb3NpdGluZyks
IGJ1dCBuZXZlciBhcHBseSBhbnl0aGluZy4KLSAgICBpZiAoIWZpbHRlckluZm8uZmlsdGVyKCkt
PmJ1aWxkKHJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0ZXIoKSwgRmlsdGVyQ29u
c3VtZXI6OkZpbHRlclByb3BlcnR5KSkKLSAgICAgICAgZmlsdGVySW5mby5zZXRGaWx0ZXIobnVs
bHB0cik7CisgICAgZW5zdXJlTGF5ZXJGaWx0ZXJzKCk7CisgICAgbV9maWx0ZXJzLT5idWlsZEZp
bHRlcihyZW5kZXJlcigpLCBwYWdlKCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcmVuZGVyZXIoKS5z
ZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5h
Y2NlbGVyYXRlZCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVwYWludCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDgyMGFiNDVmODhiZDI1
NjQ2NmQ2YzRhZjJlYjYxMjQ0OGU5ODllMmIuLmViNjgzY2NjZTJlODVhMWNlM2JkMjc2ZGQzYmEx
OGVmZDI2OTYyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02
Myw4ICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0ZpbHRlcjsKIGNsYXNz
IENsaXBSZWN0czsKIGNsYXNzIENsaXBSZWN0c0NhY2hlOwotY2xhc3MgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJIZWxwZXI7Ci1jbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgSGl0VGVzdFJlcXVl
c3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
OwpAQCAtNzIsNiArNzAsNyBAQCBjbGFzcyBSZW5kZXJGcmFnbWVudGVkRmxvdzsKIGNsYXNzIFJl
bmRlckdlb21ldHJ5TWFwOwogY2xhc3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogY2xhc3MgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOworY2xhc3MgUmVuZGVyTGF5ZXJGaWx0ZXJzOwogY2xhc3MgUmVuZGVy
TWFycXVlZTsKIGNsYXNzIFJlbmRlclJlcGxpY2E7CiBjbGFzcyBSZW5kZXJTY3JvbGxiYXJQYXJ0
OwpAQCAtMTI1LDYgKzEyNCw3IEBAIGNsYXNzIFJlbmRlckxheWVyIGZpbmFsIDogcHVibGljIFNj
cm9sbGFibGVBcmVhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGljYTsKKyAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5
ZXJGaWx0ZXJzOwogCiAgICAgZXhwbGljaXQgUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCYpOwogICAgIHZpcnR1YWwgflJlbmRlckxheWVyKCk7CkBAIC02NDUsNyArNjQ1LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzTm90SXNvbGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzU3RhdHVz
RGlydHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGlzQ29t
cG9zaXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZyAhPSAwOyB9CisgICAgYm9vbCBpc0Nv
bXBvc2l0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmcgIT0gbnVsbHB0cjsgfQogICAgIGJv
b2wgaGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb21wb3Np
dGluZ0Rlc2NlbmRhbnQ7IH0KICAgICBib29sIGhhc0NvbXBvc2l0ZWRNYXNrKCkgY29uc3Q7CiAg
ICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5n
LmdldCgpOyB9CkBAIC02NzksNyArNjc5LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBwYWludHNX
aXRoRmlsdGVycygpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNGdWxsTGF5ZXJJbWFnZUZvckZp
bHRlcnMoKSBjb25zdDsKLSAgICBDU1NGaWx0ZXIqIGZpbHRlcigpIGNvbnN0OwogCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgIGJvb2wgbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQ7IH0KQEAgLTgyMywxMSArODIyLDEy
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3Vu
ZHNDb21wdXRlZCk7CiAKLSAgICBjbGFzcyBGaWx0ZXJJbmZvOwotICAgIHN0ZDo6cGFpcjxGaWx0
ZXJJbmZvKiwgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPj4gZmls
dGVyUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+KSBj
b25zdDsKLSAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYs
IE9wdGlvblNldDxQYWludExheWVyRmxhZz4pIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYs
IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiwgY29uc3QgTGF5
b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywg
Ym9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwotICAgIHZvaWQgYXBwbHlGaWx0ZXJz
KEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKiwgR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENv
bnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5ZXJGcmFnbWVudHMmKTsK
KyAgICB2b2lkIGVuc3VyZUxheWVyRmlsdGVycygpOworICAgIHZvaWQgY2xlYXJMYXllckZpbHRl
cnMoKTsKKworICAgIFJlbmRlckxheWVyRmlsdGVycyogZmlsdGVyc0ZvclBhaW50aW5nKEdyYXBo
aWNzQ29udGV4dCYsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4pIGNvbnN0OworICAgIEdyYXBo
aWNzQ29udGV4dCogc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4sIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3Vu
ZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICB2b2lkIGFwcGx5Rmls
dGVycyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mLCBjb25zdCBMYXllckZyYWdtZW50cyYpOwogCiAgICAgdm9pZCBwYWludExheWVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50
TGF5ZXJGbGFnPik7CiAgICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50
TGF5ZXJGbGFnPik7CkBAIC05NTUsOCArOTU1LDggQEAgcHJpdmF0ZToKICAgICBib29sIHBhaW50
aW5nSW5zaWRlUmVmbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRpbmdJbnNpZGVSZWZs
ZWN0aW9uOyB9CiAgICAgdm9pZCBzZXRQYWludGluZ0luc2lkZVJlZmxlY3Rpb24oYm9vbCBiKSB7
IG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gYjsgfQogCi0gICAgdm9pZCB1cGRhdGVPclJl
bW92ZUZpbHRlckNsaWVudHMoKTsKLSAgICB2b2lkIHVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0
UmVuZGVyZXIoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbHRlcnNBZnRlclN0eWxlQ2hhbmdlKCk7Cisg
ICAgdm9pZCB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CiAKICNpZiBFTkFCTEUoQ1NT
X0NPTVBPU0lUSU5HKQogICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JDaGFpbkhhc0JsZW5kaW5nRGVz
Y2VuZGFudHMoKTsKQEAgLTEwOTIsOCArMTA5Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xh
eWVyTGlzdE11dGF0aW9uQWxsb3dlZCA6IDE7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9oYXNGaWx0
ZXJJbmZvIDogMTsKLQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgdW5zaWduZWQg
bV9ibGVuZE1vZGUgOiA1OwogICAgIGJvb2wgbV9oYXNOb3RJc29sYXRlZENvbXBvc2l0ZWRCbGVu
ZGluZ0Rlc2NlbmRhbnRzIDogMTsKQEAgLTExNjMsNiArMTE2MSw3IEBAIHByaXZhdGU6CiAKICAg
ICBJbnRSZWN0IG1fYmxvY2tTZWxlY3Rpb25HYXBzQm91bmRzOwogCisgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckxheWVyRmlsdGVycz4gbV9maWx0ZXJzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJMYXllckJhY2tpbmc+IG1fYmFja2luZzsKICAgICAKICAgICBQYWludEZyZXF1ZW5jeVRy
YWNrZXIgbV9wYWludEZyZXF1ZW5jeVRyYWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiYTE2NTgwZmNlNjM3OTA2M2IwZTQxYmVhMTM5OWFjMGRlZGFkYzhlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgiCi0KLSNpbmNsdWRlICJDYWNoZWRT
VkdEb2N1bWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgiCi0j
aW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyTGF5ZXI6OkZpbHRlckluZm8+PiYgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86Om1h
cCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5
ZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVySW5mbz4+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsK
LX0KLQotUmVuZGVyTGF5ZXI6OkZpbHRlckluZm8qIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjpn
ZXRJZkV4aXN0cyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCi17Ci0gICAgQVNTRVJUKGxheWVy
Lm1faGFzRmlsdGVySW5mbyA9PSBtYXAoKS5jb250YWlucygmbGF5ZXIpKTsKLQotICAgIHJldHVy
biBsYXllci5tX2hhc0ZpbHRlckluZm8gPyBtYXAoKS5nZXQoJmxheWVyKSA6IG51bGxwdHI7Ci19
Ci0KLVJlbmRlckxheWVyOjpGaWx0ZXJJbmZvJiBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6Z2V0
KFJlbmRlckxheWVyJiBsYXllcikKLXsKLSAgICBBU1NFUlQobGF5ZXIubV9oYXNGaWx0ZXJJbmZv
ID09IG1hcCgpLmNvbnRhaW5zKCZsYXllcikpOwotCi0gICAgYXV0byYgaW5mbyA9IG1hcCgpLmFk
ZCgmbGF5ZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIWluZm8pIHsKLSAg
ICAgICAgaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVySW5mbz4obGF5ZXIpOwotICAgICAg
ICBsYXllci5tX2hhc0ZpbHRlckluZm8gPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gKmluZm87
Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86OnJlbW92ZShSZW5kZXJMYXllciYg
bGF5ZXIpCi17Ci0gICAgQVNTRVJUKGxheWVyLm1faGFzRmlsdGVySW5mbyA9PSBtYXAoKS5jb250
YWlucygmbGF5ZXIpKTsKLSAgICBpZiAoIWxheWVyLm1faGFzRmlsdGVySW5mbykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbWFwKCkucmVtb3ZlKCZsYXllcik7Ci0gICAgbGF5ZXIubV9oYXNGaWx0
ZXJJbmZvID0gZmFsc2U7Ci19Ci0KLVJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjpGaWx0ZXJJbmZv
KFJlbmRlckxheWVyJiBsYXllcikKLSAgICA6IG1fbGF5ZXIobGF5ZXIpCi17Ci19Ci0KLVJlbmRl
ckxheWVyOjpGaWx0ZXJJbmZvOjp+RmlsdGVySW5mbygpCi17Ci0gICAgcmVtb3ZlUmVmZXJlbmNl
RmlsdGVyQ2xpZW50cygpOwotfQotCi12b2lkIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjpzZXRG
aWx0ZXIoUmVmUHRyPENTU0ZpbHRlcj4mJiBmaWx0ZXIpCi17Ci0gICAgbV9maWx0ZXIgPSBmaWx0
ZXI7Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRlckluZm86Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJikKLXsKLSAgICBtX2xheWVyLmZpbHRlck5lZWRzUmVwYWludCgpOwotfQot
Ci12b2lkIFJlbmRlckxheWVyOjpGaWx0ZXJJbmZvOjp1cGRhdGVSZWZlcmVuY2VGaWx0ZXJDbGll
bnRzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMpCi17Ci0gICAgcmVtb3ZlUmVm
ZXJlbmNlRmlsdGVyQ2xpZW50cygpOwotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0
aW9ucy5vcGVyYXRpb25zKCkpIHsKLSAgICAgICAgaWYgKCFpczxSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb24+KCpvcGVyYXRpb24pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8m
IHJlZmVyZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4o
Km9wZXJhdGlvbik7Ci0gICAgICAgIGF1dG8qIGRvY3VtZW50UmVmZXJlbmNlID0gcmVmZXJlbmNl
T3BlcmF0aW9uLmNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7Ci0gICAgICAgIGlmIChhdXRv
KiBjYWNoZWRTVkdEb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlID8gZG9jdW1lbnRSZWZlcmVu
Y2UtPmRvY3VtZW50KCkgOiBudWxscHRyKSB7Ci0gICAgICAgICAgICAvLyBSZWZlcmVuY2UgaXMg
ZXh0ZXJuYWw7IHdhaXQgZm9yIG5vdGlmeUZpbmlzaGVkKCkuCi0gICAgICAgICAgICBjYWNoZWRT
VkdEb2N1bWVudC0+YWRkQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdS
ZWZlcmVuY2VzLmFwcGVuZChjYWNoZWRTVkdEb2N1bWVudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBSZWZlcmVuY2UgaXMgaW50ZXJuYWw7IGFkZCBsYXllciBhcyBhIGNsaWVu
dCBzbyB3ZSBjYW4gdHJpZ2dlciBmaWx0ZXIgcmVwYWludCBvbiBTVkcgYXR0cmlidXRlIGNoYW5n
ZS4KLSAgICAgICAgICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSBtX2xheWVyLnJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2VPcGVyYXRpb24uZnJhZ21lbnQoKSk7
Ci0gICAgICAgICAgICBpZiAoIWZpbHRlckVsZW1lbnQpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBhdXRvKiByZW5kZXJlciA9IGZpbHRlckVsZW1lbnQtPnJlbmRlcmVy
KCk7Ci0gICAgICAgICAgICBpZiAoIWlzPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPihyZW5kZXJl
cikpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBkb3duY2FzdDxSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcj4oKnJlbmRlcmVyKS5hZGRDbGllbnRSZW5kZXJMYXllcigmbV9s
YXllcik7Ci0gICAgICAgICAgICBtX2ludGVybmFsU1ZHUmVmZXJlbmNlcy5hcHBlbmQoZmlsdGVy
RWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXI6OkZpbHRl
ckluZm86OnJlbW92ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMoKQotewotICAgIGZvciAoYXV0byYg
cmVzb3VyY2VIYW5kbGUgOiBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlcykKLSAgICAgICAgcmVzb3Vy
Y2VIYW5kbGUtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0KLSAgICBtX2V4dGVybmFsU1ZHUmVmZXJl
bmNlcy5jbGVhcigpOwotCi0gICAgZm9yIChhdXRvJiBmaWx0ZXJFbGVtZW50IDogbV9pbnRlcm5h
bFNWR1JlZmVyZW5jZXMpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZmlsdGVyRWxl
bWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyPigqcmVuZGVyZXIpLnJlbW92ZUNsaWVudFJlbmRlckxheWVyKCZtX2xheWVyKTsK
LSAgICB9Ci0gICAgbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXMuY2xlYXIoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyRmlsdGVySW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzgyYzQxNzM4
MjEwMjU0MDVjZmY3Y2EzOWUwMDJhODM1MTI1N2U0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlckluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCIKLSNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENhY2hlZFNW
R0RvY3VtZW50OwotY2xhc3MgRWxlbWVudDsKLQotY2xhc3MgUmVuZGVyTGF5ZXI6OkZpbHRlcklu
Zm8gZmluYWwgOiBwcml2YXRlIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKLSNpZiAhQ09NUElM
RVIoTVNWQykKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRpZgotcHVibGljOgot
ICAgIHN0YXRpYyBGaWx0ZXJJbmZvJiBnZXQoUmVuZGVyTGF5ZXImKTsKLSAgICBzdGF0aWMgRmls
dGVySW5mbyogZ2V0SWZFeGlzdHMoY29uc3QgUmVuZGVyTGF5ZXImKTsKLSAgICBzdGF0aWMgdm9p
ZCByZW1vdmUoUmVuZGVyTGF5ZXImKTsKLQotICAgIGV4cGxpY2l0IEZpbHRlckluZm8oUmVuZGVy
TGF5ZXImKTsKLSAgICB2aXJ0dWFsIH5GaWx0ZXJJbmZvKCk7Ci0KLSAgICBjb25zdCBMYXlvdXRS
ZWN0JiBkaXJ0eVNvdXJjZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2RpcnR5U291cmNlUmVjdDsg
fQotICAgIHZvaWQgZXhwYW5kRGlydHlTb3VyY2VSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qp
IHsgbV9kaXJ0eVNvdXJjZVJlY3QudW5pdGUocmVjdCk7IH0KLSAgICB2b2lkIHJlc2V0RGlydHlT
b3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQotCi0gICAg
Q1NTRmlsdGVyKiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlci5nZXQoKTsgfQotICAg
IHZvaWQgc2V0RmlsdGVyKFJlZlB0cjxDU1NGaWx0ZXI+JiYpOwotCi0gICAgdm9pZCB1cGRhdGVS
ZWZlcmVuY2VGaWx0ZXJDbGllbnRzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKLSAgICB2b2lk
IHJlbW92ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7Ci0KLSAgICBzdGF0aWMgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJJbmZvPj4mIG1hcCgp
OwotCi0gICAgUmVuZGVyTGF5ZXImIG1fbGF5ZXI7Ci0KLSAgICBSZWZQdHI8Q1NTRmlsdGVyPiBt
X2ZpbHRlcjsKLSAgICBMYXlvdXRSZWN0IG1fZGlydHlTb3VyY2VSZWN0OwotCi0gICAgVmVjdG9y
PFJlZlB0cjxFbGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXM7Ci0gICAgVmVjdG9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gbV9leHRlcm5hbFNWR1JlZmVy
ZW5jZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZDk5YzlhOGFl
ZGM5M2IzOGYxZmY0MTdmZTQ0NGVhYWJmYmFhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAtMCwwICsxLDE5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW5kZXJMYXllckZpbHRlcnMuaCIKKworI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50
LmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbmRlckxheWVyRmlsdGVyczo6UmVuZGVyTGF5
ZXJGaWx0ZXJzKFJlbmRlckxheWVyJiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cisg
ICAgV1RGTG9nQWx3YXlzKCJSZW5kZXJMYXllckZpbHRlcnMgJXAgY3RvciIsIHRoaXMpOworfQor
CitSZW5kZXJMYXllckZpbHRlcnM6On5SZW5kZXJMYXllckZpbHRlcnMoKQoreworICAgIFdURkxv
Z0Fsd2F5cygiUmVuZGVyTGF5ZXJGaWx0ZXJzICVwIGR0b3IiLCB0aGlzKTsKKyAgICByZW1vdmVS
ZWZlcmVuY2VGaWx0ZXJDbGllbnRzKCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpz
ZXRGaWx0ZXIoUmVmUHRyPENTU0ZpbHRlcj4mJiBmaWx0ZXIpCit7CisgICAgbV9maWx0ZXIgPSBX
VEZNb3ZlKGZpbHRlcik7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpoYXNGaWx0ZXJU
aGF0TW92ZXNQaXhlbHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpbHRlciAmJiBtX2ZpbHRl
ci0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXJGaWx0
ZXJzOjpoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZmlsdGVyICYmIG1fZmlsdGVyLT5oYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpOworfQorCit2b2lkIFJlbmRlckxheWVy
RmlsdGVyczo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQoreworICAgIG1fbGF5ZXIu
ZmlsdGVyTmVlZHNSZXBhaW50KCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjp1cGRh
dGVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlv
bnMpCit7CisgICAgcmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpOworCisgICAgZm9yIChh
dXRvJiBvcGVyYXRpb24gOiBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKSkgeworICAgICAgICBpZiAo
IWlzPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbikpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pOworICAgICAgICBhdXRvKiBkb2N1
bWVudFJlZmVyZW5jZSA9IHJlZmVyZW5jZU9wZXJhdGlvbi5jYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZSgpOworICAgICAgICBpZiAoYXV0byogY2FjaGVkU1ZHRG9jdW1lbnQgPSBkb2N1bWVudFJl
ZmVyZW5jZSA/IGRvY3VtZW50UmVmZXJlbmNlLT5kb2N1bWVudCgpIDogbnVsbHB0cikgeworICAg
ICAgICAgICAgLy8gUmVmZXJlbmNlIGlzIGV4dGVybmFsOyB3YWl0IGZvciBub3RpZnlGaW5pc2hl
ZCgpLgorICAgICAgICAgICAgY2FjaGVkU1ZHRG9jdW1lbnQtPmFkZENsaWVudCgqdGhpcyk7Cisg
ICAgICAgICAgICBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlcy5hcHBlbmQoY2FjaGVkU1ZHRG9jdW1l
bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUmVmZXJlbmNlIGlzIGludGVy
bmFsOyBhZGQgbGF5ZXIgYXMgYSBjbGllbnQgc28gd2UgY2FuIHRyaWdnZXIgZmlsdGVyIHJlcGFp
bnQgb24gU1ZHIGF0dHJpYnV0ZSBjaGFuZ2UuCisgICAgICAgICAgICBhdXRvKiBmaWx0ZXJFbGVt
ZW50ID0gbV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQocmVmZXJl
bmNlT3BlcmF0aW9uLmZyYWdtZW50KCkpOworICAgICAgICAgICAgaWYgKCFmaWx0ZXJFbGVtZW50
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byogcmVuZGVyZXIg
PSBmaWx0ZXJFbGVtZW50LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcj4ocmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI+KCpyZW5kZXJlciku
YWRkQ2xpZW50UmVuZGVyTGF5ZXIoJm1fbGF5ZXIpOworICAgICAgICAgICAgbV9pbnRlcm5hbFNW
R1JlZmVyZW5jZXMuYXBwZW5kKGZpbHRlckVsZW1lbnQpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygp
Cit7CisgICAgZm9yIChhdXRvJiByZXNvdXJjZUhhbmRsZSA6IG1fZXh0ZXJuYWxTVkdSZWZlcmVu
Y2VzKQorICAgICAgICByZXNvdXJjZUhhbmRsZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKworICAg
IG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIGZpbHRl
ckVsZW1lbnQgOiBtX2ludGVybmFsU1ZHUmVmZXJlbmNlcykgeworICAgICAgICBpZiAoYXV0byog
cmVuZGVyZXIgPSBmaWx0ZXJFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI+KCpyZW5kZXJlcikucmVtb3ZlQ2xpZW50UmVu
ZGVyTGF5ZXIoJm1fbGF5ZXIpOworICAgIH0KKyAgICBtX2ludGVybmFsU1ZHUmVmZXJlbmNlcy5j
bGVhcigpOworfQorCit2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGZsb2F0IHNjYWxlRmFjdG9yLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUpCit7CisgICAgaWYgKCFtX2ZpbHRlcikgeworICAgICAgICBtX2ZpbHRlciA9IENT
U0ZpbHRlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJTY2FsZShzY2Fs
ZUZhY3Rvcik7CisgICAgICAgIG1fZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01v
ZGUpOworICAgIH0gZWxzZSBpZiAobV9maWx0ZXItPmZpbHRlclNjYWxlKCkgIT0gc2NhbGVGYWN0
b3IpIHsKKyAgICAgICAgbV9maWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgbV9maWx0ZXItPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOworICAgIH0KKworICAg
IC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXll
ci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRvCisgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHBy
b2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCisg
ICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4g
aWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgorICAgIGlmICghbV9maWx0ZXItPmJ1
aWxkKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6
RmlsdGVyUHJvcGVydHkpKQorICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7Cit9CisKK0dyYXBo
aWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChHcmFwaGlj
c0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXll
clJlcGFpbnRSZWN0KQoreworICAgIGlmICghbV9maWx0ZXIpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOworICAgIGF1dG8gZmlsdGVyU291
cmNlUmVjdCA9IGZpbHRlci5jb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGZpbHRl
ckJveFJlY3QsIGRpcnR5UmVjdCk7CisgICAgaWYgKGZpbHRlclNvdXJjZVJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGJvb2wgaGFzVXBkYXRlZEJhY2tpbmdT
dG9yZSA9IGZpbHRlci51cGRhdGVCYWNraW5nU3RvcmVSZWN0KGZpbHRlclNvdXJjZVJlY3QpOwor
ICAgIGlmICghZmlsdGVyLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKQorICAgICAgICBtX3Jl
cGFpbnRSZWN0ID0gZGlydHlSZWN0OworICAgIGVsc2UgeworICAgICAgICBpZiAoaGFzVXBkYXRl
ZEJhY2tpbmdTdG9yZSkKKyAgICAgICAgICAgIG1fcmVwYWludFJlY3QgPSBmaWx0ZXJTb3VyY2VS
ZWN0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fcmVwYWludFJlY3QgPSBkaXJ0eVJl
Y3Q7CisgICAgICAgICAgICBtX3JlcGFpbnRSZWN0LnVuaXRlKGxheWVyUmVwYWludFJlY3QpOwor
ICAgICAgICAgICAgbV9yZXBhaW50UmVjdC5pbnRlcnNlY3QoZmlsdGVyU291cmNlUmVjdCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbV9wYWludE9mZnNldCA9IGZpbHRlclNvdXJjZVJlY3QubG9j
YXRpb24oKTsKKyAgICByZXNldERpcnR5U291cmNlUmVjdCgpOworCisgICAgZmlsdGVyLmFsbG9j
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBhdXRvKiBz
b3VyY2VHcmFwaGljc0NvbnRleHQgPSBmaWx0ZXIuaW5wdXRDb250ZXh0KCk7CisgICAgaWYgKCFz
b3VyY2VHcmFwaGljc0NvbnRleHQgfHwgZmlsdGVyLmZpbHRlclJlZ2lvbigpLmlzRW1wdHkoKSB8
fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZmlsdGVyLmZpbHRlclJlZ2lvbigpLnNp
emUoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gVHJhbnNsYXRlIHRoZSBj
b250ZXh0IHNvIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllciBpcyBjYXB0dXJlZCBpbiB0
aGUgb2Zmc2NyZWVuIG1lbW9yeSBidWZmZXIuCisgICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7CisgICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLW1fcGFpbnRPZmZz
ZXQpOworICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KG1fcmVwYWludFJlY3Qp
OworICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+Y2xpcChtX3JlcGFpbnRSZWN0KTsKKworICAg
IHJldHVybiBzb3VyY2VHcmFwaGljc0NvbnRleHQ7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0
ZXJzOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCkKK3sKKyAgICBBU1NFUlQobV9maWx0ZXItPmlucHV0Q29udGV4dCgpKTsKKworICAgIExPR19X
SVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIlxuUmVuZGVyTGF5ZXJGaWx0ZXJzICIgPDwg
dGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZmZWN0Iik7CisKKyAgICBhdXRvJiBmaWx0ZXIgPSAqbV9m
aWx0ZXI7CisgICAgZmlsdGVyLmlucHV0Q29udGV4dCgpLT5yZXN0b3JlKCk7CisKKyAgICBmaWx0
ZXIuYXBwbHkoKTsKKworICAgIC8vIEdldCB0aGUgZmlsdGVyZWQgb3V0cHV0IGFuZCBkcmF3IGl0
IGluIHBsYWNlLgorICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIub3V0cHV0UmVjdCgp
OworICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgp
KTsKKworICAgIGlmIChhdXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXIub3V0cHV0KCkpCisgICAg
ICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwgc25h
cFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworCisgICAgZmlsdGVyLmNsZWFySW50ZXJtZWRpYXRl
UmVzdWx0cygpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiUmVu
ZGVyTGF5ZXJGaWx0ZXJzICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZmZWN0IGRvbmVcbiIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM0NGNiZGEwMWQwZGFhOTU2Njcx
N2UxZDVhNmNkYmZkYzBlOTk1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUhhbmRsZS5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRT
VkdEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOworCitj
bGFzcyBSZW5kZXJMYXllckZpbHRlcnMgZmluYWwgOiBwcml2YXRlIENhY2hlZFNWR0RvY3VtZW50
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBSZW5kZXJMYXllckZpbHRlcnMoUmVuZGVyTGF5ZXImKTsKKyAgICB2aXJ0dWFsIH5SZW5k
ZXJMYXllckZpbHRlcnMoKTsKKworICAgIGNvbnN0IExheW91dFJlY3QmIGRpcnR5U291cmNlUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlydHlTb3VyY2VSZWN0OyB9CisgICAgdm9pZCBleHBhbmRE
aXJ0eVNvdXJjZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgeyBtX2RpcnR5U291cmNlUmVj
dC51bml0ZShyZWN0KTsgfQorCisgICAgQ1NTRmlsdGVyKiBmaWx0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2ZpbHRlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyKFJlZlB0cjxDU1NGaWx0ZXI+
JiYpOworICAgIAorICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigp
IGNvbnN0OworCisgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIHJlbW92ZVJlZmVyZW5jZUZpbHRlckNsaWVudHMo
KTsKKworICAgIHZvaWQgYnVpbGRGaWx0ZXIoUmVuZGVyRWxlbWVudCYsIGZsb2F0IHNjYWxlRmFj
dG9yLCBSZW5kZXJpbmdNb2RlKTsKKworICAgIC8vIFBlciByZW5kZXIKKyAgICBMYXlvdXRSZWN0
IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsgfQorCisgICAgR3Jh
cGhpY3NDb250ZXh0KiBiZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKKyAg
ICB2b2lkIGFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JikgZmluYWw7CisgICAgdm9pZCByZXNldERpcnR5U291cmNlUmVjdCgpIHsgbV9kaXJ0eVNvdXJj
ZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KKworICAgIFJlbmRlckxheWVyJiBtX2xheWVyOworCisg
ICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXM7CisgICAg
VmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gbV9leHRlcm5h
bFNWR1JlZmVyZW5jZXM7CisKKyAgICBSZWZQdHI8Q1NTRmlsdGVyPiBtX2ZpbHRlcjsKKyAgICBM
YXlvdXRSZWN0IG1fZGlydHlTb3VyY2VSZWN0OworICAgIAorICAgIC8vIERhdGEgdXNlZCBwZXIg
cGFpbnQKKyAgICBMYXlvdXRQb2ludCBtX3BhaW50T2Zmc2V0OworICAgIExheW91dFJlY3QgbV9y
ZXBhaW50UmVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>