<?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>217046</bug_id>
          
          <creation_ts>2020-09-28 00:46:56 -0700</creation_ts>
          <short_desc>[LFC][Integration] Move run iterator to LayoutIntegration namespace</short_desc>
          <delta_ts>2020-09-28 06:43:20 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1692492</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-28 00:46:56 -0700</bug_when>
    <thetext>Also some renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692496</commentid>
    <comment_count>1</comment_count>
      <attachid>409871</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-28 00:56:44 -0700</bug_when>
    <thetext>Created attachment 409871
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692497</commentid>
    <comment_count>2</comment_count>
      <attachid>409872</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-28 01:09:08 -0700</bug_when>
    <thetext>Created attachment 409872
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692498</commentid>
    <comment_count>3</comment_count>
      <attachid>409873</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-28 01:24:40 -0700</bug_when>
    <thetext>Created attachment 409873
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692515</commentid>
    <comment_count>4</comment_count>
      <attachid>409879</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-28 03:25:25 -0700</bug_when>
    <thetext>Created attachment 409879
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692528</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-28 06:42:37 -0700</bug_when>
    <thetext>Committed r267697: &lt;https://trac.webkit.org/changeset/267697&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409879.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692529</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-28 06:43:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/69696149&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409871</attachid>
            <date>2020-09-28 00:56:44 -0700</date>
            <delta_ts>2020-09-28 01:09:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textruniterator-naming.patch</filename>
            <type>text/plain</type>
            <size>63032</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGY3YjM2ZjdhOTYuLmNjOWNkMzAxMDBjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwMSBAQAorMjAyMC0wOS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIE1vdmUgcnVuIGl0ZXJhdG9yIHRvIExh
