<?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>61084</bug_id>
          
          <creation_ts>2011-05-18 11:47:25 -0700</creation_ts>
          <short_desc>Delete WTFURL</short_desc>
          <delta_ts>2011-05-18 14:04:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>405905</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-18 11:47:25 -0700</bug_when>
    <thetext>Delete WTFURL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405906</commentid>
    <comment_count>1</comment_count>
      <attachid>93957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-18 11:48:18 -0700</bug_when>
    <thetext>Created attachment 93957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405980</commentid>
    <comment_count>2</comment_count>
      <attachid>93957</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-18 13:14:43 -0700</bug_when>
    <thetext>Comment on attachment 93957
Patch

Sadness. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405991</commentid>
    <comment_count>3</comment_count>
      <attachid>93957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-18 13:28:47 -0700</bug_when>
    <thetext>Comment on attachment 93957
Patch

Thanks Sam.  The code will still be in the SVN history if this project picks up more momentum in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406011</commentid>
    <comment_count>4</comment_count>
      <attachid>93957</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-18 14:04:33 -0700</bug_when>
    <thetext>Comment on attachment 93957
Patch

Clearing flags on attachment: 93957

Committed r86787: &lt;http://trac.webkit.org/changeset/86787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406012</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-18 14:04:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93957</attachid>
            <date>2011-05-18 11:48:18 -0700</date>
            <delta_ts>2011-05-18 14:04:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61084-20110518114817.patch</filename>
            <type>text/plain</type>
            <size>88306</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODY3ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMDUtMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWxldGUgV1RGVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA4NAorCisgICAg
