<?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>225832</bug_id>
          
          <creation_ts>2021-05-14 15:53:57 -0700</creation_ts>
          <short_desc>Drop legacy / prefixed WebAudio implementation</short_desc>
          <delta_ts>2021-05-15 13:14:26 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760272</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 15:53:57 -0700</bug_when>
    <thetext>Drop legacy / prefixed WebAudio implementation now that it is disabled in shipping. This will allow us to clean up the code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760285</commentid>
    <comment_count>1</comment_count>
      <attachid>428680</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 16:14:34 -0700</bug_when>
    <thetext>Created attachment 428680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760299</commentid>
    <comment_count>2</comment_count>
      <attachid>428686</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 16:59:23 -0700</bug_when>
    <thetext>Created attachment 428686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760322</commentid>
    <comment_count>3</comment_count>
      <attachid>428695</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 17:50:15 -0700</bug_when>
    <thetext>Created attachment 428695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760329</commentid>
    <comment_count>4</comment_count>
      <attachid>428698</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 18:42:49 -0700</bug_when>
    <thetext>Created attachment 428698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760335</commentid>
    <comment_count>5</comment_count>
      <attachid>428701</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-14 19:24:06 -0700</bug_when>
    <thetext>Created attachment 428701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760366</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-14 21:18:47 -0700</bug_when>
    <thetext>Committed r277530 (237758@main): &lt;https://commits.webkit.org/237758@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428701.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760367</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-14 21:19:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78045161&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428680</attachid>
            <date>2021-05-14 16:14:34 -0700</date>
            <delta_ts>2021-05-14 16:59:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225832-20210514161432.patch</filename>
            <type>text/plain</type>
            <size>127768</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ2ZDkwNDUwZTRkOTljNmIwOTEzODA1
NjAzMTU4NjE0Mjk0MTMwMTUuLjQ4MWJjOWEwMjUyOGVhNmVmNGM2MmU3MzdlNjQ4ZDA5YzJjMGZm
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlvIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEcm9wIHByZWZlcmVuY2UgZm9yIHByZWZpeGVkIFdlYkF1ZGlvLCB3aGljaCB3YXMgZGlz
YWJsZWQgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIxLTA1LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdYCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjBlZjVhYjQ0NDJhYjNhZGMwOTllYzc0NmUy
NDhmNjFjZWNlZTkwLi5mYTdkNGM0NjY4Njc5MmE4YTM5ZTBlZTEzN2M5MDczMjhjOTYzODFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlv
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlvIGltcGxlbWVudGF0aW9uIG5v
dyB0aGF0IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICBwcmVzZW50IGluIHNoaXBwaW5nIGFuZCB3
ZSBoYXZlIHJlY2VpdmVkIGFueSByZXBvcnRzIG9mIGlzc3Vlcy4KKworICAgICAgICBUaGlzIGRy
b3BzIGFsbCB0aGUgbGVnYWN5IGNvZGUgYnV0IHNoZSBzaG91bGQgYmUgYWJsZSB0byBjbGVhbiB1
cCB0aGUKKyAgICAgICAgY29kZSBmdXJ0aGVyIGluIGZvbGxvdy11cHMuIEluIHBhcnRpY3VsYXIs
IEkgYmVsaWV2ZSBzb21lIGNvZGUgY2FuCisgICAgICAgIG5vdyBiZSBtb3ZlZCBmcm9tIEJhc2VB
dWRpb0NvbnRleHQgdG8gT2ZmbGluZUF1ZGlvQ29udGV4dC4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QmFzZUF1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0
OjpCYXNlQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmlzT2ZmbGlu
ZUNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6QmFz
ZUF1ZGlvQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4dDo6T2ZmbGluZUF1
ZGlvQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9D
b250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9Db250ZXh0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvTGlzdGVuZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0b3JOb2RlLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAyMS0wNS0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIEJhZCBtZWRpYSBzZXNzaW9uIGFydHdvcmsgVVJMIHJlc3VsdHMgaW4gYmx1
ZSAiYnJva2VuIGltYWdlIiBpY29uIGJlaW5nIHNob3duIGluIE5vdyBQbGF5aW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggYjYwMWViZDdlNjk3ZjFiMTM2ZWM4MWJiZDQzZTAxN2Iz
MWY1NjE2OS4uOTU4N2I3MGY3MzNhM2JhZWIyYzBmYWVlYjYzMzc3NGIzNjk5YWUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVm
aXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3RvcCBleHBsaWNpdGx5IGRpc2FibGVkIHdpdGggcHJlZml4
ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gZ2l2ZW4gdGhhdAorICAgICAgICBpdCBubyBsb25n
ZXIgZXhpc3RzLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpu
b3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorCiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCB1bnVzZWQgRmlsZVN5c3RlbTo6aG9tZURp
cmVjdG9yeVBhdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggZmExZDdiMTE4NjU4OTI0NzE2
MWNiY2M0YWM3OTFmOTJkMjEzMTQxNy4uNjFmODdjZmJmYTBiYjM5YjhjZDYyM2U2ZWFmMjJiMTc4
NjZhNGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBAIC01ODMsMTkgKzU4Myw2IEBAIFByZWZl
clBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAg
ICAgZGVmYXVsdDogdHJ1ZQogCi1QcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKLSAgdHlwZTogYm9v
bAotICBodW1hblJlYWRhYmxlTmFtZTogIlByZWZpeGVkIFdlYkF1ZGlvIEFQSSIKLSAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiUHJlZml4ZWQgV2ViQXVkaW8gQVBJIgotICBjb25kaXRpb246
IEVOQUJMRShXRUJfQVVESU8pCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdhY3k6Ci0g
ICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0g
ICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KIFJlc291cmNlTG9hZFNjaGVkdWxp
bmdFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiUmVzb3VyY2Ug
TG9hZCBTY2hlZHVsaW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZGI1MWJhNjZlZDY5Mzgz
NzdjOTRkYWQ2NjY2ZmE5OTcxNjE4NGRjLi41YTNmOTVjYmM0ZDM5MTkyNWFmYWZmZWIzZTEwZjk0
N2VlZmJlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTcxLDEzICs1NzEsNiBAQCBzZXQo
V2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbAog
ICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaWRsCi0gICAgTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCi0gICAgTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0xpc3RlbmVyLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
Ci0gICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKIAogICAgIE1v
ZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDIyOTI2YmM2MmMzNzVkYzQzZjdmN2Nk
YmMxMGJhMmI3ZmRkOTNjZmYuLjMxYzRhMzE2MzFiYmUzYWE2NTYwYzY0YWNlMGYwZGJhMTVlMWE2
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDI5LDEzICs0MjksNiBAQCBK
U19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TdGVy
ZW9QYW5uZXJPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJPcHRpb25zLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0b3JOb2RlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcAppbmRleCA0MTAwOWVjMTcwNzU0YTkxZjk3YmEzMTFlMjQyOTFmYzlkZGQz
ZDQwLi40OGMxNjMyMGJhOWM5NDUxOTMwZTBjYjgwMzI2ZWE1NTE2MmI5OTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuY3BwCkBAIC0zNiwxNCArMzYsMTEgQEAKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKLSNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOwotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7CiAKIGNvbnN0ZXhwciBkb3VibGUgRGVm
YXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogCkBAIC05Myw3ICs5MCw2IEBAIEF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEJhc2VBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCiAKIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6fkF1ZGlvQnVmZmVyU291cmNl
Tm9kZSgpCiB7Ci0gICAgY2xlYXJQYW5uZXJOb2RlKCk7CiAgICAgdW5pbml0aWFsaXplKCk7CiB9
CiAKQEAgLTE0Niw5ICsxNDIsNiBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vz
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ly8gQXBwbHkgdGhlIGdhaW4gKGluLXBsYWNlKSB0byB0aGUgb3V0cHV0IGJ1cy4KLSAgICBmbG9h
dCB0b3RhbEdhaW4gPSBsZWdhY3lHYWluVmFsdWUoKTsKLSAgICBvdXRwdXRCdXMuY29weVdpdGhH
YWluRnJvbShvdXRwdXRCdXMsIHRvdGFsR2Fpbik7CiAgICAgb3V0cHV0QnVzLmNsZWFyU2lsZW50
RmxhZygpOwogfQogCkBAIC00MTksNyArNDEyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVS
KTsKIAotICAgIGlmIChidWZmZXIgJiYgbV93YXNCdWZmZXJTZXQgJiYgc2hvdWxkVGhyb3dPbkF0
dGVtcHRUb092ZXJ3cml0ZUJ1ZmZlcigpKQorICAgIGlmIChidWZmZXIgJiYgbV93YXNCdWZmZXJT
ZXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlRoZSBi
dWZmZXIgd2FzIGFscmVhZHkgc2V0Il9zIH07CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJl
IGxvY2tlZCBzaW5jZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51
bWJlciBvZiBjaGFubmVscyB0aGF0IGFyZSBvdXRwdXQuCkBAIC01MzcsMTAgKzUzMCw2IEBAIHZv
aWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjphZGp1c3RHcmFpblBhcmFtZXRlcnMoKQogCiBkb3Vi
bGUgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp0b3RhbFBpdGNoUmF0ZSgpCiB7Ci0gICAgZG91Ymxl
IGRvcHBsZXJSYXRlID0gMS4wOwotICAgIGlmIChtX2xlZ2FjeVBhbm5lck5vZGUpCi0gICAgICAg
IGRvcHBsZXJSYXRlID0gbV9sZWdhY3lQYW5uZXJOb2RlLT5kb3BwbGVyUmF0ZSgpOwotICAgIAog
ICAgIC8vIEluY29ycG9yYXRlIGJ1ZmZlcidzIHNhbXBsZS1yYXRlIHZlcnN1cyBBdWRpb0NvbnRl
eHQncyBzYW1wbGUtcmF0ZS4KICAgICAvLyBOb3JtYWxseSBpdCdzIG5vdCBhbiBpc3N1ZSBiZWNh
dXNlIGJ1ZmZlcnMgYXJlIGxvYWRlZCBhdCB0aGUgQXVkaW9Db250ZXh0J3Mgc2FtcGxlLXJhdGUs
IGJ1dCB3ZSBjYW4gaGFuZGxlIGl0IGluIGFueSBjYXNlLgogICAgIGRvdWJsZSBzYW1wbGVSYXRl
RmFjdG9yID0gMS4wOwpAQCAtNTUwLDcgKzUzOSw3IEBAIGRvdWJsZSBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKCkKICAgICBkb3VibGUgYmFzZVBpdGNoUmF0ZSA9IHBsYXli
YWNrUmF0ZSgpLmZpbmFsVmFsdWUoKTsKICAgICBkb3VibGUgZGV0dW5lID0gcG93KDIsIG1fZGV0
dW5lLT5maW5hbFZhbHVlKCkgLyAxMjAwKTsKIAotICAgIGRvdWJsZSB0b3RhbFJhdGUgPSBkb3Bw
bGVyUmF0ZSAqIHNhbXBsZVJhdGVGYWN0b3IgKiBiYXNlUGl0Y2hSYXRlICogZGV0dW5lOworICAg
IGRvdWJsZSB0b3RhbFJhdGUgPSBzYW1wbGVSYXRlRmFjdG9yICogYmFzZVBpdGNoUmF0ZSAqIGRl
dHVuZTsKIAogICAgIHRvdGFsUmF0ZSA9IHN0ZDo6Y2xhbXAodG90YWxSYXRlLCAtTWF4UmF0ZSwg
TWF4UmF0ZSk7CiAgICAgCkBAIC01NjcsMjQgKzU1Niw2IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpc1BsYXlpbmdP
clNjaGVkdWxlZCgpIHx8IGhhc0ZpbmlzaGVkKCkgfHwgIW1fYnVmZmVyOwogfQogCi12b2lkIEF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZShXZWJLaXRBdWRpb1Bhbm5lck5vZGUq
IHBhbm5lck5vZGUpCi17Ci0gICAgaWYgKG1fbGVnYWN5UGFubmVyTm9kZSAhPSBwYW5uZXJOb2Rl
ICYmICFoYXNGaW5pc2hlZCgpKQotICAgICAgICBtX2xlZ2FjeVBhbm5lck5vZGUgPSBwYW5uZXJO
b2RlOwotfQotCi12b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y2xlYXJQYW5uZXJOb2RlKCkK
LXsKLSAgICBtX2xlZ2FjeVBhbm5lck5vZGUgPSBudWxscHRyOwotfQotCi12b2lkIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6ZmluaXNoKCkKLXsKLSAgICBjbGVhclBhbm5lck5vZGUoKTsKLSAgICBB
U1NFUlQoIW1fbGVnYWN5UGFubmVyTm9kZSk7Ci0gICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
OjpmaW5pc2goKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDJkYjc2NjFiODU0MThkOGNkYTkyZjkw
NDFmNGRhNGE2OTA3Mjk2OWIuLmI3MzNkNzBjNmZjYmFhYTVkYmE0NjVjYjY4YWUzMjM2MmQyN2M2
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzMsMTMgKzMzLDEyIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOwog
c3RydWN0IEF1ZGlvQnVmZmVyU291cmNlT3B0aW9uczsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlIGlzIGFuIEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4g
aW4tbWVtb3J5IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8g
SXQgZ2VuZXJhbGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUg
YSBoaWdoIGRlZ3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4g
cmh5dGhtaWNhbGx5IHBlcmZlY3Qgd2F5cykuCiAKLWNsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZSA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgeworY2xhc3MgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUoQmFzZUF1ZGlvQ29u
dGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwpAQCAtNzYsMTYgKzc1LDkgQEAgcHVibGljOgogICAg
IEF1ZGlvUGFyYW0mIGRldHVuZSgpIHsgcmV0dXJuIG1fZGV0dW5lLmdldCgpOyB9CiAgICAgQXVk
aW9QYXJhbSYgcGxheWJhY2tSYXRlKCkgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUuZ2V0KCk7IH0K
IAotICAgIC8vIElmIGEgcGFubmVyIG5vZGUgaXMgc2V0LCB0aGVuIHdlIGNhbiBpbmNvcnBvcmF0
ZSBkb3BwbGVyIHNoaWZ0IGludG8gdGhlIHBsYXliYWNrIHBpdGNoIHJhdGUuCi0gICAgdm9pZCBz
ZXRQYW5uZXJOb2RlKFdlYktpdEF1ZGlvUGFubmVyTm9kZSopOwotICAgIHZvaWQgY2xlYXJQYW5u
ZXJOb2RlKCk7Ci0KICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3BvZ2F0
ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCiAgICAgYm9vbCBwcm9wYWdhdGVz
U2lsZW5jZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgLy8gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
Ci0gICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKLQogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
IjsgfQogCiBwcm90ZWN0ZWQ6CkBAIC05NSw5ICs4Nyw2IEBAIHByaXZhdGU6CiAgICAgZG91Ymxl
IHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgZG91YmxlIGxl
Z2FjeUdhaW5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIDEuMDsgfQotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBk
b3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlvbik7CiAgICAg
dm9pZCBhZGp1c3RHcmFpblBhcmFtZXRlcnMoKTsKIApAQCAtMTM3LDEzICsxMjYsOSBAQCBwcml2
YXRlOgogICAgIGRvdWJsZSBtX3dhc0dyYWluRHVyYXRpb25HaXZlbiB7IGZhbHNlIH07CiAKICAg
ICAvLyB0b3RhbFBpdGNoUmF0ZSgpIHJldHVybnMgdGhlIGluc3RhbnRhbmVvdXMgcGl0Y2ggcmF0
ZSAobm9uLXRpbWUgcHJlc2VydmluZykuCi0gICAgLy8gSXQgaW5jb3Jwb3JhdGVzIHRoZSBiYXNl
IHBpdGNoIHJhdGUsIGFueSBzYW1wbGUtcmF0ZSBjb252ZXJzaW9uIGZhY3RvciBmcm9tIHRoZSBi
dWZmZXIsIGFuZCBhbnkgZG9wcGxlciBzaGlmdCBmcm9tIGFuIGFzc29jaWF0ZWQgcGFubmVyIG5v
ZGUuCisgICAgLy8gSXQgaW5jb3Jwb3JhdGVzIHRoZSBiYXNlIHBpdGNoIHJhdGUsIGFueSBzYW1w
bGUtcmF0ZSBjb252ZXJzaW9uIGZhY3RvciBmcm9tIHRoZSBidWZmZXIuCiAgICAgZG91YmxlIHRv
dGFsUGl0Y2hSYXRlKCk7CiAKLSAgICAvLyBXZSBvcHRpb25hbGx5IGtlZXAgdHJhY2sgb2YgYSBw
YW5uZXIgbm9kZSB3aGljaCBoYXMgYSBkb3BwbGVyIHNoaWZ0IHRoYXQgaXMgaW5jb3Jwb3JhdGVk
IGludG8KLSAgICAvLyB0aGUgcGl0Y2ggcmF0ZS4KLSAgICBBdWRpb0Nvbm5lY3Rpb25SZWZQdHI8
V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBtX2xlZ2FjeVBhbm5lck5vZGU7Ci0KICAgICAvLyBUaGlz
IHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRCdWZmZXIoKSB3aGljaCBjYW4gY2F1c2Ug
ZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAgICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vz
c0xvY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCmluZGV4IDNlY2NhYjliZTZmOTAwODkzN2Q1YjU3
NDE5ZmE0MDBiYTQzODIxMGIuLjAzYjQ3ZDcyOGFlNDBhYWFkODE3YjYwZjIzYzYyZTM3ODFlMTMx
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKQEAgLTQxLDExICs0MSw0IEBACiAgICAgYXR0cmlidXRl
IGRvdWJsZSBsb29wRW5kOwogCiAgICAgW0ltcGxlbWVudGVkQXM9c3RhcnRMYXRlcl0gdW5kZWZp
bmVkIHN0YXJ0KG9wdGlvbmFsIGRvdWJsZSB3aGVuID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWlu
T2Zmc2V0ID0gMCwgb3B0aW9uYWwgZG91YmxlIGdyYWluRHVyYXRpb24pOwotCi0gICAgLy8gRklY
TUU6IFRob3NlIGNvbnN0YW50cyBhcmUga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3
aXRoIHRoZSBwcmVmaXhlZCBBUEkgYW5kIHNob3VsZAotICAgIC8vIGJlIHJlbW92ZWQgb25jZSB3
ZSBzdG9wIHN1cHBvcnRpbmcgaXQuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJB
dWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIFtF
bmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW9dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFND
SEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRp
b10gY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgW0VuYWJsZWRC
eVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURf
U1RBVEUgPSAzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAppbmRleCBmNmI1NTkyMDY1YjM5ZjAyY2YxMmIyMzgyZWVkMjAwMjM5Mjk1
YTVmLi43ZDU2ZDBhNWZmM2M1M2U3ZWNkNjMyZmNiODY1Mzc5MTRiMTNiZmI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMDAs
MTQgKzEwMCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0NvbgogICAgIGlmIChjb250ZXh0T3B0
aW9ucy5zYW1wbGVSYXRlLmhhc1ZhbHVlKCkgJiYgIWlzU3VwcG9ydGVkU2FtcGxlUmF0ZShjb250
ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU3ludGF4RXJyb3IsICJzYW1wbGVSYXRlIGlzIG5vdCBpbiByYW5nZSJfcyB9OwogICAgIAot
ICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBBdWRpb0NvbnRleHQoZG9jdW1l
bnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpObywgY29udGV4dE9wdGlvbnMpKTsKKyAg
ICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9Db250ZXh0KGRvY3VtZW50
LCBjb250ZXh0T3B0aW9ucykpOwogICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KIAogLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRl
cmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1BdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2Vi
S2l0QXVkaW9Db250ZXh0LCBjb25zdCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9u
cykKLSAgICA6IEJhc2VBdWRpb0NvbnRleHQoZG9jdW1lbnQsIGlzTGVnYWN5V2ViS2l0QXVkaW9D
b250ZXh0LCBjb250ZXh0T3B0aW9ucykKK0F1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgY29udGV4dE9wdGlvbnMp
CisgICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3VtZW50LCBjb250ZXh0T3B0aW9ucykKICAgICAs
IG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKIHsKICAgICBjb25zdHJ1
Y3RDb21tb24oKTsKQEAgLTExOSwxNCArMTE5LDYgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRl
eHQoRG9jdW1lbnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCBpc0xlZ2EK
ICAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3Mo
KnRoaXMpOwogfQogCi0vLyBPbmx5IG5lZWRlZCBmb3IgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC4KLUF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdh
Y3lXZWJLaXRBdWRpb0NvbnRleHQgaXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4m
JiByZW5kZXJUYXJnZXQpCi0gICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3VtZW50LCBpc0xlZ2Fj
eVdlYktpdEF1ZGlvQ29udGV4dCwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSwgV1RGTW92
ZShyZW5kZXJUYXJnZXQpKQotICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwg
KnRoaXMpKQotewotICAgIGNvbnN0cnVjdENvbW1vbigpOwotfQotCiB2b2lkIEF1ZGlvQ29udGV4
dDo6Y29uc3RydWN0Q29tbW9uKCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4YzBhZTM1
ZTA3ZjYzYmI5N2I3NGE3ZTdkM2ZhZmEyNGQxNzEzMWJiLi5mMTliMTc0NjlkYjg5OWYxZDRjYzNj
Yzc0ODM5YzQyZGIxYzA2NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRE9NV2luZG93OwogCiBz
dHJ1Y3QgQXVkaW9UaW1lc3RhbXA7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9D
b250ZXh0IGZpbmFsCiAgICAgOiBwdWJsaWMgQmFzZUF1ZGlvQ29udGV4dAogICAgICwgcHVibGlj
IE1lZGlhUHJvZHVjZXIKICAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKQEAgLTg5
LDggKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVz
dHJpY3Rpb247IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1
bWVudCYsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCBjb25zdCBBdWRpb0NvbnRleHRPcHRp
b25zJiA9IHsgfSk7Ci0gICAgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgSXNMZWdhY3lXZWJLaXRB
dWRpb0NvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUs
IFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpOworICAgIGV4cGxpY2l0IEF1ZGlv
Q29udGV4dChEb2N1bWVudCYsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKIAog
ICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKIApAQCAtMTA3LDI0ICsxMDYsMjQgQEAgcHJp
dmF0ZToKICAgICBib29sIHdpbGxQYXVzZVBsYXliYWNrKCk7CiAKICAgICAvLyBNZWRpYVByb2R1
Y2VyCi0gICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgZmluYWw7CiAKICAgICAv
LyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQotICAgIHZvaWQgbWF5
UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3Vz
cGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29t
bWFuZEFyZ3VtZW50Jikgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVC
YWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJy
dXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9CisgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAg
ICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2
b2lkIHN1c3BlbmRQbGF5YmFjaygpIGZpbmFsOworICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQorICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dy
b3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlv
blR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBjYW5Qcm9kdWNl
QXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc1N1c3BlbmRl
ZCgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhU2Vzc2lvbkdyb3VwSWRlbnRpZmllciBtZWRpYVNl
c3Npb25Hcm91cElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci4KLSAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBvdmVycmlkZTsK
KyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBmaW5hbDsKIAogICAgIC8vIFZpc2li
aWxpdHlDaGFuZ2VDbGllbnQKICAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0
ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgK
aW5kZXggNzJhMjNhOWE5NGZkNTYzOTNmMjE0ZTQ4ZDkyOGNkNzQ3NGFiODcwMS4uZjA1MWFjYjE4
Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9MaXN0ZW5lcihjb250
ZXh0KSk7CiAgICAgfQotICAgIHZpcnR1YWwgfkF1ZGlvTGlzdGVuZXIoKTsKKyAgICB+QXVkaW9M
aXN0ZW5lcigpOwogCiAgICAgQXVkaW9QYXJhbSYgcG9zaXRpb25YKCkgeyByZXR1cm4gbV9wb3Np
dGlvblguZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwb3NpdGlvblkoKSB7IHJldHVybiBtX3Bv
c2l0aW9uWS5nZXQoKTsgfQpAQCAtNzAsOCArNzAsNiBAQCBwdWJsaWM6CiAKICAgICBGbG9hdFBv
aW50M0QgdXBWZWN0b3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEF1ZGlv
TGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgYm9vbCBoYXNTYW1wbGVB
Y2N1cmF0ZVZhbHVlcygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkVXNlQVJhdGUoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5p
ZGwKaW5kZXggNzUzZWM4OGU2NDFhZjIxNmExY2FmNzM4MWM5OTQyODgzODZjYjg5OC4uMWI4NDJi
ZjI1MThhMDE0NDliNDJlMzFlNDZlMWNmYWEyYThiZGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCkBAIC0yOSw3ICsyOSw4IEBA
CiAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRXhwb3NlZD1XaW5kb3cKKyAg
ICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVy
ZmFjZSBBdWRpb0xpc3RlbmVyIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBw
b3NpdGlvblg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gcG9zaXRpb25ZOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDQ0
ZTYyYmQ3MjIwZTJkYzE4MzMzZDljNmM2MTRmM2FiMDBmOGFjNTcuLjIxNmY2YjdlMjIwMjliNGQx
NjI3ZDM5NTA1ZTA5MWU4Y2QzODJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJBdWRpb05v
ZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNz
Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgpAQCAtNjczLDE0ICs2NzIsNiBAQCB2b2lkIEF1ZGlvTm9kZTo6ZGVyZWYoKQog
ICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsKIH0KIAotVmFyaWFudDxSZWZQ
dHI8QmFzZUF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRpb05v
ZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpCi17Ci0gICAgYXV0byYgY29udGV4dCA9IHRoaXMtPmNv
bnRleHQoKTsKLSAgICBpZiAoY29udGV4dC5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQotICAgICAg
ICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihjb250
ZXh0KSk7Ci0gICAgcmV0dXJuIG1ha2VSZWZQdHIoY29udGV4dCk7Ci19Ci0KIHZvaWQgQXVkaW9O
b2RlOjpkZXJlZldpdGhMb2NrKCkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4
IDIyNzVjNTM3NzJmM2YyNTcwNmMyNDk1YjYwMGExYTRmYzc1MmUyYzMuLjIwNTcwYTcyMTU4NzVj
NGYwN2Q3MjU2YzMzZmRjZWMyYmI4MzhkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNDIsNyArNDIsNiBAQCBzdHJ1Y3QgQXVkaW9Ob2RlT3B0
aW9uczsKIGNsYXNzIEF1ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CiBjbGFzcyBC
YXNlQXVkaW9Db250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0OwogCiAvLyBBbiBBdWRp
b05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBoYW5kbGluZyBhdWRpbyB3aXRo
aW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50
ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRpbyBkZXN0aW5hdGlvbi4KQEAg
LTkwLDggKzg5LDYgQEAgcHVibGljOgogICAgIEJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQoKTsK
ICAgICBjb25zdCBCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAKLSAgICBWYXJp
YW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+
IGNvbnRleHRGb3JCaW5kaW5ncygpOwotCiAgICAgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGVUeXBlOyB9CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gbWFpbiB0
aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3NjI4NjgxMTQxM2VkN2Q2MDI3NGI3ODM4
NzgwZmI4OWVmMTIyNjA4Li5hMDdmMDljNTBkOTBmZTM1N2ZjNDExZWY2YjBlY2FlMTYyM2RhY2Zk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBA
IC0yNyw3ICsyNyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBFeHBvc2VkPVdpbmRv
dwogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDogRXZlbnRUYXJnZXQgewotICAgIFtJbXBsZW1lbnRl
ZEFzPWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIChCYXNlQXVkaW9Db250
ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgQmFzZUF1ZGlvQ29udGV4dCBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCBmOWUzMjRlMjEyNjdhMDE0OGRiN2I3NmM5YmM3N2IwZmU2
MDA4YmExLi5iYjM5NWUzOGIzNGE2ZDg2YmY5NjljNTgxMTYyNjQwNWJiNmUyZDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1ZGUgIkF1ZGlvU3Vt
bWluZ0p1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvblJhdGUuaCIKLSNpbmNsdWRlICJX
ZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJy
YXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9D
b250ZXh0LmNwcAppbmRleCAyNjc3NTQwZTQzMjU4YjRmMThhMGQ0MWM1MmRiYzk0MmM2ZjEyZTVm
Li5lMWY0YjA0ZWYyM2M2OWNiOThjNzQwMmEyZmYyMTFiNWE1NDlhNDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKQEAg
LTgwLDcgKzgwLDYgQEAKICNpbmNsdWRlICJTdGVyZW9QYW5uZXJOb2RlLmgiCiAjaW5jbHVkZSAi
U3RlcmVvUGFubmVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCkBAIC0xMzIsNyArMTMx
LDcgQEAgc3RhdGljIEhhc2hTZXQ8dWludDY0X3Q+JiBsaXZlQXVkaW9Db250ZXh0cygpCiB9CiAK
IC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgotQmFz
ZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVn
YWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCBjb25zdCBB
dWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKK0Jhc2VBdWRpb0NvbnRleHQ6OkJh
c2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdWRpb0NvbnRleHRPcHRp
b25zJiBjb250ZXh0T3B0aW9ucykKICAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigp
KQpAQCAtMTQxLDcgKzE0MCw3IEBAIEJhc2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQo
RG9jdW1lbnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4CiAgICAgLCBtX2Nv
bnRleHRJRChnZW5lcmF0ZUF1ZGlvQ29udGV4dElEKCkpCiAgICAgLCBtX3dvcmtsZXQoQXVkaW9X
b3JrbGV0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9kZXN0aW5hdGlvbk5vZGUobWFrZVVuaXF1
ZVJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+KCp0aGlzLCBjb250ZXh0T3B0aW9ucy5z
YW1wbGVSYXRlKSkKLSAgICAsIG1fbGlzdGVuZXIoaXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQg
PT0gSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6OlllcyA/IFJlZjxBdWRpb0xpc3RlbmVyPihX
ZWJLaXRBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKSA6IEF1ZGlvTGlzdGVuZXI6OmNyZWF0
ZSgqdGhpcykpCisgICAgLCBtX2xpc3RlbmVyKEF1ZGlvTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgbGl2ZUF1ZGlvQ29udGV4dHMoKS5hZGQobV9jb250ZXh0SUQpOwogCkBAIC0xNjMs
NyArMTYyLDcgQEAgQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYg
ZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXgKIH0KIAogLy8gQ29uc3RydWN0b3Ig
Zm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgotQmFzZUF1ZGlvQ29udGV4dDo6
QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9D
b250ZXh0IGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0
KQorQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIFJlZlB0cjxBdWRp
b0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQp
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dn
ZXIoKSkKQEAgLTE3NCw3ICsxNzMsNyBAQCBCYXNlQXVkaW9Db250ZXh0OjpCYXNlQXVkaW9Db250
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleAogICAgICwg
bV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX3JlbmRlclRhcmdldChXVEZNb3ZlKHJl
bmRlclRhcmdldCkpCiAgICAgLCBtX2Rlc3RpbmF0aW9uTm9kZShtYWtlVW5pcXVlUmVmPE9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4oKnRoaXMsIG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJh
dGUsIG1fcmVuZGVyVGFyZ2V0LmNvcHlSZWYoKSkpCi0gICAgLCBtX2xpc3RlbmVyKGlzTGVnYWN5
V2ViS2l0QXVkaW9Db250ZXh0ID09IElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpZZXMgPyBS
ZWY8QXVkaW9MaXN0ZW5lcj4oV2ViS2l0QXVkaW9MaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKSkgOiBB
dWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9saXN0ZW5lcihBdWRpb0xpc3Rl
bmVyOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGxpdmVBdWRpb0NvbnRleHRzKCkuYWRkKG1fY29u
dGV4dElEKTsKICAgICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCA1OGJkY2U5ZGM2
ZWFiNTEyNTg2ZWYxM2U3NjEwMWJlYWYxZTUyMzFjLi5hZTBmNDkxMTJhMzc1MTc5MzIzNWNhNmY4
ZTBjNDQzNDczZjRiYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE1LDcgKzExNSw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKICAgICAKICAgICBib29sIGlzT2ZmbGluZUNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
QXVkaW9EZXN0aW5hdGlvbk5vZGUmIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUuZ2V0KCk7IH0KICAgICBjb25zdCBBdWRpb0Rlc3RpbmF0aW9uTm9kZSYgZGVzdGluYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQpAQCAtMjk3LDkg
KzI5Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEF1ZGlv
UGFyYW1EZXNjcmlwdG9yPj4mIHBhcmFtZXRlckRlc2NyaXB0b3JNYXAoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlckRlc2NyaXB0b3JNYXA7IH0KIAogcHJvdGVjdGVkOgotICAgIGVudW0gY2xh
c3MgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQgOiBib29sIHsgTm8sIFllcyB9OwotICAgIGV4
cGxpY2l0IEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29u
dGV4dCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgPSB7IH0pOwotICAgIEJhc2VBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJl
bmRlclRhcmdldCk7CisgICAgZXhwbGljaXQgQmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYsIGNv
bnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKKyAgICBCYXNlQXVkaW9Db250ZXh0KERv
Y3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVm
UHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAgICAgCiAgICAgdm9pZCBjbGVhclBl
bmRpbmdBY3Rpdml0eSgpOwogICAgIHZvaWQgc2V0UGVuZGluZ0FjdGl2aXR5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmNwcAppbmRleCA1MWI2YjJjMDk4YzQwNDkyYmZhYzc5MTVhM2QwMzA1YzhjNmYzOGY0
Li40YWE5YWQ0Y2YxNDgxOGJkY2I5YmI2Njk5ZmU4ZDhiOTY4M2IyOTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIK
ICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nv
ci5oIgotI2luY2x1ZGUgIldlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiAvLyBTZXQgb3V0cHV0IHRvIHN0ZXJlbyBieSBk
ZWZhdWx0LgpAQCAtNDMsNyArNDIsNiBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGRlZmF1
bHROdW1iZXJPZk91dHB1dENoYW5uZWxzID0gMjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOwotV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOwogCiBF
eGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEeW5hbWljc0Nv
bXByZXNzb3JPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCAyZGUwN2Rm
OWZlMjE4NjFlZTcyOWJhZDJlOWM0N2RlMTE0MzA4OGQyLi5iM2UwMjBkYmQ3MzIzMWU0OTRhYzg5
MThmOWJjNDI0NWRjNTIzYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaApAQCAtMzQsMTggKzM0LDE4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwogCi1jbGFz
cyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CitjbGFzcyBEeW5h
bWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1YmxpYzoKICAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBjcmVhdGUoQmFz
ZUF1ZGlvQ29udGV4dCYsIGNvbnN0IER5bmFtaWNzQ29tcHJlc3Nvck9wdGlvbnMmID0geyB9KTsK
IAotICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoKTsKKyAgICB+RHluYW1pY3ND
b21wcmVzc29yTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0gICAgdm9pZCBwcm9jZXNzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHByb2Nlc3NPbmx5QXVkaW9QYXJhbXMo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRp
YWxpemUoKSBmaW5hbDsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIGZpbmFsOwogCiAgICAgLy8g
U3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAgICAgQXVkaW9QYXJhbSYgdGhy
ZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0KQEAgLTY1LDggKzY1LDggQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWR1Y3Rpb24oZmxvYXQgcmVkdWN0aW9u
KSB7IG1fcmVkdWN0aW9uID0gcmVkdWN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgZG91YmxlIHRh
aWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWw7CisgICAgZG91Ymxl
IGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCByZXF1aXJlc1RhaWxQcm9jZXNz
aW5nKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVz
c29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCmluZGV4IDRlMDZiZDFhODhh
M2VlNWY4M2U5YjMxZjRmODc4N2FjZWFmODU5Y2EuLjg0ZDE2YTE1NWY2OTI3NmRiZGQ0OGI3NWVi
NzA5YWQ5NWU5MjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2ZmbGluZUF1ZGlvQ29u
dGV4dCk7CiAKIGlubGluZSBPZmZsaW5lQXVkaW9Db250ZXh0OjpPZmZsaW5lQXVkaW9Db250ZXh0
KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQg
bGVuZ3RoLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFy
Z2V0KQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRp
b0NvbnRleHQ6Ok5vLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRl
clRhcmdldCkpCisgICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5u
ZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCiAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmgKaW5kZXggYWIxNDY2N2QwNjhkYzAxMWFhMDJiZTFkMGVhYmE4YzhhOTUwMmQ0
OS4uNzQxNDE0N2FmMGM1ZmEzYWVhYjZiMDIzNjFhODYzZTI5MDM5OWJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtMzUsMTQg
KzM1LDE0IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIAogLy8gT3NjaWxsYXRvck5vZGUgaXMgYW4g
YXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4KIAotY2xhc3MgT3NjaWxsYXRv
ck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKK2NsYXNzIE9zY2lsbGF0
b3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChPc2NpbGxhdG9yTm9kZSk7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0
JiwgY29uc3QgT3NjaWxsYXRvck9wdGlvbnMmID0geyB9KTsKIAogICAgIHZpcnR1YWwgfk9zY2ls
bGF0b3JOb2RlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk9zY2lsbGF0b3JOb2RlIjsgfQorICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiT3NjaWxsYXRvck5v
ZGUiOyB9CiAKICAgICBPc2NpbGxhdG9yVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHlwZShPc2NpbGxhdG9yVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCmlu
ZGV4IGU0NWZiNzc1ZjBmOTA0MDc5NjYyOGRhNjUxYjNiNGQ5MmQ3MWQyY2UuLjJkMDI5ZmY4MzUy
ZjNjNjE0NDVmNzRjMmNjMDlmYjdkMDExYTBhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCkBAIC0zNywxMSArMzcsNCBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGRldHVuZTsgLy8gaW4gQ2VudHMKIAog
ICAgIHVuZGVmaW5lZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlIHdhdmUpOwotCi0gICAg
Ly8gRklYTUU6IFRob3NlIGxlZ2FjeSBwbGF5YmFjayBzdGF0ZSBjb25zdGFudHMgYXJlIGtlcHQg
Zm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAgICAvLyBwcmVmaXhlZCBBUEkg
YW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBzdXBwb3J0aW5nIHRoZSBwcmVmaXhl
ZCBBUEkuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5z
aWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIFtFbmFibGVkQnlTZXR0aW5n
PVByZWZpeGVkV2ViQXVkaW9dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9
IDE7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5zaWdu
ZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4
ZWRXZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURfU1RBVEUgPSAzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
NDk3MTkyZjY3OGIwNDU2MGJiYThjYTdiMzk4YWQyNzlhZjA1ZmNjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdl
YktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJL
aXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBBdWRpb1BhcmFtJiBnYWluKCkgY29u
c3QgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
S2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQpCi0gICAg
ICAgIDogQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpCi0gICAgICAgICwgbV9nYWluKEF1
ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiJfcywgMS4wLCAwLjAsIDEuMCwgQXV0b21h
dGlvblJhdGU6OktSYXRlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBzaG91bGRUaHJvd09u
QXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZ2Fpbigp
LnZhbHVlKCk7IH0KLQotICAgIFJlZjxBdWRpb1BhcmFtPiBtX2dhaW47Ci19OwotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVy
U291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIy
OWM1MjgzOTRjOTJhNGI5ZGE2MzlkOGNhOWQ1NTAyN2VmNThhNWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gQSBjYWNoZWQgKG5vbi1zdHJlYW1lZCksIG1lbW9y
eS1yZXNpZGVudCBhdWRpbyBzb3VyY2UKLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAotICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Ci1dIGludGVyZmFjZSBXZWJLaXRB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgewotICAgIGF0
dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwotCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
VU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNDSEVEVUxF
RF9TVEFURSA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7
Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURfU1RBVEUgPSAzOwotCi0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBsYXliYWNrU3RhdGU7Ci0KLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBnYWluOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb1BhcmFtIHBsYXliYWNrUmF0ZTsKLQotICAgIGF0dHJpYnV0ZSBib29sZWFuIGxvb3A7Ci0K
LSAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKLSAgICBhdHRyaWJ1dGUgZG91YmxlIGxv
b3BFbmQ7Ci0KLSAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQo
b3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAw
LCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NDI2ODk4ZDg3NDVjYThhMDk4ZWQwMzBjOWNmZmE2
ODExZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4
dC5oIgotCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJQZXJp
b2RpY1dhdmUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKLSNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKLSNpbmNsdWRlICJXZWJLaXREeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0T3NjaWxsYXRvck5vZGUuaCIKLSNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgiCi0j
aW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVklERU8pCi0j
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5oIgotI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291cmNlT3B0aW9ucy5o
IgotI2VuZGlmCi0KLWNvbnN0ZXhwciB1bnNpZ25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0
MDk2OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJLaXRBdWRpb0NvbnRleHQpOwotCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgp
ICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlh
LCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQot
Ci0jaWYgT1MoV0lORE9XUykKLS8vIERvbid0IGFsbG93IG1vcmUgdGhhbiB0aGlzIG51bWJlciBv
ZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRvIGhhcmR3YXJlLgotY29uc3Rl
eHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OwotI2VuZGlmCi0KLUV4Y2VwdGlv
bk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBP
UyhXSU5ET1dTKQotICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJl
Q29udGV4dHMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3Ig
fTsKLSNlbmRpZgotCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IFdlYktp
dEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOwotICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVl
ZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKLX0KLQotLy8gQ29uc3RydWN0b3IgZm9y
IHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1XZWJLaXRBdWRpb0NvbnRleHQ6Oldl
YktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBBdWRpb0NvbnRleHQo
ZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpZZXMpCi17Ci19Ci0KLS8vIENv
bnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJlbmRlcmluZy4KLVdlYktpdEF1
ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQg
c2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IEF1ZGlv
Q29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6OlllcywgcmVuZGVy
VGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCksIHNhbXBsZVJhdGUsIFdURk1vdmUocmVuZGVyVGFy
Z2V0KSkKLXsKLX0KLQotY29uc3QgY2hhciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7Ci19
Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLUV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJj
ZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCB7ICZtZWRpYUVsZW1lbnQg
fSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotRXhjZXB0aW9u
T3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0pCi17Ci0gICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHsg
Jm1lZGlhU3RyZWFtIH0pOwotfQotCi1FeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0
aW5hdGlvbigpCi17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLSNlbmRpZgotCi1FeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVk
aW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXZWJLaXRQYW5uZXIoKQot
ewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGlmIChpc1N0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIHJldHVy
biBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9y
PFJlZjxXZWJLaXRPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2Vi
S2l0T3NjaWxsYXRvcigpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGlzU3RvcHBlZCgpKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGxhenlJbml0aWFs
aXplKCk7Ci0KLSAgICByZXR1cm4gV2ViS2l0T3NjaWxsYXRvck5vZGU6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6
OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1h
Z2luYXJ5KQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgCi0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwotCi0gICAgaWYgKHJlYWwubGVuZ3Ro
KCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IHJlYWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggfHwgIXJlYWwubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bmRleFNpemVFcnJvciB9OwotICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIFBlcmlv
ZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1hZ2luYXJ5KTsKLX0KLQotRXhj
ZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlKCkKLXsKLSAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwotCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaXNTdG9w
cGVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owot
Ci0gICAgbGF6eUluaXRpYWxpemUoKTsKLQotICAgIHJldHVybiBXZWJLaXRBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXREeW5h
bWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXZWJLaXREeW5h
bWljc0NvbXByZXNzb3IoKQotewotICAgIGlmIChpc1N0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAgICBsYXp5SW5pdGlhbGl6ZSgp
OwotCi0gICAgcmV0dXJuIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSgqdGhp
cyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTGVnYWN5QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlciwgYm9vbCBtaXhU
b01vbm8pCi17Ci0gICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9t
QXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgo
KSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOwotICAgIGlmICghYXVkaW9CdWZmZXIpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwotICAgIHJldHVybiBhdWRpb0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xv
c2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKLXsKLSAgICBpZiAoaXNPZmZs
aW5lQ29udGV4dCgpIHx8IGlzU3RvcHBlZCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChzdGF0
ZSgpID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZN
b3ZlKHByb21pc2UpKTsKLQotICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICBkZXN0aW5hdGlv
bigpLmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAg
ICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Ci0gICAgICAgIHVuaW5pdGlhbGl6ZSgpOwotICAg
IH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZmM5MzZhNDhm
N2VlZTk5NWU5Y2U1YWNmMTNhYjcxZjNmZDQzNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEF1ZGlvQnVmZmVyOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFFbGVtZW50Owot
Y2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwotY2xhc3MgTWVkaWFTdHJlYW07Ci1j
bGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOwotY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU7Ci1jbGFzcyBQZXJpb2RpY1dhdmU7Ci1jbGFzcyBXZWJLaXRBdWRpb0J1
ZmZlclNvdXJjZU5vZGU7Ci1jbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGU7Ci1jbGFzcyBXZWJL
aXREeW5hbWljc0NvbXByZXNzb3JOb2RlOwotY2xhc3MgV2ViS2l0T3NjaWxsYXRvck5vZGU7Ci0K
LS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkg
YW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCi0vLyBGb3IgdGhyZWFkIHNh
ZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFz
IGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgotCi1jbGFzcyBXZWJLaXRBdWRp
b0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0Ci17Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhbiBXZWJL
aXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1l
bnQmKTsKLQotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwotCi0g
ICAgV2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKSB7IHJldHVybiBkb3duY2FzdDxXZWJL
aXRBdWRpb0xpc3RlbmVyPihBdWRpb0NvbnRleHQ6Omxpc3RlbmVyKCkpOyB9Ci0KLSAgICAvLyBU
aGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IChmcm9tIEphdmFTY3JpcHQpLgotI2lmIEVOQUJMRShWSURFTykKLSAgICBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNl
KEhUTUxNZWRpYUVsZW1lbnQmKTsKLSNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0g
ICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVk
aWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24o
KTsKLSNlbmRpZgotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+PiBj
cmVhdGVXZWJLaXRQYW5uZXIoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0T3NjaWxsYXRv
ck5vZGU+PiBjcmVhdGVXZWJLaXRPc2NpbGxhdG9yKCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFBl
cmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0
MzJBcnJheSYgaW1hZ2luYXJ5KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlPj4gY3JlYXRlV2ViS2l0QnVmZmVyU291cmNlKCk7Ci0gICAgRXhjZXB0aW9u
T3I8UmVmPFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBjcmVhdGVXZWJLaXREeW5hbWlj
c0NvbXByZXNzb3IoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVM
ZWdhY3lCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7Ci0KLXByb3RlY3RlZDoK
LSAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKLSAgICBXZWJLaXRB
dWRpb0NvbnRleHQoRG9jdW1lbnQmLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWY8QXVkaW9CdWZmZXI+
JiYgcmVuZGVyVGFyZ2V0KTsKLQotcHJpdmF0ZToKLSAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJ
LgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
LQotICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9Ci19OwotCi19IC8vIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQu
aXNXZWJLaXRBdWRpb0NvbnRleHQoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmNkNTg3ZmQwMTNiMWQx
N2M1M2YxMjc5Y2E2ZjM2ZTY1ZGVjMDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
WwotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbyZQcmVmaXhlZFdlYkF1ZGlvLAotICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQgOiBF
dmVudFRhcmdldCB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBjb25zdHJ1Y3RvcigpOwotCi0g
ICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRp
b24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJlLgotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlvbjsKLQotICAgIC8vIEFsbCBz
Y2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOwotCi0g
ICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJh
dGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
cmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwotCi0gICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVs
YXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgV2ViS2l0QXVk
aW9MaXN0ZW5lciBsaXN0ZW5lcjsKLQotICAgIFtJbXBsZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJp
bmddIFByb21pc2U8dW5kZWZpbmVkPiBzdXNwZW5kKCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9cmVz
dW1lUmVuZGVyaW5nXSBQcm9taXNlPHVuZGVmaW5lZD4gcmVzdW1lKCk7Ci0gICAgUHJvbWlzZTx1
bmRlZmluZWQ+IGNsb3NlKCk7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0
U3RhdGUgc3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdlOwot
Ci0gICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVu
dGx5IHBsYXlpbmcuCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZl
U291cmNlQ291bnQ7Ci0KLSAgICBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlTGVnYWN5
QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBib29s
ZWFuIG1peFRvTW9ubyk7Ci0KLSAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRl
Y29kaW5nLgotICAgIHVuZGVmaW5lZCBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIgYXVkaW9E
YXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEF1ZGlv
QnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwotCi0gICAgLy8gU291cmNlcwotICAgIFtJ
bXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdEJ1ZmZlclNvdXJjZV0gV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwotCi0gICAgW0NvbmRpdGlvbmFsPVZJREVP
XSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhU
TUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKLQotICAgIFtDb25kaXRpb25hbD1NRURJQV9T
VFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNl
KE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
XSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGlu
YXRpb24oKTsKLQotICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKLSAgICBHYWluTm9kZSBjcmVhdGVH
YWluKCk7Ci0gICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBk
b3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0gICAgQmlxdWFkRmlsdGVyTm9kZSBjcmVhdGVCaXF1
YWRGaWx0ZXIoKTsKLSAgICBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hhcGVyKCk7Ci0gICAg
W0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0UGFubmVyXSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUg
Y3JlYXRlUGFubmVyKCk7Ci0gICAgQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKLSAg
ICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3JdIFdlYktpdER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Ci0gICAgQW5h
bHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVh
dGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKLSAgICBbSW1wbGVt
ZW50ZWRBcz1jcmVhdGVXZWJLaXRPc2NpbGxhdG9yXSBXZWJLaXRPc2NpbGxhdG9yTm9kZSBjcmVh
dGVPc2NpbGxhdG9yKCk7Ci0gICAgUGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9h
dDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwotCi0gICAgLy8gQ2hhbm5lbCBzcGxp
dHRpbmcgYW5kIG1lcmdpbmcKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxT
cGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOwotICAg
IENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwotCi0gICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKLSAg
ICAvLyB1bmRlZmluZWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNv
bXBsZXRlOwotICAgIHVuZGVmaW5lZCBzdGFydFJlbmRlcmluZygpOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjE2NWNmZDJmYjUzOTk4YzJiOTBmY2QwM2Vh
MGM0Mzk5ZTUzMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXVkaW9MaXN0
ZW5lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdEF1ZGlvTGlzdGVu
ZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9MaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJLaXRBdWRpb0xpc3RlbmVyPiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvTGlzdGVuZXIo
Y29udGV4dCkpOwotICAgIH0KLQotICAgIC8vIFZlbG9jaXR5Ci0gICAgdm9pZCBzZXRWZWxvY2l0
eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IHNldFZlbG9jaXR5KEZsb2F0UG9pbnQzRCh4
LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmVs
b2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAgY29uc3QgRmxvYXRQb2ludDNE
JiB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KLQotICAgIC8vIERvcHBs
ZXIgZmFjdG9yCi0gICAgdm9pZCBzZXREb3BwbGVyRmFjdG9yKGRvdWJsZSBkb3BwbGVyRmFjdG9y
KSB7IG1fZG9wcGxlckZhY3RvciA9IGRvcHBsZXJGYWN0b3I7IH0KLSAgICBkb3VibGUgZG9wcGxl
ckZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9wcGxlckZhY3RvcjsgfQotCi0gICAgLy8gU3Bl
ZWQgb2Ygc291bmQKLSAgICB2b2lkIHNldFNwZWVkT2ZTb3VuZChkb3VibGUgc3BlZWRPZlNvdW5k
KSB7IG1fc3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kOyB9Ci0gICAgZG91YmxlIHNwZWVkT2ZT
b3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWRPZlNvdW5kOyB9Ci0KLXByaXZhdGU6Ci0gICAg
V2ViS2l0QXVkaW9MaXN0ZW5lcihCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgICAgICA6
IEF1ZGlvTGlzdGVuZXIoY29udGV4dCkKLSAgICAgICAgLCBtX3ZlbG9jaXR5KDAsIDAsIDApCi0g
ICAgeyB9Ci0KLSAgICBib29sIGlzV2ViS2l0QXVkaW9MaXN0ZW5lcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OwotICAgIGRvdWJs
ZSBtX2RvcHBsZXJGYWN0b3IgeyAxLjAgfTsKLSAgICBkb3VibGUgbV9zcGVlZE9mU291bmQgeyAz
NDMuMyB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvTGlzdGVuZXIpCi0gICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXImIGxpc3RlbmVyKSB7IHJldHVy
biBsaXN0ZW5lci5pc1dlYktpdEF1ZGlvTGlzdGVuZXIoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4
NjQyZDE0M2VlODFlNjRjZTdjY2M0ZmQ1NTQyZGNkMThmZGYxYjkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdl
YkF1ZGlvLAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgV2ViS2l0
QXVkaW9MaXN0ZW5lciB7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBkb3BwbGVy
RmFjdG9yOyAgLy8gc2FtZSBhcyBPcGVuQUwgKGRlZmF1bHQgMS4wKQotICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZmxvYXQgc3BlZWRPZlNvdW5kOyAgIC8vIGluIG1ldGVycyAvIHNlY29uZCAo
ZGVmYXVsdCAzNDMuMykKLQotICAgIHVuZGVmaW5lZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKLSAg
ICB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJp
Y3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeiwgdW5yZXN0cmljdGVkIGZsb2F0IHhV
cCwgdW5yZXN0cmljdGVkIGZsb2F0IHlVcCwgdW5yZXN0cmljdGVkIGZsb2F0IHpVcCk7Ci0gICAg
dW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyNDQwYTk0ZWZjOTFkMjAyZThjNDkzN2ZkZjc3
NzU5N2E2ODE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKLQotI2lmIEVO
QUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKLSNp
bmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2luY2x1ZGUg
IkF1ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCi0jaW5jbHVk
ZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFJURlBhbm5lci5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7
Ci0KLXN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQotewotICAgIGlmIChzdGQ6OmlzbmFu
KHgpIHx8IHN0ZDo6aXNpbmYoeCkpCi0gICAgICAgIHggPSAwLjA7Ci19Ci0KLVdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCkKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBOb2RlVHlwZVBhbm5lcikKLXsKLSAgICBp
bml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxDb3VudE1vZGU6OkNsYW1wZWRN
YXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwotCi0gICAgLy8gTG9hZCB0aGUg
SFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNj
cmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCi0gICAgbV9ocnRm
RGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hy
b25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKLQotICAgIGFkZElucHV0
KCk7Ci0gICAgYWRkT3V0cHV0KDIpOwotCi0gICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgw
LCAwLCAwKTsKLSAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOwotICAg
IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Ci0KLSAgICBpbml0aWFsaXplKCk7
Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCi17
Ci0gICAgdW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpw
dWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0gICAgLy8gV2Ugb3ZlcnJpZGUg
cHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNo
IGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgotICAg
IC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBl
eGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4K
LSAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgp
KSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3Vu
dCgpOwotCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5l
Y3RlZCB0byB1cy4KLSAgICAgICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7Ci0g
ICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9k
ZXMpOwotICAgIH0KLQotICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3Mp
OwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVz
KCk7Ci0KLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVk
KCkgfHwgIW1fcGFubmVyLmdldCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCkt
PmJ1cygpOwotICAgIGlmICghc291cmNlKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJl
IGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4g
cGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgotICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5u
aW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkg
ewotICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKLSAgICAgICAgICAg
IG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgYXVkaW8gdGhyZWFk
IGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHRyeUhvbGRMb2NrKCkgaW5zdGVh
ZC4KLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOwotICAgIGlm
ICghbG9ja2VyKSB7Ci0gICAgICAgIC8vIFRvbyBiYWQgLSB0cnlIb2xkTG9jaygpIGZhaWxlZC4g
V2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRoZSBwYW5uZXIuCi0gICAgICAg
IGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBB
cHBseSB0aGUgcGFubmluZyBlZmZlY3QuCi0gICAgZG91YmxlIGF6aW11dGg7Ci0gICAgZG91Ymxl
IGVsZXZhdGlvbjsKLSAgICBnZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAmZWxldmF0aW9u
KTsKLSAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBkZXN0aW5h
dGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIC8vIEdldCB0aGUgZGlzdGFuY2UgYW5kIGNv
bmUgZ2Fpbi4KLSAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2FpbigpOwotCi0g
ICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZS4KLSAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWlu
RnJvbSgqZGVzdGluYXRpb24sIHRvdGFsR2Fpbik7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoaXNJbml0aWFsaXplZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVs
LCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKLQotICAgIEF1ZGlv
Tm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5p
bml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9wYW5uZXIgPSBudWxscHRyOwotICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXpl
KCk7Ci19Ci0KLVdlYktpdEF1ZGlvTGlzdGVuZXImIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bGlz
dGVuZXIoKQotewotICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVuZXIoKTsKLX0KLQotdm9pZCBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1v
ZGVsKQotewotICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9k
ZWwpIHsKLSAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7Ci0KLSAgICAgICAgbV9w
YW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFz
ZUxvYWRlci5nZXQoKSk7Ci0gICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7Ci0gICAgfQot
fQotCi1EaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlTW9k
ZWwoKSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktpdEF1ZGlvUGFubmVyTm9k
ZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Ci19Ci0KLXZvaWQgV2ViS2l0QXVk
aW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQot
ewotICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOwotfQotCi12b2lk
IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6
aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQotewotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
Y2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSksIHNvIHdlIG9ubHkgcmUt
Y2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0KLSAgICBkb3VibGUgYXppbXV0
aCA9IDAuMDsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3Rvcgot
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS5wb3NpdGlvbigp
OwotICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5l
clBvc2l0aW9uOwotCi0gICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7Ci0gICAgICAg
IC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2Ft
ZSBwb2ludAotICAgICAgICAqb3V0QXppbXV0aCA9IDAuMDsKLSAgICAgICAgKm91dEVsZXZhdGlv
biA9IDAuMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNvdXJjZUxpc3RlbmVyLm5v
cm1hbGl6ZSgpOwotCi0gICAgLy8gQWxpZ24gYXhlcwotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5l
ckZyb250ID0gbGlzdGVuZXIoKS5vcmllbnRhdGlvbigpOwotICAgIEZsb2F0UG9pbnQzRCBsaXN0
ZW5lclVwID0gbGlzdGVuZXIoKS51cFZlY3RvcigpOwotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5l
clJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVwKTsKLSAgICBsaXN0ZW5lclJp
Z2h0Lm5vcm1hbGl6ZSgpOwotCi0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0g
bGlzdGVuZXJGcm9udDsKLSAgICBsaXN0ZW5lckZyb250Tm9ybS5ub3JtYWxpemUoKTsKLQotICAg
IEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0p
OwotCi0gICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlzdGVuZXIuZG90KHVwKTsKLQot
ICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJv
amVjdGlvbiAqIHVwOwotICAgIHByb2plY3RlZFNvdXJjZS5ub3JtYWxpemUoKTsKLQotICAgIGF6
aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkg
LyBwaURvdWJsZTsKLSAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVl
cwotCi0gICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQgdGhlIGxpc3RlbmVyCi0gICAg
ZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0p
OwotICAgIGlmIChmcm9udEJhY2sgPCAwLjApCi0gICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6
aW11dGg7Ci0KLSAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90
ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCi0gICAgaWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6
aW11dGggPD0gMjcwLjApKQotICAgICAgICBhemltdXRoID0gOTAuMCAtIGF6aW11dGg7Ci0gICAg
ZWxzZQotICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRoOwotCi0gICAgLy8gRWxldmF0
aW9uCi0gICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlz
dGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2
b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICBpZiAoZWxldmF0aW9uID4gOTAuMCkKLSAgICAgICAg
ZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247Ci0gICAgZWxzZSBpZiAoZWxldmF0aW9uIDwg
LTkwLjApCi0gICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVsZXZhdGlvbjsKLQotICAgIGlm
IChvdXRBemltdXRoKQotICAgICAgICAqb3V0QXppbXV0aCA9IGF6aW11dGg7Ci0gICAgaWYgKG91
dEVsZXZhdGlvbikKLSAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVsZXZhdGlvbjsKLX0KLQotZmxv
YXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCi17Ci0gICAgZG91YmxlIGRv
cHBsZXJTaGlmdCA9IDEuMDsKLQotICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSBmb3IgY2FzZSB3aGVu
IG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdlZC4uLgotICAgIGRvdWJsZSBk
b3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS5kb3BwbGVyRmFjdG9yKCk7Ci0KLSAgICBpZiAoZG9w
cGxlckZhY3RvciA+IDAuMCkgewotICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVu
ZXIoKS5zcGVlZE9mU291bmQoKTsKLQotICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHNvdXJj
ZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0
ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS52ZWxvY2l0eSgpOwotCi0gICAgICAgIC8vIERvbid0
IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2ZSBubyB2ZWxvY2l0eQotICAg
ICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZlbG9jaXR5LmlzWmVybygpOwot
ICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlzdGVuZXJWZWxvY2l0eS5pc1pl
cm8oKTsKLQotICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxv
Y2l0eSkgewotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIg
dmVjdG9yCi0gICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3Rl
bmVyKCkucG9zaXRpb24oKTsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3Rl
bmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247Ci0KLSAgICAgICAgICAgIGRvdWJs
ZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7Ci0K
LSAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVy
LmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOwotICAgICAg
ICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3Vy
Y2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKLQotICAgICAgICAgICAgbGlz
dGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsKLSAgICAgICAgICAgIHNvdXJj
ZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsKLQotICAgICAgICAgICAgZG91YmxlIHNj
YWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7Ci0gICAgICAg
ICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNj
YWxlZFNwZWVkT2ZTb3VuZCk7Ci0gICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjpt
aW4oc291cmNlUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKLQotICAgICAgICAgICAg
ZG9wcGxlclNoaWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQ
cm9qZWN0aW9uKSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVj
dGlvbikpOwotICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxl
Z2FsIHZhbHVlcwotCi0gICAgICAgICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8g
NCBvY3RhdmVzIHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KLSAgICAgICAgICAgIGlmIChkb3BwbGVy
U2hpZnQgPiAxNi4wKQotICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkKLSAgICAgICAgICAgICAgICBk
b3BwbGVyU2hpZnQgPSAwLjEyNTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oZG9wcGxlclNoaWZ0KTsKLX0KLQotZmxvYXQgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKLXsKLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQ
b3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICBGbG9hdFBvaW50M0Qgc291cmNl
UG9zaXRpb24gPSBwb3NpdGlvbigpOwotCi0gICAgZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBz
b3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRpb24pOwotICAgIGRvdWJsZSBk
aXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7Ci0K
LSAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGluZyBjb25lR2FpbgotICAgIGRv
dWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBtX29yaWVu
dGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKLQotICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdh
aW4gKiBjb25lR2Fpbik7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3RpZnlB
dWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1ZGlv
Tm9kZSo+JiB2aXNpdGVkTm9kZXMpCi17Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIGlmICghbm9k
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlz
IGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNv
IHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgotICAg
IGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKLSAg
ICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnBy
ZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKLSAgICAgICAgYnVmZmVyU291
cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBH
byB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBB
dWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsKLQotICAgICAgICAgICAgLy8g
Rm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9va2lu
ZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2opIHsK
LSAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlucHV0
LT5yZW5kZXJpbmdPdXRwdXQoaik7Ci0gICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25uZWN0
ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZp
c2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3RlZE5v
ZGUpOwotICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShj
b25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotfQotCi1ib29sIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cmVxdWlyZXNUYWlsUHJvY2Vz
c2luZygpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhlcmUncyBubyBpbnRlcm5hbCBwYW5uZXIgbWV0
aG9kIHNldCB1cCB5ZXQsIGFzc3VtZSB3ZSByZXF1aXJlIHRhaWwKLSAgICAvLyBwcm9jZXNzaW5n
IGluIGNhc2UgdGhlIEhSVEYgcGFubmVyIGlzIHNldCBsYXRlciwgd2hpY2ggZG9lcyByZXF1aXJl
IHRhaWwKLSAgICAvLyBwcm9jZXNzaW5nLgotICAgIHJldHVybiAhbV9wYW5uZXIgfHwgbV9wYW5u
ZXItPnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5OTRiYjAyZDJkNmI3NWUwOWE0OTFhYmFhZjIxMWJmOTRkMDQw
ZmFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgotI2luY2x1ZGUg
IkF1ZGlvUGFyYW0uaCIKLSNpbmNsdWRlICJDb25lLmgiCi0jaW5jbHVkZSAiRGlzdGFuY2UuaCIK
LSNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNpbmNsdWRlICJQYW5uZXIuaCIKLSNpbmNsdWRl
ICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0xpc3RlbmVyLmgi
Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIUlRGRGF0YWJhc2VM
b2FkZXI7Ci0KLS8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFu
ZCBvbmUgb3V0cHV0LgotLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGgg
dGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCi0vLyBJdCBo
YXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVs
YXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1
ZGlvTGlzdGVuZXIuCi0vLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2Fp
biBhcyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KLS8vIEEgY29u
ZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVz
IGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cg
dGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KLQotY2xhc3MgV2ViS2l0QXVk
aW9QYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7Ci0gICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOwotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250
ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUoKTsKLQotICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRv
d25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9Ci0gICAg
Y29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KLQotICAgIC8v
IEF1ZGlvTm9kZQotICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmluaXRpYWxp
emUoKSBvdmVycmlkZTsKLQotICAgIC8vIExpc3RlbmVyCi0gICAgV2ViS2l0QXVkaW9MaXN0ZW5l
ciYgbGlzdGVuZXIoKTsKLQotICAgIC8vIFBhbm5pbmcgbW9kZWwKLSAgICBQYW5uaW5nTW9kZWxU
eXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9Ci0gICAg
dm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7Ci0KLSAgICAvLyBQb3NpdGlv
bgotICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9w
b3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQotCi0gICAgLy8gT3JpZW50YXRpb24K
LSAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0
aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6
KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KLQotICAgIC8vIFZl
bG9jaXR5Ci0gICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxv
Y2l0eTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikg
eyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9Ci0KLSAgICAvLyBEaXN0YW5j
ZSBwYXJhbWV0ZXJzCi0gICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0
OwotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7Ci0KLSAgICBk
b3VibGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNl
KCk7IH0KLSAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rp
c3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNlKTsgfQotCi0gICAgZG91Ymxl
IG1heERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9
Ci0gICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5j
ZUVmZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KLQotICAgIGRvdWJsZSByb2xs
b2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0K
LSAgICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0
YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9Ci0KLSAgICAvLyBT
b3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCi0gICAgZG91YmxlIGNvbmVJbm5lckFuZ2xl
KCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5nbGUoKTsgfQotICAgIHZvaWQg
c2V0Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFu
Z2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1
cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQotICAgIHZvaWQgc2V0Q29uZU91dGVyQW5n
bGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQot
Ci0gICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qu
b3V0ZXJHYWluKCk7IH0KLSAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7
IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9Ci0KLSAgICB2b2lkIGdldEF6aW11
dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7Ci0g
ICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKLQotICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxUaW1lKCkgOiAwOyB9Ci0g
ICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIg
PyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KLSAgICBib29sIHJlcXVpcmVzVGFpbFBy
b2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJLaXRB
dWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0Jik7Ci0KLSAgICAvLyBSZXR1cm5zIHRo
ZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgotICAgIGZsb2F0
IGRpc3RhbmNlQ29uZUdhaW4oKTsKLQotICAgIC8vIE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZlclNv
dXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBh
Ym91dCBvdXIgZXhpc3RlbmNlLgotICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRo
ZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KLSAgICB2b2lk
IG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqLCBIYXNoU2V0PEF1
ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4g
bV9wYW5uZXI7Ci0gICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5pbmdNb2RlbCB7IFBhbm5pbmdN
b2RlbFR5cGU6OkhSVEYgfTsKLQotICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOwotICAgIEZs
b2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5Owot
Ci0gICAgLy8gR2FpbgotICAgIERpc3RhbmNlRWZmZWN0IG1fZGlzdGFuY2VFZmZlY3Q7Ci0gICAg
Q29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7Ci0KLSAgICAvLyBIUlRGIERhdGFiYXNlIGxvYWRlcgot
ICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRhdGFiYXNlTG9hZGVyOwotCi0g
ICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07Ci0KLSAgICAvLyBTeW5jaHJvbml6
ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIHBh
bm5lci4KLSAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQwY2FiM2Y0ZThiZWYxZjgwNWEwOWQyNWJkZjVhMTU5MmZhNWEyZmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJf
QVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAotICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2Rl
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUg
OiBBdWRpb05vZGUgewotICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBpcyBIUlRGCi0g
ICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOwotCi0gICAgLy8gVXNl
cyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQotICAgIHVuZGVmaW5lZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7Ci0g
ICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0
ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotCi0gICAgLy8gRGlzdGFuY2UgbW9k
ZWwKLSAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKLQotICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOwotICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOwotICAgIGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7Ci0KLSAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBj
b25lCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7Ci0g
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7Ci0gICAgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGM1M2M2ODBi
MTY0MzMwYTA4MWZjMWE2Njg3YTc2NTliNmZiZTRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNz
b3JOb2RlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIHsKLSAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOwot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3Jl
YXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCkpOwotICAg
IH0KLQotICAgIEF1ZGlvUGFyYW0mIGxlZ2FjeVJlZHVjdGlvbigpIHsgcmV0dXJuIG1fbGVnYWN5
UmVkdWN0aW9uLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViS2l0RHluYW1p
Y3NDb21wcmVzc29yTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQpCi0gICAgICAgIDog
RHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0KQotICAgICAgICAsIG1fbGVnYWN5UmVkdWN0
aW9uKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicmVkdWN0aW9uIl9zLCAwLCAtMjAsIDAs
IEF1dG9tYXRpb25SYXRlOjpLUmF0ZSkpCi0gICAgewotICAgICAgICBpbml0aWFsaXplRGVmYXVs
dE5vZGVPcHRpb25zKDIsIENoYW5uZWxDb3VudE1vZGU6OkNsYW1wZWRNYXgsIENoYW5uZWxJbnRl
cnByZXRhdGlvbjo6U3BlYWtlcnMpOwotICAgIH0KLQotICAgIHZvaWQgc2V0UmVkdWN0aW9uKGZs
b2F0IHJlZHVjdGlvbikgZmluYWwKLSAgICB7Ci0gICAgICAgIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OnNldFJlZHVjdGlvbihyZWR1Y3Rpb24pOwotICAgICAgICBtX2xlZ2FjeVJlZHVjdGlvbi0+
c2V0VmFsdWUocmVkdWN0aW9uKTsKLSAgICB9Ci0KLSAgICBSZWY8QXVkaW9QYXJhbT4gbV9sZWdh
Y3lSZWR1Y3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThjMDRlMWQz
ZmM3ZDZjM2JkYmIyYWYwOTc4NmJhYTI3MDExNDk2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBFbmFi
bGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8sCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3Qs
Ci0gICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJmYWNlIFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRp
b1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb1BhcmFtIHJhdGlvOyAvLyB1bml0LWxlc3MKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9QYXJhbSBhdHRhY2s7IC8vIGluIFNlY29uZHMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9QYXJhbSByZWxlYXNlOyAvLyBpbiBTZWNvbmRzCi0gICAgW0ltcGxlbWVudGVkQXM9bGVnYWN5
UmVkdWN0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSByZWR1Y3Rpb247IC8vIGlu
IERlY2liZWxzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGEwNWYyMWRmNzliNDY1MWI0M2ExZjM3ZGEzMWE5YjVhZGU4NTA4OWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAiV2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dC5oIgotCi0jaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKLSNpbmNsdWRlICJEb2N1bWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQpOwotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVm
ZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1bWVudCwg
c2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQotewotfQotCi1XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0Ojp+V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCgpID0gZGVmYXVsdDsKLQot
RXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1w
bGVSYXRlKQotewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igd29ya2Vycy4KLSAgICBp
ZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Ci0gICAgaWYgKCFudW1iZXJPZkNoYW5uZWxzIHx8IG51bWJlck9m
Q2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlzU3VwcG9ydGVkU2FtcGxlUmF0
ZShzYW1wbGVSYXRlKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07
Ci0gICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hh
bm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAgICBpZiAoIXJlbmRlclRhcmdl
dCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07Ci0KLSAgICBhdXRv
IGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHNhbXBsZVJhdGUsIHJlbmRlclRhcmdldC5yZWxl
YXNlTm9uTnVsbCgpKSk7Ci0gICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAg
ICByZXR1cm4gYXVkaW9Db250ZXh0OwotfQotCi1jb25zdCBjaGFyKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIldl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQiOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMDcyMmQzZDM4MjlmNDk5ZGFjZWM4ZjhjY2FkODlh
YjIzNWM4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgZmluYWwgOiBwdWJsaWMgV2Vi
S2l0QXVkaW9Db250ZXh0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKLSAgICB+V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCgpOwotCi1wcml2YXRl
OgotICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBmbG9hdCBzYW1wbGVS
YXRlLCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKLQotICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YWE2NDkyODhlMGFlN2FlOTUx
MWUyOGMwZjkxNzVhYzhhNzIzN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9
UHJlZml4ZWRXZWJBdWRpbywKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0Nv
bnRleHQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgRXhwb3NlZD1XaW5kb3cKLV0g
aW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBXZWJLaXRBdWRpb0NvbnRleHQg
ewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3Rvcih1bnNp
Z25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMs
IHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0b3JOb2RlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTg2NTUwYzIzYWJmMTU0NjJlZDg3OGNiYzFkNDc5MTEz
NmJlMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE9zY2lsbGF0b3JOb2RlIGZp
bmFsIDogcHVibGljIE9zY2lsbGF0b3JOb2RlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdE9zY2lsbGF0b3JOb2RlPj4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4
dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdE9z
Y2lsbGF0b3JOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFdlYktpdFBlcmlv
ZGljV2F2ZShQZXJpb2RpY1dhdmUqIHdhdmUpCi0gICAgewotICAgICAgICBpZiAoIXdhdmUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNldFBlcmlvZGljV2F2ZSgqd2F2ZSk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYktpdE9zY2lsbGF0b3JOb2RlKFdlYktpdEF1
ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBPc2NpbGxhdG9yTm9kZShjb250ZXh0KQot
ICAgIHsKLSAgICAgICAgc2V0VHlwZShPc2NpbGxhdG9yVHlwZTo6U2luZSk7Ci0gICAgfQotCi0g
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJXZWJLaXRPc2NpbGxhdG9yTm9kZSI7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxs
YXRvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2Np
bGxhdG9yTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYjRhYjk5ODFi
ZTlkMDkwMDc0Y2YyMTQ5NTU2ZjlmYWZkYzAxYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPc2NpbGxhdG9yTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAsIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBBY3RpdmVET01PYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9V0VC
X0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8mUHJlZml4ZWRXZWJBdWRpbywK
LSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwK
LV0gaW50ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlIHsKLSAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlwZTsKLQotICAgIC8vIFBsYXli
YWNrIHN0YXRlIGNvbnN0YW50cy4KLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTlNDSEVEVUxF
RF9TVEFURSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0NIRURVTEVEX1NUQVRFID0g
MTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NUQVRFID0gMjsKLSAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZTsKLQotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCi0KLSAgICBbSW1wbGVtZW50ZWRB
cz1zZXRXZWJLaXRQZXJpb2RpY1dhdmVdIHVuZGVmaW5lZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9k
aWNXYXZlPyB3YXZlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI3ZjI5OWI2YmUyMTQwYjg1ODJl
ZTczZjQ3MzNlZGM4NDEyZDkyODQuLjBlMzBlMDllYzIwZWM1NmRkNDM0MTkxN2FiNDRjNjIwMTVm
NWY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yODIsOSArMjgyLDYgQEAgTW9kdWxlcy93ZWJhdWRp
by9TdGVyZW9QYW5uZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKLU1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmNwcAotTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3Bw
Ci1Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBNb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKIE1vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UuY3BwCiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTM3NzcsMTkgKzM3NzQsMTIgQEAg
SlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRleHR1
cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKLUpTV2ViS2l0QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcAotSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCi1KU1dlYktpdEF1ZGlv
TGlzdGVuZXIuY3BwCi1KU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKLUpTV2ViS2l0RHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAKIEpTV2ViS2l0TWVkaWFLZXlFcnJvci5jcHAKIEpTV2ViS2l0
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCiBKU1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3Bw
CiBKU1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKIEpTV2ViS2l0TWVkaWFLZXlzLmNwcAogSlNX
ZWJLaXROYW1lc3BhY2UuY3BwCi1KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCi1KU1dl
YktpdE9zY2lsbGF0b3JOb2RlLmNwcAogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDFjMzU5MTkwMmIxMjBiZDNhYjA2MGJkOGM1YjFiN2YyYWIzYzE3YjkuLjdlMDNjNzlk
MDFmZjAzMDBmODllNjhhOTRkNTNmNWUzNTNlNDcwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MjUsMTMgKzI1MjUsMTAg
QEAKIAkJODMwQTFDN0QyNERCNzg4QjAwMkVDQ0FEIC8qIE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMwQTFDN0MyNERCNzg3MDAwMkVDQ0FEIC8qIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlT3B0aW9u
cy5oICovOyB9OwogCQk4MzBBMzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwQTM2
QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLzsgfTsKIAkJODMwRDBC
NjkyNEY1N0Q2NzAwN0VEMTIyIC8qIElJUlByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwRDBCNjYyNEY1N0Q1MDAwN0VEMTIyIC8qIElJ
UlByb2Nlc3Nvci5oICovOyB9OwotCQk4MzBFRUFCQTI0REI2QTY0MDA5RUZCQ0UgLyogV2ViS2l0
RHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMwRUVBQjcyNERCNkE1MjAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuaCAqLzsgfTsKIAkJODMxMDJCMjcxRjlFQUREOTAwRTQwNEI5IC8qIEpT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2
ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzEyMEM3MTFDNTZG
M0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFDNTZFODNBMDBGM0YwRTMgLyogSFRNTERh
dGFFbGVtZW50LmggKi87IH07CiAJCTgzMTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVk
aW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzE5OEZCRTI0QTE2MEMxMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5oICovOyB9Owot
CQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFCNjE3NDI0OTlB
NTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi87IH07Ci0JCTgzMUI2MTc3
MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFCNjE3NTI0OTlBNTlEMDBD
MDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4MzIxNTA3RTFG
MjdFQTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2
aWdhdG9yQmVhY29uLmggKi87IH07CiAJCTgzMjZCRjhFMjREMzVDMzMwMDFGOEE4NSAvKiBPdmVy
U2FtcGxlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMyNkJGODkyNEQzNUMyMDAwMUY4QTg1IC8qIE92ZXJTYW1wbGVUeXBlLmggKi87IH07CiAJ
CTgzMjZCRjhGMjREMzVDMzkwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyNkJGOEMyNEQzNUMyMDAw
MUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmggKi87IH07CkBAIC0yNTQ1LDkgKzI1NDIsNyBA
QAogCQk4MzNCRDgxODI1MjRENEY1MDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0JEODE2
MjUyNEQ0RTMwMDZFNzJCMyAvKiBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwogCQk4
MzNCRDgxRDI1MjRENTMwMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0JEODE5MjUyNEQ1
MUIwMDZFNzJCMyAvKiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oICovOyB9OwogCQk4MzNCRDgx
RTI1MjRENTM0MDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0JEODFCMjUyNEQ1MUMw
MDZFNzJCMyAvKiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oICovOyB9OwotCQk4MzNEMUM3
NjI0RDhENTRGMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNEMUM3MzI0RDhENTMz
MDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggKi87IH07CiAJCTgzNDA3
RkMxMUU4RDlDMTcwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQwN0ZDMDFFOEQ5QzEyMDBF
MDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNDNEOTg0MjREMERFRTkwMDlBQkQ0OSAvKiBX
ZWJLaXRPc2NpbGxhdG9yTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM0M0Q5ODEyNEQwREVBOTAwOUFCRDQ5IC8qIFdlYktpdE9zY2lsbGF0b3JO
b2RlLmggKi87IH07CiAJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNUVCMCAvKiBKU1Njcm9sbExvZ2lj
YWxQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNFOUIzMDExREE1QTUxRTAwRkZEOEQ0IC8qIEpTU2Nyb2xsTG9naWNhbFBvc2l0aW9uLmgg
Ki87IH07CiAJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNUVDMSAvKiBKU1Njcm9sbEludG9WaWV3T3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNF
OUIzMDExREE1QTUxRTAwRkZEOEU1IC8qIEpTU2Nyb2xsSW50b1ZpZXdPcHRpb25zLmggKi87IH07
CiAJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNkVCMCAvKiBKU1Njcm9sbEJlaGF2aW9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5QjMwMTFEQTVBNTFF
MDBGRkU4RDQgLyogSlNTY3JvbGxCZWhhdmlvci5oICovOyB9OwpAQCAtMjU2MCw3ICsyNTU1LDYg
QEAKIAkJODM1MDUxQTQyNEY1NzNDNDAwOTkxMUQ3IC8qIElJUkZpbHRlck5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTA1MUEyMjRGNTczQUYw
MDk5MTFENyAvKiBJSVJGaWx0ZXJOb2RlLmggKi87IH07CiAJCTgzNTA1MUE1MjRGNTczQzgwMDk5
MTFENyAvKiBJSVJGaWx0ZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzUwNTFBMDI0RjU3M0FFMDA5OTExRDcgLyogSUlSRmlsdGVyT3B0
aW9ucy5oICovOyB9OwogCQk4MzUyMEM3RTFBNzFCRkNDMDA2QkQyQUEgLyogQ1NTRm9udEZhbWls
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1MjBD
N0QxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4MzU2Rjk3RjI0RDlGODE4MDA2QzNFNDEg
LyogV2ViS2l0QXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM1NkY5N0UyNEQ5RjgwOTAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlz
dGVuZXIuaCAqLzsgfTsKIAkJODM1OENCNzAxQzUzMjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjU3
MEFEMUM1MzI2OEUwMDdGRDZDQiAvKiBKU1hNTERvY3VtZW50LmggKi87IH07CiAJCTgzNUQyRDc4
MUY1RjFGQkQwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50RW50cmllc0FQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1RDJENzUxRjVGMUZCODAw
MTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggKi87IH07CiAJCTgzNUQzNjM3
MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNUQzNjM2MTlGRjYxOTMwMDRDOTNBQiAv
KiBTdHlsZUJ1aWxkZXJDdXN0b20uaCAqLzsgfTsKQEAgLTI2MTMsNyArMjYwNyw2IEBACiAJCTgz
QTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4MjREODZEQzYwMEUyRDczRCAv
KiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQUNEMDEwMjUyMjlFMDQw
MDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwotCQk4M0IxQTcwMjI0OTk4NUYwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVO
b2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBC
RjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8q
IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVp
bGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5o
ICovOyB9OwpAQCAtMTA5MzgsNyArMTA5MzEsNiBAQAogCQk4MzAwMzBGMzFCN0QzM0E2MDBFRDNB
QUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQg
LyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMDA1RjlBMjRFQjFEMjgwMDQ4MEY5QiAvKiBBdWRpb1RpbWVzdGFtcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1RpbWVzdGFtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzAwNUY5QzI0RUIxRDI5MDA0ODBGOUIgLyogQXVkaW9UaW1lc3RhbXAuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlv
VGltZXN0YW1wLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkIxRjU0
OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDk2Miw4ICsxMDk1NCw2IEBACiAJCTgz
MEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW91c2VFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMwRDBCNjYyNEY1N0Q1MDAwN0VEMTIyIC8qIElJUlByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJSVJQcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMwRDBCNjgyNEY1N0Q1MDAwN0VEMTIyIC8qIElJUlByb2Nlc3Nvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJSVJQcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4MzBFRUFCNzI0REI2QTUyMDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3NDb21wcmVzc29y
Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMEVFQUI5MjREQjZBNTIwMDlFRkJDRSAvKiBX
ZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXREeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDJCMjMxRjlF
QURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTcyLDEyICsxMDk2Miw2IEBACiAJCTgz
MTk4RkJEMjRBMTYwQzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBCYXNlQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODMxOThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFBM0VBODI1M0Y3OEMyMDA2NzgwNEYgLyogV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdD
NzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMxQjYxNzMyNDk5QTU5
QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgz
MUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVFMDAwRUJENDUw
IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyog
SFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjE1
MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExMDA4LDExICsxMDk5Miw3IEBACiAJCTgzM0JEODFCMjUyNEQ1MUMwMDZFNzJCMyAvKiBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzNCRDgxQzI1MjRENTFEMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzNDRjcw
RjIwREIzRjVGMDAxNDFCQ0MgLyogSlNQZXJmb3JtYW5jZU9ic2VydmVyQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VPYnNlcnZlckN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzM0QxQzczMjREOEQ1MzMw
MEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTgzM0QxQzc1MjREOEQ1MzMwMEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNDA3RkMwMUU4RDlDMTIwMEUwNDhEMyAvKiBWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM0M0Q5ODEy
NEQwREVBOTAwOUFCRDQ5IC8qIFdlYktpdE9zY2lsbGF0b3JOb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYktpdE9zY2lsbGF0b3JOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgz
NDNEOTgzMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNDhCRkFBMUI4NTcyOTUwMDkxMkYzNiAvKiBDbGFzc0Nv
bGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEE2QTM4MjUyNjg0NDEwMDc0
N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXb3JrbGV0UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTEwNDMsOCArMTEwMjMsNiBAQAogCQk4MzUwQzNFODFEQTU5QjYyMDAzNTY0NDYgLyogU2Nyb2xs
VG9PcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTY3JvbGxUb09wdGlvbnMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEg
LyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NG
b250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNTY1N0M2MUVDQUIw
RTgwMENERTcyRCAvKiBKU0RPTU1hdHJpeEluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNET01NYXRyaXhJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJODM1NkY5N0MyNEQ5RjgwODAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4MzU2Rjk3RTI0RDlGODA5MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNUFBMzg4MjUzRjU1QkIwMDc0NjU1NCAvKiBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzVCNjgwRTFGNTQ4QkRFMDA3MUY3RjYgLyogSlNGaWxlU3lzdGVtRW50cnlD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlU3lz
dGVtRW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzVEMkQ3
NDFGNUYxRkI4MDAxNDFERUQgLyogSFRNTElucHV0RWxlbWVudCtFbnRyaWVzQVBJLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSAiSFRNTElucHV0RWxlbWVudCtFbnRyaWVzQVBJLmlkbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE1NSw4ICsxMTEzMyw2IEBACiAJCTgzQThB
QzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0FDRDAxMDI1MjI5RTA0MDAwRDEyNEUgLyogV29y
a2xldE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldE9w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBQ0QwMTIyNTIyOUUwNDAw
MEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3Jr
bGV0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzQjFBNkZGMjQ5
OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDA5MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1Nl
cnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZB
OTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMTE0MywyMyArMzExMTksNiBAQAogCQkJCTgzMjZCRjhEMjREMzVD
MjEwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9ucy5pZGwgKi8sCiAJCQkJRkQ3RjI5OEYxM0Q0
QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3BwICovLAogCQkJCUZEN0YyOTkw
MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggKi8sCi0JCQkJODMzRDFD
NzMyNEQ4RDUzMzAwRTgxM0RGIC8qIFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oICovLAot
CQkJCTgzM0QxQzc1MjREOEQ1MzMwMEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsICovLAotCQkJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0Nv
bnRleHQuY3BwICovLAotCQkJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaCAqLywKLQkJCQk4M0IxQTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmlkbCAqLywKLQkJCQk4MzU2Rjk3RTI0RDlGODA5MDA2QzNFNDEgLyogV2ViS2l0
QXVkaW9MaXN0ZW5lci5oICovLAotCQkJCTgzNTZGOTdDMjREOUY4MDgwMDZDM0U0MSAvKiBXZWJL
aXRBdWRpb0xpc3RlbmVyLmlkbCAqLywKLQkJCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLywKLQkJCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdD
NzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8sCi0JCQkJODMxQjYxNkYyNDk5QTU5ODAw
QzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8sCi0JCQkJODMwRUVBQjcyNERC
NkE1MjAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLywKLQkJCQk4
MzBFRUFCOTI0REI2QTUyMDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5p
ZGwgKi8sCi0JCQkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuY3BwICovLAotCQkJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmggKi8sCi0JCQkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8q
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovLAotCQkJCTgzNDNEOTgxMjREMERFQTkw
MDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oICovLAotCQkJCTgzNDNEOTgzMjREMERF
QTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHdlYmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM1Nzk5LDIwICsz
NTc1OCwxMyBAQAogCQkJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3
OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMw
RkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTgzM0QxQzc2MjREOEQ1NEYwMEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAv
KiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzNTZGOTdGMjREOUY4
MTgwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4
MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmls
aXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzBFRUFCQTI0REI2QTY0MDA5RUZCQ0UgLyogV2Vi
S2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUx
REE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNEUxREE2M0E4RTAwQTdGQjI2IC8q
IFdlYktpdE1lZGlhS2V5cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNTAxREE2M0E5NDAw
QTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0
OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0EyMjczMjEyMEM5RkFGRTAwREIxREVGIC8qIFdlYktpdE5TSW1hZ2VFeHRyYXMuaCBp
biBIZWFkZXJzICovLAotCQkJCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzQzRDk4NDI0RDBERUU5MDA5
QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1REVC
REE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4MjggLyogV2Vi
S2l0UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGMxYmUzZGU4M2JmZTY4MWY3Y2IzZWRjNWQzM2E5YTZlMjA2
Njc0ZjQuLjVlNGM5YzMzNjAwOGYyZmJhNTMxMDM1NDQ2ZDJlNTJjNTY0YTZmY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI5NSw4ICsyOTUsNyBAQAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQotI2luY2x1ZGUgIkJhc2VBdWRpb0NvbnRleHQuaCIKLSNp
bmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTQzODQs
MTcgKzQzODMsMTAgQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNs
ZWVwKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLXZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0Nv
bnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVm
UHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3RyaW5nVmlldyByZXN0
cmljdGlvbnNTdHJpbmcpCit2b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rp
b25zKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcp
CiB7Ci0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gY29udGV4dDsKLSAgICBzd2l0Y2hPbihjb250
ZXh0VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVudHJ5KSB7Ci0gICAgICAgIGNv
bnRleHQgPSBlbnRyeTsKLSAgICB9LCBbJl0oUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4gZW50
cnkpIHsKLSAgICAgICAgY29udGV4dCA9IGVudHJ5OwotICAgIH0pOwotCi0gICAgYXV0byByZXN0
cmljdGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOwotICAgIGNvbnRleHQt
PnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKKyAgICBhdXRvIHJlc3Ry
aWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JSZXN0cmljdGlvbnMoKTsKKyAgICBjb250ZXh0LnJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAogICAgIHJlc3RyaWN0aW9u
cyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CiAKQEAgLTQ0MDYsNyArNDM5OCw3IEBA
IHZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFyaWFu
dDxSZWZQdHI8QXVkaW9Db250ZXh0PiwKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAicmVxdWlyZXBhZ2Vjb25zZW50Zm9yYXVkaW9z
dGFydCIpKQogICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4dDo6UmVxdWly
ZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOwogICAgIH0KLSAgICBjb250ZXh0
LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CisgICAgY29udGV4dC5hZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjp1
c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CmluZGV4IDMzZDAzY2IxMjFlNDEyNTdjYjVhOTg2OGQ5NDJlZThiMDBiY2U3NTUuLmFjZjc2NmMy
YjkyNzA3YTI3MzJiOTdiZmUyYTNiYzY1M2ZkYzI5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaApAQCAtMTEwLDcgKzExMCw2IEBAIGNsYXNzIFVuc3VzcGVuZGFibGVBY3RpdmVET01P
YmplY3Q7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiBjbGFzcyBXZWJBbmltYXRpb247CiBjbGFzcyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ7Ci1jbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQ7CiBjbGFzcyBX
aW5kb3dQcm94eTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCkBAIC03MTQsNyArNzEzLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIHZvaWQgc2V0QXVk
aW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3Ry
aW5nKTsKKyAgICB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQm
LCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZyk7CiAgICAgdm9pZCB1c2VNb2NrQXVkaW9E
ZXN0aW5hdGlvbkNvY29hKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCmluZGV4IDEzZjVlMGY0ODQ2OWI5MWFjOGZhNzRlOTQ4YTZhODNiNmIyMTYwZGQuLjBlMDE0
YjgwZjI3M2VjZDg1MDMwYWRkODU4MTZkYmZlYWIzNjkwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKQEAgLTczNyw3ICs3MzcsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBb
Q29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMo
RE9NU3RyaW5nIG1lZGlhVHlwZSwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRp
dGlvbmFsPVZJREVPXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmlu
ZyBtZWRpYVR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHNldE1lZGlh
RWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0cmluZyBy
ZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHVuZGVmaW5lZCBzZXRB
dWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRl
eHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOworICAgIFtDb25kaXRpb25hbD1X
RUJfQVVESU9dIHVuZGVmaW5lZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250
ZXh0IGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1W
SURFT10gdW5kZWZpbmVkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChET01TdHJpbmcgY29tbWFu
ZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50ID0gMCk7CiAgICAgW0NvbmRp
dGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShib29sZWFu
IHNob3VsZFBhdXNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAyYWJk
NmM1MWMyYTZmNWEyNzYxMjRmMjlkYzdmY2Q1YzMwZDA4ZWRkLi5jMTliM2Y5ZWQ1NWE5YTRlMzUy
Y2JkODFhOTM2NGNjOWZjZGJjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApA
QCAtNTUzNCw3ICs1NTM0LDYgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogCiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKICAgICBzZXR0aW5ncy5zZXRXZWJBdWRpb0VuYWJsZWQodHJ1ZSk7Ci0gICAgc2V0dGlu
Z3Muc2V0UHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCiAKICNpZiBFTkFCTEUoV0VCR0wpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428686</attachid>
            <date>2021-05-14 16:59:23 -0700</date>
            <delta_ts>2021-05-14 17:50:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225832-20210514165923.patch</filename>
            <type>text/plain</type>
            <size>127900</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkMDM5YzY1MjhjNjliYWNhZDk3OTVh
MzU1ZTUxMTMwZmQ4MzdhYTYuLmU0M2IyMTFkYzQ1NzFjNmFiMGViZWRiY2FjOTFkZWZmMjkyOTE2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlvIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEcm9wIHByZWZlcmVuY2UgZm9yIHByZWZpeGVkIFdlYkF1ZGlvLCB3aGljaCB3YXMgZGlz
YWJsZWQgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVT
eXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2IxNWUxOTc3OTU3Nzc3NWY5OGMyZDIzODkwOWFhZTgwZGE3ZWExYy4u
OGMwMWVkMzQ2MWY5OThhNmNmYjVlY2JhOTM5YzdhZTUyOWU3NmY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY5IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBs
ZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlvbiBub3cgdGhhdCBpdCBpcyBu
byBsb25nZXIKKyAgICAgICAgcHJlc2VudCBpbiBzaGlwcGluZyBhbmQgd2UgaGF2ZSByZWNlaXZl
ZCBhbnkgcmVwb3J0cyBvZiBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBkcm9wcyBhbGwgdGhlIGxl
Z2FjeSBjb2RlIGJ1dCBzaGUgc2hvdWxkIGJlIGFibGUgdG8gY2xlYW4gdXAgdGhlCisgICAgICAg
IGNvZGUgZnVydGhlciBpbiBmb2xsb3ctdXBzLiBJbiBwYXJ0aWN1bGFyLCBJIGJlbGlldmUgc29t
ZSBjb2RlIGNhbgorICAgICAgICBub3cgYmUgbW92ZWQgZnJvbSBCYXNlQXVkaW9Db250ZXh0IHRv
IE9mZmxpbmVBdWRpb0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6fkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29u
dGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0Ojppc09mZmxpbmVDb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbnRleHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3Rl
bmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xp
c3RlbmVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjEtMDUtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OOiBbIE1hYyBXSzIgXSBmYXN0L21lZGlhc3RyZWFtL2F1ZGlvLXRyYWNrLWVuYWJsZWQu
aHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjM1
NmM3MTk1ZTMzNDU5YTM3NTI5MDU5ZmU1M2I3YmI0MWM5NmNmMS4uZDY5ZTdhNDA2Y2Q3ODYzNTI1
MDFhNWNhMDg5ODdjYWZmNzU5OTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBl
eHBsaWNpdGx5IGRpc2FibGVkIHdpdGggcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24g
Z2l2ZW4gdGhhdAorICAgICAgICBpdCBubyBsb25nZXIgZXhpc3RzLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgor
CiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVTeXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRl
eCBmYTFkN2IxMTg2NTg5MjQ3MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3Li42MWY4N2NmYmZhMGJi
MzliOGNkNjIzZTZlYWYyMmIxNzg2NmE0ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU4
MywxOSArNTgzLDYgQEAgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVk
OgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiUHJlZml4ZWQgV2Vi
QXVkaW8gQVBJIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQcmVmaXhlZCBXZWJBdWRp
byBBUEkiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKLSAgZGVmYXVsdFZhbHVlOgot
ICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAg
ICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQog
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFk
YWJsZU5hbWU6ICJSZXNvdXJjZSBMb2FkIFNjaGVkdWxpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDNkYjUxYmE2NmVkNjkzODM3N2M5NGRhZDY2NjZmYTk5NzE2MTg0ZGMuLjVhM2Y5NWNiYzRk
MzkxOTI1YWZhZmZlYjNlMTBmOTQ3ZWVmYmVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
NzEsMTMgKzU3MSw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9u
cy5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlLmlkbAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjI5
MjZiYzYyYzM3NWRjNDNmN2Y3Y2RiYzEwYmEyYjdmZGQ5M2NmZi4uMzFjNGEzMTYzMWJiZTNhYTY1
NjBjNjRhY2UwZjBkYmExNWUxYTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC00MjksMTMgKzQyOSw2IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1N0ZXJlb1Bhbm5lck9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQxMDA5ZWMxNzA3NTRhOTFm
OTdiYTMxMWUyNDI5MWZjOWRkZDNkNDAuLjQ4YzE2MzIwYmE5Yzk0NTE5MzBlMGNiODAzMjZlYTU1
MTYyYjk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTM2LDE0ICszNiwxMSBAQAogI2luY2x1
ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1XVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsKIAog
Y29uc3RleHByIGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCiAK
QEAgLTkzLDcgKzkwLDYgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCkKIAogQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojp+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCkKIHsKLSAgICBjbGVhclBhbm5lck5vZGUoKTsKICAg
ICB1bmluaXRpYWxpemUoKTsKIH0KIApAQCAtMTQ2LDkgKzE0Miw2IEBAIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBBcHBseSB0aGUgZ2FpbiAoaW4tcGxhY2UpIHRvIHRoZSBv
dXRwdXQgYnVzLgotICAgIGZsb2F0IHRvdGFsR2FpbiA9IGxlZ2FjeUdhaW5WYWx1ZSgpOwotICAg
IG91dHB1dEJ1cy5jb3B5V2l0aEdhaW5Gcm9tKG91dHB1dEJ1cywgdG90YWxHYWluKTsKICAgICBv
dXRwdXRCdXMuY2xlYXJTaWxlbnRGbGFnKCk7CiB9CiAKQEAgLTQxOSw3ICs0MTIsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVk
aW9CdWZmZXI+JiYgYnVmZmVyKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKGJ1ZmZlciAmJiBtX3dhc0J1ZmZlclNl
dCAmJiBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkpCisgICAgaWYgKGJ1
ZmZlciAmJiBtX3dhc0J1ZmZlclNldCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiVGhlIGJ1ZmZlciB3YXMgYWxyZWFkeSBzZXQiX3MgfTsKIAogICAgIC8v
IFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2Fu
IHJlLWNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KQEAg
LTUzNywxMCArNTMwLDYgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmFkanVzdEdyYWlu
UGFyYW1ldGVycygpCiAKIGRvdWJsZSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hS
YXRlKCkKIHsKLSAgICBkb3VibGUgZG9wcGxlclJhdGUgPSAxLjA7Ci0gICAgaWYgKG1fbGVnYWN5
UGFubmVyTm9kZSkKLSAgICAgICAgZG9wcGxlclJhdGUgPSBtX2xlZ2FjeVBhbm5lck5vZGUtPmRv
cHBsZXJSYXRlKCk7Ci0gICAgCiAgICAgLy8gSW5jb3Jwb3JhdGUgYnVmZmVyJ3Mgc2FtcGxlLXJh
dGUgdmVyc3VzIEF1ZGlvQ29udGV4dCdzIHNhbXBsZS1yYXRlLgogICAgIC8vIE5vcm1hbGx5IGl0
J3Mgbm90IGFuIGlzc3VlIGJlY2F1c2UgYnVmZmVycyBhcmUgbG9hZGVkIGF0IHRoZSBBdWRpb0Nv
bnRleHQncyBzYW1wbGUtcmF0ZSwgYnV0IHdlIGNhbiBoYW5kbGUgaXQgaW4gYW55IGNhc2UuCiAg
ICAgZG91YmxlIHNhbXBsZVJhdGVGYWN0b3IgPSAxLjA7CkBAIC01NTAsNyArNTM5LDcgQEAgZG91
YmxlIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUoKQogICAgIGRvdWJsZSBi
YXNlUGl0Y2hSYXRlID0gcGxheWJhY2tSYXRlKCkuZmluYWxWYWx1ZSgpOwogICAgIGRvdWJsZSBk
ZXR1bmUgPSBwb3coMiwgbV9kZXR1bmUtPmZpbmFsVmFsdWUoKSAvIDEyMDApOwogCi0gICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGUgKiBkZXR1bmU7CisgICAgZG91YmxlIHRvdGFsUmF0ZSA9IHNhbXBsZVJhdGVGYWN0b3Ig
KiBiYXNlUGl0Y2hSYXRlICogZGV0dW5lOwogCiAgICAgdG90YWxSYXRlID0gc3RkOjpjbGFtcCh0
b3RhbFJhdGUsIC1NYXhSYXRlLCBNYXhSYXRlKTsKICAgICAKQEAgLTU2NywyNCArNTU2LDYgQEAg
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAg
ICByZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9i
dWZmZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFdl
YktpdEF1ZGlvUGFubmVyTm9kZSogcGFubmVyTm9kZSkKLXsKLSAgICBpZiAobV9sZWdhY3lQYW5u
ZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhhc0ZpbmlzaGVkKCkpCi0gICAgICAgIG1fbGVnYWN5
UGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpjbGVhclBhbm5lck5vZGUoKQotewotICAgIG1fbGVnYWN5UGFubmVyTm9kZSA9IG51bGxwdHI7
Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaW5pc2goKQotewotICAgIGNsZWFy
UGFubmVyTm9kZSgpOwotICAgIEFTU0VSVCghbV9sZWdhY3lQYW5uZXJOb2RlKTsKLSAgICBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggMmRi
NzY2MWI4NTQxOGQ4Y2RhOTJmOTA0MWY0ZGE0YTY5MDcyOTY5Yi4uYjczM2Q3MGM2ZmNiYWFhNWRi
YTQ2NWNiNjhhZTMyMzYyZDI3YzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMywxMyArMzMsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7Ci1jbGFzcyBXZWJL
aXRBdWRpb1Bhbm5lck5vZGU7CiBzdHJ1Y3QgQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zOwogCiAv
LyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9Ob2RlIHJlcHJlc2VudGluZyBhbiBh
dWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8gYXNzZXQgcmVwcmVzZW50ZWQgYnkg
YW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2lsbCBiZSB1c2VkIGZvciBzaG9ydCBz
b3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9mIHNjaGVkdWxpbmcgZmxleGliaWxp
dHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVyZmVjdCB3YXlzKS4KIAotY2xhc3Mg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7
CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291
cmNlTm9kZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+
IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03NiwxNiAr
NzUsOSBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSYgZGV0dW5lKCkgeyByZXR1cm4gbV9kZXR1
bmUuZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwbGF5YmFja1JhdGUoKSB7IHJldHVybiBtX3Bs
YXliYWNrUmF0ZS5nZXQoKTsgfQogCi0gICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBpcyBzZXQsIHRo
ZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxheWJhY2sgcGl0
Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKik7
Ci0gICAgdm9pZCBjbGVhclBhbm5lck5vZGUoKTsKLQogICAgIC8vIElmIHdlIGFyZSBubyBsb25n
ZXIgcGxheWluZywgcHJvcG9nYXRlIHNpbGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4K
ICAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUKLSAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOwotCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJB
dWRpb0J1ZmZlclNvdXJjZU5vZGUiOyB9CiAKIHByb3RlY3RlZDoKQEAgLTk1LDkgKzg3LDYgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgeyByZXR1cm4gMS4wOyB9
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFRocm93T25BdHRlbXB0VG9PdmVyd3JpdGVCdWZmZXIo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFBs
YXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBn
cmFpbkR1cmF0aW9uKTsKICAgICB2b2lkIGFkanVzdEdyYWluUGFyYW1ldGVycygpOwogCkBAIC0x
MzcsMTMgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fd2FzR3JhaW5EdXJhdGlvbkdp
dmVuIHsgZmFsc2UgfTsKIAogICAgIC8vIHRvdGFsUGl0Y2hSYXRlKCkgcmV0dXJucyB0aGUgaW5z
dGFudGFuZW91cyBwaXRjaCByYXRlIChub24tdGltZSBwcmVzZXJ2aW5nKS4KLSAgICAvLyBJdCBp
bmNvcnBvcmF0ZXMgdGhlIGJhc2UgcGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNp
b24gZmFjdG9yIGZyb20gdGhlIGJ1ZmZlciwgYW5kIGFueSBkb3BwbGVyIHNoaWZ0IGZyb20gYW4g
YXNzb2NpYXRlZCBwYW5uZXIgbm9kZS4KKyAgICAvLyBJdCBpbmNvcnBvcmF0ZXMgdGhlIGJhc2Ug
cGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNpb24gZmFjdG9yIGZyb20gdGhlIGJ1
ZmZlci4KICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAotICAgIC8vIFdlIG9wdGlvbmFs
bHkga2VlcCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQg
dGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLgotICAgIEF1
ZGlvQ29ubmVjdGlvblJlZlB0cjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+IG1fbGVnYWN5UGFubmVy
Tm9kZTsKLQogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZl
cigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBt
dXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKaW5kZXggM2Vj
Y2FiOWJlNmY5MDA4OTM3ZDViNTc0MTlmYTQwMGJhNDM4MjEwYi4uMDNiNDdkNzI4YWU0MGFhYWQ4
MTdiNjBmMjNjNjJlMzc4MWUxMzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbApAQCAtNDEsMTEgKzQx
LDQgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKICAgICBbSW1wbGVtZW50ZWRB
cz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBv
cHRpb25hbCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJh
dGlvbik7Ci0KLSAgICAvLyBGSVhNRTogVGhvc2UgY29uc3RhbnRzIGFyZSBrZXB0IGZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHByZWZpeGVkIEFQSSBhbmQgc2hvdWxkCi0gICAg
Ly8gYmUgcmVtb3ZlZCBvbmNlIHdlIHN0b3Agc3VwcG9ydGluZyBpdC4KLSAgICBbRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTlNDSEVEVUxF
RF9TVEFURSA9IDA7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29u
c3QgdW5zaWduZWQgc2hvcnQgU0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBbRW5hYmxlZEJ5U2V0
dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NUQVRF
ID0gMjsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNp
Z25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGY2YjU1OTIwNjViMzlmMDJj
ZjEyYjIzODJlZWQyMDAyMzkyOTVhNWYuLjdkNTZkMGE1ZmYzYzUzZTdlY2Q2MzJmY2I4NjUzNzkx
NGIxM2JmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0Nv
bnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQ29u
CiAgICAgaWYgKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUuaGFzVmFsdWUoKSAmJiAhaXNTdXBw
b3J0ZWRTYW1wbGVSYXRlKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgInNhbXBsZVJhdGUgaXMgbm90IGlu
IHJhbmdlIl9zIH07CiAgICAgCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBj
b250ZXh0T3B0aW9ucykpOworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBB
dWRpb0NvbnRleHQoZG9jdW1lbnQsIGNvbnRleHRPcHRpb25zKSk7CiAgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCiAvLyBD
b25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KLUF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRp
b0NvbnRleHQgaXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnN0IEF1ZGlvQ29udGV4dE9w
dGlvbnMmIGNvbnRleHRPcHRpb25zKQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
aXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnRleHRPcHRpb25zKQorQXVkaW9Db250ZXh0
OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdWRpb0NvbnRleHRPcHRp
b25zJiBjb250ZXh0T3B0aW9ucykKKyAgICA6IEJhc2VBdWRpb0NvbnRleHQoZG9jdW1lbnQsIGNv
bnRleHRPcHRpb25zKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRo
aXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwpAQCAtMTE5LDE0ICsxMTksNiBAQCBBdWRp
b0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0
QXVkaW9Db250ZXh0IGlzTGVnYQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7CiB9CiAKLS8vIE9ubHkgbmVlZGVkIGZvciBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LgotQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCBpc0xlZ2FjeVdlYktpdEF1
ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
UmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IEJhc2VBdWRpb0NvbnRl
eHQoZG9jdW1lbnQsIGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCBudW1iZXJPZkNoYW5uZWxz
LCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCi0gICAgLCBtX21lZGlhU2Vzc2lv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCi17Ci0gICAgY29uc3RydWN0Q29tbW9uKCk7Ci19
Ci0KIHZvaWQgQXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQogewogICAgIEFTU0VSVChk
b2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IDBjYzMyOTBmYWY3MTRmNjJjMTk1ZmMzNjkyMWVlMDlmMjhiOGRhNGUuLjE2
NjQ1NjczYzkyYzNhMjllMjc2NDMwZmIwZGJjOGUzNTM5ZWY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBET01XaW5kb3c7CiAKIHN0cnVjdCBBdWRpb1RpbWVzdGFtcDsKIAotY2xhc3MgQXVkaW9D
b250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHQgZmluYWwKICAgICA6IHB1YmxpYyBCYXNlQXVkaW9D
b250ZXh0CiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgogICAgICwgcHVibGljIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcgpAQCAtODksOCArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1f
cmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNv
bnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKLSAgICBBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7
CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgY29uc3QgQXVkaW9Db250ZXh0
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOwogCkBAIC0x
MDcsMjQgKzEwNiwyNCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsK
IAogICAgIC8vIE1lZGlhUHJvZHVjZXIKLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKSBmaW5hbDsKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6
Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9Ci0gICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVk
aW87IH0KLSAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwotICAgIGJvb2wgY2Fu
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wg
c3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZTo6Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1
ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZTo6V2ViQXVkaW87IH0KKyAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVz
dW1lKSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIGZpbmFsOworICAgIGJvb2wg
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQorICAgIGJvb2wgc3Vw
cG9ydHNTZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhU2Vzc2lvbkdyb3Vw
SWRlbnRpZmllciBtZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci4KLSAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBmaW5h
bDsKIAogICAgIC8vIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0xpc3RlbmVyLmgKaW5kZXggNzJhMjNhOWE5NGZkNTYzOTNmMjE0ZTQ4ZDkyOGNkNzQ3
NGFiODcwMS4uZjA1MWFjYjE4Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9MaXN0ZW5lcihjb250ZXh0KSk7CiAgICAgfQotICAgIHZpcnR1YWwgfkF1ZGlvTGlzdGVu
ZXIoKTsKKyAgICB+QXVkaW9MaXN0ZW5lcigpOwogCiAgICAgQXVkaW9QYXJhbSYgcG9zaXRpb25Y
KCkgeyByZXR1cm4gbV9wb3NpdGlvblguZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwb3NpdGlv
blkoKSB7IHJldHVybiBtX3Bvc2l0aW9uWS5nZXQoKTsgfQpAQCAtNzAsOCArNzAsNiBAQCBwdWJs
aWM6CiAKICAgICBGbG9hdFBvaW50M0QgdXBWZWN0b3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1dlYktpdEF1ZGlvTGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAg
ICAgYm9vbCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
VXNlQVJhdGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5pZGwKaW5kZXggNzUzZWM4OGU2NDFhZjIxNmExY2FmNzM4MWM5OTQy
ODgzODZjYjg5OC4uMWI4NDJiZjI1MThhMDE0NDliNDJlMzFlNDZlMWNmYWEyYThiZGUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRs
CkBAIC0yOSw3ICsyOSw4IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBBdWRpb0xpc3RlbmVyIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9QYXJhbSBwb3NpdGlvblg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlv
UGFyYW0gcG9zaXRpb25ZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCmluZGV4IDQ0ZTYyYmQ3MjIwZTJkYzE4MzMzZDljNmM2MTRmM2FiMDBmOGFjNTcu
LjIxNmY2YjdlMjIwMjliNGQxNjI3ZDM5NTA1ZTA5MWU4Y2QzODJiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjczLDE0ICs2NzIsNiBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsK
IH0KIAotVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpCi17Ci0gICAgYXV0byYg
Y29udGV4dCA9IHRoaXMtPmNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC5pc1dlYktpdEF1ZGlv
Q29udGV4dCgpKQotICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRB
dWRpb0NvbnRleHQmPihjb250ZXh0KSk7Ci0gICAgcmV0dXJuIG1ha2VSZWZQdHIoY29udGV4dCk7
Ci19Ci0KIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZldpdGhMb2NrKCkKIHsKICAgICBBU1NFUlQoY29u
dGV4dCgpLmlzR3JhcGhPd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCmluZGV4IDIyNzVjNTM3NzJmM2YyNTcwNmMyNDk1YjYwMGExYTRmYzc1MmUy
YzMuLjIwNTcwYTcyMTU4NzVjNGYwN2Q3MjU2YzMzZmRjZWMyYmI4MzhkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNDIsNyArNDIsNiBAQCBz
dHJ1Y3QgQXVkaW9Ob2RlT3B0aW9uczsKIGNsYXNzIEF1ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1
ZGlvUGFyYW07CiBjbGFzcyBCYXNlQXVkaW9Db250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9Db250
ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBo
YW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1
ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRp
byBkZXN0aW5hdGlvbi4KQEAgLTkwLDggKzg5LDYgQEAgcHVibGljOgogICAgIEJhc2VBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKTsKICAgICBjb25zdCBCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
Y29uc3Q7CiAKLSAgICBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0PiwgUmVmUHRyPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpOwotCiAgICAgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlOyB9CiAKICAgICAvLyBDYW4gYmUg
Y2FsbGVkIGZyb20gbWFpbiB0aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3NjI4Njgx
MTQxM2VkN2Q2MDI3NGI3ODM4NzgwZmI4OWVmMTIyNjA4Li5hMDdmMDljNTBkOTBmZTM1N2ZjNDEx
ZWY2YjBlY2FlMTYyM2RhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuaWRsCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwK
ICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDogRXZlbnRUYXJnZXQg
ewotICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmli
dXRlIChCYXNlQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQmFzZUF1ZGlvQ29udGV4dCBjb250ZXh0OwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCBmOWUzMjRlMjEyNjdhMDE0
OGRiN2I3NmM5YmM3N2IwZmU2MDA4YmExLi5iYjM5NWUzOGIzNGE2ZDg2YmY5NjljNTgxMTYyNjQw
NWJiNmUyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgog
I2luY2x1ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvblJh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2VySGVscGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCAyNjc3NTQwZTQzMjU4YjRmMThhMGQ0
MWM1MmRiYzk0MmM2ZjEyZTVmLi5lMWY0YjA0ZWYyM2M2OWNiOThjNzQwMmEyZmYyMTFiNWE1NDlh
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5jcHAKQEAgLTgwLDcgKzgwLDYgQEAKICNpbmNsdWRlICJTdGVyZW9QYW5uZXJO
b2RlLmgiCiAjaW5jbHVkZSAiU3RlcmVvUGFubmVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldhdmVT
aGFwZXJOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgogCkBAIC0xMzIsNyArMTMxLDcgQEAgc3RhdGljIEhhc2hTZXQ8dWludDY0X3Q+JiBsaXZlQXVk
aW9Db250ZXh0cygpCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgotQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0LCBjb25zdCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKK0Jh
c2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKICAgICA6IEFjdGl2ZURPTU9i
amVjdChkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQpAQCAtMTQxLDcgKzE0MCw3IEBAIEJhc2VBdWRpb0NvbnRleHQ6
OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlv
Q29udGV4CiAgICAgLCBtX2NvbnRleHRJRChnZW5lcmF0ZUF1ZGlvQ29udGV4dElEKCkpCiAgICAg
LCBtX3dvcmtsZXQoQXVkaW9Xb3JrbGV0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9kZXN0aW5h
dGlvbk5vZGUobWFrZVVuaXF1ZVJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+KCp0aGlz
LCBjb250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlKSkKLSAgICAsIG1fbGlzdGVuZXIoaXNMZWdhY3lX
ZWJLaXRBdWRpb0NvbnRleHQgPT0gSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6OlllcyA/IFJl
ZjxBdWRpb0xpc3RlbmVyPihXZWJLaXRBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKSA6IEF1
ZGlvTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2xpc3RlbmVyKEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbGl2ZUF1ZGlvQ29udGV4dHMoKS5hZGQobV9jb250
ZXh0SUQpOwogCkBAIC0xNjMsNyArMTYyLDcgQEAgQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXgKIH0K
IAogLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgot
QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElz
TGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZm
ZXI+JiYgcmVuZGVyVGFyZ2V0KQorQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKQEAgLTE3NCw3ICsxNzMsNyBAQCBCYXNlQXVkaW9Db250
ZXh0OjpCYXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRB
dWRpb0NvbnRleAogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX3JlbmRl
clRhcmdldChXVEZNb3ZlKHJlbmRlclRhcmdldCkpCiAgICAgLCBtX2Rlc3RpbmF0aW9uTm9kZSht
YWtlVW5pcXVlUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4oKnRoaXMsIG51bWJlck9m
Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIG1fcmVuZGVyVGFyZ2V0LmNvcHlSZWYoKSkpCi0gICAgLCBt
X2xpc3RlbmVyKGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0ID09IElzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0OjpZZXMgPyBSZWY8QXVkaW9MaXN0ZW5lcj4oV2ViS2l0QXVkaW9MaXN0ZW5lcjo6
Y3JlYXRlKCp0aGlzKSkgOiBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9s
aXN0ZW5lcihBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGxpdmVBdWRpb0Nv
bnRleHRzKCkuYWRkKG1fY29udGV4dElEKTsKICAgICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
aAppbmRleCA1OGJkY2U5ZGM2ZWFiNTEyNTg2ZWYxM2U3NjEwMWJlYWYxZTUyMzFjLi5hZTBmNDkx
MTJhMzc1MTc5MzIzNWNhNmY4ZTBjNDQzNDczZjRiYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE1LDcgKzExNSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKICAgICAKICAgICBi
b29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUmIGRlc3RpbmF0aW9uKCkgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7IH0KICAgICBjb25zdCBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQpAQCAtMjk3LDkgKzI5Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPj4mIHBhcmFtZXRlckRlc2NyaXB0b3JN
YXAoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckRlc2NyaXB0b3JNYXA7IH0KIAogcHJvdGVj
dGVkOgotICAgIGVudW0gY2xhc3MgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIGV4cGxpY2l0IEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xl
Z2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgPSB7IH0p
OwotICAgIEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29u
dGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRy
PEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CisgICAgZXhwbGljaXQgQmFzZUF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKKyAgICBC
YXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAgICAg
CiAgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Fj
dGl2aXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCA1MWI2YjJjMDk4YzQwNDkyYmZhYzc5
MTVhM2QwMzA1YzhjNmYzOGY0Li40YWE5YWQ0Y2YxNDgxOGJkY2I5YmI2Njk5ZmU4ZDhiOTY4M2Iy
OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkR5bmFtaWNzQ29tcHJlc3Nvci5oIgotI2luY2x1ZGUgIldlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiAvLyBTZXQgb3V0
cHV0IHRvIHN0ZXJlbyBieSBkZWZhdWx0LgpAQCAtNDMsNyArNDIsNiBAQCBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzID0gMjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUpOwotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUpOwogCiBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaAppbmRleCAyZGUwN2RmOWZlMjE4NjFlZTcyOWJhZDJlOWM0N2RlMTE0MzA4OGQyLi5iM2Uw
MjBkYmQ3MzIzMWU0OTRhYzg5MThmOWJjNDI0NWRjNTIzYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaApA
QCAtMzQsMTggKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yOwogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlv
Tm9kZSB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlv
Tm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU+PiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IER5bmFtaWNzQ29tcHJlc3Nv
ck9wdGlvbnMmID0geyB9KTsKIAotICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUo
KTsKKyAgICB+RHluYW1pY3NDb21wcmVzc29yTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0g
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHByb2Nl
c3NPbmx5QXVkaW9QYXJhbXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7Ci0gICAgdm9p
ZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgp
IGZpbmFsOwogCiAgICAgLy8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAg
ICAgQXVkaW9QYXJhbSYgdGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0K
QEAgLTY1LDggKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWR1Y3Rp
b24oZmxvYXQgcmVkdWN0aW9uKSB7IG1fcmVkdWN0aW9uID0gcmVkdWN0aW9uOyB9CiAKIHByaXZh
dGU6Ci0gICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBy
ZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
CmluZGV4IDRlMDZiZDFhODhhM2VlNWY4M2U5YjMxZjRmODc4N2FjZWFmODU5Y2EuLjg0ZDE2YTE1
NWY2OTI3NmRiZGQ0OGI3NWViNzA5YWQ5NWU5MjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoT2ZmbGluZUF1ZGlvQ29udGV4dCk7CiAKIGlubGluZSBPZmZsaW5lQXVkaW9Db250ZXh0OjpP
ZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9C
dWZmZXI+JiYgcmVuZGVyVGFyZ2V0KQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
SXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVS
YXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCisgICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggYWIxNDY2N2QwNjhkYzAxMWFhMDJi
ZTFkMGVhYmE4YzhhOTUwMmQ0OS4uNzQxNDE0N2FmMGM1ZmEzYWVhYjZiMDIzNjFhODYzZTI5MDM5
OWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaApAQCAtMzUsMTQgKzM1LDE0IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIAogLy8gT3Nj
aWxsYXRvck5vZGUgaXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4K
IAotY2xhc3MgT3NjaWxsYXRvck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
IHsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPc2NpbGxhdG9yTm9kZSk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0
ZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3QgT3NjaWxsYXRvck9wdGlvbnMmID0geyB9KTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk9zY2lsbGF0b3JOb2RlIjsg
fQorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiT3NjaWxsYXRvck5vZGUiOyB9CiAKICAgICBPc2NpbGxhdG9yVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHlwZShPc2Np
bGxhdG9yVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuaWRsCmluZGV4IGU0NWZiNzc1ZjBmOTA0MDc5NjYyOGRhNjUxYjNiNGQ5MmQ3
MWQyY2UuLjJkMDI5ZmY4MzUyZjNjNjE0NDVmNzRjMmNjMDlmYjdkMDExYTBhMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCkBA
IC0zNywxMSArMzcsNCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGRldHVu
ZTsgLy8gaW4gQ2VudHMKIAogICAgIHVuZGVmaW5lZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNX
YXZlIHdhdmUpOwotCi0gICAgLy8gRklYTUU6IFRob3NlIGxlZ2FjeSBwbGF5YmFjayBzdGF0ZSBj
b25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAg
ICAvLyBwcmVmaXhlZCBBUEkgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBzdXBw
b3J0aW5nIHRoZSBwcmVmaXhlZCBBUEkuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRX
ZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAg
IFtFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW9dIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJB
dWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgW0VuYWJs
ZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNI
RURfU1RBVEUgPSAzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDk3MTkyZjY3OGIwNDU2MGJiYThjYTdiMzk4YWQyNzlhZjA1ZmNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwLCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0u
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShCYXNlQXVk
aW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBBdWRp
b1BhcmFtJiBnYWluKCkgY29uc3QgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEJhc2VBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCi0gICAgICAgIDogQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpCi0g
ICAgICAgICwgbV9nYWluKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiJfcywgMS4w
LCAwLjAsIDEuMCwgQXV0b21hdGlvblJhdGU6OktSYXRlKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Ym9vbCBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZ2FpbigpLnZhbHVlKCk7IH0KLQotICAgIFJlZjxBdWRpb1BhcmFtPiBtX2dh
aW47Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIyOWM1MjgzOTRjOTJhNGI5ZGE2MzlkOGNhOWQ1NTAyN2VmNThhNWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gQSBjYWNoZWQgKG5v
bi1zdHJlYW1lZCksIG1lbW9yeS1yZXNpZGVudCBhdWRpbyBzb3VyY2UKLVsKLSAgICBDb25kaXRp
b25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAot
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Ci1d
IGludGVyZmFjZSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgOiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUgewotICAgIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwotCi0gICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
UExBWUlOR19TVEFURSA9IDI7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURfU1RB
VEUgPSAzOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBsYXliYWNr
U3RhdGU7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBnYWluOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHBsYXliYWNrUmF0ZTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIGxvb3A7Ci0KLSAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKLSAgICBh
dHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7Ci0KLSAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVy
XSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3Vi
bGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NDI2ODk4ZDg3NDVj
YThhMDk4ZWQwMzBjOWNmZmE2ODExZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUg
IldlYktpdEF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKLSNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKLSNpbmNs
dWRlICJXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0T3Nj
aWxsYXRvck5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0jaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUg
Ik1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1
ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLWNvbnN0ZXhwciB1bnNpZ25lZCBNYXhQZXJp
b2RpY1dhdmVMZW5ndGggPSA0MDk2OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0NvbnRleHQpOwotCi0jZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotCi0jaWYgT1MoV0lORE9XUykKLS8vIERvbid0IGFsbG93IG1vcmUg
dGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRv
IGhhcmR3YXJlLgotY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0Owot
I2VuZGlmCi0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSNpZiBPUyhXSU5ET1dTKQotICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENv
dW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBR
dW90YUV4Y2VlZGVkRXJyb3IgfTsKLSNlbmRpZgotCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOwotICAgIGF1ZGlvQ29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKLX0KLQot
Ly8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1XZWJL
aXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0g
ICAgOiBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpZ
ZXMpCi17Ci19Ci0KLS8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJl
bmRlcmluZy4KLVdlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRh
cmdldCkKLSAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0Nv
bnRleHQ6OlllcywgcmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCksIHNhbXBsZVJhdGUs
IFdURk1vdmUocmVuZGVyVGFyZ2V0KSkKLXsKLX0KLQotY29uc3QgY2hhciogV2ViS2l0QXVkaW9D
b250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIldlYktp
dEF1ZGlvQ29udGV4dCI7Ci19Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLUV4Y2VwdGlvbk9yPFJl
ZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCi17Ci0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlz
LCB7ICZtZWRpYUVsZW1lbnQgfSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
OjpjcmVhdGUoKnRoaXMsIHsgJm1lZGlhU3RyZWFtIH0pOwotfQotCi1FeGNlcHRpb25PcjxSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCi17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLSNlbmRpZgotCi1FeGNlcHRp
b25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVXZWJLaXRQYW5uZXIoKQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChpc1N0b3BwZWQoKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAgICBsYXp5SW5pdGlh
bGl6ZSgpOwotICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlv
Q29udGV4dDo6Y3JlYXRlV2ViS2l0T3NjaWxsYXRvcigpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGlzU3Rv
cHBlZCgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
LQotICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICByZXR1cm4gV2ViS2l0T3NjaWxsYXRvck5v
ZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7Ci0gICAgCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaXNTdG9wcGVk
KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwotCi0g
ICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IHJlYWwubGVuZ3Ro
KCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGggfHwgIXJlYWwubGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0gICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1h
Z2luYXJ5KTsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlKCkKLXsKLSAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwotCi0gICAgbGF6eUluaXRpYWxpemUoKTsKLQotICAgIHJldHVybiBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlZjxXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKQotewotICAgIGlmIChpc1N0b3BwZWQo
KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwotCi0gICAgcmV0dXJuIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTGVnYWN5QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJh
eUJ1ZmZlciwgYm9vbCBtaXhUb01vbm8pCi17Ci0gICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOwotICAgIGlmICgh
YXVkaW9CdWZmZXIpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9Owot
ICAgIHJldHVybiBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
LXsKLSAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IGlzU3RvcHBlZCgpKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKLQotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0KLSAgICBkZXN0aW5hdGlvbigpLmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Ci0gICAgICAgIHVu
aW5pdGlhbGl6ZSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU3ZmM5MzZhNDhmN2VlZTk5NWU5Y2U1YWNmMTNhYjcxZjNmZDQzNjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwotY2xh
c3MgTWVkaWFTdHJlYW07Ci1jbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOwot
Y2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7Ci1jbGFzcyBQZXJpb2RpY1dhdmU7Ci1j
bGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Ci1jbGFzcyBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU7Ci1jbGFzcyBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlOwotY2xhc3MgV2ViS2l0
T3NjaWxsYXRvck5vZGU7Ci0KLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2Yg
dGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQu
Ci0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBt
YWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgot
Ci1jbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0Ci17Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAg
IC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVk
aW8gaGFyZHdhcmUuCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKLQotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwotCi0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKSB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0xpc3RlbmVyPihBdWRpb0NvbnRleHQ6Omxpc3RlbmVy
KCkpOyB9Ci0KLSAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgotI2lmIEVOQUJMRShWSURFTykK
LSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlh
U3RyZWFtRGVzdGluYXRpb24oKTsKLSNlbmRpZgotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRB
dWRpb1Bhbm5lck5vZGU+PiBjcmVhdGVXZWJLaXRQYW5uZXIoKTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVXZWJLaXRPc2NpbGxhdG9yKCk7Ci0gICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlV2ViS2l0QnVmZmVyU291cmNl
KCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVMZWdhY3lCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9u
byk7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1l
bnQmKTsKLSAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKLQotcHJpdmF0ZToKLSAgICAvLyBB
Y3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci19OwotCi19IC8vIFdlYkNvcmUKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRpb0NvbnRleHQoKTsgfQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMmNkNTg3ZmQwMTNiMWQxN2M1M2YxMjc5Y2E2ZjM2ZTY1ZGVjMDM4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbyZQcmVmaXhlZFdlYkF1
ZGlvLAotICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9
d2Via2l0QXVkaW9Db250ZXh0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBj
b25zdHJ1Y3RvcigpOwotCi0gICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29u
bmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJl
LgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlv
bjsKLQotICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGlt
ZSBpbiBzZWNvbmRzLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGN1cnJlbnRUaW1lOwotCi0gICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVu
IGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCi0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwotCi0gICAgLy8g
QWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViS2l0QXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKLQotICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dW5kZWZpbmVkPiBzdXNwZW5kKCk7Ci0gICAg
W0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHVuZGVmaW5lZD4gcmVzdW1l
KCk7Ci0gICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNsb3NlKCk7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnN0YXRlY2hhbmdlOwotCi0gICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7Ci0KLSAgICBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgW0ltcGxlbWVu
dGVkQXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlC
dWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7Ci0KLSAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgotICAgIHVuZGVmaW5lZCBkZWNvZGVBdWRpb0RhdGEo
QXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJh
Y2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwotCi0gICAg
Ly8gU291cmNlcwotICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdEJ1ZmZlclNvdXJjZV0g
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwotCi0gICAg
W0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVk
aWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKLQotICAgIFtD
b25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0
ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLQotICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKLSAg
ICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0gICAgQmlxdWFkRmls
dGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKLSAgICBXYXZlU2hhcGVyTm9kZSBjcmVhdGVX
YXZlU2hhcGVyKCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0UGFubmVyXSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7Ci0gICAgQ29udm9sdmVyTm9kZSBjcmVh
dGVDb252b2x2ZXIoKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXREeW5hbWljc0Nv
bXByZXNzb3JdIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21w
cmVzc29yKCk7Ci0gICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgU2NyaXB0
UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hh
bm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PSAyKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXRPc2NpbGxhdG9yXSBXZWJLaXRP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgUGVyaW9kaWNXYXZlIGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwotCi0g
ICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBDaGFubmVsU3BsaXR0ZXJO
b2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0cyA9IDYpOwotICAgIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwotCi0gICAgLy8gT2Zm
bGluZSByZW5kZXJpbmcKLSAgICAvLyB1bmRlZmluZWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5k
ZXJpbmcodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmNvbXBsZXRlOwotICAgIHVuZGVmaW5lZCBzdGFydFJlbmRlcmluZygp
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0xpc3RlbmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjE2NWNmZDJm
YjUzOTk4YzJiOTBmY2QwM2VhMGM0Mzk5ZTUzMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0xpc3RlbmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYktpdEF1ZGlvTGlzdGVuZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9MaXN0ZW5lciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0xpc3RlbmVyPiBjcmVhdGUoQmFzZUF1ZGlv
Q29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YktpdEF1ZGlvTGlzdGVuZXIoY29udGV4dCkpOwotICAgIH0KLQotICAgIC8vIFZlbG9jaXR5Ci0g
ICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IHNldFZlbG9j
aXR5KEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0
IEZsb2F0UG9pbnQzRCYgdmVsb2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAg
Y29uc3QgRmxvYXRQb2ludDNEJiB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7
IH0KLQotICAgIC8vIERvcHBsZXIgZmFjdG9yCi0gICAgdm9pZCBzZXREb3BwbGVyRmFjdG9yKGRv
dWJsZSBkb3BwbGVyRmFjdG9yKSB7IG1fZG9wcGxlckZhY3RvciA9IGRvcHBsZXJGYWN0b3I7IH0K
LSAgICBkb3VibGUgZG9wcGxlckZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9wcGxlckZhY3Rv
cjsgfQotCi0gICAgLy8gU3BlZWQgb2Ygc291bmQKLSAgICB2b2lkIHNldFNwZWVkT2ZTb3VuZChk
b3VibGUgc3BlZWRPZlNvdW5kKSB7IG1fc3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kOyB9Ci0g
ICAgZG91YmxlIHNwZWVkT2ZTb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWRPZlNvdW5kOyB9
Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lcihCYXNlQXVkaW9Db250ZXh0JiBj
b250ZXh0KQotICAgICAgICA6IEF1ZGlvTGlzdGVuZXIoY29udGV4dCkKLSAgICAgICAgLCBtX3Zl
bG9jaXR5KDAsIDAsIDApCi0gICAgeyB9Ci0KLSAgICBib29sIGlzV2ViS2l0QXVkaW9MaXN0ZW5l
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UG9pbnQzRCBtX3Zl
bG9jaXR5OwotICAgIGRvdWJsZSBtX2RvcHBsZXJGYWN0b3IgeyAxLjAgfTsKLSAgICBkb3VibGUg
bV9zcGVlZE9mU291bmQgeyAzNDMuMyB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvTGlzdGVu
ZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXIm
IGxpc3RlbmVyKSB7IHJldHVybiBsaXN0ZW5lci5pc1dlYktpdEF1ZGlvTGlzdGVuZXIoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE4NjQyZDE0M2VlODFlNjRjZTdjY2M0ZmQ1NTQyZGNkMThmZGYxYjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAot
XSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9MaXN0ZW5lciB7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCBkb3BwbGVyRmFjdG9yOyAgLy8gc2FtZSBhcyBPcGVuQUwgKGRlZmF1bHQgMS4w
KQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgc3BlZWRPZlNvdW5kOyAgIC8vIGlu
IG1ldGVycyAvIHNlY29uZCAoZGVmYXVsdCAzNDMuMykKLQotICAgIHVuZGVmaW5lZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeiwgdW5y
ZXN0cmljdGVkIGZsb2F0IHhVcCwgdW5yZXN0cmljdGVkIGZsb2F0IHlVcCwgdW5yZXN0cmljdGVk
IGZsb2F0IHpVcCk7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyNDQwYTk0ZWZj
OTFkMjAyZThjNDkzN2ZkZjc3NzU5N2E2ODE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvQ29u
dGV4dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2Rl
T3V0cHV0LmgiCi0jaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFJU
RlBhbm5lci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktp
dEF1ZGlvUGFubmVyTm9kZSk7Ci0KLXN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQotewot
ICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCi0gICAgICAgIHggPSAwLjA7
Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktp
dEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBOb2RlVHlw
ZVBhbm5lcikKLXsKLSAgICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxD
b3VudE1vZGU6OkNsYW1wZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwot
Ci0gICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24n
dCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0
YWJhc2UuCi0gICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgp
KTsKLQotICAgIGFkZElucHV0KCk7Ci0gICAgYWRkT3V0cHV0KDIpOwotCi0gICAgbV9wb3NpdGlv
biA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKLSAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2lu
dDNEKDEsIDAsIDApOwotICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Ci0K
LSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1
ZGlvUGFubmVyTm9kZSgpCi17Ci0gICAgdW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0g
ICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRp
b1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rp
b25zIGFyZSBtYWRlLgotICAgIC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBt
YWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hp
ZnQgcGl0Y2ggY2hhbmdlcy4KLSAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgp
LmNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4
dCgpLmNvbm5lY3Rpb25Db3VudCgpOwotCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91
Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KLSAgICAgICAgSGFzaFNldDxBdWRpb05vZGUq
PiB2aXNpdGVkTm9kZXM7Ci0gICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9k
ZSh0aGlzLCB2aXNpdGVkTm9kZXMpOwotICAgIH0KLQotICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0
cyhmcmFtZXNUb1Byb2Nlc3MpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
biA9IG91dHB1dCgwKS0+YnVzKCk7Ci0KLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5w
dXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdldCgpKSB7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBdWRpb0J1cyog
c291cmNlID0gaW5wdXQoMCktPmJ1cygpOwotICAgIGlmICghc291cmNlKSB7Ci0gICAgICAgIGRl
c3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBIUlRG
RGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBh
dWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgotICAgIGlmIChwYW5u
aW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxv
YWRlci0+aXNMb2FkZWQoKSkgewotICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRl
eHQoKSkKLSAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhy
ZWFkQ29tcGxldGlvbigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9u
LT56ZXJvKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHRy
eUhvbGRMb2NrKCkgaW5zdGVhZC4KLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fcHJv
Y2Vzc0xvY2spOwotICAgIGlmICghbG9ja2VyKSB7Ci0gICAgICAgIC8vIFRvbyBiYWQgLSB0cnlI
b2xkTG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo
ZSBwYW5uZXIuCi0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCi0gICAgZG91YmxlIGF6
aW11dGg7Ci0gICAgZG91YmxlIGVsZXZhdGlvbjsKLSAgICBnZXRBemltdXRoRWxldmF0aW9uKCZh
emltdXRoLCAmZWxldmF0aW9uKTsKLSAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlv
biwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIC8vIEdldCB0
aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KLSAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFu
Y2VDb25lR2FpbigpOwotCi0gICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZS4KLSAgICBkZXN0aW5h
dGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sIHRvdGFsR2Fpbik7Ci19Ci0KLXZv
aWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoaXNJbml0
aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3Jl
YXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdl
dCgpKTsKLQotICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYW5uZXIgPSBudWxscHRyOwotICAgIEF1ZGlv
Tm9kZTo6dW5pbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvTGlzdGVuZXImIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQotewotICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVu
ZXIoKTsKLX0KLQotdm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQ
YW5uaW5nTW9kZWxUeXBlIG1vZGVsKQotewotICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9k
ZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKLSAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9j
ayk7Ci0KLSAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0
ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7Ci0gICAgICAgIG1fcGFubmluZ01vZGVs
ID0gbW9kZWw7Ci0gICAgfQotfQotCi1EaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PFdl
YktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Ci19
Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNl
TW9kZWxUeXBlIG1vZGVsKQotewotICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWws
IHRydWUpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZh
dGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQotewotICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJs
ZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0K
LSAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNl
LWxpc3RlbmVyIHZlY3RvcgotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlz
dGVuZXIoKS5wb3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBv
c2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOwotCi0gICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlz
WmVybygpKSB7Ci0gICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAotICAgICAgICAqb3V0QXppbXV0aCA9IDAuMDsKLSAg
ICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwotCi0gICAgLy8gQWxpZ24gYXhlcwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS5vcmllbnRhdGlvbigpOwotICAg
IEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS51cFZlY3RvcigpOwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVw
KTsKLSAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOwotCi0gICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKLSAgICBsaXN0ZW5lckZyb250Tm9ybS5u
b3JtYWxpemUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3Mo
bGlzdGVuZXJGcm9udE5vcm0pOwotCi0gICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlz
dGVuZXIuZG90KHVwKTsKLQotICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3Vy
Y2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOwotICAgIHByb2plY3RlZFNvdXJjZS5ub3Jt
YWxpemUoKTsKLQotICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBh
dm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQg
dGhlIGxpc3RlbmVyCi0gICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3Qo
bGlzdGVuZXJGcm9udE5vcm0pOwotICAgIGlmIChmcm9udEJhY2sgPCAwLjApCi0gICAgICAgIGF6
aW11dGggPSAzNjAuMCAtIGF6aW11dGg7Ci0KLSAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUg
dG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCi0gICAgaWYgKChhemlt
dXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQotICAgICAgICBhemltdXRoID0gOTAu
MCAtIGF6aW11dGg7Ci0gICAgZWxzZQotICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRo
OwotCi0gICAgLy8gRWxldmF0aW9uCi0gICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAu
MCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5z
KGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICBpZiAoZWxldmF0aW9u
ID4gOTAuMCkKLSAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247Ci0gICAgZWxz
ZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCi0gICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVs
ZXZhdGlvbjsKLQotICAgIGlmIChvdXRBemltdXRoKQotICAgICAgICAqb3V0QXppbXV0aCA9IGF6
aW11dGg7Ci0gICAgaWYgKG91dEVsZXZhdGlvbikKLSAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVs
ZXZhdGlvbjsKLX0KLQotZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgp
Ci17Ci0gICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKLQotICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdl
ZC4uLgotICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS5kb3BwbGVyRmFjdG9y
KCk7Ci0KLSAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgewotICAgICAgICBkb3VibGUgc3Bl
ZWRPZlNvdW5kID0gbGlzdGVuZXIoKS5zcGVlZE9mU291bmQoKTsKLQotICAgICAgICBjb25zdCBG
bG9hdFBvaW50M0QmIHNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAgICAgICAgY29uc3Qg
RmxvYXRQb2ludDNEJiBsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS52ZWxvY2l0eSgpOwot
Ci0gICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2
ZSBubyB2ZWxvY2l0eQotICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZl
bG9jaXR5LmlzWmVybygpOwotICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlz
dGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKLQotICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkg
fHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgewotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBz
b3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCi0gICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVu
ZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICAgICAgICAgIEZsb2F0UG9p
bnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247Ci0K
LSAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlz
dGVuZXIubGVuZ3RoKCk7Ci0KLSAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24g
PSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVy
TWFnbml0dWRlOwotICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VU
b0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsK
LQotICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsK
LSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsKLQotICAg
ICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBs
ZXJGYWN0b3I7Ci0gICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0
ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Ci0gICAgICAgICAgICBzb3VyY2VQ
cm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKLQotICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVy
RmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFj
dG9yICogc291cmNlUHJvamVjdGlvbikpOwotICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hp
ZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgICAgICAgICAvLyBMaW1pdCB0aGUg
cGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KLSAgICAg
ICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQotICAgICAgICAgICAgICAgIGRvcHBsZXJT
aGlmdCA9IDE2LjA7Ci0gICAgICAgICAgICBlbHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkK
LSAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxlclNoaWZ0KTsKLX0KLQotZmxv
YXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKLXsKLSAgICBGbG9h
dFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICBG
bG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOwotCi0gICAgZG91YmxlIGxp
c3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRp
b24pOwotICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlz
dGVuZXJEaXN0YW5jZSk7Ci0KLSAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGlu
ZyBjb25lR2FpbgotICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJj
ZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKLQotICAgIHJldHVy
biBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBu
b2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpCi17Ci0gICAgQVNTRVJUKG5v
ZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmlyc3QgY2hl
Y2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBp
dCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4g
aW50byBhY2NvdW50LgotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9C
dWZmZXJTb3VyY2UpIHsKLSAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3Vy
Y2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsK
LSAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytp
KSB7Ci0gICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsK
LQotICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBj
b25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25u
ZWN0aW9ucygpOyArK2opIHsKLSAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5l
Y3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7Ci0gICAgICAgICAgICAgICAg
QXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2aXNpdGVkTm9k
ZXMuYWRkKGNvbm5lY3RlZE5vZGUpOwotICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNl
c0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6
cmVxdWlyZXNUYWlsUHJvY2Vzc2luZygpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhlcmUncyBubyBp
bnRlcm5hbCBwYW5uZXIgbWV0aG9kIHNldCB1cCB5ZXQsIGFzc3VtZSB3ZSByZXF1aXJlIHRhaWwK
LSAgICAvLyBwcm9jZXNzaW5nIGluIGNhc2UgdGhlIEhSVEYgcGFubmVyIGlzIHNldCBsYXRlciwg
d2hpY2ggZG9lcyByZXF1aXJlIHRhaWwKLSAgICAvLyBwcm9jZXNzaW5nLgotICAgIHJldHVybiAh
bV9wYW5uZXIgfHwgbV9wYW5uZXItPnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTRiYjAyZDJkNmI3NWUwOWE0
OTFhYmFhZjIxMWJmOTRkMDQwZmFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlv
Tm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKLSNpbmNsdWRlICJDb25lLmgiCi0jaW5j
bHVkZSAiRGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNpbmNsdWRlICJQ
YW5uZXIuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJL
aXRBdWRpb0xpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7Ci0KLS8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2Rl
IHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgotLy8gSXQgcG9zaXRpb25zIGEgc291bmQg
aW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5p
bmcgbW9kZWwuCi0vLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qg
c3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBv
ZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCi0vLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxs
IGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBs
aXN0ZW5lci4KLS8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBBbGwgb2YgdGhl
c2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4K
LQotY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOwotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0
QXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKLQotICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpj
b250ZXh0KCkpOyB9Ci0gICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRl
eHQoKSk7IH0KLQotICAgIC8vIEF1ZGlvTm9kZQotICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKLQotICAgIC8vIExpc3RlbmVyCi0gICAg
V2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKTsKLQotICAgIC8vIFBhbm5pbmcgbW9kZWwK
LSAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9Ci0gICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7
Ci0KLSAgICAvLyBQb3NpdGlvbgotICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQotCi0g
ICAgLy8gT3JpZW50YXRpb24KLSAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwg
eik7IH0KLQotICAgIC8vIFZlbG9jaXR5Ci0gICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29u
c3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9
Ci0KLSAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCi0gICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1v
ZGVsVHlwZSk7Ci0KLSAgICBkb3VibGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNl
RWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KLSAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSBy
ZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNl
KTsgfQotCi0gICAgZG91YmxlIG1heERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVj
dC5tYXhEaXN0YW5jZSgpOyB9Ci0gICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlz
dGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0K
LQotICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5y
b2xsb2ZmRmFjdG9yKCk7IH0KLSAgICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxv
ZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0
b3IpOyB9Ci0KLSAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCi0gICAgZG91
YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5n
bGUoKTsgfQotICAgIHZvaWQgc2V0Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29u
ZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckFu
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQotICAgIHZv
aWQgc2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRl
ckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJl
dHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCk7IH0KLSAgICB2b2lkIHNldENvbmVPdXRlckdh
aW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9Ci0K
LSAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUq
IG91dEVsZXZhdGlvbik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKLQotICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KLSAgICBi
b29sIHJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0Jik7Ci0K
LSAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVu
dWF0aW9uLgotICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKLQotICAgIC8vIE5vdGlmaWVz
IGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0
bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgotICAgIC8vIFRoaXMgaXMgaW4g
b3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxl
ciBzaGlmdC4KLSAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRp
b05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7Ci0gICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5p
bmdNb2RlbCB7IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgfTsKLQotICAgIEZsb2F0UG9pbnQzRCBt
X3Bvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOwotICAgIEZsb2F0UG9p
bnQzRCBtX3ZlbG9jaXR5OwotCi0gICAgLy8gR2FpbgotICAgIERpc3RhbmNlRWZmZWN0IG1fZGlz
dGFuY2VFZmZlY3Q7Ci0gICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7Ci0KLSAgICAvLyBIUlRG
IERhdGFiYXNlIGxvYWRlcgotICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRh
dGFiYXNlTG9hZGVyOwotCi0gICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07Ci0K
LSAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNo
IGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KLSAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2FiM2Y0ZThiZWYxZjgwNWEwOWQyNWJk
ZjVhMTU5MmZhNWEyZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdl
YkF1ZGlvLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Vi
a2l0QXVkaW9QYW5uZXJOb2RlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgewotICAgIC8vIERlZmF1bHQgbW9kZWwgZm9y
IHN0ZXJlbyBpcyBIUlRGCi0gICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01v
ZGVsOwotCi0gICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQotICAg
IHVuZGVmaW5lZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVk
IGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50
YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeik7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBm
bG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotCi0g
ICAgLy8gRGlzdGFuY2UgbW9kZWwKLSAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbDsKLQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3Rh
bmNlOwotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOwotICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7Ci0KLSAgICAvLyBE
aXJlY3Rpb25hbCBzb3VuZCBjb25lCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
Y29uZUlubmVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91
dGVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2Fp
bjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZGM1M2M2ODBiMTY0MzMwYTA4MWZjMWE2Njg3YTc2NTliNmZiZTRmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoY29udGV4dCkpOwotICAgIH0KLQotICAgIEF1ZGlvUGFyYW0mIGxlZ2FjeVJlZHVjdGlvbigp
IHsgcmV0dXJuIG1fbGVnYWN5UmVkdWN0aW9uLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmIGNv
bnRleHQpCi0gICAgICAgIDogRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0KQotICAgICAg
ICAsIG1fbGVnYWN5UmVkdWN0aW9uKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicmVkdWN0
aW9uIl9zLCAwLCAtMjAsIDAsIEF1dG9tYXRpb25SYXRlOjpLUmF0ZSkpCi0gICAgewotICAgICAg
ICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxDb3VudE1vZGU6OkNsYW1w
ZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwotICAgIH0KLQotICAgIHZv
aWQgc2V0UmVkdWN0aW9uKGZsb2F0IHJlZHVjdGlvbikgZmluYWwKLSAgICB7Ci0gICAgICAgIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnNldFJlZHVjdGlvbihyZWR1Y3Rpb24pOwotICAgICAgICBt
X2xlZ2FjeVJlZHVjdGlvbi0+c2V0VmFsdWUocmVkdWN0aW9uKTsKLSAgICB9Ci0KLSAgICBSZWY8
QXVkaW9QYXJhbT4gbV9sZWdhY3lSZWR1Y3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNThjMDRlMWQzZmM3ZDZjM2JkYmIyYWYwOTc4NmJhYTI3MDExNDk2MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdF
Ql9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8sCi0gICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJm
YWNlIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHJhdGlvOyAvLyB1bml0LWxlc3MKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBhdHRhY2s7IC8vIGluIFNlY29uZHMKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSByZWxlYXNlOyAvLyBpbiBTZWNvbmRzCi0gICAgW0lt
cGxlbWVudGVkQXM9bGVnYWN5UmVkdWN0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJh
bSByZWR1Y3Rpb247IC8vIGluIERlY2liZWxzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNWYyMWRmNzliNDY1MWI0M2ExZjM3ZGEz
MWE5YjVhZGU4NTA4OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAi
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxl
UmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IFdlYktpdEF1ZGlv
Q29udGV4dChkb2N1bWVudCwgc2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQotewot
fQotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Ojp+V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCgpID0gZGVmYXVsdDsKLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3Igd29ya2Vycy4KLSAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgaWYgKCFudW1iZXJPZkNo
YW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlz
U3VwcG9ydGVkU2FtcGxlUmF0ZShzYW1wbGVSYXRlKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFN5bnRheEVycm9yIH07Ci0gICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6
Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAg
ICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVy
cm9yIH07Ci0KLSAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHNhbXBsZVJhdGUs
IHJlbmRlclRhcmdldC5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgYXVkaW9Db250ZXh0LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gYXVkaW9Db250ZXh0OwotfQotCi1jb25zdCBjaGFy
KiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQiOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMDcyMmQzZDM4Mjlm
NDk5ZGFjZWM4ZjhjY2FkODlhYjIzNWM4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVkaW9Db250ZXh0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB+V2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsK
LQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1
YWE2NDkyODhlMGFlN2FlOTUxMWUyOGMwZjkxNzVhYzhhNzIzN2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBJbnRlcmZhY2VOYW1lPXdl
YmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBX
ZWJLaXRBdWRpb0NvbnRleHQgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTg2NTUwYzIzYWJmMTU0
NjJlZDg3OGNiYzFkNDc5MTEzNmJlMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2Np
bGxhdG9yTm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgotI2luY2x1ZGUgIldl
YktpdEF1ZGlvQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktp
dE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIE9zY2lsbGF0b3JOb2RlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9zY2lsbGF0b3JOb2RlPj4gY3JlYXRl
KFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYktpdE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldFdlYktpdFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHdhdmUpCi0gICAgewotICAg
ICAgICBpZiAoIXdhdmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNldFBlcmlvZGlj
V2F2ZSgqd2F2ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYktpdE9zY2ls
bGF0b3JOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBPc2NpbGxh
dG9yTm9kZShjb250ZXh0KQotICAgIHsKLSAgICAgICAgc2V0VHlwZShPc2NpbGxhdG9yVHlwZTo6
U2luZSk7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRPc2NpbGxhdG9yTm9kZSI7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNlYjRhYjk5ODFiZTlkMDkwMDc0Y2YyMTQ5NTU2ZjlmYWZkYzAxYmQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAsIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBBY3RpdmVET01PYmplY3QsCi0g
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8m
UHJlZml4ZWRXZWJBdWRpbywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKLSAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlw
ZTsKLQotICAgIC8vIFBsYXliYWNrIHN0YXRlIGNvbnN0YW50cy4KLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBVTlNDSEVEVUxFRF9TVEFURSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NU
QVRFID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7Ci0K
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZTsKLQot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCi0K
LSAgICBbSW1wbGVtZW50ZWRBcz1zZXRXZWJLaXRQZXJpb2RpY1dhdmVdIHVuZGVmaW5lZCBzZXRQ
ZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlPyB3YXZlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI3
ZjI5OWI2YmUyMTQwYjg1ODJlZTczZjQ3MzNlZGM4NDEyZDkyODQuLjBlMzBlMDllYzIwZWM1NmRk
NDM0MTkxN2FiNDRjNjIwMTVmNWY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yODIsOSArMjgyLDYg
QEAgTW9kdWxlcy93ZWJhdWRpby9TdGVyZW9QYW5uZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKLU1vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcAotTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb1Bhbm5lck5vZGUuY3BwCi1Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Uu
Y3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTM3
NzcsMTkgKzM3NzQsMTIgQEAgSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUu
Y3BwCiBKU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAK
LUpTV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAotSlNXZWJLaXRBdWRpb0NvbnRleHQu
Y3BwCi1KU1dlYktpdEF1ZGlvTGlzdGVuZXIuY3BwCi1KU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAKLUpTV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKIEpTV2ViS2l0TWVkaWFLZXlF
cnJvci5jcHAKIEpTV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwCiBKU1dlYktpdE1lZGlh
S2V5TmVlZGVkRXZlbnQuY3BwCiBKU1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKIEpTV2ViS2l0
TWVkaWFLZXlzLmNwcAogSlNXZWJLaXROYW1lc3BhY2UuY3BwCi1KU1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuY3BwCi1KU1dlYktpdE9zY2lsbGF0b3JOb2RlLmNwcAogSlNXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFjMzU5MTkwMmIxMjBiZDNhYjA2MGJkOGM1YjFiN2Yy
YWIzYzE3YjkuLjdlMDNjNzlkMDFmZjAzMDBmODllNjhhOTRkNTNmNWUzNTNlNDcwNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI1MjUsMTMgKzI1MjUsMTAgQEAKIAkJODMwQTFDN0QyNERCNzg4QjAwMkVDQ0FEIC8qIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMwQTFDN0MyNERCNzg3MDAwMkVDQ0FEIC8qIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlT3B0aW9ucy5oICovOyB9OwogCQk4MzBBMzZCRDFEQUM1RkFEMDA2RDdEMDkg
LyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMwQTM2QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQu
aCAqLzsgfTsKIAkJODMwRDBCNjkyNEY1N0Q2NzAwN0VEMTIyIC8qIElJUlByb2Nlc3Nvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwRDBCNjYyNEY1
N0Q1MDAwN0VEMTIyIC8qIElJUlByb2Nlc3Nvci5oICovOyB9OwotCQk4MzBFRUFCQTI0REI2QTY0
MDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwRUVBQjcyNERCNkE1MjAwOUVGQkNF
IC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLzsgfTsKIAkJODMxMDJCMjcxRjlF
QUREOTAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5
IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFGQUEyRTk1
MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVy
Sm9iUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4MzEyMEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFDNTZFODNB
MDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CiAJCTgzMTk4RkJGMjRBMTYwREQw
MDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzE5OEZCRTI0QTE2MEMxMDA0MjBCMDUgLyogQmFzZUF1ZGlv
Q29udGV4dC5oICovOyB9OwotCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
Ki87IH07Ci0JCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICov
OyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdF
QTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07CiAJCTgzMjZCRjhFMjREMzVD
MzMwMDFGOEE4NSAvKiBPdmVyU2FtcGxlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODMyNkJGODkyNEQzNUMyMDAwMUY4QTg1IC8qIE92ZXJTYW1w
bGVUeXBlLmggKi87IH07CiAJCTgzMjZCRjhGMjREMzVDMzkwMDFGOEE4NSAvKiBXYXZlU2hhcGVy
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMyNkJGOEMyNEQzNUMyMDAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmggKi87IH07CkBA
IC0yNTQ1LDkgKzI1NDIsNyBAQAogCQk4MzNCRDgxODI1MjRENEY1MDA2RTcyQjMgLyogV29ya2xl
dEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzM0JEODE2MjUyNEQ0RTMwMDZFNzJCMyAvKiBXb3JrbGV0R2xvYmFsU2NvcGVQ
cm94eS5oICovOyB9OwogCQk4MzNCRDgxRDI1MjRENTMwMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzM0JEODE5MjUyNEQ1MUIwMDZFNzJCMyAvKiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5o
ICovOyB9OwogCQk4MzNCRDgxRTI1MjRENTM0MDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzM0JEODFCMjUyNEQ1MUMwMDZFNzJCMyAvKiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
ICovOyB9OwotCQk4MzNEMUM3NjI0RDhENTRGMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzNEMUM3MzI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmggKi87IH07CiAJCTgzNDA3RkMxMUU4RDlDMTcwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdl
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzQwN0ZDMDFFOEQ5QzEyMDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTgzNDNEOTg0MjRE
MERFRTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0M0Q5ODEyNEQwREVBOTAwOUFCRDQ5IC8q
IFdlYktpdE9zY2lsbGF0b3JOb2RlLmggKi87IH07CiAJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNUVC
MCAvKiBKU1Njcm9sbExvZ2ljYWxQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOUIzMDExREE1QTUxRTAwRkZEOEQ0IC8qIEpTU2Nyb2xs
TG9naWNhbFBvc2l0aW9uLmggKi87IH07CiAJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNUVDMSAvKiBK
U1Njcm9sbEludG9WaWV3T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNFOUIzMDExREE1QTUxRTAwRkZEOEU1IC8qIEpTU2Nyb2xsSW50b1Zp
ZXdPcHRpb25zLmggKi87IH07CiAJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNkVCMCAvKiBKU1Njcm9s
bEJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0U5QjMwMTFEQTVBNTFFMDBGRkU4RDQgLyogSlNTY3JvbGxCZWhhdmlvci5oICovOyB9OwpA
QCAtMjU2MCw3ICsyNTU1LDYgQEAKIAkJODM1MDUxQTQyNEY1NzNDNDAwOTkxMUQ3IC8qIElJUkZp
bHRlck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNTA1MUEyMjRGNTczQUYwMDk5MTFENyAvKiBJSVJGaWx0ZXJOb2RlLmggKi87IH07CiAJCTgz
NTA1MUE1MjRGNTczQzgwMDk5MTFENyAvKiBJSVJGaWx0ZXJPcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUwNTFBMDI0RjU3M0FFMDA5OTEx
RDcgLyogSUlSRmlsdGVyT3B0aW9ucy5oICovOyB9OwogCQk4MzUyMEM3RTFBNzFCRkNDMDA2QkQy
QUEgLyogQ1NTRm9udEZhbWlseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4MzU2Rjk3
RjI0RDlGODE4MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1NkY5N0UyNEQ5RjgwOTAwNkMzRTQx
IC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCAqLzsgfTsKIAkJODM1OENCNzAxQzUzMjc3NTAwRTBD
MkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzRjU3MEFEMUM1MzI2OEUwMDdGRDZDQiAvKiBKU1hNTERvY3VtZW50Lmgg
Ki87IH07CiAJCTgzNUQyRDc4MUY1RjFGQkQwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50RW50
cmllc0FQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM1RDJENzUxRjVGMUZCODAwMTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmgg
Ki87IH07CiAJCTgzNUQzNjM3MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNUQzNjM2
MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20uaCAqLzsgfTsKQEAgLTI2MTMs
NyArMjYwNyw2IEBACiAJCTgzQTJBQkRCMjREODZERTAwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTJBQkQ4
MjREODZEQzYwMEUyRDczRCAvKiBEZWxheU9wdGlvbnMuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFC
QkZFNTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMg
LyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0FDRDAxMzI1MjI5RTEwMDAwRDEyNEUgLyogV29ya2xl
dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQUNEMDEwMjUyMjlFMDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oICovOyB9OwotCQk4
M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEw
MEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9k
ZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMx
RjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAw
NEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxl
QnVpbGRlckNvbnZlcnRlci5oICovOyB9OwpAQCAtMTA5MzgsNyArMTA5MzEsNiBAQAogCQk4MzAw
MzBGMzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMz
QTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzAwM0Uy
QjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDA1RjlBMjRFQjFEMjgwMDQ4MEY5QiAvKiBBdWRpb1Rp
bWVzdGFtcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RpbWVzdGFtcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzAwNUY5QzI0RUIxRDI5MDA0ODBGOUIgLyogQXVkaW9UaW1lc3Rh
bXAuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEF1ZGlvVGltZXN0YW1wLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMwMzM0RkIxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDk2Miw4
ICsxMDk1NCw2IEBACiAJCTgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJ
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW91c2VFdmVudEluaXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwRDBCNjYyNEY1N0Q1MDAwN0VEMTIy
IC8qIElJUlByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJSVJQcm9jZXNzb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwRDBCNjgyNEY1N0Q1MDAwN0VEMTIyIC8qIElJUlBy
b2Nlc3Nvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJSVJQcm9jZXNzb3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4MzBFRUFCNzI0REI2QTUyMDA5RUZCQ0UgLyogV2ViS2l0
RHluYW1pY3NDb21wcmVzc29yTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXREeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMEVFQUI5MjRE
QjZBNTIwMDlFRkJDRSAvKiBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdl
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDJCMjUxRjlFQURDMjAw
RTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1Nl
cnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTcyLDEy
ICsxMDk2Miw2IEBACiAJCTgzMTk4RkJEMjRBMTYwQzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250
ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCYXNlQXVkaW9Db250ZXh0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxOThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJh
c2VBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1
ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFBM0VBODI1M0Y3
OEMyMDA2NzgwNEYgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkg
LyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFC
NjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAv
KiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMUI2MTc0MjQ5
OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2
QzMxRjlFRTVFMDAwRUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdl
RXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFD
NTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDA4LDExICsxMDk5Miw3IEBACiAJCTgzM0JEODFCMjUyNEQ1
MUMwMDZFNzJCMyAvKiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzNCRDgxQzI1MjRENTFEMDA2RTcyQjMgLyogQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzNDRjcwRjIwREIzRjVGMDAxNDFCQ0MgLyogSlNQZXJmb3JtYW5jZU9ic2Vy
dmVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVy
Zm9ybWFuY2VPYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTgzM0QxQzczMjREOEQ1MzMwMEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzM0QxQzc1MjREOEQ1MzMwMEU4MTNERiAvKiBXZWJLaXRB
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNDA3RkMwMUU4RDlDMTIwMEUw
NDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJODM0M0Q5ODEyNEQwREVBOTAwOUFCRDQ5IC8qIFdlYktpdE9zY2lsbGF0b3JOb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9zY2lsbGF0b3JOb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTgzNDNEOTgzMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxh
dG9yTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ29sbGVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNDhCRkFBMUI4NTcyOTUw
MDkxMkYzNiAvKiBDbGFzc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2xhc3NDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
NEE2QTM4MjUyNjg0NDEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrbGV0UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTEwNDMsOCArMTEwMjMsNiBAQAogCQk4MzUwQzNFODFEQTU5QjYy
MDAzNTY0NDYgLyogU2Nyb2xsVG9PcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
Y3JvbGxUb09wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3
RDFBNzFCRkNDMDA2QkQyQUEgLyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDU1NGb250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzNTY1N0M2MUVDQUIwRTgwMENERTcyRCAvKiBKU0RPTU1hdHJpeEluaXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01NYXRyaXhJbml0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1NkY5N0MyNEQ5RjgwODAwNkMzRTQxIC8qIFdl
YktpdEF1ZGlvTGlzdGVuZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvTGlzdGVuZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzU2Rjk3RTI0RDlGODA5MDA2QzNFNDEgLyogV2Vi
S2l0QXVkaW9MaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0xpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNUFBMzg4MjUzRjU1QkIwMDc0NjU1NCAv
KiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzVCNjgwRTFGNTQ4QkRFMDA3MUY3RjYgLyog
SlNGaWxlU3lzdGVtRW50cnlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNGaWxlU3lzdGVtRW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzVEMkQ3NDFGNUYxRkI4MDAxNDFERUQgLyogSFRNTElucHV0RWxlbWVudCtF
bnRyaWVzQVBJLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiSFRNTElucHV0RWxlbWVudCtF
bnRyaWVzQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE1NSw4ICsx
MTEzMyw2IEBACiAJCTgzQThBQzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0FDRDAxMDI1MjI5
RTA0MDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV29ya2xldE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBQ0QwMTIyNTIyOUUwNDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXb3JrbGV0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBX
ZWJLaXRBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlv
Q29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDA5MUZBMTE4
MUMwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5IC8qIEpTU2Vydmlj
ZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzQjVEQTQ1MUZBOTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRvckN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvckN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTE0MywyMyArMzExMTksNiBAQAog
CQkJCTgzMjZCRjhEMjREMzVDMjEwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9ucy5pZGwgKi8s
CiAJCQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
ICovLAogCQkJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29y
LmggKi8sCi0JCQkJODMzRDFDNzMyNEQ4RDUzMzAwRTgxM0RGIC8qIFdlYktpdEF1ZGlvQnVmZmVy
U291cmNlTm9kZS5oICovLAotCQkJCTgzM0QxQzc1MjREOEQ1MzMwMEU4MTNERiAvKiBXZWJLaXRB
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsICovLAotCQkJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5
NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovLAotCQkJCTgzQjFBNkZGMjQ5OTg1RDAwMEZF
NTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLywKLQkJCQk4M0IxQTcwMTI0OTk4NUQwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLywKLQkJCQk4MzU2Rjk3RTI0RDlGODA5
MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5lci5oICovLAotCQkJCTgzNTZGOTdDMjREOUY4
MDgwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCAqLywKLQkJCQk4MzFCNjE3MTI0
OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLywKLQkJCQk4MzFC
NjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8sCi0JCQkJ
ODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8s
Ci0JCQkJODMwRUVBQjcyNERCNkE1MjAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCAqLywKLQkJCQk4MzBFRUFCOTI0REI2QTUyMDA5RUZCQ0UgLyogV2ViS2l0RHluYW1p
Y3NDb21wcmVzc29yTm9kZS5pZGwgKi8sCi0JCQkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8q
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovLAotCQkJCTgzMUI2MTc1MjQ5OUE1OUQw
MEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8sCi0JCQkJODMxQjYxNzIy
NDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovLAotCQkJ
CTgzNDNEOTgxMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oICovLAot
CQkJCTgzNDNEOTgzMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTM1Nzk5LDIwICszNTc1OCwxMyBAQAogCQkJCUE1ODRGRTMwMTg2NENCODQwMDg0M0Ix
MCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0ODIy
MzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzM0QxQzc2MjREOEQ1NEYwMEU4MTNERiAvKiBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzQjFBNzAy
MjQ5OTg1RjAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTgzNTZGOTdGMjREOUY4MTgwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIg
LyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzBFRUFCQTI0REI2
QTY0MDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYgLyog
V2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNEUx
REE2M0E4RTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQwNjIxNTAxREE2M0E5NDAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyMjczMjEyMEM5RkFGRTAwREIxREVGIC8qIFdlYktp
dE5TSW1hZ2VFeHRyYXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzMUI2MTc3MjQ5OUE1QkYwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQk4
MzQzRDk4NDI0RDBERUU5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTRCRDc5NTBGNTVD
OEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1
MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGMxYmUzZGU4M2JmZTY4MWY3
Y2IzZWRjNWQzM2E5YTZlMjA2Njc0ZjQuLjVlNGM5YzMzNjAwOGYyZmJhNTMxMDM1NDQ2ZDJlNTJj
NTY0YTZmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI5NSw4ICsy
OTUsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotI2luY2x1ZGUgIkJhc2VB
dWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJBdWRpb0NvbnRleHQuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKQEAgLTQzODQsMTcgKzQzODMsMTAgQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJ
c0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLXZvaWQgSW50
ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFyaWFudDxSZWZQdHI8
QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFu
dCwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCit2b2lkIEludGVybmFsczo6c2V0QXVk
aW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgU3RyaW5nVmlldyBy
ZXN0cmljdGlvbnNTdHJpbmcpCiB7Ci0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gY29udGV4dDsK
LSAgICBzd2l0Y2hPbihjb250ZXh0VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVu
dHJ5KSB7Ci0gICAgICAgIGNvbnRleHQgPSBlbnRyeTsKLSAgICB9LCBbJl0oUmVmUHRyPFdlYktp
dEF1ZGlvQ29udGV4dD4gZW50cnkpIHsKLSAgICAgICAgY29udGV4dCA9IGVudHJ5OwotICAgIH0p
OwotCi0gICAgYXV0byByZXN0cmljdGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9u
cygpOwotICAgIGNvbnRleHQtPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25z
KTsKKyAgICBhdXRvIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JSZXN0cmljdGlvbnMo
KTsKKyAgICBjb250ZXh0LnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsK
IAogICAgIHJlc3RyaWN0aW9ucyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CiAKQEAg
LTQ0MDYsNyArNDM5OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmlj
dGlvbnMoY29uc3QgVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwKICAgICAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAicmVxdWlyZXBh
Z2Vjb25zZW50Zm9yYXVkaW9zdGFydCIpKQogICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1
ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOwog
ICAgIH0KLSAgICBjb250ZXh0LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7
CisgICAgY29udGV4dC5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjp1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDMzZDAzY2IxMjFlNDEyNTdjYjVhOTg2OGQ5NDJlZThi
MDBiY2U3NTUuLmFjZjc2NmMyYjkyNzA3YTI3MzJiOTdiZmUyYTNiYzY1M2ZkYzI5YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTEwLDcgKzExMCw2IEBAIGNsYXNzIFVuc3Vz
cGVuZGFibGVBY3RpdmVET01PYmplY3Q7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiBjbGFzcyBXZWJB
bmltYXRpb247CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7Ci1jbGFzcyBXZWJLaXRBdWRp
b0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94eTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCkBA
IC03MTQsNyArNzEzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQotICAgIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVm
UHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1Zp
ZXcgcmVzdHJpY3Rpb25zU3RyaW5nKTsKKyAgICB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0
aW9ucyhBdWRpb0NvbnRleHQmLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZyk7CiAgICAg
dm9pZCB1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDEzZjVlMGY0ODQ2OWI5MWFjOGZhNzRlOTQ4YTZh
ODNiNmIyMTYwZGQuLjBlMDE0YjgwZjI3M2VjZDg1MDMwYWRkODU4MTZkYmZlYWIzNjkwYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTczNyw3ICs3MzcsNyBAQCBlbnVt
IFRyZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYVNl
c3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSwgRE9NU3RyaW5nIHJlc3RyaWN0
aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVz
dHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10g
dW5kZWZpbmVkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVs
ZW1lbnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJfQVVE
SU9dIHVuZGVmaW5lZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBv
ciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwor
ICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHVuZGVmaW5lZCBzZXRBdWRpb0NvbnRleHRSZXN0
cmljdGlvbnMoQXVkaW9Db250ZXh0IGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwog
ICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFu
ZChET01TdHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50
ID0gMCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZShib29sZWFuIHNob3VsZFBhdXNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCAyYWJkNmM1MWMyYTZmNWEyNzYxMjRmMjlkYzdmY2Q1YzMwZDA4ZWRkLi5j
MTliM2Y5ZWQ1NWE5YTRlMzUyY2JkODFhOTM2NGNjOWZjZGJjNmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtNTUzNCw3ICs1NTM0LDYgQEAgSFJFU1VMVCBXZWJWaWV3Ojpu
b3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQog
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5zZXRXZWJBdWRpb0VuYWJsZWQo
dHJ1ZSk7Ci0gICAgc2V0dGluZ3Muc2V0UHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoZmFsc2UpOwog
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCiAKICNpZiBFTkFCTEUoV0VCR0wpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428695</attachid>
            <date>2021-05-14 17:50:15 -0700</date>
            <delta_ts>2021-05-14 18:42:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225832-20210514175014.patch</filename>
            <type>text/plain</type>
            <size>128483</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkMDM5YzY1MjhjNjliYWNhZDk3OTVh
MzU1ZTUxMTMwZmQ4MzdhYTYuLmU0M2IyMTFkYzQ1NzFjNmFiMGViZWRiY2FjOTFkZWZmMjkyOTE2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlvIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEcm9wIHByZWZlcmVuY2UgZm9yIHByZWZpeGVkIFdlYkF1ZGlvLCB3aGljaCB3YXMgZGlz
YWJsZWQgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVT
eXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2IxNWUxOTc3OTU3Nzc3NWY5OGMyZDIzODkwOWFhZTgwZGE3ZWExYy4u
OGMwMWVkMzQ2MWY5OThhNmNmYjVlY2JhOTM5YzdhZTUyOWU3NmY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY5IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBs
ZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlvbiBub3cgdGhhdCBpdCBpcyBu
byBsb25nZXIKKyAgICAgICAgcHJlc2VudCBpbiBzaGlwcGluZyBhbmQgd2UgaGF2ZSByZWNlaXZl
ZCBhbnkgcmVwb3J0cyBvZiBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBkcm9wcyBhbGwgdGhlIGxl
Z2FjeSBjb2RlIGJ1dCBzaGUgc2hvdWxkIGJlIGFibGUgdG8gY2xlYW4gdXAgdGhlCisgICAgICAg
IGNvZGUgZnVydGhlciBpbiBmb2xsb3ctdXBzLiBJbiBwYXJ0aWN1bGFyLCBJIGJlbGlldmUgc29t
ZSBjb2RlIGNhbgorICAgICAgICBub3cgYmUgbW92ZWQgZnJvbSBCYXNlQXVkaW9Db250ZXh0IHRv
IE9mZmxpbmVBdWRpb0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6fkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29u
dGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0Ojppc09mZmxpbmVDb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbnRleHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3Rl
bmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xp
c3RlbmVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjEtMDUtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OOiBbIE1hYyBXSzIgXSBmYXN0L21lZGlhc3RyZWFtL2F1ZGlvLXRyYWNrLWVuYWJsZWQu
aHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjM1
NmM3MTk1ZTMzNDU5YTM3NTI5MDU5ZmU1M2I3YmI0MWM5NmNmMS4uZDY5ZTdhNDA2Y2Q3ODYzNTI1
MDFhNWNhMDg5ODdjYWZmNzU5OTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBl
eHBsaWNpdGx5IGRpc2FibGVkIHdpdGggcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24g
Z2l2ZW4gdGhhdAorICAgICAgICBpdCBubyBsb25nZXIgZXhpc3RzLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgor
CiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVTeXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRl
eCBmYTFkN2IxMTg2NTg5MjQ3MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3Li42MWY4N2NmYmZhMGJi
MzliOGNkNjIzZTZlYWYyMmIxNzg2NmE0ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU4
MywxOSArNTgzLDYgQEAgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVk
OgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiUHJlZml4ZWQgV2Vi
QXVkaW8gQVBJIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQcmVmaXhlZCBXZWJBdWRp
byBBUEkiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKLSAgZGVmYXVsdFZhbHVlOgot
ICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAg
ICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQog
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFk
YWJsZU5hbWU6ICJSZXNvdXJjZSBMb2FkIFNjaGVkdWxpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDNkYjUxYmE2NmVkNjkzODM3N2M5NGRhZDY2NjZmYTk5NzE2MTg0ZGMuLjVhM2Y5NWNiYzRk
MzkxOTI1YWZhZmZlYjNlMTBmOTQ3ZWVmYmVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
NzEsMTMgKzU3MSw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9u
cy5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlLmlkbAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjI5
MjZiYzYyYzM3NWRjNDNmN2Y3Y2RiYzEwYmEyYjdmZGQ5M2NmZi4uMzFjNGEzMTYzMWJiZTNhYTY1
NjBjNjRhY2UwZjBkYmExNWUxYTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC00MjksMTMgKzQyOSw2IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1N0ZXJlb1Bhbm5lck9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQxMDA5ZWMxNzA3NTRhOTFm
OTdiYTMxMWUyNDI5MWZjOWRkZDNkNDAuLjQ4YzE2MzIwYmE5Yzk0NTE5MzBlMGNiODAzMjZlYTU1
MTYyYjk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTM2LDE0ICszNiwxMSBAQAogI2luY2x1
ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1XVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsKIAog
Y29uc3RleHByIGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCiAK
QEAgLTkzLDcgKzkwLDYgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCkKIAogQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojp+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCkKIHsKLSAgICBjbGVhclBhbm5lck5vZGUoKTsKICAg
ICB1bmluaXRpYWxpemUoKTsKIH0KIApAQCAtMTQ2LDkgKzE0Miw2IEBAIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBBcHBseSB0aGUgZ2FpbiAoaW4tcGxhY2UpIHRvIHRoZSBv
dXRwdXQgYnVzLgotICAgIGZsb2F0IHRvdGFsR2FpbiA9IGxlZ2FjeUdhaW5WYWx1ZSgpOwotICAg
IG91dHB1dEJ1cy5jb3B5V2l0aEdhaW5Gcm9tKG91dHB1dEJ1cywgdG90YWxHYWluKTsKICAgICBv
dXRwdXRCdXMuY2xlYXJTaWxlbnRGbGFnKCk7CiB9CiAKQEAgLTQxOSw3ICs0MTIsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVk
aW9CdWZmZXI+JiYgYnVmZmVyKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKGJ1ZmZlciAmJiBtX3dhc0J1ZmZlclNl
dCAmJiBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkpCisgICAgaWYgKGJ1
ZmZlciAmJiBtX3dhc0J1ZmZlclNldCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiVGhlIGJ1ZmZlciB3YXMgYWxyZWFkeSBzZXQiX3MgfTsKIAogICAgIC8v
IFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2Fu
IHJlLWNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KQEAg
LTUzNywxMCArNTMwLDYgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmFkanVzdEdyYWlu
UGFyYW1ldGVycygpCiAKIGRvdWJsZSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hS
YXRlKCkKIHsKLSAgICBkb3VibGUgZG9wcGxlclJhdGUgPSAxLjA7Ci0gICAgaWYgKG1fbGVnYWN5
UGFubmVyTm9kZSkKLSAgICAgICAgZG9wcGxlclJhdGUgPSBtX2xlZ2FjeVBhbm5lck5vZGUtPmRv
cHBsZXJSYXRlKCk7Ci0gICAgCiAgICAgLy8gSW5jb3Jwb3JhdGUgYnVmZmVyJ3Mgc2FtcGxlLXJh
dGUgdmVyc3VzIEF1ZGlvQ29udGV4dCdzIHNhbXBsZS1yYXRlLgogICAgIC8vIE5vcm1hbGx5IGl0
J3Mgbm90IGFuIGlzc3VlIGJlY2F1c2UgYnVmZmVycyBhcmUgbG9hZGVkIGF0IHRoZSBBdWRpb0Nv
bnRleHQncyBzYW1wbGUtcmF0ZSwgYnV0IHdlIGNhbiBoYW5kbGUgaXQgaW4gYW55IGNhc2UuCiAg
ICAgZG91YmxlIHNhbXBsZVJhdGVGYWN0b3IgPSAxLjA7CkBAIC01NTAsNyArNTM5LDcgQEAgZG91
YmxlIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUoKQogICAgIGRvdWJsZSBi
YXNlUGl0Y2hSYXRlID0gcGxheWJhY2tSYXRlKCkuZmluYWxWYWx1ZSgpOwogICAgIGRvdWJsZSBk
ZXR1bmUgPSBwb3coMiwgbV9kZXR1bmUtPmZpbmFsVmFsdWUoKSAvIDEyMDApOwogCi0gICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGUgKiBkZXR1bmU7CisgICAgZG91YmxlIHRvdGFsUmF0ZSA9IHNhbXBsZVJhdGVGYWN0b3Ig
KiBiYXNlUGl0Y2hSYXRlICogZGV0dW5lOwogCiAgICAgdG90YWxSYXRlID0gc3RkOjpjbGFtcCh0
b3RhbFJhdGUsIC1NYXhSYXRlLCBNYXhSYXRlKTsKICAgICAKQEAgLTU2NywyNCArNTU2LDYgQEAg
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAg
ICByZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9i
dWZmZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFdl
YktpdEF1ZGlvUGFubmVyTm9kZSogcGFubmVyTm9kZSkKLXsKLSAgICBpZiAobV9sZWdhY3lQYW5u
ZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhhc0ZpbmlzaGVkKCkpCi0gICAgICAgIG1fbGVnYWN5
UGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpjbGVhclBhbm5lck5vZGUoKQotewotICAgIG1fbGVnYWN5UGFubmVyTm9kZSA9IG51bGxwdHI7
Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaW5pc2goKQotewotICAgIGNsZWFy
UGFubmVyTm9kZSgpOwotICAgIEFTU0VSVCghbV9sZWdhY3lQYW5uZXJOb2RlKTsKLSAgICBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggMmRi
NzY2MWI4NTQxOGQ4Y2RhOTJmOTA0MWY0ZGE0YTY5MDcyOTY5Yi4uYjczM2Q3MGM2ZmNiYWFhNWRi
YTQ2NWNiNjhhZTMyMzYyZDI3YzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMywxMyArMzMsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7Ci1jbGFzcyBXZWJL
aXRBdWRpb1Bhbm5lck5vZGU7CiBzdHJ1Y3QgQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zOwogCiAv
LyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9Ob2RlIHJlcHJlc2VudGluZyBhbiBh
dWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8gYXNzZXQgcmVwcmVzZW50ZWQgYnkg
YW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2lsbCBiZSB1c2VkIGZvciBzaG9ydCBz
b3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9mIHNjaGVkdWxpbmcgZmxleGliaWxp
dHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVyZmVjdCB3YXlzKS4KIAotY2xhc3Mg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7
CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291
cmNlTm9kZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+
IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03NiwxNiAr
NzUsOSBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSYgZGV0dW5lKCkgeyByZXR1cm4gbV9kZXR1
bmUuZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwbGF5YmFja1JhdGUoKSB7IHJldHVybiBtX3Bs
YXliYWNrUmF0ZS5nZXQoKTsgfQogCi0gICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBpcyBzZXQsIHRo
ZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxheWJhY2sgcGl0
Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKik7
Ci0gICAgdm9pZCBjbGVhclBhbm5lck5vZGUoKTsKLQogICAgIC8vIElmIHdlIGFyZSBubyBsb25n
ZXIgcGxheWluZywgcHJvcG9nYXRlIHNpbGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4K
ICAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUKLSAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOwotCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJB
dWRpb0J1ZmZlclNvdXJjZU5vZGUiOyB9CiAKIHByb3RlY3RlZDoKQEAgLTk1LDkgKzg3LDYgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgeyByZXR1cm4gMS4wOyB9
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFRocm93T25BdHRlbXB0VG9PdmVyd3JpdGVCdWZmZXIo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFBs
YXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBn
cmFpbkR1cmF0aW9uKTsKICAgICB2b2lkIGFkanVzdEdyYWluUGFyYW1ldGVycygpOwogCkBAIC0x
MzcsMTMgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fd2FzR3JhaW5EdXJhdGlvbkdp
dmVuIHsgZmFsc2UgfTsKIAogICAgIC8vIHRvdGFsUGl0Y2hSYXRlKCkgcmV0dXJucyB0aGUgaW5z
dGFudGFuZW91cyBwaXRjaCByYXRlIChub24tdGltZSBwcmVzZXJ2aW5nKS4KLSAgICAvLyBJdCBp
bmNvcnBvcmF0ZXMgdGhlIGJhc2UgcGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNp
b24gZmFjdG9yIGZyb20gdGhlIGJ1ZmZlciwgYW5kIGFueSBkb3BwbGVyIHNoaWZ0IGZyb20gYW4g
YXNzb2NpYXRlZCBwYW5uZXIgbm9kZS4KKyAgICAvLyBJdCBpbmNvcnBvcmF0ZXMgdGhlIGJhc2Ug
cGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNpb24gZmFjdG9yIGZyb20gdGhlIGJ1
ZmZlci4KICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAotICAgIC8vIFdlIG9wdGlvbmFs
bHkga2VlcCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQg
dGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLgotICAgIEF1
ZGlvQ29ubmVjdGlvblJlZlB0cjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+IG1fbGVnYWN5UGFubmVy
Tm9kZTsKLQogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZl
cigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBt
dXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKaW5kZXggM2Vj
Y2FiOWJlNmY5MDA4OTM3ZDViNTc0MTlmYTQwMGJhNDM4MjEwYi4uMDNiNDdkNzI4YWU0MGFhYWQ4
MTdiNjBmMjNjNjJlMzc4MWUxMzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbApAQCAtNDEsMTEgKzQx
LDQgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKICAgICBbSW1wbGVtZW50ZWRB
cz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBv
cHRpb25hbCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJh
dGlvbik7Ci0KLSAgICAvLyBGSVhNRTogVGhvc2UgY29uc3RhbnRzIGFyZSBrZXB0IGZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHByZWZpeGVkIEFQSSBhbmQgc2hvdWxkCi0gICAg
Ly8gYmUgcmVtb3ZlZCBvbmNlIHdlIHN0b3Agc3VwcG9ydGluZyBpdC4KLSAgICBbRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTlNDSEVEVUxF
RF9TVEFURSA9IDA7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29u
c3QgdW5zaWduZWQgc2hvcnQgU0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBbRW5hYmxlZEJ5U2V0
dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NUQVRF
ID0gMjsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNp
Z25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGY2YjU1OTIwNjViMzlmMDJj
ZjEyYjIzODJlZWQyMDAyMzkyOTVhNWYuLjdkNTZkMGE1ZmYzYzUzZTdlY2Q2MzJmY2I4NjUzNzkx
NGIxM2JmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0Nv
bnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQ29u
CiAgICAgaWYgKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUuaGFzVmFsdWUoKSAmJiAhaXNTdXBw
b3J0ZWRTYW1wbGVSYXRlKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgInNhbXBsZVJhdGUgaXMgbm90IGlu
IHJhbmdlIl9zIH07CiAgICAgCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBj
b250ZXh0T3B0aW9ucykpOworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBB
dWRpb0NvbnRleHQoZG9jdW1lbnQsIGNvbnRleHRPcHRpb25zKSk7CiAgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCiAvLyBD
b25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KLUF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRp
b0NvbnRleHQgaXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnN0IEF1ZGlvQ29udGV4dE9w
dGlvbnMmIGNvbnRleHRPcHRpb25zKQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
aXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnRleHRPcHRpb25zKQorQXVkaW9Db250ZXh0
OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdWRpb0NvbnRleHRPcHRp
b25zJiBjb250ZXh0T3B0aW9ucykKKyAgICA6IEJhc2VBdWRpb0NvbnRleHQoZG9jdW1lbnQsIGNv
bnRleHRPcHRpb25zKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRo
aXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwpAQCAtMTE5LDE0ICsxMTksNiBAQCBBdWRp
b0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0
QXVkaW9Db250ZXh0IGlzTGVnYQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7CiB9CiAKLS8vIE9ubHkgbmVlZGVkIGZvciBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LgotQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCBpc0xlZ2FjeVdlYktpdEF1
ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
UmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IEJhc2VBdWRpb0NvbnRl
eHQoZG9jdW1lbnQsIGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCBudW1iZXJPZkNoYW5uZWxz
LCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCi0gICAgLCBtX21lZGlhU2Vzc2lv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCi17Ci0gICAgY29uc3RydWN0Q29tbW9uKCk7Ci19
Ci0KIHZvaWQgQXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQogewogICAgIEFTU0VSVChk
b2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IDBjYzMyOTBmYWY3MTRmNjJjMTk1ZmMzNjkyMWVlMDlmMjhiOGRhNGUuLjE2
NjQ1NjczYzkyYzNhMjllMjc2NDMwZmIwZGJjOGUzNTM5ZWY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBET01XaW5kb3c7CiAKIHN0cnVjdCBBdWRpb1RpbWVzdGFtcDsKIAotY2xhc3MgQXVkaW9D
b250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHQgZmluYWwKICAgICA6IHB1YmxpYyBCYXNlQXVkaW9D
b250ZXh0CiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgogICAgICwgcHVibGljIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcgpAQCAtODksOCArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1f
cmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNv
bnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKLSAgICBBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7
CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgY29uc3QgQXVkaW9Db250ZXh0
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOwogCkBAIC0x
MDcsMjQgKzEwNiwyNCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsK
IAogICAgIC8vIE1lZGlhUHJvZHVjZXIKLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKSBmaW5hbDsKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6
Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9Ci0gICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVk
aW87IH0KLSAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwotICAgIGJvb2wgY2Fu
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wg
c3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZTo6Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1
ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZTo6V2ViQXVkaW87IH0KKyAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVz
dW1lKSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIGZpbmFsOworICAgIGJvb2wg
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQorICAgIGJvb2wgc3Vw
cG9ydHNTZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhU2Vzc2lvbkdyb3Vw
SWRlbnRpZmllciBtZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci4KLSAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBmaW5h
bDsKIAogICAgIC8vIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0xpc3RlbmVyLmgKaW5kZXggNzJhMjNhOWE5NGZkNTYzOTNmMjE0ZTQ4ZDkyOGNkNzQ3
NGFiODcwMS4uZjA1MWFjYjE4Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9MaXN0ZW5lcihjb250ZXh0KSk7CiAgICAgfQotICAgIHZpcnR1YWwgfkF1ZGlvTGlzdGVu
ZXIoKTsKKyAgICB+QXVkaW9MaXN0ZW5lcigpOwogCiAgICAgQXVkaW9QYXJhbSYgcG9zaXRpb25Y
KCkgeyByZXR1cm4gbV9wb3NpdGlvblguZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwb3NpdGlv
blkoKSB7IHJldHVybiBtX3Bvc2l0aW9uWS5nZXQoKTsgfQpAQCAtNzAsOCArNzAsNiBAQCBwdWJs
aWM6CiAKICAgICBGbG9hdFBvaW50M0QgdXBWZWN0b3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1dlYktpdEF1ZGlvTGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAg
ICAgYm9vbCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
VXNlQVJhdGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5pZGwKaW5kZXggNzUzZWM4OGU2NDFhZjIxNmExY2FmNzM4MWM5OTQy
ODgzODZjYjg5OC4uMWI4NDJiZjI1MThhMDE0NDliNDJlMzFlNDZlMWNmYWEyYThiZGUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRs
CkBAIC0yOSw3ICsyOSw4IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBBdWRpb0xpc3RlbmVyIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9QYXJhbSBwb3NpdGlvblg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlv
UGFyYW0gcG9zaXRpb25ZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCmluZGV4IDQ0ZTYyYmQ3MjIwZTJkYzE4MzMzZDljNmM2MTRmM2FiMDBmOGFjNTcu
LjIxNmY2YjdlMjIwMjliNGQxNjI3ZDM5NTA1ZTA5MWU4Y2QzODJiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjczLDE0ICs2NzIsNiBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsK
IH0KIAotVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpCi17Ci0gICAgYXV0byYg
Y29udGV4dCA9IHRoaXMtPmNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC5pc1dlYktpdEF1ZGlv
Q29udGV4dCgpKQotICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRB
dWRpb0NvbnRleHQmPihjb250ZXh0KSk7Ci0gICAgcmV0dXJuIG1ha2VSZWZQdHIoY29udGV4dCk7
Ci19Ci0KIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZldpdGhMb2NrKCkKIHsKICAgICBBU1NFUlQoY29u
dGV4dCgpLmlzR3JhcGhPd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCmluZGV4IDIyNzVjNTM3NzJmM2YyNTcwNmMyNDk1YjYwMGExYTRmYzc1MmUy
YzMuLjIwNTcwYTcyMTU4NzVjNGYwN2Q3MjU2YzMzZmRjZWMyYmI4MzhkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNDIsNyArNDIsNiBAQCBz
dHJ1Y3QgQXVkaW9Ob2RlT3B0aW9uczsKIGNsYXNzIEF1ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1
ZGlvUGFyYW07CiBjbGFzcyBCYXNlQXVkaW9Db250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9Db250
ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBo
YW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1
ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRp
byBkZXN0aW5hdGlvbi4KQEAgLTkwLDggKzg5LDYgQEAgcHVibGljOgogICAgIEJhc2VBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKTsKICAgICBjb25zdCBCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
Y29uc3Q7CiAKLSAgICBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0PiwgUmVmUHRyPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpOwotCiAgICAgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlOyB9CiAKICAgICAvLyBDYW4gYmUg
Y2FsbGVkIGZyb20gbWFpbiB0aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3NjI4Njgx
MTQxM2VkN2Q2MDI3NGI3ODM4NzgwZmI4OWVmMTIyNjA4Li5hMDdmMDljNTBkOTBmZTM1N2ZjNDEx
ZWY2YjBlY2FlMTYyM2RhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuaWRsCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwK
ICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDogRXZlbnRUYXJnZXQg
ewotICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmli
dXRlIChCYXNlQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQmFzZUF1ZGlvQ29udGV4dCBjb250ZXh0OwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCBmOWUzMjRlMjEyNjdhMDE0
OGRiN2I3NmM5YmM3N2IwZmU2MDA4YmExLi5iYjM5NWUzOGIzNGE2ZDg2YmY5NjljNTgxMTYyNjQw
NWJiNmUyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgog
I2luY2x1ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvblJh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2VySGVscGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCAyNjc3NTQwZTQzMjU4YjRmMThhMGQ0
MWM1MmRiYzk0MmM2ZjEyZTVmLi5lMWY0YjA0ZWYyM2M2OWNiOThjNzQwMmEyZmYyMTFiNWE1NDlh
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5jcHAKQEAgLTgwLDcgKzgwLDYgQEAKICNpbmNsdWRlICJTdGVyZW9QYW5uZXJO
b2RlLmgiCiAjaW5jbHVkZSAiU3RlcmVvUGFubmVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldhdmVT
aGFwZXJOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgogCkBAIC0xMzIsNyArMTMxLDcgQEAgc3RhdGljIEhhc2hTZXQ8dWludDY0X3Q+JiBsaXZlQXVk
aW9Db250ZXh0cygpCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgotQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0LCBjb25zdCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKK0Jh
c2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKICAgICA6IEFjdGl2ZURPTU9i
amVjdChkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQpAQCAtMTQxLDcgKzE0MCw3IEBAIEJhc2VBdWRpb0NvbnRleHQ6
OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlv
Q29udGV4CiAgICAgLCBtX2NvbnRleHRJRChnZW5lcmF0ZUF1ZGlvQ29udGV4dElEKCkpCiAgICAg
LCBtX3dvcmtsZXQoQXVkaW9Xb3JrbGV0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9kZXN0aW5h
dGlvbk5vZGUobWFrZVVuaXF1ZVJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+KCp0aGlz
LCBjb250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlKSkKLSAgICAsIG1fbGlzdGVuZXIoaXNMZWdhY3lX
ZWJLaXRBdWRpb0NvbnRleHQgPT0gSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6OlllcyA/IFJl
ZjxBdWRpb0xpc3RlbmVyPihXZWJLaXRBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKSA6IEF1
ZGlvTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2xpc3RlbmVyKEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbGl2ZUF1ZGlvQ29udGV4dHMoKS5hZGQobV9jb250
ZXh0SUQpOwogCkBAIC0xNjMsNyArMTYyLDcgQEAgQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXgKIH0K
IAogLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgot
QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElz
TGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZm
ZXI+JiYgcmVuZGVyVGFyZ2V0KQorQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKQEAgLTE3NCw3ICsxNzMsNyBAQCBCYXNlQXVkaW9Db250
ZXh0OjpCYXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRB
dWRpb0NvbnRleAogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX3JlbmRl
clRhcmdldChXVEZNb3ZlKHJlbmRlclRhcmdldCkpCiAgICAgLCBtX2Rlc3RpbmF0aW9uTm9kZSht
YWtlVW5pcXVlUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4oKnRoaXMsIG51bWJlck9m
Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIG1fcmVuZGVyVGFyZ2V0LmNvcHlSZWYoKSkpCi0gICAgLCBt
X2xpc3RlbmVyKGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0ID09IElzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0OjpZZXMgPyBSZWY8QXVkaW9MaXN0ZW5lcj4oV2ViS2l0QXVkaW9MaXN0ZW5lcjo6
Y3JlYXRlKCp0aGlzKSkgOiBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9s
aXN0ZW5lcihBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGxpdmVBdWRpb0Nv
bnRleHRzKCkuYWRkKG1fY29udGV4dElEKTsKICAgICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
aAppbmRleCA1OGJkY2U5ZGM2ZWFiNTEyNTg2ZWYxM2U3NjEwMWJlYWYxZTUyMzFjLi5hZTBmNDkx
MTJhMzc1MTc5MzIzNWNhNmY4ZTBjNDQzNDczZjRiYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE1LDcgKzExNSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKICAgICAKICAgICBi
b29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUmIGRlc3RpbmF0aW9uKCkgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7IH0KICAgICBjb25zdCBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQpAQCAtMjk3LDkgKzI5Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPj4mIHBhcmFtZXRlckRlc2NyaXB0b3JN
YXAoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckRlc2NyaXB0b3JNYXA7IH0KIAogcHJvdGVj
dGVkOgotICAgIGVudW0gY2xhc3MgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIGV4cGxpY2l0IEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xl
Z2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgPSB7IH0p
OwotICAgIEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29u
dGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRy
PEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CisgICAgZXhwbGljaXQgQmFzZUF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKKyAgICBC
YXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAgICAg
CiAgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Fj
dGl2aXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCA1MWI2YjJjMDk4YzQwNDkyYmZhYzc5
MTVhM2QwMzA1YzhjNmYzOGY0Li40YWE5YWQ0Y2YxNDgxOGJkY2I5YmI2Njk5ZmU4ZDhiOTY4M2Iy
OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkR5bmFtaWNzQ29tcHJlc3Nvci5oIgotI2luY2x1ZGUgIldlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiAvLyBTZXQgb3V0
cHV0IHRvIHN0ZXJlbyBieSBkZWZhdWx0LgpAQCAtNDMsNyArNDIsNiBAQCBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzID0gMjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUpOwotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUpOwogCiBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaAppbmRleCAyZGUwN2RmOWZlMjE4NjFlZTcyOWJhZDJlOWM0N2RlMTE0MzA4OGQyLi5iM2Uw
MjBkYmQ3MzIzMWU0OTRhYzg5MThmOWJjNDI0NWRjNTIzYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaApA
QCAtMzQsMTggKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yOwogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlv
Tm9kZSB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlv
Tm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU+PiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IER5bmFtaWNzQ29tcHJlc3Nv
ck9wdGlvbnMmID0geyB9KTsKIAotICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUo
KTsKKyAgICB+RHluYW1pY3NDb21wcmVzc29yTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0g
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHByb2Nl
c3NPbmx5QXVkaW9QYXJhbXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7Ci0gICAgdm9p
ZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgp
IGZpbmFsOwogCiAgICAgLy8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAg
ICAgQXVkaW9QYXJhbSYgdGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0K
QEAgLTY1LDggKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWR1Y3Rp
b24oZmxvYXQgcmVkdWN0aW9uKSB7IG1fcmVkdWN0aW9uID0gcmVkdWN0aW9uOyB9CiAKIHByaXZh
dGU6Ci0gICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBy
ZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
CmluZGV4IDRlMDZiZDFhODhhM2VlNWY4M2U5YjMxZjRmODc4N2FjZWFmODU5Y2EuLjg0ZDE2YTE1
NWY2OTI3NmRiZGQ0OGI3NWViNzA5YWQ5NWU5MjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoT2ZmbGluZUF1ZGlvQ29udGV4dCk7CiAKIGlubGluZSBPZmZsaW5lQXVkaW9Db250ZXh0OjpP
ZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9C
dWZmZXI+JiYgcmVuZGVyVGFyZ2V0KQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
SXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVS
YXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCisgICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggYWIxNDY2N2QwNjhkYzAxMWFhMDJi
ZTFkMGVhYmE4YzhhOTUwMmQ0OS4uNzQxNDE0N2FmMGM1ZmEzYWVhYjZiMDIzNjFhODYzZTI5MDM5
OWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaApAQCAtMzUsMTQgKzM1LDE0IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIAogLy8gT3Nj
aWxsYXRvck5vZGUgaXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4K
IAotY2xhc3MgT3NjaWxsYXRvck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
IHsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPc2NpbGxhdG9yTm9kZSk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0
ZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3QgT3NjaWxsYXRvck9wdGlvbnMmID0geyB9KTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk9zY2lsbGF0b3JOb2RlIjsg
fQorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiT3NjaWxsYXRvck5vZGUiOyB9CiAKICAgICBPc2NpbGxhdG9yVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHlwZShPc2Np
bGxhdG9yVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuaWRsCmluZGV4IGU0NWZiNzc1ZjBmOTA0MDc5NjYyOGRhNjUxYjNiNGQ5MmQ3
MWQyY2UuLjJkMDI5ZmY4MzUyZjNjNjE0NDVmNzRjMmNjMDlmYjdkMDExYTBhMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCkBA
IC0zNywxMSArMzcsNCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGRldHVu
ZTsgLy8gaW4gQ2VudHMKIAogICAgIHVuZGVmaW5lZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNX
YXZlIHdhdmUpOwotCi0gICAgLy8gRklYTUU6IFRob3NlIGxlZ2FjeSBwbGF5YmFjayBzdGF0ZSBj
b25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAg
ICAvLyBwcmVmaXhlZCBBUEkgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBzdXBw
b3J0aW5nIHRoZSBwcmVmaXhlZCBBUEkuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRX
ZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAg
IFtFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW9dIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJB
dWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgW0VuYWJs
ZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNI
RURfU1RBVEUgPSAzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDk3MTkyZjY3OGIwNDU2MGJiYThjYTdiMzk4YWQyNzlhZjA1ZmNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwLCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0u
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShCYXNlQXVk
aW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBBdWRp
b1BhcmFtJiBnYWluKCkgY29uc3QgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEJhc2VBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCi0gICAgICAgIDogQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpCi0g
ICAgICAgICwgbV9nYWluKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiJfcywgMS4w
LCAwLjAsIDEuMCwgQXV0b21hdGlvblJhdGU6OktSYXRlKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Ym9vbCBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZ2FpbigpLnZhbHVlKCk7IH0KLQotICAgIFJlZjxBdWRpb1BhcmFtPiBtX2dh
aW47Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIyOWM1MjgzOTRjOTJhNGI5ZGE2MzlkOGNhOWQ1NTAyN2VmNThhNWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gQSBjYWNoZWQgKG5v
bi1zdHJlYW1lZCksIG1lbW9yeS1yZXNpZGVudCBhdWRpbyBzb3VyY2UKLVsKLSAgICBDb25kaXRp
b25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAot
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Ci1d
IGludGVyZmFjZSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgOiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUgewotICAgIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwotCi0gICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
UExBWUlOR19TVEFURSA9IDI7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURfU1RB
VEUgPSAzOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBsYXliYWNr
U3RhdGU7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBnYWluOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHBsYXliYWNrUmF0ZTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIGxvb3A7Ci0KLSAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKLSAgICBh
dHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7Ci0KLSAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVy
XSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3Vi
bGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NDI2ODk4ZDg3NDVj
YThhMDk4ZWQwMzBjOWNmZmE2ODExZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUg
IldlYktpdEF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKLSNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKLSNpbmNs
dWRlICJXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0T3Nj
aWxsYXRvck5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0jaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUg
Ik1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1
ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLWNvbnN0ZXhwciB1bnNpZ25lZCBNYXhQZXJp
b2RpY1dhdmVMZW5ndGggPSA0MDk2OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0NvbnRleHQpOwotCi0jZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotCi0jaWYgT1MoV0lORE9XUykKLS8vIERvbid0IGFsbG93IG1vcmUg
dGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRv
IGhhcmR3YXJlLgotY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0Owot
I2VuZGlmCi0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSNpZiBPUyhXSU5ET1dTKQotICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENv
dW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBR
dW90YUV4Y2VlZGVkRXJyb3IgfTsKLSNlbmRpZgotCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOwotICAgIGF1ZGlvQ29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKLX0KLQot
Ly8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1XZWJL
aXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0g
ICAgOiBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpZ
ZXMpCi17Ci19Ci0KLS8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJl
bmRlcmluZy4KLVdlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRh
cmdldCkKLSAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0Nv
bnRleHQ6OlllcywgcmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCksIHNhbXBsZVJhdGUs
IFdURk1vdmUocmVuZGVyVGFyZ2V0KSkKLXsKLX0KLQotY29uc3QgY2hhciogV2ViS2l0QXVkaW9D
b250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIldlYktp
dEF1ZGlvQ29udGV4dCI7Ci19Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLUV4Y2VwdGlvbk9yPFJl
ZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCi17Ci0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlz
LCB7ICZtZWRpYUVsZW1lbnQgfSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
OjpjcmVhdGUoKnRoaXMsIHsgJm1lZGlhU3RyZWFtIH0pOwotfQotCi1FeGNlcHRpb25PcjxSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCi17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLSNlbmRpZgotCi1FeGNlcHRp
b25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVXZWJLaXRQYW5uZXIoKQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChpc1N0b3BwZWQoKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAgICBsYXp5SW5pdGlh
bGl6ZSgpOwotICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlv
Q29udGV4dDo6Y3JlYXRlV2ViS2l0T3NjaWxsYXRvcigpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGlzU3Rv
cHBlZCgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
LQotICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICByZXR1cm4gV2ViS2l0T3NjaWxsYXRvck5v
ZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7Ci0gICAgCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaXNTdG9wcGVk
KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwotCi0g
ICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IHJlYWwubGVuZ3Ro
KCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGggfHwgIXJlYWwubGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0gICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1h
Z2luYXJ5KTsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlKCkKLXsKLSAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwotCi0gICAgbGF6eUluaXRpYWxpemUoKTsKLQotICAgIHJldHVybiBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlZjxXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKQotewotICAgIGlmIChpc1N0b3BwZWQo
KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwotCi0gICAgcmV0dXJuIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTGVnYWN5QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJh
eUJ1ZmZlciwgYm9vbCBtaXhUb01vbm8pCi17Ci0gICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOwotICAgIGlmICgh
YXVkaW9CdWZmZXIpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9Owot
ICAgIHJldHVybiBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
LXsKLSAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IGlzU3RvcHBlZCgpKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKLQotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0KLSAgICBkZXN0aW5hdGlvbigpLmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Ci0gICAgICAgIHVu
aW5pdGlhbGl6ZSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU3ZmM5MzZhNDhmN2VlZTk5NWU5Y2U1YWNmMTNhYjcxZjNmZDQzNjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwotY2xh
c3MgTWVkaWFTdHJlYW07Ci1jbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOwot
Y2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7Ci1jbGFzcyBQZXJpb2RpY1dhdmU7Ci1j
bGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Ci1jbGFzcyBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU7Ci1jbGFzcyBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlOwotY2xhc3MgV2ViS2l0
T3NjaWxsYXRvck5vZGU7Ci0KLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2Yg
dGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQu
Ci0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBt
YWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgot
Ci1jbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0Ci17Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAg
IC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVk
aW8gaGFyZHdhcmUuCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKLQotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwotCi0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKSB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0xpc3RlbmVyPihBdWRpb0NvbnRleHQ6Omxpc3RlbmVy
KCkpOyB9Ci0KLSAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgotI2lmIEVOQUJMRShWSURFTykK
LSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlh
U3RyZWFtRGVzdGluYXRpb24oKTsKLSNlbmRpZgotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRB
dWRpb1Bhbm5lck5vZGU+PiBjcmVhdGVXZWJLaXRQYW5uZXIoKTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVXZWJLaXRPc2NpbGxhdG9yKCk7Ci0gICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlV2ViS2l0QnVmZmVyU291cmNl
KCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVMZWdhY3lCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9u
byk7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1l
bnQmKTsKLSAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKLQotcHJpdmF0ZToKLSAgICAvLyBB
Y3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci19OwotCi19IC8vIFdlYkNvcmUKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRpb0NvbnRleHQoKTsgfQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMmNkNTg3ZmQwMTNiMWQxN2M1M2YxMjc5Y2E2ZjM2ZTY1ZGVjMDM4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbyZQcmVmaXhlZFdlYkF1
ZGlvLAotICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9
d2Via2l0QXVkaW9Db250ZXh0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBj
b25zdHJ1Y3RvcigpOwotCi0gICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29u
bmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJl
LgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlv
bjsKLQotICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGlt
ZSBpbiBzZWNvbmRzLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGN1cnJlbnRUaW1lOwotCi0gICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVu
IGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCi0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwotCi0gICAgLy8g
QWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViS2l0QXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKLQotICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dW5kZWZpbmVkPiBzdXNwZW5kKCk7Ci0gICAg
W0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHVuZGVmaW5lZD4gcmVzdW1l
KCk7Ci0gICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNsb3NlKCk7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnN0YXRlY2hhbmdlOwotCi0gICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7Ci0KLSAgICBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgW0ltcGxlbWVu
dGVkQXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlC
dWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7Ci0KLSAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgotICAgIHVuZGVmaW5lZCBkZWNvZGVBdWRpb0RhdGEo
QXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJh
Y2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwotCi0gICAg
Ly8gU291cmNlcwotICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdEJ1ZmZlclNvdXJjZV0g
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwotCi0gICAg
W0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVk
aWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKLQotICAgIFtD
b25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0
ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLQotICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKLSAg
ICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0gICAgQmlxdWFkRmls
dGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKLSAgICBXYXZlU2hhcGVyTm9kZSBjcmVhdGVX
YXZlU2hhcGVyKCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0UGFubmVyXSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7Ci0gICAgQ29udm9sdmVyTm9kZSBjcmVh
dGVDb252b2x2ZXIoKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXREeW5hbWljc0Nv
bXByZXNzb3JdIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21w
cmVzc29yKCk7Ci0gICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgU2NyaXB0
UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hh
bm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PSAyKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXRPc2NpbGxhdG9yXSBXZWJLaXRP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgUGVyaW9kaWNXYXZlIGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwotCi0g
ICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBDaGFubmVsU3BsaXR0ZXJO
b2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0cyA9IDYpOwotICAgIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwotCi0gICAgLy8gT2Zm
bGluZSByZW5kZXJpbmcKLSAgICAvLyB1bmRlZmluZWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5k
ZXJpbmcodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmNvbXBsZXRlOwotICAgIHVuZGVmaW5lZCBzdGFydFJlbmRlcmluZygp
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0xpc3RlbmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjE2NWNmZDJm
YjUzOTk4YzJiOTBmY2QwM2VhMGM0Mzk5ZTUzMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0xpc3RlbmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYktpdEF1ZGlvTGlzdGVuZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9MaXN0ZW5lciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0xpc3RlbmVyPiBjcmVhdGUoQmFzZUF1ZGlv
Q29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YktpdEF1ZGlvTGlzdGVuZXIoY29udGV4dCkpOwotICAgIH0KLQotICAgIC8vIFZlbG9jaXR5Ci0g
ICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IHNldFZlbG9j
aXR5KEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0
IEZsb2F0UG9pbnQzRCYgdmVsb2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAg
Y29uc3QgRmxvYXRQb2ludDNEJiB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7
IH0KLQotICAgIC8vIERvcHBsZXIgZmFjdG9yCi0gICAgdm9pZCBzZXREb3BwbGVyRmFjdG9yKGRv
dWJsZSBkb3BwbGVyRmFjdG9yKSB7IG1fZG9wcGxlckZhY3RvciA9IGRvcHBsZXJGYWN0b3I7IH0K
LSAgICBkb3VibGUgZG9wcGxlckZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9wcGxlckZhY3Rv
cjsgfQotCi0gICAgLy8gU3BlZWQgb2Ygc291bmQKLSAgICB2b2lkIHNldFNwZWVkT2ZTb3VuZChk
b3VibGUgc3BlZWRPZlNvdW5kKSB7IG1fc3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kOyB9Ci0g
ICAgZG91YmxlIHNwZWVkT2ZTb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWRPZlNvdW5kOyB9
Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lcihCYXNlQXVkaW9Db250ZXh0JiBj
b250ZXh0KQotICAgICAgICA6IEF1ZGlvTGlzdGVuZXIoY29udGV4dCkKLSAgICAgICAgLCBtX3Zl
bG9jaXR5KDAsIDAsIDApCi0gICAgeyB9Ci0KLSAgICBib29sIGlzV2ViS2l0QXVkaW9MaXN0ZW5l
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UG9pbnQzRCBtX3Zl
bG9jaXR5OwotICAgIGRvdWJsZSBtX2RvcHBsZXJGYWN0b3IgeyAxLjAgfTsKLSAgICBkb3VibGUg
bV9zcGVlZE9mU291bmQgeyAzNDMuMyB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvTGlzdGVu
ZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXIm
IGxpc3RlbmVyKSB7IHJldHVybiBsaXN0ZW5lci5pc1dlYktpdEF1ZGlvTGlzdGVuZXIoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE4NjQyZDE0M2VlODFlNjRjZTdjY2M0ZmQ1NTQyZGNkMThmZGYxYjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAot
XSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9MaXN0ZW5lciB7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCBkb3BwbGVyRmFjdG9yOyAgLy8gc2FtZSBhcyBPcGVuQUwgKGRlZmF1bHQgMS4w
KQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgc3BlZWRPZlNvdW5kOyAgIC8vIGlu
IG1ldGVycyAvIHNlY29uZCAoZGVmYXVsdCAzNDMuMykKLQotICAgIHVuZGVmaW5lZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeiwgdW5y
ZXN0cmljdGVkIGZsb2F0IHhVcCwgdW5yZXN0cmljdGVkIGZsb2F0IHlVcCwgdW5yZXN0cmljdGVk
IGZsb2F0IHpVcCk7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyNDQwYTk0ZWZj
OTFkMjAyZThjNDkzN2ZkZjc3NzU5N2E2ODE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvQ29u
dGV4dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2Rl
T3V0cHV0LmgiCi0jaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFJU
RlBhbm5lci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktp
dEF1ZGlvUGFubmVyTm9kZSk7Ci0KLXN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQotewot
ICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCi0gICAgICAgIHggPSAwLjA7
Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktp
dEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBOb2RlVHlw
ZVBhbm5lcikKLXsKLSAgICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxD
b3VudE1vZGU6OkNsYW1wZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwot
Ci0gICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24n
dCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0
YWJhc2UuCi0gICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgp
KTsKLQotICAgIGFkZElucHV0KCk7Ci0gICAgYWRkT3V0cHV0KDIpOwotCi0gICAgbV9wb3NpdGlv
biA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKLSAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2lu
dDNEKDEsIDAsIDApOwotICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Ci0K
LSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1
ZGlvUGFubmVyTm9kZSgpCi17Ci0gICAgdW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0g
ICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRp
b1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rp
b25zIGFyZSBtYWRlLgotICAgIC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBt
YWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hp
ZnQgcGl0Y2ggY2hhbmdlcy4KLSAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgp
LmNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4
dCgpLmNvbm5lY3Rpb25Db3VudCgpOwotCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91
Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KLSAgICAgICAgSGFzaFNldDxBdWRpb05vZGUq
PiB2aXNpdGVkTm9kZXM7Ci0gICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9k
ZSh0aGlzLCB2aXNpdGVkTm9kZXMpOwotICAgIH0KLQotICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0
cyhmcmFtZXNUb1Byb2Nlc3MpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
biA9IG91dHB1dCgwKS0+YnVzKCk7Ci0KLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5w
dXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdldCgpKSB7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBdWRpb0J1cyog
c291cmNlID0gaW5wdXQoMCktPmJ1cygpOwotICAgIGlmICghc291cmNlKSB7Ci0gICAgICAgIGRl
c3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBIUlRG
RGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBh
dWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgotICAgIGlmIChwYW5u
aW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxv
YWRlci0+aXNMb2FkZWQoKSkgewotICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRl
eHQoKSkKLSAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhy
ZWFkQ29tcGxldGlvbigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9u
LT56ZXJvKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHRy
eUhvbGRMb2NrKCkgaW5zdGVhZC4KLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fcHJv
Y2Vzc0xvY2spOwotICAgIGlmICghbG9ja2VyKSB7Ci0gICAgICAgIC8vIFRvbyBiYWQgLSB0cnlI
b2xkTG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo
ZSBwYW5uZXIuCi0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCi0gICAgZG91YmxlIGF6
aW11dGg7Ci0gICAgZG91YmxlIGVsZXZhdGlvbjsKLSAgICBnZXRBemltdXRoRWxldmF0aW9uKCZh
emltdXRoLCAmZWxldmF0aW9uKTsKLSAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlv
biwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIC8vIEdldCB0
aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KLSAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFu
Y2VDb25lR2FpbigpOwotCi0gICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZS4KLSAgICBkZXN0aW5h
dGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sIHRvdGFsR2Fpbik7Ci19Ci0KLXZv
aWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoaXNJbml0
aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3Jl
YXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdl
dCgpKTsKLQotICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYW5uZXIgPSBudWxscHRyOwotICAgIEF1ZGlv
Tm9kZTo6dW5pbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvTGlzdGVuZXImIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQotewotICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVu
ZXIoKTsKLX0KLQotdm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQ
YW5uaW5nTW9kZWxUeXBlIG1vZGVsKQotewotICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9k
ZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKLSAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9j
ayk7Ci0KLSAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0
ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7Ci0gICAgICAgIG1fcGFubmluZ01vZGVs
ID0gbW9kZWw7Ci0gICAgfQotfQotCi1EaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PFdl
YktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Ci19
Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNl
TW9kZWxUeXBlIG1vZGVsKQotewotICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWws
IHRydWUpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZh
dGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQotewotICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJs
ZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0K
LSAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNl
LWxpc3RlbmVyIHZlY3RvcgotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlz
dGVuZXIoKS5wb3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBv
c2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOwotCi0gICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlz
WmVybygpKSB7Ci0gICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAotICAgICAgICAqb3V0QXppbXV0aCA9IDAuMDsKLSAg
ICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwotCi0gICAgLy8gQWxpZ24gYXhlcwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS5vcmllbnRhdGlvbigpOwotICAg
IEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS51cFZlY3RvcigpOwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVw
KTsKLSAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOwotCi0gICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKLSAgICBsaXN0ZW5lckZyb250Tm9ybS5u
b3JtYWxpemUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3Mo
bGlzdGVuZXJGcm9udE5vcm0pOwotCi0gICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlz
dGVuZXIuZG90KHVwKTsKLQotICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3Vy
Y2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOwotICAgIHByb2plY3RlZFNvdXJjZS5ub3Jt
YWxpemUoKTsKLQotICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBh
dm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQg
dGhlIGxpc3RlbmVyCi0gICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3Qo
bGlzdGVuZXJGcm9udE5vcm0pOwotICAgIGlmIChmcm9udEJhY2sgPCAwLjApCi0gICAgICAgIGF6
aW11dGggPSAzNjAuMCAtIGF6aW11dGg7Ci0KLSAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUg
dG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCi0gICAgaWYgKChhemlt
dXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQotICAgICAgICBhemltdXRoID0gOTAu
MCAtIGF6aW11dGg7Ci0gICAgZWxzZQotICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRo
OwotCi0gICAgLy8gRWxldmF0aW9uCi0gICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAu
MCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5z
KGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICBpZiAoZWxldmF0aW9u
ID4gOTAuMCkKLSAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247Ci0gICAgZWxz
ZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCi0gICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVs
ZXZhdGlvbjsKLQotICAgIGlmIChvdXRBemltdXRoKQotICAgICAgICAqb3V0QXppbXV0aCA9IGF6
aW11dGg7Ci0gICAgaWYgKG91dEVsZXZhdGlvbikKLSAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVs
ZXZhdGlvbjsKLX0KLQotZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgp
Ci17Ci0gICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKLQotICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdl
ZC4uLgotICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS5kb3BwbGVyRmFjdG9y
KCk7Ci0KLSAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgewotICAgICAgICBkb3VibGUgc3Bl
ZWRPZlNvdW5kID0gbGlzdGVuZXIoKS5zcGVlZE9mU291bmQoKTsKLQotICAgICAgICBjb25zdCBG
bG9hdFBvaW50M0QmIHNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAgICAgICAgY29uc3Qg
RmxvYXRQb2ludDNEJiBsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS52ZWxvY2l0eSgpOwot
Ci0gICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2
ZSBubyB2ZWxvY2l0eQotICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZl
bG9jaXR5LmlzWmVybygpOwotICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlz
dGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKLQotICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkg
fHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgewotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBz
b3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCi0gICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVu
ZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICAgICAgICAgIEZsb2F0UG9p
bnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247Ci0K
LSAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlz
dGVuZXIubGVuZ3RoKCk7Ci0KLSAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24g
PSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVy
TWFnbml0dWRlOwotICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VU
b0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsK
LQotICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsK
LSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsKLQotICAg
ICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBs
ZXJGYWN0b3I7Ci0gICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0
ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Ci0gICAgICAgICAgICBzb3VyY2VQ
cm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKLQotICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVy
RmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFj
dG9yICogc291cmNlUHJvamVjdGlvbikpOwotICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hp
ZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgICAgICAgICAvLyBMaW1pdCB0aGUg
cGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KLSAgICAg
ICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQotICAgICAgICAgICAgICAgIGRvcHBsZXJT
aGlmdCA9IDE2LjA7Ci0gICAgICAgICAgICBlbHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkK
LSAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxlclNoaWZ0KTsKLX0KLQotZmxv
YXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKLXsKLSAgICBGbG9h
dFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICBG
bG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOwotCi0gICAgZG91YmxlIGxp
c3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRp
b24pOwotICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlz
dGVuZXJEaXN0YW5jZSk7Ci0KLSAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGlu
ZyBjb25lR2FpbgotICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJj
ZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKLQotICAgIHJldHVy
biBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBu
b2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpCi17Ci0gICAgQVNTRVJUKG5v
ZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmlyc3QgY2hl
Y2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBp
dCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4g
aW50byBhY2NvdW50LgotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9C
dWZmZXJTb3VyY2UpIHsKLSAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3Vy
Y2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsK
LSAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytp
KSB7Ci0gICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsK
LQotICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBj
b25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25u
ZWN0aW9ucygpOyArK2opIHsKLSAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5l
Y3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7Ci0gICAgICAgICAgICAgICAg
QXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2aXNpdGVkTm9k
ZXMuYWRkKGNvbm5lY3RlZE5vZGUpOwotICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNl
c0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6
cmVxdWlyZXNUYWlsUHJvY2Vzc2luZygpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhlcmUncyBubyBp
bnRlcm5hbCBwYW5uZXIgbWV0aG9kIHNldCB1cCB5ZXQsIGFzc3VtZSB3ZSByZXF1aXJlIHRhaWwK
LSAgICAvLyBwcm9jZXNzaW5nIGluIGNhc2UgdGhlIEhSVEYgcGFubmVyIGlzIHNldCBsYXRlciwg
d2hpY2ggZG9lcyByZXF1aXJlIHRhaWwKLSAgICAvLyBwcm9jZXNzaW5nLgotICAgIHJldHVybiAh
bV9wYW5uZXIgfHwgbV9wYW5uZXItPnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTRiYjAyZDJkNmI3NWUwOWE0
OTFhYmFhZjIxMWJmOTRkMDQwZmFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlv
Tm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKLSNpbmNsdWRlICJDb25lLmgiCi0jaW5j
bHVkZSAiRGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNpbmNsdWRlICJQ
YW5uZXIuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJL
aXRBdWRpb0xpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7Ci0KLS8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2Rl
IHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgotLy8gSXQgcG9zaXRpb25zIGEgc291bmQg
aW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5p
bmcgbW9kZWwuCi0vLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qg
c3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBv
ZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCi0vLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxs
IGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBs
aXN0ZW5lci4KLS8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBBbGwgb2YgdGhl
c2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4K
LQotY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOwotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0
QXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKLQotICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpj
b250ZXh0KCkpOyB9Ci0gICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRl
eHQoKSk7IH0KLQotICAgIC8vIEF1ZGlvTm9kZQotICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKLQotICAgIC8vIExpc3RlbmVyCi0gICAg
V2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKTsKLQotICAgIC8vIFBhbm5pbmcgbW9kZWwK
LSAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9Ci0gICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7
Ci0KLSAgICAvLyBQb3NpdGlvbgotICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQotCi0g
ICAgLy8gT3JpZW50YXRpb24KLSAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwg
eik7IH0KLQotICAgIC8vIFZlbG9jaXR5Ci0gICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29u
c3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9
Ci0KLSAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCi0gICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1v
ZGVsVHlwZSk7Ci0KLSAgICBkb3VibGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNl
RWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KLSAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSBy
ZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNl
KTsgfQotCi0gICAgZG91YmxlIG1heERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVj
dC5tYXhEaXN0YW5jZSgpOyB9Ci0gICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlz
dGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0K
LQotICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5y
b2xsb2ZmRmFjdG9yKCk7IH0KLSAgICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxv
ZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0
b3IpOyB9Ci0KLSAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCi0gICAgZG91
YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5n
bGUoKTsgfQotICAgIHZvaWQgc2V0Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29u
ZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckFu
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQotICAgIHZv
aWQgc2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRl
ckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJl
dHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCk7IH0KLSAgICB2b2lkIHNldENvbmVPdXRlckdh
aW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9Ci0K
LSAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUq
IG91dEVsZXZhdGlvbik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKLQotICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KLSAgICBi
b29sIHJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0Jik7Ci0K
LSAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVu
dWF0aW9uLgotICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKLQotICAgIC8vIE5vdGlmaWVz
IGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0
bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgotICAgIC8vIFRoaXMgaXMgaW4g
b3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxl
ciBzaGlmdC4KLSAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRp
b05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7Ci0gICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5p
bmdNb2RlbCB7IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgfTsKLQotICAgIEZsb2F0UG9pbnQzRCBt
X3Bvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOwotICAgIEZsb2F0UG9p
bnQzRCBtX3ZlbG9jaXR5OwotCi0gICAgLy8gR2FpbgotICAgIERpc3RhbmNlRWZmZWN0IG1fZGlz
dGFuY2VFZmZlY3Q7Ci0gICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7Ci0KLSAgICAvLyBIUlRG
IERhdGFiYXNlIGxvYWRlcgotICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRh
dGFiYXNlTG9hZGVyOwotCi0gICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07Ci0K
LSAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNo
IGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KLSAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2FiM2Y0ZThiZWYxZjgwNWEwOWQyNWJk
ZjVhMTU5MmZhNWEyZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdl
YkF1ZGlvLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Vi
a2l0QXVkaW9QYW5uZXJOb2RlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgewotICAgIC8vIERlZmF1bHQgbW9kZWwgZm9y
IHN0ZXJlbyBpcyBIUlRGCi0gICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01v
ZGVsOwotCi0gICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQotICAg
IHVuZGVmaW5lZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVk
IGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50
YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeik7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBm
bG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotCi0g
ICAgLy8gRGlzdGFuY2UgbW9kZWwKLSAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbDsKLQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3Rh
bmNlOwotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOwotICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7Ci0KLSAgICAvLyBE
aXJlY3Rpb25hbCBzb3VuZCBjb25lCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
Y29uZUlubmVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91
dGVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2Fp
bjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZGM1M2M2ODBiMTY0MzMwYTA4MWZjMWE2Njg3YTc2NTliNmZiZTRmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoY29udGV4dCkpOwotICAgIH0KLQotICAgIEF1ZGlvUGFyYW0mIGxlZ2FjeVJlZHVjdGlvbigp
IHsgcmV0dXJuIG1fbGVnYWN5UmVkdWN0aW9uLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmIGNv
bnRleHQpCi0gICAgICAgIDogRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0KQotICAgICAg
ICAsIG1fbGVnYWN5UmVkdWN0aW9uKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicmVkdWN0
aW9uIl9zLCAwLCAtMjAsIDAsIEF1dG9tYXRpb25SYXRlOjpLUmF0ZSkpCi0gICAgewotICAgICAg
ICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxDb3VudE1vZGU6OkNsYW1w
ZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwotICAgIH0KLQotICAgIHZv
aWQgc2V0UmVkdWN0aW9uKGZsb2F0IHJlZHVjdGlvbikgZmluYWwKLSAgICB7Ci0gICAgICAgIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnNldFJlZHVjdGlvbihyZWR1Y3Rpb24pOwotICAgICAgICBt
X2xlZ2FjeVJlZHVjdGlvbi0+c2V0VmFsdWUocmVkdWN0aW9uKTsKLSAgICB9Ci0KLSAgICBSZWY8
QXVkaW9QYXJhbT4gbV9sZWdhY3lSZWR1Y3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNThjMDRlMWQzZmM3ZDZjM2JkYmIyYWYwOTc4NmJhYTI3MDExNDk2MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdF
Ql9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8sCi0gICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJm
YWNlIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHJhdGlvOyAvLyB1bml0LWxlc3MKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBhdHRhY2s7IC8vIGluIFNlY29uZHMKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSByZWxlYXNlOyAvLyBpbiBTZWNvbmRzCi0gICAgW0lt
cGxlbWVudGVkQXM9bGVnYWN5UmVkdWN0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJh
bSByZWR1Y3Rpb247IC8vIGluIERlY2liZWxzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNWYyMWRmNzliNDY1MWI0M2ExZjM3ZGEz
MWE5YjVhZGU4NTA4OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAi
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxl
UmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IFdlYktpdEF1ZGlv
Q29udGV4dChkb2N1bWVudCwgc2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQotewot
fQotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Ojp+V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCgpID0gZGVmYXVsdDsKLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3Igd29ya2Vycy4KLSAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgaWYgKCFudW1iZXJPZkNo
YW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlz
U3VwcG9ydGVkU2FtcGxlUmF0ZShzYW1wbGVSYXRlKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFN5bnRheEVycm9yIH07Ci0gICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6
Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAg
ICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVy
cm9yIH07Ci0KLSAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHNhbXBsZVJhdGUs
IHJlbmRlclRhcmdldC5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgYXVkaW9Db250ZXh0LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gYXVkaW9Db250ZXh0OwotfQotCi1jb25zdCBjaGFy
KiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQiOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMDcyMmQzZDM4Mjlm
NDk5ZGFjZWM4ZjhjY2FkODlhYjIzNWM4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVkaW9Db250ZXh0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB+V2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsK
LQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1
YWE2NDkyODhlMGFlN2FlOTUxMWUyOGMwZjkxNzVhYzhhNzIzN2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBJbnRlcmZhY2VOYW1lPXdl
YmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBX
ZWJLaXRBdWRpb0NvbnRleHQgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTg2NTUwYzIzYWJmMTU0
NjJlZDg3OGNiYzFkNDc5MTEzNmJlMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2Np
bGxhdG9yTm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgotI2luY2x1ZGUgIldl
YktpdEF1ZGlvQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktp
dE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIE9zY2lsbGF0b3JOb2RlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9zY2lsbGF0b3JOb2RlPj4gY3JlYXRl
KFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYktpdE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldFdlYktpdFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHdhdmUpCi0gICAgewotICAg
ICAgICBpZiAoIXdhdmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNldFBlcmlvZGlj
V2F2ZSgqd2F2ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYktpdE9zY2ls
bGF0b3JOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBPc2NpbGxh
dG9yTm9kZShjb250ZXh0KQotICAgIHsKLSAgICAgICAgc2V0VHlwZShPc2NpbGxhdG9yVHlwZTo6
U2luZSk7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRPc2NpbGxhdG9yTm9kZSI7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNlYjRhYjk5ODFiZTlkMDkwMDc0Y2YyMTQ5NTU2ZjlmYWZkYzAxYmQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAsIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBBY3RpdmVET01PYmplY3QsCi0g
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8m
UHJlZml4ZWRXZWJBdWRpbywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKLSAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlw
ZTsKLQotICAgIC8vIFBsYXliYWNrIHN0YXRlIGNvbnN0YW50cy4KLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBVTlNDSEVEVUxFRF9TVEFURSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NU
QVRFID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7Ci0K
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZTsKLQot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCi0K
LSAgICBbSW1wbGVtZW50ZWRBcz1zZXRXZWJLaXRQZXJpb2RpY1dhdmVdIHVuZGVmaW5lZCBzZXRQ
ZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlPyB3YXZlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAKaW5kZXggNTBmMzQ0MjMyZGM4NjE1YzQyMmY5NGY5MmE5ZGM3YzExYWI0MGRjZS4uMDA2YjNk
ODFkMDcyYjIwODIxZjlkZWY4NDU4YjMxNmY4ODQ2YTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCIKIAorI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCAyN2YyOTliNmJlMjE0MGI4NTgyZWU3M2Y0NzMzZWRjODQxMmQ5Mjg0Li4wZTMw
ZTA5ZWMyMGVjNTZkZDQzNDE5MTdhYjQ0YzYyMDE1ZjVmOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjgyLDkgKzI4Miw2IEBAIE1vZHVsZXMvd2ViYXVkaW8vU3RlcmVvUGFubmVyTm9kZS5jcHAKIE1v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwCi1Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKLU1vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAotTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3Rh
dGlvblJlc3BvbnNlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwCkBAIC0zNzc3LDE5ICszNzc0LDEyIEBAIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNX
ZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwCi1KU1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKLUpTV2ViS2l0
QXVkaW9Db250ZXh0LmNwcAotSlNXZWJLaXRBdWRpb0xpc3RlbmVyLmNwcAotSlNXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwCi1KU1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCiBKU1dl
YktpdE1lZGlhS2V5RXJyb3IuY3BwCiBKU1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcAog
SlNXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwCiBKU1dlYktpdE1lZGlhS2V5cy5jcHAKIEpTV2ViS2l0TmFtZXNwYWNlLmNwcAotSlNXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAotSlNXZWJLaXRPc2NpbGxhdG9yTm9kZS5jcHAKIEpT
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQu
Y3BwCiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYzM1OTE5MDJiMTIwYmQzYWIw
NjBiZDhjNWIxYjdmMmFiM2MxN2I5Li43ZTAzYzc5ZDAxZmYwMzAwZjg5ZTY4YTk0ZDUzZjVlMzUz
ZTQ3MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNTI1LDEzICsyNTI1LDEwIEBACiAJCTgzMEExQzdEMjREQjc4OEIwMDJF
Q0NBRCAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEExQzdDMjREQjc4NzAwMDJFQ0NBRCAv
KiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJODMwQTM2QkQxREFD
NUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01v
dXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMEQwQjY5MjRGNTdENjcwMDdFRDEyMiAvKiBJSVJQ
cm9jZXNzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMEQwQjY2MjRGNTdENTAwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCAqLzsgfTsKLQkJODMw
RUVBQkEyNERCNkE2NDAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEVFQUI3MjRE
QjZBNTIwMDlFRkJDRSAvKiBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi87IH07CiAJ
CTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5
RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODMx
MUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0
Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OwogCQk4MzE5
OEZCRjI0QTE2MEREMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxOThGQkUyNEExNjBDMTAwNDIwQjA1
IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAqLzsgfTsKLQkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5
IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlv
UGFubmVyTm9kZS5oICovOyB9OwotCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRv
ckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4
MzI2QkY4RTI0RDM1QzMzMDAxRjhBODUgLyogT3ZlclNhbXBsZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjZCRjg5MjREMzVDMjAwMDFGOEE4
NSAvKiBPdmVyU2FtcGxlVHlwZS5oICovOyB9OwogCQk4MzI2QkY4RjI0RDM1QzM5MDAxRjhBODUg
LyogV2F2ZVNoYXBlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMjZCRjhDMjREMzVDMjAwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9u
cy5oICovOyB9OwpAQCAtMjU0NSw5ICsyNTQyLDcgQEAKIAkJODMzQkQ4MTgyNTI0RDRGNTAwNkU3
MkIzIC8qIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCRDgxNjI1MjRENEUzMDA2RTcyQjMgLyogV29ya2xl
dEdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKIAkJODMzQkQ4MUQyNTI0RDUzMDAwNkU3MkIzIC8q
IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzNCRDgxOTI1MjRENTFCMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJODMzQkQ4MUUyNTI0RDUzNDAwNkU3MkIzIC8qIEF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzNCRDgxQjI1MjRENTFDMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJODMzRDFDNzYyNEQ4RDU0RjAwRTgxM0RGIC8qIFdlYktp
dEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMzRDFDNzMyNEQ4RDUzMzAwRTgxM0RGIC8qIFdlYktpdEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oICovOyB9OwogCQk4MzQwN0ZDMTFFOEQ5QzE3MDBFMDQ4RDMgLyogVmlz
aWJpbGl0eUNoYW5nZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk4MzQzRDk4NDI0RDBERUU5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNDNEOTgxMjREMERF
QTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oICovOyB9OwogCQk4MzQ0NzZFRjFE
QTVCQzVFMDAyQjVFQjAgLyogSlNTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURBNUE1MUUwMEZGRDhE
NCAvKiBKU1Njcm9sbExvZ2ljYWxQb3NpdGlvbi5oICovOyB9OwogCQk4MzQ0NzZFRjFEQTVCQzVF
MDAyQjVFQzEgLyogSlNTY3JvbGxJbnRvVmlld09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURBNUE1MUUwMEZGRDhFNSAvKiBK
U1Njcm9sbEludG9WaWV3T3B0aW9ucy5oICovOyB9OwogCQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjZF
QjAgLyogSlNTY3JvbGxCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNFOUIzMDExREE1QTUxRTAwRkZFOEQ0IC8qIEpTU2Nyb2xsQmVoYXZp
b3IuaCAqLzsgfTsKQEAgLTI1NjAsNyArMjU1NSw2IEBACiAJCTgzNTA1MUE0MjRGNTczQzQwMDk5
MTFENyAvKiBJSVJGaWx0ZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzUwNTFBMjI0RjU3M0FGMDA5OTExRDcgLyogSUlSRmlsdGVyTm9kZS5o
ICovOyB9OwogCQk4MzUwNTFBNTI0RjU3M0M4MDA5OTExRDcgLyogSUlSRmlsdGVyT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1MDUxQTAy
NEY1NzNBRTAwOTkxMUQ3IC8qIElJUkZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODM1MjBDN0Ux
QTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NG
b250RmFtaWx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJODM1NkY5N0YyNEQ5RjgxODAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTZGOTdFMjRE
OUY4MDkwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmggKi87IH07CiAJCTgzNThDQjcw
MUM1MzI3NzUwMEUwQzJEOCAvKiBKU1hNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Y1NzBBRDFDNTMyNjhFMDA3RkQ2Q0IgLyogSlNY
TUxEb2N1bWVudC5oICovOyB9OwogCQk4MzVEMkQ3ODFGNUYxRkJEMDAxNDFERUQgLyogSFRNTElu
cHV0RWxlbWVudEVudHJpZXNBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNUQyRDc1MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50
RW50cmllc0FQSS5oICovOyB9OwogCQk4MzVEMzYzNzE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVC
dWlsZGVyQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzVEMzYzNjE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggKi87
IH07CkBAIC0yNjEzLDcgKzI2MDcsNiBAQAogCQk4M0EyQUJEQjI0RDg2REUwMDBFMkQ3M0QgLyog
RGVsYXlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0EyQUJEODI0RDg2REM2MDBFMkQ3M0QgLyogRGVsYXlPcHRpb25zLmggKi87IH07CiAJ
CTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNBOEFDM0UxRkFC
QkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNBQ0QwMTMyNTIyOUUxMDAwMEQx
MjRFIC8qIFdvcmtsZXRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0FDRDAxMDI1MjI5RTA0MDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMu
aCAqLzsgfTsKLQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2
RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0Iy
RDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1
IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVx
dWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2
ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRF
RjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKQEAgLTEwOTM4LDcgKzEwOTMx
LDYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBF
RDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwNUY5QTI0RUIxRDI4MDA0ODBG
OUIgLyogQXVkaW9UaW1lc3RhbXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UaW1lc3RhbXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDVGOUMyNEVCMUQyOTAwNDgwRjlCIC8q
IEF1ZGlvVGltZXN0YW1wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1RpbWVzdGFtcC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTA5NjIsOCArMTA5NTQsNiBAQAogCQk4MzBBMzZCQjFEQUM1RkE3MDA2RDdEMDkgLyog
SlNNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01v
dXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMEQwQjY2MjRG
NTdENTAwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUlSUHJvY2Vz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMEQwQjY4MjRGNTdENTAwMDdF
RDEyMiAvKiBJSVJQcm9jZXNzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUlSUHJvY2Vzc29y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMwRUVBQjcyNERCNkE1MjAwOUVG
QkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk4MzBFRUFCOTI0REI2QTUyMDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTAy
QjI1MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDAxRkFBMkU4OTAwRTND
OEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDk3MiwxMiArMTA5NjIsNiBAQAogCQk4MzE5OEZCRDI0QTE2MEMxMDA0MjBCMDUgLyog
QmFzZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFzZUF1ZGlvQ29u
dGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4RkJFMjRBMTYwQzEw
MDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJhc2VBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxQTNFQTgyNTNGNzhDMjAwNjc4MDRGIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMxQjYxNkYyNDk5
QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE3MjI0OTlB
NTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZl
bnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2
aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAwOCwxMSArMTA5OTIsNyBAQAogCQk4
MzNCRDgxQjI1MjRENTFDMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQkQ4MUMyNTI0RDUxRDAwNkU3
MkIzIC8qIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQ0Y3MEYyMERCM0Y1RjAwMTQxQkNDIC8qIEpTUGVy
Zm9ybWFuY2VPYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1BlcmZvcm1hbmNlT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MzNEMUM3MzI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzNEMUM3NTI0RDhENTMzMDBFODEz
REYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQwN0ZD
MDFFOEQ5QzEyMDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzNDNEOTgxMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRP
c2NpbGxhdG9yTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzQzRDk4MzI0RDBERUE5MDA5QUJENDkgLyog
V2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdE9zY2lsbGF0b3JOb2RlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0OEJGQTkxQjg1NzI5NTAwOTEyRjM2IC8q
IENsYXNzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDbGFzc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ4
QkZBQTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzRBNkEzODI1MjY4NDQxMDA3NDdGNUQgLyogV29ya2xldFBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFBhcmFtZXRlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDQzLDggKzExMDIzLDYgQEAKIAkJODM1
MEMzRTgxREE1OUI2MjAwMzU2NDQ2IC8qIFNjcm9sbFRvT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU2Nyb2xsVG9PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhbWlseS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzU2NTdDNjFFQ0FCMEU4MDBDREU3MkQgLyogSlNET01NYXRyaXhJ
bml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NTWF0cml4
SW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzNTZGOTdDMjREOUY4MDgw
MDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0xpc3Rl
bmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1NkY5N0UyNEQ5RjgwOTAw
NkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVk
aW9MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzVBQTM4ODI1M0Y1
NUJCMDA3NDY1NTQgLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1QjY4MEUxRjU0OEJE
RTAwNzFGN0Y2IC8qIEpTRmlsZVN5c3RlbUVudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3RlbUVudHJ5Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzQxRjVGMUZCODAwMTQxREVEIC8qIEhUTUxJ
bnB1dEVsZW1lbnQrRW50cmllc0FQSS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkhUTUxJ
bnB1dEVsZW1lbnQrRW50cmllc0FQSS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTExNTUsOCArMTExMzMsNiBAQAogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNBQ0QwMTAyNTIyOUUwNDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzQUNEMDEyMjUyMjlFMDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xldE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlv
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0IxQTcwMTI0OTk4NUQw
MDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJE
OSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0
b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZp
Z2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzExNDMsMjMg
KzMxMTE5LDYgQEAKIAkJCQk4MzI2QkY4RDI0RDM1QzIxMDAxRjhBODUgLyogV2F2ZVNoYXBlck9w
dGlvbnMuaWRsICovLAogCQkJCUZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNo
YXBlclByb2Nlc3Nvci5oICovLAotCQkJCTgzM0QxQzczMjREOEQ1MzMwMEU4MTNERiAvKiBXZWJL
aXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCAqLywKLQkJCQk4MzNEMUM3NTI0RDhENTMzMDBFODEz
REYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCAqLywKLQkJCQk4MzAwM0UyQjI0
OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKLQkJCQk4M0IxQTZG
RjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCi0JCQkJODNCMUE3
MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCi0JCQkJODM1
NkY5N0UyNEQ5RjgwOTAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCAqLywKLQkJCQk4
MzU2Rjk3QzI0RDlGODA4MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwgKi8sCi0J
CQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Ki8sCi0JCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oICovLAotCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsICovLAotCQkJCTgzMEVFQUI3MjREQjZBNTIwMDlFRkJDRSAvKiBXZWJLaXREeW5h
bWljc0NvbXByZXNzb3JOb2RlLmggKi8sCi0JCQkJODMwRUVBQjkyNERCNkE1MjAwOUVGQkNFIC8q
IFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsICovLAotCQkJCTgzMUI2MTczMjQ5OUE1
OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAqLywKLQkJCQk4MzFC
NjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAot
CQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmlkbCAqLywKLQkJCQk4MzQzRDk4MTI0RDBERUE5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRv
ck5vZGUuaCAqLywKLQkJCQk4MzQzRDk4MzI0RDBERUE5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxs
YXRvck5vZGUuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJhdWRpbzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0zNTc5OSwyMCArMzU3NTgsMTMgQEAKIAkJCQlBNTg0RkUzMDE4
NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdl
YktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzNEMUM3NjI0RDhENTRG
MDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk4MzU2Rjk3RjI0RDlGODE4MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9M
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURGRUJBQjcxODU5
MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
ODMwRUVBQkEyNERCNkE2NDAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIyNiAvKiBXZWJLaXRN
ZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNTExREE2M0E5
RjAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEMDYyMTRFMURBNjNBOEUwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEMDYyMTUwMURBNjNBOTQwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleVNl
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBX
ZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjI3MzIxMjBDOUZBRkUwMERC
MURFRiAvKiBXZWJLaXROU0ltYWdlRXh0cmFzLmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzFCNjE3
NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJODM0M0Q5ODQyNEQwREVFOTAwOUFCRDQ5IC8qIFdlYktpdE9zY2lsbGF0b3JO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDk0QkQ3OTUwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMUMwRkYyNTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMWJl
M2RlODNiZmU2ODFmN2NiM2VkYzVkMzNhOWE2ZTIwNjY3NGY0Li41ZTRjOWMzMzYwMDhmMmZiYTUz
MTAzNTQ0NmQyZTUyYzU2NGE2ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0yOTUsOCArMjk1LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLSNp
bmNsdWRlICJCYXNlQXVkaW9Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0
LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC00Mzg0LDE3ICs0MzgzLDEwIEBAIGJvb2wgSW50ZXJu
YWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JiBlbGVt
ZW50KSBjb25zdAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCi12b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZh
cmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYg
Y29udGV4dFZhcmlhbnQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9pZCBJbnRl
cm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQmIGNvbnRleHQs
IFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQogewotICAgIFJlZlB0cjxBdWRpb0NvbnRl
eHQ+IGNvbnRleHQ7Ci0gICAgc3dpdGNoT24oY29udGV4dFZhcmlhbnQsIFsmXShSZWZQdHI8QXVk
aW9Db250ZXh0PiBlbnRyeSkgewotICAgICAgICBjb250ZXh0ID0gZW50cnk7Ci0gICAgfSwgWyZd
KFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+IGVudHJ5KSB7Ci0gICAgICAgIGNvbnRleHQgPSBl
bnRyeTsKLSAgICB9KTsKLQotICAgIGF1dG8gcmVzdHJpY3Rpb25zID0gY29udGV4dC0+YmVoYXZp
b3JSZXN0cmljdGlvbnMoKTsKLSAgICBjb250ZXh0LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9u
KHJlc3RyaWN0aW9ucyk7CisgICAgYXV0byByZXN0cmljdGlvbnMgPSBjb250ZXh0LmJlaGF2aW9y
UmVzdHJpY3Rpb25zKCk7CisgICAgY29udGV4dC5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJl
c3RyaWN0aW9ucyk7CiAKICAgICByZXN0cmljdGlvbnMgPSBBdWRpb0NvbnRleHQ6Ok5vUmVzdHJp
Y3Rpb25zOwogCkBAIC00NDA2LDcgKzQzOTgsNyBAQCB2b2lkIEludGVybmFsczo6c2V0QXVkaW9D
b250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sCiAg
ICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmlu
ZywgInJlcXVpcmVwYWdlY29uc2VudGZvcmF1ZGlvc3RhcnQiKSkKICAgICAgICAgICAgIHJlc3Ry
aWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRS
ZXN0cmljdGlvbjsKICAgICB9Ci0gICAgY29udGV4dC0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihy
ZXN0cmljdGlvbnMpOworICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmlj
dGlvbnMpOwogfQogCiB2b2lkIEludGVybmFsczo6dXNlTW9ja0F1ZGlvRGVzdGluYXRpb25Db2Nv
YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzM2QwM2NiMTIxZTQxMjU3Y2I1
YTk4NjhkOTQyZWU4YjAwYmNlNzU1Li5hY2Y3NjZjMmI5MjcwN2EyNzMyYjk3YmZlMmEzYmM2NTNm
ZGMyOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExMCw3ICsxMTAsNiBA
QCBjbGFzcyBVbnN1c3BlbmRhYmxlQWN0aXZlRE9NT2JqZWN0OwogY2xhc3MgVm9pZENhbGxiYWNr
OwogY2xhc3MgV2ViQW5pbWF0aW9uOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwotY2xh
c3MgV2ViS2l0QXVkaW9Db250ZXh0OwogY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBYTUxIdHRw
UmVxdWVzdDsKIApAQCAtNzE0LDcgKzcxMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9BVURJTykKLSAgICB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25z
dCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0
Pj4mLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZyk7CisgICAgdm9pZCBzZXRBdWRpb0Nv
bnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNT
dHJpbmcpOwogICAgIHZvaWQgdXNlTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxM2Y1ZTBmNDg0NjliOTFh
YzhmYTc0ZTk0OGE2YTgzYjZiMjE2MGRkLi4wZTAxNGI4MGYyNzNlY2Q4NTAzMGFkZDg1ODE2ZGJm
ZWFiMzY5MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03MzcsNyAr
NzM3LDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmlu
ZWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0
cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gRE9NU3RyaW5nIG1l
ZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlKTsKICAgICBbQ29uZGl0
aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1l
ZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0
aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKChB
dWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0LCBET01TdHJpbmcgcmVz
dHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0QXVk
aW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcgcmVz
dHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBwb3N0UmVtb3Rl
Q29udHJvbENvbW1hbmQoRE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBm
bG9hdCBhcmd1bWVudCA9IDApOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFj
dGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbGVhbiBzaG91bGRQYXVzZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggMmFiZDZjNTFjMmE2ZjVhMjc2MTI0ZjI5ZGM3ZmNk
NWMzMGQwOGVkZC4uYzE5YjNmOWVkNTVhOWE0ZTM1MmNiZDgxYTkzNjRjYzlmY2RiYzZlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU1MzQsNyArNTUzNCw2IEBAIEhSRVNV
TFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0dGluZ3Muc2V0V2Vi
QXVkaW9FbmFibGVkKHRydWUpOwotICAgIHNldHRpbmdzLnNldFByZWZpeGVkV2ViQXVkaW9FbmFi
bGVkKGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQogCiAjaWYgRU5BQkxFKFdF
QkdMKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428698</attachid>
            <date>2021-05-14 18:42:49 -0700</date>
            <delta_ts>2021-05-14 19:42:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225832-20210514184249.patch</filename>
            <type>text/plain</type>
            <size>128525</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkMDM5YzY1MjhjNjliYWNhZDk3OTVh
MzU1ZTUxMTMwZmQ4MzdhYTYuLmU0M2IyMTFkYzQ1NzFjNmFiMGViZWRiY2FjOTFkZWZmMjkyOTE2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlvIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEcm9wIHByZWZlcmVuY2UgZm9yIHByZWZpeGVkIFdlYkF1ZGlvLCB3aGljaCB3YXMgZGlz
YWJsZWQgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVT
eXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2IxNWUxOTc3OTU3Nzc3NWY5OGMyZDIzODkwOWFhZTgwZGE3ZWExYy4u
OGMwMWVkMzQ2MWY5OThhNmNmYjVlY2JhOTM5YzdhZTUyOWU3NmY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY5IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBs
ZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlvbiBub3cgdGhhdCBpdCBpcyBu
byBsb25nZXIKKyAgICAgICAgcHJlc2VudCBpbiBzaGlwcGluZyBhbmQgd2UgaGF2ZSByZWNlaXZl
ZCBhbnkgcmVwb3J0cyBvZiBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBkcm9wcyBhbGwgdGhlIGxl
Z2FjeSBjb2RlIGJ1dCBzaGUgc2hvdWxkIGJlIGFibGUgdG8gY2xlYW4gdXAgdGhlCisgICAgICAg
IGNvZGUgZnVydGhlciBpbiBmb2xsb3ctdXBzLiBJbiBwYXJ0aWN1bGFyLCBJIGJlbGlldmUgc29t
ZSBjb2RlIGNhbgorICAgICAgICBub3cgYmUgbW92ZWQgZnJvbSBCYXNlQXVkaW9Db250ZXh0IHRv
IE9mZmxpbmVBdWRpb0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6fkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29u
dGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0Ojppc09mZmxpbmVDb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbnRleHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3Rl
bmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xp
c3RlbmVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjEtMDUtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OOiBbIE1hYyBXSzIgXSBmYXN0L21lZGlhc3RyZWFtL2F1ZGlvLXRyYWNrLWVuYWJsZWQu
aHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjM1
NmM3MTk1ZTMzNDU5YTM3NTI5MDU5ZmU1M2I3YmI0MWM5NmNmMS4uZDY5ZTdhNDA2Y2Q3ODYzNTI1
MDFhNWNhMDg5ODdjYWZmNzU5OTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBl
eHBsaWNpdGx5IGRpc2FibGVkIHdpdGggcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24g
Z2l2ZW4gdGhhdAorICAgICAgICBpdCBubyBsb25nZXIgZXhpc3RzLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgor
CiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVTeXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRl
eCBmYTFkN2IxMTg2NTg5MjQ3MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3Li42MWY4N2NmYmZhMGJi
MzliOGNkNjIzZTZlYWYyMmIxNzg2NmE0ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU4
MywxOSArNTgzLDYgQEAgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVk
OgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiUHJlZml4ZWQgV2Vi
QXVkaW8gQVBJIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQcmVmaXhlZCBXZWJBdWRp
byBBUEkiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKLSAgZGVmYXVsdFZhbHVlOgot
ICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAg
ICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQog
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFk
YWJsZU5hbWU6ICJSZXNvdXJjZSBMb2FkIFNjaGVkdWxpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDNkYjUxYmE2NmVkNjkzODM3N2M5NGRhZDY2NjZmYTk5NzE2MTg0ZGMuLjVhM2Y5NWNiYzRk
MzkxOTI1YWZhZmZlYjNlMTBmOTQ3ZWVmYmVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
NzEsMTMgKzU3MSw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9u
cy5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlLmlkbAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjI5
MjZiYzYyYzM3NWRjNDNmN2Y3Y2RiYzEwYmEyYjdmZGQ5M2NmZi4uMzFjNGEzMTYzMWJiZTNhYTY1
NjBjNjRhY2UwZjBkYmExNWUxYTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC00MjksMTMgKzQyOSw2IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1N0ZXJlb1Bhbm5lck9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQxMDA5ZWMxNzA3NTRhOTFm
OTdiYTMxMWUyNDI5MWZjOWRkZDNkNDAuLjQ4YzE2MzIwYmE5Yzk0NTE5MzBlMGNiODAzMjZlYTU1
MTYyYjk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTM2LDE0ICszNiwxMSBAQAogI2luY2x1
ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1XVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsKIAog
Y29uc3RleHByIGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCiAK
QEAgLTkzLDcgKzkwLDYgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCkKIAogQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojp+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCkKIHsKLSAgICBjbGVhclBhbm5lck5vZGUoKTsKICAg
ICB1bmluaXRpYWxpemUoKTsKIH0KIApAQCAtMTQ2LDkgKzE0Miw2IEBAIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBBcHBseSB0aGUgZ2FpbiAoaW4tcGxhY2UpIHRvIHRoZSBv
dXRwdXQgYnVzLgotICAgIGZsb2F0IHRvdGFsR2FpbiA9IGxlZ2FjeUdhaW5WYWx1ZSgpOwotICAg
IG91dHB1dEJ1cy5jb3B5V2l0aEdhaW5Gcm9tKG91dHB1dEJ1cywgdG90YWxHYWluKTsKICAgICBv
dXRwdXRCdXMuY2xlYXJTaWxlbnRGbGFnKCk7CiB9CiAKQEAgLTQxOSw3ICs0MTIsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVk
aW9CdWZmZXI+JiYgYnVmZmVyKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKGJ1ZmZlciAmJiBtX3dhc0J1ZmZlclNl
dCAmJiBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkpCisgICAgaWYgKGJ1
ZmZlciAmJiBtX3dhc0J1ZmZlclNldCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiVGhlIGJ1ZmZlciB3YXMgYWxyZWFkeSBzZXQiX3MgfTsKIAogICAgIC8v
IFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2Fu
IHJlLWNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KQEAg
LTUzNywxMCArNTMwLDYgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmFkanVzdEdyYWlu
UGFyYW1ldGVycygpCiAKIGRvdWJsZSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hS
YXRlKCkKIHsKLSAgICBkb3VibGUgZG9wcGxlclJhdGUgPSAxLjA7Ci0gICAgaWYgKG1fbGVnYWN5
UGFubmVyTm9kZSkKLSAgICAgICAgZG9wcGxlclJhdGUgPSBtX2xlZ2FjeVBhbm5lck5vZGUtPmRv
cHBsZXJSYXRlKCk7Ci0gICAgCiAgICAgLy8gSW5jb3Jwb3JhdGUgYnVmZmVyJ3Mgc2FtcGxlLXJh
dGUgdmVyc3VzIEF1ZGlvQ29udGV4dCdzIHNhbXBsZS1yYXRlLgogICAgIC8vIE5vcm1hbGx5IGl0
J3Mgbm90IGFuIGlzc3VlIGJlY2F1c2UgYnVmZmVycyBhcmUgbG9hZGVkIGF0IHRoZSBBdWRpb0Nv
bnRleHQncyBzYW1wbGUtcmF0ZSwgYnV0IHdlIGNhbiBoYW5kbGUgaXQgaW4gYW55IGNhc2UuCiAg
ICAgZG91YmxlIHNhbXBsZVJhdGVGYWN0b3IgPSAxLjA7CkBAIC01NTAsNyArNTM5LDcgQEAgZG91
YmxlIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUoKQogICAgIGRvdWJsZSBi
YXNlUGl0Y2hSYXRlID0gcGxheWJhY2tSYXRlKCkuZmluYWxWYWx1ZSgpOwogICAgIGRvdWJsZSBk
ZXR1bmUgPSBwb3coMiwgbV9kZXR1bmUtPmZpbmFsVmFsdWUoKSAvIDEyMDApOwogCi0gICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGUgKiBkZXR1bmU7CisgICAgZG91YmxlIHRvdGFsUmF0ZSA9IHNhbXBsZVJhdGVGYWN0b3Ig
KiBiYXNlUGl0Y2hSYXRlICogZGV0dW5lOwogCiAgICAgdG90YWxSYXRlID0gc3RkOjpjbGFtcCh0
b3RhbFJhdGUsIC1NYXhSYXRlLCBNYXhSYXRlKTsKICAgICAKQEAgLTU2NywyNCArNTU2LDYgQEAg
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAg
ICByZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9i
dWZmZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFdl
YktpdEF1ZGlvUGFubmVyTm9kZSogcGFubmVyTm9kZSkKLXsKLSAgICBpZiAobV9sZWdhY3lQYW5u
ZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhhc0ZpbmlzaGVkKCkpCi0gICAgICAgIG1fbGVnYWN5
UGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpjbGVhclBhbm5lck5vZGUoKQotewotICAgIG1fbGVnYWN5UGFubmVyTm9kZSA9IG51bGxwdHI7
Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaW5pc2goKQotewotICAgIGNsZWFy
UGFubmVyTm9kZSgpOwotICAgIEFTU0VSVCghbV9sZWdhY3lQYW5uZXJOb2RlKTsKLSAgICBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggMmRi
NzY2MWI4NTQxOGQ4Y2RhOTJmOTA0MWY0ZGE0YTY5MDcyOTY5Yi4uYjczM2Q3MGM2ZmNiYWFhNWRi
YTQ2NWNiNjhhZTMyMzYyZDI3YzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMywxMyArMzMsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7Ci1jbGFzcyBXZWJL
aXRBdWRpb1Bhbm5lck5vZGU7CiBzdHJ1Y3QgQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zOwogCiAv
LyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9Ob2RlIHJlcHJlc2VudGluZyBhbiBh
dWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8gYXNzZXQgcmVwcmVzZW50ZWQgYnkg
YW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2lsbCBiZSB1c2VkIGZvciBzaG9ydCBz
b3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9mIHNjaGVkdWxpbmcgZmxleGliaWxp
dHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVyZmVjdCB3YXlzKS4KIAotY2xhc3Mg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7
CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291
cmNlTm9kZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+
IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03NiwxNiAr
NzUsOSBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSYgZGV0dW5lKCkgeyByZXR1cm4gbV9kZXR1
bmUuZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwbGF5YmFja1JhdGUoKSB7IHJldHVybiBtX3Bs
YXliYWNrUmF0ZS5nZXQoKTsgfQogCi0gICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBpcyBzZXQsIHRo
ZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxheWJhY2sgcGl0
Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKik7
Ci0gICAgdm9pZCBjbGVhclBhbm5lck5vZGUoKTsKLQogICAgIC8vIElmIHdlIGFyZSBubyBsb25n
ZXIgcGxheWluZywgcHJvcG9nYXRlIHNpbGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4K
ICAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUKLSAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOwotCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJB
dWRpb0J1ZmZlclNvdXJjZU5vZGUiOyB9CiAKIHByb3RlY3RlZDoKQEAgLTk1LDkgKzg3LDYgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgeyByZXR1cm4gMS4wOyB9
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFRocm93T25BdHRlbXB0VG9PdmVyd3JpdGVCdWZmZXIo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFBs
YXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBn
cmFpbkR1cmF0aW9uKTsKICAgICB2b2lkIGFkanVzdEdyYWluUGFyYW1ldGVycygpOwogCkBAIC0x
MzcsMTMgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fd2FzR3JhaW5EdXJhdGlvbkdp
dmVuIHsgZmFsc2UgfTsKIAogICAgIC8vIHRvdGFsUGl0Y2hSYXRlKCkgcmV0dXJucyB0aGUgaW5z
dGFudGFuZW91cyBwaXRjaCByYXRlIChub24tdGltZSBwcmVzZXJ2aW5nKS4KLSAgICAvLyBJdCBp
bmNvcnBvcmF0ZXMgdGhlIGJhc2UgcGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNp
b24gZmFjdG9yIGZyb20gdGhlIGJ1ZmZlciwgYW5kIGFueSBkb3BwbGVyIHNoaWZ0IGZyb20gYW4g
YXNzb2NpYXRlZCBwYW5uZXIgbm9kZS4KKyAgICAvLyBJdCBpbmNvcnBvcmF0ZXMgdGhlIGJhc2Ug
cGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNpb24gZmFjdG9yIGZyb20gdGhlIGJ1
ZmZlci4KICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAotICAgIC8vIFdlIG9wdGlvbmFs
bHkga2VlcCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQg
dGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLgotICAgIEF1
ZGlvQ29ubmVjdGlvblJlZlB0cjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+IG1fbGVnYWN5UGFubmVy
Tm9kZTsKLQogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZl
cigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBt
dXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKaW5kZXggM2Vj
Y2FiOWJlNmY5MDA4OTM3ZDViNTc0MTlmYTQwMGJhNDM4MjEwYi4uMDNiNDdkNzI4YWU0MGFhYWQ4
MTdiNjBmMjNjNjJlMzc4MWUxMzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbApAQCAtNDEsMTEgKzQx
LDQgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKICAgICBbSW1wbGVtZW50ZWRB
cz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBv
cHRpb25hbCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJh
dGlvbik7Ci0KLSAgICAvLyBGSVhNRTogVGhvc2UgY29uc3RhbnRzIGFyZSBrZXB0IGZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHByZWZpeGVkIEFQSSBhbmQgc2hvdWxkCi0gICAg
Ly8gYmUgcmVtb3ZlZCBvbmNlIHdlIHN0b3Agc3VwcG9ydGluZyBpdC4KLSAgICBbRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTlNDSEVEVUxF
RF9TVEFURSA9IDA7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29u
c3QgdW5zaWduZWQgc2hvcnQgU0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBbRW5hYmxlZEJ5U2V0
dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NUQVRF
ID0gMjsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNp
Z25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGY2YjU1OTIwNjViMzlmMDJj
ZjEyYjIzODJlZWQyMDAyMzkyOTVhNWYuLjdkNTZkMGE1ZmYzYzUzZTdlY2Q2MzJmY2I4NjUzNzkx
NGIxM2JmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0Nv
bnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQ29u
CiAgICAgaWYgKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUuaGFzVmFsdWUoKSAmJiAhaXNTdXBw
b3J0ZWRTYW1wbGVSYXRlKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgInNhbXBsZVJhdGUgaXMgbm90IGlu
IHJhbmdlIl9zIH07CiAgICAgCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBj
b250ZXh0T3B0aW9ucykpOworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBB
dWRpb0NvbnRleHQoZG9jdW1lbnQsIGNvbnRleHRPcHRpb25zKSk7CiAgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCiAvLyBD
b25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KLUF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRp
b0NvbnRleHQgaXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnN0IEF1ZGlvQ29udGV4dE9w
dGlvbnMmIGNvbnRleHRPcHRpb25zKQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
aXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnRleHRPcHRpb25zKQorQXVkaW9Db250ZXh0
OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdWRpb0NvbnRleHRPcHRp
b25zJiBjb250ZXh0T3B0aW9ucykKKyAgICA6IEJhc2VBdWRpb0NvbnRleHQoZG9jdW1lbnQsIGNv
bnRleHRPcHRpb25zKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRo
aXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwpAQCAtMTE5LDE0ICsxMTksNiBAQCBBdWRp
b0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0
QXVkaW9Db250ZXh0IGlzTGVnYQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7CiB9CiAKLS8vIE9ubHkgbmVlZGVkIGZvciBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LgotQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCBpc0xlZ2FjeVdlYktpdEF1
ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
UmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IEJhc2VBdWRpb0NvbnRl
eHQoZG9jdW1lbnQsIGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCBudW1iZXJPZkNoYW5uZWxz
LCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCi0gICAgLCBtX21lZGlhU2Vzc2lv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCi17Ci0gICAgY29uc3RydWN0Q29tbW9uKCk7Ci19
Ci0KIHZvaWQgQXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQogewogICAgIEFTU0VSVChk
b2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IDBjYzMyOTBmYWY3MTRmNjJjMTk1ZmMzNjkyMWVlMDlmMjhiOGRhNGUuLjE2
NjQ1NjczYzkyYzNhMjllMjc2NDMwZmIwZGJjOGUzNTM5ZWY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBET01XaW5kb3c7CiAKIHN0cnVjdCBBdWRpb1RpbWVzdGFtcDsKIAotY2xhc3MgQXVkaW9D
b250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHQgZmluYWwKICAgICA6IHB1YmxpYyBCYXNlQXVkaW9D
b250ZXh0CiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgogICAgICwgcHVibGljIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcgpAQCAtODksOCArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1f
cmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNv
bnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKLSAgICBBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7
CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgY29uc3QgQXVkaW9Db250ZXh0
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOwogCkBAIC0x
MDcsMjQgKzEwNiwyNCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsK
IAogICAgIC8vIE1lZGlhUHJvZHVjZXIKLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKSBmaW5hbDsKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6
Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9Ci0gICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVk
aW87IH0KLSAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwotICAgIGJvb2wgY2Fu
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wg
c3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZTo6Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1
ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZTo6V2ViQXVkaW87IH0KKyAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVz
dW1lKSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIGZpbmFsOworICAgIGJvb2wg
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQorICAgIGJvb2wgc3Vw
cG9ydHNTZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhU2Vzc2lvbkdyb3Vw
SWRlbnRpZmllciBtZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci4KLSAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBmaW5h
bDsKIAogICAgIC8vIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0xpc3RlbmVyLmgKaW5kZXggNzJhMjNhOWE5NGZkNTYzOTNmMjE0ZTQ4ZDkyOGNkNzQ3
NGFiODcwMS4uZjA1MWFjYjE4Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9MaXN0ZW5lcihjb250ZXh0KSk7CiAgICAgfQotICAgIHZpcnR1YWwgfkF1ZGlvTGlzdGVu
ZXIoKTsKKyAgICB+QXVkaW9MaXN0ZW5lcigpOwogCiAgICAgQXVkaW9QYXJhbSYgcG9zaXRpb25Y
KCkgeyByZXR1cm4gbV9wb3NpdGlvblguZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwb3NpdGlv
blkoKSB7IHJldHVybiBtX3Bvc2l0aW9uWS5nZXQoKTsgfQpAQCAtNzAsOCArNzAsNiBAQCBwdWJs
aWM6CiAKICAgICBGbG9hdFBvaW50M0QgdXBWZWN0b3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1dlYktpdEF1ZGlvTGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAg
ICAgYm9vbCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
VXNlQVJhdGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5pZGwKaW5kZXggNzUzZWM4OGU2NDFhZjIxNmExY2FmNzM4MWM5OTQy
ODgzODZjYjg5OC4uMWI4NDJiZjI1MThhMDE0NDliNDJlMzFlNDZlMWNmYWEyYThiZGUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRs
CkBAIC0yOSw3ICsyOSw4IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBBdWRpb0xpc3RlbmVyIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9QYXJhbSBwb3NpdGlvblg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlv
UGFyYW0gcG9zaXRpb25ZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCmluZGV4IDQ0ZTYyYmQ3MjIwZTJkYzE4MzMzZDljNmM2MTRmM2FiMDBmOGFjNTcu
LjIxNmY2YjdlMjIwMjliNGQxNjI3ZDM5NTA1ZTA5MWU4Y2QzODJiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjczLDE0ICs2NzIsNiBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsK
IH0KIAotVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpCi17Ci0gICAgYXV0byYg
Y29udGV4dCA9IHRoaXMtPmNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC5pc1dlYktpdEF1ZGlv
Q29udGV4dCgpKQotICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRB
dWRpb0NvbnRleHQmPihjb250ZXh0KSk7Ci0gICAgcmV0dXJuIG1ha2VSZWZQdHIoY29udGV4dCk7
Ci19Ci0KIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZldpdGhMb2NrKCkKIHsKICAgICBBU1NFUlQoY29u
dGV4dCgpLmlzR3JhcGhPd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCmluZGV4IDIyNzVjNTM3NzJmM2YyNTcwNmMyNDk1YjYwMGExYTRmYzc1MmUy
YzMuLjIwNTcwYTcyMTU4NzVjNGYwN2Q3MjU2YzMzZmRjZWMyYmI4MzhkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNDIsNyArNDIsNiBAQCBz
dHJ1Y3QgQXVkaW9Ob2RlT3B0aW9uczsKIGNsYXNzIEF1ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1
ZGlvUGFyYW07CiBjbGFzcyBCYXNlQXVkaW9Db250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9Db250
ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBo
YW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1
ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRp
byBkZXN0aW5hdGlvbi4KQEAgLTkwLDggKzg5LDYgQEAgcHVibGljOgogICAgIEJhc2VBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKTsKICAgICBjb25zdCBCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
Y29uc3Q7CiAKLSAgICBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0PiwgUmVmUHRyPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpOwotCiAgICAgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlOyB9CiAKICAgICAvLyBDYW4gYmUg
Y2FsbGVkIGZyb20gbWFpbiB0aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3NjI4Njgx
MTQxM2VkN2Q2MDI3NGI3ODM4NzgwZmI4OWVmMTIyNjA4Li5hMDdmMDljNTBkOTBmZTM1N2ZjNDEx
ZWY2YjBlY2FlMTYyM2RhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuaWRsCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwK
ICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDogRXZlbnRUYXJnZXQg
ewotICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmli
dXRlIChCYXNlQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQmFzZUF1ZGlvQ29udGV4dCBjb250ZXh0OwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCBmOWUzMjRlMjEyNjdhMDE0
OGRiN2I3NmM5YmM3N2IwZmU2MDA4YmExLi5iYjM5NWUzOGIzNGE2ZDg2YmY5NjljNTgxMTYyNjQw
NWJiNmUyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgog
I2luY2x1ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvblJh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2VySGVscGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCAyNjc3NTQwZTQzMjU4YjRmMThhMGQ0
MWM1MmRiYzk0MmM2ZjEyZTVmLi5lMWY0YjA0ZWYyM2M2OWNiOThjNzQwMmEyZmYyMTFiNWE1NDlh
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5jcHAKQEAgLTgwLDcgKzgwLDYgQEAKICNpbmNsdWRlICJTdGVyZW9QYW5uZXJO
b2RlLmgiCiAjaW5jbHVkZSAiU3RlcmVvUGFubmVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldhdmVT
aGFwZXJOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgogCkBAIC0xMzIsNyArMTMxLDcgQEAgc3RhdGljIEhhc2hTZXQ8dWludDY0X3Q+JiBsaXZlQXVk
aW9Db250ZXh0cygpCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgotQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0LCBjb25zdCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKK0Jh
c2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKICAgICA6IEFjdGl2ZURPTU9i
amVjdChkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQpAQCAtMTQxLDcgKzE0MCw3IEBAIEJhc2VBdWRpb0NvbnRleHQ6
OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlv
Q29udGV4CiAgICAgLCBtX2NvbnRleHRJRChnZW5lcmF0ZUF1ZGlvQ29udGV4dElEKCkpCiAgICAg
LCBtX3dvcmtsZXQoQXVkaW9Xb3JrbGV0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9kZXN0aW5h
dGlvbk5vZGUobWFrZVVuaXF1ZVJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+KCp0aGlz
LCBjb250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlKSkKLSAgICAsIG1fbGlzdGVuZXIoaXNMZWdhY3lX
ZWJLaXRBdWRpb0NvbnRleHQgPT0gSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6OlllcyA/IFJl
ZjxBdWRpb0xpc3RlbmVyPihXZWJLaXRBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKSA6IEF1
ZGlvTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2xpc3RlbmVyKEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbGl2ZUF1ZGlvQ29udGV4dHMoKS5hZGQobV9jb250
ZXh0SUQpOwogCkBAIC0xNjMsNyArMTYyLDcgQEAgQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXgKIH0K
IAogLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgot
QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElz
TGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZm
ZXI+JiYgcmVuZGVyVGFyZ2V0KQorQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKQEAgLTE3NCw3ICsxNzMsNyBAQCBCYXNlQXVkaW9Db250
ZXh0OjpCYXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRB
dWRpb0NvbnRleAogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX3JlbmRl
clRhcmdldChXVEZNb3ZlKHJlbmRlclRhcmdldCkpCiAgICAgLCBtX2Rlc3RpbmF0aW9uTm9kZSht
YWtlVW5pcXVlUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4oKnRoaXMsIG51bWJlck9m
Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIG1fcmVuZGVyVGFyZ2V0LmNvcHlSZWYoKSkpCi0gICAgLCBt
X2xpc3RlbmVyKGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0ID09IElzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0OjpZZXMgPyBSZWY8QXVkaW9MaXN0ZW5lcj4oV2ViS2l0QXVkaW9MaXN0ZW5lcjo6
Y3JlYXRlKCp0aGlzKSkgOiBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9s
aXN0ZW5lcihBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGxpdmVBdWRpb0Nv
bnRleHRzKCkuYWRkKG1fY29udGV4dElEKTsKICAgICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
aAppbmRleCA1OGJkY2U5ZGM2ZWFiNTEyNTg2ZWYxM2U3NjEwMWJlYWYxZTUyMzFjLi5hZTBmNDkx
MTJhMzc1MTc5MzIzNWNhNmY4ZTBjNDQzNDczZjRiYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE1LDcgKzExNSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKICAgICAKICAgICBi
b29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUmIGRlc3RpbmF0aW9uKCkgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7IH0KICAgICBjb25zdCBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQpAQCAtMjk3LDkgKzI5Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPj4mIHBhcmFtZXRlckRlc2NyaXB0b3JN
YXAoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckRlc2NyaXB0b3JNYXA7IH0KIAogcHJvdGVj
dGVkOgotICAgIGVudW0gY2xhc3MgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIGV4cGxpY2l0IEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xl
Z2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgPSB7IH0p
OwotICAgIEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29u
dGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRy
PEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CisgICAgZXhwbGljaXQgQmFzZUF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKKyAgICBC
YXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAgICAg
CiAgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Fj
dGl2aXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCA1MWI2YjJjMDk4YzQwNDkyYmZhYzc5
MTVhM2QwMzA1YzhjNmYzOGY0Li40YWE5YWQ0Y2YxNDgxOGJkY2I5YmI2Njk5ZmU4ZDhiOTY4M2Iy
OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkR5bmFtaWNzQ29tcHJlc3Nvci5oIgotI2luY2x1ZGUgIldlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiAvLyBTZXQgb3V0
cHV0IHRvIHN0ZXJlbyBieSBkZWZhdWx0LgpAQCAtNDMsNyArNDIsNiBAQCBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzID0gMjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUpOwotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUpOwogCiBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaAppbmRleCAyZGUwN2RmOWZlMjE4NjFlZTcyOWJhZDJlOWM0N2RlMTE0MzA4OGQyLi5iM2Uw
MjBkYmQ3MzIzMWU0OTRhYzg5MThmOWJjNDI0NWRjNTIzYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaApA
QCAtMzQsMTggKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yOwogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlv
Tm9kZSB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlv
Tm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU+PiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IER5bmFtaWNzQ29tcHJlc3Nv
ck9wdGlvbnMmID0geyB9KTsKIAotICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUo
KTsKKyAgICB+RHluYW1pY3NDb21wcmVzc29yTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0g
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHByb2Nl
c3NPbmx5QXVkaW9QYXJhbXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7Ci0gICAgdm9p
ZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgp
IGZpbmFsOwogCiAgICAgLy8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAg
ICAgQXVkaW9QYXJhbSYgdGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0K
QEAgLTY1LDggKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWR1Y3Rp
b24oZmxvYXQgcmVkdWN0aW9uKSB7IG1fcmVkdWN0aW9uID0gcmVkdWN0aW9uOyB9CiAKIHByaXZh
dGU6Ci0gICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBy
ZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
CmluZGV4IDRlMDZiZDFhODhhM2VlNWY4M2U5YjMxZjRmODc4N2FjZWFmODU5Y2EuLjg0ZDE2YTE1
NWY2OTI3NmRiZGQ0OGI3NWViNzA5YWQ5NWU5MjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoT2ZmbGluZUF1ZGlvQ29udGV4dCk7CiAKIGlubGluZSBPZmZsaW5lQXVkaW9Db250ZXh0OjpP
ZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9C
dWZmZXI+JiYgcmVuZGVyVGFyZ2V0KQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
SXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVS
YXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCisgICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggYWIxNDY2N2QwNjhkYzAxMWFhMDJi
ZTFkMGVhYmE4YzhhOTUwMmQ0OS4uNzQxNDE0N2FmMGM1ZmEzYWVhYjZiMDIzNjFhODYzZTI5MDM5
OWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaApAQCAtMzUsMTQgKzM1LDE0IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIAogLy8gT3Nj
aWxsYXRvck5vZGUgaXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4K
IAotY2xhc3MgT3NjaWxsYXRvck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
IHsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPc2NpbGxhdG9yTm9kZSk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0
ZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3QgT3NjaWxsYXRvck9wdGlvbnMmID0geyB9KTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk9zY2lsbGF0b3JOb2RlIjsg
fQorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiT3NjaWxsYXRvck5vZGUiOyB9CiAKICAgICBPc2NpbGxhdG9yVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHlwZShPc2Np
bGxhdG9yVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuaWRsCmluZGV4IGU0NWZiNzc1ZjBmOTA0MDc5NjYyOGRhNjUxYjNiNGQ5MmQ3
MWQyY2UuLjJkMDI5ZmY4MzUyZjNjNjE0NDVmNzRjMmNjMDlmYjdkMDExYTBhMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCkBA
IC0zNywxMSArMzcsNCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGRldHVu
ZTsgLy8gaW4gQ2VudHMKIAogICAgIHVuZGVmaW5lZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNX
YXZlIHdhdmUpOwotCi0gICAgLy8gRklYTUU6IFRob3NlIGxlZ2FjeSBwbGF5YmFjayBzdGF0ZSBj
b25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAg
ICAvLyBwcmVmaXhlZCBBUEkgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBzdXBw
b3J0aW5nIHRoZSBwcmVmaXhlZCBBUEkuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRX
ZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAg
IFtFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW9dIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJB
dWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgW0VuYWJs
ZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNI
RURfU1RBVEUgPSAzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDk3MTkyZjY3OGIwNDU2MGJiYThjYTdiMzk4YWQyNzlhZjA1ZmNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwLCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0u
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShCYXNlQXVk
aW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBBdWRp
b1BhcmFtJiBnYWluKCkgY29uc3QgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEJhc2VBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCi0gICAgICAgIDogQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpCi0g
ICAgICAgICwgbV9nYWluKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiJfcywgMS4w
LCAwLjAsIDEuMCwgQXV0b21hdGlvblJhdGU6OktSYXRlKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Ym9vbCBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZ2FpbigpLnZhbHVlKCk7IH0KLQotICAgIFJlZjxBdWRpb1BhcmFtPiBtX2dh
aW47Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIyOWM1MjgzOTRjOTJhNGI5ZGE2MzlkOGNhOWQ1NTAyN2VmNThhNWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gQSBjYWNoZWQgKG5v
bi1zdHJlYW1lZCksIG1lbW9yeS1yZXNpZGVudCBhdWRpbyBzb3VyY2UKLVsKLSAgICBDb25kaXRp
b25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAot
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Ci1d
IGludGVyZmFjZSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgOiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUgewotICAgIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwotCi0gICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
UExBWUlOR19TVEFURSA9IDI7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURfU1RB
VEUgPSAzOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBsYXliYWNr
U3RhdGU7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBnYWluOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHBsYXliYWNrUmF0ZTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIGxvb3A7Ci0KLSAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKLSAgICBh
dHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7Ci0KLSAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVy
XSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3Vi
bGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NDI2ODk4ZDg3NDVj
YThhMDk4ZWQwMzBjOWNmZmE2ODExZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUg
IldlYktpdEF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKLSNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKLSNpbmNs
dWRlICJXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0T3Nj
aWxsYXRvck5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0jaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUg
Ik1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1
ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLWNvbnN0ZXhwciB1bnNpZ25lZCBNYXhQZXJp
b2RpY1dhdmVMZW5ndGggPSA0MDk2OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0NvbnRleHQpOwotCi0jZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotCi0jaWYgT1MoV0lORE9XUykKLS8vIERvbid0IGFsbG93IG1vcmUg
dGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRv
IGhhcmR3YXJlLgotY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0Owot
I2VuZGlmCi0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSNpZiBPUyhXSU5ET1dTKQotICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENv
dW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBR
dW90YUV4Y2VlZGVkRXJyb3IgfTsKLSNlbmRpZgotCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOwotICAgIGF1ZGlvQ29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKLX0KLQot
Ly8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1XZWJL
aXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0g
ICAgOiBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpZ
ZXMpCi17Ci19Ci0KLS8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJl
bmRlcmluZy4KLVdlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRh
cmdldCkKLSAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0Nv
bnRleHQ6OlllcywgcmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCksIHNhbXBsZVJhdGUs
IFdURk1vdmUocmVuZGVyVGFyZ2V0KSkKLXsKLX0KLQotY29uc3QgY2hhciogV2ViS2l0QXVkaW9D
b250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIldlYktp
dEF1ZGlvQ29udGV4dCI7Ci19Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLUV4Y2VwdGlvbk9yPFJl
ZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCi17Ci0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlz
LCB7ICZtZWRpYUVsZW1lbnQgfSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
OjpjcmVhdGUoKnRoaXMsIHsgJm1lZGlhU3RyZWFtIH0pOwotfQotCi1FeGNlcHRpb25PcjxSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCi17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLSNlbmRpZgotCi1FeGNlcHRp
b25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVXZWJLaXRQYW5uZXIoKQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChpc1N0b3BwZWQoKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAgICBsYXp5SW5pdGlh
bGl6ZSgpOwotICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlv
Q29udGV4dDo6Y3JlYXRlV2ViS2l0T3NjaWxsYXRvcigpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGlzU3Rv
cHBlZCgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
LQotICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICByZXR1cm4gV2ViS2l0T3NjaWxsYXRvck5v
ZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7Ci0gICAgCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaXNTdG9wcGVk
KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwotCi0g
ICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IHJlYWwubGVuZ3Ro
KCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGggfHwgIXJlYWwubGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0gICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1h
Z2luYXJ5KTsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlKCkKLXsKLSAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwotCi0gICAgbGF6eUluaXRpYWxpemUoKTsKLQotICAgIHJldHVybiBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlZjxXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKQotewotICAgIGlmIChpc1N0b3BwZWQo
KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwotCi0gICAgcmV0dXJuIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTGVnYWN5QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJh
eUJ1ZmZlciwgYm9vbCBtaXhUb01vbm8pCi17Ci0gICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOwotICAgIGlmICgh
YXVkaW9CdWZmZXIpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9Owot
ICAgIHJldHVybiBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
LXsKLSAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IGlzU3RvcHBlZCgpKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKLQotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0KLSAgICBkZXN0aW5hdGlvbigpLmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Ci0gICAgICAgIHVu
aW5pdGlhbGl6ZSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU3ZmM5MzZhNDhmN2VlZTk5NWU5Y2U1YWNmMTNhYjcxZjNmZDQzNjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwotY2xh
c3MgTWVkaWFTdHJlYW07Ci1jbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOwot
Y2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7Ci1jbGFzcyBQZXJpb2RpY1dhdmU7Ci1j
bGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Ci1jbGFzcyBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU7Ci1jbGFzcyBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlOwotY2xhc3MgV2ViS2l0
T3NjaWxsYXRvck5vZGU7Ci0KLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2Yg
dGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQu
Ci0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBt
YWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgot
Ci1jbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0Ci17Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAg
IC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVk
aW8gaGFyZHdhcmUuCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKLQotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwotCi0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKSB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0xpc3RlbmVyPihBdWRpb0NvbnRleHQ6Omxpc3RlbmVy
KCkpOyB9Ci0KLSAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgotI2lmIEVOQUJMRShWSURFTykK
LSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlh
U3RyZWFtRGVzdGluYXRpb24oKTsKLSNlbmRpZgotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRB
dWRpb1Bhbm5lck5vZGU+PiBjcmVhdGVXZWJLaXRQYW5uZXIoKTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVXZWJLaXRPc2NpbGxhdG9yKCk7Ci0gICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlV2ViS2l0QnVmZmVyU291cmNl
KCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVMZWdhY3lCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9u
byk7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1l
bnQmKTsKLSAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKLQotcHJpdmF0ZToKLSAgICAvLyBB
Y3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci19OwotCi19IC8vIFdlYkNvcmUKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRpb0NvbnRleHQoKTsgfQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMmNkNTg3ZmQwMTNiMWQxN2M1M2YxMjc5Y2E2ZjM2ZTY1ZGVjMDM4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbyZQcmVmaXhlZFdlYkF1
ZGlvLAotICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9
d2Via2l0QXVkaW9Db250ZXh0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBj
b25zdHJ1Y3RvcigpOwotCi0gICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29u
bmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJl
LgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlv
bjsKLQotICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGlt
ZSBpbiBzZWNvbmRzLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGN1cnJlbnRUaW1lOwotCi0gICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVu
IGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCi0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwotCi0gICAgLy8g
QWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViS2l0QXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKLQotICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dW5kZWZpbmVkPiBzdXNwZW5kKCk7Ci0gICAg
W0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHVuZGVmaW5lZD4gcmVzdW1l
KCk7Ci0gICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNsb3NlKCk7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnN0YXRlY2hhbmdlOwotCi0gICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7Ci0KLSAgICBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgW0ltcGxlbWVu
dGVkQXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlC
dWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7Ci0KLSAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgotICAgIHVuZGVmaW5lZCBkZWNvZGVBdWRpb0RhdGEo
QXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJh
Y2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwotCi0gICAg
Ly8gU291cmNlcwotICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdEJ1ZmZlclNvdXJjZV0g
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwotCi0gICAg
W0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVk
aWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKLQotICAgIFtD
b25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0
ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLQotICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKLSAg
ICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0gICAgQmlxdWFkRmls
dGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKLSAgICBXYXZlU2hhcGVyTm9kZSBjcmVhdGVX
YXZlU2hhcGVyKCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0UGFubmVyXSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7Ci0gICAgQ29udm9sdmVyTm9kZSBjcmVh
dGVDb252b2x2ZXIoKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXREeW5hbWljc0Nv
bXByZXNzb3JdIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21w
cmVzc29yKCk7Ci0gICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgU2NyaXB0
UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hh
bm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PSAyKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXRPc2NpbGxhdG9yXSBXZWJLaXRP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgUGVyaW9kaWNXYXZlIGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwotCi0g
ICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBDaGFubmVsU3BsaXR0ZXJO
b2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0cyA9IDYpOwotICAgIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwotCi0gICAgLy8gT2Zm
bGluZSByZW5kZXJpbmcKLSAgICAvLyB1bmRlZmluZWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5k
ZXJpbmcodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmNvbXBsZXRlOwotICAgIHVuZGVmaW5lZCBzdGFydFJlbmRlcmluZygp
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0xpc3RlbmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjE2NWNmZDJm
YjUzOTk4YzJiOTBmY2QwM2VhMGM0Mzk5ZTUzMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0xpc3RlbmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYktpdEF1ZGlvTGlzdGVuZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9MaXN0ZW5lciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0xpc3RlbmVyPiBjcmVhdGUoQmFzZUF1ZGlv
Q29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YktpdEF1ZGlvTGlzdGVuZXIoY29udGV4dCkpOwotICAgIH0KLQotICAgIC8vIFZlbG9jaXR5Ci0g
ICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IHNldFZlbG9j
aXR5KEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0
IEZsb2F0UG9pbnQzRCYgdmVsb2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAg
Y29uc3QgRmxvYXRQb2ludDNEJiB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7
IH0KLQotICAgIC8vIERvcHBsZXIgZmFjdG9yCi0gICAgdm9pZCBzZXREb3BwbGVyRmFjdG9yKGRv
dWJsZSBkb3BwbGVyRmFjdG9yKSB7IG1fZG9wcGxlckZhY3RvciA9IGRvcHBsZXJGYWN0b3I7IH0K
LSAgICBkb3VibGUgZG9wcGxlckZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9wcGxlckZhY3Rv
cjsgfQotCi0gICAgLy8gU3BlZWQgb2Ygc291bmQKLSAgICB2b2lkIHNldFNwZWVkT2ZTb3VuZChk
b3VibGUgc3BlZWRPZlNvdW5kKSB7IG1fc3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kOyB9Ci0g
ICAgZG91YmxlIHNwZWVkT2ZTb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWRPZlNvdW5kOyB9
Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lcihCYXNlQXVkaW9Db250ZXh0JiBj
b250ZXh0KQotICAgICAgICA6IEF1ZGlvTGlzdGVuZXIoY29udGV4dCkKLSAgICAgICAgLCBtX3Zl
bG9jaXR5KDAsIDAsIDApCi0gICAgeyB9Ci0KLSAgICBib29sIGlzV2ViS2l0QXVkaW9MaXN0ZW5l
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UG9pbnQzRCBtX3Zl
bG9jaXR5OwotICAgIGRvdWJsZSBtX2RvcHBsZXJGYWN0b3IgeyAxLjAgfTsKLSAgICBkb3VibGUg
bV9zcGVlZE9mU291bmQgeyAzNDMuMyB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvTGlzdGVu
ZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXIm
IGxpc3RlbmVyKSB7IHJldHVybiBsaXN0ZW5lci5pc1dlYktpdEF1ZGlvTGlzdGVuZXIoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE4NjQyZDE0M2VlODFlNjRjZTdjY2M0ZmQ1NTQyZGNkMThmZGYxYjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAot
XSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9MaXN0ZW5lciB7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCBkb3BwbGVyRmFjdG9yOyAgLy8gc2FtZSBhcyBPcGVuQUwgKGRlZmF1bHQgMS4w
KQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgc3BlZWRPZlNvdW5kOyAgIC8vIGlu
IG1ldGVycyAvIHNlY29uZCAoZGVmYXVsdCAzNDMuMykKLQotICAgIHVuZGVmaW5lZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeiwgdW5y
ZXN0cmljdGVkIGZsb2F0IHhVcCwgdW5yZXN0cmljdGVkIGZsb2F0IHlVcCwgdW5yZXN0cmljdGVk
IGZsb2F0IHpVcCk7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyNDQwYTk0ZWZj
OTFkMjAyZThjNDkzN2ZkZjc3NzU5N2E2ODE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvQ29u
dGV4dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2Rl
T3V0cHV0LmgiCi0jaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFJU
RlBhbm5lci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktp
dEF1ZGlvUGFubmVyTm9kZSk7Ci0KLXN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQotewot
ICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCi0gICAgICAgIHggPSAwLjA7
Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktp
dEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBOb2RlVHlw
ZVBhbm5lcikKLXsKLSAgICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxD
b3VudE1vZGU6OkNsYW1wZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwot
Ci0gICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24n
dCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0
YWJhc2UuCi0gICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgp
KTsKLQotICAgIGFkZElucHV0KCk7Ci0gICAgYWRkT3V0cHV0KDIpOwotCi0gICAgbV9wb3NpdGlv
biA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKLSAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2lu
dDNEKDEsIDAsIDApOwotICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Ci0K
LSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1
ZGlvUGFubmVyTm9kZSgpCi17Ci0gICAgdW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0g
ICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRp
b1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rp
b25zIGFyZSBtYWRlLgotICAgIC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBt
YWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hp
ZnQgcGl0Y2ggY2hhbmdlcy4KLSAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgp
LmNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4
dCgpLmNvbm5lY3Rpb25Db3VudCgpOwotCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91
Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KLSAgICAgICAgSGFzaFNldDxBdWRpb05vZGUq
PiB2aXNpdGVkTm9kZXM7Ci0gICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9k
ZSh0aGlzLCB2aXNpdGVkTm9kZXMpOwotICAgIH0KLQotICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0
cyhmcmFtZXNUb1Byb2Nlc3MpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
biA9IG91dHB1dCgwKS0+YnVzKCk7Ci0KLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5w
dXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdldCgpKSB7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBdWRpb0J1cyog
c291cmNlID0gaW5wdXQoMCktPmJ1cygpOwotICAgIGlmICghc291cmNlKSB7Ci0gICAgICAgIGRl
c3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBIUlRG
RGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBh
dWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgotICAgIGlmIChwYW5u
aW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxv
YWRlci0+aXNMb2FkZWQoKSkgewotICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRl
eHQoKSkKLSAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhy
ZWFkQ29tcGxldGlvbigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9u
LT56ZXJvKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHRy
eUhvbGRMb2NrKCkgaW5zdGVhZC4KLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fcHJv
Y2Vzc0xvY2spOwotICAgIGlmICghbG9ja2VyKSB7Ci0gICAgICAgIC8vIFRvbyBiYWQgLSB0cnlI
b2xkTG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo
ZSBwYW5uZXIuCi0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCi0gICAgZG91YmxlIGF6
aW11dGg7Ci0gICAgZG91YmxlIGVsZXZhdGlvbjsKLSAgICBnZXRBemltdXRoRWxldmF0aW9uKCZh
emltdXRoLCAmZWxldmF0aW9uKTsKLSAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlv
biwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIC8vIEdldCB0
aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KLSAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFu
Y2VDb25lR2FpbigpOwotCi0gICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZS4KLSAgICBkZXN0aW5h
dGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sIHRvdGFsR2Fpbik7Ci19Ci0KLXZv
aWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoaXNJbml0
aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3Jl
YXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdl
dCgpKTsKLQotICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYW5uZXIgPSBudWxscHRyOwotICAgIEF1ZGlv
Tm9kZTo6dW5pbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvTGlzdGVuZXImIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQotewotICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVu
ZXIoKTsKLX0KLQotdm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQ
YW5uaW5nTW9kZWxUeXBlIG1vZGVsKQotewotICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9k
ZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKLSAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9j
ayk7Ci0KLSAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0
ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7Ci0gICAgICAgIG1fcGFubmluZ01vZGVs
ID0gbW9kZWw7Ci0gICAgfQotfQotCi1EaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PFdl
YktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Ci19
Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNl
TW9kZWxUeXBlIG1vZGVsKQotewotICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWws
IHRydWUpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZh
dGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQotewotICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJs
ZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0K
LSAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNl
LWxpc3RlbmVyIHZlY3RvcgotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlz
dGVuZXIoKS5wb3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBv
c2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOwotCi0gICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlz
WmVybygpKSB7Ci0gICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAotICAgICAgICAqb3V0QXppbXV0aCA9IDAuMDsKLSAg
ICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwotCi0gICAgLy8gQWxpZ24gYXhlcwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS5vcmllbnRhdGlvbigpOwotICAg
IEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS51cFZlY3RvcigpOwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVw
KTsKLSAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOwotCi0gICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKLSAgICBsaXN0ZW5lckZyb250Tm9ybS5u
b3JtYWxpemUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3Mo
bGlzdGVuZXJGcm9udE5vcm0pOwotCi0gICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlz
dGVuZXIuZG90KHVwKTsKLQotICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3Vy
Y2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOwotICAgIHByb2plY3RlZFNvdXJjZS5ub3Jt
YWxpemUoKTsKLQotICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBh
dm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQg
dGhlIGxpc3RlbmVyCi0gICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3Qo
bGlzdGVuZXJGcm9udE5vcm0pOwotICAgIGlmIChmcm9udEJhY2sgPCAwLjApCi0gICAgICAgIGF6
aW11dGggPSAzNjAuMCAtIGF6aW11dGg7Ci0KLSAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUg
dG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCi0gICAgaWYgKChhemlt
dXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQotICAgICAgICBhemltdXRoID0gOTAu
MCAtIGF6aW11dGg7Ci0gICAgZWxzZQotICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRo
OwotCi0gICAgLy8gRWxldmF0aW9uCi0gICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAu
MCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5z
KGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICBpZiAoZWxldmF0aW9u
ID4gOTAuMCkKLSAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247Ci0gICAgZWxz
ZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCi0gICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVs
ZXZhdGlvbjsKLQotICAgIGlmIChvdXRBemltdXRoKQotICAgICAgICAqb3V0QXppbXV0aCA9IGF6
aW11dGg7Ci0gICAgaWYgKG91dEVsZXZhdGlvbikKLSAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVs
ZXZhdGlvbjsKLX0KLQotZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgp
Ci17Ci0gICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKLQotICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdl
ZC4uLgotICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS5kb3BwbGVyRmFjdG9y
KCk7Ci0KLSAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgewotICAgICAgICBkb3VibGUgc3Bl
ZWRPZlNvdW5kID0gbGlzdGVuZXIoKS5zcGVlZE9mU291bmQoKTsKLQotICAgICAgICBjb25zdCBG
bG9hdFBvaW50M0QmIHNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAgICAgICAgY29uc3Qg
RmxvYXRQb2ludDNEJiBsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS52ZWxvY2l0eSgpOwot
Ci0gICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2
ZSBubyB2ZWxvY2l0eQotICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZl
bG9jaXR5LmlzWmVybygpOwotICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlz
dGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKLQotICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkg
fHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgewotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBz
b3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCi0gICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVu
ZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICAgICAgICAgIEZsb2F0UG9p
bnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247Ci0K
LSAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlz
dGVuZXIubGVuZ3RoKCk7Ci0KLSAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24g
PSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVy
TWFnbml0dWRlOwotICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VU
b0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsK
LQotICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsK
LSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsKLQotICAg
ICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBs
ZXJGYWN0b3I7Ci0gICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0
ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Ci0gICAgICAgICAgICBzb3VyY2VQ
cm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKLQotICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVy
RmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFj
dG9yICogc291cmNlUHJvamVjdGlvbikpOwotICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hp
ZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgICAgICAgICAvLyBMaW1pdCB0aGUg
cGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KLSAgICAg
ICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQotICAgICAgICAgICAgICAgIGRvcHBsZXJT
aGlmdCA9IDE2LjA7Ci0gICAgICAgICAgICBlbHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkK
LSAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxlclNoaWZ0KTsKLX0KLQotZmxv
YXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKLXsKLSAgICBGbG9h
dFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICBG
bG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOwotCi0gICAgZG91YmxlIGxp
c3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRp
b24pOwotICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlz
dGVuZXJEaXN0YW5jZSk7Ci0KLSAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGlu
ZyBjb25lR2FpbgotICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJj
ZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKLQotICAgIHJldHVy
biBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBu
b2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpCi17Ci0gICAgQVNTRVJUKG5v
ZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmlyc3QgY2hl
Y2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBp
dCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4g
aW50byBhY2NvdW50LgotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9C
dWZmZXJTb3VyY2UpIHsKLSAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3Vy
Y2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsK
LSAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytp
KSB7Ci0gICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsK
LQotICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBj
b25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25u
ZWN0aW9ucygpOyArK2opIHsKLSAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5l
Y3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7Ci0gICAgICAgICAgICAgICAg
QXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2aXNpdGVkTm9k
ZXMuYWRkKGNvbm5lY3RlZE5vZGUpOwotICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNl
c0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6
cmVxdWlyZXNUYWlsUHJvY2Vzc2luZygpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhlcmUncyBubyBp
bnRlcm5hbCBwYW5uZXIgbWV0aG9kIHNldCB1cCB5ZXQsIGFzc3VtZSB3ZSByZXF1aXJlIHRhaWwK
LSAgICAvLyBwcm9jZXNzaW5nIGluIGNhc2UgdGhlIEhSVEYgcGFubmVyIGlzIHNldCBsYXRlciwg
d2hpY2ggZG9lcyByZXF1aXJlIHRhaWwKLSAgICAvLyBwcm9jZXNzaW5nLgotICAgIHJldHVybiAh
bV9wYW5uZXIgfHwgbV9wYW5uZXItPnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTRiYjAyZDJkNmI3NWUwOWE0
OTFhYmFhZjIxMWJmOTRkMDQwZmFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlv
Tm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKLSNpbmNsdWRlICJDb25lLmgiCi0jaW5j
bHVkZSAiRGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNpbmNsdWRlICJQ
YW5uZXIuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJL
aXRBdWRpb0xpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7Ci0KLS8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2Rl
IHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgotLy8gSXQgcG9zaXRpb25zIGEgc291bmQg
aW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5p
bmcgbW9kZWwuCi0vLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qg
c3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBv
ZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCi0vLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxs
IGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBs
aXN0ZW5lci4KLS8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBBbGwgb2YgdGhl
c2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4K
LQotY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOwotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0
QXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKLQotICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpj
b250ZXh0KCkpOyB9Ci0gICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRl
eHQoKSk7IH0KLQotICAgIC8vIEF1ZGlvTm9kZQotICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKLQotICAgIC8vIExpc3RlbmVyCi0gICAg
V2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKTsKLQotICAgIC8vIFBhbm5pbmcgbW9kZWwK
LSAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9Ci0gICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7
Ci0KLSAgICAvLyBQb3NpdGlvbgotICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQotCi0g
ICAgLy8gT3JpZW50YXRpb24KLSAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwg
eik7IH0KLQotICAgIC8vIFZlbG9jaXR5Ci0gICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29u
c3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9
Ci0KLSAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCi0gICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1v
ZGVsVHlwZSk7Ci0KLSAgICBkb3VibGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNl
RWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KLSAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSBy
ZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNl
KTsgfQotCi0gICAgZG91YmxlIG1heERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVj
dC5tYXhEaXN0YW5jZSgpOyB9Ci0gICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlz
dGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0K
LQotICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5y
b2xsb2ZmRmFjdG9yKCk7IH0KLSAgICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxv
ZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0
b3IpOyB9Ci0KLSAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCi0gICAgZG91
YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5n
bGUoKTsgfQotICAgIHZvaWQgc2V0Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29u
ZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckFu
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQotICAgIHZv
aWQgc2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRl
ckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJl
dHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCk7IH0KLSAgICB2b2lkIHNldENvbmVPdXRlckdh
aW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9Ci0K
LSAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUq
IG91dEVsZXZhdGlvbik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKLQotICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KLSAgICBi
b29sIHJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0Jik7Ci0K
LSAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVu
dWF0aW9uLgotICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKLQotICAgIC8vIE5vdGlmaWVz
IGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0
bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgotICAgIC8vIFRoaXMgaXMgaW4g
b3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxl
ciBzaGlmdC4KLSAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRp
b05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7Ci0gICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5p
bmdNb2RlbCB7IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgfTsKLQotICAgIEZsb2F0UG9pbnQzRCBt
X3Bvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOwotICAgIEZsb2F0UG9p
bnQzRCBtX3ZlbG9jaXR5OwotCi0gICAgLy8gR2FpbgotICAgIERpc3RhbmNlRWZmZWN0IG1fZGlz
dGFuY2VFZmZlY3Q7Ci0gICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7Ci0KLSAgICAvLyBIUlRG
IERhdGFiYXNlIGxvYWRlcgotICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRh
dGFiYXNlTG9hZGVyOwotCi0gICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07Ci0K
LSAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNo
IGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KLSAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2FiM2Y0ZThiZWYxZjgwNWEwOWQyNWJk
ZjVhMTU5MmZhNWEyZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdl
YkF1ZGlvLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Vi
a2l0QXVkaW9QYW5uZXJOb2RlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgewotICAgIC8vIERlZmF1bHQgbW9kZWwgZm9y
IHN0ZXJlbyBpcyBIUlRGCi0gICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01v
ZGVsOwotCi0gICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQotICAg
IHVuZGVmaW5lZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVk
IGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50
YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeik7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBm
bG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotCi0g
ICAgLy8gRGlzdGFuY2UgbW9kZWwKLSAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbDsKLQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3Rh
bmNlOwotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOwotICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7Ci0KLSAgICAvLyBE
aXJlY3Rpb25hbCBzb3VuZCBjb25lCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
Y29uZUlubmVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91
dGVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2Fp
bjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZGM1M2M2ODBiMTY0MzMwYTA4MWZjMWE2Njg3YTc2NTliNmZiZTRmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoY29udGV4dCkpOwotICAgIH0KLQotICAgIEF1ZGlvUGFyYW0mIGxlZ2FjeVJlZHVjdGlvbigp
IHsgcmV0dXJuIG1fbGVnYWN5UmVkdWN0aW9uLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmIGNv
bnRleHQpCi0gICAgICAgIDogRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0KQotICAgICAg
ICAsIG1fbGVnYWN5UmVkdWN0aW9uKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicmVkdWN0
aW9uIl9zLCAwLCAtMjAsIDAsIEF1dG9tYXRpb25SYXRlOjpLUmF0ZSkpCi0gICAgewotICAgICAg
ICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxDb3VudE1vZGU6OkNsYW1w
ZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwotICAgIH0KLQotICAgIHZv
aWQgc2V0UmVkdWN0aW9uKGZsb2F0IHJlZHVjdGlvbikgZmluYWwKLSAgICB7Ci0gICAgICAgIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnNldFJlZHVjdGlvbihyZWR1Y3Rpb24pOwotICAgICAgICBt
X2xlZ2FjeVJlZHVjdGlvbi0+c2V0VmFsdWUocmVkdWN0aW9uKTsKLSAgICB9Ci0KLSAgICBSZWY8
QXVkaW9QYXJhbT4gbV9sZWdhY3lSZWR1Y3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNThjMDRlMWQzZmM3ZDZjM2JkYmIyYWYwOTc4NmJhYTI3MDExNDk2MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdF
Ql9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8sCi0gICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJm
YWNlIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHJhdGlvOyAvLyB1bml0LWxlc3MKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBhdHRhY2s7IC8vIGluIFNlY29uZHMKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSByZWxlYXNlOyAvLyBpbiBTZWNvbmRzCi0gICAgW0lt
cGxlbWVudGVkQXM9bGVnYWN5UmVkdWN0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJh
bSByZWR1Y3Rpb247IC8vIGluIERlY2liZWxzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNWYyMWRmNzliNDY1MWI0M2ExZjM3ZGEz
MWE5YjVhZGU4NTA4OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAi
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxl
UmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IFdlYktpdEF1ZGlv
Q29udGV4dChkb2N1bWVudCwgc2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQotewot
fQotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Ojp+V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCgpID0gZGVmYXVsdDsKLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3Igd29ya2Vycy4KLSAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgaWYgKCFudW1iZXJPZkNo
YW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlz
U3VwcG9ydGVkU2FtcGxlUmF0ZShzYW1wbGVSYXRlKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFN5bnRheEVycm9yIH07Ci0gICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6
Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAg
ICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVy
cm9yIH07Ci0KLSAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHNhbXBsZVJhdGUs
IHJlbmRlclRhcmdldC5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgYXVkaW9Db250ZXh0LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gYXVkaW9Db250ZXh0OwotfQotCi1jb25zdCBjaGFy
KiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQiOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMDcyMmQzZDM4Mjlm
NDk5ZGFjZWM4ZjhjY2FkODlhYjIzNWM4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVkaW9Db250ZXh0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB+V2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsK
LQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1
YWE2NDkyODhlMGFlN2FlOTUxMWUyOGMwZjkxNzVhYzhhNzIzN2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBJbnRlcmZhY2VOYW1lPXdl
YmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBX
ZWJLaXRBdWRpb0NvbnRleHQgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTg2NTUwYzIzYWJmMTU0
NjJlZDg3OGNiYzFkNDc5MTEzNmJlMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2Np
bGxhdG9yTm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgotI2luY2x1ZGUgIldl
YktpdEF1ZGlvQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktp
dE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIE9zY2lsbGF0b3JOb2RlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9zY2lsbGF0b3JOb2RlPj4gY3JlYXRl
KFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYktpdE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldFdlYktpdFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHdhdmUpCi0gICAgewotICAg
ICAgICBpZiAoIXdhdmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNldFBlcmlvZGlj
V2F2ZSgqd2F2ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYktpdE9zY2ls
bGF0b3JOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBPc2NpbGxh
dG9yTm9kZShjb250ZXh0KQotICAgIHsKLSAgICAgICAgc2V0VHlwZShPc2NpbGxhdG9yVHlwZTo6
U2luZSk7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRPc2NpbGxhdG9yTm9kZSI7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNlYjRhYjk5ODFiZTlkMDkwMDc0Y2YyMTQ5NTU2ZjlmYWZkYzAxYmQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAsIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBBY3RpdmVET01PYmplY3QsCi0g
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8m
UHJlZml4ZWRXZWJBdWRpbywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKLSAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlw
ZTsKLQotICAgIC8vIFBsYXliYWNrIHN0YXRlIGNvbnN0YW50cy4KLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBVTlNDSEVEVUxFRF9TVEFURSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NU
QVRFID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7Ci0K
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZTsKLQot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCi0K
LSAgICBbSW1wbGVtZW50ZWRBcz1zZXRXZWJLaXRQZXJpb2RpY1dhdmVdIHVuZGVmaW5lZCBzZXRQ
ZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlPyB3YXZlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAKaW5kZXggNTBmMzQ0MjMyZGM4NjE1YzQyMmY5NGY5MmE5ZGM3YzExYWI0MGRjZS4uNzlkNzk4
YjZlNDZmZDhmMDdlYjk2NzgwNzdiNjUxODJiNjM0ZTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCIKIAorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oIgorI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyN2Yy
OTliNmJlMjE0MGI4NTgyZWU3M2Y0NzMzZWRjODQxMmQ5Mjg0Li4wZTMwZTA5ZWMyMGVjNTZkZDQz
NDE5MTdhYjQ0YzYyMDE1ZjVmOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjgyLDkgKzI4Miw2IEBA
IE1vZHVsZXMvd2ViYXVkaW8vU3RlcmVvUGFubmVyTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUu
Y3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCi1Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKLU1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmNwcAotTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmNwcAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNw
cAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0zNzc3
LDE5ICszNzc0LDEyIEBAIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJlLmNw
cAogSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCi1K
U1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKLUpTV2ViS2l0QXVkaW9Db250ZXh0LmNw
cAotSlNXZWJLaXRBdWRpb0xpc3RlbmVyLmNwcAotSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3Bw
Ci1KU1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCiBKU1dlYktpdE1lZGlhS2V5RXJy
b3IuY3BwCiBKU1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtl
eU5lZWRlZEV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCiBKU1dlYktpdE1l
ZGlhS2V5cy5jcHAKIEpTV2ViS2l0TmFtZXNwYWNlLmNwcAotSlNXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcAotSlNXZWJLaXRPc2NpbGxhdG9yTm9kZS5jcHAKIEpTV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxYzM1OTE5MDJiMTIwYmQzYWIwNjBiZDhjNWIxYjdmMmFi
M2MxN2I5Li43ZTAzYzc5ZDAxZmYwMzAwZjg5ZTY4YTk0ZDUzZjVlMzUzZTQ3MDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NTI1LDEzICsyNTI1LDEwIEBACiAJCTgzMEExQzdEMjREQjc4OEIwMDJFQ0NBRCAvKiBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMEExQzdDMjREQjc4NzAwMDJFQ0NBRCAvKiBNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJODMwQTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8q
IEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0Lmgg
Ki87IH07CiAJCTgzMEQwQjY5MjRGNTdENjcwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEQwQjY2MjRGNTdE
NTAwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCAqLzsgfTsKLQkJODMwRUVBQkEyNERCNkE2NDAw
OUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEVFQUI3MjREQjZBNTIwMDlFRkJDRSAv
KiBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFE
RDkwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAv
KiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODMxMUMwMDMxRkFBMkU5NTAw
RTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpv
YlF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAw
RjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OwogCQk4MzE5OEZCRjI0QTE2MEREMDA0
MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMxOThGQkUyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0Nv
bnRleHQuaCAqLzsgfTsKLQkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlv
UGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICov
OyB9OwotCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMx
QjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLzsg
fTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUEx
NTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzI2QkY4RTI0RDM1QzMz
MDAxRjhBODUgLyogT3ZlclNhbXBsZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjZCRjg5MjREMzVDMjAwMDFGOEE4NSAvKiBPdmVyU2FtcGxl
VHlwZS5oICovOyB9OwogCQk4MzI2QkY4RjI0RDM1QzM5MDAxRjhBODUgLyogV2F2ZVNoYXBlck9w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
MjZCRjhDMjREMzVDMjAwMDFGOEE4NSAvKiBXYXZlU2hhcGVyT3B0aW9ucy5oICovOyB9OwpAQCAt
MjU0NSw5ICsyNTQyLDcgQEAKIAkJODMzQkQ4MTgyNTI0RDRGNTAwNkU3MkIzIC8qIFdvcmtsZXRH
bG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzNCRDgxNjI1MjRENEUzMDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJv
eHkuaCAqLzsgfTsKIAkJODMzQkQ4MUQyNTI0RDUzMDAwNkU3MkIzIC8qIEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzNCRDgxOTI1MjRENTFCMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCAq
LzsgfTsKIAkJODMzQkQ4MUUyNTI0RDUzNDAwNkU3MkIzIC8qIEF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzNCRDgxQjI1MjRENTFDMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCAq
LzsgfTsKLQkJODMzRDFDNzYyNEQ4RDU0RjAwRTgxM0RGIC8qIFdlYktpdEF1ZGlvQnVmZmVyU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMzRDFDNzMyNEQ4RDUzMzAwRTgxM0RGIC8qIFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5o
ICovOyB9OwogCQk4MzQwN0ZDMTFFOEQ5QzE3MDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0
MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4MzQzRDk4NDI0RDBE
RUU5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNDNEOTgxMjREMERFQTkwMDlBQkQ0OSAvKiBX
ZWJLaXRPc2NpbGxhdG9yTm9kZS5oICovOyB9OwogCQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjVFQjAg
LyogSlNTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURBNUE1MUUwMEZGRDhENCAvKiBKU1Njcm9sbExv
Z2ljYWxQb3NpdGlvbi5oICovOyB9OwogCQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjVFQzEgLyogSlNT
Y3JvbGxJbnRvVmlld09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURBNUE1MUUwMEZGRDhFNSAvKiBKU1Njcm9sbEludG9WaWV3
T3B0aW9ucy5oICovOyB9OwogCQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjZFQjAgLyogSlNTY3JvbGxC
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNFOUIzMDExREE1QTUxRTAwRkZFOEQ0IC8qIEpTU2Nyb2xsQmVoYXZpb3IuaCAqLzsgfTsKQEAg
LTI1NjAsNyArMjU1NSw2IEBACiAJCTgzNTA1MUE0MjRGNTczQzQwMDk5MTFENyAvKiBJSVJGaWx0
ZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzUwNTFBMjI0RjU3M0FGMDA5OTExRDcgLyogSUlSRmlsdGVyTm9kZS5oICovOyB9OwogCQk4MzUw
NTFBNTI0RjU3M0M4MDA5OTExRDcgLyogSUlSRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1MDUxQTAyNEY1NzNBRTAwOTkxMUQ3
IC8qIElJUkZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFB
IC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NGb250RmFtaWx5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODM1NkY5N0Yy
NEQ5RjgxODAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTZGOTdFMjREOUY4MDkwMDZDM0U0MSAv
KiBXZWJLaXRBdWRpb0xpc3RlbmVyLmggKi87IH07CiAJCTgzNThDQjcwMUM1MzI3NzUwMEUwQzJE
OCAvKiBKU1hNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0Y1NzBBRDFDNTMyNjhFMDA3RkQ2Q0IgLyogSlNYTUxEb2N1bWVudC5oICov
OyB9OwogCQk4MzVEMkQ3ODFGNUYxRkJEMDAxNDFERUQgLyogSFRNTElucHV0RWxlbWVudEVudHJp
ZXNBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NUQyRDc1MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1MSW5wdXRFbGVtZW50RW50cmllc0FQSS5oICov
OyB9OwogCQk4MzVEMzYzNzE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzVEMzYzNjE5
RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggKi87IH07CkBAIC0yNjEzLDcg
KzI2MDcsNiBAQAogCQk4M0EyQUJEQjI0RDg2REUwMDBFMkQ3M0QgLyogRGVsYXlPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0EyQUJEODI0
RDg2REM2MDBFMkQ3M0QgLyogRGVsYXlPcHRpb25zLmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJG
RTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8q
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNBQ0QwMTMyNTIyOUUxMDAwMEQxMjRFIC8qIFdvcmtsZXRP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0FDRDAxMDI1MjI5RTA0MDAwRDEyNEUgLyogV29ya2xldE9wdGlvbnMuaCAqLzsgfTsKLQkJODNC
MUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVEMDAwRkU1
OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJDRDZBMDBB
MDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYz
RTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRF
RjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKQEAgLTEwOTM4LDcgKzEwOTMxLDYgQEAKIAkJODMwMDMw
RjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2
MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMwMDNFMkIy
NDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzAwNUY5QTI0RUIxRDI4MDA0ODBGOUIgLyogQXVkaW9UaW1l
c3RhbXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UaW1lc3RhbXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMwMDVGOUMyNEVCMUQyOTAwNDgwRjlCIC8qIEF1ZGlvVGltZXN0YW1w
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBdWRpb1RpbWVzdGFtcC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5NjIsOCAr
MTA5NTQsNiBAQAogCQk4MzBBMzZCQjFEQUM1RkE3MDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5p
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vdXNlRXZlbnRJbml0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMEQwQjY2MjRGNTdENTAwMDdFRDEyMiAv
KiBJSVJQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUlSUHJvY2Vzc29yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMEQwQjY4MjRGNTdENTAwMDdFRDEyMiAvKiBJSVJQcm9j
ZXNzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUlSUHJvY2Vzc29yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMwRUVBQjcyNERCNkE1MjAwOUVGQkNFIC8qIFdlYktpdER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0RHluYW1pY3NDb21w
cmVzc29yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzBFRUFCOTI0REI2
QTUyMDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
S2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0
MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVy
Sm9iUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDk3MiwxMiAr
MTA5NjIsNiBAQAogCQk4MzE5OEZCRDI0QTE2MEMxMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmFzZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4RkJFMjRBMTYwQzEwMDQyMEIwNSAvKiBCYXNl
QXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VBdWRp
b0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQTNFQTgyNTNGNzhD
MjAwNjc4MDRGIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMxQjYx
NzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE3NDI0OTlB
NTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUM0NkMz
MUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxRDFGMjkxQzU2
RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTAwOCwxMSArMTA5OTIsNyBAQAogCQk4MzNCRDgxQjI1MjRENTFD
MDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQkQ4MUMyNTI0RDUxRDAwNkU3MkIzIC8qIEF1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODMzQ0Y3MEYyMERCM0Y1RjAwMTQxQkNDIC8qIEpTUGVyZm9ybWFuY2VPYnNlcnZl
ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlcmZv
cm1hbmNlT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
MzNEMUM3MzI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4MzNEMUM3NTI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQwN0ZDMDFFOEQ5QzEyMDBFMDQ4
RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTgzNDNEOTgxMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MzQzRDk4MzI0RDBERUE5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRv
ck5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdE9zY2lsbGF0b3JOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM0OEJGQTkxQjg1NzI5NTAwOTEyRjM2IC8qIENsYXNzQ29sbGVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc0NvbGxlY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ4QkZBQTFCODU3Mjk1MDA5
MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsYXNzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRB
NkEzODI1MjY4NDQxMDA3NDdGNUQgLyogV29ya2xldFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExMDQzLDggKzExMDIzLDYgQEAKIAkJODM1MEMzRTgxREE1OUI2MjAw
MzU2NDQ2IC8qIFNjcm9sbFRvT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2Ny
b2xsVG9PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1MjBDN0Qx
QTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTRm9udEZhbWlseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzU2NTdDNjFFQ0FCMEU4MDBDREU3MkQgLyogSlNET01NYXRyaXhJbml0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NTWF0cml4SW5pdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzNTZGOTdDMjREOUY4MDgwMDZDM0U0MSAvKiBXZWJL
aXRBdWRpb0xpc3RlbmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0xpc3RlbmVyLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1NkY5N0UyNEQ5RjgwOTAwNkMzRTQxIC8qIFdlYktp
dEF1ZGlvTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzVBQTM4ODI1M0Y1NUJCMDA3NDY1NTQgLyog
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1QjY4MEUxRjU0OEJERTAwNzFGN0Y2IC8qIEpT
RmlsZVN5c3RlbUVudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRmlsZVN5c3RlbUVudHJ5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODM1RDJENzQxRjVGMUZCODAwMTQxREVEIC8qIEhUTUxJbnB1dEVsZW1lbnQrRW50
cmllc0FQSS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkhUTUxJbnB1dEVsZW1lbnQrRW50
cmllc0FQSS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTExNTUsOCArMTEx
MzMsNiBAQAogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlcklk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBQ0QwMTAyNTIyOUUw
NDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtsZXRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
QUNEMDEyMjUyMjlFMDQwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV29ya2xldE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0IxQTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0Nv
bnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFD
MDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VX
b3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0b3JDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzExNDMsMjMgKzMxMTE5LDYgQEAKIAkJ
CQk4MzI2QkY4RDI0RDM1QzIxMDAxRjhBODUgLyogV2F2ZVNoYXBlck9wdGlvbnMuaWRsICovLAog
CQkJCUZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAq
LywKIAkJCQlGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5o
ICovLAotCQkJCTgzM0QxQzczMjREOEQ1MzMwMEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaCAqLywKLQkJCQk4MzNEMUM3NTI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmlkbCAqLywKLQkJCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQg
LyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKLQkJCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5
NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCi0JCQkJODNCMUE3MDEyNDk5ODVEMDAwRkU1
OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCi0JCQkJODM1NkY5N0UyNEQ5RjgwOTAw
NkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCAqLywKLQkJCQk4MzU2Rjk3QzI0RDlGODA4
MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwgKi8sCi0JCQkJODMxQjYxNzEyNDk5
QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8sCi0JCQkJODMxQjYx
NzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovLAotCQkJCTgz
MUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovLAot
CQkJCTgzMEVFQUI3MjREQjZBNTIwMDlFRkJDRSAvKiBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmggKi8sCi0JCQkJODMwRUVBQjkyNERCNkE1MjAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuaWRsICovLAotCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAqLywKLQkJCQk4MzFCNjE3NTI0OTlBNTlEMDBD
MDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAotCQkJCTgzMUI2MTcyMjQ5
OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKLQkJCQk4
MzQzRDk4MTI0RDBERUE5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaCAqLywKLQkJ
CQk4MzQzRDk4MzI0RDBERUE5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsICov
LAogCQkJKTsKIAkJCXBhdGggPSB3ZWJhdWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0zNTc5OSwyMCArMzU3NTgsMTMgQEAKIAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAg
LyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMx
MTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzNEMUM3NjI0RDhENTRGMDBFODEzREYgLyogV2Vi
S2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk4M0IxQTcwMjI0
OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4MzU2Rjk3RjI0RDlGODE4MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURGRUJBQjcxODU5MkI2RDAwQzc1QkVCIC8q
IFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODMwRUVBQkEyNERCNkE2
NDAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleU1lc3NhZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNTExREE2M0E5RjAwQTdGQjI2IC8qIFdl
YktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTRFMURB
NjNBOEUwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
MDYyMTUwMURBNjNBOTQwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleVNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjI3MzIxMjBDOUZBRkUwMERCMURFRiAvKiBXZWJLaXRO
U0ltYWdlRXh0cmFzLmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdD
NzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODM0
M0Q5ODQyNEQwREVFOTAwOUFCRDQ5IC8qIFdlYktpdE9zY2lsbGF0b3JOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0QkQ3OTUwRjU1QzhF
RTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyNTBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMWJlM2RlODNiZmU2ODFmN2Ni
M2VkYzVkMzNhOWE2ZTIwNjY3NGY0Li41ZTRjOWMzMzYwMDhmMmZiYTUzMTAzNTQ0NmQyZTUyYzU2
NGE2ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yOTUsOCArMjk1
LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLSNpbmNsdWRlICJCYXNlQXVk
aW9Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCkBAIC00Mzg0LDE3ICs0MzgzLDEwIEBAIGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNC
bG9ja2luZ0Rpc3BsYXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAogI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCi12b2lkIEludGVy
bmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1
ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYgY29udGV4dFZhcmlhbnQs
IFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlv
Q29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQmIGNvbnRleHQsIFN0cmluZ1ZpZXcgcmVz
dHJpY3Rpb25zU3RyaW5nKQogewotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IGNvbnRleHQ7Ci0g
ICAgc3dpdGNoT24oY29udGV4dFZhcmlhbnQsIFsmXShSZWZQdHI8QXVkaW9Db250ZXh0PiBlbnRy
eSkgewotICAgICAgICBjb250ZXh0ID0gZW50cnk7Ci0gICAgfSwgWyZdKFJlZlB0cjxXZWJLaXRB
dWRpb0NvbnRleHQ+IGVudHJ5KSB7Ci0gICAgICAgIGNvbnRleHQgPSBlbnRyeTsKLSAgICB9KTsK
LQotICAgIGF1dG8gcmVzdHJpY3Rpb25zID0gY29udGV4dC0+YmVoYXZpb3JSZXN0cmljdGlvbnMo
KTsKLSAgICBjb250ZXh0LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7
CisgICAgYXV0byByZXN0cmljdGlvbnMgPSBjb250ZXh0LmJlaGF2aW9yUmVzdHJpY3Rpb25zKCk7
CisgICAgY29udGV4dC5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiAK
ICAgICByZXN0cmljdGlvbnMgPSBBdWRpb0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOwogCkBAIC00
NDA2LDcgKzQzOTgsNyBAQCB2b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rp
b25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sCiAgICAgICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdl
Y29uc2VudGZvcmF1ZGlvc3RhcnQiKSkKICAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRp
b0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKICAg
ICB9Ci0gICAgY29udGV4dC0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOwor
ICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOwogfQogCiB2
b2lkIEludGVybmFsczo6dXNlTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCAzM2QwM2NiMTIxZTQxMjU3Y2I1YTk4NjhkOTQyZWU4YjAw
YmNlNzU1Li5hY2Y3NjZjMmI5MjcwN2EyNzMyYjk3YmZlMmEzYmM2NTNmZGMyOWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExMCw3ICsxMTAsNiBAQCBjbGFzcyBVbnN1c3Bl
bmRhYmxlQWN0aXZlRE9NT2JqZWN0OwogY2xhc3MgVm9pZENhbGxiYWNrOwogY2xhc3MgV2ViQW5p
bWF0aW9uOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9D
b250ZXh0OwogY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIApAQCAt
NzE0LDcgKzcxMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
LSAgICB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0
cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mLCBTdHJpbmdWaWV3
IHJlc3RyaWN0aW9uc1N0cmluZyk7CisgICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlv
bnMoQXVkaW9Db250ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOwogICAgIHZv
aWQgdXNlTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxM2Y1ZTBmNDg0NjliOTFhYzhmYTc0ZTk0OGE2YTgz
YjZiMjE2MGRkLi4wZTAxNGI4MGYyNzNlY2Q4NTAzMGFkZDg1ODE2ZGJmZWFiMzY5MGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03MzcsNyArNzM3LDcgQEAgZW51bSBU
cmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0TWVkaWFTZXNz
aW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlv
bnMpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gRE9NU3RyaW5nIG1lZGlhU2Vzc2lvblJlc3Ry
aWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVu
ZGVmaW5lZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVt
ZW50LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElP
XSB1bmRlZmluZWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKChBdWRpb0NvbnRleHQgb3Ig
V2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAg
ICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0QXVkaW9Db250ZXh0UmVzdHJp
Y3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQo
RE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9
IDApOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFjdGl2ZUF1ZGlvUm91dGVE
aWRDaGFuZ2UoYm9vbGVhbiBzaG91bGRQYXVzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKaW5kZXggMmFiZDZjNTFjMmE2ZjVhMjc2MTI0ZjI5ZGM3ZmNkNWMzMGQwOGVkZC4uYzE5
YjNmOWVkNTVhOWE0ZTM1MmNiZDgxYTkzNjRjYzlmY2RiYzZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKQEAgLTU1MzQsNyArNTUzNCw2IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIAog
I2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKHRy
dWUpOwotICAgIHNldHRpbmdzLnNldFByZWZpeGVkV2ViQXVkaW9FbmFibGVkKGZhbHNlKTsKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQogCiAjaWYgRU5BQkxFKFdFQkdMKQo=
</data>
<flag name="commit-queue"
          id="449698"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428701</attachid>
            <date>2021-05-14 19:24:06 -0700</date>
            <delta_ts>2021-05-14 21:18:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225832-20210514192405.patch</filename>
            <type>text/plain</type>
            <size>129008</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkMDM5YzY1MjhjNjliYWNhZDk3OTVh
MzU1ZTUxMTMwZmQ4MzdhYTYuLmU0M2IyMTFkYzQ1NzFjNmFiMGViZWRiY2FjOTFkZWZmMjkyOTE2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdlYkF1ZGlvIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEcm9wIHByZWZlcmVuY2UgZm9yIHByZWZpeGVkIFdlYkF1ZGlvLCB3aGljaCB3YXMgZGlz
YWJsZWQgZXZlcnl3aGVyZS4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVT
eXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2IxNWUxOTc3OTU3Nzc3NWY5OGMyZDIzODkwOWFhZTgwZGE3ZWExYy4u
OGMwMWVkMzQ2MWY5OThhNmNmYjVlY2JhOTM5YzdhZTUyOWU3NmY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY5IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBs
ZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlvbiBub3cgdGhhdCBpdCBpcyBu
byBsb25nZXIKKyAgICAgICAgcHJlc2VudCBpbiBzaGlwcGluZyBhbmQgd2UgaGF2ZSByZWNlaXZl
ZCBhbnkgcmVwb3J0cyBvZiBpc3N1ZXMuCisKKyAgICAgICAgVGhpcyBkcm9wcyBhbGwgdGhlIGxl
Z2FjeSBjb2RlIGJ1dCBzaGUgc2hvdWxkIGJlIGFibGUgdG8gY2xlYW4gdXAgdGhlCisgICAgICAg
IGNvZGUgZnVydGhlciBpbiBmb2xsb3ctdXBzLiBJbiBwYXJ0aWN1bGFyLCBJIGJlbGlldmUgc29t
ZSBjb2RlIGNhbgorICAgICAgICBub3cgYmUgbW92ZWQgZnJvbSBCYXNlQXVkaW9Db250ZXh0IHRv
IE9mZmxpbmVBdWRpb0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6fkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTGlzdGVuZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29u
dGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0Ojppc09mZmxpbmVDb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbnRleHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3Rl
bmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xp
c3RlbmVyLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjEtMDUtMTQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OOiBbIE1hYyBXSzIgXSBmYXN0L21lZGlhc3RyZWFtL2F1ZGlvLXRyYWNrLWVuYWJsZWQu
aHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjM1
NmM3MTk1ZTMzNDU5YTM3NTI5MDU5ZmU1M2I3YmI0MWM5NmNmMS4uZDY5ZTdhNDA2Y2Q3ODYzNTI1
MDFhNWNhMDg5ODdjYWZmNzU5OTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJvcCBsZWdhY3kgLyBwcmVmaXhlZCBXZWJBdWRpbyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCBl
eHBsaWNpdGx5IGRpc2FibGVkIHdpdGggcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24g
Z2l2ZW4gdGhhdAorICAgICAgICBpdCBubyBsb25nZXIgZXhpc3RzLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgor
CiAyMDIxLTA1LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCAiZ2V0IiBwcmVmaXggZnJvbSBXVEY6OkZpbGVTeXN0ZW0ncyBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZSgpIC8gZ2V0RmlsZUNyZWF0aW9uVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRl
eCBmYTFkN2IxMTg2NTg5MjQ3MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3Li42MWY4N2NmYmZhMGJi
MzliOGNkNjIzZTZlYWYyMmIxNzg2NmE0ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU4
MywxOSArNTgzLDYgQEAgUHJlZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVk
OgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKLVByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiUHJlZml4ZWQgV2Vi
QXVkaW8gQVBJIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQcmVmaXhlZCBXZWJBdWRp
byBBUEkiCi0gIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKLSAgZGVmYXVsdFZhbHVlOgot
ICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAg
ICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQog
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFk
YWJsZU5hbWU6ICJSZXNvdXJjZSBMb2FkIFNjaGVkdWxpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDNkYjUxYmE2NmVkNjkzODM3N2M5NGRhZDY2NjZmYTk5NzE2MTg0ZGMuLjVhM2Y5NWNiYzRk
MzkxOTI1YWZhZmZlYjNlMTBmOTQ3ZWVmYmVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
NzEsMTMgKzU3MSw2IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9u
cy5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvTGlzdGVuZXIuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlLmlkbAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjI5
MjZiYzYyYzM3NWRjNDNmN2Y3Y2RiYzEwYmEyYjdmZGQ5M2NmZi4uMzFjNGEzMTYzMWJiZTNhYTY1
NjBjNjRhY2UwZjBkYmExNWUxYTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC00MjksMTMgKzQyOSw2IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1N0ZXJlb1Bhbm5lck9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgXAot
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQxMDA5ZWMxNzA3NTRhOTFm
OTdiYTMxMWUyNDI5MWZjOWRkZDNkNDAuLjQ4YzE2MzIwYmE5Yzk0NTE5MzBlMGNiODAzMjZlYTU1
MTYyYjk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTM2LDE0ICszNiwxMSBAQAogI2luY2x1
ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1XVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsKIAog
Y29uc3RleHByIGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCiAK
QEAgLTkzLDcgKzkwLDYgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCkKIAogQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojp+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCkKIHsKLSAgICBjbGVhclBhbm5lck5vZGUoKTsKICAg
ICB1bmluaXRpYWxpemUoKTsKIH0KIApAQCAtMTQ2LDkgKzE0Miw2IEBAIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBBcHBseSB0aGUgZ2FpbiAoaW4tcGxhY2UpIHRvIHRoZSBv
dXRwdXQgYnVzLgotICAgIGZsb2F0IHRvdGFsR2FpbiA9IGxlZ2FjeUdhaW5WYWx1ZSgpOwotICAg
IG91dHB1dEJ1cy5jb3B5V2l0aEdhaW5Gcm9tKG91dHB1dEJ1cywgdG90YWxHYWluKTsKICAgICBv
dXRwdXRCdXMuY2xlYXJTaWxlbnRGbGFnKCk7CiB9CiAKQEAgLTQxOSw3ICs0MTIsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVk
aW9CdWZmZXI+JiYgYnVmZmVyKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKGJ1ZmZlciAmJiBtX3dhc0J1ZmZlclNl
dCAmJiBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkpCisgICAgaWYgKGJ1
ZmZlciAmJiBtX3dhc0J1ZmZlclNldCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiVGhlIGJ1ZmZlciB3YXMgYWxyZWFkeSBzZXQiX3MgfTsKIAogICAgIC8v
IFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2Fu
IHJlLWNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KQEAg
LTUzNywxMCArNTMwLDYgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmFkanVzdEdyYWlu
UGFyYW1ldGVycygpCiAKIGRvdWJsZSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hS
YXRlKCkKIHsKLSAgICBkb3VibGUgZG9wcGxlclJhdGUgPSAxLjA7Ci0gICAgaWYgKG1fbGVnYWN5
UGFubmVyTm9kZSkKLSAgICAgICAgZG9wcGxlclJhdGUgPSBtX2xlZ2FjeVBhbm5lck5vZGUtPmRv
cHBsZXJSYXRlKCk7Ci0gICAgCiAgICAgLy8gSW5jb3Jwb3JhdGUgYnVmZmVyJ3Mgc2FtcGxlLXJh
dGUgdmVyc3VzIEF1ZGlvQ29udGV4dCdzIHNhbXBsZS1yYXRlLgogICAgIC8vIE5vcm1hbGx5IGl0
J3Mgbm90IGFuIGlzc3VlIGJlY2F1c2UgYnVmZmVycyBhcmUgbG9hZGVkIGF0IHRoZSBBdWRpb0Nv
bnRleHQncyBzYW1wbGUtcmF0ZSwgYnV0IHdlIGNhbiBoYW5kbGUgaXQgaW4gYW55IGNhc2UuCiAg
ICAgZG91YmxlIHNhbXBsZVJhdGVGYWN0b3IgPSAxLjA7CkBAIC01NTAsNyArNTM5LDcgQEAgZG91
YmxlIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUoKQogICAgIGRvdWJsZSBi
YXNlUGl0Y2hSYXRlID0gcGxheWJhY2tSYXRlKCkuZmluYWxWYWx1ZSgpOwogICAgIGRvdWJsZSBk
ZXR1bmUgPSBwb3coMiwgbV9kZXR1bmUtPmZpbmFsVmFsdWUoKSAvIDEyMDApOwogCi0gICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGUgKiBkZXR1bmU7CisgICAgZG91YmxlIHRvdGFsUmF0ZSA9IHNhbXBsZVJhdGVGYWN0b3Ig
KiBiYXNlUGl0Y2hSYXRlICogZGV0dW5lOwogCiAgICAgdG90YWxSYXRlID0gc3RkOjpjbGFtcCh0
b3RhbFJhdGUsIC1NYXhSYXRlLCBNYXhSYXRlKTsKICAgICAKQEAgLTU2NywyNCArNTU2LDYgQEAg
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAg
ICByZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9i
dWZmZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFdl
YktpdEF1ZGlvUGFubmVyTm9kZSogcGFubmVyTm9kZSkKLXsKLSAgICBpZiAobV9sZWdhY3lQYW5u
ZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhhc0ZpbmlzaGVkKCkpCi0gICAgICAgIG1fbGVnYWN5
UGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpjbGVhclBhbm5lck5vZGUoKQotewotICAgIG1fbGVnYWN5UGFubmVyTm9kZSA9IG51bGxwdHI7
Ci19Ci0KLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaW5pc2goKQotewotICAgIGNsZWFy
UGFubmVyTm9kZSgpOwotICAgIEFTU0VSVCghbV9sZWdhY3lQYW5uZXJOb2RlKTsKLSAgICBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggMmRi
NzY2MWI4NTQxOGQ4Y2RhOTJmOTA0MWY0ZGE0YTY5MDcyOTY5Yi4uYjczM2Q3MGM2ZmNiYWFhNWRi
YTQ2NWNiNjhhZTMyMzYyZDI3YzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMywxMyArMzMsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7Ci1jbGFzcyBXZWJL
aXRBdWRpb1Bhbm5lck5vZGU7CiBzdHJ1Y3QgQXVkaW9CdWZmZXJTb3VyY2VPcHRpb25zOwogCiAv
LyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9Ob2RlIHJlcHJlc2VudGluZyBhbiBh
dWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8gYXNzZXQgcmVwcmVzZW50ZWQgYnkg
YW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2lsbCBiZSB1c2VkIGZvciBzaG9ydCBz
b3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9mIHNjaGVkdWxpbmcgZmxleGliaWxp
dHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVyZmVjdCB3YXlzKS4KIAotY2xhc3Mg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7
CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291
cmNlTm9kZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+
IGNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03NiwxNiAr
NzUsOSBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSYgZGV0dW5lKCkgeyByZXR1cm4gbV9kZXR1
bmUuZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwbGF5YmFja1JhdGUoKSB7IHJldHVybiBtX3Bs
YXliYWNrUmF0ZS5nZXQoKTsgfQogCi0gICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBpcyBzZXQsIHRo
ZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxheWJhY2sgcGl0
Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKik7
Ci0gICAgdm9pZCBjbGVhclBhbm5lck5vZGUoKTsKLQogICAgIC8vIElmIHdlIGFyZSBubyBsb25n
ZXIgcGxheWluZywgcHJvcG9nYXRlIHNpbGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4K
ICAgICBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUKLSAgICB2b2lkIGZpbmlzaCgpIGZpbmFsOwotCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJB
dWRpb0J1ZmZlclNvdXJjZU5vZGUiOyB9CiAKIHByb3RlY3RlZDoKQEAgLTk1LDkgKzg3LDYgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgeyByZXR1cm4gMS4wOyB9
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFRocm93T25BdHRlbXB0VG9PdmVyd3JpdGVCdWZmZXIo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFBs
YXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBn
cmFpbkR1cmF0aW9uKTsKICAgICB2b2lkIGFkanVzdEdyYWluUGFyYW1ldGVycygpOwogCkBAIC0x
MzcsMTMgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fd2FzR3JhaW5EdXJhdGlvbkdp
dmVuIHsgZmFsc2UgfTsKIAogICAgIC8vIHRvdGFsUGl0Y2hSYXRlKCkgcmV0dXJucyB0aGUgaW5z
dGFudGFuZW91cyBwaXRjaCByYXRlIChub24tdGltZSBwcmVzZXJ2aW5nKS4KLSAgICAvLyBJdCBp
bmNvcnBvcmF0ZXMgdGhlIGJhc2UgcGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNp
b24gZmFjdG9yIGZyb20gdGhlIGJ1ZmZlciwgYW5kIGFueSBkb3BwbGVyIHNoaWZ0IGZyb20gYW4g
YXNzb2NpYXRlZCBwYW5uZXIgbm9kZS4KKyAgICAvLyBJdCBpbmNvcnBvcmF0ZXMgdGhlIGJhc2Ug
cGl0Y2ggcmF0ZSwgYW55IHNhbXBsZS1yYXRlIGNvbnZlcnNpb24gZmFjdG9yIGZyb20gdGhlIGJ1
ZmZlci4KICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAotICAgIC8vIFdlIG9wdGlvbmFs
bHkga2VlcCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQg
dGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLgotICAgIEF1
ZGlvQ29ubmVjdGlvblJlZlB0cjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+IG1fbGVnYWN5UGFubmVy
Tm9kZTsKLQogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZl
cigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBt
dXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKaW5kZXggM2Vj
Y2FiOWJlNmY5MDA4OTM3ZDViNTc0MTlmYTQwMGJhNDM4MjEwYi4uMDNiNDdkNzI4YWU0MGFhYWQ4
MTdiNjBmMjNjNjJlMzc4MWUxMzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbApAQCAtNDEsMTEgKzQx
LDQgQEAKICAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7CiAKICAgICBbSW1wbGVtZW50ZWRB
cz1zdGFydExhdGVyXSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBv
cHRpb25hbCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJh
dGlvbik7Ci0KLSAgICAvLyBGSVhNRTogVGhvc2UgY29uc3RhbnRzIGFyZSBrZXB0IGZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHByZWZpeGVkIEFQSSBhbmQgc2hvdWxkCi0gICAg
Ly8gYmUgcmVtb3ZlZCBvbmNlIHdlIHN0b3Agc3VwcG9ydGluZyBpdC4KLSAgICBbRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTlNDSEVEVUxF
RF9TVEFURSA9IDA7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29u
c3QgdW5zaWduZWQgc2hvcnQgU0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBbRW5hYmxlZEJ5U2V0
dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NUQVRF
ID0gMjsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvXSBjb25zdCB1bnNp
Z25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGY2YjU1OTIwNjViMzlmMDJj
ZjEyYjIzODJlZWQyMDAyMzkyOTVhNWYuLjdkNTZkMGE1ZmYzYzUzZTdlY2Q2MzJmY2I4NjUzNzkx
NGIxM2JmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0Nv
bnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQ29u
CiAgICAgaWYgKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUuaGFzVmFsdWUoKSAmJiAhaXNTdXBw
b3J0ZWRTYW1wbGVSYXRlKGNvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgInNhbXBsZVJhdGUgaXMgbm90IGlu
IHJhbmdlIl9zIH07CiAgICAgCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBj
b250ZXh0T3B0aW9ucykpOworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBB
dWRpb0NvbnRleHQoZG9jdW1lbnQsIGNvbnRleHRPcHRpb25zKSk7CiAgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCiAvLyBD
b25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KLUF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRp
b0NvbnRleHQgaXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnN0IEF1ZGlvQ29udGV4dE9w
dGlvbnMmIGNvbnRleHRPcHRpb25zKQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
aXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNvbnRleHRPcHRpb25zKQorQXVkaW9Db250ZXh0
OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdWRpb0NvbnRleHRPcHRp
b25zJiBjb250ZXh0T3B0aW9ucykKKyAgICA6IEJhc2VBdWRpb0NvbnRleHQoZG9jdW1lbnQsIGNv
bnRleHRPcHRpb25zKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRo
aXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwpAQCAtMTE5LDE0ICsxMTksNiBAQCBBdWRp
b0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0
QXVkaW9Db250ZXh0IGlzTGVnYQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7CiB9CiAKLS8vIE9ubHkgbmVlZGVkIGZvciBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LgotQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCBpc0xlZ2FjeVdlYktpdEF1
ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
UmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IEJhc2VBdWRpb0NvbnRl
eHQoZG9jdW1lbnQsIGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCBudW1iZXJPZkNoYW5uZWxz
LCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCi0gICAgLCBtX21lZGlhU2Vzc2lv
bihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCi17Ci0gICAgY29uc3RydWN0Q29tbW9uKCk7Ci19
Ci0KIHZvaWQgQXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQogewogICAgIEFTU0VSVChk
b2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IDBjYzMyOTBmYWY3MTRmNjJjMTk1ZmMzNjkyMWVlMDlmMjhiOGRhNGUuLjE2
NjQ1NjczYzkyYzNhMjllMjc2NDMwZmIwZGJjOGUzNTM5ZWY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBET01XaW5kb3c7CiAKIHN0cnVjdCBBdWRpb1RpbWVzdGFtcDsKIAotY2xhc3MgQXVkaW9D
b250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHQgZmluYWwKICAgICA6IHB1YmxpYyBCYXNlQXVkaW9D
b250ZXh0CiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgogICAgICwgcHVibGljIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcgpAQCAtODksOCArODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1f
cmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQsIGNv
bnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKLSAgICBBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7
CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgY29uc3QgQXVkaW9Db250ZXh0
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOwogCkBAIC0x
MDcsMjQgKzEwNiwyNCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsK
IAogICAgIC8vIE1lZGlhUHJvZHVjZXIKLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKSBmaW5hbDsKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6
Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9Ci0gICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVk
aW87IH0KLSAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwotICAgIGJvb2wgY2Fu
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wg
c3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBpc1N1c3BlbmRlZCgpID8gUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZTo6Tm9uZSA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1
ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlw
ZTo6V2ViQXVkaW87IH0KKyAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVz
dW1lKSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIGZpbmFsOworICAgIGJvb2wg
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsIHsgfQorICAgIGJvb2wgc3Vw
cG9ydHNTZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhU2Vzc2lvbkdyb3Vw
SWRlbnRpZmllciBtZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci4KLSAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBmaW5h
bDsKIAogICAgIC8vIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0xpc3RlbmVyLmgKaW5kZXggNzJhMjNhOWE5NGZkNTYzOTNmMjE0ZTQ4ZDkyOGNkNzQ3
NGFiODcwMS4uZjA1MWFjYjE4Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9MaXN0ZW5lcihjb250ZXh0KSk7CiAgICAgfQotICAgIHZpcnR1YWwgfkF1ZGlvTGlzdGVu
ZXIoKTsKKyAgICB+QXVkaW9MaXN0ZW5lcigpOwogCiAgICAgQXVkaW9QYXJhbSYgcG9zaXRpb25Y
KCkgeyByZXR1cm4gbV9wb3NpdGlvblguZ2V0KCk7IH0KICAgICBBdWRpb1BhcmFtJiBwb3NpdGlv
blkoKSB7IHJldHVybiBtX3Bvc2l0aW9uWS5nZXQoKTsgfQpAQCAtNzAsOCArNzAsNiBAQCBwdWJs
aWM6CiAKICAgICBGbG9hdFBvaW50M0QgdXBWZWN0b3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1dlYktpdEF1ZGlvTGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAg
ICAgYm9vbCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
VXNlQVJhdGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5pZGwKaW5kZXggNzUzZWM4OGU2NDFhZjIxNmExY2FmNzM4MWM5OTQy
ODgzODZjYjg5OC4uMWI4NDJiZjI1MThhMDE0NDliNDJlMzFlNDZlMWNmYWEyYThiZGUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRs
CkBAIC0yOSw3ICsyOSw4IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCiBdIGludGVyZmFjZSBBdWRpb0xpc3RlbmVyIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9QYXJhbSBwb3NpdGlvblg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlv
UGFyYW0gcG9zaXRpb25ZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCmluZGV4IDQ0ZTYyYmQ3MjIwZTJkYzE4MzMzZDljNmM2MTRmM2FiMDBmOGFjNTcu
LjIxNmY2YjdlMjIwMjliNGQxNjI3ZDM5NTA1ZTA5MWU4Y2QzODJiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjczLDE0ICs2NzIsNiBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsK
IH0KIAotVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpCi17Ci0gICAgYXV0byYg
Y29udGV4dCA9IHRoaXMtPmNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC5pc1dlYktpdEF1ZGlv
Q29udGV4dCgpKQotICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRB
dWRpb0NvbnRleHQmPihjb250ZXh0KSk7Ci0gICAgcmV0dXJuIG1ha2VSZWZQdHIoY29udGV4dCk7
Ci19Ci0KIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZldpdGhMb2NrKCkKIHsKICAgICBBU1NFUlQoY29u
dGV4dCgpLmlzR3JhcGhPd25lcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCmluZGV4IDIyNzVjNTM3NzJmM2YyNTcwNmMyNDk1YjYwMGExYTRmYzc1MmUy
YzMuLjIwNTcwYTcyMTU4NzVjNGYwN2Q3MjU2YzMzZmRjZWMyYmI4MzhkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNDIsNyArNDIsNiBAQCBz
dHJ1Y3QgQXVkaW9Ob2RlT3B0aW9uczsKIGNsYXNzIEF1ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1
ZGlvUGFyYW07CiBjbGFzcyBCYXNlQXVkaW9Db250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9Db250
ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBo
YW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1
ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRp
byBkZXN0aW5hdGlvbi4KQEAgLTkwLDggKzg5LDYgQEAgcHVibGljOgogICAgIEJhc2VBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKTsKICAgICBjb25zdCBCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
Y29uc3Q7CiAKLSAgICBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0PiwgUmVmUHRyPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpOwotCiAgICAgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlOyB9CiAKICAgICAvLyBDYW4gYmUg
Y2FsbGVkIGZyb20gbWFpbiB0aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3NjI4Njgx
MTQxM2VkN2Q2MDI3NGI3ODM4NzgwZmI4OWVmMTIyNjA4Li5hMDdmMDljNTBkOTBmZTM1N2ZjNDEx
ZWY2YjBlY2FlMTYyM2RhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuaWRsCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwK
ICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDogRXZlbnRUYXJnZXQg
ewotICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmli
dXRlIChCYXNlQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQmFzZUF1ZGlvQ29udGV4dCBjb250ZXh0OwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCBmOWUzMjRlMjEyNjdhMDE0
OGRiN2I3NmM5YmM3N2IwZmU2MDA4YmExLi5iYjM5NWUzOGIzNGE2ZDg2YmY5NjljNTgxMTYyNjQw
NWJiNmUyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgog
I2luY2x1ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvblJh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2VySGVscGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCAyNjc3NTQwZTQzMjU4YjRmMThhMGQ0
MWM1MmRiYzk0MmM2ZjEyZTVmLi5lMWY0YjA0ZWYyM2M2OWNiOThjNzQwMmEyZmYyMTFiNWE1NDlh
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5jcHAKQEAgLTgwLDcgKzgwLDYgQEAKICNpbmNsdWRlICJTdGVyZW9QYW5uZXJO
b2RlLmgiCiAjaW5jbHVkZSAiU3RlcmVvUGFubmVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIldhdmVT
aGFwZXJOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgogCkBAIC0xMzIsNyArMTMxLDcgQEAgc3RhdGljIEhhc2hTZXQ8dWludDY0X3Q+JiBsaXZlQXVk
aW9Db250ZXh0cygpCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgotQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0LCBjb25zdCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKK0Jh
c2VBdWRpb0NvbnRleHQ6OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBBdWRpb0NvbnRleHRPcHRpb25zJiBjb250ZXh0T3B0aW9ucykKICAgICA6IEFjdGl2ZURPTU9i
amVjdChkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQpAQCAtMTQxLDcgKzE0MCw3IEBAIEJhc2VBdWRpb0NvbnRleHQ6
OkJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBJc0xlZ2FjeVdlYktpdEF1ZGlv
Q29udGV4CiAgICAgLCBtX2NvbnRleHRJRChnZW5lcmF0ZUF1ZGlvQ29udGV4dElEKCkpCiAgICAg
LCBtX3dvcmtsZXQoQXVkaW9Xb3JrbGV0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9kZXN0aW5h
dGlvbk5vZGUobWFrZVVuaXF1ZVJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+KCp0aGlz
LCBjb250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlKSkKLSAgICAsIG1fbGlzdGVuZXIoaXNMZWdhY3lX
ZWJLaXRBdWRpb0NvbnRleHQgPT0gSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6OlllcyA/IFJl
ZjxBdWRpb0xpc3RlbmVyPihXZWJLaXRBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKSA6IEF1
ZGlvTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2xpc3RlbmVyKEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgbGl2ZUF1ZGlvQ29udGV4dHMoKS5hZGQobV9jb250
ZXh0SUQpOwogCkBAIC0xNjMsNyArMTYyLDcgQEAgQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXgKIH0K
IAogLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgot
QmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIElz
TGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0IGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZm
ZXI+JiYgcmVuZGVyVGFyZ2V0KQorQmFzZUF1ZGlvQ29udGV4dDo6QmFzZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiByZW5kZXJUYXJnZXQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKQEAgLTE3NCw3ICsxNzMsNyBAQCBCYXNlQXVkaW9Db250
ZXh0OjpCYXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRB
dWRpb0NvbnRleAogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX3JlbmRl
clRhcmdldChXVEZNb3ZlKHJlbmRlclRhcmdldCkpCiAgICAgLCBtX2Rlc3RpbmF0aW9uTm9kZSht
YWtlVW5pcXVlUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4oKnRoaXMsIG51bWJlck9m
Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIG1fcmVuZGVyVGFyZ2V0LmNvcHlSZWYoKSkpCi0gICAgLCBt
X2xpc3RlbmVyKGlzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0ID09IElzTGVnYWN5V2ViS2l0QXVk
aW9Db250ZXh0OjpZZXMgPyBSZWY8QXVkaW9MaXN0ZW5lcj4oV2ViS2l0QXVkaW9MaXN0ZW5lcjo6
Y3JlYXRlKCp0aGlzKSkgOiBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9s
aXN0ZW5lcihBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGxpdmVBdWRpb0Nv
bnRleHRzKCkuYWRkKG1fY29udGV4dElEKTsKICAgICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
aAppbmRleCA1OGJkY2U5ZGM2ZWFiNTEyNTg2ZWYxM2U3NjEwMWJlYWYxZTUyMzFjLi5hZTBmNDkx
MTJhMzc1MTc5MzIzNWNhNmY4ZTBjNDQzNDczZjRiYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE1LDcgKzExNSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKICAgICAKICAgICBi
b29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUmIGRlc3RpbmF0aW9uKCkgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7IH0KICAgICBjb25zdCBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQpAQCAtMjk3LDkgKzI5Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPj4mIHBhcmFtZXRlckRlc2NyaXB0b3JN
YXAoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckRlc2NyaXB0b3JNYXA7IH0KIAogcHJvdGVj
dGVkOgotICAgIGVudW0gY2xhc3MgSXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIGV4cGxpY2l0IEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xl
Z2FjeVdlYktpdEF1ZGlvQ29udGV4dCwgY29uc3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgPSB7IH0p
OwotICAgIEJhc2VBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBJc0xlZ2FjeVdlYktpdEF1ZGlvQ29u
dGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRy
PEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CisgICAgZXhwbGljaXQgQmFzZUF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIGNvbnN0IEF1ZGlvQ29udGV4dE9wdGlvbnMmID0geyB9KTsKKyAgICBC
YXNlQXVkaW9Db250ZXh0KERvY3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCk7CiAgICAg
CiAgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Fj
dGl2aXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCA1MWI2YjJjMDk4YzQwNDkyYmZhYzc5
MTVhM2QwMzA1YzhjNmYzOGY0Li40YWE5YWQ0Y2YxNDgxOGJkY2I5YmI2Njk5ZmU4ZDhiOTY4M2Iy
OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkR5bmFtaWNzQ29tcHJlc3Nvci5oIgotI2luY2x1ZGUgIldlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiAvLyBTZXQgb3V0
cHV0IHRvIHN0ZXJlbyBieSBkZWZhdWx0LgpAQCAtNDMsNyArNDIsNiBAQCBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzID0gMjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUpOwotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUpOwogCiBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZShCYXNlQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBEeW5hbWljc0NvbXByZXNzb3JPcHRpb25zJiBvcHRpb25zKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaAppbmRleCAyZGUwN2RmOWZlMjE4NjFlZTcyOWJhZDJlOWM0N2RlMTE0MzA4OGQyLi5iM2Uw
MjBkYmQ3MzIzMWU0OTRhYzg5MThmOWJjNDI0NWRjNTIzYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaApA
QCAtMzQsMTggKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yOwogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlv
Tm9kZSB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlv
Tm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU+PiBjcmVhdGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IER5bmFtaWNzQ29tcHJlc3Nv
ck9wdGlvbnMmID0geyB9KTsKIAotICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUo
KTsKKyAgICB+RHluYW1pY3NDb21wcmVzc29yTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0g
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHByb2Nl
c3NPbmx5QXVkaW9QYXJhbXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7Ci0gICAgdm9p
ZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgp
IGZpbmFsOwogCiAgICAgLy8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAg
ICAgQXVkaW9QYXJhbSYgdGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0K
QEAgLTY1LDggKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWR1Y3Rp
b24oZmxvYXQgcmVkdWN0aW9uKSB7IG1fcmVkdWN0aW9uID0gcmVkdWN0aW9uOyB9CiAKIHByaXZh
dGU6Ci0gICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBy
ZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
CmluZGV4IDRlMDZiZDFhODhhM2VlNWY4M2U5YjMxZjRmODc4N2FjZWFmODU5Y2EuLjg0ZDE2YTE1
NWY2OTI3NmRiZGQ0OGI3NWViNzA5YWQ5NWU5MjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoT2ZmbGluZUF1ZGlvQ29udGV4dCk7CiAKIGlubGluZSBPZmZsaW5lQXVkaW9Db250ZXh0OjpP
ZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9C
dWZmZXI+JiYgcmVuZGVyVGFyZ2V0KQotICAgIDogQmFzZUF1ZGlvQ29udGV4dChkb2N1bWVudCwg
SXNMZWdhY3lXZWJLaXRBdWRpb0NvbnRleHQ6Ok5vLCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVS
YXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkpCisgICAgOiBCYXNlQXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCBudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHJlbmRlclRhcmdldCkp
CiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggYWIxNDY2N2QwNjhkYzAxMWFhMDJi
ZTFkMGVhYmE4YzhhOTUwMmQ0OS4uNzQxNDE0N2FmMGM1ZmEzYWVhYjZiMDIzNjFhODYzZTI5MDM5
OWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaApAQCAtMzUsMTQgKzM1LDE0IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIAogLy8gT3Nj
aWxsYXRvck5vZGUgaXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4K
IAotY2xhc3MgT3NjaWxsYXRvck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
IHsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPc2NpbGxhdG9yTm9kZSk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0
ZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3QgT3NjaWxsYXRvck9wdGlvbnMmID0geyB9KTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk9zY2lsbGF0b3JOb2RlIjsg
fQorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiT3NjaWxsYXRvck5vZGUiOyB9CiAKICAgICBPc2NpbGxhdG9yVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHlwZShPc2Np
bGxhdG9yVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuaWRsCmluZGV4IGU0NWZiNzc1ZjBmOTA0MDc5NjYyOGRhNjUxYjNiNGQ5MmQ3
MWQyY2UuLjJkMDI5ZmY4MzUyZjNjNjE0NDVmNzRjMmNjMDlmYjdkMDExYTBhMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCkBA
IC0zNywxMSArMzcsNCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGRldHVu
ZTsgLy8gaW4gQ2VudHMKIAogICAgIHVuZGVmaW5lZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNX
YXZlIHdhdmUpOwotCi0gICAgLy8gRklYTUU6IFRob3NlIGxlZ2FjeSBwbGF5YmFjayBzdGF0ZSBj
b25zdGFudHMgYXJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAg
ICAvLyBwcmVmaXhlZCBBUEkgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2Ugc3RvcCBzdXBw
b3J0aW5nIHRoZSBwcmVmaXhlZCBBUEkuCi0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRX
ZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAg
IFtFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW9dIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJB
dWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgW0VuYWJs
ZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpb10gY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNI
RURfU1RBVEUgPSAzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDk3MTkyZjY3OGIwNDU2MGJiYThjYTdiMzk4YWQyNzlhZjA1ZmNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwLCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0u
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShCYXNlQXVk
aW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBBdWRp
b1BhcmFtJiBnYWluKCkgY29uc3QgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEJhc2VBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCi0gICAgICAgIDogQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQpCi0g
ICAgICAgICwgbV9nYWluKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiJfcywgMS4w
LCAwLjAsIDEuMCwgQXV0b21hdGlvblJhdGU6OktSYXRlKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Ym9vbCBzaG91bGRUaHJvd09uQXR0ZW1wdFRvT3ZlcndyaXRlQnVmZmVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBkb3VibGUgbGVnYWN5R2FpblZhbHVlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZ2FpbigpLnZhbHVlKCk7IH0KLQotICAgIFJlZjxBdWRpb1BhcmFtPiBtX2dh
aW47Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIyOWM1MjgzOTRjOTJhNGI5ZGE2MzlkOGNhOWQ1NTAyN2VmNThhNWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gQSBjYWNoZWQgKG5v
bi1zdHJlYW1lZCksIG1lbW9yeS1yZXNpZGVudCBhdWRpbyBzb3VyY2UKLVsKLSAgICBDb25kaXRp
b25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAot
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0Ci1d
IGludGVyZmFjZSBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUgOiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUgewotICAgIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwotCi0gICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
UExBWUlOR19TVEFURSA9IDI7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRklOSVNIRURfU1RB
VEUgPSAzOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBsYXliYWNr
U3RhdGU7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBnYWluOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHBsYXliYWNrUmF0ZTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIGxvb3A7Ci0KLSAgICBhdHRyaWJ1dGUgZG91YmxlIGxvb3BTdGFydDsKLSAgICBh
dHRyaWJ1dGUgZG91YmxlIGxvb3BFbmQ7Ci0KLSAgICBbSW1wbGVtZW50ZWRBcz1zdGFydExhdGVy
XSB1bmRlZmluZWQgc3RhcnQob3B0aW9uYWwgZG91YmxlIHdoZW4gPSAwLCBvcHRpb25hbCBkb3Vi
bGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRpb25hbCBkb3VibGUgZ3JhaW5EdXJhdGlvbik7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NDI2ODk4ZDg3NDVj
YThhMDk4ZWQwMzBjOWNmZmE2ODExZDQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUg
IldlYktpdEF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKLSNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKLSNpbmNs
dWRlICJXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0jaW5jbHVkZSAiV2ViS2l0T3Nj
aWxsYXRvck5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCi0jaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUg
Ik1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1
ZGlvU291cmNlT3B0aW9ucy5oIgotI2VuZGlmCi0KLWNvbnN0ZXhwciB1bnNpZ25lZCBNYXhQZXJp
b2RpY1dhdmVMZW5ndGggPSA0MDk2OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0NvbnRleHQpOwotCi0jZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQotCi0jaWYgT1MoV0lORE9XUykKLS8vIERvbid0IGFsbG93IG1vcmUg
dGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRv
IGhhcmR3YXJlLgotY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0Owot
I2VuZGlmCi0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSNpZiBPUyhXSU5ET1dTKQotICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENv
dW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBR
dW90YUV4Y2VlZGVkRXJyb3IgfTsKLSNlbmRpZgotCi0gICAgYXV0byBhdWRpb0NvbnRleHQgPSBh
ZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOwotICAgIGF1ZGlvQ29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKLX0KLQot
Ly8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1XZWJL
aXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0g
ICAgOiBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIElzTGVnYWN5V2ViS2l0QXVkaW9Db250ZXh0OjpZ
ZXMpCi17Ci19Ci0KLS8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJl
bmRlcmluZy4KLVdlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRh
cmdldCkKLSAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgSXNMZWdhY3lXZWJLaXRBdWRpb0Nv
bnRleHQ6OlllcywgcmVuZGVyVGFyZ2V0LT5udW1iZXJPZkNoYW5uZWxzKCksIHNhbXBsZVJhdGUs
IFdURk1vdmUocmVuZGVyVGFyZ2V0KSkKLXsKLX0KLQotY29uc3QgY2hhciogV2ViS2l0QXVkaW9D
b250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIldlYktp
dEF1ZGlvQ29udGV4dCI7Ci19Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLUV4Y2VwdGlvbk9yPFJl
ZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCi17Ci0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlz
LCB7ICZtZWRpYUVsZW1lbnQgfSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLQotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
OjpjcmVhdGUoKnRoaXMsIHsgJm1lZGlhU3RyZWFtIH0pOwotfQotCi1FeGNlcHRpb25PcjxSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCi17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLSNlbmRpZgotCi1FeGNlcHRp
b25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVXZWJLaXRQYW5uZXIoKQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChpc1N0b3BwZWQoKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAgICBsYXp5SW5pdGlh
bGl6ZSgpOwotICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlv
Q29udGV4dDo6Y3JlYXRlV2ViS2l0T3NjaWxsYXRvcigpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGlzU3Rv
cHBlZCgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
LQotICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICByZXR1cm4gV2ViS2l0T3NjaWxsYXRvck5v
ZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQotewotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7Ci0gICAgCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaXNTdG9wcGVk
KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwotCi0g
ICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IHJlYWwubGVuZ3Ro
KCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGggfHwgIXJlYWwubGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0gICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1h
Z2luYXJ5KTsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2ViS2l0QnVmZmVyU291cmNlKCkKLXsKLSAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwotCi0gICAgbGF6eUluaXRpYWxpemUoKTsKLQotICAgIHJldHVybiBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlZjxXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKQotewotICAgIGlmIChpc1N0b3BwZWQo
KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07Ci0KLSAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwotCi0gICAgcmV0dXJuIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTGVnYWN5QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJh
eUJ1ZmZlciwgYm9vbCBtaXhUb01vbm8pCi17Ci0gICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOwotICAgIGlmICgh
YXVkaW9CdWZmZXIpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9Owot
ICAgIHJldHVybiBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
LXsKLSAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IGlzU3RvcHBlZCgpKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKLQotICAgIGxhenlJbml0aWFsaXplKCk7
Ci0KLSAgICBkZXN0aW5hdGlvbigpLmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Ci0gICAgICAgIHVu
aW5pdGlhbGl6ZSgpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU3ZmM5MzZhNDhmN2VlZTk5NWU5Y2U1YWNmMTNhYjcxZjNmZDQzNjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0QXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwotY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwotY2xh
c3MgTWVkaWFTdHJlYW07Ci1jbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOwot
Y2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7Ci1jbGFzcyBQZXJpb2RpY1dhdmU7Ci1j
bGFzcyBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Ci1jbGFzcyBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU7Ci1jbGFzcyBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlOwotY2xhc3MgV2ViS2l0
T3NjaWxsYXRvck5vZGU7Ci0KLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2Yg
dGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQu
Ci0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBt
YWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgot
Ci1jbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0Ci17Ci0gICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAg
IC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVk
aW8gaGFyZHdhcmUuCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKLQotICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwotCi0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKSB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0xpc3RlbmVyPihBdWRpb0NvbnRleHQ6Omxpc3RlbmVy
KCkpOyB9Ci0KLSAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgotI2lmIEVOQUJMRShWSURFTykK
LSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlh
U3RyZWFtRGVzdGluYXRpb24oKTsKLSNlbmRpZgotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRB
dWRpb1Bhbm5lck5vZGU+PiBjcmVhdGVXZWJLaXRQYW5uZXIoKTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVXZWJLaXRPc2NpbGxhdG9yKCk7Ci0gICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlV2ViS2l0QnVmZmVyU291cmNl
KCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVXZWJLaXREeW5hbWljc0NvbXByZXNzb3IoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVMZWdhY3lCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9u
byk7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1l
bnQmKTsKLSAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsKLQotcHJpdmF0ZToKLSAgICAvLyBB
Y3RpdmVET01PYmplY3QgQVBJLgotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci19OwotCi19IC8vIFdlYkNvcmUKLQotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQpCi0gICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQmIGNvbnRleHQp
IHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRpb0NvbnRleHQoKTsgfQotU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMmNkNTg3ZmQwMTNiMWQxN2M1M2YxMjc5Y2E2ZjM2ZTY1ZGVjMDM4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbyZQcmVmaXhlZFdlYkF1
ZGlvLAotICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9
d2Via2l0QXVkaW9Db250ZXh0LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50XSBj
b25zdHJ1Y3RvcigpOwotCi0gICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29u
bmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJl
LgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlv
bjsKLQotICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGlt
ZSBpbiBzZWNvbmRzLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IGN1cnJlbnRUaW1lOwotCi0gICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVu
IGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCi0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwotCi0gICAgLy8g
QWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViS2l0QXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKLQotICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dW5kZWZpbmVkPiBzdXNwZW5kKCk7Ci0gICAg
W0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHVuZGVmaW5lZD4gcmVzdW1l
KCk7Ci0gICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNsb3NlKCk7Ci0KLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnN0YXRlY2hhbmdlOwotCi0gICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7Ci0KLSAgICBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgW0ltcGxlbWVu
dGVkQXM9Y3JlYXRlTGVnYWN5QnVmZmVyXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlC
dWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7Ci0KLSAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgotICAgIHVuZGVmaW5lZCBkZWNvZGVBdWRpb0RhdGEo
QXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJh
Y2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwotCi0gICAg
Ly8gU291cmNlcwotICAgIFtJbXBsZW1lbnRlZEFzPWNyZWF0ZVdlYktpdEJ1ZmZlclNvdXJjZV0g
V2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwotCi0gICAg
W0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVk
aWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KTsKLQotICAgIFtD
b25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0
ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKLSAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLQotICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKLSAg
ICBHYWluTm9kZSBjcmVhdGVHYWluKCk7Ci0gICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlUaW1lID0gMSk7Ci0gICAgQmlxdWFkRmls
dGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKLSAgICBXYXZlU2hhcGVyTm9kZSBjcmVhdGVX
YXZlU2hhcGVyKCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3JlYXRlV2ViS2l0UGFubmVyXSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7Ci0gICAgQ29udm9sdmVyTm9kZSBjcmVh
dGVDb252b2x2ZXIoKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXREeW5hbWljc0Nv
bXByZXNzb3JdIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21w
cmVzc29yKCk7Ci0gICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgU2NyaXB0
UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hh
bm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PSAyKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jcmVhdGVXZWJLaXRPc2NpbGxhdG9yXSBXZWJLaXRP
c2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgUGVyaW9kaWNXYXZlIGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOwotCi0g
ICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBDaGFubmVsU3BsaXR0ZXJO
b2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0cyA9IDYpOwotICAgIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwotCi0gICAgLy8gT2Zm
bGluZSByZW5kZXJpbmcKLSAgICAvLyB1bmRlZmluZWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5k
ZXJpbmcodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmNvbXBsZXRlOwotICAgIHVuZGVmaW5lZCBzdGFydFJlbmRlcmluZygp
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0xpc3RlbmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjE2NWNmZDJm
YjUzOTk4YzJiOTBmY2QwM2VhMGM0Mzk5ZTUzMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0xpc3RlbmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYktpdEF1ZGlvTGlzdGVuZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9MaXN0ZW5lciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb0xpc3RlbmVyPiBjcmVhdGUoQmFzZUF1ZGlv
Q29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YktpdEF1ZGlvTGlzdGVuZXIoY29udGV4dCkpOwotICAgIH0KLQotICAgIC8vIFZlbG9jaXR5Ci0g
ICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IHNldFZlbG9j
aXR5KEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0
IEZsb2F0UG9pbnQzRCYgdmVsb2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAg
Y29uc3QgRmxvYXRQb2ludDNEJiB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7
IH0KLQotICAgIC8vIERvcHBsZXIgZmFjdG9yCi0gICAgdm9pZCBzZXREb3BwbGVyRmFjdG9yKGRv
dWJsZSBkb3BwbGVyRmFjdG9yKSB7IG1fZG9wcGxlckZhY3RvciA9IGRvcHBsZXJGYWN0b3I7IH0K
LSAgICBkb3VibGUgZG9wcGxlckZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9wcGxlckZhY3Rv
cjsgfQotCi0gICAgLy8gU3BlZWQgb2Ygc291bmQKLSAgICB2b2lkIHNldFNwZWVkT2ZTb3VuZChk
b3VibGUgc3BlZWRPZlNvdW5kKSB7IG1fc3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kOyB9Ci0g
ICAgZG91YmxlIHNwZWVkT2ZTb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWRPZlNvdW5kOyB9
Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0QXVkaW9MaXN0ZW5lcihCYXNlQXVkaW9Db250ZXh0JiBj
b250ZXh0KQotICAgICAgICA6IEF1ZGlvTGlzdGVuZXIoY29udGV4dCkKLSAgICAgICAgLCBtX3Zl
bG9jaXR5KDAsIDAsIDApCi0gICAgeyB9Ci0KLSAgICBib29sIGlzV2ViS2l0QXVkaW9MaXN0ZW5l
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UG9pbnQzRCBtX3Zl
bG9jaXR5OwotICAgIGRvdWJsZSBtX2RvcHBsZXJGYWN0b3IgeyAxLjAgfTsKLSAgICBkb3VibGUg
bV9zcGVlZE9mU291bmQgeyAzNDMuMyB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvTGlzdGVu
ZXIpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXIm
IGxpc3RlbmVyKSB7IHJldHVybiBsaXN0ZW5lci5pc1dlYktpdEF1ZGlvTGlzdGVuZXIoKTsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9MaXN0ZW5lci5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE4NjQyZDE0M2VlODFlNjRjZTdjY2M0ZmQ1NTQyZGNkMThmZGYxYjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0xpc3RlbmVyLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1QcmVmaXhlZFdlYkF1ZGlvLAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAot
XSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9MaXN0ZW5lciB7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCBkb3BwbGVyRmFjdG9yOyAgLy8gc2FtZSBhcyBPcGVuQUwgKGRlZmF1bHQgMS4w
KQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgc3BlZWRPZlNvdW5kOyAgIC8vIGlu
IG1ldGVycyAvIHNlY29uZCAoZGVmYXVsdCAzNDMuMykKLQotICAgIHVuZGVmaW5lZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeiwgdW5y
ZXN0cmljdGVkIGZsb2F0IHhVcCwgdW5yZXN0cmljdGVkIGZsb2F0IHlVcCwgdW5yZXN0cmljdGVk
IGZsb2F0IHpVcCk7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyNDQwYTk0ZWZj
OTFkMjAyZThjNDkzN2ZkZjc3NzU5N2E2ODE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvQ29u
dGV4dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2Rl
T3V0cHV0LmgiCi0jaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFJU
RlBhbm5lci5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktp
dEF1ZGlvUGFubmVyTm9kZSk7Ci0KLXN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQotewot
ICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCi0gICAgICAgIHggPSAwLjA7
Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktp
dEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBOb2RlVHlw
ZVBhbm5lcikKLXsKLSAgICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxD
b3VudE1vZGU6OkNsYW1wZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwot
Ci0gICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24n
dCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0
YWJhc2UuCi0gICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgp
KTsKLQotICAgIGFkZElucHV0KCk7Ci0gICAgYWRkT3V0cHV0KDIpOwotCi0gICAgbV9wb3NpdGlv
biA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKLSAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2lu
dDNEKDEsIDAsIDApOwotICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Ci0K
LSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1
ZGlvUGFubmVyTm9kZSgpCi17Ci0gICAgdW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0g
ICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRp
b1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rp
b25zIGFyZSBtYWRlLgotICAgIC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBt
YWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hp
ZnQgcGl0Y2ggY2hhbmdlcy4KLSAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgp
LmNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4
dCgpLmNvbm5lY3Rpb25Db3VudCgpOwotCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91
Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KLSAgICAgICAgSGFzaFNldDxBdWRpb05vZGUq
PiB2aXNpdGVkTm9kZXM7Ci0gICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9k
ZSh0aGlzLCB2aXNpdGVkTm9kZXMpOwotICAgIH0KLQotICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0
cyhmcmFtZXNUb1Byb2Nlc3MpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
biA9IG91dHB1dCgwKS0+YnVzKCk7Ci0KLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5w
dXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdldCgpKSB7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBdWRpb0J1cyog
c291cmNlID0gaW5wdXQoMCktPmJ1cygpOwotICAgIGlmICghc291cmNlKSB7Ci0gICAgICAgIGRl
c3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBIUlRG
RGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBh
dWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgotICAgIGlmIChwYW5u
aW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxv
YWRlci0+aXNMb2FkZWQoKSkgewotICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRl
eHQoKSkKLSAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhy
ZWFkQ29tcGxldGlvbigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9u
LT56ZXJvKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHRy
eUhvbGRMb2NrKCkgaW5zdGVhZC4KLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fcHJv
Y2Vzc0xvY2spOwotICAgIGlmICghbG9ja2VyKSB7Ci0gICAgICAgIC8vIFRvbyBiYWQgLSB0cnlI
b2xkTG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo
ZSBwYW5uZXIuCi0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCi0gICAgZG91YmxlIGF6
aW11dGg7Ci0gICAgZG91YmxlIGVsZXZhdGlvbjsKLSAgICBnZXRBemltdXRoRWxldmF0aW9uKCZh
emltdXRoLCAmZWxldmF0aW9uKTsKLSAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlv
biwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIC8vIEdldCB0
aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KLSAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFu
Y2VDb25lR2FpbigpOwotCi0gICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZS4KLSAgICBkZXN0aW5h
dGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sIHRvdGFsR2Fpbik7Ci19Ci0KLXZv
aWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoaXNJbml0
aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3Jl
YXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdl
dCgpKTsKLQotICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYW5uZXIgPSBudWxscHRyOwotICAgIEF1ZGlv
Tm9kZTo6dW5pbml0aWFsaXplKCk7Ci19Ci0KLVdlYktpdEF1ZGlvTGlzdGVuZXImIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQotewotICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVu
ZXIoKTsKLX0KLQotdm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQ
YW5uaW5nTW9kZWxUeXBlIG1vZGVsKQotewotICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9k
ZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKLSAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9j
ayk7Ci0KLSAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0
ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7Ci0gICAgICAgIG1fcGFubmluZ01vZGVs
ID0gbW9kZWw7Ci0gICAgfQotfQotCi1EaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PFdl
YktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Ci19
Ci0KLXZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNl
TW9kZWxUeXBlIG1vZGVsKQotewotICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWws
IHRydWUpOwotfQotCi12b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZh
dGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQotewotICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJs
ZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0K
LSAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNl
LWxpc3RlbmVyIHZlY3RvcgotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlz
dGVuZXIoKS5wb3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBv
c2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOwotCi0gICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlz
WmVybygpKSB7Ci0gICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAotICAgICAgICAqb3V0QXppbXV0aCA9IDAuMDsKLSAg
ICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwotCi0gICAgLy8gQWxpZ24gYXhlcwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS5vcmllbnRhdGlvbigpOwotICAg
IEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS51cFZlY3RvcigpOwotICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVw
KTsKLSAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOwotCi0gICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKLSAgICBsaXN0ZW5lckZyb250Tm9ybS5u
b3JtYWxpemUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3Mo
bGlzdGVuZXJGcm9udE5vcm0pOwotCi0gICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlz
dGVuZXIuZG90KHVwKTsKLQotICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3Vy
Y2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOwotICAgIHByb2plY3RlZFNvdXJjZS5ub3Jt
YWxpemUoKTsKLQotICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBh
dm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQg
dGhlIGxpc3RlbmVyCi0gICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3Qo
bGlzdGVuZXJGcm9udE5vcm0pOwotICAgIGlmIChmcm9udEJhY2sgPCAwLjApCi0gICAgICAgIGF6
aW11dGggPSAzNjAuMCAtIGF6aW11dGg7Ci0KLSAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUg
dG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCi0gICAgaWYgKChhemlt
dXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQotICAgICAgICBhemltdXRoID0gOTAu
MCAtIGF6aW11dGg7Ci0gICAgZWxzZQotICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRo
OwotCi0gICAgLy8gRWxldmF0aW9uCi0gICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAu
MCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKLSAgICBmaXhOQU5z
KGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICBpZiAoZWxldmF0aW9u
ID4gOTAuMCkKLSAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247Ci0gICAgZWxz
ZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCi0gICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVs
ZXZhdGlvbjsKLQotICAgIGlmIChvdXRBemltdXRoKQotICAgICAgICAqb3V0QXppbXV0aCA9IGF6
aW11dGg7Ci0gICAgaWYgKG91dEVsZXZhdGlvbikKLSAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVs
ZXZhdGlvbjsKLX0KLQotZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgp
Ci17Ci0gICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKLQotICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdl
ZC4uLgotICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS5kb3BwbGVyRmFjdG9y
KCk7Ci0KLSAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgewotICAgICAgICBkb3VibGUgc3Bl
ZWRPZlNvdW5kID0gbGlzdGVuZXIoKS5zcGVlZE9mU291bmQoKTsKLQotICAgICAgICBjb25zdCBG
bG9hdFBvaW50M0QmIHNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAgICAgICAgY29uc3Qg
RmxvYXRQb2ludDNEJiBsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS52ZWxvY2l0eSgpOwot
Ci0gICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2
ZSBubyB2ZWxvY2l0eQotICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZl
bG9jaXR5LmlzWmVybygpOwotICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlz
dGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKLQotICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkg
fHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgewotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBz
b3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCi0gICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVu
ZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICAgICAgICAgIEZsb2F0UG9p
bnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247Ci0K
LSAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlz
dGVuZXIubGVuZ3RoKCk7Ci0KLSAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24g
PSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVy
TWFnbml0dWRlOwotICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VU
b0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsK
LQotICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsK
LSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsKLQotICAg
ICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBs
ZXJGYWN0b3I7Ci0gICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0
ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Ci0gICAgICAgICAgICBzb3VyY2VQ
cm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKLQotICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVy
RmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFj
dG9yICogc291cmNlUHJvamVjdGlvbikpOwotICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hp
ZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgICAgICAgICAvLyBMaW1pdCB0aGUg
cGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KLSAgICAg
ICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQotICAgICAgICAgICAgICAgIGRvcHBsZXJT
aGlmdCA9IDE2LjA7Ci0gICAgICAgICAgICBlbHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkK
LSAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxlclNoaWZ0KTsKLX0KLQotZmxv
YXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKLXsKLSAgICBGbG9h
dFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkucG9zaXRpb24oKTsKLSAgICBG
bG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOwotCi0gICAgZG91YmxlIGxp
c3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRp
b24pOwotICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlz
dGVuZXJEaXN0YW5jZSk7Ci0KLSAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGlu
ZyBjb25lR2FpbgotICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJj
ZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKLQotICAgIHJldHVy
biBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Ci19Ci0KLXZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBu
b2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpCi17Ci0gICAgQVNTRVJUKG5v
ZGUpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmlyc3QgY2hl
Y2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBp
dCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4g
aW50byBhY2NvdW50LgotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9C
dWZmZXJTb3VyY2UpIHsKLSAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3Vy
Y2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsK
LSAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytp
KSB7Ci0gICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsK
LQotICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBj
b25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25u
ZWN0aW9ucygpOyArK2opIHsKLSAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5l
Y3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7Ci0gICAgICAgICAgICAgICAg
QXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2aXNpdGVkTm9k
ZXMuYWRkKGNvbm5lY3RlZE5vZGUpOwotICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNl
c0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6
cmVxdWlyZXNUYWlsUHJvY2Vzc2luZygpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhlcmUncyBubyBp
bnRlcm5hbCBwYW5uZXIgbWV0aG9kIHNldCB1cCB5ZXQsIGFzc3VtZSB3ZSByZXF1aXJlIHRhaWwK
LSAgICAvLyBwcm9jZXNzaW5nIGluIGNhc2UgdGhlIEhSVEYgcGFubmVyIGlzIHNldCBsYXRlciwg
d2hpY2ggZG9lcyByZXF1aXJlIHRhaWwKLSAgICAvLyBwcm9jZXNzaW5nLgotICAgIHJldHVybiAh
bV9wYW5uZXIgfHwgbV9wYW5uZXItPnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTRiYjAyZDJkNmI3NWUwOWE0
OTFhYmFhZjIxMWJmOTRkMDQwZmFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlv
Tm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKLSNpbmNsdWRlICJDb25lLmgiCi0jaW5j
bHVkZSAiRGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNpbmNsdWRlICJQ
YW5uZXIuaCIKLSNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJL
aXRBdWRpb0xpc3RlbmVyLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7Ci0KLS8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2Rl
IHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgotLy8gSXQgcG9zaXRpb25zIGEgc291bmQg
aW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5p
bmcgbW9kZWwuCi0vLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qg
c3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBv
ZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCi0vLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxs
IGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBs
aXN0ZW5lci4KLS8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBBbGwgb2YgdGhl
c2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4K
LQotY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOwotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0
QXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKLQotICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpj
b250ZXh0KCkpOyB9Ci0gICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRl
eHQoKSk7IH0KLQotICAgIC8vIEF1ZGlvTm9kZQotICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKLQotICAgIC8vIExpc3RlbmVyCi0gICAg
V2ViS2l0QXVkaW9MaXN0ZW5lciYgbGlzdGVuZXIoKTsKLQotICAgIC8vIFBhbm5pbmcgbW9kZWwK
LSAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9Ci0gICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7
Ci0KLSAgICAvLyBQb3NpdGlvbgotICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQotCi0g
ICAgLy8gT3JpZW50YXRpb24KLSAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwg
eik7IH0KLQotICAgIC8vIFZlbG9jaXR5Ci0gICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29u
c3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9
Ci0KLSAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCi0gICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1v
ZGVsVHlwZSk7Ci0KLSAgICBkb3VibGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNl
RWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KLSAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSBy
ZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNl
KTsgfQotCi0gICAgZG91YmxlIG1heERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVj
dC5tYXhEaXN0YW5jZSgpOyB9Ci0gICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlz
dGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0K
LQotICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5y
b2xsb2ZmRmFjdG9yKCk7IH0KLSAgICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxv
ZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0
b3IpOyB9Ci0KLSAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCi0gICAgZG91
YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5n
bGUoKTsgfQotICAgIHZvaWQgc2V0Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29u
ZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckFu
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQotICAgIHZv
aWQgc2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRl
ckFuZ2xlKGFuZ2xlKTsgfQotCi0gICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJl
dHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCk7IH0KLSAgICB2b2lkIHNldENvbmVPdXRlckdh
aW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9Ci0K
LSAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUq
IG91dEVsZXZhdGlvbik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKLQotICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KLSAgICBi
b29sIHJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0Jik7Ci0K
LSAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVu
dWF0aW9uLgotICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKLQotICAgIC8vIE5vdGlmaWVz
IGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0
bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgotICAgIC8vIFRoaXMgaXMgaW4g
b3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxl
ciBzaGlmdC4KLSAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRp
b05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7Ci0gICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5p
bmdNb2RlbCB7IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgfTsKLQotICAgIEZsb2F0UG9pbnQzRCBt
X3Bvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOwotICAgIEZsb2F0UG9p
bnQzRCBtX3ZlbG9jaXR5OwotCi0gICAgLy8gR2FpbgotICAgIERpc3RhbmNlRWZmZWN0IG1fZGlz
dGFuY2VFZmZlY3Q7Ci0gICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7Ci0KLSAgICAvLyBIUlRG
IERhdGFiYXNlIGxvYWRlcgotICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRh
dGFiYXNlTG9hZGVyOwotCi0gICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07Ci0K
LSAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNo
IGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KLSAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTG9jazsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2FiM2Y0ZThiZWYxZjgwNWEwOWQyNWJk
ZjVhMTU5MmZhNWEyZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1QcmVmaXhlZFdl
YkF1ZGlvLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Vi
a2l0QXVkaW9QYW5uZXJOb2RlLAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgewotICAgIC8vIERlZmF1bHQgbW9kZWwgZm9y
IHN0ZXJlbyBpcyBIUlRGCi0gICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01v
ZGVsOwotCi0gICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQotICAg
IHVuZGVmaW5lZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVk
IGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKLSAgICB1bmRlZmluZWQgc2V0T3JpZW50
YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeik7Ci0gICAgdW5kZWZpbmVkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBm
bG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOwotCi0g
ICAgLy8gRGlzdGFuY2UgbW9kZWwKLSAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbDsKLQotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3Rh
bmNlOwotICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOwotICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7Ci0KLSAgICAvLyBE
aXJlY3Rpb25hbCBzb3VuZCBjb25lCi0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
Y29uZUlubmVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91
dGVyQW5nbGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2Fp
bjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZGM1M2M2ODBiMTY0MzMwYTA4MWZjMWE2Njg3YTc2NTliNmZiZTRmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoY29udGV4dCkpOwotICAgIH0KLQotICAgIEF1ZGlvUGFyYW0mIGxlZ2FjeVJlZHVjdGlvbigp
IHsgcmV0dXJuIG1fbGVnYWN5UmVkdWN0aW9uLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmIGNv
bnRleHQpCi0gICAgICAgIDogRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250ZXh0KQotICAgICAg
ICAsIG1fbGVnYWN5UmVkdWN0aW9uKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicmVkdWN0
aW9uIl9zLCAwLCAtMjAsIDAsIEF1dG9tYXRpb25SYXRlOjpLUmF0ZSkpCi0gICAgewotICAgICAg
ICBpbml0aWFsaXplRGVmYXVsdE5vZGVPcHRpb25zKDIsIENoYW5uZWxDb3VudE1vZGU6OkNsYW1w
ZWRNYXgsIENoYW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwotICAgIH0KLQotICAgIHZv
aWQgc2V0UmVkdWN0aW9uKGZsb2F0IHJlZHVjdGlvbikgZmluYWwKLSAgICB7Ci0gICAgICAgIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnNldFJlZHVjdGlvbihyZWR1Y3Rpb24pOwotICAgICAgICBt
X2xlZ2FjeVJlZHVjdGlvbi0+c2V0VmFsdWUocmVkdWN0aW9uKTsKLSAgICB9Ci0KLSAgICBSZWY8
QXVkaW9QYXJhbT4gbV9sZWdhY3lSZWR1Y3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNThjMDRlMWQzZmM3ZDZjM2JkYmIyYWYwOTc4NmJhYTI3MDExNDk2MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsCisrKyAvZGV2
L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdF
Ql9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVByZWZpeGVkV2ViQXVkaW8sCi0gICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJm
YWNlIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBBdWRpb05vZGUgewotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHRocmVzaG9sZDsgLy8gaW4gRGVjaWJlbHMKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBrbmVlOyAvLyBpbiBEZWNpYmVscwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIHJhdGlvOyAvLyB1bml0LWxlc3MKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBhdHRhY2s7IC8vIGluIFNlY29uZHMKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSByZWxlYXNlOyAvLyBpbiBTZWNvbmRzCi0gICAgW0lt
cGxlbWVudGVkQXM9bGVnYWN5UmVkdWN0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJh
bSByZWR1Y3Rpb247IC8vIGluIERlY2liZWxzCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNWYyMWRmNzliNDY1MWI0M2ExZjM3ZGEz
MWE5YjVhZGU4NTA4OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAi
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgZmxvYXQgc2FtcGxl
UmF0ZSwgUmVmPEF1ZGlvQnVmZmVyPiYmIHJlbmRlclRhcmdldCkKLSAgICA6IFdlYktpdEF1ZGlv
Q29udGV4dChkb2N1bWVudCwgc2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJUYXJnZXQpKQotewot
fQotCi1XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Ojp+V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCgpID0gZGVmYXVsdDsKLQotRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3Igd29ya2Vycy4KLSAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgaWYgKCFudW1iZXJPZkNo
YW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlz
U3VwcG9ydGVkU2FtcGxlUmF0ZShzYW1wbGVSYXRlKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFN5bnRheEVycm9yIH07Ci0gICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6
Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAg
ICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVy
cm9yIH07Ci0KLSAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHNhbXBsZVJhdGUs
IHJlbmRlclRhcmdldC5yZWxlYXNlTm9uTnVsbCgpKSk7Ci0gICAgYXVkaW9Db250ZXh0LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gYXVkaW9Db250ZXh0OwotfQotCi1jb25zdCBjaGFy
KiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQiOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMDcyMmQzZDM4Mjlm
NDk5ZGFjZWM4ZjhjY2FkODlhYjIzNWM4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVkaW9Db250ZXh0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOwotcHVibGljOgotICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB+V2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1l
bnQmLCBmbG9hdCBzYW1wbGVSYXRlLCBSZWY8QXVkaW9CdWZmZXI+JiYgcmVuZGVyVGFyZ2V0KTsK
LQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1
YWE2NDkyODhlMGFlN2FlOTUxMWUyOGMwZjkxNzVhYzhhNzIzN2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAg
IEVuYWJsZWRCeVNldHRpbmc9UHJlZml4ZWRXZWJBdWRpbywKLSAgICBJbnRlcmZhY2VOYW1lPXdl
YmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAg
RXhwb3NlZD1XaW5kb3cKLV0gaW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBX
ZWJLaXRBdWRpb0NvbnRleHQgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9zY2lsbGF0
b3JOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTg2NTUwYzIzYWJmMTU0
NjJlZDg3OGNiYzFkNDc5MTEzNmJlMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPc2Np
bGxhdG9yTm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgotI2luY2x1ZGUgIldl
YktpdEF1ZGlvQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktp
dE9zY2lsbGF0b3JOb2RlIGZpbmFsIDogcHVibGljIE9zY2lsbGF0b3JOb2RlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9zY2lsbGF0b3JOb2RlPj4gY3JlYXRl
KFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYktpdE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldFdlYktpdFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqIHdhdmUpCi0gICAgewotICAg
ICAgICBpZiAoIXdhdmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNldFBlcmlvZGlj
V2F2ZSgqd2F2ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYktpdE9zY2ls
bGF0b3JOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBPc2NpbGxh
dG9yTm9kZShjb250ZXh0KQotICAgIHsKLSAgICAgICAgc2V0VHlwZShPc2NpbGxhdG9yVHlwZTo6
U2luZSk7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRPc2NpbGxhdG9yTm9kZSI7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNlYjRhYjk5ODFiZTlkMDkwMDc0Y2YyMTQ5NTU2ZjlmYWZkYzAxYmQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRPc2NpbGxhdG9yTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAsIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBBY3RpdmVET01PYmplY3QsCi0g
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8m
UHJlZml4ZWRXZWJBdWRpbywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIFdlYktpdE9zY2lsbGF0b3JOb2RlIDogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKLSAgICBhdHRyaWJ1dGUgT3NjaWxsYXRvclR5cGUgdHlw
ZTsKLQotICAgIC8vIFBsYXliYWNrIHN0YXRlIGNvbnN0YW50cy4KLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBVTlNDSEVEVUxFRF9TVEFURSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U0NIRURVTEVEX1NUQVRFID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NU
QVRFID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7Ci0K
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZTsKLQot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCi0K
LSAgICBbSW1wbGVtZW50ZWRBcz1zZXRXZWJLaXRQZXJpb2RpY1dhdmVdIHVuZGVmaW5lZCBzZXRQ
ZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlPyB3YXZlKTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAKaW5kZXggNTBmMzQ0MjMyZGM4NjE1YzQyMmY5NGY5MmE5ZGM3YzExYWI0MGRjZS4uNzlkNzk4
YjZlNDZmZDhmMDdlYjk2NzgwNzdiNjUxODJiNjM0ZTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCIKIAorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oIgorI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmgKaW5k
ZXggNzk3YmUzYjY3NWI5ZjRjNTRiMDY3M2FiMjQwMThkNjA0ZDE4MTZjYS4uMWUzOTQzZTg3ZWMz
N2Y4ODlhMjVmNTI2MmFlNTIyOTEzMDI3N2M1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oCkBAIC0z
MSw2ICszMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVy
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyN2YyOTliNmJlMjE0MGI4NTgyZWU3M2Y0NzMzZWRjODQx
MmQ5Mjg0Li4wZTMwZTA5ZWMyMGVjNTZkZDQzNDE5MTdhYjQ0YzYyMDE1ZjVmOWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjgyLDkgKzI4Miw2IEBAIE1vZHVsZXMvd2ViYXVkaW8vU3RlcmVvUGFubmVy
Tm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJQcm9jZXNzb3IuY3BwCi1Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAK
LU1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAotTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmNwcAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0zNzc3LDE5ICszNzc0LDEyIEBAIEpTV2ViR1BVU3dhcENo
YWluLmNwcAogSlNXZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCi1KU1dlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKLUpTV2ViS2l0QXVkaW9Db250ZXh0LmNwcAotSlNXZWJLaXRBdWRpb0xpc3RlbmVyLmNwcAot
SlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCi1KU1dlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwCiBKU1dlYktpdE1lZGlhS2V5RXJyb3IuY3BwCiBKU1dlYktpdE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmNwcAogSlNXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmNwcAogSlNXZWJLaXRNZWRp
YUtleVNlc3Npb24uY3BwCiBKU1dlYktpdE1lZGlhS2V5cy5jcHAKIEpTV2ViS2l0TmFtZXNwYWNl
LmNwcAotSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAotSlNXZWJLaXRPc2NpbGxhdG9y
Tm9kZS5jcHAKIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpT
V2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYzM1OTE5
MDJiMTIwYmQzYWIwNjBiZDhjNWIxYjdmMmFiM2MxN2I5Li43ZTAzYzc5ZDAxZmYwMzAwZjg5ZTY4
YTk0ZDUzZjVlMzUzZTQ3MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTI1LDEzICsyNTI1LDEwIEBACiAJCTgzMEExQzdE
MjREQjc4OEIwMDJFQ0NBRCAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEExQzdDMjREQjc4
NzAwMDJFQ0NBRCAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU9wdGlvbnMuaCAqLzsgfTsKIAkJ
ODMwQTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZE
N0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMEQwQjY5MjRGNTdENjcwMDdF
RDEyMiAvKiBJSVJQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMEQwQjY2MjRGNTdENTAwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCAq
LzsgfTsKLQkJODMwRUVBQkEyNERCNkE2NDAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMEVFQUI3MjREQjZBNTIwMDlFRkJDRSAvKiBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNz
YWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAq
LzsgfTsKIAkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTFDMDAyMUZB
QTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8q
IEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICov
OyB9OwogCQk4MzE5OEZCRjI0QTE2MEREMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxOThGQkUyNEEx
NjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuaCAqLzsgfTsKLQkJODMxQjYxNzYyNDk5
QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovOyB9OwotCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdD
NzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2
IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5o
ICovOyB9OwogCQk4MzI2QkY4RTI0RDM1QzMzMDAxRjhBODUgLyogT3ZlclNhbXBsZVR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjZCRjg5MjRE
MzVDMjAwMDFGOEE4NSAvKiBPdmVyU2FtcGxlVHlwZS5oICovOyB9OwogCQk4MzI2QkY4RjI0RDM1
QzM5MDAxRjhBODUgLyogV2F2ZVNoYXBlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjZCRjhDMjREMzVDMjAwMDFGOEE4NSAvKiBXYXZl
U2hhcGVyT3B0aW9ucy5oICovOyB9OwpAQCAtMjU0NSw5ICsyNTQyLDcgQEAKIAkJODMzQkQ4MTgy
NTI0RDRGNTAwNkU3MkIzIC8qIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCRDgxNjI1MjRENEUzMDA2RTcy
QjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKIAkJODMzQkQ4MUQyNTI0RDUz
MDAwNkU3MkIzIC8qIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCRDgxOTI1MjRENTFCMDA2RTcyQjMgLyog
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJODMzQkQ4MUUyNTI0RDUzNDAwNkU3
MkIzIC8qIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCRDgxQjI1MjRENTFDMDA2RTcyQjMgLyogQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCAqLzsgfTsKLQkJODMzRDFDNzYyNEQ4RDU0RjAwRTgx
M0RGIC8qIFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzRDFDNzMyNEQ4RDUzMzAwRTgxM0RGIC8qIFdl
YktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oICovOyB9OwogCQk4MzQwN0ZDMTFFOEQ5QzE3MDBF
MDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2li
aWxpdHlDaGFuZ2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk4MzQzRDk4NDI0RDBERUU5MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRv
ck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NDNEOTgxMjREMERFQTkwMDlBQkQ0OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oICovOyB9Owog
CQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjVFQjAgLyogSlNTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURB
NUE1MUUwMEZGRDhENCAvKiBKU1Njcm9sbExvZ2ljYWxQb3NpdGlvbi5oICovOyB9OwogCQk4MzQ0
NzZFRjFEQTVCQzVFMDAyQjVFQzEgLyogSlNTY3JvbGxJbnRvVmlld09wdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURBNUE1MUUw
MEZGRDhFNSAvKiBKU1Njcm9sbEludG9WaWV3T3B0aW9ucy5oICovOyB9OwogCQk4MzQ0NzZFRjFE
QTVCQzVFMDAyQjZFQjAgLyogSlNTY3JvbGxCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOUIzMDExREE1QTUxRTAwRkZFOEQ0IC8qIEpT
U2Nyb2xsQmVoYXZpb3IuaCAqLzsgfTsKQEAgLTI1NjAsNyArMjU1NSw2IEBACiAJCTgzNTA1MUE0
MjRGNTczQzQwMDk5MTFENyAvKiBJSVJGaWx0ZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUwNTFBMjI0RjU3M0FGMDA5OTExRDcgLyogSUlS
RmlsdGVyTm9kZS5oICovOyB9OwogCQk4MzUwNTFBNTI0RjU3M0M4MDA5OTExRDcgLyogSUlSRmls
dGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODM1MDUxQTAyNEY1NzNBRTAwOTkxMUQ3IC8qIElJUkZpbHRlck9wdGlvbnMuaCAqLzsgfTsK
IAkJODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZC
RDJBQSAvKiBDU1NGb250RmFtaWx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJODM1NkY5N0YyNEQ5RjgxODAwNkMzRTQxIC8qIFdlYktpdEF1ZGlv
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNTZGOTdFMjREOUY4MDkwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmggKi87IH07
CiAJCTgzNThDQjcwMUM1MzI3NzUwMEUwQzJEOCAvKiBKU1hNTERvY3VtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Y1NzBBRDFDNTMyNjhFMDA3
RkQ2Q0IgLyogSlNYTUxEb2N1bWVudC5oICovOyB9OwogCQk4MzVEMkQ3ODFGNUYxRkJEMDAxNDFE
RUQgLyogSFRNTElucHV0RWxlbWVudEVudHJpZXNBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNUQyRDc1MUY1RjFGQjgwMDE0MURFRCAvKiBIVE1M
SW5wdXRFbGVtZW50RW50cmllc0FQSS5oICovOyB9OwogCQk4MzVEMzYzNzE5RkY2MTkzMDA0Qzkz
QUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzVEMzYzNjE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVy
Q3VzdG9tLmggKi87IH07CkBAIC0yNjEzLDcgKzI2MDcsNiBAQAogCQk4M0EyQUJEQjI0RDg2REUw
MDBFMkQ3M0QgLyogRGVsYXlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0EyQUJEODI0RDg2REM2MDBFMkQ3M0QgLyogRGVsYXlPcHRpb25z
LmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNBQ0QwMTMy
NTIyOUUxMDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0FDRDAxMDI1MjI5RTA0MDAwRDEyNEUgLyogV29y
a2xldE9wdGlvbnMuaCAqLzsgfTsKLQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktp
dEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICov
OyB9OwogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhC
QzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyog
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5
MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKQEAgLTEw
OTM4LDcgKzEwOTMxLDYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBG
NzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlv
Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRB
dWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwNUY5QTI0
RUIxRDI4MDA0ODBGOUIgLyogQXVkaW9UaW1lc3RhbXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9U
aW1lc3RhbXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDVGOUMyNEVCMUQy
OTAwNDgwRjlCIC8qIEF1ZGlvVGltZXN0YW1wLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1RpbWVzdGFtcC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAv
KiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA5NjIsOCArMTA5NTQsNiBAQAogCQk4MzBBMzZCQjFEQUM1RkE3
MDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMEQwQjY2MjRGNTdENTAwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSUlSUHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMEQwQjY4
MjRGNTdENTAwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SUlSUHJvY2Vzc29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMwRUVBQjcy
NERCNkE1MjAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MzBFRUFCOTI0REI2QTUyMDA5RUZCQ0UgLyogV2ViS2l0RHluYW1pY3ND
b21wcmVzc29yTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0RHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAv
KiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxl
TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDAx
RkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDk3MiwxMiArMTA5NjIsNiBAQAogCQk4MzE5OEZCRDI0QTE2MEMx
MDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QmFzZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTk4
RkJFMjRBMTYwQzEwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODMxQTNFQTgyNTNGNzhDMjAwNjc4MDRGIC8qIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1
ZGlvUGFubmVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzFCNjE3NTI0OTlBNTlE
MDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5
NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRv
ckJlYWNvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAwOCwxMSArMTA5
OTIsNyBAQAogCQk4MzNCRDgxQjI1MjRENTFDMDA2RTcyQjMgLyogQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQkQ4MUMy
NTI0RDUxRDAwNkU3MkIzIC8qIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQ0Y3MEYyMERCM0Y1RjAwMTQx
QkNDIC8qIEpTUGVyZm9ybWFuY2VPYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlcmZvcm1hbmNlT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzNEMUM3MzI0RDhENTMzMDBFODEzREYgLyogV2Vi
S2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzNEMUM3NTI0
RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzQwN0ZDMDFFOEQ5QzEyMDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzNDNEOTgxMjREMERFQTkwMDlBQkQ0
OSAvKiBXZWJLaXRPc2NpbGxhdG9yTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRPc2NpbGxh
dG9yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzQzRDk4MzI0RDBERUE5
MDA5QUJENDkgLyogV2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdE9zY2lsbGF0
b3JOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0OEJGQTkxQjg1NzI5
NTAwOTEyRjM2IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDbGFzc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzQ4QkZBQTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRBNkEzODI1MjY4NDQxMDA3NDdGNUQgLyogV29ya2xl
dFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2xldFBh
cmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDQzLDggKzExMDIz
LDYgQEAKIAkJODM1MEMzRTgxREE1OUI2MjAwMzU2NDQ2IC8qIFNjcm9sbFRvT3B0aW9ucy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2Nyb2xsVG9PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1p
bHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhbWlseS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzU2NTdDNjFFQ0FCMEU4MDBDREU3MkQgLyog
SlNET01NYXRyaXhJbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRE9NTWF0cml4SW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzNTZG
OTdDMjREOUY4MDgwMDZDM0U0MSAvKiBXZWJLaXRBdWRpb0xpc3RlbmVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJL
aXRBdWRpb0xpc3RlbmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM1NkY5
N0UyNEQ5RjgwOTAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViS2l0QXVkaW9MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzVBQTM4ODI1M0Y1NUJCMDA3NDY1NTQgLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1
QjY4MEUxRjU0OEJERTAwNzFGN0Y2IC8qIEpTRmlsZVN5c3RlbUVudHJ5Q3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3RlbUVudHJ5Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1RDJENzQxRjVGMUZCODAwMTQx
REVEIC8qIEhUTUxJbnB1dEVsZW1lbnQrRW50cmllc0FQSS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gIkhUTUxJbnB1dEVsZW1lbnQrRW50cmllc0FQSS5pZGwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTExNTUsOCArMTExMzMsNiBAQAogCQk4M0E4QUMzRTFGQUJCRkQxMDAy
MDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VydmljZVdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNBQ0QwMTAyNTIyOUUwNDAwMEQxMjRFIC8qIFdvcmtsZXRPcHRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtsZXRPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQUNEMDEyMjUyMjlFMDQwMDBEMTI0RSAvKiBXb3Jr
bGV0T3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2xldE9wdGlvbnMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEg
LyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYktpdEF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0Ix
QTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3Jr
ZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZB
MTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQg
LyogSlNOYXZpZ2F0b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNOYXZpZ2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzExNDMsMjMgKzMxMTE5LDYgQEAKIAkJCQk4MzI2QkY4RDI0RDM1QzIxMDAxRjhBODUgLyog
V2F2ZVNoYXBlck9wdGlvbnMuaWRsICovLAogCQkJCUZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAv
KiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5MDEzRDRDMENCMDBBRDk1
MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oICovLAotCQkJCTgzM0QxQzczMjREOEQ1MzMwMEU4
MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCAqLywKLQkJCQk4MzNEMUM3NTI0
RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCAqLywKLQkJ
CQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywK
LQkJCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8s
Ci0JCQkJODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwg
Ki8sCi0JCQkJODM1NkY5N0UyNEQ5RjgwOTAwNkMzRTQxIC8qIFdlYktpdEF1ZGlvTGlzdGVuZXIu
aCAqLywKLQkJCQk4MzU2Rjk3QzI0RDlGODA4MDA2QzNFNDEgLyogV2ViS2l0QXVkaW9MaXN0ZW5l
ci5pZGwgKi8sCi0JCQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5jcHAgKi8sCi0JCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1
ZGlvUGFubmVyTm9kZS5oICovLAotCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaWRsICovLAotCQkJCTgzMEVFQUI3MjREQjZBNTIwMDlFRkJDRSAv
KiBXZWJLaXREeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi8sCi0JCQkJODMwRUVBQjkyNERCNkE1
MjAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsICovLAotCQkJCTgz
MUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAq
LywKLQkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5oICovLAotCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbCAqLywKLQkJCQk4MzQzRDk4MTI0RDBERUE5MDA5QUJENDkgLyogV2Vi
S2l0T3NjaWxsYXRvck5vZGUuaCAqLywKLQkJCQk4MzQzRDk4MzI0RDBERUE5MDA5QUJENDkgLyog
V2ViS2l0T3NjaWxsYXRvck5vZGUuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJhdWRpbzsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zNTc5OSwyMCArMzU3NTgsMTMgQEAKIAkJ
CQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAw
N0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzNE
MUM3NjI0RDhENTRGMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4g
SGVhZGVycyAqLywKLQkJCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9D
b250ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzU2Rjk3RjI0RDlGODE4MDA2QzNFNDEgLyog
V2ViS2l0QXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODMxQjYxNzYyNDk5QTVC
QjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NURGRUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJODMwRUVBQkEyNERCNkE2NDAwOUVGQkNFIC8qIFdlYktpdER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIy
NiAvKiBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQw
NjIxNTExREE2M0E5RjAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEMDYyMTRFMURBNjNBOEUwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtl
eXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTUwMURBNjNBOTQwMEE3RkIyNiAvKiBXZWJL
aXRNZWRpYUtleVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNDhBNkQxMTkxQzlENjUw
MDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjI3MzIx
MjBDOUZBRkUwMERCMURFRiAvKiBXZWJLaXROU0ltYWdlRXh0cmFzLmggaW4gSGVhZGVycyAqLywK
LQkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODM0M0Q5ODQyNEQwREVFOTAwOUFCRDQ5IC8qIFdlYktp
dE9zY2lsbGF0b3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4
MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDk0QkQ3OTUwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMUMwRkYyNTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNp
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCBjMWJlM2RlODNiZmU2ODFmN2NiM2VkYzVkMzNhOWE2ZTIwNjY3NGY0Li41ZTRjOWMz
MzYwMDhmMmZiYTUzMTAzNTQ0NmQyZTUyYzU2NGE2ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC0yOTUsOCArMjk1LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykKLSNpbmNsdWRlICJCYXNlQXVkaW9Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViS2l0
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC00Mzg0LDE3ICs0MzgzLDEwIEBA
IGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50KSBjb25zdAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCi12b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rp
b25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiYgY29udGV4dFZhcmlhbnQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5n
KQordm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQogewotICAgIFJlZlB0
cjxBdWRpb0NvbnRleHQ+IGNvbnRleHQ7Ci0gICAgc3dpdGNoT24oY29udGV4dFZhcmlhbnQsIFsm
XShSZWZQdHI8QXVkaW9Db250ZXh0PiBlbnRyeSkgewotICAgICAgICBjb250ZXh0ID0gZW50cnk7
Ci0gICAgfSwgWyZdKFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+IGVudHJ5KSB7Ci0gICAgICAg
IGNvbnRleHQgPSBlbnRyeTsKLSAgICB9KTsKLQotICAgIGF1dG8gcmVzdHJpY3Rpb25zID0gY29u
dGV4dC0+YmVoYXZpb3JSZXN0cmljdGlvbnMoKTsKLSAgICBjb250ZXh0LT5yZW1vdmVCZWhhdmlv
clJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CisgICAgYXV0byByZXN0cmljdGlvbnMgPSBjb250
ZXh0LmJlaGF2aW9yUmVzdHJpY3Rpb25zKCk7CisgICAgY29udGV4dC5yZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiAKICAgICByZXN0cmljdGlvbnMgPSBBdWRpb0NvbnRl
eHQ6Ok5vUmVzdHJpY3Rpb25zOwogCkBAIC00NDA2LDcgKzQzOTgsNyBAQCB2b2lkIEludGVybmFs
czo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlv
Q29udGV4dD4sCiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0
cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudGZvcmF1ZGlvc3RhcnQiKSkKICAgICAg
ICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZv
ckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKICAgICB9Ci0gICAgY29udGV4dC0+YWRkQmVoYXZpb3JS
ZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOworICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihyZXN0cmljdGlvbnMpOwogfQogCiB2b2lkIEludGVybmFsczo6dXNlTW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzM2QwM2Ni
MTIxZTQxMjU3Y2I1YTk4NjhkOTQyZWU4YjAwYmNlNzU1Li5hY2Y3NjZjMmI5MjcwN2EyNzMyYjk3
YmZlMmEzYmM2NTNmZGMyOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEx
MCw3ICsxMTAsNiBAQCBjbGFzcyBVbnN1c3BlbmRhYmxlQWN0aXZlRE9NT2JqZWN0OwogY2xhc3Mg
Vm9pZENhbGxiYWNrOwogY2xhc3MgV2ViQW5pbWF0aW9uOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OwotY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0OwogY2xhc3MgV2luZG93UHJveHk7CiBj
bGFzcyBYTUxIdHRwUmVxdWVzdDsKIApAQCAtNzE0LDcgKzcxMyw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3Ry
aWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0
QXVkaW9Db250ZXh0Pj4mLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZyk7CisgICAgdm9p
ZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0JiwgU3RyaW5nVmlldyBy
ZXN0cmljdGlvbnNTdHJpbmcpOwogICAgIHZvaWQgdXNlTW9ja0F1ZGlvRGVzdGluYXRpb25Db2Nv
YSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxM2Y1
ZTBmNDg0NjliOTFhYzhmYTc0ZTk0OGE2YTgzYjZiMjE2MGRkLi4wZTAxNGI4MGYyNzNlY2Q4NTAz
MGFkZDg1ODE2ZGJmZWFiMzY5MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CkBAIC03MzcsNyArNzM3LDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPXSB1bmRlZmluZWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRp
YVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10g
RE9NU3RyaW5nIG1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlKTsK
ICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmlj
dGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsK
LSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0QXVkaW9Db250ZXh0UmVz
dHJpY3Rpb25zKChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0LCBE
T01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRl
ZmluZWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBE
T01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5l
ZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVu
cmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDApOwogICAgIFtDb25kaXRpb25hbD1WSURFT10g
dW5kZWZpbmVkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbGVhbiBzaG91bGRQYXVzZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggMmFiZDZjNTFjMmE2ZjVhMjc2
MTI0ZjI5ZGM3ZmNkNWMzMGQwOGVkZC4uYzE5YjNmOWVkNTVhOWE0ZTM1MmNiZDgxYTkzNjRjYzlm
Y2RiYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU1MzQsNyArNTUz
NCw2IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0
dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKHRydWUpOwotICAgIHNldHRpbmdzLnNldFByZWZpeGVk
V2ViQXVkaW9FbmFibGVkKGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQogCiAj
aWYgRU5BQkxFKFdFQkdMKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>