eW91dEludGVncmF0aW9uIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyB1c2UgbmFtZSAnTW9kZXJuJyBmb3IgTEZDIGFuZCAnTGVn
YWN5JyBmb3IgdGhlIG9sZCBpbmxpbmUgdHJlZSBwYXRoLgorCisgICAgICAgIEFsc28gcmVuYW1l
IGJveC0+cnVuIGZvciBtb3JlIGNvbnNpc3RlbnQgdGVybWlub2xvZ3kuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Ojp1cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVh
bSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
dGV4dFJ1bnNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OmVsZW1lbnRSdW5Gb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmVsZW1l
bnRCb3hGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRl
eHRSdW5JdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpFbGVtZW50UnVuSXRlcmF0b3I6OkVsZW1lbnRSdW5JdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjph
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVu
dFJ1bkZvcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRUcmF2ZXJzYWwuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5J
dGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkVsZW1lbnRSdW5JdGVyYXRvcjo6RWxlbWVudFJ1bkl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpFbGVtZW50UnVu
SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuUmFuZ2U6OlRleHRSdW5SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1blJhbmdlOjpiZWdp
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6cmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpiYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpSdW46OmlzSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuOjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjp1c2VMaW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1
aXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVu
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OlRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlRleHRSdW46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuOjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmlzTGFzdE9uTGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bjo6
aXNMYXN0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OkxlZ2FjeVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBh
dGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TW9kZXJuUGF0aDo6TW9kZXJuUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGluZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFi
c29sdXRlUXVhZHNGb3JOb25Db21wbGV4UGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6Zmlyc3RSdW5Mb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpsaW5lc0JvdW5kaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNhcmV0TWluT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNv
dW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGFpbnNPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6aGFzUmVu
ZGVyZWRUZXh0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUZXh0Qm94KTogRGVsZXRlZC4KKwogMjAy
MC0wOS0yNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0lGQ10gSW5jb3JyZWN0IGJyZWFraW5nIHBvc2l0aW9uIHdoZW4gaW5saW5lIGJveCBjb250ZW50
IGZpdHMgdGhlIGxpbmUgYnV0IHRoZSBpbmxpbmUgY29udGVudCBpdHNlbGYgZG9lcyBub3QuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDkyNjQ3NWM0YzEwMi4uNzM0NWQ4NzQwZDk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMTQ2OSw2ICsxNDY5LDcgQEAgbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQm94VHJlZS5jcHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVy
YWdlLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uY3BwCits
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKIGxheW91
dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uQ29udGV4dC5jcHAKIGxheW91dC9pbnZhbGlkYXRp
b24vSW52YWxpZGF0aW9uU3RhdGUuY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
CkBAIC0yMjE3LDcgKzIyMTgsNiBAQCByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCiByZW5kZXJp
bmcvVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmNwcAogcmVuZGVyaW5nL2xpbmUvTGluZUJy
ZWFrZXIuY3BwCiByZW5kZXJpbmcvbGluZS9MaW5lSW5mby5jcHAKLXJlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWwuY3BwCiByZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCiByZW5k
ZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuY3BwCiByZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0
eWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDkyOWQyMjRlN2U5MC4uOTE4NmJkZDU1NzE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTg3LDcgKzQ5
ODcsNiBAQAogCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3Jp
dHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Mjk1
RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MkU3NkRDMUM3QUY3NzYw
MEUzNjE0RCAvKiBTdHlsZVVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQyRTc2REIxQzdBRjc3NjAwRTM2MTREIC8qIFN0eWxlVXBkYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQzMTA1
QkIxNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MzEwNUJBMTY3NTBGMTYwMERCMkZCOCAvKiBO
b2RlVHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxD
b21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQzNDNEMjQyMzkyNzc4RjAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4
UGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0M0EwMjNCMTdFQjM3MEEwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDNBMDIzQTE3RUIzNzBBMDA0Q0RE
MjUgLyogUmVuZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0M0FGOEU3MUFDNUI3RUMwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0M0FG
OEU1MUFDNUI3REQwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDQwQUE5NjFDNjg0MjA4MDBBMjY1
Q0MgLyogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDBBQTk1MUM2ODQyMDgwMEEyNjVDQyAv
KiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oICovOyB9OwpAQCAtNTAxMCw3ICs1
MDA5LDYgQEAKIAkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MUUzNDBDQkZC
NjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0
b3JDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi87IH07CiAJ
CUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RkExODQxQkNBNkI1
QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggKi87IH07Ci0JCUU0NTFDNjI4MjM5
MjkzRUMwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTFDNjI3MjM5Mjkz
RUIwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUxQzYzMTIzOTQw
Mjc5MDA5OTMxOTAgLyogTGF5b3V0VW5pdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGNzM5MThDMjEwNkNFREQwMDZBRjI2MiAvKiBMYXlvdXRVbml0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
NTFDNjMyMjM5NDAzMUEwMDk5MzE5MCAvKiBNYXJnaW5UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFN0FBMjYyMUMzN0I2MzAwMjk2RENEIC8q
IE1hcmdpblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYz
MzIzOTQwNThFMDA5OTMxOTAgLyogRGlzcGxheUlubGluZUNvbnRlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTAzOSw3ICs1MDM3LDYgQEAK
IAkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1
bW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0Mz
OTI3MUZFNkUwREMwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87
IH07CiAJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQx
NjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ4MTM3QjkxREIzQjUyNjAwNUM1
OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0ODEzN0I4MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTQ4NEEz
M0UyMzA1NTMyNTAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2
QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg2M0NG
RDIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCAqLzsgfTsKIAkJRTQ5NDZFQUYxNTZFNjRE
RDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5NDZFQUQxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVs
ZUltcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0OUJEOUZBMTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OUJEOUY5MTMxRkQyRUQwMDND
NTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCAqLzsgfTsKQEAgLTE1ODYwLDcgKzE1ODU3LDYgQEAKIAkJ
RTQzMTA1QkExNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVRyYXZlcnNhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDMxMkFCNTI0QjMyNjU2MDA2NzgzNDkgLyogTGF5b3V0SW50ZWdyYXRpb25Q
YWdpbmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91
dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0MzEyQUI3MjRCMzI2NTYwMDY3ODM0OSAvKiBMYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25QYWdp
bmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0MzQzRDI0MjM5Mjc3OEYw
MEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0M0EwMjNBMTdFQjM3MEEwMDRDREQyNSAvKiBS
ZW5kZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQzQTAyM0MxN0VCMzcxMzAw
NENERDI1IC8qIFJlbmRlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0M0FGOEU0MUFDNUI3REQwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVWYWxpZGF0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODk4LDcgKzE1ODk0LDYgQEAKIAkJRTQ0RUUzQTcx
NzU3NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEdlbmVyaWNGYW1pbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDRG
QTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcG9zZWRUcmVlSXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2Vk
VHJlZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
bXBvc2VkVHJlZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQ1
MUM2MjcyMzkyOTNFQjAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lTGF5b3V0VHJhdmVyc2Fs
RGlzcGxheVJ1blBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MUM2MzMy
Mzk0MDU4RTAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlJbmxpbmVDb250ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdG9yUXVlcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBG
OTIgLyogU2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk0Nyw4ICsx
NTk0Miw2IEBACiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2MDM2RURDMDBF
RTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVZhbGlkaXR5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5l
TGF5b3V0VHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVM
YXlvdXRUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQ4NEEzM0Qy
MzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODYzQ0ZBMjM4NDJFODcwMDk3MjE1OCAvKiBSdWxlRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdWxlRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAv
KiBSdWxlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdWxlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDk0NkVBQzE1NkU2NEREMDBEMzI5N0Yg
LyogU3R5bGVSdWxlSW1wb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0eWxlUnVsZUltcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTk1OSw2ICsxNTk1MiwxMCBAQAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVS
TERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVVS
TERlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEExODIyRjFGMTNC
RTU4MDBGRUY2OTggLyogU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIENvbXBsZXhMaW5lTGF5b3V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXhMaW5lTGF5b3V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QTY2NEM0MjUyMUI3NzcwMDcwODFEQyAvKiBMYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE2NjRDNTI1MjFCNzc4MDA3MDgxREMgLyog
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBNjY0QzYyNTIxQjc3ODAwNzA4MURD
IC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNEE2NjRDNzI1MjFCNzc5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTRBNzk5NEUyMEVFNEFFMTAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyQ29udGV4dC5oOyBwYXRo
ID0gcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTRBNzk5NTAyMEVFNEFFMjAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyQ29udGV4dC5jcHA7IHBh
dGggPSBwYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MDQsNiArMjg1MDEsMTAg
QEAKIAkJRTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9uICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFNEE2NjRDNzI1MjFCNzc5MDA3
MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8sCisJCQkJRTRBNjY0
QzYyNTIxQjc3ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCAqLywK
KwkJCQlFNEE2NjRDNTI1MjFCNzc4MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvckxlZ2FjeVBhdGguaCAqLywKKwkJCQlFNEE2NjRDNDI1MjFCNzc3MDA3MDgxREMgLyogTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCAqLywKIAkJCQlFNDE4MDI1NjIz
RDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAqLywKIAkJCQlF
NDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggKi8s
CiAJCQkJRTQwM0I3OUYyNTFCMTE4QjAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuY3BwICovLApAQCAtMzAyNTYsMTAgKzMwMjU3LDYgQEAKIAkJCQlGRkI2OThDRTE4MzNGMTc2
MDAxNThBMzEgLyogTGluZUluZm8uaCAqLywKIAkJCQlGRkVGQUIyRDE4M0JDQjZGMDA1MTQ1MzQg
LyogTGluZUlubGluZUhlYWRlcnMuaCAqLywKIAkJCQlGRkVGQUIyOTE4MzgwREEwMDA1MTQ1MzQg
LyogTGluZUxheW91dFN0YXRlLmggKi8sCi0JCQkJRTQ4NEEzM0QyMzA1NTMwMzAwOUFERTZBIC8q
IExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovLAotCQkJCUU0ODRBMzNCMjMwNTUzMDMwMDlBREU2
QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi8sCi0JCQkJRTQzNDNEMjQyMzkyNzc4RjAwRUJC
QjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oICovLAotCQkJCUU0NTFDNjI3
MjM5MjkzRUIwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCAq
LywKIAkJCQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmNwcCAqLywKIAkJ
CQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJRkZBQzMw
RkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCkBAIC0zMjg0MCw5
ICszMjgzNyw2IEBACiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRp
ZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3
QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkVGQUIyQTE4Mzgw
REEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDg0
QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxD
b21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkw
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkZEQkMwNDcxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0JBOURDMEIxREY0NERGNDAwMDU2NzVDIC8qIExpbmtIZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAwNzFjODBiYWU0ODkuLjY5ZDNjZGZj
NzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSAiSW5saW5lRWxlbWVudEJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIK
KyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQb3NpdGlvbkl0
ZXJhdG9yLmgiCkBAIC03MjgsOCArNzI4LDggQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFt
KEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICBpZiAoaXM8
UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYgdGV4dFJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKTsKIAotICAgICAgICAgICAgYXV0byBm
aXJzdFRleHRCb3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRl
ckZvcih0ZXh0UmVuZGVyZXIpOwotICAgICAgICAgICAgaWYgKCFmaXJzdFRleHRCb3gpCisgICAg
ICAgICAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRS
dW5JblRleHRPcmRlckZvcih0ZXh0UmVuZGVyZXIpOworICAgICAgICAgICAgaWYgKCFmaXJzdFRl
eHRSdW4pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICgmY3Vy
cmVudE5vZGUgIT0gc3RhcnROb2RlKSB7CkBAIC03NDIsMTQgKzc0MiwxNCBAQCBQb3NpdGlvbiBQ
b3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRleHRPZmZzZXQgPSBjdXJy
ZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpOwotICAgICAgICAgICAgZm9yIChhdXRvIGJv
eCA9IGZpcnN0VGV4dEJveDsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkgewot
ICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0IDw9IGJveC0+bG9jYWxFbmRPZmZzZXQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+IGJveC0+bG9jYWxTdGFydE9m
ZnNldCgpKQorICAgICAgICAgICAgZm9yIChhdXRvIHJ1biA9IGZpcnN0VGV4dFJ1bjsgcnVuOyBy
dW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXh0
T2Zmc2V0IDw9IHJ1bi0+bG9jYWxFbmRPZmZzZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAodGV4dE9mZnNldCA+IHJ1bi0+bG9jYWxTdGFydE9mZnNldCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHRleHRPZmZz
ZXQgPT0gYm94LT5sb2NhbEVuZE9mZnNldCgpICsgMSAmJiBib3gtPmlzTGFzdE9uTGluZSgpICYm
ICFib3gtPmlzTGFzdCgpKQorICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID09IHJ1bi0+
bG9jYWxFbmRPZmZzZXQoKSArIDEgJiYgcnVuLT5pc0xhc3RPbkxpbmUoKSAmJiAhcnVuLT5pc0xh
c3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtODM1LDggKzgzNSw4IEBAIFBvc2l0aW9uIFBvc2l0aW9u
Ojpkb3duc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAg
ICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYg
dGV4dFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKTsKIAotICAgICAg
ICAgICAgYXV0byBmaXJzdFRleHRCb3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRC
b3hJblRleHRPcmRlckZvcih0ZXh0UmVuZGVyZXIpOwotICAgICAgICAgICAgaWYgKCFmaXJzdFRl
eHRCb3gpCisgICAgICAgICAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IExheW91dEludGVncmF0aW9u
OjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcih0ZXh0UmVuZGVyZXIpOworICAgICAgICAgICAg
aWYgKCFmaXJzdFRleHRSdW4pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIGlmICgmY3VycmVudE5vZGUgIT0gc3RhcnROb2RlKSB7CkBAIC04NDUsMTcgKzg0NSwxNyBA
QCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdW5zaWduZWQgdGV4
dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8gYm94ID0gZmlyc3RUZXh0Qm94OyBib3g7IGJveC50cmF2ZXJzZU5leHRJblRl
eHRPcmRlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFib3gtPmxlbmd0aCgpICYmIHRleHRP
ZmZzZXQgPT0gYm94LT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCisgICAgICAgICAgICBmb3IgKGF1dG8g
cnVuID0gZmlyc3RUZXh0UnVuOyBydW47IHJ1bi50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFydW4tPmxlbmd0aCgpICYmIHRleHRPZmZzZXQgPT0gcnVu
LT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50
UG9zaXRpb247CiAKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA8IGJveC0+bG9jYWxF
bmRPZmZzZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+PSBib3gt
PmxvY2FsU3RhcnRPZmZzZXQoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA8IHJ1
bi0+bG9jYWxFbmRPZmZzZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNl
dCA+PSBydW4tPmxvY2FsU3RhcnRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID09IGJveC0+
bG9jYWxFbmRPZmZzZXQoKSAmJiBib3gtPmlzTGFzdE9uTGluZSgpICYmICFib3gtPmlzTGFzdCgp
KQorICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID09IHJ1bi0+bG9jYWxFbmRPZmZzZXQo
KSAmJiBydW4tPmlzTGFzdE9uTGluZSgpICYmICFydW4tPmlzTGFzdCgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAgfQogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNWU1ODE0ZDdkZjVk
Li44M2NiNjMwMWU0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAK
QEAgLTQzNywxNSArNDM3LDE1IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4
dEJveCkgewotICAgICAgICBtX3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7Ci0gICAgICAg
IG1fcmVtYWluaW5nVGV4dEJveCA9IHsgfTsKKyAgICBpZiAoIW1fdGV4dFJ1biAmJiBtX3JlbWFp
bmluZ1RleHRSdW4pIHsKKyAgICAgICAgbV90ZXh0UnVuID0gbV9yZW1haW5pbmdUZXh0UnVuOwor
ICAgICAgICBtX3JlbWFpbmluZ1RleHRSdW4gPSB7IH07CiAgICAgICAgIG1fZmlyc3RMZXR0ZXJU
ZXh0ID0geyB9OwogICAgICAgICBtX29mZnNldCA9IDA7CiAgICAgfQogICAgIC8vIGhhbmRsZSBy
ZW1lbWJlcmVkIHRleHQgYm94Ci0gICAgaWYgKG1fdGV4dEJveCkgewotICAgICAgICBoYW5kbGVU
ZXh0Qm94KCk7CisgICAgaWYgKG1fdGV4dFJ1bikgeworICAgICAgICBoYW5kbGVUZXh0UnVuKCk7
CiAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC01NjMsNyArNTYzLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkK
ICAgICAgICAgICAgICAgICBTdHJpbmcgZmlyc3RMZXR0ZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dC0+
dGV4dCgpOwogICAgICAgICAgICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCAqbV9maXJzdExldHRl
clRleHQsIG1fb2Zmc2V0LCBtX29mZnNldCArIGZpcnN0TGV0dGVyLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAg
bV90ZXh0Qm94ID0geyB9OworICAgICAgICAgICAgICAgIG1fdGV4dFJ1biA9IHsgfTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU4
MCw0NCArNTgwLDQ0IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIG1fdGV4dEJveCA9IExpbmVMYXlvdXRUcmF2
ZXJzYWw6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKKyAgICBtX3RleHRS
dW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IocmVuZGVy
ZXIpOwogCiAgICAgYm9vbCBzaG91bGRIYW5kbGVGaXJzdExldHRlciA9ICFtX2hhbmRsZWRGaXJz
dExldHRlciAmJiBpczxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSAmJiAhbV9vZmZzZXQ7
CiAgICAgaWYgKHNob3VsZEhhbmRsZUZpcnN0TGV0dGVyKQogICAgICAgICBoYW5kbGVUZXh0Tm9k
ZUZpcnN0TGV0dGVyKGRvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpKTsKIAot
ICAgIGlmICghbV90ZXh0Qm94ICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSAmJiAhc2hvdWxkSGFu
ZGxlRmlyc3RMZXR0ZXIpIHsKKyAgICBpZiAoIW1fdGV4dFJ1biAmJiByZW5kZXJlclRleHQubGVu
Z3RoKCkgJiYgIXNob3VsZEhhbmRsZUZpcnN0TGV0dGVyKSB7CiAgICAgICAgIGlmIChyZW5kZXJl
ci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhh
dmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBoYW5kbGVUZXh0Qm94KCk7CisgICAgaGFuZGxlVGV4
dFJ1bigpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dEJveCgpCit2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bigpCiB7ICAgIAogICAg
IFRleHQmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKm1fbm9kZSk7CiAKICAgICBhdXRvJiBy
ZW5kZXJlciA9IG1fZmlyc3RMZXR0ZXJUZXh0ID8gKm1fZmlyc3RMZXR0ZXJUZXh0IDogKnRleHRO
b2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jl
c1N0eWxlVmlzaWJpbGl0eSkpIHsKLSAgICAgICAgbV90ZXh0Qm94ID0geyB9OworICAgICAgICBt
X3RleHRSdW4gPSB7IH07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZpcnN0
VGV4dEJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9y
KHJlbmRlcmVyKTsKKyAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IExheW91dEludGVncmF0aW9uOjpm
aXJzdFRleHRSdW5JblRleHRPcmRlckZvcihyZW5kZXJlcik7CiAKICAgICBTdHJpbmcgcmVuZGVy
ZXJUZXh0ID0gcmVuZGVyZXIudGV4dCgpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9vZmZzZXQ7
CiAgICAgdW5zaWduZWQgZW5kID0gKCZ0ZXh0Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZzZXQpIDogVUlOVF9NQVg7Ci0gICAgd2hpbGUgKG1f
dGV4dEJveCkgewotICAgICAgICB1bnNpZ25lZCB0ZXh0Qm94U3RhcnQgPSBtX3RleHRCb3gtPmxv
Y2FsU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0
ZXh0Qm94U3RhcnQsIHN0YXJ0KTsKKyAgICB3aGlsZSAobV90ZXh0UnVuKSB7CisgICAgICAgIHVu
c2lnbmVkIHRleHRSdW5TdGFydCA9IG1fdGV4dFJ1bi0+bG9jYWxTdGFydE9mZnNldCgpOworICAg
ICAgICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6bWF4KHRleHRSdW5TdGFydCwgc3RhcnQpOwog
CiAgICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRo
aXMgcnVuLgotICAgICAgICBib29sIG5lZWRTcGFjZSA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRo
Q29sbGFwc2VkU3BhY2UgfHwgKG1fdGV4dEJveCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0
YXJ0ID09IHJ1blN0YXJ0ICYmIHJ1blN0YXJ0KTsKKyAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSBt
X2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlIHx8IChtX3RleHRSdW4gPT0gZmly
c3RUZXh0UnVuICYmIHRleHRSdW5TdGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCk7CiAgICAg
ICAgIGlmIChuZWVkU3BhY2UgJiYgIXJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBzaWJsZVdoaXRl
U3BhY2UobV9sYXN0Q2hhcmFjdGVyKSAmJiBtX2xhc3RDaGFyYWN0ZXIpIHsKICAgICAgICAgICAg
IGlmIChtX2xhc3RUZXh0Tm9kZSA9PSAmdGV4dE5vZGUgJiYgcnVuU3RhcnQgJiYgcmVuZGVyZXJU
ZXh0W3J1blN0YXJ0IC0gMV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3Bh
Y2VSdW5TdGFydCA9IHJ1blN0YXJ0IC0gMTsKQEAgLTYyOCwxMiArNjI4LDEyIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIHJ1blN0YXJ0LCBydW5TdGFydCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgdGV4dEJveEVuZCA9IHRleHRC
b3hTdGFydCArIG1fdGV4dEJveC0+bGVuZ3RoKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJ1bkVuZCA9
IHN0ZDo6bWluKHRleHRCb3hFbmQsIGVuZCk7CisgICAgICAgIHVuc2lnbmVkIHRleHRSdW5FbmQg
PSB0ZXh0UnVuU3RhcnQgKyBtX3RleHRSdW4tPmxlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBy
dW5FbmQgPSBzdGQ6Om1pbih0ZXh0UnVuRW5kLCBlbmQpOwogICAgICAgICAKLSAgICAgICAgLy8g
RGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwgYnV0IGRvbid0IGFkdmFu
Y2UgeWV0Ci0gICAgICAgIGF1dG8gbmV4dFRleHRCb3ggPSBtX3RleHRCb3g7Ci0gICAgICAgIG5l
eHRUZXh0Qm94LnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCk7CisgICAgICAgIC8vIERldGVybWlu
ZSB3aGF0IHRoZSBuZXh0IHRleHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAor
ICAgICAgICBhdXRvIG5leHRUZXh0UnVuID0gbV90ZXh0UnVuOworICAgICAgICBuZXh0VGV4dFJ1
bi50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOwogCiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1
bkVuZCkgewogICAgICAgICAgICAgYXV0byBpc05ld2xpbmVPclRhYiA9IFsmXShVQ2hhciBjaGFy
YWN0ZXIpIHsKQEAgLTY1Miw4ICs2NTIsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKHN1YnJ1bkVuZCA9PSBydW5FbmQgJiYgKG1fYmVoYXZpb3Ig
JiBUZXh0SXRlcmF0b3JCZWhhdmVzQXNJZk5vZGVzRm9sbG93aW5nKSkgewotICAgICAgICAgICAg
ICAgICAgICBib29sIGxhc3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRCb3ggPSAhbmV4dFRl
eHRCb3ggJiYgcmVuZGVyZXJUZXh0Lmxlbmd0aCgpID4gc3VicnVuRW5kICYmIHJlbmRlcmVyVGV4
dFtzdWJydW5FbmRdID09ICcgJzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZUNv
bGxhcHNlZEJ5TmV4dE5vblRleHRCb3gpCisgICAgICAgICAgICAgICAgICAgIGJvb2wgbGFzdFNw
YWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1biA9ICFuZXh0VGV4dFJ1biAmJiByZW5kZXJlclRl
eHQubGVuZ3RoKCkgPiBzdWJydW5FbmQgJiYgcmVuZGVyZXJUZXh0W3N1YnJ1bkVuZF0gPT0gJyAn
OworICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFNwYWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4
dFJ1bikKICAgICAgICAgICAgICAgICAgICAgICAgICsrc3VicnVuRW5kOyAvLyBydW5FbmQgc3Rv
cHBlZCBiZWZvcmUgbGFzdCBzcGFjZS4gSW5jcmVtZW50IGJ5IG9uZSB0byByZXN0b3JlIHRoZSBz
cGFjZS4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBzdWJy
dW5FbmQ7CkBAIC02NjIsMjUgKzY2MiwyNSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCgpCiAKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkb2luZyBhIHN1YnJ1biB0aGF0IGRv
ZXNuJ3QgZ28gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dCBib3gsCiAgICAgICAgICAgICAvLyBjb21l
IGJhY2sgYWdhaW4gdG8gZmluaXNoIGhhbmRsaW5nIHRoaXMgdGV4dCBib3g7IGRvbid0IGFkdmFu
Y2UgdG8gdGhlIG5leHQgb25lLgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRleHRCb3hFbmQpCisgICAgICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9zaXRpb25FbmRPZmZzZXQpIDwgdGV4dFJ1bkVuZCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIC8vIEFkdmFuY2UgYW5kIHJldHVy
bgotICAgICAgICAgICAgdW5zaWduZWQgbmV4dFJ1blN0YXJ0ID0gbmV4dFRleHRCb3ggPyBuZXh0
VGV4dEJveC0+bG9jYWxTdGFydE9mZnNldCgpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOworICAg
ICAgICAgICAgdW5zaWduZWQgbmV4dFJ1blN0YXJ0ID0gbmV4dFRleHRSdW4gPyBuZXh0VGV4dFJ1
bi0+bG9jYWxTdGFydE9mZnNldCgpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICAg
ICAgaWYgKG5leHRSdW5TdGFydCA+IHJ1bkVuZCkKICAgICAgICAgICAgICAgICBtX2xhc3RUZXh0
Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1ZTsgLy8gY29sbGFwc2VkIHNwYWNlIGJl
dHdlZW4gcnVucyBvciBhdCB0aGUgZW5kCi0gICAgICAgICAgICBtX3RleHRCb3ggPSBuZXh0VGV4
dEJveDsKKyAgICAgICAgICAgIG1fdGV4dFJ1biA9IG5leHRUZXh0UnVuOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEFkdmFuY2UgYW5kIGNvbnRpbnVlCi0gICAg
ICAgIG1fdGV4dEJveCA9IG5leHRUZXh0Qm94OworICAgICAgICBtX3RleHRSdW4gPSBuZXh0VGV4
dFJ1bjsKICAgICB9Ci0gICAgaWYgKCFtX3RleHRCb3ggJiYgbV9yZW1haW5pbmdUZXh0Qm94KSB7
Ci0gICAgICAgIG1fdGV4dEJveCA9IG1fcmVtYWluaW5nVGV4dEJveDsKLSAgICAgICAgbV9yZW1h
aW5pbmdUZXh0Qm94ID0geyB9OworICAgIGlmICghbV90ZXh0UnVuICYmIG1fcmVtYWluaW5nVGV4
dFJ1bikgeworICAgICAgICBtX3RleHRSdW4gPSBtX3JlbWFpbmluZ1RleHRSdW47CisgICAgICAg
IG1fcmVtYWluaW5nVGV4dFJ1biA9IHsgfTsKICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSB7
IH07CiAgICAgICAgIG1fb2Zmc2V0ID0gMDsKLSAgICAgICAgaGFuZGxlVGV4dEJveCgpOworICAg
ICAgICBoYW5kbGVUZXh0UnVuKCk7CiAgICAgfQogfQogCkBAIC03MDAsOCArNzAwLDggQEAgdm9p
ZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4dEZyYWdt
ZW50JiByZW5kZXJlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGF1dG8qIGZp
cnN0TGV0dGVyVGV4dCA9IGZpcnN0UmVuZGVyVGV4dEluRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXIp
KSB7CiAgICAgICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7Ci0gICAgICAgICAg
ICBtX3JlbWFpbmluZ1RleHRCb3ggPSBtX3RleHRCb3g7Ci0gICAgICAgICAgICBtX3RleHRCb3gg
PSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcigqZmlyc3RM
ZXR0ZXJUZXh0KTsKKyAgICAgICAgICAgIG1fcmVtYWluaW5nVGV4dFJ1biA9IG1fdGV4dFJ1bjsK
KyAgICAgICAgICAgIG1fdGV4dFJ1biA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5J
blRleHRPcmRlckZvcigqZmlyc3RMZXR0ZXJUZXh0KTsKICAgICAgICAgICAgIG1fZmlyc3RMZXR0
ZXJUZXh0ID0gZmlyc3RMZXR0ZXJUZXh0OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggOWRlYTczM2I2YjFmLi4yMmM0YjZlOTJiYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgotI2lu
Y2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTExNiw3ICsx
MTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlVGV4dE5vZGUoKTsKICAgICBib29sIGhh
bmRsZVJlcGxhY2VkRWxlbWVudCgpOwogICAgIGJvb2wgaGFuZGxlTm9uVGV4dE5vZGUoKTsKLSAg
ICB2b2lkIGhhbmRsZVRleHRCb3goKTsKKyAgICB2b2lkIGhhbmRsZVRleHRSdW4oKTsKICAgICB2
b2lkIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4dEZyYWdtZW50Jik7CiAgICAg
dm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlJiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmZz
ZXRCYXNlTm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAg
IHZvaWQgZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmLCBpbnQgdGV4dFN0YXJ0
T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CkBAIC0xNDksMTAgKzE0OSwxMCBAQCBwcml2YXRl
OgogCiAgICAgLy8gVXNlZCB3aGVuIHRoZXJlIGlzIHN0aWxsIHNvbWUgcGVuZGluZyB0ZXh0IGZy
b20gdGhlIGN1cnJlbnQgbm9kZTsgd2hlbiB0aGVzZSBhcmUgZmFsc2UgYW5kIG51bGwsIHdlIGdv
IGJhY2sgdG8gbm9ybWFsIGl0ZXJhdGluZy4KICAgICBOb2RlKiBtX25vZGVGb3JBZGRpdGlvbmFs
TmV3bGluZSB7IG51bGxwdHIgfTsKLSAgICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRl
cmF0b3IgbV90ZXh0Qm94OworICAgIExheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3Ig
bV90ZXh0UnVuOwogCiAgICAgLy8gVXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIDpmaXJzdC1sZXR0
ZXIgdGV4dCB0byBzYXZlIHBvaW50ZXIgdG8gcmVtYWluaW5nIHRleHQgYm94LgotICAgIExpbmVM
YXlvdXRUcmF2ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBtX3JlbWFpbmluZ1RleHRCb3g7CisgICAg
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVyYXRvciBtX3JlbWFpbmluZ1RleHRSdW47CiAK
ICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3QtbGV0
dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA2YzZkMDZkZTE3M2YuLjU0MjExODc5
NDJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTI5NCw3ICsyOTQs
NyBAQCBEaXNwbGF5OjpJbmxpbmVDb250ZW50JiBMaW5lTGF5b3V0OjplbnN1cmVEaXNwbGF5SW5s
aW5lQ29udGVudCgpCiAgICAgcmV0dXJuICptX2Rpc3BsYXlJbmxpbmVDb250ZW50OwogfQogCi1M
aW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3IgTGluZUxheW91dDo6dGV4dEJveGVz
Rm9yKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlclRleHQpIGNvbnN0CitMYXlvdXRJbnRlZ3JhdGlv
bjo6VGV4dFJ1bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHJlbmRlclRleHQpIGNvbnN0CiB7CiAgICAgYXV0byogaW5saW5lQ29udGVudCA9IGRpc3Bs
YXlJbmxpbmVDb250ZW50KCk7CiAgICAgaWYgKCFpbmxpbmVDb250ZW50KQpAQCAtMzE2LDEwICsz
MTYsMTAgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6
OnRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JgogICAgIGlmICghZmlyc3RJbmRleCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiB7IExpbmVMYXlvdXRUcmF2ZXJzYWw6OkRp
c3BsYXlSdW5QYXRoKCppbmxpbmVDb250ZW50LCAqZmlyc3RJbmRleCwgbGFzdEluZGV4ICsgMSkg
fTsKKyAgICByZXR1cm4geyBMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aCgqaW5saW5lQ29u
dGVudCwgKmZpcnN0SW5kZXgsIGxhc3RJbmRleCArIDEpIH07CiB9CiAKLUxpbmVMYXlvdXRUcmF2
ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvciBMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9yKGNvbnN0
IFJlbmRlckxpbmVCcmVhayYgcmVuZGVyTGluZUJyZWFrKSBjb25zdAorTGF5b3V0SW50ZWdyYXRp
b246OkVsZW1lbnRSdW5JdGVyYXRvciBMaW5lTGF5b3V0OjplbGVtZW50UnVuRm9yKGNvbnN0IFJl
bmRlckxpbmVCcmVhayYgcmVuZGVyTGluZUJyZWFrKSBjb25zdAogewogICAgIGF1dG8qIGlubGlu
ZUNvbnRlbnQgPSBkaXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgIGlmICghaW5saW5lQ29udGVu
dCkKQEAgLTMzMCw3ICszMzAsNyBAQCBMaW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRl
cmF0b3IgTGluZUxheW91dDo6ZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsraSkgewogICAg
ICAgICBhdXRvJiBydW4gPSAgaW5saW5lQ29udGVudC0+cnVuc1tpXTsKICAgICAgICAgaWYgKCZy
dW4ubGF5b3V0Qm94KCkgPT0gbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIHsgTGluZUxh
eW91dFRyYXZlcnNhbDo6RGlzcGxheVJ1blBhdGgoKmlubGluZUNvbnRlbnQsIGksIGkgKyAxKSB9
OworICAgICAgICAgICAgcmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGgoKmlu
bGluZUNvbnRlbnQsIGksIGkgKyAxKSB9OwogICAgIH0KIAogICAgIHJldHVybiB7IH07CkBAIC0z
OTMsNyArMzkzLDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAvLyBUZXh0UnVuIGV4
cGVjdHMgdGhlIHhQb3MgdG8gYmUgYWRqdXN0ZWQgd2l0aCB0aGUgYWxpZ21lbnQgb2Zmc2V0IChl
LmcuIHdoZW4gdGhlIGxpbmUgaXMgY2VudGVyIGFsaWduZWQKICAgICAgICAgLy8gYW5kIHRoZSBy
dW4gc3RhcnRzIGF0IDEwMHB4LCBkdWUgdG8gdGhlIGhvcml6b250YWwgYWxpZ21lbnQsIHRoZSB4
cG9zIGlzIHN1cHBvc2VkIHRvIGJlIGF0IDBweCkuCiAgICAgICAgIGF1dG8geFBvcyA9IHJlY3Qu
eCgpIC0gKGxpbmUucmVjdCgpLngoKSArIGxpbmUuaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgp
KTsKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgIXRleHRXaXRoSHlwaGVuLmlzRW1wdHkoKSA/
IHRleHRXaXRoSHlwaGVuIDogdGV4dENvbnRlbnQuY29udGVudCgpLCB4UG9zLCBleHBhbnNpb24u
aG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAgIFdlYkNv
cmU6OlRleHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5KCkgPyB0ZXh0V2l0
aEh5cGhlbiA6IHRleHRDb250ZW50LmNvbnRlbnQoKSwgeFBvcywgZXhwYW5zaW9uLmhvcml6b250
YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgICAgICB0ZXh0UnVuLnNldFRh
YlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwogICAg
ICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyByZWN0LngoKSArIHBhaW50T2Zmc2V0LngoKSwg
cm91bmRUb0RldmljZVBpeGVsKGJhc2VsaW5lLCBkZXZpY2VTY2FsZUZhY3RvcikgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oCmluZGV4IDlkY2EwMTI3OTI0ZC4uZDQzZmQ5MzkxMjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0yOCw5ICsyOCw5IEBACiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJMYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgot
I2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RF
bnVtcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Nyw4ICs3Nyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCk7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiAKLSAgICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0
Qm94SXRlcmF0b3IgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKLSAgICBM
aW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihjb25z
dCBSZW5kZXJMaW5lQnJlYWsmKSBjb25zdDsKKyAgICBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bnNG
b3IoY29uc3QgUmVuZGVyVGV4dCYpIGNvbnN0OworICAgIEVsZW1lbnRSdW5JdGVyYXRvciBlbGVt
ZW50UnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpIGNvbnN0OwogCiAgICAgc3RhdGljIHZv
aWQgcmVsZWFzZUNhY2hlcyhSZW5kZXJWaWV3Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCnNp
bWlsYXJpdHkgaW5kZXggNjYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKaW5kZXggODVm
ODhlZjIyODZiLi4zNGEyNjc2ZGQyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtMjQs
NDkgKzI0LDQ5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxpbmVM
YXlvdXRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgiCiAKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9ja0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExpbmVMYXlvdXRUcmF2ZXJzYWwgeworbmFtZXNw
YWNlIExheW91dEludGVncmF0aW9uIHsKIAotVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0
b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQotICAgIDogbV90ZXh0Qm94KFdURk1v
dmUocGF0aFZhcmlhbnQpKQorVGV4dFJ1bkl0ZXJhdG9yOjpUZXh0UnVuSXRlcmF0b3IoUnVuOjpQ
YXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQorICAgIDogbV90ZXh0UnVuKFdURk1vdmUocGF0aFZh
cmlhbnQpKQogewogfQogCi1UZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0SW5WaXN1YWxPcmRlcigpCitUZXh0UnVuSXRlcmF0b3ImIFRleHRSdW5JdGVyYXRvcjo6
dHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3RleHRC
b3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV90
ZXh0UnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50cmF2
ZXJzZU5leHRUZXh0Qm94SW5WaXN1YWxPcmRlcigpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhp
czsKIH0KIAotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dElu
VGV4dE9yZGVyKCkKK1RleHRSdW5JdGVyYXRvciYgVGV4dFJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRJblRleHRPcmRlcigpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3RleHRCb3gubV9wYXRoVmFy
aWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV90ZXh0UnVuLm1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50cmF2ZXJzZU5leHRUZXh0
Qm94SW5UZXh0T3JkZXIoKTsKICAgICB9KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWJvb2wg
VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIp
IGNvbnN0Citib29sIFRleHRSdW5JdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBUZXh0UnVuSXRl
cmF0b3ImIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX3RleHRCb3gubV9wYXRoVmFyaWFudC5p
bmRleCgpICE9IG90aGVyLm1fdGV4dEJveC5tX3BhdGhWYXJpYW50LmluZGV4KCkpCisgICAgaWYg
KG1fdGV4dFJ1bi5tX3BhdGhWYXJpYW50LmluZGV4KCkgIT0gb3RoZXIubV90ZXh0UnVuLm1fcGF0
aFZhcmlhbnQuaW5kZXgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV90ZXh0Qm94Lm1fcGF0aFZhcmlhbnQsIFsmXShjb25zdCBhdXRvJiBwYXRo
KSB7Ci0gICAgICAgIHJldHVybiBwYXRoID09IFdURjo6Z2V0PHN0ZDo6ZGVjYXlfdDxkZWNsdHlw
ZShwYXRoKT4+KG90aGVyLm1fdGV4dEJveC5tX3BhdGhWYXJpYW50KTsKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX3RleHRSdW4ubV9wYXRoVmFyaWFudCwgWyZdKGNvbnN0IGF1dG8mIHBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIHBhdGggPT0gV1RGOjpnZXQ8c3RkOjpkZWNheV90PGRlY2x0eXBl
KHBhdGgpPj4ob3RoZXIubV90ZXh0UnVuLm1fcGF0aFZhcmlhbnQpOwogICAgIH0pOwogfQogCi1i
b29sIFRleHRCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorYm9vbCBUZXh0UnVuSXRlcmF0b3I6
OmF0RW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3RleHRCb3gubV9w
YXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
dGV4dFJ1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBw
YXRoLmF0RW5kKCk7CiAgICAgfSk7CiB9CkBAIC03OSwxOSArNzksMTkgQEAgc3RhdGljIGNvbnN0
IFJlbmRlckJsb2NrRmxvdyogbGluZUxheW91dFN5c3RlbUZsb3dGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJl
ci5wYXJlbnQoKSk7CiB9CiAKLVRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3Qg
UmVuZGVyVGV4dCYgdGV4dCkKK1RleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3Qg
UmVuZGVyVGV4dCYgdGV4dCkKIHsKICAgICBpZiAoYXV0byogZmxvdyA9IGxpbmVMYXlvdXRTeXN0
ZW1GbG93Rm9yUmVuZGVyZXIodGV4dCkpIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKICAgICAgICAgaWYgKGF1dG8qIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dCA9IGZsb3ctPmxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpKQotICAgICAg
ICAgICAgcmV0dXJuIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC0+dGV4dEJveGVz
Rm9yKHRleHQpOworICAgICAgICAgICAgcmV0dXJuIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGlu
ZUxheW91dC0+dGV4dFJ1bnNGb3IodGV4dCk7CiAjZW5kaWYKICAgICB9CiAKLSAgICByZXR1cm4g
eyBDb21wbGV4UGF0aCB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfSB9OworICAgIHJldHVybiB7IExl
Z2FjeVBhdGggeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH0gfTsKIH0KIAotVGV4dEJveEl0ZXJhdG9y
IGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCitUZXh0
UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dCkKIHsKICAgICBpZiAodGV4dC5maXJzdFRleHRCb3goKSAmJiB0ZXh0LmNvbnRhaW5zUmV2
ZXJzZWRUZXh0KCkpIHsKICAgICAgICAgVmVjdG9yPGNvbnN0IElubGluZVRleHRCb3gqPiBzb3J0
ZWRUZXh0Qm94ZXM7CkBAIC05OSwzOSArOTksMzkgQEAgVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAgICAgICAgICBz
b3J0ZWRUZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOwogICAgICAgICBzdGQ6OnNvcnQoc29ydGVk
VGV4dEJveGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOwogICAgICAgICBhdXRvKiBmaXJzdCA9IHNvcnRlZFRleHRCb3hlc1sw
XTsKLSAgICAgICAgcmV0dXJuIHsgQ29tcGxleFBhdGggeyBmaXJzdCwgV1RGTW92ZShzb3J0ZWRU
ZXh0Qm94ZXMpLCAwIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgTGVnYWN5UGF0aCB7IGZpcnN0LCBX
VEZNb3ZlKHNvcnRlZFRleHRCb3hlcyksIDAgfSB9OwogICAgIH0KIAotICAgIHJldHVybiBmaXJz
dFRleHRCb3hGb3IodGV4dCk7CisgICAgcmV0dXJuIGZpcnN0VGV4dFJ1bkZvcih0ZXh0KTsKIH0K
IAotVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQorVGV4
dFJ1blJhbmdlIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7Ci0gICAgcmV0
dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQpIH07CisgICAgcmV0dXJuIHsgZmlyc3RUZXh0UnVu
Rm9yKHRleHQpIH07CiB9CiAKLUVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9y
KEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKLSAgICA6IG1fYm94KFdURk1vdmUocGF0
aFZhcmlhbnQpKQorRWxlbWVudFJ1bkl0ZXJhdG9yOjpFbGVtZW50UnVuSXRlcmF0b3IoUnVuOjpQ
YXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQorICAgIDogbV9ydW4oV1RGTW92ZShwYXRoVmFyaWFu
dCkpCiB7CiB9CiAKLWJvb2wgRWxlbWVudEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Citib29s
IEVsZW1lbnRSdW5JdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAg
ICAgIHJldHVybiBwYXRoLmF0RW5kKCk7CiAgICAgfSk7CiB9CiAKLUVsZW1lbnRCb3hJdGVyYXRv
ciBlbGVtZW50Qm94Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVuZGVyRWxlbWVudCkKK0Vs
ZW1lbnRSdW5JdGVyYXRvciBlbGVtZW50UnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVu
ZGVyRWxlbWVudCkKIHsKICAgICBpZiAoYXV0byogZmxvdyA9IGxpbmVMYXlvdXRTeXN0ZW1GbG93
Rm9yUmVuZGVyZXIocmVuZGVyRWxlbWVudCkpIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKICAgICAgICAgaWYgKGF1dG8qIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGlu
ZUxheW91dCA9IGZsb3ctPmxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC0+ZWxlbWVu
dEJveEZvcihyZW5kZXJFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0
aW5nQ29udGV4dExpbmVMYXlvdXQtPmVsZW1lbnRSdW5Gb3IocmVuZGVyRWxlbWVudCk7CiAjZW5k
aWYKICAgICB9CiAKLSAgICByZXR1cm4geyBDb21wbGV4UGF0aChyZW5kZXJFbGVtZW50LmlubGlu
ZUJveFdyYXBwZXIoKSkgfTsKKyAgICByZXR1cm4geyBMZWdhY3lQYXRoKHJlbmRlckVsZW1lbnQu
aW5saW5lQm94V3JhcHBlcigpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCnNpbWlsYXJp
dHkgaW5kZXggNjUlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWwuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRleCAwMWY2OTg5N2QyZTYu
LjczZGNhYzI3ZGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKQEAgLTI2LDggKzI2LDggQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5saW5lRWxlbWVudEJveC5oIgotI2luY2x1ZGUgIkxp
bmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oIgotI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2
ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3JMZWdhY3lQYXRoLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ck1vZGVyblBhdGguaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zNSwyMyArMzUsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVu
ZGVyTGluZUJyZWFrOwogY2xhc3MgUmVuZGVyVGV4dDsKIAotbmFtZXNwYWNlIExpbmVMYXlvdXRU
cmF2ZXJzYWwgeworbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAotY2xhc3MgRWxlbWVu
dEJveEl0ZXJhdG9yOwotY2xhc3MgVGV4dEJveEl0ZXJhdG9yOworY2xhc3MgRWxlbWVudFJ1bkl0
ZXJhdG9yOworY2xhc3MgVGV4dFJ1bkl0ZXJhdG9yOwogCiBzdHJ1Y3QgRW5kSXRlcmF0b3IgeyB9
OwogCi1jbGFzcyBCb3ggeworY2xhc3MgUnVuIHsKIHB1YmxpYzoKICAgICB1c2luZyBQYXRoVmFy
aWFudCA9IFZhcmlhbnQ8CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0g
ICAgICAgIERpc3BsYXlSdW5QYXRoLAorICAgICAgICBNb2Rlcm5QYXRoLAogI2VuZGlmCi0gICAg
ICAgIENvbXBsZXhQYXRoCisgICAgICAgIExlZ2FjeVBhdGgKICAgICA+OwogCi0gICAgQm94KFBh
dGhWYXJpYW50JiYpOworICAgIFJ1bihQYXRoVmFyaWFudCYmKTsKIAogICAgIEZsb2F0UmVjdCBy
ZWN0KCkgY29uc3Q7CiAKQEAgLTY0LDE1ICs2NCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VM
aW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1aXJrKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAg
ICBmcmllbmQgY2xhc3MgRWxlbWVudEJveEl0ZXJhdG9yOwotICAgIGZyaWVuZCBjbGFzcyBUZXh0
Qm94SXRlcmF0b3I7CisgICAgZnJpZW5kIGNsYXNzIEVsZW1lbnRSdW5JdGVyYXRvcjsKKyAgICBm
cmllbmQgY2xhc3MgVGV4dFJ1bkl0ZXJhdG9yOwogCiAgICAgUGF0aFZhcmlhbnQgbV9wYXRoVmFy
aWFudDsKIH07CiAKLWNsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKK2NsYXNzIFRleHRSdW4g
OiBwdWJsaWMgUnVuIHsKIHB1YmxpYzoKLSAgICBUZXh0Qm94KFBhdGhWYXJpYW50JiYpOworICAg
IFRleHRSdW4oUGF0aFZhcmlhbnQmJik7CiAKICAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0Owog
ICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwpAQCAtODYsMTcxICs4NiwxNzEgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNMYXN0KCkgY29uc3Q7CiB9OwogCi1jbGFzcyBUZXh0Qm94SXRlcmF0b3Ig
eworY2xhc3MgVGV4dFJ1bkl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBUZXh0Qm94SXRlcmF0b3Io
KSA6IG1fdGV4dEJveChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07Ci0gICAgVGV4
dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJik7CisgICAgVGV4dFJ1bkl0ZXJhdG9yKCkg
OiBtX3RleHRSdW4oTGVnYWN5UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07CisgICAgVGV4dFJ1
bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJik7CiAKLSAgICBUZXh0Qm94SXRlcmF0b3ImIG9w
ZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7IH0KLSAgICBU
ZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsKLSAgICBUZXh0Qm94
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCk7CisgICAgVGV4dFJ1bkl0ZXJhdG9y
JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOyB9Cisg
ICAgVGV4dFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7CisgICAgVGV4
dFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOwogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRSdW5JdGVyYXRvciYp
IGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0UnVuSXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgYm9vbCBvcGVyYXRv
cj09KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiBhdEVuZCgpOyB9CiAgICAgYm9vbCBvcGVy
YXRvciE9KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCi0gICAgY29u
c3QgVGV4dEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Qm94OyB9Ci0gICAg
Y29uc3QgVGV4dEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3RleHRCb3g7IH0K
KyAgICBjb25zdCBUZXh0UnVuJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX3RleHRSdW47
IH0KKyAgICBjb25zdCBUZXh0UnVuKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fdGV4
dFJ1bjsgfQogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFRleHRC
b3ggbV90ZXh0Qm94OworICAgIFRleHRSdW4gbV90ZXh0UnVuOwogfTsKIAotY2xhc3MgRWxlbWVu
dEJveEl0ZXJhdG9yIHsKK2NsYXNzIEVsZW1lbnRSdW5JdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAg
RWxlbWVudEJveEl0ZXJhdG9yKCkgOiBtX2JveChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9
KSB7IH07Ci0gICAgRWxlbWVudEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJik7CisgICAg
RWxlbWVudFJ1bkl0ZXJhdG9yKCkgOiBtX3J1bihMZWdhY3lQYXRoIHsgbnVsbHB0ciwgeyB9IH0p
IHsgfTsKKyAgICBFbGVtZW50UnVuSXRlcmF0b3IoUnVuOjpQYXRoVmFyaWFudCYmKTsKIAogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCi0g
ICAgY29uc3QgQm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2JveDsgfQotICAgIGNv
bnN0IEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX2JveDsgfQorICAgIGNvbnN0
IFJ1biYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ydW47IH0KKyAgICBjb25zdCBSdW4q
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9ydW47IH0KIAogICAgIGJvb2wgYXRFbmQo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBCb3ggbV9ib3g7CisgICAgUnVuIG1fcnVuOwogfTsK
IAotY2xhc3MgVGV4dEJveFJhbmdlIHsKK2NsYXNzIFRleHRSdW5SYW5nZSB7CiBwdWJsaWM6Ci0g
ICAgVGV4dEJveFJhbmdlKFRleHRCb3hJdGVyYXRvciBiZWdpbikKKyAgICBUZXh0UnVuUmFuZ2Uo
VGV4dFJ1bkl0ZXJhdG9yIGJlZ2luKQogICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCiAgICAgewog
ICAgIH0KIAotICAgIFRleHRCb3hJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVn
aW47IH0KKyAgICBUZXh0UnVuSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2lu
OyB9CiAgICAgRW5kSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKIHByaXZh
dGU6Ci0gICAgVGV4dEJveEl0ZXJhdG9yIG1fYmVnaW47CisgICAgVGV4dFJ1bkl0ZXJhdG9yIG1f
YmVnaW47CiB9OwogCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRl
clRleHQmKTsKLVRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihjb25z
dCBSZW5kZXJUZXh0Jik7Ci1UZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRl
eHQmKTsKLUVsZW1lbnRCb3hJdGVyYXRvciBlbGVtZW50Qm94Rm9yKGNvbnN0IFJlbmRlckxpbmVC
cmVhayYpOworVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkZvcihjb25zdCBSZW5kZXJUZXh0
Jik7CitUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOworVGV4dFJ1blJhbmdlIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKTsK
K0VsZW1lbnRSdW5JdGVyYXRvciBlbGVtZW50UnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYp
OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1pbmxpbmUgQm94OjpCb3goUGF0aFZhcmlhbnQmJiBwYXRoKQoraW5saW5lIFJ1bjo6UnVuKFBh
dGhWYXJpYW50JiYgcGF0aCkKICAgICA6IG1fcGF0aFZhcmlhbnQoV1RGTW92ZShwYXRoKSkKIHsK
IH0KIAotaW5saW5lIEZsb2F0UmVjdCBCb3g6OnJlY3QoKSBjb25zdAoraW5saW5lIEZsb2F0UmVj
dCBSdW46OnJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZh
cmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgucmVjdCgpOwogICAg
IH0pOwogfQogCi1pbmxpbmUgZmxvYXQgQm94OjpiYXNlbGluZSgpIGNvbnN0CitpbmxpbmUgZmxv
YXQgUnVuOjpiYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9w
YXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5iYXNlbGlu
ZSgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSBjb25zdAoraW5saW5lIGJvb2wgUnVuOjppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBw
YXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAg
ICB9KTsKIH0KIAotaW5saW5lIGJvb2wgQm94Ojppc0hvcml6b250YWwoKSBjb25zdAoraW5saW5l
IGJvb2wgUnVuOjppc0hvcml6b250YWwoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgu
aXNIb3Jpem9udGFsKCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSBib29sIEJveDo6ZGlyT3ZlcnJp
ZGUoKSBjb25zdAoraW5saW5lIGJvb2wgUnVuOjpkaXJPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAg
ICAgICByZXR1cm4gcGF0aC5kaXJPdmVycmlkZSgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9v
bCBCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKK2lubGluZSBib29sIFJ1bjo6aXNMaW5lQnJlYWso
KSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1
dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguaXNMaW5lQnJlYWsoKTsKICAgICB9KTsK
IH0KIAotaW5saW5lIGJvb2wgQm94Ojp1c2VMaW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1aXJr
KCkgY29uc3QKK2lubGluZSBib29sIFJ1bjo6dXNlTGluZUJyZWFrQm94UmVuZGVyVHJlZUR1bXBR
dWlyaygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwg
W10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC51c2VMaW5lQnJlYWtCb3hSZW5k
ZXJUcmVlRHVtcFF1aXJrKCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSBib29sIFRleHRCb3g6Omhh
c0h5cGhlbigpIGNvbnN0CitpbmxpbmUgYm9vbCBUZXh0UnVuOjpoYXNIeXBoZW4oKSBjb25zdAog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgp
IHsKICAgICAgICAgcmV0dXJuIHBhdGguaGFzSHlwaGVuKCk7CiAgICAgfSk7CiB9CiAKLWlubGlu
ZSBUZXh0Qm94OjpUZXh0Qm94KFBhdGhWYXJpYW50JiYgcGF0aCkKLSAgICA6IEJveChXVEZNb3Zl
KHBhdGgpKQoraW5saW5lIFRleHRSdW46OlRleHRSdW4oUGF0aFZhcmlhbnQmJiBwYXRoKQorICAg
IDogUnVuKFdURk1vdmUocGF0aCkpCiB7CiB9CiAKLWlubGluZSBTdHJpbmdWaWV3IFRleHRCb3g6
OnRleHQoKSBjb25zdAoraW5saW5lIFN0cmluZ1ZpZXcgVGV4dFJ1bjo6dGV4dCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkg
ewogICAgICAgICByZXR1cm4gcGF0aC50ZXh0KCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSB1bnNp
Z25lZCBUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QKK2lubGluZSB1bnNpZ25lZCBU
ZXh0UnVuOjpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRo
LmxvY2FsU3RhcnRPZmZzZXQoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFRleHRC
b3g6OmxvY2FsRW5kT2Zmc2V0KCkgY29uc3QKK2lubGluZSB1bnNpZ25lZCBUZXh0UnVuOjpsb2Nh
bEVuZE9mZnNldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5sb2NhbEVuZE9mZnNl
dCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgdW5zaWduZWQgVGV4dEJveDo6bGVuZ3RoKCkgY29u
c3QKK2lubGluZSB1bnNpZ25lZCBUZXh0UnVuOjpsZW5ndGgoKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAg
cmV0dXJuIHBhdGgubGVuZ3RoKCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSBib29sIFRleHRCb3g6
OmlzTGFzdE9uTGluZSgpIGNvbnN0CitpbmxpbmUgYm9vbCBUZXh0UnVuOjppc0xhc3RPbkxpbmUo
KSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1
dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguaXNMYXN0T25MaW5lKCk7CiAgICAgfSk7
CiB9CiAKLWlubGluZSBib29sIFRleHRCb3g6OmlzTGFzdCgpIGNvbnN0CitpbmxpbmUgYm9vbCBU
ZXh0UnVuOjppc0xhc3QoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguaXNMYXN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJh
dmVyc2FsQ29tcGxleFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCnNpbWlsYXJpdHkgaW5kZXgg
OTElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRU
cmF2ZXJzYWxDb21wbGV4UGF0aC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAppbmRleCBh
NjZkYjdmY2I5MjguLjJkZWNkNjZkNDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JM
ZWdhY3lQYXRoLmgKQEAgLTMwLDExICszMCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExpbmVMYXlvdXRUcmF2ZXJzYWwgewor
bmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAotY2xhc3MgQ29tcGxleFBhdGggeworY2xh
c3MgTGVnYWN5UGF0aCB7CiBwdWJsaWM6Ci0gICAgQ29tcGxleFBhdGgoY29uc3QgSW5saW5lQm94
KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4mJiBzb3J0ZWRJbmxpbmVU
ZXh0Qm94ZXMgPSB7IH0sIHNpemVfdCBzb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggPSAwKQorICAg
IExlZ2FjeVBhdGgoY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBJbmxp
bmVUZXh0Qm94Kj4mJiBzb3J0ZWRJbmxpbmVUZXh0Qm94ZXMgPSB7IH0sIHNpemVfdCBzb3J0ZWRJ
bmxpbmVUZXh0Qm94SW5kZXggPSAwKQogICAgICAgICA6IG1faW5saW5lQm94KGlubGluZUJveCkK
ICAgICAgICAgLCBtX3NvcnRlZElubGluZVRleHRCb3hlcyhXVEZNb3ZlKHNvcnRlZElubGluZVRl
eHRCb3hlcykpCiAgICAgICAgICwgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXgoc29ydGVkSW5s
aW5lVGV4dEJveEluZGV4KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAr
K21fc29ydGVkSW5saW5lVGV4dEJveEluZGV4OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb21wbGV4UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94ID09
IG90aGVyLm1faW5saW5lQm94OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlZ2FjeVBh
dGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCA9PSBvdGhlci5tX2lubGluZUJv
eDsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7IH0KIAog
cHJpdmF0ZToKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zb3J0ZWRJ
bmxpbmVUZXh0Qm94SW5kZXggeyAwIH07CiB9OwogCi1pbmxpbmUgY29uc3QgSW5saW5lVGV4dEJv
eCogQ29tcGxleFBhdGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKSBjb25zdAoraW5s
aW5lIGNvbnN0IElubGluZVRleHRCb3gqIExlZ2FjeVBhdGg6Om5leHRJbmxpbmVUZXh0Qm94SW5U
ZXh0T3JkZXIoKSBjb25zdAogewogICAgIGlmICghbV9zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3NvcnRlZElubGluZVRleHRCb3hJbmRleCArIDEgPCBt
X3NvcnRlZElubGluZVRleHRCb3hlcy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yTW9kZXJuUGF0aC5oCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaAppbmRleCAwMWI3YTZjMzViNjYuLmQ0NTlmZTI5
NzRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTMx
LDI0ICszMSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBMaW5lTGF5
b3V0VHJhdmVyc2FsIHsKK25hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKIHN0YXRpYyBG
bG9hdFBvaW50IGxpbmVQb3NpdGlvbihmbG9hdCBsZWZ0LCBmbG9hdCB0b3ApCiB7CiAgICAgcmV0
dXJuIEZsb2F0UG9pbnQobGVmdCwgcm91bmRmKHRvcCkpOwogfQogCi1jbGFzcyBEaXNwbGF5UnVu
UGF0aCB7CitjbGFzcyBNb2Rlcm5QYXRoIHsKIHB1YmxpYzoKLSAgICBEaXNwbGF5UnVuUGF0aChj
b25zdCBEaXNwbGF5OjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBzaXplX3Qgc3RhcnRJ
bmRleCwgc2l6ZV90IGVuZEluZGV4KQorICAgIE1vZGVyblBhdGgoY29uc3QgRGlzcGxheTo6SW5s
aW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0SW5kZXgsIHNpemVfdCBlbmRJ
bmRleCkKICAgICAgICAgOiBtX2lubGluZUNvbnRlbnQoJmlubGluZUNvbnRlbnQpCiAgICAgICAg
ICwgbV9lbmRJbmRleChlbmRJbmRleCkKICAgICAgICAgLCBtX3J1bkluZGV4KHN0YXJ0SW5kZXgp
CiAgICAgeyB9Ci0gICAgRGlzcGxheVJ1blBhdGgoRGlzcGxheVJ1blBhdGgmJikgPSBkZWZhdWx0
OwotICAgIERpc3BsYXlSdW5QYXRoKGNvbnN0IERpc3BsYXlSdW5QYXRoJikgPSBkZWZhdWx0Owot
ICAgIERpc3BsYXlSdW5QYXRoJiBvcGVyYXRvcj0oY29uc3QgRGlzcGxheVJ1blBhdGgmKSA9IGRl
ZmF1bHQ7Ci0gICAgRGlzcGxheVJ1blBhdGgmIG9wZXJhdG9yPShEaXNwbGF5UnVuUGF0aCYmKSA9
IGRlZmF1bHQ7CisgICAgTW9kZXJuUGF0aChNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKKyAgICBN
b2Rlcm5QYXRoKGNvbnN0IE1vZGVyblBhdGgmKSA9IGRlZmF1bHQ7CisgICAgTW9kZXJuUGF0aCYg
b3BlcmF0b3I9KGNvbnN0IE1vZGVyblBhdGgmKSA9IGRlZmF1bHQ7CisgICAgTW9kZXJuUGF0aCYg
b3BlcmF0b3I9KE1vZGVyblBhdGgmJikgPSBkZWZhdWx0OwogCiAgICAgRmxvYXRSZWN0IHJlY3Qo
KSBjb25zdDsKIApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgdHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCkgeyAgdHJhdmVyc2VOZXh0VGV4dEJveEluVmlz
dWFsT3JkZXIoKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERpc3BsYXlSdW5QYXRo
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5l
Q29udGVudCAmJiBtX3J1bkluZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTW9kZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
Q29udGVudCA9PSBvdGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5t
X3J1bkluZGV4OyB9CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuSW5kZXgg
PT0gbV9lbmRJbmRleDsgfQogCiBwcml2YXRlOgpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6
CiAgICAgc2l6ZV90IG1fcnVuSW5kZXggeyAwIH07CiB9OwogCi1pbmxpbmUgRmxvYXRSZWN0IERp
c3BsYXlSdW5QYXRoOjpyZWN0KCkgY29uc3QKK2lubGluZSBGbG9hdFJlY3QgTW9kZXJuUGF0aDo6
cmVjdCgpIGNvbnN0CiB7CiAgICAgYXV0byByZWN0ID0gcnVuKCkucmVjdCgpOwogICAgIGF1dG8g
cG9zaXRpb24gPSBsaW5lUG9zaXRpb24ocmVjdC54KCksIHJlY3QueSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYWVjMWIzNDE2MmFjLi45
MTRjMzE0MWExNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MV0JSRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNp
bmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAg
LTE3MCw3ICsxNzAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpbmVCcmVhazo6bG9jYWxDYXJldFJl
Y3QoSW5saW5lQm94KiBpbmxpbmVCb3gsIHVuc2lnbmVkIGNhcmV0TwogCiBJbnRSZWN0IFJlbmRl
ckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgYXV0byBib3ggPSBM
aW5lTGF5b3V0VHJhdmVyc2FsOjplbGVtZW50Qm94Rm9yKCp0aGlzKTsKKyAgICBhdXRvIGJveCA9
IExheW91dEludGVncmF0aW9uOjplbGVtZW50UnVuRm9yKCp0aGlzKTsKICAgICBpZiAoIWJveCkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIEludFJlY3QgUmVuZGVy
TGluZUJyZWFrOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIAogSW50UmVjdCBSZW5kZXJMaW5l
QnJlYWs6OmJvdW5kaW5nQm94Rm9yUmVuZGVyVHJlZUR1bXAoKSBjb25zdAogewotICAgIGF1dG8g
Ym94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgYXV0
byBib3ggPSBMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVudFJ1bkZvcigqdGhpcyk7CiAgICAgaWYg
KCFib3gpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBJbnRSZWN0
IFJlbmRlckxpbmVCcmVhazo6Ym91bmRpbmdCb3hGb3JSZW5kZXJUcmVlRHVtcCgpIGNvbnN0CiAK
IHZvaWQgUmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKLSAgICBh
dXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAg
IGF1dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1lbnRSdW5Gb3IoKnRoaXMpOwogICAg
IGlmICghYm94KQogICAgICAgICByZXR1cm47CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJl
bmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRQb2ludCYgYQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewotICAgIGF1
dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAg
YXV0byBib3ggPSBMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVudFJ1bkZvcigqdGhpcyk7CiAgICAg
aWYgKCFib3gpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCmluZGV4IDhlMGViMjc4Y2M0ZS4uMzI3MjIxN2VlZmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCiAjaW5jbHVkZSAi
SW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKKyNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0Lmgi
CkBAIC0zMDMsOCArMzAzLDggQEAgU3RyaW5nIFJlbmRlclRleHQ6Om9yaWdpbmFsVGV4dCgpIGNv
bnN0CiAKIHZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAg
Zm9yIChhdXRvJiBib3ggOiBMaW5lTGF5b3V0VHJhdmVyc2FsOjp0ZXh0Qm94ZXNGb3IoKnRoaXMp
KSB7Ci0gICAgICAgIGF1dG8gcmVjdCA9IGJveC5yZWN0KCk7CisgICAgZm9yIChhdXRvJiBydW4g
OiBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bnNGb3IoKnRoaXMpKSB7CisgICAgICAgIGF1dG8g
cmVjdCA9IHJ1bi5yZWN0KCk7CiAgICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0
KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIHJlY3QubG9jYXRpb24oKSwgcmVjdC5zaXpl
KCkpKSk7CiAgICAgfQogfQpAQCAtNDA4LDggKzQwOCw4IEBAIHN0YXRpYyBWZWN0b3I8RmxvYXRR
dWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkc0Zvck5vbkNvbXBsZXhQYXRocyhjb25zdCBSZW5kZXJU
ZXh0CiAgICAgQVNTRVJUKCF0ZXh0UmVuZGVyZXIudXNlc0NvbXBsZXhMaW5lTGF5b3V0UGF0aCgp
KTsKIAogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgIGZvciAoYXV0byYgYm94IDog
TGluZUxheW91dFRyYXZlcnNhbDo6dGV4dEJveGVzRm9yKHRleHRSZW5kZXJlcikpCi0gICAgICAg
IHF1YWRzLmFwcGVuZCh0ZXh0UmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQo
Ym94LnJlY3QoKSksIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CisgICAgZm9yIChhdXRvJiBy
dW4gOiBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bnNGb3IodGV4dFJlbmRlcmVyKSkKKyAgICAg
ICAgcXVhZHMuYXBwZW5kKHRleHRSZW5kZXJlci5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVh
ZChydW4ucmVjdCgpKSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKICAgICByZXR1cm4gcXVh
ZHM7CiB9CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPj4gUmVuZGVyVGV4dDo6ZHJhZ2dlZENvbnRlbnRSYW5nZXNCZXR3ZWVuT2ZmCiAK
IEludFBvaW50IFJlbmRlclRleHQ6OmZpcnN0UnVuTG9jYXRpb24oKSBjb25zdAogewotICAgIGF1
dG8gZmlyc3QgPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOwor
ICAgIGF1dG8gZmlyc3QgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlz
KTsKICAgICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBJbnRQ
b2ludChmaXJzdC0+cmVjdCgpLmxvY2F0aW9uKCkpOwpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgZmxv
YXQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBjb25zdCBG
b250Q2FzY2FkZSYgZiwgZmxvYXQKIAogSW50UmVjdCBSZW5kZXJUZXh0OjpsaW5lc0JvdW5kaW5n
Qm94KCkgY29uc3QKIHsKLSAgICBhdXRvIGZpcnN0ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmly
c3RUZXh0Qm94Rm9yKCp0aGlzKTsKKyAgICBhdXRvIGZpcnN0ID0gTGF5b3V0SW50ZWdyYXRpb246
OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7CiAgICAgaWYgKCFmaXJzdCkKICAgICAgICAgcmV0dXJu
IHsgfTsKIApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXAKIAog
aW50IFJlbmRlclRleHQ6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKIHsKLSAgICBhdXRvIGZpcnN0
ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94Rm9yKCp0aGlzKTsKKyAgICBhdXRv
IGZpcnN0ID0gTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7CiAgICAg
aWYgKCFmaXJzdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIGlu
dCBSZW5kZXJUZXh0OjpjYXJldE1pbk9mZnNldCgpIGNvbnN0CiAKIGludCBSZW5kZXJUZXh0Ojpj
YXJldE1heE9mZnNldCgpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IExpbmVMYXlvdXRUcmF2
ZXJzYWw6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdCA9IExheW91dElu
dGVncmF0aW9uOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOwogICAgIGlmICghZmlyc3QpCiAgICAg
ICAgIHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7CiAKQEAgLTE0NzEsOSArMTQ3MSw5IEBAIGludCBS
ZW5kZXJUZXh0OjpjYXJldE1heE9mZnNldCgpIGNvbnN0CiB1bnNpZ25lZCBSZW5kZXJUZXh0Ojpj
b3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHVuc2lnbmVkIG9mZnNldCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoYXV0byYgYm94IDogTGluZUxh
eW91dFRyYXZlcnNhbDo6dGV4dEJveGVzRm9yKCp0aGlzKSkgewotICAgICAgICBhdXRvIHN0YXJ0
ID0gYm94LmxvY2FsU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgYXV0byBsZW5ndGggPSBib3gubGVu
Z3RoKCk7CisgICAgZm9yIChhdXRvJiBydW4gOiBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bnNG
b3IoKnRoaXMpKSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBydW4ubG9jYWxTdGFydE9mZnNldCgp
OworICAgICAgICBhdXRvIGxlbmd0aCA9IHJ1bi5sZW5ndGgoKTsKICAgICAgICAgaWYgKG9mZnNl
dCA8IHN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKG9mZnNl
dCA8PSBzdGFydCArIGxlbmd0aCkgewpAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgdW5zaWduZWQgUmVu
ZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh1bnNpZ25lZCBvZmZz
ZXQpIGNvbnN0CiBlbnVtIGNsYXNzIE9mZnNldFR5cGUgeyBDaGFyYWN0ZXIsIENhcmV0IH07CiBz
dGF0aWMgYm9vbCBjb250YWluc09mZnNldChjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25l
ZCBvZmZzZXQsIE9mZnNldFR5cGUgdHlwZSkKIHsKLSAgICBmb3IgKGF1dG8gYm94ID0gTGluZUxh
eW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IodGV4dCk7IGJveDsgYm94
LnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkpIHsKKyAgICBmb3IgKGF1dG8gYm94ID0gTGF5b3V0
SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHRleHQpOyBib3g7IGJveC50
cmF2ZXJzZU5leHRJblRleHRPcmRlcigpKSB7CiAgICAgICAgIGF1dG8gc3RhcnQgPSBib3gtPmxv
Y2FsU3RhcnRPZmZzZXQoKTsKICAgICAgICAgaWYgKG9mZnNldCA8IHN0YXJ0KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgYm9vbCBSZW5kZXJUZXh0Ojpj
b250YWluc0NhcmV0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIAogYm9vbCBSZW5kZXJU
ZXh0OjpoYXNSZW5kZXJlZFRleHQoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgYm94IDogTGlu
ZUxheW91dFRyYXZlcnNhbDo6dGV4dEJveGVzRm9yKCp0aGlzKSkgeworICAgIGZvciAoYXV0byYg
Ym94IDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKCp0aGlzKSkgewogICAgICAgICBp
ZiAoYm94Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGU4MmY3OWYy
NDI4Zi4uNzVhZGEyOGU2MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgotI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBy
aW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKQEAgLTIwMyw3ICsyMDMs
NyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgIC8vIG1hbnkgdGVzdCByZXN1bHRz
LgogICAgICAgICBjb25zdCBSZW5kZXJUZXh0JiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
byk7CiAgICAgICAgIHIgPSBJbnRSZWN0KHRleHQuZmlyc3RSdW5Mb2NhdGlvbigpLCB0ZXh0Lmxp
bmVzQm91bmRpbmdCb3goKS5zaXplKCkpOwotICAgICAgICBpZiAoIUxpbmVMYXlvdXRUcmF2ZXJz
YWw6OmZpcnN0VGV4dEJveEZvcih0ZXh0KSkKKyAgICAgICAgaWYgKCFMYXlvdXRJbnRlZ3JhdGlv
bjo6Zmlyc3RUZXh0UnVuRm9yKHRleHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9yVGFibGVDZWxs
cyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAgY29uc3QgUmVu
ZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7CkBAIC00Nzgs
MjYgKzQ3OCwyNiBAQCB2b2lkIHdyaXRlRGVidWdJbmZvKFRleHRTdHJlYW0mIHRzLCBjb25zdCBS
ZW5kZXJPYmplY3QmIG9iamVjdCwgT3B0aW9uU2V0PFJlbmRlcgogICAgIH0KIH0KIAotc3RhdGlj
IHZvaWQgd3JpdGVUZXh0Qm94KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJUZXh0JiBvLCBj
b25zdCBMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94JiB0ZXh0Qm94KQorc3RhdGljIHZvaWQg
d3JpdGVUZXh0UnVuKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJUZXh0JiBvLCBjb25zdCBM
YXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1biYgdGV4dFJ1bikKIHsKLSAgICBhdXRvIHJlY3QgPSB0
ZXh0Qm94LnJlY3QoKTsKKyAgICBhdXRvIHJlY3QgPSB0ZXh0UnVuLnJlY3QoKTsKICAgICBpbnQg
eCA9IHJlY3QueCgpOwogICAgIGludCB5ID0gcmVjdC55KCk7CiAgICAgLy8gRklYTUU6IFVzZSBu
b24tbG9naWNhbCB3aWR0aC4gd2Via2l0Lm9yZy9iLzIwNjgwOS4KLSAgICBpbnQgbG9naWNhbFdp
ZHRoID0gY2VpbGYocmVjdC54KCkgKyAodGV4dEJveC5pc0hvcml6b250YWwoKSA/IHJlY3Qud2lk
dGgoKSA6IHJlY3QuaGVpZ2h0KCkpKSAtIHg7CisgICAgaW50IGxvZ2ljYWxXaWR0aCA9IGNlaWxm
KHJlY3QueCgpICsgKHRleHRSdW4uaXNIb3Jpem9udGFsKCkgPyByZWN0LndpZHRoKCkgOiByZWN0
LmhlaWdodCgpKSkgLSB4OwogICAgIC8vIEZJWE1FOiBUYWJsZSBjZWxsIGFkanVzdG1lbnQgaXMg
dGVtcG9yYXJ5IHVudGlsIHJlc3VsdHMgY2FuIGJlIHVwZGF0ZWQuCiAgICAgaWYgKGlzPFJlbmRl
clRhYmxlQ2VsbD4oKm8uY29udGFpbmluZ0Jsb2NrKCkpKQogICAgICAgICB5IC09IGZsb29yVG9J
bnQoZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqby5jb250YWluaW5nQmxvY2soKSkuaW50cmlu
c2ljUGFkZGluZ0JlZm9yZSgpKTsKICAgICAgICAgCiAgICAgdHMgPDwgInRleHQgcnVuIGF0ICgi
IDw8IHggPDwgIiwiIDw8IHkgPDwgIikgd2lkdGggIiA8PCBsb2dpY2FsV2lkdGg7Ci0gICAgaWYg
KCF0ZXh0Qm94LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCB0ZXh0Qm94LmRpck92ZXJyaWRl
KCkpIHsKLSAgICAgICAgdHMgPDwgKCF0ZXh0Qm94LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/
ICIgUlRMIiA6ICIgTFRSIik7Ci0gICAgICAgIGlmICh0ZXh0Qm94LmRpck92ZXJyaWRlKCkpCisg
ICAgaWYgKCF0ZXh0UnVuLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCB0ZXh0UnVuLmRpck92
ZXJyaWRlKCkpIHsKKyAgICAgICAgdHMgPDwgKCF0ZXh0UnVuLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA/ICIgUlRMIiA6ICIgTFRSIik7CisgICAgICAgIGlmICh0ZXh0UnVuLmRpck92ZXJyaWRl
KCkpCiAgICAgICAgICAgICB0cyA8PCAiIG92ZXJyaWRlIjsKICAgICB9CiAgICAgdHMgPDwgIjog
IgotICAgICAgICA8PCBxdW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXModGV4dEJveC50ZXh0KCkp
OwotICAgIGlmICh0ZXh0Qm94Lmhhc0h5cGhlbigpKQorICAgICAgICA8PCBxdW90ZUFuZEVzY2Fw
ZU5vblByaW50YWJsZXModGV4dFJ1bi50ZXh0KCkpOworICAgIGlmICh0ZXh0UnVuLmhhc0h5cGhl
bigpKQogICAgICAgICB0cyA8PCAiICsgaHlwaGVuIHN0cmluZyAiIDw8IHF1b3RlQW5kRXNjYXBl
Tm9uUHJpbnRhYmxlcyhvLnN0eWxlKCkuaHlwaGVuU3RyaW5nKCkuc3RyaW5nKCkpOwogICAgIHRz
IDw8ICJcbiI7CiB9CkBAIC01NDYsOSArNTQ2LDkgQEAgdm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0
cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4gYmUK
IAogICAgIGlmIChpczxSZW5kZXJUZXh0PihvKSkgewogICAgICAgICBhdXRvJiB0ZXh0ID0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4obyk7Ci0gICAgICAgIGZvciAoYXV0byYgdGV4dEJveCA6IExpbmVM
YXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0Zvcih0ZXh0KSkgeworICAgICAgICBmb3IgKGF1dG8m
IHJ1biA6IExheW91dEludGVncmF0aW9uOjp0ZXh0UnVuc0Zvcih0ZXh0KSkgewogICAgICAgICAg
ICAgdHMgPDwgaW5kZW50OwotICAgICAgICAgICAgd3JpdGVUZXh0Qm94KHRzLCB0ZXh0LCB0ZXh0
Qm94KTsKKyAgICAgICAgICAgIHdyaXRlVGV4dFJ1bih0cywgdGV4dCwgcnVuKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlw
ZTxSZW5kZXJPYmplY3Q+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG8pKSkgewo=
</data>
<flag name="commit-queue"
          id="425693"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409872</attachid>
            <date>2020-09-28 01:09:08 -0700</date>
            <delta_ts>2020-09-28 01:24:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textruniterator-naming-2.patch</filename>
            <type>text/plain</type>
            <size>62979</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNmFhNTRhNTVhMzkuLjQ2NTdkMmI4YWMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwMSBAQAorMjAyMC0wOS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIE1vdmUgcnVuIGl0ZXJhdG9yIHRvIExh