ICAgIEl0J3MgYmVlbiBhIHllYXIgYW5kIHdlJ3ZlIGZhaWxlZCB0byBjb21wbGV0ZSB0aGlzIHBy
b2plY3QuICBJdCdzIHRpbWUKKyAgICAgICAgdG8gdGhyb3cgaW4gdGhlIHRvd2VsLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvdXJsOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi91cmwvYXBpOiBSZW1vdmVkLgorICAg
ICAgICAqIHd0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3Rm
L3VybC9hcGkvUGFyc2VkVVJMLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VybC9hcGkvVVJM
U3RyaW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VybC9zcmM6IFJlbW92ZWQuCisgICAg
ICAgICogd3RmL3VybC9zcmMvUmF3VVJMQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogd3Rm
L3VybC9zcmMvVVJMQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VybC9zcmMvVVJM
Q2hhcmFjdGVyVHlwZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi91cmwvc3JjL1VSTENo
YXJhY3RlclR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VybC9zcmMvVVJMQ29tcG9u
ZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VybC9zcmMvVVJMRXNjYXBlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3dGYvdXJsL3NyYy9VUkxFc2NhcGUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3dGYvdXJsL3NyYy9VUkxQYXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdXJs
L3NyYy9VUkxRdWVyeUNhbm9uaWNhbGl6ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdXJs
L3NyYy9VUkxTZWdtZW50cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VybC9zcmMvVVJM
U2VnbWVudHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdXJsL3d0ZnVybC5neXA6IFJlbW92
ZWQuCisKIDIwMTEtMDUtMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDg2NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2NSwx
NSArMzY1LDYgQEAKIAkJOTY5QTA3OUEwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NDBFRDFE
M0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCAqLzsgfTsKIAkJOTY5QTA3OUIwRUQxRDNBRTAwRjFG
NjgxIC8qIE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2REQ3Mzc5MEY5REEzMTAwMDI3
RkJDQyAvKiBWTVRhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk2REQ3Mzc4MEY5REEzMTAwMDI3RkJDQyAvKiBWTVRhZ3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5NzE0QUY0NjEyMkYyODg1MDA5
MkQ5RjUgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTcxNEFGMzUxMjJGMjdFNzAwOTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNw
cCAqLzsgfTsKLQkJOTcxNEFGNEIxMjJGMjg5QTAwOTJEOUY1IC8qIFJhd1VSTEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxNEFGMzExMjJG
MjdFNzAwOTJEOUY1IC8qIFJhd1VSTEJ1ZmZlci5oICovOyB9OwotCQk5NzE0QUY0QzEyMkYyODlB
MDA5MkQ5RjUgLyogVVJMQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzE0QUYzMjEyMkYyN0U3MDA5MkQ5RjUgLyogVVJMQnVmZmVyLmggKi87
IH07Ci0JCTk3MTRBRjREMTIyRjI4OUEwMDkyRDlGNSAvKiBVUkxDb21wb25lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTRBRjMzMTIyRjI3RTcw
MDkyRDlGNSAvKiBVUkxDb21wb25lbnQuaCAqLzsgfTsKLQkJOTcxNEFGNEUxMjJGMjg5QTAwOTJE
OUY1IC8qIFVSTFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTcxNEFGMzQxMjJGMjdFNzAwOTJEOUY1IC8qIFVSTFBhcnNlci5oICovOyB9Owot
CQk5NzE0QUY0RjEyMkYyODlBMDA5MkQ5RjUgLyogVVJMU2VnbWVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTRBRjM2MTIyRjI3RTcwMDkyRDlG
NSAvKiBVUkxTZWdtZW50cy5oICovOyB9OwotCQk5NzE0QUY1RTEyMkYzMjA3MDA5MkQ5RjUgLyog
UGFyc2VkVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MTRBRjU3MTIyRjMxRjUwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwICovOyB9OwotCQk5
NzE0QUY1RjEyMkYzMjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzE0QUY1ODEyMkYzMUY1MDA5MkQ5RjUgLyog
UGFyc2VkVVJMLmggKi87IH07Ci0JCTk3MTRBRjYwMTIyRjMyMDcwMDkyRDlGNSAvKiBVUkxTdHJp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTRB
RjU5MTIyRjMxRjUwMDkyRDlGNSAvKiBVUkxTdHJpbmcuaCAqLzsgfTsKIAkJOTcxRURFQTYxMTY5
RTBEMzAwNUU0MjYyIC8qIFRlcm1pbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJtaW5hdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc5
NDFBNTcxMzAyOUFBQjAwNEEzNDQ3IC8qIE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OTQxQTNGMTMwMjk5REIwMDRBMzQ0
NyAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgKi87IH07CiAJCTk3OTQxQTVBMTMwMjlBQ0MwMDRBMzQ0
NyAvKiBPU1JhbmRvbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc5NDFBNDAxMzAyOTlEQjAwNEEzNDQ3IC8qIE9TUmFuZG9tU291cmNlLmgg
Ki87IH07CkBAIC0xMDgyLDIwICsxMDczLDYgQEAKIAkJOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgx
IC8qIE9wY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGNvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY5QTA5MjIwRUQxRTA5QzAwRjFGNjgxIC8q
IENvbXBsZXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29t
cGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2REQ3Mzc4MEY5REEz
MTAwMDI3RkJDQyAvKiBWTVRhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Vk1UYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3MTRBRjMxMTIyRjI3RTcw
MDkyRDlGNSAvKiBSYXdVUkxCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUmF3VVJMQnVmZmVyLmg7IHBhdGggPSB1cmwvc3JjL1Jhd1VSTEJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5NzE0QUYzMjEyMkYyN0U3MDA5MkQ5RjUgLyogVVJMQnVm
ZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFVSTEJ1ZmZlci5oOyBwYXRo
ID0gdXJsL3NyYy9VUkxCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTcx
NEFGMzMxMjJGMjdFNzAwOTJEOUY1IC8qIFVSTENvbXBvbmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBVUkxDb21wb25lbnQuaDsgcGF0aCA9IHVybC9zcmMvVVJMQ29tcG9u
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3MTRBRjM0MTIyRjI3RTcwMDky
RDlGNSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVVJM
UGFyc2VyLmg7IHBhdGggPSB1cmwvc3JjL1VSTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk5NzE0QUYzNTEyMkYyN0U3MDA5MkQ5RjUgLyogVVJMU2VnbWVudHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVVJMU2VnbWVudHMuY3BwOyBwYXRo
ID0gdXJsL3NyYy9VUkxTZWdtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTk3MTRBRjM2MTIyRjI3RTcwMDkyRDlGNSAvKiBVUkxTZWdtZW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBVUkxTZWdtZW50cy5oOyBwYXRoID0gdXJsL3NyYy9VUkxTZWdt
ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzE0QUY1NzEyMkYzMUY1MDA5
MkQ5RjUgLyogUGFyc2VkVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFBhcnNlZFVSTC5jcHA7IHBhdGggPSB1cmwvYXBpL1BhcnNlZFVSTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3MTRBRjU4MTIyRjMxRjUwMDkyRDlGNSAvKiBQYXJzZWRV
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGFyc2VkVVJMLmg7IHBhdGgg
PSB1cmwvYXBpL1BhcnNlZFVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzE0
QUY1OTEyMkYzMUY1MDA5MkQ5RjUgLyogVVJMU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFVSTFN0cmluZy5oOyBwYXRoID0gdXJsL2FwaS9VUkxTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTcyQTQ4NUQxMjY2MUUwODAwRjQ1MTRGIC8qIFVS
TENoYXJhY3RlclR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFVSTENoYXJhY3RlclR5cGVzLmNwcDsgcGF0aCA9IHVybC9zcmMvVVJMQ2hhcmFjdGVyVHlwZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzJBNDg1RTEyNjYxRTA4MDBGNDUx
NEYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gVVJMQ2hhcmFjdGVyVHlwZXMuaDsgcGF0aCA9IHVybC9zcmMvVVJMQ2hhcmFjdGVyVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTcyQTQ4NzQxMjY2MjU2RjAwRjQ1MTRG
IC8qIFVSTEVzY2FwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBV
UkxFc2NhcGUuY3BwOyBwYXRoID0gdXJsL3NyYy9VUkxFc2NhcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5NzJBNDg3NTEyNjYyNTZGMDBGNDUxNEYgLyogVVJMRXNjYXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFVSTEVzY2FwZS5oOyBwYXRoID0gdXJs
L3NyYy9VUkxFc2NhcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTcyQTQ4NzYx
MjY2MjU2RjAwRjQ1MTRGIC8qIFVSTFF1ZXJ5Q2Fub25pY2FsaXplci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBVUkxRdWVyeUNhbm9uaWNhbGl6ZXIuaDsgcGF0aCA9IHVybC9z
cmMvVVJMUXVlcnlDYW5vbmljYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3OTQxQTNGMTMwMjk5REIwMDRBMzQ0NyAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU1JhbmRvbVNvdXJjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OTQxQTQwMTMwMjk5REIwMDRBMzQ0NyAvKiBPU1JhbmRv
bVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU1JhbmRvbVNvdXJj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Nzk0MUE3QzEzMDJBMDk4MDA0QTM0
NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3Miw3ICsxNzQ5LDYgQEAKIAkJCQkwQjRE
N0U2MjBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovLAogCQkJCUUxOTU2NzhEMDlF
N0NGMTIwMEI4OUQxMyAvKiB1bmljb2RlICovLAogCQkJCTkzNUFGNDZCMDlFOUQ5REIwMEFDRDFE
OCAvKiBVbnVzZWRQYXJhbS5oICovLAotCQkJCTk3MTRBRjJGMTIyRjI3QzYwMDkyRDlGNSAvKiB1
cmwgKi8sCiAJCQkJRTE3RkY3NzAxMTIxMzFEMjAwMDc2QTE5IC8qIFZhbHVlQ2hlY2suaCAqLywK
IAkJCQk2NTkyQzMxNjA5OEI3REUxMDAwM0Q0RjYgLyogVmVjdG9yLmggKi8sCiAJCQkJNjU5MkMz
MTcwOThCN0RFMTAwMDNENEY2IC8qIFZlY3RvclRyYWl0cy5oICovLApAQCAtMjE3MCw0MyArMjE0
Niw2IEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OwotCQk5NzE0QUYyRjEyMkYyN0M2MDA5MkQ5RjUgLyogdXJsICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk5NzE0QUY1NjEyMkYzMUREMDA5MkQ5RjUg
LyogYXBpICovLAotCQkJCTk3MTRBRjMwMTIyRjI3RDIwMDkyRDlGNSAvKiBzcmMgKi8sCi0JCQkp
OwotCQkJbmFtZSA9IHVybDsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTk3
MTRBRjMwMTIyRjI3RDIwMDkyRDlGNSAvKiBzcmMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsK
LQkJCWNoaWxkcmVuID0gKAotCQkJCTk3MTRBRjMxMTIyRjI3RTcwMDkyRDlGNSAvKiBSYXdVUkxC
dWZmZXIuaCAqLywKLQkJCQk5NzE0QUYzMjEyMkYyN0U3MDA5MkQ5RjUgLyogVVJMQnVmZmVyLmgg
Ki8sCi0JCQkJOTcyQTQ4NUQxMjY2MUUwODAwRjQ1MTRGIC8qIFVSTENoYXJhY3RlclR5cGVzLmNw
cCAqLywKLQkJCQk5NzJBNDg1RTEyNjYxRTA4MDBGNDUxNEYgLyogVVJMQ2hhcmFjdGVyVHlwZXMu
aCAqLywKLQkJCQk5NzE0QUYzMzEyMkYyN0U3MDA5MkQ5RjUgLyogVVJMQ29tcG9uZW50LmggKi8s
Ci0JCQkJOTcyQTQ4NzQxMjY2MjU2RjAwRjQ1MTRGIC8qIFVSTEVzY2FwZS5jcHAgKi8sCi0JCQkJ
OTcyQTQ4NzUxMjY2MjU2RjAwRjQ1MTRGIC8qIFVSTEVzY2FwZS5oICovLAotCQkJCTk3MTRBRjM0
MTIyRjI3RTcwMDkyRDlGNSAvKiBVUkxQYXJzZXIuaCAqLywKLQkJCQk5NzJBNDg3NjEyNjYyNTZG
MDBGNDUxNEYgLyogVVJMUXVlcnlDYW5vbmljYWxpemVyLmggKi8sCi0JCQkJOTcxNEFGMzUxMjJG
MjdFNzAwOTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCAqLywKLQkJCQk5NzE0QUYzNjEyMkYyN0U3
MDA5MkQ5RjUgLyogVVJMU2VnbWVudHMuaCAqLywKLQkJCSk7Ci0JCQluYW1lID0gc3JjOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJOTcxNEFGNTYxMjJGMzFERDAwOTJEOUY1
IC8qIGFwaSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
OTcxNEFGNTcxMjJGMzFGNTAwOTJEOUY1IC8qIFBhcnNlZFVSTC5jcHAgKi8sCi0JCQkJOTcxNEFG
NTgxMjJGMzFGNTAwOTJEOUY1IC8qIFBhcnNlZFVSTC5oICovLAotCQkJCTk3MTRBRjU5MTIyRjMx
RjUwMDkyRDlGNSAvKiBVUkxTdHJpbmcuaCAqLywKLQkJCSk7Ci0JCQluYW1lID0gYXBpOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEz
IC8qIHVuaWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjQ2OSw3ICsyNDA4LDYgQEAKIAkJCQkxNEZGRjk4RDEyQkZGRjc1MDA3OTVCQjggLyogUGFn
ZUFsbG9jYXRpb25BbGlnbmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEIzRUYwNTEyQkMyNERE
MDBEMjlFRkYgLyogUGFnZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjkwMjMxNTEyMDky
RDVDMDA2MzBBRjkgLyogUGFnZVJlc2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NzE0
QUY1RjEyMkYzMjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ0QjBFMTZGNUNEMDBCMzQ0NjAgLyogUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzA1MkMzNTBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRkJFNjk2MTIyNTYwRTgwMDMwOUU5RCAvKiBQYXNzT3duQXJyYXlQdHIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQ5MCw3ICsyNDI4LDYgQEAKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1
QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhGQTVCQzBFRjc2
RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEUyNzlF
OTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJOTcxNEFGNEIxMjJGMjg5QTAwOTJEOUY1IC8qIFJhd1VSTEJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NTcwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkwRDM0NjlDMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0Nv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBS
ZWZQdHIuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2NSwxMSArMjUwMiw2IEBACiAJCQkJQkMxOEM0
NzMwRTE2RjVDRDAwQjM0NDYwIC8qIFVuaWNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDc0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVbmljb2RlSWN1LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ3NTBFMTZGNUNEMDBCMzQ0NjAgLyogVW51c2VkUGFyYW0uaCBpbiBIZWFkZXJzICovLAot
CQkJCTk3MTRBRjRDMTIyRjI4OUEwMDkyRDlGNSAvKiBVUkxCdWZmZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTk3MTRBRjREMTIyRjI4OUEwMDkyRDlGNSAvKiBVUkxDb21wb25lbnQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTk3MTRBRjRFMTIyRjI4OUEwMDkyRDlGNSAvKiBVUkxQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTk3MTRBRjRGMTIyRjI4OUEwMDkyRDlGNSAvKiBVUkxTZWdtZW50cy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJOTcxNEFGNjAxMjJGMzIwNzAwOTJEOUY1IC8qIFVSTFN0cmlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzYwRTE2RjVDRDAwQjM0NDYwIC8qIFVTdHJp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RERBNUMxMTI2NDYzMTcwMDc1MTczMiAvKiBVU3Ry
aW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzcwRTE2RjVDRDAwQjM0NDYw
IC8qIFVURjguaCBpbiBIZWFkZXJzICovLApAQCAtMjk5NSw3ICsyOTI3LDYgQEAKIAkJCQk5Nzk0
MUE1NzEzMDI5QUFCMDA0QTM0NDcgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGRkY5OEMxMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEIzRUYwNjEyQkMyNEREMDBEMjlFRkYgLyogUGFnZUJs
b2NrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk3MTRBRjVFMTIyRjMyMDcwMDkyRDlGNSAvKiBQ
YXJzZWRVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIxQkMxMDdFQzU0RDAwNDJFQzJD
IC8qIFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZE
QzMgLyogUGFyc2VyQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTU3NDJGNjUwREQxMUY1
QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDQwLDcgKzI5NzEs
NiBAQAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTRBNDJFM0YwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRD
aGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCMzMwQzI3MEYzOEM2MjMwMDY5MkRFMyAv
KiBUeXBlVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk3MTRBRjQ2MTIyRjI4ODUwMDky
RDlGNSAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFRTEwN0VD
N0U3MDA2NTA0NDYgLyogVVN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVGNzlBQTBD
RTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjhCRkExNzEx
N0NGMTk5MDBCOTA4QjEgLyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvd3RmdXJsLmd5cAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC93dGZ1cmwuZ3lwCShyZXZpc2lvbiA4Njc4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3d0ZnVybC5neXAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTggKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLXsKLSAgJ3ZhcmlhYmxlcyc6IHsK
LSAgICAnY2hyb21pdW1fY29kZSc6IDEsCi0gIH0sCi0gICd0YXJnZXRzJzogWwotICAgIHsKLSAg
ICAgICd0YXJnZXRfbmFtZSc6ICd3dGZ1cmwnLAotICAgICAgJ3R5cGUnOiAnPChsaWJyYXJ5KScs
Ci0gICAgICAnbXN2c19ndWlkJzogJ0VGNUU5NEFCLUI2NDYtNEU1Qi1BMDU4LTUyRUYwN0I4MzUx
QycsCi0gICAgICAnZGVwZW5kZW5jaWVzJzogWwotICAgICAgXSwKLSAgICAgICdzb3VyY2VzJzog
WwotICAgICAgICAnc3JjL1VSTENvbXBvbmVudC5oJywKLSAgICAgICAgJ3NyYy9VUkxTZWdtZW50
cy5jcHAnLAotICAgICAgICAnc3JjL1VSTFNlZ21lbnRzLmgnLAotICAgICAgXSwKLSAgICAgICdk
aXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzogewotICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwot
ICAgICAgICAgICdzcmMnLAotICAgICAgICBdLAotICAgICAgfSwKLSAgICB9LAotICBdLAotfQot
Ci0jIExvY2FsIFZhcmlhYmxlczoKLSMgdGFiLXdpZHRoOjIKLSMgaW5kZW50LXRhYnMtbW9kZTpu
aWwKLSMgRW5kOgotIyB2aW06IHNldCBleHBhbmR0YWIgdGFic3RvcD0yIHNoaWZ0d2lkdGg9MjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwu
Y3BwCShyZXZpc2lvbiA4Njc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2Fw
aS9QYXJzZWRVUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUGFyc2VkVVJMLmgiCi0KLSNpbmNsdWRlICJVUkxDb21wb25lbnQuaCIK
LSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLVBhcnNlZFVSTDo6
UGFyc2VkVVJMKGNvbnN0IFVSTFN0cmluZyYgc3BlYykKLSAgICA6IG1fc3BlYyhzcGVjKQotewot
ICAgIC8vIEZJWE1FOiBIYW5kbGUgbm9uLXN0YW5kYXJkIFVSTHMuCi0gICAgaWYgKHNwZWMuc3Ry
aW5nKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyPFVDaGFyPjo6
cGFyc2VTdGFuZGFyZFVSTChzcGVjLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgc3BlYy5zdHJpbmco
KS5sZW5ndGgoKSwgbV9zZWdtZW50cyk7Ci19Ci0KLVN0cmluZyBQYXJzZWRVUkw6OnNjaGVtZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNlZ21lbnQobV9zZWdtZW50cy5zY2hlbWUpOwotfQotCi1T
dHJpbmcgUGFyc2VkVVJMOjp1c2VybmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNlZ21lbnQo
bV9zZWdtZW50cy51c2VybmFtZSk7Ci19Ci0KLVN0cmluZyBQYXJzZWRVUkw6OnBhc3N3b3JkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLnBhc3N3b3JkKTsKLX0KLQot
U3RyaW5nIFBhcnNlZFVSTDo6aG9zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNlZ21lbnQobV9z
ZWdtZW50cy5ob3N0KTsKLX0KLQotU3RyaW5nIFBhcnNlZFVSTDo6cG9ydCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHNlZ21lbnQobV9zZWdtZW50cy5wb3J0KTsKLX0KLQotU3RyaW5nIFBhcnNlZFVS
TDo6cGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNlZ21lbnQobV9zZWdtZW50cy5wYXRoKTsK
LX0KLQotU3RyaW5nIFBhcnNlZFVSTDo6cXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBzZWdt
ZW50KG1fc2VnbWVudHMucXVlcnkpOwotfQotCi1TdHJpbmcgUGFyc2VkVVJMOjpmcmFnbWVudCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNlZ21lbnQobV9zZWdtZW50cy5mcmFnbWVudCk7Ci19Ci0K
LVN0cmluZyBQYXJzZWRVUkw6OnNlZ21lbnQoY29uc3QgVVJMQ29tcG9uZW50JiBjb21wb25lbnQp
IGNvbnN0Ci17Ci0gICAgaWYgKCFjb21wb25lbnQuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fc3BlYy5zdHJpbmcoKS5zdWJzdHJpbmcoY29tcG9uZW50
LmJlZ2luKCksIGNvbXBvbmVudC5sZW5ndGgoKSk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgJKHJldmlzaW9uIDg2NzgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBhcnNlZFVSTF9oCi0jZGVmaW5lIFBhcnNlZFVSTF9o
Ci0KLSNpbmNsdWRlICJVUkxTZWdtZW50cy5oIgotI2luY2x1ZGUgIlVSTFN0cmluZy5oIgotCi1u
YW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgVVJMQ29tcG9uZW50OwotCi1jbGFzcyBQYXJzZWRVUkwg
ewotcHVibGljOgotICAgIGV4cGxpY2l0IFBhcnNlZFVSTChjb25zdCBVUkxTdHJpbmcmKTsKLQot
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXRob2QgZm9yIHBhcnNpbmcgbm9uLWNhbm9uaWNhbGl6ZWQg
VVJMcy4KLQotICAgIFN0cmluZyBzY2hlbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlcm5hbWUo
KSBjb25zdDsKLSAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKLSAgICBTdHJpbmcgaG9zdCgp
IGNvbnN0OwotICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBhdGgoKSBjb25z
dDsKLSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKLSAgICBTdHJpbmcgZnJhZ21lbnQoKSBjb25z
dDsKLQotICAgIFVSTFN0cmluZyBzcGVjKCkgeyByZXR1cm4gbV9zcGVjOyB9Ci0KLXByaXZhdGU6
Ci0gICAgaW5saW5lIFN0cmluZyBzZWdtZW50KGNvbnN0IFVSTENvbXBvbmVudCYpIGNvbnN0Owot
Ci0gICAgVVJMU3RyaW5nIG1fc3BlYzsKLSAgICBVUkxTZWdtZW50cyBtX3NlZ21lbnRzOwotfTsK
LQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9V
UkxTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9h
cGkvVVJMU3RyaW5nLmgJKHJldmlzaW9uIDg2NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi91cmwvYXBpL1VSTFN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVm
IFVSTFN0cmluZ19oCi0jZGVmaW5lIFVSTFN0cmluZ19oCi0KLSNpbmNsdWRlICJXVEZTdHJpbmcu
aCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVSTFN0cmluZyByZXByZXNlbnRzIGEgc3RyaW5n
IHRoYXQncyBhIGNhbm9uaWNhbGl6ZWQgVVJMLgotY2xhc3MgVVJMU3RyaW5nIHsKLXB1YmxpYzoK
LSAgICBVUkxTdHJpbmcoKSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmc7fQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBQYXJzZWRV
Ukw7Ci0KLSAgICAvLyBVUkxTdHJpbmcgY2FuIG9ubHkgYmUgY29uc3RydWN0ZWQgYnkgYSBQYXJz
ZWRVUkwuCi0gICAgZXhwbGljaXQgVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAg
ICAgICA6IG1fc3RyaW5nKHN0cmluZykKLSAgICB7Ci0gICAgfQotCi0gICAgU3RyaW5nIG1fc3Ry
aW5nOwotfTsKLQotfQotCi0jZW5kaWYKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi91cmwvc3JjL1Jhd1VSTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdXJsL3NyYy9SYXdVUkxCdWZmZXIuaAkocmV2aXNpb24gODY3ODApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvUmF3VVJMQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSNpZm5kZWYgUmF3VVJMQnVmZmVyX2gKLSNkZWZpbmUgUmF3VVJMQnVmZmVyX2gKLQot
I2luY2x1ZGUgIlVSTEJ1ZmZlci5oIgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotLy8gU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBVUkxCdWZmZXIgdXNpbmcg
bmV3W10uIFRoaXMgY2xhc3MKLS8vIGFsc28gc3VwcG9ydHMgYSBzdGF0aWMgYnVmZmVyIHNvIGlm
IGl0IGlzIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2ssIG1vc3QKLS8vIFVSTHMgY2FuIGJlIGNhbm9u
aWNhbGl6ZWQgd2l0aCBubyBoZWFwIGFsbG9jYXRpb25zLgotdGVtcGxhdGU8dHlwZW5hbWUgQ0hB
UiwgaW50IGlubGluZUNhcGFjaXR5ID0gMTAyND4KLWNsYXNzIFJhd1VSTEJ1ZmZlciA6IHB1Ymxp
YyBVUkxCdWZmZXI8Q0hBUj4gewotcHVibGljOgotICAgIFJhd1VSTEJ1ZmZlcigpIDogVVJMQnVm
ZmVyPENIQVI+KCkKLSAgICB7Ci0gICAgICAgIHRoaXMtPm1fYnVmZmVyID0gbV9pbmxpbmVCdWZm
ZXI7Ci0gICAgICAgIHRoaXMtPm1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIH5SYXdVUkxCdWZmZXIoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMtPm1f
YnVmZmVyICE9IG1faW5saW5lQnVmZmVyKQotICAgICAgICAgICAgZGVsZXRlW10gdGhpcy0+bV9i
dWZmZXI7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlc2l6ZShpbnQgc2l6ZSkKLSAgICB7
Ci0gICAgICAgIENIQVIqIG5ld0J1ZmZlciA9IG5ldyBDSEFSW3NpemVdOwotICAgICAgICBtZW1j
cHkobmV3QnVmZmVyLCB0aGlzLT5tX2J1ZmZlciwgc2l6ZW9mKENIQVIpICogKHRoaXMtPm1fbGVu
Z3RoIDwgc2l6ZSA/IHRoaXMtPm1fbGVuZ3RoIDogc2l6ZSkpOwotICAgICAgICBpZiAodGhpcy0+
bV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCi0gICAgICAgICAgICBkZWxldGVbXSB0aGlzLT5t
X2J1ZmZlcjsKLSAgICAgICAgdGhpcy0+bV9idWZmZXIgPSBuZXdCdWZmZXI7Ci0gICAgICAgIHRo
aXMtPm1fY2FwYWNpdHkgPSBzaXplOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIENIQVIgbV9p
bmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNpdHldOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0K
LSNlbmRpZiAvLyBSYXdVUkxCdWZmZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi91cmwvc3JjL1VSTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdXJsL3NyYy9VUkxCdWZmZXIuaAkocmV2aXNpb24gODY3ODApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTM2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0j
aWZuZGVmIFVSTEJ1ZmZlcl9oCi0jZGVmaW5lIFVSTEJ1ZmZlcl9oCi0KLW5hbWVzcGFjZSBXVEYg
ewotCi0vLyBCYXNlIGNsYXNzIGZvciB0aGUgY2Fub25pY2FsaXplciBvdXRwdXQsIHRoaXMgbWFp
bnRhaW5zIGEgYnVmZmVyIGFuZAotLy8gc3VwcG9ydHMgc2ltcGxlIHJlc2l6aW5nIGFuZCBhcHBl
bmQgb3BlcmF0aW9ucyBvbiBpdC4KLS8vCi0vLyBJdCBpcyBWRVJZIElNUE9SVEFOVCB0aGF0IG5v
IHZpcnR1YWwgZnVuY3Rpb24gY2FsbHMgYmUgbWFkZSBvbiB0aGUgY29tbW9uCi0vLyBjb2RlIHBh
dGguIFdlIG9ubHkgaGF2ZSB0d28gdmlydHVhbCBmdW5jdGlvbiBjYWxscywgdGhlIGRlc3RydWN0
b3IgYW5kIGEKLS8vIHJlc2l6ZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBleGlz
dGluZyBidWZmZXIgaXMgbm90IGJpZyBlbm91Z2guCi0vLyBUaGUgZGVyaXZlZCBjbGFzcyBpcyB0
aGVuIGluIGNoYXJnZSBvZiBzZXR0aW5nIHVwIG91ciBidWZmZXIgd2hpY2ggd2Ugd2lsbAotLy8g
bWFuYWdlLgotdGVtcGxhdGU8dHlwZW5hbWUgQ0hBUj4KLWNsYXNzIFVSTEJ1ZmZlciB7Ci1wdWJs
aWM6Ci0gICAgVVJMQnVmZmVyKCkgOiBtX2J1ZmZlcigwKSwgbV9jYXBhY2l0eSgwKSwgbV9sZW5n
dGgoMCkgeyB9Ci0gICAgdmlydHVhbCB+VVJMQnVmZmVyKCkgeyB9Ci0KLSAgICAvLyBJbXBsZW1l
bnRlZCB0byByZXNpemUgdGhlIGJ1ZmZlci4gVGhpcyBmdW5jdGlvbiBzaG91bGQgdXBkYXRlIHRo
ZSBidWZmZXIKLSAgICAvLyBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSBuZXcgYnVmZmVyLCBhbmQg
YW55IG9sZCBkYXRhIHVwIHRvIHxtX2xlbmd0aHwgaW4KLSAgICAvLyB0aGUgYnVmZmVyIG11c3Qg
YmUgY29waWVkIG92ZXIuCi0gICAgLy8KLSAgICAvLyBUaGUgbmV3IHNpemUgbXVzdCBiZSBsYXJn
ZXIgdGhhbiBtX2NhcGFjaXR5LgotICAgIHZpcnR1YWwgdm9pZCByZXNpemUoaW50KSA9IDA7Ci0K
LSAgICBpbmxpbmUgY2hhciBhdChpbnQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcltv
ZmZzZXRdOyB9Ci0gICAgaW5saW5lIHZvaWQgc2V0KGludCBvZmZzZXQsIENIQVIgY2gpCi0gICAg
ewotICAgICAgICAvLyBGSVhNRTogQWRkIEFTU0VSVChvZmZzZXQgPCBsZW5ndGgoKSk7Ci0gICAg
ICAgIG1fYnVmZmVyW29mZnNldF0gPSBjaDsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBj
dXJyZW50IGNhcGFjaXR5IG9mIHRoZSBidWZmZXIuIFRoZSBsZW5ndGgoKSBpcyB0aGUgbnVtYmVy
IG9mCi0gICAgLy8gY2hhcmFjdGVycyB0aGF0IGhhdmUgYmVlbiBkZWNsYXJlZCB0byBiZSB3cml0
dGVuLCBidXQgdGhlIGNhcGFjaXR5KCkgaXMKLSAgICAvLyB0aGUgbnVtYmVyIHRoYXQgY2FuIGJl
IHdyaXR0ZW4gd2l0aG91dCByZWFsbG9jYXRpb24uIElmIHRoZSBjYWxsZXIgbXVzdAotICAgIC8v
IHdyaXRlIG1hbnkgY2hhcmFjdGVycyBhdCBvbmNlLCBpdCBjYW4gbWFrZSBzdXJlIHRoZXJlIGlz
IGVub3VnaCBjYXBhY2l0eSwKLSAgICAvLyB3cml0ZSB0aGUgZGF0YSwgdGhlbiB1c2Ugc2V0TGVu
Z3RoKCkgdG8gZGVjbGFyZSB0aGUgbmV3IGxlbmd0aCgpLgotICAgIGludCBjYXBhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FwYWNpdHk7IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KLQotICAgIC8vIFRoZSBvdXRwdXQgd2lsbCBOT1QgYmUgMC10ZXJtaW5h
dGVkLiBDYWxsIGxlbmd0aCgpIHRvIGdldCB0aGUgbGVuZ3RoLgotICAgIGNvbnN0IENIQVIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIENIQVIqIGRhdGEoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotCi0gICAgLy8gU2hvcnRlbnMgdGhlIFVSTCB0byB0aGUgbmV3IGxlbmd0
aC4gVXNlZCBmb3IgImJhY2tpbmcgdXAiIHdoZW4gcHJvY2Vzc2luZwotICAgIC8vIHJlbGF0aXZl
IHBhdGhzLiBUaGlzIGNhbiBhbHNvIGJlIHVzZWQgaWYgYW4gZXh0ZXJuYWwgZnVuY3Rpb24gd3Jp
dGVzIGEgbG90Ci0gICAgLy8gb2YgZGF0YSB0byB0aGUgYnVmZmVyICh3aGVuIHVzaW5nIHRoZSAi
UmF3IiB2ZXJzaW9uIGJlbG93KSBiZXlvbmQgdGhlIGVuZCwKLSAgICAvLyB0byBkZWNsYXJlIHRo
ZSBuZXcgbGVuZ3RoLgotICAgIHZvaWQgc2V0TGVuZ3RoKGludCBsZW5ndGgpCi0gICAgewotICAg
ICAgICAvLyBGSVhNRTogQWRkIEFTU0VSVChsZW5ndGggPCBjYXBhY2l0eSgpKTsKLSAgICAgICAg
bV9sZW5ndGggPSBsZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBpcyB0aGUgbW9zdCBwZXJm
b3JtYW5jZSBjcml0aWNhbCBmdW5jdGlvbiwgc2luY2UgaXQgaXMgY2FsbGVkIGZvcgotICAgIC8v
IGV2ZXJ5IGNoYXJhY3Rlci4KLSAgICB2b2lkIGFwcGVuZChDSEFSIGNoKQotICAgIHsKLSAgICAg
ICAgLy8gSW4gVkMyMDA1LCBwdXR0aW5nIHRoaXMgY29tbW9uIGNhc2UgZmlyc3Qgc3BlZWRzIHVw
IGV4ZWN1dGlvbgotICAgICAgICAvLyBkcmFtYXRpY2FsbHkgYmVjYXVzZSB0aGlzIGJyYW5jaCBp
cyBwcmVkaWN0ZWQgYXMgdGFrZW4uCi0gICAgICAgIGlmIChtX2xlbmd0aCA8IG1fY2FwYWNpdHkp
IHsKLSAgICAgICAgICAgIG1fYnVmZmVyW21fbGVuZ3RoXSA9IGNoOwotICAgICAgICAgICAgKytt
X2xlbmd0aDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
Z3JvdygxKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2J1ZmZlclttX2xlbmd0
aF0gPSBjaDsKLSAgICAgICAgKyttX2xlbmd0aDsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZChj
b25zdCBDSEFSKiBzdHIsIGludCBzdHJMZW5ndGgpCi0gICAgewotICAgICAgICBpZiAobV9sZW5n
dGggKyBzdHJMZW5ndGggPiBtX2NhcGFjaXR5KSB7Ci0gICAgICAgICAgICBpZiAoIWdyb3cobV9s
ZW5ndGggKyBzdHJMZW5ndGggLSBtX2NhcGFjaXR5KSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJMZW5ndGg7IGkrKykK
LSAgICAgICAgICAgIG1fYnVmZmVyW21fbGVuZ3RoICsgaV0gPSBzdHJbaV07Ci0gICAgICAgIG1f
bGVuZ3RoICs9IHN0ckxlbmd0aDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGJ1ZmZlciBjb3VsZCBiZSByZXNpemVkLCBmYWxzZSBvbiBPT00uCi0gICAg
Ym9vbCBncm93KGludCBtaW5pbXVtQWRkaXRpb25hbENhcGFjaXR5KQotICAgIHsKLSAgICAgICAg
c3RhdGljIGNvbnN0IGludCBtaW5pbXVtQ2FwYWNpdHkgPSAxNjsKLSAgICAgICAgaW50IG5ld0Nh
cGFjaXR5ID0gbV9jYXBhY2l0eSA/IG1fY2FwYWNpdHkgOiBtaW5pbXVtQ2FwYWNpdHk7Ci0gICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChuZXdDYXBhY2l0eSA+PSAoMSA8PCAzMCkpIC8vIFBy
ZXZlbnQgb3ZlcmZsb3cgYmVsb3cuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgbmV3Q2FwYWNpdHkgKj0gMjsKLSAgICAgICAgfSB3aGlsZSAobmV3Q2FwYWNpdHkg
PCBtX2NhcGFjaXR5ICsgbWluaW11bUFkZGl0aW9uYWxDYXBhY2l0eSk7Ci0gICAgICAgIHJlc2l6
ZShuZXdDYXBhY2l0eSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIENIQVIq
IG1fYnVmZmVyOwotICAgIGludCBtX2NhcGFjaXR5OwotICAgIGludCBtX2xlbmd0aDsgLy8gVXNl
ZCBjaGFyYWN0ZXJzIGluIHRoZSBidWZmZXIuCi19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQot
I2VuZGlmIC8vIFVSTEJ1ZmZlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Vy
bC9zcmMvVVJMQ2hhcmFjdGVyVHlwZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdXJsL3NyYy9VUkxDaGFyYWN0ZXJUeXBlcy5jcHAJKHJldmlzaW9uIDg2Nzgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENoYXJhY3RlclR5cGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTAs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJV
UkxDaGFyYWN0ZXJUeXBlcy5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY29uc3QgdW5zaWduZWQg
Y2hhciBVUkxDaGFyYWN0ZXJUeXBlczo6Y2hhcmFjdGVyVHlwZVRhYmxlWzB4MTAwXSA9IHsKLSAg
ICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJ
bnZhbGlkQ2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIs
IEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3Rl
ciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwK
LSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVy
LCBJbnZhbGlkQ2hhcmFjdGVyLCAvLyAweDAwIC0gMHgwZgotICAgIEludmFsaWRDaGFyYWN0ZXIs
IEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0g
ICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3Rlciwg
SW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVy
LCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0
ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIs
IC8vIDB4MTAgLSAweDFmCi0gICAgSW52YWxpZENoYXJhY3RlciwgLy8gMHgyMCAgJyAnIChlc2Nh
cGUgc3BhY2VzIGluIHF1ZXJpZXMpCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJh
Y3RlciwgLy8gMHgyMSAgIQotICAgIEludmFsaWRDaGFyYWN0ZXIsIC8vIDB4MjIgICIKLSAgICBJ
bnZhbGlkQ2hhcmFjdGVyLCAvLyAweDIzICAjICAoaW52YWxpZCBpbiBxdWVyeSBzaW5jZSBpdCBt
YXJrcyB0aGUgcmVmKQotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8v
IDB4MjQgICQKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDI1
ICAlCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHgyNiAgJgot
ICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4MjcgICcKLSAgICBR
dWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDI4ICAoCi0gICAgUXVlcnlD
aGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHgyOSAgKQotICAgIFF1ZXJ5Q2hhcmFj
dGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4MmEgICoKLSAgICBRdWVyeUNoYXJhY3RlciB8
IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDJiICArCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2Vy
SW5mb0NoYXJhY3RlciwgLy8gMHgyYyAgLAotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9D
aGFyYWN0ZXIsIC8vIDB4MmQgIC0KLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFj
dGVyIHwgSVB2NENoYXJhY3RlciwgLy8gMHgyZSAgLgotICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAw
eDJmICAvCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFy
YWN0ZXIgfCBIZXhDaGFyYWN0ZXIgfCBEZWNpbWFsQ2hhcmFjdGVyIHwgT2N0YWxDaGFyYWN0ZXIs
IC8vIDB4MzAgIDAKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2
NENoYXJhY3RlciB8IEhleENoYXJhY3RlciB8IERlY2ltYWxDaGFyYWN0ZXIgfCBPY3RhbENoYXJh
Y3RlciwgLy8gMHgzMSAgMQotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIg
fCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyIHwgRGVjaW1hbENoYXJhY3RlciB8IE9jdGFs
Q2hhcmFjdGVyLCAvLyAweDMyICAyCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJh
Y3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIgfCBEZWNpbWFsQ2hhcmFjdGVyIHwg
T2N0YWxDaGFyYWN0ZXIsIC8vIDB4MzMgIDMKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZv
Q2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciB8IERlY2ltYWxDaGFyYWN0
ZXIgfCBPY3RhbENoYXJhY3RlciwgLy8gMHgzNCAgNAotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNl
ckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyIHwgRGVjaW1hbENo
YXJhY3RlciB8IE9jdGFsQ2hhcmFjdGVyLCAvLyAweDM1ICA1Ci0gICAgUXVlcnlDaGFyYWN0ZXIg
fCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIgfCBEZWNp
bWFsQ2hhcmFjdGVyIHwgT2N0YWxDaGFyYWN0ZXIsIC8vIDB4MzYgIDYKLSAgICBRdWVyeUNoYXJh
Y3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciB8
IERlY2ltYWxDaGFyYWN0ZXIgfCBPY3RhbENoYXJhY3RlciwgLy8gMHgzNyAgNwotICAgIFF1ZXJ5
Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFj
dGVyIHwgRGVjaW1hbENoYXJhY3RlciwgLy8gMHgzOCAgOAotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwg
VXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyIHwgRGVjaW1h
bENoYXJhY3RlciwgLy8gMHgzOSAgOQotICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDNhICA6Ci0g
ICAgUXVlcnlDaGFyYWN0ZXIsIC8vIDB4M2IgIDsKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCAvLyAw
eDNjICA8Ci0gICAgUXVlcnlDaGFyYWN0ZXIsIC8vIDB4M2QgID0KLSAgICBJbnZhbGlkQ2hhcmFj
dGVyLCAvLyAweDNlICA+Ci0gICAgUXVlcnlDaGFyYWN0ZXIsIC8vIDB4M2YgID8KLSAgICBRdWVy
eUNoYXJhY3RlciwgLy8gMHg0MCAgQAotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFy
YWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyLCAvLyAweDQxICBBCi0gICAgUXVl
cnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFy
YWN0ZXIsIC8vIDB4NDIgIEIKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVy
IHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciwgLy8gMHg0MyAgQwotICAgIFF1ZXJ5Q2hh
cmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVy
LCAvLyAweDQ0ICBECi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQ
djRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIsIC8vIDB4NDUgIEUKLSAgICBRdWVyeUNoYXJhY3Rl
ciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciwgLy8g
MHg0NiAgRgotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NDcg
IEcKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDQ4ICBICi0g
ICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg0OSAgSQotICAgIFF1
ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NGEgIEoKLSAgICBRdWVyeUNo
YXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDRiICBLCi0gICAgUXVlcnlDaGFyYWN0
ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg0YyAgTAotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwg
VXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NGQgIE0KLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJ
bmZvQ2hhcmFjdGVyLCAvLyAweDRlICBOCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0No
YXJhY3RlciwgLy8gMHg0ZiAgTwotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0
ZXIsIC8vIDB4NTAgIFAKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAv
LyAweDUxICBRCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1
MiAgUgotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NTMgIFMK
LSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDU0ICBUCi0gICAg
UXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1NSAgVQotICAgIFF1ZXJ5
Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NTYgIFYKLSAgICBRdWVyeUNoYXJh
Y3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDU3ICBXCi0gICAgUXVlcnlDaGFyYWN0ZXIg
fCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIsIC8vIDB4NTggIFgKLSAgICBRdWVy
eUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDU5ICBZCi0gICAgUXVlcnlDaGFy
YWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1YSAgWgotICAgIFF1ZXJ5Q2hhcmFjdGVy
LCAvLyAweDViICBbCi0gICAgUXVlcnlDaGFyYWN0ZXIsIC8vIDB4NWMgICdcJwotICAgIFF1ZXJ5
Q2hhcmFjdGVyLCAvLyAweDVkICBdCi0gICAgUXVlcnlDaGFyYWN0ZXIsIC8vIDB4NWUgIF4KLSAg
ICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDVmICBfCi0gICAgUXVl
cnlDaGFyYWN0ZXIsIC8vIDB4NjAgIGAKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hh
cmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciwgLy8gMHg2MSAgYQotICAgIFF1
ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hh
cmFjdGVyLCAvLyAweDYyICBiCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3Rl
ciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIsIC8vIDB4NjMgIGMKLSAgICBRdWVyeUNo
YXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3Rl
ciwgLy8gMHg2NCAgZAotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJ
UHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyLCAvLyAweDY1ICBlCi0gICAgUXVlcnlDaGFyYWN0
ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIsIC8v
IDB4NjYgIGYKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDY3
ICBnCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg2OCAgaAot
ICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NjkgIGkKLSAgICBR
dWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDZhICBqCi0gICAgUXVlcnlD
aGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg2YiAgawotICAgIFF1ZXJ5Q2hhcmFj
dGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NmMgIGwKLSAgICBRdWVyeUNoYXJhY3RlciB8
IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDZkICBtCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2Vy
SW5mb0NoYXJhY3RlciwgLy8gMHg2ZSAgbgotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9D
aGFyYWN0ZXIsIC8vIDB4NmYgIG8KLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFj
dGVyLCAvLyAweDcwICBwCi0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3Rlciwg
Ly8gMHg3MSAgcQotICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4
NzIgIHIKLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDczICBz
Ci0gICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg3NCAgdAotICAg
IFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NzUgIHUKLSAgICBRdWVy
eUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDc2ICB2Ci0gICAgUXVlcnlDaGFy
YWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg3NyAgdwotICAgIFF1ZXJ5Q2hhcmFjdGVy
IHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyLCAvLyAweDc4ICB4Ci0gICAgUXVl
cnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg3OSAgeQotICAgIFF1ZXJ5Q2hh
cmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4N2EgIHoKLSAgICBRdWVyeUNoYXJhY3Rl
ciwgLy8gMHg3YiAgewotICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDdjICB8Ci0gICAgUXVlcnlD
aGFyYWN0ZXIsIC8vIDB4N2QgIH0KLSAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFj
dGVyLCAvLyAweDdlICB+Ci0gICAgSW52YWxpZENoYXJhY3RlciwgLy8gMHg3ZgotICAgIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRD
aGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAotICAgIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIC8vIDB4ODAgLSAweDhmCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgLy8gMHg5
MCAtIDB4OWYKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0gICAgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCAvLyAweGEwIC0gMHhhZgotICAgIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRD
aGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAotICAgIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIC8vIDB4YjAgLSAweGJmCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgLy8gMHhj
MCAtIDB4Y2YKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0gICAgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCAvLyAweGQwIC0gMHhkZgotICAgIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRD
aGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAotICAgIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIC8vIDB4ZTAgLSAweGVmCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKLSAgICBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLAotICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCi0gICAgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgLy8gMHhm
MCAtIDB4ZmYKLX07Ci0KLX0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3Ny
Yy9VUkxDaGFyYWN0ZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdXJsL3NyYy9VUkxDaGFyYWN0ZXJUeXBlcy5oCShyZXZpc2lvbiA4Njc4MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxDaGFyYWN0ZXJUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0jaWZuZGVmIFVSTENoYXJhY3RlclR5cGVzX2gKLSNkZWZpbmUgVVJMQ2hh
cmFjdGVyVHlwZXNfaAotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgVVJMQ2hhcmFjdGVyVHlw
ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1F1ZXJ5Q2hhcih1bnNpZ25l
ZCBjaGFyIGMpIHsgcmV0dXJuIGlzQ2hhck9mVHlwZShjLCBRdWVyeUNoYXJhY3Rlcik7IH0KLSAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgaXNJUHY0Q2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJu
IGlzQ2hhck9mVHlwZShjLCBJUHY0Q2hhcmFjdGVyKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc0hleENoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBpc0NoYXJPZlR5cGUoYywgSGV4
Q2hhcmFjdGVyKTsgfQotCi1wcml2YXRlOgotICAgIGVudW0gQ2hhclR5cGVzIHsKLSAgICAgICAg
SW52YWxpZENoYXJhY3RlciA9IDAsCi0gICAgICAgIFF1ZXJ5Q2hhcmFjdGVyID0gMSA8PCAwLAot
ICAgICAgICBVc2VySW5mb0NoYXJhY3RlciA9IDEgPDwgMSwKLSAgICAgICAgSVB2NENoYXJhY3Rl
ciA9IDEgPDwgMiwKLSAgICAgICAgSGV4Q2hhcmFjdGVyID0gMSA8PCAzLAotICAgICAgICBEZWNp
bWFsQ2hhcmFjdGVyID0gMSA8PCA0LAotICAgICAgICBPY3RhbENoYXJhY3RlciA9IDEgPDwgNSwK
LSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyVHlwZVRh
YmxlWzB4MTAwXTsKLQotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NoYXJPZlR5cGUodW5zaWdu
ZWQgY2hhciBjLCBDaGFyVHlwZXMgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhIShjaGFy
YWN0ZXJUeXBlVGFibGVbY10gJiB0eXBlKTsKLSAgICB9Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENvbXBvbmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxDb21wb25lbnQu
aAkocmV2aXNpb24gODY3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMv
VVJMQ29tcG9uZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZm5kZWYgVVJMQ29tcG9uZW50X2gK
LSNkZWZpbmUgVVJMQ29tcG9uZW50X2gKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFJlcHJlc2Vu
dHMgYSBzdWJzdHJpbmcgZm9yIFVSTCBwYXJzaW5nLgotY2xhc3MgVVJMQ29tcG9uZW50IHsKLXB1
YmxpYzoKLSAgICBVUkxDb21wb25lbnQoKSA6IG1fYmVnaW4oMCksIG1fbGVuZ3RoKC0xKSB7IH0K
LSAgICBVUkxDb21wb25lbnQoaW50IGJlZ2luLCBpbnQgbGVuZ3RoKSA6IG1fYmVnaW4oYmVnaW4p
LCBtX2xlbmd0aChsZW5ndGgpIHsgfQotCi0gICAgLy8gSGVscGVyIHRoYXQgcmV0dXJucyBhIGNv
bXBvbmVudCBjcmVhdGVkIHdpdGggdGhlIGdpdmVuIGJlZ2luIGFuZCBlbmRpbmcKLSAgICAvLyBw
b2ludHMuIFRoZSBlbmRpbmcgcG9pbnQgaXMgbm9uLWluY2x1c2l2ZS4KLSAgICBzdGF0aWMgaW5s
aW5lIFVSTENvbXBvbmVudCBmcm9tUmFuZ2UoaW50IGJlZ2luLCBpbnQgZW5kKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFVSTENvbXBvbmVudChiZWdpbiwgZW5kIC0gYmVnaW4pOwotICAgIH0KLQot
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGNvbXBvbmVudCBpcyB2YWxpZCwgbWVhbmluZyB0
aGUgbGVuZ3RoIGlzIGdpdmVuLiBFdmVuCi0gICAgLy8gdmFsaWQgY29tcG9uZW50cyBtYXkgYmUg
ZW1wdHkgdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhleSBleGlzdC4KLSAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aCAhPSAtMTsgfQotCi0gICAgYm9vbCBpc05vbkVt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggPiAwOyB9Ci0gICAgYm9vbCBpc0VtcHR5T3JJ
bnZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggPD0gMDsgfQotCi0gICAgdm9pZCByZXNl
dCgpCi0gICAgewotICAgICAgICBtX2JlZ2luID0gMDsKLSAgICAgICAgbV9sZW5ndGggPSAtMTsK
LSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMQ29tcG9uZW50JiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fbGVuZ3RoID09IG90
aGVyLm1fbGVuZ3RoOyB9Ci0KLSAgICBpbnQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2lu
OyB9Ci0gICAgdm9pZCBzZXRCZWdpbihpbnQgYmVnaW4pIHsgbV9iZWdpbiA9IGJlZ2luOyB9Ci0K
LSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLSAgICB2b2lkIHNl
dExlbmd0aChpbnQgbGVuZ3RoKSB7IG1fbGVuZ3RoID0gbGVuZ3RoOyB9Ci0KLSAgICBpbnQgZW5k
KCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiArIG1fbGVuZ3RoOyB9Ci0KLXByaXZhdGU6Ci0gICAg
aW50IG1fYmVnaW47IC8vIEJ5dGUgb2Zmc2V0IGluIHRoZSBzdHJpbmcgb2YgdGhpcyBjb21wb25l
bnQuCi0gICAgaW50IG1fbGVuZ3RoOyAvLyBXaWxsIGJlIC0xIGlmIHRoZSBjb21wb25lbnQgaXMg
dW5zcGVjaWZpZWQuCi19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVSTENv
bXBvbmVudF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMRXNj
YXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMv
VVJMRXNjYXBlLmNwcAkocmV2aXNpb24gODY3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3VybC9zcmMvVVJMRXNjYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlVSTEVzY2FwZS5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY29u
c3QgY2hhciBoZXhDaGFyYWN0ZXJUYWJsZVsxNl0gPSB7Ci0gICAgJzAnLCAnMScsICcyJywgJzMn
LCAnNCcsICc1JywgJzYnLCAnNycsCi0gICAgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywg
J0UnLCAnRicsCi19OwotCi19CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9z
cmMvVVJMRXNjYXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91
cmwvc3JjL1VSTEVzY2FwZS5oCShyZXZpc2lvbiA4Njc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdXJsL3NyYy9VUkxFc2NhcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0jaWZuZGVm
IFVSTEVzY2FwZV9oCi0jZGVmaW5lIFVSTEVzY2FwZV9oCi0KLSNpbmNsdWRlICJVUkxCdWZmZXIu
aCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWV4dGVybiBjb25zdCBjaGFyIGhleENoYXJhY3RlclRh
YmxlWzE2XTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSW5DaGFyLCB0eXBlbmFtZSBPdXRDaGFyPgot
aW5saW5lIHZvaWQgYXBwZW5kVVJMRXNjYXBlZENoYXJhY3RlcihJbkNoYXIgY2gsIFVSTEJ1ZmZl
cjxPdXRDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICBidWZm
ZXIuYXBwZW5kKGhleENoYXJhY3RlclRhYmxlW2NoID4+IDRdKTsKLSAgICBidWZmZXIuYXBwZW5k
KGhleENoYXJhY3RlclRhYmxlW2NoICYgMHhmXSk7Ci19Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTFBhcnNlci5oCShyZXZpc2lv
biA4Njc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxQYXJzZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1NzUgKzAsMCBAQAotLyogQmFzZWQgb24gbnNVUkxQYXJz
ZXJzLmNjIGZyb20gTW96aWxsYQotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotICogQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBv
cmF0aW9uLgotICoKLSAqIE90aGVyIGNvbnRyaWJ1dG9yczoKLSAqICAgRGFyaW4gRmlzaGVyIChv
cmlnaW5hbCBhdXRob3IpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIu
MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0
aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotICog
b2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBh
dAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93
d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNh
c2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQotICogYXBwbGljYWJs
ZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlv
dXIKLSAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBv
ZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8g
YWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQotICogZGVsZXRpbmd0aGUgcHJvdmlz
aW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKLSAqIG90aGVy
IHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBt
YXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSBy
ZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkg
b2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0jaWZuZGVmIFVSTFBhcnNl
cl9oCi0jZGVmaW5lIFVSTFBhcnNlcl9oCi0KLSNpbmNsdWRlICJVUkxDb21wb25lbnQuaCIKLSNp
bmNsdWRlICJVUkxTZWdtZW50cy5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ0hBUj4KLWNsYXNzIFVSTFBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTcGVjaWFs
UG9ydCB7Ci0gICAgICAgIFVuc3BlY2lmaWVkUG9ydCA9IC0xLAotICAgICAgICBJbnZhbGlkUG9y
dCA9IC0yLAotICAgIH07Ci0KLSAgICAvLyBUaGlzIGhhbmRsZXMgZXZlcnl0aGluZyB0aGF0IG1h
eSBiZSBhbiBhdXRob3JpdHkgdGVybWluYXRvciwgaW5jbHVkaW5nCi0gICAgLy8gYmFja3NsYXNo
LiBGb3Igc3BlY2lhbCBiYWNrc2xhc2ggaGFuZGxpbmcgc2VlIHBhcnNlQWZ0ZXJTY2hlbWUuCi0g
ICAgc3RhdGljIGJvb2wgaXNQb3NzaWJsZUF1dGhvcml0eVRlcm1pbmF0b3IoQ0hBUiBjaCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBpc1VSTFNsYXNoKGNoKSB8fCBjaCA9PSAnPycgfHwgY2ggPT0g
JyMnIHx8IGNoID09ICc7JzsKLSAgICB9Ci0KLSAgICAvLyBHaXZlbiBhbiBhbHJlYWR5LWlkZW50
aWZpZWQgYXV0aCBzZWN0aW9uLCBicmVha3MgaXQgaW50byBpdHMgY29uc3RpdHVlbnQKLSAgICAv
LyBwYXJ0cy4gVGhlIHBvcnQgbnVtYmVyIHdpbGwgYmUgcGFyc2VkIGFuZCB0aGUgcmVzdWx0aW5n
IGludGVnZXIgd2lsbCBiZQotICAgIC8vIGZpbGxlZCBpbnRvIHRoZSBnaXZlbiAqcG9ydCB2YXJp
YWJsZSwgb3IgLTEgaWYgdGhlcmUgaXMgbm8gcG9ydCBudW1iZXIKLSAgICAvLyBvciBpdCBpcyBp
bnZhbGlkLgotICAgIHN0YXRpYyB2b2lkIHBhcnNlQXV0aG9yaXR5KGNvbnN0IENIQVIqIHNwZWMs
IGNvbnN0IFVSTENvbXBvbmVudCYgYXV0aCwgVVJMQ29tcG9uZW50JiB1c2VybmFtZSwgVVJMQ29t
cG9uZW50JiBwYXNzd29yZCwgVVJMQ29tcG9uZW50JiBob3N0LCBVUkxDb21wb25lbnQmIHBvcnQp
Ci0gICAgewotICAgICAgICAvLyBGSVhNRTogYWRkIEFTU0VSVChhdXRoLmlzVmFsaWQoKSk7IC8v
IFdlIHNob3VsZCBhbHdheXMgZ2V0IGFuIGF1dGhvcml0eS4KLSAgICAgICAgaWYgKCFhdXRoLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICB1c2VybmFtZS5yZXNldCgpOwotICAgICAgICAgICAgcGFz
c3dvcmQucmVzZXQoKTsKLSAgICAgICAgICAgIGhvc3QucmVzZXQoKTsKLSAgICAgICAgICAgIHBv
cnQucmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFNlYXJjaCBiYWNrd2FyZHMgZm9yIEAsIHdoaWNoIGlzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0
aGUgdXNlciBpbmZvCi0gICAgICAgIC8vIGFuZCB0aGUgc2VydmVyIGluZm8uICBSRkMgMzk4NiBm
b3JiaWRzIEAgZnJvbSBvY2N1cmluZyBpbiBhdXRoLCBidXQKLSAgICAgICAgLy8gc29tZW9uZSBt
aWdodCBpbmNsdWRlIGl0IGluIGEgcGFzc3dvcmQgdW5lc2NhcGVkLgotICAgICAgICBpbnQgaSA9
IGF1dGguYmVnaW4oKSArIGF1dGgubGVuZ3RoKCkgLSAxOwotICAgICAgICB3aGlsZSAoaSA+IGF1
dGguYmVnaW4oKSAmJiBzcGVjW2ldICE9ICdAJykKLSAgICAgICAgICAgIC0taTsKLQotICAgICAg
ICBpZiAoc3BlY1tpXSA9PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIEZvdW5kIHVzZXIgaW5mbzog
PHVzZXItaW5mbz5APHNlcnZlci1pbmZvPgotICAgICAgICAgICAgcGFyc2VVc2VySW5mbyhzcGVj
LCBVUkxDb21wb25lbnQoYXV0aC5iZWdpbigpLCBpIC0gYXV0aC5iZWdpbigpKSwgdXNlcm5hbWUs
IHBhc3N3b3JkKTsKLSAgICAgICAgICAgIHBhcnNlU2VydmVySW5mbyhzcGVjLCBVUkxDb21wb25l
bnQ6OmZyb21SYW5nZShpICsgMSwgYXV0aC5iZWdpbigpICsgYXV0aC5sZW5ndGgoKSksIGhvc3Qs
IHBvcnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm8gdXNlciBpbmZvLCBl
dmVyeXRoaW5nIGlzIHNlcnZlciBpbmZvLgotICAgICAgICAgICAgdXNlcm5hbWUucmVzZXQoKTsK
LSAgICAgICAgICAgIHBhc3N3b3JkLnJlc2V0KCk7Ci0gICAgICAgICAgICBwYXJzZVNlcnZlcklu
Zm8oc3BlYywgYXV0aCwgaG9zdCwgcG9ydCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0
aWMgYm9vbCBleHRyYWN0U2NoZW1lKGNvbnN0IENIQVIqIHNwZWMsIGludCBzcGVjTGVuZ3RoLCBV
UkxDb21wb25lbnQmIHNjaGVtZSkKLSAgICB7Ci0gICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0
ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgICAgIGludCBiZWdpbiA9IDA7Ci0g
ICAgICAgIHdoaWxlIChiZWdpbiA8IHNwZWNMZW5ndGggJiYgc2hvdWxkVHJpbUZyb21VUkwoc3Bl
Y1tiZWdpbl0pKQotICAgICAgICAgICAgYmVnaW4rKzsKLSAgICAgICAgaWYgKGJlZ2luID09IHNw
ZWNMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIElucHV0IGlzIGVtcHR5IG9y
IGFsbCB3aGl0ZXNwYWNlLgotCi0gICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGNvbG9uIGNoYXJh
Y3Rlci4KLSAgICAgICAgZm9yIChpbnQgaSA9IGJlZ2luOyBpIDwgc3BlY0xlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICBpZiAoc3BlY1tpXSA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICBzY2hl
bWUgPSBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShiZWdpbiwgaSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBObyBjb2xvbiBmb3VuZDogbm8gc2NoZW1lCi0gICAgfQotCi0gICAgLy8gRmlsbHMg
aW4gYWxsIG1lbWJlcnMgb2YgdGhlIFVSTFNlZ21lbnRzIHN0cnVjdHVyZSAoZXhjZXB0IGZvciB0
aGUKLSAgICAvLyBzY2hlbWUpIGZvciBzdGFuZGFyZCBVUkxzLgotICAgIC8vCi0gICAgLy8gfHNw
ZWN8IGlzIHRoZSBmdWxsIHNwZWMgYmVpbmcgcGFyc2VkLCBvZiBsZW5ndGggfHNwZWNMZW5ndGh8
LgotICAgIC8vIHxhZnRlclNjaGVtZXwgaXMgdGhlIGNoYXJhY3RlciBpbW1lZGlhdGVseSBmb2xs
b3dpbmcgdGhlIHNjaGVtZSAoYWZ0ZXIKLSAgICAvLyB0aGUgY29sb24pIHdoZXJlIHdlJ2xsIGJl
Z2luIHBhcnNpbmcuCi0gICAgc3RhdGljIHZvaWQgcGFyc2VBZnRlclNjaGVtZShjb25zdCBDSEFS
KiBzcGVjLCBpbnQgc3BlY0xlbmd0aCwgaW50IGFmdGVyU2NoZW1lLCBVUkxTZWdtZW50cyYgcGFy
c2VkKQotICAgIHsKLSAgICAgICAgaW50IG51bWJlck9mU2xhc2hlcyA9IGNvbnNlY3V0aXZlU2xh
c2hlcyhzcGVjLCBhZnRlclNjaGVtZSwgc3BlY0xlbmd0aCk7Ci0gICAgICAgIGludCBhZnRlclNs
YXNoZXMgPSBhZnRlclNjaGVtZSArIG51bWJlck9mU2xhc2hlczsKLQotICAgICAgICAvLyBGaXJz
dCBzcGxpdCBpbnRvIHR3byBtYWluIHBhcnRzLCB0aGUgYXV0aG9yaXR5ICh1c2VybmFtZSwgcGFz
c3dvcmQsCi0gICAgICAgIC8vIGhvc3QsIGFuZCBwb3J0KSBhbmQgdGhlIGZ1bGwgcGF0aCAocGF0
aCwgcXVlcnksIGFuZCByZWZlcmVuY2UpLgotICAgICAgICBVUkxDb21wb25lbnQgYXV0aG9yaXR5
OwotICAgICAgICBVUkxDb21wb25lbnQgZnVsbFBhdGg7Ci0KLSAgICAgICAgLy8gRm91bmQgIi8v
PHNvbWUgZGF0YT4iLCBsb29rcyBsaWtlIGFuIGF1dGhvcml0eSBzZWN0aW9uLiBUcmVhdAotICAg
ICAgICAvLyBldmVyeXRoaW5nIGZyb20gdGhlcmUgdG8gdGhlIG5leHQgc2xhc2ggKG9yIGVuZCBv
ZiBzcGVjKSB0byBiZSB0aGUKLSAgICAgICAgLy8gYXV0aG9yaXR5LiBOb3RlIHRoYXQgd2UgaWdu
b3JlIHRoZSBudW1iZXIgb2Ygc2xhc2hlcyBhbmQgdHJlYXQgaXQgYXMKLSAgICAgICAgLy8gdGhl
IGF1dGhvcml0eS4KLSAgICAgICAgaW50IGF1dGhFbmQgPSBuZXh0QXV0aG9yaXR5VGVybWluYXRv
cihzcGVjLCBhZnRlclNsYXNoZXMsIHNwZWNMZW5ndGgpOwotICAgICAgICBhdXRob3JpdHkgPSBV
UkxDb21wb25lbnQoYWZ0ZXJTbGFzaGVzLCBhdXRoRW5kIC0gYWZ0ZXJTbGFzaGVzKTsKLQotICAg
ICAgICBpZiAoYXV0aEVuZCA9PSBzcGVjTGVuZ3RoKSAvLyBObyBiZWdpbm5pbmcgb2YgcGF0aCBm
b3VuZC4KLSAgICAgICAgICAgIGZ1bGxQYXRoID0gVVJMQ29tcG9uZW50KCk7Ci0gICAgICAgIGVs
c2UgLy8gRXZlcnl0aGluZyBzdGFydGluZyBmcm9tIHRoZSBzbGFzaCB0byB0aGUgZW5kIGlzIHRo
ZSBwYXRoLgotICAgICAgICAgICAgZnVsbFBhdGggPSBVUkxDb21wb25lbnQoYXV0aEVuZCwgc3Bl
Y0xlbmd0aCAtIGF1dGhFbmQpOwotCi0gICAgICAgIC8vIE5vdyBwYXJzZSB0aG9zZSB0d28gc3Vi
LXBhcnRzLgotICAgICAgICBwYXJzZUF1dGhvcml0eShzcGVjLCBhdXRob3JpdHksIHBhcnNlZC51
c2VybmFtZSwgcGFyc2VkLnBhc3N3b3JkLCBwYXJzZWQuaG9zdCwgcGFyc2VkLnBvcnQpOwotICAg
ICAgICBwYXJzZVBhdGgoc3BlYywgZnVsbFBhdGgsIHBhcnNlZC5wYXRoLCBwYXJzZWQucXVlcnks
IHBhcnNlZC5mcmFnbWVudCk7Ci0gICAgfQotCi0gICAgLy8gVGhlIG1haW4gcGFyc2luZyBmdW5j
dGlvbiBmb3Igc3RhbmRhcmQgVVJMcy4gU3RhbmRhcmQgVVJMcyBoYXZlIGEgc2NoZW1lLAotICAg
IC8vIGhvc3QsIHBhdGgsIGV0Yy4KLSAgICBzdGF0aWMgdm9pZCBwYXJzZVN0YW5kYXJkVVJMKGNv
bnN0IENIQVIqIHNwZWMsIGludCBzcGVjTGVuZ3RoLCBVUkxTZWdtZW50cyYgcGFyc2VkKQotICAg
IHsKLSAgICAgICAgLy8gRklYTUU6IGFkZCBBU1NFUlQoc3BlY0xlbmd0aCA+PSAwKTsKLQotICAg
ICAgICAvLyBTdHJpcCBsZWFkaW5nICYgdHJhaWxpbmcgc3BhY2VzIGFuZCBjb250cm9sIGNoYXJh
Y3RlcnMuCi0gICAgICAgIGludCBiZWdpbiA9IDA7Ci0gICAgICAgIHRyaW1VUkwoc3BlYywgYmVn
aW4sIHNwZWNMZW5ndGgpOwotCi0gICAgICAgIGludCBhZnRlclNjaGVtZTsKLSAgICAgICAgaWYg
KGV4dHJhY3RTY2hlbWUoc3BlYywgc3BlY0xlbmd0aCwgcGFyc2VkLnNjaGVtZSkpCi0gICAgICAg
ICAgICBhZnRlclNjaGVtZSA9IHBhcnNlZC5zY2hlbWUuZW5kKCkgKyAxOyAvLyBTa2lwIHBhc3Qg
dGhlIGNvbG9uLgotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNheSB0aGVyZSdzIG5v
IHNjaGVtZSB3aGVuIHRoZXJlIGlzIGEgY29sb24uIFdlIGNvdWxkIGFsc28gc2F5Ci0gICAgICAg
ICAgICAvLyB0aGF0IGV2ZXJ5dGhpbmcgaXMgdGhlIHNjaGVtZS4gQm90aCB3b3VsZCBwcm9kdWNl
IGFuIGludmFsaWQKLSAgICAgICAgICAgIC8vIFVSTCwgYnV0IHRoaXMgd2F5IHNlZW1zIGxlc3Mg
d3JvbmcgaW4gbW9yZSBjYXNlcy4KLSAgICAgICAgICAgIHBhcnNlZC5zY2hlbWUucmVzZXQoKTsK
LSAgICAgICAgICAgIGFmdGVyU2NoZW1lID0gYmVnaW47Ci0gICAgICAgIH0KLSAgICAgICAgcGFy
c2VBZnRlclNjaGVtZShzcGVjLCBzcGVjTGVuZ3RoLCBhZnRlclNjaGVtZSwgcGFyc2VkKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBwYXJzZVBhdGgoY29uc3QgQ0hBUiogc3BlYywgY29uc3Qg
VVJMQ29tcG9uZW50JiBwYXRoLCBVUkxDb21wb25lbnQmIGZpbGVwYXRoLCBVUkxDb21wb25lbnQm
IHF1ZXJ5LCBVUkxDb21wb25lbnQmIGZyYWdtZW50KQotICAgIHsKLSAgICAgICAgLy8gcGF0aCA9
IFsvXTxzZWdtZW50MT4vPHNlZ21lbnQyPi88Li4uPi88c2VnbWVudE4+OzxwYXJhbT4/PHF1ZXJ5
PiM8ZnJhZ21lbnQ+Ci0KLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHdoZW4gdGhlcmUgaXMgbm8g
cGF0aC4KLSAgICAgICAgaWYgKCFwYXRoLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZmlsZXBh
dGgucmVzZXQoKTsKLSAgICAgICAgICAgIHF1ZXJ5LnJlc2V0KCk7Ci0gICAgICAgICAgICBmcmFn
bWVudC5yZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8v
IEZJWE1FOiBhZGQgQVNTRVJUKHBhdGgubGVuZ3RoKCkgPiAwKTsgLy8gV2Ugc2hvdWxkIG5ldmVy
IGhhdmUgMCBsZW5ndGggcGF0aHMuCi0KLSAgICAgICAgLy8gU2VhcmNoIGZvciBmaXJzdCBvY2N1
cnJlbmNlIG9mIGVpdGhlciA/IG9yICMuCi0gICAgICAgIGludCBwYXRoRW5kID0gcGF0aC5iZWdp
bigpICsgcGF0aC5sZW5ndGgoKTsKLQotICAgICAgICBpbnQgcXVlcnlTZXBhcmF0b3IgPSAtMTsg
Ly8gSW5kZXggb2YgdGhlICc/JwotICAgICAgICBpbnQgcmVmU2VwYXJhdG9yID0gLTE7IC8vIElu
ZGV4IG9mIHRoZSAnIycKLSAgICAgICAgZm9yIChpbnQgaSA9IHBhdGguYmVnaW4oKTsgaSA8IHBh
dGhFbmQ7IGkrKykgewotICAgICAgICAgICAgc3dpdGNoIChzcGVjW2ldKSB7Ci0gICAgICAgICAg
ICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBpZiAocXVlcnlTZXBhcmF0b3IgPCAwKQotICAg
ICAgICAgICAgICAgICAgICBxdWVyeVNlcGFyYXRvciA9IGk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICByZWZTZXBhcmF0b3Ig
PSBpOwotICAgICAgICAgICAgICAgIGkgPSBwYXRoRW5kOyAvLyBCcmVhayBvdXQgb2YgdGhlIGxv
b3AuCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
TWFya2VycyBwb2ludGluZyB0byB0aGUgY2hhcmFjdGVyIGFmdGVyIGVhY2ggb2YgdGhlc2UgY29y
cmVzcG9uZGluZwotICAgICAgICAvLyBjb21wb25lbnRzLiBUaGUgY29kZSBiZWxvdyB3b3JrcyBm
cm9tIHRoZSBlbmQgYmFjayB0byB0aGUgYmVnaW5uaW5nLAotICAgICAgICAvLyBhbmQgd2lsbCB1
cGRhdGUgdGhlc2UgaW5kaWNlcyBhcyBpdCBmaW5kcyBjb21wb25lbnRzIHRoYXQgZXhpc3QuCi0g
ICAgICAgIGludCBmaWxlRW5kLCBxdWVyeUVuZDsKLQotICAgICAgICAvLyBGcmFnbWVudDogZnJv
bSB0aGUgIyB0byB0aGUgZW5kIG9mIHRoZSBwYXRoLgotICAgICAgICBpZiAocmVmU2VwYXJhdG9y
ID49IDApIHsKLSAgICAgICAgICAgIGZpbGVFbmQgPSByZWZTZXBhcmF0b3I7Ci0gICAgICAgICAg
ICBxdWVyeUVuZCA9IHJlZlNlcGFyYXRvcjsKLSAgICAgICAgICAgIGZyYWdtZW50ID0gVVJMQ29t
cG9uZW50Ojpmcm9tUmFuZ2UocmVmU2VwYXJhdG9yICsgMSwgcGF0aEVuZCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBmaWxlRW5kID0gcGF0aEVuZDsKLSAgICAgICAgICAgIHF1ZXJ5
RW5kID0gcGF0aEVuZDsKLSAgICAgICAgICAgIGZyYWdtZW50LnJlc2V0KCk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBRdWVyeSBmcmFnbWVudDogZXZlcnl0aGluZyBmcm9tIHRoZSA/IHRvIHRo
ZSBuZXh0IGJvdW5kYXJ5IChlaXRoZXIKLSAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgcGF0aCBv
ciB0aGUgZnJhZ21lbnQgZnJhZ21lbnQpLgotICAgICAgICBpZiAocXVlcnlTZXBhcmF0b3IgPj0g
MCkgewotICAgICAgICAgICAgZmlsZUVuZCA9IHF1ZXJ5U2VwYXJhdG9yOwotICAgICAgICAgICAg
cXVlcnkgPSBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShxdWVyeVNlcGFyYXRvciArIDEsIHF1ZXJ5
RW5kKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBxdWVyeS5yZXNldCgpOwotCi0gICAg
ICAgIC8vIEZpbGUgcGF0aDogdHJlYXQgYW4gZW1wdHkgZmlsZSBwYXRoIGFzIG5vIGZpbGUgcGF0
aC4KLSAgICAgICAgaWYgKGZpbGVFbmQgIT0gcGF0aC5iZWdpbigpKQotICAgICAgICAgICAgZmls
ZXBhdGggPSBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShwYXRoLmJlZ2luKCksIGZpbGVFbmQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlcGF0aC5yZXNldCgpOwotICAgIH0KLQotICAg
IC8vIEluaXRpYWxpemVzIGEgcGF0aCBVUkwgd2hpY2ggaXMgbWVyZWx5IGEgc2NoZW1lIGZvbGxv
d2VkIGJ5IGEgcGF0aC4KLSAgICAvLyBFeGFtcGxlcyBpbmNsdWRlICJhYm91dDpmb28iIGFuZCAi
amF2YXNjcmlwdDphbGVydCgnYmFyJyk7IgotICAgIHN0YXRpYyB2b2lkIHBhcnNlUGF0aFVSTChj
b25zdCBDSEFSKiBzcGVjLCBpbnQgc3BlY0xlbmd0aCwgVVJMU2VnbWVudHMmIHBhcnNlZCkKLSAg
ICB7Ci0gICAgICAgIC8vIEdldCB0aGUgbm9uLXBhdGggYW5kIG5vbi1zY2hlbWUgcGFydHMgb2Yg
dGhlIFVSTCBvdXQgb2YgdGhlIHdheSwgd2UKLSAgICAgICAgLy8gbmV2ZXIgdXNlIHRoZW0uCi0g
ICAgICAgIHBhcnNlZC51c2VybmFtZS5yZXNldCgpOwotICAgICAgICBwYXJzZWQucGFzc3dvcmQu
cmVzZXQoKTsKLSAgICAgICAgcGFyc2VkLmhvc3QucmVzZXQoKTsKLSAgICAgICAgcGFyc2VkLnBv
cnQucmVzZXQoKTsKLSAgICAgICAgcGFyc2VkLnF1ZXJ5LnJlc2V0KCk7Ci0gICAgICAgIHBhcnNl
ZC5mcmFnbWVudC5yZXNldCgpOwotCi0gICAgICAgIC8vIFN0cmlwIGxlYWRpbmcgJiB0cmFpbGlu
ZyBzcGFjZXMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgLy8gRklYTUU6IFBlcmhh
cHMgdGhpcyBpcyB1bm5lY2Vzc2FyeT8KLSAgICAgICAgaW50IGJlZ2luID0gMDsKLSAgICAgICAg
dHJpbVVSTChzcGVjLCBiZWdpbiwgc3BlY0xlbmd0aCk7Ci0KLSAgICAgICAgLy8gSGFuZGxlIGVt
cHR5IHNwZWNzIG9yIG9uZXMgdGhhdCBjb250YWluIG9ubHkgd2hpdGVzcGFjZSBvciBjb250cm9s
Ci0gICAgICAgIC8vIGNoYXJzLgotICAgICAgICBpZiAoYmVnaW4gPT0gc3BlY0xlbmd0aCkgewot
ICAgICAgICAgICAgcGFyc2VkLnNjaGVtZS5yZXNldCgpOwotICAgICAgICAgICAgcGFyc2VkLnBh
dGgucmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEV4dHJhY3QgdGhlIHNjaGVtZSwgd2l0aCB0aGUgcGF0aCBiZWluZyBldmVyeXRoaW5nIGZvbGxv
d2luZy4gV2UgYWxzbwotICAgICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMg
bm8gc2NoZW1lLgotICAgICAgICBpZiAoZXh0cmFjdFNjaGVtZSgmc3BlY1tiZWdpbl0sIHNwZWNM
ZW5ndGggLSBiZWdpbiwgcGFyc2VkLnNjaGVtZSkpIHsKLSAgICAgICAgICAgIC8vIE9mZnNldCB0
aGUgcmVzdWx0cyBzaW5jZSB3ZSBnYXZlIGV4dHJhY3RTY2hlbWUgYSBzdWJzdHJpbmcuCi0gICAg
ICAgICAgICBwYXJzZWQuc2NoZW1lLnNldEJlZ2luKHBhcnNlZC5zY2hlbWUuYmVnaW4oKSArIGJl
Z2luKTsKLQotICAgICAgICAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3RhbmRh
cmQgVVJMIHBhcnNlciwgd2UgdHJlYXQgbm8gcGF0aAotICAgICAgICAgICAgLy8gYXMgLTEsIHJh
dGhlciB0aGFuIGhhdmluZyBhIGxlbmd0aCBvZiAwICh3ZSBub3JtYWxseSB3b3VsZG4ndAotICAg
ICAgICAgICAgLy8gY2FyZSBzbyBtdWNoIGZvciB0aGVzZSBub24tc3RhbmRhcmQgVVJMcykuCi0g
ICAgICAgICAgICBpZiAocGFyc2VkLnNjaGVtZS5lbmQoKSA9PSBzcGVjTGVuZ3RoIC0gMSkKLSAg
ICAgICAgICAgICAgICBwYXJzZWQucGF0aC5yZXNldCgpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHBhcnNlZC5wYXRoID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFuZ2UocGFyc2Vk
LnNjaGVtZS5lbmQoKSArIDEsIHNwZWNMZW5ndGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgLy8gTm8gc2NoZW1lIGZvdW5kLCBqdXN0IHBhdGguCi0gICAgICAgICAgICBwYXJzZWQu
c2NoZW1lLnJlc2V0KCk7Ci0gICAgICAgICAgICBwYXJzZWQucGF0aCA9IFVSTENvbXBvbmVudDo6
ZnJvbVJhbmdlKGJlZ2luLCBzcGVjTGVuZ3RoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHBhcnNlTWFpbHRvVVJMKGNvbnN0IENIQVIqIHNwZWMsIGludCBzcGVjTGVuZ3Ro
LCBVUkxTZWdtZW50cyYgcGFyc2VkKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IGFkZCBBU1NF
UlQoc3BlY0xlbmd0aCA+PSAwKTsKLQotICAgICAgICAvLyBHZXQgdGhlIG5vbi1wYXRoIGFuZCBu
b24tc2NoZW1lIHBhcnRzIG9mIHRoZSBVUkwgb3V0IG9mIHRoZSB3YXksIHdlCi0gICAgICAgIC8v
IG5ldmVyIHVzZSB0aGVtLgotICAgICAgICBwYXJzZWQudXNlcm5hbWUucmVzZXQoKTsKLSAgICAg
ICAgcGFyc2VkLnBhc3N3b3JkLnJlc2V0KCk7Ci0gICAgICAgIHBhcnNlZC5ob3N0LnJlc2V0KCk7
Ci0gICAgICAgIHBhcnNlZC5wb3J0LnJlc2V0KCk7Ci0gICAgICAgIHBhcnNlZC5mcmFnbWVudC5y
ZXNldCgpOwotICAgICAgICBwYXJzZWQucXVlcnkucmVzZXQoKTsgLy8gTWF5IHVzZSB0aGlzOyBy
ZXNldCBmb3IgY29udmVuaWVuY2UuCi0KLSAgICAgICAgLy8gU3RyaXAgbGVhZGluZyAmIHRyYWls
aW5nIHNwYWNlcyBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgotICAgICAgICBpbnQgYmVnaW4gPSAw
OwotICAgICAgICB0cmltVVJMKHNwZWMsIGJlZ2luLCBzcGVjTGVuZ3RoKTsKLQotICAgICAgICAv
LyBIYW5kbGUgZW1wdHkgc3BlY3Mgb3Igb25lcyB0aGF0IGNvbnRhaW4gb25seSB3aGl0ZXNwYWNl
IG9yIGNvbnRyb2wKLSAgICAgICAgLy8gY2hhcnMuCi0gICAgICAgIGlmIChiZWdpbiA9PSBzcGVj
TGVuZ3RoKSB7Ci0gICAgICAgICAgICBwYXJzZWQuc2NoZW1lLnJlc2V0KCk7Ci0gICAgICAgICAg
ICBwYXJzZWQucGF0aC5yZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaW50IHBhdGhCZWdpbiA9IC0xOwotICAgICAgICBpbnQgcGF0aEVuZCA9IC0xOwot
Ci0gICAgICAgIC8vIEV4dHJhY3QgdGhlIHNjaGVtZSwgd2l0aCB0aGUgcGF0aCBiZWluZyBldmVy
eXRoaW5nIGZvbGxvd2luZy4gV2UgYWxzbwotICAgICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hl
cmUgdGhlcmUgaXMgbm8gc2NoZW1lLgotICAgICAgICBpZiAoZXh0cmFjdFNjaGVtZSgmc3BlY1ti
ZWdpbl0sIHNwZWNMZW5ndGggLSBiZWdpbiwgcGFyc2VkLnNjaGVtZSkpIHsKLSAgICAgICAgICAg
IC8vIE9mZnNldCB0aGUgcmVzdWx0cyBzaW5jZSB3ZSBnYXZlIGV4dHJhY3RTY2hlbWUgYSBzdWJz
dHJpbmcuCi0gICAgICAgICAgICBwYXJzZWQuc2NoZW1lLnNldEJlZ2luKHBhcnNlZC5zY2hlbWUu
YmVnaW4oKSArIGJlZ2luKTsKLQotICAgICAgICAgICAgaWYgKHBhcnNlZC5zY2hlbWUuZW5kKCkg
IT0gc3BlY0xlbmd0aCAtIDEpIHsKLSAgICAgICAgICAgICAgICBwYXRoQmVnaW4gPSBwYXJzZWQu
c2NoZW1lLmVuZCgpICsgMTsKLSAgICAgICAgICAgICAgICBwYXRoRW5kID0gc3BlY0xlbmd0aDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5vIHNjaGVt
ZSBmb3VuZCwganVzdCBwYXRoLgotICAgICAgICAgICAgcGFyc2VkLnNjaGVtZS5yZXNldCgpOwot
ICAgICAgICAgICAgcGF0aEJlZ2luID0gYmVnaW47Ci0gICAgICAgICAgICBwYXRoRW5kID0gc3Bl
Y0xlbmd0aDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNwbGl0IFtwYXRoQmVnaW4sIHBhdGhF
bmQpIGludG8gYSBwYXRoICsgcXVlcnkuCi0gICAgICAgIGZvciAoaW50IGkgPSBwYXRoQmVnaW47
IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChzcGVjW2ldID09ICc/Jykgewot
ICAgICAgICAgICAgICAgIHBhcnNlZC5xdWVyeSA9IFVSTENvbXBvbmVudDo6ZnJvbVJhbmdlKGkg
KyAxLCBwYXRoRW5kKTsKLSAgICAgICAgICAgICAgICBwYXRoRW5kID0gaTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBj
b21wYXRpYmlsaXR5IHdpdGggdGhlIHN0YW5kYXJkIFVSTCBwYXJzZXIsIHRyZWF0IG5vIHBhdGgg
YXMKLSAgICAgICAgLy8gLTEsIHJhdGhlciB0aGFuIGhhdmluZyBhIGxlbmd0aCBvZiAwCi0gICAg
ICAgIGlmIChwYXRoQmVnaW4gPT0gcGF0aEVuZCkKLSAgICAgICAgICAgIHBhcnNlZC5wYXRoLnJl
c2V0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcnNlZC5wYXRoID0gVVJMQ29tcG9u
ZW50Ojpmcm9tUmFuZ2UocGF0aEJlZ2luLCBwYXRoRW5kKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
aW50IHBhcnNlUG9ydChjb25zdCBDSEFSKiBzcGVjLCBjb25zdCBVUkxDb21wb25lbnQmIGNvbXBv
bmVudCkKLSAgICB7Ci0gICAgICAgIC8vIEVhc3kgc3VjY2VzcyBjYXNlIHdoZW4gdGhlcmUgaXMg
bm8gcG9ydC4KLSAgICAgICAgY29uc3QgaW50IG1heERpZ2l0cyA9IDU7Ci0gICAgICAgIGlmIChj
b21wb25lbnQuaXNFbXB0eU9ySW52YWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIFVuc3BlY2lm
aWVkUG9ydDsKLQotICAgICAgICBVUkxDb21wb25lbnQgbm9uWmVyb0RpZ2l0cyhjb21wb25lbnQu
ZW5kKCksIDApOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbXBvbmVudC5sZW5ndGgo
KTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc3BlY1tjb21wb25lbnQuYmVnaW4oKSArIGldICE9
ICcwJykgewotICAgICAgICAgICAgICAgIG5vblplcm9EaWdpdHMgPSBVUkxDb21wb25lbnQ6OmZy
b21SYW5nZShjb21wb25lbnQuYmVnaW4oKSArIGksIGNvbXBvbmVudC5lbmQoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFu
b25aZXJvRGlnaXRzLmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7IC8vIEFsbCBkaWdp
dHMgd2VyZSAwLgotCi0gICAgICAgIGlmIChub25aZXJvRGlnaXRzLmxlbmd0aCgpID4gbWF4RGln
aXRzKQotICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQb3J0OwotCi0gICAgICAgIGludCBwb3J0
ID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBub25aZXJvRGlnaXRzLmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgICAgIENIQVIgY2ggPSBzcGVjW25vblplcm9EaWdpdHMuYmVnaW4o
KSArIGldOwotICAgICAgICAgICAgaWYgKCFpc1BvcnREaWdpdChjaCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIEludmFsaWRQb3J0OwotICAgICAgICAgICAgcG9ydCAqPSAxMDsKLSAgICAgICAg
ICAgIHBvcnQgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oY2gpIC0gJzAnOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChwb3J0ID4gNjU1MzUpCi0gICAgICAgICAgICByZXR1cm4gSW52YWxpZFBvcnQ7Ci0g
ICAgICAgIHJldHVybiBwb3J0OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGV4dHJhY3RGaWxl
TmFtZShjb25zdCBDSEFSKiBzcGVjLCBjb25zdCBVUkxDb21wb25lbnQmIHBhdGgsIFVSTENvbXBv
bmVudCYgZmlsZU5hbWUpCi0gICAgewotICAgICAgICAvLyBIYW5kbGUgZW1wdHkgcGF0aHM6IHRo
ZXkgaGF2ZSBubyBmaWxlIG5hbWVzLgotICAgICAgICBpZiAocGF0aC5pc0VtcHR5T3JJbnZhbGlk
KCkpIHsKLSAgICAgICAgICAgIGZpbGVOYW1lLnJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTZWFyY2ggYmFja3dhcmRzIGZvciBhIHBhcmFtZXRl
ciwgd2hpY2ggaXMgYSBub3JtYWxseSB1bnVzZWQgZmllbGQKLSAgICAgICAgLy8gaW4gYSBVUkwg
ZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uLiBXZSBwYXJzZSB0aGUgcGFyYW1ldGVyIGFzIHBhcnQg
b2YKLSAgICAgICAgLy8gdGhlIHBhdGgsIGJ1dCBoZXJlLCB3ZSBkb24ndCB3YW50IHRvIGNvdW50
IGl0LiBUaGUgbGFzdCBzZW1pY29sb24gaXMKLSAgICAgICAgLy8gdGhlIHBhcmFtZXRlci4KLSAg
ICAgICAgaW50IGZpbGVFbmQgPSBwYXRoLmVuZCgpOwotICAgICAgICBmb3IgKGludCBpID0gcGF0
aC5lbmQoKSAtIDE7IGkgPiBwYXRoLmJlZ2luKCk7IC0taSkgewotICAgICAgICAgICAgaWYgKHNw
ZWNbaV0gPT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgZmlsZUVuZCA9IGk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOb3cg
c2VhcmNoIGJhY2t3YXJkcyBmcm9tIHRoZSBmaWxlbmFtZSBlbmQgdG8gdGhlIHByZXZpb3VzIHNs
YXNoCi0gICAgICAgIC8vIHRvIGZpbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZW5hbWUuCi0g
ICAgICAgIGZvciAoaW50IGkgPSBmaWxlRW5kIC0gMTsgaSA+PSBwYXRoLmJlZ2luKCk7IC0taSkg
ewotICAgICAgICAgICAgaWYgKGlzVVJMU2xhc2goc3BlY1tpXSkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBGaWxlIG5hbWUgaXMgZXZlcnl0aGluZyBmb2xsb3dpbmcgdGhpcyBjaGFyYWN0ZXIgdG8g
dGhlIGVuZAotICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFu
Z2UoaSArIDEsIGZpbGVFbmQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5vIHNsYXNoIGZvdW5kLCB0aGlzIG1lYW5zIHRo
ZSBpbnB1dCB3YXMgZGVnZW5lcmF0ZSAoZ2VuZXJhbGx5IHBhdGhzCi0gICAgICAgIC8vIHdpbGwg
c3RhcnQgd2l0aCBhIHNsYXNoKS4gTGV0J3MgY2FsbCBldmVyeXRoaW5nIHRoZSBmaWxlIG5hbWUu
Ci0gICAgICAgIGZpbGVOYW1lID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFuZ2UocGF0aC5iZWdpbigp
LCBmaWxlRW5kKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBleHRyYWN0UXVlcnlLZXlWYWx1
ZShjb25zdCBDSEFSKiBzcGVjLCBVUkxDb21wb25lbnQmIHF1ZXJ5LCBVUkxDb21wb25lbnQmIGtl
eSwgVVJMQ29tcG9uZW50JiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChxdWVyeS5pc0VtcHR5
T3JJbnZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaW50IHN0
YXJ0ID0gcXVlcnkuYmVnaW4oKTsKLSAgICAgICAgaW50IGN1cnJlbnQgPSBzdGFydDsKLSAgICAg
ICAgaW50IGVuZCA9IHF1ZXJ5LmVuZCgpOwotCi0gICAgICAgIC8vIFdlIGFzc3VtZSB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBpbnB1dCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSAia2V5IgotICAgICAg
ICAvLyBhbmQgd2Ugc2tpcCB0byB0aGUgZW5kIG9mIGl0LgotICAgICAgICBrZXkuc2V0QmVnaW4o
Y3VycmVudCk7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50IDwgZW5kICYmIHNwZWNbY3VycmVudF0g
IT0gJyYnICYmIHNwZWNbY3VycmVudF0gIT0gJz0nKQotICAgICAgICAgICAgKytjdXJyZW50Owot
ICAgICAgICBrZXkuc2V0TGVuZ3RoKGN1cnJlbnQgLSBrZXkuYmVnaW4oKSk7Ci0KLSAgICAgICAg
Ly8gU2tpcCB0aGUgc2VwYXJhdG9yIGFmdGVyIHRoZSBrZXkgKGlmIGFueSkuCi0gICAgICAgIGlm
IChjdXJyZW50IDwgZW5kICYmIHNwZWNbY3VycmVudF0gPT0gJz0nKQotICAgICAgICAgICAgKytj
dXJyZW50OwotCi0gICAgICAgIC8vIEZpbmQgdGhlIHZhbHVlIHBhcnQuCi0gICAgICAgIHZhbHVl
LnNldEJlZ2luKGN1cnJlbnQpOwotICAgICAgICB3aGlsZSAoY3VycmVudCA8IGVuZCAmJiBzcGVj
W2N1cnJlbnRdICE9ICcmJykKLSAgICAgICAgICAgICsrY3VycmVudDsKLSAgICAgICAgdmFsdWUu
c2V0TGVuZ3RoKGN1cnJlbnQgLSB2YWx1ZS5iZWdpbigpKTsKLQotICAgICAgICAvLyBGaW5hbGx5
IHNraXAgdGhlIG5leHQgc2VwYXJhdG9yIGlmIGFueQotICAgICAgICBpZiAoY3VycmVudCA8IGVu
ZCAmJiBzcGVjW2N1cnJlbnRdID09ICcmJykKLSAgICAgICAgICAgICsrY3VycmVudDsKLQotICAg
ICAgICAvLyBTYXZlIHRoZSBuZXcgcXVlcnkKLSAgICAgICAgcXVlcnkgPSBVUkxDb21wb25lbnQ6
OmZyb21SYW5nZShjdXJyZW50LCBlbmQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LS8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwcm90ZWN0ZWQgb3IgcHJpdmF0ZS4KLXB1YmxpYzoK
LSAgICAvLyBXZSB0cmVhdCBzbGFzaGVzIGFuZCBiYWNrc2xhc2hlcyB0aGUgc2FtZSBmb3IgSUUg
Y29tcGF0aWJpbGl0eS4KLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNVUkxTbGFzaChDSEFSIGNo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNoID09ICcvJyB8fCBjaCA9PSAnXFwnOwotICAgIH0K
LQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdHJpbSB0aGlzIGNoYXJhY3RlciBm
cm9tIHRoZSBVUkwgYmVjYXVzZSBpdCBpcwotICAgIC8vIGEgc3BhY2Ugb3IgYSBjb250cm9sIGNo
YXJhY3Rlci4KLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoQ0hBUiBj
aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjaCA8PSAnICc7Ci0gICAgfQotCi0gICAgLy8gR2l2
ZW4gYW4gYWxyZWFkeS1pbml0aWFsaXplZCBiZWdpbiBpbmRleCBhbmQgZW5kIGluZGV4ICh0aGUg
aW5kZXggYWZ0ZXIKLSAgICAvLyB0aGUgbGFzdCBDSEFSIGluIHNwZWMpLCB0aGlzIHNocmlua3Mg
dGhlIHJhbmdlIHRvIGVsaW1pbmF0ZQotICAgIC8vICJzaG91bGQtYmUtdHJpbW1lZCIgY2hhcmFj
dGVycy4KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgdHJpbVVSTChjb25zdCBDSEFSKiBzcGVjLCBp
bnQmIGJlZ2luLCBpbnQmIGVuZCkKLSAgICB7Ci0gICAgICAgIC8vIFN0cmlwIGxlYWRpbmcgd2hp
dGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgotICAgICAgICB3aGlsZSAoYmVnaW4gPCBl
bmQgJiYgc2hvdWxkVHJpbUZyb21VUkwoc3BlY1tiZWdpbl0pKQotICAgICAgICAgICAgKytiZWdp
bjsKLQotICAgICAgICAvLyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNo
YXJhY3RlcnMuIFdlIG5lZWQgdGhlID5pCi0gICAgICAgIC8vIHRlc3QgZm9yIHdoZW4gdGhlIGlu
cHV0IHN0cmluZyBpcyBhbGwgYmxhbmtzOyB3ZSBkb24ndCB3YW50IHRvIGJhY2sKLSAgICAgICAg
Ly8gcGFzdCB0aGUgaW5wdXQuCi0gICAgICAgIHdoaWxlIChlbmQgPiBiZWdpbiAmJiBzaG91bGRU
cmltRnJvbVVSTChzcGVjW2VuZCAtIDFdKSkKLSAgICAgICAgICAgIC0tZW5kOwotICAgIH0KLQot
ICAgIC8vIENvdW50cyB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIHNsYXNoZXMgc3RhcnRpbmcg
YXQgdGhlIGdpdmVuIG9mZnNldAotICAgIC8vIGluIHRoZSBnaXZlbiBzdHJpbmcgb2YgdGhlIGdp
dmVuIGxlbmd0aC4KLSAgICBzdGF0aWMgaW5saW5lIGludCBjb25zZWN1dGl2ZVNsYXNoZXMoY29u
c3QgQ0hBUiAqc3RyaW5nLCBpbnQgYmVnaW5PZmZzZXQsIGludCBzdHJpbmdMZW5ndGgpCi0gICAg
ewotICAgICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYmVnaW5PZmZzZXQgKyBj
b3VudCA8IHN0cmluZ0xlbmd0aCAmJiBpc1VSTFNsYXNoKHN0cmluZ1tiZWdpbk9mZnNldCArIGNv
dW50XSkpCi0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIC8vIFVSTFBhcnNlciBjYW5ub3QgYmUgY29uc3RydWN0ZWQuCi0g
ICAgVVJMUGFyc2VyKCk7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNoYXJh
Y3RlciBpcyBhIHZhbGlkIGRpZ2l0IHRvIHVzZSBpbiBhIHBvcnQuCi0gICAgc3RhdGljIGlubGlu
ZSBib29sIGlzUG9ydERpZ2l0KENIQVIgY2gpCi0gICAgewotICAgICAgICByZXR1cm4gY2ggPj0g
JzAnICYmIGNoIDw9ICc5JzsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2Yg
dGhlIG5leHQgYXV0aG9yaXR5IHRlcm1pbmF0b3IgaW4gdGhlIGlucHV0IHN0YXJ0aW5nCi0gICAg
Ly8gZnJvbSBzdGFydE9mZnNldC4gSWYgbm8gdGVybWluYXRvciBpcyBmb3VuZCwgdGhlIHJldHVy
biB2YWx1ZSB3aWxsIGJlIGVxdWFsCi0gICAgLy8gdG8gc3BlY0xlbmd0aC4KLSAgICBzdGF0aWMg
aW50IG5leHRBdXRob3JpdHlUZXJtaW5hdG9yKGNvbnN0IENIQVIqIHNwZWMsIGludCBzdGFydE9m
ZnNldCwgaW50IHNwZWNMZW5ndGgpCi0gICAgewotICAgICAgICBmb3IgKGludCBpID0gc3RhcnRP
ZmZzZXQ7IGkgPCBzcGVjTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChpc1Bvc3NpYmxl
QXV0aG9yaXR5VGVybWluYXRvcihzcGVjW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3BlY0xlbmd0aDsgLy8gTm90IGZvdW5kLgotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHBhcnNlVXNlckluZm8oY29uc3QgQ0hBUiogc3BlYywgY29u
c3QgVVJMQ29tcG9uZW50JiB1c2VyLCBVUkxDb21wb25lbnQmIHVzZXJuYW1lLCBVUkxDb21wb25l
bnQmIHBhc3N3b3JkKQotICAgIHsKLSAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgY29sb24gaW4g
dGhlIHVzZXIgc2VjdGlvbiwgd2hpY2ggc2VwYXJhdGVzIHRoZQotICAgICAgICAvLyB1c2VybmFt
ZSBhbmQgcGFzc3dvcmQuCi0gICAgICAgIGludCBjb2xvbk9mZnNldCA9IDA7Ci0gICAgICAgIHdo
aWxlIChjb2xvbk9mZnNldCA8IHVzZXIubGVuZ3RoKCkgJiYgc3BlY1t1c2VyLmJlZ2luKCkgKyBj
b2xvbk9mZnNldF0gIT0gJzonKQotICAgICAgICAgICAgKytjb2xvbk9mZnNldDsKLQotICAgICAg
ICBpZiAoY29sb25PZmZzZXQgPCB1c2VyLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAvLyBGb3Vu
ZCBzZXBhcmF0b3I6IDx1c2VybmFtZT46PHBhc3N3b3JkPgotICAgICAgICAgICAgdXNlcm5hbWUg
PSBVUkxDb21wb25lbnQodXNlci5iZWdpbigpLCBjb2xvbk9mZnNldCk7Ci0gICAgICAgICAgICBw
YXNzd29yZCA9IFVSTENvbXBvbmVudDo6ZnJvbVJhbmdlKHVzZXIuYmVnaW4oKSArIGNvbG9uT2Zm
c2V0ICsgMSwgdXNlci5iZWdpbigpICsgdXNlci5sZW5ndGgoKSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBObyBzZXBhcmF0b3IsIHRyZWF0IGV2ZXJ5dGhpbmcgYXMgdGhlIHVz
ZXJuYW1lCi0gICAgICAgICAgICB1c2VybmFtZSA9IHVzZXI7Ci0gICAgICAgICAgICBwYXNzd29y
ZCA9IFVSTENvbXBvbmVudCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
cGFyc2VTZXJ2ZXJJbmZvKGNvbnN0IENIQVIqIHNwZWMsIGNvbnN0IFVSTENvbXBvbmVudCYgc2Vy
dmVySW5mbywgVVJMQ29tcG9uZW50JiBob3N0LCBVUkxDb21wb25lbnQmIHBvcnQpCi0gICAgewot
ICAgICAgICBpZiAoIXNlcnZlckluZm8ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIC8vIE5vIHNl
cnZlciBpbmZvLCBob3N0IG5hbWUgaXMgZW1wdHkuCi0gICAgICAgICAgICBob3N0LnJlc2V0KCk7
Ci0gICAgICAgICAgICBwb3J0LnJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBJZiB0aGUgaG9zdCBzdGFydHMgd2l0aCBhIGxlZnQtYnJhY2tldCwg
YXNzdW1lIHRoZSBlbnRpcmUgaG9zdCBpcyBhbgotICAgICAgICAvLyBJUHY2IGxpdGVyYWwuICBP
dGhlcndpc2UsIGFzc3VtZSBub25lIG9mIHRoZSBob3N0IGlzIGFuIElQdjYgbGl0ZXJhbC4KLSAg
ICAgICAgLy8gVGhpcyBhc3N1bXB0aW9uIHdpbGwgYmUgb3ZlcnJpZGRlbiBpZiB3ZSBmaW5kIGEg
cmlnaHQtYnJhY2tldC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gT3VyIElQdjYgYWRkcmVzcyBj
YW5vbmljYWxpemF0aW9uIGNvZGUgcmVxdWlyZXMgYm90aCBicmFja2V0cyB0bwotICAgICAgICAv
LyBleGlzdCwgYnV0IHRoZSBhYmlsaXR5IHRvIGxvY2F0ZSBhbiBpbmNvbXBsZXRlIGFkZHJlc3Mg
Y2FuIHN0aWxsIGJlCi0gICAgICAgIC8vIHVzZWZ1bC4KLSAgICAgICAgaW50IGlwdjZUZXJtaW5h
dG9yID0gc3BlY1tzZXJ2ZXJJbmZvLmJlZ2luKCldID09ICdbJyA/IHNlcnZlckluZm8uZW5kKCkg
OiAtMTsKLSAgICAgICAgaW50IGNvbG9uID0gLTE7Ci0KLSAgICAgICAgLy8gRmluZCB0aGUgbGFz
dCByaWdodC1icmFja2V0LCBhbmQgdGhlIGxhc3QgY29sb24uCi0gICAgICAgIGZvciAoaW50IGkg
PSBzZXJ2ZXJJbmZvLmJlZ2luKCk7IGkgPCBzZXJ2ZXJJbmZvLmVuZCgpOyBpKyspIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoc3BlY1tpXSkgewotICAgICAgICAgICAgY2FzZSAnXSc6Ci0gICAgICAg
ICAgICAgICAgaXB2NlRlcm1pbmF0b3IgPSBpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSAnOic6Ci0gICAgICAgICAgICAgICAgY29sb24gPSBpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb2xvbiA+IGlwdjZU
ZXJtaW5hdG9yKSB7Ci0gICAgICAgICAgICAvLyBGb3VuZCBhIHBvcnQgbnVtYmVyOiA8aG9zdG5h
bWU+Ojxwb3J0PgotICAgICAgICAgICAgaG9zdCA9IFVSTENvbXBvbmVudDo6ZnJvbVJhbmdlKHNl
cnZlckluZm8uYmVnaW4oKSwgY29sb24pOwotICAgICAgICAgICAgaWYgKCFob3N0Lmxlbmd0aCgp
KQotICAgICAgICAgICAgICAgIGhvc3QucmVzZXQoKTsKLSAgICAgICAgICAgIHBvcnQgPSBVUkxD
b21wb25lbnQ6OmZyb21SYW5nZShjb2xvbiArIDEsIHNlcnZlckluZm8uZW5kKCkpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm8gcG9ydDogPGhvc3RuYW1lPgotICAgICAgICAg
ICAgaG9zdCA9IHNlcnZlckluZm87Ci0gICAgICAgICAgICBwb3J0LnJlc2V0KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVSTFBhcnNl
cl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMUXVlcnlDYW5v
bmljYWxpemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwv
c3JjL1VSTFF1ZXJ5Q2Fub25pY2FsaXplci5oCShyZXZpc2lvbiA4Njc4MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxRdWVyeUNhbm9uaWNhbGl6ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMDcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotI2lmbmRlZiBVUkxRdWVyeUNhbm9uaWNhbGl6ZXJfaAotI2RlZmluZSBV
UkxRdWVyeUNhbm9uaWNhbGl6ZXJfaAotCi0jaW5jbHVkZSAiUmF3VVJMQnVmZmVyLmgiCi0jaW5j
bHVkZSAiVVJMQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMQ2hhcmFjdGVyVHlwZXMuaCIKLSNpbmNs
dWRlICJVUkxDb21wb25lbnQuaCIKLSNpbmNsdWRlICJVUkxFc2NhcGUuaCIKLQotbmFtZXNwYWNl
IFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEluQ2hhciwgdHlwZW5hbWUgT3V0Q2hhciwgdm9p
ZCBjb252ZXJ0Q2hhcnNldChjb25zdCBJbkNoYXIqLCBpbnQgbGVuZ3RoLCBVUkxCdWZmZXI8Y2hh
cj4mKT4KLWNsYXNzIFVSTFF1ZXJ5Q2Fub25pY2FsaXplciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgY2Fub25pY2FsaXplKGNvbnN0IEluQ2hhciogc3BlYywgY29uc3QgVVJMQ29tcG9uZW50
JiBxdWVyeSwgVVJMQnVmZmVyPE91dENoYXI+JiBidWZmZXIsIFVSTENvbXBvbmVudCYgcmVzdWx0
UXVlcnkpCi0gICAgewotICAgICAgICBpZiAocXVlcnkubGVuZ3RoKCkgPCAwKSB7Ci0gICAgICAg
ICAgICByZXN1bHRRdWVyeSA9IFVSTENvbXBvbmVudCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoJz8nKTsKLSAgICAgICAgcmVzdWx0
UXVlcnkuc2V0QmVnaW4oYnVmZmVyLT5sZW5ndGgoKSk7Ci0gICAgICAgIGNvbnZlcnRUb1F1ZXJ5
RW5jb2Rpbmcoc3BlYywgcXVlcnksIGJ1ZmZlcik7Ci0gICAgICAgIHJlc3VsdFF1ZXJ5LnNldExl
bmd0aChidWZmZXItPmxlbmd0aCgpIC0gcmVzdWx0UXVlcnkuYmVnaW4oKSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIHN0YXRpYyBib29sIGlzQWxsQVNDSUkoY29uc3QgSW5DaGFyKiBzcGVjLCBj
b25zdCBVUkxDb21wb25lbnQmIHF1ZXJ5KQotICAgIHsKLSAgICAgICAgaW50IGVuZCA9IHF1ZXJ5
LmVuZCgpOwotICAgICAgICBmb3IgKGludCBpID0gcXVlcnkuYmVnaW4oKTsgaSA8IGVuZDsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNwZWNbaV0pID49IDB4
ODApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBzdGF0aWMgYm9vbCBpc1Jh
dzhCaXQoY29uc3QgSW5DaGFyKiBzb3VyY2UsIGludCBsZW5ndGgpCi0gICAgewotICAgICAgICBm
b3IgKGludCBpID0gc291cmNlOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChz
b3VyY2VbaV0gJiAweEZGICE9IHNvdXJjZVtpXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICBzdGF0aWMgdm9pZCBhcHBlbmRSYXc4Qml0UXVlcnlTdHJpbmcoY29uc3QgSW5DaGFyKiBzb3Vy
Y2UsIGludCBsZW5ndGgsIFVSTEJ1ZmZlcjxPdXRDaGFyPiogYnVmZmVyKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGlzUmF3OEJpdChzb3VyY2UsIGxlbmd0aCkpOwotICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIVVSTENoYXJhY3RlclR5
cGVzOjppc1F1ZXJ5Q2hhcihzb3VyY2VbaV0pKQotICAgICAgICAgICAgICAgIGFwcGVuZFVSTEVz
Y2FwZWRDaGFyYWN0ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc291cmNlW2ldKSwgYnVm
ZmVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChz
dGF0aWNfY2FzdDxjaGFyPihzb3VyY2VbaV0pKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIGNvbnZlcnRUb1F1ZXJ5RW5jb2RpbmcoY29uc3QgSW5DaGFyKiBzcGVjLCBjb25z
dCBVUkxDb21wb25lbnQmIHF1ZXJ5LCBVUkxCdWZmZXI8T3V0Q2hhcj4mIGJ1ZmZlcikKLSAgICB7
Ci0gICAgICAgIGlmIChpc0FsbEFTQ0lJKHNwZWMsIHF1ZXJ5KSkgewotICAgICAgICAgICAgYXBw
ZW5kUmF3OEJpdFF1ZXJ5U3RyaW5nKCZzcGVjW3F1ZXJ5LmJlZ2luKCldLCBxdWVyeS5sZW5ndGgo
KSwgYnVmZmVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJh
d1VSTEJ1ZmZlcjxjaGFyLCAxMDI0PiBjb252ZXJ0ZWRRdWVyeTsKLSAgICAgICAgY29udmVydENo
YXJzZXQoc3BlYywgcXVlcnksIGNvbnZlcnRlZFF1ZXJ5KTsKLSAgICAgICAgYXBwZW5kUmF3OEJp
dFF1ZXJ5U3RyaW5nKGNvbnZlcnRlZFF1ZXJ5LmRhdGEoKSwgY29udmVydGVkUXVlcnkubGVuZ3Ro
KCksIGJ1ZmZlcik7Ci0gICAgfQotfTsKLQotfQotCi0jZW5kaWYKLQotCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMU2VnbWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAJKHJldmlz
aW9uIDg2NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTFNlZ21l
bnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTAgKzAsMCBAQAotLyogQmFzZWQgb24gbnNV
UkxQYXJzZXJzLmNjIGZyb20gTW96aWxsYQotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotICogQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNjYXBlIENvbW11bmljYXRpb25z
IENvcnBvcmF0aW9uLgotICoKLSAqIE90aGVyIGNvbnRyaWJ1dG9yczoKLSAqICAgRGFyaW4gRmlz
aGVyIChvcmlnaW5hbCBhdXRob3IpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBBbHRlcm5hdGl2
ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJt
cwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBm
b3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0
dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BMIiksIGluIHdo
aWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQotICogYXBw
bGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNl
IG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9m
IG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBu
b3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQotICogZGVsZXRpbmd0aGUg
cHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKLSAq
IG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUg
Y2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92
ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRl
ciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiVVJMU2VnbWVudHMuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LWludCBVUkxTZWdtZW50czo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICBpZiAoZnJhZ21lbnQuaXNW
YWxpZCgpKQotICAgICAgICByZXR1cm4gZnJhZ21lbnQuZW5kKCk7Ci0gICAgcmV0dXJuIGNoYXJh
Y3RlcnNCZWZvcmUoRnJhZ21lbnQsIGZhbHNlKTsKLX0KLQotaW50IFVSTFNlZ21lbnRzOjpjaGFy
YWN0ZXJzQmVmb3JlKENvbXBvbmVudFR5cGUgdHlwZSwgYm9vbCBpbmNsdWRlRGVsaW1pdGVyKSBj
b25zdAotewotICAgIGlmICh0eXBlID09IFNjaGVtZSkKLSAgICAgICAgcmV0dXJuIHNjaGVtZS5i
ZWdpbigpOwotCi0gICAgaW50IGN1cnJlbnQgPSAwOwotICAgIGlmIChzY2hlbWUuaXNWYWxpZCgp
KQotICAgICAgICBjdXJyZW50ID0gc2NoZW1lLmVuZCgpICsgMTsgLy8gQWR2YW5jZSBvdmVyIHRo
ZSAnOicgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZW1lLgotCi0gICAgaWYgKHVzZXJuYW1lLmlzVmFs
aWQoKSkgewotICAgICAgICBpZiAodHlwZSA8PSBVc2VybmFtZSkKLSAgICAgICAgICAgIHJldHVy
biB1c2VybmFtZS5iZWdpbigpOwotICAgICAgICBjdXJyZW50ID0gdXNlcm5hbWUuZW5kKCkgKyAx
OyAvLyBBZHZhbmNlIG92ZXIgdGhlICdAJyBvciAnOicgYXQgdGhlIGVuZC4KLSAgICB9Ci0KLSAg
ICBpZiAocGFzc3dvcmQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmICh0eXBlIDw9IFBhc3N3b3Jk
KQotICAgICAgICAgICAgcmV0dXJuIHBhc3N3b3JkLmJlZ2luKCk7Ci0gICAgICAgIGN1cnJlbnQg
PSBwYXNzd29yZC5lbmQoKSArIDE7IC8vIEFkdmFuY2Ugb3ZlciB0aGUgJ0AnIGF0IHRoZSBlbmQu
Ci0gICAgfQotCi0gICAgaWYgKGhvc3QuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmICh0eXBlIDw9
IEhvc3QpCi0gICAgICAgICAgICByZXR1cm4gaG9zdC5iZWdpbigpOwotICAgICAgICBjdXJyZW50
ID0gaG9zdC5lbmQoKTsKLSAgICB9Ci0KLSAgICBpZiAocG9ydC5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgaWYgKHR5cGUgPCBQb3J0IHx8ICh0eXBlID09IFBvcnQgJiYgaW5jbHVkZURlbGltaXRlcikp
Ci0gICAgICAgICAgICByZXR1cm4gcG9ydC5iZWdpbigpIC0gMTsgLy8gQmFjayBvdmVyIGRlbGlt
aXRlci4KLSAgICAgICAgaWYgKHR5cGUgPT0gUG9ydCkKLSAgICAgICAgICAgIHJldHVybiBwb3J0
LmJlZ2luKCk7IC8vIERvbid0IHdhbnQgZGVsaW1pdGVyIGNvdW50ZWQuCi0gICAgICAgIGN1cnJl
bnQgPSBwb3J0LmVuZCgpOwotICAgIH0KLQotICAgIGlmIChwYXRoLmlzVmFsaWQoKSkgewotICAg
ICAgICBpZiAodHlwZSA8PSBQYXRoKQotICAgICAgICAgICAgcmV0dXJuIHBhdGguYmVnaW4oKTsK
LSAgICAgICAgY3VycmVudCA9IHBhdGguZW5kKCk7Ci0gICAgfQotCi0gICAgaWYgKHF1ZXJ5Lmlz
VmFsaWQoKSkgewotICAgICAgICBpZiAodHlwZSA8IFF1ZXJ5IHx8ICh0eXBlID09IFF1ZXJ5ICYm
IGluY2x1ZGVEZWxpbWl0ZXIpKQotICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5LmJlZ2luKCkgLSAx
OyAvLyBCYWNrIG92ZXIgZGVsaW1pdGVyLgotICAgICAgICBpZiAodHlwZSA9PSBRdWVyeSkKLSAg
ICAgICAgICAgIHJldHVybiBxdWVyeS5iZWdpbigpOyAvLyBEb24ndCB3YW50IGRlbGltaXRlciBj
b3VudGVkLgotICAgICAgICBjdXJyZW50ID0gcXVlcnkuZW5kKCk7Ci0gICAgfQotCi0gICAgaWYg
KGZyYWdtZW50LmlzVmFsaWQoKSkgewotICAgICAgICBpZiAodHlwZSA9PSBGcmFnbWVudCAmJiAh
aW5jbHVkZURlbGltaXRlcikKLSAgICAgICAgICAgIHJldHVybiBmcmFnbWVudC5iZWdpbigpOyAv
LyBCYWNrIG92ZXIgZGVsaW1pdGVyLgotCi0gICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBmcmFn
bWVudCBhbmQgd2UgZ2V0IGhlcmUsIHRoZSBjb21wb25lbnQgd2Ugd2FudGVkIHdhcyBiZWZvcmUK
LSAgICAgICAgLy8gdGhpcyBhbmQgbm90IGZvdW5kLCBzbyB3ZSBhbHdheXMga25vdyB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBmcmFnbWVudCBpcyByaWdodC4KLSAgICAgICAgcmV0dXJuIGZyYWdtZW50
LmJlZ2luKCkgLSAxOyAvLyBEb24ndCB3YW50IGRlbGltaXRlciBjb3VudGVkLgotICAgIH0KLQot
ICAgIHJldHVybiBjdXJyZW50OwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5oCShyZXZpc2lv
biA4Njc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmbmRlZiBVUkxTZWdtZW50c19oCi0jZGVmaW5lIFVS
TFNlZ21lbnRzX2gKLQotI2luY2x1ZGUgIlVSTENvbXBvbmVudC5oIgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotLy8gQSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0aGUgaWRlbnRpZmllZCBwYXJ0cyBvZiBh
biBpbnB1dCBVUkwuIFRoaXMgc3RydWN0dXJlCi0vLyBkb2VzIE5PVCBzdG9yZSB0aGUgVVJMIGl0
c2VsZi4gVGhlIGNhbGxlciB3aWxsIGhhdmUgdG8gc3RvcmUgdGhlIFVSTCB0ZXh0Ci0vLyBhbmQg
aXRzIGNvcnJlc3BvbmRpbmcgUGFyc2VkIHN0cnVjdHVyZSBzZXBhcmF0ZWx5LgotY2xhc3MgVVJM
U2VnbWVudHMgewotcHVibGljOgotICAgIC8vIElkZW50aWZpZXMgZGlmZmVyZW50IGNvbXBvbmVu
dHMuCi0gICAgZW51bSBDb21wb25lbnRUeXBlIHsKLSAgICAgICAgU2NoZW1lLAotICAgICAgICBV
c2VybmFtZSwKLSAgICAgICAgUGFzc3dvcmQsCi0gICAgICAgIEhvc3QsCi0gICAgICAgIFBvcnQs
Ci0gICAgICAgIFBhdGgsCi0gICAgICAgIFF1ZXJ5LAotICAgICAgICBGcmFnbWVudCwKLSAgICB9
OwotCi0gICAgVVJMU2VnbWVudHMoKSB7IH0KLQotICAgIC8vIFJldHVybnMgdGhlIGxlbmd0aCBv
ZiB0aGUgVVJMICh0aGUgZW5kIG9mIHRoZSBsYXN0IGNvbXBvbmVudCkuCi0gICAgLy8KLSAgICAv
LyBOb3RlIHRoYXQgZm9yIHNvbWUgaW52YWxpZCwgbm9uLWNhbm9uaWNhbCBVUkxzLCB0aGlzIG1h
eSBub3QgYmUgdGhlIGxlbmd0aAotICAgIC8vIG9mIHRoZSBzdHJpbmcuIEZvciBleGFtcGxlICJo
dHRwOi8vIjogdGhlIHBhcnNlZCBzdHJ1Y3R1cmUgd2lsbCBvbmx5Ci0gICAgLy8gY29udGFpbiBh
biBlbnRyeSBmb3IgdGhlIGZvdXItY2hhcmFjdGVyIHNjaGVtZSwgYW5kIGl0IGRvZXNuJ3Qga25v
dyBhYm91dAotICAgIC8vIHRoZSAiOi8vIi4gRm9yIGFsbCBvdGhlciBsYXN0LWNvbXBvbmVudHMs
IGl0IHdpbGwgcmV0dXJuIHRoZSByZWFsIGxlbmd0aC4KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3Q7
Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBiZWZvcmUgdGhlIGdp
dmVuIGNvbXBvbmVudCBpZiBpdCBleGlzdHMsCi0gICAgLy8gb3Igd2hlcmUgdGhlIGNvbXBvbmVu
dCB3b3VsZCBiZSBpZiBpdCBkaWQgZXhpc3QuIFRoaXMgd2lsbCByZXR1cm4gdGhlCi0gICAgLy8g
c3RyaW5nIGxlbmd0aCBpZiB0aGUgY29tcG9uZW50IHdvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSBl
bmQuCi0gICAgLy8KLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBjYW4gZ2V0IGEgbGl0dGxlIGZ1bm55
IGZvciB0aGUgcG9ydCwgcXVlcnksIGFuZCBmcmFnbWVudAotICAgIC8vIGNvbXBvbmVudHMgd2hp
Y2ggaGF2ZSBhIGRlbGltaXRlciB0aGF0IGlzIG5vdCBjb3VudGVkIGFzIHBhcnQgb2YgdGhlCi0g
ICAgLy8gY29tcG9uZW50LiBUaGUgfGluY2x1ZGVEZWxpbWl0ZXJ8IGZsYWcgY29udHJvbHMgaWYg
eW91IHdhbnQgdGhpcyBjb3VudGVkCi0gICAgLy8gYXMgcGFydCBvZiB0aGUgY29tcG9uZW50IG9y
IG5vdCB3aGVuIHRoZSBjb21wb25lbnQgZXhpc3RzLgotICAgIC8vCi0gICAgLy8gVGhpcyBleGFt
cGxlIHNob3dzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBmbGFncyBmb3IgdHdvIG9m
IHRoZXNlCi0gICAgLy8gZGVsaW1pdGVkIGNvbXBvbmVudHMgdGhhdCBpcyBwcmVzZW50ICh0aGUg
cG9ydCBhbmQgcXVlcnkpIGFuZCBvbmUgdGhhdAotICAgIC8vIGlzbid0ICh0aGUgcmVmZXJlbmNl
KS4gVGhlIGNvbXBvbmVudHMgdGhhdCB0aGlzIGZsYWcgYWZmZWN0cyBhcmUgbWFya2VkCi0gICAg
Ly8gd2l0aCBhICouCi0gICAgLy8gICAgICAgICAgICAgICAgIDAgICAgICAgICAxICAgICAgICAg
MgotICAgIC8vICAgICAgICAgICAgICAgICAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAKLSAgICAvLyBF
eGFtcGxlIGlucHV0OiAgaHR0cDovL2Zvbzo4MC8/cXVlcnkKLSAgICAvLyAgICAgICAgICAgICAg
aW5jbHVkZV9kZWxpbT10cnVlLCAgLi4uPWZhbHNlICAoIjwtIiBpbmRpY2F0ZXMgZGlmZmVyZW50
KQotICAgIC8vICAgICAgU2NoZW1lOiAwICAgICAgICAgICAgICAgICAgICAwCi0gICAgLy8gICAg
VXNlcm5hbWU6IDUgICAgICAgICAgICAgICAgICAgIDUKLSAgICAvLyAgICBQYXNzd29yZDogNSAg
ICAgICAgICAgICAgICAgICAgNQotICAgIC8vICAgICAgICBIb3N0OiA3ICAgICAgICAgICAgICAg
ICAgICA3Ci0gICAgLy8gICAgICAgKlBvcnQ6IDEwICAgICAgICAgICAgICAgICAgIDExIDwtCi0g
ICAgLy8gICAgICAgIFBhdGg6IDEzICAgICAgICAgICAgICAgICAgIDEzCi0gICAgLy8gICAgICAq
UXVlcnk6IDE0ICAgICAgICAgICAgICAgICAgIDE1IDwtCi0gICAgLy8gICAgICAgICpGcmFnbWVu
dDogMjAgICAgICAgICAgICAgICAgICAgMjAKLSAgICAvLwotICAgIGludCBjaGFyYWN0ZXJzQmVm
b3JlKENvbXBvbmVudFR5cGUsIGJvb2wgaW5jbHVkZURlbGltaXRlcikgY29uc3Q7Ci0KLSAgICAv
LyBFYWNoIGNvbXBvbmVudCBleGNsdWRlcyB0aGUgcmVsYXRlZCBkZWxpbWl0ZXJzIGFuZCBoYXMg
YSBsZW5ndGggb2YgLTEKLSAgICAvLyBpZiB0aGF0IGNvbXBvbmVudCBpcyBhYnNlbnQgYnV0IDAg
aWYgdGhlIGNvbXBvbmVudCBleGlzdHMgYnV0IGlzIGVtcHR5LgotICAgIFVSTENvbXBvbmVudCBz
Y2hlbWU7Ci0gICAgVVJMQ29tcG9uZW50IHVzZXJuYW1lOwotICAgIFVSTENvbXBvbmVudCBwYXNz
d29yZDsKLSAgICBVUkxDb21wb25lbnQgaG9zdDsKLSAgICBVUkxDb21wb25lbnQgcG9ydDsKLSAg
ICBVUkxDb21wb25lbnQgcGF0aDsKLSAgICBVUkxDb21wb25lbnQgcXVlcnk7Ci0gICAgVVJMQ29t
cG9uZW50IGZyYWdtZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBV
UkxTZWdtZW50c19oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>