<?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>248619</bug_id>
          
          <creation_ts>2022-12-01 11:46:07 -0800</creation_ts>
          <short_desc>[MQ4] Remove the legacy media query code</short_desc>
          <delta_ts>2022-12-02 05:47:21 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>248594</dependson>
          <blocked>180234</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1916014</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 11:46:07 -0800</bug_when>
    <thetext>We have a new implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1916188</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-12-02 02:17:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/102897777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1916189</commentid>
    <comment_count>2</comment_count>
      <attachid>463853</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-02 02:21:06 -0800</bug_when>
    <thetext>Created attachment 463853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1916191</commentid>
    <comment_count>3</comment_count>
      <attachid>463854</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-02 02:50:14 -0800</bug_when>
    <thetext>Created attachment 463854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1916194</commentid>
    <comment_count>4</comment_count>
      <attachid>463854</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-12-02 03:55:11 -0800</bug_when>
    <thetext>Comment on attachment 463854
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1916205</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-12-02 05:47:17 -0800</bug_when>
    <thetext>Committed 257281@main (2341e747dc88): &lt;https://commits.webkit.org/257281@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463854.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463853</attachid>
            <date>2022-12-02 02:21:06 -0800</date>
            <delta_ts>2022-12-02 02:50:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248619-20221202122104.patch</filename>
            <type>text/plain</type>
            <size>122478</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAxMjY4ZjViMjIwOTM4ZGUxNWNhNzIzOGNiNGQ5NWM3YmVmN2Y5ZTVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIgRGVjIDIwMjIgMTI6MTY6MTcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZW1vdmUgdGhlIGxlZ2FjeSBtZWRpYSBxdWVyeSBjb2RlCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQ4NjE5IDxyZGFyOi8vcHJvYmxlbS8xMDI4OTc3Nzc+CgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkl0IGlzIHVudXNlZC4KCiogU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQ6CiogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHA6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUv
Y3NzL0xlZ2FjeU1lZGlhUXVlcnkuaDogUmVtb3ZlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVn
YWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUvY3Nz
L0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaDogUmVtb3ZlZC4KKiBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwOiBSZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUZlYXR1cmVOYW1lcy5oOiBSZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuY3BwOgooV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6Y3JlYXRlKTogRGVsZXRlZC4KKFdlYkNv
cmU6Ok1lZGlhUXVlcnlTZXQ6Ok1lZGlhUXVlcnlTZXQpOiBEZWxldGVkLgooV2ViQ29yZTo6TWVk
aWFRdWVyeVNldDo6c2V0KTogRGVsZXRlZC4KKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpyZW1vdmUpOiBEZWxldGVkLgooV2Vi
Q29yZTo6TWVkaWFRdWVyeVNldDo6YWRkTWVkaWFRdWVyeSk6IERlbGV0ZWQuCihXZWJDb3JlOjpN
ZWRpYVF1ZXJ5U2V0OjptZWRpYVRleHQgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6TWVkaWFR
dWVyeVNldDo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YUxpc3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOiBS
ZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5j
cHA6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyLmg6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQ
YXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKFdlYkNv
cmU6OlByb2Nlc3NXYXJtaW5nOjppbml0aWFsaXplTmFtZXMpOgooV2ViQ29yZTo6UHJvY2Vzc1dh
cm1pbmc6OnByZXdhcm1HbG9iYWxseSk6CgpQcmV3YXJtIHRoZSBmdWxsIE1ROjpGZWF0dXJlU2No
ZW1hcy4KCiogU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3Bw
OgotLS0KIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0ICAgICAgICAgICAgICAgICAgICB8ICAg
NSAtCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMzIg
Ky0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaCAgICAgICAgICAgICB8ICAgMSAt
CiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHAgICAgICAgfCAgOTkgLS0K
IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmggICAgICAgICB8ICA2NiAtLQog
Li4uL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIHwgOTU3IC0tLS0t
LS0tLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3Iu
aCAgIHwgIDgyIC0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwICAg
ICAgfCAgNDYgLQogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggICAgICAg
IHwgMTA2IC0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcCAgICAgICAgICAgICAg
fCAxMzkgLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmggICAgICAgICAgICAgICAg
fCAgMzYgLQogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcCAgIHwg
MzEwIC0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmggICAg
IHwgIDg3IC0tCiAuLi4vY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAgICAg
fCAzMjkgLS0tLS0tCiAuLi4vY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmggICAg
ICAgfCAxMzkgLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5o
ICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgICAgICAg
IHwgICA0ICstCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAg
fCAgIDEgLQogMTggZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyNDM1IGRlbGV0aW9u
cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1
ZXJ5LmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRp
YVF1ZXJ5LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9j
c3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcAogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFy
c2VyLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVn
YWN5TWVkaWFRdWVyeVBhcnNlci5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyOGNiMTY1YjY3OWMuLjIy
ZmY4Y2YzZTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTgyMiwxMSArODIyLDcgQEAgY3NzL0RlcHJl
Y2F0ZWRDU1NPTVZhbHVlTGlzdC5jcHAKIGNzcy9Gb250RmFjZS5jcHAKIGNzcy9Gb250RmFjZVNl
dC5jcHAKIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwCi1jc3MvTGVnYWN5TWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAKLWNzcy9MZWdhY3lNZWRpYVF1ZXJ5LmNwcAotY3NzL01lZGlhRmVhdHVyZU5h
bWVzLmNwcAogY3NzL01lZGlhTGlzdC5jcHAKLWNzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAK
IGNzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAKIGNzcy9NZWRpYVF1ZXJ5TGlzdEV2ZW50LmNwcAogY3Nz
L01lZGlhUXVlcnlNYXRjaGVyLmNwcApAQCAtODcyLDcgKzg2OCw2IEBAIGNzcy9wYXJzZXIvQ1NT
U3VwcG9ydHNQYXJzZXIuY3BwCiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKIGNzcy9wYXJz
ZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCiBjc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFy
c2VyLmNwcAotY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcAogY3NzL3BhcnNl
ci9NZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcAogY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBh
cnNlci5jcHAKIGNzcy9wYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3NmRkODUyZGM0
NS4uYmQzY2U1NTY0ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTk4LDkgKzE1OTgsNiBAQAogCQk0RDczRjk0NjIxOEJD
NUZBMDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDczRjk0NDIxOEJDNUZBMDAzQTNF
RDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggKi87IH07CiAJCTRENzNGOTRFMjE4
QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDczRjk0QzIxOEM0QTg3
MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTREQjcxMzBEMjE2RUNCNEQw
MDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNERCNzEzMEMyMTZFQzJCRDAwOTZBNEREIC8qIE1l
ZGlhUmVjb3JkZXJFcnJvckV2ZW50LmggKi87IH07Ci0JCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZF
NSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5h
bWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NEUxOTU5MkEwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2FjeU1lZGlhUXVlcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI0MEEzOURBQ0MwMDIy
MEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEUxOTU5MkMwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2FjeU1l
ZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEYxNTM0REUxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REQxMUI1MzJFQzAw
MjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTRGMTUzNEUwMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5n
QmVoYXZpb3JUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGQTY1QTZD
MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQTY1QTZBMTEwOEFCRUQwMDI2MTVFMCAv
KiBNYXRoTUxTcGFjZUVsZW1lbnQuaCAqLzsgfTsKQEAgLTI2OTcsNyArMjY5NCw2IEBACiAJCTdD
OURCRkVFMUE5QzQ5QjEwMDBENkIyNSAvKiBKU0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5REJGRUMxQTlDNDlC
MTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggKi87IH07CiAJCTdDQUM2QUU5
MjQ3RjA4MkYwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9y
TWF0cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0NBQzZBRjAyNDdGNDExMDAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBQzZBRUMyNDdGMUM1MTAw
RTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1
ZXJ5RXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NCNUNBM0UxRTUyNUM2QzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlFeHByZXNzaW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NCQkJD
QzcxRjU2MDU4MTAwNUVGQUFDIC8qIERPTU1hdHJpeDJESW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCQkJDQzYxRjU2MDU2ODAwNUVGQUFDIC8q
IERPTU1hdHJpeDJESW5pdC5oICovOyB9OwogCQk3Q0JCQkNDQTFGNTYxN0M1MDA1RUZBQUMgLyog
SlNET01NYXRyaXgyREluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDQkJCQ0M5MUY1NjE3QzAwMDVFRkFBQyAvKiBKU0RPTU1hdHJpeDJESW5pdC5o
ICovOyB9OwogCQk3Q0JEMTI5RTFGOThCOTBFMDAxMjdEMjkgLyogRGVwcmVjYXRlZEdsb2JhbFNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0JEMTI5QTFGOThCNUZFMDAxMjdEMjkgLyogRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5ODksNiAr
Mjk4NSw3IEBACiAJCThBQ0U4OEQ3Mjg1QzhGQjgwMDgyQzBGQyAvKiBXZWJHTERyYXdJbnN0YW5j
ZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QUNFODhENTI4NUM4RjY2MDA4MkMwRkMgLyogV2ViR0xEcmF3SW5z
dGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZS5oICovOyB9OwogCQk4QUY0RTU1NjExREM1QTM2
MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MzExREM1QTM2MDAwRUQzREUgLyogUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uLmggKi87IH07CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAv
KiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5n
LmggKi87IH07CisJCThDNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ludGVybmFsUmVhZGFi
bGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhDNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ludGVybmFsUmVhZGFibGVTdHJlYW0uaCAq
LzsgfTsKIAkJOEU0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU0Qzk2RDkxQUQ0
NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oICovOyB9OwogCQk4RUM2Qzk2MzIwMUEy
NTE2MDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3
NDExMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0NzgwMDY0
ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBAIC0zMjM4LDcgKzMyMzUs
NiBAQAogCQk5NDc5NDk0MDFFMDQ2M0NFMDAwMThEODUgLyogRGVwcmVjYXRlZENTU09NUHJpbWl0
aXZlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk0Nzk0OTI2MUUwMzEzMjAwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk0
Nzk0OTQxMUUwNDYzRDQwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01Db3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDc5NDkyQTFFMDMyRURC
MDAwMThEODUgLyogRGVwcmVjYXRlZENTU09NQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk0OTNCNkJGMUQ3NEI0MTIwMDg4RTc4MCAv
KiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NDkzQjZCNzFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeUJs
b2NrV2F0Y2hlci5oICovOyB9OwotCQk5NDkzQjZDMTFENzRCNDEyMDA4OEU3ODAgLyogTGVnYWN5
TWVkaWFRdWVyeVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTQ5M0I2QjkxRDc0QjM5NTAwODhFNzgwIC8qIExlZ2FjeU1lZGlhUXVlcnlQYXJz
ZXIuaCAqLzsgfTsKIAkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5
Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OwogCQk5
NDlDNzcwNTFENkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMzFENkUz
OTM1MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi87IH07CiAJCTk0OUM3
NzA5MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQw
MEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKQEAgLTEwMDAxLDEy
ICs5OTk3LDYgQEAKIAkJNERCNzEzMEEyMTZFQzJCQzAwOTZBNEREIC8qIE1lZGlhUmVjb3JkZXJF
cnJvckV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVJlY29yZGVyRXJyb3JF
dmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREQjcxMzBDMjE2RUMyQkQw
MDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0REI3MTMwRTIxNkVFQkFFMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFS
ZWNvcmRlckVycm9yRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RTE5
NTkxRjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRmVhdHVyZU5hbWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlh
RmVhdHVyZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZl
YXR1cmVOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RTE5NTkyMzBBMzlE
QUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5TWVkaWFRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTRFMTk1OTI0MEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lNZWRpYVF1ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRFMTk1OTI1MEEzOURBQ0MwMDIyMEZFNSAv
KiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNEUxOTU5MjYwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2Fj
eU1lZGlhUXVlcnlFdmFsdWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYx
NTM0REQxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkE2NUE2OTExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTFNwYWNlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjQ0MCw4ICsxMjQzMCw2IEBACiAJCTdDQTU1RkNBMjUyNDE3QTcwMDMxRjQ1MiAv
KiBFbGVtZW50Q29udGVudEVkaXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q29udGVudEVkaXRhYmxl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBQzZBRTgyNDdGMDgyMDAwRTYx
RDU5IC8qIENvbG9yTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yTWF0cml4Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xv
ckNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb21w
b25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDQjVDQTNEMUU1MjVDNkMw
MEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdDQjVDQTNFMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhw
cmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXhw
cmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JBNUJBNjFGMEI0QkRF
MDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNE
T01Db252ZXJ0V2ViR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQkND
NDFGNTYwNTY3MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBET01NYXRyaXgyREluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Q0JCQkNDNjFGNTYwNTY4MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1hdHJpeDJESW5pdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTMwOTQsNiArMTMwODIsNyBAQAogCQk4QUY0RTU1NDExREM1QTM2
MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4QUY0RTU1OTExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VUaW1pbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NUExMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZv
cm1hbmNlVGltaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZVRpbWlu
Zy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThDNEM5NkQ5MUFENDQ4MzUwMDM2
NUE1MCAvKiBKU0ludGVybmFsUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNJbnRlcm5hbFJlYWRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThFMzNDRDkzMjAxQTI5QzEwMEUzOTA5MyAvKiBHYXBMZW5ndGguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2FwTGVuZ3RoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0
Y2hSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zl
dGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEOTFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM1NjIsOCArMTM1NTEsNiBAQAogCQk5NDc5NDkzQjFFMDQ1Q0UxMDAwMThEODUgLyog
RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NDkzQjZCNjFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFR
dWVyeUJsb2NrV2F0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcDsgcGF0aCA9IHBhcnNlci9NZWRpYVF1ZXJ5Qmxv
Y2tXYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5M0I2QjcxRDc0
QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oOyBwYXRoID0gcGFyc2Vy
L01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTQ5M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGVnYWN5TWVkaWFRdWVyeVBhcnNl
ci5jcHA7IHBhdGggPSBwYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk0OTNCNkI5MUQ3NEIzOTUwMDg4RTc4MCAvKiBMZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0
RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDlDNzZGRjFENkUx
RDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ckZhc3RQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDlDNzcwMjFENkUz
OTM1MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA7IHBh
dGggPSBwYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI3MDY1LDggKzI3MDUyLDYgQEAKIAkJCQk5NDZEMzczODFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKIAkJCQk5NDQ0Q0JEODFE
ODg0ODJBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVQYXJzZXIuY3BwICovLAogCQkJCTk0NDRDQkQ3
MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5oICovLAotCQkJCTk0OTNCNkI4
MUQ3NEIzOTUwMDg4RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLywKLQkJCQk5
NDkzQjZCOTFENzRCMzk1MDA4OEU3ODAgLyogTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oICovLAog
CQkJCTk0OTNCNkI2MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNw
cCAqLywKIAkJCQk5NDkzQjZCNzFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0
Y2hlci5oICovLAogCQkJCTk0NDRDQkQyMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0
ZVBhcnNlci5jcHAgKi8sCkBAIC0zMzA2NiwyMyArMzMwNTEsMTUgQEAKIAkJCQlDRDRFMEFGQTEx
RjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkJOTNDQTRDOTkwOURGOTNG
QTAwREY4Njc3IC8qIGh0bWwuY3NzICovLAogCQkJCUU1NENBNkREMjU1REUyRDUwMEY5MDFBMyAv
KiBsZWdhY3lGb3JtQ29udHJvbHNJT1MuY3NzICovLAotCQkJCTRFMTk1OTIzMEEzOURBQ0MwMDIy
MEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5LmNwcCAqLywKLQkJCQk0RTE5NTkyNDBBMzlEQUNDMDAy
MjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeS5oICovLAotCQkJCTRFMTk1OTI1MEEzOURBQ0MwMDIy
MEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLywKLQkJCQk0RTE5NTkyNjBB
MzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAogCQkJCTlC
RTU0NjhFMjg4MEQ3MjIwMEY2MzVBNCAvKiBMaW5rU3R5bGUuaWRsICovLAogCQkJCTkzQ0E0QzlB
MDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk0M0I4
NUVEMDE4Q0JFQUNFMDBFMzFBRjQgLyogbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRp
YmlsaXR5RWxlbWVudE1hcC5weSAqLywKIAkJCQkyNkFBMEY5OTE4RDI5NzNEMDA0MTkzODEgLyog
bWFrZVNlbGVjdG9yUHNldWRvRWxlbWVudHNNYXAucHkgKi8sCiAJCQkJRkE2NTRBNjMxMTA4QUJC
NzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8sCiAJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVC
IC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAotCQkJCTRFMTk1OTFGMEEzOURBQkEwMDIyMEZFNSAv
KiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8sCi0JCQkJNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1
IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi8sCiAJCQkJQThFQTgwMDEwQTE5NTE2RTAwQThFRjVG
IC8qIE1lZGlhTGlzdC5jcHAgKi8sCiAJCQkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVGIC8qIE1l
ZGlhTGlzdC5oICovLAogCQkJCTg1QzU2QzVCMEFBODdBRkQwMEQ5NTc1NSAvKiBNZWRpYUxpc3Qu
aWRsICovLAotCQkJCTdDQjVDQTNEMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVz
c2lvbi5jcHAgKi8sCi0JCQkJN0NCNUNBM0UxRTUyNUM2QzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlF
eHByZXNzaW9uLmggKi8sCiAJCQkJRDNBOTRBMzExMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVl
cnlMaXN0LmNwcCAqLywKIAkJCQlEM0E5NEEzMjEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVy
eUxpc3QuaCAqLywKIAkJCQlEM0E5NEEzMzEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxp
c3QuaWRsICovLApAQCAtMzczNzgsOSArMzczNTUsNiBAQAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgw
MDYwRUNFNSAvKiBMZWdhY3lJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBMZWdhY3lMaW5lTGF5b3V0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0RTE5NTkyQTBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVk
aWFRdWVyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEUxOTU5MkMwQTM5REFDQzAwMjIwRkU1IC8q
IExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0OTNCNkMx
MUQ3NEI0MTIwMDg4RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNDRBNUY1OTFGRUQzOEYyMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExODVCNDJBMUU4MjExQTEwMERDOTExOCAvKiBMZWdh
Y3lQcmV2aWV3TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBEQkY0NzE4RjkyMzE3MDAw
RDcwQzYgLyogTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NzUyNCw3ICszNzQ5OCw2IEBACiAJCQkJQ0QzRUVGNDIyNTc5QjQ0QTAwNjU2M0JCIC8qIE1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzQ4QUM5
MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2Eu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVy
cm9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVk
aWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1
MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzgy
ODk0QjI1QzM2RkVEMDBBN0JBMDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhl
YWRlcnMgKi8sCkBAIC0zNzU2MCw3ICszNzUzMyw2IEBACiAJCQkJRTQ1NUE1ODIyOEZFOEQ4RDAw
QjZFQTc2IC8qIE1lZGlhUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0OTNCNkJGMUQ3NEI0
MTIwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDU1QTU3MTI4RkQ3M0YzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJN0NCNUNBNDAxRTUyNUM3MzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlFeHBy
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDU1QTVCQTI5MDdBODlBMDBCNkVBNzYgLyog
TWVkaWFRdWVyeUZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEEzOTEyMkRBQkFD
MDBBMzdCQkMgLyogTWVkaWFRdWVyeUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NjUwRTdF
MjM4N0FEN0QwMDYyNjZFMiAvKiBNZWRpYVF1ZXJ5TGlzdEV2ZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAppbmRleCAxYzFjZjM4YzE5ZmIuLmVhOGZkZDFlMjdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaApAQCAtMjcsNyArMjcsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUxpc3Q7Ci1jbGFzcyBNZWRpYVF1ZXJ5U2V0Owog
Y2xhc3MgU3R5bGVSdWxlTWVkaWE7CiAKIG5hbWVzcGFjZSBNUSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TGVnYWN5TWVkaWFRdWVyeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZGE5
ZjhjMDQyZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRp
YVF1ZXJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDU1MgTWVk
aWEgUXVlcnkKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgS2ltbW8gS2lubnVuZW4g
PGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJMZWdhY3lNZWRpYVF1ZXJ5LmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1t
ZWRpYS1xdWVyeQotU3RyaW5nIExlZ2FjeU1lZGlhUXVlcnk6OnNlcmlhbGl6ZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKG1faWdub3JlZCkgewotICAgICAgICAvLyBJZiBxdWVyeSBpcyBpbnZhbGlkLCBz
ZXJpYWxpemVkIHRleHQgc2hvdWxkIHR1cm4gaW50byAibm90IGFsbCIuCi0gICAgICAgIHJldHVy
biAibm90IGFsbCJfczsKLSAgICB9Ci0KLSAgICBib29sIHNob3VsZE9taXRNZWRpYVR5cGUgPSBm
YWxzZTsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICBzd2l0Y2ggKG1fcmVzdHJpY3Rv
cikgewotICAgIGNhc2UgTGVnYWN5TWVkaWFRdWVyeTo6T25seToKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgib25seSAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZWdhY3lNZWRpYVF1ZXJ5
OjpOb3Q6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIm5vdCAiKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBMZWdhY3lNZWRpYVF1ZXJ5OjpOb25lOgotICAgICAgICBzaG91bGRPbWl0TWVkaWFU
eXBlID0gIW1fZXhwcmVzc2lvbnMuaXNFbXB0eSgpICYmIG1fbWVkaWFUeXBlID09ICJhbGwiX3M7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBib29sIG5lZWRzQW5kID0gZmFsc2U7Ci0gICAg
aWYgKCFzaG91bGRPbWl0TWVkaWFUeXBlKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRp
YVR5cGUpOwotICAgICAgICBuZWVkc0FuZCA9IHRydWU7Ci0gICAgfQotICAgIGZvciAoYXV0byYg
ZXhwcmVzc2lvbiA6IG1fZXhwcmVzc2lvbnMpIHsKLSAgICAgICAgaWYgKG5lZWRzQW5kKQotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiIGFuZCAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChl
eHByZXNzaW9uLnNlcmlhbGl6ZSgpKTsKLSAgICAgICAgbmVlZHNBbmQgPSB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19Ci0KLUxlZ2FjeU1lZGlhUXVlcnk6Okxl
Z2FjeU1lZGlhUXVlcnkoUmVzdHJpY3RvciByZXN0cmljdG9yLCBjb25zdCBTdHJpbmcmIG1lZGlh
VHlwZSwgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiYmIGV4cHJlc3Npb25zKQotICAgIDog
bV9tZWRpYVR5cGUobWVkaWFUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCi0gICAgLCBt
X2V4cHJlc3Npb25zKFdURk1vdmUoZXhwcmVzc2lvbnMpKQotICAgICwgbV9yZXN0cmljdG9yKHJl
c3RyaWN0b3IpCi17Ci19Ci0KLS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNjb21w
YXJlLW1lZGlhLXF1ZXJpZXMKLWJvb2wgTGVnYWN5TWVkaWFRdWVyeTo6b3BlcmF0b3I9PShjb25z
dCBMZWdhY3lNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gY3NzVGV4dCgp
ID09IG90aGVyLmNzc1RleHQoKTsKLX0KLQotLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6ZS1hLWxpc3Qtb2YtbWVkaWEtcXVlcmllcwotY29uc3QgU3RyaW5nJiBMZWdh
Y3lNZWRpYVF1ZXJ5Ojpjc3NUZXh0KCkgY29uc3QKLXsKLSAgICBpZiAobV9zZXJpYWxpemF0aW9u
Q2FjaGUuaXNOdWxsKCkpCi0gICAgICAgIG1fc2VyaWFsaXphdGlvbkNhY2hlID0gc2VyaWFsaXpl
KCk7Ci0gICAgcmV0dXJuIG1fc2VyaWFsaXphdGlvbkNhY2hlOwotfQotCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZWdhY3lNZWRpYVF1ZXJ5JiBxdWVyeSkK
LXsKLSAgICB0cyA8PCBxdWVyeS5jc3NUZXh0KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi19IC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVl
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg5MGM5MTA5M2YxOC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiAr
MCwwIEBACi0vKgotICogQ1NTIE1lZGlhIFF1ZXJ5Ci0gKgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIExlZ2FjeU1lZGlhUXVlcnkg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGVudW0gUmVzdHJp
Y3RvciB7IE9ubHksIE5vdCwgTm9uZSB9OwotCi0gICAgTGVnYWN5TWVkaWFRdWVyeShSZXN0cmlj
dG9yLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9u
PiYmKTsKLQotICAgIFJlc3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
dHJpY3RvcjsgfQotICAgIGNvbnN0IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4mIGV4cHJl
c3Npb25zKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uczsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KLSAgICBib29sIGln
bm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZWQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
Y3NzVGV4dCgpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlZ2FjeU1lZGlh
UXVlcnkmIG90aGVyKSBjb25zdDsKLQotICAgIHZvaWQgc2hyaW5rVG9GaXQoKSB7IG1fZXhwcmVz
c2lvbnMuc2hyaW5rVG9GaXQoKTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBzZXJpYWxpemUo
KSBjb25zdDsKLQotICAgIFN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBtdXRhYmxlIFN0cmluZyBt
X3NlcmlhbGl6YXRpb25DYWNoZTsKLSAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1f
ZXhwcmVzc2lvbnM7Ci0gICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7Ci0gICAgYm9vbCBtX2ln
bm9yZWQgeyBmYWxzZSB9OwotfTsKLQotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IExlZ2FjeU1lZGlhUXVlcnkmKTsKLQotfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ5MWMxNGYyOGRiLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsOTU3ICswLDAgQEAKLS8qCi0gKiBDU1MgTWVkaWEgUXVlcnkgRXZh
bHVhdG9yCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50
Lmtpbm51bmVuQG5va2lhLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeUV2
YWx1YXRvci5oIgotCi0jaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgotI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YS5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIK
LSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgot
I2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiTGVn
YWN5TWVkaWFRdWVyeS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYUZl
YXR1cmVOYW1lcy5oIgotI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgotI2luY2x1ZGUgIk1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCi0jaW5jbHVk
ZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAiUXVpcmtz
LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0j
aW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgi
Ci0jaW5jbHVkZSAiVGhlbWUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KLQotI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQotI2luY2x1ZGUgIlJl
bmRlckxheWVyQ29tcG9zaXRvci5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
ZW51bSBNZWRpYUZlYXR1cmVQcmVmaXggeyBNaW5QcmVmaXgsIE1heFByZWZpeCwgTm9QcmVmaXgg
fTsKLQotI2lmbmRlZiBMT0dfRElTQUJMRUQKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgc3dpdGNoIChv
cCkgewotICAgIGNhc2UgTWluUHJlZml4OiB0cyA8PCAibWluIjsgYnJlYWs7Ci0gICAgY2FzZSBN
YXhQcmVmaXg6IHRzIDw8ICJtYXgiOyBicmVhazsKLSAgICBjYXNlIE5vUHJlZml4OiB0cyA8PCAi
IjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSNlbmRpZgotCi10eXBlZGVmIGJv
b2wgKCpNZWRpYVF1ZXJ5RnVuY3Rpb24pKENTU1ZhbHVlKiwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0dXJlUHJlZml4KTsKLXR5cGVkZWYgSGFzaE1h
cDxBdG9tU3RyaW5nSW1wbCosIE1lZGlhUXVlcnlGdW5jdGlvbj4gTWVkaWFRdWVyeUZ1bmN0aW9u
TWFwOwotCi1zdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudChjb25z
dCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUpCi17Ci0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRDb2xvcnMKLSAgICAgICAgfHwgbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhNb25vY2hyb21lCi0gICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluTW9ub2Nocm9tZQotICAgICAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1vbm9jaHJvbWUKLSAgICAgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzUmVkdWNlZE1vdGlvbgot
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNDb250
cmFzdDsKLX0KLQotc3RhdGljIGJvb2wgaXNBcHBlYXJhbmNlRGVwZW5kZW50KGNvbnN0IEF0b21T
dHJpbmcmIG1lZGlhRmVhdHVyZSkKLXsKLSNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBp
ZiAobWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzQ29sb3JTY2hlbWUp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2U7Ci19Ci0KLUxlZ2FjeU1l
ZGlhUXVlcnlFdmFsdWF0b3I6OkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IoYm9vbCBtZWRpYUZl
YXR1cmVSZXN1bHQpCi0gICAgOiBtX2ZhbGxiYWNrUmVzdWx0KG1lZGlhRmVhdHVyZVJlc3VsdCkK
LXsKLX0KLQotTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcjo6TGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBib29sIG1lZGlhRmVhdHVyZVJl
c3VsdCkKLSAgICA6IG1fbWVkaWFUeXBlKGFjY2VwdGVkTWVkaWFUeXBlKQotICAgICwgbV9mYWxs
YmFja1Jlc3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCi17Ci19Ci0KLUxlZ2FjeU1lZGlhUXVlcnlF
dmFsdWF0b3I6OkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgU3RyaW5nJiBhY2NlcHRl
ZE1lZGlhVHlwZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCi0gICAgOiBtX21lZGlhVHlwZShhY2NlcHRlZE1lZGlhVHlwZSkKLSAgICAsIG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3N0eWxlKHN0eWxlKQotewotfQotCi1ib29sIExlZ2Fj
eU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhVHlwZU1hdGNoKGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlVG9NYXRjaCkgY29uc3QKLXsKLSAgICByZXR1cm4gbWVkaWFUeXBlVG9NYXRjaC5pc0VtcHR5
KCkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWVkaWFUeXBlVG9N
YXRjaCwgImFsbCJfcykKLSAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtZWRpYVR5
cGVUb01hdGNoLCBtX21lZGlhVHlwZSk7Ci19Ci0KLWJvb2wgTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvcjo6bWVkaWFUeXBlTWF0Y2hTcGVjaWZpYyhBU0NJSUxpdGVyYWwgbWVkaWFUeXBlVG9NYXRj
aCkgY29uc3QKLXsKLSAgICAvLyBMaWtlIG1lZGlhVHlwZU1hdGNoLCBidXQgd2l0aG91dCB0aGUg
c3BlY2lhbCBjYXNlcyBmb3IgIiIgYW5kICJhbGwiLgotICAgIEFTU0VSVCghbWVkaWFUeXBlVG9N
YXRjaC5pc051bGwoKSk7Ci0gICAgQVNTRVJUKG1lZGlhVHlwZVRvTWF0Y2guY2hhcmFjdGVyQXQo
MCkgIT0gJ1wwJyk7Ci0gICAgQVNTRVJUKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
ZWRpYVR5cGVUb01hdGNoLCAiYWxsIl9zKSk7Ci0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobV9tZWRpYVR5cGUsIG1lZGlhVHlwZVRvTWF0Y2gpOwotfQotCi1zdGF0aWMgYm9vbCBh
cHBseVJlc3RyaWN0b3IoTGVnYWN5TWVkaWFRdWVyeTo6UmVzdHJpY3RvciByLCBib29sIHZhbHVl
KQotewotICAgIHJldHVybiByID09IExlZ2FjeU1lZGlhUXVlcnk6Ok5vdCA/ICF2YWx1ZSA6IHZh
bHVlOwotfQotCi1ib29sIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0
IE1lZGlhUXVlcnlTZXQmIHF1ZXJ5U2V0KSBjb25zdAotewotICAgIExPR19XSVRIX1NUUkVBTShN
ZWRpYVF1ZXJpZXMsIHN0cmVhbSA8PCAiTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVh
dGUgb24gIiA8PCAobV9kb2N1bWVudCA/IG1fZG9jdW1lbnQtPnVybCgpLnN0cmluZygpIDogZW1w
dHlTdHJpbmcoKSkpOwotCi0gICAgYXV0byYgcXVlcmllcyA9IHF1ZXJ5U2V0LnF1ZXJ5VmVjdG9y
KCk7Ci0gICAgaWYgKCFxdWVyaWVzLnNpemUoKSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
TWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1
YXRlICIgPDwgcXVlcnlTZXQgPDwgIiByZXR1cm5pbmcgdHJ1ZSIpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsgLy8gRW1wdHkgcXVlcnkgbGlzdCBldmFsdWF0ZXMgdG8gdHJ1ZS4KLSAgICB9Ci0KLSAg
ICAvLyBJdGVyYXRlIG92ZXIgcXVlcmllcywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIHRy
dWUgKE9SIHNlbWFudGljcykuCi0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHF1ZXJpZXMuc2l6ZSgpICYmICFyZXN1bHQ7ICsraSkgewotICAgICAg
ICBhdXRvJiBxdWVyeSA9IHF1ZXJpZXNbaV07Ci0KLSAgICAgICAgaWYgKHF1ZXJ5Lmlnbm9yZWQo
KSB8fCAoIXF1ZXJ5LmV4cHJlc3Npb25zKCkuc2l6ZSgpICYmIHF1ZXJ5Lm1lZGlhVHlwZSgpLmlz
RW1wdHkoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAobWVkaWFUeXBl
TWF0Y2gocXVlcnkubWVkaWFUeXBlKCkpKSB7Ci0gICAgICAgICAgICBhdXRvJiBleHByZXNzaW9u
cyA9IHF1ZXJ5LmV4cHJlc3Npb25zKCk7Ci0KLSAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3Vn
aCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZhbHNlIChBTkQgc2Vt
YW50aWNzKS4KLSAgICAgICAgICAgIHNpemVfdCBqID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBq
IDwgZXhwcmVzc2lvbnMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBib29sIGV4cHJl
c3Npb25SZXN1bHQgPSBldmFsdWF0ZShleHByZXNzaW9uc1tqXSk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFleHByZXNzaW9uUmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIC8vIEFzc3VtZSB0cnVlIGlmIHdlIGFyZSBhdCB0aGUgZW5k
IG9mIHRoZSBsaXN0LCBvdGhlcndpc2UgYXNzdW1lIGZhbHNlLgotICAgICAgICAgICAgcmVzdWx0
ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LnJlc3RyaWN0b3IoKSwgZXhwcmVzc2lvbnMuc2l6ZSgp
ID09IGopOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJp
Y3RvcihxdWVyeS5yZXN0cmljdG9yKCksIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBMT0dfV0lUSF9T
VFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlICIgPDwgcXVlcnlTZXQgPDwgIiByZXR1cm5pbmcgIiA8PCByZXN1bHQpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJv
b2wgY29tcGFyZVZhbHVlKFQgYSwgVSBiLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAg
c3dpdGNoIChvcCkgewotICAgIGNhc2UgTWluUHJlZml4OgotICAgICAgICByZXR1cm4gYSA+PSBi
OwotICAgIGNhc2UgTWF4UHJlZml4OgotICAgICAgICByZXR1cm4gYSA8PSBiOwotICAgIGNhc2Ug
Tm9QcmVmaXg6Ci0gICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotI2lmICFMT0dfRElTQUJMRUQKLQotc3RhdGljIFN0cmluZyBhc3BlY3RSYXRpb1Zh
bHVlQXNTdHJpbmcoQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICghaXM8Q1NTQXNwZWN0UmF0
aW9WYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGF1
dG8mIGFzcGVjdFJhdGlvID0gZG93bmNhc3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZT4oKnZhbHVlKTsK
LSAgICByZXR1cm4gbWFrZVN0cmluZyhhc3BlY3RSYXRpby5udW1lcmF0b3JWYWx1ZSgpLCAnLycs
IGFzcGVjdFJhdGlvLmRlbm9taW5hdG9yVmFsdWUoKSk7Ci19Ci0KLSNlbmRpZgotCi1zdGF0aWMg
Ym9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwg
aW50IGhlaWdodCwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIGlmICghaXM8Q1NTQXNw
ZWN0UmF0aW9WYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYg
YXNwZWN0UmF0aW8gPSBkb3duY2FzdDxDU1NBc3BlY3RSYXRpb1ZhbHVlPigqdmFsdWUpOwotICAg
IHJldHVybiBjb21wYXJlVmFsdWUod2lkdGggKiBhc3BlY3RSYXRpby5kZW5vbWluYXRvclZhbHVl
KCksIGhlaWdodCAqIGFzcGVjdFJhdGlvLm51bWVyYXRvclZhbHVlKCksIG9wKTsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCi17
Ci0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIHx8ICFkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5pc051bWJlck9ySW50ZWdlcigpKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnZhbHVlKS5kb3VibGVWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci19Ci0KLXN0YXRp
YyBib29sIHplcm9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIE1lZGlhRmVhdHVyZVByZWZpeCBv
cCkKLXsKLSAgICBhdXRvIG51bWVyaWNWYWx1ZSA9IGRvdWJsZVZhbHVlKHZhbHVlKTsKLSAgICBy
ZXR1cm4gbnVtZXJpY1ZhbHVlICYmIGNvbXBhcmVWYWx1ZSgwLCBudW1lcmljVmFsdWUudmFsdWUo
KSwgb3ApOwotfQotCi1zdGF0aWMgYm9vbCBvbmVFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIE1l
ZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBhdXRvIG51bWVyaWNWYWx1ZSA9IGRvdWJsZVZhbHVlKHZhbHVlKTsKLSAgICBy
ZXR1cm4gbnVtZXJpY1ZhbHVlICYmIGNvbXBhcmVWYWx1ZSgxLCBudW1lcmljVmFsdWUudmFsdWUo
KSwgb3ApOwotfQotCi1zdGF0aWMgYm9vbCBjb2xvckV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0
dXJlUHJlZml4IG9wKQotewotICAgIGludCBiaXRzUGVyQ29tcG9uZW50ID0gc2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLSAgICBhdXRvIG51bWVyaWNW
YWx1ZSA9IGRvdWJsZVZhbHVlKHZhbHVlKTsKLSAgICBpZiAoIW51bWVyaWNWYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIGJpdHNQZXJDb21wb25lbnQ7Ci0gICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShiaXRz
UGVyQ29tcG9uZW50LCBudW1lcmljVmFsdWUudmFsdWUoKSwgb3ApOwotfQotCi1zdGF0aWMgYm9v
bCBjb2xvckluZGV4RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgLy8g
QWx3YXlzIHJldHVybiBmYWxzZSBmb3IgaW5kZXhlZCBkaXNwbGF5LgotICAgIHJldHVybiB6ZXJv
RXZhbHVhdGUodmFsdWUsIG9wKTsKLX0KLQotc3RhdGljIGJvb2wgY29sb3JHYW11dEV2YWx1YXRl
KENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1l
JiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGlmICghdmFsdWUpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnZhbHVlKS52YWx1ZUlEKCkpIHsKLSAgICBjYXNlIENTU1ZhbHVlU1JHQjoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NWYWx1ZVAzOgotICAgICAgICAvLyBGSVhNRTogRm9yIHRo
ZSBtb21lbnQgd2UganVzdCBhc3N1bWUgYW55ICJleHRlbmRlZCBjb2xvciIgZGlzcGxheSBpcyBh
dCBsZWFzdCBhcyBnb29kIGFzIFAzLgotICAgICAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgY2FzZSBDU1NWYWx1ZVJl
YzIwMjA6Ci0gICAgICAgIC8vIEZJWE1FOiBBdCBzb21lIHBvaW50IHdlIHNob3VsZCBzdGFydCBk
ZXRlY3RpbmcgZGlzcGxheXMgdGhhdCBzdXBwb3J0IG1vcmUgY29sb3JzLgotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbnkgdW5r
bm93biB2YWx1ZSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYSBtYXRjaC4KLSAgICB9Ci19Ci0K
LXN0YXRpYyBib29sIG1vbm9jaHJvbWVFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1l
ZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsKLSAgICBib29sIGlzTW9ub2Nocm9tZTsKLQotICAgIGlm
IChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZERpc3BsYXlJc01vbm9jaHJvbWVBY2Nlc3NpYmlsaXR5
VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQotICAgICAgICBpc01vbm9j
aHJvbWUgPSB0cnVlOwotICAgIGVsc2UgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkRGlzcGxh
eUlzTW9ub2Nocm9tZUFjY2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlW
YWx1ZTo6T2ZmKQotICAgICAgICBpc01vbm9jaHJvbWUgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAg
ICAgIGlzTW9ub2Nocm9tZSA9IHNjcmVlbklzTW9ub2Nocm9tZShmcmFtZS5tYWluRnJhbWUoKS52
aWV3KCkpOwotCi0gICAgaWYgKCFpc01vbm9jaHJvbWUpCi0gICAgICAgIHJldHVybiB6ZXJvRXZh
bHVhdGUodmFsdWUsIG9wKTsKLSAgICByZXR1cm4gY29sb3JFdmFsdWF0ZSh2YWx1ZSwgY29udmVy
c2lvbkRhdGEsIGZyYW1lLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIGludmVydGVkQ29sb3JzRXZh
bHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwg
RnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgYm9vbCBpc0ludmVydGVk
OwotCi0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkQ29sb3JzQXJlSW52ZXJ0ZWRBY2Nl
c3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQotICAgICAg
ICBpc0ludmVydGVkID0gdHJ1ZTsKLSAgICBlbHNlIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNl
ZENvbG9yc0FyZUludmVydGVkQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPZmYpCi0gICAgICAgIGlzSW52ZXJ0ZWQgPSBmYWxzZTsKLSAgICBlbHNlCi0g
ICAgICAgIGlzSW52ZXJ0ZWQgPSBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwotCi0gICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGlzSW52ZXJ0ZWQ7Ci0KLSAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09IChpc0ludmVydGVkID8g
Q1NTVmFsdWVJbnZlcnRlZCA6IENTU1ZhbHVlTm9uZSk7Ci19Ci0KLXN0YXRpYyBib29sIG9yaWVu
dGF0aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgRnJhbWVW
aWV3KiB2aWV3ID0gZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgYXV0byB3aWR0aCA9IHZpZXctPmxheW91dFdpZHRoKCk7Ci0gICAgYXV0
byBoZWlnaHQgPSB2aWV3LT5sYXlvdXRIZWlnaHQoKTsKLQotICAgIGlmICghaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICAvLyBFeHByZXNzaW9uIChvcmllbnRhdGlvbikg
ZXZhbHVhdGVzIHRvIHRydWUgaWYgd2lkdGggYW5kIGhlaWdodCA+PSAwLgotICAgICAgICByZXR1
cm4gaGVpZ2h0ID49IDAgJiYgd2lkdGggPj0gMDsKLSAgICB9Ci0KLSAgICBhdXRvIGtleXdvcmQg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7Ci0gICAgYm9v
bCByZXN1bHQ7Ci0gICAgaWYgKHdpZHRoID4gaGVpZ2h0KSAvLyBTcXVhcmUgdmlld3BvcnQgaXMg
cG9ydHJhaXQuCi0gICAgICAgIHJlc3VsdCA9IGtleXdvcmQgPT0gQ1NTVmFsdWVMYW5kc2NhcGU7
Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBrZXl3b3JkID09IENTU1ZhbHVlUG9ydHJhaXQ7
Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIiAgb3JpZW50
YXRpb25FdmFsdWF0ZTogdmlldyBzaXplICIgPDwgd2lkdGggPDwgIngiIDw8IGhlaWdodCA8PCAi
IGlzICIgPDwgdmFsdWUtPmNzc1RleHQoKSA8PCAiOiAiIDw8IHJlc3VsdCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgYXNwZWN0UmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1l
ZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsKLSAgICAvLyAoeyxtaW4tLG1heC19YXNwZWN0LXJhdGlv
KQotICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJhdGlvIGlz
IG5vbi16ZXJvCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgRnJh
bWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgYm9vbCByZXN1bHQgPSBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZSh2YWx1
ZSwgdmlldy0+bGF5b3V0V2lkdGgoKSwgdmlldy0+bGF5b3V0SGVpZ2h0KCksIG9wKTsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIiAgYXNwZWN0UmF0aW9FdmFs
dWF0ZTogIiA8PCBvcCA8PCAiICIgPDwgYXNwZWN0UmF0aW9WYWx1ZUFzU3RyaW5nKHZhbHVlKSA8
PCAiIGFjdHVhbCB2aWV3IHNpemUgIiA8PCB2aWV3LT5sYXlvdXRXaWR0aCgpIDw8ICJ4IiA8PCB2
aWV3LT5sYXlvdXRIZWlnaHQoKSA8PCAiIDogIiA8PCByZXN1bHQpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXN0YXRpYyBib29sIGRldmljZUFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUq
IHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBN
ZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgLy8gKHssbWluLSxtYXgtfWRldmljZS1hc3Bl
Y3QtcmF0aW8pCi0gICAgLy8gYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGl0cyBhc3BlY3Qg
cmF0aW8gaXMgbm9uLXplcm8KLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIGF1dG8gc2l6ZSA9IGZyYW1lLm1haW5GcmFtZSgpLnNjcmVlblNpemUoKTsKLSAgICBi
b29sIHJlc3VsdCA9IGNvbXBhcmVBc3BlY3RSYXRpb1ZhbHVlKHZhbHVlLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCksIG9wKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBz
dHJlYW0gPDwgIiAgZGV2aWNlQXNwZWN0UmF0aW9FdmFsdWF0ZTogIiA8PCBvcCA8PCAiICIgPDwg
YXNwZWN0UmF0aW9WYWx1ZUFzU3RyaW5nKHZhbHVlKSA8PCAiIGFjdHVhbCBzY3JlZW4gc2l6ZSAi
IDw8IHNpemUgPDwgIjogIiA8PCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0
YXRpYyBib29sIGV2YWx1YXRlUmVzb2x1dGlvbihDU1NWYWx1ZSogdmFsdWUsIEZyYW1lJiBmcmFt
ZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIC8vIEZJWE1FOiBQb3NzaWJsZSBoYW5k
bGUgb3RoZXIgbWVkaWEgdHlwZXMgdGhhbiAnc2NyZWVuJyBhbmQgJ3ByaW50Jy4KLSAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDA7Ci0KLSAgICAvLyBU
aGlzIGNoZWNrcyB0aGUgYWN0dWFsIG1lZGlhIHR5cGUgYXBwbGllZCB0byB0aGUgZG9jdW1lbnQs
IGFuZCB3ZSBrbm93Ci0gICAgLy8gdGhpcyBtZXRob2Qgb25seSBnb3QgY2FsbGVkIGlmIHRoaXMg
bWVkaWEgdHlwZSBtYXRjaGVzIHRoZSBvbmUgZGVmaW5lZAotICAgIC8vIGluIHRoZSBxdWVyeS4g
VGh1cywgaWYgaWYgdGhlIGRvY3VtZW50J3MgbWVkaWEgdHlwZSBpcyAicHJpbnQiLCB0aGUKLSAg
ICAvLyBtZWRpYSB0eXBlIG9mIHRoZSBxdWVyeSB3aWxsIGVpdGhlciBiZSAicHJpbnQiIG9yICJh
bGwiLgotICAgIFN0cmluZyBtZWRpYVR5cGUgPSB2aWV3LT5tZWRpYVR5cGUoKTsKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWVkaWFUeXBlLCAic2NyZWVuIl9zKSkKLSAg
ICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCkgOiAxOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1lZGlhVHlwZSwgInByaW50Il9zKSkgewotICAgICAgICAvLyBUaGUgcmVzb2x1
dGlvbiBvZiBpbWFnZXMgd2hpbGUgcHJpbnRpbmcgc2hvdWxkIG5vdCBkZXBlbmQgb24gdGhlIGRw
aQotICAgICAgICAvLyBvZiB0aGUgc2NyZWVuLiBVbnRpbCB3ZSBzdXBwb3J0IHByb3BlciB3YXlz
IG9mIHF1ZXJ5aW5nIHRoaXMgaW5mbwotICAgICAgICAvLyB3ZSB1c2UgMzAwcHggd2hpY2ggaXMg
Y29uc2lkZXJlZCBtaW5pbXVtIGZvciBjdXJyZW50IHByaW50ZXJzLgotICAgICAgICBkZXZpY2VT
Y2FsZUZhY3RvciA9IDMuMTI1OyAvLyAzMDBkcGkgLyA5NmRwaTsKLSAgICB9Ci0KLSAgICBpZiAo
IXZhbHVlKQotICAgICAgICByZXR1cm4gISFkZXZpY2VTY2FsZUZhY3RvcjsKLQotICAgIGlmICgh
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byYgcmVzb2x1dGlvbiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUp
OwotICAgIGZsb2F0IHJlc29sdXRpb25WYWx1ZSA9IHJlc29sdXRpb24uaXNOdW1iZXJPckludGVn
ZXIoKSA/IHJlc29sdXRpb24uZmxvYXRWYWx1ZSgpIDogcmVzb2x1dGlvbi5mbG9hdFZhbHVlKENT
U1VuaXRUeXBlOjpDU1NfRFBQWCk7Ci0gICAgYm9vbCByZXN1bHQgPSBjb21wYXJlVmFsdWUoZGV2
aWNlU2NhbGVGYWN0b3IsIHJlc29sdXRpb25WYWx1ZSwgb3ApOwotICAgIExPR19XSVRIX1NUUkVB
TShNZWRpYVF1ZXJpZXMsIHN0cmVhbSA8PCAiICBldmFsdWF0ZVJlc29sdXRpb246ICIgPDwgb3Ag
PDwgIiAiIDw8IHJlc29sdXRpb25WYWx1ZSA8PCAiIGRldmljZSBzY2FsZSBmYWN0b3IgIiA8PCBk
ZXZpY2VTY2FsZUZhY3RvciA8PCAiOiAiIDw8IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotc3RhdGljIGJvb2wgZGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFG
ZWF0dXJlUHJlZml4IG9wKQotewotICAgIHJldHVybiAoIXZhbHVlIHx8IChpczxDU1NQcmltaXRp
dmVWYWx1ZT4oKnZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5p
c051bWJlck9ySW50ZWdlcigpKSkgJiYgZXZhbHVhdGVSZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwg
b3ApOwotfQotCi1zdGF0aWMgYm9vbCByZXNvbHV0aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZl
YXR1cmVQcmVmaXggb3ApCi17Ci0gICAgaWYgKCFmcmFtZS5zZXR0aW5ncygpLnJlc29sdXRpb25N
ZWRpYUZlYXR1cmVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biAoIXZhbHVlIHx8IChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSAmJiBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5pc1Jlc29sdXRpb24oKSkpICYmIGV2YWx1YXRlUmVz
b2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKLX0KLQotc3RhdGljIGJvb2wgZHluYW1pY1Jhbmdl
RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBzdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2U7Ci0KLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRTdXBwb3J0c0hpZ2hEeW5hbWlj
UmFuZ2VWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T24pCi0gICAgICAgIHN1
cHBvcnRzSGlnaER5bmFtaWNSYW5nZSA9IHRydWU7Ci0gICAgZWxzZSBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5mb3JjZWRTdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2VWYWx1ZSgpID09IEZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T2ZmKQotICAgICAgICBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UgPSBm
YWxzZTsKLSAgICBlbHNlCi0gICAgICAgIHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSA9IHNjcmVl
blN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOwotCi0g
ICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkp
IHsKLSAgICBjYXNlIENTU1ZhbHVlSGlnaDoKLSAgICAgICAgcmV0dXJuIHN1cHBvcnRzSGlnaER5
bmFtaWNSYW5nZTsKLSAgICBjYXNlIENTU1ZhbHVlU3RhbmRhcmQ6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gQW55IHVua25vd24g
dmFsdWUgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGEgbWF0Y2guCi0gICAgfQotfQotCi1zdGF0
aWMgYm9vbCBzY2FuRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAg
UmVmUHRyIHZpZXcgPSBmcmFtZS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvKiBXaXRoIE1lZGlhIFF1ZXJpZXMgTGV2ZWwgNCwgdGhlICJ0diIg
bWVkaWEgdHlwZSBpcyBkZXByZWNhdGVkCi0gICAgICogYW5kIHRoZSAic2NhbiIgZmVhdHVyZSBh
cHBsaWVzIHRvIGFsbCBtZWRpYSB0eXBlcy4KLSAgICAgKiBXZSBhcmUgY3VycmVudGx5IHN1cHBv
cnRpbmcgTWVkaWEgUXVlcmllcyBMZXZlbCAzLAotICAgICAqIHRodXMgdGhlIGNoZWNrIGFnYWlu
c3QgInR2Ii4KLSAgICAgKi8KLSAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZpZXctPm1lZGlhVHlwZSgpLCAidHYiX3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvKiBwcmltaXRpdmVWYWx1ZSA9IGR5bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwotICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIEFsbCBrbm93biBpbXBsZW1lbnRhdGlvbnMgKEJsaW5rLCBHZWNrbykgYXNz
dW1lIGFuZCBtYXRjaCAicHJvZ3Jlc3NpdmUiLgotICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+
dmFsdWVJRCgpID09IENTU1ZhbHVlUHJvZ3Jlc3NpdmU7Ci19Ci0KLXN0YXRpYyBib29sIGZvcmNl
ZENvbG9yc0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGF1dG8qIHByaW1p
dGl2ZVZhbHVlID0gZHluYW1pY0Rvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0g
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
T24gQ29jb2EgcGxhdGZvcm1zLCB0aGVyZSBpcyBubyBjb25jZXB0IG9mICJmb3JjZWQgY29sb3Jz
Ii4KLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7
Ci19Ci0KLXN0YXRpYyBib29sIGdyaWRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkK
LXsKLSAgICByZXR1cm4gemVyb0V2YWx1YXRlKHZhbHVlLCBvcCk7Ci19Ci0KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gY29tcHV0ZUxlbmd0aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3Ry
aWN0LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkKLXsK
LSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlck9y
SW50ZWdlcigpKSB7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmRvdWJs
ZVZhbHVlKCk7Ci0gICAgICAgIC8vIFRoZSBvbmx5IHVuaXRsZXNzIG51bWJlciB2YWx1ZSBhbGxv
d2VkIGluIHN0cmljdCBtb2RlIGlzIHplcm8uCi0gICAgICAgIGlmIChzdHJpY3QgJiYgdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgfQotCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGRvdWJsZT4oY29udmVyc2lvbkRhdGEp
OwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RhdGljIGJvb2wgZGV2aWNlSGVp
Z2h0RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3Ap
Ci17Ci0gICAgLy8gKHssbWluLSxtYXgtfWRldmljZS1oZWlnaHQpCi0gICAgLy8gYXNzdW1lIGlm
IHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybwotICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gbGVuZ3RoID0gY29tcHV0ZUxlbmd0aCh2YWx1ZSwg
IWZyYW1lLmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBjb252ZXJzaW9uRGF0YSk7Ci0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gaGVpZ2h0ID0g
ZnJhbWUubWFpbkZyYW1lKCkuc2NyZWVuU2l6ZSgpLmhlaWdodCgpOwotICAgIExPR19XSVRIX1NU
UkVBTShNZWRpYVF1ZXJpZXMsIHN0cmVhbSA8PCAiICBkZXZpY2VIZWlnaHRFdmFsdWF0ZTogcXVl
cnkgIiA8PCBvcCA8PCAiIGhlaWdodCAiIDw8ICpsZW5ndGggPDwgIiwgYWN0dWFsIGhlaWdodCAi
IDw8IGhlaWdodCA8PCAiIHJlc3VsdDogIiA8PCBjb21wYXJlVmFsdWUoaGVpZ2h0LCAqbGVuZ3Ro
LCBvcCkpOwotICAgIHJldHVybiBjb21wYXJlVmFsdWUoaGVpZ2h0LCAqbGVuZ3RoLCBvcCk7Ci19
Ci0KLXN0YXRpYyBib29sIGRldmljZVdpZHRoRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1l
LCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgLy8gKHssbWluLSxtYXgtfWRldmljZS13
aWR0aCkKLSAgICAvLyBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16ZXJv
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYXV0byBsZW5ndGgg
PSBjb21wdXRlTGVuZ3RoKHZhbHVlLCAhZnJhbWUuZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCks
IGNvbnZlcnNpb25EYXRhKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXV0byB3aWR0aCA9IGZyYW1lLm1haW5GcmFtZSgpLnNjcmVlblNpemUoKS53aWR0
aCgpOwotICAgIExPR19XSVRIX1NUUkVBTShNZWRpYVF1ZXJpZXMsIHN0cmVhbSA8PCAiICBkZXZp
Y2VXaWR0aEV2YWx1YXRlOiBxdWVyeSAiIDw8IG9wIDw8ICIgd2lkdGggIiA8PCAqbGVuZ3RoIDw8
ICIsIGFjdHVhbCB3aWR0aCAiIDw8IHdpZHRoIDw8ICIgcmVzdWx0OiAiIDw8IGNvbXBhcmVWYWx1
ZSh3aWR0aCwgKmxlbmd0aCwgb3ApKTsKLSAgICByZXR1cm4gY29tcGFyZVZhbHVlKHdpZHRoLCAq
bGVuZ3RoLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIGhlaWdodEV2YWx1YXRlKENTU1ZhbHVlKiB2
YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZy
YW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIEZyYW1lVmlldyogdmll
dyA9IGZyYW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpbnQgaGVpZ2h0ID0gdmlldy0+bGF5b3V0SGVpZ2h0KCk7Ci0gICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgcmV0dXJuIGhlaWdodDsKLQotICAgIGF1dG8gbGVuZ3RoID0gY29tcHV0ZUxlbmd0
aCh2YWx1ZSwgIWZyYW1lLmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBjb252ZXJzaW9uRGF0
YSk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChh
dXRvKiByZW5kZXJWaWV3ID0gZnJhbWUuZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQotICAgICAg
ICBoZWlnaHQgPSBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaGVpZ2h0LCAqcmVuZGVyVmlldyk7Ci0K
LSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIiAgaGVpZ2h0RXZh
bHVhdGU6IHF1ZXJ5ICIgPDwgb3AgPDwgIiBoZWlnaHQgIiA8PCAqbGVuZ3RoIDw8ICIsIGFjdHVh
bCBoZWlnaHQgIiA8PCBoZWlnaHQgPDwgIiByZXN1bHQ6ICIgPDwgY29tcGFyZVZhbHVlKGhlaWdo
dCwgKmxlbmd0aCwgb3ApKTsKLSAgICByZXR1cm4gY29tcGFyZVZhbHVlKGhlaWdodCwgKmxlbmd0
aCwgb3ApOwotfQotCi1zdGF0aWMgYm9vbCB3aWR0aEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBm
cmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIEZyYW1lVmlldyogdmlldyA9IGZy
YW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
bnQgd2lkdGggPSB2aWV3LT5sYXlvdXRXaWR0aCgpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAg
IHJldHVybiB3aWR0aDsKLQotICAgIGF1dG8gbGVuZ3RoID0gY29tcHV0ZUxlbmd0aCh2YWx1ZSwg
IWZyYW1lLmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBjb252ZXJzaW9uRGF0YSk7Ci0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhdXRvKiByZW5k
ZXJWaWV3ID0gZnJhbWUuZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQotICAgICAgICB3aWR0aCA9
IGFkanVzdEZvckFic29sdXRlWm9vbSh3aWR0aCwgKnJlbmRlclZpZXcpOwotCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIHdpZHRoRXZhbHVhdGU6IHF1ZXJ5
ICIgPDwgb3AgPDwgIiB3aWR0aCAiIDw8ICpsZW5ndGggPDwgIiwgYWN0dWFsIHdpZHRoICIgPDwg
d2lkdGggPDwgIiByZXN1bHQ6ICIgPDwgY29tcGFyZVZhbHVlKHdpZHRoLCAqbGVuZ3RoLCBvcCkp
OwotICAgIHJldHVybiBjb21wYXJlVmFsdWUod2lkdGgsICpsZW5ndGgsIG9wKTsKLX0KLQotc3Rh
dGljIGJvb2wgbWluQ29sb3JFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVh
dHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gY29sb3JFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lv
bkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhDb2xvckV2YWx1
YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJl
dHVybiBjb2xvckV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZp
eCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkNvbG9ySW5kZXhFdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFt
ZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gY29sb3JJbmRleEV2
YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0
YXRpYyBib29sIG1heENvbG9ySW5kZXhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1l
ZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gY29sb3JJbmRleEV2YWx1YXRlKHZhbHVl
LCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1p
bk1vbm9jaHJvbWVFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVBy
ZWZpeCkKLXsKLSAgICByZXR1cm4gbW9ub2Nocm9tZUV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9u
RGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1heE1vbm9jaHJvbWVF
dmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
IGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAg
ICByZXR1cm4gbW9ub2Nocm9tZUV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUs
IE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NT
VmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9u
RGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGFz
cGVjdFJhdGlvRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWluUHJlZml4
KTsKLX0KLQotc3RhdGljIGJvb2wgbWF4QXNwZWN0UmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFt
ZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gYXNwZWN0UmF0aW9F
dmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNYXhQcmVmaXgpOwotfQotCi1z
dGF0aWMgYm9vbCBtaW5EZXZpY2VBc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBm
cmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VBc3BlY3RSYXRp
b0V2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0K
LXN0YXRpYyBib29sIG1heERldmljZUFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUm
IGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGRldmljZUFzcGVjdFJh
dGlvRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0K
LQotc3RhdGljIGJvb2wgbWluRGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1l
JiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VQaXhlbFJh
dGlvRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWluUHJlZml4KTsKLX0K
LQotc3RhdGljIGJvb2wgbWF4RGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1l
JiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VQaXhlbFJh
dGlvRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0K
LQotc3RhdGljIGJvb2wgbWluSGVpZ2h0RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBN
ZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGhlaWdodEV2YWx1YXRlKHZhbHVlLCBj
b252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1heEhl
aWdodEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQot
ewotICAgIHJldHVybiBoZWlnaHRFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1l
LCBNYXhQcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtaW5XaWR0aEV2YWx1YXRlKENTU1ZhbHVl
KiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEs
IEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiB3aWR0aEV2
YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0
YXRpYyBib29sIG1heFdpZHRoRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZl
YXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIHdpZHRoRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNp
b25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQotc3RhdGljIGJvb2wgbWluRGV2aWNlSGVp
Z2h0RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17
Ci0gICAgcmV0dXJuIGRldmljZUhlaWdodEV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwg
ZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1heERldmljZUhlaWdodEV2YWx1
YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJl
dHVybiBkZXZpY2VIZWlnaHRFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBN
YXhQcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtaW5EZXZpY2VXaWR0aEV2YWx1YXRlKENTU1Zh
bHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRh
dGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZp
Y2VXaWR0aEV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7
Ci19Ci0KLXN0YXRpYyBib29sIG1heERldmljZVdpZHRoRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUm
IGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGRldmljZVdpZHRoRXZh
bHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQotc3Rh
dGljIGJvb2wgbWluUmVzb2x1dGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVk
aWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiByZXNvbHV0aW9uRXZhbHVhdGUodmFsdWUs
IGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWluUHJlZml4KTsKLX0KLQotc3RhdGljIGJvb2wgbWF4
UmVzb2x1dGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJl
Zml4KQotewotICAgIHJldHVybiByZXNvbHV0aW9uRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25E
YXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQotc3RhdGljIGJvb2wgYW5pbWF0aW9uRXZhbHVh
dGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJh
bWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgcmV0dXJuIG9uZUV2YWx1YXRlKHZh
bHVlLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIHRyYW5zaXRpb25FdmFsdWF0ZShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYsIE1lZGlhRmVh
dHVyZVByZWZpeCBvcCkKLXsKLSAgICByZXR1cm4gb25lRXZhbHVhdGUodmFsdWUsIG9wKTsKLX0K
LQotc3RhdGljIGJvb2wgdHJhbnNmb3JtMmRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYsIE1lZGlhRmVhdHVyZVByZWZpeCBv
cCkKLXsKLSAgICByZXR1cm4gb25lRXZhbHVhdGUodmFsdWUsIG9wKTsKLX0KLQotc3RhdGljIGJv
b2wgdHJhbnNmb3JtM2RFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsK
LSNpZiBFTkFCTEUoM0RfVFJBTlNGT1JNUykKLSAgICBhdXRvKiB2aWV3ID0gZnJhbWUuY29udGVu
dFJlbmRlcmVyKCk7Ci0gICAgcmV0dXJuIHZpZXcgJiYgdmlldy0+Y29tcG9zaXRvcigpLmNhblJl
bmRlcjNEVHJhbnNmb3JtcygpID8gb25lRXZhbHVhdGUodmFsdWUsIG9wKSA6IHplcm9FdmFsdWF0
ZSh2YWx1ZSwgb3ApOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwotICAgIHJldHVy
biB6ZXJvRXZhbHVhdGUodmFsdWUsIG9wKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgYm9vbCB2aWRl
b1BsYXlhYmxlSW5saW5lRXZhbHVhdGUoQ1NTVmFsdWUqLCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0
dXJuIGZyYW1lLnNldHRpbmdzKCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjaygpOwotfQotCi1z
dGF0aWMgYm9vbCBob3ZlckV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewot
ICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCk7Ci0gICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5
UHJpbWFyeVBvaW50aW5nRGV2aWNlID0gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5o
b3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlKCk7Ci0KLSAgICBpZiAoIWlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBob3ZlclN1cHBvcnRlZEJ5
UHJpbWFyeVBvaW50aW5nRGV2aWNlOwotCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwotICAgIHJldHVybiBob3ZlclN1cHBv
cnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlID8gKGtleXdvcmQgPT0gQ1NTVmFsdWVIb3Zlcikg
OiAoa2V5d29yZCA9PSBDU1NWYWx1ZU5vbmUpOwotfQotCi1zdGF0aWMgYm9vbCBhbnlIb3ZlckV2
YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYs
IEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGF1dG8qIHBhZ2UgPSBm
cmFtZS5wYWdlKCk7Ci0gICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRp
bmdEZXZpY2UgPSBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhvdmVyU3VwcG9ydGVk
QnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgpOwotCi0gICAgaWYgKCFpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWls
YWJsZVBvaW50aW5nRGV2aWNlOwotCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwotICAgIHJldHVybiBob3ZlclN1cHBvcnRl
ZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UgPyAoa2V5d29yZCA9PSBDU1NWYWx1ZUhvdmVy
KSA6IChrZXl3b3JkID09IENTU1ZhbHVlTm9uZSk7Ci19Ci0KLXN0YXRpYyBib29sIHBvaW50ZXJF
dmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
LCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdlID0g
ZnJhbWUucGFnZSgpOwotICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBv
aW50aW5nRGV2aWNlID0gcGFnZSA/IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIDogc3RkOjpvcHRpb25hbDxQb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzPigpOwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBp
ZiAocG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlID09IFBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZSkgewotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGZy
YW1lLmRvY3VtZW50KCk7Ci0gICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+cXVpcmtz
KCkuc2hvdWxkUHJldmVudFBvaW50ZXJNZWRpYVF1ZXJ5RnJvbUV2YWx1YXRpbmdUb0NvYXJzZSgp
KQotICAgICAgICAgICAgcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2
aWNlID0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICEhcG9p
bnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlOwotCi0gICAgYXV0byBr
ZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwot
ICAgIGlmIChrZXl3b3JkID09IENTU1ZhbHVlRmluZSkKLSAgICAgICAgcmV0dXJuIHBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9PSBQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzOjpGaW5lOwotICAgIGlmIChrZXl3b3JkID09IENTU1ZhbHVlQ29hcnNlKQotICAgICAg
ICByZXR1cm4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlID09
IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkNvYXJzZTsKLSAgICBpZiAoa2V5d29yZCA9PSBDU1NW
YWx1ZU5vbmUpCi0gICAgICAgIHJldHVybiAhcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFy
eVBvaW50aW5nRGV2aWNlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgYW55
UG9pbnRlckV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGF1dG8q
IHBhZ2UgPSBmcmFtZS5wYWdlKCk7Ci0gICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZB
bGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMgPSBwYWdlID8gcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkucG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2VzKCkg
OiBPcHRpb25TZXQ8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4oKTsKLQotICAgIGlmICghaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICFwb2ludGVyQ2hhcmFjdGVy
aXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMuaXNFbXB0eSgpOwotCi0gICAgYXV0
byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgp
OwotICAgIGlmIChrZXl3b3JkID09IENTU1ZhbHVlRmluZSkKLSAgICAgICAgcmV0dXJuIHBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcy5jb250YWlucyhQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lKTsKLSAgICBpZiAoa2V5d29yZCA9PSBDU1NWYWx1
ZUNvYXJzZSkKLSAgICAgICAgcmV0dXJuIHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWls
YWJsZVBvaW50aW5nRGV2aWNlcy5jb250YWlucyhQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fy
c2UpOwotICAgIGlmIChrZXl3b3JkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgcmV0dXJuIHBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcy5pc0VtcHR5
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBwcmVmZXJzRGFya0ludGVy
ZmFjZUV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGJvb2wgcHJl
ZmVyc0RhcmtJbnRlcmZhY2UgPSBmYWxzZTsKLQotICAgIGlmIChmcmFtZS5wYWdlKCktPnVzZVN5
c3RlbUFwcGVhcmFuY2UoKSAmJiBmcmFtZS5wYWdlKCktPnVzZURhcmtBcHBlYXJhbmNlKCkpCi0g
ICAgICAgIHByZWZlcnNEYXJrSW50ZXJmYWNlID0gdHJ1ZTsKLQotICAgIGlmICghdmFsdWUpCi0g
ICAgICAgIHJldHVybiBwcmVmZXJzRGFya0ludGVyZmFjZTsKLQotICAgIHJldHVybiBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkgPT0gKHByZWZlcnNEYXJrSW50
ZXJmYWNlID8gQ1NTVmFsdWVQcmVmZXJzIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2UpOwotfQotCi0j
aWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi1zdGF0aWMgYm9vbCBwcmVmZXJzQ29sb3JTY2hlbWVF
dmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
LCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBpZiAoIXZhbHVlKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwotICAgIGJvb2wgdXNlRGFy
a0FwcGVhcmFuY2UgPSBbJl0gKCkgLT4gYXV0byB7Ci0gICAgICAgIGlmIChmcmFtZS5kb2N1bWVu
dCgpLT5sb2FkZXIoKSkgewotICAgICAgICAgICAgYXV0byBjb2xvclNjaGVtZVByZWZlcmVuY2Ug
PSBmcmFtZS5kb2N1bWVudCgpLT5sb2FkZXIoKS0+Y29sb3JTY2hlbWVQcmVmZXJlbmNlKCk7Ci0g
ICAgICAgICAgICBpZiAoY29sb3JTY2hlbWVQcmVmZXJlbmNlICE9IENvbG9yU2NoZW1lUHJlZmVy
ZW5jZTo6Tm9QcmVmZXJlbmNlKQotICAgICAgICAgICAgICAgIHJldHVybiBjb2xvclNjaGVtZVBy
ZWZlcmVuY2UgPT0gQ29sb3JTY2hlbWVQcmVmZXJlbmNlOjpEYXJrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIGZyYW1lLnBhZ2UoKS0+dXNlRGFya0FwcGVhcmFuY2UoKTsKLSAgICB9KCk7
Ci0KLSAgICBzd2l0Y2ggKGtleXdvcmQpIHsKLSAgICBjYXNlIENTU1ZhbHVlRGFyazoKLSAgICAg
ICAgcmV0dXJuIHVzZURhcmtBcHBlYXJhbmNlOwotICAgIGNhc2UgQ1NTVmFsdWVMaWdodDoKLSAg
ICAgICAgcmV0dXJuICF1c2VEYXJrQXBwZWFyYW5jZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotI2VuZGlmCi0KLXN0YXRpYyBib29sIHByZWZlcnNDb250
cmFzdEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGJvb2wgdXNl
clByZWZlcnNDb250cmFzdCA9IGZhbHNlOwotCi0gICAgc3dpdGNoIChmcmFtZS5zZXR0aW5ncygp
LmZvcmNlZFByZWZlcnNDb250cmFzdEFjY2Vzc2liaWxpdHlWYWx1ZSgpKSB7Ci0gICAgY2FzZSBG
b3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uOgotICAgICAgICB1c2VyUHJlZmVyc0NvbnRyYXN0
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWU6Ok9mZjoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWU6OlN5c3RlbToKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgICAgIHVzZXJQcmVmZXJzQ29udHJhc3QgPSBUaGVtZTo6c2luZ2xldG9uKCkudXNlclByZWZl
cnNDb250cmFzdCgpOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiB1c2VyUHJlZmVyc0NvbnRyYXN0OwotCi0gICAgLy8gQXBw
bGUgcGxhdGZvcm1zOiAibGVzcyIgaXMgaWdub3JlZCBhbmQgb25seSAibW9yZSIgaXMgbWFwcGVk
IHRvIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZS4KLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09ICh1c2VyUHJlZmVyc0NvbnRyYXN0ID8gQ1NT
VmFsdWVNb3JlIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2UpOwotfQotCi1zdGF0aWMgYm9vbCBwcmVm
ZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewot
ICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gZmFsc2U7Ci0KLSAgICBzd2l0Y2gg
KGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5
VmFsdWUoKSkgewotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbjoKLSAgICAg
ICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZjoKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6OlN5c3RlbToKLSNpZiBVU0UoTkVXX1RIRU1F
KSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rp
b24gPSBUaGVtZTo6c2luZ2xldG9uKCkudXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCk7Ci0jZW5k
aWYKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0
dXJuIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbjsKLQotICAgIHJldHVybiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkgPT0gKHVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbiA/IENTU1ZhbHVlUmVkdWNlIDogQ1NTVmFsdWVOb1ByZWZlcmVuY2UpOwotfQotCi0jaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotc3RhdGljIGJvb2wgZGlzcGxheU1vZGVFdmFs
dWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBG
cmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBpZiAoIXZhbHVlKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKLQotICAgIGF1dG8gbWFuaWZlc3QgPSBmcmFt
ZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmFwcGxpY2F0aW9uTWFuaWZlc3QoKSA6IHN0ZDo6bnVs
bG9wdDsKLSAgICBpZiAoIW1hbmlmZXN0KQotICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBDU1NW
YWx1ZUJyb3dzZXI7Ci0KLSAgICBzd2l0Y2ggKG1hbmlmZXN0LT5kaXNwbGF5KSB7Ci0gICAgY2Fz
ZSBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5OjpGdWxsc2NyZWVuOgotICAgICAgICByZXR1
cm4ga2V5d29yZCA9PSBDU1NWYWx1ZUZ1bGxzY3JlZW47Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1h
bmlmZXN0OjpEaXNwbGF5OjpTdGFuZGFsb25lOgotICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBD
U1NWYWx1ZVN0YW5kYWxvbmU7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNwbGF5
OjpNaW5pbWFsVUk6Ci0gICAgICAgIHJldHVybiBrZXl3b3JkID09IENTU1ZhbHVlTWluaW1hbFVp
OwotICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6QnJvd3NlcjoKLSAgICAg
ICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVCcm93c2VyOwotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0KLS8v
IFVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YgY2FsbGluZyBhZGQgZGlyZWN0bHkgdG8gYXZv
aWQgaW5saW5pbmcuCi1zdGF0aWMgdm9pZCBhZGQoTWVkaWFRdWVyeUZ1bmN0aW9uTWFwJiBtYXAs
IEF0b21TdHJpbmdJbXBsKiBrZXksIE1lZGlhUXVlcnlGdW5jdGlvbiB2YWx1ZSkKLXsKLSAgICBt
YXAuYWRkKGtleSwgdmFsdWUpOwotfQotCi1ib29sIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBleHByZXNzaW9uKSBjb25zdAot
ewotICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIG1fZmFsbGJhY2tSZXN1bHQ7
Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9ICptX2RvY3VtZW50OwotICAgIGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpIHx8ICFt
X3N0eWxlKQotICAgICAgICByZXR1cm4gbV9mYWxsYmFja1Jlc3VsdDsKLQotICAgIGlmICghZXhw
cmVzc2lvbi5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxNZWRpYVF1ZXJ5RnVuY3Rpb25NYXA+IG1hcCA9IFtdIHsKLSAgICAgICAg
TWVkaWFRdWVyeUZ1bmN0aW9uTWFwIG1hcDsKLSNkZWZpbmUgQUREX1RPX0ZVTkNUSU9OTUFQKG5h
bWUsIHN0cikgYWRkKG1hcCwgTWVkaWFGZWF0dXJlTmFtZXM6Om5hbWUtPmltcGwoKSwgbmFtZSMj
RXZhbHVhdGUpOwotICAgICAgICBDU1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZF
QVRVUkUoQUREX1RPX0ZVTkNUSU9OTUFQKTsKLSN1bmRlZiBBRERfVE9fRlVOQ1RJT05NQVAKLSAg
ICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCk7Ci0KLSAgICBhdXRvIGZ1bmN0aW9uID0gbWFwLmdl
dCgpLmdldChleHByZXNzaW9uLm1lZGlhRmVhdHVyZSgpLmltcGwoKSk7Ci0gICAgaWYgKCFmdW5j
dGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkZWZhdWx0U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBk
ZWZhdWx0U3R5bGUuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgYXV0byBzaXplID0gU3R5bGU6OmZv
bnRTaXplRm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwgZmFsc2UsIGRvY3VtZW50KTsKLSAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKHNpemUpOwotICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOwotICAgIGRlZmF1bHRTdHlsZS5zZXRGb250RGVzY3Jp
cHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKLSAgICBkZWZhdWx0U3R5bGUuZm9udENh
c2NhZGUoKS51cGRhdGUoKTsKLSAgICAKLSAgICAvLyBQYXNzIGBudWxscHRyYCBmb3IgYHBhcmVu
dFN0eWxlYCBiZWNhdXNlIHdlIGFyZSBpbiB0aGUgY29udGV4dCBvZiBhIG1lZGlhIHF1ZXJ5Lgot
ICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsgKm1fc3R5bGUsICZkZWZh
dWx0U3R5bGUsIG51bGxwdHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSB9LCAqZnJhbWUsIE5vUHJl
Zml4KTsKLX0KLQotYm9vbCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0
ZU1hdGNoZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVl
KQotewotICAgIEFTU0VSVChkb2N1bWVudC5yZW5kZXJWaWV3KCkpOwotICAgIGF1dG8gbWVkaWFR
dWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKGF0dHJpYnV0ZVZhbHVlLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0
eWxlKCkgfS5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpOwotfQotCi0KLU9wdGlvblNldDxN
UTo6TWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmN5PiBtZWRpYVF1ZXJ5RHluYW1pY0RlcGVuZGVu
Y2llcyhjb25zdCBNZWRpYVF1ZXJ5U2V0JiBxdWVyaWVzLCBjb25zdCBMZWdhY3lNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiBldmFsdWF0b3IpCi17Ci0gICAgT3B0aW9uU2V0PE1ROjpNZWRpYVF1ZXJ5RHlu
YW1pY0RlcGVuZGVuY3k+IHJlc3VsdDsKLQotICAgIGZvciAoYXV0byYgcXVlcnkgOiBxdWVyaWVz
LnF1ZXJ5VmVjdG9yKCkpIHsKLSAgICAgICAgaWYgKHF1ZXJ5Lmlnbm9yZWQoKSB8fCAoIXF1ZXJ5
LmV4cHJlc3Npb25zKCkuc2l6ZSgpICYmIHF1ZXJ5Lm1lZGlhVHlwZSgpLmlzRW1wdHkoKSkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIWV2YWx1YXRvci5tZWRpYVR5cGVN
YXRjaChxdWVyeS5tZWRpYVR5cGUoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBxdWVyeS5leHByZXNzaW9ucygpKSB7Ci0gICAgICAg
ICAgICBpZiAoZXhwcmVzc2lvbi5pc1ZpZXdwb3J0RGVwZW5kZW50KCkpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChNUTo6TWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmN5OjpWaWV3cG9ydCk7
Ci0gICAgICAgICAgICBpZiAoaXNBcHBlYXJhbmNlRGVwZW5kZW50KGV4cHJlc3Npb24ubWVkaWFG
ZWF0dXJlKCkpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoTVE6Ok1lZGlhUXVlcnlEeW5h
bWljRGVwZW5kZW5jeTo6QXBwZWFyYW5jZSk7Ci0gICAgICAgICAgICBpZiAoaXNBY2Nlc3NpYmls
aXR5U2V0dGluZ3NEZXBlbmRlbnQoZXhwcmVzc2lvbi5tZWRpYUZlYXR1cmUoKSkpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChNUTo6TWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmN5OjpBY2Nl
c3NpYmlsaXR5KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LX0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5Mjc0OTY2NGNmNS4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ1NTIE1lZGlhIFF1
ZXJ5IEV2YWx1YXRvcgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8
a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkludFNpemUuaCIKLSNp
bmNsdWRlICJNZWRpYVF1ZXJ5LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeUV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IERvY3VtZW50OwotY2xhc3MgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhOwotY2xhc3Mg
TWVkaWFRdWVyeVNldDsKLWNsYXNzIFJlbmRlclN0eWxlOwotCi1zdHJ1Y3QgTWVkaWFRdWVyeVJl
c3VsdCB7Ci0gICAgUmVmPGNvbnN0IE1lZGlhUXVlcnlTZXQ+IHF1ZXJ5OwotICAgIGJvb2wgcmVz
dWx0OwotfTsKLQotLy8gU29tZSBvZiB0aGUgY29uc3RydWN0b3JzIGFyZSB1c2VkIGZvciBjYXNl
cyB3aGVyZSB0aGUgZGV2aWNlIGNoYXJhY3RlcmlzdGljcyBhcmUgbm90IGtub3duLgotLy8gVGhl
c2UgIGNhbiBiZSB1c2VkIHRvIHBydW5lIHRoZSBsb2FkaW5nIG9mIHN0eWxlc2hlZXRzIHRvIG9u
bHkgdGhvc2Ugd2hpY2ggYXJlIG5vdCBhbHJlYWR5IGtub3duIHRvIG5vdCBtYXRjaC4KLQotY2xh
c3MgTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ3JlYXRlcyBl
dmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMuCi0gICAg
Ly8gRXZhbHVhdG9yIHJldHVybnMgdHJ1ZSBmb3IgImFsbCIsIGFuZCByZXR1cm5zIHZhbHVlIG9m
IFxtZWRpYUZlYXR1cmVSZXN1bHQgZm9yIGFueSBtZWRpYSBmZWF0dXJlcy4KLSAgICBleHBsaWNp
dCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0ID0gZmFs
c2UpOwotCi0gICAgLy8gQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2lt
cGxlIG1lZGlhIHF1ZXJpZXMuCi0gICAgLy8gRXZhbHVhdG9yIHJldHVybnMgdHJ1ZSBmb3IgYWNj
ZXB0ZWRNZWRpYVR5cGUgYW5kIHJldHVybnMgdmFsdWUgb2YgXG1lZGlhRmVhdHVyZVJlc3VsdCBm
b3IgYW55IG1lZGlhIGZlYXR1cmVzLgotICAgIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IoY29u
c3QgU3RyaW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwgYm9vbCBtZWRpYUZlYXR1cmVSZXN1bHQgPSBm
YWxzZSk7Ci0KLSAgICAvLyBDcmVhdGVzIGV2YWx1YXRvciB3aGljaCBldmFsdWF0ZXMgZnVsbCBt
ZWRpYSBxdWVyaWVzLgotICAgIFdFQkNPUkVfRVhQT1JUIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0
b3IoY29uc3QgU3RyaW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwgY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSopOwotCi0gICAgYm9vbCBtZWRpYVR5cGVNYXRjaChjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0OwotICAgIGJvb2wgbWVkaWFUeXBlTWF0Y2hTcGVjaWZp
YyhBU0NJSUxpdGVyYWwgbWVkaWFUeXBlVG9NYXRjaCkgY29uc3Q7Ci0KLSAgICAvLyBFdmFsdWF0
ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTogdmFs
dWUpIiBwYXJ0LgotICAgIGJvb2wgZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24m
KSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXZhbHVhdGUoY29uc3QgTWVkaWFR
dWVyeVNldCYpIGNvbnN0OwotCi0gICAgc3RhdGljIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVz
KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7Ci0KLXByaXZhdGU6Ci0g
ICAgU3RyaW5nIG1fbWVkaWFUeXBlOwotICAgIFdlYWtQdHI8Y29uc3QgRG9jdW1lbnQsIFdlYWtQ
dHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9kb2N1bWVudDsKLSAgICBjb25zdCBSZW5kZXJT
dHlsZSogbV9zdHlsZSB7IG51bGxwdHIgfTsKLSAgICBib29sIG1fZmFsbGJhY2tSZXN1bHQgeyBm
YWxzZSB9OwotfTsKLQotT3B0aW9uU2V0PE1ROjpNZWRpYVF1ZXJ5RHluYW1pY0RlcGVuZGVuY3k+
IG1lZGlhUXVlcnlEeW5hbWljRGVwZW5kZW5jaWVzKGNvbnN0IE1lZGlhUXVlcnlTZXQmLCBjb25z
dCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yJik7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNThmYzg3YmRjYzAxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhRmVhdHVyZU5hbWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCi0KLSNpbmNsdWRlICJDb21tb25BdG9t
U3RyaW5ncy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTWVkaWFGZWF0dXJl
TmFtZXMgewotCi0jZGVmaW5lIERFRklORV9NRURJQUZFQVRVUkVfR0xPQkFMKG5hbWUsIHN0cmlu
ZykgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG5hbWU7Ci1DU1NfTUVESUFR
VUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoREVGSU5FX01FRElBRkVBVFVSRV9HTE9C
QUwpCi0jdW5kZWYgREVGSU5FX01FRElBRkVBVFVSRV9HTE9CQUwKLQotdm9pZCBpbml0KCkKLXsK
LSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0g
ICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygpOwotI2RlZmluZSBJTklUSUFMSVpF
X0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3RydWN0KHN0cmluZyAjIyBfcyk7Ci0gICAg
ICAgIENTU19NRURJQVFVRVJZX05BTUVTX0ZPUl9FQUNIX01FRElBRkVBVFVSRShJTklUSUFMSVpF
X0dMT0JBTCkKLSN1bmRlZiBJTklUSUFMSVpFX0dMT0JBTAotICAgICAgICBpbml0aWFsaXplZCA9
IHRydWU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcwotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
RmVhdHVyZU5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwYTIzOWY4MWY3Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
LQotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSNkZWZpbmUgQ1NTX01FRElBUVVF
UllfRElTUExBWV9NT0RFKG1hY3JvKSBtYWNybyhkaXNwbGF5TW9kZSwgImRpc3BsYXktbW9kZSIp
Ci0jZWxzZQotI2RlZmluZSBDU1NfTUVESUFRVUVSWV9ESVNQTEFZX01PREUobWFjcm8pCi0jZW5k
aWYKLQotI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotI2RlZmluZSBDU1NfTUVESUFRVUVSWV9Q
UkVGRVJTX0NPTE9SX1NDSEVNRShtYWNybykgbWFjcm8ocHJlZmVyc0NvbG9yU2NoZW1lLCAicHJl
ZmVycy1jb2xvci1zY2hlbWUiKQotI2Vsc2UKLSNkZWZpbmUgQ1NTX01FRElBUVVFUllfUFJFRkVS
U19DT0xPUl9TQ0hFTUUobWFjcm8pCi0jZW5kaWYKLQotI2RlZmluZSBDU1NfTUVESUFRVUVSWV9O
QU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUobWFjcm8pIFwKLSAgICBtYWNybyhhbmltYXRpb24s
ICItd2Via2l0LWFuaW1hdGlvbiIpIFwKLSAgICBtYWNybyhhbnlIb3ZlciwgImFueS1ob3ZlciIp
IFwKLSAgICBtYWNybyhhbnlQb2ludGVyLCAiYW55LXBvaW50ZXIiKSBcCi0gICAgbWFjcm8oYXNw
ZWN0UmF0aW8sICJhc3BlY3QtcmF0aW8iKSBcCi0gICAgbWFjcm8oY29sb3IsICJjb2xvciIpIFwK
LSAgICBtYWNybyhjb2xvckdhbXV0LCAiY29sb3ItZ2FtdXQiKSBcCi0gICAgbWFjcm8oY29sb3JJ
bmRleCwgImNvbG9yLWluZGV4IikgXAotICAgIG1hY3JvKGRldmljZUFzcGVjdFJhdGlvLCAiZGV2
aWNlLWFzcGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhkZXZpY2VIZWlnaHQsICJkZXZpY2UtaGVp
Z2h0IikgXAotICAgIG1hY3JvKGRldmljZVBpeGVsUmF0aW8sICItd2Via2l0LWRldmljZS1waXhl
bC1yYXRpbyIpIFwKLSAgICBtYWNybyhkZXZpY2VXaWR0aCwgImRldmljZS13aWR0aCIpIFwKLSAg
ICBtYWNybyhkeW5hbWljUmFuZ2UsICJkeW5hbWljLXJhbmdlIikgXAotICAgIG1hY3JvKGZvcmNl
ZENvbG9ycywgImZvcmNlZC1jb2xvcnMiKSBcCi0gICAgbWFjcm8oZ3JpZCwgImdyaWQiKSBcCi0g
ICAgbWFjcm8oaGVpZ2h0LCAiaGVpZ2h0IikgXAotICAgIG1hY3JvKGhvdmVyLCAiaG92ZXIiKSBc
Ci0gICAgbWFjcm8oaW52ZXJ0ZWRDb2xvcnMsICJpbnZlcnRlZC1jb2xvcnMiKSBcCi0gICAgbWFj
cm8obWF4QXNwZWN0UmF0aW8sICJtYXgtYXNwZWN0LXJhdGlvIikgXAotICAgIG1hY3JvKG1heENv
bG9yLCAibWF4LWNvbG9yIikgXAotICAgIG1hY3JvKG1heENvbG9ySW5kZXgsICJtYXgtY29sb3It
aW5kZXgiKSBcCi0gICAgbWFjcm8obWF4RGV2aWNlQXNwZWN0UmF0aW8sICJtYXgtZGV2aWNlLWFz
cGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhtYXhEZXZpY2VIZWlnaHQsICJtYXgtZGV2aWNlLWhl
aWdodCIpIFwKLSAgICBtYWNybyhtYXhEZXZpY2VQaXhlbFJhdGlvLCAiLXdlYmtpdC1tYXgtZGV2
aWNlLXBpeGVsLXJhdGlvIikgXAotICAgIG1hY3JvKG1heERldmljZVdpZHRoLCAibWF4LWRldmlj
ZS13aWR0aCIpIFwKLSAgICBtYWNybyhtYXhIZWlnaHQsICJtYXgtaGVpZ2h0IikgXAotICAgIG1h
Y3JvKG1heE1vbm9jaHJvbWUsICJtYXgtbW9ub2Nocm9tZSIpIFwKLSAgICBtYWNybyhtYXhSZXNv
bHV0aW9uLCAibWF4LXJlc29sdXRpb24iKSBcCi0gICAgbWFjcm8obWF4V2lkdGgsICJtYXgtd2lk
dGgiKSBcCi0gICAgbWFjcm8obWluQXNwZWN0UmF0aW8sICJtaW4tYXNwZWN0LXJhdGlvIikgXAot
ICAgIG1hY3JvKG1pbkNvbG9yLCAibWluLWNvbG9yIikgXAotICAgIG1hY3JvKG1pbkNvbG9ySW5k
ZXgsICJtaW4tY29sb3ItaW5kZXgiKSBcCi0gICAgbWFjcm8obWluRGV2aWNlQXNwZWN0UmF0aW8s
ICJtaW4tZGV2aWNlLWFzcGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhtaW5EZXZpY2VIZWlnaHQs
ICJtaW4tZGV2aWNlLWhlaWdodCIpIFwKLSAgICBtYWNybyhtaW5EZXZpY2VQaXhlbFJhdGlvLCAi
LXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvIikgXAotICAgIG1hY3JvKG1pbkRldmljZVdp
ZHRoLCAibWluLWRldmljZS13aWR0aCIpIFwKLSAgICBtYWNybyhtaW5IZWlnaHQsICJtaW4taGVp
Z2h0IikgXAotICAgIG1hY3JvKG1pbk1vbm9jaHJvbWUsICJtaW4tbW9ub2Nocm9tZSIpIFwKLSAg
ICBtYWNybyhtaW5SZXNvbHV0aW9uLCAibWluLXJlc29sdXRpb24iKSBcCi0gICAgbWFjcm8obWlu
V2lkdGgsICJtaW4td2lkdGgiKSBcCi0gICAgbWFjcm8obW9ub2Nocm9tZSwgIm1vbm9jaHJvbWUi
KSBcCi0gICAgbWFjcm8ob3JpZW50YXRpb24sICJvcmllbnRhdGlvbiIpIFwKLSAgICBtYWNybyhw
b2ludGVyLCAicG9pbnRlciIpIFwKLSAgICBtYWNybyhwcmVmZXJzQ29udHJhc3QsICJwcmVmZXJz
LWNvbnRyYXN0IikgXAotICAgIG1hY3JvKHByZWZlcnNEYXJrSW50ZXJmYWNlLCAicHJlZmVycy1k
YXJrLWludGVyZmFjZSIpIFwKLSAgICBtYWNybyhwcmVmZXJzUmVkdWNlZE1vdGlvbiwgInByZWZl
cnMtcmVkdWNlZC1tb3Rpb24iKSBcCi0gICAgbWFjcm8ocmVzb2x1dGlvbiwgInJlc29sdXRpb24i
KSBcCi0gICAgbWFjcm8oc2NhbiwgInNjYW4iKSBcCi0gICAgbWFjcm8odHJhbnNmb3JtMmQsICIt
d2Via2l0LXRyYW5zZm9ybS0yZCIpIFwKLSAgICBtYWNybyh0cmFuc2Zvcm0zZCwgIi13ZWJraXQt
dHJhbnNmb3JtLTNkIikgXAotICAgIG1hY3JvKHRyYW5zaXRpb24sICItd2Via2l0LXRyYW5zaXRp
b24iKSBcCi0gICAgbWFjcm8odmlkZW9QbGF5YWJsZUlubGluZSwgIi13ZWJraXQtdmlkZW8tcGxh
eWFibGUtaW5saW5lIikgXAotICAgIG1hY3JvKHdpZHRoLCAid2lkdGgiKSBcCi0gICAgQ1NTX01F
RElBUVVFUllfRElTUExBWV9NT0RFKG1hY3JvKSBcCi0gICAgQ1NTX01FRElBUVVFUllfUFJFRkVS
U19DT0xPUl9TQ0hFTUUobWFjcm8pIFwKLQotLy8gZW5kIG9mIG1hY3JvCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLW5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcyB7Ci0KLSNkZWZpbmUgQ1NTX01F
RElBUVVFUllfTkFNRVNfREVDTEFSRShuYW1lLCBzdHJpbmcpIGV4dGVybiBMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZTsKLSAgICBDU1NfTUVESUFRVUVSWV9OQU1FU19G
T1JfRUFDSF9NRURJQUZFQVRVUkUoQ1NTX01FRElBUVVFUllfTkFNRVNfREVDTEFSRSkKLSN1bmRl
ZiBDU1NfTUVESUFRVUVSWV9OQU1FU19ERUNMQVJFCi0KLSAgICB2b2lkIGluaXQoKTsKLQotfSAv
LyBuYW1lc3BhY2UgTWVkaWFGZWF0dXJlTmFtZXMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggNDI0ZDJiMjhkNjQyLi5lMmIzYjI2OGRhYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCkBAIC0yNiw5ICsyNiw2IEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeS5oIgotI2luY2x1ZGUgIkxlZ2FjeU1lZGlh
UXVlcnlQYXJzZXIuaCIKLSNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgogI2luY2x1ZGUg
Ik1lZGlhUXVlcnkuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zNywxMzYgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vKiBNZWRpYUxpc3QgaXMgdXNlZCB0byBzdG9yZSAzIHR5cGVzIG9mIG1lZGlh
IHJlbGF0ZWQgZW50aXRpZXMgd2hpY2ggbWVhbiB0aGUgc2FtZToKLSAqIE1lZGlhIFF1ZXJpZXMs
IE1lZGlhIFR5cGVzIGFuZCBNZWRpYSBEZXNjcmlwdG9ycy4KLSAqIEN1cnJlbnRseSBNZWRpYUxp
c3QgYWx3YXlzIHRyaWVzIHRvIHBhcnNlIG1lZGlhIHF1ZXJpZXMgYW5kIGlmIHBhcnNpbmcgZmFp
bHMsCi0gKiB0cmllcyB0byBmYWxsYmFjayB0byBNZWRpYSBEZXNjcmlwdG9ycyBpZiBtX2ZhbGxi
YWNrVG9EZXNjcmlwdG9yIGZsYWcgaXMgc2V0LgotICogU2xpZ2h0IHByb2JsZW0gd2l0aCBzeW50
YXggZXJyb3IgaGFuZGxpbmc6Ci0gKiBDU1MgMi4xIFNwZWMgKGh0dHA6Ly93d3cudzMub3JnL1RS
L0NTUzIxL21lZGlhLmh0bWwpCi0gKiBzcGVjaWZpZXMgdGhhdCBmYWlsaW5nIG1lZGlhIHR5cGUg
cGFyc2luZyBpcyBhIHN5bnRheCBlcnJvcgotICogQ1NTIDMgTWVkaWEgUXVlcmllcyBTcGVjICho
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8pCi0gKiBzcGVjaWZpZXMgdGhh
dCBmYWlsaW5nIG1lZGlhIHF1ZXJ5IGlzIGEgc3ludGF4IGVycm9yCi0gKiBIVE1MIDQuMDEgc3Bl
YyAoaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9wcmVzZW50L3N0eWxlcy5odG1sI2Fk
ZWYtbWVkaWEpCi0gKiBzcGVjaWZpZXMgdGhhdCBNZWRpYSBEZXNjcmlwdG9ycyBzaG91bGQgYmUg
cGFyc2VkIHdpdGggZm9yd2FyZC1jb21wYXRpYmxlIHN5bnRheAotICogRE9NIExldmVsIDIgU3R5
bGUgU2hlZXQgc3BlYyAoaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTItU3R5bGUvKQot
ICogdGFsa3MgYWJvdXQgTWVkaWFMaXN0Lm1lZGlhVGV4dCBhbmQgcmVmZXJzCi0gKiAgIC0gIHRv
IE1lZGlhIERlc2NyaXB0b3JzIG9mIEhUTUwgNC4wIGluIGNvbnRleHQgb2YgU3R5bGVTaGVldAot
ICogICAtICB0byBNZWRpYSBUeXBlcyBvZiBDU1MgMi4wIGluIGNvbnRleHQgb2YgQ1NTTWVkaWFS
dWxlIGFuZCBDU1NJbXBvcnRSdWxlCi0gKgotICogVGhlc2UgZmFjdHMgY3JlYXRlIHNpdHVhdGlv
biB3aGVyZSBzYW1lIChpbGxlZ2FsKSBtZWRpYSBzcGVjaWZpY2F0aW9uIG1heSByZXN1bHQgaW4K
LSAqIGRpZmZlcmVudCBwYXJzZXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgaXMgbWVkaWEgYXR0
ciBvZiBzdHlsZSBlbGVtZW50IG9yIHBhcnQgb2YKLSAqIGNzcyBAbWVkaWEgcnVsZS4KLSAqIDxz
dHlsZSBtZWRpYT0ic2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGkiPiAuLjwvc3R5bGU+IHdp
bGwgYmUgZW5hYmxlZCBvbiBzY3JlZW4gZGV2aWNlcyB3aGVyZSBhcwotICogQG1lZGlhIHNjcmVl
biBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIHsuLn0gd2lsbCBub3QuCi0gKiBUaGlzIGdldHMgbW9y
ZSBjb3VudGVyLWludHVpdGl2ZSBpbiBKYXZhU2NyaXB0OgotICogZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF0ubWVkaWEubWVkaWFUZXh0ID0gInNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIiB3
aWxsIGJlIG9rIGFuZAotICogZW5hYmxlZCwgd2hpbGUKLSAqIGRvY3VtZW50LnN0eWxlU2hlZXRz
WzBdLmNzc1J1bGVzWzBdLm1lZGlhLm1lZGlhVGV4dCA9ICJzY3JlZW4gYW5kIHJlc29sdXRpb24g
PiA0MGRwaSIgd2lsbAotICogdGhyb3cgU3ludGF4RXJyb3IgZXhjZXB0aW9uLgotICovCi0KLVJl
ZjxNZWRpYVF1ZXJ5U2V0PiBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtZWRp
YVN0cmluZywgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29udGV4dCkKLXsKLSAgICBpZiAobWVk
aWFTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTWVkaWFRdWVyeVNldDo6Y3JlYXRl
KCk7Ci0KLSAgICBhdXRvIHBhcnNlZE1lZGlhUXVlcnlTZXQgPSBMZWdhY3lNZWRpYVF1ZXJ5UGFy
c2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQobWVkaWFTdHJpbmcsIGNvbnRleHQpOwotICAgIGlmIChV
TkxJS0VMWSghcGFyc2VkTWVkaWFRdWVyeVNldCkpCi0gICAgICAgIHJldHVybiBNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGUoKTsKLSAgICAKLSAgICByZXR1cm4gcGFyc2VkTWVkaWFRdWVyeVNldC5yZWxl
YXNlTm9uTnVsbCgpOwotfQotCi1NZWRpYVF1ZXJ5U2V0OjpNZWRpYVF1ZXJ5U2V0KCkgPSBkZWZh
dWx0OwotCi1NZWRpYVF1ZXJ5U2V0OjpNZWRpYVF1ZXJ5U2V0KGNvbnN0IE1lZGlhUXVlcnlTZXQm
IG8pCi0gICAgOiBtX3F1ZXJpZXMoby5tX3F1ZXJpZXMpCi17Ci19Ci0KLU1lZGlhUXVlcnlTZXQ6
On5NZWRpYVF1ZXJ5U2V0KCkgPSBkZWZhdWx0OwotCi1ib29sIE1lZGlhUXVlcnlTZXQ6OnNldChj
b25zdCBTdHJpbmcmIG1lZGlhU3RyaW5nKQotewotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKG1l
ZGlhU3RyaW5nKTsKLSAgICBtX3F1ZXJpZXMgPSBXVEZNb3ZlKHJlc3VsdC0+bV9xdWVyaWVzKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29uc3QgU3Ry
aW5nJiBxdWVyeVN0cmluZykKLXsKLSAgICAvLyBUbyAicGFyc2UgYSBtZWRpYSBxdWVyeSIgZm9y
IGEgZ2l2ZW4gc3RyaW5nIG1lYW5zIHRvIGZvbGxvdyAidGhlIHBhcnNlCi0gICAgLy8gYSBtZWRp
YSBxdWVyeSBsaXN0IiBzdGVwcyBhbmQgcmV0dXJuICJudWxsIiBpZiBtb3JlIHRoYW4gb25lIG1l
ZGlhIHF1ZXJ5Ci0gICAgLy8gaXMgcmV0dXJuZWQsIG9yIGVsc2UgdGhlIHJldHVybmVkIG1lZGlh
IHF1ZXJ5LgotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKHF1ZXJ5U3RyaW5nKTsKLSAgICAKLSAg
ICAvLyBPbmx5IGNvbnRpbnVlIGlmIGV4YWN0bHkgb25lIG1lZGlhIHF1ZXJ5IGlzIGZvdW5kLCBh
cyBkZXNjcmliZWQgYWJvdmUuCi0gICAgaWYgKHJlc3VsdC0+bV9xdWVyaWVzLnNpemUoKSAhPSAx
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgLy8gSWYgY29tcGFyaW5nIHdpdGgg
YW55IG9mIHRoZSBtZWRpYSBxdWVyaWVzIGluIHRoZSBjb2xsZWN0aW9uIG9mIG1lZGlhCi0gICAg
Ly8gcXVlcmllcyByZXR1cm5zIHRydWUgdGVybWluYXRlIHRoZXNlIHN0ZXBzLgotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9xdWVyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICht
X3F1ZXJpZXNbaV0gPT0gcmVzdWx0LT5tX3F1ZXJpZXNbMF0pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIAotICAgIG1fcXVlcmllcy5hcHBlbmQocmVzdWx0LT5tX3F1ZXJp
ZXNbMF0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92
ZShjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nVG9SZW1vdmUpCi17Ci0gICAgLy8gVG8gInBhcnNl
IGEgbWVkaWEgcXVlcnkiIGZvciBhIGdpdmVuIHN0cmluZyBtZWFucyB0byBmb2xsb3cgInRoZSBw
YXJzZQotICAgIC8vIGEgbWVkaWEgcXVlcnkgbGlzdCIgc3RlcHMgYW5kIHJldHVybiAibnVsbCIg
aWYgbW9yZSB0aGFuIG9uZSBtZWRpYSBxdWVyeQotICAgIC8vIGlzIHJldHVybmVkLCBvciBlbHNl
IHRoZSByZXR1cm5lZCBtZWRpYSBxdWVyeS4KLSAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShxdWVy
eVN0cmluZ1RvUmVtb3ZlKTsKLSAgICAKLSAgICAvLyBPbmx5IGNvbnRpbnVlIGlmIGV4YWN0bHkg
b25lIG1lZGlhIHF1ZXJ5IGlzIGZvdW5kLCBhcyBkZXNjcmliZWQgYWJvdmUuCi0gICAgaWYgKHJl
c3VsdC0+bV9xdWVyaWVzLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAK
LSAgICAvLyBSZW1vdmUgYW55IG1lZGlhIHF1ZXJ5IGZyb20gdGhlIGNvbGxlY3Rpb24gb2YgbWVk
aWEgcXVlcmllcyBmb3Igd2hpY2gKLSAgICAvLyBjb21wYXJpbmcgd2l0aCB0aGUgbWVkaWEgcXVl
cnkgcmV0dXJucyB0cnVlLgotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAKLSAgICAvLyBV
c2luZyBzaWduZWQgaW50IGhlcmUsIHNpbmNlIGZvciB0aGUgZmlyc3QgdmFsdWUsIC0taSB3aWxs
IHJlc3VsdCBpbiAtMS4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpbV9xdWVyaWVzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3F1ZXJpZXNbaV0gPT0gcmVzdWx0LT5tX3F1ZXJp
ZXNbMF0pIHsKLSAgICAgICAgICAgIG1fcXVlcmllcy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAt
LWk7Ci0gICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIGZvdW5kOwotfQotCi12b2lkIE1lZGlhUXVlcnlTZXQ6OmFkZE1lZGlhUXVlcnko
TGVnYWN5TWVkaWFRdWVyeSYmIG1lZGlhUXVlcnkpCi17Ci0gICAgbV9xdWVyaWVzLmFwcGVuZChX
VEZNb3ZlKG1lZGlhUXVlcnkpKTsKLX0KLQotU3RyaW5nIE1lZGlhUXVlcnlTZXQ6Om1lZGlhVGV4
dCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciB0ZXh0OwotICAgIGJvb2wgbmVlZENvbW1h
ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBxdWVyeSA6IG1fcXVlcmllcykgewotICAgICAgICBp
ZiAobmVlZENvbW1hKQotICAgICAgICAgICAgdGV4dC5hcHBlbmQoIiwgIik7Ci0gICAgICAgIHRl
eHQuYXBwZW5kKHF1ZXJ5LmNzc1RleHQoKSk7Ci0gICAgICAgIG5lZWRDb21tYSA9IHRydWU7Ci0g
ICAgfQotICAgIHJldHVybiB0ZXh0LnRvU3RyaW5nKCk7Ci19Ci0KLXZvaWQgTWVkaWFRdWVyeVNl
dDo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fcXVlcmllcy5zaHJpbmtUb0ZpdCgpOwotICAgIGZv
ciAoYXV0byYgcXVlcnkgOiBtX3F1ZXJpZXMpCi0gICAgICAgIHF1ZXJ5LnNocmlua1RvRml0KCk7
Ci19Ci0KIE1lZGlhTGlzdDo6TWVkaWFMaXN0KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KQog
ICAgIDogbV9wYXJlbnRTdHlsZVNoZWV0KHBhcmVudFNoZWV0KQogewpAQCAtMjY2LDEyICsxMzMs
NiBAQCB2b2lkIE1lZGlhTGlzdDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgc2V0TWVkaWFRdWVyaWVzKFdURk1vdmUocXVlcmllcykpOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZWRpYVF1ZXJ5U2V0JiBxdWVyeVNldCkK
LXsKLSAgICB0cyA8PCBxdWVyeVNldC5tZWRpYVRleHQoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0K
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE1lZGlhTGlzdCYg
bWVkaWFMaXN0KQogewogICAgIHRzIDw8IG1lZGlhTGlzdC5tZWRpYVRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuaAppbmRleCAyZmJmMzRjZWRjMWIuLjdmOTVjZjIzMjVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuaApAQCAtMzMsNDMgKzMzLDggQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDU1NQYXJzZXI7CiBjbGFzcyBDU1NSdWxlOwogY2xhc3Mg
Q1NTU3R5bGVTaGVldDsKLWNsYXNzIERvY3VtZW50OwotY2xhc3MgTGVnYWN5TWVkaWFRdWVyeTsK
LQotY2xhc3MgTWVkaWFRdWVyeVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUXVl
cnlTZXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhUXVlcnlTZXQ+IGNyZWF0ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVF1ZXJ5U2V0KTsKLSAg
ICB9Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxNZWRpYVF1ZXJ5U2V0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZywgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgPSBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dCgpKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIH5NZWRpYVF1ZXJ5
U2V0KCk7Ci0KLSAgICBib29sIHNldChjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGFkZChjb25z
dCBTdHJpbmcmKTsKLSAgICBib29sIHJlbW92ZShjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQg
YWRkTWVkaWFRdWVyeShMZWdhY3lNZWRpYVF1ZXJ5JiYpOwotCi0gICAgY29uc3QgVmVjdG9yPExl
Z2FjeU1lZGlhUXVlcnk+JiBxdWVyeVZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcXVlcmllczsg
fQotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG1lZGlhVGV4dCgpIGNvbnN0OwotCi0gICAg
UmVmPE1lZGlhUXVlcnlTZXQ+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhUXVlcnlTZXQoKnRoaXMpKTsgfQotCi0gICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwotCi1wcml2
YXRlOgotICAgIE1lZGlhUXVlcnlTZXQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVF1ZXJ5
U2V0KGNvbnN0IFN0cmluZyYgbWVkaWFRdWVyeSk7Ci0gICAgTWVkaWFRdWVyeVNldChjb25zdCBN
ZWRpYVF1ZXJ5U2V0Jik7Ci0KLSAgICBWZWN0b3I8TGVnYWN5TWVkaWFRdWVyeT4gbV9xdWVyaWVz
OwotfTsKIAogY2xhc3MgTWVkaWFMaXN0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFM
aXN0PiB7CiBwdWJsaWM6CkBAIC0xMDksNyArNzQsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8TVE6Ok1lZGlhUXVlcnlMaXN0PiBtX2RldGFjaGVkTWVkaWFRdWVyaWVzOwogfTsKIAot
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1lZGlh
UXVlcnlTZXQmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBNZWRpYUxpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzOGY0Y2ZkZjAxM2IuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cHJlc3Npb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5A
bm9raWEuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVy
eUV4cHJlc3Npb24uaCIKLQotI2luY2x1ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKLSNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5oIgotI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCi0jaW5jbHVkZSAiTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRWYWx1ZUZv
cklkZW50TWVkaWFGZWF0dXJlKGNvbnN0IEF0b21TdHJpbmcmIGZlYXR1cmUsIGNvbnN0IENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBhdXRvIHZhbHVlSUQgPSB2YWx1ZS52YWx1ZUlE
KCk7Ci0KLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6b3JpZW50YXRpb24p
Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUG9ydHJhaXQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUxhbmRzY2FwZTsKLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6Y29sb3JHYW11dCkKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdCIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVQMyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVjMjAyMDsKLSAg
ICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55SG92ZXIgfHwgZmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIpCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlSG92ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7Ci0gICAgaWYgKGZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueVBvaW50ZXIgfHwgZmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6cG9pbnRlcikKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVGaW5l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2Fyc2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7
Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmludmVydGVkQ29sb3JzKQot
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUludmVydGVkIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb25lOwotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBpZiAo
ZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGlzcGxheU1vZGUpCi0gICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlRnVsbHNjcmVlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3Rh
bmRhbG9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWluaW1hbFVpIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVCcm93c2VyOwotI2VuZGlmCi0jaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgaWYg
KGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNDb2xvclNjaGVtZSkKLSAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
RGFyazsKLSNlbmRpZgotICAgIGlmIChmZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVm
ZXJzQ29udHJhc3QpCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9QcmVmZXJl
bmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNb3JlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMZXNz
OwotICAgIGlmIChmZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzUmVkdWNlZE1v
dGlvbikKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1ByZWZlcmVuY2UgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJlZHVjZTsKLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlUHJlZmVycyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9QcmVmZXJlbmNlOwotICAg
IGlmIChmZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpkeW5hbWljUmFuZ2UpCi0gICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSGlnaCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3Rh
bmRhcmQ7Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnNjYW4pCi0gICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUHJvZ3Jlc3NpdmUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUludGVybGFjZTsKLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
Zm9yY2VkQ29sb3JzKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUFjdGl2ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWRJZGVudChjb25zdCBBdG9tU3RyaW5nJiBt
ZWRpYUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSwgY29uc3QgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHZhbHVlLnByaW1pdGl2ZVR5
cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UIHx8ICFpc1ZhbGlkVmFsdWVGb3JJZGVudE1l
ZGlhRmVhdHVyZShtZWRpYUZlYXR1cmUsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6b3JpZW50YXRp
b24KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpjb2xvckdh
bXV0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55SG92
ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphbnlQb2lu
dGVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIK
LSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjppbnZlcnRlZENv
bG9ycwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnBvaW50
ZXIKLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGlzcGxheU1vZGUKLSNlbmRpZgotI2lmIEVOQUJM
RShEQVJLX01PREVfQ1NTKQotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJl
TmFtZXM6OnByZWZlcnNDb2xvclNjaGVtZQotI2VuZGlmCi0gICAgICAgIHx8IG1lZGlhRmVhdHVy
ZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbnRyYXN0Ci0gICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24KLSAgICAg
ICAgfHwgKG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRl
cmZhY2UgJiYgKGNvbnRleHQudXNlU3lzdGVtQXBwZWFyYW5jZSB8fCBpc1VBU2hlZXRCZWhhdmlv
cihjb250ZXh0Lm1vZGUpKSkKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjpkeW5hbWljUmFuZ2UKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjpzY2FuCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6Zm9yY2VkQ29sb3JzOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgZmVhdHVyZVdpdGhW
YWxpZERlbnNpdHkoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzUmVzb2x1dGlvbigpIHx8IHZhbHVl
LmRvdWJsZVZhbHVlKCkgPD0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJl
dHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnJlc29sdXRpb24KLSAgICAg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5SZXNvbHV0aW9uCi0g
ICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4UmVzb2x1dGlv
bjsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWRQb3NpdGl2ZUxlbmd0
aChjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
bHVlKQotewotICAgIGlmICghKHZhbHVlLmlzTGVuZ3RoKCkgfHwgKHZhbHVlLmlzTnVtYmVyT3JJ
bnRlZ2VyKCkgJiYgIXZhbHVlLmRvdWJsZVZhbHVlKCkpKSB8fCB2YWx1ZS5kb3VibGVWYWx1ZSgp
IDwgMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhlaWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heEhlaWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkhlaWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6OndpZHRoCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6bWF4V2lkdGgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1l
ZGlhRmVhdHVyZU5hbWVzOjptaW5XaWR0aAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OmRldmljZUhlaWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6Om1heERldmljZUhlaWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkRldmljZUhlaWdodAotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZVdpZHRoCi0gICAgICAgIHx8IG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluRGV2aWNlV2lkdGgKLSAgICAgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhEZXZpY2VXaWR0aDsKLX0K
LQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVFeHBlY3RpbmdQb3NpdGl2ZUludGVnZXIoY29u
c3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUpCi17Ci0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6Y29sb3IKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjptYXhDb2xvcgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1pbkNvbG9yCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6Y29sb3JJbmRleAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1heENvbG9ySW5kZXgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1l
ZGlhRmVhdHVyZU5hbWVzOjptaW5Db2xvckluZGV4Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bW9ub2Nocm9tZQotICAgICAgICB8fCBtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heE1vbm9jaHJvbWUKLSAgICAgICAgfHwgbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5Nb25vY2hyb21lOwotfQotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgZmVhdHVyZVdpdGhQb3NpdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBtZWRpYUZl
YXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVl
LmlzSW50ZWdlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZlYXR1cmVF
eHBlY3RpbmdQb3NpdGl2ZUludGVnZXIobWVkaWFGZWF0dXJlKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIGZlYXR1cmVXaXRoUG9zaXRpdmVOdW1iZXIoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1
cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlz
TnVtYmVyT3JJbnRlZ2VyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1
cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp0cmFuc2Zvcm0zZAotICAgICAg
ICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZVBpeGVsUmF0aW8K
LSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhEZXZpY2VQ
aXhlbFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
bWluRGV2aWNlUGl4ZWxSYXRpbwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6OnRyYW5zaXRpb24KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjphbmltYXRpb24KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjp0cmFuc2Zvcm0yZDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVX
aXRoWmVyb09yT25lKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQcmltaXRp
dmVWYWx1ZSYgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc051bWJlck9ySW50ZWdlcigpIHx8
ICEodmFsdWUuZG91YmxlVmFsdWUoKSA9PSAxIHx8ICF2YWx1ZS5kb3VibGVWYWx1ZSgpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OmdyaWQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0FzcGVjdFJh
dGlvRmVhdHVyZShjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUpCi17Ci0gICAgcmV0dXJu
IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YXNwZWN0UmF0aW8KLSAgICAgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpkZXZpY2VBc3BlY3RSYXRpbwot
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkFzcGVjdFJh
dGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4QXNw
ZWN0UmF0aW8KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpt
aW5EZXZpY2VBc3BlY3RSYXRpbwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6Om1heERldmljZUFzcGVjdFJhdGlvOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wg
aXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFGZWF0dXJl
LCBjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICAvLyBNZWRp
YSBmZWF0dXJlcyB0aGF0IGFyZSBwcmVmaXhlZCBieSBtaW4vbWF4IGNhbm5vdCBiZSB1c2VkIHdp
dGhvdXQgYSB2YWx1ZS4KLSAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjphbnlIb3ZlcgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OmFueVBvaW50ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjptb25vY2hyb21lCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6Y29sb3IKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
Ojpjb2xvckluZGV4Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6Z3JpZAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Omhl
aWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OndpZHRo
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNlSGVp
Z2h0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNl
V2lkdGgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpvcmll
bnRhdGlvbgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFz
cGVjdFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
ZGV2aWNlQXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjpob3ZlcgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OnRyYW5zZm9ybTJkCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6dHJhbnNmb3JtM2QKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjp0cmFuc2l0aW9uCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6YW5pbWF0aW9uCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6aW52ZXJ0ZWRDb2xvcnMKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjpwb2ludGVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6cHJlZmVyc0NvbnRyYXN0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24KLSAgICAgICAgfHwgKG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2UgJiYgKGNv
bnRleHQudXNlU3lzdGVtQXBwZWFyYW5jZSB8fCBpc1VBU2hlZXRCZWhhdmlvcihjb250ZXh0Lm1v
ZGUpKSkKLSNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICAgICAgfHwgKG1lZGlhRmVhdHVy
ZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbG9yU2NoZW1lKQotI2VuZGlmCi0gICAg
ICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNlUGl4ZWxSYXRp
bwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnJlc29sdXRp
b24KLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGlzcGxheU1vZGUKLSNlbmRpZgotICAgICAgICB8
fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnNjYW4KLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpmb3JjZWRDb2xvcnMKLSAgICAgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp2aWRlb1BsYXlhYmxlSW5saW5lOwot
fQotCi1pbmxpbmUgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRmlyc3RWYWx1ZShj
b25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17
Ci0gICAgaWYgKGF1dG8gdmFsdWUgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVO
b25OZWdhdGl2ZUludGVnZXIocmFuZ2UpKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICBp
ZiAoIWZlYXR1cmVFeHBlY3RpbmdQb3NpdGl2ZUludGVnZXIobWVkaWFGZWF0dXJlKSAmJiAhaXNB
c3BlY3RSYXRpb0ZlYXR1cmUoQXRvbVN0cmluZyB7IG1lZGlhRmVhdHVyZSB9KSkgewotICAgICAg
ICBpZiAoYXV0byB2YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU51bWJl
cihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgIH0KLQotICAgIGlmIChhdXRvIHZhbHVlID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlOjpO
b25OZWdhdGl2ZSkpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLQotICAgIGlmIChhdXRvIHZhbHVl
ID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmVzb2x1dGlvbihyYW5nZSkpCi0g
ICAgICAgIHJldHVybiB2YWx1ZTsKLQotICAgIGlmIChhdXRvIHZhbHVlID0gQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpjb25zdW1lSWRlbnQocmFuZ2UpKQotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotTWVkaWFRdWVyeUV4cHJlc3Npb246Ok1lZGlh
UXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBjb250ZXh0KQotICAgIDogbV9tZWRp
YUZlYXR1cmUoZmVhdHVyZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQotICAgICwgbV9pc1Zh
bGlkKGZhbHNlKQotewotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZmlyc3RWYWx1ZSA9
IGNvbnN1bWVGaXJzdFZhbHVlKG1fbWVkaWFGZWF0dXJlLCByYW5nZSk7Ci0gICAgaWYgKCFmaXJz
dFZhbHVlKSB7Ci0gICAgICAgIGlmIChpc0ZlYXR1cmVWYWxpZFdpdGhvdXRWYWx1ZShtX21lZGlh
RmVhdHVyZSwgY29udGV4dCkpIHsKLSAgICAgICAgICAgIC8vIFZhbGlkLCBjcmVhdGVzIGEgTWVk
aWFRdWVyeUV4cCB3aXRoIGFuICdpbnZhbGlkJyBNZWRpYVF1ZXJ5RXhwVmFsdWUKLSAgICAgICAg
ICAgIG1faXNWYWxpZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAvLyBDcmVhdGUgdmFsdWUgZm9yIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb24gdGhhdCBtdXN0
IGhhdmUgMSBvciBtb3JlIHZhbHVlcy4KLSAgICBpZiAoaXNBc3BlY3RSYXRpb0ZlYXR1cmUobV9t
ZWRpYUZlYXR1cmUpKSB7Ci0gICAgICAgIGlmICghZmlyc3RWYWx1ZS0+aXNOdW1iZXJPckludGVn
ZXIoKSB8fCAhZmlyc3RWYWx1ZS0+ZG91YmxlVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKCFDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRv
IGRlbm9taW5hdG9yVmFsdWUgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVQb3Np
dGl2ZUludGVnZXJSYXcocmFuZ2UpOwotICAgICAgICBpZiAoIWRlbm9taW5hdG9yVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5zaWduZWQgbnVtZXJhdG9yID0gY2xhbXBU
bzx1bnNpZ25lZD4oZmlyc3RWYWx1ZS0+ZG91YmxlVmFsdWUoKSk7Ci0gICAgICAgIG1fdmFsdWUg
PSBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpjcmVhdGUobnVtZXJhdG9yLCAqZGVub21pbmF0b3JWYWx1
ZSk7Ci0gICAgICAgIG1faXNWYWxpZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGZlYXR1cmVXaXRoUG9zaXRpdmVJbnRlZ2VyKG1fbWVkaWFGZWF0dXJlLCAqZmlyc3RW
YWx1ZSkgfHwgZmVhdHVyZVdpdGhQb3NpdGl2ZU51bWJlcihtX21lZGlhRmVhdHVyZSwgKmZpcnN0
VmFsdWUpCi0gICAgICAgIHx8IGZlYXR1cmVXaXRoWmVyb09yT25lKG1fbWVkaWFGZWF0dXJlLCAq
Zmlyc3RWYWx1ZSkgfHwgZmVhdHVyZVdpdGhWYWxpZERlbnNpdHkobV9tZWRpYUZlYXR1cmUsICpm
aXJzdFZhbHVlKQotICAgICAgICB8fCBmZWF0dXJlV2l0aFZhbGlkUG9zaXRpdmVMZW5ndGgobV9t
ZWRpYUZlYXR1cmUsICpmaXJzdFZhbHVlKSB8fCBmZWF0dXJlV2l0aFZhbGlkSWRlbnQobV9tZWRp
YUZlYXR1cmUsICpmaXJzdFZhbHVlLCBjb250ZXh0KSkgewotICAgICAgICBtX3ZhbHVlID0gZmly
c3RWYWx1ZTsKLSAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLX0KLQotYm9vbCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6aXNWaWV3cG9ydERlcGVuZGVudCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
Ojp3aWR0aAotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
aGVpZ2h0Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpt
aW5XaWR0aAotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
bWluSGVpZ2h0Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjptYXhXaWR0aAotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6bWF4SGVpZ2h0Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpvcmllbnRhdGlvbgotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6YXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1pbkFzcGVjdFJhdGlvCi0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJlID09
IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhBc3BlY3RSYXRpbzsKLX0KLQotU3RyaW5nIE1lZGlhUXVl
cnlFeHByZXNzaW9uOjpzZXJpYWxpemUoKSBjb25zdAotewotICAgIGlmIChtX3NlcmlhbGl6YXRp
b25DYWNoZS5pc051bGwoKSkKLSAgICAgICAgbV9zZXJpYWxpemF0aW9uQ2FjaGUgPSBtYWtlU3Ry
aW5nKCcoJywgYXNBU0NJSUxvd2VyY2FzZShtX21lZGlhRmVhdHVyZSksIG1fdmFsdWUgPyAiOiAi
IDogIiIsIG1fdmFsdWUgPyBtX3ZhbHVlLT5jc3NUZXh0KCkgOiBlbXB0eVN0cmluZygpLCAnKScp
OwotICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25DYWNoZTsKLX0KLQotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mIGV4cHJl
c3Npb24pCi17Ci0gICAgdHMgPDwgZXhwcmVzc2lvbi5zZXJpYWxpemUoKTsKLSAgICByZXR1cm4g
dHM7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlF
eHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmM2YzMzQ5ZWQyYS4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lv
bi5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgotI2luY2x1ZGUgIkNTU1Zh
bHVlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRleHRT
dHJlYW07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0cnVjdCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dDsKLQotY2xhc3MgTWVkaWFRdWVyeUV4cHJlc3Npb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IE1lZGlhUXVlcnlFeHBy
ZXNzaW9uKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBDU1NQYXJzZXJUb2tlblJhbmdlJiwg
TWVkaWFRdWVyeVBhcnNlckNvbnRleHQmKTsKLQotICAgIGNvbnN0IEF0b21TdHJpbmcmIG1lZGlh
RmVhdHVyZSgpIGNvbnN0OwotICAgIENTU1ZhbHVlKiB2YWx1ZSgpIGNvbnN0OwotCi0gICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ZpZXdwb3J0RGVwZW5kZW50KCkgY29uc3Q7
Ci0KLSAgICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBBdG9t
U3RyaW5nIG1fbWVkaWFGZWF0dXJlOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV92YWx1ZTsKLSAg
ICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBTdHJpbmcgbV9zZXJpYWxp
emF0aW9uQ2FjaGU7Ci19OwotCi1pbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgTWVkaWFRdWVyeUV4
cHJlc3Npb246Om1lZGlhRmVhdHVyZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVkaWFGZWF0
dXJlOwotfQotCi1pbmxpbmUgQ1NTVmFsdWUqIE1lZGlhUXVlcnlFeHByZXNzaW9uOjp2YWx1ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7Ci19Ci0KLWlubGluZSBib29sIE1l
ZGlhUXVlcnlFeHByZXNzaW9uOjpvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9u
JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gb3RoZXIubV9tZWRpYUZlYXR1cmUgPT0gbV9t
ZWRpYUZlYXR1cmUKLSAgICAgICAgJiYgKCghbV92YWx1ZSAmJiAhb3RoZXIubV92YWx1ZSkgfHwg
KG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZSAmJiAqbV92YWx1ZSA9PSAqb3RoZXIubV92YWx1ZSkp
OwotfQotCi1pbmxpbmUgYm9vbCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6aXNWYWxpZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1faXNWYWxpZDsKLX0KLQotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJik7Ci0KLX0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0xlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4MThj
NmQ4NTIyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdh
Y3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmgiCi0KLSNpbmNsdWRl
ICJDU1NUb2tlbml6ZXIuaCIKLSNpbmNsdWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWZQdHI8TWVkaWFRdWVyeVNldD4gTGVnYWN5TWVkaWFRdWVyeVBh
cnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcsIE1lZGlh
UXVlcnlQYXJzZXJDb250ZXh0IGNvbnRleHQpCi17Ci0gICAgYXV0byB0b2tlbml6ZXIgPSBDU1NU
b2tlbml6ZXI6OnRyeUNyZWF0ZShxdWVyeVN0cmluZyk7Ci0gICAgaWYgKFVOTElLRUxZKCF0b2tl
bml6ZXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcGFyc2VNZWRpYVF1
ZXJ5U2V0KHRva2VuaXplci0+dG9rZW5SYW5nZSgpLCBjb250ZXh0KTsKLX0KLQotUmVmUHRyPE1l
ZGlhUXVlcnlTZXQ+IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCBjb250ZXh0
KQotewotICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyKE1lZGlhUXVlcnlTZXRQYXJz
ZXIsIGNvbnRleHQpLnBhcnNlSW50ZXJuYWwocmFuZ2UpOwotfQotCi1SZWZQdHI8TWVkaWFRdWVy
eVNldD4gTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYUNvbmRpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlIHJhbmdlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCBjb250ZXh0KQotewot
ICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyKE1lZGlhQ29uZGl0aW9uUGFyc2VyLCBj
b250ZXh0KS5wYXJzZUludGVybmFsKHJhbmdlKTsKLX0KLQotY29uc3QgTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZFJlc3RyaWN0b3IgPSAm
TGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0b3I7Ci1jb25zdCBMZWdhY3lNZWRp
YVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkTWVkaWFOb3Qg
PSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhTm90OwotY29uc3QgTGVnYWN5TWVk
aWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZE1lZGlhVHlw
ZSA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFUeXBlOwotY29uc3QgTGVnYWN5
TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZEFuZCA9
ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkQW5kOwotY29uc3QgTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVTdGFydCA9
ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVN0YXJ0OwotY29uc3QgTGVnYWN5
TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1
cmUgPSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmU7Ci1jb25zdCBMZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkRmVhdHVy
ZUNvbG9uID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlQ29sb247Ci1jb25z
dCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpS
ZWFkRmVhdHVyZVZhbHVlID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlVmFs
dWU7Ci1jb25zdCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyOjpSZWFkRmVhdHVyZUVuZCA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVh
dHVyZUVuZDsKLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIExlZ2FjeU1lZGlh
UXVlcnlQYXJzZXI6OlNraXBVbnRpbENvbW1hID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnNr
aXBVbnRpbENvbW1hOwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5
TWVkaWFRdWVyeVBhcnNlcjo6U2tpcFVudGlsQmxvY2tFbmQgPSAmTGVnYWN5TWVkaWFRdWVyeVBh
cnNlcjo6c2tpcFVudGlsQmxvY2tFbmQ7Ci1jb25zdCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpT
dGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpEb25lID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJz
ZXI6OmRvbmU7Ci0KLUxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OkxlZ2FjeU1lZGlhUXVlcnlQYXJz
ZXIoUGFyc2VyVHlwZSBwYXJzZXJUeXBlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCBjb250ZXh0
KQotICAgIDogbV9wYXJzZXJUeXBlKHBhcnNlclR5cGUpCi0gICAgLCBtX21lZGlhUXVlcnlEYXRh
KGNvbnRleHQpCi0gICAgLCBtX3F1ZXJ5U2V0KE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSgpKQotICAg
IAotewotICAgIHN3aXRjaCAobV9wYXJzZXJUeXBlKSB7Ci0gICAgY2FzZSBNZWRpYVF1ZXJ5U2V0
UGFyc2VyOgotICAgICAgICBtX3N0YXRlID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRS
ZXN0cmljdG9yOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhQ29uZGl0aW9uUGFyc2Vy
OgotICAgICAgICBtX3N0YXRlID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRNZWRpYU5v
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjp+
TGVnYWN5TWVkaWFRdWVyeVBhcnNlcigpID0gZGVmYXVsdDsKLQotdm9pZCBMZWdhY3lNZWRpYVF1
ZXJ5UGFyc2VyOjpzZXRTdGF0ZUFuZFJlc3RyaWN0KFN0YXRlIHN0YXRlLCBMZWdhY3lNZWRpYVF1
ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IpCi17Ci0gICAgbV9tZWRpYVF1ZXJ5RGF0YS5zZXRS
ZXN0cmljdG9yKHJlc3RyaWN0b3IpOwotICAgIG1fc3RhdGUgPSBzdGF0ZTsKLX0KLQotLy8gU3Rh
dGUgbWFjaGluZSBtZW1iZXIgZnVuY3Rpb25zIHN0YXJ0IGhlcmUKLXZvaWQgTGVnYWN5TWVkaWFR
dWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0b3IoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0
IENTU1BhcnNlclRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0g
ICAgcmVhZE1lZGlhVHlwZSh0eXBlLCB0b2tlbiwgcmFuZ2UpOwotfQotCi12b2lkIExlZ2FjeU1l
ZGlhUXVlcnlQYXJzZXI6OnJlYWRNZWRpYU5vdChDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsK
LSAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHRva2VuLnZhbHVlKCksICJub3QiX3MpKQotICAgICAgICBzZXRTdGF0ZUFuZFJlc3RyaWN0
KFJlYWRGZWF0dXJlU3RhcnQsIExlZ2FjeU1lZGlhUXVlcnk6Ok5vdCk7Ci0gICAgZWxzZQotICAg
ICAgICByZWFkRmVhdHVyZVN0YXJ0KHR5cGUsIHRva2VuLCByYW5nZSk7Ci19Ci0KLXN0YXRpYyBi
b29sIGlzUmVzdHJpY3Rvck9yTG9naWNhbE9wZXJhdG9yKGNvbnN0IENTU1BhcnNlclRva2VuJiB0
b2tlbikKLXsKLSAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgdG8gdXNl
IGxvd2VyLWNhc2UgYWx3YXlzIGZvciB0b2tlblZhbHVlLgotICAgIHJldHVybiBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAibm90Il9zKQotICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAiYW5kIl9zKQotICAg
ICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAib3Ii
X3MpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVl
KCksICJvbmx5Il9zKTsKLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVk
aWFUeXBlKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4sIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQotewotICAgIGlmICh0eXBlID09IExlZnRQ
YXJlbnRoZXNpc1Rva2VuKSB7Ci0gICAgICAgIGlmIChtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0
b3IoKSAhPSBMZWdhY3lNZWRpYVF1ZXJ5OjpOb25lKQotICAgICAgICAgICAgbV9zdGF0ZSA9IFNr
aXBVbnRpbENvbW1hOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0YXRlID0gUmVhZEZl
YXR1cmU7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IElkZW50VG9rZW4pIHsKLSAgICAgICAgaWYg
KG1fc3RhdGUgPT0gUmVhZFJlc3RyaWN0b3IgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodG9rZW4udmFsdWUoKSwgIm5vdCJfcykpCi0gICAgICAgICAgICBzZXRTdGF0ZUFuZFJlc3Ry
aWN0KFJlYWRNZWRpYVR5cGUsIExlZ2FjeU1lZGlhUXVlcnk6Ok5vdCk7Ci0gICAgICAgIGVsc2Ug
aWYgKG1fc3RhdGUgPT0gUmVhZFJlc3RyaWN0b3IgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodG9rZW4udmFsdWUoKSwgIm9ubHkiX3MpKQotICAgICAgICAgICAgc2V0U3RhdGVBbmRS
ZXN0cmljdChSZWFkTWVkaWFUeXBlLCBMZWdhY3lNZWRpYVF1ZXJ5OjpPbmx5KTsKLSAgICAgICAg
ZWxzZSBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCkgIT0gTGVnYWN5TWVkaWFRdWVy
eTo6Tm9uZQotICAgICAgICAgICAgJiYgaXNSZXN0cmljdG9yT3JMb2dpY2FsT3BlcmF0b3IodG9r
ZW4pKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBtX21lZGlhUXVlcnlEYXRhLnNldE1lZGlhVHlwZSh0b2tlbi52
YWx1ZSgpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgbV9zdGF0ZSA9IFJlYWRBbmQ7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRU9GVG9rZW4gJiYgKCFtX3F1ZXJ5U2V0LT5x
dWVyeVZlY3RvcigpLnNpemUoKSB8fCBtX3N0YXRlICE9IFJlYWRSZXN0cmljdG9yKSkKLSAgICAg
ICAgbV9zdGF0ZSA9IERvbmU7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fc3RhdGUgPSBTa2lwVW50
aWxDb21tYTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ29tbWFUb2tlbikKLSAgICAgICAgICAgIHNr
aXBVbnRpbENvbW1hKHR5cGUsIHRva2VuLCByYW5nZSk7Ci0gICAgfQotfQotCi12b2lkIExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OmNvbW1pdE1lZGlhUXVlcnkoKQotewotICAgIC8vIEZJWE1FLU5F
V1BBUlNFUjogQ29udm9sdXRlZCBhbmQgYXdmdWwsIGJ1dCB3ZSBjYW4ndCBjaGFuZ2UgdGhlIE1l
ZGlhUXVlcnlTZXQgeWV0IGJlY2F1c2Ugb2YgdGhlCi0gICAgLy8gb2xkIHBhcnNlci4KLSAgICBz
dGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZhdWx0TWVkaWFUeXBlIHsgImFs
bCJfcyB9OwotICAgIExlZ2FjeU1lZGlhUXVlcnkgbWVkaWFRdWVyeSB7IG1fbWVkaWFRdWVyeURh
dGEucmVzdHJpY3RvcigpLCBtX21lZGlhUXVlcnlEYXRhLm1lZGlhVHlwZSgpLnZhbHVlX29yKGRl
ZmF1bHRNZWRpYVR5cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURhdGEuZXhwcmVzc2lvbnMoKSkg
fTsKLSAgICBtX21lZGlhUXVlcnlEYXRhLmNsZWFyKCk7Ci0gICAgbV9xdWVyeVNldC0+YWRkTWVk
aWFRdWVyeShXVEZNb3ZlKG1lZGlhUXVlcnkpKTsKLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyOjpyZWFkQW5kKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4sIENTU1BhcnNlclRva2VuUmFuZ2UmIC8qcmFuZ2UqLykKLXsKLSAgICBpZiAo
dHlwZSA9PSBJZGVudFRva2VuICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRva2Vu
LnZhbHVlKCksICJhbmQiX3MpKSB7Ci0gICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZVN0YXJ0
OwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDb21tYVRva2VuICYmIG1fcGFyc2VyVHlwZSAhPSBN
ZWRpYUNvbmRpdGlvblBhcnNlcikgewotICAgICAgICBjb21taXRNZWRpYVF1ZXJ5KCk7Ci0gICAg
ICAgIG1fc3RhdGUgPSBSZWFkUmVzdHJpY3RvcjsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRU9G
VG9rZW4pCi0gICAgICAgIG1fc3RhdGUgPSBEb25lOwotICAgIGVsc2UKLSAgICAgICAgbV9zdGF0
ZSA9IFNraXBVbnRpbENvbW1hOwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJl
YWRGZWF0dXJlU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRv
a2VuJiAvKnRva2VuKi8sIENTU1BhcnNlclRva2VuUmFuZ2UmIC8qcmFuZ2UqLykKLXsKLSAgICBp
ZiAodHlwZSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbikKLSAgICAgICAgbV9zdGF0ZSA9IFJlYWRG
ZWF0dXJlOwotICAgIGVsc2UKLSAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwotfQot
Ci12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlKENTU1BhcnNlclRva2Vu
VHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4sIENTU1BhcnNlclRva2VuUmFu
Z2UmIC8qcmFuZ2UqLykKLXsKLSAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuKSB7Ci0gICAgICAg
IG1fbWVkaWFRdWVyeURhdGEuc2V0TWVkaWFGZWF0dXJlKHRva2VuLnZhbHVlKCkudG9TdHJpbmco
KSk7Ci0gICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZUNvbG9uOwotICAgIH0gZWxzZQotICAg
ICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7Ci19Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6cmVhZEZlYXR1cmVDb2xvbihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3Qg
Q1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAg
ICBpZiAodHlwZSA9PSBDb2xvblRva2VuKSB7Ci0gICAgICAgIHdoaWxlIChyYW5nZS5wZWVrKCku
dHlwZSgpID09IFdoaXRlc3BhY2VUb2tlbikKLSAgICAgICAgICAgIHJhbmdlLmNvbnN1bWUoKTsK
LSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gUmlnaHRQYXJlbnRoZXNpc1Rva2Vu
IHx8IHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRU9GVG9rZW4pCi0gICAgICAgICAgICBtX3N0YXRl
ID0gU2tpcFVudGlsQmxvY2tFbmQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3RhdGUg
PSBSZWFkRmVhdHVyZVZhbHVlOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBSaWdodFBhcmVudGhl
c2lzVG9rZW4gfHwgdHlwZSA9PSBFT0ZUb2tlbikgewotICAgICAgICBtX21lZGlhUXVlcnlEYXRh
LmFkZEV4cHJlc3Npb24ocmFuZ2UpOwotICAgICAgICByZWFkRmVhdHVyZUVuZCh0eXBlLCB0b2tl
biwgcmFuZ2UpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQmxvY2tF
bmQ7Ci19Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVWYWx1ZShD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBpZiAodHlwZSA9PSBEaW1lbnNpb25Ub2tl
biAmJiB0b2tlbi51bml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTikgewotICAg
ICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsK
LSAgICB9IGVsc2UgewotICAgICAgICBtX21lZGlhUXVlcnlEYXRhLmFkZEV4cHJlc3Npb24ocmFu
Z2UpOwotICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVFbmQ7Ci0gICAgfQotfQotCi12b2lk
IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlRW5kKENTU1BhcnNlclRva2VuVHlw
ZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgLyp0b2tlbiovLCBDU1NQYXJzZXJUb2tlblJh
bmdlJiAvKnJhbmdlKi8pCi17Ci0gICAgaWYgKHR5cGUgPT0gUmlnaHRQYXJlbnRoZXNpc1Rva2Vu
IHx8IHR5cGUgPT0gRU9GVG9rZW4pIHsKLSAgICAgICAgaWYgKHR5cGUgIT0gRU9GVG9rZW4gJiYg
bV9tZWRpYVF1ZXJ5RGF0YS5sYXN0RXhwcmVzc2lvblZhbGlkKCkpCi0gICAgICAgICAgICBtX3N0
YXRlID0gUmVhZEFuZDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBV
bnRpbENvbW1hOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbWVkaWFRdWVyeURhdGEucmVtb3Zl
TGFzdEV4cHJlc3Npb24oKTsKLSAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOwot
ICAgIH0KLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpza2lwVW50aWxDb21tYShD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIC8qdG9rZW4qLywg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgLypyYW5nZSovKQotewotICAgIGlmICgodHlwZSA9PSBDb21t
YVRva2VuICYmICFtX2Jsb2NrV2F0Y2hlci5ibG9ja0xldmVsKCkpIHx8IHR5cGUgPT0gRU9GVG9r
ZW4pIHsKLSAgICAgICAgbV9zdGF0ZSA9IFJlYWRSZXN0cmljdG9yOwotICAgICAgICBtX21lZGlh
UXVlcnlEYXRhLmNsZWFyKCk7Ci0gICAgICAgIGF1dG8gcXVlcnkgPSBMZWdhY3lNZWRpYVF1ZXJ5
KExlZ2FjeU1lZGlhUXVlcnk6Ok5vdCwgImFsbCJfcywgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNz
aW9uPigpKTsKLSAgICAgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShXVEZNb3ZlKHF1ZXJ5
KSk7Ci0gICAgfQotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnNraXBVbnRpbEJs
b2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUgKi8sIGNvbnN0IENTU1BhcnNlclRva2Vu
JiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgLypyYW5nZSovKQotewotICAgIGlmICh0b2tl
bi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQgJiYgIW1fYmxvY2tX
YXRjaGVyLmJsb2NrTGV2ZWwoKSkKLSAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwot
fQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OmRvbmUoQ1NTUGFyc2VyVG9rZW5UeXBl
IC8qdHlwZSovLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgLyp0b2tlbiovLCBDU1NQYXJzZXJUb2tl
blJhbmdlJiAvKnJhbmdlKi8pIHsgfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6Omhh
bmRsZUJsb2Nrcyhjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCi17Ci0gICAgaWYgKHRva2Vu
LmdldEJsb2NrVHlwZSgpICE9IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KQotICAgICAgICBy
ZXR1cm47Ci0gICAgYXV0byBzaG91bGRTa2lwQmxvY2sgPSBbJl0gewotICAgICAgICAvLyBGSVhN
RTogTmVzdGVkIGJsb2NrcyBzaG91bGQgYmUgc3VwcG9ydGVkLgotICAgICAgICBpZiAobV9ibG9j
a1dhdGNoZXIuYmxvY2tMZXZlbCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gTGVmdFBhcmVudGhlc2lzVG9rZW4pCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0oKTsKLSAgICBpZiAoc2hv
dWxkU2tpcEJsb2NrKQotICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQmxvY2tFbmQ7Ci19Ci0K
LXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cHJvY2Vzc1Rva2VuKGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgQ1NTUGFy
c2VyVG9rZW5UeXBlIHR5cGUgPSB0b2tlbi50eXBlKCk7Ci0KLSAgICBpZiAodHlwZSA9PSBXaGl0
ZXNwYWNlVG9rZW4pIHsKLSAgICAgICAgcmFuZ2UuY29uc3VtZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKG1fc3RhdGUgIT0gUmVhZEZlYXR1cmVWYWx1ZSkgewotICAgICAg
ICBoYW5kbGVCbG9ja3ModG9rZW4pOwotICAgICAgICBtX2Jsb2NrV2F0Y2hlci5oYW5kbGVUb2tl
bih0b2tlbik7Ci0gICAgICAgIHJhbmdlLmNvbnN1bWUoKTsKLSAgICB9Ci0KLSAgICAvLyBDYWxs
IHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgY3VycmVudCBzdGF0ZQotICAgICgodGhpcyktPioo
bV9zdGF0ZSkpKHR5cGUsIHRva2VuLCByYW5nZSk7Ci19Ci0KLS8vIFRoZSBzdGF0ZSBtYWNoaW5l
IGxvb3AKLVJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJz
ZUludGVybmFsKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQotewotICAgIAotICAgIHdoaWxl
ICghcmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgcHJvY2Vzc1Rva2VuKHJhbmdlLnBlZWsoKSwgcmFu
Z2UpOwotCi0gICAgLy8gRklYTUU6IENhbiB3ZSBnZXQgcmlkIG9mIHRoaXMgc3BlY2lhbCBjYXNl
PwotICAgIGlmIChtX3BhcnNlclR5cGUgPT0gTWVkaWFRdWVyeVNldFBhcnNlcikKLSAgICAgICAg
cHJvY2Vzc1Rva2VuKENTU1BhcnNlclRva2VuKEVPRlRva2VuKSwgcmFuZ2UpOwotCi0gICAgaWYg
KG1fc3RhdGUgIT0gUmVhZEFuZCAmJiBtX3N0YXRlICE9IFJlYWRSZXN0cmljdG9yICYmIG1fc3Rh
dGUgIT0gRG9uZSAmJiBtX3N0YXRlICE9IFJlYWRNZWRpYU5vdCkgewotICAgICAgICBhdXRvIHF1
ZXJ5ID0gTGVnYWN5TWVkaWFRdWVyeShMZWdhY3lNZWRpYVF1ZXJ5OjpOb3QsICJhbGwiX3MsIFZl
Y3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4oKSk7Ci0gICAgICAgIG1fcXVlcnlTZXQtPmFkZE1l
ZGlhUXVlcnkoV1RGTW92ZShxdWVyeSkpOwotICAgIH0gZWxzZSBpZiAobV9tZWRpYVF1ZXJ5RGF0
YS5jdXJyZW50TWVkaWFRdWVyeUNoYW5nZWQoKSkKLSAgICAgICAgY29tbWl0TWVkaWFRdWVyeSgp
OwotCi0gICAgbV9xdWVyeVNldC0+c2hyaW5rVG9GaXQoKTsKLQotICAgIHJldHVybiBtX3F1ZXJ5
U2V0OwotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6TWVkaWFR
dWVyeURhdGEoTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29udGV4dCkKLSAgICA6IG1fY29udGV4
dChjb250ZXh0KQotewotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVl
cnlEYXRhOjpjbGVhcigpCi17Ci0gICAgbV9yZXN0cmljdG9yID0gTGVnYWN5TWVkaWFRdWVyeTo6
Tm9uZTsKLSAgICBtX21lZGlhVHlwZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBtX21lZGlhRmVhdHVy
ZSA9IFN0cmluZygpOwotICAgIG1fZXhwcmVzc2lvbnMuY2xlYXIoKTsKLX0KLQotdm9pZCBMZWdh
Y3lNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6YWRkRXhwcmVzc2lvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChNZWRpYVF1
ZXJ5RXhwcmVzc2lvbiB7IG1fbWVkaWFGZWF0dXJlLCByYW5nZSwgbV9jb250ZXh0IH0pOwotfQot
Ci1ib29sIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlEYXRhOjpsYXN0RXhwcmVz
c2lvblZhbGlkKCkKLXsKLSAgICByZXR1cm4gbV9leHByZXNzaW9ucy5sYXN0KCkuaXNWYWxpZCgp
OwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlEYXRhOjpyZW1v
dmVMYXN0RXhwcmVzc2lvbigpCi17Ci0gICAgbV9leHByZXNzaW9ucy5yZW1vdmVMYXN0KCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNjYmEwODZlOGUzMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgotI2luY2x1ZGUgIkNTU1Bh
cnNlclRva2VuUmFuZ2UuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5LmgiCi0jaW5jbHVk
ZSAiTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHByZXNz
aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNvbnRleHQuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRp
YVF1ZXJ5U2V0Owotc3RydWN0IENTU1BhcnNlckNvbnRleHQ7Ci0KLWNsYXNzIExlZ2FjeU1lZGlh
UXVlcnlQYXJzZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeU1lZGlhUXVlcnlQ
YXJzZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFyc2VN
ZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KTsKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IHBhcnNlTWVkaWFRdWVyeVNldChDU1NQYXJz
ZXJUb2tlblJhbmdlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZU1lZGlhQ29uZGl0aW9uKENTU1BhcnNlclRva2VuUmFuZ2Us
IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIFBhcnNlclR5
cGUgewotICAgICAgICBNZWRpYVF1ZXJ5U2V0UGFyc2VyLAotICAgICAgICBNZWRpYUNvbmRpdGlv
blBhcnNlciwKLSAgICB9OwotCi0gICAgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcihQYXJzZXJUeXBl
LCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCk7Ci0gICAgdmlydHVhbCB+TGVnYWN5TWVkaWFRdWVy
eVBhcnNlcigpOwotCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IHBhcnNlSW50ZXJuYWwoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOwotCi0gICAgdm9pZCBwcm9jZXNzVG9rZW4oY29uc3QgQ1NTUGFy
c2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICB2b2lkIHJlYWRSZXN0cmlj
dG9yKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJU
b2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkTWVkaWFOb3QoQ1NTUGFyc2VyVG9rZW5UeXBlLCBj
b25zdCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lkIHJl
YWRNZWRpYVR5cGUoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYsIENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lkIHJlYWRBbmQoQ1NTUGFyc2VyVG9rZW5UeXBl
LCBjb25zdCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lk
IHJlYWRGZWF0dXJlU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tl
biYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lkIHJlYWRGZWF0dXJlKENTU1BhcnNl
clRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7
Ci0gICAgdm9pZCByZWFkRmVhdHVyZUNvbG9uKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkRmVhdHVy
ZVZhbHVlKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJz
ZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkRmVhdHVyZUVuZChDU1NQYXJzZXJUb2tlblR5
cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHZv
aWQgc2tpcFVudGlsQ29tbWEoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tl
biYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lkIHNraXBVbnRpbEJsb2NrRW5kKENT
U1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJh
bmdlJik7Ci0gICAgdm9pZCBkb25lKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICB1c2luZyBTdGF0ZSA9IHZvaWQg
KExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OiopKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICB2b2lkIHNldFN0YXRl
QW5kUmVzdHJpY3QoU3RhdGUsIExlZ2FjeU1lZGlhUXVlcnk6OlJlc3RyaWN0b3IpOwotICAgIHZv
aWQgaGFuZGxlQmxvY2tzKGNvbnN0IENTU1BhcnNlclRva2VuJik7Ci0gICAgCi0gICAgdm9pZCBj
b21taXRNZWRpYVF1ZXJ5KCk7Ci0KLSAgICBjbGFzcyBNZWRpYVF1ZXJ5RGF0YSB7Ci0gICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUXVlcnlEYXRhKTsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IE1lZGlhUXVlcnlEYXRhKE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KTsKLSAg
ICAgICAgdm9pZCBjbGVhcigpOwotICAgICAgICB2b2lkIGFkZEV4cHJlc3Npb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYpOwotICAgICAgICBib29sIGxhc3RFeHByZXNzaW9uVmFsaWQoKTsKLSAgICAg
ICAgdm9pZCByZW1vdmVMYXN0RXhwcmVzc2lvbigpOwotICAgICAgICB2b2lkIHNldE1lZGlhVHlw
ZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5cGUgPSBXVEZNb3ZlKG1lZGlhVHlwZSk7
IH0KLQotICAgICAgICBMZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KLSAgICAgICAgVmVjdG9yPE1lZGlhUXVlcnlF
eHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBtX2V4cHJlc3Npb25zOyB9Ci0gICAg
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYVR5cGU7IH0KLQotICAgICAgICBib29sIGN1cnJlbnRNZWRpYVF1ZXJ5Q2hhbmdl
ZCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAobV9yZXN0cmljdG9yICE9
IExlZ2FjeU1lZGlhUXVlcnk6Ok5vbmUgfHwgbV9tZWRpYVR5cGUgfHwgIW1fZXhwcmVzc2lvbnMu
aXNFbXB0eSgpKTsKLSAgICAgICAgfQotICAgICAgICBMZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0cmlj
dG9yIHJlc3RyaWN0b3IoKSB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KLQotICAgICAgICB2b2lk
IHNldFJlc3RyaWN0b3IoTGVnYWN5TWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKSB7
IG1fcmVzdHJpY3RvciA9IHJlc3RyaWN0b3I7IH0KLQotICAgICAgICB2b2lkIHNldE1lZGlhRmVh
dHVyZShjb25zdCBTdHJpbmcmIHN0cikgeyBtX21lZGlhRmVhdHVyZSA9IHN0cjsgfQotCi0gICAg
ICAgIHZvaWQgc2V0TWVkaWFRdWVyeVBhcnNlckNvbnRleHQoTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQgY29udGV4dCkgeyBtX2NvbnRleHQgPSBjb250ZXh0OyB9Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICBMZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIG1fcmVzdHJpY3RvciB7IExlZ2FjeU1l
ZGlhUXVlcnk6Ok5vbmUgfTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1fbWVkaWFU
eXBlOwotICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1fZXhwcmVzc2lvbnM7
Ci0gICAgICAgIFN0cmluZyBtX21lZGlhRmVhdHVyZTsKLSAgICAgICAgTWVkaWFRdWVyeVBhcnNl
ckNvbnRleHQgbV9jb250ZXh0OwotICAgIH07Ci0KLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIFBh
cnNlclR5cGUgbV9wYXJzZXJUeXBlOwotICAgIE1lZGlhUXVlcnlEYXRhIG1fbWVkaWFRdWVyeURh
dGE7Ci0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fcXVlcnlTZXQ7Ci0gICAgTWVkaWFRdWVy
eUJsb2NrV2F0Y2hlciBtX2Jsb2NrV2F0Y2hlcjsKLQotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBS
ZWFkUmVzdHJpY3RvcjsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZE1lZGlhTm90OwotICAg
IGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkTWVkaWFUeXBlOwotICAgIGNvbnN0IHN0YXRpYyBTdGF0
ZSBSZWFkQW5kOwotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVyZVN0YXJ0OwotICAg
IGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVyZTsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUg
UmVhZEZlYXR1cmVDb2xvbjsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1cmVWYWx1
ZTsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1cmVFbmQ7Ci0gICAgY29uc3Qgc3Rh
dGljIFN0YXRlIFNraXBVbnRpbENvbW1hOwotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBTa2lwVW50
aWxCbG9ja0VuZDsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgRG9uZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRp
YVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNl
ci5oCmluZGV4IGVmNDg1NTMxMTY0NC4uMzU0OTMzMDA3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1
ZGUgIkdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgor
I2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXJDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBNUSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nl
c3NXYXJtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmlu
ZGV4IGNjNGE3N2M3OTUxZC4uNjE0YTM5MDVlYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nl
c3NXYXJtaW5nLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgotI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVy
eUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiVGFnTmFtZS5oIgpAQCAtNTUsNyArNTUsNiBAQCB2b2lkIFByb2Nl
c3NXYXJtaW5nOjppbml0aWFsaXplTmFtZXMoKQogICAgIGluaXRpYWxpemVDb21tb25BdG9tU3Ry
aW5ncygpOwogICAgIEhUTUxOYW1lczo6aW5pdCgpOwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQo
KTsKLSAgICBNZWRpYUZlYXR1cmVOYW1lczo6aW5pdCgpOwogICAgIFNWR05hbWVzOjppbml0KCk7
CiAgICAgWExpbmtOYW1lczo6aW5pdCgpOwogICAgIE1hdGhNTE5hbWVzOjppbml0KCk7CkBAIC03
MSw2ICs3MCw3IEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAgICAg
CiAgICAgLy8gUHJld2FybXMgdXNlciBhZ2VudCBzdHlsZXNoZWV0LgogICAgIFN0eWxlOjpVc2Vy
QWdlbnRTdHlsZTo6aW5pdERlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgTVE6OkZlYXR1cmVzOjph
bGxTY2hlbWFzKCk7CiAgICAgCiAgICAgLy8gUHJld2FybXMgSlMgVk0uCiAgICAgY29tbW9uVk0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNw
cAppbmRleCA2ZjA2OWExYjIxZmIuLjMxODNlZWM5M2ZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250
YWluZXJRdWVyeUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJN
ZWRpYUZlYXR1cmVOYW1lcy5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
</data>
<flag name="commit-queue"
          id="492274"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463854</attachid>
            <date>2022-12-02 02:50:14 -0800</date>
            <delta_ts>2022-12-02 05:47:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248619-20221202125012.patch</filename>
            <type>text/plain</type>
            <size>124111</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAxMDBkODc1YjVkZTYxNDdjOWE3NTE1YTQ1NDQwM2Y3NDc2YTM3ZDE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIgRGVjIDIwMjIgMTI6MTY6MTcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZW1vdmUgdGhlIGxlZ2FjeSBtZWRpYSBxdWVyeSBjb2RlCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQ4NjE5IDxyZGFyOi8vcHJvYmxlbS8xMDI4OTc3Nzc+CgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkl0IGlzIHVudXNlZC4KCiogU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQ6CiogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHA6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUv
Y3NzL0xlZ2FjeU1lZGlhUXVlcnkuaDogUmVtb3ZlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVn
YWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUvY3Nz
L0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaDogUmVtb3ZlZC4KKiBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwOiBSZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUZlYXR1cmVOYW1lcy5oOiBSZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuY3BwOgooV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6Y3JlYXRlKTogRGVsZXRlZC4KKFdlYkNv
cmU6Ok1lZGlhUXVlcnlTZXQ6Ok1lZGlhUXVlcnlTZXQpOiBEZWxldGVkLgooV2ViQ29yZTo6TWVk
aWFRdWVyeVNldDo6c2V0KTogRGVsZXRlZC4KKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpyZW1vdmUpOiBEZWxldGVkLgooV2Vi
Q29yZTo6TWVkaWFRdWVyeVNldDo6YWRkTWVkaWFRdWVyeSk6IERlbGV0ZWQuCihXZWJDb3JlOjpN
ZWRpYVF1ZXJ5U2V0OjptZWRpYVRleHQgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6TWVkaWFR
dWVyeVNldDo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YUxpc3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOiBS
ZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oOiBSZW1v
dmVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5j
cHA6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyLmg6IFJlbW92ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQ
YXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcDoKKFdlYkNv
cmU6OlByb2Nlc3NXYXJtaW5nOjppbml0aWFsaXplTmFtZXMpOgooV2ViQ29yZTo6UHJvY2Vzc1dh
cm1pbmc6OnByZXdhcm1HbG9iYWxseSk6CgpQcmV3YXJtIHRoZSBmdWxsIE1ROjpGZWF0dXJlU2No
ZW1hcy4KCiogU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3Bw
OgotLS0KIC4uLi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0ICB8ICAg
MiArCiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlICAgICAgICAgICAgICAgICAgfCAgIDIg
LQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICA1IC0K
IC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAzMiArLQog
U291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oICAgICAgICAgICAgIHwgICAxIC0KIFNv
dXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmNwcCAgICAgICB8ICA5OSAtLQogU291
cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnkuaCAgICAgICAgIHwgIDY2IC0tCiAuLi4v
V2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgfCA5NTcgLS0tLS0tLS0t
LS0tLS0tLS0tCiAuLi4vV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICAg
fCAgODIgLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAgICAgICB8
ICA0NiAtCiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaCAgICAgICAgfCAx
MDYgLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwICAgICAgICAgICAgICB8IDEz
OSAtLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCAgICAgICAgICAgICAgICB8ICAz
NiAtCiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwICAgfCAzMTAg
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uaCAgICAgfCAg
ODcgLS0KIC4uLi9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuY3BwICAgICB8IDMy
OSAtLS0tLS0KIC4uLi9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuaCAgICAgICB8
IDEzOSAtLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmggICB8
ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcCAgICAgICAgfCAg
IDQgKy0KIC4uLi9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcCB8ICAg
MSAtCiAyMCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDI0MzcgZGVsZXRpb25zKC0p
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnku
Y3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVl
cnkuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9M
ZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmgKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlhUXVlcnlQYXJzZXIu
Y3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDk4Y2Y5ZTNhNGJlOS4uYjc1NTViMDc5ZWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzA5
MCw2ICszMDkwLDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyQnVpbHRpbnMuY3AKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlckJ1aWx0
aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRh
YmxlU3RyZWFtQllPQlJlcXVlc3RCdWlsdGlucy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3RCdWlsdGlucy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRp
bnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVp
bHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAzYWUwYzk4YmQ4Y2MuLjQ5NTY5NjQ5OWRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02MjUsOSArNjI1LDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZS5oCiAg
ICAgY3NzL0RlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5oCiAgICAgY3NzL0ZvbnRMb2FkVGltaW5n
T3ZlcnJpZGUuaAotICAgIGNzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKICAgICBjc3Mv
TWVkaWFMaXN0LmgKLSAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uaAogICAgIGNzcy9NZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dC5oCiAgICAgY3NzL1JlY3QuaAogICAgIGNzcy9TdHlsZUNvbG9y
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjhjYjE2NWI2NzljLi4yMmZmOGNmM2UwMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC04MjIsMTEgKzgyMiw3IEBAIGNzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3Qu
Y3BwCiBjc3MvRm9udEZhY2UuY3BwCiBjc3MvRm9udEZhY2VTZXQuY3BwCiBjc3MvRm9udFZhcmlh
bnRCdWlsZGVyLmNwcAotY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCi1jc3MvTGVn
YWN5TWVkaWFRdWVyeS5jcHAKLWNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKIGNzcy9NZWRpYUxp
c3QuY3BwCi1jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCiBjc3MvTWVkaWFRdWVyeUxpc3Qu
Y3BwCiBjc3MvTWVkaWFRdWVyeUxpc3RFdmVudC5jcHAKIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5j
cHAKQEAgLTg3Miw3ICs4NjgsNiBAQCBjc3MvcGFyc2VyL0NTU1N1cHBvcnRzUGFyc2VyLmNwcAog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0
U3RyZWFtLmNwcAogY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKLWNzcy9wYXJzZXIv
TGVnYWN5TWVkaWFRdWVyeVBhcnNlci5jcHAKIGNzcy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0
Y2hlci5jcHAKIGNzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCiBjc3MvcGFyc2Vy
L1NpemVzQ2FsY1BhcnNlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNzZkZDg1MmRjNDUuLmJkM2NlNTU2NGY2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTU5OCw5ICsxNTk4LDYgQEAKIAkJNEQ3M0Y5NDYyMThCQzVGQTAwM0EzRUQ2IC8qIE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEQ3M0Y5NDQyMThCQzVGQTAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oICovOyB9OwogCQk0RDczRjk0RTIxOEM0QTg3MDAzQTNFRDYgLyogTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0REI3MTMwRDIxNkVDQjREMDA5NkE0REQgLyogTWVkaWFSZWNv
cmRlckVycm9yRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDREQjcxMzBDMjE2RUMyQkQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVu
dC5oICovOyB9OwotCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFt
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1
OTIwMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTRFMTk1OTJBMEEzOURBQ0MwMDIy
MEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyNDBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFR
dWVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTRFMTk1OTJDMEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyNjBB
MzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMTUzNERFMTFCNTMyRUMw
MDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVo
YXZpb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMw
MjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RkE2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MU3BhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50
LmggKi87IH07CkBAIC0yNjk3LDcgKzI2OTQsNiBAQAogCQk3QzlEQkZFRTFBOUM0OUIxMDAwRDZC
MjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOURCRkVDMUE5QzQ5QjEwMDBENkIyNSAvKiBKU0hUTUxB
dHRhY2htZW50RWxlbWVudC5oICovOyB9OwogCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyog
Q29sb3JNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQUM2QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDQUM2QUYwMjQ3RjQxMTAw
MEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBv
bmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk3Q0I1Q0E0MDFFNTI1QzczMDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4cHJlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjVDQTNFMUU1MjVD
NkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDQkJCQ0M3MUY1NjA1ODEwMDVFRkFBQyAv
KiBET01NYXRyaXgyREluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDQkJCQ0M2MUY1NjA1NjgwMDVFRkFBQyAvKiBET01NYXRyaXgyREluaXQuaCAq
LzsgfTsKIAkJN0NCQkJDQ0ExRjU2MTdDNTAwNUVGQUFDIC8qIEpTRE9NTWF0cml4MkRJbml0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JCQkNDOTFG
NTYxN0MwMDA1RUZBQUMgLyogSlNET01NYXRyaXgyREluaXQuaCAqLzsgfTsKIAkJN0NCRDEyOUUx
Rjk4QjkwRTAwMTI3RDI5IC8qIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCRDEyOUExRjk4QjVGRTAwMTI3
RDI5IC8qIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTg5LDYgKzI5ODUsNyBAQAogCQk4QUNFODhE
NzI4NUM4RkI4MDA4MkMwRkMgLyogV2ViR0xEcmF3SW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0
YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFD
RTg4RDUyODVDOEY2NjAwODJDMEZDIC8qIFdlYkdMRHJhd0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNl
SW5zdGFuY2UuaCAqLzsgfTsKIAkJOEFGNEU1NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1h
bmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFGNEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5o
ICovOyB9OwogCQk4QUY0RTU1QzExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5
MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovOyB9OworCQk4QzRDOTZE
RDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNJbnRlcm5hbFJlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QzRDOTZEOTFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNJbnRlcm5hbFJlYWRhYmxlU3RyZWFtLmggKi87IH07CiAJCThFNEM5NkREMUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0Zl
dGNoUmVzcG9uc2UuaCAqLzsgfTsKIAkJOEVDNkM5NjMyMDFBMjUxNjAwRkJGQTUzIC8qIEdhcExl
bmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEVD
NkM5NjEyMDFBMjUwMTAwRkJGQTUzIC8qIEdhcExlbmd0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkwMDE3NzQxMTJFMDM0NzgwMDY0ODQ2MiAv
KiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzczRTEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcy5oICovOyB9OwpAQCAtMzIzOCw3ICszMjM1LDYgQEAKIAkJOTQ3OTQ5NDAxRTA0
NjNDRTAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDc5NDkyNjFFMDMxMzIwMDAw
MThEODUgLyogRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NDc5NDk0MTFFMDQ2M0Q0MDAwMThE
ODUgLyogRGVwcmVjYXRlZENTU09NQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ3OTQ5MkExRTAzMkVEQjAwMDE4RDg1IC8qIERlcHJlY2F0
ZWRDU1NPTUNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0
Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5
M0I2QjcxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLzsgfTsK
LQkJOTQ5M0I2QzExRDc0QjQxMjAwODhFNzgwIC8qIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OTNCNkI5MUQ3
NEIzOTUwMDg4RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmggKi87IH07CiAJCTk0OUM3
NzAxMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NkZGMUQ2RTFEOEMwMEMwREU0
RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCAqLzsgfTsKIAkJOTQ5Qzc3MDUxRDZFMzlFQTAwQzBE
RTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDMxRDZFMzkzNTAwQzBERTRGIC8qIENTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oICovOyB9OwogCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyLmggKi87IH07CkBAIC0xMDAwMSwxMiArOTk5Nyw2IEBACiAJCTREQjcx
MzBBMjE2RUMyQkMwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0REI3MTMwQzIxNkVDMkJEMDA5NkE0REQgLyogTWVkaWFSZWNv
cmRlckVycm9yRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFS
ZWNvcmRlckVycm9yRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNERCNzEz
MEUyMTZFRUJBRTAwOTZBNEREIC8qIE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1
IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTRFMTk1OTIwMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFGZWF0dXJlTmFtZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEUxOTU5MjMwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2Fj
eU1lZGlhUXVlcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExl
Z2FjeU1lZGlhUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RTE5NTky
NDBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5TWVkaWFRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0RTE5NTkyNTBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRF
MTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4
NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWRpdGluZ0JlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMTUzNERG
MTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvclR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEZBNjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxTcGFj
ZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0NDAsOCArMTI0
MzAsNiBAQAogCQk3Q0E1NUZDQTI1MjQxN0E3MDAzMUY0NTIgLyogRWxlbWVudENvbnRlbnRFZGl0
YWJsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRWxlbWVudENvbnRlbnRFZGl0YWJsZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDQUM2QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2xvck1hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0FDNkFFQzI0N0YxQzUxMDBFNjFENTkgLyogQ29sb3JDb21wb25lbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ29tcG9uZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3Q0I1Q0EzRDFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFRdWVy
eUV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFRdWVyeUV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0I1
Q0EzRTFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4cHJlc3Npb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeUV4cHJlc3Npb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQTVCQTYxRjBCNEJERTAwMzRENzQ1IC8qIEpTRE9NQ29u
dmVydFdlYkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NQ29udmVydFdlYkdMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkJDQzQxRjU2MDU2NzAwNUVGQUFDIC8q
IERPTU1hdHJpeDJESW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NTWF0cml4MkRJ
bml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkJDQzYxRjU2MDU2ODAw
NUVGQUFDIC8qIERPTU1hdHJpeDJESW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01NYXRyaXgyREluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
MDk0LDYgKzEzMDgyLDcgQEAKIAkJOEFGNEU1NTQxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1h
bmNlTmF2aWdhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NTkxMURDNUE2
MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlcmZvcm1hbmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThBRjRFNTVBMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNJbnRlcm5hbFJl
YWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJu
YWxSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTMzQ0Q5
MzIwMUEyOUMxMDBFMzkwOTMgLyogR2FwTGVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdhcExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThFNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
RmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZldGNo
UmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTYyLDggKzEzNTUx
LDYgQEAKIAkJOTQ3OTQ5M0IxRTA0NUNFMTAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVByaW1p
dGl2ZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcHJl
Y2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTQ5M0I2QjYxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFRdWVyeUJsb2NrV2F0
Y2hlci5jcHA7IHBhdGggPSBwYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0OTNCNkI3MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRp
YVF1ZXJ5QmxvY2tXYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1l
ZGlhUXVlcnlCbG9ja1dhdGNoZXIuaDsgcGF0aCA9IHBhcnNlci9NZWRpYVF1ZXJ5QmxvY2tXYXRj
aGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk0OTNCNkI4MUQ3NEIzOTUwMDg4
RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2Vy
L0xlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NDkzQjZCOTFENzRCMzk1MDA4OEU3ODAgLyogTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmg7
IHBhdGggPSBwYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBh
dGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckZh
c3RQYXRocy5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1Bh
cnNlckZhc3RQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJz
ZXJGYXN0UGF0aHMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA2
NSw4ICsyNzA1Miw2IEBACiAJCQkJOTQ2RDM3MzgxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2Vu
aXplcklucHV0U3RyZWFtLmggKi8sCiAJCQkJOTQ0NENCRDgxRDg4NDgyQTAwNzNBMDc0IC8qIENT
U1ZhcmlhYmxlUGFyc2VyLmNwcCAqLywKIAkJCQk5NDQ0Q0JENzFEODg0ODJBMDA3M0EwNzQgLyog
Q1NTVmFyaWFibGVQYXJzZXIuaCAqLywKLQkJCQk5NDkzQjZCODFENzRCMzk1MDA4OEU3ODAgLyog
TGVnYWN5TWVkaWFRdWVyeVBhcnNlci5jcHAgKi8sCi0JCQkJOTQ5M0I2QjkxRDc0QjM5NTAwODhF
NzgwIC8qIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuaCAqLywKIAkJCQk5NDkzQjZCNjFENzRCMzk1
MDA4OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5jcHAgKi8sCiAJCQkJOTQ5M0I2Qjcx
RDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLywKIAkJCQk5NDQ0
Q0JEMjFEODYwQzc0MDA3M0EwNzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwICovLApAQCAt
MzMwNjYsMjMgKzMzMDUxLDE1IEBACiAJCQkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1
bGxzY3JlZW4uY3NzICovLAogCQkJCTkzQ0E0Qzk5MDlERjkzRkEwMERGODY3NyAvKiBodG1sLmNz
cyAqLywKIAkJCQlFNTRDQTZERDI1NURFMkQ1MDBGOTAxQTMgLyogbGVnYWN5Rm9ybUNvbnRyb2xz
SU9TLmNzcyAqLywKLQkJCQk0RTE5NTkyMzBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFR
dWVyeS5jcHAgKi8sCi0JCQkJNEUxOTU5MjQwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2FjeU1lZGlh
UXVlcnkuaCAqLywKLQkJCQk0RTE5NTkyNTBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAgKi8sCi0JCQkJNEUxOTU5MjYwQTM5REFDQzAwMjIwRkU1IC8qIExl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCAqLywKIAkJCQk5QkU1NDY4RTI4ODBENzIyMDBGNjM1
QTQgLyogTGlua1N0eWxlLmlkbCAqLywKIAkJCQk5M0NBNEM5QTA5REY5M0ZBMDBERjg2NzcgLyog
bWFrZS1jc3MtZmlsZS1hcnJheXMucGwgKi8sCiAJCQkJNDNCODVFRDAxOENCRUFDRTAwRTMxQUY0
IC8qIG1ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkg
Ki8sCiAJCQkJMjZBQTBGOTkxOEQyOTczRDAwNDE5MzgxIC8qIG1ha2VTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRzTWFwLnB5ICovLAogCQkJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVFMCAvKiBtYXRobWwu
Y3NzICovLAogCQkJCTA3MEREOEY1MEYwMTg2ODAwMDcyN0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNz
cyAqLywKLQkJCQk0RTE5NTkxRjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMu
Y3BwICovLAotCQkJCTRFMTk1OTIwMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1l
cy5oICovLAogCQkJCUE4RUE4MDAxMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuY3BwICov
LAogCQkJCUE4RUE4MDA2MEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCAqLywKIAkJCQk4
NUM1NkM1QjBBQTg3QUZEMDBEOTU3NTUgLyogTWVkaWFMaXN0LmlkbCAqLywKLQkJCQk3Q0I1Q0Ez
RDFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwICovLAotCQkJCTdD
QjVDQTNFMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oICovLAogCQkJ
CUQzQTk0QTMxMTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5jcHAgKi8sCiAJCQkJ
RDNBOTRBMzIxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0LmggKi8sCiAJCQkJRDNB
OTRBMzMxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0LmlkbCAqLywKQEAgLTM3Mzc4
LDkgKzM3MzU1LDYgQEAKIAkJCQlCQ0U3ODkxNjExMjBENjA4MDA2MEVDRTUgLyogTGVnYWN5SW5s
aW5lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlF
NCAvKiBMZWdhY3lJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEU5NEQ2MTIy
RkYxNThBMDBERDE5MUYgLyogTGVnYWN5TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NEUxOTU5MkEwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2FjeU1lZGlhUXVlcnkuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTRFMTk1OTJDMEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDkzQjZDMTFENzRCNDEyMDA4OEU3ODAgLyog
TGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0QTVGNTkxRkVE
MzhGMjAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTg1QjQyQTFFODIxMUExMDBEQzkxMTggLyogTGVnYWN5UHJldmlld0xvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTEwREJGNDcxOEY5MjMxNzAwMEQ3MEM2IC8qIExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzc1MjQsNyArMzc0OTgsNiBAQAog
CQkJCUNEM0VFRjQyMjU3OUI0NEEwMDY1NjNCQiAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM0OEFDOTIxNDlDRjJBMDAyNEZENTkgLyog
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURBNzUgLyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNEUxOTU5MjIwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwN0E2RDFFQzE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4Mjg5NEIyNUMzNkZFRDAwQTdCQTAz
IC8qIE1lZGlhSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzFBMUUwMUQzRDAwMEUy
MzVBMiAvKiBNZWRpYUtleVNlc3Npb25UeXBlLmlkbCBpbiBIZWFkZXJzICovLApAQCAtMzc1NjAs
NyArMzc1MzMsNiBAQAogCQkJCUU0NTVBNTgyMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFR
dWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1NUE1NzEyOEZENzNGMzAw
QjZFQTc2IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDQjVD
QTQwMUU1MjVDNzMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ1NUE1QkEyOTA3QTg5QTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVl
cnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDY1MEU3RTIzODdBRDdEMDA2MjY2RTIgLyog
TWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFS
dWxlLmgKaW5kZXggMWMxY2YzOGMxOWZiLi5lYThmZGQxZTI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TWVkaWFSdWxlLmgKQEAgLTI3LDcgKzI3LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTWVkaWFMaXN0OwotY2xhc3MgTWVkaWFRdWVyeVNldDsKIGNsYXNzIFN0eWxlUnVsZU1lZGlh
OwogCiBuYW1lc3BhY2UgTVEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2Fj
eU1lZGlhUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnkuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWRhOWY4YzA0MmYuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ1NTIE1lZGlhIFF1ZXJ5Ci0gKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5v
a2lhLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVy
eS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBodHRwOi8v
ZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jc2VyaWFsaXplLWEtbWVkaWEtcXVlcnkKLVN0cmluZyBM
ZWdhY3lNZWRpYVF1ZXJ5OjpzZXJpYWxpemUoKSBjb25zdAotewotICAgIGlmIChtX2lnbm9yZWQp
IHsKLSAgICAgICAgLy8gSWYgcXVlcnkgaXMgaW52YWxpZCwgc2VyaWFsaXplZCB0ZXh0IHNob3Vs
ZCB0dXJuIGludG8gIm5vdCBhbGwiLgotICAgICAgICByZXR1cm4gIm5vdCBhbGwiX3M7Ci0gICAg
fQotCi0gICAgYm9vbCBzaG91bGRPbWl0TWVkaWFUeXBlID0gZmFsc2U7Ci0gICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7Ci0gICAgc3dpdGNoIChtX3Jlc3RyaWN0b3IpIHsKLSAgICBjYXNlIExlZ2Fj
eU1lZGlhUXVlcnk6Ok9ubHk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIm9ubHkgIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTGVnYWN5TWVkaWFRdWVyeTo6Tm90OgotICAgICAgICByZXN1
bHQuYXBwZW5kKCJub3QgIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVnYWN5TWVkaWFR
dWVyeTo6Tm9uZToKLSAgICAgICAgc2hvdWxkT21pdE1lZGlhVHlwZSA9ICFtX2V4cHJlc3Npb25z
LmlzRW1wdHkoKSAmJiBtX21lZGlhVHlwZSA9PSAiYWxsIl9zOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgYm9vbCBuZWVkc0FuZCA9IGZhbHNlOwotICAgIGlmICghc2hvdWxkT21pdE1lZGlh
VHlwZSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKG1fbWVkaWFUeXBlKTsKLSAgICAgICAgbmVl
ZHNBbmQgPSB0cnVlOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBtX2V4cHJl
c3Npb25zKSB7Ci0gICAgICAgIGlmIChuZWVkc0FuZCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIiBhbmQgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZXhwcmVzc2lvbi5zZXJpYWxpemUo
KSk7Ci0gICAgICAgIG5lZWRzQW5kID0gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5OjpMZWdhY3lNZWRpYVF1ZXJ5KFJlc3Ry
aWN0b3IgcmVzdHJpY3RvciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFZlY3RvcjxNZWRpYVF1
ZXJ5RXhwcmVzc2lvbj4mJiBleHByZXNzaW9ucykKLSAgICA6IG1fbWVkaWFUeXBlKG1lZGlhVHlw
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQotICAgICwgbV9leHByZXNzaW9ucyhXVEZNb3Zl
KGV4cHJlc3Npb25zKSkKLSAgICAsIG1fcmVzdHJpY3RvcihyZXN0cmljdG9yKQotewotfQotCi0v
LyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jY29tcGFyZS1tZWRpYS1xdWVyaWVzCi1i
b29sIExlZ2FjeU1lZGlhUXVlcnk6Om9wZXJhdG9yPT0oY29uc3QgTGVnYWN5TWVkaWFRdWVyeSYg
b3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNzc1RleHQoKSA9PSBvdGhlci5jc3NUZXh0KCk7
Ci19Ci0KLS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1saXN0
LW9mLW1lZGlhLXF1ZXJpZXMKLWNvbnN0IFN0cmluZyYgTGVnYWN5TWVkaWFRdWVyeTo6Y3NzVGV4
dCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VyaWFsaXphdGlvbkNhY2hlLmlzTnVsbCgpKQotICAg
ICAgICBtX3NlcmlhbGl6YXRpb25DYWNoZSA9IHNlcmlhbGl6ZSgpOwotICAgIHJldHVybiBtX3Nl
cmlhbGl6YXRpb25DYWNoZTsKLX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgTGVnYWN5TWVkaWFRdWVyeSYgcXVlcnkpCi17Ci0gICAgdHMgPDwgcXVlcnku
Y3NzVGV4dCgpOwotICAgIHJldHVybiB0czsKLX0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
OTBjOTEwOTNmMTguLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5
TWVkaWFRdWVyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENTUyBN
ZWRpYSBRdWVyeQotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2lt
bW8udC5raW5udW5lbkBub2tpYS5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJNZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBMZWdhY3lNZWRpYVF1ZXJ5IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVtIFJlc3RyaWN0b3IgeyBPbmx5LCBOb3QsIE5v
bmUgfTsKLQotICAgIExlZ2FjeU1lZGlhUXVlcnkoUmVzdHJpY3RvciwgY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUsIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4mJik7Ci0KLSAgICBSZXN0cmlj
dG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KLSAgICBjb25z
dCBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwcmVzc2lvbnM7IH0KLSAgICBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVkaWFUeXBlOyB9Ci0gICAgYm9vbCBpZ25vcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pZ25vcmVkOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGNzc1RleHQoKSBjb25zdDsKLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZWdhY3lNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3Q7
Ci0KLSAgICB2b2lkIHNocmlua1RvRml0KCkgeyBtX2V4cHJlc3Npb25zLnNocmlua1RvRml0KCk7
IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7Ci0KLSAgICBTdHJp
bmcgbV9tZWRpYVR5cGU7Ci0gICAgbXV0YWJsZSBTdHJpbmcgbV9zZXJpYWxpemF0aW9uQ2FjaGU7
Ci0gICAgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiBtX2V4cHJlc3Npb25zOwotICAgIFJl
c3RyaWN0b3IgbV9yZXN0cmljdG9yOwotICAgIGJvb2wgbV9pZ25vcmVkIHsgZmFsc2UgfTsKLX07
Ci0KLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBM
ZWdhY3lNZWRpYVF1ZXJ5Jik7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU0OTFjMTRmMjhkYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1
NyArMCwwIEBACi0vKgotICogQ1NTIE1lZGlhIFF1ZXJ5IEV2YWx1YXRvcgotICoKLSAqIENvcHly
aWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+
LgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKLQotI2luY2x1
ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5o
IgotI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKLSNpbmNsdWRlICJDU1NW
YWx1ZUtleXdvcmRzLmgiCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgot
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkxlZ2FjeU1lZGlhUXVlcnkuaCIKLSNp
bmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKLSNpbmNs
dWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oIgot
I2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVNjcmVlbi5oIgotI2luY2x1ZGUgIlF1aXJrcy5oIgotI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCi0jaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgi
Ci0jaW5jbHVkZSAiU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIlRoZW1lLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLSNp
ZiBFTkFCTEUoM0RfVFJBTlNGT1JNUykKLSNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3Iu
aCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFGZWF0dXJlUHJl
Zml4IHsgTWluUHJlZml4LCBNYXhQcmVmaXgsIE5vUHJlZml4IH07Ci0KLSNpZm5kZWYgTE9HX0RJ
U0FCTEVECi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgTWVk
aWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIHN3aXRjaCAob3ApIHsKLSAgICBjYXNlIE1pblBy
ZWZpeDogdHMgPDwgIm1pbiI7IGJyZWFrOwotICAgIGNhc2UgTWF4UHJlZml4OiB0cyA8PCAibWF4
IjsgYnJlYWs7Ci0gICAgY2FzZSBOb1ByZWZpeDogdHMgPDwgIiI7IGJyZWFrOwotICAgIH0KLSAg
ICByZXR1cm4gdHM7Ci19Ci0jZW5kaWYKLQotdHlwZWRlZiBib29sICgqTWVkaWFRdWVyeUZ1bmN0
aW9uKShDU1NWYWx1ZSosIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYs
IE1lZGlhRmVhdHVyZVByZWZpeCk7Ci10eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBN
ZWRpYVF1ZXJ5RnVuY3Rpb24+IE1lZGlhUXVlcnlGdW5jdGlvbk1hcDsKLQotc3RhdGljIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnQoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFG
ZWF0dXJlKQotewotICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
OmludmVydGVkQ29sb3JzCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6bWF4TW9ub2Nocm9tZQotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6Om1pbk1vbm9jaHJvbWUKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjptb25vY2hyb21lCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24KLSAgICAgICAgfHwgbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzQ29udHJhc3Q7Ci19Ci0KLXN0YXRpYyBi
b29sIGlzQXBwZWFyYW5jZURlcGVuZGVudChjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUp
Ci17Ci0jaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgaWYgKG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbG9yU2NoZW1lKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgotICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
OnByZWZlcnNEYXJrSW50ZXJmYWNlOwotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpM
ZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0KQotICAgIDog
bV9mYWxsYmFja1Jlc3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCi17Ci19Ci0KLUxlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3I6OkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgU3RyaW5nJiBh
Y2NlcHRlZE1lZGlhVHlwZSwgYm9vbCBtZWRpYUZlYXR1cmVSZXN1bHQpCi0gICAgOiBtX21lZGlh
VHlwZShhY2NlcHRlZE1lZGlhVHlwZSkKLSAgICAsIG1fZmFsbGJhY2tSZXN1bHQobWVkaWFGZWF0
dXJlUmVzdWx0KQotewotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpMZWdhY3lNZWRp
YVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQotICAgIDogbV9tZWRp
YVR5cGUoYWNjZXB0ZWRNZWRpYVR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQotICAg
ICwgbV9zdHlsZShzdHlsZSkKLXsKLX0KLQotYm9vbCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjptZWRpYVR5cGVNYXRjaChjb25zdCBTdHJpbmcmIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1lZGlhVHlwZVRvTWF0Y2guaXNFbXB0eSgpCi0gICAgICAgIHx8IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1lZGlhVHlwZVRvTWF0Y2gsICJhbGwiX3MpCi0gICAg
ICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWVkaWFUeXBlVG9NYXRjaCwgbV9tZWRpYVR5
cGUpOwotfQotCi1ib29sIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhVHlwZU1hdGNo
U3BlY2lmaWMoQVNDSUlMaXRlcmFsIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0Ci17Ci0gICAgLy8g
TGlrZSBtZWRpYVR5cGVNYXRjaCwgYnV0IHdpdGhvdXQgdGhlIHNwZWNpYWwgY2FzZXMgZm9yICIi
IGFuZCAiYWxsIi4KLSAgICBBU1NFUlQoIW1lZGlhVHlwZVRvTWF0Y2guaXNOdWxsKCkpOwotICAg
IEFTU0VSVChtZWRpYVR5cGVUb01hdGNoLmNoYXJhY3RlckF0KDApICE9ICdcMCcpOwotICAgIEFT
U0VSVCghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWVkaWFUeXBlVG9NYXRjaCwgImFs
bCJfcykpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fbWVkaWFUeXBlLCBt
ZWRpYVR5cGVUb01hdGNoKTsKLX0KLQotc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9yKExlZ2Fj
eU1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgciwgYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gciA9
PSBMZWdhY3lNZWRpYVF1ZXJ5OjpOb3QgPyAhdmFsdWUgOiB2YWx1ZTsKLX0KLQotYm9vbCBMZWdh
Y3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5U2V0JiBxdWVy
eVNldCkgY29uc3QKLXsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0g
PDwgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIG9uICIgPDwgKG1fZG9jdW1l
bnQgPyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCkpKTsKLQotICAg
IGF1dG8mIHF1ZXJpZXMgPSBxdWVyeVNldC5xdWVyeVZlY3RvcigpOwotICAgIGlmICghcXVlcmll
cy5zaXplKCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFt
IDw8ICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSAiIDw8IHF1ZXJ5U2V0IDw8
ICIgcmV0dXJuaW5nIHRydWUiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7IC8vIEVtcHR5IHF1ZXJ5
IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUuCi0gICAgfQotCi0gICAgLy8gSXRlcmF0ZSBvdmVyIHF1
ZXJpZXMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byB0cnVlIChPUiBzZW1hbnRpY3MpLgot
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWVy
aWVzLnNpemUoKSAmJiAhcmVzdWx0OyArK2kpIHsKLSAgICAgICAgYXV0byYgcXVlcnkgPSBxdWVy
aWVzW2ldOwotCi0gICAgICAgIGlmIChxdWVyeS5pZ25vcmVkKCkgfHwgKCFxdWVyeS5leHByZXNz
aW9ucygpLnNpemUoKSAmJiBxdWVyeS5tZWRpYVR5cGUoKS5pc0VtcHR5KCkpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKG1lZGlhVHlwZU1hdGNoKHF1ZXJ5Lm1lZGlhVHlw
ZSgpKSkgewotICAgICAgICAgICAgYXV0byYgZXhwcmVzc2lvbnMgPSBxdWVyeS5leHByZXNzaW9u
cygpOwotCi0gICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggZXhwcmVzc2lvbnMsIHN0b3Ag
aWYgYW55IG9mIHRoZW0gZXZhbCB0byBmYWxzZSAoQU5EIHNlbWFudGljcykuCi0gICAgICAgICAg
ICBzaXplX3QgaiA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgaiA8IGV4cHJlc3Npb25zLnNpemUo
KTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBleHByZXNzaW9uUmVzdWx0ID0gZXZhbHVh
dGUoZXhwcmVzc2lvbnNbal0pOwotICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvblJlc3Vs
dCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvLyBBc3N1bWUgdHJ1ZSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgb3RoZXJ3
aXNlIGFzc3VtZSBmYWxzZS4KLSAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJpY3Rvcihx
dWVyeS5yZXN0cmljdG9yKCksIGV4cHJlc3Npb25zLnNpemUoKSA9PSBqKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICByZXN1bHQgPSBhcHBseVJlc3RyaWN0b3IocXVlcnkucmVzdHJpY3Rv
cigpLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywg
c3RyZWFtIDw8ICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSAiIDw8IHF1ZXJ5
U2V0IDw8ICIgcmV0dXJuaW5nICIgPDwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIGNvbXBhcmVWYWx1ZShUIGEs
IFUgYiwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIHN3aXRjaCAob3ApIHsKLSAgICBj
YXNlIE1pblByZWZpeDoKLSAgICAgICAgcmV0dXJuIGEgPj0gYjsKLSAgICBjYXNlIE1heFByZWZp
eDoKLSAgICAgICAgcmV0dXJuIGEgPD0gYjsKLSAgICBjYXNlIE5vUHJlZml4OgotICAgICAgICBy
ZXR1cm4gYSA9PSBiOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiAhTE9HX0RJ
U0FCTEVECi0KLXN0YXRpYyBTdHJpbmcgYXNwZWN0UmF0aW9WYWx1ZUFzU3RyaW5nKENTU1ZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBpZiAoIWlzPENTU0FzcGVjdFJhdGlvVmFsdWU+KHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBhdXRvJiBhc3BlY3RSYXRpbyA9IGRv
d25jYXN0PENTU0FzcGVjdFJhdGlvVmFsdWU+KCp2YWx1ZSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJp
bmcoYXNwZWN0UmF0aW8ubnVtZXJhdG9yVmFsdWUoKSwgJy8nLCBhc3BlY3RSYXRpby5kZW5vbWlu
YXRvclZhbHVlKCkpOwotfQotCi0jZW5kaWYKLQotc3RhdGljIGJvb2wgY29tcGFyZUFzcGVjdFJh
dGlvVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIE1lZGlhRmVh
dHVyZVByZWZpeCBvcCkKLXsKLSAgICBpZiAoIWlzPENTU0FzcGVjdFJhdGlvVmFsdWU+KHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIGFzcGVjdFJhdGlvID0gZG93bmNh
c3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZT4oKnZhbHVlKTsKLSAgICByZXR1cm4gY29tcGFyZVZhbHVl
KHdpZHRoICogYXNwZWN0UmF0aW8uZGVub21pbmF0b3JWYWx1ZSgpLCBoZWlnaHQgKiBhc3BlY3RS
YXRpby5udW1lcmF0b3JWYWx1ZSgpLCBvcCk7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICghaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSB8fCAhZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkuaXNOdW1iZXJPckludGVnZXIoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotfQotCi1zdGF0aWMgYm9vbCB6ZXJvRXZhbHVhdGUo
Q1NTVmFsdWUqIHZhbHVlLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgYXV0byBudW1l
cmljVmFsdWUgPSBkb3VibGVWYWx1ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIG51bWVyaWNWYWx1ZSAm
JiBjb21wYXJlVmFsdWUoMCwgbnVtZXJpY1ZhbHVlLnZhbHVlKCksIG9wKTsKLX0KLQotc3RhdGlj
IGJvb2wgb25lRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBNZWRpYUZlYXR1cmVQcmVmaXggb3Ap
Ci17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYXV0byBudW1l
cmljVmFsdWUgPSBkb3VibGVWYWx1ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIG51bWVyaWNWYWx1ZSAm
JiBjb21wYXJlVmFsdWUoMSwgbnVtZXJpY1ZhbHVlLnZhbHVlKCksIG9wKTsKLX0KLQotc3RhdGlj
IGJvb2wgY29sb3JFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsKLSAg
ICBpbnQgYml0c1BlckNvbXBvbmVudCA9IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KGZyYW1lLm1h
aW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBudW1lcmljVmFsdWUgPSBkb3VibGVWYWx1ZSh2
YWx1ZSk7Ci0gICAgaWYgKCFudW1lcmljVmFsdWUpCi0gICAgICAgIHJldHVybiBiaXRzUGVyQ29t
cG9uZW50OwotICAgIHJldHVybiBjb21wYXJlVmFsdWUoYml0c1BlckNvbXBvbmVudCwgbnVtZXJp
Y1ZhbHVlLnZhbHVlKCksIG9wKTsKLX0KLQotc3RhdGljIGJvb2wgY29sb3JJbmRleEV2YWx1YXRl
KENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1l
JiwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIC8vIEFsd2F5cyByZXR1cm4gZmFsc2Ug
Zm9yIGluZGV4ZWQgZGlzcGxheS4KLSAgICByZXR1cm4gemVyb0V2YWx1YXRlKHZhbHVlLCBvcCk7
Ci19Ci0KLXN0YXRpYyBib29sIGNvbG9yR2FtdXRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNv
bnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVy
ZVByZWZpeCkKLXsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpKSB7
Ci0gICAgY2FzZSBDU1NWYWx1ZVNSR0I6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2Ug
Q1NTVmFsdWVQMzoKLSAgICAgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIGp1c3QgYXNz
dW1lIGFueSAiZXh0ZW5kZWQgY29sb3IiIGRpc3BsYXkgaXMgYXQgbGVhc3QgYXMgZ29vZCBhcyBQ
My4KLSAgICAgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihmcmFtZS5tYWlu
RnJhbWUoKS52aWV3KCkpOwotICAgIGNhc2UgQ1NTVmFsdWVSZWMyMDIwOgotICAgICAgICAvLyBG
SVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgc3RhcnQgZGV0ZWN0aW5nIGRpc3BsYXlzIHRo
YXQgc3VwcG9ydCBtb3JlIGNvbG9ycy4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gQW55IHVua25vd24gdmFsdWUgc2hvdWxkIG5v
dCBiZSBjb25zaWRlcmVkIGEgbWF0Y2guCi0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBtb25vY2hy
b21lRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3Ap
Ci17Ci0gICAgYm9vbCBpc01vbm9jaHJvbWU7Ci0KLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5m
b3JjZWREaXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9yY2VkQWNj
ZXNzaWJpbGl0eVZhbHVlOjpPbikKLSAgICAgICAgaXNNb25vY2hyb21lID0gdHJ1ZTsKLSAgICBl
bHNlIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZERpc3BsYXlJc01vbm9jaHJvbWVBY2Nlc3Np
YmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikKLSAgICAgICAg
aXNNb25vY2hyb21lID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBpc01vbm9jaHJvbWUgPSBz
Y3JlZW5Jc01vbm9jaHJvbWUoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLQotICAgIGlmICgh
aXNNb25vY2hyb21lKQotICAgICAgICByZXR1cm4gemVyb0V2YWx1YXRlKHZhbHVlLCBvcCk7Ci0g
ICAgcmV0dXJuIGNvbG9yRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgb3Ap
OwotfQotCi1zdGF0aWMgYm9vbCBpbnZlcnRlZENvbG9yc0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFG
ZWF0dXJlUHJlZml4KQotewotICAgIGJvb2wgaXNJbnZlcnRlZDsKLQotICAgIGlmIChmcmFtZS5z
ZXR0aW5ncygpLmZvcmNlZENvbG9yc0FyZUludmVydGVkQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0g
Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbikKLSAgICAgICAgaXNJbnZlcnRlZCA9IHRydWU7
Ci0gICAgZWxzZSBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRDb2xvcnNBcmVJbnZlcnRlZEFj
Y2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQotICAg
ICAgICBpc0ludmVydGVkID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBpc0ludmVydGVkID0g
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKLQotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJl
dHVybiBpc0ludmVydGVkOwotCi0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUpLnZhbHVlSUQoKSA9PSAoaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0ZWQgOiBD
U1NWYWx1ZU5vbmUpOwotfQotCi1zdGF0aWMgYm9vbCBvcmllbnRhdGlvbkV2YWx1YXRlKENTU1Zh
bHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFt
ZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLnZp
ZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8g
d2lkdGggPSB2aWV3LT5sYXlvdXRXaWR0aCgpOwotICAgIGF1dG8gaGVpZ2h0ID0gdmlldy0+bGF5
b3V0SGVpZ2h0KCk7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsK
LSAgICAgICAgLy8gRXhwcmVzc2lvbiAob3JpZW50YXRpb24pIGV2YWx1YXRlcyB0byB0cnVlIGlm
IHdpZHRoIGFuZCBoZWlnaHQgPj0gMC4KLSAgICAgICAgcmV0dXJuIGhlaWdodCA+PSAwICYmIHdp
ZHRoID49IDA7Ci0gICAgfQotCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICh3
aWR0aCA+IGhlaWdodCkgLy8gU3F1YXJlIHZpZXdwb3J0IGlzIHBvcnRyYWl0LgotICAgICAgICBy
ZXN1bHQgPSBrZXl3b3JkID09IENTU1ZhbHVlTGFuZHNjYXBlOwotICAgIGVsc2UKLSAgICAgICAg
cmVzdWx0ID0ga2V5d29yZCA9PSBDU1NWYWx1ZVBvcnRyYWl0OwotCi0gICAgTE9HX1dJVEhfU1RS
RUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIG9yaWVudGF0aW9uRXZhbHVhdGU6IHZpZXcg
c2l6ZSAiIDw8IHdpZHRoIDw8ICJ4IiA8PCBoZWlnaHQgPDwgIiBpcyAiIDw8IHZhbHVlLT5jc3NU
ZXh0KCkgPDwgIjogIiA8PCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRp
YyBib29sIGFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3Ap
Ci17Ci0gICAgLy8gKHssbWluLSxtYXgtfWFzcGVjdC1yYXRpbykKLSAgICAvLyBhc3N1bWUgaWYg
d2UgaGF2ZSBhIGRldmljZSwgaXRzIGFzcGVjdCByYXRpbyBpcyBub24temVybwotICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGJvb2wg
cmVzdWx0ID0gY29tcGFyZUFzcGVjdFJhdGlvVmFsdWUodmFsdWUsIHZpZXctPmxheW91dFdpZHRo
KCksIHZpZXctPmxheW91dEhlaWdodCgpLCBvcCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlh
UXVlcmllcywgc3RyZWFtIDw8ICIgIGFzcGVjdFJhdGlvRXZhbHVhdGU6ICIgPDwgb3AgPDwgIiAi
IDw8IGFzcGVjdFJhdGlvVmFsdWVBc1N0cmluZyh2YWx1ZSkgPDwgIiBhY3R1YWwgdmlldyBzaXpl
ICIgPDwgdmlldy0+bGF5b3V0V2lkdGgoKSA8PCAieCIgPDwgdmlldy0+bGF5b3V0SGVpZ2h0KCkg
PDwgIiA6ICIgPDwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgYm9v
bCBkZXZpY2VBc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9w
KQotewotICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2UtYXNwZWN0LXJhdGlvKQotICAgIC8vIGFz
c3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJhdGlvIGlzIG5vbi16ZXJvCi0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIHNpemUgPSBm
cmFtZS5tYWluRnJhbWUoKS5zY3JlZW5TaXplKCk7Ci0gICAgYm9vbCByZXN1bHQgPSBjb21wYXJl
QXNwZWN0UmF0aW9WYWx1ZSh2YWx1ZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBvcCk7
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIGRldmljZUFz
cGVjdFJhdGlvRXZhbHVhdGU6ICIgPDwgb3AgPDwgIiAiIDw8IGFzcGVjdFJhdGlvVmFsdWVBc1N0
cmluZyh2YWx1ZSkgPDwgIiBhY3R1YWwgc2NyZWVuIHNpemUgIiA8PCBzaXplIDw8ICI6ICIgPDwg
cmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgYm9vbCBldmFsdWF0ZVJl
c29sdXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZp
eCBvcCkKLXsKLSAgICAvLyBGSVhNRTogUG9zc2libGUgaGFuZGxlIG90aGVyIG1lZGlhIHR5cGVz
IHRoYW4gJ3NjcmVlbicgYW5kICdwcmludCcuCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUu
dmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwOwotCi0gICAgLy8gVGhpcyBjaGVja3MgdGhlIGFjdHVh
bCBtZWRpYSB0eXBlIGFwcGxpZWQgdG8gdGhlIGRvY3VtZW50LCBhbmQgd2Uga25vdwotICAgIC8v
IHRoaXMgbWV0aG9kIG9ubHkgZ290IGNhbGxlZCBpZiB0aGlzIG1lZGlhIHR5cGUgbWF0Y2hlcyB0
aGUgb25lIGRlZmluZWQKLSAgICAvLyBpbiB0aGUgcXVlcnkuIFRodXMsIGlmIGlmIHRoZSBkb2N1
bWVudCdzIG1lZGlhIHR5cGUgaXMgInByaW50IiwgdGhlCi0gICAgLy8gbWVkaWEgdHlwZSBvZiB0
aGUgcXVlcnkgd2lsbCBlaXRoZXIgYmUgInByaW50IiBvciAiYWxsIi4KLSAgICBTdHJpbmcgbWVk
aWFUeXBlID0gdmlldy0+bWVkaWFUeXBlKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1lZGlhVHlwZSwgInNjcmVlbiJfcykpCi0gICAgICAgIGRldmljZVNjYWxlRmFj
dG9yID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIDog
MTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtZWRpYVR5cGUs
ICJwcmludCJfcykpIHsKLSAgICAgICAgLy8gVGhlIHJlc29sdXRpb24gb2YgaW1hZ2VzIHdoaWxl
IHByaW50aW5nIHNob3VsZCBub3QgZGVwZW5kIG9uIHRoZSBkcGkKLSAgICAgICAgLy8gb2YgdGhl
IHNjcmVlbi4gVW50aWwgd2Ugc3VwcG9ydCBwcm9wZXIgd2F5cyBvZiBxdWVyeWluZyB0aGlzIGlu
Zm8KLSAgICAgICAgLy8gd2UgdXNlIDMwMHB4IHdoaWNoIGlzIGNvbnNpZGVyZWQgbWluaW11bSBm
b3IgY3VycmVudCBwcmludGVycy4KLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSAzLjEyNTsg
Ly8gMzAwZHBpIC8gOTZkcGk7Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0
dXJuICEhZGV2aWNlU2NhbGVGYWN0b3I7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJlc29sdXRpb24g
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICBmbG9hdCByZXNvbHV0
aW9uVmFsdWUgPSByZXNvbHV0aW9uLmlzTnVtYmVyT3JJbnRlZ2VyKCkgPyByZXNvbHV0aW9uLmZs
b2F0VmFsdWUoKSA6IHJlc29sdXRpb24uZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NTX0RQUFgp
OwotICAgIGJvb2wgcmVzdWx0ID0gY29tcGFyZVZhbHVlKGRldmljZVNjYWxlRmFjdG9yLCByZXNv
bHV0aW9uVmFsdWUsIG9wKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJl
YW0gPDwgIiAgZXZhbHVhdGVSZXNvbHV0aW9uOiAiIDw8IG9wIDw8ICIgIiA8PCByZXNvbHV0aW9u
VmFsdWUgPDwgIiBkZXZpY2Ugc2NhbGUgZmFjdG9yICIgPDwgZGV2aWNlU2NhbGVGYWN0b3IgPDwg
IjogIiA8PCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIGRl
dmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsK
LSAgICByZXR1cm4gKCF2YWx1ZSB8fCAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkgJiYg
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuaXNOdW1iZXJPckludGVnZXIoKSkp
ICYmIGV2YWx1YXRlUmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKLX0KLQotc3RhdGljIGJv
b2wgcmVzb2x1dGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewot
ICAgIGlmICghZnJhbWUuc2V0dGluZ3MoKS5yZXNvbHV0aW9uTWVkaWFGZWF0dXJlRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gKCF2YWx1ZSB8fCAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2
YWx1ZSkuaXNSZXNvbHV0aW9uKCkpKSAmJiBldmFsdWF0ZVJlc29sdXRpb24odmFsdWUsIGZyYW1l
LCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIGR5bmFtaWNSYW5nZUV2YWx1YXRlKENTU1ZhbHVlKiB2
YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVk
aWFGZWF0dXJlUHJlZml4KQotewotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGJvb2wgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwotCi0gICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlVmFsdWUoKSA9PSBGb3Jj
ZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQotICAgICAgICBzdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UgPSB0cnVlOwotICAgIGVsc2UgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlVmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikK
LSAgICAgICAgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0gZmFsc2U7Ci0gICAgZWxzZQotICAg
ICAgICBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UgPSBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWlj
UmFuZ2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLQotICAgIHN3aXRjaCAoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpKSB7Ci0gICAgY2FzZSBDU1NWYWx1
ZUhpZ2g6Ci0gICAgICAgIHJldHVybiBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7Ci0gICAgY2Fz
ZSBDU1NWYWx1ZVN0YW5kYXJkOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFueSB1bmtub3duIHZhbHVlIHNob3VsZCBub3QgYmUg
Y29uc2lkZXJlZCBhIG1hdGNoLgotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgc2NhbkV2YWx1YXRl
KENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1l
JiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIFJlZlB0ciB2aWV3ID0gZnJhbWUu
dmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLyog
V2l0aCBNZWRpYSBRdWVyaWVzIExldmVsIDQsIHRoZSAidHYiIG1lZGlhIHR5cGUgaXMgZGVwcmVj
YXRlZAotICAgICAqIGFuZCB0aGUgInNjYW4iIGZlYXR1cmUgYXBwbGllcyB0byBhbGwgbWVkaWEg
dHlwZXMuCi0gICAgICogV2UgYXJlIGN1cnJlbnRseSBzdXBwb3J0aW5nIE1lZGlhIFF1ZXJpZXMg
TGV2ZWwgMywKLSAgICAgKiB0aHVzIHRoZSBjaGVjayBhZ2FpbnN0ICJ0diIuCi0gICAgICovCi0g
ICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2aWV3LT5tZWRpYVR5cGUoKSwg
InR2Il9zKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byogcHJpbWl0aXZlVmFs
dWUgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBBbGwga25v
d24gaW1wbGVtZW50YXRpb25zIChCbGluaywgR2Vja28pIGFzc3VtZSBhbmQgbWF0Y2ggInByb2dy
ZXNzaXZlIi4KLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZVByb2dyZXNzaXZlOwotfQotCi1zdGF0aWMgYm9vbCBmb3JjZWRDb2xvcnNFdmFsdWF0ZShDU1NW
YWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYsIE1l
ZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwcmltaXRpdmVWYWx1ZSA9IGR5bmFtaWNE
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9uIENvY29hIHBsYXRmb3Jtcywg
dGhlcmUgaXMgbm8gY29uY2VwdCBvZiAiZm9yY2VkIGNvbG9ycyIuCi0gICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwotfQotCi1zdGF0aWMgYm9vbCBn
cmlkRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgcmV0dXJuIHplcm9F
dmFsdWF0ZSh2YWx1ZSwgb3ApOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNv
bXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBib29sIHN0cmljdCwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCi17Ci0gICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXJPckludGVnZXIoKSkgewotICAgICAg
ICBkb3VibGUgdmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpOwotICAgICAgICAv
LyBUaGUgb25seSB1bml0bGVzcyBudW1iZXIgdmFsdWUgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZSBp
cyB6ZXJvLgotICAgICAgICBpZiAoc3RyaWN0ICYmIHZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKQotICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUu
Y29tcHV0ZUxlbmd0aDxkb3VibGU+KGNvbnZlcnNpb25EYXRhKTsKLQotICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci19Ci0KLXN0YXRpYyBib29sIGRldmljZUhlaWdodEV2YWx1YXRlKENTU1ZhbHVl
KiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEs
IEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIC8vICh7LG1pbi0s
bWF4LX1kZXZpY2UtaGVpZ2h0KQotICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBh
c3N1bWUgbm9uLXplcm8KLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBhdXRvIGxlbmd0aCA9IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS5kb2N1bWVudCgpLT5p
blF1aXJrc01vZGUoKSwgY29udmVyc2lvbkRhdGEpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGhlaWdodCA9IGZyYW1lLm1haW5GcmFtZSgpLnNj
cmVlblNpemUoKS5oZWlnaHQoKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBz
dHJlYW0gPDwgIiAgZGV2aWNlSGVpZ2h0RXZhbHVhdGU6IHF1ZXJ5ICIgPDwgb3AgPDwgIiBoZWln
aHQgIiA8PCAqbGVuZ3RoIDw8ICIsIGFjdHVhbCBoZWlnaHQgIiA8PCBoZWlnaHQgPDwgIiByZXN1
bHQ6ICIgPDwgY29tcGFyZVZhbHVlKGhlaWdodCwgKmxlbmd0aCwgb3ApKTsKLSAgICByZXR1cm4g
Y29tcGFyZVZhbHVlKGhlaWdodCwgKmxlbmd0aCwgb3ApOwotfQotCi1zdGF0aWMgYm9vbCBkZXZp
Y2VXaWR0aEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4
IG9wKQotewotICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Utd2lkdGgpCi0gICAgLy8gYXNzdW1l
IGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybwotICAgIGlmICghdmFsdWUpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gbGVuZ3RoID0gY29tcHV0ZUxlbmd0aCh2YWx1
ZSwgIWZyYW1lLmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBjb252ZXJzaW9uRGF0YSk7Ci0g
ICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gd2lkdGgg
PSBmcmFtZS5tYWluRnJhbWUoKS5zY3JlZW5TaXplKCkud2lkdGgoKTsKLSAgICBMT0dfV0lUSF9T
VFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIiAgZGV2aWNlV2lkdGhFdmFsdWF0ZTogcXVl
cnkgIiA8PCBvcCA8PCAiIHdpZHRoICIgPDwgKmxlbmd0aCA8PCAiLCBhY3R1YWwgd2lkdGggIiA8
PCB3aWR0aCA8PCAiIHJlc3VsdDogIiA8PCBjb21wYXJlVmFsdWUod2lkdGgsICpsZW5ndGgsIG9w
KSk7Ci0gICAgcmV0dXJuIGNvbXBhcmVWYWx1ZSh3aWR0aCwgKmxlbmd0aCwgb3ApOwotfQotCi1z
dGF0aWMgYm9vbCBoZWlnaHRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVh
dHVyZVByZWZpeCBvcCkKLXsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7Ci0g
ICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IGhlaWdodCA9IHZp
ZXctPmxheW91dEhlaWdodCgpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBoZWln
aHQ7Ci0KLSAgICBhdXRvIGxlbmd0aCA9IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS5kb2N1
bWVudCgpLT5pblF1aXJrc01vZGUoKSwgY29udmVyc2lvbkRhdGEpOwotICAgIGlmICghbGVuZ3Ro
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZy
YW1lLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgaGVpZ2h0ID0gYWRqdXN0Rm9y
QWJzb2x1dGVab29tKGhlaWdodCwgKnJlbmRlclZpZXcpOwotCi0gICAgTE9HX1dJVEhfU1RSRUFN
KE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIGhlaWdodEV2YWx1YXRlOiBxdWVyeSAiIDw8IG9w
IDw8ICIgaGVpZ2h0ICIgPDwgKmxlbmd0aCA8PCAiLCBhY3R1YWwgaGVpZ2h0ICIgPDwgaGVpZ2h0
IDw8ICIgcmVzdWx0OiAiIDw8IGNvbXBhcmVWYWx1ZShoZWlnaHQsICpsZW5ndGgsIG9wKSk7Ci0g
ICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShoZWlnaHQsICpsZW5ndGgsIG9wKTsKLX0KLQotc3RhdGlj
IGJvb2wgd2lkdGhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVBy
ZWZpeCBvcCkKLXsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7Ci0gICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IHdpZHRoID0gdmlldy0+bGF5
b3V0V2lkdGgoKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gd2lkdGg7Ci0KLSAg
ICBhdXRvIGxlbmd0aCA9IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS5kb2N1bWVudCgpLT5p
blF1aXJrc01vZGUoKSwgY29udmVyc2lvbkRhdGEpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lLmRvY3Vt
ZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgd2lkdGggPSBhZGp1c3RGb3JBYnNvbHV0ZVpv
b20od2lkdGgsICpyZW5kZXJWaWV3KTsKLQotICAgIExPR19XSVRIX1NUUkVBTShNZWRpYVF1ZXJp
ZXMsIHN0cmVhbSA8PCAiICB3aWR0aEV2YWx1YXRlOiBxdWVyeSAiIDw8IG9wIDw8ICIgd2lkdGgg
IiA8PCAqbGVuZ3RoIDw8ICIsIGFjdHVhbCB3aWR0aCAiIDw8IHdpZHRoIDw8ICIgcmVzdWx0OiAi
IDw8IGNvbXBhcmVWYWx1ZSh3aWR0aCwgKmxlbmd0aCwgb3ApKTsKLSAgICByZXR1cm4gY29tcGFy
ZVZhbHVlKHdpZHRoLCAqbGVuZ3RoLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkNvbG9yRXZh
bHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBj
b252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAg
cmV0dXJuIGNvbG9yRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWluUHJl
Zml4KTsKLX0KLQotc3RhdGljIGJvb2wgbWF4Q29sb3JFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUs
IGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYg
ZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gY29sb3JFdmFsdWF0ZSh2
YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNYXhQcmVmaXgpOwotfQotCi1zdGF0aWMgYm9v
bCBtaW5Db2xvckluZGV4RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1
cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGNvbG9ySW5kZXhFdmFsdWF0ZSh2YWx1ZSwgY29udmVy
c2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhDb2xvcklu
ZGV4RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17
Ci0gICAgcmV0dXJuIGNvbG9ySW5kZXhFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZy
YW1lLCBNYXhQcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtaW5Nb25vY2hyb21lRXZhbHVhdGUo
Q1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJz
aW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJu
IG1vbm9jaHJvbWVFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVm
aXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhNb25vY2hyb21lRXZhbHVhdGUoQ1NTVmFsdWUqIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJh
bWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIG1vbm9jaHJvbWVF
dmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNYXhQcmVmaXgpOwotfQotCi1z
dGF0aWMgYm9vbCBtaW5Bc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwg
TWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBhc3BlY3RSYXRpb0V2YWx1YXRlKHZh
bHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29s
IG1heEFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1
cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGFzcGVjdFJhdGlvRXZhbHVhdGUodmFsdWUsIGNvbnZl
cnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQotc3RhdGljIGJvb2wgbWluRGV2aWNl
QXNwZWN0UmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVBy
ZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlQXNwZWN0UmF0aW9FdmFsdWF0ZSh2YWx1ZSwgY29u
dmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhEZXZp
Y2VBc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJl
UHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VBc3BlY3RSYXRpb0V2YWx1YXRlKHZhbHVlLCBj
b252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkRl
dmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVy
ZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKHZhbHVlLCBj
b252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1heERl
dmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVy
ZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKHZhbHVlLCBj
b252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkhl
aWdodEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQot
ewotICAgIHJldHVybiBoZWlnaHRFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1l
LCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhIZWlnaHRFdmFsdWF0ZShDU1NWYWx1
ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRh
LCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gaGVpZ2h0
RXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQot
c3RhdGljIGJvb2wgbWluV2lkdGhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlh
RmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gd2lkdGhFdmFsdWF0ZSh2YWx1ZSwgY29udmVy
c2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhXaWR0aEV2
YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYg
Y29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAg
IHJldHVybiB3aWR0aEV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFBy
ZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkRldmljZUhlaWdodEV2YWx1YXRlKENTU1ZhbHVl
KiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEs
IEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VI
ZWlnaHRFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwot
fQotCi1zdGF0aWMgYm9vbCBtYXhEZXZpY2VIZWlnaHRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUs
IGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYg
ZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlSGVpZ2h0RXZh
bHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQotc3Rh
dGljIGJvb2wgbWluRGV2aWNlV2lkdGhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1l
ZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlV2lkdGhFdmFsdWF0ZSh2YWx1
ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBt
YXhEZXZpY2VXaWR0aEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJl
UHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VXaWR0aEV2YWx1YXRlKHZhbHVlLCBjb252ZXJz
aW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pblJlc29sdXRp
b25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsK
LSAgICByZXR1cm4gcmVzb2x1dGlvbkV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJh
bWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1heFJlc29sdXRpb25FdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNp
b25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4g
cmVzb2x1dGlvbkV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZp
eCk7Ci19Ci0KLXN0YXRpYyBib29sIGFuaW1hdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0dXJlUHJl
Zml4IG9wKQotewotICAgIHJldHVybiBvbmVFdmFsdWF0ZSh2YWx1ZSwgb3ApOwotfQotCi1zdGF0
aWMgYm9vbCB0cmFuc2l0aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0g
ICAgcmV0dXJuIG9uZUV2YWx1YXRlKHZhbHVlLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIHRyYW5z
Zm9ybTJkRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgcmV0dXJuIG9u
ZUV2YWx1YXRlKHZhbHVlLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIHRyYW5zZm9ybTNkRXZhbHVh
dGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJh
bWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0jaWYgRU5BQkxFKDNEX1RSQU5T
Rk9STVMpCi0gICAgYXV0byogdmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwotICAgIHJl
dHVybiB2aWV3ICYmIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSA/
IG9uZUV2YWx1YXRlKHZhbHVlLCBvcCkgOiB6ZXJvRXZhbHVhdGUodmFsdWUsIG9wKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKLSAgICByZXR1cm4gemVyb0V2YWx1YXRlKHZhbHVl
LCBvcCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGJvb2wgdmlkZW9QbGF5YWJsZUlubGluZUV2YWx1
YXRlKENTU1ZhbHVlKiwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBm
cmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBmcmFtZS5zZXR0aW5ncygp
LmFsbG93c0lubGluZU1lZGlhUGxheWJhY2soKTsKLX0KLQotc3RhdGljIGJvb2wgaG92ZXJFdmFs
dWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBG
cmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdlID0gZnJh
bWUucGFnZSgpOwotICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0Rldmlj
ZSA9IHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaG92ZXJTdXBwb3J0ZWRCeVByaW1h
cnlQb2ludGluZ0RldmljZSgpOwotCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKQotICAgICAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0Rldmlj
ZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpLnZhbHVlSUQoKTsKLSAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGlu
Z0RldmljZSA/IChrZXl3b3JkID09IENTU1ZhbHVlSG92ZXIpIDogKGtleXdvcmQgPT0gQ1NTVmFs
dWVOb25lKTsKLX0KLQotc3RhdGljIGJvb2wgYW55SG92ZXJFdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlh
RmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpOwotICAgIGJv
b2wgaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlID0gcGFnZSAmJiBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRp
bmdEZXZpY2UoKTsKLQotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZTsK
LQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUp
LnZhbHVlSUQoKTsKLSAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50
aW5nRGV2aWNlID8gKGtleXdvcmQgPT0gQ1NTVmFsdWVIb3ZlcikgOiAoa2V5d29yZCA9PSBDU1NW
YWx1ZU5vbmUpOwotfQotCi1zdGF0aWMgYm9vbCBwb2ludGVyRXZhbHVhdGUoQ1NTVmFsdWUqIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRp
YUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKLSAgICBh
dXRvIHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9IHBhZ2Ug
PyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5
UG9pbnRpbmdEZXZpY2UoKSA6IHN0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4o
KTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKHBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9PSBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpD
b2Fyc2UpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOwotICAg
ICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZFByZXZlbnRQb2lu
dGVyTWVkaWFRdWVyeUZyb21FdmFsdWF0aW5nVG9Db2Fyc2UoKSkKLSAgICAgICAgICAgIHBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9IFBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3M6OkZpbmU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAhIXBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICBpZiAoa2V5d29yZCA9PSBD
U1NWYWx1ZUZpbmUpCi0gICAgICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmlt
YXJ5UG9pbnRpbmdEZXZpY2UgPT0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKLSAgICBp
ZiAoa2V5d29yZCA9PSBDU1NWYWx1ZUNvYXJzZSkKLSAgICAgICAgcmV0dXJuIHBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9PSBQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzOjpDb2Fyc2U7Ci0gICAgaWYgKGtleXdvcmQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICBy
ZXR1cm4gIXBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIGFueVBvaW50ZXJFdmFsdWF0ZShDU1NW
YWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJh
bWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgp
OwotICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9pbnRpbmdE
ZXZpY2VzID0gcGFnZSA/IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcygpIDogT3B0aW9uU2V0PFBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3M+KCk7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiAhcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxl
UG9pbnRpbmdEZXZpY2VzLmlzRW1wdHkoKTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICBpZiAoa2V5d29yZCA9
PSBDU1NWYWx1ZUZpbmUpCi0gICAgICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZB
bGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMuY29udGFpbnMoUG9pbnRlckNoYXJhY3RlcmlzdGlj
czo6RmluZSk7Ci0gICAgaWYgKGtleXdvcmQgPT0gQ1NTVmFsdWVDb2Fyc2UpCi0gICAgICAgIHJl
dHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMu
Y29udGFpbnMoUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKTsKLSAgICBpZiAoa2V5d29y
ZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNz
T2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMuaXNFbXB0eSgpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotc3RhdGljIGJvb2wgcHJlZmVyc0RhcmtJbnRlcmZhY2VFdmFsdWF0ZShDU1NWYWx1
ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUs
IE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBib29sIHByZWZlcnNEYXJrSW50ZXJmYWNlID0g
ZmFsc2U7Ci0KLSAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgJiYg
ZnJhbWUucGFnZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICBwcmVmZXJzRGFya0lu
dGVyZmFjZSA9IHRydWU7Ci0KLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gcHJlZmVy
c0RhcmtJbnRlcmZhY2U7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkudmFsdWVJRCgpID09IChwcmVmZXJzRGFya0ludGVyZmFjZSA/IENTU1ZhbHVlUHJl
ZmVycyA6IENTU1ZhbHVlTm9QcmVmZXJlbmNlKTsKLX0KLQotI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQotc3RhdGljIGJvb2wgcHJlZmVyc0NvbG9yU2NoZW1lRXZhbHVhdGUoQ1NTVmFsdWUqIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRp
YUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gWyZdICgp
IC0+IGF1dG8gewotICAgICAgICBpZiAoZnJhbWUuZG9jdW1lbnQoKS0+bG9hZGVyKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gY29sb3JTY2hlbWVQcmVmZXJlbmNlID0gZnJhbWUuZG9jdW1lbnQoKS0+
bG9hZGVyKCktPmNvbG9yU2NoZW1lUHJlZmVyZW5jZSgpOwotICAgICAgICAgICAgaWYgKGNvbG9y
U2NoZW1lUHJlZmVyZW5jZSAhPSBDb2xvclNjaGVtZVByZWZlcmVuY2U6Ok5vUHJlZmVyZW5jZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gY29sb3JTY2hlbWVQcmVmZXJlbmNlID09IENvbG9yU2No
ZW1lUHJlZmVyZW5jZTo6RGFyazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmcmFtZS5w
YWdlKCktPnVzZURhcmtBcHBlYXJhbmNlKCk7Ci0gICAgfSgpOwotCi0gICAgc3dpdGNoIChrZXl3
b3JkKSB7Ci0gICAgY2FzZSBDU1NWYWx1ZURhcms6Ci0gICAgICAgIHJldHVybiB1c2VEYXJrQXBw
ZWFyYW5jZTsKLSAgICBjYXNlIENTU1ZhbHVlTGlnaHQ6Ci0gICAgICAgIHJldHVybiAhdXNlRGFy
a0FwcGVhcmFuY2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLSNlbmRpZgotCi1zdGF0aWMgYm9vbCBwcmVmZXJzQ29udHJhc3RFdmFsdWF0ZShDU1NWYWx1
ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUs
IE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBib29sIHVzZXJQcmVmZXJzQ29udHJhc3QgPSBm
YWxzZTsKLQotICAgIHN3aXRjaCAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzQ29udHJh
c3RBY2Nlc3NpYmlsaXR5VmFsdWUoKSkgewotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZh
bHVlOjpPbjoKLSAgICAgICAgdXNlclByZWZlcnNDb250cmFzdCA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPZmY6Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpTeXN0ZW06Ci0jaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICB1c2VyUHJlZmVyc0Nv
bnRyYXN0ID0gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJzQ29udHJhc3QoKTsKLSNlbmRp
ZgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1
cm4gdXNlclByZWZlcnNDb250cmFzdDsKLQotICAgIC8vIEFwcGxlIHBsYXRmb3JtczogImxlc3Mi
IGlzIGlnbm9yZWQgYW5kIG9ubHkgIm1vcmUiIGlzIG1hcHBlZCB0byB0aGUgdXNlcidzIHByZWZl
cmVuY2UuCi0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZh
bHVlSUQoKSA9PSAodXNlclByZWZlcnNDb250cmFzdCA/IENTU1ZhbHVlTW9yZSA6IENTU1ZhbHVl
Tm9QcmVmZXJlbmNlKTsKLX0KLQotc3RhdGljIGJvb2wgcHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFs
dWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBG
cmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBib29sIHVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbiA9IGZhbHNlOwotCi0gICAgc3dpdGNoIChmcmFtZS5zZXR0aW5ncygpLmZv
cmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNzaWJpbGl0eVZhbHVlKCkpIHsKLSAgICBjYXNl
IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T246Ci0gICAgICAgIHVzZXJQcmVmZXJzUmVkdWNl
ZE1vdGlvbiA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPZmY6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpTeXN0ZW06Ci0jaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gVGhlbWU6OnNpbmdsZXRv
bigpLnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiB1c2VyUHJlZmVyc1JlZHVj
ZWRNb3Rpb247Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkudmFsdWVJRCgpID09ICh1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPyBDU1NWYWx1ZVJlZHVj
ZSA6IENTU1ZhbHVlTm9QcmVmZXJlbmNlKTsKLX0KLQotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKLXN0YXRpYyBib29sIGRpc3BsYXlNb2RlRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVl
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZl
YXR1cmVQcmVmaXgpCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52
YWx1ZUlEKCk7Ci0KLSAgICBhdXRvIG1hbmlmZXN0ID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFn
ZSgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFtYW5p
ZmVzdCkKLSAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVCcm93c2VyOwotCi0gICAg
c3dpdGNoIChtYW5pZmVzdC0+ZGlzcGxheSkgewotICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVz
dDo6RGlzcGxheTo6RnVsbHNjcmVlbjoKLSAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFs
dWVGdWxsc2NyZWVuOwotICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6U3Rh
bmRhbG9uZToKLSAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVTdGFuZGFsb25lOwot
ICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6TWluaW1hbFVJOgotICAgICAg
ICByZXR1cm4ga2V5d29yZCA9PSBDU1NWYWx1ZU1pbmltYWxVaTsKLSAgICBjYXNlIEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OkRpc3BsYXk6OkJyb3dzZXI6Ci0gICAgICAgIHJldHVybiBrZXl3b3JkID09
IENTU1ZhbHVlQnJvd3NlcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYg
Ly8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotCi0vLyBVc2UgdGhpcyBmdW5jdGlvbiBp
bnN0ZWFkIG9mIGNhbGxpbmcgYWRkIGRpcmVjdGx5IHRvIGF2b2lkIGlubGluaW5nLgotc3RhdGlj
IHZvaWQgYWRkKE1lZGlhUXVlcnlGdW5jdGlvbk1hcCYgbWFwLCBBdG9tU3RyaW5nSW1wbCoga2V5
LCBNZWRpYVF1ZXJ5RnVuY3Rpb24gdmFsdWUpCi17Ci0gICAgbWFwLmFkZChrZXksIHZhbHVlKTsK
LX0KLQotYm9vbCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgY29uc3QKLXsKLSAgICBpZiAoIW1fZG9jdW1l
bnQpCi0gICAgICAgIHJldHVybiBtX2ZhbGxiYWNrUmVzdWx0OwotCi0gICAgYXV0byYgZG9jdW1l
bnQgPSAqbV9kb2N1bWVudDsKLSAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7Ci0g
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAhbV9zdHlsZSkKLSAgICAgICAgcmV0
dXJuIG1fZmFsbGJhY2tSZXN1bHQ7Ci0KLSAgICBpZiAoIWV4cHJlc3Npb24uaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFR
dWVyeUZ1bmN0aW9uTWFwPiBtYXAgPSBbXSB7Ci0gICAgICAgIE1lZGlhUXVlcnlGdW5jdGlvbk1h
cCBtYXA7Ci0jZGVmaW5lIEFERF9UT19GVU5DVElPTk1BUChuYW1lLCBzdHIpIGFkZChtYXAsIE1l
ZGlhRmVhdHVyZU5hbWVzOjpuYW1lLT5pbXBsKCksIG5hbWUjI0V2YWx1YXRlKTsKLSAgICAgICAg
Q1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKEFERF9UT19GVU5DVElP
Tk1BUCk7Ci0jdW5kZWYgQUREX1RPX0ZVTkNUSU9OTUFQCi0gICAgICAgIHJldHVybiBtYXA7Ci0g
ICAgfSgpOwotCi0gICAgYXV0byBmdW5jdGlvbiA9IG1hcC5nZXQoKS5nZXQoZXhwcmVzc2lvbi5t
ZWRpYUZlYXR1cmUoKS5pbXBsKCkpOwotICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmICghZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOwotICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVsdFN0eWxlLmZvbnREZXNj
cmlwdGlvbigpOwotICAgIGF1dG8gc2l6ZSA9IFN0eWxlOjpmb250U2l6ZUZvcktleXdvcmQoQ1NT
VmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1bWVudCk7Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldENv
bXB1dGVkU2l6ZShzaXplKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShz
aXplKTsKLSAgICBkZWZhdWx0U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERl
c2NyaXB0aW9uKSk7Ci0gICAgZGVmYXVsdFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCk7Ci0g
ICAgCi0gICAgLy8gUGFzcyBgbnVsbHB0cmAgZm9yIGBwYXJlbnRTdHlsZWAgYmVjYXVzZSB3ZSBh
cmUgaW4gdGhlIGNvbnRleHQgb2YgYSBtZWRpYSBxdWVyeS4KLSAgICByZXR1cm4gZnVuY3Rpb24o
ZXhwcmVzc2lvbi52YWx1ZSgpLCB7ICptX3N0eWxlLCAmZGVmYXVsdFN0eWxlLCBudWxscHRyLCBk
b2N1bWVudC5yZW5kZXJWaWV3KCkgfSwgKmZyYW1lLCBOb1ByZWZpeCk7Ci19Ci0KLWJvb2wgTGVn
YWN5TWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKLXsKLSAgICBBU1NFUlQoZG9j
dW1lbnQucmVuZGVyVmlldygpKTsKLSAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZShhdHRyaWJ1dGVWYWx1ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1l
bnQpKTsKLSAgICByZXR1cm4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3Ms
IGRvY3VtZW50LCAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIH0uZXZhbHVhdGUobWVk
aWFRdWVyaWVzLmdldCgpKTsKLX0KLQotCi1PcHRpb25TZXQ8TVE6Ok1lZGlhUXVlcnlEeW5hbWlj
RGVwZW5kZW5jeT4gbWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmNpZXMoY29uc3QgTWVkaWFRdWVy
eVNldCYgcXVlcmllcywgY29uc3QgTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9y
KQotewotICAgIE9wdGlvblNldDxNUTo6TWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmN5PiByZXN1
bHQ7Ci0KLSAgICBmb3IgKGF1dG8mIHF1ZXJ5IDogcXVlcmllcy5xdWVyeVZlY3RvcigpKSB7Ci0g
ICAgICAgIGlmIChxdWVyeS5pZ25vcmVkKCkgfHwgKCFxdWVyeS5leHByZXNzaW9ucygpLnNpemUo
KSAmJiBxdWVyeS5tZWRpYVR5cGUoKS5pc0VtcHR5KCkpKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgaWYgKCFldmFsdWF0b3IubWVkaWFUeXBlTWF0Y2gocXVlcnkubWVkaWFUeXBl
KCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBleHByZXNz
aW9uIDogcXVlcnkuZXhwcmVzc2lvbnMoKSkgewotICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24u
aXNWaWV3cG9ydERlcGVuZGVudCgpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoTVE6Ok1l
ZGlhUXVlcnlEeW5hbWljRGVwZW5kZW5jeTo6Vmlld3BvcnQpOwotICAgICAgICAgICAgaWYgKGlz
QXBwZWFyYW5jZURlcGVuZGVudChleHByZXNzaW9uLm1lZGlhRmVhdHVyZSgpKSkKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYWRkKE1ROjpNZWRpYVF1ZXJ5RHluYW1pY0RlcGVuZGVuY3k6OkFwcGVh
cmFuY2UpOwotICAgICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVNldHRpbmdzRGVwZW5kZW50
KGV4cHJlc3Npb24ubWVkaWFGZWF0dXJlKCkpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQo
TVE6Ok1lZGlhUXVlcnlEeW5hbWljRGVwZW5kZW5jeTo6QWNjZXNzaWJpbGl0eSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0OTI3NDk2NjRjZjUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENTUyBNZWRpYSBRdWVyeSBFdmFsdWF0b3IKLSAqCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9r
aWEuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeS5o
IgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIFdl
YWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YTsKLWNsYXNzIE1lZGlhUXVlcnlTZXQ7Ci1jbGFz
cyBSZW5kZXJTdHlsZTsKLQotc3RydWN0IE1lZGlhUXVlcnlSZXN1bHQgewotICAgIFJlZjxjb25z
dCBNZWRpYVF1ZXJ5U2V0PiBxdWVyeTsKLSAgICBib29sIHJlc3VsdDsKLX07Ci0KLS8vIFNvbWUg
b2YgdGhlIGNvbnN0cnVjdG9ycyBhcmUgdXNlZCBmb3IgY2FzZXMgd2hlcmUgdGhlIGRldmljZSBj
aGFyYWN0ZXJpc3RpY3MgYXJlIG5vdCBrbm93bi4KLS8vIFRoZXNlICBjYW4gYmUgdXNlZCB0byBw
cnVuZSB0aGUgbG9hZGluZyBvZiBzdHlsZXNoZWV0cyB0byBvbmx5IHRob3NlIHdoaWNoIGFyZSBu
b3QgYWxyZWFkeSBrbm93biB0byBub3QgbWF0Y2guCi0KLWNsYXNzIExlZ2FjeU1lZGlhUXVlcnlF
dmFsdWF0b3IgewotcHVibGljOgotICAgIC8vIENyZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1
YXRlcyBvbmx5IHNpbXBsZSBtZWRpYSBxdWVyaWVzLgotICAgIC8vIEV2YWx1YXRvciByZXR1cm5z
IHRydWUgZm9yICJhbGwiLCBhbmQgcmV0dXJucyB2YWx1ZSBvZiBcbWVkaWFGZWF0dXJlUmVzdWx0
IGZvciBhbnkgbWVkaWEgZmVhdHVyZXMuCi0gICAgZXhwbGljaXQgTGVnYWN5TWVkaWFRdWVyeUV2
YWx1YXRvcihib29sIG1lZGlhRmVhdHVyZVJlc3VsdCA9IGZhbHNlKTsKLQotICAgIC8vIENyZWF0
ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRlcyBvbmx5IHNpbXBsZSBtZWRpYSBxdWVyaWVzLgot
ICAgIC8vIEV2YWx1YXRvciByZXR1cm5zIHRydWUgZm9yIGFjY2VwdGVkTWVkaWFUeXBlIGFuZCBy
ZXR1cm5zIHZhbHVlIG9mIFxtZWRpYUZlYXR1cmVSZXN1bHQgZm9yIGFueSBtZWRpYSBmZWF0dXJl
cy4KLSAgICBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRN
ZWRpYVR5cGUsIGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0ID0gZmFsc2UpOwotCi0gICAgLy8gQ3Jl
YXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVzIGZ1bGwgbWVkaWEgcXVlcmllcy4KLSAgICBX
RUJDT1JFX0VYUE9SVCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNj
ZXB0ZWRNZWRpYVR5cGUsIGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqKTsKLQot
ICAgIGJvb2wgbWVkaWFUeXBlTWF0Y2goY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBj
b25zdDsKLSAgICBib29sIG1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoQVNDSUlMaXRlcmFsIG1lZGlh
VHlwZVRvTWF0Y2gpIGNvbnN0OwotCi0gICAgLy8gRXZhbHVhdGVzIG1lZGlhIHF1ZXJ5IHN1YmV4
cHJlc3Npb24sIGllICJhbmQgKG1lZGlhLWZlYXR1cmU6IHZhbHVlKSIgcGFydC4KLSAgICBib29s
IGV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJikgY29uc3Q7Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQmKSBjb25zdDsKLQot
ICAgIHN0YXRpYyBib29sIG1lZGlhQXR0cmlidXRlTWF0Y2hlcyhEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYgYXR0cmlidXRlVmFsdWUpOwotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX21lZGlhVHlw
ZTsKLSAgICBXZWFrUHRyPGNvbnN0IERvY3VtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdl
dERhdGE+IG1fZG9jdW1lbnQ7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIG1fc3R5bGUgeyBudWxs
cHRyIH07Ci0gICAgYm9vbCBtX2ZhbGxiYWNrUmVzdWx0IHsgZmFsc2UgfTsKLX07Ci0KLU9wdGlv
blNldDxNUTo6TWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmN5PiBtZWRpYVF1ZXJ5RHluYW1pY0Rl
cGVuZGVuY2llcyhjb25zdCBNZWRpYVF1ZXJ5U2V0JiwgY29uc3QgTGVnYWN5TWVkaWFRdWVyeUV2
YWx1YXRvciYpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1
cmVOYW1lcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZmM4N2JkY2MwMS4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA1IEFwcGxlIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYUZl
YXR1cmVOYW1lcy5oIgotCi0jaW5jbHVkZSAiQ29tbW9uQXRvbVN0cmluZ3MuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5hbWVzIHsKLQotI2RlZmluZSBE
RUZJTkVfTUVESUFGRUFUVVJFX0dMT0JBTChuYW1lLCBzdHJpbmcpIExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lOwotQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hf
TUVESUFGRUFUVVJFKERFRklORV9NRURJQUZFQVRVUkVfR0xPQkFMKQotI3VuZGVmIERFRklORV9N
RURJQUZFQVRVUkVfR0xPQkFMCi0KLXZvaWQgaW5pdCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZWQ7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBpbml0aWFsaXplQ29t
bW9uQXRvbVN0cmluZ3MoKTsKLSNkZWZpbmUgSU5JVElBTElaRV9HTE9CQUwobmFtZSwgc3RyaW5n
KSBuYW1lLmNvbnN0cnVjdChzdHJpbmcgIyMgX3MpOwotICAgICAgICBDU1NfTUVESUFRVUVSWV9O
QU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9CQUwpCi0jdW5kZWYgSU5J
VElBTElaRV9HTE9CQUwKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgTWVkaWFGZWF0dXJlTmFtZXMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI4MGEyMzlmODFmNy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+Ci0KLSNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCi0jZGVmaW5lIENTU19NRURJQVFVRVJZX0RJU1BMQVlfTU9ERShtYWNy
bykgbWFjcm8oZGlzcGxheU1vZGUsICJkaXNwbGF5LW1vZGUiKQotI2Vsc2UKLSNkZWZpbmUgQ1NT
X01FRElBUVVFUllfRElTUExBWV9NT0RFKG1hY3JvKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKLSNkZWZpbmUgQ1NTX01FRElBUVVFUllfUFJFRkVSU19DT0xPUl9TQ0hFTUUo
bWFjcm8pIG1hY3JvKHByZWZlcnNDb2xvclNjaGVtZSwgInByZWZlcnMtY29sb3Itc2NoZW1lIikK
LSNlbHNlCi0jZGVmaW5lIENTU19NRURJQVFVRVJZX1BSRUZFUlNfQ09MT1JfU0NIRU1FKG1hY3Jv
KQotI2VuZGlmCi0KLSNkZWZpbmUgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFG
RUFUVVJFKG1hY3JvKSBcCi0gICAgbWFjcm8oYW5pbWF0aW9uLCAiLXdlYmtpdC1hbmltYXRpb24i
KSBcCi0gICAgbWFjcm8oYW55SG92ZXIsICJhbnktaG92ZXIiKSBcCi0gICAgbWFjcm8oYW55UG9p
bnRlciwgImFueS1wb2ludGVyIikgXAotICAgIG1hY3JvKGFzcGVjdFJhdGlvLCAiYXNwZWN0LXJh
dGlvIikgXAotICAgIG1hY3JvKGNvbG9yLCAiY29sb3IiKSBcCi0gICAgbWFjcm8oY29sb3JHYW11
dCwgImNvbG9yLWdhbXV0IikgXAotICAgIG1hY3JvKGNvbG9ySW5kZXgsICJjb2xvci1pbmRleCIp
IFwKLSAgICBtYWNybyhkZXZpY2VBc3BlY3RSYXRpbywgImRldmljZS1hc3BlY3QtcmF0aW8iKSBc
Ci0gICAgbWFjcm8oZGV2aWNlSGVpZ2h0LCAiZGV2aWNlLWhlaWdodCIpIFwKLSAgICBtYWNybyhk
ZXZpY2VQaXhlbFJhdGlvLCAiLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW8iKSBcCi0gICAgbWFj
cm8oZGV2aWNlV2lkdGgsICJkZXZpY2Utd2lkdGgiKSBcCi0gICAgbWFjcm8oZHluYW1pY1Jhbmdl
LCAiZHluYW1pYy1yYW5nZSIpIFwKLSAgICBtYWNybyhmb3JjZWRDb2xvcnMsICJmb3JjZWQtY29s
b3JzIikgXAotICAgIG1hY3JvKGdyaWQsICJncmlkIikgXAotICAgIG1hY3JvKGhlaWdodCwgImhl
aWdodCIpIFwKLSAgICBtYWNybyhob3ZlciwgImhvdmVyIikgXAotICAgIG1hY3JvKGludmVydGVk
Q29sb3JzLCAiaW52ZXJ0ZWQtY29sb3JzIikgXAotICAgIG1hY3JvKG1heEFzcGVjdFJhdGlvLCAi
bWF4LWFzcGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhtYXhDb2xvciwgIm1heC1jb2xvciIpIFwK
LSAgICBtYWNybyhtYXhDb2xvckluZGV4LCAibWF4LWNvbG9yLWluZGV4IikgXAotICAgIG1hY3Jv
KG1heERldmljZUFzcGVjdFJhdGlvLCAibWF4LWRldmljZS1hc3BlY3QtcmF0aW8iKSBcCi0gICAg
bWFjcm8obWF4RGV2aWNlSGVpZ2h0LCAibWF4LWRldmljZS1oZWlnaHQiKSBcCi0gICAgbWFjcm8o
bWF4RGV2aWNlUGl4ZWxSYXRpbywgIi13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbyIpIFwK
LSAgICBtYWNybyhtYXhEZXZpY2VXaWR0aCwgIm1heC1kZXZpY2Utd2lkdGgiKSBcCi0gICAgbWFj
cm8obWF4SGVpZ2h0LCAibWF4LWhlaWdodCIpIFwKLSAgICBtYWNybyhtYXhNb25vY2hyb21lLCAi
bWF4LW1vbm9jaHJvbWUiKSBcCi0gICAgbWFjcm8obWF4UmVzb2x1dGlvbiwgIm1heC1yZXNvbHV0
aW9uIikgXAotICAgIG1hY3JvKG1heFdpZHRoLCAibWF4LXdpZHRoIikgXAotICAgIG1hY3JvKG1p
bkFzcGVjdFJhdGlvLCAibWluLWFzcGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhtaW5Db2xvciwg
Im1pbi1jb2xvciIpIFwKLSAgICBtYWNybyhtaW5Db2xvckluZGV4LCAibWluLWNvbG9yLWluZGV4
IikgXAotICAgIG1hY3JvKG1pbkRldmljZUFzcGVjdFJhdGlvLCAibWluLWRldmljZS1hc3BlY3Qt
cmF0aW8iKSBcCi0gICAgbWFjcm8obWluRGV2aWNlSGVpZ2h0LCAibWluLWRldmljZS1oZWlnaHQi
KSBcCi0gICAgbWFjcm8obWluRGV2aWNlUGl4ZWxSYXRpbywgIi13ZWJraXQtbWluLWRldmljZS1w
aXhlbC1yYXRpbyIpIFwKLSAgICBtYWNybyhtaW5EZXZpY2VXaWR0aCwgIm1pbi1kZXZpY2Utd2lk
dGgiKSBcCi0gICAgbWFjcm8obWluSGVpZ2h0LCAibWluLWhlaWdodCIpIFwKLSAgICBtYWNybyht
aW5Nb25vY2hyb21lLCAibWluLW1vbm9jaHJvbWUiKSBcCi0gICAgbWFjcm8obWluUmVzb2x1dGlv
biwgIm1pbi1yZXNvbHV0aW9uIikgXAotICAgIG1hY3JvKG1pbldpZHRoLCAibWluLXdpZHRoIikg
XAotICAgIG1hY3JvKG1vbm9jaHJvbWUsICJtb25vY2hyb21lIikgXAotICAgIG1hY3JvKG9yaWVu
dGF0aW9uLCAib3JpZW50YXRpb24iKSBcCi0gICAgbWFjcm8ocG9pbnRlciwgInBvaW50ZXIiKSBc
Ci0gICAgbWFjcm8ocHJlZmVyc0NvbnRyYXN0LCAicHJlZmVycy1jb250cmFzdCIpIFwKLSAgICBt
YWNybyhwcmVmZXJzRGFya0ludGVyZmFjZSwgInByZWZlcnMtZGFyay1pbnRlcmZhY2UiKSBcCi0g
ICAgbWFjcm8ocHJlZmVyc1JlZHVjZWRNb3Rpb24sICJwcmVmZXJzLXJlZHVjZWQtbW90aW9uIikg
XAotICAgIG1hY3JvKHJlc29sdXRpb24sICJyZXNvbHV0aW9uIikgXAotICAgIG1hY3JvKHNjYW4s
ICJzY2FuIikgXAotICAgIG1hY3JvKHRyYW5zZm9ybTJkLCAiLXdlYmtpdC10cmFuc2Zvcm0tMmQi
KSBcCi0gICAgbWFjcm8odHJhbnNmb3JtM2QsICItd2Via2l0LXRyYW5zZm9ybS0zZCIpIFwKLSAg
ICBtYWNybyh0cmFuc2l0aW9uLCAiLXdlYmtpdC10cmFuc2l0aW9uIikgXAotICAgIG1hY3JvKHZp
ZGVvUGxheWFibGVJbmxpbmUsICItd2Via2l0LXZpZGVvLXBsYXlhYmxlLWlubGluZSIpIFwKLSAg
ICBtYWNybyh3aWR0aCwgIndpZHRoIikgXAotICAgIENTU19NRURJQVFVRVJZX0RJU1BMQVlfTU9E
RShtYWNybykgXAotICAgIENTU19NRURJQVFVRVJZX1BSRUZFUlNfQ09MT1JfU0NIRU1FKG1hY3Jv
KSBcCi0KLS8vIGVuZCBvZiBtYWNybwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMgewotCi0jZGVmaW5lIENTU19NRURJQVFVRVJZX05BTUVTX0RFQ0xB
UkUobmFtZSwgc3RyaW5nKSBleHRlcm4gTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG5hbWU7Ci0gICAgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJF
KENTU19NRURJQVFVRVJZX05BTUVTX0RFQ0xBUkUpCi0jdW5kZWYgQ1NTX01FRElBUVVFUllfTkFN
RVNfREVDTEFSRQotCi0gICAgdm9pZCBpbml0KCk7Ci0KLX0gLy8gbmFtZXNwYWNlIE1lZGlhRmVh
dHVyZU5hbWVzCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3Bw
CmluZGV4IDQyNGQyYjI4ZDY0Mi4uZTJiM2IyNjhkYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0
LmNwcApAQCAtMjYsOSArMjYsNiBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkxlZ2Fj
eU1lZGlhUXVlcnkuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmgiCi0jaW5j
bHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5j
bHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpAQCAtMzcsMTM2ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLyogTWVkaWFM
aXN0IGlzIHVzZWQgdG8gc3RvcmUgMyB0eXBlcyBvZiBtZWRpYSByZWxhdGVkIGVudGl0aWVzIHdo
aWNoIG1lYW4gdGhlIHNhbWU6Ci0gKiBNZWRpYSBRdWVyaWVzLCBNZWRpYSBUeXBlcyBhbmQgTWVk
aWEgRGVzY3JpcHRvcnMuCi0gKiBDdXJyZW50bHkgTWVkaWFMaXN0IGFsd2F5cyB0cmllcyB0byBw
YXJzZSBtZWRpYSBxdWVyaWVzIGFuZCBpZiBwYXJzaW5nIGZhaWxzLAotICogdHJpZXMgdG8gZmFs
bGJhY2sgdG8gTWVkaWEgRGVzY3JpcHRvcnMgaWYgbV9mYWxsYmFja1RvRGVzY3JpcHRvciBmbGFn
IGlzIHNldC4KLSAqIFNsaWdodCBwcm9ibGVtIHdpdGggc3ludGF4IGVycm9yIGhhbmRsaW5nOgot
ICogQ1NTIDIuMSBTcGVjIChodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9tZWRpYS5odG1sKQot
ICogc3BlY2lmaWVzIHRoYXQgZmFpbGluZyBtZWRpYSB0eXBlIHBhcnNpbmcgaXMgYSBzeW50YXgg
ZXJyb3IKLSAqIENTUyAzIE1lZGlhIFF1ZXJpZXMgU3BlYyAoaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1tZWRpYXF1ZXJpZXMvKQotICogc3BlY2lmaWVzIHRoYXQgZmFpbGluZyBtZWRpYSBxdWVy
eSBpcyBhIHN5bnRheCBlcnJvcgotICogSFRNTCA0LjAxIHNwZWMgKGh0dHA6Ly93d3cudzMub3Jn
L1RSL1JFQy1odG1sNDAvcHJlc2VudC9zdHlsZXMuaHRtbCNhZGVmLW1lZGlhKQotICogc3BlY2lm
aWVzIHRoYXQgTWVkaWEgRGVzY3JpcHRvcnMgc2hvdWxkIGJlIHBhcnNlZCB3aXRoIGZvcndhcmQt
Y29tcGF0aWJsZSBzeW50YXgKLSAqIERPTSBMZXZlbCAyIFN0eWxlIFNoZWV0IHNwZWMgKGh0dHA6
Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlLykKLSAqIHRhbGtzIGFib3V0IE1lZGlh
TGlzdC5tZWRpYVRleHQgYW5kIHJlZmVycwotICogICAtICB0byBNZWRpYSBEZXNjcmlwdG9ycyBv
ZiBIVE1MIDQuMCBpbiBjb250ZXh0IG9mIFN0eWxlU2hlZXQKLSAqICAgLSAgdG8gTWVkaWEgVHlw
ZXMgb2YgQ1NTIDIuMCBpbiBjb250ZXh0IG9mIENTU01lZGlhUnVsZSBhbmQgQ1NTSW1wb3J0UnVs
ZQotICoKLSAqIFRoZXNlIGZhY3RzIGNyZWF0ZSBzaXR1YXRpb24gd2hlcmUgc2FtZSAoaWxsZWdh
bCkgbWVkaWEgc3BlY2lmaWNhdGlvbiBtYXkgcmVzdWx0IGluCi0gKiBkaWZmZXJlbnQgcGFyc2Vz
IGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIG1lZGlhIGF0dHIgb2Ygc3R5bGUgZWxlbWVudCBv
ciBwYXJ0IG9mCi0gKiBjc3MgQG1lZGlhIHJ1bGUuCi0gKiA8c3R5bGUgbWVkaWE9InNjcmVlbiBh
bmQgcmVzb2x1dGlvbiA+IDQwZHBpIj4gLi48L3N0eWxlPiB3aWxsIGJlIGVuYWJsZWQgb24gc2Ny
ZWVuIGRldmljZXMgd2hlcmUgYXMKLSAqIEBtZWRpYSBzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0
MGRwaSB7Li59IHdpbGwgbm90LgotICogVGhpcyBnZXRzIG1vcmUgY291bnRlci1pbnR1aXRpdmUg
aW4gSmF2YVNjcmlwdDoKLSAqIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLm1lZGlhVGV4
dCA9ICJzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSIgd2lsbCBiZSBvayBhbmQKLSAqIGVu
YWJsZWQsIHdoaWxlCi0gKiBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5tZWRp
YS5tZWRpYVRleHQgPSAic2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGkiIHdpbGwKLSAqIHRo
cm93IFN5bnRheEVycm9yIGV4Y2VwdGlvbi4KLSAqLwotCi1SZWY8TWVkaWFRdWVyeVNldD4gTWVk
aWFRdWVyeVNldDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJpbmcsIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0IGNvbnRleHQpCi17Ci0gICAgaWYgKG1lZGlhU3RyaW5nLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSgpOwotCi0gICAgYXV0byBwYXJz
ZWRNZWRpYVF1ZXJ5U2V0ID0gTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5
U2V0KG1lZGlhU3RyaW5nLCBjb250ZXh0KTsKLSAgICBpZiAoVU5MSUtFTFkoIXBhcnNlZE1lZGlh
UXVlcnlTZXQpKQotICAgICAgICByZXR1cm4gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKCk7Ci0gICAg
Ci0gICAgcmV0dXJuIHBhcnNlZE1lZGlhUXVlcnlTZXQucmVsZWFzZU5vbk51bGwoKTsKLX0KLQot
TWVkaWFRdWVyeVNldDo6TWVkaWFRdWVyeVNldCgpID0gZGVmYXVsdDsKLQotTWVkaWFRdWVyeVNl
dDo6TWVkaWFRdWVyeVNldChjb25zdCBNZWRpYVF1ZXJ5U2V0JiBvKQotICAgIDogbV9xdWVyaWVz
KG8ubV9xdWVyaWVzKQotewotfQotCi1NZWRpYVF1ZXJ5U2V0Ojp+TWVkaWFRdWVyeVNldCgpID0g
ZGVmYXVsdDsKLQotYm9vbCBNZWRpYVF1ZXJ5U2V0OjpzZXQoY29uc3QgU3RyaW5nJiBtZWRpYVN0
cmluZykKLXsKLSAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShtZWRpYVN0cmluZyk7Ci0gICAgbV9x
dWVyaWVzID0gV1RGTW92ZShyZXN1bHQtPm1fcXVlcmllcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgTWVkaWFRdWVyeVNldDo6YWRkKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCi17
Ci0gICAgLy8gVG8gInBhcnNlIGEgbWVkaWEgcXVlcnkiIGZvciBhIGdpdmVuIHN0cmluZyBtZWFu
cyB0byBmb2xsb3cgInRoZSBwYXJzZQotICAgIC8vIGEgbWVkaWEgcXVlcnkgbGlzdCIgc3RlcHMg
YW5kIHJldHVybiAibnVsbCIgaWYgbW9yZSB0aGFuIG9uZSBtZWRpYSBxdWVyeQotICAgIC8vIGlz
IHJldHVybmVkLCBvciBlbHNlIHRoZSByZXR1cm5lZCBtZWRpYSBxdWVyeS4KLSAgICBhdXRvIHJl
c3VsdCA9IGNyZWF0ZShxdWVyeVN0cmluZyk7Ci0gICAgCi0gICAgLy8gT25seSBjb250aW51ZSBp
ZiBleGFjdGx5IG9uZSBtZWRpYSBxdWVyeSBpcyBmb3VuZCwgYXMgZGVzY3JpYmVkIGFib3ZlLgot
ICAgIGlmIChyZXN1bHQtPm1fcXVlcmllcy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIC8vIElmIGNvbXBhcmluZyB3aXRoIGFueSBvZiB0aGUgbWVkaWEgcXVl
cmllcyBpbiB0aGUgY29sbGVjdGlvbiBvZiBtZWRpYQotICAgIC8vIHF1ZXJpZXMgcmV0dXJucyB0
cnVlIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
cXVlcmllcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9xdWVyaWVzW2ldID09IHJlc3Vs
dC0+bV9xdWVyaWVzWzBdKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAK
LSAgICBtX3F1ZXJpZXMuYXBwZW5kKHJlc3VsdC0+bV9xdWVyaWVzWzBdKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBNZWRpYVF1ZXJ5U2V0OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBxdWVy
eVN0cmluZ1RvUmVtb3ZlKQotewotICAgIC8vIFRvICJwYXJzZSBhIG1lZGlhIHF1ZXJ5IiBmb3Ig
YSBnaXZlbiBzdHJpbmcgbWVhbnMgdG8gZm9sbG93ICJ0aGUgcGFyc2UKLSAgICAvLyBhIG1lZGlh
IHF1ZXJ5IGxpc3QiIHN0ZXBzIGFuZCByZXR1cm4gIm51bGwiIGlmIG1vcmUgdGhhbiBvbmUgbWVk
aWEgcXVlcnkKLSAgICAvLyBpcyByZXR1cm5lZCwgb3IgZWxzZSB0aGUgcmV0dXJuZWQgbWVkaWEg
cXVlcnkuCi0gICAgYXV0byByZXN1bHQgPSBjcmVhdGUocXVlcnlTdHJpbmdUb1JlbW92ZSk7Ci0g
ICAgCi0gICAgLy8gT25seSBjb250aW51ZSBpZiBleGFjdGx5IG9uZSBtZWRpYSBxdWVyeSBpcyBm
b3VuZCwgYXMgZGVzY3JpYmVkIGFib3ZlLgotICAgIGlmIChyZXN1bHQtPm1fcXVlcmllcy5zaXpl
KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gUmVtb3ZlIGFueSBt
ZWRpYSBxdWVyeSBmcm9tIHRoZSBjb2xsZWN0aW9uIG9mIG1lZGlhIHF1ZXJpZXMgZm9yIHdoaWNo
Ci0gICAgLy8gY29tcGFyaW5nIHdpdGggdGhlIG1lZGlhIHF1ZXJ5IHJldHVybnMgdHJ1ZS4KLSAg
ICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgCi0gICAgLy8gVXNpbmcgc2lnbmVkIGludCBoZXJl
LCBzaW5jZSBmb3IgdGhlIGZpcnN0IHZhbHVlLCAtLWkgd2lsbCByZXN1bHQgaW4gLTEuCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KW1fcXVlcmllcy5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAobV9xdWVyaWVzW2ldID09IHJlc3VsdC0+bV9xdWVyaWVzWzBdKSB7Ci0gICAgICAgICAg
ICBtX3F1ZXJpZXMucmVtb3ZlKGkpOwotICAgICAgICAgICAgLS1pOwotICAgICAgICAgICAgZm91
bmQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmb3VuZDsKLX0K
LQotdm9pZCBNZWRpYVF1ZXJ5U2V0OjphZGRNZWRpYVF1ZXJ5KExlZ2FjeU1lZGlhUXVlcnkmJiBt
ZWRpYVF1ZXJ5KQotewotICAgIG1fcXVlcmllcy5hcHBlbmQoV1RGTW92ZShtZWRpYVF1ZXJ5KSk7
Ci19Ci0KLVN0cmluZyBNZWRpYVF1ZXJ5U2V0OjptZWRpYVRleHQoKSBjb25zdAotewotICAgIFN0
cmluZ0J1aWxkZXIgdGV4dDsKLSAgICBib29sIG5lZWRDb21tYSA9IGZhbHNlOwotICAgIGZvciAo
YXV0byYgcXVlcnkgOiBtX3F1ZXJpZXMpIHsKLSAgICAgICAgaWYgKG5lZWRDb21tYSkKLSAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCIsICIpOwotICAgICAgICB0ZXh0LmFwcGVuZChxdWVyeS5jc3NU
ZXh0KCkpOwotICAgICAgICBuZWVkQ29tbWEgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gdGV4
dC50b1N0cmluZygpOwotfQotCi12b2lkIE1lZGlhUXVlcnlTZXQ6OnNocmlua1RvRml0KCkKLXsK
LSAgICBtX3F1ZXJpZXMuc2hyaW5rVG9GaXQoKTsKLSAgICBmb3IgKGF1dG8mIHF1ZXJ5IDogbV9x
dWVyaWVzKQotICAgICAgICBxdWVyeS5zaHJpbmtUb0ZpdCgpOwotfQotCiBNZWRpYUxpc3Q6Ok1l
ZGlhTGlzdChDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCkKICAgICA6IG1fcGFyZW50U3R5bGVT
aGVldChwYXJlbnRTaGVldCkKIHsKQEAgLTI2NiwxMiArMTMzLDYgQEAgdm9pZCBNZWRpYUxpc3Q6
OmFwcGVuZE1lZGl1bShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKHF1ZXJpZXMpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgTWVkaWFRdWVyeVNldCYgcXVlcnlTZXQpCi17Ci0gICAgdHMgPDwgcXVlcnlT
ZXQubWVkaWFUZXh0KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZWRpYUxpc3QmIG1lZGlhTGlzdCkKIHsKICAgICB0
cyA8PCBtZWRpYUxpc3QubWVkaWFUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKaW5kZXggMmZi
ZjM0Y2VkYzFiLi43Zjk1Y2YyMzI1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKQEAgLTMzLDQz
ICszMyw4IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ1NTUGFyc2VyOwogY2xhc3MgQ1NTUnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7Ci1jbGFz
cyBEb2N1bWVudDsKLWNsYXNzIExlZ2FjeU1lZGlhUXVlcnk7Ci0KLWNsYXNzIE1lZGlhUXVlcnlT
ZXQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVF1ZXJ5U2V0PiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxNZWRpYVF1ZXJ5U2V0PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFRdWVyeVNldCk7Ci0gICAgfQotICAgIHN0YXRpYyBXRUJD
T1JFX0VYUE9SVCBSZWY8TWVkaWFRdWVyeVNldD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVkaWFT
dHJpbmcsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0ID0gTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
KSk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB+TWVkaWFRdWVyeVNldCgpOwotCi0gICAgYm9vbCBz
ZXQoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBhZGQoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9v
bCByZW1vdmUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGFkZE1lZGlhUXVlcnkoTGVnYWN5
TWVkaWFRdWVyeSYmKTsKLQotICAgIGNvbnN0IFZlY3RvcjxMZWdhY3lNZWRpYVF1ZXJ5PiYgcXVl
cnlWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3F1ZXJpZXM7IH0KLQotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBtZWRpYVRleHQoKSBjb25zdDsKLQotICAgIFJlZjxNZWRpYVF1ZXJ5U2V0PiBj
b3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVF1ZXJ5U2V0KCp0aGlzKSk7
IH0KLQotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYVF1ZXJ5
U2V0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFRdWVyeVNldChjb25zdCBTdHJpbmcmIG1l
ZGlhUXVlcnkpOwotICAgIE1lZGlhUXVlcnlTZXQoY29uc3QgTWVkaWFRdWVyeVNldCYpOwotCi0g
ICAgVmVjdG9yPExlZ2FjeU1lZGlhUXVlcnk+IG1fcXVlcmllczsKLX07CiAKIGNsYXNzIE1lZGlh
TGlzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhTGlzdD4gewogcHVibGljOgpAQCAt
MTA5LDcgKzc0LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE1ROjpNZWRpYVF1ZXJ5
TGlzdD4gbV9kZXRhY2hlZE1lZGlhUXVlcmllczsKIH07CiAKLVdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNZWRpYVF1ZXJ5U2V0Jik7CiBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTWVkaWFMaXN0Jik7
CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNz
aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhmNGNmZGYwMTNiLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHByZXNzaW9uLmgiCi0KLSNp
bmNsdWRlICJDU1NBc3BlY3RSYXRpb1ZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIKLSNpbmNsdWRlICJN
ZWRpYUZlYXR1cmVOYW1lcy5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXJDb250ZXh0Lmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkVmFsdWVGb3JJZGVudE1lZGlhRmVhdHVyZShj
b25zdCBBdG9tU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUp
Ci17Ci0gICAgYXV0byB2YWx1ZUlEID0gdmFsdWUudmFsdWVJRCgpOwotCi0gICAgaWYgKGZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uKQotICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVBvcnRyYWl0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMYW5kc2NhcGU7
Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmNvbG9yR2FtdXQpCi0gICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU1JHQiB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
UDMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYzIwMjA7Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OmFueUhvdmVyIHx8IGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
OmhvdmVyKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUhvdmVyIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVOb25lOwotICAgIGlmIChmZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjphbnlQb2ludGVyIHx8IGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnBvaW50ZXIpCi0g
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRmluZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ29hcnNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOwotICAgIGlmIChmZWF0dXJlID09
IE1lZGlhRmVhdHVyZU5hbWVzOjppbnZlcnRlZENvbG9ycykKLSAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVJbnZlcnRlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKLSNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6OmRpc3BsYXlNb2RlKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUZ1bGxzY3JlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YW5kYWxvbmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1pbmltYWxVaSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJvd3NlcjsKLSNlbmRp
ZgotI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIGlmIChmZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjpwcmVmZXJzQ29sb3JTY2hlbWUpCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlTGlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhcms7Ci0jZW5kaWYKLSAgICBp
ZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbnRyYXN0KQotICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vUHJlZmVyZW5jZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTW9yZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVzczsKLSAgICBpZiAoZmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rpb24pCi0gICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTm9QcmVmZXJlbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVS
ZWR1Y2U7Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNEYXJr
SW50ZXJmYWNlKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVByZWZlcnMgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vUHJlZmVyZW5jZTsKLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6ZHluYW1pY1JhbmdlKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUhpZ2ggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YW5kYXJkOwotICAgIGlmIChmZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpzY2FuKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZVByb2dyZXNzaXZlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnRlcmxhY2U7Ci0g
ICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmZvcmNlZENvbG9ycykKLSAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
Y3RpdmU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBmZWF0
dXJlV2l0aFZhbGlkSWRlbnQoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQotewotICAgIGlmICh2YWx1ZS5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6
OkNTU19JREVOVCB8fCAhaXNWYWxpZFZhbHVlRm9ySWRlbnRNZWRpYUZlYXR1cmUobWVkaWFGZWF0
dXJlLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uCi0gICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3JHYW11dAotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueUhvdmVyCi0gICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55UG9pbnRlcgotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhvdmVyCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRDb2xvcnMKLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwb2ludGVyCi0jaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJl
TmFtZXM6OmRpc3BsYXlNb2RlCi0jZW5kaWYKLSNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAg
ICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzQ29sb3JT
Y2hlbWUKLSNlbmRpZgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OnByZWZlcnNDb250cmFzdAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6OnByZWZlcnNSZWR1Y2VkTW90aW9uCi0gICAgICAgIHx8IChtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNEYXJrSW50ZXJmYWNlICYmIChjb250ZXh0LnVz
ZVN5c3RlbUFwcGVhcmFuY2UgfHwgaXNVQVNoZWV0QmVoYXZpb3IoY29udGV4dC5tb2RlKSkpCi0g
ICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZHluYW1pY1Jhbmdl
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6c2NhbgotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmZvcmNlZENvbG9yczsK
LX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWREZW5zaXR5KGNvbnN0IFN0
cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCi17Ci0g
ICAgaWYgKCF2YWx1ZS5pc1Jlc29sdXRpb24oKSB8fCB2YWx1ZS5kb3VibGVWYWx1ZSgpIDw9IDAp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09
IE1lZGlhRmVhdHVyZU5hbWVzOjpyZXNvbHV0aW9uCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluUmVzb2x1dGlvbgotICAgICAgICB8fCBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heFJlc29sdXRpb247Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBmZWF0dXJlV2l0aFZhbGlkUG9zaXRpdmVMZW5ndGgoY29uc3QgU3RyaW5nJiBtZWRp
YUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAoISh2
YWx1ZS5pc0xlbmd0aCgpIHx8ICh2YWx1ZS5pc051bWJlck9ySW50ZWdlcigpICYmICF2YWx1ZS5k
b3VibGVWYWx1ZSgpKSkgfHwgdmFsdWUuZG91YmxlVmFsdWUoKSA8IDApCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpoZWlnaHQKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjptYXhIZWlnaHQKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjptaW5IZWlnaHQKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
Ojp3aWR0aAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1h
eFdpZHRoCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWlu
V2lkdGgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpkZXZp
Y2VIZWlnaHQKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpt
YXhEZXZpY2VIZWlnaHQKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjptaW5EZXZpY2VIZWlnaHQKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjpkZXZpY2VXaWR0aAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1pbkRldmljZVdpZHRoCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6bWF4RGV2aWNlV2lkdGg7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBmZWF0dXJlRXhwZWN0aW5nUG9zaXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0
dXJlKQotewotICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmNv
bG9yCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4Q29s
b3IKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5Db2xv
cgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmNvbG9ySW5k
ZXgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhDb2xv
ckluZGV4Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWlu
Q29sb3JJbmRleAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
Om1vbm9jaHJvbWUKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjptYXhNb25vY2hyb21lCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6bWluTW9ub2Nocm9tZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRo
UG9zaXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc0ludGVnZXIoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmZWF0dXJlRXhwZWN0aW5nUG9zaXRpdmVJbnRl
Z2VyKG1lZGlhRmVhdHVyZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJlV2l0aFBv
c2l0aXZlTnVtYmVyKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQcmltaXRp
dmVWYWx1ZSYgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5pc051bWJlck9ySW50ZWdlcigpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6dHJhbnNmb3JtM2QKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09
IE1lZGlhRmVhdHVyZU5hbWVzOjpkZXZpY2VQaXhlbFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4RGV2aWNlUGl4ZWxSYXRpbwotICAgICAgICB8
fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkRldmljZVBpeGVsUmF0aW8K
LSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp0cmFuc2l0aW9u
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW5pbWF0aW9u
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6dHJhbnNmb3Jt
MmQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJlV2l0aFplcm9Pck9uZShjb25zdCBT
dHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQotewot
ICAgIGlmICghdmFsdWUuaXNOdW1iZXJPckludGVnZXIoKSB8fCAhKHZhbHVlLmRvdWJsZVZhbHVl
KCkgPT0gMSB8fCAhdmFsdWUuZG91YmxlVmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpncmlk
OwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNBc3BlY3RSYXRpb0ZlYXR1cmUoY29uc3QgQXRv
bVN0cmluZyYgbWVkaWFGZWF0dXJlKQotewotICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OmFzcGVjdFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNlQXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5Bc3BlY3RSYXRpbwotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heEFzcGVjdFJhdGlvCi0gICAgICAgIHx8
IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluRGV2aWNlQXNwZWN0UmF0aW8K
LSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhEZXZpY2VB
c3BlY3RSYXRpbzsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aG91
dFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgTWVkaWFRdWVyeVBh
cnNlckNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgLy8gTWVkaWEgZmVhdHVyZXMgdGhhdCBhcmUg
cHJlZml4ZWQgYnkgbWluL21heCBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGEgdmFsdWUuCi0gICAg
cmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55SG92ZXIKLSAgICAg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphbnlQb2ludGVyCi0gICAg
ICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bW9ub2Nocm9tZQotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmNvbG9yCi0gICAgICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3JJbmRleAotICAgICAg
ICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmdyaWQKLSAgICAgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpoZWlnaHQKLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp3aWR0aAotICAgICAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZUhlaWdodAotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZVdpZHRoCi0gICAgICAgIHx8IG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6b3JpZW50YXRpb24KLSAgICAgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphc3BlY3RSYXRpbwotICAgICAgICB8
fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZUFzcGVjdFJhdGlvCi0g
ICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIKLSAgICAg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp0cmFuc2Zvcm0yZAotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnRyYW5zZm9ybTNkCi0g
ICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6dHJhbnNpdGlvbgot
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFuaW1hdGlvbgot
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmludmVydGVkQ29s
b3JzCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cG9pbnRl
cgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnND
b250cmFzdAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnBy
ZWZlcnNSZWR1Y2VkTW90aW9uCi0gICAgICAgIHx8IChtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6OnByZWZlcnNEYXJrSW50ZXJmYWNlICYmIChjb250ZXh0LnVzZVN5c3RlbUFwcGVh
cmFuY2UgfHwgaXNVQVNoZWV0QmVoYXZpb3IoY29udGV4dC5tb2RlKSkpCi0jaWYgRU5BQkxFKERB
UktfTU9ERV9DU1MpCi0gICAgICAgIHx8IChtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OnByZWZlcnNDb2xvclNjaGVtZSkKLSNlbmRpZgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUg
PT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZVBpeGVsUmF0aW8KLSAgICAgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpyZXNvbHV0aW9uCi0jaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJl
TmFtZXM6OmRpc3BsYXlNb2RlCi0jZW5kaWYKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1l
ZGlhRmVhdHVyZU5hbWVzOjpzY2FuCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6Zm9yY2VkQ29sb3JzCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6dmlkZW9QbGF5YWJsZUlubGluZTsKLX0KLQotaW5saW5lIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUZpcnN0VmFsdWUoY29uc3QgU3RyaW5nJiBtZWRpYUZl
YXR1cmUsIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQotewotICAgIGlmIChhdXRvIHZhbHVl
ID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ2VyKHJh
bmdlKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotCi0gICAgaWYgKCFmZWF0dXJlRXhwZWN0aW5n
UG9zaXRpdmVJbnRlZ2VyKG1lZGlhRmVhdHVyZSkgJiYgIWlzQXNwZWN0UmF0aW9GZWF0dXJlKEF0
b21TdHJpbmcgeyBtZWRpYUZlYXR1cmUgfSkpIHsKLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2U6
Ok5vbk5lZ2F0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAoYXV0byB2YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUxlbmd0aChy
YW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpKQotICAgICAg
ICByZXR1cm4gdmFsdWU7Ci0KLSAgICBpZiAoYXV0byB2YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZVJlc29sdXRpb24ocmFuZ2UpKQotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0KLSAgICBpZiAoYXV0byB2YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZUlkZW50KHJhbmdlKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotCi0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLU1lZGlhUXVlcnlFeHByZXNzaW9uOjpNZWRpYVF1ZXJ5RXhwcmVzc2lvbihjb25z
dCBTdHJpbmcmIGZlYXR1cmUsIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKLSAgICA6IG1fbWVkaWFGZWF0dXJlKGZlYXR1cmUuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSkKLSAgICAsIG1faXNWYWxpZChmYWxzZSkKLXsKLSAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZpcnN0VmFsdWUgPSBjb25zdW1lRmlyc3RWYWx1ZSht
X21lZGlhRmVhdHVyZSwgcmFuZ2UpOwotICAgIGlmICghZmlyc3RWYWx1ZSkgewotICAgICAgICBp
ZiAoaXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUobV9tZWRpYUZlYXR1cmUsIGNvbnRleHQpKSB7
Ci0gICAgICAgICAgICAvLyBWYWxpZCwgY3JlYXRlcyBhIE1lZGlhUXVlcnlFeHAgd2l0aCBhbiAn
aW52YWxpZCcgTWVkaWFRdWVyeUV4cFZhbHVlCi0gICAgICAgICAgICBtX2lzVmFsaWQgPSB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gQ3JlYXRlIHZhbHVl
IGZvciBtZWRpYSBxdWVyeSBleHByZXNzaW9uIHRoYXQgbXVzdCBoYXZlIDEgb3IgbW9yZSB2YWx1
ZXMuCi0gICAgaWYgKGlzQXNwZWN0UmF0aW9GZWF0dXJlKG1fbWVkaWFGZWF0dXJlKSkgewotICAg
ICAgICBpZiAoIWZpcnN0VmFsdWUtPmlzTnVtYmVyT3JJbnRlZ2VyKCkgfHwgIWZpcnN0VmFsdWUt
PmRvdWJsZVZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdl
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBkZW5vbWluYXRvclZhbHVlID0g
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KHJhbmdl
KTsKLSAgICAgICAgaWYgKCFkZW5vbWluYXRvclZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHVuc2lnbmVkIG51bWVyYXRvciA9IGNsYW1wVG88dW5zaWduZWQ+KGZpcnN0VmFs
dWUtPmRvdWJsZVZhbHVlKCkpOwotICAgICAgICBtX3ZhbHVlID0gQ1NTQXNwZWN0UmF0aW9WYWx1
ZTo6Y3JlYXRlKG51bWVyYXRvciwgKmRlbm9taW5hdG9yVmFsdWUpOwotICAgICAgICBtX2lzVmFs
aWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChmZWF0dXJlV2l0aFBv
c2l0aXZlSW50ZWdlcihtX21lZGlhRmVhdHVyZSwgKmZpcnN0VmFsdWUpIHx8IGZlYXR1cmVXaXRo
UG9zaXRpdmVOdW1iZXIobV9tZWRpYUZlYXR1cmUsICpmaXJzdFZhbHVlKQotICAgICAgICB8fCBm
ZWF0dXJlV2l0aFplcm9Pck9uZShtX21lZGlhRmVhdHVyZSwgKmZpcnN0VmFsdWUpIHx8IGZlYXR1
cmVXaXRoVmFsaWREZW5zaXR5KG1fbWVkaWFGZWF0dXJlLCAqZmlyc3RWYWx1ZSkKLSAgICAgICAg
fHwgZmVhdHVyZVdpdGhWYWxpZFBvc2l0aXZlTGVuZ3RoKG1fbWVkaWFGZWF0dXJlLCAqZmlyc3RW
YWx1ZSkgfHwgZmVhdHVyZVdpdGhWYWxpZElkZW50KG1fbWVkaWFGZWF0dXJlLCAqZmlyc3RWYWx1
ZSwgY29udGV4dCkpIHsKLSAgICAgICAgbV92YWx1ZSA9IGZpcnN0VmFsdWU7Ci0gICAgICAgIG1f
aXNWYWxpZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLWJvb2wgTWVkaWFR
dWVyeUV4cHJlc3Npb246OmlzVmlld3BvcnREZXBlbmRlbnQoKSBjb25zdAotewotICAgIHJldHVy
biBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6d2lkdGgKLSAgICAgICAgfHwg
bV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhlaWdodAotICAgICAgICB8fCBt
X21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluV2lkdGgKLSAgICAgICAgfHwg
bV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkhlaWdodAotICAgICAgICB8
fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4V2lkdGgKLSAgICAgICAg
fHwgbV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heEhlaWdodAotICAgICAg
ICB8fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6b3JpZW50YXRpb24KLSAg
ICAgICAgfHwgbV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFzcGVjdFJhdGlv
Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5Bc3Bl
Y3RSYXRpbwotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
bWF4QXNwZWN0UmF0aW87Ci19Ci0KLVN0cmluZyBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6c2VyaWFs
aXplKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZXJpYWxpemF0aW9uQ2FjaGUuaXNOdWxsKCkpCi0g
ICAgICAgIG1fc2VyaWFsaXphdGlvbkNhY2hlID0gbWFrZVN0cmluZygnKCcsIGFzQVNDSUlMb3dl
cmNhc2UobV9tZWRpYUZlYXR1cmUpLCBtX3ZhbHVlID8gIjogIiA6ICIiLCBtX3ZhbHVlID8gbV92
YWx1ZS0+Y3NzVGV4dCgpIDogZW1wdHlTdHJpbmcoKSwgJyknKTsKLSAgICByZXR1cm4gbV9zZXJp
YWxpemF0aW9uQ2FjaGU7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBleHByZXNzaW9uKQotewotICAgIHRzIDw8
IGV4cHJlc3Npb24uc2VyaWFsaXplKCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi0KLX0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjNmMzM0OWVkMmEuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVuZW4g
PGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNT
U1BhcnNlclRva2VuUmFuZ2UuaCIKLSNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgPG1l
bW9yeT4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgCi1zdHJ1Y3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQ7Ci0KLWNs
YXNzIE1lZGlhUXVlcnlFeHByZXNzaW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBleHBsaWNpdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbihjb25zdCBTdHJpbmcm
IG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIE1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0Jik7Ci0KLSAgICBjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUoKSBjb25zdDsKLSAg
ICBDU1NWYWx1ZSogdmFsdWUoKSBjb25zdDsKLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0Owot
ICAgIGJvb2wgaXNWaWV3cG9ydERlcGVuZGVudCgpIGNvbnN0OwotCi0gICAgU3RyaW5nIHNlcmlh
bGl6ZSgpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHBy
ZXNzaW9uJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgQXRvbVN0cmluZyBtX21lZGlhRmVhdHVy
ZTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fdmFsdWU7Ci0gICAgYm9vbCBtX2lzVmFsaWQgeyBm
YWxzZSB9OwotICAgIG11dGFibGUgU3RyaW5nIG1fc2VyaWFsaXphdGlvbkNhY2hlOwotfTsKLQot
aW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIE1lZGlhUXVlcnlFeHByZXNzaW9uOjptZWRpYUZlYXR1
cmUoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRmVhdHVyZTsKLX0KLQotaW5saW5lIENT
U1ZhbHVlKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6dmFsdWUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3ZhbHVlLmdldCgpOwotfQotCi1pbmxpbmUgYm9vbCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6
b3BlcmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYgb3RoZXIpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG90aGVyLm1fbWVkaWFGZWF0dXJlID09IG1fbWVkaWFGZWF0dXJlCi0gICAgICAg
ICYmICgoIW1fdmFsdWUgJiYgIW90aGVyLm1fdmFsdWUpIHx8IChtX3ZhbHVlICYmIG90aGVyLm1f
dmFsdWUgJiYgKm1fdmFsdWUgPT0gKm90aGVyLm1fdmFsdWUpKTsKLX0KLQotaW5saW5lIGJvb2wg
TWVkaWFRdWVyeUV4cHJlc3Npb246OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lz
VmFsaWQ7Ci19Ci0KLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmODE4YzZkODUyMi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTQgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
TGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oIgotCi0jaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCi0j
aW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNvbnRleHQu
aCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
UHRyPE1lZGlhUXVlcnlTZXQ+IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVy
eVNldChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCBj
b250ZXh0KQotewotICAgIGF1dG8gdG9rZW5pemVyID0gQ1NTVG9rZW5pemVyOjp0cnlDcmVhdGUo
cXVlcnlTdHJpbmcpOwotICAgIGlmIChVTkxJS0VMWSghdG9rZW5pemVyKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHBhcnNlTWVkaWFRdWVyeVNldCh0b2tlbml6ZXItPnRv
a2VuUmFuZ2UoKSwgY29udGV4dCk7Ci19Ci0KLVJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBMZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29udGV4dCkKLXsKLSAgICByZXR1cm4gTGVn
YWN5TWVkaWFRdWVyeVBhcnNlcihNZWRpYVF1ZXJ5U2V0UGFyc2VyLCBjb250ZXh0KS5wYXJzZUlu
dGVybmFsKHJhbmdlKTsKLX0KLQotUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IExlZ2FjeU1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlTWVkaWFDb25kaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwg
TWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29udGV4dCkKLXsKLSAgICByZXR1cm4gTGVnYWN5TWVk
aWFRdWVyeVBhcnNlcihNZWRpYUNvbmRpdGlvblBhcnNlciwgY29udGV4dCkucGFyc2VJbnRlcm5h
bChyYW5nZSk7Ci19Ci0KLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OlJlYWRSZXN0cmljdG9yID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJz
ZXI6OnJlYWRSZXN0cmljdG9yOwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUg
TGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZE1lZGlhTm90ID0gJkxlZ2FjeU1lZGlhUXVlcnlQ
YXJzZXI6OnJlYWRNZWRpYU5vdDsKLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0YXRl
IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlJlYWRNZWRpYVR5cGUgPSAmTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6cmVhZE1lZGlhVHlwZTsKLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0
YXRlIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlJlYWRBbmQgPSAmTGVnYWN5TWVkaWFRdWVyeVBh
cnNlcjo6cmVhZEFuZDsKLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OlJlYWRGZWF0dXJlU3RhcnQgPSAmTGVnYWN5TWVkaWFRdWVyeVBh
cnNlcjo6cmVhZEZlYXR1cmVTdGFydDsKLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0
YXRlIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlJlYWRGZWF0dXJlID0gJkxlZ2FjeU1lZGlhUXVl
cnlQYXJzZXI6OnJlYWRGZWF0dXJlOwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3Rh
dGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVDb2xvbiA9ICZMZWdhY3lNZWRp
YVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUNvbG9uOwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBh
cnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVWYWx1ZSA9ICZM
ZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVZhbHVlOwotY29uc3QgTGVnYWN5TWVk
aWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVF
bmQgPSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVFbmQ7Ci1jb25zdCBMZWdh
Y3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpTa2lwVW50
aWxDb21tYSA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpza2lwVW50aWxDb21tYTsKLWNvbnN0
IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlNr
aXBVbnRpbEJsb2NrRW5kID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnNraXBVbnRpbEJsb2Nr
RW5kOwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6RG9uZSA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpkb25lOwotCi1MZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyOjpMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyKFBhcnNlclR5cGUgcGFyc2Vy
VHlwZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29udGV4dCkKLSAgICA6IG1fcGFyc2VyVHlw
ZShwYXJzZXJUeXBlKQotICAgICwgbV9tZWRpYVF1ZXJ5RGF0YShjb250ZXh0KQotICAgICwgbV9x
dWVyeVNldChNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKSkKLSAgICAKLXsKLSAgICBzd2l0Y2ggKG1f
cGFyc2VyVHlwZSkgewotICAgIGNhc2UgTWVkaWFRdWVyeVNldFBhcnNlcjoKLSAgICAgICAgbV9z
dGF0ZSA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkUmVzdHJpY3RvcjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBNZWRpYUNvbmRpdGlvblBhcnNlcjoKLSAgICAgICAgbV9zdGF0ZSA9
ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFOb3Q7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6fkxlZ2FjeU1lZGlhUXVlcnlQYXJz
ZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6c2V0U3RhdGVB
bmRSZXN0cmljdChTdGF0ZSBzdGF0ZSwgTGVnYWN5TWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0
cmljdG9yKQotewotICAgIG1fbWVkaWFRdWVyeURhdGEuc2V0UmVzdHJpY3RvcihyZXN0cmljdG9y
KTsKLSAgICBtX3N0YXRlID0gc3RhdGU7Ci19Ci0KLS8vIFN0YXRlIG1hY2hpbmUgbWVtYmVyIGZ1
bmN0aW9ucyBzdGFydCBoZXJlCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRSZXN0
cmljdG9yKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4sIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQotewotICAgIHJlYWRNZWRpYVR5cGUodHlw
ZSwgdG9rZW4sIHJhbmdlKTsKLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFk
TWVkaWFOb3QoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0
b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgaWYgKHR5cGUgPT0gSWRl
bnRUb2tlbiAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAi
bm90Il9zKSkKLSAgICAgICAgc2V0U3RhdGVBbmRSZXN0cmljdChSZWFkRmVhdHVyZVN0YXJ0LCBM
ZWdhY3lNZWRpYVF1ZXJ5OjpOb3QpOwotICAgIGVsc2UKLSAgICAgICAgcmVhZEZlYXR1cmVTdGFy
dCh0eXBlLCB0b2tlbiwgcmFuZ2UpOwotfQotCi1zdGF0aWMgYm9vbCBpc1Jlc3RyaWN0b3JPckxv
Z2ljYWxPcGVyYXRvcihjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gRklY
TUU6IGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBsb3dlci1jYXNlIGFsd2F5cyBm
b3IgdG9rZW5WYWx1ZS4KLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dG9rZW4udmFsdWUoKSwgIm5vdCJfcykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodG9rZW4udmFsdWUoKSwgImFuZCJfcykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm9yIl9zKQotICAgICAgICB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAib25seSJfcyk7Ci19Ci0K
LXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhVHlwZShDU1NQYXJzZXJUb2tl
blR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKLXsKLSAgICBpZiAodHlwZSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbikgewot
ICAgICAgICBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCkgIT0gTGVnYWN5TWVkaWFR
dWVyeTo6Tm9uZSkKLSAgICAgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9zdGF0ZSA9IFJlYWRGZWF0dXJlOwotICAgIH0gZWxzZSBp
ZiAodHlwZSA9PSBJZGVudFRva2VuKSB7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IFJlYWRSZXN0
cmljdG9yICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJu
b3QiX3MpKQotICAgICAgICAgICAgc2V0U3RhdGVBbmRSZXN0cmljdChSZWFkTWVkaWFUeXBlLCBM
ZWdhY3lNZWRpYVF1ZXJ5OjpOb3QpOwotICAgICAgICBlbHNlIGlmIChtX3N0YXRlID09IFJlYWRS
ZXN0cmljdG9yICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCks
ICJvbmx5Il9zKSkKLSAgICAgICAgICAgIHNldFN0YXRlQW5kUmVzdHJpY3QoUmVhZE1lZGlhVHlw
ZSwgTGVnYWN5TWVkaWFRdWVyeTo6T25seSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fbWVkaWFRdWVy
eURhdGEucmVzdHJpY3RvcigpICE9IExlZ2FjeU1lZGlhUXVlcnk6Ok5vbmUKLSAgICAgICAgICAg
ICYmIGlzUmVzdHJpY3Rvck9yTG9naWNhbE9wZXJhdG9yKHRva2VuKSkgewotICAgICAgICAgICAg
bV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bV9tZWRpYVF1ZXJ5RGF0YS5zZXRNZWRpYVR5cGUodG9rZW4udmFsdWUoKS50b1N0cmluZygpKTsK
LSAgICAgICAgICAgIG1fc3RhdGUgPSBSZWFkQW5kOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
ICh0eXBlID09IEVPRlRva2VuICYmICghbV9xdWVyeVNldC0+cXVlcnlWZWN0b3IoKS5zaXplKCkg
fHwgbV9zdGF0ZSAhPSBSZWFkUmVzdHJpY3RvcikpCi0gICAgICAgIG1fc3RhdGUgPSBEb25lOwot
ICAgIGVsc2UgewotICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7Ci0gICAgICAgIGlm
ICh0eXBlID09IENvbW1hVG9rZW4pCi0gICAgICAgICAgICBza2lwVW50aWxDb21tYSh0eXBlLCB0
b2tlbiwgcmFuZ2UpOwotICAgIH0KLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpj
b21taXRNZWRpYVF1ZXJ5KCkKLXsKLSAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQg
YW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNh
dXNlIG9mIHRoZQotICAgIC8vIG9sZCBwYXJzZXIuCi0gICAgc3RhdGljIGNvbnN0IE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsKLSAgICBMZWdhY3lN
ZWRpYVF1ZXJ5IG1lZGlhUXVlcnkgeyBtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9t
ZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKS52YWx1ZV9vcihkZWZhdWx0TWVkaWFUeXBlKSwgV1RG
TW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJlc3Npb25zKCkpIH07Ci0gICAgbV9tZWRpYVF1ZXJ5
RGF0YS5jbGVhcigpOwotICAgIG1fcXVlcnlTZXQtPmFkZE1lZGlhUXVlcnkoV1RGTW92ZShtZWRp
YVF1ZXJ5KSk7Ci19Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEFuZChDU1NQ
YXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiAvKnJhbmdlKi8pCi17Ci0gICAgaWYgKHR5cGUgPT0gSWRlbnRUb2tlbiAm
JiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAiYW5kIl9zKSkg
ewotICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVTdGFydDsKLSAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gQ29tbWFUb2tlbiAmJiBtX3BhcnNlclR5cGUgIT0gTWVkaWFDb25kaXRpb25QYXJzZXIp
IHsKLSAgICAgICAgY29tbWl0TWVkaWFRdWVyeSgpOwotICAgICAgICBtX3N0YXRlID0gUmVhZFJl
c3RyaWN0b3I7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IEVPRlRva2VuKQotICAgICAgICBtX3N0
YXRlID0gRG9uZTsKLSAgICBlbHNlCi0gICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsK
LX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVN0YXJ0KENTU1Bh
cnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgLyp0b2tlbiovLCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiAvKnJhbmdlKi8pCi17Ci0gICAgaWYgKHR5cGUgPT0gTGVmdFBhcmVu
dGhlc2lzVG9rZW4pCi0gICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1
ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZShDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tlblJhbmdlJiAvKnJhbmdlKi8pCi17Ci0g
ICAgaWYgKHR5cGUgPT0gSWRlbnRUb2tlbikgewotICAgICAgICBtX21lZGlhUXVlcnlEYXRhLnNl
dE1lZGlhRmVhdHVyZSh0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOwotICAgICAgICBtX3N0YXRl
ID0gUmVhZEZlYXR1cmVDb2xvbjsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9zdGF0ZSA9IFNraXBV
bnRpbENvbW1hOwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJl
Q29sb24oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
biwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgaWYgKHR5cGUgPT0gQ29sb25U
b2tlbikgewotICAgICAgICB3aGlsZSAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBXaGl0ZXNwYWNl
VG9rZW4pCi0gICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgICAgIGlmIChyYW5nZS5w
ZWVrKCkudHlwZSgpID09IFJpZ2h0UGFyZW50aGVzaXNUb2tlbiB8fCByYW5nZS5wZWVrKCkudHlw
ZSgpID09IEVPRlRva2VuKQotICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5k
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVWYWx1ZTsK
LSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmlnaHRQYXJlbnRoZXNpc1Rva2VuIHx8IHR5cGUgPT0g
RU9GVG9rZW4pIHsKLSAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5hZGRFeHByZXNzaW9uKHJhbmdl
KTsKLSAgICAgICAgcmVhZEZlYXR1cmVFbmQodHlwZSwgdG9rZW4sIHJhbmdlKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOwotfQotCi12b2lkIExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlVmFsdWUoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCi17Ci0gICAgaWYgKHR5cGUgPT0gRGltZW5zaW9uVG9rZW4gJiYgdG9rZW4udW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV04pIHsKLSAgICAgICAgcmFuZ2UuY29uc3VtZSgp
OwotICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9tZWRpYVF1ZXJ5RGF0YS5hZGRFeHByZXNzaW9uKHJhbmdlKTsKLSAgICAgICAgbV9zdGF0
ZSA9IFJlYWRGZWF0dXJlRW5kOwotICAgIH0KLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFy
c2VyOjpyZWFkRmVhdHVyZUVuZChDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIC8qdG9rZW4qLywgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgLypyYW5nZSovKQotewot
ICAgIGlmICh0eXBlID09IFJpZ2h0UGFyZW50aGVzaXNUb2tlbiB8fCB0eXBlID09IEVPRlRva2Vu
KSB7Ci0gICAgICAgIGlmICh0eXBlICE9IEVPRlRva2VuICYmIG1fbWVkaWFRdWVyeURhdGEubGFz
dEV4cHJlc3Npb25WYWxpZCgpKQotICAgICAgICAgICAgbV9zdGF0ZSA9IFJlYWRBbmQ7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKLSAgICB9IGVs
c2UgewotICAgICAgICBtX21lZGlhUXVlcnlEYXRhLnJlbW92ZUxhc3RFeHByZXNzaW9uKCk7Ci0g
ICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxCbG9ja0VuZDsKLSAgICB9Ci19Ci0KLXZvaWQgTGVn
YWN5TWVkaWFRdWVyeVBhcnNlcjo6c2tpcFVudGlsQ29tbWEoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiAvKnRva2VuKi8sIENTU1BhcnNlclRva2VuUmFuZ2Um
IC8qcmFuZ2UqLykKLXsKLSAgICBpZiAoKHR5cGUgPT0gQ29tbWFUb2tlbiAmJiAhbV9ibG9ja1dh
dGNoZXIuYmxvY2tMZXZlbCgpKSB8fCB0eXBlID09IEVPRlRva2VuKSB7Ci0gICAgICAgIG1fc3Rh
dGUgPSBSZWFkUmVzdHJpY3RvcjsKLSAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOwot
ICAgICAgICBhdXRvIHF1ZXJ5ID0gTGVnYWN5TWVkaWFRdWVyeShMZWdhY3lNZWRpYVF1ZXJ5OjpO
b3QsICJhbGwiX3MsIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4oKSk7Ci0gICAgICAgIG1f
cXVlcnlTZXQtPmFkZE1lZGlhUXVlcnkoV1RGTW92ZShxdWVyeSkpOwotICAgIH0KLX0KLQotdm9p
ZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpza2lwVW50aWxCbG9ja0VuZChDU1NQYXJzZXJUb2tl
blR5cGUgLyp0eXBlICovLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4sIENTU1BhcnNlclRv
a2VuUmFuZ2UmIC8qcmFuZ2UqLykKLXsKLSAgICBpZiAodG9rZW4uZ2V0QmxvY2tUeXBlKCkgPT0g
Q1NTUGFyc2VyVG9rZW46OkJsb2NrRW5kICYmICFtX2Jsb2NrV2F0Y2hlci5ibG9ja0xldmVsKCkp
Ci0gICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKLX0KLQotdm9pZCBMZWdhY3lNZWRp
YVF1ZXJ5UGFyc2VyOjpkb25lKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUqLywgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mIC8qdG9rZW4qLywgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgLypyYW5nZSovKSB7
IH0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpoYW5kbGVCbG9ja3MoY29uc3QgQ1NT
UGFyc2VyVG9rZW4mIHRva2VuKQotewotICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSAhPSBD
U1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2hv
dWxkU2tpcEJsb2NrID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IE5lc3RlZCBibG9ja3Mgc2hv
dWxkIGJlIHN1cHBvcnRlZC4KLSAgICAgICAgaWYgKG1fYmxvY2tXYXRjaGVyLmJsb2NrTGV2ZWwo
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAodG9rZW4udHlwZSgpID09
IExlZnRQYXJlbnRoZXNpc1Rva2VuKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9KCk7Ci0gICAgaWYgKHNob3VsZFNraXBCbG9jaykKLSAgICAg
ICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVl
cnlQYXJzZXI6OnByb2Nlc3NUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4sIENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQotewotICAgIENTU1BhcnNlclRva2VuVHlwZSB0eXBlID0g
dG9rZW4udHlwZSgpOwotCi0gICAgaWYgKHR5cGUgPT0gV2hpdGVzcGFjZVRva2VuKSB7Ci0gICAg
ICAgIHJhbmdlLmNvbnN1bWUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICht
X3N0YXRlICE9IFJlYWRGZWF0dXJlVmFsdWUpIHsKLSAgICAgICAgaGFuZGxlQmxvY2tzKHRva2Vu
KTsKLSAgICAgICAgbV9ibG9ja1dhdGNoZXIuaGFuZGxlVG9rZW4odG9rZW4pOwotICAgICAgICBy
YW5nZS5jb25zdW1lKCk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gdGhhdCBo
YW5kbGVzIGN1cnJlbnQgc3RhdGUKLSAgICAoKHRoaXMpLT4qKG1fc3RhdGUpKSh0eXBlLCB0b2tl
biwgcmFuZ2UpOwotfQotCi0vLyBUaGUgc3RhdGUgbWFjaGluZSBsb29wCi1SZWZQdHI8TWVkaWFR
dWVyeVNldD4gTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VJbnRlcm5hbChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICAKLSAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpCi0g
ICAgICAgIHByb2Nlc3NUb2tlbihyYW5nZS5wZWVrKCksIHJhbmdlKTsKLQotICAgIC8vIEZJWE1F
OiBDYW4gd2UgZ2V0IHJpZCBvZiB0aGlzIHNwZWNpYWwgY2FzZT8KLSAgICBpZiAobV9wYXJzZXJU
eXBlID09IE1lZGlhUXVlcnlTZXRQYXJzZXIpCi0gICAgICAgIHByb2Nlc3NUb2tlbihDU1NQYXJz
ZXJUb2tlbihFT0ZUb2tlbiksIHJhbmdlKTsKLQotICAgIGlmIChtX3N0YXRlICE9IFJlYWRBbmQg
JiYgbV9zdGF0ZSAhPSBSZWFkUmVzdHJpY3RvciAmJiBtX3N0YXRlICE9IERvbmUgJiYgbV9zdGF0
ZSAhPSBSZWFkTWVkaWFOb3QpIHsKLSAgICAgICAgYXV0byBxdWVyeSA9IExlZ2FjeU1lZGlhUXVl
cnkoTGVnYWN5TWVkaWFRdWVyeTo6Tm90LCAiYWxsIl9zLCBWZWN0b3I8TWVkaWFRdWVyeUV4cHJl
c3Npb24+KCkpOwotICAgICAgICBtX3F1ZXJ5U2V0LT5hZGRNZWRpYVF1ZXJ5KFdURk1vdmUocXVl
cnkpKTsKLSAgICB9IGVsc2UgaWYgKG1fbWVkaWFRdWVyeURhdGEuY3VycmVudE1lZGlhUXVlcnlD
aGFuZ2VkKCkpCi0gICAgICAgIGNvbW1pdE1lZGlhUXVlcnkoKTsKLQotICAgIG1fcXVlcnlTZXQt
PnNocmlua1RvRml0KCk7Ci0KLSAgICByZXR1cm4gbV9xdWVyeVNldDsKLX0KLQotTGVnYWN5TWVk
aWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6Ok1lZGlhUXVlcnlEYXRhKE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLXsKLX0KLQot
dm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6Y2xlYXIoKQotewot
ICAgIG1fcmVzdHJpY3RvciA9IExlZ2FjeU1lZGlhUXVlcnk6Ok5vbmU7Ci0gICAgbV9tZWRpYVR5
cGUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgbV9tZWRpYUZlYXR1cmUgPSBTdHJpbmcoKTsKLSAgICBt
X2V4cHJlc3Npb25zLmNsZWFyKCk7Ci19Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6
TWVkaWFRdWVyeURhdGE6OmFkZEV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Ci17Ci0gICAgbV9leHByZXNzaW9ucy5hcHBlbmQoTWVkaWFRdWVyeUV4cHJlc3Npb24geyBtX21l
ZGlhRmVhdHVyZSwgcmFuZ2UsIG1fY29udGV4dCB9KTsKLX0KLQotYm9vbCBMZWdhY3lNZWRpYVF1
ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6bGFzdEV4cHJlc3Npb25WYWxpZCgpCi17Ci0gICAg
cmV0dXJuIG1fZXhwcmVzc2lvbnMubGFzdCgpLmlzVmFsaWQoKTsKLX0KLQotdm9pZCBMZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6cmVtb3ZlTGFzdEV4cHJlc3Npb24oKQot
ewotICAgIG1fZXhwcmVzc2lvbnMucmVtb3ZlTGFzdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlh
UXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVy
eVBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2JhMDg2ZThlMzMuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlhUXVl
cnlQYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiQ1NTUGFyc2VyVG9rZW4uaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCi0j
aW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeS5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlCbG9ja1dh
dGNoZXIuaCIKLSNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIk1l
ZGlhUXVlcnlQYXJzZXJDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFRdWVyeVNldDsKLXN0cnVjdCBD
U1NQYXJzZXJDb250ZXh0OwotCi1jbGFzcyBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyKTsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IHBhcnNlTWVkaWFRdWVyeVNldChjb25zdCBT
dHJpbmcmLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBwYXJzZU1lZGlhUXVlcnlTZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFy
c2VNZWRpYUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dCk7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBQYXJzZXJUeXBlIHsKLSAgICAgICAgTWVkaWFR
dWVyeVNldFBhcnNlciwKLSAgICAgICAgTWVkaWFDb25kaXRpb25QYXJzZXIsCi0gICAgfTsKLQot
ICAgIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIoUGFyc2VyVHlwZSwgTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQpOwotICAgIHZpcnR1YWwgfkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXIoKTsKLQotICAgIFJl
ZlB0cjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZUludGVybmFsKENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
LQotICAgIHZvaWQgcHJvY2Vzc1Rva2VuKGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYpOwotCi0gICAgdm9pZCByZWFkUmVzdHJpY3RvcihDU1NQYXJzZXJUb2tlblR5
cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHZv
aWQgcmVhZE1lZGlhTm90KENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
LCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkTWVkaWFUeXBlKENTU1BhcnNl
clRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7
Ci0gICAgdm9pZCByZWFkQW5kKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkRmVhdHVyZVN0YXJ0KENT
U1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJh
bmdlJik7Ci0gICAgdm9pZCByZWFkRmVhdHVyZShDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENT
U1BhcnNlclRva2VuJiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHZvaWQgcmVhZEZlYXR1
cmVDb2xvbihDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOwotICAgIHZvaWQgcmVhZEZlYXR1cmVWYWx1ZShDU1NQYXJzZXJUb2tl
blR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAg
IHZvaWQgcmVhZEZlYXR1cmVFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJU
b2tlbiYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lkIHNraXBVbnRpbENvbW1hKENT
U1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJh
bmdlJik7Ci0gICAgdm9pZCBza2lwVW50aWxCbG9ja0VuZChDU1NQYXJzZXJUb2tlblR5cGUsIGNv
bnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHZvaWQgZG9u
ZShDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYpOwotCi0gICAgdXNpbmcgU3RhdGUgPSB2b2lkIChMZWdhY3lNZWRpYVF1ZXJ5UGFy
c2VyOjoqKShDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOwotCi0gICAgdm9pZCBzZXRTdGF0ZUFuZFJlc3RyaWN0KFN0YXRlLCBM
ZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yKTsKLSAgICB2b2lkIGhhbmRsZUJsb2Nrcyhjb25z
dCBDU1NQYXJzZXJUb2tlbiYpOwotICAgIAotICAgIHZvaWQgY29tbWl0TWVkaWFRdWVyeSgpOwot
Ci0gICAgY2xhc3MgTWVkaWFRdWVyeURhdGEgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShNZWRpYVF1ZXJ5RGF0YSk7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBNZWRpYVF1
ZXJ5RGF0YShNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCk7Ci0gICAgICAgIHZvaWQgY2xlYXIoKTsK
LSAgICAgICAgdm9pZCBhZGRFeHByZXNzaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICAg
ICAgYm9vbCBsYXN0RXhwcmVzc2lvblZhbGlkKCk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlTGFzdEV4
cHJlc3Npb24oKTsKLSAgICAgICAgdm9pZCBzZXRNZWRpYVR5cGUoU3RyaW5nJiYgbWVkaWFUeXBl
KSB7IG1fbWVkaWFUeXBlID0gV1RGTW92ZShtZWRpYVR5cGUpOyB9Ci0KLSAgICAgICAgTGVnYWN5
TWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0
cmljdG9yOyB9Ci0gICAgICAgIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4mIGV4cHJlc3Np
b25zKCkgeyByZXR1cm4gbV9leHByZXNzaW9uczsgfQotICAgICAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4mIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFUeXBlOyB9Ci0K
LSAgICAgICAgYm9vbCBjdXJyZW50TWVkaWFRdWVyeUNoYW5nZWQoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKG1fcmVzdHJpY3RvciAhPSBMZWdhY3lNZWRpYVF1ZXJ5OjpO
b25lIHx8IG1fbWVkaWFUeXBlIHx8ICFtX2V4cHJlc3Npb25zLmlzRW1wdHkoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgTGVnYWN5TWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKCkgeyBy
ZXR1cm4gbV9yZXN0cmljdG9yOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRSZXN0cmljdG9yKExlZ2Fj
eU1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJpY3RvcikgeyBtX3Jlc3RyaWN0b3IgPSByZXN0
cmljdG9yOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRNZWRpYUZlYXR1cmUoY29uc3QgU3RyaW5nJiBz
dHIpIHsgbV9tZWRpYUZlYXR1cmUgPSBzdHI7IH0KLQotICAgICAgICB2b2lkIHNldE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0IGNvbnRleHQpIHsgbV9jb250
ZXh0ID0gY29udGV4dDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgTGVnYWN5TWVkaWFRdWVy
eTo6UmVzdHJpY3RvciBtX3Jlc3RyaWN0b3IgeyBMZWdhY3lNZWRpYVF1ZXJ5OjpOb25lIH07Ci0g
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX21lZGlhVHlwZTsKLSAgICAgICAgVmVjdG9y
PE1lZGlhUXVlcnlFeHByZXNzaW9uPiBtX2V4cHJlc3Npb25zOwotICAgICAgICBTdHJpbmcgbV9t
ZWRpYUZlYXR1cmU7Ci0gICAgICAgIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0IG1fY29udGV4dDsK
LSAgICB9OwotCi0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBQYXJzZXJUeXBlIG1fcGFyc2VyVHlw
ZTsKLSAgICBNZWRpYVF1ZXJ5RGF0YSBtX21lZGlhUXVlcnlEYXRhOwotICAgIFJlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBtX3F1ZXJ5U2V0OwotICAgIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIgbV9ibG9j
a1dhdGNoZXI7Ci0KLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZFJlc3RyaWN0b3I7Ci0gICAg
Y29uc3Qgc3RhdGljIFN0YXRlIFJlYWRNZWRpYU5vdDsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUg
UmVhZE1lZGlhVHlwZTsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEFuZDsKLSAgICBjb25z
dCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1cmVTdGFydDsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUg
UmVhZEZlYXR1cmU7Ci0gICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRGZWF0dXJlQ29sb247Ci0g
ICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRGZWF0dXJlVmFsdWU7Ci0gICAgY29uc3Qgc3RhdGlj
IFN0YXRlIFJlYWRGZWF0dXJlRW5kOwotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBTa2lwVW50aWxD
b21tYTsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgU2tpcFVudGlsQmxvY2tFbmQ7Ci0gICAgY29u
c3Qgc3RhdGljIFN0YXRlIERvbmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBlZjQ4NTUzMTE2
NDQuLjM1NDkzMzAwNzEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01l
ZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eVBhcnNlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVy
eVBhcnNlci5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTVEgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NXYXJtaW5nLmNwcAppbmRleCBjYzRhNzdjNzk1MWQuLjYx
NGEzOTA1ZWExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZURlc2NyaXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKLSNpbmNsdWRlICJNZWRp
YUZlYXR1cmVOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlRh
Z05hbWUuaCIKQEAgLTU1LDcgKzU1LDYgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6aW5pdGlhbGl6
ZU5hbWVzKCkKICAgICBpbml0aWFsaXplQ29tbW9uQXRvbVN0cmluZ3MoKTsKICAgICBIVE1MTmFt
ZXM6OmluaXQoKTsKICAgICBRdWFsaWZpZWROYW1lOjppbml0KCk7Ci0gICAgTWVkaWFGZWF0dXJl
TmFtZXM6OmluaXQoKTsKICAgICBTVkdOYW1lczo6aW5pdCgpOwogICAgIFhMaW5rTmFtZXM6Omlu
aXQoKTsKICAgICBNYXRoTUxOYW1lczo6aW5pdCgpOwpAQCAtNzEsNiArNzAsNyBAQCB2b2lkIFBy
b2Nlc3NXYXJtaW5nOjpwcmV3YXJtR2xvYmFsbHkoKQogICAgIAogICAgIC8vIFByZXdhcm1zIHVz
ZXIgYWdlbnQgc3R5bGVzaGVldC4KICAgICBTdHlsZTo6VXNlckFnZW50U3R5bGU6OmluaXREZWZh
dWx0U3R5bGVTaGVldCgpOworICAgIE1ROjpGZWF0dXJlczo6YWxsU2NoZW1hcygpOwogICAgIAog
ICAgIC8vIFByZXdhcm1zIEpTIFZNLgogICAgIGNvbW1vblZNKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNmYwNjlhMWIyMWZi
Li4zMTgzZWVjOTNmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5l
clF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJR
dWVyeUV2YWx1YXRvci5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDb21wb3NlZFRy
ZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIK
ICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>