eW91dEludGVncmF0aW9uIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyB1c2UgbmFtZSAnTW9kZXJuJyBmb3IgTEZDIGFuZCAnTGVn
YWN5JyBmb3IgdGhlIG9sZCBpbmxpbmUgdHJlZSBwYXRoLgorCisgICAgICAgIEFsc28gcmVuYW1l
IGJveC0+cnVuIGZvciBtb3JlIGNvbnNpc3RlbnQgdGVybWlub2xvZ3kuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Ojp1cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVh
bSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
dGV4dFJ1bnNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OmVsZW1lbnRSdW5Gb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmVsZW1l
bnRCb3hGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRl
eHRSdW5JdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpFbGVtZW50UnVuSXRlcmF0b3I6OkVsZW1lbnRSdW5JdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjph
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVu
dFJ1bkZvcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRUcmF2ZXJzYWwuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5J
dGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkVsZW1lbnRSdW5JdGVyYXRvcjo6RWxlbWVudFJ1bkl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpFbGVtZW50UnVu
SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuUmFuZ2U6OlRleHRSdW5SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1blJhbmdlOjpiZWdp
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6cmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpiYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpSdW46OmlzSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuOjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjp1c2VMaW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1
aXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVu
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OlRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlRleHRSdW46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuOjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmlzTGFzdE9uTGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bjo6
aXNMYXN0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OkxlZ2FjeVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBh
dGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TW9kZXJuUGF0aDo6TW9kZXJuUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGluZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFi
c29sdXRlUXVhZHNGb3JOb25Db21wbGV4UGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6Zmlyc3RSdW5Mb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpsaW5lc0JvdW5kaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNhcmV0TWluT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNv
dW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGFpbnNPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6aGFzUmVu
ZGVyZWRUZXh0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUZXh0Qm94KTogRGVsZXRlZC4KKwogMjAy
MC0wOS0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJLaXRMZWdhY3kgc2hvdWxkIGNhbGwgUGFnZTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBhNTcyY2U5NDIwZjQuLjg1Y2EwNGE2YTg5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE0NjgsNiArMTQ2OCw3IEBAIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25D
b3ZlcmFnZS5jcHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNw
cAorbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCiBs
YXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvbkNvbnRleHQuY3BwCiBsYXlvdXQvaW52YWxp
ZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcApAQCAtMjIxNiw3ICsyMjE3LDYgQEAgcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAogcmVu
ZGVyaW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5jcHAKIHJlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmNwcAogcmVuZGVyaW5nL2xpbmUvTGluZUluZm8uY3BwCi1yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAogcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAog
cmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcAogcmVuZGVyaW5nL21hdGhtbC9NYXRo
TUxTdHlsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1YjliYTljZTlkOTAuLjAxZmVkZjUxNDlhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk4NSw3
ICs0OTg1LDYgQEAKIAkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFBy
aW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDI5NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDJFNzZEQzFDN0FG
Nzc2MDBFMzYxNEQgLyogU3R5bGVVcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0MkU3NkRCMUM3QUY3NzYwMEUzNjE0RCAvKiBTdHlsZVVwZGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDMxMDVCQTE2NzUwRjE2MDBEQjJGQjgg
LyogTm9kZVRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUU0MzQzRDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVy
c2FsQ29tcGxleFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0MzQzRDI0MjM5Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29t
cGxleFBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFNDNBMDIzQjE3RUIzNzBBMDA0Q0REMjUgLyogUmVuZGVyRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzQTAyM0ExN0VCMzcwQTAw
NENERDI1IC8qIFJlbmRlckVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNDNBRjhFNzFBQzVCN0VDMDBDQTcxN0UgLyogQ2FjaGVWYWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDNBRjhFNTFBQzVCN0REMDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ0MEFBOTYxQzY4NDIwODAw
QTI2NUNDIC8qIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQwQUE5NTFDNjg0MjA4MDBBMjY1
Q0MgLyogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgfTsKQEAgLTUwMDgs
NyArNTAwNyw2IEBACiAJCUU0NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNDFFMzQw
Q0JGQjYwOTAwQUYyRUNFIC8qIFJlbmRlclZpZGVvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ0QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNl
bGVjdG9yQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovOyB9
OwogCQlFNDRGQTE4NTFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEZBMTg0MUJD
QTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oICovOyB9OwotCQlFNDUxQzYy
ODIzOTI5M0VDMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYyNzIz
OTI5M0VCMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzEy
Mzk0MDI3OTAwOTkzMTkwIC8qIExheW91dFVuaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5b3V0
VW5pdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDUxQzYzMjIzOTQwMzFBMDA5OTMxOTAgLyogTWFyZ2luVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRTdBQTI2MjFDMzdCNjMwMDI5NkRD
RCAvKiBNYXJnaW5UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29u
dGVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1
MUM2MzMyMzk0MDU4RTAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwMzcsNyArNTAzNSw2
IEBACiAJCUU0N0MzOTMzMUZFNkUxMDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRp
Q29sdW1uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDdDMzkyNzFGRTZFMERDMDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5o
ICovOyB9OwogCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVl
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0Uy
NzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0ODEzN0I5MURCM0I1MjYw
MDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0
ODRBMzNFMjMwNTUzMjUwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg0QTMzQjIzMDU1MzAzMDA5
QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxl
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4
NjNDRkQyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggKi87IH07CiAJCUU0OTQ2RUFGMTU2
RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHls
ZVJ1bGVJbXBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlCRDlGOTEzMUZEMkVE
MDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggKi87IH07CkBAIC0xNTg1Myw3ICsxNTg1MCw2IEBA
CiAJCUU0MzEwNUJBMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQzMTJBQjUyNEIzMjY1NjAwNjc4MzQ5IC8qIExheW91dEludGVncmF0
aW9uUGFnaW5hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
YXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDMxMkFCNzI0QjMyNjU2MDA2NzgzNDkgLyogTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dEludGVncmF0aW9u
UGFnaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDM0M0QyNDIzOTI3
NzhGMDBFQkJCNjYgLyogTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDNBMDIzQTE3RUIzNzBBMDA0Q0REMjUg
LyogUmVuZGVyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0M0EwMjNDMTdFQjM3
MTMwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDNBRjhFNDFBQzVCN0REMDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlVmFsaWRhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTg5MSw3ICsxNTg4Nyw2IEBACiAJCUU0NEVF
M0E3MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRHZW5lcmljRmFtaWxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTQ0RkExODQxQkNBNkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2VkVHJlZUl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NEZBMTg2MUJDQTkxNTYwMDkxQjZFRiAvKiBDb21w
b3NlZFRyZWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb21wb3NlZFRyZWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUU0NTFDNjI3MjM5MjkzRUIwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1
blBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTFD
NjMzMjM5NDA1OEUwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5SW5saW5lQ29udGVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JR
dWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3RvclF1
ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzIyQUExNDBDRTI2NzAw
NUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU5NDAs
OCArMTU5MzUsNiBAQAogCQlFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5
bGVTaGVldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uU3R5
bGVTaGVldHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjcxNjAzNkVE
QzAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvblN0eWxlU2hlZXRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRp
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVWYWxpZGl0eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDg0QTMzQjIzMDU1MzAzMDA5QURFNkEgLyog
TGluZUxheW91dFRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5lTGF5b3V0VHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0ODRB
MzNEMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg2M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVs
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVsZURhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg2M0NGRDIzODQyRTlFMDA5NzIx
NTggLyogUnVsZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVsZURh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5NDZFQUMxNTZFNjRERDAwRDMy
OTdGIC8qIFN0eWxlUnVsZUltcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdHlsZVJ1bGVJbXBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTU5NTIsNiArMTU5NDUsMTAgQEAKIAkJRTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERh
dGFVUkxEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMTgyMkYx
RjEzQkU1ODAwRkVGNjk4IC8qIFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0QTFBQzc4MjJGQUZENTAwMDE3Qjc1QiAvKiBDb21wbGV4TGluZUxheW91dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV4TGluZUxheW91dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE2NjRDNDI1MjFCNzc3MDA3MDgxREMgLyog
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBNjY0QzUyNTIxQjc3ODAwNzA4MURD
IC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQ
YXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QTY2NEM2MjUyMUI3NzgwMDcw
ODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBNjY0QzcyNTIxQjc3OTAwNzA4MURDIC8qIExheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0QTc5OTRFMjBFRTRBRTEwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlckNvbnRleHQuaDsg
cGF0aCA9IHBhcnNlci9DU1NQYXJzZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0QTc5OTUwMjBFRTRBRTIwMEMxOTU2OCAvKiBDU1NQYXJzZXJDb250ZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckNvbnRleHQuY3Bw
OyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NDk1LDYgKzI4NDky
LDEwIEBACiAJCUU0RkI0QjFFMjM5NTM1NkYwMDNDMzM2QSAvKiBpbnRlZ3JhdGlvbiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTRBNjY0QzcyNTIxQjc3
OTAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwICovLAorCQkJCUU0
QTY2NEM2MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgg
Ki8sCisJCQkJRTRBNjY0QzUyNTIxQjc3ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JMZWdhY3lQYXRoLmggKi8sCisJCQkJRTRBNjY0QzQyNTIxQjc3NzAwNzA4MURDIC8q
IExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggKi8sCiAJCQkJRTQxODAy
NTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAgKi8sCiAJ
CQkJRTQxODAyNTMyM0Q0NTQ5QTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5o
ICovLAogCQkJCUU0MDNCNzlGMjUxQjExOEIwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNv
dmVyYWdlLmNwcCAqLywKQEAgLTMwMjQ0LDEwICszMDI0NSw2IEBACiAJCQkJRkZCNjk4Q0UxODMz
RjE3NjAwMTU4QTMxIC8qIExpbmVJbmZvLmggKi8sCiAJCQkJRkZFRkFCMkQxODNCQ0I2RjAwNTE0
NTM0IC8qIExpbmVJbmxpbmVIZWFkZXJzLmggKi8sCiAJCQkJRkZFRkFCMjkxODM4MERBMDAwNTE0
NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oICovLAotCQkJCUU0ODRBMzNEMjMwNTUzMDMwMDlBREU2
QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCAqLywKLQkJCQlFNDg0QTMzQjIzMDU1MzAzMDA5
QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oICovLAotCQkJCUU0MzQzRDI0MjM5Mjc3OEYw
MEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCAqLywKLQkJCQlFNDUx
QzYyNzIzOTI5M0VCMDA5OTMxOTAgLyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRo
LmggKi8sCiAJCQkJRkZEQkMwNDYxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5jcHAgKi8s
CiAJCQkJRkZEQkMwNDUxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oICovLAogCQkJCUZG
QUMzMEZEMTg0RkIxNDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuY3BwICovLApAQCAtMzI4
MjcsOSArMzI4MjQsNiBAQAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBMaW5lYXJH
cmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFCOEUw
MDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZFRkFCMkEx
ODM4MERBMDAwNTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUU0MzQzRDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVy
c2FsQ29tcGxleFBhdGguaCBpbiBIZWFkZXJzICovLAotCQkJCUU0NTFDNjI4MjM5MjkzRUMwMDk5
MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCBpbiBIZWFkZXJzICov
LAogCQkJCUZGREJDMDQ3MTgzRDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNCQTlEQzBCMURGNDRERjQwMDA1Njc1QyAvKiBMaW5rSGVhZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTQzQjI2MzFEREQxNTIwMDAxNEZBQzYgLyogTGlua0ljb24uaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMDcxYzgwYmFlNDg5Li42OWQz
Y2RmYzcyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgog
I2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2Fs
LmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUG9zaXRp
b25JdGVyYXRvci5oIgpAQCAtNzI4LDggKzcyOCw4IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0
cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgaWYg
KGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5k
ZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAKLSAgICAgICAgICAgIGF1
dG8gZmlyc3RUZXh0Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0
T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmICghZmlyc3RUZXh0Qm94KQor
ICAgICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RU
ZXh0UnVuSW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAgICAgIGlmICghZmly
c3RUZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAo
JmN1cnJlbnROb2RlICE9IHN0YXJ0Tm9kZSkgewpAQCAtNzQyLDE0ICs3NDIsMTQgQEAgUG9zaXRp
b24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBj
b25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0g
Y3VycmVudFBvc2l0aW9uLm9mZnNldEluTGVhZk5vZGUoKTsKLSAgICAgICAgICAgIGZvciAoYXV0
byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDsgYm94LnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA8PSBib3gtPmxvY2FsRW5kT2Zmc2V0
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPiBib3gtPmxvY2FsU3Rh
cnRPZmZzZXQoKSkKKyAgICAgICAgICAgIGZvciAoYXV0byBydW4gPSBmaXJzdFRleHRSdW47IHJ1
bjsgcnVuLnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
dGV4dE9mZnNldCA8PSBydW4tPmxvY2FsRW5kT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHRPZmZzZXQgPiBydW4tPmxvY2FsU3RhcnRPZmZzZXQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXh0
T2Zmc2V0ID09IGJveC0+bG9jYWxFbmRPZmZzZXQoKSArIDEgJiYgYm94LT5pc0xhc3RPbkxpbmUo
KSAmJiAhYm94LT5pc0xhc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBy
dW4tPmxvY2FsRW5kT2Zmc2V0KCkgKyAxICYmIHJ1bi0+aXNMYXN0T25MaW5lKCkgJiYgIXJ1bi0+
aXNMYXN0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTgzNSw4ICs4MzUsOCBAQCBQb3NpdGlvbiBQb3Np
dGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QK
ICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1
dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAKLSAg
ICAgICAgICAgIGF1dG8gZmlyc3RUZXh0Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RU
ZXh0Qm94SW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmICghZmly
c3RUZXh0Qm94KQorICAgICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3Jh
dGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAg
ICAgIGlmICghZmlyc3RUZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBpZiAoJmN1cnJlbnROb2RlICE9IHN0YXJ0Tm9kZSkgewpAQCAtODQ1LDE3ICs4NDUs
MTcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3Np
bmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVk
IHRleHRPZmZzZXQgPSBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpOwotICAgICAg
ICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0VGV4dEJveDsgYm94OyBib3gudHJhdmVyc2VOZXh0
SW5UZXh0T3JkZXIoKSkgewotICAgICAgICAgICAgICAgIGlmICghYm94LT5sZW5ndGgoKSAmJiB0
ZXh0T2Zmc2V0ID09IGJveC0+bG9jYWxTdGFydE9mZnNldCgpKQorICAgICAgICAgICAgZm9yIChh
dXRvIHJ1biA9IGZpcnN0VGV4dFJ1bjsgcnVuOyBydW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIo
KSkgeworICAgICAgICAgICAgICAgIGlmICghcnVuLT5sZW5ndGgoKSAmJiB0ZXh0T2Zmc2V0ID09
IHJ1bi0+bG9jYWxTdGFydE9mZnNldCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudFBvc2l0aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPCBib3gtPmxv
Y2FsRW5kT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPj0g
Ym94LT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQg
PCBydW4tPmxvY2FsRW5kT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRP
ZmZzZXQgPj0gcnVuLT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBi
b3gtPmxvY2FsRW5kT2Zmc2V0KCkgJiYgYm94LT5pc0xhc3RPbkxpbmUoKSAmJiAhYm94LT5pc0xh
c3QoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4tPmxvY2FsRW5kT2Zm
c2V0KCkgJiYgcnVuLT5pc0xhc3RPbkxpbmUoKSAmJiAhcnVuLT5pc0xhc3QoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDVlNTgxNGQ3
ZGY1ZC4uODNjYjYzMDFlNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCkBAIC00MzcsMTUgKzQzNywxNSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fdGV4dEJveCAmJiBtX3JlbWFpbmlu
Z1RleHRCb3gpIHsKLSAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdUZXh0Qm94OwotICAg
ICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSB7IH07CisgICAgaWYgKCFtX3RleHRSdW4gJiYgbV9y
ZW1haW5pbmdUZXh0UnVuKSB7CisgICAgICAgIG1fdGV4dFJ1biA9IG1fcmVtYWluaW5nVGV4dFJ1
bjsKKyAgICAgICAgbV9yZW1haW5pbmdUZXh0UnVuID0geyB9OwogICAgICAgICBtX2ZpcnN0TGV0
dGVyVGV4dCA9IHsgfTsKICAgICAgICAgbV9vZmZzZXQgPSAwOwogICAgIH0KICAgICAvLyBoYW5k
bGUgcmVtZW1iZXJlZCB0ZXh0IGJveAotICAgIGlmIChtX3RleHRCb3gpIHsKLSAgICAgICAgaGFu
ZGxlVGV4dEJveCgpOworICAgIGlmIChtX3RleHRSdW4pIHsKKyAgICAgICAgaGFuZGxlVGV4dFJ1
bigpOwogICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNTYzLDcgKzU2Myw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSgpCiAgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRlclRl
eHQtPnRleHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKm1fZmlyc3RM
ZXR0ZXJUZXh0LCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5sZW5ndGgoKSk7CiAg
ICAgICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBudWxscHRyOwotICAgICAgICAgICAg
ICAgIG1fdGV4dEJveCA9IHsgfTsKKyAgICAgICAgICAgICAgICBtX3RleHRSdW4gPSB7IH07CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC01ODAsNDQgKzU4MCw0NCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRCb3ggPSBMaW5lTGF5b3V0
VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihyZW5kZXJlcik7CisgICAgbV90
ZXh0UnVuID0gTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHJl
bmRlcmVyKTsKIAogICAgIGJvb2wgc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVk
Rmlyc3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zm
c2V0OwogICAgIGlmIChzaG91bGRIYW5kbGVGaXJzdExldHRlcikKICAgICAgICAgaGFuZGxlVGV4
dE5vZGVGaXJzdExldHRlcihkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7
CiAKLSAgICBpZiAoIW1fdGV4dEJveCAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3Vs
ZEhhbmRsZUZpcnN0TGV0dGVyKSB7CisgICAgaWYgKCFtX3RleHRSdW4gJiYgcmVuZGVyZXJUZXh0
Lmxlbmd0aCgpICYmICFzaG91bGRIYW5kbGVGaXJzdExldHRlcikgewogICAgICAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1f
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBz
ZWRTcGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaGFuZGxlVGV4dEJveCgpOworICAgIGhhbmRs
ZVRleHRSdW4oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3goKQordm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogeyAgICAK
ICAgICBUZXh0JiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCptX25vZGUpOwogCiAgICAgYXV0
byYgcmVuZGVyZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6ICp0
ZXh0Tm9kZS5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckln
bm9yZXNTdHlsZVZpc2liaWxpdHkpKSB7Ci0gICAgICAgIG1fdGV4dEJveCA9IHsgfTsKKyAgICAg
ICAgbV90ZXh0UnVuID0geyB9OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBm
aXJzdFRleHRCb3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRl
ckZvcihyZW5kZXJlcik7CisgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlv
bjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IocmVuZGVyZXIpOwogCiAgICAgU3RyaW5nIHJl
bmRlcmVyVGV4dCA9IHJlbmRlcmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zm
c2V0OwogICAgIHVuc2lnbmVkIGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwotICAgIHdoaWxl
IChtX3RleHRCb3gpIHsKLSAgICAgICAgdW5zaWduZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94
LT5sb2NhbFN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHVuc2lnbmVkIHJ1blN0YXJ0ID0gc3RkOjpt
YXgodGV4dEJveFN0YXJ0LCBzdGFydCk7CisgICAgd2hpbGUgKG1fdGV4dFJ1bikgeworICAgICAg
ICB1bnNpZ25lZCB0ZXh0UnVuU3RhcnQgPSBtX3RleHRSdW4tPmxvY2FsU3RhcnRPZmZzZXQoKTsK
KyAgICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0UnVuU3RhcnQsIHN0YXJ0
KTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFydCBv
ZiB0aGlzIHJ1bi4KLSAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSBtX2xhc3RUZXh0Tm9kZUVuZGVk
V2l0aENvbGxhcHNlZFNwYWNlIHx8IChtX3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRC
b3hTdGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCk7CisgICAgICAgIGJvb2wgbmVlZFNwYWNl
ID0gbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0UnVuID09
IGZpcnN0VGV4dFJ1biAmJiB0ZXh0UnVuU3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3RhcnQpOwog
ICAgICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVX
aGl0ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CiAgICAgICAg
ICAgICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gJnRleHROb2RlICYmIHJ1blN0YXJ0ICYmIHJlbmRl
cmVyVGV4dFtydW5TdGFydCAtIDFdID09ICcgJykgewogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHNwYWNlUnVuU3RhcnQgPSBydW5TdGFydCAtIDE7CkBAIC02MjgsMTIgKzYyOCwxMiBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIHRleHRCb3hFbmQgPSB0
ZXh0Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbmd0aCgpOwotICAgICAgICB1bnNpZ25lZCBydW5F
bmQgPSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOworICAgICAgICB1bnNpZ25lZCB0ZXh0UnVu
RW5kID0gdGV4dFJ1blN0YXJ0ICsgbV90ZXh0UnVuLT5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWdu
ZWQgcnVuRW5kID0gc3RkOjptaW4odGV4dFJ1bkVuZCwgZW5kKTsKICAgICAgICAgCi0gICAgICAg
IC8vIERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgYm94IHdpbGwgYmUsIGJ1dCBkb24ndCBh
ZHZhbmNlIHlldAotICAgICAgICBhdXRvIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAg
ICBuZXh0VGV4dEJveC50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOworICAgICAgICAvLyBEZXRl
cm1pbmUgd2hhdCB0aGUgbmV4dCB0ZXh0IHJ1biB3aWxsIGJlLCBidXQgZG9uJ3QgYWR2YW5jZSB5
ZXQKKyAgICAgICAgYXV0byBuZXh0VGV4dFJ1biA9IG1fdGV4dFJ1bjsKKyAgICAgICAgbmV4dFRl
eHRSdW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgICAgICBpZiAocnVuU3RhcnQg
PCBydW5FbmQpIHsKICAgICAgICAgICAgIGF1dG8gaXNOZXdsaW5lT3JUYWIgPSBbJl0oVUNoYXIg
Y2hhcmFjdGVyKSB7CkBAIC02NTIsOCArNjUyLDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHRCb3goKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmIChzdWJydW5FbmQgPT0gcnVuRW5kICYmIChtX2JlaGF2
aW9yICYgVGV4dEl0ZXJhdG9yQmVoYXZlc0FzSWZOb2Rlc0ZvbGxvd2luZykpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYm9vbCBsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25UZXh0Qm94ID0gIW5l
eHRUZXh0Qm94ICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSA+IHN1YnJ1bkVuZCAmJiByZW5kZXJl
clRleHRbc3VicnVuRW5kXSA9PSAnICc7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3Bh
Y2VDb2xsYXBzZWRCeU5leHROb25UZXh0Qm94KQorICAgICAgICAgICAgICAgICAgICBib29sIGxh
c3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRSdW4gPSAhbmV4dFRleHRSdW4gJiYgcmVuZGVy
ZXJUZXh0Lmxlbmd0aCgpID4gc3VicnVuRW5kICYmIHJlbmRlcmVyVGV4dFtzdWJydW5FbmRdID09
ICcgJzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5v
blRleHRSdW4pCiAgICAgICAgICAgICAgICAgICAgICAgICArK3N1YnJ1bkVuZDsgLy8gcnVuRW5k
IHN0b3BwZWQgYmVmb3JlIGxhc3Qgc3BhY2UuIEluY3JlbWVudCBieSBvbmUgdG8gcmVzdG9yZSB0
aGUgc3BhY2UuCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0g
c3VicnVuRW5kOwpAQCAtNjYyLDI1ICs2NjIsMjUgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHRCb3goKQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhh
dCBkb2Vzbid0IGdvIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LAogICAgICAgICAgICAgLy8g
Y29tZSBiYWNrIGFnYWluIHRvIGZpbmlzaCBoYW5kbGluZyB0aGlzIHRleHQgYm94OyBkb24ndCBh
ZHZhbmNlIHRvIHRoZSBuZXh0IG9uZS4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9wb3NpdGlvbkVuZE9mZnNldCkgPCB0ZXh0Qm94RW5kKQorICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRleHRSdW5FbmQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBBZHZhbmNlIGFuZCBy
ZXR1cm4KLSAgICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFydCA9IG5leHRUZXh0Qm94ID8g
bmV4dFRleHRCb3gtPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFydCA9IG5leHRUZXh0UnVuID8gbmV4dFRl
eHRSdW4tPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAg
ICAgICAgIGlmIChuZXh0UnVuU3RhcnQgPiBydW5FbmQpCiAgICAgICAgICAgICAgICAgbV9sYXN0
VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFj
ZSBiZXR3ZWVuIHJ1bnMgb3IgYXQgdGhlIGVuZAotICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4
dFRleHRCb3g7CisgICAgICAgICAgICBtX3RleHRSdW4gPSBuZXh0VGV4dFJ1bjsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBBZHZhbmNlIGFuZCBjb250aW51ZQot
ICAgICAgICBtX3RleHRCb3ggPSBuZXh0VGV4dEJveDsKKyAgICAgICAgbV90ZXh0UnVuID0gbmV4
dFRleHRSdW47CiAgICAgfQotICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJv
eCkgewotICAgICAgICBtX3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7Ci0gICAgICAgIG1f
cmVtYWluaW5nVGV4dEJveCA9IHsgfTsKKyAgICBpZiAoIW1fdGV4dFJ1biAmJiBtX3JlbWFpbmlu
Z1RleHRSdW4pIHsKKyAgICAgICAgbV90ZXh0UnVuID0gbV9yZW1haW5pbmdUZXh0UnVuOworICAg
ICAgICBtX3JlbWFpbmluZ1RleHRSdW4gPSB7IH07CiAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0
ID0geyB9OwogICAgICAgICBtX29mZnNldCA9IDA7Ci0gICAgICAgIGhhbmRsZVRleHRCb3goKTsK
KyAgICAgICAgaGFuZGxlVGV4dFJ1bigpOwogICAgIH0KIH0KIApAQCAtNzAwLDggKzcwMCw4IEBA
IHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRG
cmFnbWVudCYgcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRv
KiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0
dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwotICAgICAg
ICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICAgICAgbV90ZXh0
Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoKmZp
cnN0TGV0dGVyVGV4dCk7CisgICAgICAgICAgICBtX3JlbWFpbmluZ1RleHRSdW4gPSBtX3RleHRS
dW47CisgICAgICAgICAgICBtX3RleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0
UnVuSW5UZXh0T3JkZXJGb3IoKmZpcnN0TGV0dGVyVGV4dCk7CiAgICAgICAgICAgICBtX2ZpcnN0
TGV0dGVyVGV4dCA9IGZpcnN0TGV0dGVyVGV4dDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDlkZWE3MzNiNmIxZi4uMjJjNGI2ZTkyYmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIK
LSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMTYs
NyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVRleHROb2RlKCk7CiAgICAgYm9v
bCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7
Ci0gICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7CisgICAgdm9pZCBoYW5kbGVUZXh0UnVuKCk7CiAg
ICAgdm9pZCBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYpOwog
ICAgIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSYgY2hhcmFjdGVyTm9kZSwgTm9kZSog
b2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsK
ICAgICB2b2lkIGVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiwgaW50IHRleHRT
dGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwpAQCAtMTQ5LDEwICsxNDksMTAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4
dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3
ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRp
b25hbE5ld2xpbmUgeyBudWxscHRyIH07Ci0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJv
eEl0ZXJhdG9yIG1fdGV4dEJveDsKKyAgICBMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJh
dG9yIG1fdGV4dFJ1bjsKIAogICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciA6Zmlyc3Qt
bGV0dGVyIHRleHQgdG8gc2F2ZSBwb2ludGVyIHRvIHJlbWFpbmluZyB0ZXh0IGJveC4KLSAgICBM
aW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0Qm94Owor
ICAgIExheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0UnVu
OwogCiAgICAgLy8gVXNlZCB0byBwb2ludCB0byBSZW5kZXJUZXh0IG9iamVjdCBmb3IgOmZpcnN0
LWxldHRlci4KICAgICBSZW5kZXJUZXh0KiBtX2ZpcnN0TGV0dGVyVGV4dCB7IG51bGxwdHIgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNmM2ZDA2ZGUxNzNmLi41NDIx
MTg3OTQyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgRGlzcGxheTo6SW5saW5lQ29udGVudCYgTGluZUxheW91dDo6ZW5zdXJlRGlzcGxh
eUlubGluZUNvbnRlbnQoKQogICAgIHJldHVybiAqbV9kaXNwbGF5SW5saW5lQ29udGVudDsKIH0K
IAotTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRC
b3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAorTGF5b3V0SW50ZWdy
YXRpb246OlRleHRSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihjb25zdCBSZW5k
ZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAogewogICAgIGF1dG8qIGlubGluZUNvbnRlbnQgPSBk
aXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgIGlmICghaW5saW5lQ29udGVudCkKQEAgLTMxNiwx
MCArMzE2LDEwIEBAIExpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5
b3V0Ojp0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYKICAgICBpZiAoIWZpcnN0SW5kZXgp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyBMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpEaXNwbGF5UnVuUGF0aCgqaW5saW5lQ29udGVudCwgKmZpcnN0SW5kZXgsIGxhc3RJbmRleCAr
IDEpIH07CisgICAgcmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGgoKmlubGlu
ZUNvbnRlbnQsICpmaXJzdEluZGV4LCBsYXN0SW5kZXggKyAxKSB9OwogfQogCi1MaW5lTGF5b3V0
VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3IgTGluZUxheW91dDo6ZWxlbWVudEJveEZvcihj
b25zdCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckxpbmVCcmVhaykgY29uc3QKK0xheW91dEludGVn
cmF0aW9uOjpFbGVtZW50UnVuSXRlcmF0b3IgTGluZUxheW91dDo6ZWxlbWVudFJ1bkZvcihjb25z
dCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckxpbmVCcmVhaykgY29uc3QKIHsKICAgICBhdXRvKiBp
bmxpbmVDb250ZW50ID0gZGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBpZiAoIWlubGluZUNv
bnRlbnQpCkBAIC0zMzAsNyArMzMwLDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJv
eEl0ZXJhdG9yIExpbmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGkKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgYXV0byYgcnVuID0gIGlubGluZUNvbnRlbnQtPnJ1bnNbaV07CiAgICAgICAgIGlm
ICgmcnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiB7IExp
bmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoKCppbmxpbmVDb250ZW50LCBpLCBpICsg
MSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IExheW91dEludGVncmF0aW9uOjpNb2Rlcm5QYXRo
KCppbmxpbmVDb250ZW50LCBpLCBpICsgMSkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyB9OwpA
QCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgLy8gVGV4dFJ1
biBleHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVzdGVkIHdpdGggdGhlIGFsaWdtZW50IG9mZnNl
dCAoZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVkCiAgICAgICAgIC8vIGFuZCB0
aGUgcnVuIHN0YXJ0cyBhdCAxMDBweCwgZHVlIHRvIHRoZSBob3Jpem9udGFsIGFsaWdtZW50LCB0
aGUgeHBvcyBpcyBzdXBwb3NlZCB0byBiZSBhdCAwcHgpLgogICAgICAgICBhdXRvIHhQb3MgPSBy
ZWN0LngoKSAtIChsaW5lLnJlY3QoKS54KCkgKyBsaW5lLmhvcml6b250YWxBbGlnbm1lbnRPZmZz
ZXQoKSk7Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5
KCkgPyB0ZXh0V2l0aEh5cGhlbiA6IHRleHRDb250ZW50LmNvbnRlbnQoKSwgeFBvcywgZXhwYW5z
aW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBX
ZWJDb3JlOjpUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4
dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGVudC5jb250ZW50KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jp
em9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
ICAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54
KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZSwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCA5ZGNhMDEyNzkyNGQuLmQ0M2ZkOTM5
MTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMjgsOSArMjgsOSBAQAog
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUu
aCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0RW51bXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzcsOCArNzcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogCi0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6
VGV4dEJveEl0ZXJhdG9yIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7Ci0g
ICAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3Io
Y29uc3QgUmVuZGVyTGluZUJyZWFrJikgY29uc3Q7CisgICAgVGV4dFJ1bkl0ZXJhdG9yIHRleHRS
dW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKKyAgICBFbGVtZW50UnVuSXRlcmF0b3Ig
ZWxlbWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKSBjb25zdDsKIAogICAgIHN0YXRp
YyB2b2lkIHJlbGVhc2VDYWNoZXMoUmVuZGVyVmlldyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cApzaW1pbGFyaXR5IGluZGV4IDY2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCmluZGV4
IDg1Zjg4ZWYyMjg2Yi4uMzRhMjY3NmRkMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAg
LTI0LDQ5ICsyNCw0OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJM
aW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5oIgogCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKK25h
bWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKLSAgICA6IG1fdGV4dEJveChX
VEZNb3ZlKHBhdGhWYXJpYW50KSkKK1RleHRSdW5JdGVyYXRvcjo6VGV4dFJ1bkl0ZXJhdG9yKFJ1
bjo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fdGV4dFJ1bihXVEZNb3ZlKHBh
dGhWYXJpYW50KSkKIHsKIH0KIAotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRy
YXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKQorVGV4dFJ1bkl0ZXJhdG9yJiBUZXh0UnVuSXRlcmF0
b3I6OnRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKQogewotICAgIFdURjo6c3dpdGNoT24obV90
ZXh0Qm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9u
KG1fdGV4dFJ1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgu
dHJhdmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKTsKICAgICB9KTsKICAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLVRleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRJblRleHRPcmRlcigpCitUZXh0UnVuSXRlcmF0b3ImIFRleHRSdW5JdGVyYXRvcjo6dHJhdmVy
c2VOZXh0SW5UZXh0T3JkZXIoKQogewotICAgIFdURjo6c3dpdGNoT24obV90ZXh0Qm94Lm1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1fdGV4dFJ1bi5t
X3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0
VGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1i
b29sIFRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90
aGVyKSBjb25zdAorYm9vbCBUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgVGV4dFJ1
bkl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAobV90ZXh0Qm94Lm1fcGF0aFZhcmlh
bnQuaW5kZXgoKSAhPSBvdGhlci5tX3RleHRCb3gubV9wYXRoVmFyaWFudC5pbmRleCgpKQorICAg
IGlmIChtX3RleHRSdW4ubV9wYXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVyLm1fdGV4dFJ1bi5t
X3BhdGhWYXJpYW50LmluZGV4KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fdGV4dEJveC5tX3BhdGhWYXJpYW50LCBbJl0oY29uc3QgYXV0byYg
cGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aCA9PSBXVEY6OmdldDxzdGQ6OmRlY2F5X3Q8ZGVj
bHR5cGUocGF0aCk+PihvdGhlci5tX3RleHRCb3gubV9wYXRoVmFyaWFudCk7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV90ZXh0UnVuLm1fcGF0aFZhcmlhbnQsIFsmXShjb25zdCBhdXRvJiBw
YXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoID09IFdURjo6Z2V0PHN0ZDo6ZGVjYXlfdDxkZWNs
dHlwZShwYXRoKT4+KG90aGVyLm1fdGV4dFJ1bi5tX3BhdGhWYXJpYW50KTsKICAgICB9KTsKIH0K
IAotYm9vbCBUZXh0Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK2Jvb2wgVGV4dFJ1bkl0ZXJh
dG9yOjphdEVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV90ZXh0Qm94
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3RleHRSdW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1
cm4gcGF0aC5hdEVuZCgpOwogICAgIH0pOwogfQpAQCAtNzksMTkgKzc5LDE5IEBAIHN0YXRpYyBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cqIGxpbmVMYXlvdXRTeXN0ZW1GbG93Rm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocmVu
ZGVyZXIucGFyZW50KCkpOwogfQogCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNv
bnN0IFJlbmRlclRleHQmIHRleHQpCitUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNv
bnN0IFJlbmRlclRleHQmIHRleHQpCiB7CiAgICAgaWYgKGF1dG8qIGZsb3cgPSBsaW5lTGF5b3V0
U3lzdGVtRmxvd0ZvclJlbmRlcmVyKHRleHQpKSB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAgICAgICAgIGlmIChhdXRvKiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExp
bmVMYXlvdXQgPSBmbG93LT5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQtPnRleHRC
b3hlc0Zvcih0ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4
dExpbmVMYXlvdXQtPnRleHRSdW5zRm9yKHRleHQpOwogI2VuZGlmCiAgICAgfQogCi0gICAgcmV0
dXJuIHsgQ29tcGxleFBhdGggeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH0gfTsKKyAgICByZXR1cm4g
eyBMZWdhY3lQYXRoIHsgdGV4dC5maXJzdFRleHRCb3goKSB9IH07CiB9CiAKLVRleHRCb3hJdGVy
YXRvciBmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQor
VGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuZmlyc3RUZXh0Qm94KCkgJiYgdGV4dC5jb250YWlu
c1JldmVyc2VkVGV4dCgpKSB7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4g
c29ydGVkVGV4dEJveGVzOwpAQCAtOTksMzkgKzk5LDM5IEBAIFRleHRCb3hJdGVyYXRvciBmaXJz
dFRleHRCb3hJblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAgICAgICAg
ICAgc29ydGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKICAgICAgICAgc3RkOjpzb3J0KHNv
cnRlZFRleHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIElubGluZVRleHRC
b3g6OmNvbXBhcmVCeVN0YXJ0KTsKICAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94
ZXNbMF07Ci0gICAgICAgIHJldHVybiB7IENvbXBsZXhQYXRoIHsgZmlyc3QsIFdURk1vdmUoc29y
dGVkVGV4dEJveGVzKSwgMCB9IH07CisgICAgICAgIHJldHVybiB7IExlZ2FjeVBhdGggeyBmaXJz
dCwgV1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH0gfTsKICAgICB9CiAKLSAgICByZXR1cm4g
Zmlyc3RUZXh0Qm94Rm9yKHRleHQpOworICAgIHJldHVybiBmaXJzdFRleHRSdW5Gb3IodGV4dCk7
CiB9CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkK
K1RleHRSdW5SYW5nZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogewotICAg
IHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSB9OworICAgIHJldHVybiB7IGZpcnN0VGV4
dFJ1bkZvcih0ZXh0KSB9OwogfQogCi1FbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVy
YXRvcihCb3g6OlBhdGhWYXJpYW50JiYgcGF0aFZhcmlhbnQpCi0gICAgOiBtX2JveChXVEZNb3Zl
KHBhdGhWYXJpYW50KSkKK0VsZW1lbnRSdW5JdGVyYXRvcjo6RWxlbWVudFJ1bkl0ZXJhdG9yKFJ1
bjo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fcnVuKFdURk1vdmUocGF0aFZh
cmlhbnQpKQogewogfQogCi1ib29sIEVsZW1lbnRCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAor
Ym9vbCBFbGVtZW50UnVuSXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewog
ICAgICAgICByZXR1cm4gcGF0aC5hdEVuZCgpOwogICAgIH0pOwogfQogCi1FbGVtZW50Qm94SXRl
cmF0b3IgZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckVsZW1lbnQp
CitFbGVtZW50UnVuSXRlcmF0b3IgZWxlbWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsm
IHJlbmRlckVsZW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIGZsb3cgPSBsaW5lTGF5b3V0U3lzdGVt
Rmxvd0ZvclJlbmRlcmVyKHJlbmRlckVsZW1lbnQpKSB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAgICAgICAgIGlmIChhdXRvKiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4
dExpbmVMYXlvdXQgPSBmbG93LT5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKSkK
LSAgICAgICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQtPmVs
ZW1lbnRCb3hGb3IocmVuZGVyRWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gbGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LT5lbGVtZW50UnVuRm9yKHJlbmRlckVsZW1lbnQpOwog
I2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJuIHsgQ29tcGxleFBhdGgocmVuZGVyRWxlbWVudC5p
bmxpbmVCb3hXcmFwcGVyKCkpIH07CisgICAgcmV0dXJuIHsgTGVnYWN5UGF0aChyZW5kZXJFbGVt
ZW50LmlubGluZUJveFdyYXBwZXIoKSkgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApzaW1p
bGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKaW5kZXggMDFmNjk4OTdk
MmU2Li43M2RjYWMyN2RkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCkBAIC0yNiw4ICsyNiw4IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNpbmNsdWRl
ICJMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0
VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3JNb2Rlcm5QYXRoLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzUsMjMgKzM1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlbmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlclRleHQ7CiAKLW5hbWVzcGFjZSBMaW5lTGF5
b3V0VHJhdmVyc2FsIHsKK25hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLWNsYXNzIEVs
ZW1lbnRCb3hJdGVyYXRvcjsKLWNsYXNzIFRleHRCb3hJdGVyYXRvcjsKK2NsYXNzIEVsZW1lbnRS
dW5JdGVyYXRvcjsKK2NsYXNzIFRleHRSdW5JdGVyYXRvcjsKIAogc3RydWN0IEVuZEl0ZXJhdG9y
IHsgfTsKIAotY2xhc3MgQm94IHsKK2NsYXNzIFJ1biB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUGF0
aFZhcmlhbnQgPSBWYXJpYW50PAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQotICAgICAgICBEaXNwbGF5UnVuUGF0aCwKKyAgICAgICAgTW9kZXJuUGF0aCwKICNlbmRpZgot
ICAgICAgICBDb21wbGV4UGF0aAorICAgICAgICBMZWdhY3lQYXRoCiAgICAgPjsKIAotICAgIEJv
eChQYXRoVmFyaWFudCYmKTsKKyAgICBSdW4oUGF0aFZhcmlhbnQmJik7CiAKICAgICBGbG9hdFJl
Y3QgcmVjdCgpIGNvbnN0OwogCkBAIC02NCwxNSArNjQsMTUgQEAgcHVibGljOgogICAgIGJvb2wg
dXNlTGluZUJyZWFrQm94UmVuZGVyVHJlZUR1bXBRdWlyaygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
Ci0gICAgZnJpZW5kIGNsYXNzIEVsZW1lbnRCb3hJdGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3Mg
VGV4dEJveEl0ZXJhdG9yOworICAgIGZyaWVuZCBjbGFzcyBFbGVtZW50UnVuSXRlcmF0b3I7Cisg
ICAgZnJpZW5kIGNsYXNzIFRleHRSdW5JdGVyYXRvcjsKIAogICAgIFBhdGhWYXJpYW50IG1fcGF0
aFZhcmlhbnQ7CiB9OwogCi1jbGFzcyBUZXh0Qm94IDogcHVibGljIEJveCB7CitjbGFzcyBUZXh0
UnVuIDogcHVibGljIFJ1biB7CiBwdWJsaWM6Ci0gICAgVGV4dEJveChQYXRoVmFyaWFudCYmKTsK
KyAgICBUZXh0UnVuKFBhdGhWYXJpYW50JiYpOwogCiAgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25z
dDsKICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKQEAgLTg2LDE3MSArODYsMTcxIEBAIHB1
YmxpYzoKICAgICBib29sIGlzTGFzdCgpIGNvbnN0OwogfTsKIAotY2xhc3MgVGV4dEJveEl0ZXJh
dG9yIHsKK2NsYXNzIFRleHRSdW5JdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgVGV4dEJveEl0ZXJh
dG9yKCkgOiBtX3RleHRCb3goQ29tcGxleFBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OwotICAg
IFRleHRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOworICAgIFRleHRSdW5JdGVyYXRv
cigpIDogbV90ZXh0UnVuKExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAgIFRl
eHRSdW5JdGVyYXRvcihSdW46OlBhdGhWYXJpYW50JiYpOwogCi0gICAgVGV4dEJveEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOyB9Ci0g
ICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7Ci0gICAgVGV4
dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOworICAgIFRleHRSdW5JdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsg
fQorICAgIFRleHRSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOworICAg
IFRleHRSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UnVuSXRlcmF0
b3ImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dFJ1bkl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQogICAgIGJvb2wg
b3BlcmF0b3IhPShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAotICAg
IGNvbnN0IFRleHRCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEJveDsgfQot
ICAgIGNvbnN0IFRleHRCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV90ZXh0Qm94
OyB9CisgICAgY29uc3QgVGV4dFJ1biYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
UnVuOyB9CisgICAgY29uc3QgVGV4dFJ1biogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZt
X3RleHRSdW47IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBU
ZXh0Qm94IG1fdGV4dEJveDsKKyAgICBUZXh0UnVuIG1fdGV4dFJ1bjsKIH07CiAKLWNsYXNzIEVs
ZW1lbnRCb3hJdGVyYXRvciB7CitjbGFzcyBFbGVtZW50UnVuSXRlcmF0b3IgewogcHVibGljOgot
ICAgIEVsZW1lbnRCb3hJdGVyYXRvcigpIDogbV9ib3goQ29tcGxleFBhdGggeyBudWxscHRyLCB7
IH0gfSkgeyB9OwotICAgIEVsZW1lbnRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwor
ICAgIEVsZW1lbnRSdW5JdGVyYXRvcigpIDogbV9ydW4oTGVnYWN5UGF0aCB7IG51bGxwdHIsIHsg
fSB9KSB7IH07CisgICAgRWxlbWVudFJ1bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJik7CiAK
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0K
IAotICAgIGNvbnN0IEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ib3g7IH0KLSAg
ICBjb25zdCBCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9ib3g7IH0KKyAgICBj
b25zdCBSdW4mIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuOyB9CisgICAgY29uc3Qg
UnVuKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fcnVuOyB9CiAKICAgICBib29sIGF0
RW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQm94IG1fYm94OworICAgIFJ1biBtX3J1bjsK
IH07CiAKLWNsYXNzIFRleHRCb3hSYW5nZSB7CitjbGFzcyBUZXh0UnVuUmFuZ2UgewogcHVibGlj
OgotICAgIFRleHRCb3hSYW5nZShUZXh0Qm94SXRlcmF0b3IgYmVnaW4pCisgICAgVGV4dFJ1blJh
bmdlKFRleHRSdW5JdGVyYXRvciBiZWdpbikKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQogICAg
IHsKICAgICB9CiAKLSAgICBUZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X2JlZ2luOyB9CisgICAgVGV4dFJ1bkl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9i
ZWdpbjsgfQogICAgIEVuZEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCiBw
cml2YXRlOgotICAgIFRleHRCb3hJdGVyYXRvciBtX2JlZ2luOworICAgIFRleHRSdW5JdGVyYXRv
ciBtX2JlZ2luOwogfTsKIAotVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEZvcihjb25zdCBS
ZW5kZXJUZXh0Jik7Ci1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3Io
Y29uc3QgUmVuZGVyVGV4dCYpOwotVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5k
ZXJUZXh0Jik7Ci1FbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJM
aW5lQnJlYWsmKTsKK1RleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVy
VGV4dCYpOworVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKGNvbnN0
IFJlbmRlclRleHQmKTsKK1RleHRSdW5SYW5nZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0
Jik7CitFbGVtZW50UnVuSXRlcmF0b3IgZWxlbWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJl
YWsmKTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotaW5saW5lIEJveDo6Qm94KFBhdGhWYXJpYW50JiYgcGF0aCkKK2lubGluZSBSdW46OlJ1
bihQYXRoVmFyaWFudCYmIHBhdGgpCiAgICAgOiBtX3BhdGhWYXJpYW50KFdURk1vdmUocGF0aCkp
CiB7CiB9CiAKLWlubGluZSBGbG9hdFJlY3QgQm94OjpyZWN0KCkgY29uc3QKK2lubGluZSBGbG9h
dFJlY3QgUnVuOjpyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Bh
dGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLnJlY3QoKTsK
ICAgICB9KTsKIH0KIAotaW5saW5lIGZsb2F0IEJveDo6YmFzZWxpbmUoKSBjb25zdAoraW5saW5l
IGZsb2F0IFJ1bjo6YmFzZWxpbmUoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguYmFz
ZWxpbmUoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIGJvb2wgQm94Ojppc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgY29uc3QKK2lubGluZSBib29sIFJ1bjo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0
byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7
CiAgICAgfSk7CiB9CiAKLWlubGluZSBib29sIEJveDo6aXNIb3Jpem9udGFsKCkgY29uc3QKK2lu
bGluZSBib29sIFJ1bjo6aXNIb3Jpem9udGFsKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBw
YXRoLmlzSG9yaXpvbnRhbCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBCb3g6OmRpck92
ZXJyaWRlKCkgY29uc3QKK2lubGluZSBib29sIFJ1bjo6ZGlyT3ZlcnJpZGUoKSBjb25zdAogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsK
ICAgICAgICAgcmV0dXJuIHBhdGguZGlyT3ZlcnJpZGUoKTsKICAgICB9KTsKIH0KIAotaW5saW5l
IGJvb2wgQm94Ojppc0xpbmVCcmVhaygpIGNvbnN0CitpbmxpbmUgYm9vbCBSdW46OmlzTGluZUJy
ZWFrKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGluZUJyZWFrKCk7CiAgICAg
fSk7CiB9CiAKLWlubGluZSBib29sIEJveDo6dXNlTGluZUJyZWFrQm94UmVuZGVyVHJlZUR1bXBR
dWlyaygpIGNvbnN0CitpbmxpbmUgYm9vbCBSdW46OnVzZUxpbmVCcmVha0JveFJlbmRlclRyZWVE
dW1wUXVpcmsoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgudXNlTGluZUJyZWFrQm94
UmVuZGVyVHJlZUR1bXBRdWlyaygpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBUZXh0Qm94
OjpoYXNIeXBoZW4oKSBjb25zdAoraW5saW5lIGJvb2wgVGV4dFJ1bjo6aGFzSHlwaGVuKCkgY29u
c3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBw
YXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmhhc0h5cGhlbigpOwogICAgIH0pOwogfQogCi1p
bmxpbmUgVGV4dEJveDo6VGV4dEJveChQYXRoVmFyaWFudCYmIHBhdGgpCi0gICAgOiBCb3goV1RG
TW92ZShwYXRoKSkKK2lubGluZSBUZXh0UnVuOjpUZXh0UnVuKFBhdGhWYXJpYW50JiYgcGF0aCkK
KyAgICA6IFJ1bihXVEZNb3ZlKHBhdGgpKQogewogfQogCi1pbmxpbmUgU3RyaW5nVmlldyBUZXh0
Qm94Ojp0ZXh0KCkgY29uc3QKK2lubGluZSBTdHJpbmdWaWV3IFRleHRSdW46OnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBh
dGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgudGV4dCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUg
dW5zaWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9mZnNldCgpIGNvbnN0CitpbmxpbmUgdW5zaWdu
ZWQgVGV4dFJ1bjo6bG9jYWxTdGFydE9mZnNldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4g
cGF0aC5sb2NhbFN0YXJ0T2Zmc2V0KCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBU
ZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQgVGV4dFJ1bjo6
bG9jYWxFbmRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgubG9jYWxFbmRP
ZmZzZXQoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgp
IGNvbnN0CitpbmxpbmUgdW5zaWduZWQgVGV4dFJ1bjo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAg
ICAgIHJldHVybiBwYXRoLmxlbmd0aCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBUZXh0
Qm94Ojppc0xhc3RPbkxpbmUoKSBjb25zdAoraW5saW5lIGJvb2wgVGV4dFJ1bjo6aXNMYXN0T25M
aW5lKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGFzdE9uTGluZSgpOwogICAg
IH0pOwogfQogCi1pbmxpbmUgYm9vbCBUZXh0Qm94Ojppc0xhc3QoKSBjb25zdAoraW5saW5lIGJv
b2wgVGV4dFJ1bjo6aXNMYXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGFz
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFRyYXZlcnNhbENvbXBsZXhQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaApzaW1pbGFyaXR5IGlu
ZGV4IDkxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5
b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5k
ZXggYTY2ZGI3ZmNiOTI4Li4yZGVjZDY2ZDQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yTGVnYWN5UGF0aC5oCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2Fs
IHsKK25hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLWNsYXNzIENvbXBsZXhQYXRoIHsK
K2NsYXNzIExlZ2FjeVBhdGggewogcHVibGljOgotICAgIENvbXBsZXhQYXRoKGNvbnN0IElubGlu
ZUJveCogaW5saW5lQm94LCBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkSW5s
aW5lVGV4dEJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lVGV4dEJveEluZGV4ID0gMCkK
KyAgICBMZWdhY3lQYXRoKGNvbnN0IElubGluZUJveCogaW5saW5lQm94LCBWZWN0b3I8Y29uc3Qg
SW5saW5lVGV4dEJveCo+JiYgc29ydGVkSW5saW5lVGV4dEJveGVzID0geyB9LCBzaXplX3Qgc29y
dGVkSW5saW5lVGV4dEJveEluZGV4ID0gMCkKICAgICAgICAgOiBtX2lubGluZUJveChpbmxpbmVC
b3gpCiAgICAgICAgICwgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMoV1RGTW92ZShzb3J0ZWRJbmxp
bmVUZXh0Qm94ZXMpKQogICAgICAgICAsIG1fc29ydGVkSW5saW5lVGV4dEJveEluZGV4KHNvcnRl
ZElubGluZVRleHRCb3hJbmRleCkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgKyttX3NvcnRlZElubGluZVRleHRCb3hJbmRleDsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ29tcGxleFBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJv
eCA9PSBvdGhlci5tX2lubGluZUJveDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZWdh
Y3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxp
bmVCb3g7IH0KICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1faW5saW5lQm94OyB9
CiAKIHByaXZhdGU6CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc29y
dGVkSW5saW5lVGV4dEJveEluZGV4IHsgMCB9OwogfTsKIAotaW5saW5lIGNvbnN0IElubGluZVRl
eHRCb3gqIENvbXBsZXhQYXRoOjpuZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCkgY29uc3QK
K2lubGluZSBjb25zdCBJbmxpbmVUZXh0Qm94KiBMZWdhY3lQYXRoOjpuZXh0SW5saW5lVGV4dEJv
eEluVGV4dE9yZGVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc29ydGVkSW5saW5lVGV4dEJveGVz
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggKyAx
IDwgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBh
dGguaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggMDFiN2E2YzM1YjY2Li5kNDU5
ZmUyOTc0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVM
YXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBA
IC0zMSwyNCArMzEsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgTGlu
ZUxheW91dFRyYXZlcnNhbCB7CituYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiBzdGF0
aWMgRmxvYXRQb2ludCBsaW5lUG9zaXRpb24oZmxvYXQgbGVmdCwgZmxvYXQgdG9wKQogewogICAg
IHJldHVybiBGbG9hdFBvaW50KGxlZnQsIHJvdW5kZih0b3ApKTsKIH0KIAotY2xhc3MgRGlzcGxh
eVJ1blBhdGggeworY2xhc3MgTW9kZXJuUGF0aCB7CiBwdWJsaWM6Ci0gICAgRGlzcGxheVJ1blBh
dGgoY29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0
YXJ0SW5kZXgsIHNpemVfdCBlbmRJbmRleCkKKyAgICBNb2Rlcm5QYXRoKGNvbnN0IERpc3BsYXk6
OklubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVfdCBzdGFydEluZGV4LCBzaXplX3Qg
ZW5kSW5kZXgpCiAgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQogICAg
ICAgICAsIG1fZW5kSW5kZXgoZW5kSW5kZXgpCiAgICAgICAgICwgbV9ydW5JbmRleChzdGFydElu
ZGV4KQogICAgIHsgfQotICAgIERpc3BsYXlSdW5QYXRoKERpc3BsYXlSdW5QYXRoJiYpID0gZGVm
YXVsdDsKLSAgICBEaXNwbGF5UnVuUGF0aChjb25zdCBEaXNwbGF5UnVuUGF0aCYpID0gZGVmYXVs
dDsKLSAgICBEaXNwbGF5UnVuUGF0aCYgb3BlcmF0b3I9KGNvbnN0IERpc3BsYXlSdW5QYXRoJikg
PSBkZWZhdWx0OwotICAgIERpc3BsYXlSdW5QYXRoJiBvcGVyYXRvcj0oRGlzcGxheVJ1blBhdGgm
JikgPSBkZWZhdWx0OworICAgIE1vZGVyblBhdGgoTW9kZXJuUGF0aCYmKSA9IGRlZmF1bHQ7Cisg
ICAgTW9kZXJuUGF0aChjb25zdCBNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OworICAgIE1vZGVyblBh
dGgmIG9wZXJhdG9yPShjb25zdCBNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OworICAgIE1vZGVyblBh
dGgmIG9wZXJhdG9yPShNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0UmVjdCBy
ZWN0KCkgY29uc3Q7CiAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lk
IHRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpIHsgIHRyYXZlcnNlTmV4dFRleHRCb3hJ
blZpc3VhbE9yZGVyKCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEaXNwbGF5UnVu
UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5tX2lu
bGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5tX3J1bkluZGV4OyB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fcnVuSW5kZXggPT0gb3Ro
ZXIubV9ydW5JbmRleDsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3J1bklu
ZGV4ID09IG1fZW5kSW5kZXg7IH0KIAogcHJpdmF0ZToKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2
YXRlOgogICAgIHNpemVfdCBtX3J1bkluZGV4IHsgMCB9OwogfTsKIAotaW5saW5lIEZsb2F0UmVj
dCBEaXNwbGF5UnVuUGF0aDo6cmVjdCgpIGNvbnN0CitpbmxpbmUgRmxvYXRSZWN0IE1vZGVyblBh
dGg6OnJlY3QoKSBjb25zdAogewogICAgIGF1dG8gcmVjdCA9IHJ1bigpLnJlY3QoKTsKICAgICBh
dXRvIHBvc2l0aW9uID0gbGluZVBvc2l0aW9uKHJlY3QueCgpLCByZWN0LnkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGFlYzFiMzQxNjJh
Yy4uOTE0YzMxNDFhMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFdCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94Lmgi
Ci0jaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2Fj
aGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CkBAIC0xNzAsNyArMTcwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxvY2FsQ2Fy
ZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBjYXJldE8KIAogSW50UmVjdCBS
ZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogewotICAgIGF1dG8gYm94
ID0gTGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgYXV0byBi
b3ggPSBMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVudFJ1bkZvcigqdGhpcyk7CiAgICAgaWYgKCFi
b3gpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBJbnRSZWN0IFJl
bmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiAKIEludFJlY3QgUmVuZGVy
TGluZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1wKCkgY29uc3QKIHsKLSAgICBh
dXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAg
IGF1dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1lbnRSdW5Gb3IoKnRoaXMpOwogICAg
IGlmICghYm94KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0yMDEsNyArMjAxLDcgQEAgSW50
UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmJvdW5kaW5nQm94Rm9yUmVuZGVyVHJlZUR1bXAoKSBjb25z
dAogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0g
ICAgYXV0byBib3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjplbGVtZW50Qm94Rm9yKCp0aGlzKTsK
KyAgICBhdXRvIGJveCA9IExheW91dEludGVncmF0aW9uOjplbGVtZW50UnVuRm9yKCp0aGlzKTsK
ICAgICBpZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGEKIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAg
ICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOwor
ICAgIGF1dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1lbnRSdW5Gb3IoKnRoaXMpOwog
ICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAppbmRleCA4ZTBlYjI3OGNjNGUuLjMyNzIyMTdlZWZlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1
ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4
dC5oIgpAQCAtMzAzLDggKzMwMyw4IEBAIFN0cmluZyBSZW5kZXJUZXh0OjpvcmlnaW5hbFRleHQo
KSBjb25zdAogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewot
ICAgIGZvciAoYXV0byYgYm94IDogTGluZUxheW91dFRyYXZlcnNhbDo6dGV4dEJveGVzRm9yKCp0
aGlzKSkgewotICAgICAgICBhdXRvIHJlY3QgPSBib3gucmVjdCgpOworICAgIGZvciAoYXV0byYg
cnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgICAgICBh
dXRvIHJlY3QgPSBydW4ucmVjdCgpOwogICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50
UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyByZWN0LmxvY2F0aW9uKCksIHJlY3Qu
c2l6ZSgpKSkpOwogICAgIH0KIH0KQEAgLTQwOCw4ICs0MDgsOCBAQCBzdGF0aWMgVmVjdG9yPEZs
b2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNGb3JOb25Db21wbGV4UGF0aHMoY29uc3QgUmVu
ZGVyVGV4dAogICAgIEFTU0VSVCghdGV4dFJlbmRlcmVyLnVzZXNDb21wbGV4TGluZUxheW91dFBh
dGgoKSk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKLSAgICBmb3IgKGF1dG8mIGJv
eCA6IExpbmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0Zvcih0ZXh0UmVuZGVyZXIpKQotICAg
ICAgICBxdWFkcy5hcHBlbmQodGV4dFJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRR
dWFkKGJveC5yZWN0KCkpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOworICAgIGZvciAoYXV0
byYgcnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKHRleHRSZW5kZXJlcikpCisg
ICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9h
dFF1YWQocnVuLnJlY3QoKSksIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CiAgICAgcmV0dXJu
IHF1YWRzOwogfQogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBWZWN0b3I8c3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4+IFJlbmRlclRleHQ6OmRyYWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9m
ZgogCiBJbnRQb2ludCBSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0aW9uKCkgY29uc3QKIHsKLSAg
ICBhdXRvIGZpcnN0ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94Rm9yKCp0aGlz
KTsKKyAgICBhdXRvIGZpcnN0ID0gTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcigq
dGhpcyk7CiAgICAgaWYgKCFmaXJzdCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4g
SW50UG9pbnQoZmlyc3QtPnJlY3QoKS5sb2NhdGlvbigpKTsKQEAgLTEzNTUsNyArMTM1NSw3IEBA
IGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29u
c3QgRm9udENhc2NhZGUmIGYsIGZsb2F0CiAKIEludFJlY3QgUmVuZGVyVGV4dDo6bGluZXNCb3Vu
ZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6
OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdCA9IExheW91dEludGVncmF0
aW9uOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOwogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6
c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
CiAKIGludCBSZW5kZXJUZXh0OjpjYXJldE1pbk9mZnNldCgpIGNvbnN0CiB7Ci0gICAgYXV0byBm
aXJzdCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CisgICAg
YXV0byBmaXJzdCA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOwog
ICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNDU3LDcgKzE0NTcsNyBA
QCBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogCiBpbnQgUmVuZGVyVGV4
dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewotICAgIGF1dG8gZmlyc3QgPSBMaW5lTGF5b3V0
VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOworICAgIGF1dG8gZmlyc3QgPSBMYXlv
dXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlzKTsKICAgICBpZiAoIWZpcnN0KQog
ICAgICAgICByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOwogCkBAIC0xNDcxLDkgKzE0NzEsOSBAQCBp
bnQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogdW5zaWduZWQgUmVuZGVyVGV4
dDo6Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh1bnNpZ25lZCBvZmZzZXQpIGNv
bnN0CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBmb3IgKGF1dG8mIGJveCA6IExp
bmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKLSAgICAgICAgYXV0byBz
dGFydCA9IGJveC5sb2NhbFN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0gYm94
Lmxlbmd0aCgpOworICAgIGZvciAoYXV0byYgcnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRS
dW5zRm9yKCp0aGlzKSkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gcnVuLmxvY2FsU3RhcnRPZmZz
ZXQoKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBydW4ubGVuZ3RoKCk7CiAgICAgICAgIGlmIChv
ZmZzZXQgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIGlmIChv
ZmZzZXQgPD0gc3RhcnQgKyBsZW5ndGgpIHsKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIHVuc2lnbmVk
IFJlbmRlclRleHQ6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwodW5zaWduZWQg
b2Zmc2V0KSBjb25zdAogZW51bSBjbGFzcyBPZmZzZXRUeXBlIHsgQ2hhcmFjdGVyLCBDYXJldCB9
Owogc3RhdGljIGJvb2wgY29udGFpbnNPZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCBPZmZzZXRUeXBlIHR5cGUpCiB7Ci0gICAgZm9yIChhdXRvIGJveCA9IExp
bmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHRleHQpOyBib3g7
IGJveC50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpKSB7CisgICAgZm9yIChhdXRvIGJveCA9IExh
eW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcih0ZXh0KTsgYm94OyBi
b3gudHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkgewogICAgICAgICBhdXRvIHN0YXJ0ID0gYm94
LT5sb2NhbFN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIGlmIChvZmZzZXQgPCBzdGFydCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MTcsNyArMTUxNyw3IEBAIGJvb2wgUmVuZGVyVGV4
dDo6Y29udGFpbnNDYXJldE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAKIGJvb2wgUmVu
ZGVyVGV4dDo6aGFzUmVuZGVyZWRUZXh0KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGJveCA6
IExpbmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKKyAgICBmb3IgKGF1
dG8mIGJveCA6IExheW91dEludGVncmF0aW9uOjp0ZXh0UnVuc0ZvcigqdGhpcykpIHsKICAgICAg
ICAgaWYgKGJveC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBlODJm
NzlmMjQyOGYuLjc1YWRhMjhlNjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZVRleHRC
b3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCkBAIC0yMDMsNyAr
MjAzLDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRlc3QgcmVz
dWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRl
eHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwgdGV4
dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFMaW5lTGF5b3V0VHJh
dmVyc2FsOjpmaXJzdFRleHRCb3hGb3IodGV4dCkpCisgICAgICAgIGlmICghTGF5b3V0SW50ZWdy
YXRpb246OmZpcnN0VGV4dFJ1bkZvcih0ZXh0KSkKICAgICAgICAgICAgIGFkanVzdEZvclRhYmxl
Q2VsbHMgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG8uaXNCUigpKSB7CiAgICAgICAgIGNvbnN0
IFJlbmRlckxpbmVCcmVhayYgYnIgPSBkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KG8pOwpAQCAt
NDc4LDI2ICs0NzgsMjYgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5kZXIKICAgICB9CiB9CiAKLXN0
YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYg
bywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYgdGV4dEJveCkKK3N0YXRpYyB2
b2lkIHdyaXRlVGV4dFJ1bihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywgY29u
c3QgTGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW4mIHRleHRSdW4pCiB7Ci0gICAgYXV0byByZWN0
ID0gdGV4dEJveC5yZWN0KCk7CisgICAgYXV0byByZWN0ID0gdGV4dFJ1bi5yZWN0KCk7CiAgICAg
aW50IHggPSByZWN0LngoKTsKICAgICBpbnQgeSA9IHJlY3QueSgpOwogICAgIC8vIEZJWE1FOiBV
c2Ugbm9uLWxvZ2ljYWwgd2lkdGguIHdlYmtpdC5vcmcvYi8yMDY4MDkuCi0gICAgaW50IGxvZ2lj
YWxXaWR0aCA9IGNlaWxmKHJlY3QueCgpICsgKHRleHRCb3guaXNIb3Jpem9udGFsKCkgPyByZWN0
LndpZHRoKCkgOiByZWN0LmhlaWdodCgpKSkgLSB4OworICAgIGludCBsb2dpY2FsV2lkdGggPSBj
ZWlsZihyZWN0LngoKSArICh0ZXh0UnVuLmlzSG9yaXpvbnRhbCgpID8gcmVjdC53aWR0aCgpIDog
cmVjdC5oZWlnaHQoKSkpIC0geDsKICAgICAvLyBGSVhNRTogVGFibGUgY2VsbCBhZGp1c3RtZW50
IGlzIHRlbXBvcmFyeSB1bnRpbCByZXN1bHRzIGNhbiBiZSB1cGRhdGVkLgogICAgIGlmIChpczxS
ZW5kZXJUYWJsZUNlbGw+KCpvLmNvbnRhaW5pbmdCbG9jaygpKSkKICAgICAgICAgeSAtPSBmbG9v
clRvSW50KGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm8uY29udGFpbmluZ0Jsb2NrKCkpLmlu
dHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7CiAgICAgICAgIAogICAgIHRzIDw8ICJ0ZXh0IHJ1biBh
dCAoIiA8PCB4IDw8ICIsIiA8PCB5IDw8ICIpIHdpZHRoICIgPDwgbG9naWNhbFdpZHRoOwotICAg
IGlmICghdGV4dEJveC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgfHwgdGV4dEJveC5kaXJPdmVy
cmlkZSgpKSB7Ci0gICAgICAgIHRzIDw8ICghdGV4dEJveC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyAiIFJUTCIgOiAiIExUUiIpOwotICAgICAgICBpZiAodGV4dEJveC5kaXJPdmVycmlkZSgp
KQorICAgIGlmICghdGV4dFJ1bi5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgfHwgdGV4dFJ1bi5k
aXJPdmVycmlkZSgpKSB7CisgICAgICAgIHRzIDw8ICghdGV4dFJ1bi5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyAiIFJUTCIgOiAiIExUUiIpOworICAgICAgICBpZiAodGV4dFJ1bi5kaXJPdmVy
cmlkZSgpKQogICAgICAgICAgICAgdHMgPDwgIiBvdmVycmlkZSI7CiAgICAgfQogICAgIHRzIDw8
ICI6ICIKLSAgICAgICAgPDwgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKHRleHRCb3gudGV4
dCgpKTsKLSAgICBpZiAodGV4dEJveC5oYXNIeXBoZW4oKSkKKyAgICAgICAgPDwgcXVvdGVBbmRF
c2NhcGVOb25QcmludGFibGVzKHRleHRSdW4udGV4dCgpKTsKKyAgICBpZiAodGV4dFJ1bi5oYXNI
eXBoZW4oKSkKICAgICAgICAgdHMgPDwgIiArIGh5cGhlbiBzdHJpbmcgIiA8PCBxdW90ZUFuZEVz
Y2FwZU5vblByaW50YWJsZXMoby5zdHlsZSgpLmh5cGhlblN0cmluZygpLnN0cmluZygpKTsKICAg
ICB0cyA8PCAiXG4iOwogfQpAQCAtNTQ2LDkgKzU0Niw5IEBAIHZvaWQgd3JpdGUoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+
IGJlCiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4obykpIHsKICAgICAgICAgYXV0byYgdGV4dCA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwotICAgICAgICBmb3IgKGF1dG8mIHRleHRCb3ggOiBM
aW5lTGF5b3V0VHJhdmVyc2FsOjp0ZXh0Qm94ZXNGb3IodGV4dCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBydW4gOiBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bnNGb3IodGV4dCkpIHsKICAgICAg
ICAgICAgIHRzIDw8IGluZGVudDsKLSAgICAgICAgICAgIHdyaXRlVGV4dEJveCh0cywgdGV4dCwg
dGV4dEJveCk7CisgICAgICAgICAgICB3cml0ZVRleHRSdW4odHMsIHRleHQsIHJ1bik7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5P
ZlR5cGU8UmVuZGVyT2JqZWN0Pihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihvKSkpIHsK
</data>
<flag name="commit-queue"
          id="425695"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409873</attachid>
            <date>2020-09-28 01:24:40 -0700</date>
            <delta_ts>2020-09-28 03:25:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textruniterator-naming-3.patch</filename>
            <type>text/plain</type>
            <size>66738</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNmFhNTRhNTVhMzkuLjQ2NTdkMmI4YWMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwMSBAQAorMjAyMC0wOS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIE1vdmUgcnVuIGl0ZXJhdG9yIHRvIExh
eW91dEludGVncmF0aW9uIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyB1c2UgbmFtZSAnTW9kZXJuJyBmb3IgTEZDIGFuZCAnTGVn
YWN5JyBmb3IgdGhlIG9sZCBpbmxpbmUgdHJlZSBwYXRoLgorCisgICAgICAgIEFsc28gcmVuYW1l
IGJveC0+cnVuIGZvciBtb3JlIGNvbnNpc3RlbnQgdGVybWlub2xvZ3kuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Ojp1cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVh
bSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
dGV4dFJ1bnNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OmVsZW1lbnRSdW5Gb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmVsZW1l
bnRCb3hGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRl
eHRSdW5JdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpFbGVtZW50UnVuSXRlcmF0b3I6OkVsZW1lbnRSdW5JdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjph
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVu
dFJ1bkZvcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRUcmF2ZXJzYWwuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5J
dGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkVsZW1lbnRSdW5JdGVyYXRvcjo6RWxlbWVudFJ1bkl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpFbGVtZW50UnVu
SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuUmFuZ2U6OlRleHRSdW5SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1blJhbmdlOjpiZWdp
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6cmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpiYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpSdW46OmlzSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuOjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjp1c2VMaW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1
aXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVu
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OlRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlRleHRSdW46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuOjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmlzTGFzdE9uTGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bjo6
aXNMYXN0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OkxlZ2FjeVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBh
dGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TW9kZXJuUGF0aDo6TW9kZXJuUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGluZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFi
c29sdXRlUXVhZHNGb3JOb25Db21wbGV4UGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6Zmlyc3RSdW5Mb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpsaW5lc0JvdW5kaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNhcmV0TWluT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNv
dW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGFpbnNPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6aGFzUmVu
ZGVyZWRUZXh0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUZXh0Qm94KTogRGVsZXRlZC4KKwogMjAy
MC0wOS0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJLaXRMZWdhY3kgc2hvdWxkIGNhbGwgUGFnZTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZWU5ODhmNWMzM2I2Li43ZThkNTM1NTE4YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNzE0LDYgKzcxNCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAKICAgICBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSZWN0
LmgKIAorICAgIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgKKyAgICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxl
Z2FjeVBhdGguaAorICAgIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aC5oCisKICAgICBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAog
CiAgICAgbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oCkBAIC0xNDI3LDkgKzE0MzEsNiBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaAogICAgIHJlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaAogCi0gICAgcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCi0gICAgcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmgKLSAgICByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5o
CiAgICAgcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBhNTcyY2U5NDIwZjQuLjg1Y2EwNGE2YTg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE0NjgsNiAr
MTQ2OCw3IEBAIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3Bw
CiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAorbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCiBsYXlvdXQvaW52YWxpZGF0aW9u
L0ludmFsaWRhdGlvbkNvbnRleHQuY3BwCiBsYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlv
blN0YXRlLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMjIxNiw3ICsy
MjE3LDYgQEAgcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAogcmVuZGVyaW5nL1RyYWlsaW5nRmxv
YXRzUm9vdElubGluZUJveC5jcHAKIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAogcmVu
ZGVyaW5nL2xpbmUvTGluZUluZm8uY3BwCi1yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVy
c2FsLmNwcAogcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAogcmVuZGVyaW5nL2xpbmUvVHJh
aWxpbmdPYmplY3RzLmNwcAogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1
YjliYTljZTlkOTAuLjc1ZjlkNTU4YTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk4NSw3ICs0OTg1LDYgQEAKIAkJRTQy
OTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI5NUZBMzEyQjA2MTRFMDBE
MUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDJFNzZEQzFDN0FGNzc2MDBFMzYxNEQgLyogU3R5
bGVVcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0MkU3NkRCMUM3QUY3NzYwMEUzNjE0RCAvKiBTdHlsZVVwZGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MzEwNUJCMTY3NTBGMTYwMERC
MkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDMxMDVCQTE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0MzQz
RDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MzQzRDI0MjM5
Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDNBMDIzQjE3RUIz
NzBBMDA0Q0REMjUgLyogUmVuZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzQTAyM0ExN0VCMzcwQTAwNENERDI1IC8qIFJlbmRlckVs
ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDNBRjhFNzFBQzVCN0VDMDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDNBRjhFNTFBQzVCN0REMDBD
QTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ0MEFBOTYxQzY4NDIwODAwQTI2NUNDIC8qIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDQwQUE5NTFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgfTsKQEAgLTUwMDgsNyArNTAwNyw2IEBACiAJCUU0
NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNDFFMzQwQ0JGQjYwOTAwQUYyRUNFIC8q
IFJlbmRlclZpZGVvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ0QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjIxNDE2
NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovOyB9OwogCQlFNDRGQTE4NTFCQ0E2
QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBD
b21wb3NlZFRyZWVJdGVyYXRvci5oICovOyB9OwotCQlFNDUxQzYyODIzOTI5M0VDMDA5OTMxOTAg
LyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYyNzIzOTI5M0VCMDA5OTMxOTAgLyog
TGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzEyMzk0MDI3OTAwOTkzMTkwIC8q
IExheW91dFVuaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5b3V0VW5pdHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUxQzYzMjIzOTQwMzFB
MDA5OTMxOTAgLyogTWFyZ2luVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGRTdBQTI2MjFDMzdCNjMwMDI5NkRDRCAvKiBNYXJnaW5UeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NTFD
NjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MUM2MzMyMzk0MDU4RTAwOTkz
MTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwMzcsMTAgKzUwMzUsMTIgQEAKIAkJRTQ3QzM5MzMx
RkU2RTEwODAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI3MUZFNkUwREMw
MEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87IH07CiAJCUU0N0Uy
NzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUy
QUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ4MTM3QjkxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxl
VmFsaWRpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0ODEzN0I4MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTQ4NEEzM0UyMzA1NTMyNTAw
OUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5
b3V0VHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg2M0NGRDIzODQyRTlFMDA5
NzIxNTggLyogUnVsZURhdGEuaCAqLzsgfTsKIAkJRTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdGIC8q
IFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5NDZFQUQxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OUJEOUZB
MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OUJEOUY5MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NW
YWx1ZVBvb2wuaCAqLzsgfTsKKwkJRTRBNjY0Q0MyNTIxRDRBRjAwNzA4MURDIC8qIExheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0QTY2NEM2MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEE2NjRDNDI1MjFCNzc3MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFNEE2NjRDRjI1MjFENEUyMDA3MDgxREMgLyogTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTY2NEM1MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQ
YXJzZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEE3OTk0RTIwRUU0QUUxMDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QTgxNEQ0MUM2
REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBODE0RDMxQzZERUM0MDAwQkY4NUFD
IC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNERBMUM3MEUxMEQw
MEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAv
KiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKQEAgLTE1ODUzLDcgKzE1ODUz
LDYgQEAKIAkJRTQzMTA1QkExNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVRyYXZlcnNhbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDMxMkFCNTI0QjMyNjU2MDA2NzgzNDkgLyogTGF5b3V0SW50
ZWdyYXRpb25QYWdpbmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0MzEyQUI3MjRCMzI2NTYwMDY3ODM0OSAvKiBMYXlvdXRJbnRlZ3JhdGlvblBh
Z2luYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdy
YXRpb25QYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0MzQzRDI0
MjM5Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQ
YXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0M0EwMjNBMTdFQjM3MEEwMDRD
REQyNSAvKiBSZW5kZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQzQTAyM0Mx
N0VCMzcxMzAwNENERDI1IC8qIFJlbmRlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0M0FGOEU0MUFDNUI3REQwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVWYWxpZGF0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODkxLDcgKzE1ODkwLDYgQEAKIAkJ
RTQ0RUUzQTcxNzU3NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udEdlbmVyaWNGYW1pbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcG9zZWRUcmVlSXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8q
IENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTQ1MUM2MjcyMzkyOTNFQjAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNw
bGF5UnVuUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lTGF5b3V0
VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTQ1MUM2MzMyMzk0MDU4RTAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlJbmxpbmVDb250ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxl
Y3RvclF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVj
dG9yUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzMjJBQTE0MENF
MjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTk0MCw4ICsxNTkzOCw2IEBACiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2
MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVW
YWxpZGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVZhbGlkaXR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0ODRBMzNCMjMwNTUzMDMwMDlBREU2
QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExpbmVMYXlvdXRUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTQ4NEEzM0QyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODYzQ0ZBMjM4NDJFODcwMDk3MjE1OCAv
KiBSdWxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdWxl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODYzQ0ZEMjM4NDJFOUUw
MDk3MjE1OCAvKiBSdWxlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
dWxlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDk0NkVBQzE1NkU2NERE
MDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUnVsZUltcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTk1Miw2ICsxNTk0OCwxMCBAQAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUg
LyogRGF0YVVSTERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGF0YVVSTERlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEx
ODIyRjFGMTNCRTU4MDBGRUY2OTggLyogU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIENvbXBsZXhMaW5lTGF5
b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXhMaW5lTGF5b3V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QTY2NEM0MjUyMUI3NzcwMDcwODFE
QyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE2NjRDNTI1MjFCNzc4MDA3
MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxl
Z2FjeVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBNjY0QzYyNTIxQjc3
ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE2NjRDNzI1MjFCNzc5MDA3MDgxREMgLyogTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTRBNzk5NEUyMEVFNEFFMTAwQzE5NTY4IC8qIENTU1BhcnNlckNv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyQ29udGV4
dC5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBNzk5NTAyMEVFNEFFMjAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyQ29udGV4
dC5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg0OTUsNiAr
Mjg0OTUsMTAgQEAKIAkJRTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9uICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFNEE2NjRDNzI1
MjFCNzc5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8sCisJ
CQkJRTRBNjY0QzYyNTIxQjc3ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3IuaCAqLywKKwkJCQlFNEE2NjRDNTI1MjFCNzc4MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCAqLywKKwkJCQlFNEE2NjRDNDI1MjFCNzc3MDA3MDgx
REMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCAqLywKIAkJCQlF
NDE4MDI1NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAq
LywKIAkJCQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlLmggKi8sCiAJCQkJRTQwM0I3OUYyNTFCMTE4QjAwMTlFODAwIC8qIExheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwICovLApAQCAtMzAyNDQsMTAgKzMwMjQ4LDYgQEAKIAkJCQlGRkI2OThD
RTE4MzNGMTc2MDAxNThBMzEgLyogTGluZUluZm8uaCAqLywKIAkJCQlGRkVGQUIyRDE4M0JDQjZG
MDA1MTQ1MzQgLyogTGluZUlubGluZUhlYWRlcnMuaCAqLywKIAkJCQlGRkVGQUIyOTE4MzgwREEw
MDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggKi8sCi0JCQkJRTQ4NEEzM0QyMzA1NTMwMzAw
OUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovLAotCQkJCUU0ODRBMzNCMjMwNTUz
MDMwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi8sCi0JCQkJRTQzNDNEMjQyMzky
Nzc4RjAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oICovLAotCQkJ
CUU0NTFDNjI3MjM5MjkzRUIwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1
blBhdGguaCAqLywKIAkJCQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmNw
cCAqLywKIAkJCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJ
CQkJRkZBQzMwRkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCkBA
IC0zMjQ0Nyw2ICszMjQ0Nyw3IEBACiAJCQkJMDc5NjlEQjAxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRFRNRlNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjIxN0QxNDE1MTAwN0ZG
ODQyIC8qIEpTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5
NjlEQjYxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNEE2NjRDRTI1MjFENEM5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkRDQjRDMUU3OTEwQTYw
MDFCNUY4NyAvKiBKU1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE2RENCNEUxRTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mzc5NEVDMTlFRTM0MUUwMEU1QTA0NSAvKiBKU1JUQ0ljZVNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQ5Miw2ICszMjQ5Myw3IEBACiAJCQkJQjU5REQ2QTUx
MTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUI1OURENkE5MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0MzJBMEQwQ0U4QTIwMDQ2MEM4RiAvKiBK
U1NRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEE2NjRDQzI1MjFENEFGMDA3
MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjU5REQ2OUQxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTExMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMzA5REEy
QjQ4MDA5NjMzQTcgLyogSlNTdGF0aWNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgyNyw5
ICszMjgyOSw2IEBACiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRp
ZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3
QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkVGQUIyQTE4Mzgw
REEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDg0
QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxD
b21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkw
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkZEQkMwNDcxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0JBOURDMEIxREY0NERGNDAwMDU2NzVDIC8qIExpbmtIZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjk2NCw2ICszMjk2Myw3IEBACiAJCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFF
QTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNB
MSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEE2NjRDRjI1
MjFENEUyMDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxN0Y3QUVGMjEzOUJGNkYwMEZCQTdFQyAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
OUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMDcxYzgwYmFlNDg5Li42OWQzY2Rm
YzcyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgi
CisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25J
dGVyYXRvci5oIgpAQCAtNzI4LDggKzcyOCw4IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVh
bShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgaWYgKGlz
PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAKLSAgICAgICAgICAgIGF1dG8g
Zmlyc3RUZXh0Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0T3Jk
ZXJGb3IodGV4dFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmICghZmlyc3RUZXh0Qm94KQorICAg
ICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0
UnVuSW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAgICAgIGlmICghZmlyc3RU
ZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoJmN1
cnJlbnROb2RlICE9IHN0YXJ0Tm9kZSkgewpAQCAtNzQyLDE0ICs3NDIsMTQgQEAgUG9zaXRpb24g
UG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25z
dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3Vy
cmVudFBvc2l0aW9uLm9mZnNldEluTGVhZk5vZGUoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byBi
b3ggPSBmaXJzdFRleHRCb3g7IGJveDsgYm94LnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA8PSBib3gtPmxvY2FsRW5kT2Zmc2V0KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPiBib3gtPmxvY2FsU3RhcnRP
ZmZzZXQoKSkKKyAgICAgICAgICAgIGZvciAoYXV0byBydW4gPSBmaXJzdFRleHRSdW47IHJ1bjsg
cnVuLnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodGV4
dE9mZnNldCA8PSBydW4tPmxvY2FsRW5kT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRleHRPZmZzZXQgPiBydW4tPmxvY2FsU3RhcnRPZmZzZXQoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zm
c2V0ID09IGJveC0+bG9jYWxFbmRPZmZzZXQoKSArIDEgJiYgYm94LT5pc0xhc3RPbkxpbmUoKSAm
JiAhYm94LT5pc0xhc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4t
PmxvY2FsRW5kT2Zmc2V0KCkgKyAxICYmIHJ1bi0+aXNMYXN0T25MaW5lKCkgJiYgIXJ1bi0+aXNM
YXN0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTgzNSw4ICs4MzUsOCBAQCBQb3NpdGlvbiBQb3NpdGlv
bjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAg
ICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8m
IHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAKLSAgICAg
ICAgICAgIGF1dG8gZmlyc3RUZXh0Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0
Qm94SW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmICghZmlyc3RU
ZXh0Qm94KQorICAgICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlv
bjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAgICAg
IGlmICghZmlyc3RUZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICBpZiAoJmN1cnJlbnROb2RlICE9IHN0YXJ0Tm9kZSkgewpAQCAtODQ1LDE3ICs4NDUsMTcg
QEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRl
eHRPZmZzZXQgPSBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpOwotICAgICAgICAg
ICAgZm9yIChhdXRvIGJveCA9IGZpcnN0VGV4dEJveDsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5U
ZXh0T3JkZXIoKSkgewotICAgICAgICAgICAgICAgIGlmICghYm94LT5sZW5ndGgoKSAmJiB0ZXh0
T2Zmc2V0ID09IGJveC0+bG9jYWxTdGFydE9mZnNldCgpKQorICAgICAgICAgICAgZm9yIChhdXRv
IHJ1biA9IGZpcnN0VGV4dFJ1bjsgcnVuOyBydW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkg
eworICAgICAgICAgICAgICAgIGlmICghcnVuLT5sZW5ndGgoKSAmJiB0ZXh0T2Zmc2V0ID09IHJ1
bi0+bG9jYWxTdGFydE9mZnNldCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dFBvc2l0aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPCBib3gtPmxvY2Fs
RW5kT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPj0gYm94
LT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPCBy
dW4tPmxvY2FsRW5kT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZz
ZXQgPj0gcnVuLT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBib3gt
PmxvY2FsRW5kT2Zmc2V0KCkgJiYgYm94LT5pc0xhc3RPbkxpbmUoKSAmJiAhYm94LT5pc0xhc3Qo
KSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4tPmxvY2FsRW5kT2Zmc2V0
KCkgJiYgcnVuLT5pc0xhc3RPbkxpbmUoKSAmJiAhcnVuLT5pc0xhc3QoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDVlNTgxNGQ3ZGY1
ZC4uODNjYjYzMDFlNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
CkBAIC00MzcsMTUgKzQzNywxNSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fdGV4dEJveCAmJiBtX3JlbWFpbmluZ1Rl
eHRCb3gpIHsKLSAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdUZXh0Qm94OwotICAgICAg
ICBtX3JlbWFpbmluZ1RleHRCb3ggPSB7IH07CisgICAgaWYgKCFtX3RleHRSdW4gJiYgbV9yZW1h
aW5pbmdUZXh0UnVuKSB7CisgICAgICAgIG1fdGV4dFJ1biA9IG1fcmVtYWluaW5nVGV4dFJ1bjsK
KyAgICAgICAgbV9yZW1haW5pbmdUZXh0UnVuID0geyB9OwogICAgICAgICBtX2ZpcnN0TGV0dGVy
VGV4dCA9IHsgfTsKICAgICAgICAgbV9vZmZzZXQgPSAwOwogICAgIH0KICAgICAvLyBoYW5kbGUg
cmVtZW1iZXJlZCB0ZXh0IGJveAotICAgIGlmIChtX3RleHRCb3gpIHsKLSAgICAgICAgaGFuZGxl
VGV4dEJveCgpOworICAgIGlmIChtX3RleHRSdW4pIHsKKyAgICAgICAgaGFuZGxlVGV4dFJ1bigp
OwogICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNTYzLDcgKzU2Myw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRlclRleHQt
PnRleHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKm1fZmlyc3RMZXR0
ZXJUZXh0LCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBudWxscHRyOwotICAgICAgICAgICAgICAg
IG1fdGV4dEJveCA9IHsgfTsKKyAgICAgICAgICAgICAgICBtX3RleHRSdW4gPSB7IH07CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01
ODAsNDQgKzU4MCw0NCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRCb3ggPSBMaW5lTGF5b3V0VHJh
dmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihyZW5kZXJlcik7CisgICAgbV90ZXh0
UnVuID0gTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHJlbmRl
cmVyKTsKIAogICAgIGJvb2wgc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmly
c3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0
OwogICAgIGlmIChzaG91bGRIYW5kbGVGaXJzdExldHRlcikKICAgICAgICAgaGFuZGxlVGV4dE5v
ZGVGaXJzdExldHRlcihkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7CiAK
LSAgICBpZiAoIW1fdGV4dEJveCAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3VsZEhh
bmRsZUZpcnN0TGV0dGVyKSB7CisgICAgaWYgKCFtX3RleHRSdW4gJiYgcmVuZGVyZXJUZXh0Lmxl
bmd0aCgpICYmICFzaG91bGRIYW5kbGVGaXJzdExldHRlcikgewogICAgICAgICBpZiAocmVuZGVy
ZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVo
YXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRT
cGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaGFuZGxlVGV4dEJveCgpOworICAgIGhhbmRsZVRl
eHRSdW4oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHRCb3goKQordm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogeyAgICAKICAg
ICBUZXh0JiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCptX25vZGUpOwogCiAgICAgYXV0byYg
cmVuZGVyZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6ICp0ZXh0
Tm9kZS5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9y
ZXNTdHlsZVZpc2liaWxpdHkpKSB7Ci0gICAgICAgIG1fdGV4dEJveCA9IHsgfTsKKyAgICAgICAg
bV90ZXh0UnVuID0geyB9OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBmaXJz
dFRleHRCb3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZv
cihyZW5kZXJlcik7CisgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6
Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IocmVuZGVyZXIpOwogCiAgICAgU3RyaW5nIHJlbmRl
cmVyVGV4dCA9IHJlbmRlcmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0
OwogICAgIHVuc2lnbmVkIGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwotICAgIHdoaWxlICht
X3RleHRCb3gpIHsKLSAgICAgICAgdW5zaWduZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94LT5s
b2NhbFN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHVuc2lnbmVkIHJ1blN0YXJ0ID0gc3RkOjptYXgo
dGV4dEJveFN0YXJ0LCBzdGFydCk7CisgICAgd2hpbGUgKG1fdGV4dFJ1bikgeworICAgICAgICB1
bnNpZ25lZCB0ZXh0UnVuU3RhcnQgPSBtX3RleHRSdW4tPmxvY2FsU3RhcnRPZmZzZXQoKTsKKyAg
ICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0UnVuU3RhcnQsIHN0YXJ0KTsK
IAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0
aGlzIHJ1bi4KLSAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0
aENvbGxhcHNlZFNwYWNlIHx8IChtX3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hT
dGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCk7CisgICAgICAgIGJvb2wgbmVlZFNwYWNlID0g
bV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0UnVuID09IGZp
cnN0VGV4dFJ1biAmJiB0ZXh0UnVuU3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3RhcnQpOwogICAg
ICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0
ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CiAgICAgICAgICAg
ICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gJnRleHROb2RlICYmIHJ1blN0YXJ0ICYmIHJlbmRlcmVy
VGV4dFtydW5TdGFydCAtIDFdID09ICcgJykgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNw
YWNlUnVuU3RhcnQgPSBydW5TdGFydCAtIDE7CkBAIC02MjgsMTIgKzYyOCwxMiBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignICcsIHRleHROb2RlLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIHRleHRCb3hFbmQgPSB0ZXh0
Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbmd0aCgpOwotICAgICAgICB1bnNpZ25lZCBydW5FbmQg
PSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOworICAgICAgICB1bnNpZ25lZCB0ZXh0UnVuRW5k
ID0gdGV4dFJ1blN0YXJ0ICsgbV90ZXh0UnVuLT5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQg
cnVuRW5kID0gc3RkOjptaW4odGV4dFJ1bkVuZCwgZW5kKTsKICAgICAgICAgCi0gICAgICAgIC8v
IERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgYm94IHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZh
bmNlIHlldAotICAgICAgICBhdXRvIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICBu
ZXh0VGV4dEJveC50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOworICAgICAgICAvLyBEZXRlcm1p
bmUgd2hhdCB0aGUgbmV4dCB0ZXh0IHJ1biB3aWxsIGJlLCBidXQgZG9uJ3QgYWR2YW5jZSB5ZXQK
KyAgICAgICAgYXV0byBuZXh0VGV4dFJ1biA9IG1fdGV4dFJ1bjsKKyAgICAgICAgbmV4dFRleHRS
dW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgICAgICBpZiAocnVuU3RhcnQgPCBy
dW5FbmQpIHsKICAgICAgICAgICAgIGF1dG8gaXNOZXdsaW5lT3JUYWIgPSBbJl0oVUNoYXIgY2hh
cmFjdGVyKSB7CkBAIC02NTIsOCArNjUyLDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3goKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmIChzdWJydW5FbmQgPT0gcnVuRW5kICYmIChtX2JlaGF2aW9y
ICYgVGV4dEl0ZXJhdG9yQmVoYXZlc0FzSWZOb2Rlc0ZvbGxvd2luZykpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYm9vbCBsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25UZXh0Qm94ID0gIW5leHRU
ZXh0Qm94ICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSA+IHN1YnJ1bkVuZCAmJiByZW5kZXJlclRl
eHRbc3VicnVuRW5kXSA9PSAnICc7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3BhY2VD
b2xsYXBzZWRCeU5leHROb25UZXh0Qm94KQorICAgICAgICAgICAgICAgICAgICBib29sIGxhc3RT
cGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRSdW4gPSAhbmV4dFRleHRSdW4gJiYgcmVuZGVyZXJU
ZXh0Lmxlbmd0aCgpID4gc3VicnVuRW5kICYmIHJlbmRlcmVyVGV4dFtzdWJydW5FbmRdID09ICcg
JzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRl
eHRSdW4pCiAgICAgICAgICAgICAgICAgICAgICAgICArK3N1YnJ1bkVuZDsgLy8gcnVuRW5kIHN0
b3BwZWQgYmVmb3JlIGxhc3Qgc3BhY2UuIEluY3JlbWVudCBieSBvbmUgdG8gcmVzdG9yZSB0aGUg
c3BhY2UuCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3Vi
cnVuRW5kOwpAQCAtNjYyLDI1ICs2NjIsMjUgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3goKQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhhdCBk
b2Vzbid0IGdvIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LAogICAgICAgICAgICAgLy8gY29t
ZSBiYWNrIGFnYWluIHRvIGZpbmlzaCBoYW5kbGluZyB0aGlzIHRleHQgYm94OyBkb24ndCBhZHZh
bmNlIHRvIHRoZSBuZXh0IG9uZS4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9wb3NpdGlvbkVuZE9mZnNldCkgPCB0ZXh0Qm94RW5kKQorICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRleHRSdW5FbmQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBBZHZhbmNlIGFuZCByZXR1
cm4KLSAgICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFydCA9IG5leHRUZXh0Qm94ID8gbmV4
dFRleHRCb3gtPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFydCA9IG5leHRUZXh0UnVuID8gbmV4dFRleHRS
dW4tPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAg
ICAgIGlmIChuZXh0UnVuU3RhcnQgPiBydW5FbmQpCiAgICAgICAgICAgICAgICAgbV9sYXN0VGV4
dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFjZSBi
ZXR3ZWVuIHJ1bnMgb3IgYXQgdGhlIGVuZAotICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRl
eHRCb3g7CisgICAgICAgICAgICBtX3RleHRSdW4gPSBuZXh0VGV4dFJ1bjsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBBZHZhbmNlIGFuZCBjb250aW51ZQotICAg
ICAgICBtX3RleHRCb3ggPSBuZXh0VGV4dEJveDsKKyAgICAgICAgbV90ZXh0UnVuID0gbmV4dFRl
eHRSdW47CiAgICAgfQotICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJveCkg
ewotICAgICAgICBtX3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7Ci0gICAgICAgIG1fcmVt
YWluaW5nVGV4dEJveCA9IHsgfTsKKyAgICBpZiAoIW1fdGV4dFJ1biAmJiBtX3JlbWFpbmluZ1Rl
eHRSdW4pIHsKKyAgICAgICAgbV90ZXh0UnVuID0gbV9yZW1haW5pbmdUZXh0UnVuOworICAgICAg
ICBtX3JlbWFpbmluZ1RleHRSdW4gPSB7IH07CiAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0g
eyB9OwogICAgICAgICBtX29mZnNldCA9IDA7Ci0gICAgICAgIGhhbmRsZVRleHRCb3goKTsKKyAg
ICAgICAgaGFuZGxlVGV4dFJ1bigpOwogICAgIH0KIH0KIApAQCAtNzAwLDggKzcwMCw4IEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFn
bWVudCYgcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRvKiBm
aXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
KSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwotICAgICAgICAg
ICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICAgICAgbV90ZXh0Qm94
ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoKmZpcnN0
TGV0dGVyVGV4dCk7CisgICAgICAgICAgICBtX3JlbWFpbmluZ1RleHRSdW4gPSBtX3RleHRSdW47
CisgICAgICAgICAgICBtX3RleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVu
SW5UZXh0T3JkZXJGb3IoKmZpcnN0TGV0dGVyVGV4dCk7CiAgICAgICAgICAgICBtX2ZpcnN0TGV0
dGVyVGV4dCA9IGZpcnN0TGV0dGVyVGV4dDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDlkZWE3MzNiNmIxZi4uMjJjNGI2ZTkyYmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKLSNp
bmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMTYsNyAr
MTE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVRleHROb2RlKCk7CiAgICAgYm9vbCBo
YW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7Ci0g
ICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7CisgICAgdm9pZCBoYW5kbGVUZXh0UnVuKCk7CiAgICAg
dm9pZCBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYpOwogICAg
IHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSYgY2hhcmFjdGVyTm9kZSwgTm9kZSogb2Zm
c2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKICAg
ICB2b2lkIGVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiwgaW50IHRleHRTdGFy
dE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwpAQCAtMTQ5LDEwICsxNDksMTAgQEAgcHJpdmF0
ZToKIAogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4dCBm
cm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3ZSBn
byBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRpb25h
bE5ld2xpbmUgeyBudWxscHRyIH07Ci0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0
ZXJhdG9yIG1fdGV4dEJveDsKKyAgICBMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9y
IG1fdGV4dFJ1bjsKIAogICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciA6Zmlyc3QtbGV0
dGVyIHRleHQgdG8gc2F2ZSBwb2ludGVyIHRvIHJlbWFpbmluZyB0ZXh0IGJveC4KLSAgICBMaW5l
TGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0Qm94OworICAg
IExheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0UnVuOwog
CiAgICAgLy8gVXNlZCB0byBwb2ludCB0byBSZW5kZXJUZXh0IG9iamVjdCBmb3IgOmZpcnN0LWxl
dHRlci4KICAgICBSZW5kZXJUZXh0KiBtX2ZpcnN0TGV0dGVyVGV4dCB7IG51bGxwdHIgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNmM2ZDA2ZGUxNzNmLi41NDIxMTg3
OTQyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0yOTQsNyArMjk0
LDcgQEAgRGlzcGxheTo6SW5saW5lQ29udGVudCYgTGluZUxheW91dDo6ZW5zdXJlRGlzcGxheUlu
bGluZUNvbnRlbnQoKQogICAgIHJldHVybiAqbV9kaXNwbGF5SW5saW5lQ29udGVudDsKIH0KIAot
TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRCb3hl
c0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAorTGF5b3V0SW50ZWdyYXRp
b246OlRleHRSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJUZXh0KSBjb25zdAogewogICAgIGF1dG8qIGlubGluZUNvbnRlbnQgPSBkaXNw
bGF5SW5saW5lQ29udGVudCgpOwogICAgIGlmICghaW5saW5lQ29udGVudCkKQEAgLTMxNiwxMCAr
MzE2LDEwIEBAIExpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0
Ojp0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYKICAgICBpZiAoIWZpcnN0SW5kZXgpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyBMaW5lTGF5b3V0VHJhdmVyc2FsOjpE
aXNwbGF5UnVuUGF0aCgqaW5saW5lQ29udGVudCwgKmZpcnN0SW5kZXgsIGxhc3RJbmRleCArIDEp
IH07CisgICAgcmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGgoKmlubGluZUNv
bnRlbnQsICpmaXJzdEluZGV4LCBsYXN0SW5kZXggKyAxKSB9OwogfQogCi1MaW5lTGF5b3V0VHJh
dmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3IgTGluZUxheW91dDo6ZWxlbWVudEJveEZvcihjb25z
dCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckxpbmVCcmVhaykgY29uc3QKK0xheW91dEludGVncmF0
aW9uOjpFbGVtZW50UnVuSXRlcmF0b3IgTGluZUxheW91dDo6ZWxlbWVudFJ1bkZvcihjb25zdCBS
ZW5kZXJMaW5lQnJlYWsmIHJlbmRlckxpbmVCcmVhaykgY29uc3QKIHsKICAgICBhdXRvKiBpbmxp
bmVDb250ZW50ID0gZGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBpZiAoIWlubGluZUNvbnRl
bnQpCkBAIC0zMzAsNyArMzMwLDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0
ZXJhdG9yIExpbmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGkKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgYXV0byYgcnVuID0gIGlubGluZUNvbnRlbnQtPnJ1bnNbaV07CiAgICAgICAgIGlmICgm
cnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiB7IExpbmVM
YXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoKCppbmxpbmVDb250ZW50LCBpLCBpICsgMSkg
fTsKKyAgICAgICAgICAgIHJldHVybiB7IExheW91dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoKCpp
bmxpbmVDb250ZW50LCBpLCBpICsgMSkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyB9OwpAQCAt
MzkzLDcgKzM5Myw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgLy8gVGV4dFJ1biBl
eHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVzdGVkIHdpdGggdGhlIGFsaWdtZW50IG9mZnNldCAo
ZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVkCiAgICAgICAgIC8vIGFuZCB0aGUg
cnVuIHN0YXJ0cyBhdCAxMDBweCwgZHVlIHRvIHRoZSBob3Jpem9udGFsIGFsaWdtZW50LCB0aGUg
eHBvcyBpcyBzdXBwb3NlZCB0byBiZSBhdCAwcHgpLgogICAgICAgICBhdXRvIHhQb3MgPSByZWN0
LngoKSAtIChsaW5lLnJlY3QoKS54KCkgKyBsaW5lLmhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQo
KSk7Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5KCkg
PyB0ZXh0V2l0aEh5cGhlbiA6IHRleHRDb250ZW50LmNvbnRlbnQoKSwgeFBvcywgZXhwYW5zaW9u
Lmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBXZWJD
b3JlOjpUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdp
dGhIeXBoZW4gOiB0ZXh0Q29udGVudC5jb250ZW50KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9u
dGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRU
YWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAg
ICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCks
IHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZSwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCA5ZGNhMDEyNzkyNGQuLmQ0M2ZkOTM5MTI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMjgsOSArMjgsOSBAQAogI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25Cb3hUcmVlLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
LSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
RW51bXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogCi0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveEl0ZXJhdG9yIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7Ci0gICAg
TGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3IoY29u
c3QgUmVuZGVyTGluZUJyZWFrJikgY29uc3Q7CisgICAgVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5z
Rm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKKyAgICBFbGVtZW50UnVuSXRlcmF0b3IgZWxl
bWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKSBjb25zdDsKIAogICAgIHN0YXRpYyB2
b2lkIHJlbGVhc2VDYWNoZXMoUmVuZGVyVmlldyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApz
aW1pbGFyaXR5IGluZGV4IDY2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCmluZGV4IDg1
Zjg4ZWYyMjg2Yi4uMzRhMjY3NmRkMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAgLTI0
LDQ5ICsyNCw0OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMaW5l
TGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIgogCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKK25hbWVz
cGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKLSAgICA6IG1fdGV4dEJveChXVEZN
b3ZlKHBhdGhWYXJpYW50KSkKK1RleHRSdW5JdGVyYXRvcjo6VGV4dFJ1bkl0ZXJhdG9yKFJ1bjo6
UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fdGV4dFJ1bihXVEZNb3ZlKHBhdGhW
YXJpYW50KSkKIHsKIH0KIAotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZl
cnNlTmV4dEluVmlzdWFsT3JkZXIoKQorVGV4dFJ1bkl0ZXJhdG9yJiBUZXh0UnVuSXRlcmF0b3I6
OnRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKQogewotICAgIFdURjo6c3dpdGNoT24obV90ZXh0
Qm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1f
dGV4dFJ1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgudHJh
dmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKTsKICAgICB9KTsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLVRleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRJ
blRleHRPcmRlcigpCitUZXh0UnVuSXRlcmF0b3ImIFRleHRSdW5JdGVyYXRvcjo6dHJhdmVyc2VO
ZXh0SW5UZXh0T3JkZXIoKQogewotICAgIFdURjo6c3dpdGNoT24obV90ZXh0Qm94Lm1fcGF0aFZh
cmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1fdGV4dFJ1bi5tX3Bh
dGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0VGV4
dEJveEluVGV4dE9yZGVyKCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1ib29s
IFRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVy
KSBjb25zdAorYm9vbCBUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgVGV4dFJ1bkl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAobV90ZXh0Qm94Lm1fcGF0aFZhcmlhbnQu
aW5kZXgoKSAhPSBvdGhlci5tX3RleHRCb3gubV9wYXRoVmFyaWFudC5pbmRleCgpKQorICAgIGlm
IChtX3RleHRSdW4ubV9wYXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVyLm1fdGV4dFJ1bi5tX3Bh
dGhWYXJpYW50LmluZGV4KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fdGV4dEJveC5tX3BhdGhWYXJpYW50LCBbJl0oY29uc3QgYXV0byYgcGF0
aCkgewotICAgICAgICByZXR1cm4gcGF0aCA9PSBXVEY6OmdldDxzdGQ6OmRlY2F5X3Q8ZGVjbHR5
cGUocGF0aCk+PihvdGhlci5tX3RleHRCb3gubV9wYXRoVmFyaWFudCk7CisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV90ZXh0UnVuLm1fcGF0aFZhcmlhbnQsIFsmXShjb25zdCBhdXRvJiBwYXRo
KSB7CisgICAgICAgIHJldHVybiBwYXRoID09IFdURjo6Z2V0PHN0ZDo6ZGVjYXlfdDxkZWNsdHlw
ZShwYXRoKT4+KG90aGVyLm1fdGV4dFJ1bi5tX3BhdGhWYXJpYW50KTsKICAgICB9KTsKIH0KIAot
Ym9vbCBUZXh0Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK2Jvb2wgVGV4dFJ1bkl0ZXJhdG9y
OjphdEVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV90ZXh0Qm94Lm1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X3RleHRSdW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4g
cGF0aC5hdEVuZCgpOwogICAgIH0pOwogfQpAQCAtNzksMTkgKzc5LDE5IEBAIHN0YXRpYyBjb25z
dCBSZW5kZXJCbG9ja0Zsb3cqIGxpbmVMYXlvdXRTeXN0ZW1GbG93Rm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocmVuZGVy
ZXIucGFyZW50KCkpOwogfQogCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0
IFJlbmRlclRleHQmIHRleHQpCitUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0
IFJlbmRlclRleHQmIHRleHQpCiB7CiAgICAgaWYgKGF1dG8qIGZsb3cgPSBsaW5lTGF5b3V0U3lz
dGVtRmxvd0ZvclJlbmRlcmVyKHRleHQpKSB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCiAgICAgICAgIGlmIChhdXRvKiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVM
YXlvdXQgPSBmbG93LT5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQtPnRleHRCb3hl
c0Zvcih0ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExp
bmVMYXlvdXQtPnRleHRSdW5zRm9yKHRleHQpOwogI2VuZGlmCiAgICAgfQogCi0gICAgcmV0dXJu
IHsgQ29tcGxleFBhdGggeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH0gfTsKKyAgICByZXR1cm4geyBM
ZWdhY3lQYXRoIHsgdGV4dC5maXJzdFRleHRCb3goKSB9IH07CiB9CiAKLVRleHRCb3hJdGVyYXRv
ciBmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQorVGV4
dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQm
IHRleHQpCiB7CiAgICAgaWYgKHRleHQuZmlyc3RUZXh0Qm94KCkgJiYgdGV4dC5jb250YWluc1Jl
dmVyc2VkVGV4dCgpKSB7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4gc29y
dGVkVGV4dEJveGVzOwpAQCAtOTksMzkgKzk5LDM5IEBAIFRleHRCb3hJdGVyYXRvciBmaXJzdFRl
eHRCb3hJblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAgICAgICAgICAg
c29ydGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKICAgICAgICAgc3RkOjpzb3J0KHNvcnRl
ZFRleHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIElubGluZVRleHRCb3g6
OmNvbXBhcmVCeVN0YXJ0KTsKICAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94ZXNb
MF07Ci0gICAgICAgIHJldHVybiB7IENvbXBsZXhQYXRoIHsgZmlyc3QsIFdURk1vdmUoc29ydGVk
VGV4dEJveGVzKSwgMCB9IH07CisgICAgICAgIHJldHVybiB7IExlZ2FjeVBhdGggeyBmaXJzdCwg
V1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH0gfTsKICAgICB9CiAKLSAgICByZXR1cm4gZmly
c3RUZXh0Qm94Rm9yKHRleHQpOworICAgIHJldHVybiBmaXJzdFRleHRSdW5Gb3IodGV4dCk7CiB9
CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK1Rl
eHRSdW5SYW5nZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogewotICAgIHJl
dHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSB9OworICAgIHJldHVybiB7IGZpcnN0VGV4dFJ1
bkZvcih0ZXh0KSB9OwogfQogCi1FbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRv
cihCb3g6OlBhdGhWYXJpYW50JiYgcGF0aFZhcmlhbnQpCi0gICAgOiBtX2JveChXVEZNb3ZlKHBh
dGhWYXJpYW50KSkKK0VsZW1lbnRSdW5JdGVyYXRvcjo6RWxlbWVudFJ1bkl0ZXJhdG9yKFJ1bjo6
UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fcnVuKFdURk1vdmUocGF0aFZhcmlh
bnQpKQogewogfQogCi1ib29sIEVsZW1lbnRCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorYm9v
bCBFbGVtZW50UnVuSXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAg
ICAgICByZXR1cm4gcGF0aC5hdEVuZCgpOwogICAgIH0pOwogfQogCi1FbGVtZW50Qm94SXRlcmF0
b3IgZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckVsZW1lbnQpCitF
bGVtZW50UnVuSXRlcmF0b3IgZWxlbWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmIHJl
bmRlckVsZW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIGZsb3cgPSBsaW5lTGF5b3V0U3lzdGVtRmxv
d0ZvclJlbmRlcmVyKHJlbmRlckVsZW1lbnQpKSB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAgICAgICAgIGlmIChhdXRvKiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExp
bmVMYXlvdXQgPSBmbG93LT5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQtPmVsZW1l
bnRCb3hGb3IocmVuZGVyRWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRMaW5lTGF5b3V0LT5lbGVtZW50UnVuRm9yKHJlbmRlckVsZW1lbnQpOwogI2Vu
ZGlmCiAgICAgfQogCi0gICAgcmV0dXJuIHsgQ29tcGxleFBhdGgocmVuZGVyRWxlbWVudC5pbmxp
bmVCb3hXcmFwcGVyKCkpIH07CisgICAgcmV0dXJuIHsgTGVnYWN5UGF0aChyZW5kZXJFbGVtZW50
LmlubGluZUJveFdyYXBwZXIoKSkgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApzaW1pbGFy
aXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lTGF5b3V0VHJhdmVyc2FsLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKaW5kZXggMDFmNjk4OTdkMmU2
Li43M2RjYWMyN2RkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRUcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCkBAIC0yNiw4ICsyNiw4IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNpbmNsdWRlICJM
aW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJh
dmVyc2FsRGlzcGxheVJ1blBhdGguaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yTGVnYWN5UGF0aC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3JNb2Rlcm5QYXRoLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzUsMjMgKzM1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
bmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlclRleHQ7CiAKLW5hbWVzcGFjZSBMaW5lTGF5b3V0
VHJhdmVyc2FsIHsKK25hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLWNsYXNzIEVsZW1l
bnRCb3hJdGVyYXRvcjsKLWNsYXNzIFRleHRCb3hJdGVyYXRvcjsKK2NsYXNzIEVsZW1lbnRSdW5J
dGVyYXRvcjsKK2NsYXNzIFRleHRSdW5JdGVyYXRvcjsKIAogc3RydWN0IEVuZEl0ZXJhdG9yIHsg
fTsKIAotY2xhc3MgQm94IHsKK2NsYXNzIFJ1biB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUGF0aFZh
cmlhbnQgPSBWYXJpYW50PAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQot
ICAgICAgICBEaXNwbGF5UnVuUGF0aCwKKyAgICAgICAgTW9kZXJuUGF0aCwKICNlbmRpZgotICAg
ICAgICBDb21wbGV4UGF0aAorICAgICAgICBMZWdhY3lQYXRoCiAgICAgPjsKIAotICAgIEJveChQ
YXRoVmFyaWFudCYmKTsKKyAgICBSdW4oUGF0aFZhcmlhbnQmJik7CiAKICAgICBGbG9hdFJlY3Qg
cmVjdCgpIGNvbnN0OwogCkBAIC02NCwxNSArNjQsMTUgQEAgcHVibGljOgogICAgIGJvb2wgdXNl
TGluZUJyZWFrQm94UmVuZGVyVHJlZUR1bXBRdWlyaygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgZnJpZW5kIGNsYXNzIEVsZW1lbnRCb3hJdGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgVGV4
dEJveEl0ZXJhdG9yOworICAgIGZyaWVuZCBjbGFzcyBFbGVtZW50UnVuSXRlcmF0b3I7CisgICAg
ZnJpZW5kIGNsYXNzIFRleHRSdW5JdGVyYXRvcjsKIAogICAgIFBhdGhWYXJpYW50IG1fcGF0aFZh
cmlhbnQ7CiB9OwogCi1jbGFzcyBUZXh0Qm94IDogcHVibGljIEJveCB7CitjbGFzcyBUZXh0UnVu
IDogcHVibGljIFJ1biB7CiBwdWJsaWM6Ci0gICAgVGV4dEJveChQYXRoVmFyaWFudCYmKTsKKyAg
ICBUZXh0UnVuKFBhdGhWYXJpYW50JiYpOwogCiAgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdDsK
ICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKQEAgLTg2LDE3MSArODYsMTcxIEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTGFzdCgpIGNvbnN0OwogfTsKIAotY2xhc3MgVGV4dEJveEl0ZXJhdG9y
IHsKK2NsYXNzIFRleHRSdW5JdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgVGV4dEJveEl0ZXJhdG9y
KCkgOiBtX3RleHRCb3goQ29tcGxleFBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OwotICAgIFRl
eHRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOworICAgIFRleHRSdW5JdGVyYXRvcigp
IDogbV90ZXh0UnVuKExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAgIFRleHRS
dW5JdGVyYXRvcihSdW46OlBhdGhWYXJpYW50JiYpOwogCi0gICAgVGV4dEJveEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOyB9Ci0gICAg
VGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7Ci0gICAgVGV4dEJv
eEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOworICAgIFRleHRSdW5JdGVyYXRv
ciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsgfQor
ICAgIFRleHRSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOworICAgIFRl
eHRSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UnVuSXRlcmF0b3Im
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dFJ1bkl0ZXJhdG9yJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgb3BlcmF0
b3I9PShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQogICAgIGJvb2wgb3Bl
cmF0b3IhPShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAotICAgIGNv
bnN0IFRleHRCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEJveDsgfQotICAg
IGNvbnN0IFRleHRCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV90ZXh0Qm94OyB9
CisgICAgY29uc3QgVGV4dFJ1biYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UnVu
OyB9CisgICAgY29uc3QgVGV4dFJ1biogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3Rl
eHRSdW47IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBUZXh0
Qm94IG1fdGV4dEJveDsKKyAgICBUZXh0UnVuIG1fdGV4dFJ1bjsKIH07CiAKLWNsYXNzIEVsZW1l
bnRCb3hJdGVyYXRvciB7CitjbGFzcyBFbGVtZW50UnVuSXRlcmF0b3IgewogcHVibGljOgotICAg
IEVsZW1lbnRCb3hJdGVyYXRvcigpIDogbV9ib3goQ29tcGxleFBhdGggeyBudWxscHRyLCB7IH0g
fSkgeyB9OwotICAgIEVsZW1lbnRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOworICAg
IEVsZW1lbnRSdW5JdGVyYXRvcigpIDogbV9ydW4oTGVnYWN5UGF0aCB7IG51bGxwdHIsIHsgfSB9
KSB7IH07CisgICAgRWxlbWVudFJ1bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJik7CiAKICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAot
ICAgIGNvbnN0IEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ib3g7IH0KLSAgICBj
b25zdCBCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9ib3g7IH0KKyAgICBjb25z
dCBSdW4mIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuOyB9CisgICAgY29uc3QgUnVu
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fcnVuOyB9CiAKICAgICBib29sIGF0RW5k
KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQm94IG1fYm94OworICAgIFJ1biBtX3J1bjsKIH07
CiAKLWNsYXNzIFRleHRCb3hSYW5nZSB7CitjbGFzcyBUZXh0UnVuUmFuZ2UgewogcHVibGljOgot
ICAgIFRleHRCb3hSYW5nZShUZXh0Qm94SXRlcmF0b3IgYmVnaW4pCisgICAgVGV4dFJ1blJhbmdl
KFRleHRSdW5JdGVyYXRvciBiZWdpbikKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQogICAgIHsK
ICAgICB9CiAKLSAgICBUZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2Jl
Z2luOyB9CisgICAgVGV4dFJ1bkl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdp
bjsgfQogICAgIEVuZEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCiBwcml2
YXRlOgotICAgIFRleHRCb3hJdGVyYXRvciBtX2JlZ2luOworICAgIFRleHRSdW5JdGVyYXRvciBt
X2JlZ2luOwogfTsKIAotVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5k
ZXJUZXh0Jik7Ci1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29u
c3QgUmVuZGVyVGV4dCYpOwotVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJU
ZXh0Jik7Ci1FbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5l
QnJlYWsmKTsKK1RleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4
dCYpOworVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKGNvbnN0IFJl
bmRlclRleHQmKTsKK1RleHRSdW5SYW5nZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7
CitFbGVtZW50UnVuSXRlcmF0b3IgZWxlbWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsm
KTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIEJveDo6Qm94KFBhdGhWYXJpYW50JiYgcGF0aCkKK2lubGluZSBSdW46OlJ1bihQ
YXRoVmFyaWFudCYmIHBhdGgpCiAgICAgOiBtX3BhdGhWYXJpYW50KFdURk1vdmUocGF0aCkpCiB7
CiB9CiAKLWlubGluZSBGbG9hdFJlY3QgQm94OjpyZWN0KCkgY29uc3QKK2lubGluZSBGbG9hdFJl
Y3QgUnVuOjpyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhW
YXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLnJlY3QoKTsKICAg
ICB9KTsKIH0KIAotaW5saW5lIGZsb2F0IEJveDo6YmFzZWxpbmUoKSBjb25zdAoraW5saW5lIGZs
b2F0IFJ1bjo6YmFzZWxpbmUoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguYmFzZWxp
bmUoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIGJvb2wgQm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgY29uc3QKK2lubGluZSBib29sIFJ1bjo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYg
cGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAg
ICAgfSk7CiB9CiAKLWlubGluZSBib29sIEJveDo6aXNIb3Jpem9udGFsKCkgY29uc3QKK2lubGlu
ZSBib29sIFJ1bjo6aXNIb3Jpem9udGFsKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRo
LmlzSG9yaXpvbnRhbCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBCb3g6OmRpck92ZXJy
aWRlKCkgY29uc3QKK2lubGluZSBib29sIFJ1bjo6ZGlyT3ZlcnJpZGUoKSBjb25zdAogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAg
ICAgICAgcmV0dXJuIHBhdGguZGlyT3ZlcnJpZGUoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIGJv
b2wgQm94Ojppc0xpbmVCcmVhaygpIGNvbnN0CitpbmxpbmUgYm9vbCBSdW46OmlzTGluZUJyZWFr
KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGluZUJyZWFrKCk7CiAgICAgfSk7
CiB9CiAKLWlubGluZSBib29sIEJveDo6dXNlTGluZUJyZWFrQm94UmVuZGVyVHJlZUR1bXBRdWly
aygpIGNvbnN0CitpbmxpbmUgYm9vbCBSdW46OnVzZUxpbmVCcmVha0JveFJlbmRlclRyZWVEdW1w
UXVpcmsoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQs
IFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgudXNlTGluZUJyZWFrQm94UmVu
ZGVyVHJlZUR1bXBRdWlyaygpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBUZXh0Qm94Ojpo
YXNIeXBoZW4oKSBjb25zdAoraW5saW5lIGJvb2wgVGV4dFJ1bjo6aGFzSHlwaGVuKCkgY29uc3QK
IHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRo
KSB7CiAgICAgICAgIHJldHVybiBwYXRoLmhhc0h5cGhlbigpOwogICAgIH0pOwogfQogCi1pbmxp
bmUgVGV4dEJveDo6VGV4dEJveChQYXRoVmFyaWFudCYmIHBhdGgpCi0gICAgOiBCb3goV1RGTW92
ZShwYXRoKSkKK2lubGluZSBUZXh0UnVuOjpUZXh0UnVuKFBhdGhWYXJpYW50JiYgcGF0aCkKKyAg
ICA6IFJ1bihXVEZNb3ZlKHBhdGgpKQogewogfQogCi1pbmxpbmUgU3RyaW5nVmlldyBUZXh0Qm94
Ojp0ZXh0KCkgY29uc3QKK2lubGluZSBTdHJpbmdWaWV3IFRleHRSdW46OnRleHQoKSBjb25zdAog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgp
IHsKICAgICAgICAgcmV0dXJuIHBhdGgudGV4dCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9mZnNldCgpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQg
VGV4dFJ1bjo6bG9jYWxTdGFydE9mZnNldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0
aC5sb2NhbFN0YXJ0T2Zmc2V0KCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBUZXh0
Qm94Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQgVGV4dFJ1bjo6bG9j
YWxFbmRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZh
cmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgubG9jYWxFbmRPZmZz
ZXQoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgpIGNv
bnN0CitpbmxpbmUgdW5zaWduZWQgVGV4dFJ1bjo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAg
IHJldHVybiBwYXRoLmxlbmd0aCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBUZXh0Qm94
Ojppc0xhc3RPbkxpbmUoKSBjb25zdAoraW5saW5lIGJvb2wgVGV4dFJ1bjo6aXNMYXN0T25MaW5l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGFzdE9uTGluZSgpOwogICAgIH0p
OwogfQogCi1pbmxpbmUgYm9vbCBUZXh0Qm94Ojppc0xhc3QoKSBjb25zdAoraW5saW5lIGJvb2wg
VGV4dFJ1bjo6aXNMYXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Bh
dGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmlzTGFzdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRy
YXZlcnNhbENvbXBsZXhQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaApzaW1pbGFyaXR5IGluZGV4
IDkxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
VHJhdmVyc2FsQ29tcGxleFBhdGguaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXgg
YTY2ZGI3ZmNiOTI4Li4yZGVjZDY2ZDQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TGVnYWN5UGF0aC5oCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsK
K25hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLWNsYXNzIENvbXBsZXhQYXRoIHsKK2Ns
YXNzIExlZ2FjeVBhdGggewogcHVibGljOgotICAgIENvbXBsZXhQYXRoKGNvbnN0IElubGluZUJv
eCogaW5saW5lQm94LCBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkSW5saW5l
VGV4dEJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lVGV4dEJveEluZGV4ID0gMCkKKyAg
ICBMZWdhY3lQYXRoKGNvbnN0IElubGluZUJveCogaW5saW5lQm94LCBWZWN0b3I8Y29uc3QgSW5s
aW5lVGV4dEJveCo+JiYgc29ydGVkSW5saW5lVGV4dEJveGVzID0geyB9LCBzaXplX3Qgc29ydGVk
SW5saW5lVGV4dEJveEluZGV4ID0gMCkKICAgICAgICAgOiBtX2lubGluZUJveChpbmxpbmVCb3gp
CiAgICAgICAgICwgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMoV1RGTW92ZShzb3J0ZWRJbmxpbmVU
ZXh0Qm94ZXMpKQogICAgICAgICAsIG1fc29ydGVkSW5saW5lVGV4dEJveEluZGV4KHNvcnRlZElu
bGluZVRleHRCb3hJbmRleCkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
KyttX3NvcnRlZElubGluZVRleHRCb3hJbmRleDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ29tcGxleFBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCA9
PSBvdGhlci5tX2lubGluZUJveDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZWdhY3lQ
YXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVC
b3g7IH0KICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1faW5saW5lQm94OyB9CiAK
IHByaXZhdGU6CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc29ydGVk
SW5saW5lVGV4dEJveEluZGV4IHsgMCB9OwogfTsKIAotaW5saW5lIGNvbnN0IElubGluZVRleHRC
b3gqIENvbXBsZXhQYXRoOjpuZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCkgY29uc3QKK2lu
bGluZSBjb25zdCBJbmxpbmVUZXh0Qm94KiBMZWdhY3lQYXRoOjpuZXh0SW5saW5lVGV4dEJveElu
VGV4dE9yZGVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc29ydGVkSW5saW5lVGV4dEJveGVzLmlz
RW1wdHkoKSkgewogICAgICAgICBpZiAobV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggKyAxIDwg
bV9zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvck1vZGVyblBhdGguaApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGgu
aApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggMDFiN2E2YzM1YjY2Li5kNDU5ZmUy
OTc0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlv
dXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC0z
MSwyNCArMzEsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgTGluZUxh
eW91dFRyYXZlcnNhbCB7CituYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiBzdGF0aWMg
RmxvYXRQb2ludCBsaW5lUG9zaXRpb24oZmxvYXQgbGVmdCwgZmxvYXQgdG9wKQogewogICAgIHJl
dHVybiBGbG9hdFBvaW50KGxlZnQsIHJvdW5kZih0b3ApKTsKIH0KIAotY2xhc3MgRGlzcGxheVJ1
blBhdGggeworY2xhc3MgTW9kZXJuUGF0aCB7CiBwdWJsaWM6Ci0gICAgRGlzcGxheVJ1blBhdGgo
Y29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0
SW5kZXgsIHNpemVfdCBlbmRJbmRleCkKKyAgICBNb2Rlcm5QYXRoKGNvbnN0IERpc3BsYXk6Oklu
bGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVfdCBzdGFydEluZGV4LCBzaXplX3QgZW5k
SW5kZXgpCiAgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQogICAgICAg
ICAsIG1fZW5kSW5kZXgoZW5kSW5kZXgpCiAgICAgICAgICwgbV9ydW5JbmRleChzdGFydEluZGV4
KQogICAgIHsgfQotICAgIERpc3BsYXlSdW5QYXRoKERpc3BsYXlSdW5QYXRoJiYpID0gZGVmYXVs
dDsKLSAgICBEaXNwbGF5UnVuUGF0aChjb25zdCBEaXNwbGF5UnVuUGF0aCYpID0gZGVmYXVsdDsK
LSAgICBEaXNwbGF5UnVuUGF0aCYgb3BlcmF0b3I9KGNvbnN0IERpc3BsYXlSdW5QYXRoJikgPSBk
ZWZhdWx0OwotICAgIERpc3BsYXlSdW5QYXRoJiBvcGVyYXRvcj0oRGlzcGxheVJ1blBhdGgmJikg
PSBkZWZhdWx0OworICAgIE1vZGVyblBhdGgoTW9kZXJuUGF0aCYmKSA9IGRlZmF1bHQ7CisgICAg
TW9kZXJuUGF0aChjb25zdCBNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OworICAgIE1vZGVyblBhdGgm
IG9wZXJhdG9yPShjb25zdCBNb2Rlcm5QYXRoJikgPSBkZWZhdWx0OworICAgIE1vZGVyblBhdGgm
IG9wZXJhdG9yPShNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKIAogICAgIEZsb2F0UmVjdCByZWN0
KCkgY29uc3Q7CiAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHRy
YXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpIHsgIHRyYXZlcnNlTmV4dFRleHRCb3hJblZp
c3VhbE9yZGVyKCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEaXNwbGF5UnVuUGF0
aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5tX2lubGlu
ZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5tX3J1bkluZGV4OyB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGlu
ZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fcnVuSW5kZXggPT0gb3RoZXIu
bV9ydW5JbmRleDsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3J1bkluZGV4
ID09IG1fZW5kSW5kZXg7IH0KIAogcHJpdmF0ZToKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBtX3J1bkluZGV4IHsgMCB9OwogfTsKIAotaW5saW5lIEZsb2F0UmVjdCBE
aXNwbGF5UnVuUGF0aDo6cmVjdCgpIGNvbnN0CitpbmxpbmUgRmxvYXRSZWN0IE1vZGVyblBhdGg6
OnJlY3QoKSBjb25zdAogewogICAgIGF1dG8gcmVjdCA9IHJ1bigpLnJlY3QoKTsKICAgICBhdXRv
IHBvc2l0aW9uID0gbGluZVBvc2l0aW9uKHJlY3QueCgpLCByZWN0LnkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGFlYzFiMzQxNjJhYy4u
OTE0YzMxNDFhMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFdCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCi0j
aW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVz
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBA
IC0xNzAsNyArMTcwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxvY2FsQ2FyZXRS
ZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBjYXJldE8KIAogSW50UmVjdCBSZW5k
ZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogewotICAgIGF1dG8gYm94ID0g
TGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgYXV0byBib3gg
PSBMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVudFJ1bkZvcigqdGhpcyk7CiAgICAgaWYgKCFib3gp
CiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBJbnRSZWN0IFJlbmRl
ckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiAKIEludFJlY3QgUmVuZGVyTGlu
ZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1wKCkgY29uc3QKIHsKLSAgICBhdXRv
IGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAgIGF1
dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1lbnRSdW5Gb3IoKnRoaXMpOwogICAgIGlm
ICghYm94KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0yMDEsNyArMjAxLDcgQEAgSW50UmVj
dCBSZW5kZXJMaW5lQnJlYWs6OmJvdW5kaW5nQm94Rm9yUmVuZGVyVHJlZUR1bXAoKSBjb25zdAog
CiB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAg
YXV0byBib3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjplbGVtZW50Qm94Rm9yKCp0aGlzKTsKKyAg
ICBhdXRvIGJveCA9IExheW91dEludGVncmF0aW9uOjplbGVtZW50UnVuRm9yKCp0aGlzKTsKICAg
ICBpZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBS
ZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0UG9pbnQmIGEKIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBh
dXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAg
IGF1dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1lbnRSdW5Gb3IoKnRoaXMpOwogICAg
IGlmICghYm94KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAppbmRleCA4ZTBlYjI3OGNjNGUuLjMyNzIyMTdlZWZlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1ZGUg
IklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5j
bHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIlJhbmdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5o
IgpAQCAtMzAzLDggKzMwMyw4IEBAIFN0cmluZyBSZW5kZXJUZXh0OjpvcmlnaW5hbFRleHQoKSBj
b25zdAogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAg
IGZvciAoYXV0byYgYm94IDogTGluZUxheW91dFRyYXZlcnNhbDo6dGV4dEJveGVzRm9yKCp0aGlz
KSkgewotICAgICAgICBhdXRvIHJlY3QgPSBib3gucmVjdCgpOworICAgIGZvciAoYXV0byYgcnVu
IDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgICAgICBhdXRv
IHJlY3QgPSBydW4ucmVjdCgpOwogICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVj
dChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyByZWN0LmxvY2F0aW9uKCksIHJlY3Quc2l6
ZSgpKSkpOwogICAgIH0KIH0KQEAgLTQwOCw4ICs0MDgsOCBAQCBzdGF0aWMgVmVjdG9yPEZsb2F0
UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNGb3JOb25Db21wbGV4UGF0aHMoY29uc3QgUmVuZGVy
VGV4dAogICAgIEFTU0VSVCghdGV4dFJlbmRlcmVyLnVzZXNDb21wbGV4TGluZUxheW91dFBhdGgo
KSk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKLSAgICBmb3IgKGF1dG8mIGJveCA6
IExpbmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0Zvcih0ZXh0UmVuZGVyZXIpKQotICAgICAg
ICBxdWFkcy5hcHBlbmQodGV4dFJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFk
KGJveC5yZWN0KCkpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOworICAgIGZvciAoYXV0byYg
cnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKHRleHRSZW5kZXJlcikpCisgICAg
ICAgIHF1YWRzLmFwcGVuZCh0ZXh0UmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1
YWQocnVuLnJlY3QoKSksIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CiAgICAgcmV0dXJuIHF1
YWRzOwogfQogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4+IFJlbmRlclRleHQ6OmRyYWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZgog
CiBJbnRQb2ludCBSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0aW9uKCkgY29uc3QKIHsKLSAgICBh
dXRvIGZpcnN0ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94Rm9yKCp0aGlzKTsK
KyAgICBhdXRvIGZpcnN0ID0gTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcigqdGhp
cyk7CiAgICAgaWYgKCFmaXJzdCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gSW50
UG9pbnQoZmlyc3QtPnJlY3QoKS5sb2NhdGlvbigpKTsKQEAgLTEzNTUsNyArMTM1NSw3IEBAIGZs
b2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29uc3Qg
Rm9udENhc2NhZGUmIGYsIGZsb2F0CiAKIEludFJlY3QgUmVuZGVyVGV4dDo6bGluZXNCb3VuZGlu
Z0JveCgpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZp
cnN0VGV4dEJveEZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdCA9IExheW91dEludGVncmF0aW9u
OjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOwogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVy
biB7IH07CiAKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6c2Vs
ZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAK
IGludCBSZW5kZXJUZXh0OjpjYXJldE1pbk9mZnNldCgpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJz
dCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CisgICAgYXV0
byBmaXJzdCA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOwogICAg
IGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNDU3LDcgKzE0NTcsNyBAQCBp
bnQgUmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogCiBpbnQgUmVuZGVyVGV4dDo6
Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewotICAgIGF1dG8gZmlyc3QgPSBMaW5lTGF5b3V0VHJh
dmVyc2FsOjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOworICAgIGF1dG8gZmlyc3QgPSBMYXlvdXRJ
bnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlzKTsKICAgICBpZiAoIWZpcnN0KQogICAg
ICAgICByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOwogCkBAIC0xNDcxLDkgKzE0NzEsOSBAQCBpbnQg
UmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogdW5zaWduZWQgUmVuZGVyVGV4dDo6
Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0
CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBmb3IgKGF1dG8mIGJveCA6IExpbmVM
YXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKLSAgICAgICAgYXV0byBzdGFy
dCA9IGJveC5sb2NhbFN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0gYm94Lmxl
bmd0aCgpOworICAgIGZvciAoYXV0byYgcnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5z
Rm9yKCp0aGlzKSkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gcnVuLmxvY2FsU3RhcnRPZmZzZXQo
KTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBydW4ubGVuZ3RoKCk7CiAgICAgICAgIGlmIChvZmZz
ZXQgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIGlmIChvZmZz
ZXQgPD0gc3RhcnQgKyBsZW5ndGgpIHsKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIHVuc2lnbmVkIFJl
bmRlclRleHQ6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwodW5zaWduZWQgb2Zm
c2V0KSBjb25zdAogZW51bSBjbGFzcyBPZmZzZXRUeXBlIHsgQ2hhcmFjdGVyLCBDYXJldCB9Owog
c3RhdGljIGJvb2wgY29udGFpbnNPZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWdu
ZWQgb2Zmc2V0LCBPZmZzZXRUeXBlIHR5cGUpCiB7Ci0gICAgZm9yIChhdXRvIGJveCA9IExpbmVM
YXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHRleHQpOyBib3g7IGJv
eC50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpKSB7CisgICAgZm9yIChhdXRvIGJveCA9IExheW91
dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcih0ZXh0KTsgYm94OyBib3gu
dHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkgewogICAgICAgICBhdXRvIHN0YXJ0ID0gYm94LT5s
b2NhbFN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIGlmIChvZmZzZXQgPCBzdGFydCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MTcsNyArMTUxNyw3IEBAIGJvb2wgUmVuZGVyVGV4dDo6
Y29udGFpbnNDYXJldE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAKIGJvb2wgUmVuZGVy
VGV4dDo6aGFzUmVuZGVyZWRUZXh0KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGJveCA6IExp
bmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8m
IGJveCA6IExheW91dEludGVncmF0aW9uOjp0ZXh0UnVuc0ZvcigqdGhpcykpIHsKICAgICAgICAg
aWYgKGJveC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBlODJmNzlm
MjQyOGYuLjc1YWRhMjhlNjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3gu
aCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQ
cmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRlc3QgcmVzdWx0
cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwgdGV4dC5s
aW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFMaW5lTGF5b3V0VHJhdmVy
c2FsOjpmaXJzdFRleHRCb3hGb3IodGV4dCkpCisgICAgICAgIGlmICghTGF5b3V0SW50ZWdyYXRp
b246OmZpcnN0VGV4dFJ1bkZvcih0ZXh0KSkKICAgICAgICAgICAgIGFkanVzdEZvclRhYmxlQ2Vs
bHMgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG8uaXNCUigpKSB7CiAgICAgICAgIGNvbnN0IFJl
bmRlckxpbmVCcmVhayYgYnIgPSBkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KG8pOwpAQCAtNDc4
LDI2ICs0NzgsMjYgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5kZXIKICAgICB9CiB9CiAKLXN0YXRp
YyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywg
Y29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYgdGV4dEJveCkKK3N0YXRpYyB2b2lk
IHdyaXRlVGV4dFJ1bihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywgY29uc3Qg
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW4mIHRleHRSdW4pCiB7Ci0gICAgYXV0byByZWN0ID0g
dGV4dEJveC5yZWN0KCk7CisgICAgYXV0byByZWN0ID0gdGV4dFJ1bi5yZWN0KCk7CiAgICAgaW50
IHggPSByZWN0LngoKTsKICAgICBpbnQgeSA9IHJlY3QueSgpOwogICAgIC8vIEZJWE1FOiBVc2Ug
bm9uLWxvZ2ljYWwgd2lkdGguIHdlYmtpdC5vcmcvYi8yMDY4MDkuCi0gICAgaW50IGxvZ2ljYWxX
aWR0aCA9IGNlaWxmKHJlY3QueCgpICsgKHRleHRCb3guaXNIb3Jpem9udGFsKCkgPyByZWN0Lndp
ZHRoKCkgOiByZWN0LmhlaWdodCgpKSkgLSB4OworICAgIGludCBsb2dpY2FsV2lkdGggPSBjZWls
ZihyZWN0LngoKSArICh0ZXh0UnVuLmlzSG9yaXpvbnRhbCgpID8gcmVjdC53aWR0aCgpIDogcmVj
dC5oZWlnaHQoKSkpIC0geDsKICAgICAvLyBGSVhNRTogVGFibGUgY2VsbCBhZGp1c3RtZW50IGlz
IHRlbXBvcmFyeSB1bnRpbCByZXN1bHRzIGNhbiBiZSB1cGRhdGVkLgogICAgIGlmIChpczxSZW5k
ZXJUYWJsZUNlbGw+KCpvLmNvbnRhaW5pbmdCbG9jaygpKSkKICAgICAgICAgeSAtPSBmbG9vclRv
SW50KGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm8uY29udGFpbmluZ0Jsb2NrKCkpLmludHJp
bnNpY1BhZGRpbmdCZWZvcmUoKSk7CiAgICAgICAgIAogICAgIHRzIDw8ICJ0ZXh0IHJ1biBhdCAo
IiA8PCB4IDw8ICIsIiA8PCB5IDw8ICIpIHdpZHRoICIgPDwgbG9naWNhbFdpZHRoOwotICAgIGlm
ICghdGV4dEJveC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgfHwgdGV4dEJveC5kaXJPdmVycmlk
ZSgpKSB7Ci0gICAgICAgIHRzIDw8ICghdGV4dEJveC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyAiIFJUTCIgOiAiIExUUiIpOwotICAgICAgICBpZiAodGV4dEJveC5kaXJPdmVycmlkZSgpKQor
ICAgIGlmICghdGV4dFJ1bi5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgfHwgdGV4dFJ1bi5kaXJP
dmVycmlkZSgpKSB7CisgICAgICAgIHRzIDw8ICghdGV4dFJ1bi5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyAiIFJUTCIgOiAiIExUUiIpOworICAgICAgICBpZiAodGV4dFJ1bi5kaXJPdmVycmlk
ZSgpKQogICAgICAgICAgICAgdHMgPDwgIiBvdmVycmlkZSI7CiAgICAgfQogICAgIHRzIDw8ICI6
ICIKLSAgICAgICAgPDwgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKHRleHRCb3gudGV4dCgp
KTsKLSAgICBpZiAodGV4dEJveC5oYXNIeXBoZW4oKSkKKyAgICAgICAgPDwgcXVvdGVBbmRFc2Nh
cGVOb25QcmludGFibGVzKHRleHRSdW4udGV4dCgpKTsKKyAgICBpZiAodGV4dFJ1bi5oYXNIeXBo
ZW4oKSkKICAgICAgICAgdHMgPDwgIiArIGh5cGhlbiBzdHJpbmcgIiA8PCBxdW90ZUFuZEVzY2Fw
ZU5vblByaW50YWJsZXMoby5zdHlsZSgpLmh5cGhlblN0cmluZygpLnN0cmluZygpKTsKICAgICB0
cyA8PCAiXG4iOwogfQpAQCAtNTQ2LDkgKzU0Niw5IEBAIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+IGJl
CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4obykpIHsKICAgICAgICAgYXV0byYgdGV4dCA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KG8pOwotICAgICAgICBmb3IgKGF1dG8mIHRleHRCb3ggOiBMaW5l
TGF5b3V0VHJhdmVyc2FsOjp0ZXh0Qm94ZXNGb3IodGV4dCkpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBydW4gOiBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bnNGb3IodGV4dCkpIHsKICAgICAgICAg
ICAgIHRzIDw8IGluZGVudDsKLSAgICAgICAgICAgIHdyaXRlVGV4dEJveCh0cywgdGV4dCwgdGV4
dEJveCk7CisgICAgICAgICAgICB3cml0ZVRleHRSdW4odHMsIHRleHQsIHJ1bik7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5
cGU8UmVuZGVyT2JqZWN0Pihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihvKSkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409879</attachid>
            <date>2020-09-28 03:25:25 -0700</date>
            <delta_ts>2020-09-28 06:42:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textruniterator-naming-4.patch</filename>
            <type>text/plain</type>
            <size>67671</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNmFhNTRhNTVhMzkuLjQ2NTdkMmI4YWMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwMSBAQAorMjAyMC0wOS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIE1vdmUgcnVuIGl0ZXJhdG9yIHRvIExh
eW91dEludGVncmF0aW9uIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyB1c2UgbmFtZSAnTW9kZXJuJyBmb3IgTEZDIGFuZCAnTGVn
YWN5JyBmb3IgdGhlIG9sZCBpbmxpbmUgdHJlZSBwYXRoLgorCisgICAgICAgIEFsc28gcmVuYW1l
IGJveC0+cnVuIGZvciBtb3JlIGNvbnNpc3RlbnQgdGVybWlub2xvZ3kuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Ojp1cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVh
bSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
dGV4dFJ1bnNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OmVsZW1lbnRSdW5Gb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmVsZW1l
bnRCb3hGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRl
eHRSdW5JdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpFbGVtZW50UnVuSXRlcmF0b3I6OkVsZW1lbnRSdW5JdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjph
dEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVu
dFJ1bkZvcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRUcmF2ZXJzYWwuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5J
dGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkVsZW1lbnRSdW5JdGVyYXRvcjo6RWxlbWVudFJ1bkl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpFbGVtZW50UnVu
SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6RWxlbWVudFJ1bkl0ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuUmFuZ2U6OlRleHRSdW5SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1blJhbmdlOjpiZWdp
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6cmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpiYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpSdW46OmlzSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuOjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjp1c2VMaW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1
aXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVu
OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OlRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlRleHRSdW46OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlRleHRSdW46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuOjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW46OmlzTGFzdE9uTGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bjo6
aXNMYXN0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OkxlZ2FjeVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBh
dGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TW9kZXJuUGF0aDo6TW9kZXJuUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGluZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFi
c29sdXRlUXVhZHNGb3JOb25Db21wbGV4UGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6Zmlyc3RSdW5Mb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpsaW5lc0JvdW5kaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNhcmV0TWluT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNv
dW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGFpbnNPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6aGFzUmVu
ZGVyZWRUZXh0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUZXh0Qm94KTogRGVsZXRlZC4KKwogMjAy
MC0wOS0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJLaXRMZWdhY3kgc2hvdWxkIGNhbGwgUGFnZTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZWU5ODhmNWMzM2I2Li43ZThkNTM1NTE4YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNzE0LDYgKzcxNCwxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAKICAgICBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSZWN0
LmgKIAorICAgIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmgKKyAgICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxl
Z2FjeVBhdGguaAorICAgIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aC5oCisKICAgICBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAog
CiAgICAgbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oCkBAIC0xNDI3LDkgKzE0MzEsNiBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaAogICAgIHJlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaAogCi0gICAgcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCi0gICAgcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmgKLSAgICByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaAogICAgIHJlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5o
CiAgICAgcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBhNTcyY2U5NDIwZjQuLjg1Y2EwNGE2YTg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE0NjgsNiAr
MTQ2OCw3IEBAIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3Bw
CiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAorbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCiBsYXlvdXQvaW52YWxpZGF0aW9u
L0ludmFsaWRhdGlvbkNvbnRleHQuY3BwCiBsYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlv
blN0YXRlLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMjIxNiw3ICsy
MjE3LDYgQEAgcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAogcmVuZGVyaW5nL1RyYWlsaW5nRmxv
YXRzUm9vdElubGluZUJveC5jcHAKIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAogcmVu
ZGVyaW5nL2xpbmUvTGluZUluZm8uY3BwCi1yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVy
c2FsLmNwcAogcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAogcmVuZGVyaW5nL2xpbmUvVHJh
aWxpbmdPYmplY3RzLmNwcAogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1
YjliYTljZTlkOTAuLjc1ZjlkNTU4YTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk4NSw3ICs0OTg1LDYgQEAKIAkJRTQy
OTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI5NUZBMzEyQjA2MTRFMDBE
MUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDJFNzZEQzFDN0FGNzc2MDBFMzYxNEQgLyogU3R5
bGVVcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0MkU3NkRCMUM3QUY3NzYwMEUzNjE0RCAvKiBTdHlsZVVwZGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MzEwNUJCMTY3NTBGMTYwMERC
MkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDMxMDVCQTE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0MzQz
RDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MzQzRDI0MjM5
Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDNBMDIzQjE3RUIz
NzBBMDA0Q0REMjUgLyogUmVuZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzQTAyM0ExN0VCMzcwQTAwNENERDI1IC8qIFJlbmRlckVs
ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDNBRjhFNzFBQzVCN0VDMDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDNBRjhFNTFBQzVCN0REMDBD
QTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ0MEFBOTYxQzY4NDIwODAwQTI2NUNDIC8qIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDQwQUE5NTFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgfTsKQEAgLTUwMDgsNyArNTAwNyw2IEBACiAJCUU0
NDYxNDUyMENENjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNDFFMzQwQ0JGQjYwOTAwQUYyRUNFIC8q
IFJlbmRlclZpZGVvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ0QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjIxNDE2
NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovOyB9OwogCQlFNDRGQTE4NTFCQ0E2
QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBD
b21wb3NlZFRyZWVJdGVyYXRvci5oICovOyB9OwotCQlFNDUxQzYyODIzOTI5M0VDMDA5OTMxOTAg
LyogTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUxQzYyNzIzOTI5M0VCMDA5OTMxOTAgLyog
TGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzEyMzk0MDI3OTAwOTkzMTkwIC8q
IExheW91dFVuaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5b3V0VW5pdHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUxQzYzMjIzOTQwMzFB
MDA5OTMxOTAgLyogTWFyZ2luVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGRTdBQTI2MjFDMzdCNjMwMDI5NkRDRCAvKiBNYXJnaW5UeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NTFD
NjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MUM2MzMyMzk0MDU4RTAwOTkz
MTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwMzcsMTAgKzUwMzUsMTIgQEAKIAkJRTQ3QzM5MzMx
RkU2RTEwODAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI3MUZFNkUwREMw
MEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87IH07CiAJCUU0N0Uy
NzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUy
QUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ4MTM3QjkxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxl
VmFsaWRpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0ODEzN0I4MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTQ4NEEzM0UyMzA1NTMyNTAw
OUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5
b3V0VHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ4NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg2M0NGRDIzODQyRTlFMDA5
NzIxNTggLyogUnVsZURhdGEuaCAqLzsgfTsKIAkJRTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdGIC8q
IFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5NDZFQUQxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OUJEOUZB
MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OUJEOUY5MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NW
YWx1ZVBvb2wuaCAqLzsgfTsKKwkJRTRBNjY0Q0MyNTIxRDRBRjAwNzA4MURDIC8qIExheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0QTY2NEM2MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEE2NjRDNDI1MjFCNzc3MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvck1vZGVyblBhdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFNEE2NjRDRjI1MjFENEUyMDA3MDgxREMgLyogTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTY2NEM1MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QTc5OTUyMjBFRTRCMTQwMEMxOTU2OCAvKiBDU1NQ
YXJzZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEE3OTk0RTIwRUU0QUUxMDBDMTk1NjggLyogQ1NTUGFyc2VyQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QTgxNEQ0MUM2
REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBODE0RDMxQzZERUM0MDAwQkY4NUFD
IC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNERBMUM3MEUxMEQw
MEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAv
KiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLzsgfTsKQEAgLTE1ODUzLDcgKzE1ODUz
LDYgQEAKIAkJRTQzMTA1QkExNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVRyYXZlcnNhbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDMxMkFCNTI0QjMyNjU2MDA2NzgzNDkgLyogTGF5b3V0SW50
ZWdyYXRpb25QYWdpbmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0MzEyQUI3MjRCMzI2NTYwMDY3ODM0OSAvKiBMYXlvdXRJbnRlZ3JhdGlvblBh
Z2luYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdy
YXRpb25QYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0MzQzRDI0
MjM5Mjc3OEYwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbENvbXBsZXhQ
YXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0M0EwMjNBMTdFQjM3MEEwMDRD
REQyNSAvKiBSZW5kZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQzQTAyM0Mx
N0VCMzcxMzAwNENERDI1IC8qIFJlbmRlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0M0FGOEU0MUFDNUI3REQwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVWYWxpZGF0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODkxLDcgKzE1ODkwLDYgQEAKIAkJ
RTQ0RUUzQTcxNzU3NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udEdlbmVyaWNGYW1pbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcG9zZWRUcmVlSXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8q
IENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTQ1MUM2MjcyMzkyOTNFQjAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNw
bGF5UnVuUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lTGF5b3V0
VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTQ1MUM2MzMyMzk0MDU4RTAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlJbmxpbmVDb250ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxl
Y3RvclF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVj
dG9yUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDUzMjJBQTE0MENF
MjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTk0MCw4ICsxNTkzOCw2IEBACiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2
MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVW
YWxpZGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVZhbGlkaXR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0ODRBMzNCMjMwNTUzMDMwMDlBREU2
QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExpbmVMYXlvdXRUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTQ4NEEzM0QyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODYzQ0ZBMjM4NDJFODcwMDk3MjE1OCAv
KiBSdWxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdWxl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODYzQ0ZEMjM4NDJFOUUw
MDk3MjE1OCAvKiBSdWxlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
dWxlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDk0NkVBQzE1NkU2NERE
MDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUnVsZUltcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTk1Miw2ICsxNTk0OCwxMCBAQAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUg
LyogRGF0YVVSTERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGF0YVVSTERlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEx
ODIyRjFGMTNCRTU4MDBGRUY2OTggLyogU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIENvbXBsZXhMaW5lTGF5
b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXhMaW5lTGF5b3V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QTY2NEM0MjUyMUI3NzcwMDcwODFE
QyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE2NjRDNTI1MjFCNzc4MDA3
MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxl
Z2FjeVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBNjY0QzYyNTIxQjc3
ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE2NjRDNzI1MjFCNzc5MDA3MDgxREMgLyogTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTRBNzk5NEUyMEVFNEFFMTAwQzE5NTY4IC8qIENTU1BhcnNlckNv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyQ29udGV4
dC5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBNzk5NTAyMEVFNEFFMjAwQzE5NTY4IC8qIENTU1BhcnNlckNvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyQ29udGV4
dC5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg0OTUsNiAr
Mjg0OTUsMTAgQEAKIAkJRTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9uICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFNEE2NjRDNzI1
MjFCNzc5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8sCisJ
CQkJRTRBNjY0QzYyNTIxQjc3ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3IuaCAqLywKKwkJCQlFNEE2NjRDNTI1MjFCNzc4MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCAqLywKKwkJCQlFNEE2NjRDNDI1MjFCNzc3MDA3MDgx
REMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCAqLywKIAkJCQlF
NDE4MDI1NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAq
LywKIAkJCQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlLmggKi8sCiAJCQkJRTQwM0I3OUYyNTFCMTE4QjAwMTlFODAwIC8qIExheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwICovLApAQCAtMzAyNDQsMTAgKzMwMjQ4LDYgQEAKIAkJCQlGRkI2OThD
RTE4MzNGMTc2MDAxNThBMzEgLyogTGluZUluZm8uaCAqLywKIAkJCQlGRkVGQUIyRDE4M0JDQjZG
MDA1MTQ1MzQgLyogTGluZUlubGluZUhlYWRlcnMuaCAqLywKIAkJCQlGRkVGQUIyOTE4MzgwREEw
MDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggKi8sCi0JCQkJRTQ4NEEzM0QyMzA1NTMwMzAw
OUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwICovLAotCQkJCUU0ODRBMzNCMjMwNTUz
MDMwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmggKi8sCi0JCQkJRTQzNDNEMjQyMzky
Nzc4RjAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oICovLAotCQkJ
CUU0NTFDNjI3MjM5MjkzRUIwMDk5MzE5MCAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1
blBhdGguaCAqLywKIAkJCQlGRkRCQzA0NjE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmNw
cCAqLywKIAkJCQlGRkRCQzA0NTE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggKi8sCiAJ
CQkJRkZBQzMwRkQxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5jcHAgKi8sCkBA
IC0zMjQ0Nyw2ICszMjQ0Nyw3IEBACiAJCQkJMDc5NjlEQjAxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRFRNRlNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjIxN0QxNDE1MTAwN0ZG
ODQyIC8qIEpTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5
NjlEQjYxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNEE2NjRDRTI1MjFENEM5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkRDQjRDMUU3OTEwQTYw
MDFCNUY4NyAvKiBKU1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE2RENCNEUxRTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mzc5NEVDMTlFRTM0MUUwMEU1QTA0NSAvKiBKU1JUQ0ljZVNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQ5Miw2ICszMjQ5Myw3IEBACiAJCQkJQjU5REQ2QTUx
MTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUI1OURENkE5MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0MzJBMEQwQ0U4QTIwMDQ2MEM4RiAvKiBK
U1NRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEE2NjRDQzI1MjFENEFGMDA3
MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjU5REQ2OUQxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTExMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMzA5REEy
QjQ4MDA5NjMzQTcgLyogSlNTdGF0aWNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgyNyw5
ICszMjgyOSw2IEBACiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRp
ZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3
QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkVGQUIyQTE4Mzgw
REEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDg0
QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxD
b21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkw
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkZEQkMwNDcxODNEMjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0JBOURDMEIxREY0NERGNDAwMDU2NzVDIC8qIExpbmtIZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNDNCMjYzMURERDE1MjAwMDE0RkFDNiAvKiBMaW5rSWNvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjk2NCw2ICszMjk2Myw3IEBACiAJCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFF
QTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNB
MSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEE2NjRDRjI1
MjFENEUyMDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxN0Y3QUVGMjEzOUJGNkYwMEZCQTdFQyAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
OUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMDcxYzgwYmFlNDg5Li42OWQzY2Rm
YzcyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgi
CisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25J
dGVyYXRvci5oIgpAQCAtNzI4LDggKzcyOCw4IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVh
bShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgaWYgKGlz
PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAKLSAgICAgICAgICAgIGF1dG8g
Zmlyc3RUZXh0Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0T3Jk
ZXJGb3IodGV4dFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmICghZmlyc3RUZXh0Qm94KQorICAg
ICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0
UnVuSW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAgICAgIGlmICghZmlyc3RU
ZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoJmN1
cnJlbnROb2RlICE9IHN0YXJ0Tm9kZSkgewpAQCAtNzQyLDE0ICs3NDIsMTQgQEAgUG9zaXRpb24g
UG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25z
dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3Vy
cmVudFBvc2l0aW9uLm9mZnNldEluTGVhZk5vZGUoKTsKLSAgICAgICAgICAgIGZvciAoYXV0byBi
b3ggPSBmaXJzdFRleHRCb3g7IGJveDsgYm94LnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA8PSBib3gtPmxvY2FsRW5kT2Zmc2V0KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPiBib3gtPmxvY2FsU3RhcnRP
ZmZzZXQoKSkKKyAgICAgICAgICAgIGZvciAoYXV0byBydW4gPSBmaXJzdFRleHRSdW47IHJ1bjsg
cnVuLnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodGV4
dE9mZnNldCA8PSBydW4tPmxvY2FsRW5kT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRleHRPZmZzZXQgPiBydW4tPmxvY2FsU3RhcnRPZmZzZXQoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zm
c2V0ID09IGJveC0+bG9jYWxFbmRPZmZzZXQoKSArIDEgJiYgYm94LT5pc0xhc3RPbkxpbmUoKSAm
JiAhYm94LT5pc0xhc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4t
PmxvY2FsRW5kT2Zmc2V0KCkgKyAxICYmIHJ1bi0+aXNMYXN0T25MaW5lKCkgJiYgIXJ1bi0+aXNM
YXN0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTgzNSw4ICs4MzUsOCBAQCBQb3NpdGlvbiBQb3NpdGlv
bjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAg
ICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGF1dG8m
IHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAKLSAgICAg
ICAgICAgIGF1dG8gZmlyc3RUZXh0Qm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0
Qm94SW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmICghZmlyc3RU
ZXh0Qm94KQorICAgICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlv
bjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAgICAg
IGlmICghZmlyc3RUZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICBpZiAoJmN1cnJlbnROb2RlICE9IHN0YXJ0Tm9kZSkgewpAQCAtODQ1LDE3ICs4NDUsMTcg
QEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRl
eHRPZmZzZXQgPSBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpOwotICAgICAgICAg
ICAgZm9yIChhdXRvIGJveCA9IGZpcnN0VGV4dEJveDsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5U
ZXh0T3JkZXIoKSkgewotICAgICAgICAgICAgICAgIGlmICghYm94LT5sZW5ndGgoKSAmJiB0ZXh0
T2Zmc2V0ID09IGJveC0+bG9jYWxTdGFydE9mZnNldCgpKQorICAgICAgICAgICAgZm9yIChhdXRv
IHJ1biA9IGZpcnN0VGV4dFJ1bjsgcnVuOyBydW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkg
eworICAgICAgICAgICAgICAgIGlmICghcnVuLT5sZW5ndGgoKSAmJiB0ZXh0T2Zmc2V0ID09IHJ1
bi0+bG9jYWxTdGFydE9mZnNldCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dFBvc2l0aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPCBib3gtPmxvY2Fs
RW5kT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPj0gYm94
LT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPCBy
dW4tPmxvY2FsRW5kT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZz
ZXQgPj0gcnVuLT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBib3gt
PmxvY2FsRW5kT2Zmc2V0KCkgJiYgYm94LT5pc0xhc3RPbkxpbmUoKSAmJiAhYm94LT5pc0xhc3Qo
KSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBydW4tPmxvY2FsRW5kT2Zmc2V0
KCkgJiYgcnVuLT5pc0xhc3RPbkxpbmUoKSAmJiAhcnVuLT5pc0xhc3QoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDVlNTgxNGQ3ZGY1
ZC4uODNjYjYzMDFlNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
CkBAIC00MzcsMTUgKzQzNywxNSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fdGV4dEJveCAmJiBtX3JlbWFpbmluZ1Rl
eHRCb3gpIHsKLSAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdUZXh0Qm94OwotICAgICAg
ICBtX3JlbWFpbmluZ1RleHRCb3ggPSB7IH07CisgICAgaWYgKCFtX3RleHRSdW4gJiYgbV9yZW1h
aW5pbmdUZXh0UnVuKSB7CisgICAgICAgIG1fdGV4dFJ1biA9IG1fcmVtYWluaW5nVGV4dFJ1bjsK
KyAgICAgICAgbV9yZW1haW5pbmdUZXh0UnVuID0geyB9OwogICAgICAgICBtX2ZpcnN0TGV0dGVy
VGV4dCA9IHsgfTsKICAgICAgICAgbV9vZmZzZXQgPSAwOwogICAgIH0KICAgICAvLyBoYW5kbGUg
cmVtZW1iZXJlZCB0ZXh0IGJveAotICAgIGlmIChtX3RleHRCb3gpIHsKLSAgICAgICAgaGFuZGxl
VGV4dEJveCgpOworICAgIGlmIChtX3RleHRSdW4pIHsKKyAgICAgICAgaGFuZGxlVGV4dFJ1bigp
OwogICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNTYzLDcgKzU2Myw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRlclRleHQt
PnRleHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKm1fZmlyc3RMZXR0
ZXJUZXh0LCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBudWxscHRyOwotICAgICAgICAgICAgICAg
IG1fdGV4dEJveCA9IHsgfTsKKyAgICAgICAgICAgICAgICBtX3RleHRSdW4gPSB7IH07CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01
ODAsNDQgKzU4MCw0NCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRCb3ggPSBMaW5lTGF5b3V0VHJh
dmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihyZW5kZXJlcik7CisgICAgbV90ZXh0
UnVuID0gTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHJlbmRl
cmVyKTsKIAogICAgIGJvb2wgc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmly
c3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0
OwogICAgIGlmIChzaG91bGRIYW5kbGVGaXJzdExldHRlcikKICAgICAgICAgaGFuZGxlVGV4dE5v
ZGVGaXJzdExldHRlcihkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7CiAK
LSAgICBpZiAoIW1fdGV4dEJveCAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3VsZEhh
bmRsZUZpcnN0TGV0dGVyKSB7CisgICAgaWYgKCFtX3RleHRSdW4gJiYgcmVuZGVyZXJUZXh0Lmxl
bmd0aCgpICYmICFzaG91bGRIYW5kbGVGaXJzdExldHRlcikgewogICAgICAgICBpZiAocmVuZGVy
ZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVo
YXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRT
cGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaGFuZGxlVGV4dEJveCgpOworICAgIGhhbmRsZVRl
eHRSdW4oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHRCb3goKQordm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogeyAgICAKICAg
ICBUZXh0JiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCptX25vZGUpOwogCiAgICAgYXV0byYg
cmVuZGVyZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6ICp0ZXh0
Tm9kZS5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9y
ZXNTdHlsZVZpc2liaWxpdHkpKSB7Ci0gICAgICAgIG1fdGV4dEJveCA9IHsgfTsKKyAgICAgICAg
bV90ZXh0UnVuID0geyB9OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBmaXJz
dFRleHRCb3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZv
cihyZW5kZXJlcik7CisgICAgYXV0byBmaXJzdFRleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6
Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IocmVuZGVyZXIpOwogCiAgICAgU3RyaW5nIHJlbmRl
cmVyVGV4dCA9IHJlbmRlcmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0
OwogICAgIHVuc2lnbmVkIGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwotICAgIHdoaWxlICht
X3RleHRCb3gpIHsKLSAgICAgICAgdW5zaWduZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94LT5s
b2NhbFN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHVuc2lnbmVkIHJ1blN0YXJ0ID0gc3RkOjptYXgo
dGV4dEJveFN0YXJ0LCBzdGFydCk7CisgICAgd2hpbGUgKG1fdGV4dFJ1bikgeworICAgICAgICB1
bnNpZ25lZCB0ZXh0UnVuU3RhcnQgPSBtX3RleHRSdW4tPmxvY2FsU3RhcnRPZmZzZXQoKTsKKyAg
ICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0UnVuU3RhcnQsIHN0YXJ0KTsK
IAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0
aGlzIHJ1bi4KLSAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0
aENvbGxhcHNlZFNwYWNlIHx8IChtX3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hT
dGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCk7CisgICAgICAgIGJvb2wgbmVlZFNwYWNlID0g
bV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0UnVuID09IGZp
cnN0VGV4dFJ1biAmJiB0ZXh0UnVuU3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3RhcnQpOwogICAg
ICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0
ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CiAgICAgICAgICAg
ICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gJnRleHROb2RlICYmIHJ1blN0YXJ0ICYmIHJlbmRlcmVy
VGV4dFtydW5TdGFydCAtIDFdID09ICcgJykgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNw
YWNlUnVuU3RhcnQgPSBydW5TdGFydCAtIDE7CkBAIC02MjgsMTIgKzYyOCwxMiBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignICcsIHRleHROb2RlLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIHRleHRCb3hFbmQgPSB0ZXh0
Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbmd0aCgpOwotICAgICAgICB1bnNpZ25lZCBydW5FbmQg
PSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOworICAgICAgICB1bnNpZ25lZCB0ZXh0UnVuRW5k
ID0gdGV4dFJ1blN0YXJ0ICsgbV90ZXh0UnVuLT5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQg
cnVuRW5kID0gc3RkOjptaW4odGV4dFJ1bkVuZCwgZW5kKTsKICAgICAgICAgCi0gICAgICAgIC8v
IERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgYm94IHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZh
bmNlIHlldAotICAgICAgICBhdXRvIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICBu
ZXh0VGV4dEJveC50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOworICAgICAgICAvLyBEZXRlcm1p
bmUgd2hhdCB0aGUgbmV4dCB0ZXh0IHJ1biB3aWxsIGJlLCBidXQgZG9uJ3QgYWR2YW5jZSB5ZXQK
KyAgICAgICAgYXV0byBuZXh0VGV4dFJ1biA9IG1fdGV4dFJ1bjsKKyAgICAgICAgbmV4dFRleHRS
dW4udHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgICAgICBpZiAocnVuU3RhcnQgPCBy
dW5FbmQpIHsKICAgICAgICAgICAgIGF1dG8gaXNOZXdsaW5lT3JUYWIgPSBbJl0oVUNoYXIgY2hh
cmFjdGVyKSB7CkBAIC02NTIsOCArNjUyLDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3goKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmIChzdWJydW5FbmQgPT0gcnVuRW5kICYmIChtX2JlaGF2aW9y
ICYgVGV4dEl0ZXJhdG9yQmVoYXZlc0FzSWZOb2Rlc0ZvbGxvd2luZykpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYm9vbCBsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25UZXh0Qm94ID0gIW5leHRU
ZXh0Qm94ICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSA+IHN1YnJ1bkVuZCAmJiByZW5kZXJlclRl
eHRbc3VicnVuRW5kXSA9PSAnICc7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3BhY2VD
b2xsYXBzZWRCeU5leHROb25UZXh0Qm94KQorICAgICAgICAgICAgICAgICAgICBib29sIGxhc3RT
cGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRSdW4gPSAhbmV4dFRleHRSdW4gJiYgcmVuZGVyZXJU
ZXh0Lmxlbmd0aCgpID4gc3VicnVuRW5kICYmIHJlbmRlcmVyVGV4dFtzdWJydW5FbmRdID09ICcg
JzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRl
eHRSdW4pCiAgICAgICAgICAgICAgICAgICAgICAgICArK3N1YnJ1bkVuZDsgLy8gcnVuRW5kIHN0
b3BwZWQgYmVmb3JlIGxhc3Qgc3BhY2UuIEluY3JlbWVudCBieSBvbmUgdG8gcmVzdG9yZSB0aGUg
c3BhY2UuCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3Vi
cnVuRW5kOwpAQCAtNjYyLDI1ICs2NjIsMjUgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3goKQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhhdCBk
b2Vzbid0IGdvIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LAogICAgICAgICAgICAgLy8gY29t
ZSBiYWNrIGFnYWluIHRvIGZpbmlzaCBoYW5kbGluZyB0aGlzIHRleHQgYm94OyBkb24ndCBhZHZh
bmNlIHRvIHRoZSBuZXh0IG9uZS4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9wb3NpdGlvbkVuZE9mZnNldCkgPCB0ZXh0Qm94RW5kKQorICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRleHRSdW5FbmQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBBZHZhbmNlIGFuZCByZXR1
cm4KLSAgICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFydCA9IG5leHRUZXh0Qm94ID8gbmV4
dFRleHRCb3gtPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFydCA9IG5leHRUZXh0UnVuID8gbmV4dFRleHRS
dW4tPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAg
ICAgIGlmIChuZXh0UnVuU3RhcnQgPiBydW5FbmQpCiAgICAgICAgICAgICAgICAgbV9sYXN0VGV4
dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFjZSBi
ZXR3ZWVuIHJ1bnMgb3IgYXQgdGhlIGVuZAotICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRl
eHRCb3g7CisgICAgICAgICAgICBtX3RleHRSdW4gPSBuZXh0VGV4dFJ1bjsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBBZHZhbmNlIGFuZCBjb250aW51ZQotICAg
ICAgICBtX3RleHRCb3ggPSBuZXh0VGV4dEJveDsKKyAgICAgICAgbV90ZXh0UnVuID0gbmV4dFRl
eHRSdW47CiAgICAgfQotICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJveCkg
ewotICAgICAgICBtX3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7Ci0gICAgICAgIG1fcmVt
YWluaW5nVGV4dEJveCA9IHsgfTsKKyAgICBpZiAoIW1fdGV4dFJ1biAmJiBtX3JlbWFpbmluZ1Rl
eHRSdW4pIHsKKyAgICAgICAgbV90ZXh0UnVuID0gbV9yZW1haW5pbmdUZXh0UnVuOworICAgICAg
ICBtX3JlbWFpbmluZ1RleHRSdW4gPSB7IH07CiAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0g
eyB9OwogICAgICAgICBtX29mZnNldCA9IDA7Ci0gICAgICAgIGhhbmRsZVRleHRCb3goKTsKKyAg
ICAgICAgaGFuZGxlVGV4dFJ1bigpOwogICAgIH0KIH0KIApAQCAtNzAwLDggKzcwMCw4IEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFn
bWVudCYgcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhdXRvKiBm
aXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
KSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwotICAgICAgICAg
ICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICAgICAgbV90ZXh0Qm94
ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoKmZpcnN0
TGV0dGVyVGV4dCk7CisgICAgICAgICAgICBtX3JlbWFpbmluZ1RleHRSdW4gPSBtX3RleHRSdW47
CisgICAgICAgICAgICBtX3RleHRSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVu
SW5UZXh0T3JkZXJGb3IoKmZpcnN0TGV0dGVyVGV4dCk7CiAgICAgICAgICAgICBtX2ZpcnN0TGV0
dGVyVGV4dCA9IGZpcnN0TGV0dGVyVGV4dDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDlkZWE3MzNiNmIxZi4uMjJjNGI2ZTkyYmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKLSNp
bmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMTYsNyAr
MTE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVRleHROb2RlKCk7CiAgICAgYm9vbCBo
YW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7Ci0g
ICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7CisgICAgdm9pZCBoYW5kbGVUZXh0UnVuKCk7CiAgICAg
dm9pZCBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYpOwogICAg
IHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSYgY2hhcmFjdGVyTm9kZSwgTm9kZSogb2Zm
c2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKICAg
ICB2b2lkIGVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiwgaW50IHRleHRTdGFy
dE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwpAQCAtMTQ5LDEwICsxNDksMTAgQEAgcHJpdmF0
ZToKIAogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4dCBm
cm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3ZSBn
byBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRpb25h
bE5ld2xpbmUgeyBudWxscHRyIH07Ci0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0
ZXJhdG9yIG1fdGV4dEJveDsKKyAgICBMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9y
IG1fdGV4dFJ1bjsKIAogICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciA6Zmlyc3QtbGV0
dGVyIHRleHQgdG8gc2F2ZSBwb2ludGVyIHRvIHJlbWFpbmluZyB0ZXh0IGJveC4KLSAgICBMaW5l
TGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94SXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0Qm94OworICAg
IExheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0UnVuOwog
CiAgICAgLy8gVXNlZCB0byBwb2ludCB0byBSZW5kZXJUZXh0IG9iamVjdCBmb3IgOmZpcnN0LWxl
dHRlci4KICAgICBSZW5kZXJUZXh0KiBtX2ZpcnN0TGV0dGVyVGV4dCB7IG51bGxwdHIgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNmM2ZDA2ZGUxNzNmLi41NDIxMTg3
OTQyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0yOTQsNyArMjk0
LDcgQEAgRGlzcGxheTo6SW5saW5lQ29udGVudCYgTGluZUxheW91dDo6ZW5zdXJlRGlzcGxheUlu
bGluZUNvbnRlbnQoKQogICAgIHJldHVybiAqbV9kaXNwbGF5SW5saW5lQ29udGVudDsKIH0KIAot
TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRCb3hl
c0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAorTGF5b3V0SW50ZWdyYXRp
b246OlRleHRSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJUZXh0KSBjb25zdAogewogICAgIGF1dG8qIGlubGluZUNvbnRlbnQgPSBkaXNw
bGF5SW5saW5lQ29udGVudCgpOwogICAgIGlmICghaW5saW5lQ29udGVudCkKQEAgLTMxNiwxMCAr
MzE2LDEwIEBAIExpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0
Ojp0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYKICAgICBpZiAoIWZpcnN0SW5kZXgpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyBMaW5lTGF5b3V0VHJhdmVyc2FsOjpE
aXNwbGF5UnVuUGF0aCgqaW5saW5lQ29udGVudCwgKmZpcnN0SW5kZXgsIGxhc3RJbmRleCArIDEp
IH07CisgICAgcmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGgoKmlubGluZUNv
bnRlbnQsICpmaXJzdEluZGV4LCBsYXN0SW5kZXggKyAxKSB9OwogfQogCi1MaW5lTGF5b3V0VHJh
dmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3IgTGluZUxheW91dDo6ZWxlbWVudEJveEZvcihjb25z
dCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckxpbmVCcmVhaykgY29uc3QKK0xheW91dEludGVncmF0
aW9uOjpFbGVtZW50UnVuSXRlcmF0b3IgTGluZUxheW91dDo6ZWxlbWVudFJ1bkZvcihjb25zdCBS
ZW5kZXJMaW5lQnJlYWsmIHJlbmRlckxpbmVCcmVhaykgY29uc3QKIHsKICAgICBhdXRvKiBpbmxp
bmVDb250ZW50ID0gZGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBpZiAoIWlubGluZUNvbnRl
bnQpCkBAIC0zMzAsNyArMzMwLDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0
ZXJhdG9yIExpbmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGkKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgYXV0byYgcnVuID0gIGlubGluZUNvbnRlbnQtPnJ1bnNbaV07CiAgICAgICAgIGlmICgm
cnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiB7IExpbmVM
YXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoKCppbmxpbmVDb250ZW50LCBpLCBpICsgMSkg
fTsKKyAgICAgICAgICAgIHJldHVybiB7IExheW91dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoKCpp
bmxpbmVDb250ZW50LCBpLCBpICsgMSkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyB9OwpAQCAt
MzkzLDcgKzM5Myw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgLy8gVGV4dFJ1biBl
eHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVzdGVkIHdpdGggdGhlIGFsaWdtZW50IG9mZnNldCAo
ZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVkCiAgICAgICAgIC8vIGFuZCB0aGUg
cnVuIHN0YXJ0cyBhdCAxMDBweCwgZHVlIHRvIHRoZSBob3Jpem9udGFsIGFsaWdtZW50LCB0aGUg
eHBvcyBpcyBzdXBwb3NlZCB0byBiZSBhdCAwcHgpLgogICAgICAgICBhdXRvIHhQb3MgPSByZWN0
LngoKSAtIChsaW5lLnJlY3QoKS54KCkgKyBsaW5lLmhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQo
KSk7Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5KCkg
PyB0ZXh0V2l0aEh5cGhlbiA6IHRleHRDb250ZW50LmNvbnRlbnQoKSwgeFBvcywgZXhwYW5zaW9u
Lmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBXZWJD
b3JlOjpUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdp
dGhIeXBoZW4gOiB0ZXh0Q29udGVudC5jb250ZW50KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9u
dGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRU
YWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAg
ICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCks
IHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZSwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCA5ZGNhMDEyNzkyNGQuLmQ0M2ZkOTM5MTI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtMjgsOSArMjgsOSBAQAogI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25Cb3hUcmVlLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
LSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
RW51bXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogCi0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveEl0ZXJhdG9yIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7Ci0gICAg
TGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3IoY29u
c3QgUmVuZGVyTGluZUJyZWFrJikgY29uc3Q7CisgICAgVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5z
Rm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKKyAgICBFbGVtZW50UnVuSXRlcmF0b3IgZWxl
bWVudFJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKSBjb25zdDsKIAogICAgIHN0YXRpYyB2
b2lkIHJlbGVhc2VDYWNoZXMoUmVuZGVyVmlldyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApz
aW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCmluZGV4IDg1
Zjg4ZWYyMjg2Yi4uMjc4MGNmM2RhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAgLTI0
LDQ5ICsyNCw0OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMaW5l
TGF5b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oIgogCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKK25hbWVz
cGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKLSAgICA6IG1fdGV4dEJveChXVEZN
b3ZlKHBhdGhWYXJpYW50KSkKK1RleHRSdW5JdGVyYXRvcjo6VGV4dFJ1bkl0ZXJhdG9yKFJ1bjo6
UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IG1fdGV4dFJ1bihXVEZNb3ZlKHBhdGhW
YXJpYW50KSkKIHsKIH0KIAotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZl
cnNlTmV4dEluVmlzdWFsT3JkZXIoKQorVGV4dFJ1bkl0ZXJhdG9yJiBUZXh0UnVuSXRlcmF0b3I6
OnRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKQogewotICAgIFdURjo6c3dpdGNoT24obV90ZXh0
Qm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJz
ZU5leHRUZXh0Qm94SW5WaXN1YWxPcmRlcigpOworICAgIFdURjo6c3dpdGNoT24obV90ZXh0UnVu
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcGF0aC50cmF2ZXJzZU5l
eHRUZXh0UnVuSW5WaXN1YWxPcmRlcigpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKIH0K
IAotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9y
ZGVyKCkKK1RleHRSdW5JdGVyYXRvciYgVGV4dFJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRJblRl
eHRPcmRlcigpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3RleHRCb3gubV9wYXRoVmFyaWFudCwg
W10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRP
cmRlcigpOworICAgIFdURjo6c3dpdGNoT24obV90ZXh0UnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1
dG8mIHBhdGgpIHsKKyAgICAgICAgcGF0aC50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIo
KTsKICAgICB9KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWJvb2wgVGV4dEJveEl0ZXJhdG9y
OjpvcGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0Citib29sIFRl
eHRSdW5JdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBUZXh0UnVuSXRlcmF0b3ImIG90aGVyKSBj
b25zdAogewotICAgIGlmIChtX3RleHRCb3gubV9wYXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVy
Lm1fdGV4dEJveC5tX3BhdGhWYXJpYW50LmluZGV4KCkpCisgICAgaWYgKG1fdGV4dFJ1bi5tX3Bh
dGhWYXJpYW50LmluZGV4KCkgIT0gb3RoZXIubV90ZXh0UnVuLm1fcGF0aFZhcmlhbnQuaW5kZXgo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV90
ZXh0Qm94Lm1fcGF0aFZhcmlhbnQsIFsmXShjb25zdCBhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJl
dHVybiBwYXRoID09IFdURjo6Z2V0PHN0ZDo6ZGVjYXlfdDxkZWNsdHlwZShwYXRoKT4+KG90aGVy
Lm1fdGV4dEJveC5tX3BhdGhWYXJpYW50KTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Rl
eHRSdW4ubV9wYXRoVmFyaWFudCwgWyZdKGNvbnN0IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0
dXJuIHBhdGggPT0gV1RGOjpnZXQ8c3RkOjpkZWNheV90PGRlY2x0eXBlKHBhdGgpPj4ob3RoZXIu
bV90ZXh0UnVuLm1fcGF0aFZhcmlhbnQpOwogICAgIH0pOwogfQogCi1ib29sIFRleHRCb3hJdGVy
YXRvcjo6YXRFbmQoKSBjb25zdAorYm9vbCBUZXh0UnVuSXRlcmF0b3I6OmF0RW5kKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3RleHRCb3gubV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdGV4dFJ1bi5tX3BhdGhW
YXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmF0RW5kKCk7CiAg
ICAgfSk7CiB9CkBAIC03OSwxOSArNzksMTkgQEAgc3RhdGljIGNvbnN0IFJlbmRlckJsb2NrRmxv
dyogbGluZUxheW91dFN5c3RlbUZsb3dGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QKICAg
ICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlci5wYXJlbnQoKSk7CiB9
CiAKLVRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4
dCkKK1RleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4
dCkKIHsKLSAgICBpZiAoYXV0byogZmxvdyA9IGxpbmVMYXlvdXRTeXN0ZW1GbG93Rm9yUmVuZGVy
ZXIodGV4dCkpIHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBp
ZiAoYXV0byogZmxvdyA9IGxpbmVMYXlvdXRTeXN0ZW1GbG93Rm9yUmVuZGVyZXIodGV4dCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCA9IGZs
b3ctPmxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpKQotICAgICAgICAgICAgcmV0
dXJuIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC0+dGV4dEJveGVzRm9yKHRleHQp
OwotI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5l
TGF5b3V0LT50ZXh0UnVuc0Zvcih0ZXh0KTsKICAgICB9CisjZW5kaWYKIAotICAgIHJldHVybiB7
IENvbXBsZXhQYXRoIHsgdGV4dC5maXJzdFRleHRCb3goKSB9IH07CisgICAgcmV0dXJuIHsgTGVn
YWN5UGF0aCB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfSB9OwogfQogCi1UZXh0Qm94SXRlcmF0b3Ig
Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK1RleHRS
dW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQogewogICAgIGlmICh0ZXh0LmZpcnN0VGV4dEJveCgpICYmIHRleHQuY29udGFpbnNSZXZl
cnNlZFRleHQoKSkgewogICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+IHNvcnRl
ZFRleHRCb3hlczsKQEAgLTk5LDM5ICs5OSwzOSBAQCBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0
Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKICAgICAgICAgICAgIHNv
cnRlZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRU
ZXh0Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJveGVzLmVuZCgpLCBJbmxpbmVUZXh0Qm94Ojpj
b21wYXJlQnlTdGFydCk7CiAgICAgICAgIGF1dG8qIGZpcnN0ID0gc29ydGVkVGV4dEJveGVzWzBd
OwotICAgICAgICByZXR1cm4geyBDb21wbGV4UGF0aCB7IGZpcnN0LCBXVEZNb3ZlKHNvcnRlZFRl
eHRCb3hlcyksIDAgfSB9OworICAgICAgICByZXR1cm4geyBMZWdhY3lQYXRoIHsgZmlyc3QsIFdU
Rk1vdmUoc29ydGVkVGV4dEJveGVzKSwgMCB9IH07CiAgICAgfQogCi0gICAgcmV0dXJuIGZpcnN0
VGV4dEJveEZvcih0ZXh0KTsKKyAgICByZXR1cm4gZmlyc3RUZXh0UnVuRm9yKHRleHQpOwogfQog
Ci1UZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCitUZXh0
UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKLSAgICByZXR1
cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKKyAgICByZXR1cm4geyBmaXJzdFRleHRSdW5G
b3IodGV4dCkgfTsKIH0KIAotRWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3Io
Qm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQotICAgIDogbV9ib3goV1RGTW92ZShwYXRo
VmFyaWFudCkpCitFbGVtZW50UnVuSXRlcmF0b3I6OkVsZW1lbnRSdW5JdGVyYXRvcihSdW46OlBh
dGhWYXJpYW50JiYgcGF0aFZhcmlhbnQpCisgICAgOiBtX3J1bihXVEZNb3ZlKHBhdGhWYXJpYW50
KSkKIHsKIH0KIAotYm9vbCBFbGVtZW50Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK2Jvb2wg
RWxlbWVudFJ1bkl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAg
ICAgcmV0dXJuIHBhdGguYXRFbmQoKTsKICAgICB9KTsKIH0KIAotRWxlbWVudEJveEl0ZXJhdG9y
IGVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJFbGVtZW50KQorRWxl
bWVudFJ1bkl0ZXJhdG9yIGVsZW1lbnRSdW5Gb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5k
ZXJFbGVtZW50KQogewogICAgIGlmIChhdXRvKiBmbG93ID0gbGluZUxheW91dFN5c3RlbUZsb3dG
b3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KSkgewogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogICAgICAgICBpZiAoYXV0byogbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5l
TGF5b3V0ID0gZmxvdy0+bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LT5lbGVtZW50
Qm94Rm9yKHJlbmRlckVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGxheW91dEZvcm1hdHRp
bmdDb250ZXh0TGluZUxheW91dC0+ZWxlbWVudFJ1bkZvcihyZW5kZXJFbGVtZW50KTsKICNlbmRp
ZgogICAgIH0KIAotICAgIHJldHVybiB7IENvbXBsZXhQYXRoKHJlbmRlckVsZW1lbnQuaW5saW5l
Qm94V3JhcHBlcigpKSB9OworICAgIHJldHVybiB7IExlZ2FjeVBhdGgocmVuZGVyRWxlbWVudC5p
bmxpbmVCb3hXcmFwcGVyKCkpIH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKc2ltaWxhcml0
eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUxheW91dFRyYXZlcnNhbC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IDAxZjY5ODk3ZDJlNi4u
NzNkY2FjMjdkZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lTGF5b3V0VHJhdmVyc2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtMjYsOCArMjYsOCBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCi0jaW5jbHVkZSAiTGlu
ZUxheW91dFRyYXZlcnNhbENvbXBsZXhQYXRoLmgiCi0jaW5jbHVkZSAiTGluZUxheW91dFRyYXZl
cnNhbERpc3BsYXlSdW5QYXRoLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvckxlZ2FjeVBhdGguaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TW9kZXJuUGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM1LDIzICszNSwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5k
ZXJMaW5lQnJlYWs7CiBjbGFzcyBSZW5kZXJUZXh0OwogCi1uYW1lc3BhY2UgTGluZUxheW91dFRy
YXZlcnNhbCB7CituYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1jbGFzcyBFbGVtZW50
Qm94SXRlcmF0b3I7Ci1jbGFzcyBUZXh0Qm94SXRlcmF0b3I7CitjbGFzcyBFbGVtZW50UnVuSXRl
cmF0b3I7CitjbGFzcyBUZXh0UnVuSXRlcmF0b3I7CiAKIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07
CiAKLWNsYXNzIEJveCB7CitjbGFzcyBSdW4gewogcHVibGljOgogICAgIHVzaW5nIFBhdGhWYXJp
YW50ID0gVmFyaWFudDwKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSAg
ICAgICAgRGlzcGxheVJ1blBhdGgsCisgICAgICAgIE1vZGVyblBhdGgsCiAjZW5kaWYKLSAgICAg
ICAgQ29tcGxleFBhdGgKKyAgICAgICAgTGVnYWN5UGF0aAogICAgID47CiAKLSAgICBCb3goUGF0
aFZhcmlhbnQmJik7CisgICAgUnVuKFBhdGhWYXJpYW50JiYpOwogCiAgICAgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdDsKIApAQCAtNjQsMTUgKzY0LDE1IEBAIHB1YmxpYzoKICAgICBib29sIHVzZUxp
bmVCcmVha0JveFJlbmRlclRyZWVEdW1wUXVpcmsoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAg
IGZyaWVuZCBjbGFzcyBFbGVtZW50Qm94SXRlcmF0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIFRleHRC
b3hJdGVyYXRvcjsKKyAgICBmcmllbmQgY2xhc3MgRWxlbWVudFJ1bkl0ZXJhdG9yOworICAgIGZy
aWVuZCBjbGFzcyBUZXh0UnVuSXRlcmF0b3I7CiAKICAgICBQYXRoVmFyaWFudCBtX3BhdGhWYXJp
YW50OwogfTsKIAotY2xhc3MgVGV4dEJveCA6IHB1YmxpYyBCb3ggeworY2xhc3MgVGV4dFJ1biA6
IHB1YmxpYyBSdW4gewogcHVibGljOgotICAgIFRleHRCb3goUGF0aFZhcmlhbnQmJik7CisgICAg
VGV4dFJ1bihQYXRoVmFyaWFudCYmKTsKIAogICAgIGJvb2wgaGFzSHlwaGVuKCkgY29uc3Q7CiAg
ICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3Q7CkBAIC04NiwxNzEgKzg2LDE3MSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0xhc3QoKSBjb25zdDsKIH07CiAKLWNsYXNzIFRleHRCb3hJdGVyYXRvciB7
CitjbGFzcyBUZXh0UnVuSXRlcmF0b3IgewogcHVibGljOgotICAgIFRleHRCb3hJdGVyYXRvcigp
IDogbV90ZXh0Qm94KENvbXBsZXhQYXRoIHsgbnVsbHB0ciwgeyB9IH0pIHsgfTsKLSAgICBUZXh0
Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKKyAgICBUZXh0UnVuSXRlcmF0b3IoKSA6
IG1fdGV4dFJ1bihMZWdhY3lQYXRoIHsgbnVsbHB0ciwgeyB9IH0pIHsgfTsKKyAgICBUZXh0UnVu
SXRlcmF0b3IoUnVuOjpQYXRoVmFyaWFudCYmKTsKIAotICAgIFRleHRCb3hJdGVyYXRvciYgb3Bl
cmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsgfQotICAgIFRl
eHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOwotICAgIFRleHRCb3hJ
dGVyYXRvciYgdHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKKyAgICBUZXh0UnVuSXRlcmF0b3Im
IG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7IH0KKyAg
ICBUZXh0UnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsKKyAgICBUZXh0
UnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCk7CiAKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFJ1bkl0ZXJhdG9yJikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRSdW5JdGVyYXRvciYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBib29sIG9wZXJhdG9y
PT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KICAgICBib29sIG9wZXJh
dG9yIT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKLSAgICBjb25z
dCBUZXh0Qm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX3RleHRCb3g7IH0KLSAgICBj
b25zdCBUZXh0Qm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fdGV4dEJveDsgfQor
ICAgIGNvbnN0IFRleHRSdW4mIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFJ1bjsg
fQorICAgIGNvbnN0IFRleHRSdW4qIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV90ZXh0
UnVuOyB9CiAKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgVGV4dEJv
eCBtX3RleHRCb3g7CisgICAgVGV4dFJ1biBtX3RleHRSdW47CiB9OwogCi1jbGFzcyBFbGVtZW50
Qm94SXRlcmF0b3IgeworY2xhc3MgRWxlbWVudFJ1bkl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBF
bGVtZW50Qm94SXRlcmF0b3IoKSA6IG1fYm94KENvbXBsZXhQYXRoIHsgbnVsbHB0ciwgeyB9IH0p
IHsgfTsKLSAgICBFbGVtZW50Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKKyAgICBF
bGVtZW50UnVuSXRlcmF0b3IoKSA6IG1fcnVuKExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkg
eyB9OworICAgIEVsZW1lbnRSdW5JdGVyYXRvcihSdW46OlBhdGhWYXJpYW50JiYpOwogCiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKLSAg
ICBjb25zdCBCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fYm94OyB9Ci0gICAgY29u
c3QgQm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fYm94OyB9CisgICAgY29uc3Qg
UnVuJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX3J1bjsgfQorICAgIGNvbnN0IFJ1biog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3J1bjsgfQogCiAgICAgYm9vbCBhdEVuZCgp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIEJveCBtX2JveDsKKyAgICBSdW4gbV9ydW47CiB9Owog
Ci1jbGFzcyBUZXh0Qm94UmFuZ2UgeworY2xhc3MgVGV4dFJ1blJhbmdlIHsKIHB1YmxpYzoKLSAg
ICBUZXh0Qm94UmFuZ2UoVGV4dEJveEl0ZXJhdG9yIGJlZ2luKQorICAgIFRleHRSdW5SYW5nZShU
ZXh0UnVuSXRlcmF0b3IgYmVnaW4pCiAgICAgICAgIDogbV9iZWdpbihiZWdpbikKICAgICB7CiAg
ICAgfQogCi0gICAgVGV4dEJveEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdp
bjsgfQorICAgIFRleHRSdW5JdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47
IH0KICAgICBFbmRJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAogcHJpdmF0
ZToKLSAgICBUZXh0Qm94SXRlcmF0b3IgbV9iZWdpbjsKKyAgICBUZXh0UnVuSXRlcmF0b3IgbV9i
ZWdpbjsKIH07CiAKLVRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVy
VGV4dCYpOwotVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0
IFJlbmRlclRleHQmKTsKLVRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4
dCYpOwotRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGluZUJy
ZWFrJik7CitUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRleHQm
KTsKK1RleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5k
ZXJUZXh0Jik7CitUZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwor
RWxlbWVudFJ1bkl0ZXJhdG9yIGVsZW1lbnRSdW5Gb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LWlubGluZSBCb3g6OkJveChQYXRoVmFyaWFudCYmIHBhdGgpCitpbmxpbmUgUnVuOjpSdW4oUGF0
aFZhcmlhbnQmJiBwYXRoKQogICAgIDogbV9wYXRoVmFyaWFudChXVEZNb3ZlKHBhdGgpKQogewog
fQogCi1pbmxpbmUgRmxvYXRSZWN0IEJveDo6cmVjdCgpIGNvbnN0CitpbmxpbmUgRmxvYXRSZWN0
IFJ1bjo6cmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5yZWN0KCk7CiAgICAg
fSk7CiB9CiAKLWlubGluZSBmbG9hdCBCb3g6OmJhc2VsaW5lKCkgY29uc3QKK2lubGluZSBmbG9h
dCBSdW46OmJhc2VsaW5lKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Bh
dGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmJhc2VsaW5l
KCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSBib29sIEJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpIGNvbnN0CitpbmxpbmUgYm9vbCBSdW46OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBh
dGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGguaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAg
IH0pOwogfQogCi1pbmxpbmUgYm9vbCBCb3g6OmlzSG9yaXpvbnRhbCgpIGNvbnN0CitpbmxpbmUg
Ym9vbCBSdW46OmlzSG9yaXpvbnRhbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5p
c0hvcml6b250YWwoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIGJvb2wgQm94OjpkaXJPdmVycmlk
ZSgpIGNvbnN0CitpbmxpbmUgYm9vbCBSdW46OmRpck92ZXJyaWRlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAg
ICAgIHJldHVybiBwYXRoLmRpck92ZXJyaWRlKCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSBib29s
IEJveDo6aXNMaW5lQnJlYWsoKSBjb25zdAoraW5saW5lIGJvb2wgUnVuOjppc0xpbmVCcmVhaygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0
byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5pc0xpbmVCcmVhaygpOwogICAgIH0pOwog
fQogCi1pbmxpbmUgYm9vbCBCb3g6OnVzZUxpbmVCcmVha0JveFJlbmRlclRyZWVEdW1wUXVpcmso
KSBjb25zdAoraW5saW5lIGJvb2wgUnVuOjp1c2VMaW5lQnJlYWtCb3hSZW5kZXJUcmVlRHVtcFF1
aXJrKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLnVzZUxpbmVCcmVha0JveFJlbmRl
clRyZWVEdW1wUXVpcmsoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIGJvb2wgVGV4dEJveDo6aGFz
SHlwaGVuKCkgY29uc3QKK2lubGluZSBib29sIFRleHRSdW46Omhhc0h5cGhlbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkg
ewogICAgICAgICByZXR1cm4gcGF0aC5oYXNIeXBoZW4oKTsKICAgICB9KTsKIH0KIAotaW5saW5l
IFRleHRCb3g6OlRleHRCb3goUGF0aFZhcmlhbnQmJiBwYXRoKQotICAgIDogQm94KFdURk1vdmUo
cGF0aCkpCitpbmxpbmUgVGV4dFJ1bjo6VGV4dFJ1bihQYXRoVmFyaWFudCYmIHBhdGgpCisgICAg
OiBSdW4oV1RGTW92ZShwYXRoKSkKIHsKIH0KIAotaW5saW5lIFN0cmluZ1ZpZXcgVGV4dEJveDo6
dGV4dCgpIGNvbnN0CitpbmxpbmUgU3RyaW5nVmlldyBUZXh0UnVuOjp0ZXh0KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7
CiAgICAgICAgIHJldHVybiBwYXRoLnRleHQoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIHVuc2ln
bmVkIFRleHRCb3g6OmxvY2FsU3RhcnRPZmZzZXQoKSBjb25zdAoraW5saW5lIHVuc2lnbmVkIFRl
eHRSdW46OmxvY2FsU3RhcnRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIHBhdGgu
bG9jYWxTdGFydE9mZnNldCgpOwogICAgIH0pOwogfQogCi1pbmxpbmUgdW5zaWduZWQgVGV4dEJv
eDo6bG9jYWxFbmRPZmZzZXQoKSBjb25zdAoraW5saW5lIHVuc2lnbmVkIFRleHRSdW46OmxvY2Fs
RW5kT2Zmc2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmxvY2FsRW5kT2Zmc2V0
KCk7CiAgICAgfSk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBUZXh0Qm94OjpsZW5ndGgoKSBjb25z
dAoraW5saW5lIHVuc2lnbmVkIFRleHRSdW46Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICBy
ZXR1cm4gcGF0aC5sZW5ndGgoKTsKICAgICB9KTsKIH0KIAotaW5saW5lIGJvb2wgVGV4dEJveDo6
aXNMYXN0T25MaW5lKCkgY29uc3QKK2lubGluZSBib29sIFRleHRSdW46OmlzTGFzdE9uTGluZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0
byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5pc0xhc3RPbkxpbmUoKTsKICAgICB9KTsK
IH0KIAotaW5saW5lIGJvb2wgVGV4dEJveDo6aXNMYXN0KCkgY29uc3QKK2lubGluZSBib29sIFRl
eHRSdW46OmlzTGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5pc0xhc3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2
ZXJzYWxDb21wbGV4UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKc2ltaWxhcml0eSBpbmRleCA4
OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRy
YXZlcnNhbENvbXBsZXhQYXRoLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCmluZGV4IGE2
NmRiN2ZjYjkyOC4uOWUwNzE0ZjkyNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxl
Z2FjeVBhdGguaApAQCAtMzAsMTEgKzMwLDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGluZUxheW91dFRyYXZlcnNhbCB7Citu
YW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1jbGFzcyBDb21wbGV4UGF0aCB7CitjbGFz
cyBMZWdhY3lQYXRoIHsKIHB1YmxpYzoKLSAgICBDb21wbGV4UGF0aChjb25zdCBJbmxpbmVCb3gq
IGlubGluZUJveCwgVmVjdG9yPGNvbnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRlZElubGluZVRl
eHRCb3hlcyA9IHsgfSwgc2l6ZV90IHNvcnRlZElubGluZVRleHRCb3hJbmRleCA9IDApCisgICAg
TGVnYWN5UGF0aChjb25zdCBJbmxpbmVCb3gqIGlubGluZUJveCwgVmVjdG9yPGNvbnN0IElubGlu
ZVRleHRCb3gqPiYmIHNvcnRlZElubGluZVRleHRCb3hlcyA9IHsgfSwgc2l6ZV90IHNvcnRlZElu
bGluZVRleHRCb3hJbmRleCA9IDApCiAgICAgICAgIDogbV9pbmxpbmVCb3goaW5saW5lQm94KQog
ICAgICAgICAsIG1fc29ydGVkSW5saW5lVGV4dEJveGVzKFdURk1vdmUoc29ydGVkSW5saW5lVGV4
dEJveGVzKSkKICAgICAgICAgLCBtX3NvcnRlZElubGluZVRleHRCb3hJbmRleChzb3J0ZWRJbmxp
bmVUZXh0Qm94SW5kZXgpCkBAIC02NiwxNSArNjYsMTUgQEAgcHVibGljOgogICAgIH0KICAgICBp
bmxpbmUgYm9vbCBpc0xhc3QoKSBjb25zdCB7IHJldHVybiAhbmV4dElubGluZVRleHRCb3hJblRl
eHRPcmRlcigpOyB9OwogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0Qm94SW5WaXN1YWxPcmRl
cigpIHsgbV9pbmxpbmVCb3ggPSBpbmxpbmVUZXh0Qm94KCktPm5leHRUZXh0Qm94KCk7IH0KLSAg
ICB2b2lkIHRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpCisgICAgdm9pZCB0cmF2ZXJz
ZU5leHRUZXh0UnVuSW5WaXN1YWxPcmRlcigpIHsgbV9pbmxpbmVCb3ggPSBpbmxpbmVUZXh0Qm94
KCktPm5leHRUZXh0Qm94KCk7IH0KKyAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRP
cmRlcigpCiAgICAgewogICAgICAgICBtX2lubGluZUJveCA9IG5leHRJbmxpbmVUZXh0Qm94SW5U
ZXh0T3JkZXIoKTsKICAgICAgICAgaWYgKCFtX3NvcnRlZElubGluZVRleHRCb3hlcy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICArK21fc29ydGVkSW5saW5lVGV4dEJveEluZGV4OwogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21wbGV4UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1faW5saW5lQm94ID09IG90aGVyLm1faW5saW5lQm94OyB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExlZ2FjeVBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCA9
PSBvdGhlci5tX2lubGluZUJveDsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAh
bV9pbmxpbmVCb3g7IH0KIAogcHJpdmF0ZToKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICBzaXplX3QgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggeyAwIH07CiB9OwogCi1pbmxpbmUg
Y29uc3QgSW5saW5lVGV4dEJveCogQ29tcGxleFBhdGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0
T3JkZXIoKSBjb25zdAoraW5saW5lIGNvbnN0IElubGluZVRleHRCb3gqIExlZ2FjeVBhdGg6Om5l
eHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKSBjb25zdAogewogICAgIGlmICghbV9zb3J0ZWRJ
bmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3NvcnRlZElubGluZVRl
eHRCb3hJbmRleCArIDEgPCBtX3NvcnRlZElubGluZVRleHRCb3hlcy5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlz
cGxheVJ1blBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCnNpbWlsYXJpdHkgaW5kZXggODMlCnJl
bmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJz
YWxEaXNwbGF5UnVuUGF0aC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaAppbmRleCAwMWI3
YTZjMzViNjYuLmMxODQ2ZDExMDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JN
b2Rlcm5QYXRoLmgKQEAgLTMxLDI0ICszMSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LW5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKK25hbWVzcGFjZSBMYXlvdXRJbnRlZ3Jh
dGlvbiB7CiAKIHN0YXRpYyBGbG9hdFBvaW50IGxpbmVQb3NpdGlvbihmbG9hdCBsZWZ0LCBmbG9h
dCB0b3ApCiB7CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQobGVmdCwgcm91bmRmKHRvcCkpOwogfQog
Ci1jbGFzcyBEaXNwbGF5UnVuUGF0aCB7CitjbGFzcyBNb2Rlcm5QYXRoIHsKIHB1YmxpYzoKLSAg
ICBEaXNwbGF5UnVuUGF0aChjb25zdCBEaXNwbGF5OjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250
ZW50LCBzaXplX3Qgc3RhcnRJbmRleCwgc2l6ZV90IGVuZEluZGV4KQorICAgIE1vZGVyblBhdGgo
Y29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0
SW5kZXgsIHNpemVfdCBlbmRJbmRleCkKICAgICAgICAgOiBtX2lubGluZUNvbnRlbnQoJmlubGlu
ZUNvbnRlbnQpCiAgICAgICAgICwgbV9lbmRJbmRleChlbmRJbmRleCkKICAgICAgICAgLCBtX3J1
bkluZGV4KHN0YXJ0SW5kZXgpCiAgICAgeyB9Ci0gICAgRGlzcGxheVJ1blBhdGgoRGlzcGxheVJ1
blBhdGgmJikgPSBkZWZhdWx0OwotICAgIERpc3BsYXlSdW5QYXRoKGNvbnN0IERpc3BsYXlSdW5Q
YXRoJikgPSBkZWZhdWx0OwotICAgIERpc3BsYXlSdW5QYXRoJiBvcGVyYXRvcj0oY29uc3QgRGlz
cGxheVJ1blBhdGgmKSA9IGRlZmF1bHQ7Ci0gICAgRGlzcGxheVJ1blBhdGgmIG9wZXJhdG9yPShE
aXNwbGF5UnVuUGF0aCYmKSA9IGRlZmF1bHQ7CisgICAgTW9kZXJuUGF0aChNb2Rlcm5QYXRoJiYp
ID0gZGVmYXVsdDsKKyAgICBNb2Rlcm5QYXRoKGNvbnN0IE1vZGVyblBhdGgmKSA9IGRlZmF1bHQ7
CisgICAgTW9kZXJuUGF0aCYgb3BlcmF0b3I9KGNvbnN0IE1vZGVyblBhdGgmKSA9IGRlZmF1bHQ7
CisgICAgTW9kZXJuUGF0aCYgb3BlcmF0b3I9KE1vZGVyblBhdGgmJikgPSBkZWZhdWx0OwogCiAg
ICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdDsKIApAQCAtODUsMTQgKzg1LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fcnVuSW5kZXggKyAxID09IG1fZW5kSW5kZXg7CiAgICAgfTsKIAot
ICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVmlzdWFsT3JkZXIoKQorICAgIHZvaWQgdHJh
dmVyc2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFh
dEVuZCgpKTsKICAgICAgICAgKyttX3J1bkluZGV4OwogICAgIH0KLSAgICB2b2lkIHRyYXZlcnNl
TmV4dFRleHRCb3hJblRleHRPcmRlcigpIHsgIHRyYXZlcnNlTmV4dFRleHRCb3hJblZpc3VhbE9y
ZGVyKCk7IH0KKyAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpIHsgIHRy
YXZlcnNlTmV4dFRleHRSdW5JblZpc3VhbE9yZGVyKCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBEaXNwbGF5UnVuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29u
dGVudCA9PSBvdGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5tX3J1
bkluZGV4OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vZGVyblBhdGgmIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYm
IG1fcnVuSW5kZXggPT0gb3RoZXIubV9ydW5JbmRleDsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25z
dCB7IHJldHVybiBtX3J1bkluZGV4ID09IG1fZW5kSW5kZXg7IH0KIAogcHJpdmF0ZToKQEAgLTEw
NSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3J1bkluZGV4IHsgMCB9OwogfTsK
IAotaW5saW5lIEZsb2F0UmVjdCBEaXNwbGF5UnVuUGF0aDo6cmVjdCgpIGNvbnN0CitpbmxpbmUg
RmxvYXRSZWN0IE1vZGVyblBhdGg6OnJlY3QoKSBjb25zdAogewogICAgIGF1dG8gcmVjdCA9IHJ1
bigpLnJlY3QoKTsKICAgICBhdXRvIHBvc2l0aW9uID0gbGluZVBvc2l0aW9uKHJlY3QueCgpLCBy
ZWN0LnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CmluZGV4IGFlYzFiMzQxNjJhYy4uOTE0YzMxNDFhMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFdCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmxpbmVFbGVtZW50Qm94LmgiCi0jaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgorI2lu
Y2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb2dpY2Fs
U2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xNzAsNyArMTcwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJM
aW5lQnJlYWs6OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBj
YXJldE8KIAogSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25z
dAogewotICAgIGF1dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigq
dGhpcyk7CisgICAgYXV0byBib3ggPSBMYXlvdXRJbnRlZ3JhdGlvbjo6ZWxlbWVudFJ1bkZvcigq
dGhpcyk7CiAgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTE3OSw3ICsx
NzksNyBAQCBJbnRSZWN0IFJlbmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0
CiAKIEludFJlY3QgUmVuZGVyTGluZUJyZWFrOjpib3VuZGluZ0JveEZvclJlbmRlclRyZWVEdW1w
KCkgY29uc3QKIHsKLSAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRC
b3hGb3IoKnRoaXMpOworICAgIGF1dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1lbnRS
dW5Gb3IoKnRoaXMpOwogICAgIGlmICghYm94KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0y
MDEsNyArMjAxLDcgQEAgSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmJvdW5kaW5nQm94Rm9yUmVu
ZGVyVHJlZUR1bXAoKSBjb25zdAogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0CiB7Ci0gICAgYXV0byBib3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjplbGVt
ZW50Qm94Rm9yKCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IExheW91dEludGVncmF0aW9uOjplbGVt
ZW50UnVuRm9yKCp0aGlzKTsKICAgICBpZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGEKIAogdm9pZCBSZW5kZXJMaW5l
QnJlYWs6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKLSAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1l
bnRCb3hGb3IoKnRoaXMpOworICAgIGF1dG8gYm94ID0gTGF5b3V0SW50ZWdyYXRpb246OmVsZW1l
bnRSdW5Gb3IoKnRoaXMpOwogICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA4ZTBlYjI3OGNjNGUuLjMyNzIy
MTdlZWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzcs
NyArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIeXBo
ZW5hdGlvbi5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5
b3V0VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRl
ICJSZW5kZXJDb21iaW5lVGV4dC5oIgpAQCAtMzAzLDggKzMwMyw4IEBAIFN0cmluZyBSZW5kZXJU
ZXh0OjpvcmlnaW5hbFRleHQoKSBjb25zdAogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KSBjb25zdAogewotICAgIGZvciAoYXV0byYgYm94IDogTGluZUxheW91dFRyYXZlcnNh
bDo6dGV4dEJveGVzRm9yKCp0aGlzKSkgewotICAgICAgICBhdXRvIHJlY3QgPSBib3gucmVjdCgp
OworICAgIGZvciAoYXV0byYgcnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKCp0
aGlzKSkgeworICAgICAgICBhdXRvIHJlY3QgPSBydW4ucmVjdCgpOwogICAgICAgICByZWN0cy5h
cHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyByZWN0
LmxvY2F0aW9uKCksIHJlY3Quc2l6ZSgpKSkpOwogICAgIH0KIH0KQEAgLTQwOCw4ICs0MDgsOCBA
QCBzdGF0aWMgVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNGb3JOb25Db21w
bGV4UGF0aHMoY29uc3QgUmVuZGVyVGV4dAogICAgIEFTU0VSVCghdGV4dFJlbmRlcmVyLnVzZXND
b21wbGV4TGluZUxheW91dFBhdGgoKSk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsK
LSAgICBmb3IgKGF1dG8mIGJveCA6IExpbmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0Zvcih0
ZXh0UmVuZGVyZXIpKQotICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFJlbmRlcmVyLmxvY2FsVG9B
YnNvbHV0ZVF1YWQoRmxvYXRRdWFkKGJveC5yZWN0KCkpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhl
ZCkpOworICAgIGZvciAoYXV0byYgcnVuIDogTGF5b3V0SW50ZWdyYXRpb246OnRleHRSdW5zRm9y
KHRleHRSZW5kZXJlcikpCisgICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UmVuZGVyZXIubG9jYWxU
b0Fic29sdXRlUXVhZChGbG9hdFF1YWQocnVuLnJlY3QoKSksIFVzZVRyYW5zZm9ybXMsIHdhc0Zp
eGVkKSk7CiAgICAgcmV0dXJuIHF1YWRzOwogfQogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBWZWN0
b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IFJlbmRlclRleHQ6OmRyYWdnZWRDb250
ZW50UmFuZ2VzQmV0d2Vlbk9mZgogCiBJbnRQb2ludCBSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0
aW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIGZpcnN0ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Zmly
c3RUZXh0Qm94Rm9yKCp0aGlzKTsKKyAgICBhdXRvIGZpcnN0ID0gTGF5b3V0SW50ZWdyYXRpb246
OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7CiAgICAgaWYgKCFmaXJzdCkKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICByZXR1cm4gSW50UG9pbnQoZmlyc3QtPnJlY3QoKS5sb2NhdGlvbigpKTsKQEAg
LTEzNTUsNyArMTM1NSw3IEBAIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbiwgY29uc3QgRm9udENhc2NhZGUmIGYsIGZsb2F0CiAKIEludFJlY3QgUmVu
ZGVyVGV4dDo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IExp
bmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CisgICAgYXV0byBmaXJz
dCA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOwogICAgIGlmICgh
Zmlyc3QpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIExheW91
dFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwCiAKIGludCBSZW5kZXJUZXh0OjpjYXJldE1pbk9mZnNldCgpIGNv
bnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJv
eEZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdCA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRl
eHRSdW5Gb3IoKnRoaXMpOwogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybiAwOwogCkBA
IC0xNDU3LDcgKzE0NTcsNyBAQCBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25z
dAogCiBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewotICAgIGF1dG8g
Zmlyc3QgPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOworICAg
IGF1dG8gZmlyc3QgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlzKTsK
ICAgICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOwogCkBAIC0x
NDcxLDkgKzE0NzEsOSBAQCBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAog
dW5zaWduZWQgUmVuZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh1
bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBm
b3IgKGF1dG8mIGJveCA6IExpbmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0ZvcigqdGhpcykp
IHsKLSAgICAgICAgYXV0byBzdGFydCA9IGJveC5sb2NhbFN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAg
IGF1dG8gbGVuZ3RoID0gYm94Lmxlbmd0aCgpOworICAgIGZvciAoYXV0byYgcnVuIDogTGF5b3V0
SW50ZWdyYXRpb246OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgICAgICBhdXRvIHN0YXJ0ID0g
cnVuLmxvY2FsU3RhcnRPZmZzZXQoKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBydW4ubGVuZ3Ro
KCk7CiAgICAgICAgIGlmIChvZmZzZXQgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIGlmIChvZmZzZXQgPD0gc3RhcnQgKyBsZW5ndGgpIHsKQEAgLTE0ODgsNyAr
MTQ4OCw3IEBAIHVuc2lnbmVkIFJlbmRlclRleHQ6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZz
ZXRzVW50aWwodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogZW51bSBjbGFzcyBPZmZzZXRUeXBlIHsg
Q2hhcmFjdGVyLCBDYXJldCB9Owogc3RhdGljIGJvb2wgY29udGFpbnNPZmZzZXQoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBPZmZzZXRUeXBlIHR5cGUpCiB7Ci0gICAg
Zm9yIChhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEluVGV4dE9y
ZGVyRm9yKHRleHQpOyBib3g7IGJveC50cmF2ZXJzZU5leHRJblRleHRPcmRlcigpKSB7CisgICAg
Zm9yIChhdXRvIGJveCA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5JblRleHRPcmRl
ckZvcih0ZXh0KTsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkgewogICAgICAg
ICBhdXRvIHN0YXJ0ID0gYm94LT5sb2NhbFN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIGlmIChvZmZz
ZXQgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MTcsNyArMTUxNyw3
IEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29udGFpbnNDYXJldE9mZnNldCh1bnNpZ25lZCBvZmZzZXQp
IGNvbnN0CiAKIGJvb2wgUmVuZGVyVGV4dDo6aGFzUmVuZGVyZWRUZXh0KCkgY29uc3QKIHsKLSAg
ICBmb3IgKGF1dG8mIGJveCA6IExpbmVMYXlvdXRUcmF2ZXJzYWw6OnRleHRCb3hlc0ZvcigqdGhp
cykpIHsKKyAgICBmb3IgKGF1dG8mIGJveCA6IExheW91dEludGVncmF0aW9uOjp0ZXh0UnVuc0Zv
cigqdGhpcykpIHsKICAgICAgICAgaWYgKGJveC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAppbmRleCBlODJmNzlmMjQyOGYuLjc1YWRhMjhlNjFmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMzYsNyArMzYsNyBAQAog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgi
CisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVt
ZW50LmgiCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJl
bmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAg
ICAvLyBtYW55IHRlc3QgcmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0
UnVuTG9jYXRpb24oKSwgdGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAg
aWYgKCFMaW5lTGF5b3V0VHJhdmVyc2FsOjpmaXJzdFRleHRCb3hGb3IodGV4dCkpCisgICAgICAg
IGlmICghTGF5b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcih0ZXh0KSkKICAgICAgICAg
ICAgIGFkanVzdEZvclRhYmxlQ2VsbHMgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG8uaXNCUigp
KSB7CiAgICAgICAgIGNvbnN0IFJlbmRlckxpbmVCcmVhayYgYnIgPSBkb3duY2FzdDxSZW5kZXJM
aW5lQnJlYWs+KG8pOwpAQCAtNDc4LDI2ICs0NzgsMjYgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5k
ZXIKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVuZGVyVGV4dCYgbywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYg
dGV4dEJveCkKK3N0YXRpYyB2b2lkIHdyaXRlVGV4dFJ1bihUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyVGV4dCYgbywgY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW4mIHRleHRSdW4p
CiB7Ci0gICAgYXV0byByZWN0ID0gdGV4dEJveC5yZWN0KCk7CisgICAgYXV0byByZWN0ID0gdGV4
dFJ1bi5yZWN0KCk7CiAgICAgaW50IHggPSByZWN0LngoKTsKICAgICBpbnQgeSA9IHJlY3QueSgp
OwogICAgIC8vIEZJWE1FOiBVc2Ugbm9uLWxvZ2ljYWwgd2lkdGguIHdlYmtpdC5vcmcvYi8yMDY4
MDkuCi0gICAgaW50IGxvZ2ljYWxXaWR0aCA9IGNlaWxmKHJlY3QueCgpICsgKHRleHRCb3guaXNI
b3Jpem9udGFsKCkgPyByZWN0LndpZHRoKCkgOiByZWN0LmhlaWdodCgpKSkgLSB4OworICAgIGlu
dCBsb2dpY2FsV2lkdGggPSBjZWlsZihyZWN0LngoKSArICh0ZXh0UnVuLmlzSG9yaXpvbnRhbCgp
ID8gcmVjdC53aWR0aCgpIDogcmVjdC5oZWlnaHQoKSkpIC0geDsKICAgICAvLyBGSVhNRTogVGFi
bGUgY2VsbCBhZGp1c3RtZW50IGlzIHRlbXBvcmFyeSB1bnRpbCByZXN1bHRzIGNhbiBiZSB1cGRh
dGVkLgogICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KCpvLmNvbnRhaW5pbmdCbG9jaygpKSkK
ICAgICAgICAgeSAtPSBmbG9vclRvSW50KGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm8uY29u
dGFpbmluZ0Jsb2NrKCkpLmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7CiAgICAgICAgIAogICAg
IHRzIDw8ICJ0ZXh0IHJ1biBhdCAoIiA8PCB4IDw8ICIsIiA8PCB5IDw8ICIpIHdpZHRoICIgPDwg
bG9naWNhbFdpZHRoOwotICAgIGlmICghdGV4dEJveC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
fHwgdGV4dEJveC5kaXJPdmVycmlkZSgpKSB7Ci0gICAgICAgIHRzIDw8ICghdGV4dEJveC5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyAiIFJUTCIgOiAiIExUUiIpOwotICAgICAgICBpZiAodGV4
dEJveC5kaXJPdmVycmlkZSgpKQorICAgIGlmICghdGV4dFJ1bi5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgfHwgdGV4dFJ1bi5kaXJPdmVycmlkZSgpKSB7CisgICAgICAgIHRzIDw8ICghdGV4dFJ1
bi5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyAiIFJUTCIgOiAiIExUUiIpOworICAgICAgICBp
ZiAodGV4dFJ1bi5kaXJPdmVycmlkZSgpKQogICAgICAgICAgICAgdHMgPDwgIiBvdmVycmlkZSI7
CiAgICAgfQogICAgIHRzIDw8ICI6ICIKLSAgICAgICAgPDwgcXVvdGVBbmRFc2NhcGVOb25Qcmlu
dGFibGVzKHRleHRCb3gudGV4dCgpKTsKLSAgICBpZiAodGV4dEJveC5oYXNIeXBoZW4oKSkKKyAg
ICAgICAgPDwgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKHRleHRSdW4udGV4dCgpKTsKKyAg
ICBpZiAodGV4dFJ1bi5oYXNIeXBoZW4oKSkKICAgICAgICAgdHMgPDwgIiArIGh5cGhlbiBzdHJp
bmcgIiA8PCBxdW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXMoby5zdHlsZSgpLmh5cGhlblN0cmlu
ZygpLnN0cmluZygpKTsKICAgICB0cyA8PCAiXG4iOwogfQpAQCAtNTQ2LDkgKzU0Niw5IEBAIHZv
aWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0
PFJlbmRlckFzVGV4dEZsYWc+IGJlCiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4obykpIHsKICAg
ICAgICAgYXV0byYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwotICAgICAgICBmb3Ig
KGF1dG8mIHRleHRCb3ggOiBMaW5lTGF5b3V0VHJhdmVyc2FsOjp0ZXh0Qm94ZXNGb3IodGV4dCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBydW4gOiBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bnNG
b3IodGV4dCkpIHsKICAgICAgICAgICAgIHRzIDw8IGluZGVudDsKLSAgICAgICAgICAgIHdyaXRl
VGV4dEJveCh0cywgdGV4dCwgdGV4dEJveCk7CisgICAgICAgICAgICB3cml0ZVRleHRSdW4odHMs
IHRleHQsIHJ1bik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0Pihkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PihvKSkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>