<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>1822</bug_id>
          
          <creation_ts>2011-12-11 12:34:27 +0000</creation_ts>
          <short_desc>tmp/sysroots/x86_64-linux/usr/bin/tar: Text file busy</short_desc>
          <delta_ts>2011-12-12 15:22:47 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>Meta-yocto</product>
          <component>meta-yocto</component>
          <version>1.1</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>1774</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Undecided</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew McClintock">msm-oss</reporter>
          <assigned_to name="Richard Purdie">richard.purdie</assigned_to>
          <cc>msm-oss</cc>
    
    <cc>poky.bs.watcher</cc>
    
    <cc>poky.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>---</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>17560</commentid>
    <comment_count>0</comment_count>
      <attachid>291</attachid>
    <who name="Matthew McClintock">msm-oss</who>
    <bug_when>2011-12-11 12:34:27 +0000</bug_when>
    <thetext>Created attachment 291
fulle build log

Should pseudo-native:do_populate_sysroot depend on tar-native:do_populate_sysroot?

ERROR: Error executing a python function in /local/jenkins/yocto/cache-test/p1020rdb/meta/recipes-devtools/pseudo/pseudo_1.1.1.bb:
CalledProcessError: Command &apos;tar -cf - -C /local/jenkins/yocto/cache-test/p1020rdb/build_p1020rdb_release/tmp/work/x86_64-linux/pseudo-native-1.1.1-r2/sysroot-destdir///local/jenkins/yocto/cache-test/p1020rdb/build_p1020rdb_release/tmp/sysroots/x86_64-linux -ps . | tar -xf - -C /local/jenkins/yocto/cache-test/p1020rdb/build_p1020rdb_release/tmp/sysroots/x86_64-linux&apos; returned non-zero exit status 126 with output /bin/sh: /local/jenkins/yocto/cache-test/p1020rdb/build_p1020rdb_release/tmp/sysroots/x86_64-linux/usr/bin/tar: Text file busy
/bin/sh: /local/jenkins/yocto/cache-test/p1020rdb/build_p1020rdb_release/tmp/sysroots/x86_64-linux/usr/bin/tar: Text file busy


ERROR: The stack trace of python calls that resulted in this exception/failure was:
ERROR:   File &quot;do_populate_sysroot_setscene&quot;, line 6, in &lt;module&gt;
ERROR: 
ERROR:   File &quot;do_populate_sysroot_setscene&quot;, line 3, in do_populate_sysroot_setscene
ERROR: 
ERROR:   File &quot;sstate.bbclass&quot;, line 3, in sstate_setscene
ERROR: 
ERROR:   File &quot;sstate.bbclass&quot;, line 47, in sstate_installpkg
ERROR: 
ERROR:   File &quot;sstate.bbclass&quot;, line 19, in sstate_install
ERROR: 
ERROR:   File &quot;/local/jenkins/yocto/cache-test/p1020rdb/meta/lib/oe/path.py&quot;, line 59, in copytree
ERROR:     check_output(cmd, shell=True, stderr=subprocess.STDOUT)
ERROR: 
ERROR:   File &quot;/local/jenkins/yocto/cache-test/p1020rdb/meta/lib/oe/path.py&quot;, line 121, in check_output
ERROR:     raise CalledProcessError(retcode, cmd, output=output)
ERROR: 
ERROR: The code that was being executed was:
ERROR:      0002:def do_populate_sysroot_setscene(d):
ERROR:      0003:	sstate_setscene(d)
ERROR:      0004:
ERROR:      0005:
ERROR:  *** 0006:do_populate_sysroot_setscene(d)
ERROR:      0007:
ERROR: (file: &apos;do_populate_sysroot_setscene&apos;, lineno: 6, function: &lt;module&gt;)
ERROR:      0001:
ERROR:      0002:def do_populate_sysroot_setscene(d):
ERROR:  *** 0003:	sstate_setscene(d)
ERROR:      0004:
ERROR:      0005:
ERROR:      0006:do_populate_sysroot_setscene(d)
ERROR:      0007:
ERROR: (file: &apos;do_populate_sysroot_setscene&apos;, lineno: 3, function: do_populate_sysroot_setscene)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17575</commentid>
    <comment_count>1</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2011-12-12 13:54:09 +0000</bug_when>
    <thetext>Is this not fundamentally the same problem as 1774?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17576</commentid>
    <comment_count>2</comment_count>
    <who name="Matthew McClintock">msm-oss</who>
    <bug_when>2011-12-12 15:22:47 +0000</bug_when>
    <thetext>(In reply to comment #1)
&gt; Is this not fundamentally the same problem as 1774?

Seems so, I&apos;ll mark as a duplicate.

*** This bug has been marked as a duplicate of bug 1774 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>291</attachid>
            <date>2011-12-11 12:34:27 +0000</date>
            <delta_ts>2011-12-11 12:34:27 +0000</delta_ts>
            <desc>fulle build log</desc>
            <filename>consoleText</filename>
            <type>application/octet-stream</type>
            <size>388921</size>
            <attacher name="Matthew McClintock">msm-oss</attacher>
            
              <data encoding="base64">U3RhcnRlZCBieSB1cHN0cmVhbSBwcm9qZWN0ICJ5b2N0by1jYWNoZS10ZXN0IiBidWlsZCBudW1i
ZXIgMTc3CkJ1aWxkaW5nIHJlbW90ZWx5IG9uIHVidW50dTEwMDQtNjRiCltwMTAyMHJkYl0gJCAv
YmluL3NoIC14ZSAvdG1wL2h1ZHNvbjMyMTAzMDMwMTcyNDMxMTQ5Mi5zaAorIGxvY2tmaWxlIC9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi5sb2NrCltwMTAyMHJkYl0gJCAvYmluL3NoIC14
ZSAvdG1wL2h1ZHNvbjc0ODYyNzczNDYxMDY2MzkzNTYuc2gKKyBjZCAvb3B0L3lvY3RvL2NhY2hl
LXRlc3QKKyAnWycgLWUgcDEwMjByZGIgJ10nCisgY2QgcDEwMjByZGIKKyBnaXQgZmV0Y2ggLWYg
b3JpZ2luCisgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vZWRpc29uCkhFQUQgaXMgbm93IGF0IDYz
MDgzYTcgRlNMT05MWTogYWRkIHNjcmlwdHMgdG8gcHJlcGFyZSBob3N0IHBhY2thZ2VzIGZvciBy
aGVsL2NlbnRvcy9mZWRvcmEvdWJ1bnR1L3N1c2UKKyBnaXQgc2hvdy1yZWYKNjMwODNhNzE2Nzk3
ZTE2YmM5YmMyNjA0ODJiMWM3Mjc2ODk1MjZhNCByZWZzL2hlYWRzL21hc3RlcgozM2Y3M2MxMjM1
MDk3NGFmZWRiYmI3MmNhNGFhMDliY2Q4OTk1YWIxIHJlZnMvcmVtb3Rlcy9vcmlnaW4vSEVBRAo2
MzA4M2E3MTY3OTdlMTZiYzliYzI2MDQ4MmIxYzcyNzY4OTUyNmE0IHJlZnMvcmVtb3Rlcy9vcmln
aW4vZWRpc29uCjMzZjczYzEyMzUwOTc0YWZlZGJiYjcyY2E0YWEwOWJjZDg5OTVhYjEgcmVmcy9y
ZW1vdGVzL29yaWdpbi9tYXN0ZXIKNjY0YzY5Y2M4YThlZDI0MzcwZWEzMTUwOGY0MmI4ZWMwY2Ex
MDFhMyByZWZzL3RhZ3MvMS4xX00xLmZpbmFsCjE0N2M0MzcyODcxNmE5OGFmZjdmN2U2ZGQxYWEy
ODU2YTkxOTM1NDkgcmVmcy90YWdzLzEuMV9NMS5yYzEKNGU3ZDRkZGZjZmQ0NTUxOGMxYTZiYjg0
MWZhN2Y2YmFjN2MwYzA3YyByZWZzL3RhZ3MvMS4xX00xLnJjMgo3M2ZhNWEwNjI5MDBhNTZmZmE1
NThjYmIwMTI5Mzg0OTg4MjQyOGU1IHJlZnMvdGFncy8xLjFfTTIuZmluYWwKZDE4OTdjYmFmMDgw
OTFiYzk1OWIyZGU4MWU4ZTQ1ODYzOTRkZGEyYiByZWZzL3RhZ3MvMS4xX00yLnJjMQowMWE5Njg1
MmYzZTllNDEzYjgyY2ZkZDY3NjMzMWFiMTU1ZGEzNTc4IHJlZnMvdGFncy8xLjFfTTIucmMyCmQw
MWY4NGEwOTE3OTY2M2QxYWU5ZmNlMGZhYmRkOTJhNzI0Nzc5MGUgcmVmcy90YWdzLzEuMV9NMi5y
YzMKZTMwYzBlNzU4YzE1ZWUwNzljMmU0ODA4ODU3OGE5ZDg5NjFiNWM5MCByZWZzL3RhZ3MvMS4x
X00zLmZpbmFsCjUyOTBkNzRlZjliZThhM2Q3NmVkYmVhNWM5Yzg3MDRlMjQ2ZTkzMDIgcmVmcy90
YWdzLzEuMV9NMy5yYzIKM2I4ZWFkYTZjYzJlNGQwM2MxNDI0ZDllNjg2MjI2ZWI2NzQ5M2E5ZiBy
ZWZzL3RhZ3MvMS4xX00zLnJjMwo0MmMxOWQzN2ZmODhmOGE0MDFkMWYyZjc2YWQ0MDBjZTg0Mjcw
NTkxIHJlZnMvdGFncy8xLjFfTTQucmMyKwo5ZjJkZjJmZjkzMzVjMzc0NTZhODJmYjViMmQ3NjY2
NDk2ZmJmMDQwIHJlZnMvdGFncy8xLjFfTTQucmMzCjYzOTc4YWY5MWUzZmE5NDYzNjY1NTkzM2Y4
MmQwMWU1ZWJmZjVkNjUgcmVmcy90YWdzLzEuMV9NNC5yYzQKZTA4ZGM1YWFhZWJhNjFlMzMyY2Fh
YjRhM2RmNTc1MGRmNmI0OWFjMSByZWZzL3RhZ3MvYmVybmFyZC0xLjByYzEKOGI2NDE2ZGIxZTA0
YWY4M2VjZGY1NzUyMjI0MGFjODU5ZDVkODAzMSByZWZzL3RhZ3MvYmVybmFyZC01LjAKMGY2ZWZl
OTk0ODM2YzY1MzkxNmY3MDZjZThjZjE3ZGJmYmRiNDI0ZSByZWZzL3RhZ3MvYmVybmFyZC01LjAt
YWxwaGEKMDA4NTBmYjYyZWVlZjVjMzNjMTFjNjdmZTA1ZjY4ZjY1ODI0ZTk0MyByZWZzL3RhZ3Mv
YmVybmFyZC01LjAuMQplMDhkYzVhYWFlYmE2MWUzMzJjYWFiNGEzZGY1NzUwZGY2YjQ5YWMxIHJl
ZnMvdGFncy9iZXJuYXJkLTUuMHJjMQpmNDMyZjFiMDEwNjljMjA4M2Q0MjBhMmFjY2RlMTY5ZjJk
YWZkZmFiIHJlZnMvdGFncy9iZXJuYXJkLTUuMHJjMgo3NGFmNWVlNmE4NDMxMGI5MDI5ZjUwZGFh
NGQxY2Q0YTdlNDkzYjBlIHJlZnMvdGFncy9ibGlua3ktMy4wCmQ2ZjM2NmYzNThkOThjMzE0YWQ1
YWY4YWU0ZDU4MGY1MzYzMjIzZDQgcmVmcy90YWdzL2NseWRlLTIuMApiNTFjNzE5YzI1MjZhNzNl
ZjMzYjE3YWY5NjBmNzE0NmVjOWY1NTUzIHJlZnMvdGFncy9lZGlzb24tNi4wCjZlZDAwOWU4ZWZl
NjNkZmQ0NDczODQ1OGI5NmQ5ZTc2ZDdkNWZiYzEgcmVmcy90YWdzL2hpc3RvcnktMjAxMTA5MTQK
Y2ZhZTIzN2QwMDVlNjEwZTRmMmFlNzIxMTY3NTk4NzE5MTQyNzFmMyByZWZzL3RhZ3MvaGlzdG9y
eS0yMDExMDkyMwpjZWFmNWUzNTdiM2VjZGVhMGY0NmM0YjdhNDRlZWI1MmZiYmIzNDkxIHJlZnMv
dGFncy9oaXN0b3J5LTIwMTEwOTI1CjYyYjEyZTU3NzM3OTU2NmE4ZTM1YzIzMzY3NzEwNDBmMmY1
MTJhZWMgcmVmcy90YWdzL2hpc3RvcnktMjAxMTA5MjcKNzE5Njc4MDJiZWU0M2U1NzcxYjkxNGZh
M2RlYjBlMGQzYjVhYzFiYiByZWZzL3RhZ3MvaGlzdG9yeS0yMDExMTAxMQozNDIxZTg3ODk1Yzcx
YzgyYjU4NjBhNmI2OTEwYTUzNDliNzVmNWY3IHJlZnMvdGFncy9pbmt5LTEuMAo3OGMwYTA0N2Ew
N2RlMjcyNzQ2OGM1NTYzNzA1MGViNzAzOWFjYmQyIHJlZnMvdGFncy9sYXZlcm5lLTQuMAo0NTUy
NmY1ZWNmZDdmZWMyMmNlODAyMmI0NmMzMTFlNzdlZTBmYTlmIHJlZnMvdGFncy9sYXZlcm5lLTQu
MC4xCmUwOGRjNWFhYWViYTYxZTMzMmNhYWI0YTNkZjU3NTBkZjZiNDlhYzEgcmVmcy90YWdzL200
CjMzNmMxZGM4MGYyMWJkMzVmZTNhNWE1N2QzOTdlMmY0YWZjYjU2ZWEgcmVmcy90YWdzL3Bpbmt5
LTMuMQowMDdhMTY0NTY2NzFlNGFhZWQzNzhhZDI0NzdlMjEwZmQxZGRkMGM2IHJlZnMvdGFncy9w
aW5reS0zLjEuMQoxMTIzNTdhNzZjZjhkZmY3MGUwOTI1MDQ3YTMxMWVjZmViMDE4NzI3IHJlZnMv
dGFncy9waW5reS0zLjEuMgplYzhhNmI3OTE2MjM1MWNjNmFmY2JlNzI3ZjA0OWFlY2FjMGEwMjc5
IHJlZnMvdGFncy9wdXJwbGUtMy4yCjRhOGE5ODIxNjhmNjg4YTkzMmNmMjBkNGU4NmY2MmY5NDE1
ZjcwN2UgcmVmcy90YWdzL3B1cnBsZS0zLjIuMQorIG1rZGlyIC1wIC9vcHQveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi1kZWwtZnNsLWltYWdlLXNpbXBsZQorIHJtIC1yZiAvb3B0L3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGItZGVsLWZzbC1pbWFnZS1zaW1wbGUKKyBtdiAvb3B0L3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZSAvb3B0L3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGItZGVsLWZzbC1pbWFnZS1zaW1wbGUKKyB0cnVlCisgc3VkbyBnaXQgY2xl
YW4gLXF4ZmQKKyBybSAtcmYgY2QgL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiLWRlbC1m
c2wtaW1hZ2Utc2ltcGxlCisgY2QgL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiCisgJ1sn
IC1lIG1ldGEtZnNsLXBwYyAnXScKKyBjZCBtZXRhLWZzbC1wcGMKKyBnaXQgZmV0Y2ggLWYgb3Jp
Z2luCisgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vZWRpc29uCkhFQUQgaXMgbm93IGF0IGM4ZjNj
MmIgdXBkYXRlIHRoZSBrZXJuZWwgZGVmY29uZmlnIGZvciBub24tc21wIHRhcmdldHMKKyBnaXQg
c2hvdy1yZWYKYzhmM2MyYmU1OTBjNDc0MDVmMzdjMWZlMDg0OGVjYTdhZjVkYjQ0ZCByZWZzL2hl
YWRzL21hc3RlcgpiZGRjYWU5ZmJlMzc1ZDFkNGZjNTRiMzZjMjdkNDExMjQ4NzZhZmM1IHJlZnMv
cmVtb3Rlcy9vcmlnaW4vSEVBRApjOGYzYzJiZTU5MGM0NzQwNWYzN2MxZmUwODQ4ZWNhN2FmNWRi
NDRkIHJlZnMvcmVtb3Rlcy9vcmlnaW4vZWRpc29uCmJkZGNhZTlmYmUzNzVkMWQ0ZmM1NGIzNmMy
N2Q0MTEyNDg3NmFmYzUgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKZDc4YjMzNmVkYzY4YzNj
YjcxMGRmNTkzNzMwNWM4YTNmODE3YmJhNSByZWZzL3JlbW90ZXMvb3JpZ2luL21ldGEtY29tcGls
ZXIKKyBjZCAuLgorIGNkIC9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYgorICdbJyAtZSBt
ZXRhLWZzbC1wcGMtcHJpdmF0ZSAnXScKKyBjZCBtZXRhLWZzbC1wcGMtcHJpdmF0ZQorIGdpdCBm
ZXRjaCAtZiBvcmlnaW4KKyBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9lZGlzb24KSEVBRCBpcyBu
b3cgYXQgNzY5MDFmOCBhcHB0cms6IGZpeCBpbmNsdWRlcyBmb3IgbGliZWxmCisgZ2l0IHNob3ct
cmVmCjc2OTAxZjg5NmE5Y2VjMzczMzVkYWQzZGQ5ZDcyYTNiNzBjOTFjOWYgcmVmcy9oZWFkcy9t
YXN0ZXIKNjhlNTBkZjRjNTEwYzRhZTdhZDk5MzA3MTViMGNkM2RlZTMzMTA4OCByZWZzL3JlbW90
ZXMvb3JpZ2luL0hFQUQKNzY5MDFmODk2YTljZWMzNzMzNWRhZDNkZDlkNzJhM2I3MGM5MWM5ZiBy
ZWZzL3JlbW90ZXMvb3JpZ2luL2VkaXNvbgo2OGU1MGRmNGM1MTBjNGFlN2FkOTkzMDcxNWIwY2Qz
ZGVlMzMxMDg4IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCisgY2QgLi4KUHJvY2VzcyBsZWFr
ZWQgZmlsZSBkZXNjcmlwdG9ycy4gU2VlIGh0dHA6Ly93aWtpLmplbmtpbnMtY2kub3JnL2Rpc3Bs
YXkvSkVOS0lOUy9TcGF3bmluZytwcm9jZXNzZXMrZnJvbStidWlsZCBmb3IgbW9yZSBpbmZvcm1h
dGlvbgpbcDEwMjByZGJdICQgL2Jpbi9zaCAteGUgL3RtcC9odWRzb240NzA1MDcwNjExNTI0MzYx
ODQ3LnNoCisgc291cmNlIC9ob21lL2plbmtpbnMvcHJveHlfYXV0aAorKyBleHBvcnQgU09DS1M1
X1BBU1NXRD13b2wybGF0ZGlvCisrIFNPQ0tTNV9QQVNTV0Q9d29sMmxhdGRpbworKyBleHBvcnQg
U09DS1M1X1VTRVI9amVua2lucworKyBTT0NLUzVfVVNFUj1qZW5raW5zCisrIFBST1hZX1NSVj13
d3dnYXRlMC5mcmVlc2NhbGUubmV0CisrIFBST1hZX1BPUlQ9MTA4MAorKyBleHBvcnQgR0lUX1BS
T1hZX0NPTU1BTkQ9L2hvbWUvbWF0dHNtL2Jpbi9naXQtcHJveHkKKysgR0lUX1BST1hZX0NPTU1B
TkQ9L2hvbWUvbWF0dHNtL2Jpbi9naXQtcHJveHkKKysgZXhwb3J0IENWU19QUk9YWV9IT1NUPXd3
d2dhdGUwLmZyZWVzY2FsZS5uZXQKKysgQ1ZTX1BST1hZX0hPU1Q9d3d3Z2F0ZTAuZnJlZXNjYWxl
Lm5ldAorKyBleHBvcnQgQ1ZTX1BST1hZX1BPUlQ9MTA4MAorKyBDVlNfUFJPWFlfUE9SVD0xMDgw
CisgZXhwb3J0IFBBVEg9L29wdC9weXRob24yLjYvYmluLzovdXNyL2xvY2FsL3NiaW46L3Vzci9s
b2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lcworIFBBVEg9
L29wdC9weXRob24yLjYvYmluLzovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9z
YmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lcworIGNkIC9vcHQveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYgorIHNvdXJjZSAuL2ZzbC1zZXR1cC1wb2t5IHAxMDIwcmRiIDE2IDE2Cisr
ICdbJyAteiAnJyAnXScKKysgJ1snIHgvdG1wL2h1ZHNvbjQ3MDUwNzA2MTE1MjQzNjE4NDcuc2gg
PSB4Li9mc2wtc2V0dXAtcG9reSAnXScKKysgQ1VSX0RJUj0vb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIKKysrIGRpcm5hbWUgLi9mc2wtc2V0dXAtcG9reQorKyBQT0tZX0RJUj0vb3B0L3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvLgorKyBKT0JTPTIKKysgVEhSRUFEUz0yCisrICdbJyAt
ZSAvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjICddJworKyBNRVRB
X0ZTTF9QUENfTEFZRVJfUEFUSD0vb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1m
c2wtcHBjCisrIEJPQVJEPXAxMDIwcmRiCisrICdbJyBwMTAyMHJkYiA9PSAtLWhlbHAgJ10nCisr
ICdbJyBwMTAyMHJkYiA9PSAtaCAnXScKKysgJ1snIDMgPT0gMCAnXScKKysgJ1snIC1uIDE2ICdd
JworKyBbWyAxNiA9fiBeWzAtOV0rJCBdXQorKyBKT0JTPTE2CisrICdbJyAtbiAxNiAnXScKKysg
W1sgMTYgPX4gXlswLTldKyQgXV0KKysgVEhSRUFEUz0xNgorKyAnWycgJyEnIC1lIC9vcHQveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMgJ10nCisrKyBscyAtYWwgL29wdC95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy9jb25mL21hY2hpbmUKKysrIHdj
IC1sCisrKyBncmVwICdwMTAyMHJkYi5jb25mJCcKKysgVkFMSURfQk9BUkQ9MQorKyAnWycgMSA9
PSAwICddJworKyBlY2hvICdDb25maWd1cmluZyBmb3IgcDEwMjByZGIgYm9hcmQgdHlwZScKQ29u
ZmlndXJpbmcgZm9yIHAxMDIwcmRiIGJvYXJkIHR5cGUKKysgU0tJUF9DT05GSUc9MAorKyAnWycg
LWUgYnVpbGRfcDEwMjByZGJfcmVsZWFzZSAnXScKKysgc291cmNlIC9vcHQveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi8uL29lLWluaXQtYnVpbGQtZW52IGJ1aWxkX3AxMDIwcmRiX3JlbGVhc2UK
KysrICdbJyAteiAnJyAnXScKKysrICdbJyB4L3RtcC9odWRzb240NzA1MDcwNjExNTI0MzYxODQ3
LnNoID0geC4vb2UtaW5pdC1idWlsZC1lbnYgJ10nCisrKyAnWycgLW4gL29wdC95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiLy4vb2UtaW5pdC1idWlsZC1lbnYgJ10nCisrKysgZGlybmFtZSAvb3B0
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvLi9vZS1pbml0LWJ1aWxkLWVudgorKysgT0VST09U
PS9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi8uCisrKysgcmVhZGxpbmsgLWYgL29wdC95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiLy4KKysrIE9FUk9PVD0vbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiCisrKyBleHBvcnQgT0VST09UCisrKyAuIC9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5h
bAorKysrICdbJyAteiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiICdd
JworKysrICdbJyB4ID0geCAnXScKKysrKyAnWycgeGJ1aWxkX3AxMDIwcmRiX3JlbGVhc2UgPSB4
ICddJworKysrIEJESVI9YnVpbGRfcDEwMjByZGJfcmVsZWFzZQorKysrICdbJyBidWlsZF9wMTAy
MHJkYl9yZWxlYXNlID0gLyAnXScKKysrKysgZWNobyBidWlsZF9wMTAyMHJkYl9yZWxlYXNlCisr
KysrIHNlZCAtcmUgJ3N8LyskfHwnCisrKysgQkRJUj1idWlsZF9wMTAyMHJkYl9yZWxlYXNlCisr
KysrIHJlYWRsaW5rIC1mIGJ1aWxkX3AxMDIwcmRiX3JlbGVhc2UKKysrKyBCRElSPS9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZQor
KysrICdbJyAteiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UgJ10nCisrKysgZXhwciAvbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UgOiAnLy4qJworKysrIEJVSUxE
RElSPS9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZQorKysrIHVuc2V0IEJESVIKKysrKyBCSVRCQUtFRElSPS9sb2NhbC9qZW5raW5z
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYml0YmFrZS8KKysrKysgcmVhZGxpbmsgLWYgL2xv
Y2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9iaXRiYWtlLworKysrIEJJVEJB
S0VESVI9L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9iaXRiYWtlCisr
KysrIHJlYWRsaW5rIC1mIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZQorKysrIEJVSUxERElSPS9sb2NhbC9qZW5raW5zL3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZQorKysrIHRlc3QgLWQg
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9iaXRiYWtlCisrKysgUEFU
SD0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NjcmlwdHM6L2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9iaXRiYWtlL2Jpbi86L29wdC9weXRo
b24yLjYvYmluLzovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3Iv
YmluOi9zYmluOi9iaW46L3Vzci9nYW1lcworKysrIHVuc2V0IEJJVEJBS0VESVIKKysrKyBleHBv
cnQgQlVJTERESVIKKysrKyBleHBvcnQgUEFUSAorKysrIGV4cG9ydCAnQkJfRU5WX0VYVFJBV0hJ
VEU9TUFDSElORSBESVNUUk8gVENNT0RFIFRDTElCQyBodHRwX3Byb3h5IGZ0cF9wcm94eSBodHRw
c19wcm94eSBhbGxfcHJveHkgQUxMX1BST1hZIG5vX3Byb3h5IFNTSF9BR0VOVF9QSUQgU1NIX0FV
VEhfU09DSyBCQl9TUkNSRVZfUE9MSUNZIFNES01BQ0hJTkUgQkJfTlVNQkVSX1RIUkVBRFMgUEFS
QUxMRUxfTUFLRSBHSVRfUFJPWFlfQ09NTUFORCBHSVRfUFJPWFlfSUdOT1JFIFNPQ0tTNV9QQVNT
V0QgU09DS1M1X1VTRVInCisrKysgQkJfRU5WX0VYVFJBV0hJVEU9J01BQ0hJTkUgRElTVFJPIFRD
TU9ERSBUQ0xJQkMgaHR0cF9wcm94eSBmdHBfcHJveHkgaHR0cHNfcHJveHkgYWxsX3Byb3h5IEFM
TF9QUk9YWSBub19wcm94eSBTU0hfQUdFTlRfUElEIFNTSF9BVVRIX1NPQ0sgQkJfU1JDUkVWX1BP
TElDWSBTREtNQUNISU5FIEJCX05VTUJFUl9USFJFQURTIFBBUkFMTEVMX01BS0UgR0lUX1BST1hZ
X0NPTU1BTkQgR0lUX1BST1hZX0lHTk9SRSBTT0NLUzVfUEFTU1dEIFNPQ0tTNV9VU0VSJworKysg
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zY3JpcHRzL29lLXNldHVw
LWJ1aWxkZGlyCisrKyAnWycgLW4gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlICddJworKysgY2QgL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlCisrKyB1bnNldCBP
RVJPT1QKKysrIHVuc2V0IEJCUEFUSAorKyBjZCAvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIKKysgJ1snIHgwID09IHgxICddJworKyBlY2hvCisrIGVjaG8gJyMgTWFjaGluZSBTZWxlY3Rp
b24nCisrIGVjaG8gJ01BQ0hJTkUgPSBwMTAyMHJkYicKKysgZWNobworKyBlY2hvICcjIERpc3Ry
byBzZWxlY3Rpb24nCisrIGVjaG8gJ0RJU1RSTyA9ICJmc2wiJworKyBlY2hvCisrIGVjaG8gJyMg
UGFyYWxsZWxpc20gT3B0aW9ucycKKysgZWNobyAnQkJfTlVNQkVSX1RIUkVBRFMgPSAiMTYiJwor
KyBlY2hvICdQQVJBTExFTF9NQUtFID0gIi1qIDE2IicKKysgZWNobworKyBlY2hvICcjIFBhY2th
Z2VzIHNvdXJjZSBtaXJyb3JzJworKyBlY2hvICdJTkhFUklUICs9ICJvd24tbWlycm9ycyInCisr
IGVjaG8gJ1NPVVJDRV9NSVJST1JfVVJMID0gImh0dHA6Ly9saW51eC5mcmVlc2NhbGUubmV0L3lv
Y3RvL2Rvd25sb2Fkcy8iJworKyBlY2hvCisrIGVjaG8gJyMgU291cmNlIGRvd25sb2FkIGRpcicK
KysgZWNobyAnRExfRElSID0gIi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zb3VyY2Vz
IicKKysgZWNobworKyBlY2hvICcjIFRoZSBzc3RhdGUtY2FjaGUgbWlycm9ycy9kaXJlY3Rvcnkn
CisrIGVjaG8gJ1NTVEFURV9NSVJST1JTID0gImZpbGU6Ly8uKiBodHRwOi8vbGludXguZnJlZXNj
YWxlLm5ldC95b2N0by9zc3RhdGUtY2FjaGUvIicKKysgZWNobyAnU1NUQVRFX0RJUiA9ICIvb3B0
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc3N0YXRlLWNhY2hlIicKKysgZWNobworKyBlY2hv
ICcjIElnbm9yZSBwcm94eSBmb3IgZnJlZXNjYWxlLm5ldCcKKysgZWNobyAnR0lUX1BST1hZX0lH
Tk9SRSA9ICJmcmVlc2NhbGUubmV0IicKKysgZWNobworKyBlY2hvICcjIHdlIHdhbnQgdG8gZ2Vu
ZXJhdGUgZ2l0Y29uZmlnIGZpbGUgZm9yIG91ciBmZXRjaGVzJworKyBlY2hvICdHSVRfQ09SRV9D
T05GSUcgPSAiWWVzIicKKysgZWNobworKyBlY2hvICcjIHByb3h5IGNvbmZpZycKKysgZWNobyAn
U09DS1M1X1VTRVIgPSAibGludXhsYWJfc3ZjIicKKysgZWNobyAnU09DS1M1X1BBU1NXRCA9ICJs
bngxYUItU3J2IicKKysgZWNobyAnR0lUX1BST1hZX0lHTk9SRSA9ICJmcmVlc2NhbGUubmV0IicK
KysgZWNobyAnR0lUX1BST1hZX0NPTU1BTkQgPSAiL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiLy4vc2NyaXB0cy9naXQtcHJveHkiJworKyBlY2hvCisrIGVjaG8gJyMgdXNlIHh6IGluc3Rl
YWQgb2YgZ3ppcCBmb3Igc3N0YXRlLWNhY2hlJworKyBlY2hvICdTU1RBVEVfUEtHX1NVRkZJWCA/
PSAidHh6IicKKysgZWNobyAnU1NUQVRFX1BLR19UQVJaSVBQUk9HID89ICJ4eiInCisrIGVjaG8K
Kysgc2VkICcvICAiL2QnIGJ1aWxkX3AxMDIwcmRiX3JlbGVhc2UvY29uZi9iYmxheWVycy5jb25m
CisrIG12IGJ1aWxkX3AxMDIwcmRiX3JlbGVhc2UvY29uZi9iYmxheWVycy5jb25mfiBidWlsZF9w
MTAyMHJkYl9yZWxlYXNlL2NvbmYvYmJsYXllcnMuY29uZgorKyBlY2hvICcgIC9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMgXCcKKysgJ1snIC1lIC9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZSAnXScKKysgZWNobyAnICAv
b3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUgXCcKKysg
J1snIC1lIC9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1sb2NhbC1zZGsg
J10nCisrICdbJyAtZSAvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvLi4vbWV0YS1mc2wt
bG9jYWwtc2RrICddJworKyBlY2hvICcgICInCisrICdbJyB4cDEwMjByZGIgPT0geHA1MDIwZHMg
J10nCisrICdbJyB4cDEwMjByZGIgPT0geHA1MDIwZHMtNjRiICddJworKyBbWyB4ID1+IGxpdGUg
XV0KKysgZWNobyAnIyBhZGQgdWJvb3QgaW1hZ2UgdHlwZXMgdG8gaG9iJworKyBlY2hvICdJTkhF
UklUICs9ICJpbWFnZV90eXBlc191Ym9vdCInCisrIGVjaG8KKysgZWNobworKyBleGl0X21lc3Nh
Z2UKKysgZWNobyAnUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gc3RhcnQgYSBidWlsZDon
ClJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIHN0YXJ0IGEgYnVpbGQ6CisrKyBmaW5kIC9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMvIC1uYW1lICcqLWltYWdl
LSouYmInCisrIGZvciBpIGluICdgZmluZCAke01FVEFfRlNMX1BQQ19MQVlFUl9QQVRIfS8gLW5h
bWUgIiotaW1hZ2UtKi5iYiJgJworKyBpPWZzbC1pbWFnZS1sc2IuYmIKKysgaT1mc2wtaW1hZ2Ut
bHNiCisrIGVjaG8gJyAgICBiaXRiYWtlIGZzbC1pbWFnZS1sc2InCiAgICBiaXRiYWtlIGZzbC1p
bWFnZS1sc2IKKysgZm9yIGkgaW4gJ2BmaW5kICR7TUVUQV9GU0xfUFBDX0xBWUVSX1BBVEh9LyAt
bmFtZSAiKi1pbWFnZS0qLmJiImAnCisrIGk9ZnNsLWltYWdlLWxzYi1zZGsuYmIKKysgaT1mc2wt
aW1hZ2UtbHNiLXNkaworKyBlY2hvICcgICAgYml0YmFrZSBmc2wtaW1hZ2UtbHNiLXNkaycKICAg
IGJpdGJha2UgZnNsLWltYWdlLWxzYi1zZGsKKysgZm9yIGkgaW4gJ2BmaW5kICR7TUVUQV9GU0xf
UFBDX0xBWUVSX1BBVEh9LyAtbmFtZSAiKi1pbWFnZS0qLmJiImAnCisrIGk9ZnNsLWltYWdlLW1p
bmltYWwuYmIKKysgaT1mc2wtaW1hZ2UtbWluaW1hbAorKyBlY2hvICcgICAgYml0YmFrZSBmc2wt
aW1hZ2UtbWluaW1hbCcKICAgIGJpdGJha2UgZnNsLWltYWdlLW1pbmltYWwKKysgZWNobyAnVG8g
cmV0dXJuIHRvIHRoaXMgYnVpbGQgZW52aXJvbm1lbnQgbGF0ZXIgcGxlYXNlIHJ1bjonClRvIHJl
dHVybiB0byB0aGlzIGJ1aWxkIGVudmlyb25tZW50IGxhdGVyIHBsZWFzZSBydW46CisrIGVjaG8g
JyAgICBzb3VyY2UgLi9mc2wtc2V0dXAtcG9reSBwMTAyMHJkYicKICAgIHNvdXJjZSAuL2ZzbC1z
ZXR1cC1wb2t5IHAxMDIwcmRiCisrIGNkIC9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9i
dWlsZF9wMTAyMHJkYl9yZWxlYXNlCisgcm0gLWYgL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvYnVpbGQubG9nCisgZW52CkJVSUxEX1VSTD1odHRw
Oi8vYnVzeS5hbS5mcmVlc2NhbGUubmV0OjgwODAvam9iL3lvY3RvLWNhY2hlLXRlc3QvLi9idWls
ZF9zdGVwPWZzbC1pbWFnZS1zaW1wbGUsbGFiZWw9dWJ1bnR1MTAwNC02NGJpdCxtYWNoaW5lPXAx
MDIwcmRiLzE3Ny8KZ2l0X2NsZWFuPXRydWUKSFVEU09OX1NFUlZFUl9DT09LSUU9NTQxMTgwZDAy
MDliYTgyNjk3MGJiYzgwYjJmY2U3ZGEKU0hFTEw9L2Jpbi9iYXNoCm1hY2hpbmU9cDEwMjByZGIK
WERHX1NFU1NJT05fQ09PS0lFPWFkZDhlNzNkMGZlYjUzMDA1Y2NlYmI0MjRlMzg1YThhLTEzMjMx
ODM5NTMuNjg4OTI5LTMwMzcwMzc0NwpTU0hfQ0xJRU5UPTEwLjgyLjE5My4xNSA0MDc5MCAyMgpC
VUlMRF9UQUc9amVua2lucy1idWlsZF9zdGVwPWZzbC1pbWFnZS1zaW1wbGUsbGFiZWw9dWJ1bnR1
MTAwNC02NGJpdCxtYWNoaW5lPXAxMDIwcmRiLTE3NwpsYWJlbD11YnVudHUxMDA0LTY0Yml0Ck9M
RFBXRD0vb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIKV09SS1NQQUNFPS9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9idWlsZF9zdGVwL2ZzbC1pbWFnZS1zaW1wbGUvbGFiZWwvdWJ1bnR1MTAwNC02
NGJpdC9tYWNoaW5lL3AxMDIwcmRiCkpPQl9VUkw9aHR0cDovL2J1c3kuYW0uZnJlZXNjYWxlLm5l
dDo4MDgwL2pvYi95b2N0by1jYWNoZS10ZXN0Ly4vYnVpbGRfc3RlcD1mc2wtaW1hZ2Utc2ltcGxl
LGxhYmVsPXVidW50dTEwMDQtNjRiaXQsbWFjaGluZT1wMTAyMHJkYi8KYnJhbmNoPWVkaXNvbgpV
U0VSPWplbmtpbnMKU09DS1M1X1VTRVI9amVua2lucwpMRF9MSUJSQVJZX1BBVEg9L3Vzci9saWIv
anZtL2phdmEtNi1vcGVuamRrL2pyZS9saWIvYW1kNjQvc2VydmVyOi91c3IvbGliL2p2bS9qYXZh
LTYtb3Blbmpkay9qcmUvbGliL2FtZDY0Oi91c3IvbGliL2p2bS9qYXZhLTYtb3Blbmpkay9qcmUv
Li4vbGliL2FtZDY0CkNWU19QUk9YWV9IT1NUPXd3d2dhdGUwLmZyZWVzY2FsZS5uZXQKSkVOS0lO
U19IT01FPS9sb2NhbC9qZW5raW5zClBBVEg9L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9zY3JpcHRzOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYml0YmFrZS9iaW4vOi9vcHQvcHl0aG9uMi42L2Jpbi86L3Vzci9sb2NhbC9zYmluOi91c3Iv
bG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXMKTUFJTD0v
dmFyL21haWwvamVua2lucwpHSVRfUFJPWFlfQ09NTUFORD0vaG9tZS9tYXR0c20vYmluL2dpdC1w
cm94eQpQV0Q9L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UKSFVEU09OX1VSTD1odHRwOi8vYnVzeS5hbS5mcmVlc2NhbGUubmV0OjgwODAvCkxBTkc9
ZW5fVVMuVVRGLTgKSk9CX05BTUU9eW9jdG8tY2FjaGUtdGVzdC9idWlsZF9zdGVwPWZzbC1pbWFn
ZS1zaW1wbGUsbGFiZWw9dWJ1bnR1MTAwNC02NGJpdCxtYWNoaW5lPXAxMDIwcmRiCkpFTktJTlNf
VVJMPWh0dHA6Ly9idXN5LmFtLmZyZWVzY2FsZS5uZXQ6ODA4MC8KQlVJTERfSUQ9MjAxMS0xMi0x
MF8yMy0wNC00MwpCVUlMRERJUj0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UKSE9NRT0vaG9tZS9qZW5raW5zCmJ1aWxkX3N0ZXA9
ZnNsLWltYWdlLXNpbXBsZQpTSExWTD0yCkNWU19QUk9YWV9QT1JUPTEwODAKSkVOS0lOU19TRVJW
RVJfQ09PS0lFPTU0MTE4MGQwMjA5YmE4MjY5NzBiYmM4MGIyZmNlN2RhCkVYRUNVVE9SX05VTUJF
Uj0wCk5PREVfTEFCRUxTPXVidW50dTEwMDQtNjRiIHVidW50dTEwMDQtNjRiaXQKTE9HTkFNRT1q
ZW5raW5zClNPQ0tTNV9QQVNTV0Q9d29sMmxhdGRpbwpIVURTT05fSE9NRT0vbG9jYWwvamVua2lu
cwpTU0hfQ09OTkVDVElPTj0xMC44Mi4xOTMuMTUgNDA3OTAgMTAuODIuMTkzLjExIDIyCk5PREVf
TkFNRT11YnVudHUxMDA0LTY0YgpCVUlMRF9OVU1CRVI9MTc3CkhVRFNPTl9DT09LSUU9ZDAzODI3
OTAtNDk4Zi00NzNhLTgwYmYtMzlmODgyMGQzNzg2CkJCX0VOVl9FWFRSQVdISVRFPU1BQ0hJTkUg
RElTVFJPIFRDTU9ERSBUQ0xJQkMgaHR0cF9wcm94eSBmdHBfcHJveHkgaHR0cHNfcHJveHkgYWxs
X3Byb3h5IEFMTF9QUk9YWSBub19wcm94eSBTU0hfQUdFTlRfUElEIFNTSF9BVVRIX1NPQ0sgQkJf
U1JDUkVWX1BPTElDWSBTREtNQUNISU5FIEJCX05VTUJFUl9USFJFQURTIFBBUkFMTEVMX01BS0Ug
R0lUX1BST1hZX0NPTU1BTkQgR0lUX1BST1hZX0lHTk9SRSBTT0NLUzVfUEFTU1dEIFNPQ0tTNV9V
U0VSCmNwdT0xNgpfPS91c3IvYmluL2VudgorIGJpdGJha2UgLWUgZnNsLWltYWdlLXNpbXBsZQpQ
YXJzaW5nIHJlY2lwZXMuLi5kb25lLgpQYXJzaW5nIG9mIDg0MSAuYmIgZmlsZXMgY29tcGxldGUg
KDAgY2FjaGVkLCA4NDEgcGFyc2VkKS4gMTA5MSB0YXJnZXRzLCA0MiBza2lwcGVkLCAwIG1hc2tl
ZCwgMCBlcnJvcnMuCk5PVEU6IFJlc29sdmluZyBhbnkgbWlzc2luZyB0YXNrIHF1ZXVlIGRlcGVu
ZGVuY2llcwojIFNUQUdJTkdfSU5DRElSX05BVElWRT0ke1NUQUdJTkdfRElSX05BVElWRX0ke2lu
Y2x1ZGVkaXJfbmF0aXZlfQpTVEFHSU5HX0lOQ0RJUl9OQVRJVkU9Ii9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9v
dHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIgojIHByZWZpeD0vdXNyCmV4cG9ydCBwcmVmaXg9
Ii91c3IiCiMgRlJFRVNNQVJUUEhPTkVfR0lUPWdpdDovL2dpdC5mcmVlc21hcnRwaG9uZS5vcmcK
RlJFRVNNQVJUUEhPTkVfR0lUPSJnaXQ6Ly9naXQuZnJlZXNtYXJ0cGhvbmUub3JnIgojIElOSEVS
SVRfSU5TQU5FPWluc2FuZQpJTkhFUklUX0lOU0FORT0iaW5zYW5lIgojIENWU0RJUj0ke0NPX0RJ
Un0vY3ZzCkNWU0RJUj0iL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NvdXJjZXMvY3Zz
IgojIFNWTkRJUj0ke0NPX0RJUn0vc3ZuClNWTkRJUj0iL29wdC95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL3NvdXJjZXMvc3ZuIgojIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy1pbnRlcm1l
ZGlhdGU9JHtHQ0NWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtaW50ZXJtZWRp
YXRlPSI0LjYlIgojIGJpbmRpcl9jcm9zcz0vYmluCmJpbmRpcl9jcm9zcz0iL2JpbiIKIyBCQVNF
REVQRU5EUz0ke0BiYXNlX2RlcF9wcmVwZW5kKGQpfQojIFBSRUZFUlJFRF9QUk9WSURFUl9saWJn
Y2MtbmF0aXZlc2RrPWxpYmdjYy1uYXRpdmVzZGsKUFJFRkVSUkVEX1BST1ZJREVSX2xpYmdjYy1u
YXRpdmVzZGs9ImxpYmdjYy1uYXRpdmVzZGsiCiMgU1RSSVA9JHtIT1NUX1BSRUZJWH1zdHJpcApl
eHBvcnQgU1RSSVA9InBvd2VycGMtZnNsLWxpbnV4LWdudXNwZS1zdHJpcCIKIyBTVEFHSU5HX0RB
VEFESVI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7ZGF0YWRpcn0KU1RBR0lOR19EQVRBRElSPSIvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3Vzci9zaGFyZSIKIyB0YXJnZXRfZGF0YWRpcj0vdXNy
L3NoYXJlCnRhcmdldF9kYXRhZGlyPSIvdXNyL3NoYXJlIgojIElNQUdFX1JPT1RGUz0ke1dPUktE
SVJ9L3Jvb3RmcwpJTUFHRV9ST09URlM9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGlu
dXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyIKIyBGRVRDSENPTU1BTkRf
Y3ZzPS91c3IvYmluL2VudiBjdnMgJy1kJHtDVlNST09UfScgY28gJHtDVlNDT09QVFN9ICR7Q1ZT
TU9EVUxFfQpGRVRDSENPTU1BTkRfY3ZzPSIvdXNyL2Jpbi9lbnYgY3ZzICctZCR7Q1ZTUk9PVH0n
IGNvICR7Q1ZTQ09PUFRTfSAke0NWU01PRFVMRX0iCiMgU1RBR0lOR19TSVBESVI9JHtTVEFHSU5H
X0RBVEFESVJfTkFUSVZFfS9zaXAKZXhwb3J0IFNUQUdJTkdfU0lQRElSPSIvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5
c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUvc2lwIgojIGJhc2VfYmluZGlyX25hdGl2ZT0v
YmluCmJhc2VfYmluZGlyX25hdGl2ZT0iL2JpbiIKIyBsb2NhbHN0YXRlZGlyPSR7YmFzZV9wcmVm
aXh9L3ZhcgpleHBvcnQgbG9jYWxzdGF0ZWRpcj0iL3ZhciIKIyBTRUNUSU9OXyR7UE59LWRiZz1O
b25lCiMgREFURVRJTUU9JHtEQVRFfSR7VElNRX0KREFURVRJTUU9IjIwMTExMjExMDUxNjIwIgoj
IEJVSUxEX0NDPSR7Q0NBQ0hFfSR7QlVJTERfUFJFRklYfWdjYyAke0JVSUxEX0NDX0FSQ0h9CmV4
cG9ydCBCVUlMRF9DQz0iZ2NjIgojIElNQUdFX0ZFQVRVUkVTPSAke0VYVFJBX0lNQUdFX0ZFQVRV
UkVTfSAKSU1BR0VfRkVBVFVSRVM9ImRlYnVnLXR3ZWFrcyIKIyBTRVBQVUtVX0FVVE9CVUlMRD1O
b25lCiMgU0NSRUVOX1RFUk1DTURSVU49JHtTQ1JFRU5fVEVSTUNNRH0gJFNIRUxMQ01EUwpTQ1JF
RU5fVEVSTUNNRFJVTj0ic2NyZWVuIC1EIC1tIC10IFwiJFRFUk1XSU5ET1dUSVRMRVwiICRTSEVM
TENNRFMiCiMgRkFLRVJPT1RFTlY9UFNFVURPX1BSRUZJWD0ke1NUQUdJTkdfRElSX05BVElWRX0k
e3ByZWZpeF9uYXRpdmV9IFBTRVVET19MT0NBTFNUQVRFRElSPSR7UFNFVURPX0xPQ0FMU1RBVEVE
SVJ9IFBTRVVET19QQVNTV0Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFBTRVVET19OT1NZTUxJTktF
WFA9MSBQU0VVRE9fRElTQUJMRUQ9MApGQUtFUk9PVEVOVj0iUFNFVURPX1BSRUZJWD0vbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IgUFNFVURPX0xPQ0FMU1RBVEVESVI9L2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNl
L3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAt
cjAvcHNldWRvLyBQU0VVRE9fUEFTU1dEPS9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIgUFNF
VURPX05PU1lNTElOS0VYUD0xIFBTRVVET19ESVNBQkxFRD0wIgojIFBSRUZFUlJFRF9WRVJTSU9O
X2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmU9JHtFR0xJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lP
Tl9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlPSIyLjEzIgojIFNPTElCU0RFVl9kYXJ3aW44PS5keWxp
YgpTT0xJQlNERVZfZGFyd2luOD0iLmR5bGliIgojIFNPTElCU0RFVl9kYXJ3aW45PS5keWxpYgpT
T0xJQlNERVZfZGFyd2luOT0iLmR5bGliIgojIFVTRVI9amVua2lucwpleHBvcnQgVVNFUj0iamVu
a2lucyIKIyBjb3JlLWltYWdlX2RvX3Jvb3Rmcz0JaW1hZ2VfZG9fcm9vdGZzCiMKY29yZS1pbWFn
ZV9kb19yb290ZnM9ImltYWdlX2RvX3Jvb3RmcyIKIyBPRVNfQklUQkFLRV9DT05GPTEKT0VTX0JJ
VEJBS0VfQ09ORj0iMSIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVG
SVh9bGliYy1mb3ItZ2NjPU5vbmUKIyBJTUFHRV9UWVBFUz1qZmZzMiBjcmFtZnMgZXh0MiBleHQy
Lmd6IGV4dDIuYnoyIGV4dDMgZXh0My5neiBleHQyLmx6bWEgbGl2ZSBzcXVhc2hmcyBzcXVhc2hm
cy1sem1hIHViaSB0YXIgdGFyLmd6IHRhci5iejIgdGFyLnh6IGNwaW8gY3Bpby5neiBjcGlvLnh6
IGNwaW8ubHptYSBleHQyLmd6LnUtYm9vdCBleHQyLmJ6Mi51LWJvb3QgZXh0Mi5sem1hLnUtYm9v
dCBleHQzLmd6LnUtYm9vdCBleHQ0Lmd6LnUtYm9vdApJTUFHRV9UWVBFUz0iamZmczIgY3JhbWZz
IGV4dDIgZXh0Mi5neiBleHQyLmJ6MiBleHQzIGV4dDMuZ3ogZXh0Mi5sem1hIGxpdmUgc3F1YXNo
ZnMgc3F1YXNoZnMtbHptYSB1YmkgdGFyIHRhci5neiB0YXIuYnoyIHRhci54eiBjcGlvIGNwaW8u
Z3ogY3Bpby54eiBjcGlvLmx6bWEgZXh0Mi5nei51LWJvb3QgZXh0Mi5iejIudS1ib290IGV4dDIu
bHptYS51LWJvb3QgZXh0My5nei51LWJvb3QgZXh0NC5nei51LWJvb3QiCiMgVVBEQVRFQ09NTUFO
RD1FUlJPUiwgdGhpcyBtdXN0IGJlIGEgQml0QmFrZSBidWcKVVBEQVRFQ09NTUFORD0iRVJST1Is
IHRoaXMgbXVzdCBiZSBhIEJpdEJha2UgYnVnIgojIEVYVEVORFBFPSR7QFsnJywnJHtQRVx4N2Rf
J11bYmIuZGF0YS5nZXRWYXIoJ1BFJyxkLDEpID4gMF19CiMgUFJFRkVSUkVEX1ZFUlNJT05fZ2Nj
LWNyb3NzLWluaXRpYWw9JHtHQ0NWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3Mt
aW5pdGlhbD0iNC42JSIKIyBTREtfTkFNRT0ke0RJU1RST30tJHtUQ0xJQkN9LSR7U0RLX0FSQ0h9
LSR7UEFDS0FHRV9BUkNIfQpTREtfTkFNRT0iZnNsLWVnbGliYy14ODZfNjQtcDEwMjByZGIiCiMg
SU1BR0VfQ01EX3Rhci5iejI9Y2QgJHtJTUFHRV9ST09URlN9ICYmIHRhciAtamN2ZiAke0RFUExP
WV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLnRhci5iejIgLgpJTUFHRV9DTURfdGFy
LmJ6Mj0iY2QgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWlt
YWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzICYmIHRhciAtamN2ZiAvbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9p
bWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMudGFy
LmJ6MiAuIgojIFRNUERJUj0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wClRNUERJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcCIKIyBIT1NUX0ND
X0FSQ0g9JHtUQVJHRVRfQ0NfQVJDSH0KSE9TVF9DQ19BUkNIPSItbTMyICAgLW1jcHU9ODU0OCAt
bWFiaT1zcGUgLW1zcGUiCiMgUUVNVV9PUFRJT05TX2l3bW14dD0tY3B1IHB4YTI3MC1jNQpRRU1V
X09QVElPTlNfaXdtbXh0PSItY3B1IHB4YTI3MC1jNSIKIyBsaWJleGVjZGlyPSR7ZXhlY19wcmVm
aXh9L2xpYmV4ZWMKZXhwb3J0IGxpYmV4ZWNkaXI9Ii91c3IvbGliZXhlYyIKIyBJTUFHRV9ERVBF
TkRTX2V4dDM9Z2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0aXZlCklNQUdFX0RFUEVORFNf
ZXh0Mz0iZ2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0aXZlIgojIEJCX0JBU0VIQVNIX3Rh
c2stZG9fY2xlYW5zc3RhdGU9ZTc0OGExNjcxYjcxZDFiNjNjZDk1MzUxZTlhYTQ5MmEKQkJfQkFT
RUhBU0hfdGFzay1kb19jbGVhbnNzdGF0ZT0iZTc0OGExNjcxYjcxZDFiNjNjZDk1MzUxZTlhYTQ5
MmEiCiMgU1VNTUFSWV8ke1BOfS1zdGF0aWNkZXY9Tm9uZQojIElNQUdFX0RFUEVORFNfamZmczI9
bXRkLXV0aWxzLW5hdGl2ZQpJTUFHRV9ERVBFTkRTX2pmZnMyPSJtdGQtdXRpbHMtbmF0aXZlIgoj
IFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EPSByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7ICAk
e0BiYXNlX2NvbnRhaW5zKCJJTUFHRV9GRUFUVVJFUyIsICJkZWJ1Zy10d2Vha3MiLCAiIiwgInph
cF9yb290X3Bhc3N3b3JkIDsgIixkKX0gcmVtb3ZlX3BhY2thZ2luZ19kYXRhX2ZpbGVzIDsgClJP
T1RGU19QT1NUUFJPQ0VTU19DT01NQU5EPSJyb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7ICAgcmVt
b3ZlX3BhY2thZ2luZ19kYXRhX2ZpbGVzIDsiCiMgQkJfTUlOX1ZFUlNJT049MS4xMy4zCkJCX01J
Tl9WRVJTSU9OPSIxLjEzLjMiCiMgZGF0YWRpcl9uYXRpdmU9JHtwcmVmaXhfbmF0aXZlfS9zaGFy
ZQpkYXRhZGlyX25hdGl2ZT0iL3Vzci9zaGFyZSIKIyBRVERJUj0ke1NUQUdJTkdfRElSX0hPU1R9
L3F0MgpleHBvcnQgUVRESVI9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIvcXQyIgojIFBS
RUZFUlJFRF9QUk9WSURFUl9kYnVzLWdsaWItbmF0aXZlPWRidXMtZ2xpYi1uYXRpdmUKUFJFRkVS
UkVEX1BST1ZJREVSX2RidXMtZ2xpYi1uYXRpdmU9ImRidXMtZ2xpYi1uYXRpdmUiCiMgS09OU09M
RV9URVJNQ01EUlVOPSR7S09OU09MRV9URVJNQ01EfSAtZSAkU0hFTExDTURTCktPTlNPTEVfVEVS
TUNNRFJVTj0ia29uc29sZSAtVCBcIiRURVJNV0lORE9XVElUTEVcIiAtZSAkU0hFTExDTURTIgoj
IEdJVF9DT05GSUc9JHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9ldGMvZ2l0Y29uZmlnCkdJVF9D
T05GSUc9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9ldGMvZ2l0Y29uZmln
IgojIFBZVEhPTj0ke0BzeXMuZXhlY3V0YWJsZX0KUFlUSE9OPSIvdXNyL2Jpbi9weXRob24iCiMg
ZGF0YWRpcj0ke3ByZWZpeH0vc2hhcmUKZXhwb3J0IGRhdGFkaXI9Ii91c3Ivc2hhcmUiCiMgU1RB
R0lOR19FVENESVJfTkFUSVZFPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7c3lzY29uZmRpcl9uYXRp
dmV9ClNUQUdJTkdfRVRDRElSX05BVElWRT0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94ODZfNjQtbGlu
dXgvZXRjIgojIEhPU1RfRVhFRVhUPQojIFBSRUZFUlJFRF9WRVJTSU9OX2VnbGliYy1uYXRpdmVz
ZGs9JHtFR0xJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9lZ2xpYmMtbmF0aXZlc2RrPSIy
LjEzIgojIEdOT01FX1RFUk1DTURSVU49JHtHTk9NRV9URVJNQ01EfSAteCAkU0hFTExDTURTCkdO
T01FX1RFUk1DTURSVU49Imdub21lLXRlcm1pbmFsIC0tZGlzYWJsZS1mYWN0b3J5IC10IFwiJFRF
Uk1XSU5ET1dUSVRMRVwiIC14ICRTSEVMTENNRFMiCiMgSU1BR0VfVFlQRT0ke0BiYXNlX2NvbnRh
aW5zKCJJTUFHRV9GU1RZUEVTIiwgImxpdmUiLCAibGl2ZSIsICJlbXB0eSIsIGQpfQpJTUFHRV9U
WVBFPSJlbXB0eSIKIyBjb3JlLWltYWdlX3Jvb3Rmc191cGRhdGVfdGltZXN0YW1wPQlpbWFnZV9y
b290ZnNfdXBkYXRlX3RpbWVzdGFtcAojCmNvcmUtaW1hZ2Vfcm9vdGZzX3VwZGF0ZV90aW1lc3Rh
bXA9ImltYWdlX3Jvb3Rmc191cGRhdGVfdGltZXN0YW1wIgojIFNVTU1BUlk9JHtQTn0gdmVyc2lv
biAke1BWfS0ke1BSfQpTVU1NQVJZPSJmc2wtaW1hZ2Utc2ltcGxlIHZlcnNpb24gMS4wLXIwIgoj
IEJCX0JBU0VIQVNIX3Rhc2stZG9fYnVpbGRhbGw9NzhlMWI2Yjc0YzYxMDIwNzFlMDQ3NWI3MzVm
OGQzZWIKQkJfQkFTRUhBU0hfdGFzay1kb19idWlsZGFsbD0iNzhlMWI2Yjc0YzYxMDIwNzFlMDQ3
NWI3MzVmOGQzZWIiCiMgR1BFUEhPTkVfTUlSUk9SPWh0dHA6Ly9ncGVwaG9uZS5saW51eHRvZ28u
b3JnL2Rvd25sb2FkL2dwZXBob25lCkdQRVBIT05FX01JUlJPUj0iaHR0cDovL2dwZXBob25lLmxp
bnV4dG9nby5vcmcvZG93bmxvYWQvZ3BlcGhvbmUiCiMgR1BFUEhPTkVfU1ZOPXN2bjovL3Byb2pl
Y3RzLmxpbnV4dG9nby5vcmcvc3ZuL2dwZXBob25lL3RydW5rL3NvdXJjZTttb2R1bGU9JHtQTn0K
R1BFUEhPTkVfU1ZOPSJzdm46Ly9wcm9qZWN0cy5saW51eHRvZ28ub3JnL3N2bi9ncGVwaG9uZS90
cnVuay9zb3VyY2U7bW9kdWxlPWZzbC1pbWFnZS1zaW1wbGUiCiMgQkJfQkFTRUhBU0hfdGFzay1k
b19jbGVhbmFsbD04NjRjZDZlMTRiNmIwYmE5NmRmOTQ1YTRhMDY1Mzg5ZgpCQl9CQVNFSEFTSF90
YXNrLWRvX2NsZWFuYWxsPSI4NjRjZDZlMTRiNmIwYmE5NmRmOTQ1YTRhMDY1Mzg5ZiIKIyBJTUFH
RV9DTURfdGFyLmd6PWNkICR7SU1BR0VfUk9PVEZTfSAmJiB0YXIgLXpjdmYgJHtERVBMT1lfRElS
X0lNQUdFfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy50YXIuZ3ogLgpJTUFHRV9DTURfdGFyLmd6PSJj
ZCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC1yMC9yb290ZnMgJiYgdGFyIC16Y3ZmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9m
c2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy50YXIuZ3ogLiIK
IyBMSUNTU1RBVEVESVI9JHtXT1JLRElSfS9saWNlbnNlLWRlc3RkaXIvCkxJQ1NTVEFURURJUj0i
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9y
ZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBs
ZS0xLjAtcjAvbGljZW5zZS1kZXN0ZGlyLyIKIyBBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUz0k
e0BhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgJ1BBQ0tBR0VfQVJDSFMnKX0KQUxMX01VTFRJ
TElCX1BBQ0tBR0VfQVJDSFM9ImFsbCBhbnkgbm9hcmNoIHBwY2U1MDB2MiBwMTAyMHJkYiIKIyBT
QVRPX0lNQUdFX0ZFQVRVUkVTPSR7RU5IQU5DRURfSU1BR0VfRkVBVFVSRVN9IHgxMS1zYXRvIHNz
aC1zZXJ2ZXItZHJvcGJlYXIKU0FUT19JTUFHRV9GRUFUVVJFUz0ieDExLWJhc2UgYXBwcy14MTEt
Y29yZSBwYWNrYWdlLW1hbmFnZW1lbnQgYXBwcy14MTEtZ2FtZXMgYXBwcy14MTEtcGltbGljbyBw
YWNrYWdlLW1hbmFnZW1lbnQgeDExLXNhdG8gc3NoLXNlcnZlci1kcm9wYmVhciIKIyBGSUxFU19m
c2wtaW1hZ2Utc2ltcGxlLWxvY2FsZT0ke2RhdGFkaXJ9L2xvY2FsZQpGSUxFU19mc2wtaW1hZ2Ut
c2ltcGxlLWxvY2FsZT0iL3Vzci9zaGFyZS9sb2NhbGUiCiMgTUFDSElORV9FWFRSQV9SUkVDT01N
RU5EUz0KIyBCVUlMRF9DWFg9JHtDQ0FDSEV9JHtCVUlMRF9QUkVGSVh9ZysrICR7QlVJTERfQ0Nf
QVJDSH0KZXhwb3J0IEJVSUxEX0NYWD0iZysrIgojIENQVV9GRUFUVVJFUz0KIyBVUERBVEVDT01N
QU5EX2N2cz0vdXNyL2Jpbi9lbnYgY3ZzIC1kJHtDVlNST09UfSB1cGRhdGUgLWQgLVAgJHtDVlND
T09QVFN9ClVQREFURUNPTU1BTkRfY3ZzPSIvdXNyL2Jpbi9lbnYgY3ZzIC1kJHtDVlNST09UfSB1
cGRhdGUgLWQgLVAgJHtDVlNDT09QVFN9IgojIE1LVEVNUENNRD1ta3RlbXAgLXEgJHtUTVBCQVNF
fQpNS1RFTVBDTUQ9Im1rdGVtcCAtcSAke1RNUEJBU0V9IgojIERBVEU9MjAxMTEyMTEKREFURT0i
MjAxMTEyMTEiCiMgQVBBQ0hFX01JUlJPUj1odHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdApBUEFD
SEVfTUlSUk9SPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdCIKIyBMRD0ke0hPU1RfUFJFRklY
fWxkJHtUT09MQ0hBSU5fT1BUSU9OU30gJHtIT1NUX0xEX0FSQ0h9CmV4cG9ydCBMRD0icG93ZXJw
Yy1mc2wtbGludXgtZ251c3BlLWxkIC0tc3lzcm9vdD0vbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIw
cmRiIgojIEhPU1RfVkVORE9SPSR7VEFSR0VUX1ZFTkRPUn0KSE9TVF9WRU5ET1I9Ii1mc2wiCiMg
QVJDSD0ke0BtYXBfa2VybmVsX2FyY2goYmIuZGF0YS5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgZCwg
MSksIGQpfQpleHBvcnQgQVJDSD0icG93ZXJwYyIKIyBQUkVGRVJSRURfUFJPVklERVJfZ2RrLXBp
eGJ1Zj1nZGstcGl4YnVmClBSRUZFUlJFRF9QUk9WSURFUl9nZGstcGl4YnVmPSJnZGstcGl4YnVm
IgojIFNTVEFURV9NQU5GSUxFQkFTRT0ke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSR7U1NU
QVRFX01BTk1BQ0h9LQpTU1RBVEVfTUFORklMRUJBU0U9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3N0YXRlLWNvbnRy
b2wvbWFuaWZlc3QtcDEwMjByZGItIgojIE1BQ0hJTkVfVEFTS19QUk9WSURFUj0ke0RFRkFVTFRf
VEFTS19QUk9WSURFUn0KTUFDSElORV9UQVNLX1BST1ZJREVSPSJ0YXNrLWJhc2UiCiMgRVhUUkFf
T0VNQUtFPS1lIE1BS0VGTEFHUz0KRVhUUkFfT0VNQUtFPSItZSBNQUtFRkxBR1M9IgojIExERkxB
R1M9JHtUQVJHRVRfTERGTEFHU30KZXhwb3J0IExERkxBR1M9Ii1XbCwtTzEgLVdsLC0taGFzaC1z
dHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkIgojIFBBQ0tBR0VfR1JPVVBfYXBwcy14MTEtY29yZT10
YXNrLWNvcmUtYXBwcy14MTEtY29yZQpQQUNLQUdFX0dST1VQX2FwcHMteDExLWNvcmU9InRhc2st
Y29yZS1hcHBzLXgxMS1jb3JlIgojIGJpbmRpcj0ke2V4ZWNfcHJlZml4fS9iaW4KZXhwb3J0IGJp
bmRpcj0iL3Vzci9iaW4iCiMgSU1BR0VfREVQRU5EU190YXIueHo9dGFyLW5hdGl2ZSB4ei1uYXRp
dmUKSU1BR0VfREVQRU5EU190YXIueHo9InRhci1uYXRpdmUgeHotbmF0aXZlIgojIEFMTE9XX0VN
UFRZX2ZzbC1pbWFnZS1zaW1wbGUtZGJnPTEKQUxMT1dfRU1QVFlfZnNsLWltYWdlLXNpbXBsZS1k
Ymc9IjEiCiMgTVVMVElMSUJfSU1BR0VfSU5TVEFMTD0KIyBCVUlMRFNUQVRTX0JBU0U9JHtUTVBE
SVJ9L2J1aWxkc3RhdHMvCkJVSUxEU1RBVFNfQkFTRT0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2Fj
aGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9idWlsZHN0YXRzLyIK
IyBTWVNWSU5JVF9FTkFCTEVEX0dFVFRZUz0KIyBUQVJHRVRfQ1hYRkxBR1M9JHtUQVJHRVRfQ0ZM
QUdTfSAtZnBlcm1pc3NpdmUKZXhwb3J0IFRBUkdFVF9DWFhGTEFHUz0iLU8yIC1waXBlIC1nIC1m
ZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtZnBlcm1pc3NpdmUiCiMgQlVJTERfQVJDSD0k
e0Bvcy51bmFtZSgpWzRdfQpCVUlMRF9BUkNIPSJ4ODZfNjQiCiMgR05PTUVfVEVSTUNNRD1nbm9t
ZS10ZXJtaW5hbCAtLWRpc2FibGUtZmFjdG9yeSAtdCAiJFRFUk1XSU5ET1dUSVRMRSIKR05PTUVf
VEVSTUNNRD0iZ25vbWUtdGVybWluYWwgLS1kaXNhYmxlLWZhY3RvcnkgLXQgXCIkVEVSTVdJTkRP
V1RJVExFXCIiCiMgTUFLRT1tYWtlCmV4cG9ydCBNQUtFPSJtYWtlIgojIElNQUdFX0NNRF9jcmFt
ZnM9bWtjcmFtZnMgJHtJTUFHRV9ST09URlN9ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9O
QU1FfS5yb290ZnMuY3JhbWZzICR7RVhUUkFfSU1BR0VDTUR9CklNQUdFX0NNRF9jcmFtZnM9Im1r
Y3JhbWZzIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFn
ZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdl
LXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuY3JhbWZzIgojIGluY2x1ZGVk
aXI9JHtleGVjX3ByZWZpeH0vaW5jbHVkZQpleHBvcnQgaW5jbHVkZWRpcj0iL3Vzci9pbmNsdWRl
IgojIEVYVFJBX0lNQUdFQ01EX2V4dDIuZ3o9LWkgODE5MgpFWFRSQV9JTUFHRUNNRF9leHQyLmd6
PSItaSA4MTkyIgojIFBSRUZFUlJFRF9WRVJTSU9OX2djYz0ke0dDQ1ZFUlNJT059ClBSRUZFUlJF
RF9WRVJTSU9OX2djYz0iNC42JSIKIyBJTUFHRV9DTURfY3Bpby5nej1jZCAke0lNQUdFX1JPT1RG
U30gJiYgKGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyB8IGd6aXAgLWMgLTkgPiR7REVQTE9ZX0RJ
Ul9JTUFHRX0vJHtJTUFHRV9OQU1FfS5yb290ZnMuY3Bpby5neikKSU1BR0VfQ01EX2NwaW8uZ3o9
ImNkIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1z
aW1wbGUtMS4wLXIwL3Jvb3RmcyAmJiAoZmluZCAuIHwgY3BpbyAtbyAtSCBuZXdjIHwgZ3ppcCAt
YyAtOSA+L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGIt
MjAxMTEyMTEwNTE2MjAucm9vdGZzLmNwaW8uZ3opIgojIFVTRV9ERVZGUz0wClVTRV9ERVZGUz0i
MCIKIyBERVNDUklQVElPTl9mc2wtaW1hZ2Utc2ltcGxlLWRvYz0ke0RFU0NSSVBUSU9OfSAgVGhp
cyBwYWNrYWdlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24uCkRFU0NSSVBUSU9OX2ZzbC1pbWFnZS1z
aW1wbGUtZG9jPSJmc2wtaW1hZ2Utc2ltcGxlIHZlcnNpb24gMS4wLXIwICBUaGlzIHBhY2thZ2Ug
Y29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCiMgRklMRVNfJHtQTn0tZG9jPU5vbmUKIyBQUklPUklU
WT1vcHRpb25hbApQUklPUklUWT0ib3B0aW9uYWwiCiMgT1BJRURJUj0ke1NUQUdJTkdfRElSX0hP
U1R9CmV4cG9ydCBPUElFRElSPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiIgojIFNFUFBV
S1VfUVVFUlk9Tm9uZQojIEJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTj1zeXNyb290X2NoZWNr
aGFzaGVzCkJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTj0ic3lzcm9vdF9jaGVja2hhc2hlcyIK
IyBJTUFHRV9DTURfZXh0Mi5sem1hLnUtYm9vdD0ke0lNQUdFX0NNRF9leHQyLmx6bWF9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX21raW1hZ2UgJHtJTUFHRV9OQU1FfS5yb290
ZnMuZXh0Mi5sem1hIGx6bWEKSU1BR0VfQ01EX2V4dDIubHptYS51LWJvb3Q9InJtIC1yZiAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6ICYmIG1rZGlyIC9sb2NhbC9qZW5raW5zL3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2lt
YWdlcy90bXAuZ3ogXAoJZ2VuZXh0MmZzIC1iICRST09URlNfU0laRSAtZCAvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dv
cmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290
ZnMgIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3ovZnNsLWltYWdlLXNpbXBsZS1wMTAy
MHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0MiBcCglsem1hIC1mIC03IC9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
ZGVwbG95L2ltYWdlcy90bXAuZ3ovZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1
MTYyMC5yb290ZnMuZXh0MiBcCgltdiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6L2Zz
bC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLmV4dDIubHptYSAv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIx
MTA1MTYyMC5yb290ZnMuZXh0Mi5sem1hIFwKCXJtZGlyIC9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdl
cy90bXAuZ3ogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfbWtpbWFnZSBm
c2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQyLmx6bWEg
bHptYSIKIyBTREtfQ0NfQVJDSD0ke0JVSUxEX0NDX0FSQ0h9CiMgTUFJTlRBSU5FUj1GU0wgPGZz
bEB5b2N0b3Byb2plY3Qub3JnPgpNQUlOVEFJTkVSPSJGU0wgPGZzbEB5b2N0b3Byb2plY3Qub3Jn
PiIKIyBkb19wYWNrYWdlX3dyaXRlX2lwaz1Ob25lCiMgQlVJTERfTERGTEFHUz0tTCR7U1RBR0lO
R19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9
IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtTzEKZXhwb3J0IEJVSUxE
X0xERkxBR1M9Ii1ML2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYiAtV2ws
LXJwYXRoLWxpbmssL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYiAtV2ws
LXJwYXRoLC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWIgLVdsLC1PMSIK
IyBVQklfVk9MTkFNRT0ke01BQ0hJTkV9LXJvb3RmcwpVQklfVk9MTkFNRT0icDEwMjByZGItcm9v
dGZzIgojIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmRpcn0KU1RBR0lO
R19MSUJESVI9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRf
cDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIvdXNyL2xpYiIKIyBUQVJHRVRf
QVJDSD0ke1RVTkVfQVJDSH0KdW5zZXQgVEFSR0VUX0FSQ0gKIyBFWFRSQV9JTUFHRV9GRUFUVVJF
Uz1kZWJ1Zy10d2Vha3MKRVhUUkFfSU1BR0VfRkVBVFVSRVM9ImRlYnVnLXR3ZWFrcyIKIyBCQklO
Q0xVREVMT0dTX0xJTkVTPU5vbmUKIyBCVUlMRF9GNzc9JHtDQ0FDSEV9JHtCVUlMRF9QUkVGSVh9
Zzc3ICR7QlVJTERfQ0NfQVJDSH0KZXhwb3J0IEJVSUxEX0Y3Nz0iZzc3IgojIExJTlVYTElCQ1ZF
UlNJT049Mi42LjM3LjIKTElOVVhMSUJDVkVSU0lPTj0iMi42LjM3LjIiCiMgTElCQ0VYVEVOU0lP
Tj0ke0BbJycsICctZ251J11bKGQuZ2V0VmFyKCdBQklFWFRFTlNJT04nLCBUcnVlKSBvciAnJykg
IT0gJyddfQpMSUJDRVhURU5TSU9OPSItZ251IgojIENDQUNIRV9ESVI9JHtUTVBESVJ9L2NjYWNo
ZS8ke0hPU1RfU1lTfS8ke1BOfQpleHBvcnQgQ0NBQ0hFX0RJUj0iL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9jY2FjaGUv
cG93ZXJwYy1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUiCiMgUVVJTFRSQ0ZJTEU9
JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3F1aWx0cmMKUVVJTFRSQ0ZJTEU9Ii9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
c3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vcXVpbHRyYyIKIyBCQkxBWUVSUz0gL2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhIC9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS15b2N0byAvb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvbWV0YS1mc2wtcHBjIC9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRh
LWZzbC1wcGMtcHJpdmF0ZSAKQkJMQVlFUlM9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvbWV0YSAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L21ldGEteW9jdG8gL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYyAv
b3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUiCiMgQk9P
VFNUUkFQX0VYVFJBX1JERVBFTkRTPQojIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LWxpYmMtaGVh
ZGVycy1uYXRpdmVzZGs9JHtMSU5VWExJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9saW51
eC1saWJjLWhlYWRlcnMtbmF0aXZlc2RrPSIyLjYuMzcuMiIKIyBCVUlMRF9MRD0ke0JVSUxEX1BS
RUZJWH1sZCAke0JVSUxEX0xEX0FSQ0h9CmV4cG9ydCBCVUlMRF9MRD0ibGQiCiMgQlVJTERfU1lT
PSR7QlVJTERfQVJDSH0ke0JVSUxEX1ZFTkRPUn0tJHtCVUlMRF9PU30KQlVJTERfU1lTPSJ4ODZf
NjQtbGludXgiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtTREtfUFJFRklYfWxpYmMt
Zm9yLWdjYy1uYXRpdmVzZGs9Tm9uZQojIEVOSEFOQ0VEX0lNQUdFX0ZFQVRVUkVTPSR7WDExX0lN
QUdFX0ZFQVRVUkVTfSBhcHBzLXgxMS1nYW1lcyBhcHBzLXgxMS1waW1saWNvIHBhY2thZ2UtbWFu
YWdlbWVudApFTkhBTkNFRF9JTUFHRV9GRUFUVVJFUz0ieDExLWJhc2UgYXBwcy14MTEtY29yZSBw
YWNrYWdlLW1hbmFnZW1lbnQgYXBwcy14MTEtZ2FtZXMgYXBwcy14MTEtcGltbGljbyBwYWNrYWdl
LW1hbmFnZW1lbnQiCiMgSU1BR0VfREVQRU5EU19leHQyLmJ6Mi51LWJvb3Q9Z2VuZXh0MmZzLW5h
dGl2ZSBlMmZzcHJvZ3MtbmF0aXZlIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZQpJTUFHRV9ERVBFTkRT
X2V4dDIuYnoyLnUtYm9vdD0iZ2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0aXZlIHUtYm9v
dC1ta2ltYWdlLW5hdGl2ZSIKIyBQUkVGRVJSRURfUFJPVklERVJfb3BrZy1uYXRpdmU9b3BrZy1u
YXRpdmUKUFJFRkVSUkVEX1BST1ZJREVSX29wa2ctbmF0aXZlPSJvcGtnLW5hdGl2ZSIKIyBQUkVG
RVJSRURfUFJPVklERVJfdmlydHVhbC9wb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtZ2NjLWludGVy
bWVkaWF0ZT1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFs
L3Bvd2VycGMtZnNsLWxpbnV4LWdudXNwZS1nY2MtaW50ZXJtZWRpYXRlPSJnY2MtY3Jvc3MtaW50
ZXJtZWRpYXRlIgojIEJCX0JBU0VIQVNIX3Rhc2stZG9fdW5wYWNrPWZiNDJiYzlkMDU0MTQ1ZjEz
NzE2NTU5ODIxYjY5YzY3CkJCX0JBU0VIQVNIX3Rhc2stZG9fdW5wYWNrPSJmYjQyYmM5ZDA1NDE0
NWYxMzcxNjU1OTgyMWI2OWM2NyIKIyBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUz0K
IyBJTUFHRV9DTURfc3F1YXNoZnM9bWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtERVBMT1lf
RElSX0lNQUdFfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy5zcXVhc2hmcyAke0VYVFJBX0lNQUdFQ01E
fSAtbm9hcHBlbmQKSU1BR0VfQ01EX3NxdWFzaGZzPSJta3NxdWFzaGZzIC9sb2NhbC9qZW5raW5z
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29y
ay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rm
cyAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDEx
MTIxMTA1MTYyMC5yb290ZnMuc3F1YXNoZnMgIC1ub2FwcGVuZCIKIyBQQVRDSERFUEVOREVOQ1k9
JHtQQVRDSFRPT0x9LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290ClBBVENIREVQRU5ERU5DWT0i
cXVpbHQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiMgT0VJTkNMVURFTE9HUz15ZXMKT0VJ
TkNMVURFTE9HUz0ieWVzIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2dldHRleHQ9Z2V0
dGV4dApQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9nZXR0ZXh0PSJnZXR0ZXh0IgojIFNES19B
U19BUkNIPSR7QlVJTERfQVNfQVJDSH0KIyBHUEVfRVhUUkFfU1ZOPXN2bjovL3Byb2plY3RzLmxp
bnV4dG9nby5vcmcvc3ZuL2dwZS90cnVuay9leHRyYTttb2R1bGU9JHtQTn0KR1BFX0VYVFJBX1NW
Tj0ic3ZuOi8vcHJvamVjdHMubGludXh0b2dvLm9yZy9zdm4vZ3BlL3RydW5rL2V4dHJhO21vZHVs
ZT1mc2wtaW1hZ2Utc2ltcGxlIgojIG9sZGluY2x1ZGVkaXI9JHtleGVjX3ByZWZpeH0vaW5jbHVk
ZQpleHBvcnQgb2xkaW5jbHVkZWRpcj0iL3Vzci9pbmNsdWRlIgojIFRVTkVWQUxJRD1Ob25lCiMg
UE9LWV9CQVNFX0lOU1RBTEw9ICAgIHRhc2stY29yZS1ib290ICAgICB0YXNrLWJhc2UtZXh0ZW5k
ZWQgICAgICAgICAke0BiYXNlX2NvbnRhaW5zKCJJTUFHRV9GRUFUVVJFUyIsICJwYWNrYWdlLW1h
bmFnZW1lbnQiLCAiIiwgIiR7Uk9PVEZTX1BLR01BTkFHRV9CT09UU1RSQVB9IixkKX0gICAgICAg
ICAke1BPS1lfRVhUUkFfSU5TVEFMTH0gICAgIApQT0tZX0JBU0VfSU5TVEFMTD0idGFzay1jb3Jl
LWJvb3QgICAgIHRhc2stYmFzZS1leHRlbmRlZCIKIyBUSU1FPTA1MTYyMApUSU1FPSIwNTE2MjAi
CiMgSU1BR0VfREVQRU5EU19jcGlvLmx6bWE9eHotbmF0aXZlCklNQUdFX0RFUEVORFNfY3Bpby5s
em1hPSJ4ei1uYXRpdmUiCiMgUEFDS0FHRV9HUk9VUF9uZnMtc2VydmVyPXRhc2stY29yZS1uZnMt
c2VydmVyClBBQ0tBR0VfR1JPVVBfbmZzLXNlcnZlcj0idGFzay1jb3JlLW5mcy1zZXJ2ZXIiCiMg
bG9jYWxzdGF0ZWRpcl9uYXRpdmVzZGs9L3Zhcgpsb2NhbHN0YXRlZGlyX25hdGl2ZXNkaz0iL3Zh
ciIKIyBVUERBVEVDT01NQU5EX3N2bj0vdXNyL2Jpbi9lbnYgc3ZuIHVwZGF0ZSAke1NWTkNPT1BU
U30KVVBEQVRFQ09NTUFORF9zdm49Ii91c3IvYmluL2VudiBzdm4gdXBkYXRlICR7U1ZOQ09PUFRT
fSIKIyBSUkVDT01NRU5EU18ke1BOfS1kYmc9Tm9uZQojIFNIRUxMQ01EUz1iYXNoCmV4cG9ydCBT
SEVMTENNRFM9ImJhc2giCiMgSU1BR0VfQ01EX3ViaWZzPW1rZnMudWJpZnMgLXIgJHtJTUFHRV9S
T09URlN9IC1vICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfS51Ymlmcy5pbWcgJHtN
S1VCSUZTX0FSR1N9CklNQUdFX0NNRF91Ymlmcz0ibWtmcy51YmlmcyAtciAvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dv
cmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290
ZnMgLW8gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGIt
MjAxMTEyMTEwNTE2MjAudWJpZnMuaW1nICR7TUtVQklGU19BUkdTfSIKIyBTRVBQVUtVX1VTRVI9
Tm9uZQojIEZFRURfREVQTE9ZRElSX0JBU0VfVVJJPU5vbmUKIyBTRUNUSU9OPWJhc2UKU0VDVElP
Tj0iYmFzZSIKIyBRUEVESVI9JHtTVEFHSU5HX0RJUl9IT1NUfQpleHBvcnQgUVBFRElSPSIvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiIgojIExJTUlUX0JVSUxUX0xPQ0FMRVM9UE9TSVggZW5f
VVMgZW5fR0IKTElNSVRfQlVJTFRfTE9DQUxFUz0iUE9TSVggZW5fVVMgZW5fR0IiCiMgUFJFRkVS
UkVEX1BST1ZJREVSX3ZpcnR1YWwvcG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWxpYmMtaW5pdGlh
bD0ke1RDTElCQ30taW5pdGlhbApQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9wb3dlcnBjLWZz
bC1saW51eC1nbnVzcGUtbGliYy1pbml0aWFsPSJlZ2xpYmMtaW5pdGlhbCIKIyBERVNDUklQVElP
Tl8ke1BOfS1kYmc9Tm9uZQojIEVYVEVORFBSQVVUTz0ke0BbJy4ke1BSQVVUT1x4N2QnLCcnXVti
Yi5kYXRhLmdldFZhcignUFJBVVRPJyxkLDEpIGlzIE5vbmVdfQojIExBTkc9ZW5fVVMuVVRGLTgK
TEFORz0iZW5fVVMuVVRGLTgiCiMgU09DS1M1X1BBU1NXRD1sbngxYUItU3J2ClNPQ0tTNV9QQVNT
V0Q9ImxueDFhQi1TcnYiCiMgVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGMtbmY9bTMyIGZwdS1z
b2Z0ClRVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjLW5mPSJtMzIgZnB1LXNvZnQiCiMgQlVJTERf
Q0NMRD0ke0JVSUxEX1BSRUZJWH1nY2MgJHtCVUlMRF9DQ19BUkNIfQpleHBvcnQgQlVJTERfQ0NM
RD0iZ2NjIgojIERFQlVHX0ZMQUdTPS1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcwpE
RUJVR19GTEFHUz0iLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIgojIEI9JHtTfQpC
PSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC1yMC9mc2wtaW1hZ2Utc2ltcGxlLTEuMCIKIyBHUk9VUF9mZXRjaGVyPU5vbmUKIyBC
QlBBVEg9Oi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YTovbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEteW9jdG86L29wdC95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYzovb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUKQkJQQVRIPSI6L2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvbWV0YS15b2N0bzovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0
YS1mc2wtcHBjOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJp
dmF0ZSIKIyBYVEVSTV9URVJNQ01EPXh0ZXJtIC1UICIkVEVSTVdJTkRPV1RJVExFIgpYVEVSTV9U
RVJNQ01EPSJ4dGVybSAtVCBcIiRURVJNV0lORE9XVElUTEVcIiIKIyBQQUNLQUdFX0dST1VQX2Rl
di1wa2dzPSR7QCcgJy5qb2luKCclcy1kZXYnICUgcGtnIGZvciBwa2cgaW4gbm9ybWFsX3BrZ3Nf
dG9faW5zdGFsbChkKSl9ClBBQ0tBR0VfR1JPVVBfZGV2LXBrZ3M9InRhc2stY29yZS1ib290LWRl
diB1LWJvb3QtZGV2IHV0aWwtbGludXgtZGV2IGUyZnNwcm9ncy1kZXYgZTJmc3Byb2dzLW1rZTJm
cy1kZXYgZG9zZnN0b29scy1kZXYgYnppcDItZGV2IG5ldC10b29scy1kZXYgcGNpdXRpbHMtZGV2
IGlwdGFibGVzLWRldiB1c2J1dGlscy1kZXYgcHJvY3BzLWRldiBwb3J0bWFwLWRldiBwc21pc2Mt
ZGV2IHN0cmFjZS1kZXYgc3lzZnN1dGlscy1kZXYgc3lza2xvZ2QtZGV2IHN5c3N0YXQtZGV2IHpp
cC1kZXYgdW56aXAtZGV2IGRyb3BiZWFyLWRldiBmaWxlLWRldiBuZnMtdXRpbHMtZGV2IHBhcnRl
ZC1kZXYgZXRodG9vbC1kZXYgYXBwdHJrLWRldiBhcHB0cmstYmFzZS1kZXYgZHRjLWRldiB1LWJv
b3QtZGV2IHdnZXQtZGV2IGxpYnBwYy1kZXYgZW1iZWRkZWQtaHYtZGV2IGJvb3QtZm9ybWF0LWNv
bmZpZy1kZXYgcGtnY29uZmlnLWRldiBib290LWZvcm1hdC1kZXYgdnNjNzM4NS1maXJtd2FyZS1k
ZXYgY2FudGVzdC1kZXYgbXV4LXNlcnZlci1kZXYiCiMgUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2
PU5vbmUKIyBGSUxFU19mc2wtaW1hZ2Utc2ltcGxlLWRvYz0ke2RvY2Rpcn0gJHttYW5kaXJ9ICR7
aW5mb2Rpcn0gJHtkYXRhZGlyfS9ndGstZG9jICR7ZGF0YWRpcn0vZ25vbWUvaGVscApGSUxFU19m
c2wtaW1hZ2Utc2ltcGxlLWRvYz0iL3Vzci9zaGFyZS9kb2MgL3Vzci9zaGFyZS9tYW4gL3Vzci9z
aGFyZS9pbmZvIC91c3Ivc2hhcmUvZ3RrLWRvYyAvdXNyL3NoYXJlL2dub21lL2hlbHAiCiMgUEFD
S0FHRV9HUk9VUF90b29scy1kZWJ1Zz10YXNrLWNvcmUtdG9vbHMtZGVidWcKUEFDS0FHRV9HUk9V
UF90b29scy1kZWJ1Zz0idGFzay1jb3JlLXRvb2xzLWRlYnVnIgojIFJQTUNPTkZfSE9TVF9CQVNF
PSR7REVQTE9ZX0RJUl9SUE19L3NvbHZlZGItc2RrClJQTUNPTkZfSE9TVF9CQVNFPSIvbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL2RlcGxveS9ycG0vc29sdmVkYi1zZGsiCiMgUE9LWV9FWFRSQV9JTlNUQUxMPQojIFNFQ1RJ
T05fZnNsLWltYWdlLXNpbXBsZS1kb2M9ZG9jClNFQ1RJT05fZnNsLWltYWdlLXNpbXBsZS1kb2M9
ImRvYyIKIyBIT1NUX0xEX0FSQ0g9JHtUQVJHRVRfTERfQVJDSH0KIyBHUk9VUF9kZXBlbmRlbmNp
ZXM9Tm9uZQojIEJCX0JBU0VIQVNIX3Rhc2stZG9fcG9wdWxhdGVfbGljPTUzOTNjMDJhMzEwNzM4
ZGFhZTgwNDVmYmIwMDNjN2FlCkJCX0JBU0VIQVNIX3Rhc2stZG9fcG9wdWxhdGVfbGljPSI1Mzkz
YzAyYTMxMDczOGRhYWU4MDQ1ZmJiMDAzYzdhZSIKIyBGRVRDSENNRF9oZz0vdXNyL2Jpbi9lbnYg
aGcKRkVUQ0hDTURfaGc9Ii91c3IvYmluL2VudiBoZyIKIyBCQVNFX0xJQl90dW5lLXBvd2VycGMt
bmY9bGliCkJBU0VfTElCX3R1bmUtcG93ZXJwYy1uZj0ibGliIgojIFJERVBFTkRTPSAke0lNQUdF
X0lOU1RBTEx9ICR7TElOR1VBU19JTlNUQUxMfSAke01VTFRJTElCX0lNQUdFX0lOU1RBTEx9ICR7
Tk9STUFMX0ZFQVRVUkVfSU5TVEFMTH0KUkRFUEVORFM9InRhc2stY29yZS1ib290ICB1LWJvb3Qg
IAl1dGlsLWxpbnV4IAllMmZzcHJvZ3MgCWUyZnNwcm9ncy1ta2UyZnMgCWRvc2ZzdG9vbHMgCWJ6
aXAyIAluZXQtdG9vbHMgCXBjaXV0aWxzIAlpcHRhYmxlcyAJdXNidXRpbHMgCXByb2NwcyAJcG9y
dG1hcCAJcHNtaXNjIAlzdHJhY2UgCXN5c2ZzdXRpbHMgCXN5c2tsb2dkIAlzeXNzdGF0IAl6aXAg
CXVuemlwIAlkcm9wYmVhciAJZmlsZSAJbmZzLXV0aWxzIAlwYXJ0ZWQgCWV0aHRvb2wgCWFwcHRy
ayAJYXBwdHJrLWJhc2UgCWR0YyAJdS1ib290IAl3Z2V0IAkgCWxpYnBwYyAJZW1iZWRkZWQtaHYg
CWJvb3QtZm9ybWF0LWNvbmZpZyAJIAlwa2djb25maWcgCSAJYm9vdC1mb3JtYXQgCXZzYzczODUt
ZmlybXdhcmUgCWNhbnRlc3QgCSAJbXV4LXNlcnZlciIKIyBCQkZJTEVfUFJJT1JJVFlfZnNsPU5v
bmUKIyBQQUNLQUdFUz0KIyBFWENMVURFX0ZST01fV09STERfcG4tY2x1dHRlci1ib3gyZD0xCkVY
Q0xVREVfRlJPTV9XT1JMRF9wbi1jbHV0dGVyLWJveDJkPSIxIgojIERFU0NSSVBUSU9OXyR7UE59
LXN0YXRpY2Rldj1Ob25lCiMgQlVJTERfQ1BQPSR7QlVJTERfUFJFRklYfWNwcCAke0JVSUxEX0ND
X0FSQ0h9CmV4cG9ydCBCVUlMRF9DUFA9ImNwcCIKIyBQUkVGRVJSRURfVkVSU0lPTl92aXJ0dWFs
L2tlcm5lbD0zLjAuMQpQUkVGRVJSRURfVkVSU0lPTl92aXJ0dWFsL2tlcm5lbD0iMy4wLjEiCiMg
SU1BR0VfQ01EX3Rhcj1jZCAke0lNQUdFX1JPT1RGU30gJiYgdGFyIC1jdmYgJHtERVBMT1lfRElS
X0lNQUdFfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy50YXIgLgpJTUFHRV9DTURfdGFyPSJjZCAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEu
MC1yMC9yb290ZnMgJiYgdGFyIC1jdmYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFn
ZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLnRhciAuIgojIFJQTT1ycG0g
JHtSUE1PUFRTfQpSUE09InJwbSAtLWRicGF0aCAvdmFyL2xpYi9ycG0gLS1kZWZpbmU9J19vcGVu
YWxsX2JlZm9yZV9jaHJvb3QgMSciCiMgU0FOSVRZX1ZFUlNJT049MQpTQU5JVFlfVkVSU0lPTj0i
MSIKIyBERVBMT1lfRElSX1RPT0xTPSR7REVQTE9ZX0RJUn0vdG9vbHMKREVQTE9ZX0RJUl9UT09M
Uz0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJk
Yl9yZWxlYXNlL3RtcC9kZXBsb3kvdG9vbHMiCiMgTElDX0ZJTEVTX0NIS1NVTT1maWxlOi8vJHtD
T1JFQkFTRX0vTElDRU5TRTttZDU9M2Y0MGQ3OTk0Mzk3MTA5Mjg1ZWM3YjgxZmRlYjNiNTggICAg
ICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9
M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAKTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTov
Ly9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvTElDRU5TRTttZDU9M2Y0
MGQ3OTk0Mzk3MTA5Mjg1ZWM3YjgxZmRlYjNiNTggICAgICAgICAgICAgICAgICAgICBmaWxlOi8v
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhL0NPUFlJTkcuTUlU
O21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKIyBBV0tQT1NUSU5TVFNDUklQ
VD0ke0NPUkVCQVNFfS9zY3JpcHRzL3Jvb3Rmc19ycG0tZXh0cmFjdC1wb3N0aW5zdC5hd2sKQVdL
UE9TVElOU1RTQ1JJUFQ9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
c2NyaXB0cy9yb290ZnNfcnBtLWV4dHJhY3QtcG9zdGluc3QuYXdrIgojIEFTTkVFREVEX3BuLXJw
bT0KIyBQS0dXUklURURJUlJQTT0ke1dPUktESVJ9L2RlcGxveS1ycG1zClBLR1dSSVRFRElSUlBN
PSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC1yMC9kZXBsb3ktcnBtcyIKIyBOT1JNQUxfRkVBVFVSRV9JTlNUQUxMX09QVElPTkFM
PSR7QCcgJy5qb2luKG9lLnBhY2thZ2Vncm91cC5vcHRpb25hbF9wYWNrYWdlcyhub3JtYWxfZ3Jv
dXBzKGQpLCBkKSl9CiMgQ1BVX0ZFQVRVUkVTX2FybT12ZnAKQ1BVX0ZFQVRVUkVTX2FybT0idmZw
IgojIFgxMV9JTUFHRV9GRUFUVVJFUz14MTEtYmFzZSBhcHBzLXgxMS1jb3JlIHBhY2thZ2UtbWFu
YWdlbWVudApYMTFfSU1BR0VfRkVBVFVSRVM9IngxMS1iYXNlIGFwcHMteDExLWNvcmUgcGFja2Fn
ZS1tYW5hZ2VtZW50IgojIFBSRUZFUlJFRF9WRVJTSU9OX3UtYm9vdC1ta2ltYWdlLW5hdGl2ZV9w
b3dlcnBjPU5vbmUKIyBHUEVfTUlSUk9SPWh0dHA6Ly9ncGUubGludXh0b2dvLm9yZy9kb3dubG9h
ZC9zb3VyY2UKR1BFX01JUlJPUj0iaHR0cDovL2dwZS5saW51eHRvZ28ub3JnL2Rvd25sb2FkL3Nv
dXJjZSIKIyBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EPQojIHByZWZpeF9uYXRpdmVzZGs9L3Vz
cgpwcmVmaXhfbmF0aXZlc2RrPSIvdXNyIgojIFNTVEFURV9TQ0FOX0NNRD1maW5kICR7U1NUQVRF
X0JVSUxERElSfSBcKCAtbmFtZSAiKi5sYSIgLW8gLW5hbWUgIiotY29uZmlnIiBcKSAtdHlwZSBm
ClNTVEFURV9TQ0FOX0NNRD0iZmluZCAke1NTVEFURV9CVUlMRERJUn0gXCggLW5hbWUgXCIqLmxh
XCIgLW8gLW5hbWUgXCIqLWNvbmZpZ1wiIFwpIC10eXBlIGYiCiMgSEFOREhFTERTX0NWUz1jdnM6
Ly9hbm9uY3ZzOmFub25jdnNAYW5vbmN2cy5oYW5kaGVsZHMub3JnL2N2cwpIQU5ESEVMRFNfQ1ZT
PSJjdnM6Ly9hbm9uY3ZzOmFub25jdnNAYW5vbmN2cy5oYW5kaGVsZHMub3JnL2N2cyIKIyBJTUFH
RV9ERVBFTkRTX2V4dDIuYnoyPWdlbmV4dDJmcy1uYXRpdmUKSU1BR0VfREVQRU5EU19leHQyLmJ6
Mj0iZ2VuZXh0MmZzLW5hdGl2ZSIKIyBTU1RBVEVfTUFORklMRVBSRUZJWD0ke1NTVEFURV9NQU5G
SUxFQkFTRX0ke1BOfQpTU1RBVEVfTUFORklMRVBSRUZJWD0iL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zc3RhdGUtY29u
dHJvbC9tYW5pZmVzdC1wMTAyMHJkYi1mc2wtaW1hZ2Utc2ltcGxlIgojIFBBQ0tBR0VfR1JPVVBf
YXBwcy1jb25zb2xlLWNvcmU9dGFzay1jb3JlLWFwcHMtY29uc29sZQpQQUNLQUdFX0dST1VQX2Fw
cHMtY29uc29sZS1jb3JlPSJ0YXNrLWNvcmUtYXBwcy1jb25zb2xlIgojIEJPT1RTVFJBUF9FWFRS
QV9SUkVDT01NRU5EUz0KIyBQUENQS0dTRlhfRlBVPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5F
X0ZFQVRVUkVTIiwgImZwdS1oYXJkIiAsICIiLCAiLW5mIiwgZCl9ClBQQ1BLR1NGWF9GUFU9Ii1u
ZiIKIyBQUkVGRVJSRURfVkVSU0lPTl9nemlwLW5hdGl2ZT0xLjQKUFJFRkVSUkVEX1ZFUlNJT05f
Z3ppcC1uYXRpdmU9IjEuNCIKIyBUT1BESVI9L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlClRPUERJUj0iL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlIgojIHZhbGlk
X2FyY2hzPWFscGhhIGNyaXMgaWE2NCAgICAgICAgICAgICAgICBpMzg2IHg4NiAgICAgICAgICAg
ICAgICBtNjhrbm9tbXUgbTY4ayBwcGMgcG93ZXJwYyBwb3dlcnBjNjQgcHBjNjQgIAkgICAgICAg
c3BhcmMgc3BhcmM2NCAgICAgICAgICAgICAgICBhcm0gIGFybTI2ICAgICAgICAgICAgICAgIG0z
MnIgbWlwcyAJICAgICAgIHNoIHNoNjQgdW0gaDgzMDAgICAJICAgICAgIHBhcmlzYyBzMzkwICB2
ODUwIAkgICAgICAgYXZyMzIgYmxhY2tmaW4gICAgICAgICAgICAgICBtaWNyb2JsYXplCnZhbGlk
X2FyY2hzPSJhbHBoYSBjcmlzIGlhNjQgICAgICAgICAgICAgICAgaTM4NiB4ODYgICAgICAgICAg
ICAgICAgbTY4a25vbW11IG02OGsgcHBjIHBvd2VycGMgcG93ZXJwYzY0IHBwYzY0ICAJICAgICAg
IHNwYXJjIHNwYXJjNjQgICAgICAgICAgICAgICAgYXJtICBhcm0yNiAgICAgICAgICAgICAgICBt
MzJyIG1pcHMgCSAgICAgICBzaCBzaDY0IHVtIGg4MzAwICAgCSAgICAgICBwYXJpc2MgczM5MCAg
djg1MCAJICAgICAgIGF2cjMyIGJsYWNrZmluICAgICAgICAgICAgICAgbWljcm9ibGF6ZSIKIyBG
SUxFU19mc2wtaW1hZ2Utc2ltcGxlLXN0YXRpY2Rldj0ke2xpYmRpcn0vKi5hICR7YmFzZV9saWJk
aXJ9LyouYQpGSUxFU19mc2wtaW1hZ2Utc2ltcGxlLXN0YXRpY2Rldj0iL3Vzci9saWIvKi5hIC9s
aWIvKi5hIgojIFBBQ0tBR0VfR1JPVVBfcGFja2FnZS1tYW5hZ2VtZW50PSR7Uk9PVEZTX1BLR01B
TkFHRX0KUEFDS0FHRV9HUk9VUF9wYWNrYWdlLW1hbmFnZW1lbnQ9InJwbSB6eXBwZXIiCiMgRVhU
UkFfSU1BR0VDTURfZXh0Mz0taSA4MTkyCkVYVFJBX0lNQUdFQ01EX2V4dDM9Ii1pIDgxOTIiCiMg
RVhUUkFfSU1BR0VDTURfZXh0Mj0taSA4MTkyCkVYVFJBX0lNQUdFQ01EX2V4dDI9Ii1pIDgxOTIi
CiMgU1RBR0lOR19CSU5ESVI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7YmluZGlyfQpTVEFHSU5HX0JJ
TkRJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi91c3IvYmluIgojIEFMTE9XRURfRkxB
R1M9LU8gLW1jcHUgLW1hcmNoIC1waXBlCkFMTE9XRURfRkxBR1M9Ii1PIC1tY3B1IC1tYXJjaCAt
cGlwZSIKIyBBU05FRURFRF9wbi1taW5pbW89CiMgU1VNTUFSWV8ke1BOfS1kZXY9Tm9uZQojIEZJ
TEVfRElSTkFNRT0ke0Bvcy5wYXRoLmRpcm5hbWUoYmIuZGF0YS5nZXRWYXIoJ0ZJTEUnLCBkKSl9
CkZJTEVfRElSTkFNRT0iL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBw
Yy1wcml2YXRlL2ltYWdlcyIKIyBTT1VSQ0VGT1JHRV9NSVJST1I9aHR0cDovL2Rvd25sb2Fkcy5z
b3VyY2Vmb3JnZS5uZXQKU09VUkNFRk9SR0VfTUlSUk9SPSJodHRwOi8vZG93bmxvYWRzLnNvdXJj
ZWZvcmdlLm5ldCIKIyBJTUFHRV9ERVBFTkRTX2J0cmZzPWJ0cmZzLXRvb2xzLW5hdGl2ZQpJTUFH
RV9ERVBFTkRTX2J0cmZzPSJidHJmcy10b29scy1uYXRpdmUiCiMgREVGQVVMVFRVTkU9cHBjZTUw
MHYyCkRFRkFVTFRUVU5FPSJwcGNlNTAwdjIiCiMgU1RBR0lOR19FWEVDUFJFRklYRElSPSR7U1RB
R0lOR19ESVJfSE9TVH0ke2V4ZWNfcHJlZml4fQpTVEFHSU5HX0VYRUNQUkVGSVhESVI9Ii9sb2Nh
bC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFz
ZS90bXAvc3lzcm9vdHMvcDEwMjByZGIvdXNyIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFs
LyR7VEFSR0VUX1BSRUZJWH1saWJjLWluaXRpYWw9Tm9uZQojIEJVSUxEX0NGTEFHUz0ke0JVSUxE
X0NQUEZMQUdTfSAke0JVSUxEX09QVElNSVpBVElPTn0KZXhwb3J0IEJVSUxEX0NGTEFHUz0iLWlz
eXN0ZW0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBp
cGUiCiMgR0lUX0NPUkVfQ09ORklHPVllcwpHSVRfQ09SRV9DT05GSUc9IlllcyIKIyBGRUFUVVJF
X0lOU1RBTExfT1BUSU9OQUw9JHtAJyAnLmpvaW4ob2UucGFja2FnZWdyb3VwLm9wdGlvbmFsX3Bh
Y2thZ2VzKG9lLmRhdGEudHlwZWRfdmFsdWUoJ0lNQUdFX0ZFQVRVUkVTJywgZCksIGQpKX0KIyBQ
U0VVRE9fTE9DQUxTVEFURURJUj0ke1dPUktESVJ9L3BzZXVkby8KUFNFVURPX0xPQ0FMU1RBVEVE
SVI9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1z
aW1wbGUtMS4wLXIwL3BzZXVkby8iCiMgTk9OXzY0QklUX0NPTVBBVD0gCWxpYnBwYyAJZW1iZWRk
ZWQtaHYgCWJvb3QtZm9ybWF0LWNvbmZpZyAJCk5PTl82NEJJVF9DT01QQVQ9ImxpYnBwYyAJZW1i
ZWRkZWQtaHYgCWJvb3QtZm9ybWF0LWNvbmZpZyIKIyBFR0xJQkNWRVJTSU9OPTIuMTMKRUdMSUJD
VkVSU0lPTj0iMi4xMyIKIyBPTERFU1RfS0VSTkVMPTIuNi4xNgpPTERFU1RfS0VSTkVMPSIyLjYu
MTYiCiMgUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uLW5hdGl2ZT0yLjYuNgpQUkVGRVJSRURfVkVS
U0lPTl9weXRob24tbmF0aXZlPSIyLjYuNiIKIyBTRUNUSU9OXyR7UE59LWRvYz1Ob25lCiMgWEFV
VEhPUklUWT0ke0hPTUV9Ly5YYXV0aG9yaXR5ClhBVVRIT1JJVFk9Ii9ob21lL2plbmtpbnMvLlhh
dXRob3JpdHkiCiMgQVVUSE9SPU5vbmUKIyBCQkZJTEVfUEFUVEVSTj1eL29wdC95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlLwpCQkZJTEVfUEFUVEVSTj0iXi9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS8iCiMgQlVJ
TERTREtfTERGTEFHUz0tTCR7U1RBR0lOR19MSUJESVJ9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJ
TkdfTElCRElSfSAtV2wsLXJwYXRoLCR7bGliZGlyfSAtV2wsLU8xIC1MJHtTVEFHSU5HX0RJUl9I
T1NUfSR7YmFzZV9saWJkaXJ9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfRElSX0hPU1R9JHti
YXNlX2xpYmRpcn0gLVdsLC1ycGF0aCwke2Jhc2VfbGliZGlyfSAtV2wsLU8xCkJVSUxEU0RLX0xE
RkxBR1M9Ii1ML2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi91c3IvbGliIC1XbCwtcnBhdGgt
bGluaywvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3Vzci9saWIgLVdsLC1ycGF0aCwvdXNy
L2xpYiAtV2wsLU8xIC1ML2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9i
dWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi9saWIgLVdsLC1ycGF0
aC1saW5rLC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIvbGliIC1XbCwtcnBhdGgsL2xpYiAt
V2wsLU8xIgojIEZFVENIQ01EX3dnZXQ9L3Vzci9iaW4vZW52IHdnZXQgLXQgNSAtcSAtLW5vLWNo
ZWNrLWNlcnRpZmljYXRlCkZFVENIQ01EX3dnZXQ9Ii91c3IvYmluL2VudiB3Z2V0IC10IDUgLXEg
LS1uby1jaGVjay1jZXJ0aWZpY2F0ZSIKIyBTREtfQVJDSD0ke0JVSUxEX0FSQ0h9ClNES19BUkNI
PSJ4ODZfNjQiCiMgQlVJTERfT1BUSU1JWkFUSU9OPS1PMiAtcGlwZQpCVUlMRF9PUFRJTUlaQVRJ
T049Ii1PMiAtcGlwZSIKIyBTT0xJQlNERVY9LnNvClNPTElCU0RFVj0iLnNvIgojIEZJTEVTXyR7
UE59LWRldj1Ob25lCiMgTk9STUFMX0ZFQVRVUkVfSU5TVEFMTD0ke0AnICcuam9pbihvZS5wYWNr
YWdlZ3JvdXAucmVxdWlyZWRfcGFja2FnZXMobm9ybWFsX2dyb3VwcyhkKSwgZCkpfQojIFFNQUtF
X01LU1BFQ19QQVRIPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vcW1ha2UKZXhwb3J0IFFNQUtF
X01LU1BFQ19QQVRIPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1
aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUv
cW1ha2UiCiMgU0VQUFVLVV9QUk9EVUNUPU5vbmUKIyBVU0VSX0NMQVNTRVM9aW1hZ2UtbWtsaWJz
IGltYWdlLXByZWxpbmsKVVNFUl9DTEFTU0VTPSJpbWFnZS1ta2xpYnMgaW1hZ2UtcHJlbGluayIK
IyBJTUFHRV9ERVBFTkRTPQojIEJCX0hBU0hUQVNLX1dISVRFTElTVD0oLiotY3Jvc3MkfC4qLW5h
dGl2ZSR8LiotY3Jvc3MtaW5pdGlhbCR8LiotY3Jvc3MtaW50ZXJtZWRpYXRlJHxedmlydHVhbDpu
YXRpdmU6Lip8XnZpcnR1YWw6bmF0aXZlc2RrOi4qKQpCQl9IQVNIVEFTS19XSElURUxJU1Q9Iigu
Ki1jcm9zcyR8LiotbmF0aXZlJHwuKi1jcm9zcy1pbml0aWFsJHwuKi1jcm9zcy1pbnRlcm1lZGlh
dGUkfF52aXJ0dWFsOm5hdGl2ZTouKnxedmlydHVhbDpuYXRpdmVzZGs6LiopIgojIFJERVBFTkRT
X2ZzbC1pbWFnZS1zaW1wbGUtc3RhdGljZGV2PSR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KQpS
REVQRU5EU19mc2wtaW1hZ2Utc2ltcGxlLXN0YXRpY2Rldj0iZnNsLWltYWdlLXNpbXBsZS1kZXYg
KD0gMS4wLXIwKSIKIyBNS1RFTVBESVJDTUQ9bWt0ZW1wIC1kIC1xICR7VE1QQkFTRX0KTUtURU1Q
RElSQ01EPSJta3RlbXAgLWQgLXEgJHtUTVBCQVNFfSIKIyBSUkVDT01NRU5EUz0gJHtOT1JNQUxf
RkVBVFVSRV9JTlNUQUxMX09QVElPTkFMfQpSUkVDT01NRU5EUz0iIgojIEJCX0hBU0hDSEVDS19G
VU5DVElPTj1zc3RhdGVfY2hlY2toYXNoZXMKQkJfSEFTSENIRUNLX0ZVTkNUSU9OPSJzc3RhdGVf
Y2hlY2toYXNoZXMiCiMgU0VQUFVLVV9MT0dJTj1Ob25lCiMgRVhDTFVERV9GUk9NX1dPUkxEX3Bu
LWVkcy10b29scz0xCkVYQ0xVREVfRlJPTV9XT1JMRF9wbi1lZHMtdG9vbHM9IjEiCiMgQkJfQkFT
RUhBU0hfdGFzay1kb19wYWNrYWdlX3dyaXRlX3JwbT1jNDYwZWI2YzhlNGQ1Y2U4YmY3NzVlMTA0
ZmFkZTMxMgpCQl9CQVNFSEFTSF90YXNrLWRvX3BhY2thZ2Vfd3JpdGVfcnBtPSJjNDYwZWI2Yzhl
NGQ1Y2U4YmY3NzVlMTA0ZmFkZTMxMiIKIyBTT0xJQlM9LnNvLioKU09MSUJTPSIuc28uKiIKIyBQ
Uk9WSURFUz0ke1B9ICR7UEZ9ICR7UE59IApQUk9WSURFUz0iZnNsLWltYWdlLXNpbXBsZS0xLjAg
ZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAgZnNsLWltYWdlLXNpbXBsZSIKIyBTVEFHSU5HX1BZRElS
PSR7U1RBR0lOR19ESVJ9L2xpYi9weXRob24yLjQKU1RBR0lOR19QWURJUj0iL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9z
eXNyb290cy9saWIvcHl0aG9uMi40IgojIFBZVEhPTl9CQVNFVkVSU0lPTj0yLjYKUFlUSE9OX0JB
U0VWRVJTSU9OPSIyLjYiCiMgZG9fcGFja2FnZV93cml0ZV90YXI9Tm9uZQojIGRvY2Rpcj0ke2Rh
dGFkaXJ9L2RvYwpleHBvcnQgZG9jZGlyPSIvdXNyL3NoYXJlL2RvYyIKIyBESVNUUk9fRkVBVFVS
RVM9YWxzYSBhcmdwIGJsdWV0b290aCBleHQyIGlyZGEgbGFyZ2VmaWxlIHBjbWNpYSB1c2JnYWRn
ZXQgdXNiaG9zdCB3aWZpIHhhdHRyIG5mcyB6ZXJvY29uZiBwY2kgM2cgeDExICR7RElTVFJPX0ZF
QVRVUkVTX0xJQkN9IGxhcmdlZmlsZSBvcGVuZ2wKRElTVFJPX0ZFQVRVUkVTPSJhbHNhIGFyZ3Ag
Ymx1ZXRvb3RoIGV4dDIgaXJkYSBsYXJnZWZpbGUgcGNtY2lhIHVzYmdhZGdldCB1c2Job3N0IHdp
ZmkgeGF0dHIgbmZzIHplcm9jb25mIHBjaSAzZyB4MTEgaXB2NCBpcHY2IGxpYmMtYmFja3RyYWNl
IGxpYmMtYmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0cyBsaWJjLWNhdGdldHMgbGli
Yy1jaGFyc2V0cyBsaWJjLWNyeXB0IAkJCQkJbGliYy1jcnlwdC11ZmMgbGliYy1kYi1hbGlhc2Vz
IGxpYmMtZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1mc3RhYiBsaWJjLWZ0cmF2ZXJz
ZSAJCQkJCWxpYmMtZ2V0bG9naW4gbGliYy1pZG4gbGliYy1pbmV0LWFubCBsaWJjLWxpYm0gbGli
Yy1saWJtLWJpZyBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29kZSAJCQkJCWxpYmMtbWVtdXNh
Z2UgbGliYy1uaXMgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVnIGxpYmMt
c3Bhd24gbGliYy1zdHJlYW1zIGxpYmMtc3VucnBjIAkJCQkJbGliYy11dG1wIGxpYmMtdXRtcHgg
bGliYy13b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGliYy1wb3NpeC1yZWdleHAgbGli
Yy1wb3NpeC1yZWdleHAtZ2xpYmMgCQkJCQlsaWJjLXBvc2l4LXdjaGFyLWlvIGxhcmdlZmlsZSBv
cGVuZ2wiCiMgSU1BR0VfREVQRU5EU19leHQyLmd6PWdlbmV4dDJmcy1uYXRpdmUKSU1BR0VfREVQ
RU5EU19leHQyLmd6PSJnZW5leHQyZnMtbmF0aXZlIgojIHBhbG10b3BkaXI9JHtsaWJkaXJ9L29w
aWUKZXhwb3J0IHBhbG10b3BkaXI9Ii91c3IvbGliL29waWUiCiMgVEVSTUNNRD0ke1hURVJNX1RF
Uk1DTUR9ClRFUk1DTUQ9Inh0ZXJtIC1UIFwiJFRFUk1XSU5ET1dUSVRMRVwiIgojIFJFU1VNRUNP
TU1BTkQ9RVJST1IsIHRoaXMgbXVzdCBiZSBhIEJpdEJha2UgYnVnClJFU1VNRUNPTU1BTkQ9IkVS
Uk9SLCB0aGlzIG11c3QgYmUgYSBCaXRCYWtlIGJ1ZyIKIyBjb3JlLWltYWdlX3NldF9pbWFnZV9h
dXRvbG9naW49CWltYWdlX3NldF9pbWFnZV9hdXRvbG9naW4KIwpjb3JlLWltYWdlX3NldF9pbWFn
ZV9hdXRvbG9naW49ImltYWdlX3NldF9pbWFnZV9hdXRvbG9naW4iCiMgSU1BR0VfREVQRU5EU19l
eHQzLmd6PWdlbmV4dDJmcy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZQpJTUFHRV9ERVBFTkRTX2V4
dDMuZ3o9ImdlbmV4dDJmcy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZSIKIyBpbmZvZGlyPSR7ZGF0
YWRpcn0vaW5mbwpleHBvcnQgaW5mb2Rpcj0iL3Vzci9zaGFyZS9pbmZvIgojIFNBTklUWV9BQklG
SUxFPSR7VE1QRElSfS9hYmlfdmVyc2lvbgpTQU5JVFlfQUJJRklMRT0iL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9hYmlf
dmVyc2lvbiIKIyBQUkVGRVJSRURfUFJPVklERVJfeGY4Ni12aWRlby1pbnRlbD14Zjg2LXZpZGVv
LWludGVsClBSRUZFUlJFRF9QUk9WSURFUl94Zjg2LXZpZGVvLWludGVsPSJ4Zjg2LXZpZGVvLWlu
dGVsIgojIERJU1RST09WRVJSSURFUz0ke0RJU1RST30KRElTVFJPT1ZFUlJJREVTPSJmc2wiCiMg
SU1BR0VfQ01EX3NxdWFzaGZzLWx6bWE9bWtzcXVhc2hmcy1sem1hICR7SU1BR0VfUk9PVEZTfSAk
e0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLnNxdWFzaGZzLWx6bWEgJHtF
WFRSQV9JTUFHRUNNRH0gLW5vYXBwZW5kCklNQUdFX0NNRF9zcXVhc2hmcy1sem1hPSJta3NxdWFz
aGZzLWx6bWEgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWlt
YWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1h
Z2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5zcXVhc2hmcy1sem1hICAt
bm9hcHBlbmQiCiMgYmFzZV9wcmVmaXg9CiMgQ0M9JHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1nY2Mg
JHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30KZXhwb3J0IENDPSJwb3dlcnBjLWZz
bC1saW51eC1nbnVzcGUtZ2NjICAtbTMyICAgLW1jcHU9ODU0OCAtbWFiaT1zcGUgLW1zcGUgLS1z
eXNyb290PS9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIiCiMgUFJFRkVSUkVEX1BST1ZJREVS
X3ZpcnR1YWwveDg2XzY0LWZzbHNkay1saW51eC1saWJjLWluaXRpYWwtbmF0aXZlc2RrPSR7VENM
SUJDfS1pbml0aWFsLW5hdGl2ZXNkawpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94ODZfNjQt
ZnNsc2RrLWxpbnV4LWxpYmMtaW5pdGlhbC1uYXRpdmVzZGs9ImVnbGliYy1pbml0aWFsLW5hdGl2
ZXNkayIKIyBCQkZJTEVfUEFUVEVSTl9mc2w9Tm9uZQojIFRISVNESVI9JHtAb3MucGF0aC5kaXJu
YW1lKGJiLmRhdGEuZ2V0VmFyKCdGSUxFJywgZCwgVHJ1ZSkpfQpUSElTRElSPSIvb3B0L3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzIgojIEhHRElS
PSR7Q09fRElSfS9oZwpIR0RJUj0iL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NvdXJj
ZXMvaGciCiMgR0lUX1BST1hZX0lHTk9SRT1mcmVlc2NhbGUubmV0CkdJVF9QUk9YWV9JR05PUkU9
ImZyZWVzY2FsZS5uZXQiCiMgUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzPSR7R0NDVkVSU0lP
Tn0KUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzPSI0LjYlIgojIEJVSUxEX09TPSR7QG9zLnVu
YW1lKClbMF0ubG93ZXIoKX0KQlVJTERfT1M9ImxpbnV4IgojIElNQUdFX0ZTVFlQRVM9dGFyLmd6
IGV4dDIuZ3oudS1ib290CklNQUdFX0ZTVFlQRVM9InRhci5neiBleHQyLmd6LnUtYm9vdCIKIyBQ
T1NUSU5TVEFMTF9JTklUUE9TSVRJT049OTgKUE9TVElOU1RBTExfSU5JVFBPU0lUSU9OPSI5OCIK
IyBST09URlNfUEtHTUFOQUdFX0JPT1RTVFJBUD0KIyBPUEtHQlVJTERDTUQ9b3BrZy1idWlsZCAt
byAwIC1nIDAKT1BLR0JVSUxEQ01EPSJvcGtnLWJ1aWxkIC1vIDAgLWcgMCIKIyBTVEFHSU5HX0xP
QURFUl9ESVI9JHtTVEFHSU5HX0RJUl9IT1NUfS9sb2FkZXIKU1RBR0lOR19MT0FERVJfRElSPSIv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL2xvYWRlciIKIyBTU1RBVEVfUEtHPSR7U1NUQVRF
X0RJUn0vJHtTU1RBVEVfUEtHTkFNRX0KU1NUQVRFX1BLRz0iL29wdC95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL3NzdGF0ZS1jYWNoZS9zc3RhdGUtZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlLTEuMC1yMC1wMTAyMHJkYi0yLSR7QkJfVEFTS0hBU0h9IgojIERJU1RS
T19FWFRSQV9SREVQRU5EUz0gdGFzay1jb3JlLWJvb3QKRElTVFJPX0VYVFJBX1JERVBFTkRTPSJ0
YXNrLWNvcmUtYm9vdCIKIyBMT0dOQU1FPWplbmtpbnMKZXhwb3J0IExPR05BTUU9ImplbmtpbnMi
CiMgU0VSSUFMX0NPTlNPTEVTPTExNTIwMDt0dHlTMCAxMTUyMDA7dHR5UzEKU0VSSUFMX0NPTlNP
TEVTPSIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIgojIFhaX0NPTVBSRVNTSU9OX0xFVkVMPS1l
IC05ClhaX0NPTVBSRVNTSU9OX0xFVkVMPSItZSAtOSIKIyBBU05FRURFRF9wbi1jb25zb2xlLXRv
b2xzPQojIEFTTkVFREVEX3BuLXB1bHNlYXVkaW89CiMgS0VSTkVMX0RFRkNPTkZJRz0ke1N9L2Fy
Y2gvcG93ZXJwYy9jb25maWdzL21wYzg1eHhfc21wX2RlZmNvbmZpZwpLRVJORUxfREVGQ09ORklH
PSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC1yMC9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4
NXh4X3NtcF9kZWZjb25maWciCiMgRVhUUkFfSU1BR0VDTURfZXh0My5nej0taSA4MTkyCkVYVFJB
X0lNQUdFQ01EX2V4dDMuZ3o9Ii1pIDgxOTIiCiMgQVNORUVERURfcG4tZGlzdGNjPQojIFBSRUZF
UlJFRF9WRVJTSU9OX3B1bHNlYXVkaW89MC45LjIzClBSRUZFUlJFRF9WRVJTSU9OX3B1bHNlYXVk
aW89IjAuOS4yMyIKIyBIT1NUX09TPSR7VEFSR0VUX09TfQpIT1NUX09TPSJsaW51eC1nbnVzcGUi
CiMgcGFsbXF0ZGlyPSR7cGFsbXRvcGRpcn0KZXhwb3J0IHBhbG1xdGRpcj0iL3Vzci9saWIvb3Bp
ZSIKIyBMQVlFUl9DT05GX1ZFUlNJT049NApMQVlFUl9DT05GX1ZFUlNJT049IjQiCiMgTVVMVElN
QUNIX0hPU1RfU1lTPSR7UEFDS0FHRV9BUkNIfSR7SE9TVF9WRU5ET1J9LSR7SE9TVF9PU30KTVVM
VElNQUNIX0hPU1RfU1lTPSJwMTAyMHJkYi1mc2wtbGludXgtZ251c3BlIgojIFRBUkdFVF9GUFU9
cHBjLWVmZApUQVJHRVRfRlBVPSJwcGMtZWZkIgojIFNUQUdJTkdfRElSX05BVElWRT0ke1NUQUdJ
TkdfRElSfS8ke0JVSUxEX1NZU30KU1RBR0lOR19ESVJfTkFUSVZFPSIvbG9jYWwvamVua2lucy95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jv
b3RzL3g4Nl82NC1saW51eCIKIyBHTlVfTUlSUk9SPWZ0cDovL2Z0cC5nbnUub3JnL2dudQpHTlVf
TUlSUk9SPSJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUiCiMgREVQTE9ZX0RJUj0ke1RNUERJUn0vZGVw
bG95CkRFUExPWV9ESVI9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95IgojIEFTTkVFREVEX3BuLXBjaXV0aWxz
PQojIE1BQ0hJTkVfRVhUUkFfUkRFUEVORFM9CiMgTVVMVElfUFJPVklERVJfV0hJVEVMSVNUPXZp
cnR1YWwvbGliaW50bCB2aXJ0dWFsL2xpYmludGwtbmF0aXZlIHZpcnR1YWwvbGliaW50bC1uYXRp
dmVzZGsgdmlydHVhbC94c2VydmVyCk1VTFRJX1BST1ZJREVSX1dISVRFTElTVD0idmlydHVhbC9s
aWJpbnRsIHZpcnR1YWwvbGliaW50bC1uYXRpdmUgdmlydHVhbC9saWJpbnRsLW5hdGl2ZXNkayB2
aXJ0dWFsL3hzZXJ2ZXIiCiMgU0VDVElPTl8ke1BOfS1zdGF0aWNkZXY9Tm9uZQojIEFTTkVFREVE
X3BuLXB1enpsZXM9CiMgVUJPT1RfTUFDSElORVM9UDEwMjBSREIKVUJPT1RfTUFDSElORVM9IlAx
MDIwUkRCIgojIFNUQU1QPSR7VE1QRElSfS9zdGFtcHMvJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU30v
JHtQRn0KU1RBTVA9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3RhbXBzL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUv
ZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAiCiMgQkJJTkNMVURFTE9HUz15ZXMKQkJJTkNMVURFTE9H
Uz0ieWVzIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmludGw9ZWdsaWJjClBSRUZF
UlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmludGw9ImVnbGliYyIKIyBRQV9MT0dGSUxFPSR7VE1Q
RElSfS9xYS5sb2cKUUFfTE9HRklMRT0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9xYS5sb2ciCiMgTVVMVElMSUJSRV9B
TExPV19SRVA9JHtiYXNlX2JpbmRpcn18JHtiYXNlX3NiaW5kaXJ9fCR7YmluZGlyfXwke3NiaW5k
aXJ9fCR7bGliZXhlY2Rpcn18Ck1VTFRJTElCUkVfQUxMT1dfUkVQPSIvYmlufC9zYmlufC91c3Iv
YmlufC91c3Ivc2JpbnwvdXNyL2xpYmV4ZWN8IgojIFJPT1RGU19QS0dNQU5BR0U9cnBtIHp5cHBl
cgpST09URlNfUEtHTUFOQUdFPSJycG0genlwcGVyIgojIGNvcmUtaW1hZ2VfcmVtb3ZlX2luaXRf
bGluaz0JaW1hZ2VfcmVtb3ZlX2luaXRfbGluawojCmNvcmUtaW1hZ2VfcmVtb3ZlX2luaXRfbGlu
az0iaW1hZ2VfcmVtb3ZlX2luaXRfbGluayIKIyBHQ0NWRVJTSU9OPTQuNiUKR0NDVkVSU0lPTj0i
NC42JSIKIyBCQVNFTElCX3Bvd2VycGM2ND1saWI2NApCQVNFTElCX3Bvd2VycGM2ND0ibGliNjQi
CiMgRVJST1JfUUE9CiMgVVNFX1ZUPQojIEZJTEVTXyR7UE59LXN0YXRpY2Rldj1Ob25lCiMgRklM
RVNfZnNsLWltYWdlLXNpbXBsZS1kZXY9JHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKiR7U09M
SUJTREVWfSAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5vICR7bGliZGlyfS9wa2djb25maWcg
JHtkYXRhZGlyfS9wa2djb25maWcgJHtkYXRhZGlyfS9hY2xvY2FsICR7YmFzZV9saWJkaXJ9Lyou
bwpGSUxFU19mc2wtaW1hZ2Utc2ltcGxlLWRldj0iL3Vzci9pbmNsdWRlIC91c3IvbGliL2xpYiou
c28gL3Vzci9saWIvKi5sYSAvdXNyL2xpYi8qLm8gL3Vzci9saWIvcGtnY29uZmlnIC91c3Ivc2hh
cmUvcGtnY29uZmlnIC91c3Ivc2hhcmUvYWNsb2NhbCAvbGliLyoubyIKIyBDUFBGTEFHUz0ke1RB
UkdFVF9DUFBGTEFHU30KIyBFWENMVURFX0ZST01fV09STEQ9MQpFWENMVURFX0ZST01fV09STEQ9
IjEiCiMgSU1BR0VfREVQRU5EU191Ymk9bXRkLXV0aWxzLW5hdGl2ZQpJTUFHRV9ERVBFTkRTX3Vi
aT0ibXRkLXV0aWxzLW5hdGl2ZSIKIyBRRU1VSU1BR0VURVNUUz0vbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NjcmlwdHMvcWVtdWltYWdlLXRlc3RzClFFTVVJTUFHRVRF
U1RTPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NjcmlwdHMvcWVt
dWltYWdlLXRlc3RzIgojIFZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzPXVwZGF0
ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoClZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVz
PSJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKIyBTVU1NQVJZX2ZzbC1pbWFnZS1zaW1wbGUt
ZG9jPSR7U1VNTUFSWX0gLSBEb2N1bWVudGF0aW9uIGZpbGVzClNVTU1BUllfZnNsLWltYWdlLXNp
bXBsZS1kb2M9ImZzbC1pbWFnZS1zaW1wbGUgdmVyc2lvbiAxLjAtcjAgLSBEb2N1bWVudGF0aW9u
IGZpbGVzIgojIFNTVEFURV9NQU5NQUNIPXAxMDIwcmRiClNTVEFURV9NQU5NQUNIPSJwMTAyMHJk
YiIKIyBJTUFHRV9ERVBFTkRTX2V4dDQuZ3o9Z2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0
aXZlCklNQUdFX0RFUEVORFNfZXh0NC5nej0iZ2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0
aXZlIgojIFBLR0RBVEFfRElSPSR7VE1QRElSfS9wa2dkYXRhLyR7TVVMVElNQUNIX1RBUkdFVF9T
WVN9ClBLR0RBVEFfRElSPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3BrZ2RhdGEvcDEwMjByZGItZnNsLWxpbnV4LWdu
dXNwZSIKIyBzeXNjb25mZGlyX25hdGl2ZT0vZXRjCnN5c2NvbmZkaXJfbmF0aXZlPSIvZXRjIgoj
IFhMSUJTX01JUlJPUj1odHRwOi8veGxpYnMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2UKWExJQlNf
TUlSUk9SPSJodHRwOi8veGxpYnMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2UiCiMgVEFSR0VUX0ND
X0FSQ0hfYXJtX3BuLW1lc2EteGxpYj0gLW0zMiAgIC1tY3B1PTg1NDggLW1hYmk9c3BlIC1tc3Bl
ClRBUkdFVF9DQ19BUkNIX2FybV9wbi1tZXNhLXhsaWI9Ii1tMzIgICAtbWNwdT04NTQ4IC1tYWJp
PXNwZSAtbXNwZSIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC91cGRhdGUtYWx0ZXJuYXRp
dmVzLW5hdGl2ZT1vcGtnLW5hdGl2ZQpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC91cGRhdGUt
YWx0ZXJuYXRpdmVzLW5hdGl2ZT0ib3BrZy1uYXRpdmUiCiMgS0VSTkVMX0RFVklDRVRSRUU9JHtT
fS9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvcDEwMjByZGIuZHRzCktFUk5FTF9ERVZJQ0VUUkVFPSIv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxl
LTEuMC1yMC9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvcDEwMjBy
ZGIuZHRzIgojIFBJRD0ke0Bvcy5nZXRwaWQoKX0KUElEPSI1ODUyIgojIERFUENIQUlOX1BPU1Q9
LWRldiAtZGJnCkRFUENIQUlOX1BPU1Q9Ii1kZXYgLWRiZyIKIyBTU1RBVEVfRElSPS9vcHQveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zc3RhdGUtY2FjaGUKU1NUQVRFX0RJUj0iL29wdC95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NzdGF0ZS1jYWNoZSIKIyBNQUNISU5FX0ZFQVRVUkVTPWtl
cm5lbDI2IHBjaSBleHQyIGV4dDMgc2VyaWFsCk1BQ0hJTkVfRkVBVFVSRVM9Imtlcm5lbDI2IHBj
aSBleHQyIGV4dDMgc2VyaWFsIgojIEQ9JHtXT1JLRElSfS9pbWFnZQpEPSIvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dv
cmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9pbWFn
ZSIKIyBSUE1PUFRTPS0tZGJwYXRoICR7cnBtbGliZGlyfSAtLWRlZmluZT0nX29wZW5hbGxfYmVm
b3JlX2Nocm9vdCAxJwpSUE1PUFRTPSItLWRicGF0aCAvdmFyL2xpYi9ycG0gLS1kZWZpbmU9J19v
cGVuYWxsX2JlZm9yZV9jaHJvb3QgMSciCiMgVENNT0RFPWRlZmF1bHQKVENNT0RFPSJkZWZhdWx0
IgojIElNQUdFX1JPT1RGU19TSVpFPTgxOTIKSU1BR0VfUk9PVEZTX1NJWkU9IjgxOTIiCiMgQ09N
TU9OX0xJQ0VOU0VfRElSPSR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzCkNP
TU1PTl9MSUNFTlNFX0RJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcyIKIyBSQU5MSUI9JHtIT1NUX1BSRUZJWH1yYW5s
aWIKZXhwb3J0IFJBTkxJQj0icG93ZXJwYy1mc2wtbGludXgtZ251c3BlLXJhbmxpYiIKIyBMT0NB
TEVfU0VDVElPTj0KIyBSUE1CVUlMRD1ycG1idWlsZApSUE1CVUlMRD0icnBtYnVpbGQiCiMgUFJF
RkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2w9bWVzYS14bGliClBSRUZFUlJFRF9QUk9WSURF
Ul92aXJ0dWFsL2xpYmdsPSJtZXNhLXhsaWIiCiMgU1RBR0lOR19ESVJfSE9TVD0ke1NUQUdJTkdf
RElSfS8ke01BQ0hJTkV9ClNUQUdJTkdfRElSX0hPU1Q9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEw
MjByZGIiCiMgQkJfQkFTRUhBU0hfdGFzay1kb19wYXRjaD05ZjdiY2ZjMmVmYjA4N2ZiMjg3NzQ4
YzY1N2JkOTYwNQpCQl9CQVNFSEFTSF90YXNrLWRvX3BhdGNoPSI5ZjdiY2ZjMmVmYjA4N2ZiMjg3
NzQ4YzY1N2JkOTYwNSIKIyBiYXNlX3NiaW5kaXI9JHtiYXNlX3ByZWZpeH0vc2JpbgpleHBvcnQg
YmFzZV9zYmluZGlyPSIvc2JpbiIKIyBDWFg9JHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1nKysgJHtI
T1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30KZXhwb3J0IENYWD0icG93ZXJwYy1mc2wt
bGludXgtZ251c3BlLWcrKyAgLW0zMiAgIC1tY3B1PTg1NDggLW1hYmk9c3BlIC1tc3BlIC0tc3lz
cm9vdD0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiIgojIEVfTUlSUk9SPWh0dHA6Ly9kb3du
bG9hZC5lbmxpZ2h0ZW5tZW50Lm9yZy9yZWxlYXNlcwpFX01JUlJPUj0iaHR0cDovL2Rvd25sb2Fk
LmVubGlnaHRlbm1lbnQub3JnL3JlbGVhc2VzIgojIFNES1BBVEhOQVRJVkU9JHtTREtQQVRIfS9z
eXNyb290cy8ke1NES19TWVN9ClNES1BBVEhOQVRJVkU9Ii9vcHQvZnNsLzEuMS9zeXNyb290cy94
ODZfNjQtZnNsc2RrLWxpbnV4IgojIFBSRUZFUlJFRF9QUk9WSURFUl9tYXRjaGJveC1wYW5lbD1t
YXRjaGJveC1wYW5lbC0yClBSRUZFUlJFRF9QUk9WSURFUl9tYXRjaGJveC1wYW5lbD0ibWF0Y2hi
b3gtcGFuZWwtMiIKIyBNQUNISU5FX0FSQ0g9JHtAW2JiLmRhdGEuZ2V0VmFyKCdUVU5FX1BLR0FS
Q0gnLCBkLCAxKSwgYmIuZGF0YS5nZXRWYXIoJ01BQ0hJTkUnLCBkLCAxKV1bYm9vbChiYi5kYXRh
LmdldFZhcignTUFDSElORScsIGQsIDEpKV0ucmVwbGFjZSgnLScsICdfJyl9Ck1BQ0hJTkVfQVJD
SD0icDEwMjByZGIiCiMgSU1BR0VfT1ZFUkhFQURfRkFDVE9SPTEuMwpJTUFHRV9PVkVSSEVBRF9G
QUNUT1I9IjEuMyIKIyBCSU5VVkVSU0lPTj0yLjIxLjFhCkJJTlVWRVJTSU9OPSIyLjIxLjFhIgoj
IFNDUkVFTl9URVJNQ01EPXNjcmVlbiAtRCAtbSAtdCAiJFRFUk1XSU5ET1dUSVRMRSIKU0NSRUVO
X1RFUk1DTUQ9InNjcmVlbiAtRCAtbSAtdCBcIiRURVJNV0lORE9XVElUTEVcIiIKIyBTREtfVkVO
RE9SPS1mc2xzZGsKU0RLX1ZFTkRPUj0iLWZzbHNkayIKIyBBU05FRURFRF9wbi1pY3U9CiMgTVVM
VElMSUJfUEFDS0FHRV9JTlNUQUxMPSR7TVVMVElMSUJfSU1BR0VfSU5TVEFMTH0KIyBQUkVGRVJS
RURfVkVSU0lPTl9lZ2xpYmMtaW5pdGlhbC1uYXRpdmVzZGs9JHtFR0xJQkNWRVJTSU9OfQpQUkVG
RVJSRURfVkVSU0lPTl9lZ2xpYmMtaW5pdGlhbC1uYXRpdmVzZGs9IjIuMTMiCiMgUFJFRkVSUkVE
X1BST1ZJREVSX3ZpcnR1YWwvbGliaWNvbnY9ZWdsaWJjClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0
dWFsL2xpYmljb252PSJlZ2xpYmMiCiMgQkJfQkFTRUhBU0hfdGFzay1kb19pbnN0YWxsPWU1YmUw
N2ViYTA2YmQ1ZTc5MTJjYjlmYmRhOWFkOTBiCkJCX0JBU0VIQVNIX3Rhc2stZG9faW5zdGFsbD0i
ZTViZTA3ZWJhMDZiZDVlNzkxMmNiOWZiZGE5YWQ5MGIiCiMgSU1BR0VfQ01EX2V4dDIuZ3oudS1i
b290PSR7SU1BR0VfQ01EX2V4dDIuZ3p9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9lX21raW1hZ2UgJHtJTUFHRV9OQU1FfS5yb290ZnMuZXh0Mi5neiBnemlwCklNQUdFX0NNRF9l
eHQyLmd6LnUtYm9vdD0icm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEw
MjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3otZnNs
LWltYWdlLXNpbXBsZSAmJiBta2RpciAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZz
bC1pbWFnZS1zaW1wbGUgXAoJZ2VuZXh0MmZzIC1iICRST09URlNfU0laRSAtZCAvbG9jYWwvamVu
a2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1w
L3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9y
b290ZnMgIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3otZnNsLWltYWdlLXNpbXBsZS9m
c2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQyIFwKCWd6
aXAgLWYgLTkgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wtaW1hZ2Utc2ltcGxl
L2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLmV4dDIgXAoJ
bXYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJk
Yl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wtaW1hZ2Utc2ltcGxlL2ZzbC1p
bWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLmV4dDIuZ3ogL2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNl
L3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2
MjAucm9vdGZzLmV4dDIuZ3ogXAoJcm1kaXIgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5n
ei1mc2wtaW1hZ2Utc2ltcGxlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9l
X21raW1hZ2UgZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMu
ZXh0Mi5neiBnemlwIgojIFBFUlNJU1RFTlRfRElSPSR7VE1QRElSfS9jYWNoZQpQRVJTSVNURU5U
X0RJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC9jYWNoZSIKIyBTREtfVkVSU0lPTj0xLjEKU0RLX1ZFUlNJT049IjEu
MSIKIyBCVUlMRF9WRU5ET1I9CiMgS0VSTkVMT1JHX01JUlJPUj1odHRwOi8va2VybmVsLm9yZy9w
dWIKS0VSTkVMT1JHX01JUlJPUj0iaHR0cDovL2tlcm5lbC5vcmcvcHViIgojIElNQUdFX0RFUEVO
RFNfc3F1YXNoZnM9c3F1YXNoZnMtdG9vbHMtbmF0aXZlCklNQUdFX0RFUEVORFNfc3F1YXNoZnM9
InNxdWFzaGZzLXRvb2xzLW5hdGl2ZSIKIyBXQVJOX1FBPWRldi1zbyBycGF0aHMgZGVidWctZGVw
cyBkZXYtZGVwcyBkZWJ1Zy1maWxlcyBhcmNoIGxhMiBwa2djb25maWcgZGVza3RvcCBsYSBsZGZs
YWdzIHBlcm1zIHVzZWxlc3MtcnBhdGhzCldBUk5fUUE9ImRldi1zbyBycGF0aHMgZGVidWctZGVw
cyBkZXYtZGVwcyBkZWJ1Zy1maWxlcyBhcmNoIGxhMiBwa2djb25maWcgZGVza3RvcCBsYSBsZGZs
YWdzIHBlcm1zIHVzZWxlc3MtcnBhdGhzIgojIElNQUdFX0RFUEVORFNfY3Bpby54ej14ei1uYXRp
dmUKSU1BR0VfREVQRU5EU19jcGlvLnh6PSJ4ei1uYXRpdmUiCiMgUFJFRkVSUkVEX1ZFUlNJT05f
Z2NjLXJ1bnRpbWUtbmF0aXZlc2RrPSR7U0RLR0NDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05f
Z2NjLXJ1bnRpbWUtbmF0aXZlc2RrPSI0LjYlIgojIENPTkZfVkVSU0lPTj0xCkNPTkZfVkVSU0lP
Tj0iMSIKIyBBU05FRURFRD0tV2wsLS1hcy1uZWVkZWQKQVNORUVERUQ9Ii1XbCwtLWFzLW5lZWRl
ZCIKIyBQS0dfQ09ORklHX1BBVEg9JHtQS0dfQ09ORklHX0RJUn06JHtTVEFHSU5HX0RBVEFESVJ9
L3BrZ2NvbmZpZwpleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIvbG9jYWwvamVua2lucy95b2N0by9j
YWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3Ax
MDIwcmRiLy91c3IvbGliL3BrZ2NvbmZpZzovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3Vz
ci9zaGFyZS9wa2djb25maWciCiMgU1lTUk9PVF9MT0NLPSR7U1RBR0lOR19ESVJ9L3N0YWdpbmcu
bG9jawpTWVNST09UX0xPQ0s9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvc3RhZ2luZy5sb2NrIgojIEJV
SUxEX0FTX0FSQ0g9CiMgRklMRVM9CiMgVENMSUJDPWVnbGliYwpUQ0xJQkM9ImVnbGliYyIKIyBU
VU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTUwMHYyPW0zMiBzcGUgcHBjZTUwMHYyClRVTkVfRkVBVFVS
RVNfdHVuZS1wcGNlNTAwdjI9Im0zMiBzcGUgcHBjZTUwMHYyIgojIEhPU1RfQVNfQVJDSD0ke1RB
UkdFVF9BU19BUkNIfQojIFJQTUNPTkZfVEFSR0VUX0JBU0U9JHtERVBMT1lfRElSX1JQTX0vc29s
dmVkYgpSUE1DT05GX1RBUkdFVF9CQVNFPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9ycG0vc29sdmVkYiIK
IyBCVUlMRF9OTT0ke0JVSUxEX1BSRUZJWH1ubQpleHBvcnQgQlVJTERfTk09Im5tIgojIFRBUkdF
VF9WRU5ET1I9LWZzbApUQVJHRVRfVkVORE9SPSItZnNsIgojIFNMT1Q9MApTTE9UPSIwIgojIFJF
U1VNRUNPTU1BTkRfd2dldD0vdXNyL2Jpbi9lbnYgd2dldCAtYyAtdCA1IC1xIC0tcGFzc2l2ZS1m
dHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAtUCAke0RMX0RJUn0gJyR7VVJJfScKUkVTVU1FQ09N
TUFORF93Z2V0PSIvdXNyL2Jpbi9lbnYgd2dldCAtYyAtdCA1IC1xIC0tcGFzc2l2ZS1mdHAgLS1u
by1jaGVjay1jZXJ0aWZpY2F0ZSAtUCAvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc291
cmNlcyAnJHtVUkl9JyIKIyBQQUNLQUdFX0dST1VQX2RvYy1wa2dzPSR7QCcgJy5qb2luKCclcy1k
b2MnICUgcGtnIGZvciBwa2cgaW4gbm9ybWFsX3BrZ3NfdG9faW5zdGFsbChkKSl9ClBBQ0tBR0Vf
R1JPVVBfZG9jLXBrZ3M9InRhc2stY29yZS1ib290LWRvYyB1LWJvb3QtZG9jIHV0aWwtbGludXgt
ZG9jIGUyZnNwcm9ncy1kb2MgZTJmc3Byb2dzLW1rZTJmcy1kb2MgZG9zZnN0b29scy1kb2MgYnpp
cDItZG9jIG5ldC10b29scy1kb2MgcGNpdXRpbHMtZG9jIGlwdGFibGVzLWRvYyB1c2J1dGlscy1k
b2MgcHJvY3BzLWRvYyBwb3J0bWFwLWRvYyBwc21pc2MtZG9jIHN0cmFjZS1kb2Mgc3lzZnN1dGls
cy1kb2Mgc3lza2xvZ2QtZG9jIHN5c3N0YXQtZG9jIHppcC1kb2MgdW56aXAtZG9jIGRyb3BiZWFy
LWRvYyBmaWxlLWRvYyBuZnMtdXRpbHMtZG9jIHBhcnRlZC1kb2MgZXRodG9vbC1kb2MgYXBwdHJr
LWRvYyBhcHB0cmstYmFzZS1kb2MgZHRjLWRvYyB1LWJvb3QtZG9jIHdnZXQtZG9jIGxpYnBwYy1k
b2MgZW1iZWRkZWQtaHYtZG9jIGJvb3QtZm9ybWF0LWNvbmZpZy1kb2MgcGtnY29uZmlnLWRvYyBi
b290LWZvcm1hdC1kb2MgdnNjNzM4NS1maXJtd2FyZS1kb2MgY2FudGVzdC1kb2MgbXV4LXNlcnZl
ci1kb2MiCiMgUE9LWVFFTVVERVBTPSR7QGJhc2VfY29udGFpbnMoIklOQ09NUEFUSUJMRV9MSUNF
TlNFIiwgIkdQTHYzIiwgIiIsICJxZW11LWNvbmZpZyIsZCl9ClBPS1lRRU1VREVQUz0icWVtdS1j
b25maWciCiMgUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3Nzc2RrPSR7U0RLR0NDVkVSU0lPTn0K
UFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3Nzc2RrPSI0LjYlIgojIFNPTElCU0RFVl9kYXJ3aW49
LmR5bGliClNPTElCU0RFVl9kYXJ3aW49Ii5keWxpYiIKIyBERVNDUklQVElPTl9mc2wtaW1hZ2Ut
c2ltcGxlLWRiZz0ke0RFU0NSSVBUSU9OfSAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIEVMRiBzeW1i
b2xzIGFuZCByZWxhdGVkIHNvdXJjZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KREVTQ1JJUFRJ
T05fZnNsLWltYWdlLXNpbXBsZS1kYmc9ImZzbC1pbWFnZS1zaW1wbGUgdmVyc2lvbiAxLjAtcjAg
IFRoaXMgcGFja2FnZSBjb250YWlucyBFTEYgc3ltYm9scyBhbmQgcmVsYXRlZCBzb3VyY2VzIGZv
ciBkZWJ1Z2dpbmcgcHVycG9zZXMuIgojIFBBQ0tBR0VfR1JPVVBfc3NoLXNlcnZlci1kcm9wYmVh
cj10YXNrLWNvcmUtc3NoLWRyb3BiZWFyClBBQ0tBR0VfR1JPVVBfc3NoLXNlcnZlci1kcm9wYmVh
cj0idGFzay1jb3JlLXNzaC1kcm9wYmVhciIKIyBUUkFOU0xBVEVEX1RBUkdFVF9BUkNIPSR7QGQu
Z2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpLnJlcGxhY2UoIl8iLCAiLSIpfQpUUkFOU0xBVEVE
X1RBUkdFVF9BUkNIPSJwb3dlcnBjIgojIFRVTkVfUEtHQVJDSD0ke0BiYi51dGlscy5jb250YWlu
cygiVFVORV9GRUFUVVJFUyIsICJwcGNlNTAwdjIiLCAicHBjZTUwMHYyIiwgIiR7UFBDUEtHQVJD
SH0iLCBkKX0KVFVORV9QS0dBUkNIPSJwcGNlNTAwdjIiCiMgRkVUQ0hDT01NQU5EX3dnZXQ9L3Vz
ci9iaW4vZW52IHdnZXQgLXQgNSAtcSAtLXBhc3NpdmUtZnRwIC0tbm8tY2hlY2stY2VydGlmaWNh
dGUgLVAgJHtETF9ESVJ9ICcke1VSSX0nCkZFVENIQ09NTUFORF93Z2V0PSIvdXNyL2Jpbi9lbnYg
d2dldCAtdCA1IC1xIC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAtUCAvb3B0
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc291cmNlcyAnJHtVUkl9JyIKIyBTVEFHSU5HX0RB
VEFESVJfTkFUSVZFPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9ClNUQUdJ
TkdfREFUQURJUl9OQVRJVkU9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9z
aGFyZSIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGls
ZXJsaWJzPU5vbmUKIyBUVU5FX0NDQVJHUz0gJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVB
VFVSRVMiLCAibTMyIiwgIi1tMzIiLCAiIiwgZCl9ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5F
X0ZFQVRVUkVTIiwgImZwdS1oYXJkIiwgIi1taGFyZC1mbG9hdCIsICIiLCBkKX0gJHtAYmIudXRp
bHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiZnB1LXNvZnQiLCAiLW1zb2Z0LWZsb2F0Iiwg
IiIsIGQpfSAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwcGNlNTAwdjIi
LCAiLW1jcHU9ODU0OCIsICIiLCBkKX0gJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVS
RVMiLCAic3BlIiwgIi1tYWJpPXNwZSAtbXNwZSIsICIiLCBkKX0KVFVORV9DQ0FSR1M9Ii1tMzIg
ICAtbWNwdT04NTQ4IC1tYWJpPXNwZSAtbXNwZSIKIyBJTUFHRV9MSU5LX05BTUU9JHtJTUFHRV9C
QVNFTkFNRX0tJHtNQUNISU5FfQpJTUFHRV9MSU5LX05BTUU9ImZzbC1pbWFnZS1zaW1wbGUtcDEw
MjByZGIiCiMgRkVUQ0hDTURfYnpyPS91c3IvYmluL2VudiBienIKRkVUQ0hDTURfYnpyPSIvdXNy
L2Jpbi9lbnYgYnpyIgojIFBSRUZFUlJFRF9WRVJTSU9OX2VsZnV0aWxzPTAuMTQ4ClBSRUZFUlJF
RF9WRVJTSU9OX2VsZnV0aWxzPSIwLjE0OCIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94
c2VydmVyLXhmODY9eHNlcnZlci14Zjg2LWRyaS1saXRlClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0
dWFsL3hzZXJ2ZXIteGY4Nj0ieHNlcnZlci14Zjg2LWRyaS1saXRlIgojIFFFTVVfT1BUSU9OU19h
cm12N2E9LWNwdSBjb3J0ZXgtYTgKUUVNVV9PUFRJT05TX2FybXY3YT0iLWNwdSBjb3J0ZXgtYTgi
CiMgU0RLX09TPSR7QlVJTERfT1N9ClNES19PUz0ibGludXgiCiMgU1NUQVRFX1BLR19TVUZGSVg9
dHh6ClNTVEFURV9QS0dfU1VGRklYPSJ0eHoiCiMgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJF
Q09NTUVORFM9CiMgUFJFRkVSUkVEX1ZFUlNJT05fZWdsaWJjPSR7RUdMSUJDVkVSU0lPTn0KUFJF
RkVSUkVEX1ZFUlNJT05fZWdsaWJjPSIyLjEzIgojIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9z
cy1jYW5hZGlhbi1wb3dlcnBjPSR7R0NDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNy
b3NzLWNhbmFkaWFuLXBvd2VycGM9IjQuNiUiCiMgQkJfQkFTRUhBU0hfdGFzay1kb19wYWNrYWdl
PTRhN2ZkNzdjN2ViNzNhNGVhZTFkOTM2YTYyZjJjMzYzCkJCX0JBU0VIQVNIX3Rhc2stZG9fcGFj
a2FnZT0iNGE3ZmQ3N2M3ZWI3M2E0ZWFlMWQ5MzZhNjJmMmMzNjMiCiMgTE9DQUxFX1VURjhfT05M
WT0wCkxPQ0FMRV9VVEY4X09OTFk9IjAiCiMgSU1BR0VfQ01EX2V4dDMuZ3oudS1ib290PSR7SU1B
R0VfQ01EX2V4dDMuZ3p9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX21raW1h
Z2UgJHtJTUFHRV9OQU1FfS5yb290ZnMuZXh0My5neiBnemlwCklNQUdFX0NNRF9leHQzLmd6LnUt
Ym9vdD0icm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3otZnNsLWltYWdlLXNp
bXBsZSAmJiBta2RpciAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1
aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1pbWFnZS1z
aW1wbGUgXAoJZ2VuZXh0MmZzIC1iICRST09URlNfU0laRSAtZCAvbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEw
MjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMgIC9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVs
ZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3otZnNsLWltYWdlLXNpbXBsZS9mc2wtaW1hZ2Ut
c2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQzIFwKCXR1bmUyZnMgLWog
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9y
ZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wtaW1hZ2Utc2ltcGxlL2ZzbC1pbWFn
ZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLmV4dDMgXAoJZ3ppcCAtZiAt
OSAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1pbWFnZS1zaW1wbGUvZnNsLWlt
YWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0MyBcCgltdiAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1pbWFnZS1zaW1wbGUvZnNsLWltYWdlLXNp
bXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0My5neiAvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2Rl
cGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290
ZnMuZXh0My5neiBcCglybWRpciAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1p
bWFnZS1zaW1wbGUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfbWtpbWFn
ZSBmc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQzLmd6
IGd6aXAiCiMgUFJFRkVSUkVEX1BST1ZJREVSX2xpbnV4LWxpYmMtaGVhZGVycy1uYXRpdmVzZGs9
bGludXgtbGliYy1oZWFkZXJzLW5hdGl2ZXNkawpQUkVGRVJSRURfUFJPVklERVJfbGludXgtbGli
Yy1oZWFkZXJzLW5hdGl2ZXNkaz0ibGludXgtbGliYy1oZWFkZXJzLW5hdGl2ZXNkayIKIyBDT1JF
QkFTRT0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiCkNPUkVCQVNFPSIv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiIgojIEdOT01FX01JUlJPUj1o
dHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcwpHTk9NRV9NSVJST1I9Imh0dHA6
Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzIgojIFBSRUZFUlJFRF9WRVJTSU9OX2xp
YmdjYz0ke0dDQ1ZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2xpYmdjYz0iNC42JSIKIyBTU1RB
VEVfUEtHU1BFQz1zc3RhdGUtJHtQTn0tJHtQQUNLQUdFX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0k
e1RBUkdFVF9PU30tJHtQVn0tJHtQUn0tJHtTU1RBVEVfUEtHQVJDSH0tJHtTU1RBVEVfVkVSU0lP
Tn0tClNTVEFURV9QS0dTUEVDPSJzc3RhdGUtZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi1mc2wt
bGludXgtZ251c3BlLTEuMC1yMC1wMTAyMHJkYi0yLSIKIyBQQUNLQUdFX0dST1VQX3gxMS1uZXRi
b29rPXRhc2stY29yZS14MTEtbmV0Ym9vawpQQUNLQUdFX0dST1VQX3gxMS1uZXRib29rPSJ0YXNr
LWNvcmUteDExLW5ldGJvb2siCiMgQ09NUEFUSUJMRV9IT1NUPU5vbmUKIyBERVBMT1lfRElSX0lQ
Sz0ke0RFUExPWV9ESVJ9L2lwawpERVBMT1lfRElSX0lQSz0iL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaXBr
IgojIFNUQUdJTkdfRklSTVdBUkVfRElSPSR7U1RBR0lOR19ESVJfSE9TVH0vZmlybXdhcmUKU1RB
R0lOR19GSVJNV0FSRV9ESVI9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIvZmlybXdhcmUi
CiMgQkJGSUxFUz0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEv
cmVjaXBlcy0qLyovKi5iYiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L21ldGEteW9jdG8vcmVjaXBlcy0qLyovKi5iYiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10
ZXN0L3AxMDIwcmRiL21ldGEteW9jdG8vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCAvb3B0L3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjL3JlY2lwZXMtKi8qLyouYmIqIC9vcHQv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMvaW1hZ2VzLyouYmIgL29wdC95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL3JlY2lwZXMtKi8q
LyouYmIqIC9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0
ZS9pbWFnZXMvKi5iYioKQkJGSUxFUz0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9tZXRhL3JlY2lwZXMtKi8qLyouYmIgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi9tZXRhLXlvY3RvL3JlY2lwZXMtKi8qLyouYmIgL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLXlvY3RvL3JlY2lwZXMtKi8qLyouYmJhcHBl
bmQgL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy9yZWNpcGVzLSov
Ki8qLmJiKiAvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjL2ltYWdl
cy8qLmJiIC9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0
ZS9yZWNpcGVzLSovKi8qLmJiKiAvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1m
c2wtcHBjLXByaXZhdGUvaW1hZ2VzLyouYmIqIgojIEFTPSR7SE9TVF9QUkVGSVh9YXMgJHtIT1NU
X0FTX0FSQ0h9CmV4cG9ydCBBUz0icG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWFzIgojIEFSPSR7
SE9TVF9QUkVGSVh9YXIKZXhwb3J0IEFSPSJwb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtYXIiCiMg
Qk5GSUxFPSR7QlVJTERTVEFUU19CQVNFfS8uYnVpbGRuYW1lCkJORklMRT0iL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9i
dWlsZHN0YXRzLy8uYnVpbGRuYW1lIgojIEZJTEVTXyR7UE59LWxvY2FsZT1Ob25lCiMgV09SS0RJ
Uj0ke1RNUERJUn0vd29yay8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS8ke1BGfQpXT1JLRElSPSIv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxl
LTEuMC1yMCIKIyBiaW5kaXJfbmF0aXZlc2RrPSR7cHJlZml4X25hdGl2ZXNka30vYmluCmJpbmRp
cl9uYXRpdmVzZGs9Ii91c3IvYmluIgojIFBBQ0tBR0VfREVQRU5EUz0gcnBtLW5hdGl2ZSBmaWxl
LW5hdGl2ZSBwYXgtdXRpbHMtbmF0aXZlIGRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUKUEFDS0FH
RV9ERVBFTkRTPSJycG0tbmF0aXZlIGZpbGUtbmF0aXZlIHBheC11dGlscy1uYXRpdmUgZGVza3Rv
cC1maWxlLXV0aWxzLW5hdGl2ZSIKIyBCVUlMRF9DUFBGTEFHUz0taXN5c3RlbSR7U1RBR0lOR19J
TkNESVJfTkFUSVZFfQpleHBvcnQgQlVJTERfQ1BQRkxBR1M9Ii1pc3lzdGVtL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9z
eXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUiCiMgSU1BR0VfQ0xBU1NFUz1pbWFnZV90
eXBlc191Ym9vdApJTUFHRV9DTEFTU0VTPSJpbWFnZV90eXBlc191Ym9vdCIKIyBRRU1VX09QVElP
TlM9CiMgZG9fcGFja2FnZV93cml0ZV9kZWI9Tm9uZQojIElNQUdFX0RFUEVORFNfZXh0Mi5sem1h
PWdlbmV4dDJmcy1uYXRpdmUgeHotbmF0aXZlCklNQUdFX0RFUEVORFNfZXh0Mi5sem1hPSJnZW5l
eHQyZnMtbmF0aXZlIHh6LW5hdGl2ZSIKIyBST09UX0ZMQVNIX1NJWkU9MjU2ClJPT1RfRkxBU0hf
U0laRT0iMjU2IgojIFNES19QQUNLQUdFX0FSQ0hTPWFsbCBhbnkgbm9hcmNoICR7U0RLX0FSQ0h9
LW5hdGl2ZXNkawpTREtfUEFDS0FHRV9BUkNIUz0iYWxsIGFueSBub2FyY2ggeDg2XzY0LW5hdGl2
ZXNkayIKIyBDUFA9JHtIT1NUX1BSRUZJWH1nY2MgLUUke1RPT0xDSEFJTl9PUFRJT05TfSAke0hP
U1RfQ0NfQVJDSH0KZXhwb3J0IENQUD0icG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWdjYyAtRSAt
LXN5c3Jvb3Q9L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYiAgLW0zMiAgIC1tY3B1PTg1NDgg
LW1hYmk9c3BlIC1tc3BlIgojIEJCRklMRV9DT0xMRUNUSU9OUz0gbm9ybWFsIHlvY3RvIGZzbCBm
c2wKQkJGSUxFX0NPTExFQ1RJT05TPSJub3JtYWwgeW9jdG8gZnNsIGZzbCIKIyBtYW5kaXI9JHtk
YXRhZGlyfS9tYW4KZXhwb3J0IG1hbmRpcj0iL3Vzci9zaGFyZS9tYW4iCiMgUFJFRkVSUkVEX1BS
T1ZJREVSX29wa2ctbmF0aXZlc2RrPW9wa2ctbmF0aXZlc2RrClBSRUZFUlJFRF9QUk9WSURFUl9v
cGtnLW5hdGl2ZXNkaz0ib3BrZy1uYXRpdmVzZGsiCiMgU09DS1M1X1VTRVI9bGludXhsYWJfc3Zj
ClNPQ0tTNV9VU0VSPSJsaW51eGxhYl9zdmMiCiMgRkFLRVJPT1RESVJTPSR7UFNFVURPX0xPQ0FM
U1RBVEVESVJ9CkZBS0VST09URElSUz0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51
eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcHNldWRvLyIKIyBLRVJORUxfQ09OU09M
RT10dHlTMApLRVJORUxfQ09OU09MRT0idHR5UzAiCiMgU1VNTUFSWV9mc2wtaW1hZ2Utc2ltcGxl
LXN0YXRpY2Rldj0ke1NVTU1BUll9IC0gRGV2ZWxvcG1lbnQgZmlsZXMgKFN0YXRpYyBMaWJyYXJp
ZXMpClNVTU1BUllfZnNsLWltYWdlLXNpbXBsZS1zdGF0aWNkZXY9ImZzbC1pbWFnZS1zaW1wbGUg
dmVyc2lvbiAxLjAtcjAgLSBEZXZlbG9wbWVudCBmaWxlcyAoU3RhdGljIExpYnJhcmllcykiCiMg
VVNFX1BSX1NFUlY9JHtAWzEsMF1bKGJiLmRhdGEuZ2V0VmFyKCdQUlNFUlZfSE9TVCcsZCwxKSBp
cyBOb25lKSBvciAoYmIuZGF0YS5nZXRWYXIoJ1BSU0VSVl9QT1JUJyxkLDEpIGlzIE5vbmUpXX0K
VVNFX1BSX1NFUlY9IjAiCiMgTE9HX0RJUj0ke1RNUERJUn0vbG9nCkxPR19ESVI9Ii9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvbG9nIgojIEJCX0JBU0VIQVNIX3Rhc2stZG9fcGFja2FnZV93cml0ZV9ycG1fc2V0c2NlbmU9
ZjM1YTY1NDA2ODYwNjZjMWNhM2E4ZjZkZWM2ZWVmNDUKQkJfQkFTRUhBU0hfdGFzay1kb19wYWNr
YWdlX3dyaXRlX3JwbV9zZXRzY2VuZT0iZjM1YTY1NDA2ODYwNjZjMWNhM2E4ZjZkZWM2ZWVmNDUi
CiMgc2JpbmRpcl9uYXRpdmU9JHtwcmVmaXhfbmF0aXZlfS9zYmluCnNiaW5kaXJfbmF0aXZlPSIv
dXNyL3NiaW4iCiMgRkVBVFVSRV9JTlNUQUxMPSR7QCcgJy5qb2luKG9lLnBhY2thZ2Vncm91cC5y
ZXF1aXJlZF9wYWNrYWdlcyhvZS5kYXRhLnR5cGVkX3ZhbHVlKCdJTUFHRV9GRUFUVVJFUycsIGQp
LCBkKSl9CiMgUD0ke1BOfS0ke1BWfQpQPSJmc2wtaW1hZ2Utc2ltcGxlLTEuMCIKIyBQS0dfQ09O
RklHX1NZU1JPT1RfRElSPSR7U1RBR0lOR19ESVJfSE9TVH0KZXhwb3J0IFBLR19DT05GSUdfU1lT
Uk9PVF9ESVI9Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRf
cDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIiCiMgUFJFRkVSUkVEX1ZFUlNJ
T05fYmludXRpbHMtY3Jvc3NzZGs9JHtCSU5VVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fYmlu
dXRpbHMtY3Jvc3NzZGs9IjIuMjEuMWEiCiMgRklMRVNQQVRIPSR7QGJhc2Vfc2V0X2ZpbGVzcGF0
aChbICIke0ZJTEVfRElSTkFNRX0vJHtQRn0iLCAiJHtGSUxFX0RJUk5BTUV9LyR7UH0iLCAiJHtG
SUxFX0RJUk5BTUV9LyR7UE59IiwgIiR7RklMRV9ESVJOQU1FfS8ke0JQfSIsICIke0ZJTEVfRElS
TkFNRX0vJHtCUE59IiwgIiR7RklMRV9ESVJOQU1FfS9maWxlcyIsICIke0ZJTEVfRElSTkFNRX0i
IF0sIGQpfQpGSUxFU1BBVEg9Ii9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZz
bC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvbGludXgtZ251c3Bl
Oi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFn
ZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcG93ZXJwYzovb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtMS4w
LXIwL2J1aWxkLWxpbnV4Oi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1w
cGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcG4tZnNsLWltYWdlLXNp
bXBsZTovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUv
aW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3AxMDIwcmRiOi9vcHQveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBs
ZS0xLjAtcjAvZTUwMHYyOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1w
cGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvZnNsOi9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdl
LXNpbXBsZS0xLjAtcjAvZm9yY2V2YXJpYWJsZTovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL2xp
YmMtZ2xpYmM6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2
YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC86L29wdC95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEu
MC9saW51eC1nbnVzcGU6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBw
Yy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9wb3dlcnBjOi9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdl
LXNpbXBsZS0xLjAvYnVpbGQtbGludXg6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21l
dGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9wbi1mc2wtaW1h
Z2Utc2ltcGxlOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJp
dmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAvcDEwMjByZGI6L29wdC95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC9lNTAwdjI6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBw
Yy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9mc2w6L29wdC95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC9mb3JjZXZhcmlhYmxlOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRh
LWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAvbGliYy1nbGliYzov
b3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2Vz
L2ZzbC1pbWFnZS1zaW1wbGUtMS4wLzovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0
YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUvbGludXgtZ251c3BlOi9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMv
ZnNsLWltYWdlLXNpbXBsZS9wb3dlcnBjOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9t
ZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS9idWlsZC1saW51eDov
b3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2Vz
L2ZzbC1pbWFnZS1zaW1wbGUvcG4tZnNsLWltYWdlLXNpbXBsZTovb3B0L3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUv
cDEwMjByZGI6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2
YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlL2U1MDB2Mjovb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUvZnNs
Oi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFn
ZXMvZnNsLWltYWdlLXNpbXBsZS9mb3JjZXZhcmlhYmxlOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS9saWJj
LWdsaWJjOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0
ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS86L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9saW51eC1n
bnVzcGU6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRl
L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9wb3dlcnBjOi9vcHQveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0x
LjAvYnVpbGQtbGludXg6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBw
Yy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9wbi1mc2wtaW1hZ2Utc2ltcGxl
Oi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFn
ZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAvcDEwMjByZGI6L29wdC95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9l
NTAwdjI6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRl
L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9mc2w6L29wdC95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLTEuMC9m
b3JjZXZhcmlhYmxlOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMt
cHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS0xLjAvbGliYy1nbGliYzovb3B0L3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFn
ZS1zaW1wbGUtMS4wLzovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBj
LXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUvbGludXgtZ251c3BlOi9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdl
LXNpbXBsZS9wb3dlcnBjOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1w
cGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS9idWlsZC1saW51eDovb3B0L3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFn
ZS1zaW1wbGUvcG4tZnNsLWltYWdlLXNpbXBsZTovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUvcDEwMjByZGI6
L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdl
cy9mc2wtaW1hZ2Utc2ltcGxlL2U1MDB2Mjovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
bWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUvZnNsOi9vcHQveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWlt
YWdlLXNpbXBsZS9mb3JjZXZhcmlhYmxlOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9t
ZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS9saWJjLWdsaWJjOi9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMv
ZnNsLWltYWdlLXNpbXBsZS86L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNs
LXBwYy1wcml2YXRlL2ltYWdlcy9maWxlcy9saW51eC1nbnVzcGU6L29wdC95b2N0by9jYWNoZS10
ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9maWxlcy9wb3dlcnBjOi9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMv
ZmlsZXMvYnVpbGQtbGludXg6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNs
LXBwYy1wcml2YXRlL2ltYWdlcy9maWxlcy9wbi1mc2wtaW1hZ2Utc2ltcGxlOi9vcHQveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZmlsZXMvcDEw
MjByZGI6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRl
L2ltYWdlcy9maWxlcy9lNTAwdjI6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEt
ZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9maWxlcy9mc2w6L29wdC95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9maWxlcy9mb3JjZXZhcmlhYmxlOi9v
cHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMv
ZmlsZXMvbGliYy1nbGliYzovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wt
cHBjLXByaXZhdGUvaW1hZ2VzL2ZpbGVzLzovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
bWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2xpbnV4LWdudXNwZTovb3B0L3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL3Bvd2VycGM6L29wdC95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9idWls
ZC1saW51eDovb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZh
dGUvaW1hZ2VzL3BuLWZzbC1pbWFnZS1zaW1wbGU6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2ltYWdlcy9wMTAyMHJkYjovb3B0L3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2U1MDB2Mjovb3B0L3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbDov
b3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2Vz
L2ZvcmNldmFyaWFibGU6L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBw
Yy1wcml2YXRlL2ltYWdlcy9saWJjLWdsaWJjOi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvIgojIFRVTkVfQVJDSD0ke0BiYi51dGlscy5j
b250YWlucygiVFVORV9GRUFUVVJFUyIsICJtMzIiLCAicG93ZXJwYyIsICIiLCBkKX0KVFVORV9B
UkNIPSJwb3dlcnBjIgojIFdISVRFTElTVF9HUEx2Mz1sZXNzCldISVRFTElTVF9HUEx2Mz0ibGVz
cyIKIyBFX1NWTj1zdm46Ly9zdm4uZW5saWdodGVubWVudC5vcmcvc3ZuL2UKRV9TVk49InN2bjov
L3N2bi5lbmxpZ2h0ZW5tZW50Lm9yZy9zdm4vZSIKIyBCVUlMRF9DWFhGTEFHUz0ke0JVSUxEX0NG
TEFHU30gLWZwZXJtaXNzaXZlCmV4cG9ydCBCVUlMRF9DWFhGTEFHUz0iLWlzeXN0ZW0vbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgLWZwZXJtaXNz
aXZlIgojIE9CSkNPUFk9JHtIT1NUX1BSRUZJWH1vYmpjb3B5CmV4cG9ydCBPQkpDT1BZPSJwb3dl
cnBjLWZzbC1saW51eC1nbnVzcGUtb2JqY29weSIKIyBJTUFHRV9ERVBFTkRTX2V4dDQuZ3oudS1i
b290PWdlbmV4dDJmcy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZSB1LWJvb3QtbWtpbWFnZS1uYXRp
dmUKSU1BR0VfREVQRU5EU19leHQ0Lmd6LnUtYm9vdD0iZ2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJv
Z3MtbmF0aXZlIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKIyBJTUFHRV9ERVBFTkRTX2NyYW1mcz1j
cmFtZnMtbmF0aXZlCklNQUdFX0RFUEVORFNfY3JhbWZzPSJjcmFtZnMtbmF0aXZlIgojIE1VTFRJ
TElCX1BBQ0tBR0VfQVJDSFM9CiMgU1JDX1VSST1maWxlOi8vJHtGSUxFfQpTUkNfVVJJPSJmaWxl
Oi8vL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEtZnNsLXBwYy1wcml2YXRlL2lt
YWdlcy9mc2wtaW1hZ2Utc2ltcGxlLmJiIgojIFNTVEFURVBPU1RJTlNURlVOQ1M9CiMgaW5jbHVk
ZWRpcl9uYXRpdmU9JHtwcmVmaXhfbmF0aXZlfS9pbmNsdWRlCmluY2x1ZGVkaXJfbmF0aXZlPSIv
dXNyL2luY2x1ZGUiCiMgU1VNTUFSWV8ke1BOfS1kb2M9Tm9uZQojIFJERVBFTkRTX2ZzbC1pbWFn
ZS1zaW1wbGUtZGV2PSR7UE59ICg9ICR7RVhURU5EUEtHVn0pClJERVBFTkRTX2ZzbC1pbWFnZS1z
aW1wbGUtZGV2PSJmc2wtaW1hZ2Utc2ltcGxlICg9IDEuMC1yMCkiCiMgVFVORV9GRUFUVVJFU190
dW5lLXBvd2VycGM9bTMyIGZwdS1oYXJkClRVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjPSJtMzIg
ZnB1LWhhcmQiCiMgUlJFQ09NTUVORFNfZnNsLWltYWdlLXNpbXBsZS1kYmc9JHtQTn0gKD0gJHtF
WFRFTkRQS0dWfSkKUlJFQ09NTUVORFNfZnNsLWltYWdlLXNpbXBsZS1kYmc9ImZzbC1pbWFnZS1z
aW1wbGUgKD0gMS4wLXIwKSIKIyBGSUxFU0RJUj0ke0BiYi53aGljaChiYi5kYXRhLmdldFZhcign
RklMRVNQQVRIJywgZCwgMSksICcuJyl9CkZJTEVTRElSPSIvb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvbWV0YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzLy4iCiMgT0VMQVlPVVRfQUJJPTcK
T0VMQVlPVVRfQUJJPSI3IgojIFJQTV9QT1NUUFJPQ0VTU19DT01NQU5EUz0KIyBJTUFHRV9ERVBF
TkRTX3ViaWZzPW10ZC11dGlscy1uYXRpdmUKSU1BR0VfREVQRU5EU191Ymlmcz0ibXRkLXV0aWxz
LW5hdGl2ZSIKIyBpbmNsdWRlZGlyX25hdGl2ZXNkaz0ke3ByZWZpeF9uYXRpdmVzZGt9L2luY2x1
ZGUKaW5jbHVkZWRpcl9uYXRpdmVzZGs9Ii91c3IvaW5jbHVkZSIKIyBJTUFHRV9QS0dUWVBFPXJw
bQpJTUFHRV9QS0dUWVBFPSJycG0iCiMgRklMRVNfJHtQTn0tZGJnPU5vbmUKIyBzZXJ2aWNlZGly
PSR7YmFzZV9wcmVmaXh9L3NydgpleHBvcnQgc2VydmljZWRpcj0iL3NydiIKIyBiaW5kaXJfbmF0
aXZlPSR7cHJlZml4X25hdGl2ZX0vYmluCmJpbmRpcl9uYXRpdmU9Ii91c3IvYmluIgojIEJVSUxE
X1BSRUZJWD0KIyBIT01FPS9ob21lL2plbmtpbnMKZXhwb3J0IEhPTUU9Ii9ob21lL2plbmtpbnMi
CiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYz1Ob25lCiMg
Q09NQklORURfRkVBVFVSRVM9JHtAYmFzZV9ib3RoX2NvbnRhaW4oIkRJU1RST19GRUFUVVJFUyIs
ICJNQUNISU5FX0ZFQVRVUkVTIiwgImFsc2EiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4oIkRJ
U1RST19GRUFUVVJFUyIsICJNQUNISU5FX0ZFQVRVUkVTIiwgImJsdWV0b290aCIsIGQpfSAke0Bi
YXNlX2JvdGhfY29udGFpbigiRElTVFJPX0ZFQVRVUkVTIiwgIk1BQ0hJTkVfRkVBVFVSRVMiLCAi
ZXh0MiIsIGQpfSAke0BiYXNlX2JvdGhfY29udGFpbigiRElTVFJPX0ZFQVRVUkVTIiwgIk1BQ0hJ
TkVfRkVBVFVSRVMiLCAidmZhdCIsIGQpfSAke0BiYXNlX2JvdGhfY29udGFpbigiRElTVFJPX0ZF
QVRVUkVTIiwgIk1BQ0hJTkVfRkVBVFVSRVMiLCAiaXJkYSIsIGQpfSAke0BiYXNlX2JvdGhfY29u
dGFpbigiRElTVFJPX0ZFQVRVUkVTIiwgIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGNtY2lhIiwgZCl9
ICR7QGJhc2VfYm90aF9jb250YWluKCJESVNUUk9fRkVBVFVSRVMiLCAiTUFDSElORV9GRUFUVVJF
UyIsICJwY2kiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4oIkRJU1RST19GRUFUVVJFUyIsICJN
QUNISU5FX0ZFQVRVUkVTIiwgInVzYmdhZGdldCIsIGQpfSAke0BiYXNlX2JvdGhfY29udGFpbigi
RElTVFJPX0ZFQVRVUkVTIiwgIk1BQ0hJTkVfRkVBVFVSRVMiLCAidXNiaG9zdCIsIGQpfSAke0Bi
YXNlX2JvdGhfY29udGFpbigiRElTVFJPX0ZFQVRVUkVTIiwgIk1BQ0hJTkVfRkVBVFVSRVMiLCAi
d2lmaSIsIGQpfQpDT01CSU5FRF9GRUFUVVJFUz0iZXh0MiAgICBwY2kiCiMgUEtHREVTVFdPUks9
JHtXT1JLRElSfS9wa2dkYXRhClBLR0RFU1RXT1JLPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGIt
ZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9wa2dkYXRhIgojIEJBU0Vf
TElCX3R1bmUtcG93ZXJwYz1saWIKQkFTRV9MSUJfdHVuZS1wb3dlcnBjPSJsaWIiCiMgTERDT05G
SUdERVBFTkQ9bGRjb25maWctbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QKTERDT05GSUdERVBF
TkQ9ImxkY29uZmlnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgojIFNSQ0RBVEU9JHtEQVRF
fQpTUkNEQVRFPSIyMDExMTIxMSIKIyBTRVBQVUtVX1BBU1M9Tm9uZQojIFRBUkdFVF9DQ19BUkNI
PSR7VFVORV9DQ0FSR1N9ClRBUkdFVF9DQ19BUkNIPSItbTMyICAgLW1jcHU9ODU0OCAtbWFiaT1z
cGUgLW1zcGUiCiMgUUVNVV9PUFRJT05TX2FybXY2PS1jcHUgYXJtMTEzNgpRRU1VX09QVElPTlNf
YXJtdjY9Ii1jcHUgYXJtMTEzNiIKIyBIT1NUX0FSQ0g9JHtUQVJHRVRfQVJDSH0KSE9TVF9BUkNI
PSJwb3dlcnBjIgojIEVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT049MQpFTkFCTEVfQklO
QVJZX0xPQ0FMRV9HRU5FUkFUSU9OPSIxIgojIFRBUkdFVF9PUz1saW51eCR7TElCQ0VYVEVOU0lP
Tn0ke0FCSUVYVEVOU0lPTn0KVEFSR0VUX09TPSJsaW51eC1nbnVzcGUiCiMgU09VUkNFX01JUlJP
Ul9VUkw9aHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpTT1VSQ0Vf
TUlSUk9SX1VSTD0iaHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLyIK
IyBTT0xJQlNfZGFyd2luOD0uKi5keWxpYgpTT0xJQlNfZGFyd2luOD0iLiouZHlsaWIiCiMgU09M
SUJTX2Rhcndpbjk9LiouZHlsaWIKU09MSUJTX2Rhcndpbjk9Ii4qLmR5bGliIgojIEFCSUVYVEVO
U0lPTj0ke0BbJycsJ3NwZSddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJywgVHJ1ZSkgaW4gWydwcGMt
ZWZkJywgJ3BwYy1lZnMnXV19CkFCSUVYVEVOU0lPTj0ic3BlIgojIEZVTExfT1BUSU1JWkFUSU9O
PS1PMiAtcGlwZSAke0RFQlVHX0ZMQUdTfQpGVUxMX09QVElNSVpBVElPTj0iLU8yIC1waXBlIC1n
IC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyIKIyBUQVJHRVRfQVNfQVJDSD0ke1RVTkVf
QVNBUkdTfQojIFBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbj0yLjYuNgpQUkVGRVJSRURfVkVSU0lP
Tl9weXRob249IjIuNi42IgojIEZJTEVTXyR7UE59PU5vbmUKIyBQUkVGRVJSRURfVkVSU0lPTl9s
aWJnY2MtbmF0aXZlc2RrPSR7U0RLR0NDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fbGliZ2Nj
LW5hdGl2ZXNkaz0iNC42JSIKIyBJTUFHRV9ERVBFTkRTX3NxdWFzaGZzLWx6bWE9c3F1YXNoZnMt
bHptYS10b29scy1uYXRpdmUKSU1BR0VfREVQRU5EU19zcXVhc2hmcy1sem1hPSJzcXVhc2hmcy1s
em1hLXRvb2xzLW5hdGl2ZSIKIyBQQVRDSFJFU09MVkU9bm9vcApQQVRDSFJFU09MVkU9Im5vb3Ai
CiMgTEdQTHYyX1dISVRFTElTVF9HUEx2Mz1saWJhc3N1YW4gZ251dGxzIGxpYnRhc24xIGxpYmlk
biBsaWJnY2MgZ2NjLXJ1bnRpbWUKTEdQTHYyX1dISVRFTElTVF9HUEx2Mz0ibGliYXNzdWFuIGdu
dXRscyBsaWJ0YXNuMSBsaWJpZG4gbGliZ2NjIGdjYy1ydW50aW1lIgojIEFTU1VNRV9QUk9WSURF
RD1iemlwMi1uYXRpdmUgY3ZzLW5hdGl2ZSBncmVwLW5hdGl2ZSBkaWZmc3RhdC1uYXRpdmUgcGF0
Y2gtbmF0aXZlIHBlcmwtbmF0aXZlLXJ1bnRpbWUgcHl0aG9uLW5hdGl2ZS1ydW50aW1lIHN2bi1u
YXRpdmUgdGFyLW5hdGl2ZSB0ZXhpbmZvLW5hdGl2ZSB2aXJ0dWFsL2xpYmludGwtbmF0aXZlICAk
e1NTVEFURV9QS0dfVEFSWklQUFJPR30tbmF0aXZlCkFTU1VNRV9QUk9WSURFRD0iYnppcDItbmF0
aXZlIGN2cy1uYXRpdmUgZ3JlcC1uYXRpdmUgZGlmZnN0YXQtbmF0aXZlIHBhdGNoLW5hdGl2ZSBw
ZXJsLW5hdGl2ZS1ydW50aW1lIHB5dGhvbi1uYXRpdmUtcnVudGltZSBzdm4tbmF0aXZlIHRhci1u
YXRpdmUgdGV4aW5mby1uYXRpdmUgdmlydHVhbC9saWJpbnRsLW5hdGl2ZSAgeHotbmF0aXZlIgoj
IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtaW5pdGlhbD1O
b25lCiMgRElTVFJPX05BTUU9WW9jdG8gKEJ1aWx0IGJ5IFBva3kgNi4wKQpESVNUUk9fTkFNRT0i
WW9jdG8gKEJ1aWx0IGJ5IFBva3kgNi4wKSIKIyBTRUNUSU9OX2ZzbC1pbWFnZS1zaW1wbGUtZGV2
PWRldmVsClNFQ1RJT05fZnNsLWltYWdlLXNpbXBsZS1kZXY9ImRldmVsIgojIEZSRUVCU0RfTUlS
Uk9SPWZ0cDovL2Z0cC5mcmVlYnNkLm9yZy9wdWIvRnJlZUJTRC8KRlJFRUJTRF9NSVJST1I9ImZ0
cDovL2Z0cC5mcmVlYnNkLm9yZy9wdWIvRnJlZUJTRC8iCiMgUFJFRkVSUkVEX1ZFUlNJT05fYmlu
dXRpbHMtY3Jvc3M9JHtCSU5VVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMtY3Jv
c3M9IjIuMjEuMWEiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklY
fWJpbnV0aWxzPU5vbmUKIyBIT1NUX1BSRUZJWD0ke1RBUkdFVF9QUkVGSVh9CkhPU1RfUFJFRklY
PSJwb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtIgojIERJU1RST19FWFRSQV9SUkVDT01NRU5EUz0g
CkRJU1RST19FWFRSQV9SUkVDT01NRU5EUz0iIgojIExDX0FMTD1DCmV4cG9ydCBMQ19BTEw9IkMi
CiMgUEtHRD0ke1dPUktESVJ9L3BhY2thZ2UKUEtHRD0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2Fj
aGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRi
LWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcGFja2FnZSIKIyBQS0dF
PSR7QFsnJywnJHtQRVx4N2QnXVtiYi5kYXRhLmdldFZhcignUEUnLGQsMSkgPiAwXX0KIyBIT1NU
X1NZUz0ke0hPU1RfQVJDSH0ke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9CkhPU1RfU1lTPSJwb3dl
cnBjLWZzbC1saW51eC1nbnVzcGUiCiMgU1NUQVRFVEFTS05BTUVTPWRlcGxveS1ycG0gcG9wdWxh
dGUtbGljIHBhY2thZ2UgcG9wdWxhdGUtc3lzcm9vdApTU1RBVEVUQVNLTkFNRVM9ImRlcGxveS1y
cG0gcG9wdWxhdGUtbGljIHBhY2thZ2UgcG9wdWxhdGUtc3lzcm9vdCIKIyBQS0dWPSR7UFZ9ClBL
R1Y9IjEuMCIKIyBUQVJHRVRfQ1BQRkxBR1M9CiMgSU1BR0VfQ01EX3Rhci54ej1jZCAke0lNQUdF
X1JPT1RGU30gJiYgdGFyIC0teHogLWN2ZiAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFN
RX0ucm9vdGZzLnRhci54eiAuCklNQUdFX0NNRF90YXIueHo9ImNkIC9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9w
MTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAm
JiB0YXIgLS14eiAtY3ZmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxl
LXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy50YXIueHogLiIKIyBCQkZJTEVfUEFUVEVS
Tl95b2N0bz1eL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLXlv
Y3RvLwpCQkZJTEVfUEFUVEVSTl95b2N0bz0iXi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvbWV0YS15b2N0by8iCiMgUFJFRkVSUkVEX1BST1ZJREVSX29wa2c9b3BrZwpQ
UkVGRVJSRURfUFJPVklERVJfb3BrZz0ib3BrZyIKIyBUVU5FX0FTQVJHUz0KIyBGSUxFPS9vcHQv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhLWZzbC1wcGMtcHJpdmF0ZS9pbWFnZXMvZnNs
LWltYWdlLXNpbXBsZS5iYgpGSUxFPSIvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0
YS1mc2wtcHBjLXByaXZhdGUvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUuYmIiCiMgRVhURU5EUEtH
RVZFUj0ke0BbJycsJyR7UEtHRVx4N2Q6J11bYmIuZGF0YS5nZXRWYXIoJ1BLR0UnLGQsMSkuc3Ry
aXAoKSAhPSAnJ119CiMgbGliZGlyX25hdGl2ZT0ke3ByZWZpeF9uYXRpdmV9L2xpYgpsaWJkaXJf
bmF0aXZlPSIvdXNyL2xpYiIKIyBGUkVFU0NBTEVfR0lUPWdpdDovL2dpdC5hbS5mcmVlc2NhbGUu
bmV0CkZSRUVTQ0FMRV9HSVQ9ImdpdDovL2dpdC5hbS5mcmVlc2NhbGUubmV0IgojIFBSRUZFUlJF
RF9QUk9WSURFUl9kYnVzLWdsaWI9ZGJ1cy1nbGliClBSRUZFUlJFRF9QUk9WSURFUl9kYnVzLWds
aWI9ImRidXMtZ2xpYiIKIyBleGVjX3ByZWZpeD0vdXNyCmV4cG9ydCBleGVjX3ByZWZpeD0iL3Vz
ciIKIyBiaW5kaXJfY3Jvc3NzY3JpcHRzPSR7YmluZGlyfS9jcm9zc3NjcmlwdHMKYmluZGlyX2Ny
b3Nzc2NyaXB0cz0iL3Vzci9iaW4vY3Jvc3NzY3JpcHRzIgojIFBSRUZFUlJFRF9WRVJTSU9OX2Jp
bnV0aWxzPSR7QklOVVZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzPSIyLjIxLjFh
IgojIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNlNTAwdjI9cHBjZTUwMHYyClBBQ0tBR0Vf
RVhUUkFfQVJDSFNfdHVuZS1wcGNlNTAwdjI9InBwY2U1MDB2MiIKIyBQUkVGRVJSRURfUFJPVklE
RVJfdmlydHVhbC9wb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtY29tcGlsZXJsaWJzPWdjYy1ydW50
aW1lClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3Bvd2VycGMtZnNsLWxpbnV4LWdudXNwZS1j
b21waWxlcmxpYnM9ImdjYy1ydW50aW1lIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3Bv
d2VycGMtZnNsLWxpbnV4LWdudXNwZS1nKys9Z2NjLWNyb3NzClBSRUZFUlJFRF9QUk9WSURFUl92
aXJ0dWFsL3Bvd2VycGMtZnNsLWxpbnV4LWdudXNwZS1nKys9ImdjYy1jcm9zcyIKIyBGSUxFU19m
c2wtaW1hZ2Utc2ltcGxlLWRiZz0ke0BiYi5kYXRhLmdldFZhcihbJ0RPVERFQlVHLWRiZycsICdE
RUJVR0ZJTEVESVJFQ1RPUlktZGJnJ11bYmIuZGF0YS5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BM
SVRfU1RZTEUnLCBkLCAxKSA9PSAnZGVidWctZmlsZS1kaXJlY3RvcnknXSwgZCwgMSl9CkZJTEVT
X2ZzbC1pbWFnZS1zaW1wbGUtZGJnPSIvdXNyL2Jpbi8uZGVidWcgL3Vzci9zYmluLy5kZWJ1ZyAv
dXNyL2xpYmV4ZWMvLmRlYnVnIC91c3IvbGliLy5kZWJ1ZyAvYmluLy5kZWJ1ZyAvc2Jpbi8uZGVi
dWcgL2xpYi8uZGVidWcgL3Vzci9saWIvZnNsLWltYWdlLXNpbXBsZS8uZGVidWcgL3Vzci9saWIv
bWF0Y2hib3gtcGFuZWwvLmRlYnVnIC91c3Ivc3JjL2RlYnVnIgojIFNES1BBVEg9L29wdC8ke0RJ
U1RST30vJHtTREtfVkVSU0lPTn0KU0RLUEFUSD0iL29wdC9mc2wvMS4xIgojIEdST1VQX2xvY2Fs
ZT1Ob25lCiMgU1NUQVRFX1BLR05BTUU9JHtTU1RBVEVfUEtHU1BFQ30ke0JCX1RBU0tIQVNIfQpT
U1RBVEVfUEtHTkFNRT0ic3N0YXRlLWZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItZnNsLWxpbnV4
LWdudXNwZS0xLjAtcjAtcDEwMjByZGItMi0ke0JCX1RBU0tIQVNIfSIKIyBSREVQRU5EU18ke1BO
fS1kZXY9Tm9uZQojIEJVSUxEX1JBTkxJQj0ke0JVSUxEX1BSRUZJWH1yYW5saWIKZXhwb3J0IEJV
SUxEX1JBTkxJQj0icmFubGliIgojIEhPU1RfTk9OU1lTVj1Ob25lCiMgRkVUQ0hDTURfY3ZzPS91
c3IvYmluL2VudiBjdnMKRkVUQ0hDTURfY3ZzPSIvdXNyL2Jpbi9lbnYgY3ZzIgojIFBSRUZFUlJF
RF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtaW50ZXJtZWRpYXRlPU5vbmUK
IyBQUkVGRVJSRURfUFJPVklERVJfbGliZ2NjPWxpYmdjYwpQUkVGRVJSRURfUFJPVklERVJfbGli
Z2NjPSJsaWJnY2MiCiMgR0VOVE9PX01JUlJPUj1odHRwOi8vZGlzdGZpbGVzLmdlbnRvby5vcmcv
ZGlzdGZpbGVzCkdFTlRPT19NSVJST1I9Imh0dHA6Ly9kaXN0ZmlsZXMuZ2VudG9vLm9yZy9kaXN0
ZmlsZXMiCiMgQ09fRElSPSR7RExfRElSfQpDT19ESVI9Ii9vcHQveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9zb3VyY2VzIgojIE1VTFRJTUFDSF9UQVJHRVRfU1lTPSR7UEFDS0FHRV9BUkNIfSR7
VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9Ck1VTFRJTUFDSF9UQVJHRVRfU1lTPSJwMTAyMHJk
Yi1mc2wtbGludXgtZ251c3BlIgojIEJCX0JBU0VIQVNIX3Rhc2stZG9fcG9wdWxhdGVfbGljX3Nl
dHNjZW5lPWYzNWE2NTQwNjg2MDY2YzFjYTNhOGY2ZGVjNmVlZjQ1CkJCX0JBU0VIQVNIX3Rhc2st
ZG9fcG9wdWxhdGVfbGljX3NldHNjZW5lPSJmMzVhNjU0MDY4NjA2NmMxY2EzYThmNmRlYzZlZWY0
NSIKIyBIT1NUVE9PTFNfV0hJVEVMSVNUX0dQTHYzPQojIFRVTkVfTERBUkdTPQojIGJhc2VsaWI9
JHtCQVNFTElCfQpiYXNlbGliPSJsaWIiCiMgU1NUQVRFX1ZFUlNJT049MgpTU1RBVEVfVkVSU0lP
Tj0iMiIKIyBJTUFHRV9DTURfY3Bpby54ej10eXBlIGNwaW8gPi9kZXYvbnVsbDsgY2QgJHtJTUFH
RV9ST09URlN9ICYmIChmaW5kIC4gfCBjcGlvIC1vIC1IIG5ld2MgfCB4eiAtYyAke1haX0NPTVBS
RVNTSU9OX0xFVkVMfSAtLWNoZWNrPSR7WFpfSU5URUdSSVRZX0NIRUNLfSA+ICR7REVQTE9ZX0RJ
Ul9JTUFHRX0vJHtJTUFHRV9OQU1FfS5yb290ZnMuY3Bpby54eikgJHtFWFRSQV9JTUFHRUNNRH0K
SU1BR0VfQ01EX2NwaW8ueHo9InR5cGUgY3BpbyA+L2Rldi9udWxsOyBjZCAvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dv
cmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290
ZnMgJiYgKGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyB8IHh6IC1jIC1lIC05IC0tY2hlY2s9Y3Jj
MzIgPiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0y
MDExMTIxMTA1MTYyMC5yb290ZnMuY3Bpby54eikiCiMgQkJfRU5WX0VYVFJBV0hJVEU9S1NSQyBV
U1JDCkJCX0VOVl9FWFRSQVdISVRFPSJLU1JDIFVTUkMiCiMgUEFDS0FHRV9HUk9VUF9hcHBzLXgx
MS1nYW1lcz10YXNrLWNvcmUtYXBwcy14MTEtZ2FtZXMKUEFDS0FHRV9HUk9VUF9hcHBzLXgxMS1n
YW1lcz0idGFzay1jb3JlLWFwcHMteDExLWdhbWVzIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0
dWFsLyR7VEFSR0VUX1BSRUZJWH1nKys9Tm9uZQojIElNQUdFX0NNRF9leHQ0Lmd6LnUtYm9vdD0k
e0lNQUdFX0NNRF9leHQ0Lmd6fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9t
a2ltYWdlICR7SU1BR0VfTkFNRX0ucm9vdGZzLmV4dDQuZ3ogZ3ppcApJTUFHRV9DTURfZXh0NC5n
ei51LWJvb3Q9InJtIC1yZiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1pbWFn
ZS1zaW1wbGUgJiYgbWtkaXIgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wtaW1h
Z2Utc2ltcGxlIFwKCW9lX21rZXh0NGZzIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3ot
ZnNsLWltYWdlLXNpbXBsZS9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIw
LnJvb3Rmcy5leHQ0IFwKCWd6aXAgLWYgLTkgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5n
ei1mc2wtaW1hZ2Utc2ltcGxlL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2
MjAucm9vdGZzLmV4dDQgXAoJbXYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wt
aW1hZ2Utc2ltcGxlL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9v
dGZzLmV4dDQuZ3ogL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEw
MjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLmV4dDQuZ3ogXAoJcm1kaXIgL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9k
ZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wtaW1hZ2Utc2ltcGxlIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9lX21raW1hZ2UgZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDEx
MTIxMTA1MTYyMC5yb290ZnMuZXh0NC5neiBnemlwIgojIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1j
cm9zc3Nkay1pbnRlcm1lZGlhdGU9JHtTREtHQ0NWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9n
Y2MtY3Jvc3NzZGstaW50ZXJtZWRpYXRlPSI0LjYlIgojIEJVSUxEU0RLX0NQUEZMQUdTPS1pc3lz
dGVtJHtTVEFHSU5HX0lOQ0RJUn0KQlVJTERTREtfQ1BQRkxBR1M9Ii1pc3lzdGVtL2xvY2FsL2pl
bmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3Rt
cC9zeXNyb290cy9wMTAyMHJkYi91c3IvaW5jbHVkZSIKIyBBVkFJTFRVTkVTPSBwb3dlcnBjIHBv
d2VycGMtbmYgcHBjZTUwMHYyCkFWQUlMVFVORVM9InBvd2VycGMgcG93ZXJwYy1uZiBwcGNlNTAw
djIiCiMgQkJfSEFTSEJBU0VfV0hJVEVMSVNUPVRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tI
QVNIIEJCUEFUSCBETF9ESVIgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxF
X0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gVVNFUiBGSUxFU1BBVEggU1RBR0lOR19E
SVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UKQkJfSEFTSEJBU0VfV0hJVEVMSVNU
PSJUTVBESVIgRklMRSBQQVRIIFBXRCBCQl9UQVNLSEFTSCBCQlBBVEggRExfRElSIFNTVEFURV9E
SVIgVEhJU0RJUiBGSUxFU0VYVFJBUEFUSFMgRklMRV9ESVJOQU1FIEhPTUUgTE9HTkFNRSBTSEVM
TCBURVJNIFVTRVIgRklMRVNQQVRIIFNUQUdJTkdfRElSX0hPU1QgU1RBR0lOR19ESVJfVEFSR0VU
IENPUkVCQVNFIgojIFNVTU1BUllfJHtQTn0tZGJnPU5vbmUKIyBvcGtnbGliZGlyPSR7bG9jYWxz
dGF0ZWRpcn0vbGliL29wa2cKb3BrZ2xpYmRpcj0iL3Zhci9saWIvb3BrZyIKIyBGRVRDSENNRF9z
dm49L3Vzci9iaW4vZW52IHN2bgpGRVRDSENNRF9zdm49Ii91c3IvYmluL2VudiBzdm4iCiMgVEVS
TUNNRFJVTj0ke1hURVJNX1RFUk1DTURSVU59ClRFUk1DTURSVU49Inh0ZXJtIC1UIFwiJFRFUk1X
SU5ET1dUSVRMRVwiIC1lICRTSEVMTENNRFMiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwv
a2VybmVsPWxpbnV4LXFvcmlxLXNkawpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWw9
ImxpbnV4LXFvcmlxLXNkayIKIyBCQl9CQVNFSEFTSF90YXNrLWRvX2xpc3R0YXNrcz1lOWEyZDg3
ODA0OTI3OTliYTM5ZTIyZGQ2YjI2MjBjZgpCQl9CQVNFSEFTSF90YXNrLWRvX2xpc3R0YXNrcz0i
ZTlhMmQ4NzgwNDkyNzk5YmEzOWUyMmRkNmIyNjIwY2YiCiMgWFpfSU5URUdSSVRZX0NIRUNLPWNy
YzMyClhaX0lOVEVHUklUWV9DSEVDSz0iY3JjMzIiCiMgQkJfQkFTRUhBU0hfdGFzay1kb19wYWNr
YWdlX3dyaXRlPTc4ZTFiNmI3NGM2MTAyMDcxZTA0NzViNzM1ZjhkM2ViCkJCX0JBU0VIQVNIX3Rh
c2stZG9fcGFja2FnZV93cml0ZT0iNzhlMWI2Yjc0YzYxMDIwNzFlMDQ3NWI3MzVmOGQzZWIiCiMg
c3lzY29uZmRpcj0ke2Jhc2VfcHJlZml4fS9ldGMKZXhwb3J0IHN5c2NvbmZkaXI9Ii9ldGMiCiMg
U1NUQVRFX1BLR19UQVJaSVBQUk9HPXh6ClNTVEFURV9QS0dfVEFSWklQUFJPRz0ieHoiCiMgQ0NM
RD0ke0NDfQpleHBvcnQgQ0NMRD0icG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWdjYyAgLW0zMiAg
IC1tY3B1PTg1NDggLW1hYmk9c3BlIC1tc3BlIC0tc3lzcm9vdD0vbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3Rz
L3AxMDIwcmRiIgojIFRVTkVfRkVBVFVSRVM9JHtUVU5FX0ZFQVRVUkVTX3R1bmUtJHtERUZBVUxU
VFVORX19ClRVTkVfRkVBVFVSRVM9Im0zMiBzcGUgcHBjZTUwMHYyIgojIENIRUNLQ09NTUFORF93
Z2V0PS91c3IvYmluL2VudiB3Z2V0IC0tc3BpZGVyIC10IDUgLS1wYXNzaXZlLWZ0cCAtLW5vLWNo
ZWNrLWNlcnRpZmljYXRlIC1QICR7RExfRElSfSAnJHtVUkl9JwpDSEVDS0NPTU1BTkRfd2dldD0i
L3Vzci9iaW4vZW52IHdnZXQgLS1zcGlkZXIgLXQgNSAtLXBhc3NpdmUtZnRwIC0tbm8tY2hlY2st
Y2VydGlmaWNhdGUgLVAgL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL3NvdXJjZXMgJyR7
VVJJfSciCiMgR0lUX1BST1hZX0NPTU1BTkQ9L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
Ly4vc2NyaXB0cy9naXQtcHJveHkKR0lUX1BST1hZX0NPTU1BTkQ9Ii9vcHQveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi8uL3NjcmlwdHMvZ2l0LXByb3h5IgojIFFBUEFUSFRFU1Q9Tm9uZQojIFNF
TEVDVEVEX09QVElNSVpBVElPTj0ke0BiYi5kYXRhLmdldFZhcihbJ0ZVTExfT1BUSU1JWkFUSU9O
JywgJ0RFQlVHX09QVElNSVpBVElPTiddW2JiLmRhdGEuZ2V0VmFyKCdERUJVR19CVUlMRCcsIGQs
IDEpID09ICcxJ10sIGQsIDEpfQpTRUxFQ1RFRF9PUFRJTUlaQVRJT049Ii1PMiAtcGlwZSAtZyAt
ZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMiCiMgQVNORUVERURfcG4tb3Blbm9iZXg9CiMg
U0RLR0NDVkVSU0lPTj00LjYlClNES0dDQ1ZFUlNJT049IjQuNiUiCiMgREVCSUFOX05BTUVTPTEK
REVCSUFOX05BTUVTPSIxIgojIERFU0NSSVBUSU9OX2ZzbC1pbWFnZS1zaW1wbGUtc3RhdGljZGV2
PSR7REVTQ1JJUFRJT059ICBUaGlzIHBhY2thZ2UgY29udGFpbnMgc3RhdGljIGxpYnJhcmllcyBm
b3Igc29mdHdhcmUgZGV2ZWxvcG1lbnQuCkRFU0NSSVBUSU9OX2ZzbC1pbWFnZS1zaW1wbGUtc3Rh
dGljZGV2PSJmc2wtaW1hZ2Utc2ltcGxlIHZlcnNpb24gMS4wLXIwICBUaGlzIHBhY2thZ2UgY29u
dGFpbnMgc3RhdGljIGxpYnJhcmllcyBmb3Igc29mdHdhcmUgZGV2ZWxvcG1lbnQuIgojIFBBQ0tB
R0VJTkRFWERFUFM9IHJwbS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBjcmVhdGVyZXBvLW5h
dGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290ClBBQ0tBR0VJTkRFWERFUFM9InJwbS1uYXRpdmU6ZG9f
cG9wdWxhdGVfc3lzcm9vdCBjcmVhdGVyZXBvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290Igoj
IFFBX0xPRz1Ob25lCiMgUEFDS0FHRUxPQ0s9JHtTVEFHSU5HX0RJUn0vcGFja2FnZS1vdXRwdXQu
bG9jawpQQUNLQUdFTE9DSz0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wYWNrYWdlLW91dHB1dC5sb2Nr
IgojIGNvcmUtaW1hZ2Vfcm9vdGZzX25vX3hfc3RhcnR1cD0JaW1hZ2Vfcm9vdGZzX25vX3hfc3Rh
cnR1cAojCmNvcmUtaW1hZ2Vfcm9vdGZzX25vX3hfc3RhcnR1cD0iaW1hZ2Vfcm9vdGZzX25vX3hf
c3RhcnR1cCIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9wb3dlcnBjLWZzbC1saW51eC1n
bnVzcGUtZ2NjPWdjYy1jcm9zcwpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9wb3dlcnBjLWZz
bC1saW51eC1nbnVzcGUtZ2NjPSJnY2MtY3Jvc3MiCiMgSU1BR0VfTkFNRT0ke0lNQUdFX0JBU0VO
QU1FfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9CklNQUdFX05BTUU9ImZzbC1pbWFnZS1zaW1wbGUt
cDEwMjByZGItMjAxMTEyMTEwNTE2MjAiCiMgU1RBR0lOR19ESVJfVENCT09UU1RSQVA9JHtTVEFH
SU5HX0RJUl9UQVJHRVR9LXRjYm9vdHN0cmFwClNUQUdJTkdfRElSX1RDQk9PVFNUUkFQPSIvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiLXRjYm9vdHN0cmFwIgojIFNUQUdJTkdfTElCRElSX05B
VElWRT0ke1NUQUdJTkdfRElSX05BVElWRX0ke2xpYmRpcl9uYXRpdmV9ClNUQUdJTkdfTElCRElS
X05BVElWRT0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYiIKIyBRRU1V
X1RBUkdFVFM9YXJtIGkzODYgbWlwcyBtaXBzZWwgcHBjIHg4Nl82NApRRU1VX1RBUkdFVFM9ImFy
bSBpMzg2IG1pcHMgbWlwc2VsIHBwYyB4ODZfNjQiCiMgR1JPVVBfcGFja2FnaW5nPU5vbmUKIyBP
VkVSUklERVM9JHtUQVJHRVRfT1N9OiR7VEFSR0VUX0FSQ0h9OmJ1aWxkLSR7QlVJTERfT1N9OnBu
LSR7UE59OiR7TUFDSElORU9WRVJSSURFU306JHtESVNUUk9PVkVSUklERVN9OmZvcmNldmFyaWFi
bGU6bGliYy1nbGliYwpPVkVSUklERVM9ImxpbnV4LWdudXNwZTpwb3dlcnBjOmJ1aWxkLWxpbnV4
OnBuLWZzbC1pbWFnZS1zaW1wbGU6cDEwMjByZGI6ZTUwMHYyOmZzbDpmb3JjZXZhcmlhYmxlOmxp
YmMtZ2xpYmMiCiMgSU5IRVJJVD0gb3duLW1pcnJvcnMgJHtQQUNLQUdFX0NMQVNTRVN9ICR7VVNF
Ul9DTEFTU0VTfSAke0lOSEVSSVRfSU5TQU5FfSAke0lOSEVSSVRfRElTVFJPfSBzYW5pdHkKSU5I
RVJJVD0ib3duLW1pcnJvcnMgcGFja2FnZV9ycG0gaW1hZ2UtbWtsaWJzIGltYWdlLXByZWxpbmsg
aW5zYW5lIGRlYmlhbiBkZXZzaGVsbCBzc3RhdGUgbGljZW5zZSBzYW5pdHkiCiMgQkJfQkFTRUhB
U0hfdGFzay1kb19kZXZzaGVsbD1hYTQ4ZDIxOWNiZGEzZjMyYzliMTZjMDQ4ZTVmZjYyZQpCQl9C
QVNFSEFTSF90YXNrLWRvX2RldnNoZWxsPSJhYTQ4ZDIxOWNiZGEzZjMyYzliMTZjMDQ4ZTVmZjYy
ZSIKIyBUQVJHRVRfTERfQVJDSD0ke1RVTkVfTERBUkdTfQojIFNES19TWVM9JHtTREtfQVJDSH0k
e1NES19WRU5ET1J9JHtAWyctJyArIGJiLmRhdGEuZ2V0VmFyKCdTREtfT1MnLCBkLCAxKSwgJydd
W2JiLmRhdGEuZ2V0VmFyKCdTREtfT1MnLCBkLCAxKSA9PSAoJycgb3IgJ2N1c3RvbScpXX0KU0RL
X1NZUz0ieDg2XzY0LWZzbHNkay1saW51eCIKIyBQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1M9CiMg
UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvcG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWdjYy1p
bml0aWFsPWdjYy1jcm9zcy1pbml0aWFsClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3Bvd2Vy
cGMtZnNsLWxpbnV4LWdudXNwZS1nY2MtaW5pdGlhbD0iZ2NjLWNyb3NzLWluaXRpYWwiCiMgQkJG
SUxFX1BSSU9SSVRZPTUKQkJGSUxFX1BSSU9SSVRZPSI1IgojIGJhc2VfZGVwPWRlZiBiYXNlX2Rl
cF9wcmVwZW5kKGQpOgojCSMKIwkjIElkZWFsbHkgdGhpcyB3aWxsIGNoZWNrIGEgZmxhZyBzbyB3
ZSB3aWxsIG9wZXJhdGUgcHJvcGVybHkgaW4KIwkjIHRoZSBjYXNlIHdoZXJlIGhvc3QgPT0gYnVp
bGQgPT0gdGFyZ2V0LCBmb3Igbm93IHdlIGRvbid0IHdvcmsgaW4KIwkjIHRoYXQgY2FzZSB0aG91
Z2guCiMJIwojCiMJZGVwcyA9ICIiCiMJIyBJTkhJQklUX0RFRkFVTFRfREVQUyBkb2Vzbid0IGFw
cGx5IHRvIHRoZSBwYXRjaCBjb21tYW5kLiAgV2hldGhlciBvciAgbm90CiMJIyB3ZSBuZWVkIHRo
YXQgYnVpbHQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNs
YXNzLCBub3QKIwkjIHRoZSBhcHBsaWNhdGlvbi4KIwlpZiBub3QgYmIuZGF0YS5nZXRWYXIoJ0lO
SElCSVRfREVGQVVMVF9ERVBTJywgZCk6CiMJCWlmIChiYi5kYXRhLmdldFZhcignSE9TVF9TWVMn
LCBkLCAxKSAhPQojCSAgICAgCSAgICBiYi5kYXRhLmdldFZhcignQlVJTERfU1lTJywgZCwgMSkp
OgojCQkJZGVwcyArPSAiIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyB2aXJ0dWFsLyR7VEFS
R0VUX1BSRUZJWH1jb21waWxlcmxpYnMgdmlydHVhbC9saWJjICIKIwlyZXR1cm4gZGVwcwojCmJh
c2VfZGVwPSJkZWYgYmFzZV9kZXBfcHJlcGVuZChkKTogXAoJIyBcCgkjIElkZWFsbHkgdGhpcyB3
aWxsIGNoZWNrIGEgZmxhZyBzbyB3ZSB3aWxsIG9wZXJhdGUgcHJvcGVybHkgaW4gXAoJIyB0aGUg
Y2FzZSB3aGVyZSBob3N0ID09IGJ1aWxkID09IHRhcmdldCwgZm9yIG5vdyB3ZSBkb24ndCB3b3Jr
IGluIFwKCSMgdGhhdCBjYXNlIHRob3VnaC4gXAoJIyBcCiBcCglkZXBzID0gXCJcIiBcCgkjIElO
SElCSVRfREVGQVVMVF9ERVBTIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHBhdGNoIGNvbW1hbmQuICBX
aGV0aGVyIG9yICBub3QgXAoJIyB3ZSBuZWVkIHRoYXQgYnVpbHQgaXMgdGhlIHJlc3BvbnNpYmls
aXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNsYXNzLCBub3QgXAoJIyB0aGUgYXBwbGljYXRp
b24uIFwKCWlmIG5vdCBiYi5kYXRhLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnLCBkKTog
XAoJCWlmIChiYi5kYXRhLmdldFZhcignSE9TVF9TWVMnLCBkLCAxKSAhPSBcCgkgICAgIAkgICAg
YmIuZGF0YS5nZXRWYXIoJ0JVSUxEX1NZUycsIGQsIDEpKTogXAoJCQlkZXBzICs9IFwiIHZpcnR1
YWwvcG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWdjYyB2aXJ0dWFsL3Bvd2VycGMtZnNsLWxpbnV4
LWdudXNwZS1jb21waWxlcmxpYnMgdmlydHVhbC9saWJjIFwiIFwKCXJldHVybiBkZXBzIgojIElN
QUdFX0NNRF9leHQyPWdlbmV4dDJmcyAtYiAkUk9PVEZTX1NJWkUgLWQgJHtJTUFHRV9ST09URlN9
ICR7RVhUUkFfSU1BR0VDTUR9ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfS5yb290
ZnMuZXh0MgpJTUFHRV9DTURfZXh0Mj0iZ2VuZXh0MmZzIC1iICRST09URlNfU0laRSAtZCAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEu
MC1yMC9yb290ZnMgIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLXAx
MDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQyIgojIEFTU1VNRV9TSExJQlM9Tm9uZQoj
IGJhc2VfbGliZGlyPSR7YmFzZV9wcmVmaXh9LyR7YmFzZWxpYn0KZXhwb3J0IGJhc2VfbGliZGly
PSIvbGliIgojIGNvcmUtaW1hZ2VfemFwX3Jvb3RfcGFzc3dvcmQ9CWltYWdlX3phcF9yb290X3Bh
c3N3b3JkCiMKY29yZS1pbWFnZV96YXBfcm9vdF9wYXNzd29yZD0iaW1hZ2VfemFwX3Jvb3RfcGFz
c3dvcmQiCiMgQkFTRUxJQj1saWIKQkFTRUxJQj0ibGliIgojIFNUQUdJTkdfSURMRElSPSR7U1RB
R0lOR19EQVRBRElSfS9pZGwKZXhwb3J0IFNUQUdJTkdfSURMRElSPSIvbG9jYWwvamVua2lucy95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jv
b3RzL3AxMDIwcmRiL3Vzci9zaGFyZS9pZGwiCiMgY29yZS1pbWFnZV9tYWtlX3ppbWFnZV9zeW1s
aW5rX3JlbGF0aXZlPQlpbWFnZV9tYWtlX3ppbWFnZV9zeW1saW5rX3JlbGF0aXZlCiMKY29yZS1p
bWFnZV9tYWtlX3ppbWFnZV9zeW1saW5rX3JlbGF0aXZlPSJpbWFnZV9tYWtlX3ppbWFnZV9zeW1s
aW5rX3JlbGF0aXZlIgojIFBBQ0tBR0VJTkRFWEVTPSBwYWNrYWdlX3VwZGF0ZV9pbmRleF9ycG07
IGNyZWF0ZXJlcG8gJHtERVBMT1lfRElSX1JQTX07ClBBQ0tBR0VJTkRFWEVTPSJwYWNrYWdlX3Vw
ZGF0ZV9pbmRleF9ycG07IGNyZWF0ZXJlcG8gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvcnBtOyIKIyBQUkVG
RVJSRURfUFJPVklERVJfdmlydHVhbC94ODZfNjQtZnNsc2RrLWxpbnV4LWxpYmMtZm9yLWdjYy1u
YXRpdmVzZGs9JHtUQ0xJQkN9LW5hdGl2ZXNkawpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94
ODZfNjQtZnNsc2RrLWxpbnV4LWxpYmMtZm9yLWdjYy1uYXRpdmVzZGs9ImVnbGliYy1uYXRpdmVz
ZGsiCiMgQlBOPSR7QGJhc2VfcHJ1bmVfc3VmZml4KGJiLmRhdGEuZ2V0VmFyKCdQTicsIGQsIFRy
dWUpLCBiYi5kYXRhLmdldFZhcignU1BFQ0lBTF9QS0dTVUZGSVgnLCBkLCBUcnVlKS5zcGxpdCgp
LCBkKX0KQlBOPSJmc2wtaW1hZ2Utc2ltcGxlIgojIEFTTkVFREVEX3BuLWRpYWxlcj0KIyBQQVRI
PSR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfToke1NUQUdJTkdfQklORElSX0NST1NTfToke1NU
QUdJTkdfRElSX05BVElWRX0ke3NiaW5kaXJfbmF0aXZlfToke1NUQUdJTkdfQklORElSX05BVElW
RX06JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiYXNlX3NiaW5kaXJfbmF0aXZlfToke1NUQUdJTkdf
RElSX05BVElWRX0vJHtiYXNlX2JpbmRpcl9uYXRpdmV9Oi9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvc2NyaXB0czovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2JpdGJha2UvYmluLzovb3B0L3B5dGhvbjIuNi9iaW4vOi91c3IvbG9jYWwvc2Jp
bjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVz
Oi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc2NyaXB0cwpleHBvcnQg
UEFUSD0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9wcGNlNTAwdjIt
ZnNsLWxpbnV4LWdudXNwZTovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3Vzci9iaW4vY3Jv
c3NzY3JpcHRzOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRf
cDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zYmluOi9sb2Nh
bC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFz
ZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW46L2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94
ODZfNjQtbGludXgvc2JpbjovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC8vYmluOi9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc2NyaXB0czovbG9jYWwvamVu
a2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2JpdGJha2UvYmluLzovb3B0L3B5dGhvbjIu
Ni9iaW4vOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46
L3NiaW46L2JpbjovdXNyL2dhbWVzOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEw
MjByZGIvc2NyaXB0cyIKIyBTUERYTElDRU5TRU1BUD1Ob25lCiMgVEFSR0VUX0NGTEFHUz0ke1RB
UkdFVF9DUFBGTEFHU30gJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059CmV4cG9ydCBUQVJHRVRfQ0ZM
QUdTPSItTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIgojIGJhc2Vf
YmluZGlyPSR7YmFzZV9wcmVmaXh9L2JpbgpleHBvcnQgYmFzZV9iaW5kaXI9Ii9iaW4iCiMgSU1B
R0VfQ01EX2V4dDIuYnoyLnUtYm9vdD0ke0lNQUdFX0NNRF9leHQyLmJ6Mn0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2VfbWtpbWFnZSAke0lNQUdFX05BTUV9LnJvb3Rmcy5leHQy
LmJ6MiBiemlwMgpJTUFHRV9DTURfZXh0Mi5iejIudS1ib290PSJybSAtcmYgL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9k
ZXBsb3kvaW1hZ2VzL3RtcC5neiAmJiBta2RpciAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10
ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1w
Lmd6IFwKCWdlbmV4dDJmcyAtYiAkUk9PVEZTX1NJWkUgLWQgL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIw
cmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzICAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6L2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAx
MTEyMTEwNTE2MjAucm9vdGZzLmV4dDIgXAoJYnppcDIgLWYgLTkgL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kv
aW1hZ2VzL3RtcC5nei9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJv
b3Rmcy5leHQyIFwKCW12IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3ovZnNsLWltYWdl
LXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0Mi5iejIgL2xvY2FsL2pl
bmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3Rt
cC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAu
cm9vdGZzLmV4dDIuYnoyIFwKCXJtZGlyIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3og
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfbWtpbWFnZSBmc2wtaW1hZ2Ut
c2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQyLmJ6MiBiemlwMiIKIyBN
VUxUSUxJQl9QUkVGSVhfTElTVD0KIyBQS0dSPSR7UFJ9JHtFWFRFTkRQUkFVVE99ClBLR1I9InIw
IgojIFBLR19DT05GSUdfTElCRElSPSR7UEtHX0NPTkZJR19ESVJ9CmV4cG9ydCBQS0dfQ09ORklH
X0xJQkRJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi8vdXNyL2xpYi9wa2djb25maWci
CiMgU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUz1wYXRjaCBkaWZmc3RhdCB0ZXhpMmh0bWwgbWFr
ZWluZm8gY3ZzIHN2biBiemlwMiB0YXIgZ3ppcCBnYXdrIGNocnBhdGggd2dldCBjcGlvClNBTklU
WV9SRVFVSVJFRF9VVElMSVRJRVM9InBhdGNoIGRpZmZzdGF0IHRleGkyaHRtbCBtYWtlaW5mbyBj
dnMgc3ZuIGJ6aXAyIHRhciBnemlwIGdhd2sgY2hycGF0aCB3Z2V0IGNwaW8iCiMgU0VQUFVLVV9D
T01QT05FTlQ9Tm9uZQojIEJCRklMRV9QUklPUklUWV9ub3JtYWw9NQpCQkZJTEVfUFJJT1JJVFlf
bm9ybWFsPSI1IgojIE1BQ0hJTkU9cDEwMjByZGIKdW5zZXQgTUFDSElORQojIEdJVERJUj0ke0NP
X0RJUn0vZ2l0MgpHSVRESVI9Ii9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zb3VyY2Vz
L2dpdDIiCiMgRVhDTFVERV9GUk9NX1dPUkxEX3BuLWdvYmplY3QtaW50cm9zcGVjdGlvbj0xCkVY
Q0xVREVfRlJPTV9XT1JMRF9wbi1nb2JqZWN0LWludHJvc3BlY3Rpb249IjEiCiMgTUFDSElORU9W
RVJSSURFUz0ke01BQ0hJTkV9OmU1MDB2MgpNQUNISU5FT1ZFUlJJREVTPSJwMTAyMHJkYjplNTAw
djIiCiMgREVTQ1JJUFRJT05fZnNsLWltYWdlLXNpbXBsZS1kZXY9JHtERVNDUklQVElPTn0gIFRo
aXMgcGFja2FnZSBjb250YWlucyBzeW1ib2xpYyBsaW5rcywgaGVhZGVyIGZpbGVzLCBhbmQgcmVs
YXRlZCBpdGVtcyBuZWNlc3NhcnkgZm9yIHNvZnR3YXJlIGRldmVsb3BtZW50LgpERVNDUklQVElP
Tl9mc2wtaW1hZ2Utc2ltcGxlLWRldj0iZnNsLWltYWdlLXNpbXBsZSB2ZXJzaW9uIDEuMC1yMCAg
VGhpcyBwYWNrYWdlIGNvbnRhaW5zIHN5bWJvbGljIGxpbmtzLCBoZWFkZXIgZmlsZXMsIGFuZCBy
ZWxhdGVkIGl0ZW1zIG5lY2Vzc2FyeSBmb3Igc29mdHdhcmUgZGV2ZWxvcG1lbnQuIgojIHByZWZp
eF9uYXRpdmU9L3VzcgpwcmVmaXhfbmF0aXZlPSIvdXNyIgojIEJCRklMRV9QUklPUklUWV95b2N0
bz01CkJCRklMRV9QUklPUklUWV95b2N0bz0iNSIKIyBTRUNUSU9OXyR7UE59LWRldj1Ob25lCiMg
YmFzZV9zYmluZGlyX25hdGl2ZT0vc2JpbgpiYXNlX3NiaW5kaXJfbmF0aXZlPSIvc2JpbiIKIyBz
YmluZGlyPSR7ZXhlY19wcmVmaXh9L3NiaW4KZXhwb3J0IHNiaW5kaXI9Ii91c3Ivc2JpbiIKIyBD
RkxBR1M9JHtUQVJHRVRfQ0ZMQUdTfQpleHBvcnQgQ0ZMQUdTPSItTzIgLXBpcGUgLWcgLWZlbGlt
aW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIgojIEJCX0JBU0VIQVNIX3Rhc2stZG9fcG9wdWxhdGVf
c3lzcm9vdD01ZTAzNTc3N2QyY2NhNzM2MmI3Mzk0NTVmNzI0MGJhMApCQl9CQVNFSEFTSF90YXNr
LWRvX3BvcHVsYXRlX3N5c3Jvb3Q9IjVlMDM1Nzc3ZDJjY2E3MzYyYjczOTQ1NWY3MjQwYmEwIgoj
IEJVSUxEX0FSPSR7QlVJTERfUFJFRklYfWFyCmV4cG9ydCBCVUlMRF9BUj0iYXIiCiMgQlVJTERf
QVM9JHtCVUlMRF9QUkVGSVh9YXMgJHtCVUlMRF9BU19BUkNIfQpleHBvcnQgQlVJTERfQVM9ImFz
IgojIE1BQ0hJTkVfUE9TVFBST0NFU1NfQ09NTUFORD0KIyBTSExJQlNESVI9JHtTVEFHSU5HX0RJ
Ul9IT1NUfS9zaGxpYnMKU0hMSUJTRElSPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3No
bGlicyIKIyBzaGFyZWRzdGF0ZWRpcj0ke2Jhc2VfcHJlZml4fS9jb20KZXhwb3J0IHNoYXJlZHN0
YXRlZGlyPSIvY29tIgojIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUz0KIyBERUJJQU5fTUlSUk9S
PWZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sCkRFQklBTl9NSVJST1I9ImZ0cDovL2Z0
cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xp
YmM9ZWdsaWJjClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmM9ImVnbGliYyIKIyBERVZG
SUxFPSR7QlVJTERTVEFUU19CQVNFfS8uZGV2aWNlCkRFVkZJTEU9Ii9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvYnVpbGRz
dGF0cy8vLmRldmljZSIKIyBERUZBVUxUX1RBU0tfUFJPVklERVI9dGFzay1iYXNlCkRFRkFVTFRf
VEFTS19QUk9WSURFUj0idGFzay1iYXNlIgojIFBSRUZFUlJFRF9WRVJTSU9OX3VjbGliYy1pbml0
aWFsPSR7VUNMSUJDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fdWNsaWJjLWluaXRpYWw9IjAu
OS4zMiIKIyBJTUFHRV9ERVBFTkRTX2V4dDIubHptYS51LWJvb3Q9Z2VuZXh0MmZzLW5hdGl2ZSBl
MmZzcHJvZ3MtbmF0aXZlIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZQpJTUFHRV9ERVBFTkRTX2V4dDIu
bHptYS51LWJvb3Q9ImdlbmV4dDJmcy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZSB1LWJvb3QtbWtp
bWFnZS1uYXRpdmUiCiMgUlBNX1BSRVBST0NFU1NfQ09NTUFORFM9cGFja2FnZV91cGRhdGVfaW5k
ZXhfcnBtOyBwYWNrYWdlX2dlbmVyYXRlX3JwbV9jb25mOyAKUlBNX1BSRVBST0NFU1NfQ09NTUFO
RFM9InBhY2thZ2VfdXBkYXRlX2luZGV4X3JwbTsgcGFja2FnZV9nZW5lcmF0ZV9ycG1fY29uZjsi
CiMgQkJfQkFTRUhBU0hfdGFzay1kb19jb25maWd1cmU9OTA1MzkxOTVkNjU4NTU3OTY5MDRlMmU0
MjIzYmUwZmEKQkJfQkFTRUhBU0hfdGFzay1kb19jb25maWd1cmU9IjkwNTM5MTk1ZDY1ODU1Nzk2
OTA0ZTJlNDIyM2JlMGZhIgojIEtFUk5FTF9JTUFHRVRZUEU9dUltYWdlCktFUk5FTF9JTUFHRVRZ
UEU9InVJbWFnZSIKIyBJTUFHRV9MSU5HVUFTPSAKSU1BR0VfTElOR1VBUz0iIgojIERFUExPWV9E
SVJfSU1BR0U9JHtERVBMT1lfRElSfS9pbWFnZXMKREVQTE9ZX0RJUl9JTUFHRT0iL2xvY2FsL2pl
bmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3Rt
cC9kZXBsb3kvaW1hZ2VzIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMtbmF0aXZl
c2RrPWVnbGliYy1uYXRpdmVzZGsKUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYy1uYXRp
dmVzZGs9ImVnbGliYy1uYXRpdmVzZGsiCiMgUEFSQUxMRUxfTUFLRT0taiAxNgpQQVJBTExFTF9N
QUtFPSItaiAxNiIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpY29udi1uYXRpdmVz
ZGs9ZWdsaWJjLW5hdGl2ZXNkawpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpY29udi1u
YXRpdmVzZGs9ImVnbGliYy1uYXRpdmVzZGsiCiMgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgtbGli
Yy1oZWFkZXJzPSR7TElOVVhMSUJDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fbGludXgtbGli
Yy1oZWFkZXJzPSIyLjYuMzcuMiIKIyBQUkVGRVJSRURfVkVSU0lPTl91LWJvb3QtbWtpbWFnZS1u
YXRpdmU9MjAxMS4wNgpQUkVGRVJSRURfVkVSU0lPTl91LWJvb3QtbWtpbWFnZS1uYXRpdmU9IjIw
MTEuMDYiCiMgUFJFRkVSUkVEX1ZFUlNJT05fbGliZXJhdGlvbi1mb250cz0xLjA0ClBSRUZFUlJF
RF9WRVJTSU9OX2xpYmVyYXRpb24tZm9udHM9IjEuMDQiCiMgT0JKRFVNUD0ke0hPU1RfUFJFRklY
fW9iamR1bXAKZXhwb3J0IE9CSkRVTVA9InBvd2VycGMtZnNsLWxpbnV4LWdudXNwZS1vYmpkdW1w
IgojIElOSEVSSVRfRElTVFJPPWRlYmlhbiBkZXZzaGVsbCBzc3RhdGUgbGljZW5zZQpJTkhFUklU
X0RJU1RSTz0iZGViaWFuIGRldnNoZWxsIHNzdGF0ZSBsaWNlbnNlIgojIElNQUdFX0JBU0VOQU1F
PSR7UE59CmV4cG9ydCBJTUFHRV9CQVNFTkFNRT0iZnNsLWltYWdlLXNpbXBsZSIKIyBQQVRDSFRP
T0w9cXVpbHQKUEFUQ0hUT09MPSJxdWlsdCIKIyBYT1JHX01JUlJPUj1odHRwOi8veG9yZy5mcmVl
ZGVza3RvcC5vcmcvcmVsZWFzZXMKWE9SR19NSVJST1I9Imh0dHA6Ly94b3JnLmZyZWVkZXNrdG9w
Lm9yZy9yZWxlYXNlcyIKIyBTWVNST09UX0RFU1RESVI9JHtXT1JLRElSfS9zeXNyb290LWRlc3Rk
aXIvClNZU1JPT1RfREVTVERJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1n
bnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvc3lzcm9vdC1kZXN0ZGlyLyIKIyBCQl9CQVNF
SEFTSF90YXNrLWRvX2NoZWNrdXJpPWFkYzg2ZmFiNGE1MmUzNjI4YWJiMDViMDgwM2Q2ZmM5CkJC
X0JBU0VIQVNIX3Rhc2stZG9fY2hlY2t1cmk9ImFkYzg2ZmFiNGE1MmUzNjI4YWJiMDViMDgwM2Q2
ZmM5IgojIFVDTElCQ1ZFUlNJT049MC45LjMyClVDTElCQ1ZFUlNJT049IjAuOS4zMiIKIyBTUEVD
SUFMX1BLR1NVRkZJWD0tbmF0aXZlIC1jcm9zcyAtaW5pdGlhbCAtaW50ZXJtZWRpYXRlIC1uYXRp
dmVzZGsgLWNyb3Nzc2RrIC1jcm9zcy1jYW5hZGlhbgpTUEVDSUFMX1BLR1NVRkZJWD0iLW5hdGl2
ZSAtY3Jvc3MgLWluaXRpYWwgLWludGVybWVkaWF0ZSAtbmF0aXZlc2RrIC1jcm9zc3NkayAtY3Jv
c3MtY2FuYWRpYW4iCiMgREVTQ1JJUFRJT05fJHtQTn0tZG9jPU5vbmUKIyBCVUlMRF9FWEVFWFQ9
CiMgQUxMT1dfRU1QVFlfZnNsLWltYWdlLXNpbXBsZS1kZXY9MQpBTExPV19FTVBUWV9mc2wtaW1h
Z2Utc2ltcGxlLWRldj0iMSIKIyBETF9ESVI9L29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L3NvdXJjZXMKRExfRElSPSIvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc291cmNlcyIK
IyBCQl9CQVNFSEFTSF90YXNrLWRvX2NoZWNrdXJpYWxsPTc4ZTFiNmI3NGM2MTAyMDcxZTA0NzVi
NzM1ZjhkM2ViCkJCX0JBU0VIQVNIX3Rhc2stZG9fY2hlY2t1cmlhbGw9Ijc4ZTFiNmI3NGM2MTAy
MDcxZTA0NzViNzM1ZjhkM2ViIgojIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRT0wJHtAYmFzZV9j
b250YWlucygiUEFDS0FHRV9JTlNUQUxMIiwgInp5cHBlciIsICIgKyA1MTIwMCIsICIiICxkKX0K
SU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFPSIwIgojIEJCX0JBU0VIQVNIX3Rhc2stZG9fY29tcGls
ZT1iZGYzMTM5ZWVhZmMzNmViZWVhZDVjNGY4YTU2Y2ExMgpCQl9CQVNFSEFTSF90YXNrLWRvX2Nv
bXBpbGU9ImJkZjMxMzllZWFmYzM2ZWJlZWFkNWM0ZjhhNTZjYTEyIgojIFBSPSR7QGJiLnBhcnNl
LkJCSGFuZGxlci52YXJzX2Zyb21fZmlsZShiYi5kYXRhLmdldFZhcignRklMRScsZCksZClbMl0g
b3IgJ3IwJ30KUFI9InIwIgojIFBBQ0tBR0VfR1JPVVBfZGJnLXBrZ3M9JHtAJyAnLmpvaW4oJyVz
LWRiZycgJSBwa2cgZm9yIHBrZyBpbiBub3JtYWxfcGtnc190b19pbnN0YWxsKGQpKX0KUEFDS0FH
RV9HUk9VUF9kYmctcGtncz0idGFzay1jb3JlLWJvb3QtZGJnIHUtYm9vdC1kYmcgdXRpbC1saW51
eC1kYmcgZTJmc3Byb2dzLWRiZyBlMmZzcHJvZ3MtbWtlMmZzLWRiZyBkb3Nmc3Rvb2xzLWRiZyBi
emlwMi1kYmcgbmV0LXRvb2xzLWRiZyBwY2l1dGlscy1kYmcgaXB0YWJsZXMtZGJnIHVzYnV0aWxz
LWRiZyBwcm9jcHMtZGJnIHBvcnRtYXAtZGJnIHBzbWlzYy1kYmcgc3RyYWNlLWRiZyBzeXNmc3V0
aWxzLWRiZyBzeXNrbG9nZC1kYmcgc3lzc3RhdC1kYmcgemlwLWRiZyB1bnppcC1kYmcgZHJvcGJl
YXItZGJnIGZpbGUtZGJnIG5mcy11dGlscy1kYmcgcGFydGVkLWRiZyBldGh0b29sLWRiZyBhcHB0
cmstZGJnIGFwcHRyay1iYXNlLWRiZyBkdGMtZGJnIHUtYm9vdC1kYmcgd2dldC1kYmcgbGlicHBj
LWRiZyBlbWJlZGRlZC1odi1kYmcgYm9vdC1mb3JtYXQtY29uZmlnLWRiZyBwa2djb25maWctZGJn
IGJvb3QtZm9ybWF0LWRiZyB2c2M3Mzg1LWZpcm13YXJlLWRiZyBjYW50ZXN0LWRiZyBtdXgtc2Vy
dmVyLWRiZyIKIyBQVj0ke0BiYi5wYXJzZS5CQkhhbmRsZXIudmFyc19mcm9tX2ZpbGUoYmIuZGF0
YS5nZXRWYXIoJ0ZJTEUnLGQpLGQpWzFdIG9yICcxLjAnfQpQVj0iMS4wIgojIFNES19QUkVGSVg9
JHtTREtfU1lTfS0KU0RLX1BSRUZJWD0ieDg2XzY0LWZzbHNkay1saW51eC0iCiMgQkJfQkFTRUhB
U0hfdGFzay1kb19yb290ZnM9ZmI5NjRmM2ZkYWUzMmQ5ZDM4ZjJmYWQzZGFhMTQzMTIKQkJfQkFT
RUhBU0hfdGFzay1kb19yb290ZnM9ImZiOTY0ZjNmZGFlMzJkOWQzOGYyZmFkM2RhYTE0MzEyIgoj
IE1VTFRJTElCX0NIRUNLX0ZJTEU9JHtXT1JLRElSfS9tdWx0aWxpYl9jaGVjay5weQpNVUxUSUxJ
Ql9DSEVDS19GSUxFPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1
aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9m
c2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9tdWx0aWxpYl9jaGVjay5weSIKIyBQS0dERVNUPSR7V09S
S0RJUn0vcGFja2FnZXMtc3BsaXQKUEtHREVTVD0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZz
bC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcGFja2FnZXMtc3BsaXQiCiMg
QkJfQkFTRUhBU0hfdGFzay1kb19mZXRjaD1lOTlhY2Y1YzViYzQ4NmEyODMwMWI1ZDhhZDAyYTZh
NgpCQl9CQVNFSEFTSF90YXNrLWRvX2ZldGNoPSJlOTlhY2Y1YzViYzQ4NmEyODMwMWI1ZDhhZDAy
YTZhNiIKIyBQRj0ke1BOfS0ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9ClBGPSJmc2wtaW1hZ2Utc2lt
cGxlLTEuMC1yMCIKIyBTVEFHSU5HX0JJTkRJUl9OQVRJVkU9JHtTVEFHSU5HX0RJUl9OQVRJVkV9
JHtiaW5kaXJfbmF0aXZlfQpTVEFHSU5HX0JJTkRJUl9OQVRJVkU9Ii9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9v
dHMveDg2XzY0LWxpbnV4L3Vzci9iaW4iCiMgSU1BR0VURVNUPWR1bW15CklNQUdFVEVTVD0iZHVt
bXkiCiMgUE49JHtAYmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGJiLmRhdGEuZ2V0
VmFyKCdGSUxFJyxkKSxkKVswXSBvciAnZGVmYXVsdHBrZ25hbWUnfQpQTj0iZnNsLWltYWdlLXNp
bXBsZSIKIyBESVNUUk89ZnNsCnVuc2V0IERJU1RSTwojIFBBQ0tBR0VWQVJTPUZJTEVTIFJERVBF
TkRTIFJSRUNPTU1FTkRTIFNVTU1BUlkgREVTQ1JJUFRJT04gUlNVR0dFU1RTIFJQUk9WSURFUyBS
Q09ORkxJQ1RTIFBLRyBBTExPV19FTVBUWSBwa2dfcG9zdGluc3QgcGtnX3Bvc3RybSBJTklUU0NS
SVBUX05BTUUgSU5JVFNDUklQVF9QQVJBTVMgREVCSUFOX05PQVVUT05BTUUKUEFDS0FHRVZBUlM9
IkZJTEVTIFJERVBFTkRTIFJSRUNPTU1FTkRTIFNVTU1BUlkgREVTQ1JJUFRJT04gUlNVR0dFU1RT
IFJQUk9WSURFUyBSQ09ORkxJQ1RTIFBLRyBBTExPV19FTVBUWSBwa2dfcG9zdGluc3QgcGtnX3Bv
c3RybSBJTklUU0NSSVBUX05BTUUgSU5JVFNDUklQVF9QQVJBTVMgREVCSUFOX05PQVVUT05BTUUi
CiMgRElTVFJPX1ZFUlNJT049MS4xCkRJU1RST19WRVJTSU9OPSIxLjEiCiMgU0RLX0xEX0FSQ0g9
JHtCVUlMRF9MRF9BUkNIfQojIFM9JHtXT1JLRElSfS8ke0JQfQpTPSIvbG9jYWwvamVua2lucy95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsv
cDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9mc2wtaW1h
Z2Utc2ltcGxlLTEuMCIKIyBERVBMT1lfRElSX1RBUj0ke0RFUExPWV9ESVJ9L3RhcgpERVBMT1lf
RElSX1RBUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvdGFyIgojIFNUQUdJTkdfS0VSTkVMX0RJUj0ke1NU
QUdJTkdfRElSX0hPU1R9L2tlcm5lbApTVEFHSU5HX0tFUk5FTF9ESVI9Ii9sb2NhbC9qZW5raW5z
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lz
cm9vdHMvcDEwMjByZGIva2VybmVsIgojIFBSRUZFUlJFRF9QUk9WSURFUl9saW51eC1saWJjLWhl
YWRlcnM9bGludXgtcW9yaXEtc2RrLWhlYWRlcnMKUFJFRkVSUkVEX1BST1ZJREVSX2xpbnV4LWxp
YmMtaGVhZGVycz0ibGludXgtcW9yaXEtc2RrLWhlYWRlcnMiCiMgQkJfQkFTRUhBU0hfdGFzay1k
b19jbGVhbj1kMWNlYWExYzhjZjBmM2JmODU5MmYwOTZjNDllMmExOApCQl9CQVNFSEFTSF90YXNr
LWRvX2NsZWFuPSJkMWNlYWExYzhjZjBmM2JmODU5MmYwOTZjNDllMmExOCIKIyBQU0VVRE9fQlVJ
TEQ9MApQU0VVRE9fQlVJTEQ9IjAiCiMgQURPQkVfTUlSUk9SPWh0dHA6Ly9mcGRvd25sb2FkLm1h
Y3JvbWVkaWEuY29tL2dldC9mbGFzaHBsYXllci9jdXJyZW50LwpBRE9CRV9NSVJST1I9Imh0dHA6
Ly9mcGRvd25sb2FkLm1hY3JvbWVkaWEuY29tL2dldC9mbGFzaHBsYXllci9jdXJyZW50LyIKIyBQ
QUNLQUdFX0dST1VQX3Rvb2xzLXByb2ZpbGU9dGFzay1jb3JlLXRvb2xzLXByb2ZpbGUKUEFDS0FH
RV9HUk9VUF90b29scy1wcm9maWxlPSJ0YXNrLWNvcmUtdG9vbHMtcHJvZmlsZSIKIyBJUEtfRkVF
RF9VUklTPU5vbmUKIyBQS0dfQ09ORklHX0RJUj0ke1NUQUdJTkdfRElSX0hPU1R9LyR7bGliZGly
fS9wa2djb25maWcKZXhwb3J0IFBLR19DT05GSUdfRElSPSIvbG9jYWwvamVua2lucy95b2N0by9j
YWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3Ax
MDIwcmRiLy91c3IvbGliL3BrZ2NvbmZpZyIKIyBUQVJHRVRfTERGTEFHUz0tV2wsLU8xICR7VEFS
R0VUX0xJTktfSEFTSF9TVFlMRX0gJHtBU05FRURFRH0KZXhwb3J0IFRBUkdFVF9MREZMQUdTPSIt
V2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251IC1XbCwtLWFzLW5lZWRlZCIKIyBJTUFHRV9QUkVQ
Uk9DRVNTX0NPTU1BTkQ9IG1rbGlic19vcHRpbWl6ZV9pbWFnZTsgIHByZWxpbmtfaW1hZ2U7IApJ
TUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ9Im1rbGlic19vcHRpbWl6ZV9pbWFnZTsgIHByZWxpbmtf
aW1hZ2U7IgojIERFQklBTlJERVA9CiMgVEFSR0VUX1NZUz0ke1RBUkdFVF9BUkNIfSR7VEFSR0VU
X1ZFTkRPUn0ke0BbJy0nICsgYmIuZGF0YS5nZXRWYXIoJ1RBUkdFVF9PUycsIGQsIDEpLCAnJ11b
YmIuZGF0YS5nZXRWYXIoJ1RBUkdFVF9PUycsIGQsIDEpID09ICgnJyBvciAnY3VzdG9tJyldfQpU
QVJHRVRfU1lTPSJwb3dlcnBjLWZzbC1saW51eC1nbnVzcGUiCiMgUFJFRkVSUkVEX1BST1ZJREVS
X3ZpcnR1YWwvbGliYy1sb2NhbGU9ZWdsaWJjLWxvY2FsZQpQUkVGRVJSRURfUFJPVklERVJfdmly
dHVhbC9saWJjLWxvY2FsZT0iZWdsaWJjLWxvY2FsZSIKIyBFWFRSQV9JTUFHRUNNRF9qZmZzMj0t
LXBhZCAtLWxpdHRsZS1lbmRpYW4gLS1lcmFzZWJsb2NrPTB4NDAwMDAKRVhUUkFfSU1BR0VDTURf
amZmczI9Ii0tcGFkIC0tbGl0dGxlLWVuZGlhbiAtLWVyYXNlYmxvY2s9MHg0MDAwMCIKIyBQQUNL
QUdFX0dST1VQX3NzaC1zZXJ2ZXItb3BlbnNzaD10YXNrLWNvcmUtc3NoLW9wZW5zc2gKUEFDS0FH
RV9HUk9VUF9zc2gtc2VydmVyLW9wZW5zc2g9InRhc2stY29yZS1zc2gtb3BlbnNzaCIKIyBQS0df
Q09ORklHX0RJU0FCTEVfVU5JTlNUQUxMRUQ9eWVzCmV4cG9ydCBQS0dfQ09ORklHX0RJU0FCTEVf
VU5JTlNUQUxMRUQ9InllcyIKIyBERVNDUklQVElPTl8ke1BOfS1kZXY9Tm9uZQojIE1VTFRJTElC
X1RFTVBfUk9PVEZTPSR7V09SS0RJUn0vbXVsdGlsaWIKTVVMVElMSUJfVEVNUF9ST09URlM9Ii9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVs
ZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUt
MS4wLXIwL211bHRpbGliIgojIFBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLWNyb3NzLWNhbmFk
aWFuPSR7QklOVVZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLWNyb3NzLWNhbmFk
aWFuPSIyLjIxLjFhIgojIGxpYmRpcj0ke2V4ZWNfcHJlZml4fS8ke2Jhc2VsaWJ9CmV4cG9ydCBs
aWJkaXI9Ii91c3IvbGliIgojIFNFUFBVS1VfTkVXUkVQT1JUPU5vbmUKIyBQUkVGRVJSRURfUFJP
VklERVJfdmlydHVhbC9wb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtYmludXRpbHM9YmludXRpbHMt
Y3Jvc3MKUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvcG93ZXJwYy1mc2wtbGludXgtZ251c3Bl
LWJpbnV0aWxzPSJiaW51dGlscy1jcm9zcyIKIyBJTUFHRV9DTURfamZmczI9bWtmcy5qZmZzMiAt
LXJvb3Q9JHtJTUFHRV9ST09URlN9IC0tZmFrZXRpbWUgLS1vdXRwdXQ9JHtERVBMT1lfRElSX0lN
QUdFfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy5qZmZzMiAke0VYVFJBX0lNQUdFQ01EfQpJTUFHRV9D
TURfamZmczI9Im1rZnMuamZmczIgLS1yb290PS9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wt
bGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAtLWZha2V0aW1lIC0t
b3V0cHV0PS9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRi
LTIwMTExMjExMDUxNjIwLnJvb3Rmcy5qZmZzMiIKIyBLT05TT0xFX1RFUk1DTUQ9a29uc29sZSAt
VCAiJFRFUk1XSU5ET1dUSVRMRSIKS09OU09MRV9URVJNQ01EPSJrb25zb2xlIC1UIFwiJFRFUk1X
SU5ET1dUSVRMRVwiIgojIEFMTE9XX0VNUFRZXyR7UE59LWRldj1Ob25lCiMgTElOR1VBU19JTlNU
QUxMPSR7QCIgIi5qb2luKG1hcChsYW1iZGEgczogImxvY2FsZS1iYXNlLSVzIiAlIHMsIGJiLmRh
dGEuZ2V0VmFyKCdJTUFHRV9MSU5HVUFTJywgZCwgMSkuc3BsaXQoKSkpfQojIEFTTkVFREVEX3Bu
LXhzZXJ2ZXIta2RyaXZlLXhvbWFwPQojIFNVTU1BUllfZnNsLWltYWdlLXNpbXBsZS1kYmc9JHtT
VU1NQVJZfSAtIERlYnVnZ2luZyBmaWxlcwpTVU1NQVJZX2ZzbC1pbWFnZS1zaW1wbGUtZGJnPSJm
c2wtaW1hZ2Utc2ltcGxlIHZlcnNpb24gMS4wLXIwIC0gRGVidWdnaW5nIGZpbGVzIgojIFBSRUZF
UlJFRF9WRVJTSU9OX2djYy1jcm9zc3Nkay1pbml0aWFsPSR7U0RLR0NDVkVSU0lPTn0KUFJFRkVS
UkVEX1ZFUlNJT05fZ2NjLWNyb3Nzc2RrLWluaXRpYWw9IjQuNiUiCiMgU1lTUk9PVF9QUkVQUk9D
RVNTX0ZVTkNTPQojIElNQUdFX0RFUEVORFNfZXh0Mi5nei51LWJvb3Q9Z2VuZXh0MmZzLW5hdGl2
ZSBlMmZzcHJvZ3MtbmF0aXZlIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZQpJTUFHRV9ERVBFTkRTX2V4
dDIuZ3oudS1ib290PSJnZW5leHQyZnMtbmF0aXZlIGUyZnNwcm9ncy1uYXRpdmUgdS1ib290LW1r
aW1hZ2UtbmF0aXZlIgojIFNFUFBVS1VfQVRUQUNITUVOVD1Ob25lCiMgQkJfREVGQVVMVF9UQVNL
PWJ1aWxkCkJCX0RFRkFVTFRfVEFTSz0iYnVpbGQiCiMgUFNFVURPX0RJU0FCTEVEPTEKZXhwb3J0
IFBTRVVET19ESVNBQkxFRD0iMSIKIyBTVU1NQVJZX2ZzbC1pbWFnZS1zaW1wbGUtZGV2PSR7U1VN
TUFSWX0gLSBEZXZlbG9wbWVudCBmaWxlcwpTVU1NQVJZX2ZzbC1pbWFnZS1zaW1wbGUtZGV2PSJm
c2wtaW1hZ2Utc2ltcGxlIHZlcnNpb24gMS4wLXIwIC0gRGV2ZWxvcG1lbnQgZmlsZXMiCiMgUEFD
S0FHRV9DTEFTU0VTPXBhY2thZ2VfcnBtClBBQ0tBR0VfQ0xBU1NFUz0icGFja2FnZV9ycG0iCiMg
SU5ISUJJVF9ERUZBVUxUX0RFUFM9MQpJTkhJQklUX0RFRkFVTFRfREVQUz0iMSIKIyBMRENPTkZJ
R0RFUEVORF9saWJjLXVjbGliYz0KIyBUT09MQ0hBSU5fT1BUSU9OUz0gLS1zeXNyb290PSR7U1RB
R0lOR19ESVJfVEFSR0VUfQpUT09MQ0hBSU5fT1BUSU9OUz0iLS1zeXNyb290PS9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
c3lzcm9vdHMvcDEwMjByZGIiCiMgTElCQ19ERVBFTkRFTkNJRVM9bGlic2VnZmF1bHQgCQkgICAg
IGVnbGliYyAgICAgCQkgICAgIGVnbGliYy1kYmcgICAgIAkJICAgICBlZ2xpYmMtZGV2ICAgICAJ
CSAgICAgZWdsaWJjLXV0aWxzICAgICAJCSAgICAgZWdsaWJjLXRocmVhZC1kYiAgICAgCQkgICAg
IGVnbGliYy1sb2NhbGVkYXRhLWkxOG4gICAgIAkJICAgICBlZ2xpYmMtZ2NvbnYtaWJtODUwICAg
ICAJCSAgICAgZWdsaWJjLWdjb252LWNwMTI1MiAgICAgCQkgICAgIGVnbGliYy1nY29udi1pc284
ODU5LTEgICAgIAkJICAgICBlZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSAgICAgCQkgICAgIGxvY2Fs
ZS1iYXNlLWVuLXVzICAgICAJCSAgICAgbG9jYWxlLWJhc2UtZW4tZ2IgCkxJQkNfREVQRU5ERU5D
SUVTPSJsaWJzZWdmYXVsdCAJCSAgICAgZWdsaWJjICAgICAJCSAgICAgZWdsaWJjLWRiZyAgICAg
CQkgICAgIGVnbGliYy1kZXYgICAgIAkJICAgICBlZ2xpYmMtdXRpbHMgICAgIAkJICAgICBlZ2xp
YmMtdGhyZWFkLWRiICAgICAJCSAgICAgZWdsaWJjLWxvY2FsZWRhdGEtaTE4biAgICAgCQkgICAg
IGVnbGliYy1nY29udi1pYm04NTAgICAgIAkJICAgICBlZ2xpYmMtZ2NvbnYtY3AxMjUyICAgICAJ
CSAgICAgZWdsaWJjLWdjb252LWlzbzg4NTktMSAgICAgCQkgICAgIGVnbGliYy1nY29udi1pc284
ODU5LTE1ICAgICAJCSAgICAgbG9jYWxlLWJhc2UtZW4tdXMgICAgIAkJICAgICBsb2NhbGUtYmFz
ZS1lbi1nYiIKIyBCQl9OVU1CRVJfVEhSRUFEUz0xNgpCQl9OVU1CRVJfVEhSRUFEUz0iMTYiCiMg
UEFDS0FHRV9HUk9VUF94MTEtc2F0bz10YXNrLWNvcmUteDExLXNhdG8KUEFDS0FHRV9HUk9VUF94
MTEtc2F0bz0idGFzay1jb3JlLXgxMS1zYXRvIgojIE9FX1RFUk1JTkFMPWF1dG8KT0VfVEVSTUlO
QUw9ImF1dG8iCiMgSU1BR0VfREVQRU5EU19leHQyPWdlbmV4dDJmcy1uYXRpdmUKSU1BR0VfREVQ
RU5EU19leHQyPSJnZW5leHQyZnMtbmF0aXZlIgojIElNQUdFX0RFUEVORFNfZXh0ND1nZW5leHQy
ZnMtbmF0aXZlIGUyZnNwcm9ncy1uYXRpdmUKSU1BR0VfREVQRU5EU19leHQ0PSJnZW5leHQyZnMt
bmF0aXZlIGUyZnNwcm9ncy1uYXRpdmUiCiMgT0VfVEVSTUlOQUxfRVhQT1JUUz1YQVVUSE9SSVRZ
IFNIRUxMIERCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyBESVNQTEFZIEVYVFJBX09FTUFLRQpPRV9U
RVJNSU5BTF9FWFBPUlRTPSJYQVVUSE9SSVRZIFNIRUxMIERCVVNfU0VTU0lPTl9CVVNfQUREUkVT
UyBESVNQTEFZIEVYVFJBX09FTUFLRSIKIyBDQUNIRT0vbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2NhY2hlL2RlZmF1bHQt
ZWdsaWJjL3AxMDIwcmRiCkNBQ0hFPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2NhY2hlL2RlZmF1bHQtZWdsaWJjL3Ax
MDIwcmRiIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYngxMT1saWJ4MTEtdHJpbQpQ
UkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJ4MTE9ImxpYngxMS10cmltIgojIFRBUkdFVF9Q
UkVGSVg9JHtUQVJHRVRfU1lTfS0KVEFSR0VUX1BSRUZJWD0icG93ZXJwYy1mc2wtbGludXgtZ251
c3BlLSIKIyBMSUNFTlNFX0RJUkVDVE9SWT0ke0RFUExPWV9ESVJ9L2xpY2Vuc2VzCkxJQ0VOU0Vf
RElSRUNUT1JZPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9saWNlbnNlcyIKIyBleHBhbnNpb24gb2YgU1JD
UFYgdGhyZXcgRXhwYW5zaW9uRXJyb3I6IEZhaWx1cmUgZXhwYW5kaW5nIHZhcmlhYmxlIFNSQ1BW
LCBleHByZXNzaW9uIHdhcyAke0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0gd2hpY2ggdHJpZ2dl
cmVkIGV4Y2VwdGlvbiBGZXRjaEVycm9yOiBGZXRjaGVyIGZhaWx1cmUgZm9yIFVSTDogJ05vbmUn
LiBTUkNSRVYgd2FzIHVzZWQgeWV0IG5vIHZhbGlkIFNDTSB3YXMgZm91bmQgaW4gU1JDX1VSSQoj
IF90YXNrX2RlcHM9eydub2V4ZWMnOiB7J2RvX3BhY2thZ2Vfd3JpdGUnOiAnMScsICdkb19idWls
ZCc6ICcxJ30sICd0YXNrcyc6IFsnZG9fcGF0Y2gnLCAnZG9fcG9wdWxhdGVfc3lzcm9vdCcsICdk
b19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lJywgJ2RvX2xpc3R0YXNrcycsICdkb19jbGVhbics
ICdkb19jaGVja3VyaScsICdkb19jaGVja3VyaWFsbCcsICdkb19mZXRjaGFsbCcsICdkb19idWls
ZGFsbCcsICdkb19mZXRjaCcsICdkb191bnBhY2snLCAnZG9fY29uZmlndXJlJywgJ2RvX2NvbXBp
bGUnLCAnZG9faW5zdGFsbCcsICdkb19idWlsZCcsICdkb19jbGVhbnNzdGF0ZScsICdkb19jbGVh
bmFsbCcsICdkb19wYWNrYWdlJywgJ2RvX3BhY2thZ2Vfc2V0c2NlbmUnLCAnZG9fcGFja2FnZV93
cml0ZScsICdkb19wYWNrYWdlX3dyaXRlX3JwbV9zZXRzY2VuZScsICdkb19wYWNrYWdlX3dyaXRl
X3JwbScsICdkb19kZXZzaGVsbCcsICdkb19wb3B1bGF0ZV9saWMnLCAnZG9fcG9wdWxhdGVfbGlj
X3NldHNjZW5lJywgJ2RvX3Jvb3RmcyddLCAncmRlcHRhc2snOiB7J2RvX3BhY2thZ2Vfd3JpdGVf
cnBtJzogJyd9LCAncmVjcmRlcHRhc2snOiB7J2RvX2J1aWxkYWxsJzogJ2RvX2J1aWxkJywgJ2Rv
X3Jvb3Rmcyc6ICcgZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZG9fY2hlY2t1cmlhbGwnOiAnZG9f
Y2hlY2t1cmknLCAnZG9fZmV0Y2hhbGwnOiAnZG9fZmV0Y2gnLCAnZG9fYnVpbGQnOiAnIGRvX2Rl
cGxveSBkb19wYWNrYWdlX3dyaXRlJ30sICd1bWFzayc6IHsnZG9faW5zdGFsbCc6IDE4LCAnZG9f
Y29uZmlndXJlJzogMTgsICdkb19wYWNrYWdlJzogMTgsICdkb19wb3B1bGF0ZV9zeXNyb290Jzog
JzAyMicsICdkb19jb21waWxlJzogMTgsICdkb19yb290ZnMnOiAnMDIyJ30sICdkZXBlbmRzJzog
eydkb19wYXRjaCc6ICdxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICdkb19pbnN0
YWxsJzogJ3ZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnZG9f
cm9vdGZzJzogJyBta2xpYnMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgcHJlbGluay1uYXRp
dmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBycG0tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Qgb3Br
Zy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBtYWtlZGV2cy1uYXRpdmU6ZG9fcG9wdWxhdGVf
c3lzcm9vdCB2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGxkY29u
ZmlnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZl
cy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCB1cGRhdGUtcmMuZC1uYXRpdmU6ZG9fcG9wdWxh
dGVfc3lzcm9vdCBnZW5leHQyZnMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZTJmc3Byb2dz
LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHUtYm9vdC1ta2ltYWdlLW5hdGl2ZTpkb19wb3B1
bGF0ZV9zeXNyb290JywgJ2RvX3BhY2thZ2UnOiAndmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9f
cG9wdWxhdGVfc3lzcm9vdCd9LCAnZmFrZXJvb3QnOiB7J2RvX2luc3RhbGwnOiAxLCAnZG9fcGFj
a2FnZV9zZXRzY2VuZSc6IDEsICdkb19wYWNrYWdlJzogMSwgJ2RvX3Jvb3Rmcyc6ICcxJ30sICdw
YXJlbnRzJzogeydkb19jb25maWd1cmUnOiBbJ2RvX3VucGFjaycsICdkb19wYXRjaCddLCAnZG9f
cGFja2FnZSc6IFsnZG9fcG9wdWxhdGVfbGljJywgJ2RvX2luc3RhbGwnXSwgJ2RvX3BhY2thZ2Vf
d3JpdGUnOiBbJ2RvX3BhY2thZ2Vfd3JpdGVfcnBtJywgJ2RvX3BhY2thZ2UnXSwgJ2RvX2ZldGNo
YWxsJzogWydkb19mZXRjaCddLCAnZG9fY29tcGlsZSc6IFsnZG9fY29uZmlndXJlJ10sICdkb19j
bGVhbmFsbCc6IFsnZG9fY2xlYW5zc3RhdGUnXSwgJ2RvX2NoZWNrdXJpJzogW10sICdkb19yb290
ZnMnOiBbJ2RvX2luc3RhbGwnXSwgJ2RvX3VucGFjayc6IFsnZG9fZmV0Y2gnXSwgJ2RvX3BvcHVs
YXRlX2xpYyc6IFsnZG9fcGF0Y2gnXSwgJ2RvX2J1aWxkJzogWydkb19yb290ZnMnLCAnZG9fcGFj
a2FnZV93cml0ZScsICdkb19wYWNrYWdlJywgJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnXSwgJ2RvX2Zl
dGNoJzogW10sICdkb19kZXZzaGVsbCc6IFsnZG9fcGF0Y2gnXSwgJ2RvX3BvcHVsYXRlX3N5c3Jv
b3QnOiBbJ2RvX2luc3RhbGwnXSwgJ2RvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUnOiBbXSwg
J2RvX2NoZWNrdXJpYWxsJzogWydkb19jaGVja3VyaSddLCAnZG9faW5zdGFsbCc6IFsnZG9fY29t
cGlsZSddLCAnZG9fcG9wdWxhdGVfbGljX3NldHNjZW5lJzogW10sICdkb19saXN0dGFza3MnOiBb
XSwgJ2RvX2NsZWFuJzogW10sICdkb19wYXRjaCc6IFsnZG9fdW5wYWNrJ10sICdkb19idWlsZGFs
bCc6IFsnZG9fYnVpbGQnXSwgJ2RvX3BhY2thZ2Vfc2V0c2NlbmUnOiBbXSwgJ2RvX3BhY2thZ2Vf
d3JpdGVfcnBtJzogWydkb19wYWNrYWdlJ10sICdkb19wYWNrYWdlX3dyaXRlX3JwbV9zZXRzY2Vu
ZSc6IFtdLCAnZG9fY2xlYW5zc3RhdGUnOiBbJ2RvX2NsZWFuJ119LCAnZGVwdGFzayc6IHsnZG9f
Y29uZmlndXJlJzogJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnfSwgJ25vc3RhbXAnOiB7J2RvX2J1aWxk
JzogJzEnLCAnZG9fZGV2c2hlbGwnOiAnMScsICdkb19saXN0dGFza3MnOiAnMScsICdkb19jbGVh
bic6ICcxJywgJ2RvX2NsZWFuYWxsJzogJzEnLCAnZG9fY2hlY2t1cmknOiAnMScsICdkb19yb290
ZnMnOiAnMScsICdkb19jaGVja3VyaWFsbCc6ICcxJ319Cl90YXNrX2RlcHM9Insnbm9leGVjJzog
eydkb19wYWNrYWdlX3dyaXRlJzogJzEnLCAnZG9fYnVpbGQnOiAnMSd9LCAndGFza3MnOiBbJ2Rv
X3BhdGNoJywgJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRz
Y2VuZScsICdkb19saXN0dGFza3MnLCAnZG9fY2xlYW4nLCAnZG9fY2hlY2t1cmknLCAnZG9fY2hl
Y2t1cmlhbGwnLCAnZG9fZmV0Y2hhbGwnLCAnZG9fYnVpbGRhbGwnLCAnZG9fZmV0Y2gnLCAnZG9f
dW5wYWNrJywgJ2RvX2NvbmZpZ3VyZScsICdkb19jb21waWxlJywgJ2RvX2luc3RhbGwnLCAnZG9f
YnVpbGQnLCAnZG9fY2xlYW5zc3RhdGUnLCAnZG9fY2xlYW5hbGwnLCAnZG9fcGFja2FnZScsICdk
b19wYWNrYWdlX3NldHNjZW5lJywgJ2RvX3BhY2thZ2Vfd3JpdGUnLCAnZG9fcGFja2FnZV93cml0
ZV9ycG1fc2V0c2NlbmUnLCAnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZG9fZGV2c2hlbGwnLCAn
ZG9fcG9wdWxhdGVfbGljJywgJ2RvX3BvcHVsYXRlX2xpY19zZXRzY2VuZScsICdkb19yb290ZnMn
XSwgJ3JkZXB0YXNrJzogeydkb19wYWNrYWdlX3dyaXRlX3JwbSc6ICcnfSwgJ3JlY3JkZXB0YXNr
Jzogeydkb19idWlsZGFsbCc6ICdkb19idWlsZCcsICdkb19yb290ZnMnOiAnIGRvX3BhY2thZ2Vf
d3JpdGVfcnBtJywgJ2RvX2NoZWNrdXJpYWxsJzogJ2RvX2NoZWNrdXJpJywgJ2RvX2ZldGNoYWxs
JzogJ2RvX2ZldGNoJywgJ2RvX2J1aWxkJzogJyBkb19kZXBsb3kgZG9fcGFja2FnZV93cml0ZSd9
LCAndW1hc2snOiB7J2RvX2luc3RhbGwnOiAxOCwgJ2RvX2NvbmZpZ3VyZSc6IDE4LCAnZG9fcGFj
a2FnZSc6IDE4LCAnZG9fcG9wdWxhdGVfc3lzcm9vdCc6ICcwMjInLCAnZG9fY29tcGlsZSc6IDE4
LCAnZG9fcm9vdGZzJzogJzAyMid9LCAnZGVwZW5kcyc6IHsnZG9fcGF0Y2gnOiAncXVpbHQtbmF0
aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnZG9faW5zdGFsbCc6ICd2aXJ0dWFsL2Zha2Vyb290
LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJ2RvX3Jvb3Rmcyc6ICcgbWtsaWJzLW5hdGl2
ZTpkb19wb3B1bGF0ZV9zeXNyb290IHByZWxpbmstbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Qg
cnBtLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG9wa2ctbmF0aXZlOmRvX3BvcHVsYXRlX3N5
c3Jvb3QgbWFrZWRldnMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgdmlydHVhbC9mYWtlcm9v
dC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBsZGNvbmZpZy1uYXRpdmU6ZG9fcG9wdWxhdGVf
c3lzcm9vdCB2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5
c3Jvb3QgdXBkYXRlLXJjLmQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZ2VuZXh0MmZzLW5h
dGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGUyZnNwcm9ncy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lz
cm9vdCB1LWJvb3QtbWtpbWFnZS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICdkb19wYWNr
YWdlJzogJ3ZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnfSwgJ2Zh
a2Vyb290Jzogeydkb19pbnN0YWxsJzogMSwgJ2RvX3BhY2thZ2Vfc2V0c2NlbmUnOiAxLCAnZG9f
cGFja2FnZSc6IDEsICdkb19yb290ZnMnOiAnMSd9LCAncGFyZW50cyc6IHsnZG9fY29uZmlndXJl
JzogWydkb191bnBhY2snLCAnZG9fcGF0Y2gnXSwgJ2RvX3BhY2thZ2UnOiBbJ2RvX3BvcHVsYXRl
X2xpYycsICdkb19pbnN0YWxsJ10sICdkb19wYWNrYWdlX3dyaXRlJzogWydkb19wYWNrYWdlX3dy
aXRlX3JwbScsICdkb19wYWNrYWdlJ10sICdkb19mZXRjaGFsbCc6IFsnZG9fZmV0Y2gnXSwgJ2Rv
X2NvbXBpbGUnOiBbJ2RvX2NvbmZpZ3VyZSddLCAnZG9fY2xlYW5hbGwnOiBbJ2RvX2NsZWFuc3N0
YXRlJ10sICdkb19jaGVja3VyaSc6IFtdLCAnZG9fcm9vdGZzJzogWydkb19pbnN0YWxsJ10sICdk
b191bnBhY2snOiBbJ2RvX2ZldGNoJ10sICdkb19wb3B1bGF0ZV9saWMnOiBbJ2RvX3BhdGNoJ10s
ICdkb19idWlsZCc6IFsnZG9fcm9vdGZzJywgJ2RvX3BhY2thZ2Vfd3JpdGUnLCAnZG9fcGFja2Fn
ZScsICdkb19wb3B1bGF0ZV9zeXNyb290J10sICdkb19mZXRjaCc6IFtdLCAnZG9fZGV2c2hlbGwn
OiBbJ2RvX3BhdGNoJ10sICdkb19wb3B1bGF0ZV9zeXNyb290JzogWydkb19pbnN0YWxsJ10sICdk
b19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lJzogW10sICdkb19jaGVja3VyaWFsbCc6IFsnZG9f
Y2hlY2t1cmknXSwgJ2RvX2luc3RhbGwnOiBbJ2RvX2NvbXBpbGUnXSwgJ2RvX3BvcHVsYXRlX2xp
Y19zZXRzY2VuZSc6IFtdLCAnZG9fbGlzdHRhc2tzJzogW10sICdkb19jbGVhbic6IFtdLCAnZG9f
cGF0Y2gnOiBbJ2RvX3VucGFjayddLCAnZG9fYnVpbGRhbGwnOiBbJ2RvX2J1aWxkJ10sICdkb19w
YWNrYWdlX3NldHNjZW5lJzogW10sICdkb19wYWNrYWdlX3dyaXRlX3JwbSc6IFsnZG9fcGFja2Fn
ZSddLCAnZG9fcGFja2FnZV93cml0ZV9ycG1fc2V0c2NlbmUnOiBbXSwgJ2RvX2NsZWFuc3N0YXRl
JzogWydkb19jbGVhbiddfSwgJ2RlcHRhc2snOiB7J2RvX2NvbmZpZ3VyZSc6ICdkb19wb3B1bGF0
ZV9zeXNyb290J30sICdub3N0YW1wJzogeydkb19idWlsZCc6ICcxJywgJ2RvX2RldnNoZWxsJzog
JzEnLCAnZG9fbGlzdHRhc2tzJzogJzEnLCAnZG9fY2xlYW4nOiAnMScsICdkb19jbGVhbmFsbCc6
ICcxJywgJ2RvX2NoZWNrdXJpJzogJzEnLCAnZG9fcm9vdGZzJzogJzEnLCAnZG9fY2hlY2t1cmlh
bGwnOiAnMSd9fSIKIyBFWFRSQV9JTUFHRUNNRF9idHJmcz0KIyBNTFBSRUZJWD0KIyBCQl9CQVNF
SEFTSF90YXNrLWRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU9ZjM1YTY1NDA2ODYwNjZjMWNh
M2E4ZjZkZWM2ZWVmNDUKQkJfQkFTRUhBU0hfdGFzay1kb19wb3B1bGF0ZV9zeXNyb290X3NldHNj
ZW5lPSJmMzVhNjU0MDY4NjA2NmMxY2EzYThmNmRlYzZlZWY0NSIKIyBQUkVGRVJSRURfUFJPVklE
RVJfdmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzPXVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRo
ClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXM9InVwZGF0ZS1h
bHRlcm5hdGl2ZXMtY3dvcnRoIgojIERPVERFQlVHLWRiZz0ke2JpbmRpcn0vLmRlYnVnICR7c2Jp
bmRpcn0vLmRlYnVnICR7bGliZXhlY2Rpcn0vLmRlYnVnICR7bGliZGlyfS8uZGVidWcgJHtiYXNl
X2JpbmRpcn0vLmRlYnVnICR7YmFzZV9zYmluZGlyfS8uZGVidWcgJHtiYXNlX2xpYmRpcn0vLmRl
YnVnICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnICR7bGliZGlyfS9tYXRjaGJveC1wYW5lbC8uZGVi
dWcgL3Vzci9zcmMvZGVidWcKRE9UREVCVUctZGJnPSIvdXNyL2Jpbi8uZGVidWcgL3Vzci9zYmlu
Ly5kZWJ1ZyAvdXNyL2xpYmV4ZWMvLmRlYnVnIC91c3IvbGliLy5kZWJ1ZyAvYmluLy5kZWJ1ZyAv
c2Jpbi8uZGVidWcgL2xpYi8uZGVidWcgL3Vzci9saWIvZnNsLWltYWdlLXNpbXBsZS8uZGVidWcg
L3Vzci9saWIvbWF0Y2hib3gtcGFuZWwvLmRlYnVnIC91c3Ivc3JjL2RlYnVnIgojIFBBQ0tBR0Vf
QVJDSFM9YWxsIGFueSBub2FyY2ggJHtQQUNLQUdFX0VYVFJBX0FSQ0hTfSAke01BQ0hJTkVfQVJD
SH0KUEFDS0FHRV9BUkNIUz0iYWxsIGFueSBub2FyY2ggcHBjZTUwMHYyIHAxMDIwcmRiIgojIFBB
Q0tBR0VfQVJDSD0ke01BQ0hJTkVfQVJDSH0KUEFDS0FHRV9BUkNIPSJwMTAyMHJkYiIKIyBFWFRS
QV9PRUNPTkY9CiMgU0hMSUJTV09SS0RJUj0ke1dPUktESVJ9L3NobGlicwpTSExJQlNXT1JLRElS
PSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2lt
cGxlLTEuMC1yMC9zaGxpYnMiCiMgUFJBVVRPSU5YPSR7UEZ9ClBSQVVUT0lOWD0iZnNsLWltYWdl
LXNpbXBsZS0xLjAtcjAiCiMgQlVJTERfTERfQVJDSD0KIyBCQl9CQVNFSEFTSF90YXNrLWRvX2Zl
dGNoYWxsPTc4ZTFiNmI3NGM2MTAyMDcxZTA0NzViNzM1ZjhkM2ViCkJCX0JBU0VIQVNIX3Rhc2st
ZG9fZmV0Y2hhbGw9Ijc4ZTFiNmI3NGM2MTAyMDcxZTA0NzViNzM1ZjhkM2ViIgojIFJQUk9WSURF
Uz0KIyBSUE1ERVBTPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vYmluL3JwbWRlcHMgIC0t
ZGVmaW5lICdfcnBtZmNfbWFnaWNfcGF0aCAke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL3NoYXJl
L21pc2MvbWFnaWMubWdjJwpSUE1ERVBTPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51
eC91c3IvbGliL3JwbS9iaW4vcnBtZGVwcyAgLS1kZWZpbmUgJ19ycG1mY19tYWdpY19wYXRoIC9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVs
ZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9taXNjL21hZ2ljLm1nYyci
CiMgU1JDUkVWPUlOVkFMSUQKU1JDUkVWPSJJTlZBTElEIgojIGJhc2VfbGliZGlyX25hdGl2ZXNk
az0vbGliCmJhc2VfbGliZGlyX25hdGl2ZXNkaz0iL2xpYiIKIyBQQUNLQUdFRlVOQ1M9cGFja2Fn
ZV9nZXRfYXV0b19wciAgICAgICAgICAgICAgICAgcGVyZm9ybV9wYWNrYWdlY29weSAgICAgICAg
ICAgICAgICAgJHtQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1N9IAkJcGFja2FnZV9kb19zcGxpdF9s
b2NhbGVzIAkJc3BsaXRfYW5kX3N0cmlwX2ZpbGVzIAkJZml4dXBfcGVybXMgCQlwb3B1bGF0ZV9w
YWNrYWdlcyAJCXBhY2thZ2VfZG9fZmlsZWRlcHMgCQlwYWNrYWdlX2RvX3NobGlicyAJCXBhY2th
Z2VfZG9fcGtnY29uZmlnIAkJcmVhZF9zaGxpYmRlcHMgCQlwYWNrYWdlX2RlcGNoYWlucyAJCWVt
aXRfcGtnZGF0YSAgZG9fcGFja2FnZV9xYSAKUEFDS0FHRUZVTkNTPSJwYWNrYWdlX2dldF9hdXRv
X3ByICAgICAgICAgICAgICAgICBwZXJmb3JtX3BhY2thZ2Vjb3B5ICAgICAgICAgICAgICAgICAg
CQlwYWNrYWdlX2RvX3NwbGl0X2xvY2FsZXMgCQlzcGxpdF9hbmRfc3RyaXBfZmlsZXMgCQlmaXh1
cF9wZXJtcyAJCXBvcHVsYXRlX3BhY2thZ2VzIAkJcGFja2FnZV9kb19maWxlZGVwcyAJCXBhY2th
Z2VfZG9fc2hsaWJzIAkJcGFja2FnZV9kb19wa2djb25maWcgCQlyZWFkX3NobGliZGVwcyAJCXBh
Y2thZ2VfZGVwY2hhaW5zIAkJZW1pdF9wa2dkYXRhICBkb19wYWNrYWdlX3FhIgojIENPTU1FUkNJ
QUxfTElDRU5TRV9ERVBFTkRFRVM9Z3N0LXBsdWdpbnMtdWdseSBsaWJvbXhpbCBnc3Qtb3Blbm1h
eApDT01NRVJDSUFMX0xJQ0VOU0VfREVQRU5ERUVTPSJnc3QtcGx1Z2lucy11Z2x5IGxpYm9teGls
IGdzdC1vcGVubWF4IgojIFBBQ0tBR0VfR1JPVVBfeDExLWJhc2U9dGFzay1jb3JlLXgxMS1iYXNl
ClBBQ0tBR0VfR1JPVVBfeDExLWJhc2U9InRhc2stY29yZS14MTEtYmFzZSIKIyBQV0Q9L29wdC95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UKZXhwb3J0IFBX
RD0iL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Ui
CiMgQlpSRElSPSR7Q09fRElSfS9ienIKQlpSRElSPSIvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEw
MjByZGIvc291cmNlcy9ienIiCiMgR1BFX1NWTj1zdm46Ly9wcm9qZWN0cy5saW51eHRvZ28ub3Jn
L3N2bi9ncGUvdHJ1bmsvYmFzZTttb2R1bGU9JHtQTn0KR1BFX1NWTj0ic3ZuOi8vcHJvamVjdHMu
bGludXh0b2dvLm9yZy9zdm4vZ3BlL3RydW5rL2Jhc2U7bW9kdWxlPWZzbC1pbWFnZS1zaW1wbGUi
CiMgRVhURU5EUEtHVj0ke0VYVEVORFBLR0VWRVJ9JHtQS0dWfS0ke1BLR1J9CkVYVEVORFBLR1Y9
IjEuMC1yMCIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9kYi1uYXRpdmU9ZGItbmF0aXZl
ClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiLW5hdGl2ZT0iZGItbmF0aXZlIgojIFBBQ0tB
R0VfR1JPVVBfcXQ0LXBrZ3M9dGFzay1jb3JlLXF0LWRlbW9zClBBQ0tBR0VfR1JPVVBfcXQ0LXBr
Z3M9InRhc2stY29yZS1xdC1kZW1vcyIKIyBTU1RBVEVUQVNLUz1kb19wYWNrYWdlX3dyaXRlX3Jw
bSBkb19wb3B1bGF0ZV9saWMgZG9fcGFja2FnZSBkb19wb3B1bGF0ZV9zeXNyb290ClNTVEFURVRB
U0tTPSJkb19wYWNrYWdlX3dyaXRlX3JwbSBkb19wb3B1bGF0ZV9saWMgZG9fcGFja2FnZSBkb19w
b3B1bGF0ZV9zeXNyb290IgojIFNPTElCU19kYXJ3aW49LiouZHlsaWIKU09MSUJTX2Rhcndpbj0i
LiouZHlsaWIiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGI9ZGIKUFJFRkVSUkVEX1BS
T1ZJREVSX3ZpcnR1YWwvZGI9ImRiIgojIEJQPSR7QlBOfS0ke1BWfQpCUD0iZnNsLWltYWdlLXNp
bXBsZS0xLjAiCiMgQkJGSUxFX1BBVFRFUk5fbm9ybWFsPV4vbG9jYWwvamVua2lucy95b2N0by9j
YWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvCkJCRklMRV9QQVRURVJOX25vcm1hbD0iXi9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS8iCiMgU0VDVElPTl9mc2wtaW1h
Z2Utc2ltcGxlLWRiZz1kZXZlbApTRUNUSU9OX2ZzbC1pbWFnZS1zaW1wbGUtZGJnPSJkZXZlbCIK
IyBTSEVMTD0vYmluL2Jhc2gKZXhwb3J0IFNIRUxMPSIvYmluL2Jhc2giCiMgREVCVUdGSUxFRElS
RUNUT1JZLWRiZz0vdXNyL2xpYi9kZWJ1ZyAvdXNyL3NyYy9kZWJ1ZwpERUJVR0ZJTEVESVJFQ1RP
UlktZGJnPSIvdXNyL2xpYi9kZWJ1ZyAvdXNyL3NyYy9kZWJ1ZyIKIyBQUkVGRVJSRURfVkVSU0lP
Tl91Y2xpYmM9JHtVQ0xJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl91Y2xpYmM9IjAuOS4z
MiIKIyBJTUFHRV9JTlNUQUxMPXRhc2stY29yZS1ib290ICR7Uk9PVEZTX1BLR01BTkFHRV9CT09U
U1RSQVB9IHUtYm9vdCAgCXV0aWwtbGludXggCWUyZnNwcm9ncyAJZTJmc3Byb2dzLW1rZTJmcyAJ
ZG9zZnN0b29scyAJYnppcDIgCW5ldC10b29scyAJcGNpdXRpbHMgCWlwdGFibGVzIAl1c2J1dGls
cyAJcHJvY3BzIAlwb3J0bWFwIAlwc21pc2MgCXN0cmFjZSAJc3lzZnN1dGlscyAJc3lza2xvZ2Qg
CXN5c3N0YXQgCXppcCAJdW56aXAgCWRyb3BiZWFyIAlmaWxlIAluZnMtdXRpbHMgCXBhcnRlZCAJ
ZXRodG9vbCAJYXBwdHJrIAlhcHB0cmstYmFzZSAJZHRjIAl1LWJvb3QgCXdnZXQgCSR7Tk9OXzY0
QklUX0NPTVBBVH0gCXBrZ2NvbmZpZyAJIAlib290LWZvcm1hdCAJdnNjNzM4NS1maXJtd2FyZSAJ
Y2FudGVzdCAJIAltdXgtc2VydmVyIApJTUFHRV9JTlNUQUxMPSJ0YXNrLWNvcmUtYm9vdCAgdS1i
b290ICAJdXRpbC1saW51eCAJZTJmc3Byb2dzIAllMmZzcHJvZ3MtbWtlMmZzIAlkb3Nmc3Rvb2xz
IAliemlwMiAJbmV0LXRvb2xzIAlwY2l1dGlscyAJaXB0YWJsZXMgCXVzYnV0aWxzIAlwcm9jcHMg
CXBvcnRtYXAgCXBzbWlzYyAJc3RyYWNlIAlzeXNmc3V0aWxzIAlzeXNrbG9nZCAJc3lzc3RhdCAJ
emlwIAl1bnppcCAJZHJvcGJlYXIgCWZpbGUgCW5mcy11dGlscyAJcGFydGVkIAlldGh0b29sIAlh
cHB0cmsgCWFwcHRyay1iYXNlIAlkdGMgCXUtYm9vdCAJd2dldCAJIAlsaWJwcGMgCWVtYmVkZGVk
LWh2IAlib290LWZvcm1hdC1jb25maWcgCSAJcGtnY29uZmlnIAkgCWJvb3QtZm9ybWF0IAl2c2M3
Mzg1LWZpcm13YXJlIAljYW50ZXN0IAkgCW11eC1zZXJ2ZXIiCiMgQkJfR0VORVJBVEVfTUlSUk9S
X1RBUkJBTExTPTAKQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPSIwIgojIHJwbWxpYmRpcj0v
dmFyL2xpYi9ycG0KcnBtbGliZGlyPSIvdmFyL2xpYi9ycG0iCiMgRVhUUkFfSU1BR0VDTUQ9CiMg
U09VUkNFX01JUlJPUl9GRVRDSD1Ob25lCiMgUEFDS0FHRV9JTlNUQUxMPSR7SU1BR0VfSU5TVEFM
TH0gJHtGRUFUVVJFX0lOU1RBTEx9CmV4cG9ydCBQQUNLQUdFX0lOU1RBTEw9InRhc2stY29yZS1i
b290ICB1LWJvb3QgIAl1dGlsLWxpbnV4IAllMmZzcHJvZ3MgCWUyZnNwcm9ncy1ta2UyZnMgCWRv
c2ZzdG9vbHMgCWJ6aXAyIAluZXQtdG9vbHMgCXBjaXV0aWxzIAlpcHRhYmxlcyAJdXNidXRpbHMg
CXByb2NwcyAJcG9ydG1hcCAJcHNtaXNjIAlzdHJhY2UgCXN5c2ZzdXRpbHMgCXN5c2tsb2dkIAlz
eXNzdGF0IAl6aXAgCXVuemlwIAlkcm9wYmVhciAJZmlsZSAJbmZzLXV0aWxzIAlwYXJ0ZWQgCWV0
aHRvb2wgCWFwcHRyayAJYXBwdHJrLWJhc2UgCWR0YyAJdS1ib290IAl3Z2V0IAkgCWxpYnBwYyAJ
ZW1iZWRkZWQtaHYgCWJvb3QtZm9ybWF0LWNvbmZpZyAJIAlwa2djb25maWcgCSAJYm9vdC1mb3Jt
YXQgCXZzYzczODUtZmlybXdhcmUgCWNhbnRlc3QgCSAJbXV4LXNlcnZlciIKIyBUPSR7V09SS0RJ
Un0vdGVtcApUPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wt
aW1hZ2Utc2ltcGxlLTEuMC1yMC90ZW1wIgojIFBBQ0tBR0VfR1JPVVBfYXBwcy14MTEtcGltbGlj
bz10YXNrLWNvcmUtYXBwcy14MTEtcGltbGljbwpQQUNLQUdFX0dST1VQX2FwcHMteDExLXBpbWxp
Y289InRhc2stY29yZS1hcHBzLXgxMS1waW1saWNvIgojIENPTU1FUkNJQUxfVklERU9fUExVR0lO
Uz0KIyBCVUlMRF9DQ19BUkNIPQojIFBBQ0tBR0VfR1JPVVBfdG9vbHMtc2RrPXRhc2stY29yZS1z
ZGsgdGFzay1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldApQQUNLQUdFX0dST1VQX3Rvb2xzLXNk
az0idGFzay1jb3JlLXNkayB0YXNrLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0IgojIEZFVENI
Q09NTUFORD1FUlJPUiwgdGhpcyBtdXN0IGJlIGEgQml0QmFrZSBidWcKRkVUQ0hDT01NQU5EPSJF
UlJPUiwgdGhpcyBtdXN0IGJlIGEgQml0QmFrZSBidWciCiMgQkJfQkFTRUhBU0hfdGFzay1kb19i
dWlsZD03OGUxYjZiNzRjNjEwMjA3MWUwNDc1YjczNWY4ZDNlYgpCQl9CQVNFSEFTSF90YXNrLWRv
X2J1aWxkPSI3OGUxYjZiNzRjNjEwMjA3MWUwNDc1YjczNWY4ZDNlYiIKIyBNSVJST1JTPWZ0cDov
Ly4qLy4qICAgICAgaHR0cDovL2F1dG9idWlsZGVyLnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8g
XG4gaHR0cDovLy4qLy4qICAgICBodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZy9z
b3VyY2VzLyBcbiBodHRwczovLy4qLy4qICAgIGh0dHA6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2pl
Y3Qub3JnL3NvdXJjZXMvIFxuICAke0RFQklBTl9NSVJST1J9L21haW4JaHR0cDovL3NuYXBzaG90
LmRlYmlhbi5uZXQvYXJjaGl2ZS9wb29sIFxuICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLmRl
LmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAuYXUu
ZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5jbC5k
ZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxuICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLmhyLmRl
Ymlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAuZmkuZGVi
aWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5oay5kZWJp
YW4ub3JnL2RlYmlhbi9wb29sIFxuICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLmh1LmRlYmlh
bi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAuaWUuZGViaWFu
Lm9yZy9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5pdC5kZWJpYW4u
b3JnL2RlYmlhbi9wb29sIFxuICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLmpwLmRlYmlhbi5v
cmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAubm8uZGViaWFuLm9y
Zy9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5wbC5kZWJpYW4ub3Jn
L2RlYmlhbi9wb29sIFxuICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLnJvLmRlYmlhbi5vcmcv
ZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAuc2kuZGViaWFuLm9yZy9k
ZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5lcy5kZWJpYW4ub3JnL2Rl
Ymlhbi9wb29sIFxuICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLnNlLmRlYmlhbi5vcmcvZGVi
aWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAudHIuZGViaWFuLm9yZy9kZWJp
YW4vcG9vbCBcbiAke0dOVV9NSVJST1J9CWZ0cDovL21pcnJvcnMua2VybmVsLm9yZy9nbnUgXG4g
JHtHTlVfTUlSUk9SfQlmdHA6Ly9mdHAubWF0cml4LmNvbS5ici9wdWIvZ251IFxuICR7R05VX01J
UlJPUn0JZnRwOi8vZnRwLmNzLnViYy5jYS9taXJyb3IyL2dudSBcbiAke0dOVV9NSVJST1J9CWZ0
cDovL3N1bnNpdGUudXN0LmhrL3B1Yi9nbnUgXG4gJHtHTlVfTUlSUk9SfQlmdHA6Ly9mdHAuYXlh
bXVyYS5vcmcvcHViL2dudSBcbiAke0tFUk5FTE9SR19NSVJST1J9CWh0dHA6Ly93d3cua2VybmVs
Lm9yZy9wdWIgXG4gJHtLRVJORUxPUkdfTUlSUk9SfQlmdHA6Ly9mdHAudXMua2VybmVsLm9yZy9w
dWIgXG4gJHtLRVJORUxPUkdfTUlSUk9SfQlmdHA6Ly9mdHAudWsua2VybmVsLm9yZy9wdWIgXG4g
JHtLRVJORUxPUkdfTUlSUk9SfQlmdHA6Ly9mdHAuaGsua2VybmVsLm9yZy9wdWIgXG4gJHtLRVJO
RUxPUkdfTUlSUk9SfQlmdHA6Ly9mdHAuYXUua2VybmVsLm9yZy9wdWIgXG4gJHtLRVJORUxPUkdf
TUlSUk9SfQlmdHA6Ly9mdHAuanAua2VybmVsLm9yZy9wdWIgXG4gZnRwOi8vZnRwLmdudXBnLm9y
Zy9nY3J5cHQvICAgICBmdHA6Ly9mdHAuZnJhbmtlbi5kZS9wdWIvY3J5cHQvbWlycm9yL2Z0cC5n
bnVwZy5vcmcvZ2NyeXB0LyBcbiBmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAgIGZ0cDov
L2Z0cC5zdXJmbmV0Lm5sL3B1Yi9zZWN1cml0eS9nbnVwZy8gXG4gZnRwOi8vZnRwLmdudXBnLm9y
Zy9nY3J5cHQvICAgICBodHRwOi8vZ3VsdXMuVVNoZXJicm9va2UuY2EvcHViL2FwcGwvR251UEcv
IFxuIGZ0cDovL2RhbnRlLmN0YW4ub3JnL3RleC1hcmNoaXZlIGZ0cDovL2Z0cC5mdS1iZXJsaW4u
ZGUvdGV4L0NUQU4gXG4gZnRwOi8vZGFudGUuY3Rhbi5vcmcvdGV4LWFyY2hpdmUgaHR0cDovL3N1
bnNpdGUuc3V0LmFjLmpwL3B1Yi9hcmNoaXZlcy9jdGFuLyBcbiBmdHA6Ly9kYW50ZS5jdGFuLm9y
Zy90ZXgtYXJjaGl2ZSBodHRwOi8vY3Rhbi51bnN3LmVkdS5hdS8gXG4gZnRwOi8vZnRwLmdudXRs
cy5vcmcvcHViL2dudXRscyBmdHA6Ly9mdHAuZ251dGxzLm9yZy9wdWIvZ251dGxzLyBcbiBmdHA6
Ly9mdHAuZ251dGxzLm9yZy9wdWIvZ251dGxzIGZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0L2du
dXRscy8gXG4gZnRwOi8vZnRwLmdudXRscy5vcmcvcHViL2dudXRscyBodHRwOi8vd3d3Lm1pcnJv
cnMud2lyZXRhcHBlZC5uZXQvc2VjdXJpdHkvbmV0d29yay1zZWN1cml0eS9nbnV0bHMvIFxuIGZ0
cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9nbnV0bHMgZnRwOi8vZnRwLm1pcnJvcnMud2lyZXRhcHBl
ZC5uZXQvcHViL3NlY3VyaXR5L25ldHdvcmstc2VjdXJpdHkvZ251dGxzLyBcbiBmdHA6Ly9mdHAu
Z251dGxzLm9yZy9wdWIvZ251dGxzIGh0dHA6Ly9qb3NlZnNzb24ub3JnL2dudXRscy9yZWxlYXNl
cy8gXG4gaHR0cDovL2Z0cC5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvc3JjLyBodHRwOi8vbWly
cm9yLnN3aXRjaC5jaC9mdHAvbWlycm9yL2luZm96aXAvc3JjLyBcbiBodHRwOi8vZnRwLmluZm8t
emlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvIGZ0cDovL3N1bnNpdGUuaWNtLmVkdS5wbC9wdWIvdW5p
eC9hcmNoaXZpbmcvaW5mby16aXAvc3JjLyBcbiBmdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9w
dWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLmNlcmlhcy5wdXJkdWUuZWR1L3B1Yi90b29s
cy91bml4L3N5c3V0aWxzL2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90
b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAudGF1LmFjLmlsL3B1Yi91bml4L2FkbWluLyBcbiBm
dHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRw
LmNlcnQuZGZuLmRlL3B1Yi90b29scy9hZG1pbi9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVy
ZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS9wdWIv
dW5peC90b29scy9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMv
dW5peC9sc29mLyAgZnRwOi8vZnRwLmthaXpvLm9yZy9wdWIvbHNvZi8gXG4gZnRwOi8vbHNvZi5p
dGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC50dS1kYXJtc3Rh
ZHQuZGUvcHViL3N5c2FkbWluL2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1
Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAudHV4Lm9yZy9wdWIvc2l0ZXMvdmljLmNjLnB1
cmR1ZS5lZHUvdG9vbHMvdW5peC9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9w
dWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZ2QudHV3aWVuLmFjLmF0L3V0aWxzL2FkbWluLXRv
b2xzL2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xz
b2YvICBmdHA6Ly9zdW5zaXRlLnVhbGJlcnRhLmNhL3B1Yi9NaXJyb3IvbHNvZi8gXG4gZnRwOi8v
bHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL3RoZS53aXJl
dGFwcGVkLm5ldC9wdWIvc2VjdXJpdHkvaG9zdC1zZWN1cml0eS9sc29mLyBcbiBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvZGlzdCAgaHR0cDovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0IFxuIApNSVJS
T1JTPSJmdHA6Ly8uKi8uKiAgICAgIGh0dHA6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3Jn
L3NvdXJjZXMvIFxuIGh0dHA6Ly8uKi8uKiAgICAgaHR0cDovL2F1dG9idWlsZGVyLnlvY3RvcHJv
amVjdC5vcmcvc291cmNlcy8gXG4gaHR0cHM6Ly8uKi8uKiAgICBodHRwOi8vYXV0b2J1aWxkZXIu
eW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiAgZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFu
L3Bvb2wvbWFpbglodHRwOi8vc25hcHNob3QuZGViaWFuLm5ldC9hcmNoaXZlL3Bvb2wgXG4gZnRw
Oi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGVi
aWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLmF1
LmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bv
b2wJZnRwOi8vZnRwLmNsLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlh
bi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLmhyLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4g
ZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLmZpLmRlYmlhbi5vcmcv
ZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRw
LmhrLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFu
L3Bvb2wJZnRwOi8vZnRwLmh1LmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRl
Ymlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLmllLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wg
XG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLml0LmRlYmlhbi5v
cmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8v
ZnRwLmpwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGVi
aWFuL3Bvb2wJZnRwOi8vZnRwLm5vLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRw
LmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLnBsLmRlYmlhbi5vcmcvZGViaWFuL3Bv
b2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLnJvLmRlYmlh
bi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRw
Oi8vZnRwLnNpLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcv
ZGViaWFuL3Bvb2wJZnRwOi8vZnRwLmVzLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8v
ZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLnNlLmRlYmlhbi5vcmcvZGViaWFu
L3Bvb2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJZnRwOi8vZnRwLnRyLmRl
Ymlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gZnRwOi8vZnRwLmdudS5vcmcvZ251CWZ0cDovL21pcnJv
cnMua2VybmVsLm9yZy9nbnUgXG4gZnRwOi8vZnRwLmdudS5vcmcvZ251CWZ0cDovL2Z0cC5tYXRy
aXguY29tLmJyL3B1Yi9nbnUgXG4gZnRwOi8vZnRwLmdudS5vcmcvZ251CWZ0cDovL2Z0cC5jcy51
YmMuY2EvbWlycm9yMi9nbnUgXG4gZnRwOi8vZnRwLmdudS5vcmcvZ251CWZ0cDovL3N1bnNpdGUu
dXN0LmhrL3B1Yi9nbnUgXG4gZnRwOi8vZnRwLmdudS5vcmcvZ251CWZ0cDovL2Z0cC5heWFtdXJh
Lm9yZy9wdWIvZ251IFxuIGh0dHA6Ly9rZXJuZWwub3JnL3B1YglodHRwOi8vd3d3Lmtlcm5lbC5v
cmcvcHViIFxuIGh0dHA6Ly9rZXJuZWwub3JnL3B1YglmdHA6Ly9mdHAudXMua2VybmVsLm9yZy9w
dWIgXG4gaHR0cDovL2tlcm5lbC5vcmcvcHViCWZ0cDovL2Z0cC51ay5rZXJuZWwub3JnL3B1YiBc
biBodHRwOi8va2VybmVsLm9yZy9wdWIJZnRwOi8vZnRwLmhrLmtlcm5lbC5vcmcvcHViIFxuIGh0
dHA6Ly9rZXJuZWwub3JnL3B1YglmdHA6Ly9mdHAuYXUua2VybmVsLm9yZy9wdWIgXG4gaHR0cDov
L2tlcm5lbC5vcmcvcHViCWZ0cDovL2Z0cC5qcC5rZXJuZWwub3JnL3B1YiBcbiBmdHA6Ly9mdHAu
Z251cGcub3JnL2djcnlwdC8gICAgIGZ0cDovL2Z0cC5mcmFua2VuLmRlL3B1Yi9jcnlwdC9taXJy
b3IvZnRwLmdudXBnLm9yZy9nY3J5cHQvIFxuIGZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0LyAg
ICAgZnRwOi8vZnRwLnN1cmZuZXQubmwvcHViL3NlY3VyaXR5L2dudXBnLyBcbiBmdHA6Ly9mdHAu
Z251cGcub3JnL2djcnlwdC8gICAgIGh0dHA6Ly9ndWx1cy5VU2hlcmJyb29rZS5jYS9wdWIvYXBw
bC9HbnVQRy8gXG4gZnRwOi8vZGFudGUuY3Rhbi5vcmcvdGV4LWFyY2hpdmUgZnRwOi8vZnRwLmZ1
LWJlcmxpbi5kZS90ZXgvQ1RBTiBcbiBmdHA6Ly9kYW50ZS5jdGFuLm9yZy90ZXgtYXJjaGl2ZSBo
dHRwOi8vc3Vuc2l0ZS5zdXQuYWMuanAvcHViL2FyY2hpdmVzL2N0YW4vIFxuIGZ0cDovL2RhbnRl
LmN0YW4ub3JnL3RleC1hcmNoaXZlIGh0dHA6Ly9jdGFuLnVuc3cuZWR1LmF1LyBcbiBmdHA6Ly9m
dHAuZ251dGxzLm9yZy9wdWIvZ251dGxzIGZ0cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9nbnV0bHMv
IFxuIGZ0cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9nbnV0bHMgZnRwOi8vZnRwLmdudXBnLm9yZy9n
Y3J5cHQvZ251dGxzLyBcbiBmdHA6Ly9mdHAuZ251dGxzLm9yZy9wdWIvZ251dGxzIGh0dHA6Ly93
d3cubWlycm9ycy53aXJldGFwcGVkLm5ldC9zZWN1cml0eS9uZXR3b3JrLXNlY3VyaXR5L2dudXRs
cy8gXG4gZnRwOi8vZnRwLmdudXRscy5vcmcvcHViL2dudXRscyBmdHA6Ly9mdHAubWlycm9ycy53
aXJldGFwcGVkLm5ldC9wdWIvc2VjdXJpdHkvbmV0d29yay1zZWN1cml0eS9nbnV0bHMvIFxuIGZ0
cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9nbnV0bHMgaHR0cDovL2pvc2Vmc3Nvbi5vcmcvZ251dGxz
L3JlbGVhc2VzLyBcbiBodHRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvIGh0
dHA6Ly9taXJyb3Iuc3dpdGNoLmNoL2Z0cC9taXJyb3IvaW5mb3ppcC9zcmMvIFxuIGh0dHA6Ly9m
dHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy8gZnRwOi8vc3Vuc2l0ZS5pY20uZWR1LnBs
L3B1Yi91bml4L2FyY2hpdmluZy9pbmZvLXppcC9zcmMvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJk
dWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuY2VyaWFzLnB1cmR1ZS5lZHUv
cHViL3Rvb2xzL3VuaXgvc3lzdXRpbHMvbHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5l
ZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC50YXUuYWMuaWwvcHViL3VuaXgvYWRt
aW4vIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBm
dHA6Ly9mdHAuY2VydC5kZm4uZGUvcHViL3Rvb2xzL2FkbWluL2xzb2YvIFxuIGZ0cDovL2xzb2Yu
aXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuZnUtYmVybGlu
LmRlL3B1Yi91bml4L3Rvb2xzL2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1
Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAua2Fpem8ub3JnL3B1Yi9sc29mLyBcbiBmdHA6
Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLnR1
LWRhcm1zdGFkdC5kZS9wdWIvc3lzYWRtaW4vbHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1
ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9zaXRlcy92
aWMuY2MucHVyZHVlLmVkdS90b29scy91bml4L2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJk
dWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9nZC50dXdpZW4uYWMuYXQvdXRpbHMv
YWRtaW4tdG9vbHMvbHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xz
L3VuaXgvbHNvZi8gIGZ0cDovL3N1bnNpdGUudWFsYmVydGEuY2EvcHViL01pcnJvci9sc29mLyBc
biBmdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8v
dGhlLndpcmV0YXBwZWQubmV0L3B1Yi9zZWN1cml0eS9ob3N0LXNlY3VyaXR5L2xzb2YvIFxuIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0ICBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3Qg
XG4iCiMgUFJFRkVSUkVEX1ZFUlNJT049Tm9uZQojIFBDTUNJQV9NQU5BR0VSPXBjbWNpYXV0aWxz
ClBDTUNJQV9NQU5BR0VSPSJwY21jaWF1dGlscyIKIyBDQ0FDSEU9JHtAYmIud2hpY2goYmIuZGF0
YS5nZXRWYXIoJ1BBVEgnLCBkLCAxKSwgJ2NjYWNoZScpIGFuZCAnY2NhY2hlICd9CiMgU1NUQVRF
X01BTklGRVNUUz0ke1RNUERJUn0vc3N0YXRlLWNvbnRyb2wKU1NUQVRFX01BTklGRVNUUz0iL2xv
Y2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxl
YXNlL3RtcC9zc3RhdGUtY29udHJvbCIKIyBERVBDSEFJTl9QUkU9CiMgUFJFRkVSUkVEX1BST1ZJ
REVSX3ZpcnR1YWwvcG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWxpYmMtZm9yLWdjYz0ke1RDTElC
Q30KUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvcG93ZXJwYy1mc2wtbGludXgtZ251c3BlLWxp
YmMtZm9yLWdjYz0iZWdsaWJjIgojIFBBQ0tBR0VSREVQVEFTSz1kb19wYWNrYWdlX3dyaXRlClBB
Q0tBR0VSREVQVEFTSz0iZG9fcGFja2FnZV93cml0ZSIKIyBHTk9NRV9HSVQ9Z2l0Oi8vZ2l0Lmdu
b21lLm9yZwpHTk9NRV9HSVQ9ImdpdDovL2dpdC5nbm9tZS5vcmciCiMgTk8zMkxJQlM9MQpOTzMy
TElCUz0iMSIKIyBBTExPV19FTVBUWV8ke1BOfS1kYmc9Tm9uZQojIF89L2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9iaXRiYWtlL2Jpbi8vYml0YmFrZQpfPSIvbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2JpdGJha2UvYmluLy9iaXRiYWtlIgoj
IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXI9eHNlcnZlci14Zjg2ClBSRUZFUlJF
RF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXI9InhzZXJ2ZXIteGY4NiIKIyBMQ09ORl9WRVJTSU9O
PTQKTENPTkZfVkVSU0lPTj0iNCIKIyBGUkVFREVTS1RPUF9DVlM9Y3ZzOi8vYW5vbmN2czphbm9u
Y3ZzQGFub25jdnMuZnJlZWRlc2t0b3Aub3JnL2N2cwpGUkVFREVTS1RPUF9DVlM9ImN2czovL2Fu
b25jdnM6YW5vbmN2c0Bhbm9uY3ZzLmZyZWVkZXNrdG9wLm9yZy9jdnMiCiMgWFRFUk1fVEVSTUNN
RFJVTj0ke1hURVJNX1RFUk1DTUR9IC1lICRTSEVMTENNRFMKWFRFUk1fVEVSTUNNRFJVTj0ieHRl
cm0gLVQgXCIkVEVSTVdJTkRPV1RJVExFXCIgLWUgJFNIRUxMQ01EUyIKIyBQQVRDSF9HRVQ9MApl
eHBvcnQgUEFUQ0hfR0VUPSIwIgojIFNJVEVfQ09ORl9WRVJTSU9OPTEKU0lURV9DT05GX1ZFUlNJ
T049IjEiCiMgQ1hYRkxBR1M9JHtUQVJHRVRfQ1hYRkxBR1N9IC1mdmlzaWJpbGl0eS1pbmxpbmVz
LWhpZGRlbgpleHBvcnQgQ1hYRkxBR1M9Ii1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQt
ZGVidWctdHlwZXMgLWZwZXJtaXNzaXZlIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiIKIyBD
T01NRVJDSUFMX0xJQ0VOU0U9bGFtZSBnc3QtZmx1ZW5kby1tcDMgbGlibWFkIG1wZWcyZGVjIGZm
bXBlZyBxbW1wICR7Q09NTUVSQ0lBTF9MSUNFTlNFX0RFUEVOREVFU30KQ09NTUVSQ0lBTF9MSUNF
TlNFPSJsYW1lIGdzdC1mbHVlbmRvLW1wMyBsaWJtYWQgbXBlZzJkZWMgZmZtcGVnIHFtbXAgZ3N0
LXBsdWdpbnMtdWdseSBsaWJvbXhpbCBnc3Qtb3Blbm1heCIKIyBDT01QQVRJQkxFX01BQ0hJTkU9
Tm9uZQojIE5PTl82NEJJVF9DT01QQVRfcG93ZXJwYzY0PQojIFBSRUZFUlJFRF9QUk9WSURFUl9n
Y29uZj1nY29uZi1kYnVzClBSRUZFUlJFRF9QUk9WSURFUl9nY29uZj0iZ2NvbmYtZGJ1cyIKIyBO
TT0ke0hPU1RfUFJFRklYfW5tCmV4cG9ydCBOTT0icG93ZXJwYy1mc2wtbGludXgtZ251c3BlLW5t
IgojIFNFUFBVS1VfQUREQ09NTUVOVD1Ob25lCiMgRklMRVNfZnNsLWltYWdlLXNpbXBsZT0ke2Jp
bmRpcn0vKiAke3NiaW5kaXJ9LyogJHtsaWJleGVjZGlyfS8qICR7bGliZGlyfS9saWIqJHtTT0xJ
QlN9ICR7c3lzY29uZmRpcn0gJHtzaGFyZWRzdGF0ZWRpcn0gJHtsb2NhbHN0YXRlZGlyfSAke2Jh
c2VfYmluZGlyfS8qICR7YmFzZV9zYmluZGlyfS8qICR7YmFzZV9saWJkaXJ9Lyoke1NPTElCU30g
JHtkYXRhZGlyfS8ke0JQTn0gJHtsaWJkaXJ9LyR7QlBOfS8qICR7ZGF0YWRpcn0vcGl4bWFwcyAk
e2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyAke2RhdGFkaXJ9L2lkbCAke2RhdGFkaXJ9L29tZiAke2Rh
dGFkaXJ9L3NvdW5kcyAke2xpYmRpcn0vYm9ub2JvL3NlcnZlcnMKRklMRVNfZnNsLWltYWdlLXNp
bXBsZT0iL3Vzci9iaW4vKiAvdXNyL3NiaW4vKiAvdXNyL2xpYmV4ZWMvKiAvdXNyL2xpYi9saWIq
LnNvLiogL2V0YyAvY29tIC92YXIgL2Jpbi8qIC9zYmluLyogL2xpYi8qLnNvLiogL3Vzci9zaGFy
ZS9mc2wtaW1hZ2Utc2ltcGxlIC91c3IvbGliL2ZzbC1pbWFnZS1zaW1wbGUvKiAvdXNyL3NoYXJl
L3BpeG1hcHMgL3Vzci9zaGFyZS9hcHBsaWNhdGlvbnMgL3Vzci9zaGFyZS9pZGwgL3Vzci9zaGFy
ZS9vbWYgL3Vzci9zaGFyZS9zb3VuZHMgL3Vzci9saWIvYm9ub2JvL3NlcnZlcnMiCiMgREVQRU5E
Uz0ke0JBU0VERVBFTkRTfSAKREVQRU5EUz0iIgojIFBBQ0tBR0VfR1JPVVBfdG9vbHMtdGVzdGFw
cHM9dGFzay1jb3JlLXRvb2xzLXRlc3RhcHBzClBBQ0tBR0VfR1JPVVBfdG9vbHMtdGVzdGFwcHM9
InRhc2stY29yZS10b29scy10ZXN0YXBwcyIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9m
YWtlcm9vdC1uYXRpdmU9cHNldWRvLW5hdGl2ZQpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9m
YWtlcm9vdC1uYXRpdmU9InBzZXVkby1uYXRpdmUiCiMgVEFSR0VUX0xJTktfSEFTSF9TVFlMRT0k
e0BbJy1XbCwtLWhhc2gtc3R5bGU9Z251JywnJ11bYmIuZGF0YS5nZXRWYXIoJ1RBUkdFVF9BUkNI
JywgZCwgVHJ1ZSkgaW4gWydtaXBzJywgJ21pcHNlbCcsICdtaXBzNjQnLCAnbWlwczY0ZWwnXV19
ClRBUkdFVF9MSU5LX0hBU0hfU1RZTEU9Ii1XbCwtLWhhc2gtc3R5bGU9Z251IgojIElNQUdFX0NN
RF9jcGlvPWNkICR7SU1BR0VfUk9PVEZTfSAmJiAoZmluZCAuIHwgY3BpbyAtbyAtSCBuZXdjID4k
e0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLmNwaW8pCklNQUdFX0NNRF9j
cGlvPSJjZCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3Ax
MDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1h
Z2Utc2ltcGxlLTEuMC1yMC9yb290ZnMgJiYgKGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyA+L2xv
Y2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxl
YXNlL3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEw
NTE2MjAucm9vdGZzLmNwaW8pIgojIEFVVE9fTElCTkFNRV9QS0dTPSR7UEFDS0FHRVN9CiMgSU1B
R0VfQ01EX2NwaW8ubHptYT10eXBlIGNwaW8gPi9kZXYvbnVsbDsgY2QgJHtJTUFHRV9ST09URlN9
ICYmIChmaW5kIC4gfCBjcGlvIC1vIC1IIG5ld2MgfCB4eiAtLWZvcm1hdD1sem1hIC1jICR7WFpf
Q09NUFJFU1NJT05fTEVWRUx9IC0tY2hlY2s9JHtYWl9JTlRFR1JJVFlfQ0hFQ0t9ID4ke0RFUExP
WV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLmNwaW8ubHptYSkgJHtFWFRSQV9JTUFH
RUNNRH0KSU1BR0VfQ01EX2NwaW8ubHptYT0idHlwZSBjcGlvID4vZGV2L251bGw7IGNkIC9sb2Nh
bC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFz
ZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4w
LXIwL3Jvb3RmcyAmJiAoZmluZCAuIHwgY3BpbyAtbyAtSCBuZXdjIHwgeHogLS1mb3JtYXQ9bHpt
YSAtYyAtZSAtOSAtLWNoZWNrPWNyYzMyID4vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWlt
YWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuY3Bpby5sem1hKSIKIyBC
VUlMRFNES19DRkxBR1M9JHtCVUlMRFNES19DUFBGTEFHU30gJHtCVUlMRF9PUFRJTUlaQVRJT059
CkJVSUxEU0RLX0NGTEFHUz0iLWlzeXN0ZW0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3Vz
ci9pbmNsdWRlIC1PMiAtcGlwZSIKIyBJTUFHRV9ERVBFTkRTX2V4dDMuZ3oudS1ib290PWdlbmV4
dDJmcy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZSB1LWJvb3QtbWtpbWFnZS1uYXRpdmUKSU1BR0Vf
REVQRU5EU19leHQzLmd6LnUtYm9vdD0iZ2VuZXh0MmZzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0aXZl
IHUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKIyBGNzc9JHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1nNzcg
JHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30KZXhwb3J0IEY3Nz0icG93ZXJwYy1m
c2wtbGludXgtZ251c3BlLWc3NyAgLW0zMiAgIC1tY3B1PTg1NDggLW1hYmk9c3BlIC1tc3BlIC0t
c3lzcm9vdD0vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3Ax
MDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiIgojIERJU1RST19GRUFUVVJFU19M
SUJDPWlwdjQgaXB2NiBsaWJjLWJhY2t0cmFjZSBsaWJjLWJpZy1tYWNyb3MgbGliYy1ic2QgbGli
Yy1jeHgtdGVzdHMgbGliYy1jYXRnZXRzIGxpYmMtY2hhcnNldHMgbGliYy1jcnlwdCAJCQkJCWxp
YmMtY3J5cHQtdWZjIGxpYmMtZGItYWxpYXNlcyBsaWJjLWVudnogbGliYy1mY3Z0IGxpYmMtZm10
bXNnIGxpYmMtZnN0YWIgbGliYy1mdHJhdmVyc2UgCQkJCQlsaWJjLWdldGxvZ2luIGxpYmMtaWRu
IGxpYmMtaW5ldC1hbmwgbGliYy1saWJtIGxpYmMtbGlibS1iaWcgbGliYy1sb2NhbGVzIGxpYmMt
bG9jYWxlLWNvZGUgCQkJCQlsaWJjLW1lbXVzYWdlIGxpYmMtbmlzIGxpYmMtbnNzd2l0Y2ggbGli
Yy1yY21kIGxpYmMtcnRsZC1kZWJ1ZyBsaWJjLXNwYXduIGxpYmMtc3RyZWFtcyBsaWJjLXN1bnJw
YyAJCQkJCWxpYmMtdXRtcCBsaWJjLXV0bXB4IGxpYmMtd29yZGV4cCBsaWJjLXBvc2l4LWNsYW5n
LXdjaGFyIGxpYmMtcG9zaXgtcmVnZXhwIGxpYmMtcG9zaXgtcmVnZXhwLWdsaWJjIAkJCQkJbGli
Yy1wb3NpeC13Y2hhci1pbwpESVNUUk9fRkVBVFVSRVNfTElCQz0iaXB2NCBpcHY2IGxpYmMtYmFj
a3RyYWNlIGxpYmMtYmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0cyBsaWJjLWNhdGdl
dHMgbGliYy1jaGFyc2V0cyBsaWJjLWNyeXB0IAkJCQkJbGliYy1jcnlwdC11ZmMgbGliYy1kYi1h
bGlhc2VzIGxpYmMtZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1mc3RhYiBsaWJjLWZ0
cmF2ZXJzZSAJCQkJCWxpYmMtZ2V0bG9naW4gbGliYy1pZG4gbGliYy1pbmV0LWFubCBsaWJjLWxp
Ym0gbGliYy1saWJtLWJpZyBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29kZSAJCQkJCWxpYmMt
bWVtdXNhZ2UgbGliYy1uaXMgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVn
IGxpYmMtc3Bhd24gbGliYy1zdHJlYW1zIGxpYmMtc3VucnBjIAkJCQkJbGliYy11dG1wIGxpYmMt
dXRtcHggbGliYy13b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGliYy1wb3NpeC1yZWdl
eHAgbGliYy1wb3NpeC1yZWdleHAtZ2xpYmMgCQkJCQlsaWJjLXBvc2l4LXdjaGFyLWlvIgojIERF
U0NSSVBUSU9OPSR7U1VNTUFSWX0KREVTQ1JJUFRJT049ImZzbC1pbWFnZS1zaW1wbGUgdmVyc2lv
biAxLjAtcjAiCiMgQ09NTUVSQ0lBTF9RVD0KIyBCQl9IQVNIRklMRU5BTUU9JHtTU1RBVEVfUEtH
TkFNRX0KQkJfSEFTSEZJTEVOQU1FPSJzc3RhdGUtZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlLTEuMC1yMC1wMTAyMHJkYi0yLSR7QkJfVEFTS0hBU0h9IgojIFNTVEFU
RV9QS0dBUkNIPSR7UEFDS0FHRV9BUkNIfQpTU1RBVEVfUEtHQVJDSD0icDEwMjByZGIiCiMgTUVU
QURBVEFfUkVWSVNJT049JHtAYmFzZV9kZXRlY3RfcmV2aXNpb24oZCl9Ck1FVEFEQVRBX1JFVklT
SU9OPSI2MzA4M2E3MTY3OTdlMTZiYzliYzI2MDQ4MmIxYzcyNzY4OTUyNmE0IgojIFVCT09UX0FS
Q0g9JHtAbWFwX3Vib290X2FyY2goYmIuZGF0YS5nZXRWYXIoJ0FSQ0gnLCBkLCAxKSwgZCl9CmV4
cG9ydCBVQk9PVF9BUkNIPSJwcGMiCiMgRVhUUkFfSU1BR0VERVBFTkRTPQojIEJVSUxEX1NUUklQ
PSR7QlVJTERfUFJFRklYfXN0cmlwCmV4cG9ydCBCVUlMRF9TVFJJUD0ic3RyaXAiCiMgbGliZGly
X25hdGl2ZXNkaz0ke3ByZWZpeF9uYXRpdmVzZGt9L2xpYgpsaWJkaXJfbmF0aXZlc2RrPSIvdXNy
L2xpYiIKIyBCQl9CQVNFSEFTSF90YXNrLWRvX3BhY2thZ2Vfc2V0c2NlbmU9ZjM1YTY1NDA2ODYw
NjZjMWNhM2E4ZjZkZWM2ZWVmNDUKQkJfQkFTRUhBU0hfdGFzay1kb19wYWNrYWdlX3NldHNjZW5l
PSJmMzVhNjU0MDY4NjA2NmMxY2EzYThmNmRlYzZlZWY0NSIKIyBTVEFHSU5HX0lOQ0RJUj0ke1NU
QUdJTkdfRElSX0hPU1R9JHtpbmNsdWRlZGlyfQpTVEFHSU5HX0lOQ0RJUj0iL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9z
eXNyb290cy9wMTAyMHJkYi91c3IvaW5jbHVkZSIKIyBTU1RBVEVfTUlSUk9SUz1maWxlOi8vLiog
aHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vc3N0YXRlLWNhY2hlLwpTU1RBVEVfTUlS
Uk9SUz0iZmlsZTovLy4qIGh0dHA6Ly9saW51eC5mcmVlc2NhbGUubmV0L3lvY3RvL3NzdGF0ZS1j
YWNoZS8iCiMgVENMSUJDQVBQRU5EPQojIFNUQUdJTkdfRElSPSR7VE1QRElSfS9zeXNyb290cwpT
VEFHSU5HX0RJUj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cyIKIyBQUkVGRVJSRURfVkVSU0lPTl9nY2Mt
Y3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfT1Ob25lCiMgU1RBR0lOR19C
SU5ESVJfVE9PTENIQUlOPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7YmluZGlyX25hdGl2ZX0vJHtU
VU5FX1BLR0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0ke1RBUkdFVF9PU30KU1RBR0lOR19CSU5ESVJf
VE9PTENIQUlOPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL3BwY2U1
MDB2Mi1mc2wtbGludXgtZ251c3BlIgojIERFUExPWV9ESVJfUlBNPSR7REVQTE9ZX0RJUn0vcnBt
CkRFUExPWV9ESVJfUlBNPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9ycG0iCiMgQkJfU0lHTkFUVVJFX0hB
TkRMRVI9YmFzaWMKQkJfU0lHTkFUVVJFX0hBTkRMRVI9ImJhc2ljIgojIFNFQ1RJT05fZnNsLWlt
YWdlLXNpbXBsZS1zdGF0aWNkZXY9ZGV2ZWwKU0VDVElPTl9mc2wtaW1hZ2Utc2ltcGxlLXN0YXRp
Y2Rldj0iZGV2ZWwiCiMgTUVUQURBVEFfQlJBTkNIPSR7QGJhc2VfZGV0ZWN0X2JyYW5jaChkKX0K
TUVUQURBVEFfQlJBTkNIPSJtYXN0ZXIiCiMgWERHX1NFU1NJT05fQ09PS0lFPWFkZDhlNzNkMGZl
YjUzMDA1Y2NlYmI0MjRlMzg1YThhLTEzMjMxODM5NTMuNjg4OTI5LTMwMzcwMzc0NwpYREdfU0VT
U0lPTl9DT09LSUU9ImFkZDhlNzNkMGZlYjUzMDA1Y2NlYmI0MjRlMzg1YThhLTEzMjMxODM5NTMu
Njg4OTI5LTMwMzcwMzc0NyIKIyBMSUNFTlNFPU1JVApMSUNFTlNFPSJNSVQiCiMgSE9NRVBBR0U9
dW5rbm93bgpIT01FUEFHRT0idW5rbm93biIKIyBQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFk9
JHtGRUFUVVJFX0lOU1RBTExfT1BUSU9OQUx9CiMgUEFDS0FHRVNfRFlOQU1JQz0ke1BOfS1sb2Nh
bGUtKgpQQUNLQUdFU19EWU5BTUlDPSJmc2wtaW1hZ2Utc2ltcGxlLWxvY2FsZS0qIgojIExPQ0FM
Q09ORl9WRVJTSU9OPTEKTE9DQUxDT05GX1ZFUlNJT049IjEiCiMgTVVMVElMSUJfVkFSSUFOVFM9
CiMgU1RBR0lOR19ESVJfVEFSR0VUPSR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0KU1RBR0lOR19E
SVJfVEFSR0VUPSIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiIgojIERFQlVHX09QVElNSVpB
VElPTj0tTyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAke0RFQlVHX0ZMQUdTfSAtcGlwZQpERUJV
R19PUFRJTUlaQVRJT049Ii1PIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1nIC1mZWxpbWluYXRl
LXVudXNlZC1kZWJ1Zy10eXBlcyAtcGlwZSIKIyBQUkVGRVJSRURfVkVSU0lPTl9nY2MtcnVudGlt
ZT0ke0dDQ1ZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2djYy1ydW50aW1lPSI0LjYlIgojIFBQ
Q1BLR0FSQ0g9JHtUVU5FX0FSQ0h9JHtQUENQS0dTRlhfRlBVfQpQUENQS0dBUkNIPSJwb3dlcnBj
LW5mIgojIE9FX0lNUE9SVFM9IG9zIHN5cyB0aW1lIG9lLnBhdGggb2UudXRpbHMgb2UuZGF0YSBv
ZS5wYWNrYWdlZ3JvdXAKT0VfSU1QT1JUUz0ib3Mgc3lzIHRpbWUgb2UucGF0aCBvZS51dGlscyBv
ZS5kYXRhIG9lLnBhY2thZ2Vncm91cCIKIyBBVVRPUkVWPSR7QGJiLmZldGNoMi5nZXRfYXV0b3Jl
dihkKX0KQVVUT1JFVj0iQVVUT0lOQyIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1NE
S19QUkVGSVh9bGliYy1pbml0aWFsLW5hdGl2ZXNkaz1Ob25lCiMgRkVUQ0hDT01NQU5EX3N2bj0v
dXNyL2Jpbi9lbnYgc3ZuIGNvICR7U1ZOQ09PUFRTfSAke1NWTlJPT1R9ICR7U1ZOTU9EVUxFfQpG
RVRDSENPTU1BTkRfc3ZuPSIvdXNyL2Jpbi9lbnYgc3ZuIGNvICR7U1ZOQ09PUFRTfSAke1NWTlJP
T1R9ICR7U1ZOTU9EVUxFfSIKIyBERVBMT1lfRElSX0RFQj0ke0RFUExPWV9ESVJ9L2RlYgpERVBM
T1lfRElSX0RFQj0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvZGViIgojIFBBQ0tBR0VfRVhUUkFfQVJDSFM9
JHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtJHtERUZBVUxUVFVORX19ClBBQ0tBR0VfRVhUUkFf
QVJDSFM9InBwY2U1MDB2MiIKIyBQUkVGRVJSRURfVkVSU0lPTl9lZ2xpYmMtbG9jYWxlPSR7RUdM
SUJDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fZWdsaWJjLWxvY2FsZT0iMi4xMyIKIyBDTEVB
TkZVTkNTPSBzc3RhdGVfY2xlYW5hbGwKQ0xFQU5GVU5DUz0ic3N0YXRlX2NsZWFuYWxsIgojIFNU
QUdJTkdfQklORElSX0NST1NTPSR7U1RBR0lOR19CSU5ESVJ9L2Nyb3Nzc2NyaXB0cwpTVEFHSU5H
X0JJTkRJUl9DUk9TUz0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9i
dWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi91c3IvYmluL2Nyb3Nz
c2NyaXB0cyIKIyBQQUxNVE9QX1VTRV9NVUxUSVRIUkVBREVEX1FUPU5vbmUKIyBQUkVGRVJSRURf
VkVSU0lPTl9lZ2xpYmMtaW5pdGlhbD0ke0VHTElCQ1ZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9O
X2VnbGliYy1pbml0aWFsPSIyLjEzIgpkb19mZXRjaGFsbCgpIHsKCToKCn0KCmRvX2J1aWxkKCkg
ewoJOgoKfQoKc2V0X2ltYWdlX2F1dG9sb2dpbigpIHsKICAgICAgICBzZWQgLWkgJ3MlXkFVVE9M
T0dJTj1cImZhbHNlIiVBVVRPTE9HSU49InRydWUiJWcnIC9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJk
Yi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy9ldGMvc3lz
Y29uZmlnL2dwZWxvZ2luCgp9CgpydW5pbWFnZWNtZCgpIHsKCSMgSW1hZ2UgZ2VuZXJhdGlvbiBj
b2RlIGZvciBpbWFnZSB0eXBlICR7dHlwZX0KCVJPT1RGU19TSVpFPWBkdSAta3MgL2xvY2FsL2pl
bmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3Rt
cC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAv
cm9vdGZzfGF3ayAne3NpemUgPSAkMSAqIDEuMyArIDA7IE9GTVQgPSAiJS4wZiIgOyBwcmludCAo
c2l6ZSA+IDgxOTIgPyBzaXplIDogODE5MikgfSdgCgkke2NtZH0KCWNkIC9sb2NhbC9qZW5raW5z
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVw
bG95L2ltYWdlcy8KCXJtIC1mIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1hZ2Utc2lt
cGxlLXAxMDIwcmRiLiR7dHlwZX0KCWxuIC1zIGZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAx
MTEyMTEwNTE2MjAucm9vdGZzLiR7dHlwZX0gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2VzL2ZzbC1p
bWFnZS1zaW1wbGUtcDEwMjByZGIuJHt0eXBlfQoKfQoKaW5zZXJ0X2ZlZWRfdXJpcygpIHsKCgll
Y2hvICJCdWlsZGluZyBmZWVkcyBmb3IgW2ZzbF0uLiIKCglmb3IgbGluZSBpbiAke0ZFRURfVVJJ
U30KCWRvCgkJIyBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMvdGFicywgdGhlbiBz
cGxpdCBpbnRvIG5hbWUgYW5kIHVyaQoJCWxpbmVfY2xlYW49ImBlY2hvICIkbGluZSJ8c2VkICdz
L15bIFx0XSovLztzL1sgXHRdKiQvLydgIgoJCWZlZWRfbmFtZT0iYGVjaG8gIiRsaW5lX2NsZWFu
IiB8IHNlZCAtbiAncy9cKC4qXCkjI1woLipcKS9cMS9wJ2AiCgkJZmVlZF91cmk9ImBlY2hvICIk
bGluZV9jbGVhbiIgfCBzZWQgLW4gJ3MvXCguKlwpIyNcKC4qXCkvXDIvcCdgIgoKCQllY2hvICJB
ZGRlZCAkZmVlZF9uYW1lIGZlZWQgd2l0aCBVUkwgJGZlZWRfdXJpIgoKCQkjIGluc2VydCBuZXcg
ZmVlZC1zb3VyY2VzCgkJZWNobyAic3JjL2d6ICRmZWVkX25hbWUgJGZlZWRfdXJpIiA+PiAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEu
MC1yMC9yb290ZnMvZXRjL29wa2cvJHtmZWVkX25hbWV9LWZlZWQuY29uZgoJZG9uZQoKfQoKcmVz
b2x2ZV9wYWNrYWdlX3JwbSgpIHsKCWxvY2FsIGNvbmZmaWxlPSIkMSIKCXNoaWZ0Cglsb2NhbCBw
a2dfbmFtZT0iIgoJZm9yIHNvbHZlIGluIGBjYXQgJHtjb25mZmlsZX1gOyBkbwoJCXBrZ19uYW1l
PSQocnBtIC0tZGJwYXRoIC92YXIvbGliL3JwbSAtLWRlZmluZT0nX29wZW5hbGxfYmVmb3JlX2No
cm9vdCAxJyAtRCAiX2RicGF0aCAkc29sdmUiIC1EICJfX2RiaV90eG4gY3JlYXRlIG5vZnN5bmMi
IC1xIC0teWFtbCAkQCB8IGdyZXAgLWkgJ1BhY2thZ2VvcmlnaW4nIHwgY3V0IC1kIDogLWYgMikK
CQlpZiBbIC1uICIkcGtnX25hbWUiIF07IHRoZW4KCQkJYnJlYWs7CgkJZmkKCWRvbmUKCWVjaG8g
JHBrZ19uYW1lCgp9Cgp6YXBfcm9vdF9wYXNzd29yZCgpIHsKCXNlZCAncyVecm9vdDpbXjpdKjol
cm9vdDoqOiUnIDwgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNs
LWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0Yy9wYXNzd2QgPi9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9w
MTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy9l
dGMvcGFzc3dkLm5ldwoJbXYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVz
cGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0Yy9wYXNzd2QubmV3IC9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIw
L3Jvb3Rmcy9ldGMvcGFzc3dkCgp9CgpwcmVsaW5rX2ltYWdlKCkgewojCWV4cG9ydCBQU0VVRE9f
REVCVUc9NAojCS9iaW4vZW52IHwgL2Jpbi9ncmVwIFBTRVVETwojCWVjaG8gIkxEX0xJQlJBUllf
UEFUSD0kTERfTElCUkFSWV9QQVRIIgojCWVjaG8gIkxEX1BSRUxPQUQ9JExEX1BSRUxPQUQiCgoJ
cHJlX3ByZWxpbmtfc2l6ZT1gZHUgLWtzIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGlu
dXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyB8IGF3ayAne3NpemUgPSAk
MSA7IHByaW50IHNpemUgfSdgCgllY2hvICJTaXplIGJlZm9yZSBwcmVsaW5raW5nICRwcmVfcHJl
bGlua19zaXplLiIKCgkjIFdlIG5lZWQgYSBwcmVsaW5rIGNvbmYgb24gdGhlIGZpbGVzeXN0ZW0s
IGFkZCBvbmUgaWYgaXQncyBtaXNzaW5nCglpZiBbICEgLWUgL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIw
cmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0Yy9w
cmVsaW5rLmNvbmYgXTsgdGhlbgoJCWNwIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4
L2V0Yy9wcmVsaW5rLmNvbmYgXAoJCQkvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4
LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMvZXRjL3ByZWxpbmsuY29uZgoJ
CWR1bW15X3ByZWxpbmtfY29uZj10cnVlOwoJZWxzZQoJCWR1bW15X3ByZWxpbmtfY29uZj1mYWxz
ZTsKCWZpCgoJIyBwcmVsaW5rIQoJL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNy
L3NiaW4vcHJlbGluayAtLXJvb3QgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1n
bnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzIC1hbVIgLU4gLWMgL2V0Yy9wcmVs
aW5rLmNvbmYKCgkjIFJlbW92ZSB0aGUgcHJlbGluay5jb25mIGlmIHdlIGhhZCB0byBhZGQgaXQu
CglpZiBbICIkZHVtbXlfcHJlbGlua19jb25mIiA9PSAidHJ1ZSIgXTsgdGhlbgoJCXJtIC1mIC9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVs
ZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUt
MS4wLXIwL3Jvb3Rmcy9ldGMvcHJlbGluay5jb25mCglmaQoKCXByZV9wcmVsaW5rX3NpemU9YGR1
IC1rcyAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Ut
c2ltcGxlLTEuMC1yMC9yb290ZnMgfCBhd2sgJ3tzaXplID0gJDEgOyBwcmludCBzaXplIH0nYAoJ
ZWNobyAiU2l6ZSBhZnRlciBwcmVsaW5raW5nICRwcmVfcHJlbGlua19zaXplLiIKCn0KCmRvX3Jv
b3RmcygpIHsKCSNzZXQgLXgKCXJtIC1yZiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxp
bnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMKCXJtIC1yZiAvbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1y
MC9tdWx0aWxpYgoJbWtkaXIgLXAgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1n
bnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzCglta2RpciAtcCAvbG9jYWwvamVu
a2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1w
L2RlcGxveS9pbWFnZXMKCgljcCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL21ldGEvZmlsZXMvZGVwbG95ZGlyX3JlYWRtZS50eHQgL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1h
Z2VzL1JFQURNRV8tX0RPX05PVF9ERUxFVEVfRklMRVNfSU5fVEhJU19ESVJFQ1RPUlkudHh0CgoJ
aWYgWyAiMCIgIT0gIjEiIF07IHRoZW4KCQlmb3IgZGV2dGFibGUgaW4gIC9sb2NhbC9qZW5raW5z
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9maWxlcy9kZXZpY2VfdGFibGUtbWluaW1h
bC50eHQ7IGRvCgkJCW1ha2VkZXZzIC1yIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGlu
dXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAtRCAkZGV2dGFibGUKCQlk
b25lCglmaQoKCXJvb3Rmc19ycG1fZG9fcm9vdGZzCgoJaW5zZXJ0X2ZlZWRfdXJpcwoKCWlmIFsg
InhsZGNvbmZpZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIgIT0gIngiIF07IHRoZW4KCQkj
IFJ1biBsZGNvbmZpZyBvbiB0aGUgaW1hZ2UgdG8gY3JlYXRlIGEgdmFsaWQgY2FjaGUKCQkjIChu
ZXcgZm9ybWF0IGZvciBjcm9zcyBhcmNoIGNvbXBhdGliaWxpdHkpCgkJZWNobyBleGVjdXRpbmc6
IGxkY29uZmlnIC1yIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2Zz
bC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAtYyBuZXcgLXYKCQlsZGNvbmZpZyAtciAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEu
MC1yMC9yb290ZnMgLWMgbmV3IC12CglmaQoKCSMgKHJlKWNyZWF0ZSBrZXJuZWwgbW9kdWxlcyBk
ZXBlbmRlbmNpZXMKCSMgVGhpcyBwYXJ0IGlzIGRvbmUgYnkga2VybmVsLW1vZHVsZS0qIHBvc3Rp
bnN0YWxsIHNjcmlwdHMgYnV0IGlmIGltYWdlIGRvCgkjIG5vdCBjb250YWlucyBtb2R1bGVzIGF0
IGFsbCB0aGVyZSBhcmUgZmV3IG1vbWVudHMgaW4gYm9vdCBzZXF1ZW5jZSB3aXRoCgkjICJ1bmFi
bGUgdG8gb3BlbiBtb2R1bGVzLmRlcCIgbWVzc2FnZS4KCWlmIFsgLWUgL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNy
b290cy9wMTAyMHJkYi9rZXJuZWwva2VybmVsLWFiaXZlcnNpb24gXTsgdGhlbgoJCUtFUk5FTF9W
RVJTSU9OPWBjYXQgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi9rZXJuZWwva2VybmVsLWFi
aXZlcnNpb25gCgoJCW1rZGlyIC1wIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEw
MjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgt
Z251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy9saWIvbW9kdWxlcy8kS0VSTkVM
X1ZFUlNJT04KCQlwb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtZGVwbW9kIC1hIC1iIC9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIw
L3Jvb3RmcyAtRiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL2tlcm5lbC9TeXN0ZW0ubWFw
LSRLRVJORUxfVkVSU0lPTiAkS0VSTkVMX1ZFUlNJT04KCWZpCgoJIG1rbGlic19vcHRpbWl6ZV9p
bWFnZTsgIHByZWxpbmtfaW1hZ2U7IAoKCQoJIyBJbWFnZSBnZW5lcmF0aW9uIGNvZGUgZm9yIGlt
YWdlIHR5cGUgdGFyLmd6CglST09URlNfU0laRT1gZHUgLWtzIC9sb2NhbC9qZW5raW5zL3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAy
MHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmc3xhd2sg
J3tzaXplID0gJDEgKiAxLjMgKyAwOyBPRk1UID0gIiUuMGYiIDsgcHJpbnQgKHNpemUgPiA4MTky
ID8gc2l6ZSA6IDgxOTIpIH0nYAoJY2QgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51
eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzICYmIHRhciAtemN2ZiAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1
MTYyMC5yb290ZnMudGFyLmd6IC4KCWNkIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy8KCXJtIC1m
IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJf
cmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLnRhci5n
egoJbG4gLXMgZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMu
dGFyLmd6IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRi
LnRhci5negoJIyBJbWFnZSBnZW5lcmF0aW9uIGNvZGUgZm9yIGltYWdlIHR5cGUgZXh0Mi5nei51
LWJvb3QKCVJPT1RGU19TSVpFPWBkdSAta3MgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1s
aW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzfGF3ayAne3NpemUgPSAk
MSAqIDEuMyArIDA7IE9GTVQgPSAiJS4wZiIgOyBwcmludCAoc2l6ZSA+IDgxOTIgPyBzaXplIDog
ODE5MikgfSdgCgkJcm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3otZnNsLWlt
YWdlLXNpbXBsZSAmJiBta2RpciAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1p
bWFnZS1zaW1wbGUKCWdlbmV4dDJmcyAtYiAkUk9PVEZTX1NJWkUgLWQgL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3Jr
L3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZz
ICAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1pbWFnZS1zaW1wbGUvZnNsLWlt
YWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0MgoJZ3ppcCAtZiAt
OSAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvdG1wLmd6LWZzbC1pbWFnZS1zaW1wbGUvZnNsLWlt
YWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0MgoJbXYgL2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNl
L3RtcC9kZXBsb3kvaW1hZ2VzL3RtcC5nei1mc2wtaW1hZ2Utc2ltcGxlL2ZzbC1pbWFnZS1zaW1w
bGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZzLmV4dDIuZ3ogL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBs
b3kvaW1hZ2VzL2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAucm9vdGZz
LmV4dDIuZ3oKCXJtZGlyIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy90bXAuZ3otZnNsLWltYWdl
LXNpbXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfbWtpbWFnZSBmc2wt
aW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQyLmd6IGd6aXAK
CWNkIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy8KCXJtIC1mIC9sb2NhbC9qZW5raW5zL3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2lt
YWdlcy9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLmV4dDIuZ3oudS1ib290CglsbiAtcyBmc2wt
aW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5leHQyLmd6LnUtYm9v
dCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi5leHQy
Lmd6LnUtYm9vdAoKCgkKCgkKCn0KCmJiZGVidWcoKSB7CglVU0FHRT0nVXNhZ2U6IGJiZGVidWcg
WzEyM10gIm1lc3NhZ2UiJwoJaWYgWyAkIyAtbHQgMiBdOyB0aGVuCgkJYmJmYXRhbCAiJFVTQUdF
IgoJZmkKCgkjIFN0cmlwIG9mZiB0aGUgZGVidWcgbGV2ZWwgYW5kIGVuc3VyZSBpdCBpcyBhbiBp
bnRlZ2VyCglEQkdMVkw9JDE7IHNoaWZ0CglpZiAhIFtbICIkREJHTFZMIiA9fiBeWzAtOV0rIF1d
OyB0aGVuCgkJYmJmYXRhbCAiJFVTQUdFIgoJZmkKCgkjIEFsbCBkZWJ1ZyBvdXRwdXQgaXMgcHJp
bnRlZCB0byB0aGUgbG9ncwoJZWNobyAiREVCVUc6ICQqIgoKfQoKcGFja2FnZV9nZW5lcmF0ZV9y
cG1fY29uZigpIHsKCSMgVXBkYXRlIHRhcmdldCBwYWNrYWdlcwoJcGFja2FnZV9nZW5lcmF0ZV9y
cG1fY29uZl9jb21tb24gIi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L3JwbS9zb2x2ZWRiIiBiYXNlX2FyY2hz
IG1sX2FyY2hzCgoJIyBVcGRhdGUgU0RLIHBhY2thZ2VzCglwYWNrYWdlX2dlbmVyYXRlX3JwbV9j
b25mX2NvbW1vbiAiL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGItc2RrIiBiYXNlX2FyY2hz
Cgp9CgpJTUFHRV9DTURfdWJpKCkgewoJZWNobyBcW3ViaWZzXF0gPiB1YmluaXplLmNmZwoJZWNo
byBtb2RlPXViaSA+PiB1YmluaXplLmNmZwoJZWNobyBpbWFnZT0vbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9p
bWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMudWJp
ZnMgPj4gdWJpbml6ZS5jZmcKCWVjaG8gdm9sX2lkPTAgPj4gdWJpbml6ZS5jZmcKCWVjaG8gdm9s
X3R5cGU9ZHluYW1pYyA+PiB1YmluaXplLmNmZwoJZWNobyB2b2xfbmFtZT1wMTAyMHJkYi1yb290
ZnMgPj4gdWJpbml6ZS5jZmcKCWVjaG8gdm9sX2ZsYWdzPWF1dG9yZXNpemUgPj4gdWJpbml6ZS5j
ZmcKCW1rZnMudWJpZnMgLXIgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVz
cGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzIC1vIC9sb2NhbC9qZW5raW5zL3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2lt
YWdlcy9mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy51Ymlm
cyAke01LVUJJRlNfQVJHU30gJiYgdWJpbml6ZSAtbyAvbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMv
ZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMudWJpICR7VUJJ
TklaRV9BUkdTfSB1YmluaXplLmNmZwoKfQoKcm9vdGZzX3RyaW1fc2NoZW1hcygpIHsKCWZvciBz
Y2hlbWEgaW4gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9w
MTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWlt
YWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0Yy9nY29uZi9zY2hlbWFzLyouc2NoZW1hcwoJZG8K
CQkjIE5lZWQgdGhpcyBpbiBjYXNlIG5vIGZpbGVzIGV4aXN0CgkJaWYgWyAtZSAkc2NoZW1hIF07
IHRoZW4KCQkJb2UtdHJpbS1zY2hlbWFzICRzY2hlbWEgPiAkc2NoZW1hLm5ldwogICAgICAgIAkg
ICAgICAgIG12ICRzY2hlbWEubmV3ICRzY2hlbWEKCQlmaQoJZG9uZQoKfQoKb2VfbWFjaGluc3Rh
bGwoKSB7CgkjIFB1cnBvc2U6IEluc3RhbGwgbWFjaGluZSBkZXBlbmRlbnQgZmlsZXMsIGlmIGF2
YWlsYWJsZQoJIyAgICAgICAgICBJZiBub3QgYXZhaWxhYmxlLCBjaGVjayBpZiB0aGVyZSBpcyBh
IGRlZmF1bHQKCSMgICAgICAgICAgSWYgbm8gZGVmYXVsdCwganVzdCB0b3VjaCB0aGUgZGVzdGlu
YXRpb24KCSMgRXhhbXBsZToKCSMgICAgICAgICAgICAgICAgJDEgICQyICAgJDMgICAgICAgICAk
NAoJIyBvZV9tYWNoaW5zdGFsbCAtbSAwNjQ0IGZzdGFiIC9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJk
Yi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL2ltYWdlL2V0Yy9mc3Rh
YgoJIwoJIyBUT0RPOiBDaGVjayBhcmd1bWVudCBudW1iZXI/CgkjCglmaWxlbmFtZT1gYmFzZW5h
bWUgJDNgCglkaXJuYW1lPWBkaXJuYW1lICQzYAoKCWZvciBvIGluIGBlY2hvIGxpbnV4LWdudXNw
ZTpwb3dlcnBjOmJ1aWxkLWxpbnV4OnBuLWZzbC1pbWFnZS1zaW1wbGU6cDEwMjByZGI6ZTUwMHYy
OmZzbDpmb3JjZXZhcmlhYmxlOmxpYmMtZ2xpYmMgfCB0ciAnOicgJyAnYDsgZG8KCQlpZiBbIC1l
ICRkaXJuYW1lLyRvLyRmaWxlbmFtZSBdOyB0aGVuCgkJCWJibm90ZSAkZGlybmFtZS8kby8kZmls
ZW5hbWUgcHJlc2VudCwgaW5zdGFsbGluZyB0byAkNAoJCQlpbnN0YWxsICQxICQyICRkaXJuYW1l
LyRvLyRmaWxlbmFtZSAkNAoJCQlyZXR1cm4KCQlmaQoJZG9uZQojCWJibm90ZSBvdmVycmlkZXMg
c3BlY2lmaWMgZmlsZSBOT1QgcHJlc2VudCwgdHJ5aW5nIGRlZmF1bHQ9JDMuLi4KCWlmIFsgLWUg
JDMgXTsgdGhlbgoJCWJibm90ZSAkMyBwcmVzZW50LCBpbnN0YWxsaW5nIHRvICQ0CgkJaW5zdGFs
bCAkMSAkMiAkMyAkNAoJZWxzZQoJCWJibm90ZSAkMyBOT1QgcHJlc2VudCwgdG91Y2hpbmcgZW1w
dHkgJDQKCQl0b3VjaCAkNAoJZmkKCn0KCmRvX2NvbmZpZ3VyZSgpIHsKCWJhc2VfZG9fY29uZmln
dXJlCgp9CgpQUkVNSVJST1JTKCkgewpjdnM6Ly8uKi8uKiAgICAgaHR0cDovL2xpbnV4LmZyZWVz
Y2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpzdm46Ly8uKi8uKiAgICAgaHR0cDovL2xpbnV4LmZy
ZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpnaXQ6Ly8uKi8uKiAgICAgaHR0cDovL2xpbnV4
LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpoZzovLy4qLy4qICAgICAgaHR0cDovL2xp
bnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpienI6Ly8uKi8uKiAgICAgaHR0cDov
L2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpzdms6Ly8uKi8uKiAgICAgaHR0
cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpwNDovLy4qLy4qICAgICAg
aHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpvc2M6Ly8uKi8uKiAg
ICAgaHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpodHRwcz8kOi8v
LiovLiogaHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwpmdHA6Ly8u
Ki8uKiAgICAgaHR0cDovL2xpbnV4LmZyZWVzY2FsZS5uZXQveW9jdG8vZG93bmxvYWRzLwoKfQoK
SU1BR0VfQ01EX2J0cmZzKCkgewoJbWtmcy5idHJmcyAtYiBgZXhwciAke1JPT1RGU19TSVpFfSBc
KiAxMDI0YCAgLXIgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNs
LWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L2ltYWdlcy9mc2wt
aW1hZ2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5idHJmcwoKfQoKc3lz
cm9vdF9zdGFnZV9kaXIoKSB7CglzcmM9IiQxIgoJZGVzdD0iJDIiCgkjIGlmIHRoZSBzcmMgZG9l
c24ndCBleGlzdCBkb24ndCBkbyBhbnl0aGluZwoJaWYgWyAhIC1kICIkc3JjIiBdOyB0aGVuCgkJ
IHJldHVybgoJZmkKCgkjIFdlIG9ubHkgd2FudCB0byBzdGFnZSB0aGUgY29udGVudHMgb2YgJHNy
YyBpZiBpdCdzIG5vbi1lbXB0eSBzbyBmaXJzdCBybWRpciAkc3JjCgkjIHRoZW4gaWYgaXQgc3Rp
bGwgZXhpc3RzIChybWRpciBvbiBub24tZW1wdHkgZGlyIGZhaWxzKSB3ZSBjYW4gY29weSBpdHMg
Y29udGVudHMKCXJtZGlyICIkc3JjIiAyPiAvZGV2L251bGwgfHwgdHJ1ZQoJIyBIb3dldmVyIHdl
IGFsd2F5cyB3YW50IHRvIHN0YWdlIGEgJHNyYyBpdHNlbGYsIGV2ZW4gaWYgaXQncyBlbXB0eQoJ
bWtkaXIgLXAgIiRkZXN0IgoJaWYgWyAtZCAiJHNyYyIgXTsgdGhlbgoJCXRhciAtY2YgLSAtQyAi
JHNyYyIgLXBzIC4gfCB0YXIgLXhmIC0gLUMgIiRkZXN0IgoJZmkKCn0KCmRvX2J1aWxkYWxsKCkg
ewoJOgoKfQoKcm9vdGZzX25vX3hfc3RhcnR1cCgpIHsKCWlmIFsgLWYgL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3Jr
L3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZz
L2V0Yy9pbml0LmQveHNlcnZlci1ub2RtIF07IHRoZW4KCQljaG1vZCBhLXggL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93
b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9v
dGZzL2V0Yy9pbml0LmQveHNlcnZlci1ub2RtCglmaQoKfQoKcGFja2FnZV91cGRhdGVfaW5kZXhf
cnBtX2NvbW1vbigpIHsKCXJwbWNvbmZfYmFzZT0iJDEiCglzaGlmdAoKCWZvciBhcmNodmFyIGlu
ICIkQCI7IGRvCgkJZXZhbCBhcmNocz1cJHske2FyY2h2YXJ9fQoJCXBhY2thZ2VkaXJzPSIiCgkJ
Zm9yIGFyY2ggaW4gJGFyY2hzOyBkbwoJCQlwYWNrYWdlZGlycz0iL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kv
cnBtLyRhcmNoICRwYWNrYWdlZGlycyIKCQkJcm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvZGVwbG95L3JwbS8k
YXJjaC9zb2x2ZWRiCgkJZG9uZQoKCQljYXQgL2Rldi9udWxsID4gJHtycG1jb25mX2Jhc2V9LSR7
YXJjaHZhcn0uY29uZgoJCWZvciBwa2dkaXIgaW4gJHBhY2thZ2VkaXJzOyBkbwoJCQlpZiBbIC1l
ICRwa2dkaXIvIF07IHRoZW4KCQkJCWVjaG8gIkdlbmVyYXRpbmcgc29sdmUgZGIgZm9yICRwa2dk
aXIuLi4iCgkJCQllY2hvICRwa2dkaXIvc29sdmVkYiA+PiAke3JwbWNvbmZfYmFzZX0tJHthcmNo
dmFyfS5jb25mCgkJCQlpZiBbIC1kICRwa2dkaXIvc29sdmVkYiBdOyB0aGVuCgkJCQkJIyBXZSd2
ZSBhbHJlYWR5IHByb2Nlc3NlZCB0aGlzIGFuZCBpdCdzIGEgZHVwbGljYXRlCgkJCQkJY29udGlu
dWUKCQkJCWZpCgkJCQlta2RpciAtcCAkcGtnZGlyL3NvbHZlZGIKCQkJCWVjaG8gIiMgRHluYW1p
Y2FsbHkgZ2VuZXJhdGVkIHNvbHZlIG1hbmlmZXN0IiA+PiAkcGtnZGlyL3NvbHZlZGIvbWFuaWZl
c3QKCQkJCWZpbmQgJHBrZ2RpciAtbWF4ZGVwdGggMSAtdHlwZSBmID4+ICRwa2dkaXIvc29sdmVk
Yi9tYW5pZmVzdAoJCQkJcnBtIC0tZGJwYXRoIC92YXIvbGliL3JwbSAtLWRlZmluZT0nX29wZW5h
bGxfYmVmb3JlX2Nocm9vdCAxJyAtaSAtLXJlcGxhY2Vwa2dzIC0tcmVwbGFjZWZpbGVzIC0tb2xk
cGFja2FnZSBcCgkJCQkJLUQgIl9kYnBhdGggJHBrZ2Rpci9zb2x2ZWRiIiAtLWp1c3RkYiBcCgkJ
CQkJLS1ub2FpZCAtLW5vZGVwcyAtLW5vb3JkZXIgLS1ub3NjcmlwdHMgLS1ub3RyaWdnZXJzIC0t
bm9wYXJlbnRkaXJzIC0tbm9saW5rdG9zIC0tc3RhdHMgXAoJCQkJCS0taWdub3Jlc2l6ZSAtLW5v
c2lnbmF0dXJlIC0tbm9kaWdlc3QgXAoJCQkJCS1EICJfX2RiaV90eG4gY3JlYXRlIG5vZnN5bmMi
IFwKCQkJCQkkcGtnZGlyL3NvbHZlZGIvbWFuaWZlc3QKCQkJZmkKCQlkb25lCglkb25lCgp9Cgpi
YXNlX2RvX2NvbmZpZ3VyZSgpIHsKCToKCn0KCmNyZWF0ZV93cmFwcGVyKCkgewogICAjIENyZWF0
ZSBhIHdyYXBwZXIgc2NyaXB0CiAgICMKICAgIyBUaGVzZSBhcmUgdXNlZnVsIHRvIHdvcmsgYXJv
dW5kIHJlbG9jYXRpb24gaXNzdWVzLCBieSBzZXR0aW5nIGVudmlyb25tZW50CiAgICMgdmFyaWFi
bGVzIHdoaWNoIHBvaW50IHRvIHBhdGhzIGluIHRoZSBmaWxlc3lzdGVtLgogICAjCiAgICMgVXNh
Z2U6IGNyZWF0ZV93cmFwcGVyIEZJTEVOQU1FIFtbVkFSPVZBTFVFXS4uXQoKICAgY21kPSQxCiAg
IHNoaWZ0CgogICAjIHJ1biBlY2hvIHZpYSBlbnYgdG8gdGVzdCBzeW50YWN0aWMgdmFsaWRpdHkg
b2YgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cwogICBlbnYgJEAgZWNobyAiR2VuZXJhdGluZyB3cmFw
cGVyIHNjcmlwdCBmb3IgJGNtZCIKCiAgIG12ICRjbWQgJGNtZC5yZWFsCiAgIGNtZG5hbWU9YGJh
c2VuYW1lICRjbWRgLnJlYWwKICAgY2F0IDw8RU5EID4kY21kCiMhL2Jpbi9zaApyZWFscGF0aD1c
YHJlYWRsaW5rIC1mbiBcJDBcYApleGVjIGVudiAkQCBcYGRpcm5hbWUgXCRyZWFscGF0aFxgLyRj
bWRuYW1lICJcJEAiCkVORAogICBjaG1vZCAreCAkY21kCgp9CgpiYm5vdGUoKSB7CgllY2hvICJO
T1RFOiAkKiIKCn0KCmxvZ19jaGVjaygpIHsKCWZvciB0YXJnZXQgaW4gJCoKCWRvCgkJbGZfcGF0
aD0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJk
Yl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNp
bXBsZS0xLjAtcjAvdGVtcC9sb2cuZG9fJHRhcmdldC41ODUyIgoKCQllY2hvICJsb2dfY2hlY2s6
IFVzaW5nICRsZl9wYXRoIGFzIGxvZ2ZpbGUiCgoJCWlmIHRlc3QgLWUgIiRsZl9wYXRoIgoJCXRo
ZW4KCQkJcnBtX2xvZ19jaGVjayAkdGFyZ2V0ICRsZl9wYXRoCgkJZWxzZQoJCQllY2hvICJDYW5u
b3QgZmluZCBsb2dmaWxlIFskbGZfcGF0aF0iCgkJZmkKCQllY2hvICJMb2dmaWxlIGlzIGNsZWFu
IgoJZG9uZQoKfQoKc3N0YXRlX2NyZWF0ZV9wYWNrYWdlKCkgewoJY2QgJHtTU1RBVEVfQlVJTERE
SVJ9CgkjIE5lZWQgdG8gaGFuZGxlIGVtcHR5IGRpcmVjdG9yaWVzCglpZiBbICIkKGxzIC1BKSIg
XTsgdGhlbgoJCXRhciAtLXVzZS1jb21wcmVzcy1wcm9ncmFtPXh6IC1jZiAvb3B0L3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvc3N0YXRlLWNhY2hlL3NzdGF0ZS1mc2wtaW1hZ2Utc2ltcGxlLXAx
MDIwcmRiLWZzbC1saW51eC1nbnVzcGUtMS4wLXIwLXAxMDIwcmRiLTItJHtCQl9UQVNLSEFTSH0g
KgoJZWxzZQoJCXRhciAtLXVzZS1jb21wcmVzcy1wcm9ncmFtPXh6IC1jIC0tZmlsZT0vb3B0L3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc3N0YXRlLWNhY2hlL3NzdGF0ZS1mc2wtaW1hZ2Utc2lt
cGxlLXAxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUtMS4wLXIwLXAxMDIwcmRiLTItJHtCQl9UQVNL
SEFTSH0gLS1maWxlcy1mcm9tPS9kZXYvbnVsbAoJZmkKCgljZCAvbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEw
MjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMAoJcm0gLXJmICR7
U1NUQVRFX0JVSUxERElSfQoKfQoKYmJwbGFpbigpIHsKCWVjaG8gIiQqIgoKfQoKcmVtb3ZlX3Bh
Y2thZ2luZ19kYXRhX2ZpbGVzKCkgewoJcm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy92YXIvbGliL3Jw
bQoJcm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRf
cDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1p
bWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy92YXIvbGliL29wa2cKCn0KCmxkY29uZmlnX3Bvc3Rp
bnN0X2ZyYWdtZW50KCkgewppZiBbIHgiJEQiID0gIngiIF07IHRoZW4KCVsgLXggL3NiaW4vbGRj
b25maWcgXSAmJiAvc2Jpbi9sZGNvbmZpZwpmaQoKfQoKbXVsdGlsaWJfc2FuaXR5X2NoZWNrKCkg
ewogIG11bHRpbGliX2dlbmVyYXRlX3B5dGhvbl9maWxlCiAgZWNobyAkQCB8IHB5dGhvbiAvbG9j
YWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVh
c2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEu
MC1yMC9tdWx0aWxpYl9jaGVjay5weQoKfQoKcGFja2FnZV91cGRhdGVfaW5kZXhfcnBtKCkgewoJ
aWYgWyAhIC16ICIke0RFUExPWV9LRUVQX1BBQ0tBR0VTfSIgXTsgdGhlbgoJCXJldHVybgoJZmkK
CgkjIFVwZGF0ZSB0YXJnZXQgcGFja2FnZXMKCWJhc2VfYXJjaHM9ImFsbCBhbnkgbm9hcmNoIHBw
Y2U1MDB2MiBwMTAyMHJkYiIKCW1sX2FyY2hzPSIiCglwYWNrYWdlX3VwZGF0ZV9pbmRleF9ycG1f
Y29tbW9uICIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3Ax
MDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9ycG0vc29sdmVkYiIgYmFzZV9hcmNocyBtbF9hcmNo
cwoKCSMgVXBkYXRlIFNESyBwYWNrYWdlcwoJYmFzZV9hcmNocz0iYWxsIGFueSBub2FyY2ggeDg2
XzY0LW5hdGl2ZXNkayIKCXBhY2thZ2VfdXBkYXRlX2luZGV4X3JwbV9jb21tb24gIi9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvZGVwbG95L3JwbS9zb2x2ZWRiLXNkayIgYmFzZV9hcmNocwoKfQoKcGFja2FnZV9nZW5lcmF0
ZV9ycG1fY29uZl9jb21tb24oKSB7CglycG1jb25mX2Jhc2U9IiQxIgoJc2hpZnQKCglwcmludGYg
Il9zb2x2ZV9kYnBhdGggIiA+ICR7cnBtY29uZl9iYXNlfS5tYWNybwoJb19jb2xvbj1mYWxzZQoK
CWZvciBhcmNodmFyIGluICIkQCI7IGRvCgkJcHJpbnRmICJfc29sdmVfZGJwYXRoICIgPiAke3Jw
bWNvbmZfYmFzZX0tJHthcmNodmFyfS5tYWNybwoJCWNvbG9uPWZhbHNlCgkJZm9yIGVhY2ggaW4g
YGNhdCAke3JwbWNvbmZfYmFzZX0tJHthcmNodmFyfS5jb25mYCA7IGRvCgkJCWlmIFsgIiRvX2Nv
bG9uIiA9PSB0cnVlIF07IHRoZW4KCQkJCXByaW50ZiAiOiIgPj4gJHtycG1jb25mX2Jhc2V9Lm1h
Y3JvCgkJCWZpCgkJCWlmIFsgIiRjb2xvbiIgPT0gdHJ1ZSBdOyB0aGVuCgkJCQlwcmludGYgIjoi
ID4+ICR7cnBtY29uZl9iYXNlfS0ke2FyY2h2YXJ9Lm1hY3JvCgkJCWZpCgkJCXByaW50ZiAiJXMi
ICRlYWNoID4+ICR7cnBtY29uZl9iYXNlfS5tYWNybwoJCQlvX2NvbG9uPXRydWUKCQkJcHJpbnRm
ICIlcyIgJGVhY2ggPj4gJHtycG1jb25mX2Jhc2V9LSR7YXJjaHZhcn0ubWFjcm8KCQkJY29sb249
dHJ1ZQoJCWRvbmUKCQlwcmludGYgIlxuIiA+PiAke3JwbWNvbmZfYmFzZX0tJHthcmNodmFyfS5t
YWNybwoJZG9uZQoJcHJpbnRmICJcbiIgPj4gJHtycG1jb25mX2Jhc2V9Lm1hY3JvCgp9CgpzeXNy
b290X3N0YWdlX2xpYmRpcigpIHsKCXNyYz0iJDEiCglkZXN0PSIkMiIKCglzeXNyb290X3N0YWdl
X2RpciAkc3JjICRkZXN0Cgp9CgpkaWUoKSB7CgliYmZhdGFsICIkKiIKCn0KCmJhc2VfZG9faW5z
dGFsbCgpIHsKCToKCn0KCmRvX2NvbXBpbGUoKSB7CgliYXNlX2RvX2NvbXBpbGUKCn0KCnJwbV9s
b2dfY2hlY2soKSB7CiAgICAgICB0YXJnZXQ9IiQxIgogICAgICAgbGZfcGF0aD0iJDIiCgogICAg
ICAgbGZfdHh0PSJgY2F0ICRsZl9wYXRoYCIKICAgICAgIGZvciBrZXl3b3JkX2RpZSBpbiAiQ2Fu
bm90IGZpbmQgcGFja2FnZSIgImV4aXQgMSIgRVJSIEZhaWwKICAgICAgIGRvCiAgICAgICAgICAg
ICAgIGlmIChlY2hvICIkbGZfdHh0IiB8IGdyZXAgLXYgbG9nX2NoZWNrIHwgZ3JlcCAiJGtleXdv
cmRfZGllIikgPi9kZXYvbnVsbCAyPiYxCiAgICAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAg
ICAgICAgICAgICBlY2hvICJsb2dfY2hlY2s6IFRoZXJlIHdlcmUgZXJyb3IgbWVzc2FnZXMgaW4g
dGhlIGxvZ2ZpbGUiCiAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtZSAibG9nX2NoZWNrOiBN
YXRjaGVkIGtleXdvcmQ6IFska2V5d29yZF9kaWVdXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiJGxmX3R4dCIgfCBncmVwIC12IGxvZ19jaGVjayB8IGdyZXAgLUMgNSAtaSAiJGtleXdv
cmRfZGllIgogICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiIKICAgICAgICAgICAgICAgICAg
ICAgICBkb19leGl0PTEKICAgICAgICAgICAgICAgZmkKICAgICAgIGRvbmUKICAgICAgIHRlc3Qg
IiRkb19leGl0IiA9IDEgJiYgZXhpdCAxCiAgICAgICB0cnVlCgp9CgpiYXNlX2RvX2NvbXBpbGUo
KSB7CglpZiBbIC1lIE1ha2VmaWxlIC1vIC1lIG1ha2VmaWxlIF07IHRoZW4KCQlvZV9ydW5tYWtl
IHx8IGRpZSAibWFrZSBmYWlsZWQiCgllbHNlCgkJYmJub3RlICJub3RoaW5nIHRvIGNvbXBpbGUi
CglmaQoKfQoKcmVtb3ZlX2luaXRfbGluaygpIHsKCWlmIFsgLWggL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3Ax
MDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL3Ni
aW4vaW5pdCBdOyB0aGVuCgkJTElOS0ZJTEU9L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1s
aW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzYHJlYWRsaW5rIC9sb2Nh
bC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFz
ZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4w
LXIwL3Jvb3Rmcy9zYmluL2luaXRgCgkJcm0gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1s
aW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL3NiaW4vaW5pdAoJCWNw
ICRMSU5LRklMRSAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxk
X3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wt
aW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMvc2Jpbi9pbml0CglmaQoKfQoKaW5zdGFsbF9hbGxf
bG9jYWxlcygpIHsKCVBBQ0tBR0VTX1RPX0lOU1RBTEw9IiIKCgkjIEdlbmVyYXRlIGxpc3Qgb2Yg
aW5zdGFsbGVkIHBhY2thZ2VzLi4uCglJTlNUQUxMRURfUEFDS0FHRVM9JCggXAoJCXJwbSAtLWRi
cGF0aCAvdmFyL2xpYi9ycG0gLS1kZWZpbmU9J19vcGVuYWxsX2JlZm9yZV9jaHJvb3QgMScgLS1y
b290IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1z
aW1wbGUtMS4wLXIwL3Jvb3RmcyAtRCAiX2RicGF0aCAvdmFyL2xpYi9ycG0iIFwKCQktRCAiX19k
YmlfdHhuIGNyZWF0ZSBub2ZzeW5jIHByaXZhdGUiIFwKCQktcWEgLS1xZiAiWyV7TkFNRX1cbl0i
IHwgZWdyZXAgLXYgLS0gIigtbG9jYWxlLXwtZGV2JHwtZG9jJHxea2VybmVsfF5nbGliY3xedHRm
fF50YXNrfF5wZXJsfF5weXRob24pIiBcCgkpCgoJIyBUaGlzIHdvdWxkIGxpa2VseSBiZSBmYXN0
ZXIgaWYgd2UgZGlkIGl0IGluIG9uZSB0cmFuc2FjdGlvbgoJIyBidXQgdGhpcyBzaG91bGQgYmUg
Z29vZCBlbm91Z2ggZm9yIHRoZSBmZXcgdXNlcnMgb2YgdGhpcyBmdW5jdGlvbi4uLgoJZm9yIHBr
ZyBpbiAkSU5TVEFMTEVEX1BBQ0tBR0VTOyBkbwoJCWZvciBsYW5nIGluICR7SU1BR0VfTE9DQUxF
U307IGRvCgkJCXBrZ19uYW1lPSQocmVzb2x2ZV9wYWNrYWdlX3JwbSAkcGtnLWxvY2FsZS0kbGFu
ZyAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL2RlcGxveS9ycG0vc29sdmVkYi5jb25mKQoJCQlpZiBbIC1uICIkcGtnX25h
bWUiIF07IHRoZW4KCQkJCXJwbSAtLWRicGF0aCAvdmFyL2xpYi9ycG0gLS1kZWZpbmU9J19vcGVu
YWxsX2JlZm9yZV9jaHJvb3QgMScgLS1yb290IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wt
bGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAtRCAiX2RicGF0aCAv
dmFyL2xpYi9ycG0iIFwKCQkJCQktRCAiX19kYmlfdHhuIGNyZWF0ZSBub2ZzeW5jIHByaXZhdGUi
IFwKCQkJCQktLW5vc2NyaXB0cyAtLW5vdHJpZ2dlcnMgLS1ub3BhcmVudGRpcnMgLS1ub2xpbmt0
b3MgXAoJCQkJCS1VaHYgJHBrZ19uYW1lIHx8IHRydWUKCQkJZmkKCQlkb25lCglkb25lCgp9Cgpt
YWtlX3ppbWFnZV9zeW1saW5rX3JlbGF0aXZlKCkgewoJaWYgWyAtTCAvbG9jYWwvamVua2lucy95
b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsv
cDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMv
Ym9vdC96SW1hZ2UgXTsgdGhlbgoJCShjZCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxp
bnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMvYm9vdC8gJiYgZm9yIGkg
aW4gYGxzIHpJbWFnZS0qIHwgc29ydGA7IGRvIGxuIC1zZiAkaSB6SW1hZ2U7IGRvbmUpCglmaQoK
fQoKYmFzZV9kb19wYWNrYWdlKCkgewoJOgoKfQoKd3JpdGVfaW1hZ2VfbWFuaWZlc3QoKSB7Cgly
b290ZnNfcnBtX3dyaXRlX21hbmlmZXN0CgoJcm0gLWYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2Fj
aGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvaW1hZ2Vz
L2ZzbC1pbWFnZS1zaW1wbGUtcDEwMjByZGIubWFuaWZlc3QKICAgICAgICBsbiAtcyBmc2wtaW1h
Z2Utc2ltcGxlLXAxMDIwcmRiLTIwMTExMjExMDUxNjIwLnJvb3Rmcy5tYW5pZmVzdCAvbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi5tYW5pZmVzdAoKfQoK
b2VfbWtleHQ0ZnMoKSB7CglnZW5leHQyZnMgLWIgJFJPT1RGU19TSVpFIC1kIC9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
d29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jv
b3RmcyAgJDEKCXR1bmUyZnMgLU8gZXh0ZW50cyx1bmluaXRfYmcsZGlyX2luZGV4LGhhc19qb3Vy
bmFsICQxCgllMmZzY2sgLXlmREMwICQxIHx8IGNoaz0kPwoJY2FzZSAkY2hrIGluCgkwfDF8MikK
CSAgICA7OwoJKikKCSAgICByZXR1cm4gJGNoawoJICAgIDs7Cgllc2FjCgp9CgpJTUFHRV9DTURf
ZXh0MygpIHsKCWdlbmV4dDJmcyAtYiAkUk9PVEZTX1NJWkUgLWQgL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3Ax
MDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzICAv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIx
MTA1MTYyMC5yb290ZnMuZXh0MwoJdHVuZTJmcyAtaiAvbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMv
ZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0MwoKfQoK
SU1BR0VfQ01EX2V4dDQoKSB7CglvZV9ta2V4dDRmcyAvbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMv
ZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi0yMDExMTIxMTA1MTYyMC5yb290ZnMuZXh0NAoKfQoK
Y3JlYXRlX2NtZGxpbmVfd3JhcHBlcigpIHsKICAgIyBDcmVhdGUgYSB3cmFwcGVyIHNjcmlwdAog
ICAjCiAgICMgVGhlc2UgYXJlIHVzZWZ1bCB0byB3b3JrIGFyb3VuZCByZWxvY2F0aW9uIGlzc3Vl
cywgYnkgc2V0dGluZyBlbnZpcm9ubWVudAogICAjIHZhcmlhYmxlcyB3aGljaCBwb2ludCB0byBw
YXRocyBpbiB0aGUgZmlsZXN5c3RlbS4KICAgIwogICAjIFVzYWdlOiBjcmVhdGVfd3JhcHBlciBG
SUxFTkFNRSBbW1ZBUj1WQUxVRV0uLl0KCiAgIGNtZD0kMQogICBzaGlmdAoKICAgIyBydW4gZWNo
byB2aWEgZW52IHRvIHRlc3Qgc3ludGFjdGljIHZhbGlkaXR5IG9mIHRoZSB2YXJpYWJsZSBhcmd1
bWVudHMKICAgZWNobyAiR2VuZXJhdGluZyB3cmFwcGVyIHNjcmlwdCBmb3IgJGNtZCIKCiAgIG12
ICRjbWQgJGNtZC5yZWFsCiAgIGNtZG5hbWU9YGJhc2VuYW1lICRjbWRgLnJlYWwKICAgY2F0IDw8
RU5EID4kY21kCiMhL2Jpbi9zaApyZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYApleGVjIFxg
ZGlybmFtZSBcJHJlYWxwYXRoXGAvJGNtZG5hbWUgJEAgIlwkQCIKRU5ECiAgIGNobW9kICt4ICRj
bWQKCn0KCm9lX2xpYmluc3RhbGwoKSB7CgkjIFB1cnBvc2U6IEluc3RhbGwgYSBsaWJyYXJ5LCBp
biBhbGwgaXRzIGZvcm1zCgkjIEV4YW1wbGUKCSMKCSMgb2VfbGliaW5zdGFsbCBsaWJsdGRsIC9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVs
ZWFzZS90bXAvc3lzcm9vdHMvcDEwMjByZGIvdXNyL2xpYi8KCSMgb2VfbGliaW5zdGFsbCAtQyBz
cmMvbGliYmxhaCBsaWJibGFoIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251
c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL2ltYWdlLy91c3IvbGliLwoJZGlyPSIiCglsaWJ0
b29sPSIiCglzaWxlbnQ9IiIKCXJlcXVpcmVfc3RhdGljPSIiCglyZXF1aXJlX3NoYXJlZD0iIgoJ
c3RhZ2luZ19pbnN0YWxsPSIiCgl3aGlsZSBbICIkIyIgLWd0IDAgXTsgZG8KCQljYXNlICIkMSIg
aW4KCQktQykKCQkJc2hpZnQKCQkJZGlyPSIkMSIKCQkJOzsKCQktcykKCQkJc2lsZW50PTEKCQkJ
OzsKCQktYSkKCQkJcmVxdWlyZV9zdGF0aWM9MQoJCQk7OwoJCS1zbykKCQkJcmVxdWlyZV9zaGFy
ZWQ9MQoJCQk7OwoJCS0qKQoJCQliYmZhdGFsICJvZV9saWJpbnN0YWxsOiB1bmtub3duIG9wdGlv
bjogJDEiCgkJCTs7CgkJKikKCQkJYnJlYWs7CgkJCTs7CgkJZXNhYwoJCXNoaWZ0Cglkb25lCgoJ
bGlibmFtZT0iJDEiCglzaGlmdAoJZGVzdHBhdGg9IiQxIgoJaWYgWyAteiAiJGRlc3RwYXRoIiBd
OyB0aGVuCgkJYmJmYXRhbCAib2VfbGliaW5zdGFsbDogbm8gZGVzdGluYXRpb24gcGF0aCBzcGVj
aWZpZWQiCglmaQoJaWYgZWNobyAiJGRlc3RwYXRoLyIgfCBlZ3JlcCAnXi9sb2NhbC9qZW5raW5z
L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lz
cm9vdHMvcDEwMjByZGIvdXNyL2xpYi8nID4vZGV2L251bGwKCXRoZW4KCQlzdGFnaW5nX2luc3Rh
bGw9MQoJZmkKCglfX3J1bmNtZCAoKSB7CgkJaWYgWyAteiAiJHNpbGVudCIgXTsgdGhlbgoJCQll
Y2hvID4mMiAib2VfbGliaW5zdGFsbDogJCoiCgkJZmkKCQkkKgoJfQoKCWlmIFsgLXogIiRkaXIi
IF07IHRoZW4KCQlkaXI9YHB3ZGAKCWZpCgoJZG90bGFpPSRsaWJuYW1lLmxhaQoKCSMgU2FuaXR5
IGNoZWNrIHRoYXQgdGhlIGxpYm5hbWUubGFpIGlzIHVuaXF1ZQoJbnVtYmVyX29mX2ZpbGVzPWAo
Y2QgJGRpcjsgZmluZCAuIC1uYW1lICIkZG90bGFpIikgfCB3YyAtbGAKCWlmIFsgJG51bWJlcl9v
Zl9maWxlcyAtZ3QgMSBdOyB0aGVuCgkJYmJmYXRhbCAib2VfbGliaW5zdGFsbDogJGRvdGxhaSBp
cyBub3QgdW5pcXVlIGluICRkaXIiCglmaQoKCglkaXI9JGRpcmAoY2QgJGRpcjtmaW5kIC4gLW5h
bWUgIiRkb3RsYWkiKSB8IHNlZCAicy9eXC4vLztzL1wvJGRvdGxhaVwkLy87cSJgCglvbGRkaXI9
YHB3ZGAKCV9fcnVuY21kIGNkICRkaXIKCglsYWZpbGU9JGxpYm5hbWUubGEKCgkjIElmIHN1Y2gg
ZmlsZSBkb2Vzbid0IGV4aXN0LCB0cnkgdG8gY3V0IHZlcnNpb24gc3VmZml4CglpZiBbICEgLWYg
IiRsYWZpbGUiIF07IHRoZW4KCQlsaWJuYW1lMT1gZWNobyAiJGxpYm5hbWUiIHwgc2VkICdzLy1b
MC05Ll0qJC8vJ2AKCQlsYWZpbGUxPSRsaWJuYW1lLmxhCgkJaWYgWyAtZiAiJGxhZmlsZTEiIF07
IHRoZW4KCQkJbGlibmFtZT0kbGlibmFtZTEKCQkJbGFmaWxlPSRsYWZpbGUxCgkJZmkKCWZpCgoJ
aWYgWyAtZiAiJGxhZmlsZSIgXTsgdGhlbgoJCSMgbGlidG9vbCBhcmNoaXZlCgkJZXZhbCBgY2F0
ICRsYWZpbGV8Z3JlcCAiXmxpYnJhcnlfbmFtZXM9ImAKCQlsaWJ0b29sPTEKCWVsc2UKCQlsaWJy
YXJ5X25hbWVzPSIkbGlibmFtZS5zbyogJGxpYm5hbWUuZGxsLmEgJGxpYm5hbWUuKi5keWxpYiIK
CWZpCgoJX19ydW5jbWQgaW5zdGFsbCAtZCAkZGVzdHBhdGgvCglkb3RhPSRsaWJuYW1lLmEKCWlm
IFsgLWYgIiRkb3RhIiAtbyAtbiAiJHJlcXVpcmVfc3RhdGljIiBdOyB0aGVuCgkJcm0gLWYgJGRl
c3RwYXRoLyRkb3RhCgkJX19ydW5jbWQgaW5zdGFsbCAtbSAwNjQ0ICRkb3RhICRkZXN0cGF0aC8K
CWZpCglpZiBbIC1mICIkZG90bGFpIiAtYSAtbiAiJGxpYnRvb2wiIF07IHRoZW4KCQlybSAtZiAk
ZGVzdHBhdGgvJGxpYm5hbWUubGEKCQlfX3J1bmNtZCBpbnN0YWxsIC1tIDA2NDQgJGRvdGxhaSAk
ZGVzdHBhdGgvJGxpYm5hbWUubGEKCWZpCgoJZm9yIG5hbWUgaW4gJGxpYnJhcnlfbmFtZXM7IGRv
CgkJZmlsZXM9YGV2YWwgZWNobyAkbmFtZWAKCQlmb3IgZiBpbiAkZmlsZXM7IGRvCgkJCWlmIFsg
ISAtZSAiJGYiIF07IHRoZW4KCQkJCWlmIFsgLW4gIiRsaWJ0b29sIiBdOyB0aGVuCgkJCQkJYmJm
YXRhbCAib2VfbGliaW5zdGFsbDogJGRpci8kZiBub3QgZm91bmQuIgoJCQkJZmkKCQkJZWxpZiBb
IC1MICIkZiIgXTsgdGhlbgoJCQkJX19ydW5jbWQgY3AgLVAgIiRmIiAkZGVzdHBhdGgvCgkJCWVs
aWYgWyAhIC1MICIkZiIgXTsgdGhlbgoJCQkJbGliZmlsZT0iJGYiCgkJCQlybSAtZiAkZGVzdHBh
dGgvJGxpYmZpbGUKCQkJCV9fcnVuY21kIGluc3RhbGwgLW0gMDc1NSAkbGliZmlsZSAkZGVzdHBh
dGgvCgkJCWZpCgkJZG9uZQoJZG9uZQoKCWlmIFsgLXogIiRsaWJmaWxlIiBdOyB0aGVuCgkJaWYg
IFsgLW4gIiRyZXF1aXJlX3NoYXJlZCIgXTsgdGhlbgoJCQliYmZhdGFsICJvZV9saWJpbnN0YWxs
OiB1bmFibGUgdG8gbG9jYXRlIHNoYXJlZCBsaWJyYXJ5IgoJCWZpCgllbGlmIFsgLXogIiRsaWJ0
b29sIiBdOyB0aGVuCgkJIyBzcGVjaWFsIGNhc2UgaGFjayBmb3Igbm9uLWxpYnRvb2wgLnNvLiMu
Iy4jIGxpbmtzCgkJYmFzZWxpYmZpbGU9YGJhc2VuYW1lICIkbGliZmlsZSJgCgkJaWYgKGVjaG8g
JGJhc2VsaWJmaWxlIHwgZ3JlcCAtcUUgJ15saWIuKlwuc29cLlswLTkuXSokJyk7IHRoZW4KCQkJ
c29uYW1lbGluaz1gcG93ZXJwYy1mc2wtbGludXgtZ251c3BlLXJlYWRlbGYgLWQgJGxpYmZpbGUg
fGdyZXAgJ0xpYnJhcnkgc29uYW1lOicgfHNlZCAtZSAncy8uKlxbXCguKlwpXF0uKi9cMS8nYAoJ
CQlzb2xpbms9YGVjaG8gJGJhc2VsaWJmaWxlIHwgc2VkIC1lICdzL1wuc29cLi4qLy5zby8nYAoJ
CQlpZiBbIC1uICIkc29uYW1lbGluayIgLWEgeCIkYmFzZWxpYmZpbGUiICE9IHgiJHNvbmFtZWxp
bmsiIF07IHRoZW4KCQkJCV9fcnVuY21kIGxuIC1zZiAkYmFzZWxpYmZpbGUgJGRlc3RwYXRoLyRz
b25hbWVsaW5rCgkJCWZpCgkJCV9fcnVuY21kIGxuIC1zZiAkYmFzZWxpYmZpbGUgJGRlc3RwYXRo
LyRzb2xpbmsKCQlmaQoJZmkKCglfX3J1bmNtZCBjZCAiJG9sZGRpciIKCn0KCm9lX21raW1hZ2Uo
KSB7CiAgICBta2ltYWdlIC1BIHBwYyAtTyBsaW51eCAtVCByYW1kaXNrIC1DICQyIC1uIGZzbC1p
bWFnZS1zaW1wbGUtcDEwMjByZGItMjAxMTEyMTEwNTE2MjAgXAogICAgICAgIC1kIC9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvZGVwbG95L2ltYWdlcy8kMSAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL2RlcGxveS9pbWFnZXMvJDEudS1ib290Cgp9
CgpiYmZhdGFsKCkgewoJZWNobyAiRVJST1I6ICQqIgoJZXhpdCAxCgp9CgpwYWNrYWdlX2luc3Rh
bGxfaW50ZXJuYWxfcnBtKCkgewoKCWxvY2FsIHRhcmdldF9yb290ZnM9IiR7SU5TVEFMTF9ST09U
RlNfUlBNfSIKCWxvY2FsIHBsYXRmb3JtPSIke0lOU1RBTExfUExBVEZPUk1fUlBNfSIKCWxvY2Fs
IHBsYXRmb3JtX2V4dHJhPSIke0lOU1RBTExfUExBVEZPUk1fRVhUUkFfUlBNfSIKCWxvY2FsIGNv
bmZiYXNlPSIke0lOU1RBTExfQ09ORkJBU0VfUlBNfSIKCWxvY2FsIHBhY2thZ2VfdG9faW5zdGFs
bD0iJHtJTlNUQUxMX1BBQ0tBR0VTX05PUk1BTF9SUE19IgoJbG9jYWwgbXVsdGlsaWJfdG9faW5z
dGFsbD0iJHtJTlNUQUxMX1BBQ0tBR0VTX01VTFRJTElCX1JQTX0iCglsb2NhbCBwYWNrYWdlX2F0
dGVtcHRvbmx5PSIke0lOU1RBTExfUEFDS0FHRVNfQVRURU1QVE9OTFlfUlBNfSIKCWxvY2FsIHBh
Y2thZ2VfbGluZ3Vhcz0iJHtJTlNUQUxMX1BBQ0tBR0VTX0xJTkdVQVNfUlBNfSIKCWxvY2FsIHBy
b3ZpZGVuYW1lPSIke0lOU1RBTExfUFJPVklERU5BTUVfUlBNfSIKCWxvY2FsIHRhc2s9IiR7SU5T
VEFMTF9UQVNLX1JQTX0iCgoJIyBTZXR1cCBiYXNlIHN5c3RlbSBjb25maWd1cmF0aW9uCglta2Rp
ciAtcCAke3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vCgllY2hvICIke3BsYXRmb3JtfS1mc2wtbGlu
dXgtZ251c3BlIiA+ICR7dGFyZ2V0X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybQoJaWYgWyAhIC16
ICIkcGxhdGZvcm1fZXh0cmEiIF07IHRoZW4KCQlmb3IgcHQgaW4gJHBsYXRmb3JtX2V4dHJhIDsg
ZG8KCQkJY2FzZSAkcHQgaW4KCQkJCW5vYXJjaCB8IGFueSB8IGFsbCkKCQkJCQlvcz0iYGVjaG8g
bGludXgtZ251c3BlIHwgc2VkICJzLC0uKiwsImAuKiIKCQkJCQk7OwoJCQkJKikKCQkJCQlvcz0i
bGludXgtZ251c3BlIgoJCQkJCTs7CgkJCWVzYWMKCQkJZWNobyAiJHB0LS4qLSRvcyIgPj4gJHt0
YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3BsYXRmb3JtCgkJZG9uZQoJZmkKCgkjIFRlbGwgUlBNIHRo
YXQgdGhlICIvIiBkaXJlY3RvcnkgZXhpc3QgYW5kIGlzIGF2YWlsYWJsZQoJbWtkaXIgLXAgJHt0
YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3N5c2luZm8KCWVjaG8gIi8iID4ke3RhcmdldF9yb290ZnN9
L2V0Yy9ycG0vc3lzaW5mby9EaXJuYW1lcwoJaWYgWyAhIC16ICIkcHJvdmlkZW5hbWUiIF07IHRo
ZW4KCQljYXQgL2Rldi9udWxsID4gJHt0YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3N5c2luZm8vUHJv
dmlkZW5hbWUKCQlmb3IgcHJvdmlkZSBpbiAkcHJvdmlkZW5hbWUgOyBkbwoJCQllY2hvICRwcm92
aWRlID4+ICR7dGFyZ2V0X3Jvb3Rmc30vZXRjL3JwbS9zeXNpbmZvL1Byb3ZpZGVuYW1lCgkJZG9u
ZQoJZmkKCgkjIFNldHVwIG1hbmlmZXN0IG9mIHBhY2thZ2VzIHRvIGluc3RhbGwuLi4KCW1rZGly
IC1wICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbAoJZWNobyAiIyBJbnN0YWxsIG1hbmlmZXN0IiA+
ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsLm1hbmlmZXN0CgoJIyBVY2xpYmMgYnVp
bGRzIGRvbid0IHByb3ZpZGUgdGhpcyBzdHVmZi4uLgoJaWYgWyB4bGludXgtZ251c3BlID0gInhs
aW51eCIgXSB8fCBbIHhsaW51eC1nbnVzcGUgPSAieGxpbnV4LWdudWVhYmkiIF0gOyB0aGVuCgkJ
aWYgWyAhIC16ICIke3BhY2thZ2VfbGluZ3Vhc30iIF07IHRoZW4KCQkJZm9yIHBrZyBpbiAke3Bh
Y2thZ2VfbGluZ3Vhc307IGRvCgkJCQllY2hvICJQcm9jZXNzaW5nICRwa2cuLi4iCgoJCQkJYXJj
aHZhcj1iYXNlX2FyY2hzCgkJCQltbF9wcmVmaXg9YGVjaG8gJHtwa2d9IHwgY3V0IC1kJy0nIC1m
MWAKCQkJCW1sX3BrZz0kcGtnCgkJCQlmb3IgaSBpbiAgOyBkbwoJCQkJCWlmIFsgJHttbF9wcmVm
aXh9ID09ICR7aX0gXTsgdGhlbgoJCQkJCQltbF9wa2c9JChlY2hvICR7cGtnfSB8IHNlZCAicyxe
JHttbF9wcmVmaXh9LVwoLipcKSxcMSwiKQoJCQkJCQlhcmNodmFyPW1sX2FyY2hzCgkJCQkJCWJy
ZWFrCgkJCQkJZmkKCQkJCWRvbmUKCgkJCQlwa2dfbmFtZT0kKHJlc29sdmVfcGFja2FnZV9ycG0g
JHtjb25mYmFzZX0tJHthcmNodmFyfS5jb25mICR7bWxfcGtnfSkKCQkJCWlmIFsgLXogIiRwa2df
bmFtZSIgXTsgdGhlbgoJCQkJCWVjaG8gIlVuYWJsZSB0byBmaW5kIHBhY2thZ2UgJHBrZyAoJG1s
X3BrZykhIgoJCQkJCWV4aXQgMQoJCQkJZmkKCQkJCWVjaG8gJHBrZ19uYW1lID4+ICR7dGFyZ2V0
X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsLm1hbmlmZXN0CgkJCWRvbmUKCQlmaQoJZmkKCWlmIFsg
ISAteiAiJHtwYWNrYWdlX3RvX2luc3RhbGx9IiBdOyB0aGVuCgkJZm9yIHBrZyBpbiAke3BhY2th
Z2VfdG9faW5zdGFsbH0gOyBkbwoJCQllY2hvICJQcm9jZXNzaW5nICRwa2cuLi4iCgoJCQlhcmNo
dmFyPWJhc2VfYXJjaHMKCQkJbWxfcHJlZml4PWBlY2hvICR7cGtnfSB8IGN1dCAtZCctJyAtZjFg
CgkJCW1sX3BrZz0kcGtnCgkJCWZvciBpIGluICA7IGRvCgkJCQlpZiBbICR7bWxfcHJlZml4fSA9
PSAke2l9IF07IHRoZW4KCQkJCQltbF9wa2c9JChlY2hvICR7cGtnfSB8IHNlZCAicyxeJHttbF9w
cmVmaXh9LVwoLipcKSxcMSwiKQoJCQkJCWFyY2h2YXI9bWxfYXJjaHMKCQkJCQlicmVhawoJCQkJ
ZmkKCQkJZG9uZQoKCQkJcGtnX25hbWU9JChyZXNvbHZlX3BhY2thZ2VfcnBtICR7Y29uZmJhc2V9
LSR7YXJjaHZhcn0uY29uZiAke21sX3BrZ30pCgkJCWlmIFsgLXogIiRwa2dfbmFtZSIgXTsgdGhl
bgoJCQkJZWNobyAiVW5hYmxlIHRvIGZpbmQgcGFja2FnZSAkcGtnICgkbWxfcGtnKSEiCgkJCQll
eGl0IDEKCQkJZmkKCQkJZWNobyAkcGtnX25hbWUgPj4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxs
L2luc3RhbGwubWFuaWZlc3QKCQlkb25lCglmaQoKCSMgTm9ybWFsIHBhY2thZ2UgaW5zdGFsbGF0
aW9uCgoJIyBHZW5lcmF0ZSBhbiBpbnN0YWxsIHNvbHV0aW9uIGJ5IGRvaW5nIGEgLS1qdXN0ZGIg
aW5zdGFsbCwgdGhlbiByZWNyZWF0ZSBpdCB3aXRoCgkjIGFuIGFjdHVhbCBwYWNrYWdlIGluc3Rh
bGwhCglycG0gLS1kYnBhdGggL3Zhci9saWIvcnBtIC0tZGVmaW5lPSdfb3BlbmFsbF9iZWZvcmVf
Y2hyb290IDEnIC0tcHJlZGVmaW5lICJfcnBtZHNfc3lzaW5mb19wYXRoICR7dGFyZ2V0X3Jvb3Rm
c30vZXRjL3JwbS9zeXNpbmZvIiBcCgkJLS1wcmVkZWZpbmUgIl9ycG1yY19wbGF0Zm9ybV9wYXRo
ICR7dGFyZ2V0X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybSIgXAoJCS1EICJfZGJwYXRoICR7dGFy
Z2V0X3Jvb3Rmc30vaW5zdGFsbCIgLUQgImBjYXQgJHtjb25mYmFzZX0tYmFzZV9hcmNocy5tYWNy
b2AiIFwKCQktRCAiX19kYmlfdHhuIGNyZWF0ZSBub2ZzeW5jIiBcCgkJLVUgLS1qdXN0ZGIgLS1u
b3NjcmlwdHMgLS1ub3RyaWdnZXJzIC0tbm9wYXJlbnRkaXJzIC0tbm9saW5rdG9zIC0taWdub3Jl
c2l6ZSBcCgkJJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luc3RhbGwubWFuaWZlc3QKCglpZiBb
ICEgLXogIiR7cGFja2FnZV9hdHRlbXB0b25seX0iIF07IHRoZW4KCQllY2hvICJBZGRpbmcgYXR0
ZW1wdCBvbmx5IHBhY2thZ2VzLi4uIgoJCWZvciBwa2cgaW4gJHtwYWNrYWdlX2F0dGVtcHRvbmx5
fSA7IGRvCgkJCWVjaG8gIlByb2Nlc3NpbmcgJHBrZy4uLiIKCQkJYXJjaHZhcj1iYXNlX2FyY2hz
CgkJCW1sX3ByZWZpeD1gZWNobyAke3BrZ30gfCBjdXQgLWQnLScgLWYxYAoJCQltbF9wa2c9JHBr
ZwoJCQlmb3IgaSBpbiAgOyBkbwoJCQkJaWYgWyAke21sX3ByZWZpeH0gPT0gJHtpfSBdOyB0aGVu
CgkJCQkJbWxfcGtnPSQoZWNobyAke3BrZ30gfCBzZWQgInMsXiR7bWxfcHJlZml4fS1cKC4qXCks
XDEsIikKCQkJCQlhcmNodmFyPW1sX2FyY2hzCgkJCQkJYnJlYWsKCQkJCWZpCgkJCWRvbmUKCgkJ
CXBrZ19uYW1lPSQocmVzb2x2ZV9wYWNrYWdlX3JwbSAke2NvbmZiYXNlfS0ke2FyY2h2YXJ9LmNv
bmYgJHttbF9wa2d9KQoJCQlpZiBbIC16ICIkcGtnX25hbWUiIF07IHRoZW4KCQkJCWVjaG8gIk5v
dGU6IFVuYWJsZSB0byBmaW5kIHBhY2thZ2UgJHBrZyAoJG1sX3BrZykgLS0gUEFDS0FHRV9JTlNU
QUxMX0FUVEVNUFRPTkxZIgoJCQkJY29udGludWUKCQkJZmkKCQkJZWNobyAiQXR0ZW1wdGluZyAk
cGtnX25hbWUuLi4iID4+ICIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNw
ZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC90ZW1wL2xvZy5kb18ke3Rhc2t9X2F0dGVtcHRvbmx5
LjU4NTIiCgkJCXJwbSAtLWRicGF0aCAvdmFyL2xpYi9ycG0gLS1kZWZpbmU9J19vcGVuYWxsX2Jl
Zm9yZV9jaHJvb3QgMScgLS1wcmVkZWZpbmUgIl9ycG1kc19zeXNpbmZvX3BhdGggJHt0YXJnZXRf
cm9vdGZzfS9ldGMvcnBtL3N5c2luZm8iIFwKCQkJCS0tcHJlZGVmaW5lICJfcnBtcmNfcGxhdGZv
cm1fcGF0aCAke3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vcGxhdGZvcm0iIFwKCQkJCS1EICJfZGJw
YXRoICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbCIgLUQgImBjYXQgJHtjb25mYmFzZX0ubWFjcm9g
IiBcCgkJCQktRCAiX19kYmlfdHhuIGNyZWF0ZSBub2ZzeW5jIHByaXZhdGUiIFwKCQkJCS1VIC0t
anVzdGRiIC0tbm9zY3JpcHRzIC0tbm90cmlnZ2VycyAtLW5vcGFyZW50ZGlycyAtLW5vbGlua3Rv
cyAtLWlnbm9yZXNpemUgXAoJCQkkcGtnX25hbWUgPj4gIi9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJk
Yi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3RlbXAvbG9nLmRvXyR7
dGFza31fYXR0ZW1wdG9ubHkuNTg1MiIgfHwgdHJ1ZQoJCWRvbmUKCWZpCgoJIyMjIyBOb3RlOiAn
UmVjb21tZW5kcycgaXMgYW4gYXJiaXRyYXJ5IHRhZyB0aGF0IG1lYW5zIF9TVUdHRVNUU18gaW4g
UG9reS4uCgkjIEFkZCBhbnkgcmVjb21tZW5kZWQgcGFja2FnZXMgdG8gdGhlIGltYWdlCgkjIFJQ
TSBkb2VzIG5vdCBzb2x2ZSBmb3IgcmVjb21tZW5kZWQgcGFja2FnZXMgYmVjYXVzZSB0aGV5IGFy
ZSBvcHRpb25hbC4uLgoJIyBTbyB3ZSBxdWVyeSB0aGVtIGFuZCB0cmVlIHRoZW0gbGlrZSB0aGUg
QVRURU1QVE9OTFkgcGFja2FnZXMgYWJvdmUuLi4KCSMgQ2hhbmdlIHRoZSBsb29wIHRvICIxIiB0
byBydW4gdGhpcyBjb2RlLi4uCglsb29wPTAKCWlmIFsgJGxvb3AgLWVxIDEgXTsgdGhlbgoJIGVj
aG8gIlByb2Nlc3NpbmcgcmVjb21tZW5kZWQgcGFja2FnZXMuLi4iCgkgY2F0IC9kZXYvbnVsbCA+
ICAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLmxpc3QKCSB3aGlsZSBbICRsb29w
IC1lcSAxIF07IGRvCgkJIyBEdW1wIHRoZSBmdWxsIHNldCBvZiByZWNvbW1lbmRzLi4uCgkJcnBt
IC0tZGJwYXRoIC92YXIvbGliL3JwbSAtLWRlZmluZT0nX29wZW5hbGxfYmVmb3JlX2Nocm9vdCAx
JyAtLXByZWRlZmluZSAiX3JwbWRzX3N5c2luZm9fcGF0aCAke3RhcmdldF9yb290ZnN9L2V0Yy9y
cG0vc3lzaW5mbyIgXAoJCQktLXByZWRlZmluZSAiX3JwbXJjX3BsYXRmb3JtX3BhdGggJHt0YXJn
ZXRfcm9vdGZzfS9ldGMvcnBtL3BsYXRmb3JtIiBcCgkJCS1EICJfZGJwYXRoICR7dGFyZ2V0X3Jv
b3Rmc30vaW5zdGFsbCIgLUQgImBjYXQgJHtjb25mYmFzZX0ubWFjcm9gIiBcCgkJCS1EICJfX2Ri
aV90eG4gY3JlYXRlIG5vZnN5bmMgcHJpdmF0ZSIgXAoJCQktcWEgLS1xZiAiWyV7UkVDT01NRU5E
U31cbl0iIHwgc29ydCAtdSA+ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQKCQkj
IERpZCB3ZSBhZGQgbW9yZSB0byB0aGUgbGlzdD8KCQlncmVwIC12IC14IC1GIC1mICR7dGFyZ2V0
X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQubGlzdCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwv
cmVjb21tZW5kID4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3JlY29tbWVuZC5uZXcgfHwgdHJ1
ZQoJCSMgV2UgZG9uJ3Qgd2FudCB0byBsb29wIHVubGVzcyB0aGVyZSBpcyBhIGNoYW5nZSB0byB0
aGUgbGlzdCEKCQlsb29wPTAKCQljYXQgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3JlY29tbWVu
ZC5uZXcgfCBcCgkJIHdoaWxlIHJlYWQgcGtnIDsgZG8KCQkJIyBPaGggdGhlcmUgd2FzIGEgbmV3
IG9uZSwgd2UnbGwgbmVlZCB0byBsb29wIGFnYWluLi4uCgkJCWxvb3A9MQoJCQllY2hvICJQcm9j
ZXNzaW5nICRwa2cuLi4iCgkJCWZvdW5kPTAKCQkJZm9yIGFyY2h2YXIgaW4gYmFzZV9hcmNocyBt
bF9hcmNocyA7IGRvCgkJCQlwa2dfbmFtZT0kKHJlc29sdmVfcGFja2FnZV9ycG0gJHtjb25mYmFz
ZX0tJHthcmNodmFyfS5jb25mICR7cGtnfSkKCQkJCWlmIFsgLW4gIiRwa2dfbmFtZSIgXTsgdGhl
bgoJCQkJCWZvdW5kPTEKCQkJCQlicmVhawoJCQkJZmkKCQkJZG9uZQoKCQkJaWYgWyAkZm91bmQg
LWVxIDAgXTsgdGhlbgoJCQkJZWNobyAiTm90ZTogVW5hYmxlIHRvIGZpbmQgcGFja2FnZSAkcGtn
IC0tIHN1Z2dlc3RzIgoJCQkJZWNobyAiVW5hYmxlIHRvIGZpbmQgcGFja2FnZSAkcGtnLiIgPj4g
Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJf
cmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1w
bGUtMS4wLXIwL3RlbXAvbG9nLmRvXyR7dGFza31fcmVjb21tZW5kLjU4NTIiCgkJCQljb250aW51
ZQoJCQlmaQoJCQllY2hvICJBdHRlbXB0aW5nICRwa2dfbmFtZS4uLiIgPj4gIi9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
d29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Rl
bXAvbG9nLmRvX3t0YXNrfV9yZWNvbW1lbmQuNTg1MiIKCQkJcnBtIC0tZGJwYXRoIC92YXIvbGli
L3JwbSAtLWRlZmluZT0nX29wZW5hbGxfYmVmb3JlX2Nocm9vdCAxJyAtLXByZWRlZmluZSAiX3Jw
bWRzX3N5c2luZm9fcGF0aCAke3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vc3lzaW5mbyIgXAoJCQkJ
LS1wcmVkZWZpbmUgIl9ycG1yY19wbGF0Zm9ybV9wYXRoICR7dGFyZ2V0X3Jvb3Rmc30vZXRjL3Jw
bS9wbGF0Zm9ybSIgXAoJCQkJLUQgIl9kYnBhdGggJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsIiAt
RCAiYGNhdCAke2NvbmZiYXNlfS5tYWNyb2AiIFwKCQkJCS1EICJfX2RiaV90eG4gY3JlYXRlIG5v
ZnN5bmMgcHJpdmF0ZSIgXAoJCQkJLVUgLS1qdXN0ZGIgLS1ub3NjcmlwdHMgLS1ub3RyaWdnZXJz
IC0tbm9wYXJlbnRkaXJzIC0tbm9saW5rdG9zIC0taWdub3Jlc2l6ZSBcCgkJCQkkcGtnX25hbWUg
Pj4gIi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1z
aW1wbGUtMS4wLXIwL3RlbXAvbG9nLmRvXyR7dGFza31fcmVjb21tZW5kLjU4NTIiIDI+JjEgfHwg
dHJ1ZQoJCWRvbmUKCQljYXQgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3JlY29tbWVuZC5saXN0
ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQubmV3IHwgc29ydCAtdSA+ICR7dGFy
Z2V0X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQubmV3Lmxpc3QKCQltdiAtZiAke3RhcmdldF9y
b290ZnN9L2luc3RhbGwvcmVjb21tZW5kLm5ldy5saXN0ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFs
bC9yZWNvbW1lbmQubGlzdAoJCXJtICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQg
JHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3JlY29tbWVuZC5uZXcKCSBkb25lCglmaQoKCSMgTm93
IHRoYXQgd2UgaGF2ZSBhIHNvbHV0aW9uLCBwdWxsIG91dCBhIGxpc3Qgb2Ygd2hhdCB0byBpbnN0
YWxsLi4uCgllY2hvICJNYW5pZmVzdDogJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luc3RhbGwu
bWFuaWZlc3QiCglycG0gLS1kYnBhdGggL3Zhci9saWIvcnBtIC0tZGVmaW5lPSdfb3BlbmFsbF9i
ZWZvcmVfY2hyb290IDEnIC1EICJfZGJwYXRoICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbCIgLXFh
IC0teWFtbCBcCgkJLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9mc3luYyBwcml2YXRlIiBcCgkJfCBn
cmVwIC1pICdQYWNrYWdlb3JpZ2luJyB8IGN1dCAtZCA6IC1mIDIgPiAke3RhcmdldF9yb290ZnN9
L2luc3RhbGwvaW5zdGFsbF9zb2x1dGlvbi5tYW5pZmVzdAoKCXRvdWNoICR7dGFyZ2V0X3Jvb3Rm
c30vaW5zdGFsbC9pbnN0YWxsX211bHRpbGliX3NvbHV0aW9uLm1hbmlmZXN0CgoJaWYgWyAhIC16
ICIke211bHRpbGliX3RvX2luc3RhbGx9IiBdOyB0aGVuCgkJZm9yIHBrZyBpbiAke211bHRpbGli
X3RvX2luc3RhbGx9IDsgZG8KCQkJZWNobyAiUHJvY2Vzc2luZyAkcGtnLi4uIgoKCQkJYXJjaHZh
cj1iYXNlX2FyY2hzCgkJCW1sX3ByZWZpeD1gZWNobyAke3BrZ30gfCBjdXQgLWQnLScgLWYxYAoJ
CQltbF9wa2c9JHBrZwoJCQlmb3IgaSBpbiAgOyBkbwoJCQkJaWYgWyAke21sX3ByZWZpeH0gPT0g
JHtpfSBdOyB0aGVuCgkJCQkJbWxfcGtnPSQoZWNobyAke3BrZ30gfCBzZWQgInMsXiR7bWxfcHJl
Zml4fS1cKC4qXCksXDEsIikKCQkJCQlhcmNodmFyPW1sX2FyY2hzCgkJCQkJYnJlYWsKCQkJCWZp
CgkJCWRvbmUKCgkJCXBrZ19uYW1lPSQocmVzb2x2ZV9wYWNrYWdlX3JwbSAke2NvbmZiYXNlfS0k
e2FyY2h2YXJ9LmNvbmYgJHttbF9wa2d9KQoJCQlpZiBbIC16ICIkcGtnX25hbWUiIF07IHRoZW4K
CQkJCWVjaG8gIlVuYWJsZSB0byBmaW5kIHBhY2thZ2UgJHBrZyAoJG1sX3BrZykhIgoJCQkJZXhp
dCAxCgkJCWZpCgkJCWVjaG8gJHBrZ19uYW1lID4+ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9p
bnN0YWxsX211bHRpbGliLm1hbmlmZXN0CgkJZG9uZQoKCQkjIG11bHRpbGliIHBhY2thZ2UgaW5z
dGFsbGF0aW9uCgoJCSMgR2VuZXJhdGUgYW4gaW5zdGFsbCBzb2x1dGlvbiBieSBkb2luZyBhIC0t
anVzdGRiIGluc3RhbGwsIHRoZW4gcmVjcmVhdGUgaXQgd2l0aAoJCSMgYW4gYWN0dWFsIHBhY2th
Z2UgaW5zdGFsbCEKCQlycG0gLS1kYnBhdGggL3Zhci9saWIvcnBtIC0tZGVmaW5lPSdfb3BlbmFs
bF9iZWZvcmVfY2hyb290IDEnIC0tcHJlZGVmaW5lICJfcnBtZHNfc3lzaW5mb19wYXRoICR7dGFy
Z2V0X3Jvb3Rmc30vZXRjL3JwbS9zeXNpbmZvIiBcCgkJCS0tcHJlZGVmaW5lICJfcnBtcmNfcGxh
dGZvcm1fcGF0aCAke3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vcGxhdGZvcm0iIFwKCQkJLUQgIl9k
YnBhdGggJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsIiAtRCAiYGNhdCAke2NvbmZiYXNlfS1tbF9h
cmNocy5tYWNyb2AiIFwKCQkJLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9mc3luYyIgXAoJCQktVSAt
LWp1c3RkYiAtLW5vc2NyaXB0cyAtLW5vdHJpZ2dlcnMgLS1ub3BhcmVudGRpcnMgLS1ub2xpbmt0
b3MgLS1pZ25vcmVzaXplIFwKCQkJJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luc3RhbGxfbXVs
dGlsaWIubWFuaWZlc3QKCgkJIyBOb3cgdGhhdCB3ZSBoYXZlIGEgc29sdXRpb24sIHB1bGwgb3V0
IGEgbGlzdCBvZiB3aGF0IHRvIGluc3RhbGwuLi4KCQllY2hvICJNYW5pZmVzdDogJHt0YXJnZXRf
cm9vdGZzfS9pbnN0YWxsL2luc3RhbGxfbXVsdGlsaWIubWFuaWZlc3QiCgkJcnBtIC0tZGJwYXRo
IC92YXIvbGliL3JwbSAtLWRlZmluZT0nX29wZW5hbGxfYmVmb3JlX2Nocm9vdCAxJyAtRCAiX2Ri
cGF0aCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwiIC1xYSAtLXlhbWwgXAoJCQktRCAiX19kYmlf
dHhuIGNyZWF0ZSBub2ZzeW5jIHByaXZhdGUiIFwKCQkJfCBncmVwIC1pICdQYWNrYWdlb3JpZ2lu
JyB8IGN1dCAtZCA6IC1mIDIgPiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5zdGFsbF9tdWx0
aWxpYl9zb2x1dGlvbi5tYW5pZmVzdAoKCWZpCgoJY2F0ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFs
bC9pbnN0YWxsX3NvbHV0aW9uLm1hbmlmZXN0ID4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3Rv
dGFsX3NvbHV0aW9uLm1hbmlmZXN0CgljYXQgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luc3Rh
bGxfbXVsdGlsaWJfc29sdXRpb24ubWFuaWZlc3QgPj4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxs
L3RvdGFsX3NvbHV0aW9uLm1hbmlmZXN0CgoJIyBBdHRlbXB0IGluc3RhbGwKCXJwbSAtLWRicGF0
aCAvdmFyL2xpYi9ycG0gLS1kZWZpbmU9J19vcGVuYWxsX2JlZm9yZV9jaHJvb3QgMScgLS1yb290
ICR7dGFyZ2V0X3Jvb3Rmc30gXAoJCS0tcHJlZGVmaW5lICJfcnBtZHNfc3lzaW5mb19wYXRoICR7
dGFyZ2V0X3Jvb3Rmc30vZXRjL3JwbS9zeXNpbmZvIiBcCgkJLS1wcmVkZWZpbmUgIl9ycG1yY19w
bGF0Zm9ybV9wYXRoICR7dGFyZ2V0X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybSIgXAoJCS1EICJf
ZGJwYXRoIC92YXIvbGliL3JwbSIgXAoJCS0tbm9zY3JpcHRzIC0tbm90cmlnZ2VycyAtLW5vcGFy
ZW50ZGlycyAtLW5vbGlua3RvcyAtLXJlcGxhY2Vwa2dzIFwKCQktRCAiX19kYmlfdHhuIGNyZWF0
ZSBub2ZzeW5jIHByaXZhdGUiIFwKCQktVWh2ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC90b3Rh
bF9zb2x1dGlvbi5tYW5pZmVzdAoKfQoKcm9vdGZzX3JwbV9kb19yb290ZnMoKSB7Cgkjc2V0ICt4
CgoJcGFja2FnZV91cGRhdGVfaW5kZXhfcnBtOyBwYWNrYWdlX2dlbmVyYXRlX3JwbV9jb25mOyAK
CgkjY3JlYXRlcmVwbyAiL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9i
dWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvcnBtIgoKCSMgaW5zdGFsbCBwYWNrYWdl
cwoJIyBUaGlzIG5lZWRzIHRvIHdvcmsgaW4gdGhlIHNhbWUgd2F5IGFzIHBvcHVsYXRlX3Nka19y
cG0uYmJjbGFzcyEKCWV4cG9ydCBJTlNUQUxMX1JPT1RGU19SUE09Ii9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9w
MTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyIK
CWV4cG9ydCBJTlNUQUxMX1BMQVRGT1JNX1JQTT0icG93ZXJwYyIKCWV4cG9ydCBJTlNUQUxMX0NP
TkZCQVNFX1JQTT0iL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGIiCglleHBvcnQgSU5TVEFM
TF9QQUNLQUdFU19OT1JNQUxfUlBNPSJ0YXNrLWNvcmUtYm9vdCAgdS1ib290ICAJdXRpbC1saW51
eCAJZTJmc3Byb2dzIAllMmZzcHJvZ3MtbWtlMmZzIAlkb3Nmc3Rvb2xzIAliemlwMiAJbmV0LXRv
b2xzIAlwY2l1dGlscyAJaXB0YWJsZXMgCXVzYnV0aWxzIAlwcm9jcHMgCXBvcnRtYXAgCXBzbWlz
YyAJc3RyYWNlIAlzeXNmc3V0aWxzIAlzeXNrbG9nZCAJc3lzc3RhdCAJemlwIAl1bnppcCAJZHJv
cGJlYXIgCWZpbGUgCW5mcy11dGlscyAJcGFydGVkIAlldGh0b29sIAlhcHB0cmsgCWFwcHRyay1i
YXNlIAlkdGMgCXUtYm9vdCAJd2dldCAJIAlsaWJwcGMgCWVtYmVkZGVkLWh2IAlib290LWZvcm1h
dC1jb25maWcgCSAJcGtnY29uZmlnIAkgCWJvb3QtZm9ybWF0IAl2c2M3Mzg1LWZpcm13YXJlIAlj
YW50ZXN0IAkgCW11eC1zZXJ2ZXIgICIKCWV4cG9ydCBJTlNUQUxMX1BBQ0tBR0VTX01VTFRJTElC
X1JQTT0iIgoJZXhwb3J0IElOU1RBTExfUEFDS0FHRVNfQVRURU1QVE9OTFlfUlBNPSIiCglleHBv
cnQgSU5TVEFMTF9QQUNLQUdFU19MSU5HVUFTX1JQTT0iIgoJZXhwb3J0IElOU1RBTExfUFJPVklE
RU5BTUVfUlBNPSIiCglleHBvcnQgSU5TVEFMTF9UQVNLX1JQTT0icm9vdGZzX3JwbV9kb19yb290
ZnMiCgoJIyBTZXR1cCBiYXNlIHN5c3RlbSBjb25maWd1cmF0aW9uCglta2RpciAtcCAke0lOU1RB
TExfUk9PVEZTX1JQTX0vZXRjL3JwbS8KCglta2RpciAtcCAke0lOU1RBTExfUk9PVEZTX1JQTX0v
dmFyL2xpYi9ycG0KCW1rZGlyIC1wICR7SU5TVEFMTF9ST09URlNfUlBNfS92YXIvbGliL3JwbS9s
b2cKCWNhdCA+ICR7SU5TVEFMTF9ST09URlNfUlBNfS92YXIvbGliL3JwbS9EQl9DT05GSUcgPDwg
RU9GCiMgPT09PT09PT09PT09PT09PSBFbnZpcm9ubWVudApzZXRfZGF0YV9kaXIgICAgICAgICAg
ICAuCnNldF9jcmVhdGVfZGlyICAgICAgICAgIC4Kc2V0X2xnX2RpciAgICAgICAgICAgICAgLi9s
b2cKc2V0X3RtcF9kaXIgICAgICAgICAgICAgLi90bXAKCiMgLS0gdGhyZWFkX2NvdW50IG11c3Qg
YmUgPj0gOApzZXRfdGhyZWFkX2NvdW50ICAgICAgICA2NAoKIyA9PT09PT09PT09PT09PT09IExv
Z2dpbmcKCiMgPT09PT09PT09PT09PT09PSBNZW1vcnkgUG9vbApzZXRfbXBfbW1hcHNpemUgICAg
ICAgICAyNjg0MzU0NTYKCiMgPT09PT09PT09PT09PT09PSBMb2NraW5nCnNldF9sa19tYXhfbG9j
a3MgICAgICAgIDE2Mzg0CnNldF9sa19tYXhfbG9ja2VycyAgICAgIDE2Mzg0CnNldF9sa19tYXhf
b2JqZWN0cyAgICAgIDE2Mzg0Cm11dGV4X3NldF9tYXggICAgICAgICAgIDE2Mzg0MAoKIyA9PT09
PT09PT09PT09PT09IFJlcGxpY2F0aW9uCkVPRgoKCSMgTGlzdCBtdXN0IGJlIHByZWZlcmVkIHRv
IGxlYXN0IHByZWZlcnJlZCBvcmRlcgoJSU5TVEFMTF9QTEFURk9STV9FWFRSQV9SUE09IiIKCWZv
ciBlYWNoX2FyY2ggaW4gIGFsbCBhbnkgbm9hcmNoIHBwY2U1MDB2MiBwMTAyMHJkYjsgZG8KCQlJ
TlNUQUxMX1BMQVRGT1JNX0VYVFJBX1JQTT0iJGVhY2hfYXJjaCAkSU5TVEFMTF9QTEFURk9STV9F
WFRSQV9SUE0iCglkb25lCglleHBvcnQgSU5TVEFMTF9QTEFURk9STV9SUE0KCglwYWNrYWdlX2lu
c3RhbGxfaW50ZXJuYWxfcnBtCgoJZXhwb3J0IEQ9L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZz
bC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzCglleHBvcnQgT0ZG
TElORV9ST09UPS9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRf
cDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1p
bWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcwoJZXhwb3J0IElQS0dfT0ZGTElORV9ST09UPS9sb2Nh
bC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFz
ZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4w
LXIwL3Jvb3RmcwoJZXhwb3J0IE9QS0dfT0ZGTElORV9ST09UPS9sb2NhbC9qZW5raW5zL3lvY3Rv
L2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAy
MHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcwoKCSR7
Uk9PVEZTX1BPU1RJTlNUQUxMX0NPTU1BTkR9CgoJbWtkaXIgLXAgL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3Ax
MDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0
Yy9ycG0tcG9zdGluc3RzLwoJcnBtIC0tZGJwYXRoIC92YXIvbGliL3JwbSAtLWRlZmluZT0nX29w
ZW5hbGxfYmVmb3JlX2Nocm9vdCAxJyAtLXJvb3QgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZz
bC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzIC1EICdfZGJwYXRo
IC92YXIvbGliL3JwbScgLXFhIFwKCQktRCAiX19kYmlfdHhuIGNyZWF0ZSBub2ZzeW5jIHByaXZh
dGUiIFwKCQktLXFmICdOYW1lOiAle05BTUV9XG4lfFBPU1RJTj97cG9zdGluc3RhbGwgc2NyaXB0
bGV0JXxQT1NUSU5QUk9HP3sgKHVzaW5nICV7UE9TVElOUFJPR30pfXw6XG4le1BPU1RJTn1cbn06
eyV8UE9TVElOUFJPRz97cG9zdGluc3RhbGwgcHJvZ3JhbTogJXtQT1NUSU5QUk9HfVxufXx9fCcg
XAoJCT4gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdl
LXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0Yy9ycG0tcG9zdGluc3RzL2NvbWJpbmVkCglhd2sgLWYg
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zY3JpcHRzL3Jvb3Rmc19y
cG0tZXh0cmFjdC1wb3N0aW5zdC5hd2sgPCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxp
bnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMvZXRjL3JwbS1wb3N0aW5z
dHMvY29tYmluZWQKCXJtIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3Bl
L2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy9ldGMvcnBtLXBvc3RpbnN0cy9jb21iaW5l
ZAoKCWZvciBpIGluIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2Zz
bC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy9ldGMvcnBtLXBvc3RpbnN0cy8qLnNoOyBkbwoJ
CWlmIFsgLWYgJGkgXSAmJiBzaCAkaTsgdGhlbgoJCQkjIHJtICRpCgkJCW12ICRpICRpLmRvbmUK
CQlmaQoJZG9uZQoKCWluc3RhbGwgLWQgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51
eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzLy9ldGMvcmNTLmQKCSMgU3Rv
cCAkaSBnZXR0aW5nIGV4cGFuZGVkIGJlbG93Li4uCglpPVwkaQoJY2F0ID4gL2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93
b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9v
dGZzL2V0Yy9yY1MuZC9TOThjb25maWd1cmUgPDwgRU9GCiMhL2Jpbi9zaApmb3IgaSBpbiAvZXRj
L3JwbS1wb3N0aW5zdHMvKi5zaDsgZG8KCWVjaG8gIlJ1bm5pbmcgcG9zdGluc3QgJGkuLi4iCglp
ZiBbIC1mICRpIF0gJiYgc2ggJGk7IHRoZW4KCQkjIHJtICRpCgkJbXYgJGkgJGkuZG9uZQoJZWxz
ZQoJCWVjaG8gIkVSUk9SOiBwb3N0aW5zdCAkaSBmYWlsZWQuIgoJZmkKZG9uZQpybSAtZiAvZXRj
L3JjUy5kL1M5OGNvbmZpZ3VyZQpFT0YKCWNobW9kIDA3NTUgL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIw
cmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2V0Yy9y
Y1MuZC9TOThjb25maWd1cmUKCglpbnN0YWxsIC1kIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy8vZXRjCgllY2hv
ICR7QlVJTEROQU1FfSA+IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIv
YnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3Bl
L2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy8vZXRjL3ZlcnNpb24KCgkKCSByb290ZnNf
dXBkYXRlX3RpbWVzdGFtcCA7ICAgcmVtb3ZlX3BhY2thZ2luZ19kYXRhX2ZpbGVzIDsgCgoJcm0g
LXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjBy
ZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1z
aW1wbGUtMS4wLXIwL3Jvb3Rmcy92YXIvY2FjaGUyLwoJcm0gLXJmIC9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9w
MTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3Rmcy92
YXIvcnVuMi8KCXJtIC1yZiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNw
ZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9yb290ZnMvdmFyL2xvZzIvCgoJIyByZW1vdmUgbG9j
ayBmaWxlcwoJcm0gLWYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9i
dWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUv
ZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL3Zhci9saWIvcnBtL19fZGIuKgoKCSMgTW92
ZSBtYW5pZmVzdHMgaW50byB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIGxvZ3MKCW12IC9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIw
L3Jvb3Rmcy9pbnN0YWxsLyoubWFuaWZlc3QgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1s
aW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvdGVtcC8KCgkjIFJlbW92ZSBhbGwg
cmVtYWluaW5nIHJlc29sdmVyIGZpbGVzCglybSAtcmYgL2xvY2FsL2plbmtpbnMveW9jdG8vY2Fj
aGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRi
LWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvcm9vdGZzL2luc3RhbGwK
Cglsb2dfY2hlY2sgcm9vdGZzCgoJIyBXb3JrYXJvdW5kIHNvIHRoZSBwYXJzZXIga25vd3Mgd2Ug
bmVlZCB0aGUgcmVzb2x2ZV9wYWNrYWdlIGZ1bmN0aW9uIQoJaWYgZmFsc2UgOyB0aGVuCgkJcmVz
b2x2ZV9wYWNrYWdlX3JwbSBmb28gL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGIuY29uZiB8
fCB0cnVlCglmaQoKfQoKYmJ3YXJuKCkgewoJZWNobyAiV0FSTklORzogJCoiCgp9CgpvZV9zb2lu
c3RhbGwoKSB7CgkjIFB1cnBvc2U6IEluc3RhbGwgc2hhcmVkIGxpYnJhcnkgZmlsZSBhbmQKCSMg
ICAgICAgICAgY3JlYXRlIHRoZSBuZWNlc3NhcnkgbGlua3MKCSMgRXhhbXBsZToKCSMKCSMgb2Vf
CgkjCgkjYmJub3RlIGluc3RhbGxpbmcgc2hhcmVkIGxpYnJhcnkgJDEgdG8gJDIKCSMKCWxpYm5h
bWU9YGJhc2VuYW1lICQxYAoJaW5zdGFsbCAtbSA3NTUgJDEgJDIvJGxpYm5hbWUKCXNvbmFtZWxp
bms9YHBvd2VycGMtZnNsLWxpbnV4LWdudXNwZS1yZWFkZWxmIC1kICQxIHxncmVwICdMaWJyYXJ5
IHNvbmFtZTonIHxzZWQgLWUgJ3MvLipcW1woLipcKVxdLiovXDEvJ2AKCXNvbGluaz1gZWNobyAk
bGlibmFtZSB8IHNlZCAtZSAncy9cLnNvXC4uKi8uc28vJ2AKCWxuIC1zZiAkbGlibmFtZSAkMi8k
c29uYW1lbGluawoJbG4gLXNmICRsaWJuYW1lICQyLyRzb2xpbmsKCn0KCmRvX2luc3RhbGwoKSB7
CgliYXNlX2RvX2luc3RhbGwKCn0KCm11bHRpbGliX2dlbmVyYXRlX3B5dGhvbl9maWxlKCkgewog
IGNhdCA+L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdl
LXNpbXBsZS0xLjAtcjAvbXVsdGlsaWJfY2hlY2sucHkgPDxFT0YKaW1wb3J0IHN5cywgb3MsIG9z
LnBhdGgKaW1wb3J0IHJlLGZpbGVjbXAKCmFsbG93X3JlcD1yZS5jb21waWxlKHJlLnN1YigiXHwk
IiwiIiwiL2Jpbnwvc2JpbnwvdXNyL2JpbnwvdXNyL3NiaW58L3Vzci9saWJleGVjfCIpKQplcnJv
cl9wcm9tdD0iTXVsdGlsaWIgY2hlY2sgZXJyb3I6IgoKZmlsZXM9e30KZGlycz1yYXdfaW5wdXQo
KQpmb3IgZGlyIGluIGRpcnMuc3BsaXQoKToKICBmb3Igcm9vdCwgc3ViZm9sZXJzLCBzdWJmaWxl
cyBpbiBvcy53YWxrKGRpcik6CiAgICBmb3IgZmlsZSBpbiBzdWJmaWxlczoKICAgICAgaXRlbT1v
cy5wYXRoLmpvaW4ocm9vdCxmaWxlKQogICAgICBrZXk9c3RyKG9zLnBhdGguam9pbigiLyIsb3Mu
cGF0aC5yZWxwYXRoKGl0ZW0sZGlyKSkpCgogICAgICB2YWxpZD1UcnVlOwogICAgICBpZiBmaWxl
cy5oYXNfa2V5KGtleSk6CiAgICAgICAgI2NoZWNrIHdoZXRoZXIgdGhlIGZpbGUgaXMgYWxsb3cg
dG8gcmVwbGFjZQogICAgICAgIGlmIGFsbG93X3JlcC5tYXRjaChrZXkpOgogICAgICAgICAgdmFs
aWQ9VHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICBpZiBub3QgZmlsZWNtcC5jbXAoZmlsZXNb
a2V5XSxpdGVtKToKICAgICAgICAgICAgIHZhbGlkPUZhbHNlCiAgICAgICAgICAgICBwcmludCgi
JXMgZHVwbGljYXRlIGZpbGVzICVzICVzIGlzIG5vdCB0aGUgc2FtZVxuIiAlIChlcnJvcl9wcm9t
dCwgaXRlbSwgZmlsZXNba2V5XSkpCiAgICAgICAgICAgICBzeXMuZXhpdCgxKQoKICAgICAgI3Bh
c3MgdGhlIGNoZWNrLCBhZGQgdG8gbGlzdAogICAgICBpZiB2YWxpZDoKICAgICAgICBmaWxlc1tr
ZXldPWl0ZW0KRU9GCgp9Cgpkb19wYWNrYWdlX3dyaXRlKCkgewoJOgoKfQoKc3lzcm9vdF9zdGFn
ZV9kaXJzKCkgewoJZnJvbT0iJDEiCgl0bz0iJDIiCgoJc3lzcm9vdF9zdGFnZV9kaXIgJGZyb20v
dXNyL2luY2x1ZGUgJHRvL3Vzci9pbmNsdWRlCglpZiBbICJ4ODZfNjQtbGludXgiID0gInBvd2Vy
cGMtZnNsLWxpbnV4LWdudXNwZSIgXTsgdGhlbgoJCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tL3Vz
ci9iaW4gJHRvL3Vzci9iaW4KCQlzeXNyb290X3N0YWdlX2RpciAkZnJvbS91c3Ivc2JpbiAkdG8v
dXNyL3NiaW4KCQlzeXNyb290X3N0YWdlX2RpciAkZnJvbS9iaW4gJHRvL2JpbgoJCXN5c3Jvb3Rf
c3RhZ2VfZGlyICRmcm9tL3NiaW4gJHRvL3NiaW4KCQlzeXNyb290X3N0YWdlX2RpciAkZnJvbS91
c3IvbGliZXhlYyAkdG8vdXNyL2xpYmV4ZWMKCQlzeXNyb290X3N0YWdlX2RpciAkZnJvbS9ldGMg
JHRvL2V0YwoJCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tL3ZhciAkdG8vdmFyCglmaQoJaWYgWyAt
ZCAkZnJvbS91c3IvbGliIF0KCXRoZW4KCQlzeXNyb290X3N0YWdlX2xpYmRpciAkZnJvbS8vdXNy
L2xpYiAkdG8vdXNyL2xpYgoJZmkKCWlmIFsgLWQgJGZyb20vbGliIF0KCXRoZW4KCQlzeXNyb290
X3N0YWdlX2xpYmRpciAkZnJvbS9saWIgJHRvL2xpYgoJZmkKCXN5c3Jvb3Rfc3RhZ2VfZGlyICRm
cm9tL3Vzci9zaGFyZSAkdG8vdXNyL3NoYXJlCgp9Cgpkb19jaGVja3VyaWFsbCgpIHsKCToKCn0K
CnBhY2thZ2Vkc3RhZ2luZ19mYXN0cGF0aCgpIHsKCToKCn0KCnNzdGF0ZV91bnBhY2tfcGFja2Fn
ZSgpIHsKCW1rZGlyIC1wICR7U1NUQVRFX0lOU1RESVJ9CgljZCAke1NTVEFURV9JTlNURElSfQoJ
dGFyIC0tdXNlLWNvbXByZXNzLXByb2dyYW09eHogLXh2ZiAvb3B0L3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvc3N0YXRlLWNhY2hlL3NzdGF0ZS1mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLWZz
bC1saW51eC1nbnVzcGUtMS4wLXIwLXAxMDIwcmRiLTItJHtCQl9UQVNLSEFTSH0KCn0KCnJvb3Rm
c191cGRhdGVfdGltZXN0YW1wKCkgewoJZGF0ZSAtdSArJTJtJTJkJTJIJTJNJTRZID4vbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1y
MC9yb290ZnMvZXRjL3RpbWVzdGFtcAoKfQoKc3lzcm9vdF9zdGFnZV9hbGwoKSB7CglzeXNyb290
X3N0YWdlX2RpcnMgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWls
ZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNs
LWltYWdlLXNpbXBsZS0xLjAtcjAvaW1hZ2UgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1s
aW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvc3lzcm9vdC1kZXN0ZGlyLwoKfQoK
bWtsaWJzX29wdGltaXplX2ltYWdlKCkgewoJZm9yIGltZyBpbiAke01LTElCU19PUFRJTUlaRURf
SU1BR0VTfQoJZG8KCQlpZiBbICIke2ltZ30iID09ICJmc2wtaW1hZ2Utc2ltcGxlIiBdIHx8IFsg
IiR7aW1nfSIgPT0gImFsbCIgXQoJCXRoZW4KCQkJbWtsaWJzX29wdGltaXplX2ltYWdlX2RvaXQK
CQkJYnJlYWsKCQlmaQoJZG9uZQoKfQoKb2VfcnVubWFrZSgpIHsKCWlmIFsgeCIkTUFLRSIgPSB4
IF07IHRoZW4gTUFLRT1tYWtlOyBmaQoJYmJub3RlIG1ha2UgLWUgTUFLRUZMQUdTPSAiJEAiCglt
YWtlIC1lIE1BS0VGTEFHUz0gIiRAIiB8fCBkaWUgIm9lX3J1bm1ha2UgZmFpbGVkIgoKfQoKYmJl
cnJvcigpIHsKCWVjaG8gIkVSUk9SOiAkKiIKCn0KCm1rbGlic19vcHRpbWl6ZV9pbWFnZV9kb2l0
KCkgewoJcm0gLXJmIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2Zz
bC1pbWFnZS1zaW1wbGUtMS4wLXIwL21rbGlicwoJbWtkaXIgLXAgL2xvY2FsL2plbmtpbnMveW9j
dG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3Ax
MDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvbWtsaWJzL2Rl
c3QKCWNkIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEw
MjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFn
ZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcwoJZHUgLWJzID4gL2xvY2FsL2plbmtpbnMveW9jdG8vY2Fj
aGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRi
LWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvbWtsaWJzL2R1LmJlZm9y
ZS5ta2xpYnMudHh0Cglmb3IgaSBpbiBgZmluZCAuYDsgZG8gZmlsZSAkaTsgZG9uZSBcCgkJfCBn
cmVwIEVMRiBcCgkJfCBncmVwICJMU0IgZXhlY3V0YWJsZSIgXAoJCXwgZ3JlcCAiZHluYW1pY2Fs
bHkgbGlua2VkIiBcCgkJfCBzZWQgInMvOi4qLy8iIFwKCQl8IHNlZCAicyteXC4vKysiIFwKCQk+
IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJf
cmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1w
bGUtMS4wLXIwL21rbGlicy9leGVjdXRhYmxlcy5saXN0CgoJY2FzZSBwb3dlcnBjIGluCgkJcG93
ZXJwYyB8IG1pcHMgfCBtaWNyb2JsYXplICkKCQkJZHluYW1pY19sb2FkZXI9Ii9saWIvbGQuc28u
MSIKCQkJOzsKCQlwb3dlcnBjNjQpCgkJCWR5bmFtaWNfbG9hZGVyPSIvbGliL2xkNjQuc28uMSIK
CQkJOzsKCQl4ODZfNjQpCgkJCWR5bmFtaWNfbG9hZGVyPSIvbGliL2xkLWxpbnV4LXg4Ni02NC5z
by4yIgoJCQk7OwoJCWk1ODYgKQoJCQlkeW5hbWljX2xvYWRlcj0iL2xpYi9sZC1saW51eC5zby4y
IgoJCQk7OwoJCWFybSApCgkJCWR5bmFtaWNfbG9hZGVyPSIvbGliL2xkLWxpbnV4LnNvLjMiCgkJ
CTs7CgkJKiApCgkJCWR5bmFtaWNfbG9hZGVyPSIvdW5rbm93bl9keW5hbWljX2xpbmtlciIKCQkJ
OzsKCWVzYWMKCglta2xpYnMgLXYgXAoJCS0tbGRsaWIgJHtkeW5hbWljX2xvYWRlcn0gXAoJCS0t
c3lzcm9vdCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3Ax
MDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiIFwKCQktLXJvb3QgL2xvY2FsL2pl
bmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3Rt
cC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAv
cm9vdGZzIFwKCQktLXRhcmdldCBgZWNobyBwb3dlcnBjLWZzbC1saW51eC1nbnVzcGUtIHwgc2Vk
ICdzLy0kLy8nIGAgXAoJCS1kIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251
c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL21rbGlicy9kZXN0IFwKCQlgY2F0IC9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIw
L21rbGlicy9leGVjdXRhYmxlcy5saXN0YAoKCWNkIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL21rbGlicy9kZXN0Cglmb3Ig
aSBpbiAqCglkbwoJCWNwICRpIGBmaW5kIC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGlu
dXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3Jvb3RmcyAtbmFtZSAkaWAKCWRvbmUK
CgljZCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Ut
c2ltcGxlLTEuMC1yMC9yb290ZnMKCWR1IC1icyA+IC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL21rbGlicy9kdS5hZnRlci5t
a2xpYnMudHh0CgoJZWNobyByb290ZnMgc2l6ZSBiZWZvcmUgbWtsaWJzIG9wdGltaXphdGlvbjog
YGNhdCAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Ut
c2ltcGxlLTEuMC1yMC9ta2xpYnMvZHUuYmVmb3JlLm1rbGlicy50eHRgCgllY2hvIHJvb3RmcyBz
aXplIGFmdGVyIG1rbGlicyBvcHRpbWl6YXRpb246IGBjYXQgL2xvY2FsL2plbmtpbnMveW9jdG8v
Y2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIw
cmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvbWtsaWJzL2R1LmFm
dGVyLm1rbGlicy50eHRgCgp9CgoKCnB5dGhvbiBkb19kZXZzaGVsbCAoKSB7CiAgICBvZV90ZXJt
aW5hbChkLmdldFZhcignU0hFTEwnLCBUcnVlKSwgJ09wZW5FbWJlZGRlZCBEZXZlbG9wZXIgU2hl
bGwnLCBkKQp9CgoKcHl0aG9uIG9lX2ltcG9ydF9laCAoKSB7CiAgICBpZiBpc2luc3RhbmNlKGUs
IGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCk6CglvZV9pbXBvcnQoZS5kYXRhKQp9CgoKcHl0aG9uIGdl
bl9wYWNrYWdldmFyICgpIHsKZGVmIGdlbl9wYWNrYWdldmFyKGQpOgogICAgcmV0ID0gW10KICAg
IHBrZ3MgPSAoZC5nZXRWYXIoIlBBQ0tBR0VTIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIHZh
cnMgPSAoZC5nZXRWYXIoIlBBQ0tBR0VWQVJTIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIGZv
ciBwIGluIHBrZ3M6CiAgICAgICAgZm9yIHYgaW4gdmFyczoKICAgICAgICAgICAgcmV0LmFwcGVu
ZCh2ICsgIl8iICsgcCkKICAgIHJldHVybiAiICIuam9pbihyZXQpCn0KCgpweXRob24gY2hlY2tf
Y29ubmVjdGl2aXR5ICgpIHsKZGVmIGNoZWNrX2Nvbm5lY3Rpdml0eShkKToKICAgICMgVVJJJ3Mg
dG8gY2hlY2sgY2FuIGJlIHNldCBpbiB0aGUgQ09OTkVDVElWSVRZX0NIRUNLX1VSSVMgdmFyaWFi
bGUKICAgICMgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFzIGZvciBTUkNfVVJJLiBJZiB0aGUgdmFy
aWFibGUgaXMgbm90IHNldAogICAgIyB0aGUgY2hlY2sgaXMgc2tpcHBlZAogICAgdGVzdF91cmlz
ID0gKGJiLmRhdGEuZ2V0VmFyKCdDT05ORUNUSVZJVFlfQ0hFQ0tfVVJJUycsIGQsIFRydWUpIG9y
ICIiKS5zcGxpdCgpCiAgICByZXR2YWwgPSAiIgoKICAgICMgT25seSBjaGVjayBjb25uZWN0aXZp
dHkgaWYgbmV0d29yayBlbmFibGVkIGFuZCB0aGUKICAgICMgQ09OTkVDVElWSVRZX0NIRUNLX1VS
SVMgYXJlIHNldAogICAgbmV0d29ya19lbmFibGVkID0gbm90IGJiLmRhdGEuZ2V0VmFyKCdCQl9O
T19ORVRXT1JLJywgZCwgVHJ1ZSkKICAgIGNoZWNrX2VuYWJsZWQgPSBsZW4odGVzdF91cmlzKQog
ICAgIyBUYWtlIGEgY29weSBvZiB0aGUgZGF0YSBzdG9yZSBhbmQgdW5zZXQgTUlSUk9SUyBhbmQg
UFJFTUlSUk9TCiAgICBkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICBkYXRhLmRlbFZh
cignUFJFTUlSUk9SUycpCiAgICBkYXRhLmRlbFZhcignTUlSUk9SUycpCiAgICBpZiBjaGVja19l
bmFibGVkIGFuZCBuZXR3b3JrX2VuYWJsZWQ6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmZXRj
aGVyID0gYmIuZmV0Y2gyLkZldGNoKHRlc3RfdXJpcywgZGF0YSkKICAgICAgICAgICAgZmV0Y2hl
ci5jaGVja3N0YXR1cygpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIyBB
bGxvdyB0aGUgbWVzc2FnZSB0byBiZSBjb25maWd1cmVkIHNvIHRoYXQgdXNlcnMgY2FuIGJlCiAg
ICAgICAgICAgICMgcG9pbnRlZCB0byBhIHN1cHBvcnQgbWVjaGFuaXNtLgogICAgICAgICAgICBt
c2cgPSBiYi5kYXRhLmdldFZhcignQ09OTkVDVElWSVRZX0NIRUNLX01TRycsIGRhdGEsIFRydWUp
IG9yICIiCiAgICAgICAgICAgIGlmIGxlbihtc2cpID09IDA6CiAgICAgICAgICAgICAgICBtc2cg
PSAiRmFpbGVkIHRvIGZldGNoIHRlc3QgZGF0YSBmcm9tIHRoZSBuZXR3b3JrLiBQbGVhc2UgZW5z
dXJlIHlvdXIgbmV0d29yayBpcyBjb25maWd1cmVkIGNvcnJlY3RseS5cbiIKICAgICAgICAgICAg
cmV0dmFsID0gbXNnCgogICAgcmV0dXJuIHJldHZhbAp9CgoKcHl0aG9uIGRvX2NsZWFuc3N0YXRl
ICgpIHsKICAgICAgICBzc3RhdGVfY2xlYW5fY2FjaGVmaWxlcyhkKQp9CgoKcHl0aG9uIHBhY2th
Z2VfcnBtX2ZuICgpIHsKCWJiLmRhdGEuc2V0VmFyKCdQS0dGTicsIGJiLmRhdGEuZ2V0VmFyKCdQ
S0cnLGQpLCBkKQp9CgoKcHl0aG9uIHNzdGF0ZV9pbnN0YWxsICgpIHsKZGVmIHNzdGF0ZV9pbnN0
YWxsKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRoCgogICAgc2hhcmVkZmlsZXMgPSBbXQogICAg
c2hhcmVkZGlycyA9IFtdCiAgICBiYi5ta2RpcmhpZXIoYmIuZGF0YS5leHBhbmQoIi9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvc3N0YXRlLWNvbnRyb2wiLCBkKSkKICAgIG1hbmlmZXN0ID0gYmIuZGF0YS5leHBhbmQoIi9s
b2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVs
ZWFzZS90bXAvc3N0YXRlLWNvbnRyb2wvbWFuaWZlc3QtcDEwMjByZGItZnNsLWltYWdlLXNpbXBs
ZS4lcyIgJSBzc1snbmFtZSddLCBkKQoKICAgIGlmIG9zLmFjY2VzcyhtYW5pZmVzdCwgb3MuUl9P
Syk6CiAgICAgICAgYmIuZmF0YWwoIlBhY2thZ2UgYWxyZWFkeSBzdGFnZWQgKCVzKT8hIiAlIG1h
bmlmZXN0KQoKICAgIGxvY2tzID0gW10KICAgIGZvciBsb2NrIGluIHNzWydsb2NrZmlsZXMtc2hh
cmVkJ106CiAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxvY2tmaWxlKGxvY2ssIFRydWUp
KQogICAgZm9yIGxvY2sgaW4gc3NbJ2xvY2tmaWxlcyddOgogICAgICAgIGxvY2tzLmFwcGVuZChi
Yi51dGlscy5sb2NrZmlsZShsb2NrKSkKCiAgICBmb3Igc3RhdGUgaW4gc3NbJ2RpcnMnXToKICAg
ICAgICBvZS5wYXRoLmNvcHl0cmVlKHN0YXRlWzFdLCBzdGF0ZVsyXSkKICAgICAgICBmb3Igd2Fs
a3Jvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3RhdGVbMV0pOgogICAgICAgICAgICBmb3Ig
ZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIHNyY3BhdGggPSBvcy5wYXRoLmpvaW4od2Fs
a3Jvb3QsIGZpbGUpCiAgICAgICAgICAgICAgICBkc3RwYXRoID0gc3JjcGF0aC5yZXBsYWNlKHN0
YXRlWzFdLCBzdGF0ZVsyXSkKICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTdGFnaW5nICVz
IHRvICVzIiAlIChzcmNwYXRoLCBkc3RwYXRoKSkKICAgICAgICAgICAgICAgIHNoYXJlZGZpbGVz
LmFwcGVuZChkc3RwYXRoKQogICAgICAgICAgICBmb3IgZGlyIGluIGRpcnM6CiAgICAgICAgICAg
ICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4od2Fsa3Jvb3QsIGRpcikKICAgICAgICAgICAgICAg
IGRzdGRpciA9IHNyY2Rpci5yZXBsYWNlKHN0YXRlWzFdLCBzdGF0ZVsyXSkKICAgICAgICAgICAg
ICAgIGJiLmRlYnVnKDIsICJTdGFnaW5nICVzIHRvICVzIiAlIChzcmNkaXIsIGRzdGRpcikpCiAg
ICAgICAgICAgICAgICBpZiBub3QgZHN0ZGlyLmVuZHN3aXRoKCIvIik6CiAgICAgICAgICAgICAg
ICAgICAgZHN0ZGlyID0gZHN0ZGlyICsgIi8iCiAgICAgICAgICAgICAgICBzaGFyZWRkaXJzLmFw
cGVuZChkc3RkaXIpCiAgICBmID0gb3BlbihtYW5pZmVzdCwgInciKQogICAgZm9yIGZpbGUgaW4g
c2hhcmVkZmlsZXM6CiAgICAgICAgZi53cml0ZShmaWxlICsgIlxuIikKICAgICMgV2Ugd2FudCB0
byBlbnN1cmUgdGhhdCBkaXJlY3RvcmllcyBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgbWFuaWZl
c3QKICAgICMgc28gdGhhdCB3aGVuIHdlIHRlc3QgdG8gc2VlIGlmIHRoZXkgc2hvdWxkIGJlIGRl
bGV0ZWQgYW55IGNvbnRlbnRzCiAgICAjIGFkZGVkIGJ5IHRoZSB0YXNrIHdpbGwgaGF2ZSBiZWVu
IHJlbW92ZWQgZmlyc3QuCiAgICBkaXJzID0gc29ydGVkKHNoYXJlZGRpcnMsIGtleT1sZW4pCiAg
ICAjIE11c3QgcmVtb3ZlIGNoaWxkcmVuIGZpcnN0LCB3aGljaCB3aWxsIGhhdmUgYSBsb25nZXIg
cGF0aCB0aGFuIHRoZSBwYXJlbnQKICAgIGZvciBkaSBpbiByZXZlcnNlZChkaXJzKToKICAgICAg
ICBmLndyaXRlKGRpICsgIlxuIikKICAgIGYuY2xvc2UoKQoKICAgIGZvciBwb3N0aW5zdCBpbiAo
YmIuZGF0YS5nZXRWYXIoJ1NTVEFURVBPU1RJTlNURlVOQ1MnLCBkLCBUcnVlKSBvciAnJykuc3Bs
aXQoKToKICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMocG9zdGluc3QsIGQpCgogICAgZm9yIGxv
Y2sgaW4gbG9ja3M6CiAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQp9CgoKcHl0aG9u
IHNwbGl0ZmlsZTIgKCkgewpkZWYgc3BsaXRmaWxlMihkZWJ1Z3NyY2RpciwgZCk6CiAgICAjIEZ1
bmN0aW9uIHRvIHNwbGl0IGEgc2luZ2xlIGZpbGUsIGNhbGxlZCBmcm9tIHNwbGl0X2FuZF9zdHJp
cF9maWxlcyBiZWxvdwogICAgIwogICAgIyBUaGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIHByb2Nl
c3NlZCBpbiB0aGUgc3BsaXRmaWxlMiBpcyBmdXJ0aGVyIHByb2NlY2Vzc2VkCiAgICAjIGFuZCBj
b3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhlcmUuCgogICAgaW1wb3J0IGNvbW1hbmRzLCBzdGF0
CgogICAgZHZhciA9IGJiLmRhdGEuZ2V0VmFyKCdQS0dEJywgZCwgVHJ1ZSkKICAgIHBhdGhwcmVm
aXggPSAiZXhwb3J0IFBBVEg9JXM7ICIgJSBiYi5kYXRhLmdldFZhcignUEFUSCcsIGQsIFRydWUp
CiAgICBzdHJpcCA9IGJiLmRhdGEuZ2V0VmFyKCJTVFJJUCIsIGQsIFRydWUpCiAgICBvYmpjb3B5
ID0gYmIuZGF0YS5nZXRWYXIoIk9CSkNPUFkiLCBkLCBUcnVlKQogICAgZGVidWdlZGl0ID0gYmIu
ZGF0YS5leHBhbmQoIi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVp
bGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWIvcnBt
L2Jpbi9kZWJ1Z2VkaXQiLCBkKQogICAgd29ya2RpciA9IGJiLmRhdGEuZXhwYW5kKCIvbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2Uv
dG1wL3dvcmsvcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1y
MCIsIGQpCiAgICB3b3JrcGFyZW50ZGlyID0gb3MucGF0aC5kaXJuYW1lKHdvcmtkaXIpCiAgICB3
b3JrYmFzZWRpciA9IG9zLnBhdGguYmFzZW5hbWUod29ya2RpcikKICAgIHNvdXJjZWZpbGUgPSBi
Yi5kYXRhLmV4cGFuZCgiL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9i
dWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUv
ZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvZGVidWdzb3VyY2VzLmxpc3QiLCBkKQoKICAgIGlmIGRl
YnVnc3JjZGlyOgogICAgICAgYmIubWtkaXJoaWVyKCIlcyVzIiAlIChkdmFyLCBkZWJ1Z3NyY2Rp
cikpCgogICAgICAgcHJvY2Vzc2RlYnVnc3JjID0gICJMQ19BTEw9QyA7IHNvcnQgLXogLXUgJyVz
JyB8IGVncmVwIC12IC16ICcoPGludGVybmFsPnw8YnVpbHQtaW4+KSQnIHwgIgogICAgICAgIyBX
ZSBuZWVkIHRvIGlnbm9yZSBmaWxlcyB0aGF0IGFyZSBub3QgYWN0dWFsbHkgb3VycwogICAgICAg
IyB3ZSBkbyB0aGlzIGJ5IG9ubHkgcGF5aW5nIGF0dGVudGlvbiB0byBpdGVtcyBmcm9tIHRoaXMg
cGFja2FnZQogICAgICAgcHJvY2Vzc2RlYnVnc3JjICs9ICJmZ3JlcCAteiAnJXMnIHwgIgogICAg
ICAgcHJvY2Vzc2RlYnVnc3JjICs9ICIoY2QgJyVzJyA7IGNwaW8gLXBkMG1MIC0tbm8tcHJlc2Vy
dmUtb3duZXIgJyVzJXMnIDI+L2Rldi9udWxsKSIKCiAgICAgICBvcy5zeXN0ZW0ocHJvY2Vzc2Rl
YnVnc3JjICUgKHNvdXJjZWZpbGUsIHdvcmtiYXNlZGlyLCB3b3JrcGFyZW50ZGlyLCBkdmFyLCBk
ZWJ1Z3NyY2RpcikpCgogICAgICAgIyBUaGUgY29weSBieSBjcGlvIG1heSBoYXZlIHJlc3VsdGVk
IGluIHNvbWUgZW1wdHkgZGlyZWN0b3JpZXMhICBSZW1vdmUgdGhlc2UKICAgICAgIGZvciByb290
LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKCIlcyVzIiAlIChkdmFyLCBkZWJ1Z3NyY2RpcikpOgog
ICAgICAgICAgZm9yIGQgaW4gZGlyczoKICAgICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmpvaW4o
cm9vdCwgZCkKICAgICAgICAgICAgICAjYmIubm90ZSgicm1kaXIgLXAgJXMiICUgZGlyKQogICAg
ICAgICAgICAgIG9zLnN5c3RlbSgicm1kaXIgLXAgJXMgMj4vZGV2L251bGwiICUgZGlyKQp9CgoK
cHl0aG9uIGJhc2VfdmVyc2lvbl9sZXNzX29yX2VxdWFsICgpIHsKZGVmIGJhc2VfdmVyc2lvbl9s
ZXNzX29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUs
IGQpOgogICAgcmV0dXJuIG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCh2YXJpYWJsZSwg
Y2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQp9CgoKcHl0aG9uIGdldF9jcHV0
aW1lICgpIHsKZGVmIGdldF9jcHV0aW1lKCk6CiAgICBmaWVsZHMgPSBvcGVuKCIvcHJvYy9zdGF0
IiwgInIiKS5yZWFkbGluZSgpLnJzdHJpcCgpLnNwbGl0KClbMTpdCiAgICByZXR1cm4gc3VtKGlu
dChmaWVsZCkgZm9yIGZpZWxkIGluIGZpZWxkcykKfQoKCnB5dGhvbiBiYXNlX2RvX3BhdGNoICgp
IHsKCWJiLmJ1aWxkLmV4ZWNfZnVuYygncGF0Y2hfZG9fcGF0Y2gnLCBkKQp9CgoKcHl0aG9uIHJ1
bnRpbWVfbWFwcGluZ19yZW5hbWUgKCkgewpkZWYgcnVudGltZV9tYXBwaW5nX3JlbmFtZSAodmFy
bmFtZSwgZCk6CgkjYmIubm90ZSgiJXMgYmVmb3JlOiAlcyIgJSAodmFybmFtZSwgYmIuZGF0YS5n
ZXRWYXIodmFybmFtZSwgZCwgVHJ1ZSkpKQoKCW5ld19kZXBlbmRzID0gW10KCWRlcHMgPSBiYi51
dGlscy5leHBsb2RlX2RlcF92ZXJzaW9ucyhiYi5kYXRhLmdldFZhcih2YXJuYW1lLCBkLCBUcnVl
KSBvciAiIikKCWZvciBkZXBlbmQgaW4gZGVwczoKCQkjIEhhdmUgdG8gYmUgY2FyZWZ1bCB3aXRo
IGFueSB2ZXJzaW9uIGNvbXBvbmVudCBvZiB0aGUgZGVwZW5kCgkJbmV3X2RlcGVuZCA9IGdldF9w
YWNrYWdlX21hcHBpbmcoZGVwZW5kLCBkKQoJCWlmIGRlcHNbZGVwZW5kXToKCQkJbmV3X2RlcGVu
ZHMuYXBwZW5kKCIlcyAoJXMpIiAlIChuZXdfZGVwZW5kLCBkZXBzW2RlcGVuZF0pKQoJCWVsc2U6
CgkJCW5ld19kZXBlbmRzLmFwcGVuZChuZXdfZGVwZW5kKQoKCWJiLmRhdGEuc2V0VmFyKHZhcm5h
bWUsICIgIi5qb2luKG5ld19kZXBlbmRzKSBvciBOb25lLCBkKQoKCSNiYi5ub3RlKCIlcyBhZnRl
cjogJXMiICUgKHZhcm5hbWUsIGJiLmRhdGEuZ2V0VmFyKHZhcm5hbWUsIGQsIFRydWUpKSkKfQoK
CnB5dGhvbiBwYXRjaF9kb19wYXRjaCAoKSB7CglpbXBvcnQgb2UucGF0Y2gKCglzcmNfdXJpID0g
KGJiLmRhdGEuZ2V0VmFyKCdTUkNfVVJJJywgZCwgMSkgb3IgJycpLnNwbGl0KCkKCWlmIG5vdCBz
cmNfdXJpOgoJCXJldHVybgoKCXBhdGNoc2V0bWFwID0gewoJCSJwYXRjaCI6IG9lLnBhdGNoLlBh
dGNoVHJlZSwKCQkicXVpbHQiOiBvZS5wYXRjaC5RdWlsdFRyZWUsCgkJImdpdCI6IG9lLnBhdGNo
LkdpdEFwcGx5VHJlZSwKCX0KCgljbHMgPSBwYXRjaHNldG1hcFtiYi5kYXRhLmdldFZhcignUEFU
Q0hUT09MJywgZCwgMSkgb3IgJ3F1aWx0J10KCglyZXNvbHZlcm1hcCA9IHsKCQkibm9vcCI6IG9l
LnBhdGNoLk5PT1BSZXNvbHZlciwKCQkidXNlciI6IG9lLnBhdGNoLlVzZXJSZXNvbHZlciwKCX0K
CglyY2xzID0gcmVzb2x2ZXJtYXBbYmIuZGF0YS5nZXRWYXIoJ1BBVENIUkVTT0xWRScsIGQsIDEp
IG9yICd1c2VyJ10KCglzID0gYmIuZGF0YS5nZXRWYXIoJ1MnLCBkLCAxKQoKCXBhdGggPSBvcy5n
ZXRlbnYoJ1BBVEgnKQoJb3MucHV0ZW52KCdQQVRIJywgYmIuZGF0YS5nZXRWYXIoJ1BBVEgnLCBk
LCAxKSkKCgljbGFzc2VzID0ge30KCgl3b3JrZGlyID0gYmIuZGF0YS5nZXRWYXIoJ1dPUktESVIn
LCBkLCAxKQoJZm9yIHVybCBpbiBzcmNfdXJpOgoJCSh0eXBlLCBob3N0LCBwYXRoLCB1c2VyLCBw
c3dkLCBwYXJtKSA9IGJiLmRlY29kZXVybCh1cmwpCgoJCWxvY2FsID0gTm9uZQoJCWJhc2UsIGV4
dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShwYXRoKSkKCQlpZiBleHQgaW4g
KCcuZ3onLCAnLmJ6MicsICcuWicpOgoJCQlsb2NhbCA9IG9zLnBhdGguam9pbih3b3JrZGlyLCBi
YXNlKQoJCQlleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2UpWzFdCgoJCWlmICJhcHBseSIgaW4g
cGFybToKCQkJYXBwbHkgPSBwYXJtWyJhcHBseSJdCgkJCWlmIGFwcGx5ICE9ICJ5ZXMiOgoJCQkJ
aWYgYXBwbHkgIT0gIm5vIjoKCQkJCQliYi5tc2cud2FybihOb25lLCAiVW5zdXBwb3J0ZWQgdmFs
dWUgJyVzJyBmb3IgJ2FwcGx5JyB1cmwgcGFyYW0gaW4gJyVzJywgcGxlYXNlIHVzZSAneWVzJyBv
ciAnbm8nIiAlIChhcHBseSwgdXJsKSkKCQkJCWNvbnRpbnVlCgkJI2VsaWYgInBhdGNoIiBpbiBw
YXJtOgoJCQkjYmIubXNnLndhcm4oTm9uZSwgIkRlcHJlY2F0ZWQgdXNhZ2Ugb2YgJ3BhdGNoJyB1
cmwgcGFyYW0gaW4gJyVzJywgcGxlYXNlIHVzZSAnYXBwbHk9e3llcyxub30nIiAlIHVybCkKCQll
bGlmIGV4dCBub3QgaW4gKCIuZGlmZiIsICIucGF0Y2giKToKCQkJY29udGludWUKCgkJaWYgbm90
IGxvY2FsOgoJCQl1cmwgPSBiYi5lbmNvZGV1cmwoKHR5cGUsIGhvc3QsIHBhdGgsIHVzZXIsIHBz
d2QsIFtdKSkKCQkJbG9jYWwgPSBvcy5wYXRoLmpvaW4oJy8nLCBiYi5mZXRjaDIubG9jYWxwYXRo
KHVybCwgZCkpCgkJbG9jYWwgPSBiYi5kYXRhLmV4cGFuZChsb2NhbCwgZCkKCgkJaWYgInN0cmlw
bGV2ZWwiIGluIHBhcm06CgkJCXN0cmlwbGV2ZWwgPSBwYXJtWyJzdHJpcGxldmVsIl0KCQllbGlm
ICJwbnVtIiBpbiBwYXJtOgoJCQkjYmIubXNnLndhcm4oTm9uZSwgIkRlcHJlY2F0ZWQgdXNhZ2Ug
b2YgJ3BudW0nIHVybCBwYXJhbWV0ZXIgaW4gJyVzJywgcGxlYXNlIHVzZSAnc3RyaXBsZXZlbCci
ICUgdXJsKQoJCQlzdHJpcGxldmVsID0gcGFybVsicG51bSJdCgkJZWxzZToKCQkJc3RyaXBsZXZl
bCA9ICcxJwoKCQlpZiAicG5hbWUiIGluIHBhcm06CgkJCXBuYW1lID0gcGFybVsicG5hbWUiXQoJ
CWVsc2U6CgkJCXBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShsb2NhbCkKCgkJaWYgIm1pbmRhdGUi
IGluIHBhcm0gb3IgIm1heGRhdGUiIGluIHBhcm06CgkJCXBuID0gYmIuZGF0YS5nZXRWYXIoJ1BO
JywgZCwgMSkKCQkJc3JjZGF0ZSA9IGJiLmRhdGEuZ2V0VmFyKCdTUkNEQVRFXyVzJyAlIHBuLCBk
LCAxKQoJCQlpZiBub3Qgc3JjZGF0ZToKCQkJCXNyY2RhdGUgPSBiYi5kYXRhLmdldFZhcignU1JD
REFURScsIGQsIDEpCgoJCQlpZiBzcmNkYXRlID09ICJub3ciOgoJCQkJc3JjZGF0ZSA9IGJiLmRh
dGEuZ2V0VmFyKCdEQVRFJywgZCwgMSkKCgkJCWlmICJtYXhkYXRlIiBpbiBwYXJtIGFuZCBwYXJt
WyJtYXhkYXRlIl0gPCBzcmNkYXRlOgoJCQkJYmIubm90ZSgiUGF0Y2ggJyVzJyBpcyBvdXRkYXRl
ZCIgJSBwbmFtZSkKCQkJCWNvbnRpbnVlCgoJCQlpZiAibWluZGF0ZSIgaW4gcGFybSBhbmQgcGFy
bVsibWluZGF0ZSJdID4gc3JjZGF0ZToKCQkJCWJiLm5vdGUoIlBhdGNoICclcycgaXMgcHJlZGF0
ZWQiICUgcG5hbWUpCgkJCQljb250aW51ZQoKCgkJaWYgIm1pbnJldiIgaW4gcGFybToKCQkJc3Jj
cmV2ID0gYmIuZGF0YS5nZXRWYXIoJ1NSQ1JFVicsIGQsIDEpCgkJCWlmIHNyY3JldiBhbmQgc3Jj
cmV2IDwgcGFybVsibWlucmV2Il06CgkJCQliYi5ub3RlKCJQYXRjaCAnJXMnIGFwcGxpZXMgdG8g
bGF0ZXIgcmV2aXNpb25zIiAlIHBuYW1lKQoJCQkJY29udGludWUKCgkJaWYgIm1heHJldiIgaW4g
cGFybToKCQkJc3JjcmV2ID0gYmIuZGF0YS5nZXRWYXIoJ1NSQ1JFVicsIGQsIDEpCgkJCWlmIHNy
Y3JldiBhbmQgc3JjcmV2ID4gcGFybVsibWF4cmV2Il06CgkJCQliYi5ub3RlKCJQYXRjaCAnJXMn
IGFwcGxpZXMgdG8gZWFybGllciByZXZpc2lvbnMiICUgcG5hbWUpCgkJCQljb250aW51ZQoKCQlp
ZiAicmV2IiBpbiBwYXJtOgoJCQlzcmNyZXYgPSBiYi5kYXRhLmdldFZhcignU1JDUkVWJywgZCwg
MSkKCQkJaWYgc3JjcmV2IGFuZCBwYXJtWyJyZXYiXSBub3QgaW4gc3JjcmV2OgoJCQkJYmIubm90
ZSgiUGF0Y2ggJyVzJyBkb2Vzbid0IGFwcGx5IHRvIHJldmlzaW9uIiAlIHBuYW1lKQoJCQkJY29u
dGludWUKCgkJaWYgIm5vdHJldiIgaW4gcGFybToKCQkJc3JjcmV2ID0gYmIuZGF0YS5nZXRWYXIo
J1NSQ1JFVicsIGQsIDEpCgkJCWlmIHNyY3JldiBhbmQgcGFybVsibm90cmV2Il0gaW4gc3JjcmV2
OgoJCQkJYmIubm90ZSgiUGF0Y2ggJyVzJyBkb2Vzbid0IGFwcGx5IHRvIHJldmlzaW9uIiAlIHBu
YW1lKQoJCQkJY29udGludWUKCgkJaWYgInBhdGNoZGlyIiBpbiBwYXJtOgoJCQlwYXRjaGRpciA9
IHBhcm1bInBhdGNoZGlyIl0KCQkJaWYgbm90IG9zLnBhdGguaXNhYnMocGF0Y2hkaXIpOgoJCQkJ
cGF0Y2hkaXIgPSBvcy5wYXRoLmpvaW4ocywgcGF0Y2hkaXIpCgkJZWxzZToKCQkJcGF0Y2hkaXIg
PSBzCgoJCWlmIG5vdCBwYXRjaGRpciBpbiBjbGFzc2VzOgoJCQlwYXRjaHNldCA9IGNscyhwYXRj
aGRpciwgZCkKCQkJcmVzb2x2ZXIgPSByY2xzKHBhdGNoc2V0KQoJCQljbGFzc2VzW3BhdGNoZGly
XSA9IChwYXRjaHNldCwgcmVzb2x2ZXIpCgkJCXBhdGNoc2V0LkNsZWFuKCkKCQllbHNlOgoJCQlw
YXRjaHNldCwgcmVzb2x2ZXIgPSBjbGFzc2VzW3BhdGNoZGlyXQoKCQliYi5ub3RlKCJBcHBseWlu
ZyBwYXRjaCAnJXMnICglcykiICUgKHBuYW1lLCBvZS5wYXRoLmZvcm1hdF9kaXNwbGF5KGxvY2Fs
LCBkKSkpCgkJdHJ5OgoJCQlwYXRjaHNldC5JbXBvcnQoeyJmaWxlIjpsb2NhbCwgInJlbW90ZSI6
dXJsLCAic3RyaXBwYXRoIjogc3RyaXBsZXZlbH0sIFRydWUpCgkJZXhjZXB0IEV4Y2VwdGlvbjoK
CQkJaW1wb3J0IHN5cwoJCQlyYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKHN0cihzeXMuZXhjX3Zh
bHVlKSkKCQlyZXNvbHZlci5SZXNvbHZlKCkKfQoKCnB5dGhvbiBwa2dhcmNoX21hcHBpbmcgKCkg
ewpkZWYgcGtnYXJjaF9tYXBwaW5nKGQpOgogICAgIyBDb21wYXRpYmlsaXR5IG1hcHBpbmdzIG9m
IFRVTkVfUEtHQVJDSCAob3B0IGluKQogICAgaWYgZC5nZXRWYXIoIlBLR0FSQ0hDT01QQVRfQVJN
VjdBIiwgVHJ1ZSk6CiAgICAgICAgaWYgZC5nZXRWYXIoIlRVTkVfUEtHQVJDSCIsIFRydWUpID09
ICJhcm12N2EtdmZwLW5lb24iOgogICAgICAgICAgICBkLnNldFZhcigiVFVORV9QS0dBUkNIIiwg
ImFybXY3YSIpCn0KCgpweXRob24gcnVuX2J1aWxkc3RhdHMgKCkgewogICAgaW1wb3J0IGJiLmJ1
aWxkCiAgICBpbXBvcnQgYmIuZXZlbnQKICAgIGltcG9ydCBiYi5kYXRhCiAgICBpbXBvcnQgdGlt
ZSwgc3VicHJvY2VzcywgcGxhdGZvcm0KCiAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LkJ1
aWxkU3RhcnRlZCk6CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBhdCBmaXJzdCBw
YXNzIG1ha2UgdGhlIGJ1aWxkc3RhdHMgaGVyaWFyY2h5IGFuZCB0aGVuCiAgICAgICAgIyBzZXQg
dGhlIGJ1aWxkbmFtZQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIHRyeToKICAgICAg
ICAgICAgYmIubWtkaXJoaWVyKGJiLmRhdGEuZ2V0VmFyKCdCVUlMRFNUQVRTX0JBU0UnLCBlLmRh
dGEsIFRydWUpKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcGFzcwogICAgICAgIHNldF9i
bihlKQogICAgICAgIGJuID0gZ2V0X2JuKGUpCiAgICAgICAgc2V0X2RldmljZShlKQogICAgICAg
IGRldmljZSA9IGdldF9kZXZpY2UoZSkKCiAgICAgICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oYmIu
ZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIGUuZGF0YSwgVHJ1ZSksIGJuKQogICAgICAg
IHRyeToKICAgICAgICAgICAgYmIubWtkaXJoaWVyKGJzZGlyKQogICAgICAgIGV4Y2VwdDoKICAg
ICAgICAgICAgcGFzcwogICAgICAgIHNldF9kaXNrZGF0YSgiX19kaXNrZGF0YV9idWlsZCIsIGRl
dmljZSwgZS5kYXRhKQogICAgICAgIHNldF90aW1lZGF0YSgiX190aW1lZGF0YV9idWlsZCIsIGUu
ZGF0YSkKICAgICAgICBidWlsZF90aW1lID0gb3MucGF0aC5qb2luKGJzZGlyLCAiYnVpbGRfc3Rh
dHMiKQogICAgICAgICMgd3JpdGUgc3RhcnQgb2YgYnVpbGQgaW50byBidWlsZF90aW1lCiAgICAg
ICAgZmlsZSA9IG9wZW4oYnVpbGRfdGltZSwiYSIpCiAgICAgICAgaG9zdF9pbmZvID0gcGxhdGZv
cm0udW5hbWUoKQogICAgICAgIGZpbGUud3JpdGUoIkhvc3QgSW5mbzogIikKICAgICAgICBmb3Ig
eCBpbiBob3N0X2luZm86CiAgICAgICAgICAgIGlmIHg6CiAgICAgICAgICAgICAgICBmaWxlLndy
aXRlKHggKyAiICIpCiAgICAgICAgZmlsZS53cml0ZSgiXG4iKQogICAgICAgIGZpbGUud3JpdGUo
IkJ1aWxkIFN0YXJ0ZWQ6ICUwLjJmIFxuIiAlIHRpbWUudGltZSgpKQogICAgICAgIGZpbGUuY2xv
c2UoKQoKICAgIGVsaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5CdWlsZENvbXBsZXRlZCk6CiAg
ICAgICAgYm4gPSBnZXRfYm4oZSkKICAgICAgICBkZXYgPSBnZXRfZGV2aWNlKGUpCiAgICAgICAg
YnNkaXIgPSBvcy5wYXRoLmpvaW4oYmIuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIGUu
ZGF0YSwgVHJ1ZSksIGJuKQogICAgICAgIHRhc2tkaXIgPSBvcy5wYXRoLmpvaW4oYnNkaXIsIGJi
LmRhdGEuZXhwYW5kKCJmc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMCIsIGUuZGF0YSkpCiAgICAgICAg
YnVpbGRfdGltZSA9IG9zLnBhdGguam9pbihic2RpciwgImJ1aWxkX3N0YXRzIikKICAgICAgICBm
aWxlID0gb3BlbihidWlsZF90aW1lLCAiYSIpCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAg
ICAgIyBXcml0ZSBidWlsZCBzdGF0aXN0aWNzIGZvciB0aGUgYnVpbGQKICAgICAgICAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKICAgICAgICB0aW1lZGF0YSA9IGdldF90aW1lZGF0YSgiX190aW1lZGF0YV9idWls
ZCIsIGUuZGF0YSkKICAgICAgICBpZiB0aW1lZGF0YToKICAgICAgICAgICAgdGltZSwgY3B1ID0g
dGltZWRhdGEKICAgICAgICAgICAgIyB3cml0ZSBlbmQgb2YgYnVpbGQgYW5kIGNwdSB1c2VkIGlu
dG8gYnVpbGRfdGltZQogICAgICAgICAgICBmaWxlID0gb3BlbihidWlsZF90aW1lLCAiYSIpCiAg
ICAgICAgICAgIGZpbGUud3JpdGUoIkVsYXBzZWQgdGltZTogJTAuMmYgc2Vjb25kcyBcbiIgJSAo
dGltZSkpCiAgICAgICAgICAgIGlmIGNwdToKICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoIkNQ
VSB1c2FnZTogJTAuMWYlJSBcbiIgJSBjcHUpCiAgICAgICAgZGlza2lvID0gZ2V0X2Rpc2tkYXRh
KCJfX2Rpc2tkYXRhX2J1aWxkIiwgZGV2LCBlLmRhdGEpCiAgICAgICAgaWYgZGlza2lvOgogICAg
ICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChkaXNraW8uaXRlcmtleXMoKSk6CiAgICAgICAgICAg
ICAgICBmaWxlLndyaXRlKGtleSArICI6ICIgKyBkaXNraW9ba2V5XSArICJcbiIpCiAgICAgICAg
ZmlsZS5jbG9zZSgpCgogICAgaWYgaXNpbnN0YW5jZShlLCBiYi5idWlsZC5UYXNrU3RhcnRlZCk6
CiAgICAgICAgYm4gPSBnZXRfYm4oZSkKICAgICAgICBkZXZpY2UgPSBnZXRfZGV2aWNlKGUpCiAg
ICAgICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oYmIuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFT
RScsIGUuZGF0YSwgVHJ1ZSksIGJuKQogICAgICAgIHRhc2tkaXIgPSBvcy5wYXRoLmpvaW4oYnNk
aXIsIGJiLmRhdGEuZXhwYW5kKCJmc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMCIsIGUuZGF0YSkpCiAg
ICAgICAgc2V0X2Rpc2tkYXRhKCJfX2Rpc2tkYXRhX3Rhc2siLCBkZXZpY2UsIGUuZGF0YSkKICAg
ICAgICBzZXRfdGltZWRhdGEoIl9fdGltZWRhdGFfdGFzayIsIGUuZGF0YSkKICAgICAgICB0cnk6
CiAgICAgICAgICAgIGJiLm1rZGlyaGllcih0YXNrZGlyKQogICAgICAgIGV4Y2VwdDoKICAgICAg
ICAgICAgcGFzcwogICAgICAgICMgd3JpdGUgaW50byB0aGUgdGFzayBldmVudCBmaWxlIHRoZSBu
YW1lIGFuZCBzdGFydCB0aW1lCiAgICAgICAgZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKHRhc2tk
aXIsIGUudGFzayksICJhIikKICAgICAgICBmaWxlLndyaXRlKCJFdmVudDogJXMgXG4iICUgYmIu
ZXZlbnQuZ2V0TmFtZShlKSkKICAgICAgICBmaWxlLndyaXRlKCJTdGFydGVkOiAlMC4yZiBcbiIg
JSB0aW1lLnRpbWUoKSkKICAgICAgICBmaWxlLmNsb3NlKCkKCiAgICBlbGlmIGlzaW5zdGFuY2Uo
ZSwgYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCk6CiAgICAgICAgYm4gPSBnZXRfYm4oZSkKICAgICAg
ICBkZXZpY2UgPSBnZXRfZGV2aWNlKGUpCiAgICAgICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oYmIu
ZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIGUuZGF0YSwgVHJ1ZSksIGJuKQogICAgICAg
IHRhc2tkaXIgPSBvcy5wYXRoLmpvaW4oYnNkaXIsIGJiLmRhdGEuZXhwYW5kKCJmc2wtaW1hZ2Ut
c2ltcGxlLTEuMC1yMCIsIGUuZGF0YSkpCiAgICAgICAgd3JpdGVfdGFza19kYXRhKCJwYXNzZWQi
LCBvcy5wYXRoLmpvaW4odGFza2RpciwgZS50YXNrKSwgZGV2aWNlLCBlKQogICAgICAgIGlmIGUu
dGFzayA9PSAiZG9fcm9vdGZzIjoKICAgICAgICAgICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oYmIu
ZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIGUuZGF0YSwgVHJ1ZSksIGJuKQogICAgICAg
ICAgICBicz1vcy5wYXRoLmpvaW4oYnNkaXIsICJidWlsZF9zdGF0cyIpCiAgICAgICAgICAgIGZp
bGUgPSBvcGVuKGJzLCJhIikKICAgICAgICAgICAgcm9vdGZzID0gYmIuZGF0YS5nZXRWYXIoJ0lN
QUdFX1JPT1RGUycsIGUuZGF0YSwgVHJ1ZSkKICAgICAgICAgICAgcm9vdGZzX3NpemUgPSBzdWJw
cm9jZXNzLlBvcGVuKFsiZHUiLCAiLXNoIiwgcm9vdGZzXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSkuc3Rkb3V0LnJlYWQoKQogICAgICAgICAgICBmaWxlLndyaXRlKCJVbmNvbXByZXNzZWQgUm9v
dGZzIHNpemU6ICVzIiAlIHJvb3Rmc19zaXplKQogICAgICAgICAgICBmaWxlLmNsb3NlKCkKCiAg
ICBlbGlmIGlzaW5zdGFuY2UoZSwgYmIuYnVpbGQuVGFza0ZhaWxlZCk6CiAgICAgICAgYm4gPSBn
ZXRfYm4oZSkKICAgICAgICBkZXZpY2UgPSBnZXRfZGV2aWNlKGUpCiAgICAgICAgYnNkaXIgPSBv
cy5wYXRoLmpvaW4oYmIuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIGUuZGF0YSwgVHJ1
ZSksIGJuKQogICAgICAgIHRhc2tkaXIgPSBvcy5wYXRoLmpvaW4oYnNkaXIsIGJiLmRhdGEuZXhw
YW5kKCJmc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMCIsIGUuZGF0YSkpCiAgICAgICAgd3JpdGVfdGFz
a19kYXRhKCJmYWlsZWQiLCBvcy5wYXRoLmpvaW4odGFza2RpciwgZS50YXNrKSwgZGV2aWNlLCBl
KQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgTGV0cyBtYWtlIHRoaW5ncyBlYXNp
ZXIgYW5kIHRlbGwgcGVvcGxlIHdoZXJlIHRoZSBidWlsZCBmYWlsZWQgaW4KICAgICAgICAjIGJ1
aWxkX3N0YXR1cy4gV2UgZG8gdGhpcyBoZXJlIGJlY2F1c2UgQnVpbGRDb21wbGV0ZWQgdHJpZ2dl
cnMgbm8KICAgICAgICAjIG1hdHRlciB3aGF0IHRoZSBzdGF0dXMgb2YgdGhlIGJ1aWxkIGFjdHVh
bGx5IGlzCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgYnVpbGRfc3RhdHVzID0gb3Mu
cGF0aC5qb2luKGJzZGlyLCAiYnVpbGRfc3RhdHMiKQogICAgICAgIGZpbGUgPSBvcGVuKGJ1aWxk
X3N0YXR1cywiYSIpCiAgICAgICAgZmlsZS53cml0ZShiYi5kYXRhLmV4cGFuZCgiRmFpbGVkIGF0
OiBmc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMCBhdCB0YXNrOiAlcyBcbiIgJSBlLnRhc2ssIGUuZGF0
YSkpCiAgICAgICAgZmlsZS5jbG9zZSgpCgp9CgoKcHl0aG9uIHBhY2thZ2VfcWFfY2hlY2tfcmRl
cGVuZHMgKCkgewpkZWYgcGFja2FnZV9xYV9jaGVja19yZGVwZW5kcyhwa2csIHBrZ2Rlc3QsIHNr
aXAsIGQpOgogICAgIyBEb24ndCBkbyB0aGlzIGNoZWNrIGZvciBrZXJuZWwvbW9kdWxlIHJlY2lw
ZXMsIHRoZXJlIGFyZW4ndCB0b28gbWFueSBkZWJ1Zy9kZXZlbG9wbWVudAogICAgIyBwYWNrYWdl
cyBhbmQgeW91IGNhbiBnZXQgZmFsc2UgcG9zaXRpdmVzIGUuZy4gb24ga2VybmVsLW1vZHVsZS1s
aXJjLWRldgogICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygia2VybmVsIiwgZCkgb3IgYmIu
ZGF0YS5pbmhlcml0c19jbGFzcygibW9kdWxlLWJhc2UiLCBkKToKICAgICAgICByZXR1cm4gVHJ1
ZQoKICAgIHNhbmUgPSBUcnVlCiAgICBpZiBub3QgIi1kYmciIGluIHBrZyBhbmQgbm90ICJ0YXNr
LSIgaW4gcGtnIGFuZCBub3QgIi1pbWFnZSIgaW4gcGtnOgogICAgICAgICMgQ29waWVkIGZyb20g
cGFja2FnZV9pcGsuYmJjbGFzcwogICAgICAgICMgYm9pbGVyIHBsYXRlIHRvIHVwZGF0ZSB0aGUg
ZGF0YQogICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgICAgIHJv
b3QgPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBrZykKCiAgICAgICAgYmIuZGF0YS5zZXRWYXIoJ1JP
T1QnLCAnJywgbG9jYWxkYXRhKQogICAgICAgIGJiLmRhdGEuc2V0VmFyKCdST09UXyVzJyAlIHBr
Zywgcm9vdCwgbG9jYWxkYXRhKQogICAgICAgIHBrZ25hbWUgPSBiYi5kYXRhLmdldFZhcignUEtH
XyVzJyAlIHBrZywgbG9jYWxkYXRhLCBUcnVlKQogICAgICAgIGlmIG5vdCBwa2duYW1lOgogICAg
ICAgICAgICBwa2duYW1lID0gcGtnCiAgICAgICAgYmIuZGF0YS5zZXRWYXIoJ1BLRycsIHBrZ25h
bWUsIGxvY2FsZGF0YSkKCiAgICAgICAgYmIuZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIHBrZywg
bG9jYWxkYXRhKQoKICAgICAgICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKCiAgICAg
ICAgIyBOb3cgY2hlY2sgdGhlIFJERVBFTkRTCiAgICAgICAgcmRlcGVuZHMgPSBiYi51dGlscy5l
eHBsb2RlX2RlcHMoYmIuZGF0YS5nZXRWYXIoJ1JERVBFTkRTJywgbG9jYWxkYXRhLCBUcnVlKSBv
ciAiIikKCgogICAgICAgICMgTm93IGRvIHRoZSBzYW5pdHkgY2hlY2shISEKICAgICAgICBmb3Ig
cmRlcGVuZCBpbiByZGVwZW5kczoKICAgICAgICAgICAgaWYgIi1kYmciIGluIHJkZXBlbmQgYW5k
ICJkZWJ1Zy1kZXBzIiBub3QgaW4gc2tpcDoKICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICIl
cyByZGVwZW5kcyBvbiAlcyIgJSAocGtnbmFtZSxyZGVwZW5kKQogICAgICAgICAgICAgICAgc2Fu
ZSA9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJkZWJ1Zy1kZXBzIiwgZXJyb3JfbXNnLCBkKQog
ICAgICAgICAgICBpZiAobm90ICItZGV2IiBpbiBwa2cgYW5kIG5vdCAiLXN0YXRpY2RldiIgaW4g
cGtnKSBhbmQgcmRlcGVuZC5lbmRzd2l0aCgiLWRldiIpIGFuZCAiZGV2LWRlcHMiIG5vdCBpbiBz
a2lwOgogICAgICAgICAgICAgICAgZXJyb3JfbXNnID0gIiVzIHJkZXBlbmRzIG9uICVzIiAlIChw
a2duYW1lLCByZGVwZW5kKQogICAgICAgICAgICAgICAgc2FuZSA9IHBhY2thZ2VfcWFfaGFuZGxl
X2Vycm9yKCJkZXYtZGVwcyIsIGVycm9yX21zZywgZCkKCiAgICByZXR1cm4gc2FuZQp9CgoKcHl0
aG9uIGV4cGxvZGVfZGVwcyAoKSB7CmRlZiBleHBsb2RlX2RlcHMocyk6CglyZXR1cm4gYmIudXRp
bHMuZXhwbG9kZV9kZXBzKHMpCn0KCgpweXRob24gcGFja2FnZV9xYV9jaGVja19ycGF0aCAoKSB7
CmRlZiBwYWNrYWdlX3FhX2NoZWNrX3JwYXRoKGZpbGUsbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6
CiAgICAiIiIKICAgIENoZWNrIGZvciBkYW5nZXJvdXMgUlBBVEhzCiAgICAiIiIKICAgIGlmIG5v
dCBlbGY6CiAgICAgICAgcmV0dXJuCgogICAgc2NhbmVsZiA9IG9zLnBhdGguam9pbihiYi5kYXRh
LmdldFZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJyxkLFRydWUpLCdzY2FuZWxmJykKICAgIGJh
ZF9kaXJzID0gW2JiLmRhdGEuZ2V0VmFyKCdUTVBESVInLCBkLCBUcnVlKSArICIvd29yayIsIGJi
LmRhdGEuZ2V0VmFyKCdTVEFHSU5HX0RJUl9UQVJHRVQnLCBkLCBUcnVlKV0KICAgIGJhZF9kaXJf
dGVzdCA9IGJiLmRhdGEuZ2V0VmFyKCdUTVBESVInLCBkLCBUcnVlKQogICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKHNjYW5lbGYpOgogICAgICAgIGJiLmZhdGFsKCJDYW4gbm90IGNoZWNrIFJQQVRI
LCBzY2FuZWxmIChwYXJ0IG9mIHBheC11dGlscy1uYXRpdmUpIG5vdCBmb3VuZCIpCgogICAgaWYg
bm90IGJhZF9kaXJzWzBdIGluIGJiLmRhdGEuZ2V0VmFyKCdXT1JLRElSJywgZCwgVHJ1ZSk6CiAg
ICAgICAgYmIuZmF0YWwoIlRoaXMgY2xhc3MgYXNzdW1lZCB0aGF0IFdPUktESVIgaXMgL2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNl
L3RtcC93b3JrLi4uIE5vdCBkb2luZyBhbnkgY2hlY2siKQoKICAgIG91dHB1dCA9IG9zLnBvcGVu
KCIlcyAtQiAtRiUlciNGICclcyciICUgKHNjYW5lbGYsZmlsZSkpCiAgICB0eHQgICAgPSBvdXRw
dXQucmVhZGxpbmUoKS5zcGxpdCgpCiAgICBmb3IgbGluZSBpbiB0eHQ6CiAgICAgICAgZm9yIGRp
ciBpbiBiYWRfZGlyczoKICAgICAgICAgICAgaWYgZGlyIGluIGxpbmU6CiAgICAgICAgICAgICAg
ICBtZXNzYWdlcy5hcHBlbmQoInBhY2thZ2UgJXMgY29udGFpbnMgYmFkIFJQQVRIICVzIGluIGZp
bGUgJXMiICUgKG5hbWUsIGxpbmUsIGZpbGUpKQp9CgoKcHl0aG9uIG1hcF9rZXJuZWxfYXJjaCAo
KSB7CmRlZiBtYXBfa2VybmVsX2FyY2goYSwgZCk6CglpbXBvcnQgcmUKCgl2YWxpZF9hcmNocyA9
IGJiLmRhdGEuZ2V0VmFyKCd2YWxpZF9hcmNocycsIGQsIDEpLnNwbGl0KCkKCglpZiAgIHJlLm1h
dGNoKCcoaS44NnxhdGhsb258eDg2LjY0KSQnLCBhKToJcmV0dXJuICd4ODYnCgllbGlmIHJlLm1h
dGNoKCdhcm0yNiQnLCBhKToJCSAgICAgICAgcmV0dXJuICdhcm0yNicKCWVsaWYgcmUubWF0Y2go
J2FybWViJCcsIGEpOgkJICAgICAgICByZXR1cm4gJ2FybScKCWVsaWYgcmUubWF0Y2goJ21pcHNl
bCQnLCBhKToJCSAgICAgICAgcmV0dXJuICdtaXBzJwoJZWxpZiByZS5tYXRjaCgncChwY3xvd2Vy
cGMpKHw2NCknLCBhKToJCXJldHVybiAncG93ZXJwYycKCWVsaWYgcmUubWF0Y2goJ3NoKDN8NCkk
JywgYSk6CQkgICAgICAgIHJldHVybiAnc2gnCgllbGlmIHJlLm1hdGNoKCdiZmluJywgYSk6ICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2JsYWNrZmluJwoJZWxpZiByZS5tYXRjaCgnbWlj
cm9ibGF6ZWVsJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdtaWNyb2JsYXplJwogICAgICAg
IGVsaWYgYSBpbiB2YWxpZF9hcmNoczoJCQkgICAgICAgIHJldHVybiBhCgllbHNlOgoJCWJiLmVy
cm9yKCJjYW5ub3QgbWFwICclcycgdG8gYSBsaW51eCBrZXJuZWwgYXJjaGl0ZWN0dXJlIiAlIGEp
Cn0KCgpweXRob24gcGVyZm9ybV9wYWNrYWdlY29weSAoKSB7CglkZXN0ID0gYmIuZGF0YS5nZXRW
YXIoJ0QnLCBkLCBUcnVlKQoJZHZhciA9IGJiLmRhdGEuZ2V0VmFyKCdQS0dEJywgZCwgVHJ1ZSkK
CgliYi5ta2RpcmhpZXIoZHZhcikKCgkjIFN0YXJ0IGJ5IHBhY2thZ2UgcG9wdWxhdGlvbiBieSB0
YWtpbmcgYSBjb3B5IG9mIHRoZSBpbnN0YWxsZWQKCSMgZmlsZXMgdG8gb3BlcmF0ZSBvbgoJb3Mu
c3lzdGVtKCdybSAtcmYgJXMvKicgJSAoZHZhcikpCgkjIFByZXNlcnZlIHNwYXJzZSBmaWxlcyBh
bmQgaGFyZCBsaW5rcwoJb3Muc3lzdGVtKCd0YXIgLWNmIC0gLUMgJXMgLXBzIC4gfCB0YXIgLXhm
IC0gLUMgJXMnICUgKGRlc3QsIGR2YXIpKQp9CgoKcHl0aG9uIHBhY2thZ2VfZGVwY2hhaW5zICgp
IHsKCSIiIgoJRm9yIGEgZ2l2ZW4gc2V0IG9mIHByZWZpeCBhbmQgcG9zdGZpeCBtb2RpZmllcnMs
IG1ha2UgdGhvc2UgcGFja2FnZXMKCVJSRUNPTU1FTkRTIG9uIHRoZSBjb3JyZXNwb25kaW5nIHBh
Y2thZ2VzIGZvciBpdHMgUkRFUEVORFMuCgoJRXhhbXBsZTogIElmIHBhY2thZ2UgQSBkZXBlbmRz
IHVwb24gcGFja2FnZSBCLCBhbmQgQSdzIC5iYiBlbWl0cyBhbgoJQS1kZXYgcGFja2FnZSwgdGhp
cyB3b3VsZCBtYWtlIEEtZGV2IFJlY29tbWVuZHM6IEItZGV2LgoKCUlmIG9ubHkgb25lIG9mIGEg
Z2l2ZW4gc3VmZml4IGlzIHNwZWNpZmllZCwgaXQgd2lsbCB0YWtlIHRoZSBSUkVDT01NRU5EUwoJ
YmFzZWQgb24gdGhlIFJERVBFTkRTIG9mICphbGwqIG90aGVyIHBhY2thZ2VzLiBJZiBtb3JlIHRo
YW4gb25lIG9mIGEgZ2l2ZW4KCXN1ZmZpeCBpcyBzcGVjaWZpZWQsIGl0cyB3aWxsIG9ubHkgdXNl
IHRoZSBSREVQRU5EUyBvZiB0aGUgc2luZ2xlIHBhcmVudAoJcGFja2FnZS4KCSIiIgoKCXBhY2th
Z2VzICA9IGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFUycsIGQsIFRydWUpCglwb3N0Zml4ZXMgPSAo
YmIuZGF0YS5nZXRWYXIoJ0RFUENIQUlOX1BPU1QnLCBkLCBUcnVlKSBvciAnJykuc3BsaXQoKQoJ
cHJlZml4ZXMgID0gKGJiLmRhdGEuZ2V0VmFyKCdERVBDSEFJTl9QUkUnLCBkLCBUcnVlKSBvciAn
Jykuc3BsaXQoKQoKCWRlZiBwa2dfYWRkZGVwcnJlY3MocGtnLCBiYXNlLCBzdWZmaXgsIGdldG5h
bWUsIGRlcGVuZHMsIGQpOgoKCQkjYmIubm90ZSgnZGVwZW5kcyBmb3IgJXMgaXMgJXMnICUgKGJh
c2UsIGRlcGVuZHMpKQoJCXJyZWNsaXN0ID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMo
YmIuZGF0YS5nZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwa2csIGQsIFRydWUpIG9yIGJiLmRhdGEu
Z2V0VmFyKCdSUkVDT01NRU5EUycsIGQsIFRydWUpIG9yICIiKQoKCQlmb3IgZGVwZW5kIGluIGRl
cGVuZHM6CgkJCWlmIGRlcGVuZC5maW5kKCctbmF0aXZlJykgIT0gLTEgb3IgZGVwZW5kLmZpbmQo
Jy1jcm9zcycpICE9IC0xIG9yIGRlcGVuZC5zdGFydHN3aXRoKCd2aXJ0dWFsLycpOgoJCQkJI2Ji
Lm5vdGUoIlNraXBwaW5nICVzIiAlIGRlcGVuZCkKCQkJCWNvbnRpbnVlCgkJCWlmIGRlcGVuZC5l
bmRzd2l0aCgnLWRldicpOgoJCQkJZGVwZW5kID0gZGVwZW5kLnJlcGxhY2UoJy1kZXYnLCAnJykK
CQkJaWYgZGVwZW5kLmVuZHN3aXRoKCctZGJnJyk6CgkJCQlkZXBlbmQgPSBkZXBlbmQucmVwbGFj
ZSgnLWRiZycsICcnKQoJCQlwa2duYW1lID0gZ2V0bmFtZShkZXBlbmQsIHN1ZmZpeCkKCQkJI2Ji
Lm5vdGUoIkFkZGluZyAlcyBmb3IgJXMiICUgKHBrZ25hbWUsIGRlcGVuZCkpCgkJCWlmIHBrZ25h
bWUgbm90IGluIHJyZWNsaXN0OgoJCQkJcnJlY2xpc3RbcGtnbmFtZV0gPSAiIgoKCQkjYmIubm90
ZSgnc2V0dGluZzogUlJFQ09NTUVORFNfJXM9JXMnICUgKHBrZywgJyAnLmpvaW4ocnJlY2xpc3Qp
KSkKCQliYi5kYXRhLnNldFZhcignUlJFQ09NTUVORFNfJXMnICUgcGtnLCBiYi51dGlscy5qb2lu
X2RlcHMocnJlY2xpc3QsIGNvbW1hc2VwPUZhbHNlKSwgZCkKCglkZWYgcGtnX2FkZHJyZWNzKHBr
ZywgYmFzZSwgc3VmZml4LCBnZXRuYW1lLCByZGVwZW5kcywgZCk6CgoJCSNiYi5ub3RlKCdyZGVw
ZW5kcyBmb3IgJXMgaXMgJXMnICUgKGJhc2UsIHJkZXBlbmRzKSkKCQlycmVjbGlzdCA9IGJiLnV0
aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zKGJiLmRhdGEuZ2V0VmFyKCdSUkVDT01NRU5EU18nICsg
cGtnLCBkLCBUcnVlKSBvciBiYi5kYXRhLmdldFZhcignUlJFQ09NTUVORFMnLCBkLCBUcnVlKSBv
ciAiIikKCgkJZm9yIGRlcGVuZCBpbiByZGVwZW5kczoKCQkJaWYgZGVwZW5kLmZpbmQoJ3ZpcnR1
YWwtbG9jYWxlLScpICE9IC0xOgoJCQkJI2JiLm5vdGUoIlNraXBwaW5nICVzIiAlIGRlcGVuZCkK
CQkJCWNvbnRpbnVlCgkJCWlmIGRlcGVuZC5lbmRzd2l0aCgnLWRldicpOgoJCQkJZGVwZW5kID0g
ZGVwZW5kLnJlcGxhY2UoJy1kZXYnLCAnJykKCQkJaWYgZGVwZW5kLmVuZHN3aXRoKCctZGJnJyk6
CgkJCQlkZXBlbmQgPSBkZXBlbmQucmVwbGFjZSgnLWRiZycsICcnKQoJCQlwa2duYW1lID0gZ2V0
bmFtZShkZXBlbmQsIHN1ZmZpeCkKCQkJI2JiLm5vdGUoIkFkZGluZyAlcyBmb3IgJXMiICUgKHBr
Z25hbWUsIGRlcGVuZCkpCgkJCWlmIHBrZ25hbWUgbm90IGluIHJyZWNsaXN0OgoJCQkJcnJlY2xp
c3RbcGtnbmFtZV0gPSAiIgoKCQkjYmIubm90ZSgnc2V0dGluZzogUlJFQ09NTUVORFNfJXM9JXMn
ICUgKHBrZywgJyAnLmpvaW4ocnJlY2xpc3QpKSkKCQliYi5kYXRhLnNldFZhcignUlJFQ09NTUVO
RFNfJXMnICUgcGtnLCBiYi51dGlscy5qb2luX2RlcHMocnJlY2xpc3QsIGNvbW1hc2VwPUZhbHNl
KSwgZCkKCglkZWYgYWRkX2RlcChsaXN0LCBkZXApOgoJCWRlcCA9IGRlcC5zcGxpdCgnICgnKVsw
XS5zdHJpcCgpCgkJaWYgZGVwIG5vdCBpbiBsaXN0OgoJCQlsaXN0LmFwcGVuZChkZXApCgoJZGVw
ZW5kcyA9IFtdCglmb3IgZGVwIGluIGJiLnV0aWxzLmV4cGxvZGVfZGVwcyhiYi5kYXRhLmdldFZh
cignREVQRU5EUycsIGQsIFRydWUpIG9yICIiKToKCQlhZGRfZGVwKGRlcGVuZHMsIGRlcCkKCgly
ZGVwZW5kcyA9IFtdCglmb3IgZGVwIGluIGJiLnV0aWxzLmV4cGxvZGVfZGVwcyhiYi5kYXRhLmdl
dFZhcignUkRFUEVORFMnLCBkLCBUcnVlKSBvciAiIik6CgkJYWRkX2RlcChyZGVwZW5kcywgZGVw
KQoKCWZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKCQlmb3IgZGVwIGluIGJiLnV0aWxzLmV4
cGxvZGVfZGVwcyhiYi5kYXRhLmdldFZhcignUkRFUEVORFNfJyArIHBrZywgZCwgVHJ1ZSkgb3Ig
IiIpOgoJCQlhZGRfZGVwKHJkZXBlbmRzLCBkZXApCgoJI2JiLm5vdGUoJ3JkZXBlbmRzIGlzICVz
JyAlIHJkZXBlbmRzKQoKCWRlZiBwb3N0X2dldG5hbWUobmFtZSwgc3VmZml4KToKCQlyZXR1cm4g
JyVzJXMnICUgKG5hbWUsIHN1ZmZpeCkKCWRlZiBwcmVfZ2V0bmFtZShuYW1lLCBzdWZmaXgpOgoJ
CXJldHVybiAnJXMlcycgJSAoc3VmZml4LCBuYW1lKQoKCXBrZ3MgPSB7fQoJZm9yIHBrZyBpbiBw
YWNrYWdlcy5zcGxpdCgpOgoJCWZvciBwb3N0Zml4IGluIHBvc3RmaXhlczoKCQkJaWYgcGtnLmVu
ZHN3aXRoKHBvc3RmaXgpOgoJCQkJaWYgbm90IHBvc3RmaXggaW4gcGtnczoKCQkJCQlwa2dzW3Bv
c3RmaXhdID0ge30KCQkJCXBrZ3NbcG9zdGZpeF1bcGtnXSA9IChwa2dbOi1sZW4ocG9zdGZpeCld
LCBwb3N0X2dldG5hbWUpCgoJCWZvciBwcmVmaXggaW4gcHJlZml4ZXM6CgkJCWlmIHBrZy5zdGFy
dHN3aXRoKHByZWZpeCk6CgkJCQlpZiBub3QgcHJlZml4IGluIHBrZ3M6CgkJCQkJcGtnc1twcmVm
aXhdID0ge30KCQkJCXBrZ3NbcHJlZml4XVtwa2ddID0gKHBrZ1s6LWxlbihwcmVmaXgpXSwgcHJl
X2dldG5hbWUpCgoJZm9yIHN1ZmZpeCBpbiBwa2dzOgoJCWZvciBwa2cgaW4gcGtnc1tzdWZmaXhd
OgoJCQlpZiBiYi5kYXRhLmdldFZhckZsYWcoJ1JSRUNPTU1FTkRTXycgKyBwa2csICdub2RlcHJy
ZWNzJywgZCk6CgkJCQljb250aW51ZQoJCQkoYmFzZSwgZnVuYykgPSBwa2dzW3N1ZmZpeF1bcGtn
XQoJCQlpZiBzdWZmaXggPT0gIi1kZXYiOgoJCQkJcGtnX2FkZGRlcHJyZWNzKHBrZywgYmFzZSwg
c3VmZml4LCBmdW5jLCBkZXBlbmRzLCBkKQoJCQlpZiBsZW4ocGtnc1tzdWZmaXhdKSA9PSAxOgoJ
CQkJcGtnX2FkZHJyZWNzKHBrZywgYmFzZSwgc3VmZml4LCBmdW5jLCByZGVwZW5kcywgZCkKCQkJ
ZWxzZToKCQkJCXJkZXBzID0gW10KCQkJCWZvciBkZXAgaW4gYmIudXRpbHMuZXhwbG9kZV9kZXBz
KGJiLmRhdGEuZ2V0VmFyKCdSREVQRU5EU18nICsgYmFzZSwgZCwgVHJ1ZSkgb3IgYmIuZGF0YS5n
ZXRWYXIoJ1JERVBFTkRTJywgZCwgVHJ1ZSkgb3IgIiIpOgoJCQkJCWFkZF9kZXAocmRlcHMsIGRl
cCkKCQkJCXBrZ19hZGRycmVjcyhwa2csIGJhc2UsIHN1ZmZpeCwgZnVuYywgcmRlcHMsIGQpCn0K
CgpweXRob24gcGFja2FnZV9tYXBwaW5nX3JlbmFtZV9ob29rICgpIHsKCSIiIgoJUmV3cml0ZSB2
YXJpYWJsZXMgdG8gYWNjb3VudCBmb3IgcGFja2FnZSByZW5hbWluZyBpbiB0aGluZ3MKCWxpa2Ug
ZGViaWFuLmJiY2xhc3Mgb3IgbWFudWFsIFBLRyB2YXJpYWJsZSBuYW1lIGNoYW5nZXMKCSIiIgoJ
cnVudGltZV9tYXBwaW5nX3JlbmFtZSgiUkRFUEVORFMiLCBkKQoJcnVudGltZV9tYXBwaW5nX3Jl
bmFtZSgiUlJFQ09NTUVORFMiLCBkKQoJcnVudGltZV9tYXBwaW5nX3JlbmFtZSgiUlNVR0dFU1RT
IiwgZCkKCXJ1bnRpbWVfbWFwcGluZ19yZW5hbWUoIlJQUk9WSURFUyIsIGQpCglydW50aW1lX21h
cHBpbmdfcmVuYW1lKCJSUkVQTEFDRVMiLCBkKQoJcnVudGltZV9tYXBwaW5nX3JlbmFtZSgiUkNP
TkZMSUNUUyIsIGQpCn0KCgpweXRob24gc3N0YXRlX3Rhc2tfcG9zdGZ1bmMgKCkgewogICAgc2hh
cmVkX3N0YXRlID0gc3N0YXRlX3N0YXRlX2Zyb212YXJzKGQpCiAgICBzc3RhdGVfaW5zdGFsbChz
aGFyZWRfc3RhdGUsIGQpCiAgICBmb3IgaW50ZXJjZXB0IGluIHNoYXJlZF9zdGF0ZVsnaW50ZXJj
ZXB0ZnVuY3MnXToKICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoaW50ZXJjZXB0LCBkKQogICAg
c3N0YXRlX3BhY2thZ2Uoc2hhcmVkX3N0YXRlLCBkKQp9CgoKcHl0aG9uIHN5c3Jvb3RfY2hlY2to
YXNoZXMgKCkgewpkZWYgc3lzcm9vdF9jaGVja2hhc2hlcyhjb3ZlcmVkLCB0YXNrbmFtZXMsIGZu
aWRzLCBmbnMsIGQpOgogICAgcHJvYmxlbXMgPSBzZXQoKQogICAgY29uZmlndXJlZm5pZHMgPSBz
ZXQoKQogICAgZm9yIHRhc2sgaW4geHJhbmdlKGxlbih0YXNrbmFtZXMpKToKICAgICAgICBpZiB0
YXNrbmFtZXNbdGFza10gPT0gImRvX2NvbmZpZ3VyZSIgYW5kIHRhc2sgbm90IGluIGNvdmVyZWQ6
CiAgICAgICAgICAgIGNvbmZpZ3VyZWZuaWRzLmFkZChmbmlkc1t0YXNrXSkKICAgIGZvciB0YXNr
IGluIGNvdmVyZWQ6CiAgICAgICAgaWYgdGFza25hbWVzW3Rhc2tdID09ICJkb19wb3B1bGF0ZV9z
eXNyb290IiBhbmQgZm5pZHNbdGFza10gaW4gY29uZmlndXJlZm5pZHM6CiAgICAgICAgICAgIHBy
b2JsZW1zLmFkZCh0YXNrKQogICAgICAgICAgICBiYi5lcnJvcigic3lzcm9vdCB0YXNrIGZvdW5k
ICVzIiAlIGZuc1tmbmlkc1t0YXNrXV0pCiAgICByZXR1cm4gcHJvYmxlbXMKfQoKCnB5dGhvbiBw
b3B1bGF0ZV9wYWNrYWdlcyAoKSB7CglpbXBvcnQgZ2xvYiwgc3RhdCwgZXJybm8sIHJlCgoJd29y
a2RpciA9IGJiLmRhdGEuZ2V0VmFyKCdXT1JLRElSJywgZCwgVHJ1ZSkKCW91dGRpciA9IGJiLmRh
dGEuZ2V0VmFyKCdERVBMT1lfRElSJywgZCwgVHJ1ZSkKCWR2YXIgPSBiYi5kYXRhLmdldFZhcign
UEtHRCcsIGQsIFRydWUpCglwYWNrYWdlcyA9IGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFUycsIGQs
IFRydWUpCglwbiA9IGJiLmRhdGEuZ2V0VmFyKCdQTicsIGQsIFRydWUpCgoJYmIubWtkaXJoaWVy
KG91dGRpcikKCW9zLmNoZGlyKGR2YXIpCgoJIyBTYW5pdHkgY2hlY2sgUEFDS0FHRVMgZm9yIGR1
cGxpY2F0ZXMgLSBzaG91bGQgYmUgbW92ZWQgdG8KCSMgc2FuaXR5LmJiY2xhc3Mgb25jZSB3ZSBo
YXZlIHRoZSBpbmZyYXN0dWN0dXJlCglwYWNrYWdlX2xpc3QgPSBbXQoJZm9yIHBrZyBpbiBwYWNr
YWdlcy5zcGxpdCgpOgoJCWlmIHBrZyBpbiBwYWNrYWdlX2xpc3Q6CgkJCWJiLmVycm9yKCItLS0t
LS0tLS0tLS0tLS0tLS0tIikKCQkJYmIuZXJyb3IoIiVzIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBt
dWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIgJSBwa2cpCgkJ
CWJiLmVycm9yKCJQbGVhc2UgZml4IHRoZSBtZXRhZGF0YS9yZXBvcnQgdGhpcyBhcyBidWcgdG8g
T0UgYnVndHJhY2tlci4iKQoJCQliYi5lcnJvcigiLS0tLS0tLS0tLS0tLS0tLS0tLSIpCgkJZWxz
ZToKCQkJcGFja2FnZV9saXN0LmFwcGVuZChwa2cpCgoJcGtnZGVzdCA9IGJiLmRhdGEuZ2V0VmFy
KCdQS0dERVNUJywgZCwgVHJ1ZSkKCW9zLnN5c3RlbSgncm0gLXJmICVzJyAlIHBrZ2Rlc3QpCgoJ
c2VlbiA9IFtdCgoJZm9yIHBrZyBpbiBwYWNrYWdlX2xpc3Q6CgkJbG9jYWxkYXRhID0gYmIuZGF0
YS5jcmVhdGVDb3B5KGQpCgkJcm9vdCA9IG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpCgkJYmIu
bWtkaXJoaWVyKHJvb3QpCgoJCWJiLmRhdGEuc2V0VmFyKCdQS0cnLCBwa2csIGxvY2FsZGF0YSkK
CQlvdmVycmlkZXMgPSBiYi5kYXRhLmdldFZhcignT1ZFUlJJREVTJywgbG9jYWxkYXRhLCBUcnVl
KQoJCWlmIG5vdCBvdmVycmlkZXM6CgkJCXJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoJ09WRVJS
SURFUyBub3QgZGVmaW5lZCcpCgkJYmIuZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIG92ZXJyaWRl
cyArICc6JyArIHBrZywgbG9jYWxkYXRhKQoJCWJiLmRhdGEudXBkYXRlX2RhdGEobG9jYWxkYXRh
KQoKCQlmaWxlc3ZhciA9IGJiLmRhdGEuZ2V0VmFyKCdGSUxFUycsIGxvY2FsZGF0YSwgVHJ1ZSkg
b3IgIiIKCQlmaWxlcyA9IGZpbGVzdmFyLnNwbGl0KCkKCQlmaWxlX2xpbmtzID0ge30KCQlmb3Ig
ZmlsZSBpbiBmaWxlczoKCQkJaWYgb3MucGF0aC5pc2FicyhmaWxlKToKCQkJCWZpbGUgPSAnLicg
KyBmaWxlCgkJCWlmIG5vdCBvcy5wYXRoLmlzbGluayhmaWxlKToKCQkJCWlmIG9zLnBhdGguaXNk
aXIoZmlsZSk6CgkJCQkJbmV3ZmlsZXMgPSAgWyBvcy5wYXRoLmpvaW4oZmlsZSx4KSBmb3IgeCBp
biBvcy5saXN0ZGlyKGZpbGUpIF0KCQkJCQlpZiBuZXdmaWxlczoKCQkJCQkJZmlsZXMgKz0gbmV3
ZmlsZXMKCQkJCQkJY29udGludWUKCQkJZ2xvYmJlZCA9IGdsb2IuZ2xvYihmaWxlKQoJCQlpZiBn
bG9iYmVkOgoJCQkJaWYgWyBmaWxlIF0gIT0gZ2xvYmJlZDoKCQkJCQlmaWxlcyArPSBnbG9iYmVk
CgkJCQkJY29udGludWUKCQkJaWYgKG5vdCBvcy5wYXRoLmlzbGluayhmaWxlKSkgYW5kIChub3Qg
b3MucGF0aC5leGlzdHMoZmlsZSkpOgoJCQkJY29udGludWUKCQkJaWYgZmlsZSBpbiBzZWVuOgoJ
CQkJY29udGludWUKCQkJc2Vlbi5hcHBlbmQoZmlsZSkKCQkJaWYgb3MucGF0aC5pc2RpcihmaWxl
KSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKGZpbGUpOgoJCQkJYmIubWtkaXJoaWVyKG9zLnBhdGgu
am9pbihyb290LGZpbGUpKQoJCQkJb3MuY2htb2Qob3MucGF0aC5qb2luKHJvb3QsZmlsZSksIG9z
LnN0YXQoZmlsZSkuc3RfbW9kZSkKCQkJCWNvbnRpbnVlCgoJCQlmcGF0aCA9IG9zLnBhdGguam9p
bihyb290LGZpbGUpCgkJCWRwYXRoID0gb3MucGF0aC5kaXJuYW1lKGZwYXRoKQoJCQliYi5ta2Rp
cmhpZXIoZHBhdGgpCgkJCWlmIG5vdCBvcy5wYXRoLmlzbGluayhmaWxlKToKCQkJCW9zLmxpbmso
ZmlsZSwgZnBhdGgpCgkJCQljb250aW51ZQoJCQlyZXQgPSBiYi5jb3B5ZmlsZShmaWxlLCBmcGF0
aCkKCQkJaWYgcmV0IGlzIEZhbHNlIG9yIHJldCA9PSAwOgoJCQkJcmFpc2UgYmIuYnVpbGQuRnVu
Y0ZhaWxlZCgiRmlsZSBwb3B1bGF0aW9uIGZhaWxlZCIpCgoJCWRlbCBsb2NhbGRhdGEKCW9zLmNo
ZGlyKHdvcmtkaXIpCgoJdW5zaGlwcGVkID0gW10KCWZvciByb290LCBkaXJzLCBmaWxlcyBpbiBv
cy53YWxrKGR2YXIpOgoJCWRpciA9IHJvb3RbbGVuKGR2YXIpOl0KCQlpZiBub3QgZGlyOgoJCQlk
aXIgPSBvcy5zZXAKCQlmb3IgZiBpbiBmaWxlczoKCQkJcGF0aCA9IG9zLnBhdGguam9pbihkaXIs
IGYpCgkJCWlmICgnLicgKyBwYXRoKSBub3QgaW4gc2VlbjoKCQkJCXVuc2hpcHBlZC5hcHBlbmQo
cGF0aCkKCglpZiB1bnNoaXBwZWQgIT0gW106CgkJYmIud2FybigiRm9yIHJlY2lwZSAlcywgdGhl
IGZvbGxvd2luZyBmaWxlcyB3ZXJlIGluc3RhbGxlZCBidXQgbm90IHNoaXBwZWQgaW4gYW55IHBh
Y2thZ2U6IiAlIHBuKQoJCWZvciBmIGluIHVuc2hpcHBlZDoKCQkJYmIud2FybigiICAiICsgZikK
CgliYi5idWlsZC5leGVjX2Z1bmMoInBhY2thZ2VfbmFtZV9ob29rIiwgZCkKCglmb3IgcGtnIGlu
IHBhY2thZ2VfbGlzdDoKCQlwa2duYW1lID0gYmIuZGF0YS5nZXRWYXIoJ1BLR18lcycgJSBwa2cs
IGQsIFRydWUpCgkJaWYgcGtnbmFtZSBpcyBOb25lOgoJCQliYi5kYXRhLnNldFZhcignUEtHXyVz
JyAlIHBrZywgcGtnLCBkKQoKCWRhbmdsaW5nX2xpbmtzID0ge30KCXBrZ19maWxlcyA9IHt9Cglm
b3IgcGtnIGluIHBhY2thZ2VfbGlzdDoKCQlkYW5nbGluZ19saW5rc1twa2ddID0gW10KCQlwa2df
ZmlsZXNbcGtnXSA9IFtdCgkJaW5zdF9yb290ID0gb3MucGF0aC5qb2luKHBrZ2Rlc3QsIHBrZykK
CQlmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhpbnN0X3Jvb3QpOgoJCQlmb3IgZiBp
biBmaWxlczoKCQkJCXBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKCQkJCXJwYXRoID0gcGF0
aFtsZW4oaW5zdF9yb290KTpdCgkJCQlwa2dfZmlsZXNbcGtnXS5hcHBlbmQocnBhdGgpCgkJCQl0
cnk6CgkJCQkJcyA9IG9zLnN0YXQocGF0aCkKCQkJCWV4Y2VwdCBPU0Vycm9yLCAoZXJyLCBzdHJl
cnJvcik6CgkJCQkJaWYgZXJyICE9IGVycm5vLkVOT0VOVDoKCQkJCQkJcmFpc2UKCQkJCQl0YXJn
ZXQgPSBvcy5yZWFkbGluayhwYXRoKQoJCQkJCWlmIHRhcmdldFswXSAhPSAnLyc6CgkJCQkJCXRh
cmdldCA9IG9zLnBhdGguam9pbihyb290W2xlbihpbnN0X3Jvb3QpOl0sIHRhcmdldCkKCQkJCQlk
YW5nbGluZ19saW5rc1twa2ddLmFwcGVuZChvcy5wYXRoLm5vcm1wYXRoKHRhcmdldCkpCgoJZm9y
IHBrZyBpbiBwYWNrYWdlX2xpc3Q6CgkJcmRlcGVuZHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92
ZXJzaW9ucyhiYi5kYXRhLmdldFZhcignUkRFUEVORFNfJyArIHBrZywgZCwgVHJ1ZSkgb3IgYmIu
ZGF0YS5nZXRWYXIoJ1JERVBFTkRTJywgZCwgVHJ1ZSkgb3IgIiIpCgoJCWZvciBsIGluIGRhbmds
aW5nX2xpbmtzW3BrZ106CgkJCWZvdW5kID0gRmFsc2UKCQkJYmIuZGVidWcoMSwgIiVzIGNvbnRh
aW5zIGRhbmdsaW5nIGxpbmsgJXMiICUgKHBrZywgbCkpCgkJCWZvciBwIGluIHBhY2thZ2VfbGlz
dDoKCQkJCWZvciBmIGluIHBrZ19maWxlc1twXToKCQkJCQlpZiBmID09IGw6CgkJCQkJCWZvdW5k
ID0gVHJ1ZQoJCQkJCQliYi5kZWJ1ZygxLCAidGFyZ2V0IGZvdW5kIGluICVzIiAlIHApCgkJCQkJ
CWlmIHAgPT0gcGtnOgoJCQkJCQkJYnJlYWsKCQkJCQkJaWYgcCBub3QgaW4gcmRlcGVuZHM6CgkJ
CQkJCQlyZGVwZW5kc1twXSA9ICIiCgkJCQkJCWJyZWFrCgkJCWlmIGZvdW5kID09IEZhbHNlOgoJ
CQkJYmIubm90ZSgiJXMgY29udGFpbnMgZGFuZ2xpbmcgc3ltbGluayB0byAlcyIgJSAocGtnLCBs
KSkKCQliYi5kYXRhLnNldFZhcignUkRFUEVORFNfJyArIHBrZywgYmIudXRpbHMuam9pbl9kZXBz
KHJkZXBlbmRzLCBjb21tYXNlcD1GYWxzZSksIGQpCn0KCgpweXRob24gb2VfcnVuICgpIHsKZGVm
IG9lX3J1bihkLCBjbWQsICoqa3dhcmdzKToKICAgIGltcG9ydCBvZS5wcm9jZXNzCiAgICBrd2Fy
Z3NbImVudiJdID0gb2VfcG9wZW5fZW52KGQpCiAgICByZXR1cm4gb2UucHJvY2Vzcy5ydW4oY21k
LCAqKmt3YXJncykKfQoKCnB5dGhvbiBnZXRfZGV2dGFibGVfbGlzdCAoKSB7CmRlZiBnZXRfZGV2
dGFibGVfbGlzdChkKToKICAgIGRldnRhYmxlID0gYmIuZGF0YS5nZXRWYXIoJ0lNQUdFX0RFVklD
RV9UQUJMRScsIGQsIDEpCiAgICBpZiBkZXZ0YWJsZSAhPSBOb25lOgogICAgICAgIHJldHVybiBk
ZXZ0YWJsZQogICAgc3RyID0gIiIKICAgIGRldnRhYmxlcyA9IGJiLmRhdGEuZ2V0VmFyKCdJTUFH
RV9ERVZJQ0VfVEFCTEVTJywgZCwgMSkKICAgIGlmIGRldnRhYmxlcyA9PSBOb25lOgogICAgICAg
IGRldnRhYmxlcyA9ICdmaWxlcy9kZXZpY2VfdGFibGUtbWluaW1hbC50eHQnCiAgICBmb3IgZGV2
dGFibGUgaW4gZGV2dGFibGVzLnNwbGl0KCk6CiAgICAgICAgc3RyICs9ICIgJXMiICUgYmIud2hp
Y2goYmIuZGF0YS5nZXRWYXIoJ0JCUEFUSCcsIGQsIDEpLCBkZXZ0YWJsZSkKICAgIHJldHVybiBz
dHIKfQoKCnB5dGhvbiBnZXRfZGlza2RhdGEgKCkgewpkZWYgZ2V0X2Rpc2tkYXRhKHZhciwgZGV2
LCBkYXRhKToKICAgIG9sZGRpc2tkYXRhID0gZGF0YS5nZXRWYXIodmFyLCBGYWxzZSkKICAgIGRp
c2tkYXRhID0ge30KICAgIGlmIG9sZGRpc2tkYXRhIGlzIE5vbmU6CiAgICAgICByZXR1cm4KICAg
IG5ld2Rpc2tkYXRhID0gZ2V0X2Rpc2tzdGF0cyhkZXYpCiAgICBmb3Iga2V5IGluIG9sZGRpc2tk
YXRhLml0ZXJrZXlzKCk6CiAgICAgICAgZGlza2RhdGFbIlN0YXJ0IitrZXldID0gc3RyKGludChv
bGRkaXNrZGF0YVtrZXldKSkKICAgICAgICBkaXNrZGF0YVsiRW5kIitrZXldID0gc3RyKGludChu
ZXdkaXNrZGF0YVtrZXldKSkKICAgIHJldHVybiBkaXNrZGF0YQp9CgoKcHl0aG9uIGdlbmVyYXRl
X2dpdF9jb25maWcgKCkgewpkZWYgZ2VuZXJhdGVfZ2l0X2NvbmZpZyhlKToKICAgICAgICBmcm9t
IGJiIGltcG9ydCBkYXRhCgogICAgICAgIGlmIGRhdGEuZ2V0VmFyKCdHSVRfQ09SRV9DT05GSUcn
LCBlLmRhdGEsIFRydWUpOgogICAgICAgICAgICAgICAgZ2l0Y29uZmlnX3BhdGggPSBiYi5kYXRh
LmdldFZhcignR0lUX0NPTkZJRycsIGUuZGF0YSwgVHJ1ZSkKICAgICAgICAgICAgICAgIHByb3h5
X2NvbW1hbmQgPSAiICAgIGdpdHByb3h5ID0gJXNcbiIgJSBkYXRhLmdldFZhcignR0lUX1BST1hZ
X0NPTU1BTkQnLCBlLmRhdGEsIFRydWUpCgogICAgICAgICAgICAgICAgYmIubWtkaXJoaWVyKGJi
LmRhdGEuZXhwYW5kKCIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1
aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvZXRjLyIs
IGUuZGF0YSkpCiAgICAgICAgICAgICAgICBpZiAob3MucGF0aC5leGlzdHMoZ2l0Y29uZmlnX3Bh
dGgpKToKICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGdpdGNvbmZpZ19wYXRoKQoK
ICAgICAgICAgICAgICAgIGYgPSBvcGVuKGdpdGNvbmZpZ19wYXRoLCAndycpCiAgICAgICAgICAg
ICAgICBmLndyaXRlKCJbY29yZV1cbiIpCiAgICAgICAgICAgICAgICBpZ25vcmVfaG9zdHMgPSBk
YXRhLmdldFZhcignR0lUX1BST1hZX0lHTk9SRScsIGUuZGF0YSwgVHJ1ZSkuc3BsaXQoKQogICAg
ICAgICAgICAgICAgZm9yIGlnbm9yZV9ob3N0IGluIGlnbm9yZV9ob3N0czoKICAgICAgICAgICAg
ICAgICAgICAgICAgZi53cml0ZSgiICAgIGdpdHByb3h5ID0gbm9uZSBmb3IgJXNcbiIgJSBpZ25v
cmVfaG9zdCkKICAgICAgICAgICAgICAgIGYud3JpdGUocHJveHlfY29tbWFuZCkKICAgICAgICAg
ICAgICAgIGYuY2xvc2UKfQoKCnB5dGhvbiBleHRlbmRfdmFyaWFudHMgKCkgewpkZWYgZXh0ZW5k
X3ZhcmlhbnRzKGQsIHZhciwgZXh0ZW5kLCBkZWxpbT0nOicpOgoJIiIiUmV0dXJuIGEgc3RyaW5n
IG9mIGFsbCBiYiBjbGFzcyBleHRlbmQgdmFyaWFudHMgZm9yIHRoZSBnaXZlbiBleHRlbmQiIiIK
CXZhcmlhbnRzID0gW10KCXdob2xlID0gZC5nZXRWYXIodmFyLCBUcnVlKSBvciAiIgoJZm9yIGV4
dCBpbiB3aG9sZS5zcGxpdCgpOgoJCWVleHQgPSBleHQuc3BsaXQoZGVsaW0pCgkJaWYgbGVuKGVl
eHQpID4gMSBhbmQgZWV4dFswXSA9PSBleHRlbmQ6CgkJCXZhcmlhbnRzLmFwcGVuZChlZXh0WzFd
KQoJcmV0dXJuICIgIi5qb2luKHZhcmlhbnRzKQp9CgoKcHl0aG9uIGNoZWNrX2NvbmZfZXhpc3Rz
ICgpIHsKZGVmIGNoZWNrX2NvbmZfZXhpc3RzKGZuLCBkYXRhKToKICAgIGJicGF0aCA9IFtdCiAg
ICBmbiA9IGJiLmRhdGEuZXhwYW5kKGZuLCBkYXRhKQogICAgdmJicGF0aCA9IGJiLmRhdGEuZ2V0
VmFyKCJCQlBBVEgiLCBkYXRhKQogICAgaWYgdmJicGF0aDoKICAgICAgICBiYnBhdGggKz0gdmJi
cGF0aC5zcGxpdCgiOiIpCiAgICBmb3IgcCBpbiBiYnBhdGg6CiAgICAgICAgY3Vycm5hbWUgPSBv
cy5wYXRoLmpvaW4oYmIuZGF0YS5leHBhbmQocCwgZGF0YSksIGZuKQogICAgICAgIGlmIG9zLmFj
Y2VzcyhjdXJybmFtZSwgb3MuUl9PSyk6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1
cm4gRmFsc2UKfQoKCnB5dGhvbiBnZXRfcGFja2FnZV9tYXBwaW5nICgpIHsKZGVmIGdldF9wYWNr
YWdlX21hcHBpbmcgKHBrZywgZCk6CglpbXBvcnQgb2UucGFja2FnZWRhdGEKCglkYXRhID0gb2Uu
cGFja2FnZWRhdGEucmVhZF9zdWJwa2dkYXRhKHBrZywgZCkKCWtleSA9ICJQS0dfJXMiICUgcGtn
CgoJaWYga2V5IGluIGRhdGE6CgkJcmV0dXJuIGRhdGFba2V5XQoKCXJldHVybiBwa2cKfQoKCnB5
dGhvbiBzc3RhdGVfdGFza19wcmVmdW5jICgpIHsKICAgIHNoYXJlZF9zdGF0ZSA9IHNzdGF0ZV9z
dGF0ZV9mcm9tdmFycyhkKQogICAgc3N0YXRlX2NsZWFuKHNoYXJlZF9zdGF0ZSwgZCkKfQoKCnB5
dGhvbiBjaGVja19zYW5pdHlfc3N0YXRlX2Rpcl9jaGFuZ2UgKCkgewpkZWYgY2hlY2tfc2FuaXR5
X3NzdGF0ZV9kaXJfY2hhbmdlKHNzdGF0ZV9kaXIsIGRhdGEpOgogICAgIyBTYW5pdHkgY2hlY2tz
IHRvIGJlIGRvbmUgd2hlbiB0aGUgdmFsdWUgb2YgU1NUQVRFX0RJUiBjaGFuZ2VzCgogICAgIyBD
aGVjayB0aGF0IFNTVEFURV9ESVIgaXNuJ3Qgb24gYSBmaWxlc3lzdGVtIHdpdGggbGltaXRlZCBm
aWxlbmFtZSBsZW5ndGggKGVnLiBlQ3J5cHRGUykKICAgIHRlc3Rtc2cgPSAiIgogICAgaWYgc3N0
YXRlX2RpciAhPSAiIjoKICAgICAgICB0ZXN0bXNnID0gY2hlY2tfY3JlYXRlX2xvbmdfZmlsZW5h
bWUoc3N0YXRlX2RpciwgIlNTVEFURV9ESVIiKQogICAgcmV0dXJuIHRlc3Rtc2cKfQoKCnB5dGhv
biBzc3RhdGVfc2V0c2NlbmUgKCkgewpkZWYgc3N0YXRlX3NldHNjZW5lKGQpOgogICAgc2hhcmVk
X3N0YXRlID0gc3N0YXRlX3N0YXRlX2Zyb212YXJzKGQpCiAgICBhY2NlbGVyYXRlID0gc3N0YXRl
X2luc3RhbGxwa2coc2hhcmVkX3N0YXRlLCBkKQogICAgaWYgbm90IGFjY2VsZXJhdGU6CiAgICAg
ICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiTm8gc3VpdGFibGUgc3RhZ2luZyBwYWNrYWdl
IGZvdW5kIikKfQoKCnB5dGhvbiBiYXNlX3BhdGhfcmVsYXRpdmUgKCkgewpkZWYgYmFzZV9wYXRo
X3JlbGF0aXZlKHNyYywgZGVzdCk6CiAgICByZXR1cm4gb2UucGF0aC5yZWxhdGl2ZShzcmMsIGRl
c3QpCn0KCgpweXRob24gc3BsaXRmaWxlICgpIHsKZGVmIHNwbGl0ZmlsZShmaWxlLCBkZWJ1Z2Zp
bGUsIGRlYnVnc3JjZGlyLCBkKToKICAgICMgRnVuY3Rpb24gdG8gc3BsaXQgYSBzaW5nbGUgZmls
ZSwgY2FsbGVkIGZyb20gc3BsaXRfYW5kX3N0cmlwX2ZpbGVzIGJlbG93CiAgICAjIEEgd29ya2lu
ZyAnZmlsZScgKG9uZSB3aGljaCB3b3JrcyBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSkKICAg
ICMgaXMgc3BsaXQgYW5kIHRoZSBzcGxpdCBvZmYgcG9ydGlvbnMgZ28gdG8gZGVidWdmaWxlLgog
ICAgIwogICAgIyBUaGUgZGVidWcgaW5mb3JtYXRpb24gaXMgdGhlbiBwcm9jZXNzZWQgZm9yIHNy
YyByZWZlcmVuY2VzLiAgVGhlc2UKICAgICMgcmVmZXJlbmNlcyBhcmUgY29waWVkIHRvIGRlYnVn
c3JjZGlyLCBpZiBkZWZpbmVkLgoKICAgIGltcG9ydCBjb21tYW5kcywgc3RhdAoKICAgIGR2YXIg
PSBiYi5kYXRhLmdldFZhcignUEtHRCcsIGQsIFRydWUpCiAgICBwYXRocHJlZml4ID0gImV4cG9y
dCBQQVRIPSVzOyAiICUgYmIuZGF0YS5nZXRWYXIoJ1BBVEgnLCBkLCBUcnVlKQogICAgb2JqY29w
eSA9IGJiLmRhdGEuZ2V0VmFyKCJPQkpDT1BZIiwgZCwgVHJ1ZSkKICAgIGRlYnVnZWRpdCA9IGJi
LmRhdGEuZXhwYW5kKCIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1
aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliL3Jw
bS9iaW4vZGVidWdlZGl0IiwgZCkKICAgIHdvcmtkaXIgPSBiYi5kYXRhLmV4cGFuZCgiL2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNl
L3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAt
cjAiLCBkKQogICAgd29ya3BhcmVudGRpciA9IG9zLnBhdGguZGlybmFtZSh3b3JrZGlyKQogICAg
c291cmNlZmlsZSA9IGJiLmRhdGEuZXhwYW5kKCIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10
ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3dvcmsvcDEwMjByZGItZnNs
LWxpbnV4LWdudXNwZS9mc2wtaW1hZ2Utc2ltcGxlLTEuMC1yMC9kZWJ1Z3NvdXJjZXMubGlzdCIs
IGQpCgogICAgIyBXZSBpZ25vcmUga2VybmVsIG1vZHVsZXMsIHdlIGRvbid0IGdlbmVyYXRlIGRl
YnVnIGluZm8gZmlsZXMuCiAgICBpZiBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMSBh
bmQgZmlsZS5lbmRzd2l0aCgiLmtvIik6CglyZXR1cm4gMQoKICAgIG5ld21vZGUgPSBOb25lCiAg
ICBpZiBub3Qgb3MuYWNjZXNzKGZpbGUsIG9zLldfT0spIG9yIG9zLmFjY2VzcyhmaWxlLCBvcy5S
X09LKToKICAgICAgICBvcmlnbW9kZSA9IG9zLnN0YXQoZmlsZSlbc3RhdC5TVF9NT0RFXQogICAg
ICAgIG5ld21vZGUgPSBvcmlnbW9kZSB8IHN0YXQuU19JV1JJVEUgfCBzdGF0LlNfSVJFQUQKICAg
ICAgICBvcy5jaG1vZChmaWxlLCBuZXdtb2RlKQoKICAgICMgV2UgbmVlZCB0byBleHRyYWN0IHRo
ZSBkZWJ1ZyBzcmMgaW5mb3JtYXRpb24gaGVyZS4uLgogICAgaWYgZGVidWdzcmNkaXI6Cglvcy5z
eXN0ZW0oIiVzJyVzJyAtYiAnJXMnIC1kICclcycgLWkgLWwgJyVzJyAnJXMnIiAlIChwYXRocHJl
Zml4LCBkZWJ1Z2VkaXQsIHdvcmtwYXJlbnRkaXIsIGRlYnVnc3JjZGlyLCBzb3VyY2VmaWxlLCBm
aWxlKSkKCiAgICBiYi5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlYnVnZmlsZSkpCgogICAg
b3Muc3lzdGVtKCIlcyclcycgLS1vbmx5LWtlZXAtZGVidWcgJyVzJyAnJXMnIiAlIChwYXRocHJl
Zml4LCBvYmpjb3B5LCBmaWxlLCBkZWJ1Z2ZpbGUpKQoKICAgICMgU2V0IHRoZSBkZWJ1Z2xpbmsg
dG8gaGF2ZSB0aGUgdmlldyBvZiB0aGUgZmlsZSBwYXRoIG9uIHRoZSB0YXJnZXQKICAgIG9zLnN5
c3RlbSgiJXMnJXMnIC0tYWRkLWdudS1kZWJ1Z2xpbms9JyVzJyAnJXMnIiAlIChwYXRocHJlZml4
LCBvYmpjb3B5LCBkZWJ1Z2ZpbGUsIGZpbGUpKQoKICAgIGlmIG5ld21vZGU6CiAgICAgICAgb3Mu
Y2htb2QoZmlsZSwgb3JpZ21vZGUpCgogICAgcmV0dXJuIDAKfQoKCnB5dGhvbiBkb19jbGVhbmFs
bCAoKSB7CiAgICAgICAgc3JjX3VyaSA9IChiYi5kYXRhLmdldFZhcignU1JDX1VSSScsIGQsIFRy
dWUpIG9yICIiKS5zcGxpdCgpCiAgICAgICAgaWYgbGVuKHNyY191cmkpID09IDA6CiAgICAgICAg
ICAgIHJldHVybgoKCWxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQoJYmIuZGF0YS51
cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgICAgIHRyeToKICAgICAgICAgICAgZmV0Y2hlciA9
IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBsb2NhbGRhdGEpCiAgICAgICAgICAgIGZldGNoZXIu
Y2xlYW4oKQogICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbiwgZToKICAg
ICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQp9CgoKcHl0aG9uIHNzdGF0ZV9w
YWNrYWdlICgpIHsKZGVmIHNzdGF0ZV9wYWNrYWdlKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRo
CgogICAgZGVmIG1ha2VfcmVsYXRpdmVfc3ltbGluayhwYXRoLCBvdXRwdXRwYXRoLCBkKToKICAg
ICAgICAjIFJlcGxhY2Ugb3V0IGFic29sdXRlIFRNUERJUiBwYXRocyBpbiBzeW1saW5rcyB3aXRo
IHJlbGF0aXZlIG9uZXMKICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAg
ICAgICAgIHJldHVybgogICAgICAgIGxpbmsgPSBvcy5yZWFkbGluayhwYXRoKQogICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzYWJzKGxpbmspOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBu
b3QgbGluay5zdGFydHN3aXRoKHRtcGRpcik6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBk
ZXB0aCA9IGxpbmsucnBhcnRpdGlvbih0bXBkaXIpWzJdLmNvdW50KCcvJykKICAgICAgICBiYXNl
ID0gbGluay5wYXJ0aXRpb24odG1wZGlyKVsyXS5zdHJpcCgpCiAgICAgICAgd2hpbGUgZGVwdGgg
PiAxOgogICAgICAgICAgICBiYXNlID0gIi4uLyIgKyBiYXNlCiAgICAgICAgICAgIGRlcHRoIC09
IDEKCiAgICAgICAgYmIuZGVidWcoMiwgIlJlcGxhY2luZyBhYnNvbHV0ZSBwYXRoICVzIHdpdGgg
cmVsYXRpdmUgcGF0aCAlcyIgJSAobGluaywgYmFzZSkpCiAgICAgICAgb3MucmVtb3ZlKHBhdGgp
CiAgICAgICAgb3Muc3ltbGluayhiYXNlLCBwYXRoKQoKICAgIHRtcGRpciA9IGJiLmRhdGEuZ2V0
VmFyKCdUTVBESVInLCBkLCBUcnVlKQoKICAgIHNzdGF0ZWJ1aWxkID0gYmIuZGF0YS5leHBhbmQo
Ii9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJf
cmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1w
bGUtMS4wLXIwL3NzdGF0ZS1idWlsZC0lcy8iICUgc3NbJ25hbWUnXSwgZCkKICAgIHNzdGF0ZXBr
ZyA9IGJiLmRhdGEuZXhwYW5kKCIvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc3N0YXRl
LWNhY2hlL3NzdGF0ZS1mc2wtaW1hZ2Utc2ltcGxlLXAxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUt
MS4wLXIwLXAxMDIwcmRiLTItJHtCQl9UQVNLSEFTSH0iICsgJ18nICsgc3NbJ25hbWUnXSArICIu
dHh6IiwgZCkKICAgIGJiLm1rZGlyaGllcihzc3RhdGVidWlsZCkKICAgIGJiLm1rZGlyaGllcihv
cy5wYXRoLmRpcm5hbWUoc3N0YXRlcGtnKSkKICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgog
ICAgICAgIHNyY2Jhc2UgPSBzdGF0ZVswXS5yc3RyaXAoIi8iKS5yc3BsaXQoJy8nLCAxKVswXQog
ICAgICAgIGZvciB3YWxrcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzdGF0ZVsxXSk6CiAg
ICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9z
LnBhdGguam9pbih3YWxrcm9vdCwgZmlsZSkKICAgICAgICAgICAgICAgIGRzdHBhdGggPSBzcmNw
YXRoLnJlcGxhY2Uoc3RhdGVbMV0sIHNzdGF0ZWJ1aWxkICsgc3RhdGVbMF0pCiAgICAgICAgICAg
ICAgICBiYi5kZWJ1ZygyLCAiUHJlcGFyaW5nICVzIGZvciBwYWNrYWdpbmcgYXQgJXMiICUgKHNy
Y3BhdGgsIGRzdHBhdGgpKQogICAgICAgICAgICAgICAgbWFrZV9yZWxhdGl2ZV9zeW1saW5rKHNy
Y3BhdGgsIGRzdHBhdGgsIGQpCiAgICAgICAgICAgIGZvciBkaXIgaW4gZGlyczoKICAgICAgICAg
ICAgICAgIHNyY3BhdGggPSBvcy5wYXRoLmpvaW4od2Fsa3Jvb3QsIGRpcikKICAgICAgICAgICAg
ICAgIGRzdHBhdGggPSBzcmNwYXRoLnJlcGxhY2Uoc3RhdGVbMV0sIHNzdGF0ZWJ1aWxkICsgc3Rh
dGVbMF0pCiAgICAgICAgICAgICAgICBtYWtlX3JlbGF0aXZlX3N5bWxpbmsoc3JjcGF0aCwgZHN0
cGF0aCwgZCkKICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHN0YXRlWzFdLCBzc3RhdGVidWlsZCAr
IHN0YXRlWzBdKQoKICAgIHdvcmtkaXIgPSBiYi5kYXRhLmdldFZhcignV09SS0RJUicsIGQsIFRy
dWUpCiAgICBmb3IgcGxhaW4gaW4gc3NbJ3BsYWluZGlycyddOgogICAgICAgIHBkaXIgPSBwbGFp
bi5yZXBsYWNlKHdvcmtkaXIsIHNzdGF0ZWJ1aWxkKQogICAgICAgIGJiLm1rZGlyaGllcihwbGFp
bikKICAgICAgICBiYi5ta2RpcmhpZXIocGRpcikKICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHBs
YWluLCBwZGlyKQoKICAgIGJiLmRhdGEuc2V0VmFyKCdTU1RBVEVfQlVJTERESVInLCBzc3RhdGVi
dWlsZCwgZCkKICAgIGJiLmRhdGEuc2V0VmFyKCdTU1RBVEVfUEtHJywgc3N0YXRlcGtnLCBkKQog
ICAgc3N0YXRlX2hhcmRjb2RlX3BhdGgoZCkKICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnc3N0YXRl
X2NyZWF0ZV9wYWNrYWdlJywgZCkKCiAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc3N0YXRl
cGtnICsgIi5zaWdpbmZvIiwgZCkKCiAgICByZXR1cm4KfQoKCnB5dGhvbiBkb19wb3B1bGF0ZV9s
aWMgKCkgewogICAgIiIiCiAgICBQb3B1bGF0ZSBMSUNFTlNFX0RJUkVDVE9SWSB3aXRoIGxpY2Vu
c2VzLgogICAgIiIiCiAgICBpbXBvcnQgb3MKICAgIGltcG9ydCBiYgogICAgaW1wb3J0IHNodXRp
bAogICAgaW1wb3J0IGFzdAoKICAgIGNsYXNzIExpY2Vuc2VWaXNpdG9yKGFzdC5Ob2RlVmlzaXRv
cik6CiAgICAgICAgZGVmIGdlbmVyaWNfdmlzaXQoc2VsZiwgbm9kZSk6CiAgICAgICAgICAgIGFz
dC5Ob2RlVmlzaXRvci5nZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUpCgogICAgICAgIGRlZiB2aXNp
dF9TdHIoc2VsZiwgbm9kZSk6CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBVbnRpbCBJIGZp
Z3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoCiAgICAgICAgICAgICMgdGhlIHR3byBtb2RpZmllcnMg
SSBzdXBwb3J0IChvciBncmVhdGVyID0gKwogICAgICAgICAgICAjIGFuZCAid2l0aCBleGNlcHRp
b25zIiBiZWluZyAqCiAgICAgICAgICAgICMgd2UnbGwganVzdCBzdHJpcCBvdXQgdGhlIG1vZGlm
aWVyIGFuZCBwdXQKICAgICAgICAgICAgIyB0aGUgYmFzZSBsaWNlbnNlLgogICAgICAgICAgICBm
aW5kX2xpY2Vuc2Uobm9kZS5zLnJlcGxhY2UoIisiLCAiIikucmVwbGFjZSgiKiIsICIiKSkKICAg
ICAgICAgICAgYXN0Lk5vZGVWaXNpdG9yLmdlbmVyaWNfdmlzaXQoc2VsZiwgbm9kZSkKCiAgICAg
ICAgZGVmIHZpc2l0X0Jpbk9wKHNlbGYsIG5vZGUpOgogICAgICAgICAgICBvcCA9IG5vZGUub3AK
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvcCwgYXN0LkJpdE9yKToKICAgICAgICAgICAgICAg
IHggPSBMaWNlbnNlVmlzaXRvcigpCiAgICAgICAgICAgICAgICB4LnZpc2l0KG5vZGUubGVmdCkK
ICAgICAgICAgICAgICAgIHgudmlzaXQobm9kZS5yaWdodCkKICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgIGFzdC5Ob2RlVmlzaXRvci5nZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUpCgog
ICAgZGVmIGNvcHlfbGljZW5zZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBmaWxlX25hbWUpOgogICAg
ICAgIHRyeToKICAgICAgICAgICAgYmIuY29weWZpbGUob3MucGF0aC5qb2luKHNvdXJjZSwgZmls
ZV9uYW1lKSwgb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uLCBmaWxlX25hbWUpKQogICAgICAgIGV4
Y2VwdDoKICAgICAgICAgICAgYmIud2FybigiJXM6IE5vIGdlbmVyaWMgbGljZW5zZSBmaWxlIGV4
aXN0cyBmb3I6ICVzIGF0ICVzIiAlIChwbiwgZmlsZV9uYW1lLCBzb3VyY2UpKQogICAgICAgICAg
ICBwYXNzCgogICAgZGVmIGxpbmtfbGljZW5zZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBmaWxlX25h
bWUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmpvaW4oc291
cmNlLCBmaWxlX25hbWUpLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb24sICJnZW5lcmljXyIgKyBm
aWxlX25hbWUpKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgYmIud2FybigiJXM6IENvdWxk
IG5vdCBzeW1saW5rOiAlcyBhdCAlcyB0byAlcyBhdCAlcyIgJSAocG4sIGZpbGVfbmFtZSwgc291
cmNlLCBmaWxlX25hbWUsIGRlc3RpbmF0aW9uKSkKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBm
aW5kX2xpY2Vuc2UobGljZW5zZV90eXBlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGJiLm1r
ZGlyaGllcihnZW5fbGljX2Rlc3QpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBwYXNzCgog
ICAgICAgICMgSWYgdGhlIGdlbmVyaWMgZG9lcyBub3QgZXhpc3Qgd2UgbmVlZCB0byBjaGVjayB0
byBzZWUgaWYgdGhlcmUgaXMgYW4gU1BEWCBtYXBwaW5nIHRvIGl0CiAgICAgICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihnZW5lcmljX2RpcmVjdG9yeSwgbGljZW5zZV90eXBl
KSk6CiAgICAgICAgICAgIGlmIGJiLmRhdGEuZ2V0VmFyRmxhZygnU1BEWExJQ0VOU0VNQVAnLCBs
aWNlbnNlX3R5cGUsIGQpICE9IE5vbmU6CiAgICAgICAgICAgICAgICAjIEdyZWF0LCB0aGVyZSBp
cyBhbiBTUERYTElDRU5TRU1BUC4gV2UgY2FuIGNvcHkhCiAgICAgICAgICAgICAgICBiYi5ub3Rl
KCJXZSBuZWVkIHRvIHVzZSBhIFNQRFhMSUNFTlNFTUFQIGZvciAlcyIgJSAobGljZW5zZV90eXBl
KSkKICAgICAgICAgICAgICAgIHNwZHhfZ2VuZXJpYyA9IGJiLmRhdGEuZ2V0VmFyRmxhZygnU1BE
WExJQ0VOU0VNQVAnLCBsaWNlbnNlX3R5cGUsIGQpCiAgICAgICAgICAgICAgICBjb3B5X2xpY2Vu
c2UoZ2VuZXJpY19kaXJlY3RvcnksIGdlbl9saWNfZGVzdCwgc3BkeF9nZW5lcmljKQogICAgICAg
ICAgICAgICAgbGlua19saWNlbnNlKGdlbl9saWNfZGVzdCwgZGVzdGRpciwgc3BkeF9nZW5lcmlj
KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBBbmQgaGVyZSBpcyB3aGVyZSB3
ZSB3YXJuIHBlb3BsZSB0aGF0IHRoZWlyIGxpY2Vuc2VzIGFyZSBsb3VzeQogICAgICAgICAgICAg
ICAgYmIud2FybigiJXM6IE5vIGdlbmVyaWMgbGljZW5zZSBmaWxlIGV4aXN0cyBmb3I6ICVzIGF0
ICVzIiAlIChwbiwgbGljZW5zZV90eXBlLCBnZW5lcmljX2RpcmVjdG9yeSkpCiAgICAgICAgICAg
ICAgICBiYi53YXJuKCIlczogVGhlcmUgaXMgYWxzbyBubyBTUERYTElDRU5TRU1BUCBmb3IgdGhp
cyBsaWNlbnNlIHR5cGU6ICVzIGF0ICVzIiAlIChwbiwgbGljZW5zZV90eXBlLCBnZW5lcmljX2Rp
cmVjdG9yeSkpCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmls
ZShvcy5wYXRoLmpvaW4oZ2VuZXJpY19kaXJlY3RvcnksIGxpY2Vuc2VfdHlwZSkpOgogICAgICAg
ICAgICBjb3B5X2xpY2Vuc2UoZ2VuZXJpY19kaXJlY3RvcnksIGdlbl9saWNfZGVzdCwgbGljZW5z
ZV90eXBlKQogICAgICAgICAgICBsaW5rX2xpY2Vuc2UoZ2VuX2xpY19kZXN0LCBkZXN0ZGlyLCBs
aWNlbnNlX3R5cGUpCgogICAgIyBBbGwgdGhlIGxpY2Vuc2UgdHlwZXMgZm9yIHRoZSBwYWNrYWdl
CiAgICBsaWNlbnNlX3R5cGVzID0gYmIuZGF0YS5nZXRWYXIoJ0xJQ0VOU0UnLCBkLCBUcnVlKQog
ICAgIyBBbGwgdGhlIGxpY2Vuc2UgZmlsZXMgZm9yIHRoZSBwYWNrYWdlCiAgICBsaWNfZmlsZXMg
PSBiYi5kYXRhLmdldFZhcignTElDX0ZJTEVTX0NIS1NVTScsIGQsIFRydWUpCiAgICBwbiA9IGJi
LmRhdGEuZ2V0VmFyKCdQTicsIGQsIFRydWUpCiAgICAjIFRoZSBiYXNlIGRpcmVjdG9yeSB3ZSB3
cmFuZ2xlIGxpY2Vuc2VzIHRvCiAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKGJiLmRhdGEuZ2V0
VmFyKCdMSUNTU1RBVEVESVInLCBkLCBUcnVlKSwgcG4pCiAgICAjIFRoZSBsaWNlbnNlIGZpbGVz
IGFyZSBsb2NhdGVkIGluIFMvTElDX0ZJTEVfQ0hFQ0tTVU0uCiAgICBzcmNkaXIgPSBiYi5kYXRh
LmdldFZhcignUycsIGQsIFRydWUpCiAgICAjIERpcmVjdG9yeSB3ZSBzdG9yZSB0aGUgZ2VuZXJp
YyBsaWNlbnNlcyBhcyBzZXQgaW4gdGhlIGRpc3RybyBjb25maWd1cmF0aW9uCiAgICBnZW5lcmlj
X2RpcmVjdG9yeSA9IGJiLmRhdGEuZ2V0VmFyKCdDT01NT05fTElDRU5TRV9ESVInLCBkLCBUcnVl
KQoKICAgIHRyeToKICAgICAgICBiYi5ta2RpcmhpZXIoZGVzdGRpcikKICAgIGV4Y2VwdDoKICAg
ICAgICBwYXNzCgogICAgaWYgbm90IGdlbmVyaWNfZGlyZWN0b3J5OgogICAgICAgIHJhaXNlIGJi
LmJ1aWxkLkZ1bmNGYWlsZWQoIkNPTU1PTl9MSUNFTlNFX0RJUiBpcyB1bnNldC4gUGxlYXNlIHNl
dCB0aGlzIGluIHlvdXIgZGlzdHJvIGNvbmZpZyIpCgogICAgaWYgbm90IGxpY19maWxlczoKICAg
ICAgICAjIE5vIHJlY2lwZSBzaG91bGQgaGF2ZSBhbiBpbnZhbGlkIGxpY2Vuc2UgZmlsZS4gVGhp
cyBpcyBjaGVja2VkIGVsc2UKICAgICAgICAjIHdoZXJlLCBidXQgbGV0J3MgYmUgcGVkYW50aWMK
ICAgICAgICBiYi5ub3RlKHBuICsgIjogUmVjaXBlIGZpbGUgZG9lcyBub3QgaGF2ZSBsaWNlbnNl
IGZpbGUgaW5mb3JtYXRpb24uIikKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGZvciB1cmwgaW4g
bGljX2ZpbGVzLnNwbGl0KCk6CiAgICAgICAgKHR5cGUsIGhvc3QsIHBhdGgsIHVzZXIsIHBzd2Qs
IHBhcm0pID0gYmIuZGVjb2RldXJsKHVybCkKICAgICAgICAjIFdlIHdhbnQgdGhlIGxpY2Vuc2Ug
ZmlsZSB0byBiZSBjb3BpZWQgaW50byB0aGUgZGVzdGluYXRpb24KICAgICAgICBzcmNsaWNmaWxl
ID0gb3MucGF0aC5qb2luKHNyY2RpciwgcGF0aCkKICAgICAgICByZXQgPSBiYi5jb3B5ZmlsZShz
cmNsaWNmaWxlLCBvcy5wYXRoLmpvaW4oZGVzdGRpciwgb3MucGF0aC5iYXNlbmFtZShwYXRoKSkp
CiAgICAgICAgIyBJZiB0aGUgY29weSBkaWRuJ3Qgb2NjdXIsIHNvbWV0aGluZyBob3JyaWJsZSB3
ZW50IHdyb25nIGFuZCB3ZSBmYWlsIG91dAogICAgICAgIGlmIHJldCBpcyBGYWxzZSBvciByZXQg
PT0gMDoKICAgICAgICAgICAgYmIud2FybigiJXMgY291bGQgbm90IGJlIGNvcGllZCBmb3Igc29t
ZSByZWFzb24uIEl0IG1heSBub3QgZXhpc3QuIFdBUk4gZm9yIG5vdy4iICUgc3JjbGljZmlsZSkK
CiAgICBnZW5fbGljX2Rlc3QgPSBvcy5wYXRoLmpvaW4oYmIuZGF0YS5nZXRWYXIoJ0xJQ0VOU0Vf
RElSRUNUT1JZJywgZCwgVHJ1ZSksICJjb21tb24tbGljZW5zZXMiKQoKICAgIGNsZWFuX2xpY2Vu
c2VzID0gIiIKCiAgICBmb3IgeCBpbiBsaWNlbnNlX3R5cGVzLnJlcGxhY2UoIigiLCAiICggIiku
cmVwbGFjZSgiKSIsICIgKSAiKS5zcGxpdCgpOgogICAgICAgIGlmICgoeCAhPSAiKCIpIGFuZCAo
eCAhPSAiKSIpIGFuZCAoeCAhPSAiJiIpIGFuZCAoeCAhPSAifCIpKToKICAgICAgICAgICAgY2xl
YW5fbGljZW5zZXMgKz0gIiciICsgeCArICInIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNs
ZWFuX2xpY2Vuc2VzICs9ICIgIiArIHggKyAiICIKCiAgICAjIGxzdHJpcCBhbnkgcG9zc2libGUg
aW5kZW50cywgc2luY2UgYXN0IG5lZWRzIHB5dGhvbiBzeW50YXguCiAgICBub2RlID0gYXN0LnBh
cnNlKGNsZWFuX2xpY2Vuc2VzLmxzdHJpcCgpKQogICAgdiA9IExpY2Vuc2VWaXNpdG9yKCkKICAg
IHYudmlzaXQobm9kZSkKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvciAoKSB7CmRl
ZiBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcihlcnJvcl9jbGFzcywgZXJyb3JfbXNnLCBkKToKICAg
IHBhY2thZ2VfcWFfd3JpdGVfZXJyb3IoZXJyb3JfbXNnLCBkKQogICAgaWYgZXJyb3JfY2xhc3Mg
aW4gKGQuZ2V0VmFyKCJFUlJPUl9RQSIsIFRydWUpIG9yICIiKS5zcGxpdCgpOgogICAgICAgIGJi
LmVycm9yKCJRQSBJc3N1ZTogJXMiICUgZXJyb3JfbXNnKQogICAgICAgIHJldHVybiBGYWxzZQog
ICAgZWxzZToKICAgICAgICBiYi53YXJuKCJRQSBJc3N1ZTogJXMiICUgZXJyb3JfbXNnKQogICAg
ICAgIHJldHVybiBUcnVlCn0KCgpweXRob24gcGFja2FnZV9ycG1fbWFwcGluZ19yZW5hbWVfaG9v
ayAoKSB7CgliYi5idWlsZC5leGVjX2Z1bmMoJ3BhY2thZ2VfbWFwcGluZ19yZW5hbWVfaG9vaycs
IGQpCn0KCgpweXRob24gYmFzZV9yZWFkX2ZpbGUgKCkgewpkZWYgYmFzZV9yZWFkX2ZpbGUoZmls
ZW5hbWUpOgogICAgcmV0dXJuIG9lLnV0aWxzLnJlYWRfZmlsZShmaWxlbmFtZSkKfQoKCnB5dGhv
biBhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMgKCkgewpkZWYgYWxsX211bHRpbGliX3R1bmVfdmFs
dWVzKGQsIHZhciwgdW5pcXVlID0gVHJ1ZSwgbmVlZF9zcGxpdCA9IFRydWUsIGRlbGltID0gJyAn
KToKCSIiIlJldHVybiBhIHN0cmluZyBvZiBhbGwgJHt2YXJ9IGluIGFsbCBtdWx0aWxpYiB0dW5l
IGNvbmZpZ3VyYXRpb24iIiIKCXZhbHVlcyA9IFtdCgl2YWx1ZSA9IGQuZ2V0VmFyKHZhciwgVHJ1
ZSkgb3IgIiIKCWlmIHZhbHVlICE9ICIiOgoJCWlmIG5lZWRfc3BsaXQ6CgkJCWZvciBpdGVtIGlu
IHZhbHVlLnNwbGl0KGRlbGltKToKCQkJCXZhbHVlcy5hcHBlbmQoaXRlbSkKCQllbHNlOgoJCQl2
YWx1ZXMuYXBwZW5kKHZhbHVlKQoJdmFyaWFudHMgPSBkLmdldFZhcigiTVVMVElMSUJfVkFSSUFO
VFMiLCBUcnVlKSBvciAiIgoJZm9yIGl0ZW0gaW4gdmFyaWFudHMuc3BsaXQoKToKCQlsb2NhbGRh
dGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKCQlvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFy
KCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgaXRlbQoJCWxv
Y2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKCQliYi5kYXRhLnVwZGF0ZV9k
YXRhKGxvY2FsZGF0YSkKCQl2YWx1ZSA9IGxvY2FsZGF0YS5nZXRWYXIodmFyLCBUcnVlKSBvciAi
IgoJCWlmIHZhbHVlICE9ICIiOgoJCQlpZiBuZWVkX3NwbGl0OgoJCQkJZm9yIGl0ZW0gaW4gdmFs
dWUuc3BsaXQoZGVsaW0pOgoJCQkJCXZhbHVlcy5hcHBlbmQoaXRlbSkKCQkJZWxzZToKCQkJCXZh
bHVlcy5hcHBlbmQodmFsdWUpCglpZiB1bmlxdWU6CgkJI3dlIGRvIHRoaXMgdG8ga2VlcCBvcmRl
ciBhcyBtdWNoIGFzIHBvc3NpYmxlCgkJcmV0ID0gW10KCQlmb3IgdmFsdWUgaW4gdmFsdWVzOgoJ
CQlpZiBub3QgdmFsdWUgaW4gcmV0OgoJCQkJcmV0LmFwcGVuZCh2YWx1ZSkKCWVsc2U6CgkJcmV0
ID0gdmFsdWVzCglyZXR1cm4gIiAiLmpvaW4ocmV0KX0KCgpweXRob24gc2V0X3RpbWVkYXRhICgp
IHsKZGVmIHNldF90aW1lZGF0YSh2YXIsIGRhdGEpOgogICAgaW1wb3J0IHRpbWUKICAgIHRpbWUg
PSB0aW1lLnRpbWUoKQogICAgY3B1dGltZSA9IGdldF9jcHV0aW1lKCkKICAgIHByb2N0aW1lID0g
Z2V0X3Byb2Nlc3NfY3B1dGltZShvcy5nZXRwaWQoKSkKICAgIGRhdGEuc2V0VmFyKHZhciwgKHRp
bWUsIGNwdXRpbWUsIHByb2N0aW1lKSkKfQoKCnB5dGhvbiBwYWNrYWdlX2dldF9hdXRvX3ByICgp
IHsKCWlmIGQuZ2V0VmFyKCdVU0VfUFJfU0VSVicsIFRydWUpICE9ICIwIjoKCQlhdXRvX3ByPXBy
c2Vydl9nZXRfcHJfYXV0byhkKQoJCWlmIGF1dG9fcHIgaXMgTm9uZToKCQkJYmIuZmF0YWwoIkNh
biBOT1QgZ2V0IGF1dG8gUFIgcmV2aXNpb24gZnJvbSByZW1vdGUgUFIgc2VydmljZSIpCgkJCXJl
dHVybgoJCWQuc2V0VmFyKCdQUkFVVE8nLHN0cihhdXRvX3ByKSkKfQoKCnB5dGhvbiByZWFkX3No
bGliZGVwcyAoKSB7CglwYWNrYWdlcyA9IGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFUycsIGQsIFRy
dWUpLnNwbGl0KCkKCWZvciBwa2cgaW4gcGFja2FnZXM6CgkJcmRlcGVuZHMgPSBiYi51dGlscy5l
eHBsb2RlX2RlcF92ZXJzaW9ucyhiYi5kYXRhLmdldFZhcignUkRFUEVORFNfJyArIHBrZywgZCwg
MCkgb3IgYmIuZGF0YS5nZXRWYXIoJ1JERVBFTkRTJywgZCwgMCkgb3IgIiIpCgoJCWZvciBleHRl
bnNpb24gaW4gIi5zaGxpYmRlcHMiLCAiLnBjZGVwcyIsICIuY2xpbGliZGVwcyI6CgkJCWRlcHNm
aWxlID0gYmIuZGF0YS5leHBhbmQoIi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEw
MjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgt
Z251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3BhY2thZ2VzLXNwbGl0LyIgKyBwa2cgKyBl
eHRlbnNpb24sIGQpCgkJCWlmIG9zLmFjY2VzcyhkZXBzZmlsZSwgb3MuUl9PSyk6CgkJCQlmZCA9
IGZpbGUoZGVwc2ZpbGUpCgkJCQlsaW5lcyA9IGZkLnJlYWRsaW5lcygpCgkJCQlmZC5jbG9zZSgp
CgkJCQlmb3IgbCBpbiBsaW5lczoKCQkJCQlyZGVwZW5kc1tsLnJzdHJpcCgpXSA9ICIiCgkJYmIu
ZGF0YS5zZXRWYXIoJ1JERVBFTkRTXycgKyBwa2csIGJiLnV0aWxzLmpvaW5fZGVwcyhyZGVwZW5k
cywgY29tbWFzZXA9RmFsc2UpLCBkKQp9CgoKcHl0aG9uIGJhc2VfZG9fZmV0Y2ggKCkgewoKCXNy
Y191cmkgPSAoYmIuZGF0YS5nZXRWYXIoJ1NSQ19VUkknLCBkLCBUcnVlKSBvciAiIikuc3BsaXQo
KQoJaWYgbGVuKHNyY191cmkpID09IDA6CgkJcmV0dXJuCgoJbG9jYWxkYXRhID0gYmIuZGF0YS5j
cmVhdGVDb3B5KGQpCgliYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKCiAgICAgICAgdHJ5
OgogICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKHNyY191cmksIGxvY2FsZGF0
YSkKICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCiAgICAgICAgZXhjZXB0IGJiLmZldGNo
Mi5CQkZldGNoRXhjZXB0aW9uLCBlOgogICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFp
bGVkKGUpCn0KCgpweXRob24gZG9fcG9wdWxhdGVfc3lzcm9vdCAoKSB7CiAgICAjCiAgICAjIGlm
IGRvX3N0YWdlIGV4aXN0cywgd2UncmUgbGVnYWN5LiBJbiB0aGF0IGNhc2UgcnVuIHRoZSBkb19z
dGFnZSwKICAgICMgbW9kaWZ5IHRoZSBTWVNST09UX0RFU1RESVIgdmFyaWFibGUgYW5kIHRoZW4g
cnVuIHRoZSBzdGFnaW5nIHByZXByb2Nlc3MKICAgICMgZnVuY3Rpb25zIGFnYWluc3Qgc3RhZ2lu
ZyBkaXJlY3RseS4KICAgICMKICAgICMgT3RoZXJ3aXNlIHNldHVwIGEgZGVzdGRpciwgY29weSB0
aGUgcmVzdWx0cyBmcm9tIGRvX2luc3RhbGwKICAgICMgYW5kIHJ1biB0aGUgc3RhZ2luZyBwcmVw
cm9jZXNzIGFnYWluc3QgdGhhdAogICAgIwoKICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygic3lzcm9v
dF9zdGFnZV9hbGwiLCBkKQogICAgZm9yIGYgaW4gKGJiLmRhdGEuZ2V0VmFyKCdTWVNST09UX1BS
RVBST0NFU1NfRlVOQ1MnLCBkLCBUcnVlKSBvciAnJykuc3BsaXQoKToKICAgICAgICBiYi5idWls
ZC5leGVjX2Z1bmMoZiwgZCkKfQoKCnB5dGhvbiBwYWNrYWdlX25hbWVfaG9vayAoKSB7CgliYi5i
dWlsZC5leGVjX2Z1bmMoJ2RlYmlhbl9wYWNrYWdlX25hbWVfaG9vaycsIGQpCn0KCgpweXRob24g
YmFzZV9nZXRfbWV0YWRhdGFfbW9ub3RvbmVfcmV2aXNpb24gKCkgewpkZWYgYmFzZV9nZXRfbWV0
YWRhdGFfbW9ub3RvbmVfcmV2aXNpb24ocGF0aCwgZCk6Cgltb25vdG9uZV9yZXZpc2lvbiA9ICI8
dW5rbm93bj4iCgl0cnk6CgkJbW9ub3RvbmVfcmV2aXNpb24gPSBmaWxlKCAiJXMvX01UTi9yZXZp
c2lvbiIgJSBwYXRoICkucmVhZCgpLnN0cmlwKCkKCQlpZiBtb25vdG9uZV9yZXZpc2lvbi5zdGFy
dHN3aXRoKCAiZm9ybWF0X3ZlcnNpb24iICk6CgkJCW1vbm90b25lX3JldmlzaW9uX3dvcmRzID0g
bW9ub3RvbmVfcmV2aXNpb24uc3BsaXQoKQoJCQltb25vdG9uZV9yZXZpc2lvbiA9IG1vbm90b25l
X3JldmlzaW9uX3dvcmRzWyBtb25vdG9uZV9yZXZpc2lvbl93b3Jkcy5pbmRleCggIm9sZF9yZXZp
c2lvbiIgKSsxXVsxOi0xXQoJZXhjZXB0IElPRXJyb3I6CgkJcGFzcwoJcmV0dXJuIG1vbm90b25l
X3JldmlzaW9uCn0KCgpweXRob24gYmFzZV9wYXRoX291dCAoKSB7CmRlZiBiYXNlX3BhdGhfb3V0
KHBhdGgsIGQpOgogICAgcmV0dXJuIG9lLnBhdGguZm9ybWF0X2Rpc3BsYXkocGF0aCwgZCkKfQoK
CnB5dGhvbiBzZXRfZGV2aWNlICgpIHsKZGVmIHNldF9kZXZpY2UoZSk6CiAgICB0bXBkaXIgPSBi
Yi5kYXRhLmdldFZhcignVE1QRElSJywgZS5kYXRhLCBUcnVlKQogICAgdHJ5OgogICAgICAgIG9z
LnJlbW92ZShiYi5kYXRhLmdldFZhcignREVWRklMRScsIGUuZGF0YSwgVHJ1ZSkpCiAgICBleGNl
cHQ6CiAgICAgICAgcGFzcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBXZSBsb29rIGZv
ciB0aGUgdm9sdW1lIFRNUERJUiBsaXZlcyBvbi4gVG8gZG8gYWxsIGRpc2tzIHdvdWxkIG1ha2Ug
bGl0dGxlCiAgICAjIHNlbnNlIGFuZCBub3QgZ2l2ZSB1cyBhbnkgcGFydGljdWxhcmx5IHVzZWZ1
bCBkYXRhLiBJbiB0aGVvcnkgd2UgY291bGQgZG8KICAgICMgc29tZXRoaW5nIGxpa2Ugc3RpY2sg
RExfRElSIG9uIGEgZGlmZmVyZW50IHBhcnRpdGlvbiBhbmQgdGhpcyB3b3VsZAogICAgIyB0aHJv
dyBzdGF0cyBnYXRoZXJpbmcgb2ZmLiBUaGUgc2FtZSBnb2VzIHdpdGggU1NUQVRFX0RJUi4gSG93
ZXZlciwgbGV0J3MKICAgICMgZ2V0IHRoZSBiYXNpY3MgaW4gaGVyZSBhbmQgd29yayBvbiB0aGUg
Y29ybmVyY2FzZXMgbGF0ZXIuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBkZXZpY2U9b3Mu
c3RhdCh0bXBkaXIpCiAgICBtYWpvcmRldj1vcy5tYWpvcihkZXZpY2Uuc3RfZGV2KQogICAgbWlu
b3JkZXY9b3MubWlub3IoZGV2aWNlLnN0X2RldikKICAgIGZvciBsaW5lIGluIG9wZW4oIi9wcm9j
L2Rpc2tzdGF0cyIsICJyIik6CiAgICAgICAgaWYgbWFqb3JkZXYgPT0gaW50KGxpbmUuc3BsaXQo
KVswXSkgYW5kIG1pbm9yZGV2ID09IGludChsaW5lLnNwbGl0KClbMV0pOgogICAgICAgICAgIHJk
ZXY9bGluZS5zcGxpdCgpWzJdCiAgICBmaWxlID0gb3BlbihiYi5kYXRhLmdldFZhcignREVWRklM
RScsIGUuZGF0YSwgVHJ1ZSksICJ3IikKICAgIGZpbGUud3JpdGUocmRldikKICAgIGZpbGUuY2xv
c2UoKQp9CgoKcHl0aG9uIHNzdGF0ZV9jbGVhbl9jYWNoZWZpbGVzICgpIHsKZGVmIHNzdGF0ZV9j
bGVhbl9jYWNoZWZpbGVzKGQpOgogICAgZm9yIHRhc2sgaW4gKGJiLmRhdGEuZ2V0VmFyKCdTU1RB
VEVUQVNLUycsIGQsIFRydWUpIG9yICIiKS5zcGxpdCgpOgogICAgICAgIHNzID0gc3N0YXRlX3N0
YXRlX2Zyb212YXJzKGQsIHRhc2tbMzpdKQogICAgICAgIHNzdGF0ZV9jbGVhbl9jYWNoZWZpbGUo
c3MsIGQpCn0KCgpweXRob24gZG9fc3BsaXRfcGFja2FnZXMgKCkgewpkZWYgZG9fc3BsaXRfcGFj
a2FnZXMoZCwgcm9vdCwgZmlsZV9yZWdleCwgb3V0cHV0X3BhdHRlcm4sIGRlc2NyaXB0aW9uLCBw
b3N0aW5zdD1Ob25lLCByZWN1cnNpdmU9RmFsc2UsIGhvb2s9Tm9uZSwgZXh0cmFfZGVwZW5kcz1O
b25lLCBhdXhfZmlsZXNfcGF0dGVybj1Ob25lLCBwb3N0cm09Tm9uZSwgYWxsb3dfZGlycz1GYWxz
ZSwgcHJlcGVuZD1GYWxzZSwgbWF0Y2hfcGF0aD1GYWxzZSwgYXV4X2ZpbGVzX3BhdHRlcm5fdmVy
YmF0aW09Tm9uZSwgYWxsb3dfbGlua3M9RmFsc2UpOgoJIiIiCglVc2VkIGluIC5iYiBmaWxlcyB0
byBzcGxpdCB1cCBkeW5hbWljYWxseSBnZW5lcmF0ZWQgc3VicGFja2FnZXMgb2YgYQoJZ2l2ZW4g
cGFja2FnZSwgdXN1YWxseSBwbHVnaW5zIG9yIG1vZHVsZXMuCgkiIiIKCgltbCA9IGQuZ2V0VmFy
KCJNTFBSRUZJWCIsIFRydWUpCglpZiBtbDoKCQlpZiBub3Qgb3V0cHV0X3BhdHRlcm4uc3RhcnRz
d2l0aChtbCk6CgkJCW91dHB1dF9wYXR0ZXJuID0gbWwgKyBvdXRwdXRfcGF0dGVybgoKCQluZXdk
ZXBzID0gW10KCQlmb3IgZGVwIGluIChleHRyYV9kZXBlbmRzIG9yICIiKS5zcGxpdCgpOgoJCQlp
ZiBkZXAuc3RhcnRzd2l0aChtbCk6CgkJCQluZXdkZXBzLmFwcGVuZChkZXApCgkJCWVsc2U6CgkJ
CQluZXdkZXBzLmFwcGVuZChtbCArIGRlcCkKCQlpZiBuZXdkZXBzOgoJCQlleHRyYV9kZXBlbmRz
ID0gIiAiLmpvaW4obmV3ZGVwcykKCglkdmFyID0gYmIuZGF0YS5nZXRWYXIoJ1BLR0QnLCBkLCBU
cnVlKQoKCXBhY2thZ2VzID0gYmIuZGF0YS5nZXRWYXIoJ1BBQ0tBR0VTJywgZCwgVHJ1ZSkuc3Bs
aXQoKQoKCWlmIHBvc3RpbnN0OgoJCXBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJyArIHBvc3RpbnN0
ICsgJ1xuJwoJaWYgcG9zdHJtOgoJCXBvc3RybSA9ICcjIS9iaW4vc2hcbicgKyBwb3N0cm0gKyAn
XG4nCglpZiBub3QgcmVjdXJzaXZlOgoJCW9ianMgPSBvcy5saXN0ZGlyKGR2YXIgKyByb290KQoJ
ZWxzZToKCQlvYmpzID0gW10KCQlmb3Igd2Fsa3Jvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGso
ZHZhciArIHJvb3QpOgoJCQlmb3IgZmlsZSBpbiBmaWxlczoKCQkJCXJlbHBhdGggPSBvcy5wYXRo
LmpvaW4od2Fsa3Jvb3QsIGZpbGUpLnJlcGxhY2UoZHZhciArIHJvb3QgKyAnLycsICcnLCAxKQoJ
CQkJaWYgcmVscGF0aDoKCQkJCQlvYmpzLmFwcGVuZChyZWxwYXRoKQoKCWlmIGV4dHJhX2RlcGVu
ZHMgPT0gTm9uZToKCQkjIFRoaXMgaXMgKnJlYWxseSogYnJva2VuCgkJbWFpbnBrZyA9IHBhY2th
Z2VzWzBdCgkJIyBBdCBsZWFzdCB0cnkgYW5kIHBhdGNoIGl0IHVwIEkgZ3Vlc3MuLi4KCQlpZiBt
YWlucGtnLmZpbmQoJy1kYmcnKToKCQkJbWFpbnBrZyA9IG1haW5wa2cucmVwbGFjZSgnLWRiZycs
ICcnKQoJCWlmIG1haW5wa2cuZmluZCgnLWRldicpOgoJCQltYWlucGtnID0gbWFpbnBrZy5yZXBs
YWNlKCctZGV2JywgJycpCgkJZXh0cmFfZGVwZW5kcyA9IG1haW5wa2cKCglmb3IgbyBpbiBvYmpz
OgoJCWltcG9ydCByZSwgc3RhdAoJCWlmIG1hdGNoX3BhdGg6CgkJCW0gPSByZS5tYXRjaChmaWxl
X3JlZ2V4LCBvKQoJCWVsc2U6CgkJCW0gPSByZS5tYXRjaChmaWxlX3JlZ2V4LCBvcy5wYXRoLmJh
c2VuYW1lKG8pKQoKCQlpZiBub3QgbToKCQkJY29udGludWUKCQlmID0gb3MucGF0aC5qb2luKGR2
YXIgKyByb290LCBvKQoJCW1vZGUgPSBvcy5sc3RhdChmKS5zdF9tb2RlCgkJaWYgbm90IChzdGF0
LlNfSVNSRUcobW9kZSkgb3IgKGFsbG93X2xpbmtzIGFuZCBzdGF0LlNfSVNMTksobW9kZSkpIG9y
IChhbGxvd19kaXJzIGFuZCBzdGF0LlNfSVNESVIobW9kZSkpKToKCQkJY29udGludWUKCQlvbiA9
IGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKG0uZ3JvdXAoMSkpCgkJcGtnID0gb3V0cHV0X3BhdHRl
cm4gJSBvbgoJCWlmIG5vdCBwa2cgaW4gcGFja2FnZXM6CgkJCWlmIHByZXBlbmQ6CgkJCQlwYWNr
YWdlcyA9IFtwa2ddICsgcGFja2FnZXMKCQkJZWxzZToKCQkJCXBhY2thZ2VzLmFwcGVuZChwa2cp
CgkJb2xkZmlsZXMgPSBiYi5kYXRhLmdldFZhcignRklMRVNfJyArIHBrZywgZCwgVHJ1ZSkKCQlp
ZiBub3Qgb2xkZmlsZXM6CgkJCXRoZV9maWxlcyA9IFtvcy5wYXRoLmpvaW4ocm9vdCwgbyldCgkJ
CWlmIGF1eF9maWxlc19wYXR0ZXJuOgoJCQkJaWYgdHlwZShhdXhfZmlsZXNfcGF0dGVybikgaXMg
bGlzdDoKCQkJCQlmb3IgZnAgaW4gYXV4X2ZpbGVzX3BhdHRlcm46CgkJCQkJCXRoZV9maWxlcy5h
cHBlbmQoZnAgJSBvbikKCQkJCWVsc2U6CgkJCQkJdGhlX2ZpbGVzLmFwcGVuZChhdXhfZmlsZXNf
cGF0dGVybiAlIG9uKQoJCQlpZiBhdXhfZmlsZXNfcGF0dGVybl92ZXJiYXRpbToKCQkJCWlmIHR5
cGUoYXV4X2ZpbGVzX3BhdHRlcm5fdmVyYmF0aW0pIGlzIGxpc3Q6CgkJCQkJZm9yIGZwIGluIGF1
eF9maWxlc19wYXR0ZXJuX3ZlcmJhdGltOgoJCQkJCQl0aGVfZmlsZXMuYXBwZW5kKGZwICUgbS5n
cm91cCgxKSkKCQkJCWVsc2U6CgkJCQkJdGhlX2ZpbGVzLmFwcGVuZChhdXhfZmlsZXNfcGF0dGVy
bl92ZXJiYXRpbSAlIG0uZ3JvdXAoMSkpCgkJCWJiLmRhdGEuc2V0VmFyKCdGSUxFU18nICsgcGtn
LCAiICIuam9pbih0aGVfZmlsZXMpLCBkKQoJCQlpZiBleHRyYV9kZXBlbmRzICE9ICcnOgoJCQkJ
dGhlX2RlcGVuZHMgPSBiYi5kYXRhLmdldFZhcignUkRFUEVORFNfJyArIHBrZywgZCwgVHJ1ZSkK
CQkJCWlmIHRoZV9kZXBlbmRzOgoJCQkJCXRoZV9kZXBlbmRzID0gJyVzICVzJyAlICh0aGVfZGVw
ZW5kcywgZXh0cmFfZGVwZW5kcykKCQkJCWVsc2U6CgkJCQkJdGhlX2RlcGVuZHMgPSBleHRyYV9k
ZXBlbmRzCgkJCQliYi5kYXRhLnNldFZhcignUkRFUEVORFNfJyArIHBrZywgdGhlX2RlcGVuZHMs
IGQpCgkJCWJiLmRhdGEuc2V0VmFyKCdERVNDUklQVElPTl8nICsgcGtnLCBkZXNjcmlwdGlvbiAl
IG9uLCBkKQoJCQlpZiBwb3N0aW5zdDoKCQkJCWJiLmRhdGEuc2V0VmFyKCdwa2dfcG9zdGluc3Rf
JyArIHBrZywgcG9zdGluc3QsIGQpCgkJCWlmIHBvc3RybToKCQkJCWJiLmRhdGEuc2V0VmFyKCdw
a2dfcG9zdHJtXycgKyBwa2csIHBvc3RybSwgZCkKCQllbHNlOgoJCQliYi5kYXRhLnNldFZhcign
RklMRVNfJyArIHBrZywgb2xkZmlsZXMgKyAiICIgKyBvcy5wYXRoLmpvaW4ocm9vdCwgbyksIGQp
CgkJaWYgY2FsbGFibGUoaG9vayk6CgkJCWhvb2soZiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRf
cGF0dGVybiwgbS5ncm91cCgxKSkKCgliYi5kYXRhLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9p
bihwYWNrYWdlcyksIGQpCn0KCgpweXRob24gc3N0YXRlX3N0YXRlX2Zyb212YXJzICgpIHsKZGVm
IHNzdGF0ZV9zdGF0ZV9mcm9tdmFycyhkLCB0YXNrID0gTm9uZSk6CiAgICBpZiB0YXNrIGlzIE5v
bmU6CiAgICAgICAgdGFzayA9IGJiLmRhdGEuZ2V0VmFyKCdCQl9DVVJSRU5UVEFTSycsIGQsIFRy
dWUpCiAgICAgICAgaWYgbm90IHRhc2s6CiAgICAgICAgICAgIGJiLmZhdGFsKCJzc3RhdGUgY29k
ZSBydW5uaW5nIHdpdGhvdXQgdGFzayBjb250ZXh0PyEiKQogICAgICAgIHRhc2sgPSB0YXNrLnJl
cGxhY2UoIl9zZXRzY2VuZSIsICIiKQoKICAgIG5hbWUgPSBiYi5kYXRhLmV4cGFuZChiYi5kYXRh
LmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRlLW5hbWUnLCBkKSwgZCkKICAgIGlucHV0
cyA9IChiYi5kYXRhLmV4cGFuZChiYi5kYXRhLmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0
YXRlLWlucHV0ZGlycycsIGQpIG9yICIiLCBkKSkuc3BsaXQoKQogICAgb3V0cHV0cyA9IChiYi5k
YXRhLmV4cGFuZChiYi5kYXRhLmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRlLW91dHB1
dGRpcnMnLCBkKSBvciAiIiwgZCkpLnNwbGl0KCkKICAgIHBsYWluZGlycyA9IChiYi5kYXRhLmV4
cGFuZChiYi5kYXRhLmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRlLXBsYWluZGlycycs
IGQpIG9yICIiLCBkKSkuc3BsaXQoKQogICAgbG9ja2ZpbGVzID0gKGJiLmRhdGEuZXhwYW5kKGJi
LmRhdGEuZ2V0VmFyRmxhZygiZG9fIiArIHRhc2ssICdzc3RhdGUtbG9ja2ZpbGUnLCBkKSBvciAi
IiwgZCkpLnNwbGl0KCkKICAgIGxvY2tmaWxlc3NoYXJlZCA9IChiYi5kYXRhLmV4cGFuZChiYi5k
YXRhLmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRlLWxvY2tmaWxlLXNoYXJlZCcsIGQp
IG9yICIiLCBkKSkuc3BsaXQoKQogICAgaW50ZXJjZXB0ZnVuY3MgPSAoYmIuZGF0YS5leHBhbmQo
YmIuZGF0YS5nZXRWYXJGbGFnKCJkb18iICsgdGFzaywgJ3NzdGF0ZS1pbnRlcmNlcHRmdW5jcycs
IGQpIG9yICIiLCBkKSkuc3BsaXQoKQogICAgaWYgbm90IG5hbWUgb3IgbGVuKGlucHV0cykgIT0g
bGVuKG91dHB1dHMpOgogICAgICAgIGJiLmZhdGFsKCJzc3RhdGUgdmFyaWFibGVzIG5vdCBzZXR1
cCBjb3JyZWN0bHk/ISIpCgogICAgc3MgPSBzc3RhdGVfaW5pdChuYW1lLCB0YXNrLCBkKQogICAg
Zm9yIGkgaW4gcmFuZ2UobGVuKGlucHV0cykpOgogICAgICAgIHNzdGF0ZV9hZGQoc3MsIGlucHV0
c1tpXSwgb3V0cHV0c1tpXSwgZCkKICAgIHNzWydsb2NrZmlsZXMnXSA9IGxvY2tmaWxlcwogICAg
c3NbJ2xvY2tmaWxlcy1zaGFyZWQnXSA9IGxvY2tmaWxlc3NoYXJlZAogICAgc3NbJ3BsYWluZGly
cyddID0gcGxhaW5kaXJzCiAgICBzc1snaW50ZXJjZXB0ZnVuY3MnXSA9IGludGVyY2VwdGZ1bmNz
CiAgICByZXR1cm4gc3MKfQoKCnB5dGhvbiBzZXRfZGlza2RhdGEgKCkgewpkZWYgc2V0X2Rpc2tk
YXRhKHZhciwgZGV2LCBkYXRhKToKICAgIGRhdGEuc2V0VmFyKHZhciwgZ2V0X2Rpc2tzdGF0cyhk
ZXYpKQp9CgoKcHl0aG9uIGRvX3BhY2thZ2Vfd3JpdGVfcnBtICgpIHsKCWJiLmJ1aWxkLmV4ZWNf
ZnVuYygicmVhZF9zdWJwYWNrYWdlX21ldGFkYXRhIiwgZCkKCWJiLmJ1aWxkLmV4ZWNfZnVuYygi
ZG9fcGFja2FnZV9ycG0iLCBkKQp9CgoKcHl0aG9uIGdldF9ibiAoKSB7CmRlZiBnZXRfYm4oZSk6
CiAgICBmaWxlID0gb3BlbihiYi5kYXRhLmdldFZhcignQk5GSUxFJywgZS5kYXRhLCBUcnVlKSkK
ICAgIGJuID0gZmlsZS5yZWFkbGluZSgpCiAgICBmaWxlLmNsb3NlKCkKICAgIHJldHVybiBibgp9
CgoKcHl0aG9uIGNoZWNrX2FwcF9leGlzdHMgKCkgewpkZWYgY2hlY2tfYXBwX2V4aXN0cyhhcHAs
IGQpOgoJZnJvbSBiYiBpbXBvcnQgd2hpY2gsIGRhdGEKCglhcHAgPSBkYXRhLmV4cGFuZChhcHAs
IGQpCglwYXRoID0gZGF0YS5nZXRWYXIoJ1BBVEgnLCBkLCAxKQoJcmV0dXJuIGJvb2wod2hpY2go
cGF0aCwgYXBwKSkKfQoKCnB5dGhvbiBiYXNlX2NvbmRpdGlvbmFsICgpIHsKZGVmIGJhc2VfY29u
ZGl0aW9uYWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6
CiAgICByZXR1cm4gb2UudXRpbHMuY29uZGl0aW9uYWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRy
dWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKfQoKCnB5dGhvbiBzc3RhdGVfY2xlYW5fbWFuaWZlc3Qg
KCkgewpkZWYgc3N0YXRlX2NsZWFuX21hbmlmZXN0KG1hbmlmZXN0LCBkKToKICAgIGltcG9ydCBv
ZS5wYXRoCgogICAgbWZpbGUgPSBvcGVuKG1hbmlmZXN0KQogICAgZW50cmllcyA9IG1maWxlLnJl
YWRsaW5lcygpCiAgICBtZmlsZS5jbG9zZSgpCgogICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CiAg
ICAgICAgZW50cnkgPSBlbnRyeS5zdHJpcCgpCiAgICAgICAgYmIuZGVidWcoMiwgIlJlbW92aW5n
IG1hbmlmZXN0OiAlcyIgJSBlbnRyeSkKICAgICAgICAjIFdlIGNhbiByYWNlIGFnYWluc3QgYW5v
dGhlciBwYWNrYWdlIHBvcHVsYXRpbmcgZGlyZWN0b3JpZXMgYXMgd2UncmUgcmVtb3ZpbmcgdGhl
bQogICAgICAgICMgc28gd2UgaWdub3JlIGVycm9ycyBoZXJlLgogICAgICAgIHRyeToKICAgICAg
ICAgICAgaWYgZW50cnkuZW5kc3dpdGgoIi8iKToKICAgICAgICAgICAgICAgaWYgb3MucGF0aC5p
c2xpbmsoZW50cnlbOi0xXSk6CiAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShlbnRyeVs6LTFd
KQogICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKGVudHJ5KSBhbmQgbGVuKG9zLmxp
c3RkaXIoZW50cnkpKSA9PSAwOgogICAgICAgICAgICAgICAgICBvcy5ybWRpcihlbnRyeVs6LTFd
KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb2UucGF0aC5yZW1vdmUoZW50cnkp
CiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBvZS5wYXRoLnJl
bW92ZShtYW5pZmVzdCkKfQoKCnB5dGhvbiBiYXNlX3BhdGhfam9pbiAoKSB7CmRlZiBiYXNlX3Bh
dGhfam9pbihhLCAqcCk6CiAgICByZXR1cm4gb2UucGF0aC5qb2luKGEsICpwKQp9CgoKcHl0aG9u
IGJhc2VfZ2V0X21ldGFkYXRhX3N2bl9yZXZpc2lvbiAoKSB7CmRlZiBiYXNlX2dldF9tZXRhZGF0
YV9zdm5fcmV2aXNpb24ocGF0aCwgZCk6CglyZXZpc2lvbiA9ICI8dW5rbm93bj4iCgl0cnk6CgkJ
cmV2aXNpb24gPSBmaWxlKCAiJXMvLnN2bi9lbnRyaWVzIiAlIHBhdGggKS5yZWFkbGluZXMoKVsz
XS5zdHJpcCgpCglleGNlcHQgSU9FcnJvcjoKCQlwYXNzCglyZXR1cm4gcmV2aXNpb24KfQoKCnB5
dGhvbiBiYXNlX2dldF9tZXRhZGF0YV9tb25vdG9uZV9icmFuY2ggKCkgewpkZWYgYmFzZV9nZXRf
bWV0YWRhdGFfbW9ub3RvbmVfYnJhbmNoKHBhdGgsIGQpOgoJbW9ub3RvbmVfYnJhbmNoID0gIjx1
bmtub3duPiIKCXRyeToKCQltb25vdG9uZV9icmFuY2ggPSBmaWxlKCAiJXMvX01UTi9vcHRpb25z
IiAlIHBhdGggKS5yZWFkKCkuc3RyaXAoKQoJCWlmIG1vbm90b25lX2JyYW5jaC5zdGFydHN3aXRo
KCAiZGF0YWJhc2UiICk6CgkJCW1vbm90b25lX2JyYW5jaF93b3JkcyA9IG1vbm90b25lX2JyYW5j
aC5zcGxpdCgpCgkJCW1vbm90b25lX2JyYW5jaCA9IG1vbm90b25lX2JyYW5jaF93b3Jkc1sgbW9u
b3RvbmVfYnJhbmNoX3dvcmRzLmluZGV4KCAiYnJhbmNoIiApKzFdWzE6LTFdCglleGNlcHQ6CgkJ
cGFzcwoJcmV0dXJuIG1vbm90b25lX2JyYW5jaAp9CgoKcHl0aG9uIG5vcm1hbF9ncm91cHMgKCkg
ewpkZWYgbm9ybWFsX2dyb3VwcyhkKToKICAgICIiIlJldHVybiBhbGwgdGhlIElNQUdFX0ZFQVRV
UkVTLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygb3VyIHNwZWNpYWwgcGFja2FnZSBncm91cHMiIiIK
ICAgIGV4dHJhcyA9IHNldChbJ2Rldi1wa2dzJywgJ2RvYy1wa2dzJywgJ2RiZy1wa2dzJ10pCiAg
ICBmZWF0dXJlcyA9IHNldChvZS5kYXRhLnR5cGVkX3ZhbHVlKCdJTUFHRV9GRUFUVVJFUycsIGQp
KQogICAgcmV0dXJuIGZlYXR1cmVzLmRpZmZlcmVuY2UoZXh0cmFzKQp9CgoKcHl0aG9uIHNzdGF0
ZV9pbnN0YWxscGtnICgpIHsKZGVmIHNzdGF0ZV9pbnN0YWxscGtnKHNzLCBkKToKICAgIGltcG9y
dCBvZS5wYXRoCgogICAgZGVmIHByZXBkaXIoZGlyKToKICAgICAgICAjIHJlbW92ZSBkaXIgaWYg
aXQgZXhpc3RzLCBlbnN1cmUgYW55IHBhcmVudCBkaXJlY3RvcmllcyBkbyBleGlzdAogICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKGRpcikK
ICAgICAgICBiYi5ta2RpcmhpZXIoZGlyKQogICAgICAgIG9lLnBhdGgucmVtb3ZlKGRpcikKCiAg
ICBzc3RhdGVpbnN0ID0gYmIuZGF0YS5leHBhbmQoIi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1m
c2wtbGludXgtZ251c3BlL2ZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwL3NzdGF0ZS1pbnN0YWxsLSVz
LyIgJSBzc1snbmFtZSddLCBkKQogICAgc3N0YXRlcGtnID0gYmIuZGF0YS5leHBhbmQoIi9vcHQv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zc3RhdGUtY2FjaGUvc3N0YXRlLWZzbC1pbWFnZS1z
aW1wbGUtcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZS0xLjAtcjAtcDEwMjByZGItMi0ke0JCX1RB
U0tIQVNIfSIgKyAnXycgKyBzc1snbmFtZSddICsgIi50eHoiLCBkKQoKICAgIGlmIG5vdCBvcy5w
YXRoLmV4aXN0cyhzc3RhdGVwa2cpOgogICAgICAgcHN0YWdpbmdfZmV0Y2goc3N0YXRlcGtnLCBk
KQoKICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzc3RhdGVwa2cpOgogICAgICAgIGJiLm5vdGUo
IlN0YWdpbmcgcGFja2FnZSAlcyBkb2VzIG5vdCBleGlzdCIgJSBzc3RhdGVwa2cpCiAgICAgICAg
cmV0dXJuIEZhbHNlCgogICAgc3N0YXRlX2NsZWFuKHNzLCBkKQoKICAgIGJiLmRhdGEuc2V0VmFy
KCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWluc3QsIGQpCiAgICBiYi5kYXRhLnNldFZhcignU1NU
QVRFX1BLRycsIHNzdGF0ZXBrZywgZCkKICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnc3N0YXRlX3Vu
cGFja19wYWNrYWdlJywgZCkKCiAgICAjIEZpeHVwIGhhcmRjb2RlZCBwYXRocwogICAgZml4bWVm
biA9ICBzc3RhdGVpbnN0ICsgImZpeG1lcGF0aCIKICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpeG1l
Zm4pOgogICAgICAgIHN0YWdpbmcgPSBiYi5kYXRhLmdldFZhcignU1RBR0lOR19ESVInLCBkLCBU
cnVlKQogICAgICAgIHN0YWdpbmdfdGFyZ2V0ID0gYmIuZGF0YS5nZXRWYXIoJ1NUQUdJTkdfRElS
X1RBUkdFVCcsIGQsIFRydWUpCiAgICAgICAgc3RhZ2luZ19ob3N0ID0gYmIuZGF0YS5nZXRWYXIo
J1NUQUdJTkdfRElSX0hPU1QnLCBkLCBUcnVlKQogICAgICAgIGZpeG1lZmQgPSBvcGVuKGZpeG1l
Zm4sICJyIikKICAgICAgICBmaXhtZWZpbGVzID0gZml4bWVmZC5yZWFkbGluZXMoKQogICAgICAg
IGZpeG1lZmQuY2xvc2UoKQogICAgICAgIGZvciBmaWxlIGluIGZpeG1lZmlsZXM6CiAgICAgICAg
ICAgIG9zLnN5c3RlbSgic2VkIC1pIC1lIHM6RklYTUVTVEFHSU5HRElSVEFSR0VUOiVzOmcgJXMi
ICUgKHN0YWdpbmdfdGFyZ2V0LCBzc3RhdGVpbnN0ICsgZmlsZSkpCiAgICAgICAgICAgIG9zLnN5
c3RlbSgic2VkIC1pIC1lIHM6RklYTUVTVEFHSU5HRElSSE9TVDolczpnICVzIiAlIChzdGFnaW5n
X2hvc3QsIHNzdGF0ZWluc3QgKyBmaWxlKSkKICAgICAgICAgICAgb3Muc3lzdGVtKCJzZWQgLWkg
LWUgczpGSVhNRVNUQUdJTkdESVI6JXM6ZyAlcyIgJSAoc3RhZ2luZywgc3N0YXRlaW5zdCArIGZp
bGUpKQogICAgICAgICMgTmVlZCB0byByZW1vdmUgdGhpcyBvciB3ZSdkIGNvcHkgaXQgaW50byB0
aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgbWF5CiAgICAgICAgIyBjb25mbGljdCB3aXRoIGFub3Ro
ZXIgd3JpdGVyCiAgICAgICAgb3MucmVtb3ZlKGZpeG1lZm4pCgogICAgZm9yIHN0YXRlIGluIHNz
WydkaXJzJ106CiAgICAgICAgcHJlcGRpcihzdGF0ZVsxXSkKICAgICAgICBvcy5yZW5hbWUoc3N0
YXRlaW5zdCArIHN0YXRlWzBdLCBzdGF0ZVsxXSkKICAgIHNzdGF0ZV9pbnN0YWxsKHNzLCBkKQoK
ICAgIGZvciBwbGFpbiBpbiBzc1sncGxhaW5kaXJzJ106CiAgICAgICAgd29ya2RpciA9IGQuZ2V0
VmFyKCdXT1JLRElSJywgVHJ1ZSkKICAgICAgICBzcmMgPSBzc3RhdGVpbnN0ICsgIi8iICsgcGxh
aW4ucmVwbGFjZSh3b3JrZGlyLCAnJykKICAgICAgICBkZXN0ID0gcGxhaW4KICAgICAgICBiYi5t
a2RpcmhpZXIoc3JjKQogICAgICAgIHByZXBkaXIoZGVzdCkKICAgICAgICBvcy5yZW5hbWUoc3Jj
LCBkZXN0KQoKICAgIHJldHVybiBUcnVlCn0KCgpweXRob24gZ2V0X3Byb2Nlc3NfY3B1dGltZSAo
KSB7CmRlZiBnZXRfcHJvY2Vzc19jcHV0aW1lKHBpZCk6CiAgICBmaWVsZHMgPSBvcGVuKCIvcHJv
Yy8lZC9zdGF0IiAlIHBpZCwgInIiKS5yZWFkbGluZSgpLnJzdHJpcCgpLnNwbGl0KCkKICAgICMg
MTM6IHV0aW1lLCAxNDogc3RpbWUsIDE1OiBjdXRpbWUsIDE2OiBjc3RpbWUKICAgIHJldHVybiBz
dW0oaW50KGZpZWxkKSBmb3IgZmllbGQgaW4gZmllbGRzWzEzOjE2XSkKfQoKCnB5dGhvbiBwYWNr
YWdlX2RvX3NwbGl0X2xvY2FsZXMgKCkgewoJaWYgKGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFX05P
X0xPQ0FMRScsIGQsIFRydWUpID09ICcxJyk6CgkJYmIuZGVidWcoMSwgInBhY2thZ2UgcmVxdWVz
dGVkIG5vdCBzcGxpdHRpbmcgbG9jYWxlcyIpCgkJcmV0dXJuCgoJcGFja2FnZXMgPSAoYmIuZGF0
YS5nZXRWYXIoJ1BBQ0tBR0VTJywgZCwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKCglkYXRhZGlyID0g
YmIuZGF0YS5nZXRWYXIoJ2RhdGFkaXInLCBkLCBUcnVlKQoJaWYgbm90IGRhdGFkaXI6CgkJYmIu
bm90ZSgiZGF0YWRpciBub3QgZGVmaW5lZCIpCgkJcmV0dXJuCgoJZHZhciA9IGJiLmRhdGEuZ2V0
VmFyKCdQS0dEJywgZCwgVHJ1ZSkKCXBuID0gYmIuZGF0YS5nZXRWYXIoJ1BOJywgZCwgVHJ1ZSkK
CglpZiBwbiArICctbG9jYWxlJyBpbiBwYWNrYWdlczoKCQlwYWNrYWdlcy5yZW1vdmUocG4gKyAn
LWxvY2FsZScpCgoJbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKGR2YXIgKyBkYXRhZGlyLCAnbG9j
YWxlJykKCglpZiBub3Qgb3MucGF0aC5pc2Rpcihsb2NhbGVkaXIpOgoJCWJiLmRlYnVnKDEsICJO
byBsb2NhbGUgZmlsZXMgaW4gdGhpcyBwYWNrYWdlIikKCQlyZXR1cm4KCglsb2NhbGVzID0gb3Mu
bGlzdGRpcihsb2NhbGVkaXIpCgoJIyBUaGlzIGlzICpyZWFsbHkqIGJyb2tlbgoJbWFpbnBrZyA9
IHBhY2thZ2VzWzBdCgkjIEF0IGxlYXN0IHRyeSBhbmQgcGF0Y2ggaXQgdXAgSSBndWVzcy4uLgoJ
aWYgbWFpbnBrZy5maW5kKCctZGJnJyk6CgkJbWFpbnBrZyA9IG1haW5wa2cucmVwbGFjZSgnLWRi
ZycsICcnKQoJaWYgbWFpbnBrZy5maW5kKCctZGV2Jyk6CgkJbWFpbnBrZyA9IG1haW5wa2cucmVw
bGFjZSgnLWRldicsICcnKQoKCXN1bW1hcnkgPSBiYi5kYXRhLmdldFZhcignU1VNTUFSWScsIGQs
IFRydWUpIG9yIHBuCglkZXNjcmlwdGlvbiA9IGJiLmRhdGEuZ2V0VmFyKCdERVNDUklQVElPTics
IGQsIFRydWUpIG9yICIiCiAgICAgICAgbG9jYWxlX3NlY3Rpb24gPSBiYi5kYXRhLmdldFZhcign
TE9DQUxFX1NFQ1RJT04nLCBkLCBUcnVlKQoJZm9yIGwgaW4gbG9jYWxlczoKCQlsbiA9IGxlZ2l0
aW1pemVfcGFja2FnZV9uYW1lKGwpCgkJcGtnID0gcG4gKyAnLWxvY2FsZS0nICsgbG4KCQlwYWNr
YWdlcy5hcHBlbmQocGtnKQoJCWJiLmRhdGEuc2V0VmFyKCdGSUxFU18nICsgcGtnLCBvcy5wYXRo
LmpvaW4oZGF0YWRpciwgJ2xvY2FsZScsIGwpLCBkKQoJCWJiLmRhdGEuc2V0VmFyKCdSREVQRU5E
U18nICsgcGtnLCAnJXMgdmlydHVhbC1sb2NhbGUtJXMnICUgKG1haW5wa2csIGxuKSwgZCkKCQli
Yi5kYXRhLnNldFZhcignUlBST1ZJREVTXycgKyBwa2csICclcy1sb2NhbGUgJXMtdHJhbnNsYXRp
b24nICUgKHBuLCBsbiksIGQpCgkJYmIuZGF0YS5zZXRWYXIoJ1NVTU1BUllfJyArIHBrZywgJyVz
IC0gJXMgdHJhbnNsYXRpb25zJyAlIChzdW1tYXJ5LCBsKSwgZCkKCQliYi5kYXRhLnNldFZhcign
REVTQ1JJUFRJT05fJyArIHBrZywgJyVzICBUaGlzIHBhY2thZ2UgY29udGFpbnMgbGFuZ3VhZ2Ug
dHJhbnNsYXRpb24gZmlsZXMgZm9yIHRoZSAlcyBsb2NhbGUuJyAlIChkZXNjcmlwdGlvbiwgbCks
IGQpCgkJaWYgbG9jYWxlX3NlY3Rpb246CgkJCWJiLmRhdGEuc2V0VmFyKCdTRUNUSU9OXycgKyBw
a2csIGxvY2FsZV9zZWN0aW9uLCBkKQoKCWJiLmRhdGEuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5q
b2luKHBhY2thZ2VzKSwgZCkKCgkjIERpc2FibGVkIGJ5IFJQIDE4LzA2LzA3CgkjIFdpbGRjYXJk
cyBhcmVuJ3Qgc3VwcG9ydGVkIGluIGRlYmlhbgoJIyBUaGV5IGJyZWFrIHdpdGggaXBrZyBzaW5j
ZSBnbGliYy1sb2NhbGUqIHdpbGwgbWVhbiB0aGF0CgkjIGdsaWJjLWxvY2FsZWRhdGEtdHJhbnNs
aXQqIHdvbid0IGluc3RhbGwgYXMgYSBkZXBlbmRlbmN5CgkjIGZvciBzb21lIG90aGVyIHBhY2th
Z2Ugd2hpY2ggYnJlYWtzIG1ldGEtdG9vbGNoYWluCgkjIFByb2JhYmx5IGJyZWFrcyBzaW5jZSB2
aXJ0dWFsLWxvY2FsZS0gaXNuJ3QgcHJvdmlkZWQgYW55d2hlcmUKCSNyZGVwID0gKGJiLmRhdGEu
Z2V0VmFyKCdSREVQRU5EU18lcycgJSBtYWlucGtnLCBkLCBUcnVlKSBvciBiYi5kYXRhLmdldFZh
cignUkRFUEVORFMnLCBkLCBUcnVlKSBvciAiIikuc3BsaXQoKQoJI3JkZXAuYXBwZW5kKCclcy1s
b2NhbGUqJyAlIHBuKQoJI2JiLmRhdGEuc2V0VmFyKCdSREVQRU5EU18lcycgJSBtYWlucGtnLCAn
ICcuam9pbihyZGVwKSwgZCkKfQoKCnB5dGhvbiBjaGVja19wc2V1ZG9fd3JhcHBlciAoKSB7CmRl
ZiBjaGVja19wc2V1ZG9fd3JhcHBlcigpOgogICAgaW1wb3J0IHN5cwogICAgaWYgbm90IHN5cy5h
cmd2WzBdLmVuZHN3aXRoKCcvYml0YmFrZScpOgogICAgICAgIHJldHVybiAiIgoKICAgIGltcG9y
dCBzdWJwcm9jZXNzIGFzIHN1YgogICAgIyBDaGVjayBpZiBiaXRiYWtlIHdyYXBwZXIgaXMgYmVp
bmcgdXNlZAogICAgcHNldWRvX2J1aWxkID0gb3MuZW52aXJvbi5nZXQoICdQU0VVRE9fQlVJTEQn
ICkKICAgIGlmIG5vdCBwc2V1ZG9fYnVpbGQ6CiAgICAgICAgYmIud2FybigiQml0YmFrZSBoYXMg
bm90IGJlZW4gcnVuIHVzaW5nIHRoZSBiaXRiYWtlIHdyYXBwZXIgKHNjcmlwdHMvYml0YmFrZSk7
IHRoaXMgaXMgbGlrZWx5IGJlY2F1c2UgeW91ciBQQVRIIGhhcyBiZWVuIGFsdGVyZWQgZnJvbSB0
aGF0IG5vcm1hbGx5IHNldCB1cCBieSB0aGUgb2UtaW5pdC1idWlsZC1lbnYgc2NyaXB0LiBOb3Qg
dXNpbmcgdGhlIHdyYXBwZXIgbWF5IHJlc3VsdCBpbiBmYWlsdXJlcyBkdXJpbmcgcGFja2FnZSBp
bnN0YWxsYXRpb24sIHNvIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBzZXQgeW91
ciBQQVRIIGJhY2sgc28gdGhhdCB0aGUgd3JhcHBlciBzY3JpcHQgaXMgYmVpbmcgZXhlY3V0ZWQu
IikKCiAgICBpZiAobm90IHBzZXVkb19idWlsZCkgb3IgcHNldWRvX2J1aWxkID09ICcyJzoKICAg
ICAgICAjIHBzZXVkbyBvdWdodCB0byBiZSB3b3JraW5nLCBsZXQncyBzZWUgaWYgaXQgaXMuLi4K
ICAgICAgICBwID0gc3ViLlBvcGVuKFsnc2gnLCAnLWMnLCAnUFNFVURPX0RJU0FCTEVEPTAgaWQg
LXUnXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQogICAgICAgIG91dCwgZXJyID0g
cC5jb21tdW5pY2F0ZSgpCiAgICAgICAgaWYgb3V0LnJzdHJpcCgpICE9ICcwJzoKICAgICAgICAg
ICAgbXNnID0gIlBzZXVkbyBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5LCB3aGljaCB3aWxs
IGNhdXNlIGZhaWx1cmVzIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbi4gUGxlYXNlIGNoZWNr
IHlvdXIgY29uZmlndXJhdGlvbi4iCiAgICAgICAgICAgIGlmIHBzZXVkb19idWlsZCA9PSAnMic6
CiAgICAgICAgICAgICAgICByZXR1cm4gbXNnCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICBiYi53YXJuKG1zZykKICAgIHJldHVybiAiIgp9CgoKcHl0aG9uIHNzdGF0ZV9hZGQgKCkg
ewpkZWYgc3N0YXRlX2FkZChzcywgc291cmNlLCBkZXN0LCBkKToKICAgIHNyY2Jhc2UgPSBvcy5w
YXRoLmJhc2VuYW1lKHNvdXJjZSkKICAgIHNzWydkaXJzJ10uYXBwZW5kKFtzcmNiYXNlLCBzb3Vy
Y2UsIGRlc3RdKQogICAgcmV0dXJuIHNzCn0KCgpweXRob24gZG9fcWFfY29uZmlndXJlICgpIHsK
ICAgIGNvbmZpZ3MgPSBbXQogICAgd29ya2RpciA9IGJiLmRhdGEuZ2V0VmFyKCdXT1JLRElSJywg
ZCwgVHJ1ZSkKICAgIGJiLm5vdGUoIkNoZWNraW5nIGF1dG90b29scyBlbnZpcm9ubWVudCBmb3Ig
Y29tbW9uIG1pc2NvbmZpZ3VyYXRpb24iKQogICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9z
LndhbGsod29ya2Rpcik6CiAgICAgICAgc3RhdGVtZW50ID0gImdyZXAgLWUgJ0NST1NTIENPTVBJ
TEUgQmFkbmVzczonIC1lICdpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uJyAlcyA+IC9k
ZXYvbnVsbCIgJSBcCiAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJvb3QsImNvbmZp
Zy5sb2ciKQogICAgICAgIGlmICJjb25maWcubG9nIiBpbiBmaWxlczoKICAgICAgICAgICAgaWYg
b3Muc3lzdGVtKHN0YXRlbWVudCkgPT0gMDoKICAgICAgICAgICAgICAgIGJiLmZhdGFsKCIiIlRo
aXMgYXV0b2NvbmYgbG9nIGluZGljYXRlcyBlcnJvcnMsIGl0IGxvb2tlZCBhdCBob3N0IGluY2x1
ZGUgYW5kL29yIGxpYnJhcnkgcGF0aHMgd2hpbGUgZGV0ZXJtaW5pbmcgc3lzdGVtIGNhcGFiaWxp
dGllcy4KUmVydW4gY29uZmlndXJlIHRhc2sgYWZ0ZXIgZml4aW5nIHRoaXMuIFRoZSBwYXRoIHdh
cyAnJXMnIiIiICUgcm9vdCkKCiAgICAgICAgaWYgImNvbmZpZ3VyZS5hYyIgaW4gZmlsZXM6CiAg
ICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKG9zLnBhdGguam9pbihyb290LCJjb25maWd1cmUuYWMi
KSkKICAgICAgICBpZiAiY29uZmlndXJlLmluIiBpbiBmaWxlczoKICAgICAgICAgICAgY29uZmln
cy5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsICJjb25maWd1cmUuaW4iKSkKCiAgICBjbmYgPSBi
Yi5kYXRhLmdldFZhcignRVhUUkFfT0VDT05GJywgZCwgVHJ1ZSkgb3IgIiIKICAgIGlmICJnZXR0
ZXh0IiBub3QgaW4gYmIuZGF0YS5nZXRWYXIoJ1AnLCBkLCBUcnVlKSBhbmQgImdjYy1ydW50aW1l
IiBub3QgaW4gYmIuZGF0YS5nZXRWYXIoJ1AnLCBkLCBUcnVlKSBhbmQgIi0tZGlzYWJsZS1ubHMi
IG5vdCBpbiBjbmY6CiAgICAgICBtbCA9IGQuZ2V0VmFyKCJNTFBSRUZJWCIsIFRydWUpIG9yICIi
CiAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBvciBiYi5kYXRh
LmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Ny
b3Nzc2RrJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6CiAg
ICAgICAgICBndCA9ICJnZXR0ZXh0LW5hdGl2ZSIKICAgICAgIGVsaWYgYmIuZGF0YS5pbmhlcml0
c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKICAgICAgICAgIGd0ID0gImdldHRleHQtbmF0
aXZlc2RrIgogICAgICAgZWxzZToKICAgICAgICAgIGd0ID0gInZpcnR1YWwvIiArIG1sICsgImdl
dHRleHQiCiAgICAgICBkZXBzID0gYmIudXRpbHMuZXhwbG9kZV9kZXBzKGJiLmRhdGEuZ2V0VmFy
KCdERVBFTkRTJywgZCwgVHJ1ZSkgb3IgIiIpCiAgICAgICBpZiBndCBub3QgaW4gZGVwczoKICAg
ICAgICAgIGZvciBjb25maWcgaW4gY29uZmlnczoKICAgICAgICAgICAgICBnbnUgPSAiZ3JlcCBc
Il5bWzpzcGFjZTpdXSpBTV9HTlVfR0VUVEVYVFwiICVzID4vZGV2L251bGwiICUgY29uZmlnCiAg
ICAgICAgICAgICAgaWYgb3Muc3lzdGVtKGdudSkgPT0gMDoKICAgICAgICAgICAgICAgICBiYi5m
YXRhbCgiIiIlcyByZXF1aXJlZCBidXQgbm90IGluIERFUEVORFMgZm9yIGZpbGUgJXMuCk1pc3Np
bmcgaW5oZXJpdCBnZXR0ZXh0PyIiIiAlIChndCwgY29uZmlnKSkKCiAgICBpZiBub3QgcGFja2Fn
ZV9xYV9jaGVja19saWNlbnNlKHdvcmtkaXIsIGQpOgogICAgICAgIGJiLmZhdGFsKCJMaWNlbnNp
bmcgRXJyb3I6IExJQ19GSUxFU19DSEtTVU0gZG9lcyBub3QgbWF0Y2gsIHBsZWFzZSBmaXgiKQp9
CgoKcHl0aG9uIG1hcHBpbmdfcmVuYW1lX2hvb2sgKCkgewoJYmIuYnVpbGQuZXhlY19mdW5jKCdw
YWNrYWdlX3JwbV9tYXBwaW5nX3JlbmFtZV9ob29rJywgZCkKfQoKCnB5dGhvbiBjaGVja19zdXBw
b3J0ZWRfZGlzdHJvICgpIHsKZGVmIGNoZWNrX3N1cHBvcnRlZF9kaXN0cm8oZSk6CiAgICB0ZXN0
ZWRfZGlzdHJvcyA9IGUuZGF0YS5nZXRWYXIoJ1NBTklUWV9URVNURURfRElTVFJPUycsIFRydWUp
CiAgICBpZiBub3QgdGVzdGVkX2Rpc3Ryb3M6CiAgICAgICAgcmV0dXJuCgogICAgaWYgb3MucGF0
aC5leGlzdHMoIi9ldGMvcmVkaGF0LXJlbGVhc2UiKToKICAgICAgICBmID0gb3BlbigiL2V0Yy9y
ZWRoYXQtcmVsZWFzZSIsICJyIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRpc3RybyA9IGYu
cmVhZGxpbmUoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGYuY2xvc2UoKQogICAgZWxp
ZiBvcy5wYXRoLmV4aXN0cygiL2V0Yy9TdVNFLXJlbGVhc2UiKToKICAgICAgICBmID0gb3Blbigi
L2V0Yy9TdVNFLXJlbGVhc2UiLCAiciIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkaXN0cm8g
PSBmLnJlYWRsaW5lKCkKICAgICAgICAgICAgIyBSZW1vdmUgdGhlIGFyY2hpdGVjdHVyZSBzdWZm
aXggZS5nLiAoaTU4NikKICAgICAgICAgICAgZGlzdHJvID0gcmUuc3ViKHInIFwoW2EtekEtWjAt
OVwtX10qXCkkJywgJycsIGRpc3Rybykuc3RyaXAoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAg
ICAgIGYuY2xvc2UoKQogICAgZWxzZToKICAgICAgICAjIFVzZSBMU0IgbWV0aG9kCiAgICAgICAg
aW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwID0gc3Vi
LlBvcGVuKFsnbHNiX3JlbGVhc2UnLCctZCcsJy1zJ10sc3Rkb3V0PXN1Yi5QSVBFLHN0ZGVycj1z
dWIuUElQRSkKICAgICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAg
ICAgZGlzdHJvID0gb3V0LnJzdHJpcCgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAg
ICAgICAgZGlzdHJvID0gTm9uZQoKICAgICAgICBpZiBub3QgZGlzdHJvOgogICAgICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cygiL2V0Yy9sc2ItcmVsZWFzZSIpOgogICAgICAgICAgICAgICAgZiA9
IG9wZW4oIi9ldGMvbHNiLXJlbGVhc2UiLCAiciIpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAg
ICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgICAgbG5z
ID0gbGluZS5zcGxpdCgnPScpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxuc1swXSA9PSAi
RElTVFJJQl9ERVNDUklQVElPTiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm8g
PSBsbnNbMV0uc3RyaXAoJyJcbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawog
ICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAg
IGlmIGRpc3RybzoKICAgICAgICBpZiBkaXN0cm8gbm90IGluIFt4LnN0cmlwKCkgZm9yIHggaW4g
dGVzdGVkX2Rpc3Ryb3Muc3BsaXQoJ1xcbicpXToKICAgICAgICAgICAgYmIud2FybignSG9zdCBk
aXN0cmlidXRpb24gIiVzIiBoYXMgbm90IGJlZW4gdmFsaWRhdGVkIHdpdGggdGhpcyB2ZXJzaW9u
IG9mIHRoZSBidWlsZCBzeXN0ZW07IHlvdSBtYXkgcG9zc2libHkgZXhwZXJpZW5jZSB1bmV4cGVj
dGVkIGZhaWx1cmVzLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgYSB0ZXN0ZWQgZGlz
dHJpYnV0aW9uLicgJSBkaXN0cm8pCiAgICBlbHNlOgogICAgICAgIGJiLndhcm4oJ0hvc3QgZGlz
dHJpYnV0aW9uIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkOyB5b3UgbWF5IHBvc3NpYmx5IGV4cGVy
aWVuY2UgdW5leHBlY3RlZCBmYWlsdXJlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNl
IGEgdGVzdGVkIGRpc3RyaWJ1dGlvbi4nKQp9CgoKcHl0aG9uIHByZWZlcnJlZF9tbF91cGRhdGVz
ICgpIHsKZGVmIHByZWZlcnJlZF9tbF91cGRhdGVzKGQpOgogICAgIyBJZiBhbnkgUFJFRkVSUkVE
X1BST1ZJREVSIG9yIFBSRUZFUlJFRF9WRVJTSU9OUyBhcmUgc2V0LAogICAgIyB3ZSBuZWVkIHRv
IG1pcnJvciB0aGVzZSB2YXJpYWJsZXMgaW4gdGhlIG11bHRpbGliIGNhc2UKICAgIG11bHRpbGli
cyA9IGQuZ2V0VmFyKCdNVUxUSUxJQlMnLCBUcnVlKSBvciAiIgogICAgaWYgbm90IG11bHRpbGli
czoKICAgICAgICByZXR1cm4KCiAgICBwcmVmaXhlcyA9IFtdCiAgICBmb3IgZXh0IGluIG11bHRp
bGlicy5zcGxpdCgpOgogICAgICAgIGVleHQgPSBleHQuc3BsaXQoJzonKQogICAgICAgIGlmIGxl
bihlZXh0KSA+IDEgYW5kIGVleHRbMF0gPT0gJ211bHRpbGliJzoKICAgICAgICAgICAgcHJlZml4
ZXMuYXBwZW5kKGVleHRbMV0pCgogICAgdmVyc2lvbnMgPSBbXQogICAgcHJvdmlkZXJzID0gW10K
ICAgIGZvciB2IGluIGQua2V5cygpOgogICAgICAgIGlmIHYuc3RhcnRzd2l0aCgiUFJFRkVSUkVE
X1ZFUlNJT05fIik6CiAgICAgICAgICAgIHZlcnNpb25zLmFwcGVuZCh2KQogICAgICAgIGlmIHYu
c3RhcnRzd2l0aCgiUFJFRkVSUkVEX1BST1ZJREVSXyIpOgogICAgICAgICAgICBwcm92aWRlcnMu
YXBwZW5kKHYpCgogICAgZm9yIHYgaW4gdmVyc2lvbnM6CiAgICAgICAgdmFsID0gZC5nZXRWYXIo
diwgRmFsc2UpCiAgICAgICAgcGtnID0gdi5yZXBsYWNlKCJQUkVGRVJSRURfVkVSU0lPTl8iLCAi
IikKICAgICAgICBpZiBwa2cuZW5kc3dpdGgoIi1uYXRpdmUiKSBvciBwa2cuZW5kc3dpdGgoIi1u
YXRpdmVzZGsiKToKICAgICAgICAgICAgY29udGludWUKICAgICAgICBmb3IgcCBpbiBwcmVmaXhl
czoKICAgICAgICAgICAgbmV3bmFtZSA9ICJQUkVGRVJSRURfVkVSU0lPTl8iICsgcCArICItIiAr
IHBrZwogICAgICAgICAgICBpZiBub3QgZC5nZXRWYXIobmV3bmFtZSwgRmFsc2UpOgogICAgICAg
ICAgICAgICAgZC5zZXRWYXIobmV3bmFtZSwgdmFsKQoKICAgIGZvciBwcm92IGluIHByb3ZpZGVy
czoKICAgICAgICB2YWwgPSBkLmdldFZhcihwcm92LCBGYWxzZSkKICAgICAgICBwa2cgPSBwcm92
LnJlcGxhY2UoIlBSRUZFUlJFRF9QUk9WSURFUl8iLCAiIikKICAgICAgICBpZiBwa2cuZW5kc3dp
dGgoIi1uYXRpdmUiKSBvciBwa2cuZW5kc3dpdGgoIi1uYXRpdmVzZGsiKToKICAgICAgICAgICAg
Y29udGludWUKICAgICAgICB2aXJ0ID0gIiIKICAgICAgICBpZiBwa2cuc3RhcnRzd2l0aCgidmly
dHVhbC8iKToKICAgICAgICAgICAgIHBrZyA9IHBrZy5yZXBsYWNlKCJ2aXJ0dWFsLyIsICIiKQog
ICAgICAgICAgICAgdmlydCA9ICJ2aXJ0dWFsLyIKICAgICAgICBmb3IgcCBpbiBwcmVmaXhlczoK
ICAgICAgICAgICAgbmV3bmFtZSA9ICJQUkVGRVJSRURfUFJPVklERVJfIiArIHZpcnQgKyBwICsg
Ii0iICsgcGtnCiAgICAgICAgICAgIGlmIHBrZyAhPSAia2VybmVsIjoKICAgICAgICAgICAgICAg
IHZhbCA9IHAgKyAiLSIgKyB2YWwKICAgICAgICAgICAgaWYgbm90IGQuZ2V0VmFyKG5ld25hbWUs
IEZhbHNlKToKICAgICAgICAgICAgICAgIGQuc2V0VmFyKG5ld25hbWUsIHZhbCkKCgogICAgbXAg
PSAoZC5nZXRWYXIoIk1VTFRJX1BST1ZJREVSX1dISVRFTElTVCIsIFRydWUpIG9yICIiKS5zcGxp
dCgpCiAgICBleHRyYW1wID0gW10KICAgIGZvciBwIGluIG1wOgogICAgICAgIGlmIHAuZW5kc3dp
dGgoIi1uYXRpdmUiKSBvciBwLmVuZHN3aXRoKCItbmF0aXZlc2RrIik6CiAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgdmlydCA9ICIiCiAgICAgICAgaWYgcC5zdGFydHN3aXRoKCJ2aXJ0dWFs
LyIpOgogICAgICAgICAgICBwID0gcC5yZXBsYWNlKCJ2aXJ0dWFsLyIsICIiKQogICAgICAgICAg
ICB2aXJ0ID0gInZpcnR1YWwvIgogICAgICAgIGZvciBwcmVmIGluIHByZWZpeGVzOgogICAgICAg
ICAgICBleHRyYW1wLmFwcGVuZCh2aXJ0ICsgcHJlZiArICItIiArIHApCiAgICBkLnNldFZhcigi
TVVMVElfUFJPVklERVJfV0hJVEVMSVNUIiwgIiAiLmpvaW4obXAgKyBleHRyYW1wKSkKfQoKCnB5
dGhvbiBzcGxpdF9hbmRfc3RyaXBfZmlsZXMgKCkgewoJaW1wb3J0IGNvbW1hbmRzLCBzdGF0LCBl
cnJubwoKCWR2YXIgPSBiYi5kYXRhLmdldFZhcignUEtHRCcsIGQsIFRydWUpCglwbiA9IGJiLmRh
dGEuZ2V0VmFyKCdQTicsIGQsIFRydWUpCgoJIyBXZSBkZWZhdWx0IHRvICcuZGVidWcnIHN0eWxl
CglpZiBiYi5kYXRhLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScsIGQsIFRydWUp
ID09ICdkZWJ1Zy1maWxlLWRpcmVjdG9yeSc6CgkJIyBTaW5nbGUgZGVidWctZmlsZS1kaXJlY3Rv
cnkgc3R5bGUgZGVidWcgaW5mbwoJCWRlYnVnYXBwZW5kID0gIi5kZWJ1ZyIKCQlkZWJ1Z2RpciA9
ICIiCgkJZGVidWdsaWJkaXIgPSAiL3Vzci9saWIvZGVidWciCgkJZGVidWdzcmNkaXIgPSAiL3Vz
ci9zcmMvZGVidWciCgllbHNlOgoJCSMgT3JpZ2luYWwgUG9reSwgYS5rLmEuICIuZGVidWciLCBz
dHlsZSBkZWJ1ZyBpbmZvCgkJZGVidWdhcHBlbmQgPSAiIgoJCWRlYnVnZGlyID0gIi8uZGVidWci
CgkJZGVidWdsaWJkaXIgPSAiIgoJCWRlYnVnc3JjZGlyID0gIi91c3Ivc3JjL2RlYnVnIgoKCW9z
LmNoZGlyKGR2YXIpCgoJIyBSZXR1cm4gdHlwZSAoYml0cyk6CgkjIDAgLSBub3QgZWxmCgkjIDEg
LSBFTEYKCSMgMiAtIHN0cmlwcGVkCgkjIDQgLSBleGVjdXRhYmxlCgkjIDggLSBzaGFyZWQgbGli
cmFyeQoJZGVmIGlzRUxGKHBhdGgpOgoJCXR5cGUgPSAwCgkJcGF0aHByZWZpeCA9ICJleHBvcnQg
UEFUSD0lczsgIiAlIGJiLmRhdGEuZ2V0VmFyKCdQQVRIJywgZCwgVHJ1ZSkKCQlyZXQsIHJlc3Vs
dCA9IGNvbW1hbmRzLmdldHN0YXR1c291dHB1dCgiJXNmaWxlICclcyciICUgKHBhdGhwcmVmaXgs
IHBhdGgpKQoKCQlpZiByZXQ6CgkJCWJiLmVycm9yKCJzcGxpdF9hbmRfc3RyaXBfZmlsZXM6ICdm
aWxlICVzJyBmYWlsZWQiICUgcGF0aCkKCQkJcmV0dXJuIHR5cGUKCgkJIyBOb3Qgc3RyaXBwZWQK
CQlpZiAiRUxGIiBpbiByZXN1bHQ6CgkJCXR5cGUgfD0gMQoJCQlpZiAibm90IHN0cmlwcGVkIiBu
b3QgaW4gcmVzdWx0OgoJCQkJdHlwZSB8PSAyCgkJCWlmICJleGVjdXRhYmxlIiBpbiByZXN1bHQ6
CgkJCQl0eXBlIHw9IDQKCQkJaWYgInNoYXJlZCIgaW4gcmVzdWx0OgoJCQkJdHlwZSB8PSA4CgkJ
cmV0dXJuIHR5cGUKCgoJIwoJIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxl
cyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzIC4uLiBkbyB0aGlzIG9ubHkgb25jZSEKCSMKCWZpbGVf
bGlzdCA9IHt9CglmaWxlX2xpbmtzID0ge30KCWlmIChiYi5kYXRhLmdldFZhcignSU5ISUJJVF9Q
QUNLQUdFX0RFQlVHX1NQTElUJywgZCwgVHJ1ZSkgIT0gJzEnKSBhbmQgXAoJICAgKGJiLmRhdGEu
Z2V0VmFyKCdJTkhJQklUX1BBQ0tBR0VfU1RSSVAnLCBkLCBUcnVlKSAhPSAnMScpOgoJCWZvciBy
b290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGR2YXIpOgoJCQlmb3IgZiBpbiBmaWxlczoKCQkJ
CWZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKCQkJCSMgT25seSBwcm9jZXNzIGZpbGVzIChh
bmQgc3ltbGlua3MpLi4uIFNraXAgZmlsZXMgdGhhdCBhcmUgb2J2aW91c2x5IGRlYnVnIGZpbGVz
CgkJCQlpZiBub3QgKGRlYnVnYXBwZW5kICE9ICIiIGFuZCBmaWxlLmVuZHN3aXRoKGRlYnVnYXBw
ZW5kKSkgYW5kIFwKCQkJCSAgIG5vdCAoZGVidWdkaXIgIT0gIiIgYW5kIGRlYnVnZGlyIGluIG9z
LnBhdGguZGlybmFtZShmaWxlW2xlbihkdmFyKTpdKSkgYW5kIFwKCQkJCSAgIG9zLnBhdGguaXNm
aWxlKGZpbGUpOgoJCQkJCXRyeToKCQkJCQkJcyA9IG9zLnN0YXQoZmlsZSkKCQkJCQlleGNlcHQg
T1NFcnJvciwgKGVyciwgc3RyZXJyb3IpOgoJCQkJCQlpZiBlcnIgIT0gZXJybm8uRU5PRU5UOgoJ
CQkJCQkJcmFpc2UKCQkJCQkJIyBTa2lwIGJyb2tlbiBzeW1saW5rcwoJCQkJCQljb250aW51ZQoJ
CQkJCSMgSXMgdGhlIGl0ZW0gZXhjdXRhYmxlPyAgVGhlbiB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQu
CgkJCQkJaWYgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWFVTUikgb3IgXAoJCQkJCSAgIChz
W3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhHUlApIG9yIFwKCQkJCQkgICAoc1tzdGF0LlNUX01P
REVdICYgc3RhdC5TX0lYT1RIKToKCQkJCQkJIyBJZiBpdCdzIGEgc3ltbGluaywgYW5kIHBvaW50
cyB0byBhbiBFTEYgZmlsZSwgd2UgY2FwdHVyZSB0aGUgcmVhZGxpbmsgdGFyZ2V0CgkJCQkJCWlm
IG9zLnBhdGguaXNsaW5rKGZpbGUpOgoJCQkJCQkJdGFyZ2V0ID0gb3MucmVhZGxpbmsoZmlsZSkK
CQkJCQkJCWlmIG5vdCBvcy5wYXRoLmlzYWJzKHRhcmdldCk6CgkJCQkJCQkJbHRhcmdldCA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZmlsZSksIHRhcmdldCkKCQkJCQkJCWVsc2U6CgkJ
CQkJCQkJbHRhcmdldCA9IHRhcmdldAoKCQkJCQkJCWlmIGlzRUxGKGx0YXJnZXQpOgoJCQkJCQkJ
CSNiYi5ub3RlKCJTeW06ICVzICglZCkiICUgKGx0YXJnZXQsIGlzRUxGKGx0YXJnZXQpKSkKCQkJ
CQkJCQlmaWxlX2xpc3RbZmlsZV0gPSAic3ltOiAiICsgdGFyZ2V0CgkJCQkJCQljb250aW51ZQoJ
CQkJCQkjIEl0J3MgYSBmaWxlIChvciBoYXJkbGluayksIG5vdCBhIGxpbmsKCQkJCQkJIyAuLi5i
dXQgaXMgaXQgRUxGLCBhbmQgaXMgaXQgYWxyZWFkeSBzdHJpcHBlZD8KCQkJCQkJZWxmX2ZpbGUg
PSBpc0VMRihmaWxlKQoJCQkJCQlpZiBlbGZfZmlsZSAmIDE6CgkJCQkJCQkjIENoZWNrIGlmIGl0
J3MgYSBoYXJkIGxpbmsgdG8gc29tZXRoaW5nIGVsc2UKCQkJCQkJCWlmIHMuc3RfbmxpbmsgPiAx
OgoJCQkJCQkJCWZpbGVfcmVmZXJlbmNlID0gIiVkXyVkIiAlIChzLnN0X2Rldiwgcy5zdF9pbm8p
CgkJCQkJCQkJIyBIYXJkIGxpbmsgdG8gc29tZXRoaW5nIGVsc2UKCQkJCQkJCQlmaWxlX2xpc3Rb
ZmlsZV0gPSAiaGFyZDogIiArIGZpbGVfcmVmZXJlbmNlCgkJCQkJCQkJY29udGludWUKCgkJCQkJ
CQlmaWxlX2xpc3RbZmlsZV0gPSAiRUxGOiAlZCIgJSBlbGZfZmlsZQoKCgkjCgkjIEZpcnN0IGxl
dHMgcHJvY2VzcyBkZWJ1ZyBzcGxpdHRpbmcKCSMKCWlmIChiYi5kYXRhLmdldFZhcignSU5ISUJJ
VF9QQUNLQUdFX0RFQlVHX1NQTElUJywgZCwgVHJ1ZSkgIT0gJzEnKToKCQlmb3IgZmlsZSBpbiBm
aWxlX2xpc3Q6CgkJCXNyYyA9IGZpbGVbbGVuKGR2YXIpOl0KCQkJZGVzdCA9IGRlYnVnbGliZGly
ICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5h
bWUoc3JjKSArIGRlYnVnYXBwZW5kCgkJCWZwYXRoID0gZHZhciArIGRlc3QKCQkJIyBQcmVzZXJ2
ZSBzeW1saW5rcyBpbiBkZWJ1ZyBhcmVhLi4uCgkJCWlmIGZpbGVfbGlzdFtmaWxlXS5zdGFydHN3
aXRoKCJzeW06ICIpOgoJCQkJbHRhcmdldCA9IGZpbGVfbGlzdFtmaWxlXVs1Ol0KCQkJCWxwYXRo
ID0gb3MucGF0aC5kaXJuYW1lKGx0YXJnZXQpCgkJCQlsYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUo
bHRhcmdldCkKCQkJCWZ0YXJnZXQgPSAiIgoJCQkJaWYgbHBhdGggYW5kIGxwYXRoICE9ICIuIjoK
CQkJCQlmdGFyZ2V0ICs9IGxwYXRoICsgZGVidWdkaXIgKyAiLyIKCQkJCWZ0YXJnZXQgKz0gbGJh
c2UgKyBkZWJ1Z2FwcGVuZAoJCQkJYmIubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShmcGF0aCkp
CgkJCQkjYmIubm90ZSgiU3ltbGluayAlcyAtPiAlcyIgJSAoZnBhdGgsIGZ0YXJnZXQpKQoJCQkJ
b3Muc3ltbGluayhmdGFyZ2V0LCBmcGF0aCkKCQkJCWNvbnRpbnVlCgoJCQkjIFByZXNlcnZlIGhh
cmQgbGlua3MgaW4gZGVidWcgYXJlYS4uLgoJCQlmaWxlX3JlZmVyZW5jZSA9ICIiCgkJCWlmIGZp
bGVfbGlzdFtmaWxlXS5zdGFydHN3aXRoKCJoYXJkOiAiKToKCQkJCWZpbGVfcmVmZXJlbmNlID0g
ZmlsZV9saXN0W2ZpbGVdWzY6XQoJCQkJaWYgZmlsZV9yZWZlcmVuY2Ugbm90IGluIGZpbGVfbGlu
a3M6CgkJCQkJIyBJZiB0aGlzIGlzIGEgbmV3IGZpbGUsIGFkZCBpdCBhcyBhIHJlZmVyZW5jZSwg
YW5kCgkJCQkJIyB1cGRhdGUgaXQncyB0eXBlLCBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoIGFuZCBz
cGxpdAoJCQkJCWZpbGVfbGlzdFtmaWxlXSA9ICJFTEY6ICVkIiAlIChpc0VMRihmaWxlKSkKCQkJ
CWVsc2U6CgkJCQkJdGFyZ2V0ID0gZmlsZV9saW5rc1tmaWxlX3JlZmVyZW5jZV1bbGVuKGR2YXIp
Ol0KCQkJCQlmdGFyZ2V0ID0gZHZhciArIGRlYnVnbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHRh
cmdldCkgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUodGFyZ2V0KSArIGRlYnVn
YXBwZW5kCgkJCQkJYmIubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShmcGF0aCkpCgkJCQkJI2Ji
Lm5vdGUoIkxpbmsgJXMgLT4gJXMiICUgKGZwYXRoLCBmdGFyZ2V0KSkKCQkJCQlvcy5saW5rKGZ0
YXJnZXQsIGZwYXRoKQoJCQkJCWNvbnRpbnVlCgoJCQkjIEl0J3MgRUxGLi4uCgkJCWlmIGZpbGVf
bGlzdFtmaWxlXS5zdGFydHN3aXRoKCJFTEY6ICIpOgoJCQkJZWxmX2ZpbGUgPSBpbnQoZmlsZV9s
aXN0W2ZpbGVdWzU6XSkKCQkJCWlmIGVsZl9maWxlICYgMjoKCQkJCQliYi53YXJuKCJGaWxlICcl
cycgZnJvbSAlcyB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJl
IGRlYnVnZ2luZyEiICUgKHNyYywgcG4pKQoJCQkJCWNvbnRpbnVlCgoJCQkJIyBTcGxpdCB0aGUg
ZmlsZS4uLgoJCQkJYmIubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShmcGF0aCkpCgkJCQkjYmIu
bm90ZSgiU3BsaXQgJXMgLT4gJXMiICUgKGZpbGUsIGZwYXRoKSkKCQkJCSMgT25seSBzdG9yZSBv
ZmYgdGhlIGhhcmQgbGluayByZWZlcmVuY2UgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHNwbGl0IQoJCQkJ
aWYgc3BsaXRmaWxlKGZpbGUsIGZwYXRoLCBkZWJ1Z3NyY2RpciwgZCkgPT0gMCBhbmQgZmlsZV9y
ZWZlcmVuY2UgIT0gIiI6CgkJCQkJZmlsZV9saW5rc1tmaWxlX3JlZmVyZW5jZV0gPSBmaWxlCgoJ
CSMgVGhlIGFib3ZlIG1heSBoYXZlIGdlbmVyYXRlZCBkYW5nbGluZyBzeW1saW5rcywgcmVtb3Zl
IHRoZW0hCgkJIyBEYW5nbGluZyBzeW1saW5rcyBhcmUgYSByZXN1bHQgb2Ygc29tZXRoaW5nIE5P
VCBiZWluZyBzcGxpdCwgc3VjaCBhcyBhIHN0cmlwcGVkIGJpbmFyeS4KCQkjIFRoaXMgc2hvdWxk
IGJlIGEgcmFyZSBvY2N1cmFuY2UsIGJ1dCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFueXdheS4KCQlm
b3IgZmlsZSBpbiBmaWxlX2xpc3Q6CgkJCWlmIGZpbGVfbGlzdFtmaWxlXS5zdGFydHN3aXRoKCJz
eW06ICIpOgoJCQkJc3JjID0gZmlsZVtsZW4oZHZhcik6XQoJCQkJZGVzdCA9IGRlYnVnbGliZGly
ICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5h
bWUoc3JjKSArIGRlYnVnYXBwZW5kCgkJCQlmcGF0aCA9IGR2YXIgKyBkZXN0CgkJCQl0cnk6CgkJ
CQkJcyA9IG9zLnN0YXQoZnBhdGgpCgkJCQlleGNlcHQgT1NFcnJvciwgKGVyciwgc3RyZXJyb3Ip
OgoJCQkJCWlmIGVyciAhPSBlcnJuby5FTk9FTlQ6CgkJCQkJCXJhaXNlCgkJCQkJI2JiLm5vdGUo
IlJlbW92ZSBkYW5nbGluZyBsaW5rICVzIC0+ICVzIiAlIChmcGF0aCwgb3MucmVhZGxpbmsoZnBh
dGgpKSkKCQkJCQlvcy51bmxpbmsoZnBhdGgpCgkJCQkJIyBUaGlzIGNvdWxkIGxlYXZlIGFuIGVt
cHR5IGRlYnVnIGRpcmVjdG9yeSBsYXlpbmcgYXJvdW5kCgkJCQkJIyB0YWtlIGNhcmUgb2YgdGhl
IG9idmlvdXMgY2FzZS4uLgoJCQkJCW9zLnN5c3RlbSgicm1kaXIgJXMgMj4vZGV2L251bGwiICUg
b3MucGF0aC5kaXJuYW1lKGZwYXRoKSkKCgkJIyBQcm9jZXNzIHRoZSBkZWJ1Z3NyY2RpciBpZiBy
ZXF1ZXN0ZWQuLi4KCQkjIFRoaXMgY29waWVzIGFuZCBwbGFjZXMgdGhlIHJlZmVyZW5jZWQgc291
cmNlcyBmb3IgbGF0ZXIgZGVidWdnaW5nLi4uCgkJc3BsaXRmaWxlMihkZWJ1Z3NyY2RpciwgZCkK
CSMKCSMgRW5kIG9mIGRlYnVnIHNwbGl0dGluZwoJIwoKCSMKCSMgTm93IGxldHMgZ28gYmFjayBv
dmVyIHRoaW5ncyBhbmQgc3RyaXAgdGhlbQoJIwoJaWYgKGJiLmRhdGEuZ2V0VmFyKCdJTkhJQklU
X1BBQ0tBR0VfU1RSSVAnLCBkLCBUcnVlKSAhPSAnMScpOgoJCWZvciBmaWxlIGluIGZpbGVfbGlz
dDoKCQkJaWYgZmlsZV9saXN0W2ZpbGVdLnN0YXJ0c3dpdGgoIkVMRjogIik6CgkJCQllbGZfZmls
ZSA9IGludChmaWxlX2xpc3RbZmlsZV1bNTpdKQoJCQkJI2JiLm5vdGUoIlN0cmlwICVzIiAlIGZp
bGUpCgkJCQlydW5zdHJpcChmaWxlLCBlbGZfZmlsZSwgZCkKCSMKCSMgRW5kIG9mIHN0cmlwCgkj
Cn0KCgpweXRob24gZG9fcGF0Y2ggKCkgewoJYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3Bh
dGNoJywgZCkKfQoKCnB5dGhvbiBiYXNlX2xlc3Nfb3JfZXF1YWwgKCkgewpkZWYgYmFzZV9sZXNz
X29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQp
OgogICAgcmV0dXJuIG9lLnV0aWxzLmxlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUs
IHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKfQoKCnB5dGhvbiBjaGVja19zYW5pdHkgKCkgewpk
ZWYgY2hlY2tfc2FuaXR5KGUpOgogICAgZnJvbSBiYiBpbXBvcnQgbm90ZSwgZXJyb3IsIGRhdGEs
IF9fdmVyc2lvbl9fCgogICAgdHJ5OgogICAgICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1w
b3J0IExvb3NlVmVyc2lvbgogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIGRlZiBMb29z
ZVZlcnNpb24odik6IHByaW50ICJXQVJOSU5HOiBzYW5pdHkuYmJjbGFzcyBjYW4ndCBjb21wYXJl
IHZlcnNpb25zIHdpdGhvdXQgcHl0aG9uLWRpc3R1dGlscyI7IHJldHVybiAxCiAgICBpbXBvcnQg
Y29tbWFuZHMKCiAgICAjIENoZWNrIHRoZSBiaXRiYWtlIHZlcnNpb24gbWVldHMgbWluaW11bSBy
ZXF1aXJlbWVudHMKICAgIG1pbnZlcnNpb24gPSBkYXRhLmdldFZhcignQkJfTUlOX1ZFUlNJT04n
LCBlLmRhdGEgLCBUcnVlKQogICAgaWYgbm90IG1pbnZlcnNpb246CiAgICAgICAgIyBIYWNrOiBC
Ql9NSU5fVkVSU0lPTiBoYXNuJ3QgYmVlbiBwYXJzZWQgeWV0IHNvIHJldHVybgogICAgICAgICMg
YW5kIHdhaXQgZm9yIHRoZSBuZXh0IGNhbGwKICAgICAgICBwcmludCAiRm9vICVzIiAlIG1pbnZl
cnNpb24KICAgICAgICByZXR1cm4KCiAgICBpZiAwID09IG9zLmdldHVpZCgpOgogICAgICAgIHJh
aXNlX3Nhbml0eV9lcnJvcigiRG8gbm90IHVzZSBCaXRiYWtlIGFzIHJvb3QuIikKCiAgICBtZXNz
YWdlcyA9ICIiCgogICAgIyBDaGVjayB0aGUgUHl0aG9uIHZlcnNpb24sIHdlIG5vdyB1c2UgUHl0
aG9uIDIuNiBmZWF0dXJlcyBpbgogICAgIyB2YXJpb3VzIGNsYXNzZXMKICAgIGltcG9ydCBzeXMK
ICAgIGlmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA2MDBGMDoKICAgICAgICBtZXNzYWdlcyA9IG1l
c3NhZ2VzICsgJ1RoZSBzeXN0ZW0gcmVxdWlyZXMgYXQgbGVhc3QgUHl0aG9uIDIuNiB0byBydW4u
IFBsZWFzZSB1cGRhdGUgeW91ciBQeXRob24gaW50ZXJwcmV0ZXIuXG4nCgogICAgaWYgKExvb3Nl
VmVyc2lvbihfX3ZlcnNpb25fXykgPCBMb29zZVZlcnNpb24obWludmVyc2lvbikpOgogICAgICAg
IG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAnQml0YmFrZSB2ZXJzaW9uICVzIGlzIHJlcXVpcmVkIGFu
ZCB2ZXJzaW9uICVzIHdhcyBmb3VuZFxuJyAlIChtaW52ZXJzaW9uLCBfX3ZlcnNpb25fXykKCiAg
ICAjIENoZWNrIHRoYXQgdGhlIE1BQ0hJTkUgaXMgdmFsaWQsIGlmIGl0IGlzIHNldAogICAgaWYg
ZGF0YS5nZXRWYXIoJ01BQ0hJTkUnLCBlLmRhdGEsIFRydWUpOgogICAgICAgIGlmIG5vdCBjaGVj
a19jb25mX2V4aXN0cygiY29uZi9tYWNoaW5lL3AxMDIwcmRiLmNvbmYiLCBlLmRhdGEpOgogICAg
ICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgJ1BsZWFzZSBzZXQgYSB2YWxpZCBNQUNISU5F
IGluIHlvdXIgbG9jYWwuY29uZiBvciBlbnZpcm9ubWVudFxuJwogICAgICAgIGVsc2U6CiAgICAg
ICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyBjaGVja19zYW5pdHlfdmFsaWRtYWNoaW5lKGUp
CiAgICBlbHNlOgogICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAnUGxlYXNlIHNldCBhIE1B
Q0hJTkUgaW4geW91ciBsb2NhbC5jb25mIG9yIGVudmlyb25tZW50XG4nCgogICAgIyBDaGVjayB3
ZSBhcmUgdXNpbmcgYSB2YWxpZCBsYWNhbC5jb25mCiAgICBjdXJyZW50X2NvbmYgID0gZGF0YS5n
ZXRWYXIoJ0NPTkZfVkVSU0lPTicsIGUuZGF0YSwgVHJ1ZSkKICAgIGNvbmZfdmVyc2lvbiA9ICBk
YXRhLmdldFZhcignTE9DQUxDT05GX1ZFUlNJT04nLCBlLmRhdGEsIFRydWUpCgogICAgaWYgY3Vy
cmVudF9jb25mICE9IGNvbmZfdmVyc2lvbjoKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsg
IllvdXIgdmVyc2lvbiBvZiBsb2NhbC5jb25mIHdhcyBnZW5lcmF0ZWQgZnJvbSBhbiBvbGRlciB2
ZXJzaW9uIG9mIGxvY2FsLmNvbmYuc2FtcGxlIGFuZCB0aGVyZSBoYXZlIGJlZW4gdXBkYXRlcyBt
YWRlIHRvIHRoaXMgZmlsZS4gUGxlYXNlIGNvbXBhcmUgdGhlIHR3byBmaWxlcyBhbmQgbWVyZ2Ug
YW55IGNoYW5nZXMgYmVmb3JlIGNvbnRpbnVpbmcuXG5NYXRjaGluZyB0aGUgdmVyc2lvbiBudW1i
ZXJzIHdpbGwgcmVtb3ZlIHRoaXMgbWVzc2FnZS5cblwibWVsZCBjb25mL2xvY2FsLmNvbmYgY29u
Zi9sb2NhbC5jb25mLnNhbXBsZVwiIGlzIGEgZ29vZCB3YXkgdG8gdmlzdWFsaXNlIHRoZSBjaGFu
Z2VzLlxuIgoKICAgICMgQ2hlY2sgYmJsYXllcnMuY29uZiBpcyB2YWxpZAogICAgY3VycmVudF9s
Y29uZiA9IGRhdGEuZ2V0VmFyKCdMQ09ORl9WRVJTSU9OJywgZS5kYXRhLCBUcnVlKQogICAgbGNv
bmZfdmVyc2lvbiA9IGRhdGEuZ2V0VmFyKCdMQVlFUl9DT05GX1ZFUlNJT04nLCBlLmRhdGEsIFRy
dWUpCiAgICBpZiBjdXJyZW50X2xjb25mICE9IGxjb25mX3ZlcnNpb246CiAgICAgICAgbWVzc2Fn
ZXMgPSBtZXNzYWdlcyArICJZb3VyIHZlcnNpb24gb2YgYmJsYXllcnMuY29uZiB3YXMgZ2VuZXJh
dGVkIGZyb20gYW4gb2xkZXIgdmVyc2lvbiBvZiBiYmxheWVycy5jb25mLnNhbXBsZSBhbmQgdGhl
cmUgaGF2ZSBiZWVuIHVwZGF0ZXMgbWFkZSB0byB0aGlzIGZpbGUuIFBsZWFzZSBjb21wYXJlIHRo
ZSB0d28gZmlsZXMgYW5kIG1lcmdlIGFueSBjaGFuZ2VzIGJlZm9yZSBjb250aW51aW5nLlxuTWF0
Y2hpbmcgdGhlIHZlcnNpb24gbnVtYmVycyB3aWxsIHJlbW92ZSB0aGlzIG1lc3NhZ2UuXG5cIm1l
bGQgY29uZi9iYmxheWVycy5jb25mIGNvbmYvYmJsYXllcnMuY29uZi5zYW1wbGVcIiBpcyBhIGdv
b2Qgd2F5IHRvIHZpc3VhbGlzZSB0aGUgY2hhbmdlcy5cbiIKCiAgICAjIElmIHdlIGhhdmUgYSBz
aXRlLmNvbmYsIGNoZWNrIGl0J3MgdmFsaWQKICAgIGlmIGNoZWNrX2NvbmZfZXhpc3RzKCJjb25m
L3NpdGUuY29uZiIsIGUuZGF0YSk6CiAgICAgICAgY3VycmVudF9zY29uZiA9IGRhdGEuZ2V0VmFy
KCdTQ09ORl9WRVJTSU9OJywgZS5kYXRhLCBUcnVlKQogICAgICAgIHNjb25mX3ZlcnNpb24gPSBk
YXRhLmdldFZhcignU0lURV9DT05GX1ZFUlNJT04nLCBlLmRhdGEsIFRydWUpCiAgICAgICAgaWYg
Y3VycmVudF9zY29uZiAhPSBzY29uZl92ZXJzaW9uOgogICAgICAgICAgICBtZXNzYWdlcyA9IG1l
c3NhZ2VzICsgIllvdXIgdmVyc2lvbiBvZiBzaXRlLmNvbmYgd2FzIGdlbmVyYXRlZCBmcm9tIGFu
IG9sZGVyIHZlcnNpb24gb2Ygc2l0ZS5jb25mLnNhbXBsZSBhbmQgdGhlcmUgaGF2ZSBiZWVuIHVw
ZGF0ZXMgbWFkZSB0byB0aGlzIGZpbGUuIFBsZWFzZSBjb21wYXJlIHRoZSB0d28gZmlsZXMgYW5k
IG1lcmdlIGFueSBjaGFuZ2VzIGJlZm9yZSBjb250aW51aW5nLlxuTWF0Y2hpbmcgdGhlIHZlcnNp
b24gbnVtYmVycyB3aWxsIHJlbW92ZSB0aGlzIG1lc3NhZ2UuXG5cIm1lbGQgY29uZi9zaXRlLmNv
bmYgY29uZi9zaXRlLmNvbmYuc2FtcGxlXCIgaXMgYSBnb29kIHdheSB0byB2aXN1YWxpc2UgdGhl
IGNoYW5nZXMuXG4iCgogICAgYXNzdW1lX3Byb3ZpZGVkID0gZGF0YS5nZXRWYXIoJ0FTU1VNRV9Q
Uk9WSURFRCcsIGUuZGF0YSAsIFRydWUpLnNwbGl0KCkKICAgICMgQ2hlY2sgdXNlciBkb2Vzbid0
IGhhdmUgQVNTVU1FX1BST1ZJREVEID0gaW5zdGVhZCBvZiArPSBpbiBsb2NhbC5jb25mCiAgICBp
ZiAiZGlmZnN0YXQtbmF0aXZlIiBub3QgaW4gYXNzdW1lX3Byb3ZpZGVkOgogICAgICAgIG1lc3Nh
Z2VzID0gbWVzc2FnZXMgKyAnUGxlYXNlIHVzZSBBU1NVTUVfUFJPVklERUQgKz0sIG5vdCBBU1NV
TUVfUFJPVklERUQgPSBpbiB5b3VyIGxvY2FsLmNvbmZcbicKCiAgICAjIENoZWNrIHRoYXQgRExf
RElSIGlzIHNldCwgZXhpc3RzIGFuZCBpcyB3cml0YWJsZS4gSW4gdGhlb3J5LCB3ZSBzaG91bGQg
bmV2ZXIgZXZlbiBoaXQgdGhlIGNoZWNrIGlmIERMX0RJUiBpc24ndAogICAgIyBzZXQsIHNpbmNl
IHNvIG11Y2ggcmVsaWVzIG9uIGl0IGJlaW5nIHNldC4KICAgIGRsZGlyID0gZGF0YS5nZXRWYXIo
J0RMX0RJUicsIGUuZGF0YSwgVHJ1ZSkKICAgIGlmIG5vdCBkbGRpcjoKICAgICAgICBtZXNzYWdl
cyA9IG1lc3NhZ2VzICsgIkRMX0RJUiBpcyBub3Qgc2V0LiBZb3VyIGVudmlyb25tZW50IGlzIG1p
c2NvbmZpZ3VyZWQsIGNoZWNrIHRoYXQgRExfRElSIGlzIHNldCwgYW5kIGlmIHRoZSBkaXJlY3Rv
cnkgZXhpc3RzLCB0aGF0IGl0IGlzIHdyaXRhYmxlLiBcbiIKICAgIGlmIG9zLnBhdGguZXhpc3Rz
KGRsZGlyKSBhbmQgbm90IG9zLmFjY2VzcyhkbGRpciwgb3MuV19PSyk6CiAgICAgICAgbWVzc2Fn
ZXMgPSBtZXNzYWdlcyArICJETF9ESVI6ICVzIGV4aXN0cyBidXQgeW91IGRvIG5vdCBhcHBlYXIg
dG8gaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gaXQuIFxuIiAlIGRsZGlyCgogICAgIyBDaGVjayB0aGF0
IHRoZSBESVNUUk8gaXMgdmFsaWQsIGlmIHNldAogICAgIyBuZWVkIHRvIHRha2UgaW50byBhY2Nv
dW50IERJU1RSTyByZW5hbWluZyBESVNUUk8KICAgIGRpc3RybyA9IGRhdGEuZ2V0VmFyKCdESVNU
Uk8nLCBlLmRhdGEsIFRydWUpCiAgICBpZiBkaXN0cm86CiAgICAgICAgaWYgbm90ICggY2hlY2tf
Y29uZl9leGlzdHMoImNvbmYvZGlzdHJvL2ZzbC5jb25mIiwgZS5kYXRhKSBvciBjaGVja19jb25m
X2V4aXN0cygiY29uZi9kaXN0cm8vaW5jbHVkZS9mc2wuaW5jIiwgZS5kYXRhKSApOgogICAgICAg
ICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIkRJU1RSTyAnJXMnIG5vdCBmb3VuZC4gUGxlYXNl
IHNldCBhIHZhbGlkIERJU1RSTyBpbiB5b3VyIGxvY2FsLmNvbmZcbiIgJSBkYXRhLmdldFZhcigi
RElTVFJPIiwgZS5kYXRhLCBUcnVlICkKCiAgICBtaXNzaW5nID0gIiIKCiAgICBpZiBub3QgY2hl
Y2tfYXBwX2V4aXN0cygibWFrZSIsIGUuZGF0YSk6CiAgICAgICAgbWlzc2luZyA9IG1pc3Npbmcg
KyAiR05VIG1ha2UsIgoKICAgIGlmIG5vdCBjaGVja19hcHBfZXhpc3RzKCdnY2MnLCBlLmRhdGEp
OgogICAgICAgIG1pc3NpbmcgPSBtaXNzaW5nICsgIkMgQ29tcGlsZXIgKCVzZ2NjKSwiICUgZGF0
YS5nZXRWYXIoIkJVSUxEX1BSRUZJWCIsIGUuZGF0YSwgVHJ1ZSkKCiAgICBpZiBub3QgY2hlY2tf
YXBwX2V4aXN0cygnZysrJywgZS5kYXRhKToKICAgICAgICBtaXNzaW5nID0gbWlzc2luZyArICJD
KysgQ29tcGlsZXIgKCVzZysrKSwiICUgZGF0YS5nZXRWYXIoIkJVSUxEX1BSRUZJWCIsIGUuZGF0
YSwgVHJ1ZSkKCiAgICByZXF1aXJlZF91dGlsaXRpZXMgPSBlLmRhdGEuZ2V0VmFyKCdTQU5JVFlf
UkVRVUlSRURfVVRJTElUSUVTJywgVHJ1ZSkKCiAgICBpZiAicWVtdS1uYXRpdmUiIGluIGFzc3Vt
ZV9wcm92aWRlZDoKICAgICAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cygicWVtdS1hcm0iLCBl
LmRhdGEpOgogICAgICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgInFlbXUtbmF0aXZlIHdh
cyBpbiBBU1NVTUVfUFJPVklERUQgYnV0IHRoZSBRRU1VIGJpbmFyaWVzIChxZW11LWFybSkgY2Fu
J3QgYmUgZm91bmQgaW4gUEFUSCIKCiAgICBpZiAiLiIgaW4gZGF0YS5nZXRWYXIoJ1BBVEgnLCBl
LmRhdGEsIFRydWUpLnNwbGl0KCI6Iik6CiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICJQ
QVRIIGNvbnRhaW5zICcuJyB3aGljaCB3aWxsIGJyZWFrIHRoZSBidWlsZCwgcGxlYXNlIHJlbW92
ZSB0aGlzIgoKICAgIGlmIGRhdGEuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIGUuZGF0YSwgVHJ1ZSkg
PT0gImFybSI6CiAgICAgICAgIyBUaGlzIHBhdGggaXMgbm8gbG9uZ2VyIHVzZXItcmVhZGFibGUg
aW4gbW9kZXJuICh2ZXJ5IHJlY2VudCkgTGludXgKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKCIvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkciIpOgogICAgICAgICAg
ICAgICAgZiA9IG9wZW4oIi9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyIiwgInIiKQogICAgICAg
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIChpbnQoZi5yZWFkKCkuc3RyaXAo
KSkgPiA2NTUzNik6CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMg
KyAiL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgaXMgbm90IDw9IDY1NTM2LiBUaGlzIHdpbGwg
Y2F1c2UgcHJvYmxlbXMgd2l0aCBxZW11IHNvIHBsZWFzZSBmaXggdGhlIHZhbHVlIChhcyByb290
KS5cblxuVG8gZml4IHRoaXMgaW4gbGF0ZXIgcmVib290cywgc2V0IHZtLm1tYXBfbWluX2FkZHIg
PSA2NTUzNiBpbiAvZXRjL3N5c2N0bC5jb25mLlxuIgogICAgICAgICAgICAgICAgZmluYWxseToK
ICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAg
IHBhc3MKCiAgICBmb3IgdXRpbCBpbiByZXF1aXJlZF91dGlsaXRpZXMuc3BsaXQoKToKICAgICAg
ICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cyggdXRpbCwgZS5kYXRhICk6CiAgICAgICAgICAgIG1p
c3NpbmcgPSBtaXNzaW5nICsgIiVzLCIgJSB1dGlsCgogICAgaWYgbWlzc2luZyAhPSAiIjoKICAg
ICAgICBtaXNzaW5nID0gbWlzc2luZy5yc3RyaXAoJywnKQogICAgICAgIG1lc3NhZ2VzID0gbWVz
c2FnZXMgKyAiUGxlYXNlIGluc3RhbGwgZm9sbG93aW5nIG1pc3NpbmcgdXRpbGl0aWVzOiAlc1xu
IiAlIG1pc3NpbmcKCiAgICBwc2V1ZG9fbXNnID0gY2hlY2tfcHNldWRvX3dyYXBwZXIoKQogICAg
aWYgcHNldWRvX21zZyAhPSAiIjoKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgcHNldWRv
X21zZyArICdcbicKCiAgICBjaGVja19zdXBwb3J0ZWRfZGlzdHJvKGUpCgogICAgIyBDaGVjayBp
ZiBESVNQTEFZIGlzIHNldCBpZiBJTUFHRVRFU1QgaXMgc2V0CiAgICBpZiBub3QgZGF0YS5nZXRW
YXIoICdESVNQTEFZJywgZS5kYXRhLCBUcnVlICkgYW5kIGRhdGEuZ2V0VmFyKCAnSU1BR0VURVNU
JywgZS5kYXRhLCBUcnVlICkgPT0gJ3FlbXUnOgogICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMg
KyAncWVtdWltYWdldGVzdCBuZWVkcyBhIFggZGVza3RvcCB0byBzdGFydCBxZW11LCBwbGVhc2Ug
c2V0IERJU1BMQVkgY29ycmVjdGx5IChlLmcuIERJU1BMQVk9OjEuMClcbicKCiAgICBpZiBkYXRh
LmdldFZhcignUEFUQ0hSRVNPTFZFJywgZS5kYXRhLCBUcnVlKSAhPSAnbm9vcCc6CiAgICAgICAg
IyBFbnN1cmUgd2UgaGF2ZSB0aGUgYmluYXJ5IGZvciBURVJNQ01ELCBhcyB3aGVuIHBhdGNoIGFw
cGxpY2F0aW9uIGZhaWxzIHRoZSBlcnJvciBpcyBmYWlybHkgaW50aW1pZGF0aW5nCiAgICAgICAg
dGVybWNtZCA9IGRhdGEuZ2V0VmFyKCJURVJNQ01EIiwgZS5kYXRhLCBUcnVlKQogICAgICAgIHRl
cm0gPSB0ZXJtY21kLnNwbGl0KClbMF0KICAgICAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cyh0
ZXJtLCBlLmRhdGEpOgogICAgICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIlRoZSBjb25z
b2xlIGZvciB1c2UgaW4gcGF0Y2ggZXJyb3IgcmVzb2x1dGlvbiBpcyBub3QgYXZhaWxhYmxlLCBw
bGVhc2UgaW5zdGFsbCAlcyBvciBzZXQgVEVSTUNNRCBhbmQgVEVSTUNNRFJVTiAoYXMgZG9jdW1l
bnRlZCBpbiBsb2NhbC5jb25mKS5cbiIgJSB0ZXJtCiAgICAgICAgZWxpZiAia29uc29sZSIgaW4g
dGVybToKICAgICAgICAgICAgaW1wb3J0IG9lLnRlcm1pbmFsCiAgICAgICAgICAgIHZlcm51bSA9
IG9lLnRlcm1pbmFsLmNoZWNrX2tvbnNvbGVfdmVyc2lvbih0ZXJtKQogICAgICAgICAgICBpZiB2
ZXJudW06CiAgICAgICAgICAgICAgICBpZiB2ZXJudW0uc3BsaXQoJy4nKVswXSA9PSAnMic6CiAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICAnS29uc29sZSBmcm9tIEtE
RSA0Lnggd2lsbCBub3Qgd29yayBhcyBURVJNQ01EL1RFUk1DTURSVU4sIHBsZWFzZSBzcGVjaWZ5
IGEgZGlmZmVyZW50IHRlcm1pbmFsIG9yIHNldCBQQVRDSFJFU09MVkUgPSAibm9vcCIgdG8gZGlz
YWJsZSBpbnRlcmFjdGl2ZSBwYXRjaCByZXNvbHV0aW9uLlxuJwoKICAgIGlmIG9zLnBhdGguYmFz
ZW5hbWUob3MucmVhZGxpbmsoJy9iaW4vc2gnKSkgPT0gJ2Rhc2gnOgogICAgICAgIG1lc3NhZ2Vz
ID0gbWVzc2FnZXMgKyAiVXNpbmcgZGFzaCBhcyAvYmluL3NoIGNhdXNlcyB2YXJpb3VzIHN1YnRs
ZSBidWlsZCBwcm9ibGVtcywgcGxlYXNlIHVzZSBiYXNoIGluc3RlYWQgKGUuZy4gJ2Rwa2ctcmVj
b25maWd1cmUgZGFzaCcgb24gYW4gVWJ1bnR1IHN5c3RlbS5cbiIKCiAgICBvbWFzayA9IG9zLnVt
YXNrKDAyMikKICAgIGlmIG9tYXNrICYgMDc1NToKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2Vz
ICsgIlBsZWFzZSB1c2UgYSB1bWFzayB3aGljaCBhbGxvd3MgYStyeCBhbmQgdStyd3hcbiIKICAg
IG9zLnVtYXNrKG9tYXNrKQoKICAgIG9lc19iYl9jb25mID0gZGF0YS5nZXRWYXIoICdPRVNfQklU
QkFLRV9DT05GJywgZS5kYXRhLCBUcnVlICkKICAgIGlmIG5vdCBvZXNfYmJfY29uZjoKICAgICAg
ICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgJ1lvdSBkbyBub3QgaW5jbHVkZSBPcGVuRW1iZWRkZWRz
IHZlcnNpb24gb2YgY29uZi9iaXRiYWtlLmNvbmYuIFRoaXMgbWVhbnMgeW91ciBlbnZpcm9ubWVu
dCBpcyBtaXNjb25maWd1cmVkLCBpbiBwYXJ0aWN1bGFyIGNoZWNrIEJCUEFUSC5cbicKCiAgICBu
b2xpYnMgPSBkYXRhLmdldFZhcignTk8zMkxJQlMnLCBlLmRhdGEsIFRydWUpCiAgICBpZiBub3Qg
bm9saWJzOgogICAgICAgIGxpYjMycGF0aCA9ICcvbGliJwogICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKCcvbGliNjQnKSBhbmQgKCBvcy5wYXRoLmlzbGluaygnL2xpYjY0Jykgb3Igb3MucGF0aC5p
c2xpbmsoJy9saWInKSApOgogICAgICAgICAgIGxpYjMycGF0aCA9ICcvbGliMzInCgogICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKCclcy9saWJjLnNvLjYnICUgbGliMzJwYXRoKSBhbmQgbm90IG9z
LnBhdGguZXhpc3RzKCcvdXNyL2luY2x1ZGUvZ251L3N0dWJzLTMyLmgnKToKICAgICAgICAgICAg
bWVzc2FnZXMgPSBtZXNzYWdlcyArICJZb3UgaGF2ZSBhIDMyLWJpdCBsaWJjLCBidXQgbm8gMzIt
Yml0IGhlYWRlcnMuICBZb3UgbXVzdCBpbnN0YWxsIHRoZSAzMi1iaXQgbGliYyBoZWFkZXJzLlxu
IgoKICAgIHRtcGRpciA9IGRhdGEuZ2V0VmFyKCdUTVBESVInLCBlLmRhdGEsIFRydWUpCiAgICBz
c3RhdGVfZGlyID0gZGF0YS5nZXRWYXIoJ1NTVEFURV9ESVInLCBlLmRhdGEsIFRydWUpCgogICAg
IyBDaGVjayBzYXZlZCBzYW5pdHkgaW5mbwogICAgbGFzdF9zYW5pdHlfdmVyc2lvbiA9IDAKICAg
IGxhc3RfdG1wZGlyID0gIiIKICAgIGxhc3Rfc3N0YXRlX2RpciA9ICIiCiAgICBzYW5pdHl2ZXJm
aWxlID0gJ2NvbmYvc2FuaXR5X2luZm8nCiAgICBpZiBvcy5wYXRoLmV4aXN0cyhzYW5pdHl2ZXJm
aWxlKToKICAgICAgICBmID0gZmlsZShzYW5pdHl2ZXJmaWxlLCAncicpCiAgICAgICAgZm9yIGxp
bmUgaW4gZjoKICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdTQU5JVFlfVkVSU0lPTicp
OgogICAgICAgICAgICAgICAgbGFzdF9zYW5pdHlfdmVyc2lvbiA9IGludChsaW5lLnNwbGl0KClb
MV0pCiAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnVE1QRElSJyk6CiAgICAgICAgICAg
ICAgICBsYXN0X3RtcGRpciA9IGxpbmUuc3BsaXQoKVsxXQogICAgICAgICAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgoJ1NTVEFURV9ESVInKToKICAgICAgICAgICAgICAgIGxhc3Rfc3N0YXRlX2RpciA9
IGxpbmUuc3BsaXQoKVsxXQoKICAgIHNhbml0eV92ZXJzaW9uID0gaW50KGRhdGEuZ2V0VmFyKCdT
QU5JVFlfVkVSU0lPTicsIGUuZGF0YSwgVHJ1ZSkgb3IgMSkKICAgIGlmIGxhc3Rfc2FuaXR5X3Zl
cnNpb24gPCBzYW5pdHlfdmVyc2lvbjoKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgY2hl
Y2tfc2FuaXR5X3ZlcnNpb25fY2hhbmdlKGUuZGF0YSkKICAgICAgICBtZXNzYWdlcyA9IG1lc3Nh
Z2VzICsgY2hlY2tfc2FuaXR5X3RtcGRpcl9jaGFuZ2UodG1wZGlyLCBlLmRhdGEpCiAgICAgICAg
bWVzc2FnZXMgPSBtZXNzYWdlcyArIGNoZWNrX3Nhbml0eV9zc3RhdGVfZGlyX2NoYW5nZShzc3Rh
dGVfZGlyLCBlLmRhdGEpCiAgICBlbHNlOgogICAgICAgIGlmIGxhc3RfdG1wZGlyICE9IHRtcGRp
cjoKICAgICAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArIGNoZWNrX3Nhbml0eV90bXBkaXJf
Y2hhbmdlKHRtcGRpciwgZS5kYXRhKQogICAgICAgIGlmIGxhc3Rfc3N0YXRlX2RpciAhPSBzc3Rh
dGVfZGlyOgogICAgICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgY2hlY2tfc2FuaXR5X3Nz
dGF0ZV9kaXJfY2hhbmdlKHNzdGF0ZV9kaXIsIGUuZGF0YSkKCiAgICBpZiBvcy5wYXRoLmV4aXN0
cygiY29uZiIpOgogICAgICAgIGYgPSBmaWxlKHNhbml0eXZlcmZpbGUsICd3JykKICAgICAgICBm
LndyaXRlKCJTQU5JVFlfVkVSU0lPTiAlc1xuIiAlIHNhbml0eV92ZXJzaW9uKQogICAgICAgIGYu
d3JpdGUoIlRNUERJUiAlc1xuIiAlIHRtcGRpcikKICAgICAgICBmLndyaXRlKCJTU1RBVEVfRElS
ICVzXG4iICUgc3N0YXRlX2RpcikKCiAgICAjCiAgICAjIENoZWNrIHRoYXQgVE1QRElSIGhhc24n
dCBjaGFuZ2VkIGxvY2F0aW9uIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2Ugd2VyZSBydW4KICAgICMK
ICAgIGNoZWNrZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICJzYXZlZF90bXBkaXIiKQogICAg
aWYgb3MucGF0aC5leGlzdHMoY2hlY2tmaWxlKToKICAgICAgICBmID0gZmlsZShjaGVja2ZpbGUs
ICJyIikKICAgICAgICBzYXZlZF90bXBkaXIgPSBmLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgaWYg
KHNhdmVkX3RtcGRpciAhPSB0bXBkaXIpOgogICAgICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2Vz
ICsgIkVycm9yLCBUTVBESVIgaGFzIGNoYW5nZWQgbG9jYXRpb24uIFlvdSBuZWVkIHRvIGVpdGhl
ciBtb3ZlIGl0IGJhY2sgdG8gJXMgb3IgcmVidWlsZFxuIiAlIHNhdmVkX3RtcGRpcgogICAgZWxz
ZToKICAgICAgICBmID0gZmlsZShjaGVja2ZpbGUsICJ3IikKICAgICAgICBmLndyaXRlKHRtcGRp
cikKICAgIGYuY2xvc2UoKQoKICAgICMKICAgICMgQ2hlY2sgdGhlICdBQkknIG9mIFRNUERJUgog
ICAgIwogICAgY3VycmVudF9hYmkgPSBkYXRhLmdldFZhcignT0VMQVlPVVRfQUJJJywgZS5kYXRh
LCBUcnVlKQogICAgYWJpZmlsZSA9IGRhdGEuZ2V0VmFyKCdTQU5JVFlfQUJJRklMRScsIGUuZGF0
YSwgVHJ1ZSkKICAgIGlmIG9zLnBhdGguZXhpc3RzKGFiaWZpbGUpOgogICAgICAgIGYgPSBmaWxl
KGFiaWZpbGUsICJyIikKICAgICAgICBhYmkgPSBmLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgaWYg
bm90IGFiaS5pc2RpZ2l0KCk6CiAgICAgICAgICAgIGYgPSBmaWxlKGFiaWZpbGUsICJ3IikKICAg
ICAgICAgICAgZi53cml0ZShjdXJyZW50X2FiaSkKICAgICAgICBlbGlmIGFiaSA9PSAiMiIgYW5k
IGN1cnJlbnRfYWJpID09ICIzIjoKICAgICAgICAgICAgYmIubm90ZSgiQ29udmVydGluZyBzdGFn
aW5nIGZyb20gbGF5b3V0IHZlcnNpb24gMiB0byBsYXlvdXQgdmVyc2lvbiAzIikKICAgICAgICAg
ICAgb3Muc3lzdGVtKGJiLmRhdGEuZXhwYW5kKCJtdiAvbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N0YWdpbmcgL2xvY2Fs
L2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNl
L3RtcC9zeXNyb290cyIsIGUuZGF0YSkpCiAgICAgICAgICAgIG9zLnN5c3RlbShiYi5kYXRhLmV4
cGFuZCgibG4gLXMgc3lzcm9vdHMgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAy
MHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zdGFnaW5nIiwgZS5kYXRhKSkKICAgICAg
ICAgICAgb3Muc3lzdGVtKGJiLmRhdGEuZXhwYW5kKCJjZCAvbG9jYWwvamVua2lucy95b2N0by9j
YWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N0YW1wczsgZm9y
IGkgaW4gKi8qZG9fcG9wdWxhdGVfc3RhZ2luZzsgZG8gbmV3PWBlY2hvICRpIHwgc2VkIC1lICdz
L2RvX3BvcHVsYXRlX3N0YWdpbmcvZG9fcG9wdWxhdGVfc3lzcm9vdC8nYDsgbXYgJGkgJG5ldzsg
ZG9uZSIsIGUuZGF0YSkpCiAgICAgICAgICAgIGYgPSBmaWxlKGFiaWZpbGUsICJ3IikKICAgICAg
ICAgICAgZi53cml0ZShjdXJyZW50X2FiaSkKICAgICAgICBlbGlmIGFiaSA9PSAiMyIgYW5kIGN1
cnJlbnRfYWJpID09ICI0IjoKICAgICAgICAgICAgYmIubm90ZSgiQ29udmVydGluZyBzdGFnaW5n
IGxheW91dCBmcm9tIHZlcnNpb24gMyB0byBsYXlvdXQgdmVyc2lvbiA0IikKICAgICAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMoYmIuZGF0YS5leHBhbmQoIi9sb2NhbC9qZW5raW5zL3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9vdHMveDg2
XzY0LWxpbnV4L3Vzci9iaW4vcDEwMjByZGItZnNsLWxpbnV4LWdudXNwZSIsIGUuZGF0YSkpOgog
ICAgICAgICAgICAgICAgb3Muc3lzdGVtKGJiLmRhdGEuZXhwYW5kKCJtdiAvbG9jYWwvamVua2lu
cy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5
c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUgL2xv
Y2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxl
YXNlL3RtcC9zeXNyb290cy9wMTAyMHJkYi91c3IvYmluL2Nyb3Nzc2NyaXB0cyIsIGUuZGF0YSkp
CiAgICAgICAgICAgICAgICBvcy5zeXN0ZW0oYmIuZGF0YS5leHBhbmQoImxuIC1zIC9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90
bXAvc3lzcm9vdHMvcDEwMjByZGIvdXNyL2Jpbi9jcm9zc3NjcmlwdHMgL2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zeXNy
b290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlIiwgZS5k
YXRhKSkKCiAgICAgICAgICAgIGYgPSBmaWxlKGFiaWZpbGUsICJ3IikKICAgICAgICAgICAgZi53
cml0ZShjdXJyZW50X2FiaSkKICAgICAgICBlbGlmIGFiaSA9PSAiNCI6CiAgICAgICAgICAgIG1l
c3NhZ2VzID0gbWVzc2FnZXMgKyAiU3RhZ2luZyBsYXlvdXQgaGFzIGNoYW5nZWQuIFRoZSBjcm9z
cyBkaXJlY3RvcnkgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgY3Jvc3MgcGFja2FnZXMgYXJlIG5v
dyBidWlsdCB1bmRlciB0aGUgbmF0aXZlIHN5c3Jvb3QuXG5UaGlzIHJlcXVpcmVzIGEgcmVidWls
ZC5cbiIKICAgICAgICBlbGlmIGFiaSA9PSAiNSIgYW5kIGN1cnJlbnRfYWJpID09ICI2IjoKICAg
ICAgICAgICAgYmIubm90ZSgiQ29udmVydGluZyBzdGFnaW5nIGxheW91dCBmcm9tIHZlcnNpb24g
NSB0byBsYXlvdXQgdmVyc2lvbiA2IikKICAgICAgICAgICAgb3Muc3lzdGVtKGJiLmRhdGEuZXhw
YW5kKCJtdiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3Ax
MDIwcmRiX3JlbGVhc2UvdG1wL3BzdGFnZWxvZ3MgL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUt
dGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9zc3RhdGUtY29udHJvbCIs
IGUuZGF0YSkpCiAgICAgICAgICAgIGYgPSBmaWxlKGFiaWZpbGUsICJ3IikKICAgICAgICAgICAg
Zi53cml0ZShjdXJyZW50X2FiaSkKICAgICAgICBlbGlmIChhYmkgIT0gY3VycmVudF9hYmkpOgog
ICAgICAgICAgICAjIENvZGUgdG8gY29udmVydCBmcm9tIG9uZSBBQkkgdG8gYW5vdGhlciBjb3Vs
ZCBnbyBoZXJlIGlmIHBvc3NpYmxlLgogICAgICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsg
IkVycm9yLCBUTVBESVIgaGFzIGNoYW5nZWQgaXRzIGxheW91dCB2ZXJzaW9uIG51bWJlciAoJXMg
dG8gJXMpIGFuZCB5b3UgbmVlZCB0byBlaXRoZXIgcmVidWlsZCwgcmV2ZXJ0IG9yIGFkanVzdCBp
dCBhdCB5b3VyIG93biByaXNrLlxuIiAlIChhYmksIGN1cnJlbnRfYWJpKQogICAgZWxzZToKICAg
ICAgICBmID0gZmlsZShhYmlmaWxlLCAidyIpCiAgICAgICAgZi53cml0ZShjdXJyZW50X2FiaSkK
ICAgIGYuY2xvc2UoKQoKICAgIG9lcm9vdCA9IGRhdGEuZ2V0VmFyKCdDT1JFQkFTRScsIGUuZGF0
YSkKICAgIGlmIG9lcm9vdC5maW5kICgnKycpICE9IC0xOgogICAgICAgIG1lc3NhZ2VzID0gbWVz
c2FnZXMgKyAiRXJyb3IsIHlvdSBoYXZlIGFuIGludmFsaWQgY2hhcmFjdGVyICgrKSBpbiB5b3Vy
IENPUkVCQVNFIGRpcmVjdG9yeSBwYXRoLiBQbGVhc2UgbW92ZSB0aGUgaW5zdGFsbGF0aW9uIHRv
IGEgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgaW5jbHVkZSBhICsuIgogICAgZWxpZiBvZXJvb3Qu
ZmluZCAoJyAnKSAhPSAtMToKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIkVycm9yLCB5
b3UgaGF2ZSBhIHNwYWNlIGluIHlvdXIgQ09SRUJBU0UgZGlyZWN0b3J5IHBhdGguIFBsZWFzZSBt
b3ZlIHRoZSBpbnN0YWxsYXRpb24gdG8gYSBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBpbmNsdWRl
IGEgc3BhY2UuIgoKICAgIGlmIG1lc3NhZ2VzICE9ICIiOgogICAgICAgIHJhaXNlX3Nhbml0eV9l
cnJvcihtZXNzYWdlcykKfQoKCnB5dGhvbiBvZV9wb3Blbl9lbnYgKCkgewpkZWYgb2VfcG9wZW5f
ZW52KGQpOgogICAgZW52ID0gZC5nZXRWYXIoIl9fb2VfcG9wZW5fZW52IiwgRmFsc2UpCiAgICBp
ZiBlbnYgaXMgTm9uZToKICAgICAgICBlbnYgPSB7fQogICAgICAgIGZvciB2IGluIGQua2V5cygp
OgogICAgICAgICAgICBpZiBkLmdldFZhckZsYWcodiwgImV4cG9ydCIpOgogICAgICAgICAgICAg
ICAgZW52W3ZdID0gZC5nZXRWYXIodiwgVHJ1ZSkgb3IgIiIKICAgICAgICBkLnNldFZhcigiX19v
ZV9wb3Blbl9lbnYiLCBlbnYpCiAgICByZXR1cm4gZW52Cn0KCgpweXRob24gY2hlY2tfc2FuaXR5
X3RtcGRpcl9jaGFuZ2UgKCkgewpkZWYgY2hlY2tfc2FuaXR5X3RtcGRpcl9jaGFuZ2UodG1wZGly
LCBkYXRhKToKICAgICMgU2FuaXR5IGNoZWNrcyB0byBiZSBkb25lIHdoZW4gdGhlIHZhbHVlIG9m
IFRNUERJUiBjaGFuZ2VzCgogICAgIyBDaGVjayB0aGF0IFRNUERJUiBpc24ndCBvbiBhIGZpbGVz
eXN0ZW0gd2l0aCBsaW1pdGVkIGZpbGVuYW1lIGxlbmd0aCAoZWcuIGVDcnlwdEZTKQogICAgdGVz
dG1zZyA9IGNoZWNrX2NyZWF0ZV9sb25nX2ZpbGVuYW1lKHRtcGRpciwgIlRNUERJUiIpCiAgICAj
IENoZWNrIHRoYXQgd2UgY2FuIGZldGNoIGZyb20gdmFyaW91cyBuZXR3b3JrIHRyYW5zcG9ydHMK
ICAgIHRlc3Rtc2cgPSB0ZXN0bXNnICsgY2hlY2tfY29ubmVjdGl2aXR5KGRhdGEpCiAgICByZXR1
cm4gdGVzdG1zZwp9CgoKcHl0aG9uIHNzdGF0ZV9oYXJkY29kZV9wYXRoICgpIHsKZGVmIHNzdGF0
ZV9oYXJkY29kZV9wYXRoKGQpOgoJIyBOZWVkIHRvIHJlbW92ZSBoYXJkY29kZWQgcGF0aHMgYW5k
IGZpeCB0aGVzZSB3aGVuIHdlIGluc3RhbGwgdGhlCgkjIHN0YWdpbmcgcGFja2FnZXMuCglzc3Rh
dGVfc2Nhbl9jbWQgPSBiYi5kYXRhLmdldFZhcignU1NUQVRFX1NDQU5fQ01EJywgZCwgVHJ1ZSkK
CXAgPSBvcy5wb3BlbigiJXMiICUgc3N0YXRlX3NjYW5fY21kKQoJZmlsZV9saXN0ID0gcC5yZWFk
KCkKCglpZiBmaWxlX2xpc3QgPT0gIiI6CgkJcC5jbG9zZSgpCgkJcmV0dXJuCgoJc3RhZ2luZyA9
IGJiLmRhdGEuZ2V0VmFyKCdTVEFHSU5HX0RJUicsIGQsIFRydWUpCglzdGFnaW5nX3RhcmdldCA9
IGJiLmRhdGEuZ2V0VmFyKCdTVEFHSU5HX0RJUl9UQVJHRVQnLCBkLCBUcnVlKQoJc3RhZ2luZ19o
b3N0ID0gYmIuZGF0YS5nZXRWYXIoJ1NUQUdJTkdfRElSX0hPU1QnLCBkLCBUcnVlKQoJc3N0YXRl
X2J1aWxkZGlyID0gYmIuZGF0YS5nZXRWYXIoJ1NTVEFURV9CVUlMRERJUicsIGQsIFRydWUpCgoJ
Zm9yIGkgaW4gZmlsZV9saXN0LnNwbGl0KCdcbicpOgoJCWlmIG5vdCBpOgoJCQljb250aW51ZQoJ
CWlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpIG9yIGJiLmRhdGEuaW5oZXJp
dHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3Nz
c2RrJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToK
CQkJY21kID0gInNlZCAtaSAtZSBzOiVzOkZJWE1FU1RBR0lOR0RJUjpnICVzIiAlIChzdGFnaW5n
LCBpKQoJCWVsaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MnLCBkKToKCQkJY21kID0g
InNlZCAtaSAtZSBzOiVzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDpnICVzIFwKCQkJCXNlZCAtaSAt
ZSBzOiVzOkZJWE1FU1RBR0lOR0RJUjpnICVzIiAlIChzdGFnaW5nX3RhcmdldCwgaSwgc3RhZ2lu
ZywgaSkKCQllbHNlOgoJCQljbWQgPSAic2VkIC1pIC1lIHM6JXM6RklYTUVTVEFHSU5HRElSSE9T
VDpnICVzIiAlIChzdGFnaW5nX2hvc3QsIGkpCgoJCW9zLnN5c3RlbShjbWQpCgkJb3Muc3lzdGVt
KCJlY2hvICVzIHwgc2VkIC1lICdzOiVzOjonID4+ICVzZml4bWVwYXRoIiAlIChpLCBzc3RhdGVf
YnVpbGRkaXIsIHNzdGF0ZV9idWlsZGRpcikpCglwLmNsb3NlKCkKfQoKCnB5dGhvbiBkb19saXN0
dGFza3MgKCkgewoJaW1wb3J0IHN5cwoJIyBlbWl0IHZhcmlhYmxlcyBhbmQgc2hlbGwgZnVuY3Rp
b25zCgkjYmIuZGF0YS5lbWl0X2VudihzeXMuX19zdGRvdXRfXywgZCkKCSMgZW1pdCB0aGUgbWV0
YWRhdGEgd2hpY2ggaXNudCB2YWxpZCBzaGVsbAoJZm9yIGUgaW4gZC5rZXlzKCk6CgkJaWYgYmIu
ZGF0YS5nZXRWYXJGbGFnKGUsICd0YXNrJywgZCk6CgkJCWJiLnBsYWluKCIlcyIgJSBlKQp9CgoK
cHl0aG9uIHBhY2thZ2VfcWFfY2xlYW5fcGF0aCAoKSB7CmRlZiBwYWNrYWdlX3FhX2NsZWFuX3Bh
dGgocGF0aCxkKToKICAgICIiIiBSZW1vdmUgdGhlIGNvbW1vbiBwcmVmaXggZnJvbSB0aGUgcGF0
aC4gSW4gdGhpcyBjYXNlIGl0IGlzIHRoZSBUTVBESVIiIiIKICAgIHJldHVybiBwYXRoLnJlcGxh
Y2UoYmIuZGF0YS5nZXRWYXIoJ1RNUERJUicsZCxUcnVlKSwiIikKfQoKCnB5dGhvbiBtYWNoaW5l
X3BhdGhzICgpIHsKZGVmIG1hY2hpbmVfcGF0aHMoZCk6CiAgICAiIiJMaXN0IGFueSBleGlzdGlu
ZyBtYWNoaW5lIHNwZWNpZmljIGZpbGVzcGF0aCBkaXJlY3RvcmllcyIiIgogICAgbWFjaGluZSA9
IGQuZ2V0VmFyKCJNQUNISU5FIiwgVHJ1ZSkKICAgIGZpbGVzcGF0aHBrZyA9IGQuZ2V0VmFyKCJG
SUxFU1BBVEhQS0ciLCBUcnVlKS5zcGxpdCgiOiIpCiAgICBmb3IgYmFzZXBhdGggaW4gZC5nZXRW
YXIoIkZJTEVTUEFUSEJBU0UiLCBUcnVlKS5zcGxpdCgiOiIpOgogICAgICAgIGZvciBwa2dwYXRo
IGluIGZpbGVzcGF0aHBrZzoKICAgICAgICAgICAgbWFjaGluZXBhdGggPSBvcy5wYXRoLmpvaW4o
YmFzZXBhdGgsIHBrZ3BhdGgsIG1hY2hpbmUpCiAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIo
bWFjaGluZXBhdGgpOgogICAgICAgICAgICAgICAgeWllbGQgbWFjaGluZXBhdGgKfQoKCnB5dGhv
biBwYWNrYWdlX3FhX2NoZWNrX2J1aWxkcGF0aHMgKCkgewpkZWYgcGFja2FnZV9xYV9jaGVja19i
dWlsZHBhdGhzKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogICAgIiIiCiAgICBDaGVj
ayBmb3IgYnVpbGQgcGF0aHMgaW5zaWRlIHRhcmdldCBmaWxlcyBhbmQgZXJyb3IgaWYgbm90IGZv
dW5kIGluIHRoZSB3aGl0ZWxpc3QKICAgICIiIgogICAgIyBJZ25vcmUgLmRlYnVnIGZpbGVzLCBu
b3QgaW50ZXJlc3RpbmcKICAgIGlmIHBhdGguZmluZCgiLmRlYnVnIikgIT0gLTE6CiAgICAgICAg
cmV0dXJuCgogICAgIyBJZ25vcmUgc3ltbGlua3MKICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgp
OgogICAgICAgIHJldHVybgoKICAgIHRtcGRpciA9IGJiLmRhdGEuZ2V0VmFyKCdUTVBESVInLCBk
LCBUcnVlKQogICAgZmlsZV9jb250ZW50ID0gb3BlbihwYXRoKS5yZWFkKCkKICAgIGlmIHRtcGRp
ciBpbiBmaWxlX2NvbnRlbnQ6CiAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJGaWxlICVzIGluIHBh
Y2thZ2UgY29udGFpbmVkIHJlZmVyZW5jZSB0byB0bXBkaXIiICUgcGFja2FnZV9xYV9jbGVhbl9w
YXRoKHBhdGgsZCkpCn0KCgpweXRob24gX19hbm9ueW1vdXMgKCkgewpOb25lfQoKCnB5dGhvbiBk
b19wYWNrYWdlX3NldHNjZW5lICgpIHsKCXNzdGF0ZV9zZXRzY2VuZShkKQp9CgoKcHl0aG9uIGJh
c2VfZGVwX3ByZXBlbmQgKCkgewpOb25lfQoKCnB5dGhvbiBmaXh1cF9wZXJtcyAoKSB7CglpbXBv
cnQgb3MsIHB3ZCwgZ3JwCgoJIyBpbml0IHVzaW5nIGEgc3RyaW5nIHdpdGggdGhlIHNhbWUgZm9y
bWF0IGFzIGEgbGluZSBhcyBkb2N1bWVudGVkIGluCgkjIHRoZSBmcy1wZXJtcy50eHQgZmlsZQoJ
IyA8cGF0aD4gPG1vZGU+IDx1aWQ+IDxnaWQ+IDx3YWxrPiA8Zm1vZGU+IDxmdWlkPiA8ZmdpZD4K
CSMgPHBhdGg+IGxpbmsgPGxpbmsgdGFyZ2V0PgoJIwoJIyBfX3N0cl9fIGNhbiBiZSB1c2VkIHRv
IHByaW50IG91dCBhbiBlbnRyeSBpbiB0aGUgaW5wdXQgZm9ybWF0CgkjCgkjIGlmIGZzX3Blcm1z
X2VudHJ5LnBhdGggaXMgTm9uZToKCSMJYW4gZXJyb3Igb2NjdXJlZAoJIyBpZiBmc19wZXJtc19l
bnRyeS5saW5rLCB5b3UgY2FuIHJldHJpZXZlOgoJIwlmc19wZXJtc19lbnRyeS5wYXRoID0gcGF0
aAoJIwlmc19wZXJtc19lbnRyeS5saW5rID0gdGFyZ2V0IG9mIGxpbmsKCSMgaWYgbm90IGZzX3Bl
cm1zX2VudHJ5LmxpbmssIHlvdSBjYW4gcmV0cmlldmU6CgkjCWZzX3Blcm1zX2VudHJ5LnBhdGgg
PSBwYXRoCgkjCWZzX3Blcm1zX2VudHJ5Lm1vZGUgPSBleHBlY3RlZCBkaXIgbW9kZSBvciBOb25l
CgkjCWZzX3Blcm1zX2VudHJ5LnVpZCA9IGV4cGVjdGVkIHVpZCBvciAtMQoJIwlmc19wZXJtc19l
bnRyeS5naWQgPSBleHBlY3RlZCBnaWQgb3IgLTEKCSMJZnNfcGVybXNfZW50cnkud2FsayA9ICd0
cnVlJyBvciBzb21ldGhpbmcgZWxzZQoJIwlmc19wZXJtc19lbnRyeS5mbW9kZSA9IGV4cGVjdGVk
IGZpbGUgbW9kZSBvciBOb25lCgkjCWZzX3Blcm1zX2VudHJ5LmZ1aWQgPSBleHBlY3RlZCBmaWxl
IHVpZCBvciAtMQoJIwlmc19wZXJtc19lbnRyeV9mZ2lkID0gZXhwZWN0ZWQgZmlsZSBnaWQgb3Ig
LTEKCWNsYXNzIGZzX3Blcm1zX2VudHJ5KCk6CgkJZGVmIF9faW5pdF9fKHNlbGYsIGxpbmUpOgoJ
CQlsc3BsaXQgPSBsaW5lLnNwbGl0KCkKCQkJaWYgbGVuKGxzcGxpdCkgPT0gMyBhbmQgbHNwbGl0
WzFdLmxvd2VyKCkgPT0gImxpbmsiOgoJCQkJc2VsZi5fc2V0bGluayhsc3BsaXRbMF0sIGxzcGxp
dFsyXSkKCQkJZWxpZiBsZW4obHNwbGl0KSA9PSA4OgoJCQkJc2VsZi5fc2V0ZGlyKGxzcGxpdFsw
XSwgbHNwbGl0WzFdLCBsc3BsaXRbMl0sIGxzcGxpdFszXSwgbHNwbGl0WzRdLCBsc3BsaXRbNV0s
IGxzcGxpdFs2XSwgbHNwbGl0WzddKQoJCQllbHNlOgoJCQkJYmIuZXJyb3IoIkZpeHVwIFBlcm1z
OiBpbnZhbGlkIGNvbmZpZyBsaW5lICVzIiAlIGxpbmUpCgkJCQlzZWxmLnBhdGggPSBOb25lCgkJ
CQlzZWxmLmxpbmsgPSBOb25lCgoJCWRlZiBfc2V0ZGlyKHNlbGYsIHBhdGgsIG1vZGUsIHVpZCwg
Z2lkLCB3YWxrLCBmbW9kZSwgZnVpZCwgZmdpZCk6CgkJCXNlbGYucGF0aCA9IG9zLnBhdGgubm9y
bXBhdGgocGF0aCkKCQkJc2VsZi5saW5rID0gTm9uZQoJCQlzZWxmLm1vZGUgPSBzZWxmLl9wcm9j
bW9kZShtb2RlKQoJCQlzZWxmLnVpZCAgPSBzZWxmLl9wcm9jdWlkKHVpZCkKCQkJc2VsZi5naWQg
ID0gc2VsZi5fcHJvY2dpZChnaWQpCgkJCXNlbGYud2FsayA9IHdhbGsubG93ZXIoKQoJCQlzZWxm
LmZtb2RlID0gc2VsZi5fcHJvY21vZGUoZm1vZGUpCgkJCXNlbGYuZnVpZCA9IHNlbGYuX3Byb2N1
aWQoZnVpZCkKCQkJc2VsZi5mZ2lkID0gc2VsZi5fcHJvY2dpZChmZ2lkKQoKCQlkZWYgX3NldGxp
bmsoc2VsZiwgcGF0aCwgbGluayk6CgkJCXNlbGYucGF0aCA9IG9zLnBhdGgubm9ybXBhdGgocGF0
aCkKCQkJc2VsZi5saW5rID0gbGluawoKCQlkZWYgX3Byb2Ntb2RlKHNlbGYsIG1vZGUpOgoJCQlp
ZiBub3QgbW9kZSBvciAobW9kZSBhbmQgbW9kZSA9PSAiLSIpOgoJCQkJcmV0dXJuIE5vbmUKCQkJ
ZWxzZToKCQkJCXJldHVybiBpbnQobW9kZSw4KQoKCQkjIE5vdGUgdWlkL2dpZCAtMSBoYXMgc3Bl
Y2lhbCBzaWduaWZpY2FuY2UgaW4gb3MubGNob3duCgkJZGVmIF9wcm9jdWlkKHNlbGYsIHVpZCk6
CgkJCWlmIHVpZCBpcyBOb25lIG9yIHVpZCA9PSAiLSI6CgkJCQlyZXR1cm4gLTEKCQkJZWxpZiB1
aWQuaXNkaWdpdCgpOgoJCQkJcmV0dXJuIGludCh1aWQpCgkJCWVsc2U6CgkJCQlyZXR1cm4gcHdk
LmdldHB3bmFtKHVpZCkucHdfdWlkCgoJCWRlZiBfcHJvY2dpZChzZWxmLCBnaWQpOgoJCQlpZiBn
aWQgaXMgTm9uZSBvciBnaWQgPT0gIi0iOgoJCQkJcmV0dXJuIC0xCgkJCWVsaWYgZ2lkLmlzZGln
aXQoKToKCQkJCXJldHVybiBpbnQoZ2lkKQoJCQllbHNlOgoJCQkJcmV0dXJuIGdycC5nZXRncm5h
bShnaWQpLmdyX2dpZAoKCQkjIFVzZSBmb3IgZGVidWdnaW5nIHRoZSBlbnRyaWVzCgkJZGVmIF9f
c3RyX18oc2VsZik6CgkJCWlmIHNlbGYubGluazoKCQkJCXJldHVybiAiJXMgbGluayAlcyIgJSAo
c2VsZi5wYXRoLCBzZWxmLmxpbmspCgkJCWVsc2U6CgkJCQltb2RlID0gIi0iCgkJCQlpZiBzZWxm
Lm1vZGU6CgkJCQkJbW9kZSA9ICIwJW8iICUgc2VsZi5tb2RlCgkJCQlmbW9kZSA9ICItIgoJCQkJ
aWYgc2VsZi5mbW9kZToKCQkJCQlmbW9kZSA9ICIwJW8iICUgc2VsZi5mbW9kZQoJCQkJdWlkID0g
c2VsZi5fbWFwdWdpZChzZWxmLnVpZCkKCQkJCWdpZCA9IHNlbGYuX21hcHVnaWQoc2VsZi5naWQp
CgkJCQlmdWlkID0gc2VsZi5fbWFwdWdpZChzZWxmLmZ1aWQpCgkJCQlmZ2lkID0gc2VsZi5fbWFw
dWdpZChzZWxmLmZnaWQpCgkJCQlyZXR1cm4gIiVzICVzICVzICVzICVzICVzICVzICVzIiAlIChz
ZWxmLnBhdGgsIG1vZGUsIHVpZCwgZ2lkLCBzZWxmLndhbGssIGZtb2RlLCBmdWlkLCBmZ2lkKQoK
CQlkZWYgX21hcHVnaWQoc2VsZiwgaWQpOgoJCQlpZiBpZCBpcyBOb25lIG9yIGlkID09IC0xOgoJ
CQkJcmV0dXJuICItIgoJCQllbHNlOgoJCQkJcmV0dXJuICIlZCIgJSBpZAoKCSMgRml4IHRoZSBw
ZXJtaXNzaW9uLCBvd25lciBhbmQgZ3JvdXAgb2YgcGF0aAoJZGVmIGZpeF9wZXJtcyhwYXRoLCBt
b2RlLCB1aWQsIGdpZCwgZGlyKToKCQlpZiBtb2RlIGFuZCBub3Qgb3MucGF0aC5pc2xpbmsocGF0
aCk6CgkJCSNiYi5ub3RlKCJGaXh1cCBQZXJtczogY2htb2QgMCVvICVzIiAlIChtb2RlLCBkaXIp
KQoJCQlvcy5jaG1vZChwYXRoLCBtb2RlKQoJCSMgLTEgaXMgYSBzcGVjaWFsIHZhbHVlIHRoYXQg
bWVhbnMgZG9uJ3QgY2hhbmdlIHRoZSB1aWQvZ2lkCgkJIyBpZiB0aGV5IGFyZSBCT1RIIC0xLCBk
b24ndCBib3RoZXIgdG8gbGNob3duCgkJaWYgbm90ICh1aWQgPT0gLTEgYW5kIGdpZCA9PSAtMSk6
CgkJCSNiYi5ub3RlKCJGaXh1cCBQZXJtczogbGNob3duICVkOiVkICVzIiAlICh1aWQsIGdpZCwg
ZGlyKSkKCQkJb3MubGNob3duKHBhdGgsIHVpZCwgZ2lkKQoKCSMgUmV0dXJuIGEgbGlzdCBvZiBj
b25maWd1cmF0aW9uIGZpbGVzIGJhc2VkIG9uIGVpdGhlciB0aGUgZGVmYXVsdAoJIyBmaWxlcy9m
cy1wZXJtcy50eHQgb3IgdGhlIGNvbnRlbnRzIG9mIEZJTEVTWVNURU1fUEVSTVNfVEFCTEVTCgkj
IHBhdGhzIGFyZSByZXNvbHZlZCB2aWEgQkJQQVRICglkZWYgZ2V0X2ZzX3Blcm1zX2xpc3QoZCk6
CgkJc3RyID0gIiIKCQlmc19wZXJtc190YWJsZXMgPSBiYi5kYXRhLmdldFZhcignRklMRVNZU1RF
TV9QRVJNU19UQUJMRVMnLCBkLCBUcnVlKQoJCWlmIG5vdCBmc19wZXJtc190YWJsZXM6CgkJCWZz
X3Blcm1zX3RhYmxlcyA9ICdmaWxlcy9mcy1wZXJtcy50eHQnCgkJZm9yIGNvbmZfZmlsZSBpbiBm
c19wZXJtc190YWJsZXMuc3BsaXQoKToKCQkJc3RyICs9ICIgJXMiICUgYmIud2hpY2goYmIuZGF0
YS5nZXRWYXIoJ0JCUEFUSCcsIGQsIFRydWUpLCBjb25mX2ZpbGUpCgkJcmV0dXJuIHN0cgoKCgoJ
ZHZhciA9IGJiLmRhdGEuZ2V0VmFyKCdQS0dEJywgZCwgVHJ1ZSkKCglmc19wZXJtc190YWJsZSA9
IHt9CgoJIyBCeSBkZWZhdWx0IGFsbCBvZiB0aGUgc3RhbmRhcmQgZGlyZWN0b3JpZXMgc3BlY2lm
aWVkIGluCgkjIGJpdGJha2UuY29uZiB3aWxsIGdldCAwNzU1IHJvb3Q6cm9vdC4KCXRhcmdldF9w
YXRoX3ZhcnMgPSBbCSdiYXNlX3ByZWZpeCcsCgkJCQkncHJlZml4JywKCQkJCSdleGVjX3ByZWZp
eCcsCgkJCQknYmFzZV9iaW5kaXInLAoJCQkJJ2Jhc2Vfc2JpbmRpcicsCgkJCQknYmFzZV9saWJk
aXInLAoJCQkJJ2RhdGFkaXInLAoJCQkJJ3N5c2NvbmZkaXInLAoJCQkJJ3NlcnZpY2VkaXInLAoJ
CQkJJ3NoYXJlZHN0YXRlZGlyJywKCQkJCSdsb2NhbHN0YXRlZGlyJywKCQkJCSdpbmZvZGlyJywK
CQkJCSdtYW5kaXInLAoJCQkJJ2RvY2RpcicsCgkJCQknYmluZGlyJywKCQkJCSdzYmluZGlyJywK
CQkJCSdsaWJleGVjZGlyJywKCQkJCSdsaWJkaXInLAoJCQkJJ2luY2x1ZGVkaXInLAoJCQkJJ29s
ZGluY2x1ZGVkaXInIF0KCglmb3IgcGF0aCBpbiB0YXJnZXRfcGF0aF92YXJzOgoJCWRpciA9IGJi
LmRhdGEuZ2V0VmFyKHBhdGgsIGQsIFRydWUpIG9yICIiCgkJaWYgZGlyID09ICIiOgoJCQljb250
aW51ZQoJCWZzX3Blcm1zX3RhYmxlW2Rpcl0gPSBmc19wZXJtc19lbnRyeShiYi5kYXRhLmV4cGFu
ZCgiJXMgMDc1NSByb290IHJvb3QgZmFsc2UgLSAtIC0iICUgKGRpciksIGQpKQoKCSMgTm93IHdl
IGFjdHVhbGx5IGxvYWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBmaWxlcwoJZm9yIGNvbmYgaW4g
Z2V0X2ZzX3Blcm1zX2xpc3QoZCkuc3BsaXQoKToKCQlpZiBvcy5wYXRoLmV4aXN0cyhjb25mKToK
CQkJZiA9IG9wZW4oY29uZikKCQkJZm9yIGxpbmUgaW4gZjoKCQkJCWlmIGxpbmUuc3RhcnRzd2l0
aCgnIycpOgoJCQkJCWNvbnRpbnVlCgkJCQlsc3BsaXQgPSBsaW5lLnNwbGl0KCkKCQkJCWlmIGxl
bihsc3BsaXQpID09IDA6CgkJCQkJY29udGludWUKCQkJCWlmIGxlbihsc3BsaXQpICE9IDggYW5k
IG5vdCAobGVuKGxzcGxpdCkgPT0gMyBhbmQgbHNwbGl0WzFdLmxvd2VyKCkgPT0gImxpbmsiKToK
CQkJCQliYi5lcnJvcigiRml4dXAgcGVybXM6ICVzIGludmFsaWQgbGluZTogJXMiICUgKGNvbmYs
IGxpbmUpKQoJCQkJCWNvbnRpbnVlCgkJCQllbnRyeSA9IGZzX3Blcm1zX2VudHJ5KGJiLmRhdGEu
ZXhwYW5kKGxpbmUsIGQpKQoJCQkJaWYgZW50cnkgYW5kIGVudHJ5LnBhdGg6CgkJCQkJZnNfcGVy
bXNfdGFibGVbZW50cnkucGF0aF0gPSBlbnRyeQoJCQlmLmNsb3NlKCkKCgkjIERlYnVnIC0tIGxp
c3Qgb3V0IGluLW1lbW9yeSB0YWJsZQoJI2ZvciBkaXIgaW4gZnNfcGVybXNfdGFibGU6CgkjCWJi
Lm5vdGUoIkZpeHVwIFBlcm1zOiAlczogJXMiICUgKGRpciwgc3RyKGZzX3Blcm1zX3RhYmxlW2Rp
cl0pKSkKCgkjIFdlIHByb2Nlc3MgbGlua3MgZmlyc3QsIHNvIHdlIGNhbiBnbyBiYWNrIGFuZCBm
aXh1cCBkaXJlY3Rvcnkgb3duZXJzaGlwCgkjIGZvciBhbnkgbmV3bHkgY3JlYXRlZCBkaXJlY3Rv
cmllcwoJZm9yIGRpciBpbiBmc19wZXJtc190YWJsZToKCQlpZiBub3QgZnNfcGVybXNfdGFibGVb
ZGlyXS5saW5rOgoJCQljb250aW51ZQoKCQlvcmlnaW4gPSBkdmFyICsgZGlyCgkJaWYgbm90IChv
cy5wYXRoLmV4aXN0cyhvcmlnaW4pIGFuZCBvcy5wYXRoLmlzZGlyKG9yaWdpbikgYW5kIG5vdCBv
cy5wYXRoLmlzbGluayhvcmlnaW4pKToKCQkJY29udGludWUKCgkJbGluayA9IGZzX3Blcm1zX3Rh
YmxlW2Rpcl0ubGluawoJCWlmIGxpbmtbMF0gPT0gIi8iOgoJCQl0YXJnZXQgPSBkdmFyICsgbGlu
awoJCQlwdGFyZ2V0ID0gbGluawoJCWVsc2U6CgkJCXRhcmdldCA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUob3JpZ2luKSwgbGluaykKCQkJcHRhcmdldCA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoZGlyKSwgbGluaykKCQlpZiBvcy5wYXRoLmV4aXN0cyh0YXJnZXQpOgoJCQli
Yi5lcnJvcigiRml4dXAgUGVybXM6IFVuYWJsZSB0byBjb3JyZWN0IGRpcmVjdG9yeSBsaW5rLCB0
YXJnZXQgYWxyZWFkeSBleGlzdHM6ICVzIC0+ICVzIiAlIChkaXIsIHB0YXJnZXQpKQoJCQljb250
aW51ZQoKCQkjIENyZWF0ZSBwYXRoIHRvIG1vdmUgZGlyZWN0b3J5IHRvLCBtb3ZlIGl0LCBhbmQg
dGhlbiBzZXR1cCB0aGUgc3ltbGluawoJCWJiLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUodGFy
Z2V0KSkKCQkjYmIubm90ZSgiRml4dXAgUGVybXM6IFJlbmFtZSAlcyAtPiAlcyIgJSAoZGlyLCBw
dGFyZ2V0KSkKCQlvcy5yZW5hbWUob3JpZ2luLCB0YXJnZXQpCgkJI2JiLm5vdGUoIkZpeHVwIFBl
cm1zOiBMaW5rICVzIC0+ICVzIiAlIChkaXIsIGxpbmspKQoJCW9zLnN5bWxpbmsobGluaywgb3Jp
Z2luKQoKCWZvciBkaXIgaW4gZnNfcGVybXNfdGFibGU6CgkJaWYgZnNfcGVybXNfdGFibGVbZGly
XS5saW5rOgoJCQljb250aW51ZQoKCQlvcmlnaW4gPSBkdmFyICsgZGlyCgkJaWYgbm90IChvcy5w
YXRoLmV4aXN0cyhvcmlnaW4pIGFuZCBvcy5wYXRoLmlzZGlyKG9yaWdpbikpOgoJCQljb250aW51
ZQoKCQlmaXhfcGVybXMob3JpZ2luLCBmc19wZXJtc190YWJsZVtkaXJdLm1vZGUsIGZzX3Blcm1z
X3RhYmxlW2Rpcl0udWlkLCBmc19wZXJtc190YWJsZVtkaXJdLmdpZCwgZGlyKQoKCQlpZiBmc19w
ZXJtc190YWJsZVtkaXJdLndhbGsgPT0gJ3RydWUnOgoJCQlmb3Igcm9vdCwgZGlycywgZmlsZXMg
aW4gb3Mud2FsayhvcmlnaW4pOgoJCQkJZm9yIGRyIGluIGRpcnM6CgkJCQkJZWFjaF9kaXIgPSBv
cy5wYXRoLmpvaW4ocm9vdCwgZHIpCgkJCQkJZml4X3Blcm1zKGVhY2hfZGlyLCBmc19wZXJtc190
YWJsZVtkaXJdLm1vZGUsIGZzX3Blcm1zX3RhYmxlW2Rpcl0udWlkLCBmc19wZXJtc190YWJsZVtk
aXJdLmdpZCwgZGlyKQoJCQkJZm9yIGYgaW4gZmlsZXM6CgkJCQkJZWFjaF9maWxlID0gb3MucGF0
aC5qb2luKHJvb3QsIGYpCgkJCQkJZml4X3Blcm1zKGVhY2hfZmlsZSwgZnNfcGVybXNfdGFibGVb
ZGlyXS5mbW9kZSwgZnNfcGVybXNfdGFibGVbZGlyXS5mdWlkLCBmc19wZXJtc190YWJsZVtkaXJd
LmZnaWQsIGRpcikKfQoKCnB5dGhvbiBsZWdpdGltaXplX3BhY2thZ2VfbmFtZSAoKSB7CmRlZiBs
ZWdpdGltaXplX3BhY2thZ2VfbmFtZShzKToKCSIiIgoJTWFrZSBzdXJlIHBhY2thZ2UgbmFtZXMg
YXJlIGxlZ2l0aW1hdGUgc3RyaW5ncwoJIiIiCglpbXBvcnQgcmUKCglkZWYgZml4dXRmKG0pOgoJ
CWNwID0gbS5ncm91cCgxKQoJCWlmIGNwOgoJCQlyZXR1cm4gKCdcdSVzJyAlIGNwKS5kZWNvZGUo
J3VuaWNvZGVfZXNjYXBlJykuZW5jb2RlKCd1dGYtOCcpCgoJIyBIYW5kbGUgdW5pY29kZSBjb2Rl
cG9pbnRzIGVuY29kZWQgYXMgPFUwMTIzPiwgYXMgaW4gZ2xpYmMgbG9jYWxlIGZpbGVzLgoJcyA9
IHJlLnN1YignPFUoWzAtOUEtRmEtZl17MSw0fSk+JywgZml4dXRmLCBzKQoKCSMgUmVtYWluaW5n
IHBhY2thZ2UgbmFtZSB2YWxpZGl0eSBmaXhlcwoJcmV0dXJuIHMubG93ZXIoKS5yZXBsYWNlKCdf
JywgJy0nKS5yZXBsYWNlKCdAJywgJysnKS5yZXBsYWNlKCcsJywgJysnKS5yZXBsYWNlKCcvJywg
Jy0nKQp9CgoKcHl0aG9uIGNoZWNrX2NyZWF0ZV9sb25nX2ZpbGVuYW1lICgpIHsKZGVmIGNoZWNr
X2NyZWF0ZV9sb25nX2ZpbGVuYW1lKGZpbGVwYXRoLCBwYXRobmFtZSk6CiAgICB0ZXN0ZmlsZSA9
IG9zLnBhdGguam9pbihmaWxlcGF0aCwgJycuam9pbihbYG51bWBbLTFdIGZvciBudW0gaW4geHJh
bmdlKDEsMjAwKV0pKQogICAgdHJ5OgogICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxl
cGF0aCk6CiAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihmaWxlcGF0aCkKICAgICAgICBm
ID0gZmlsZSh0ZXN0ZmlsZSwgInciKQogICAgICAgIGYuY2xvc2UoKQogICAgICAgIG9zLnJlbW92
ZSh0ZXN0ZmlsZSkKICAgIGV4Y2VwdCBJT0Vycm9yIGFzIChlcnJubywgc3RyZXJyb3IpOgogICAg
ICAgIGlmIGVycm5vID09IDM2OiAjIEVOQU1FVE9PTE9ORwogICAgICAgICAgICByZXR1cm4gIkZh
aWxlZCB0byBjcmVhdGUgYSBmaWxlIHdpdGggYSBsb25nIG5hbWUgaW4gJXMuIFBsZWFzZSB1c2Ug
YSBmaWxlc3lzdGVtIHRoYXQgZG9lcyBub3QgdW5yZWFzb25hYmx5IGxpbWl0IGZpbGVuYW1lIGxl
bmd0aC5cbiIgJSBwYXRobmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAiRmFp
bGVkIHRvIGNyZWF0ZSBhIGZpbGUgaW4gJXM6ICVzIiAlIChwYXRobmFtZSwgc3RyZXJyb3IpCiAg
ICByZXR1cm4gIiIKfQoKCnB5dGhvbiBvZV9zeXN0ZW0gKCkgewpkZWYgb2Vfc3lzdGVtKGQsIGNt
ZCwgKiprd2FyZ3MpOgogICAgIiIiIFBvcGVuIGJhc2VkIHZlcnNpb24gb2Ygb3Muc3lzdGVtLiAi
IiIKICAgIGlmIG5vdCAic2hlbGwiIGluIGt3YXJnczoKICAgICAgICBrd2FyZ3NbInNoZWxsIl0g
PSBUcnVlCiAgICByZXR1cm4gb2VfcG9wZW4oZCwgY21kLCAqKmt3YXJncykud2FpdCgpCn0KCgpw
eXRob24gZG9fcG9wdWxhdGVfbGljX3NldHNjZW5lICgpIHsKCXNzdGF0ZV9zZXRzY2VuZShkKQp9
CgoKcHl0aG9uIG9lX3BvcGVuICgpIHsKZGVmIG9lX3BvcGVuKGQsIGNtZCwgKiprd2FyZ3MpOgog
ICAgaW1wb3J0IG9lLnByb2Nlc3MKICAgIGt3YXJnc1siZW52Il0gPSBvZV9wb3Blbl9lbnYoZCkK
ICAgIHJldHVybiBvZS5wcm9jZXNzLlBvcGVuKGNtZCwgKiprd2FyZ3MpCn0KCgpweXRob24gcHN0
YWdpbmdfZmV0Y2ggKCkgewpkZWYgcHN0YWdpbmdfZmV0Y2goc3N0YXRlcGtnLCBkKToKICAgIGlt
cG9ydCBiYi5mZXRjaDIKCiAgICAjIE9ubHkgdHJ5IGFuZCBmZXRjaCBpZiB0aGUgdXNlciBoYXMg
Y29uZmlndXJlZCBhIG1pcnJvcgogICAgbWlycm9ycyA9IGJiLmRhdGEuZ2V0VmFyKCdTU1RBVEVf
TUlSUk9SUycsIGQsIFRydWUpCiAgICBpZiBub3QgbWlycm9yczoKICAgICAgICByZXR1cm4KCiAg
ICAjIENvcHkgdGhlIGRhdGEgb2JqZWN0IGFuZCBvdmVycmlkZSBETF9ESVIgYW5kIFNSQ19VUkkK
ICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgYmIuZGF0YS51cGRhdGVf
ZGF0YShsb2NhbGRhdGEpCgogICAgZGxkaXIgPSBiYi5kYXRhLmV4cGFuZCgiL29wdC95b2N0by9j
YWNoZS10ZXN0L3AxMDIwcmRiL3NzdGF0ZS1jYWNoZSIsIGxvY2FsZGF0YSkKICAgIHNyY3VyaSA9
ICJmaWxlOi8vIiArIG9zLnBhdGguYmFzZW5hbWUoc3N0YXRlcGtnKQoKICAgIGJiLm1rZGlyaGll
cihkbGRpcikKCiAgICBiYi5kYXRhLnNldFZhcignRExfRElSJywgZGxkaXIsIGxvY2FsZGF0YSkK
ICAgIGJiLmRhdGEuc2V0VmFyKCdQUkVNSVJST1JTJywgbWlycm9ycywgbG9jYWxkYXRhKQogICAg
YmIuZGF0YS5zZXRWYXIoJ1NSQ19VUkknLCBzcmN1cmksIGxvY2FsZGF0YSkKCiAgICAjIFRyeSBh
IGZldGNoIGZyb20gdGhlIHNzdGF0ZSBtaXJyb3IsIGlmIGl0IGZhaWxzIGp1c3QgcmV0dXJuIGFu
ZAogICAgIyB3ZSB3aWxsIGJ1aWxkIHRoZSBwYWNrYWdlCiAgICB0cnk6CiAgICAgICAgZmV0Y2hl
ciA9IGJiLmZldGNoMi5GZXRjaChbc3JjdXJpXSwgbG9jYWxkYXRhLCBjYWNoZT1GYWxzZSkKICAg
ICAgICBmZXRjaGVyLmRvd25sb2FkKCkKCiAgICAgICAgIyBOZWVkIHRvIG9wdGltaXNlIHRoaXMs
IGlmIHVzaW5nIGZpbGU6Ly8gdXJscywgdGhlIGZldGNoZXIganVzdCBjaGFuZ2VzIHRoZSBsb2Nh
bCBwYXRoCiAgICAgICAgIyBGb3Igbm93IHdvcmsgYXJvdW5kIGJ5IHN5bWxpbmtpbmcKICAgICAg
ICBsb2NhbHBhdGggPSBiYi5kYXRhLmV4cGFuZChmZXRjaGVyLmxvY2FscGF0aChzcmN1cmkpLCBs
b2NhbGRhdGEpCiAgICAgICAgaWYgbG9jYWxwYXRoICE9IHNzdGF0ZXBrZyBhbmQgb3MucGF0aC5l
eGlzdHMobG9jYWxwYXRoKSBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHNzdGF0ZXBrZyk6CiAgICAg
ICAgICAgIG9zLnN5bWxpbmsobG9jYWxwYXRoLCBzc3RhdGVwa2cpCgogICAgZXhjZXB0IGJiLmZl
dGNoMi5CQkZldGNoRXhjZXB0aW9uOgogICAgICAgIHBhc3MKfQoKCnB5dGhvbiBwYWNrYWdlX3Fh
X2NoZWNrX2RldiAoKSB7CmRlZiBwYWNrYWdlX3FhX2NoZWNrX2RldihwYXRoLCBuYW1lLCBkLCBl
bGYsIG1lc3NhZ2VzKToKICAgICIiIgogICAgQ2hlY2sgZm9yICIuc28iIGxpYnJhcnkgc3ltbGlu
a3MgaW4gbm9uLWRldiBwYWNrYWdlcwogICAgIiIiCgogICAgaWYgbm90IG5hbWUuZW5kc3dpdGgo
Ii1kZXYiKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoIi1kYmciKSBhbmQgbm90IG5hbWUuZW5kc3dp
dGgoIi1uYXRpdmVzZGsiKSBhbmQgcGF0aC5lbmRzd2l0aCgiLnNvIikgYW5kIG9zLnBhdGguaXNs
aW5rKHBhdGgpOgogICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgibm9uIC1kZXYvLWRiZy8tbmF0aXZl
c2RrIHBhY2thZ2UgY29udGFpbnMgc3ltbGluayAuc286ICVzIHBhdGggJyVzJyIgJSBcCiAgICAg
ICAgICAgICAgICAgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKfQoKCnB5
dGhvbiBwcnNlcnZfZ2V0X3ByX2F1dG8gKCkgewpkZWYgcHJzZXJ2X2dldF9wcl9hdXRvKGQpOgog
ICAgaWYgZC5nZXRWYXIoJ1VTRV9QUl9TRVJWJywgVHJ1ZSkgIT0gIjAiOgogICAgICAgIGJiLndh
cm4oIk5vdCB1c2luZyBuZXR3b3JrIGJhc2VkIFBSIHNlcnZpY2UiKQogICAgICAgIHJldHVybiBO
b25lCgogICAgY29ubj1kLmdldFZhcigiX19QUlNFUlZfQ09OTiIsIFRydWUpCiAgICBpZiBjb25u
IGlzIE5vbmU6CiAgICAgICAgY29ubj1wcnNlcnZfbWFrZV9jb25uKGQpCiAgICAgICAgaWYgY29u
biBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIHZlcnNpb249ZC5nZXRWYXIo
IlBGIiwgVHJ1ZSkKICAgIGNoZWNrc3VtPWQuZ2V0VmFyKCJCQl9UQVNLSEFTSCIsIFRydWUpCiAg
ICBhdXRvX3Jldj1jb25uLmdldFBSKHZlcnNpb24sY2hlY2tzdW0pCiAgICBiYi5kZWJ1ZygxLCJw
cnNlcnZfZ2V0X3ByX2F1dG86IHZlcnNpb246ICVzIGNoZWNrc3VtOiAlcyByZXN1bHQgJWQiICUg
KHZlcnNpb24sIGNoZWNrc3VtLCBhdXRvX3JldikpCiAgICByZXR1cm4gYXV0b19yZXZ9CgoKcHl0
aG9uIGRvX2ZldGNoICgpIHsKCWJiLmJ1aWxkLmV4ZWNfZnVuYygnYmFzZV9kb19mZXRjaCcsIGQp
Cn0KCgpweXRob24gd3JpdGVfc3BlY2ZpbGUgKCkgewoJaW1wb3J0IHRleHR3cmFwCglpbXBvcnQg
b2UucGFja2FnZWRhdGEKCgkjIFdlIG5lZWQgYSBzaW1wbGUgd2F5IHRvIHJlbW92ZSB0aGUgTUxQ
UkVGSVggZnJvbSB0aGUgcGFja2FnZSBuYW1lLAoJIyBhbmQgZGVwZW5kZW5jeSBpbmZvcm1hdGlv
bi4uLgoJZGVmIHN0cmlwX211bHRpbGliKG5hbWUsIGQpOgoJCW11bHRpbGlicyA9IGQuZ2V0VmFy
KCdNVUxUSUxJQlMnLCBUcnVlKSBvciAiIgoJCWZvciBleHQgaW4gbXVsdGlsaWJzLnNwbGl0KCk6
CgkJCWVleHQgPSBleHQuc3BsaXQoJzonKQoJCQlpZiBsZW4oZWV4dCkgPiAxIGFuZCBlZXh0WzBd
ID09ICdtdWx0aWxpYicgYW5kIG5hbWUgYW5kIG5hbWUuZmluZChlZXh0WzFdICsgJy0nKSA+PSAw
OgoJCQkJbmFtZSA9ICIiLmpvaW4obmFtZS5zcGxpdChlZXh0WzFdICsgJy0nKSkKCQlyZXR1cm4g
bmFtZQoKIwkJbWwgPSBiYi5kYXRhLmdldFZhcigiTUxQUkVGSVgiLCBkLCBUcnVlKQojCQlpZiBt
bCBhbmQgbmFtZSBhbmQgbGVuKG1sKSAhPSAwIGFuZCBuYW1lLmZpbmQobWwpID09IDA6CiMJCQly
ZXR1cm4gbWwuam9pbihuYW1lLnNwbGl0KG1sLCAxKVsxOl0pCiMJCXJldHVybiBuYW1lCgoJIyBJ
biBSUE0sIGRlcGVuZGVuY2llcyBhcmUgb2YgdGhlIGZvcm1hdDogcGtnIDw+PSBFcG9jaDpWZXJz
aW9uLVJlbGVhc2UKCSMgVGhpcyBmb3JtYXQgaXMgc2ltaWxhciB0byBPRSwgaG93ZXZlciB0aGVy
ZSBhcmUgcmVzdHJpY3Rpb25zIG9uIHRoZQoJIyBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIGluIGEg
ZmllbGQuICBJbiB0aGUgVmVyc2lvbiBmaWVsZCwgIi0iCgkjIGNoYXJhY3RlcnMgYXJlIG5vdCBh
bGxvd2VkLiAgIi0iIGlzIGFsbG93ZWQgaW4gdGhlIFJlbGVhc2UgZmllbGQuCgkjCgkjIFdlIHRy
YW5zbGF0ZSB0aGUgIi0iIGluIHRoZSB2ZXJzaW9uIHRvIGEgIisiLCBieSBsb2FkaW5nIHRoZSBQ
S0dWCgkjIGZyb20gdGhlIGRlcGVuZGVudCByZWNpcGUsIHJlcGxhY2luZyB0aGUgLSB3aXRoIGEg
KywgYW5kIHRoZW4gdXNpbmcKCSMgdGhhdCB2YWx1ZSB0byBkbyBhIHJlcGxhY2UgaW5zaWRlIG9m
IHRoaXMgcmVjaXBlJ3MgZGVwZW5kZW5jaWVzLgoJIyBUaGlzIHByZXNlcnZlcyB0aGUgIi0iIHNl
cGFyYXRvciBiZXR3ZWVuIHRoZSB2ZXJzaW9uIGFuZCByZWxlYXNlLCBhcwoJIyB3ZWxsIGFzIGFu
eSAiLSIgY2hhcmFjdGVycyBpbnNpZGUgb2YgdGhlIHJlbGVhc2UgZmllbGQuCgkjCgkjIEFsbCBv
ZiB0aGlzIGhhcyB0byBoYXBwZW4gQkVGT1JFIHRoZSBtYXBwaW5nX3JlbmFtZV9ob29rIGFzCgkj
IGFmdGVyIHJlbmFtaW5nIHdlIGNhbm5vdCBsb29rIHVwIHRoZSBkZXBlbmRlbmNpZXMgaW4gdGhl
IHBhY2thZ2VkYXRhCgkjIHN0b3JlLgoJZGVmIHRyYW5zbGF0ZV92ZXJzKHZhcm5hbWUsIGQpOgoJ
CWRlcGVuZHMgPSBiYi5kYXRhLmdldFZhcih2YXJuYW1lLCBkLCBUcnVlKQoJCWlmIGRlcGVuZHM6
CgkJCWRlcGVuZHNfZGljdCA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zKGRlcGVuZHMp
CgkJCW5ld2RlcHNfZGljdCA9IHt9CgkJCWZvciBkZXAgaW4gZGVwZW5kc19kaWN0OgoJCQkJdmVy
ID0gZGVwZW5kc19kaWN0W2RlcF0KCQkJCWlmIGRlcCBhbmQgdmVyOgoJCQkJCWlmICctJyBpbiB2
ZXI6CgkJCQkJCXN1YmQgPSBvZS5wYWNrYWdlZGF0YS5yZWFkX3N1YnBrZ2RhdGFfZGljdChkZXAs
IGQpCgkJCQkJCWlmICdQS0dWJyBpbiBzdWJkOgoJCQkJCQkJcHYgPSBzdWJkWydQS0dWJ10KCQkJ
CQkJCXJlcHB2ID0gcHYucmVwbGFjZSgnLScsICcrJykKCQkJCQkJCXZlciA9IHZlci5yZXBsYWNl
KHB2LCByZXBwdikKCQkJCW5ld2RlcHNfZGljdFtkZXBdID0gdmVyCgkJCWRlcGVuZHMgPSBiYi51
dGlscy5qb2luX2RlcHMobmV3ZGVwc19kaWN0KQoJCQliYi5kYXRhLnNldFZhcih2YXJuYW1lLCBk
ZXBlbmRzLnN0cmlwKCksIGQpCgoJIyBXZSBuZWVkIHRvIGNoYW5nZSB0aGUgc3R5bGUgdGhlIGRl
cGVuZGVuY3kgZnJvbSBCQiB0byBSUE0KCSMgVGhpcyBuZWVkcyB0byBoYXBwZW4gQUZURVIgdGhl
IG1hcHBpbmdfcmVuYW1lX2hvb2sKCWRlZiBwcmludF9kZXBzKHZhcmlhYmxlLCB0YWcsIGFycmF5
LCBkKToKCQlkZXBlbmRzID0gdmFyaWFibGUKCQlpZiBkZXBlbmRzOgoJCQlkZXBlbmRzX2RpY3Qg
PSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9ucyhkZXBlbmRzKQoJCQlmb3IgZGVwIGluIGRl
cGVuZHNfZGljdDoKCQkJCXZlciA9IGRlcGVuZHNfZGljdFtkZXBdCgkJCQlpZiBkZXAgYW5kIHZl
cjoKCQkJCQl2ZXIgPSB2ZXIucmVwbGFjZSgnKCcsICcnKQoJCQkJCXZlciA9IHZlci5yZXBsYWNl
KCcpJywgJycpCgkJCQkJYXJyYXkuYXBwZW5kKCIlczogJXMgJXMiICUgKHRhZywgZGVwLCB2ZXIp
KQoJCQkJZWxzZToKCQkJCQlhcnJheS5hcHBlbmQoIiVzOiAlcyIgJSAodGFnLCBkZXApKQoKCWRl
ZiB3YWxrX2ZpbGVzKHdhbGtwYXRoLCB0YXJnZXQsIGNvbmZmaWxlcyk6CgkJaW1wb3J0IG9zCgkJ
Zm9yIHJvb3RwYXRoLCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHdhbGtwYXRoKToKCQkJcGF0aCA9
IHJvb3RwYXRoLnJlcGxhY2Uod2Fsa3BhdGgsICIiKQoJCQlmb3IgZGlyIGluIGRpcnM6CgkJCQkj
IEFsbCBwYWNrYWdlcyBvd24gdGhlIGRpcmVjdG9yaWVzIHRoZWlyIGZpbGVzIGFyZSBpbi4uLgoJ
CQkJdGFyZ2V0LmFwcGVuZCgiJWRpciAiICsgcGF0aCArICIvIiArIGRpcikKCQkJZm9yIGZpbGUg
aW4gZmlsZXM6CgkJCQlpZiBjb25mZmlsZXMuY291bnQocGF0aCArICIvIiArIGZpbGUpOgoJCQkJ
CXRhcmdldC5hcHBlbmQoIiVjb25maWcgIiArIHBhdGggKyAiLyIgKyBmaWxlKQoJCQkJZWxzZToK
CQkJCQl0YXJnZXQuYXBwZW5kKHBhdGggKyAiLyIgKyBmaWxlKQoKCXBhY2thZ2VzID0gYmIuZGF0
YS5nZXRWYXIoJ1BBQ0tBR0VTJywgZCwgVHJ1ZSkKCWlmIG5vdCBwYWNrYWdlcyBvciBwYWNrYWdl
cyA9PSAnJzoKCQliYi5kZWJ1ZygxLCAiTm8gcGFja2FnZXM7IG5vdGhpbmcgdG8gZG8iKQoJCXJl
dHVybgoKCXBrZ2Rlc3QgPSBiYi5kYXRhLmdldFZhcignUEtHREVTVCcsIGQsIFRydWUpCglpZiBu
b3QgcGtnZGVzdDoKCQliYi5mYXRhbCgiTm8gUEtHREVTVCIpCgkJcmV0dXJuCgoJb3V0c3BlY2Zp
bGUgPSBiYi5kYXRhLmdldFZhcignT1VUU1BFQ0ZJTEUnLCBkLCBUcnVlKQoJaWYgbm90IG91dHNw
ZWNmaWxlOgoJCWJiLmZhdGFsKCJObyBPVVRTUEVDRklMRSIpCgkJcmV0dXJuCgoJIyBDb25zdHJ1
Y3QgdGhlIFNQRUMgZmlsZS4uLgoJc3JjbmFtZSAgICA9IHN0cmlwX211bHRpbGliKGJiLmRhdGEu
Z2V0VmFyKCdQTicsIGQsIFRydWUpLCBkKQoJc3Jjc3VtbWFyeSA9IChiYi5kYXRhLmdldFZhcign
U1VNTUFSWScsIGQsIFRydWUpIG9yIGJiLmRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicsIGQsIFRy
dWUpIG9yICIuIikKCXNyY3ZlcnNpb24gPSBiYi5kYXRhLmdldFZhcignUEtHVicsIGQsIFRydWUp
LnJlcGxhY2UoJy0nLCAnKycpCglzcmNyZWxlYXNlID0gYmIuZGF0YS5nZXRWYXIoJ1BLR1InLCBk
LCBUcnVlKQoJc3JjZXBvY2ggICA9IChiYi5kYXRhLmdldFZhcignUEtHRScsIGQsIFRydWUpIG9y
ICIiKQoJc3JjbGljZW5zZSA9IGJiLmRhdGEuZ2V0VmFyKCdMSUNFTlNFJywgZCwgVHJ1ZSkKCXNy
Y3NlY3Rpb24gPSBiYi5kYXRhLmdldFZhcignU0VDVElPTicsIGQsIFRydWUpCglzcmNtYWludGFp
bmVyICA9IGJiLmRhdGEuZ2V0VmFyKCdNQUlOVEFJTkVSJywgZCwgVHJ1ZSkKCXNyY2hvbWVwYWdl
ICAgID0gYmIuZGF0YS5nZXRWYXIoJ0hPTUVQQUdFJywgZCwgVHJ1ZSkKCXNyY2Rlc2NyaXB0aW9u
ID0gYmIuZGF0YS5nZXRWYXIoJ0RFU0NSSVBUSU9OJywgZCwgVHJ1ZSkgb3IgIi4iCgoJc3JjZGVw
ZW5kcyAgICAgPSBzdHJpcF9tdWx0aWxpYihiYi5kYXRhLmdldFZhcignREVQRU5EUycsIGQsIFRy
dWUpLCBkKQoJc3JjcmRlcGVuZHMgICAgPSBbXQoJc3JjcnJlY29tbWVuZHMgPSBbXQoJc3JjcnN1
Z2dlc3RzICAgPSBbXQoJc3JjcnByb3ZpZGVzICAgPSBbXQoJc3JjcnJlcGxhY2VzICAgPSBbXQoJ
c3JjcmNvbmZsaWN0cyAgPSBbXQoJc3Jjcm9ic29sZXRlcyAgPSBbXQoKCXNyY3ByZWluc3QgID0g
W10KCXNyY3Bvc3RpbnN0ID0gW10KCXNyY3ByZXJtICAgID0gW10KCXNyY3Bvc3RybSAgID0gW10K
CglzcGVjX3ByZWFtYmxlX3RvcCA9IFtdCglzcGVjX3ByZWFtYmxlX2JvdHRvbSA9IFtdCgoJc3Bl
Y19zY3JpcHRsZXRzX3RvcCA9IFtdCglzcGVjX3NjcmlwdGxldHNfYm90dG9tID0gW10KCglzcGVj
X2ZpbGVzX3RvcCA9IFtdCglzcGVjX2ZpbGVzX2JvdHRvbSA9IFtdCgoJZm9yIHBrZyBpbiBwYWNr
YWdlcy5zcGxpdCgpOgoJCWxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQoKCQlyb290
ID0gIiVzLyVzIiAlIChwa2dkZXN0LCBwa2cpCgoJCWxmID0gYmIudXRpbHMubG9ja2ZpbGUocm9v
dCArICIubG9jayIpCgoJCWJiLmRhdGEuc2V0VmFyKCdST09UJywgJycsIGxvY2FsZGF0YSkKCQli
Yi5kYXRhLnNldFZhcignUk9PVF8lcycgJSBwa2csIHJvb3QsIGxvY2FsZGF0YSkKCQlwa2duYW1l
ID0gYmIuZGF0YS5nZXRWYXIoJ1BLR18lcycgJSBwa2csIGxvY2FsZGF0YSwgMSkKCQlpZiBub3Qg
cGtnbmFtZToKCQkJcGtnbmFtZSA9IHBrZwoJCWJiLmRhdGEuc2V0VmFyKCdQS0cnLCBwa2duYW1l
LCBsb2NhbGRhdGEpCgoJCWJiLmRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBwa2csIGxvY2FsZGF0
YSkKCgkJYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCgoJCWNvbmZmaWxlcyA9IChiYi5k
YXRhLmdldFZhcignQ09ORkZJTEVTJywgbG9jYWxkYXRhLCBUcnVlKSBvciAiIikuc3BsaXQoKQoK
CQlzcGxpdG5hbWUgICAgPSBzdHJpcF9tdWx0aWxpYihwa2duYW1lLCBkKQoKCQlzcGxpdHN1bW1h
cnkgPSAoYmIuZGF0YS5nZXRWYXIoJ1NVTU1BUlknLCBsb2NhbGRhdGEsIFRydWUpIG9yIGJiLmRh
dGEuZ2V0VmFyKCdERVNDUklQVElPTicsIGxvY2FsZGF0YSwgVHJ1ZSkgb3IgIi4iKQoJCXNwbGl0
dmVyc2lvbiA9IChiYi5kYXRhLmdldFZhcignUEtHVicsIGxvY2FsZGF0YSwgVHJ1ZSkgb3IgIiIp
LnJlcGxhY2UoJy0nLCAnKycpCgkJc3BsaXRyZWxlYXNlID0gKGJiLmRhdGEuZ2V0VmFyKCdQS0dS
JywgbG9jYWxkYXRhLCBUcnVlKSBvciAiIikKCQlzcGxpdGVwb2NoICAgPSAoYmIuZGF0YS5nZXRW
YXIoJ1BLR0UnLCBsb2NhbGRhdGEsIFRydWUpIG9yICIiKQoJCXNwbGl0bGljZW5zZSA9IChiYi5k
YXRhLmdldFZhcignTElDRU5TRScsIGxvY2FsZGF0YSwgVHJ1ZSkgb3IgIiIpCgkJc3BsaXRzZWN0
aW9uID0gKGJiLmRhdGEuZ2V0VmFyKCdTRUNUSU9OJywgbG9jYWxkYXRhLCBUcnVlKSBvciAiIikK
CQlzcGxpdGRlc2NyaXB0aW9uID0gKGJiLmRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicsIGxvY2Fs
ZGF0YSwgVHJ1ZSkgb3IgIi4iKQoKCQl0cmFuc2xhdGVfdmVycygnUkRFUEVORFMnLCBsb2NhbGRh
dGEpCgkJdHJhbnNsYXRlX3ZlcnMoJ1JSRUNPTU1FTkRTJywgbG9jYWxkYXRhKQoJCXRyYW5zbGF0
ZV92ZXJzKCdSU1VHR0VTVFMnLCBsb2NhbGRhdGEpCgkJdHJhbnNsYXRlX3ZlcnMoJ1JQUk9WSURF
UycsIGxvY2FsZGF0YSkKCQl0cmFuc2xhdGVfdmVycygnUlJFUExBQ0VTJywgbG9jYWxkYXRhKQoJ
CXRyYW5zbGF0ZV92ZXJzKCdSQ09ORkxJQ1RTJywgbG9jYWxkYXRhKQoKCQkjIE1hcCB0aGUgZGVw
ZW5kZW5jaWVzIGludG8gdGhlaXIgZmluYWwgZm9ybQoJCWJiLmJ1aWxkLmV4ZWNfZnVuYygibWFw
cGluZ19yZW5hbWVfaG9vayIsIGxvY2FsZGF0YSkKCgkJc3BsaXRyZGVwZW5kcyAgICA9IHN0cmlw
X211bHRpbGliKGJiLmRhdGEuZ2V0VmFyKCdSREVQRU5EUycsIGxvY2FsZGF0YSwgVHJ1ZSksIGQp
IG9yICIiCgkJc3BsaXRycmVjb21tZW5kcyA9IHN0cmlwX211bHRpbGliKGJiLmRhdGEuZ2V0VmFy
KCdSUkVDT01NRU5EUycsIGxvY2FsZGF0YSwgVHJ1ZSksIGQpIG9yICIiCgkJc3BsaXRyc3VnZ2Vz
dHMgICA9IHN0cmlwX211bHRpbGliKGJiLmRhdGEuZ2V0VmFyKCdSU1VHR0VTVFMnLCBsb2NhbGRh
dGEsIFRydWUpLCBkKSBvciAiIgoJCXNwbGl0cnByb3ZpZGVzICAgPSBzdHJpcF9tdWx0aWxpYihi
Yi5kYXRhLmdldFZhcignUlBST1ZJREVTJywgbG9jYWxkYXRhLCBUcnVlKSwgZCkgb3IgIiIKCQlz
cGxpdHJyZXBsYWNlcyAgID0gc3RyaXBfbXVsdGlsaWIoYmIuZGF0YS5nZXRWYXIoJ1JSRVBMQUNF
UycsIGxvY2FsZGF0YSwgVHJ1ZSksIGQpIG9yICIiCgkJc3BsaXRyY29uZmxpY3RzICA9IHN0cmlw
X211bHRpbGliKGJiLmRhdGEuZ2V0VmFyKCdSQ09ORkxJQ1RTJywgbG9jYWxkYXRhLCBUcnVlKSwg
ZCkgb3IgIiIKCQlzcGxpdHJvYnNvbGV0ZXMgID0gW10KCgkJIyBGb3Igbm93IHdlIG5lZWQgdG8g
bWFudWFsbHkgc3VwcGxlbWVudCBSUFJPVklERVMgd2l0aCBhbnkgdXBkYXRlLWFsdGVybmF0aXZl
cyBsaW5rcwoJCWlmIHBrZyA9PSBkLmdldFZhcigiUE4iLCBUcnVlKToKCQkJc3BsaXRycHJvdmlk
ZXMgPSBzcGxpdHJwcm92aWRlcyArICIgIiArIChkLmdldFZhcignQUxURVJOQVRJVkVfTElOSycs
IFRydWUpIG9yICcnKSArICIgIiArIChkLmdldFZhcignQUxURVJOQVRJVkVfTElOS1MnLCBUcnVl
KSBvciAnJykKCgkJIyBHYXRoZXIgc3BlY2lhbCBzcmMvZmlyc3QgcGFja2FnZSBkYXRhCgkJaWYg
c3JjbmFtZSA9PSBzcGxpdG5hbWU6CgkJCXNyY3JkZXBlbmRzICAgID0gc3BsaXRyZGVwZW5kcwoJ
CQlzcmNycmVjb21tZW5kcyA9IHNwbGl0cnJlY29tbWVuZHMKCQkJc3JjcnN1Z2dlc3RzICAgPSBz
cGxpdHJzdWdnZXN0cwoJCQlzcmNycHJvdmlkZXMgICA9IHNwbGl0cnByb3ZpZGVzCgkJCXNyY3Jy
ZXBsYWNlcyAgID0gc3BsaXRycmVwbGFjZXMKCQkJc3JjcmNvbmZsaWN0cyAgPSBzcGxpdHJjb25m
bGljdHMKCgkJCXNyY3ByZWluc3QgID0gYmIuZGF0YS5nZXRWYXIoJ3BrZ19wcmVpbnN0JywgbG9j
YWxkYXRhLCBUcnVlKQoJCQlzcmNwb3N0aW5zdCA9IGJiLmRhdGEuZ2V0VmFyKCdwa2dfcG9zdGlu
c3QnLCBsb2NhbGRhdGEsIFRydWUpCgkJCXNyY3ByZXJtICAgID0gYmIuZGF0YS5nZXRWYXIoJ3Br
Z19wcmVybScsIGxvY2FsZGF0YSwgVHJ1ZSkKCQkJc3JjcG9zdHJtICAgPSBiYi5kYXRhLmdldFZh
cigncGtnX3Bvc3RybScsIGxvY2FsZGF0YSwgVHJ1ZSkKCgkJCWZpbGVfbGlzdCA9IFtdCgkJCXdh
bGtfZmlsZXMocm9vdCwgZmlsZV9saXN0LCBjb25mZmlsZXMpCgkJCWlmIG5vdCBmaWxlX2xpc3Qg
YW5kIGJiLmRhdGEuZ2V0VmFyKCdBTExPV19FTVBUWScsIGxvY2FsZGF0YSkgIT0gIjEiOgoJCQkJ
YmIubm90ZSgiTm90IGNyZWF0aW5nIGVtcHR5IFJQTSBwYWNrYWdlIGZvciAlcyIgJSBzcGxpdG5h
bWUpCgkJCWVsc2U6CgkJCQliYi5ub3RlKCJDcmVhdGluZyBSUE0gcGFja2FnZSBmb3IgJXMiICUg
c3BsaXRuYW1lKQoJCQkJc3BlY19maWxlc190b3AuYXBwZW5kKCclZmlsZXMnKQoJCQkJc3BlY19m
aWxlc190b3AuYXBwZW5kKCclZGVmYXR0cigtLC0sLSwtKScpCgkJCQlpZiBmaWxlX2xpc3Q6CgkJ
CQkJYmIubm90ZSgiQ3JlYXRpbmcgUlBNIHBhY2thZ2UgZm9yICVzIiAlIHNwbGl0bmFtZSkKCQkJ
CQlzcGVjX2ZpbGVzX3RvcC5leHRlbmQoZmlsZV9saXN0KQoJCQkJZWxzZToKCQkJCQliYi5ub3Rl
KCJDcmVhdGluZyBFTVBUWSBSUE0gUGFja2FnZSBmb3IgJXMiICUgc3BsaXRuYW1lKQoJCQkJc3Bl
Y19maWxlc190b3AuYXBwZW5kKCcnKQoKCQkJYmIudXRpbHMudW5sb2NrZmlsZShsZikKCQkJY29u
dGludWUKCgkJIyBQcm9jZXNzIHN1YnBhY2thZ2UgZGF0YQoJCXNwZWNfcHJlYW1ibGVfYm90dG9t
LmFwcGVuZCgnJSVwYWNrYWdlIC1uICVzJyAlIHNwbGl0bmFtZSkKCQlzcGVjX3ByZWFtYmxlX2Jv
dHRvbS5hcHBlbmQoJ1N1bW1hcnk6ICVzJyAlIHNwbGl0c3VtbWFyeSkKCQlpZiBzcmN2ZXJzaW9u
ICE9IHNwbGl0dmVyc2lvbjoKCQkJc3BlY19wcmVhbWJsZV9ib3R0b20uYXBwZW5kKCdWZXJzaW9u
OiAlcycgJSBzcGxpdHZlcnNpb24pCgkJaWYgc3JjcmVsZWFzZSAhPSBzcGxpdHJlbGVhc2U6CgkJ
CXNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnUmVsZWFzZTogJXMnICUgc3BsaXRyZWxlYXNl
KQoJCWlmIHNyY2Vwb2NoICE9IHNwbGl0ZXBvY2g6CgkJCXNwZWNfcHJlYW1ibGVfYm90dG9tLmFw
cGVuZCgnRXBvY2g6ICVzJyAlIHNwbGl0ZXBvY2gpCgkJaWYgc3JjbGljZW5zZSAhPSBzcGxpdGxp
Y2Vuc2U6CgkJCXNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnTGljZW5zZTogJXMnICUgc3Bs
aXRsaWNlbnNlKQoJCXNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnR3JvdXA6ICVzJyAlIHNw
bGl0c2VjdGlvbikKCgkJIyBSZXBsYWNlcyA9PSBPYnNvbGV0ZXMgJiYgUHJvdmlkZXMKCQlpZiBz
cGxpdHJyZXBsYWNlcyBhbmQgc3BsaXRycmVwbGFjZXMuc3RyaXAoKSAhPSAiIjoKCQkJZm9yIGRl
cCBpbiBzcGxpdHJyZXBsYWNlcy5zcGxpdCgnLCcpOgoJCQkJaWYgc3BsaXRycHJvdmlkZXM6CgkJ
CQkJc3BsaXRycHJvdmlkZXMgPSBzcGxpdHJwcm92aWRlcyArICIsICIgKyBkZXAKCQkJCWVsc2U6
CgkJCQkJc3BsaXRycHJvdmlkZXMgPSBkZXAKCQkJCWlmIHNwbGl0cm9ic29sZXRlczoKCQkJCQlz
cGxpdHJvYnNvbGV0ZXMgPSBzcGxpdHJvYnNvbGV0ZXMgKyAiLCAiICsgZGVwCgkJCQllbHNlOgoJ
CQkJCXNwbGl0cm9ic29sZXRlcyA9IGRlcAoKCQlwcmludF9kZXBzKHNwbGl0cmRlcGVuZHMsCSJS
ZXF1aXJlcyIsIHNwZWNfcHJlYW1ibGVfYm90dG9tLCBkKQoJCSMgU3VnZ2VzdHMgaW4gUlBNIGFy
ZSBsaWtlIHJlY29tbWVuZHMgaW4gUG9reSEKCQlwcmludF9kZXBzKHNwbGl0cnJlY29tbWVuZHMs
CSJTdWdnZXN0cyIsIHNwZWNfcHJlYW1ibGVfYm90dG9tLCBkKQoJCSMgV2hpbGUgdGhlcmUgaXMg
bm8gYW5hbG9nIGZvciBzdWdnZXN0cy4uLiAoU28gY2FsbCB0aGVtIHJlY29tbWVuZHMgZm9yIG5v
dykKCQlwcmludF9kZXBzKHNwbGl0cnN1Z2dlc3RzLCAJIlJlY29tbWVuZHMiLCBzcGVjX3ByZWFt
YmxlX2JvdHRvbSwgZCkKCQlwcmludF9kZXBzKHNwbGl0cnByb3ZpZGVzLCAJIlByb3ZpZGVzIiwg
c3BlY19wcmVhbWJsZV9ib3R0b20sIGQpCgkJcHJpbnRfZGVwcyhzcGxpdHJvYnNvbGV0ZXMsIAki
T2Jzb2xldGVzIiwgc3BlY19wcmVhbWJsZV9ib3R0b20sIGQpCgoJCSMgY29uZmxpY3RzIGNhbiBu
b3QgYmUgaW4gYSBwcm92aWRlISAgV2Ugd2lsbCBuZWVkIHRvIGZpbHRlciBpdC4KCQlpZiBzcGxp
dHJjb25mbGljdHM6CgkJCWRlcGVuZHNfZGljdCA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNp
b25zKHNwbGl0cmNvbmZsaWN0cykKCQkJbmV3ZGVwc19kaWN0ID0ge30KCQkJZm9yIGRlcCBpbiBk
ZXBlbmRzX2RpY3Q6CgkJCQlpZiBkZXAgbm90IGluIHNwbGl0cnByb3ZpZGVzOgoJCQkJCW5ld2Rl
cHNfZGljdFtkZXBdID0gZGVwZW5kc19kaWN0W2RlcF0KCQkJaWYgbmV3ZGVwc19kaWN0OgoJCQkJ
c3BsaXRyY29uZmxpY3RzID0gYmIudXRpbHMuam9pbl9kZXBzKG5ld2RlcHNfZGljdCkKCQkJZWxz
ZToKCQkJCXNwbGl0cmNvbmZsaWN0cyA9ICIiCgoJCXByaW50X2RlcHMoc3BsaXRyY29uZmxpY3Rz
LCAJIkNvbmZsaWN0cyIsIHNwZWNfcHJlYW1ibGVfYm90dG9tLCBkKQoKCQlzcGVjX3ByZWFtYmxl
X2JvdHRvbS5hcHBlbmQoJycpCgoJCXNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnJSVkZXNj
cmlwdGlvbiAtbiAlcycgJSBzcGxpdG5hbWUpCgkJZGVkZW50X3RleHQgPSB0ZXh0d3JhcC5kZWRl
bnQoc3BsaXRkZXNjcmlwdGlvbikuc3RyaXAoKQoJCXNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVu
ZCgnJXMnICUgdGV4dHdyYXAuZmlsbChkZWRlbnRfdGV4dCwgd2lkdGg9NzUpKQoKCQlzcGVjX3By
ZWFtYmxlX2JvdHRvbS5hcHBlbmQoJycpCgoJCSMgTm93IHByb2Nlc3Mgc2NyaXB0bGV0cwoJCWZv
ciBzY3JpcHQgaW4gWyJwcmVpbnN0IiwgInBvc3RpbnN0IiwgInByZXJtIiwgInBvc3RybSJdOgoJ
CQlzY3JpcHR2YXIgPSBiYi5kYXRhLmdldFZhcigncGtnXyVzJyAlIHNjcmlwdCwgbG9jYWxkYXRh
LCBUcnVlKQoJCQlpZiBub3Qgc2NyaXB0dmFyOgoJCQkJY29udGludWUKCQkJaWYgc2NyaXB0ID09
ICdwcmVpbnN0JzoKCQkJCXNwZWNfc2NyaXB0bGV0c19ib3R0b20uYXBwZW5kKCclJXByZSAtbiAl
cycgJSBzcGxpdG5hbWUpCgkJCWVsaWYgc2NyaXB0ID09ICdwb3N0aW5zdCc6CgkJCQlzcGVjX3Nj
cmlwdGxldHNfYm90dG9tLmFwcGVuZCgnJSVwb3N0IC1uICVzJyAlIHNwbGl0bmFtZSkKCQkJZWxp
ZiBzY3JpcHQgPT0gJ3ByZXJtJzoKCQkJCXNwZWNfc2NyaXB0bGV0c19ib3R0b20uYXBwZW5kKCcl
JXByZXVuIC1uICVzJyAlIHNwbGl0bmFtZSkKCQkJZWxpZiBzY3JpcHQgPT0gJ3Bvc3RybSc6CgkJ
CQlzcGVjX3NjcmlwdGxldHNfYm90dG9tLmFwcGVuZCgnJSVwb3N0dW4gLW4gJXMnICUgc3BsaXRu
YW1lKQoJCQlzcGVjX3NjcmlwdGxldHNfYm90dG9tLmFwcGVuZChzY3JpcHR2YXIpCgkJCXNwZWNf
c2NyaXB0bGV0c19ib3R0b20uYXBwZW5kKCcnKQoKCQkjIE5vdyBwcm9jZXNzIGZpbGVzCgkJZmls
ZV9saXN0ID0gW10KCQl3YWxrX2ZpbGVzKHJvb3QsIGZpbGVfbGlzdCwgY29uZmZpbGVzKQoJCWlm
IG5vdCBmaWxlX2xpc3QgYW5kIGJiLmRhdGEuZ2V0VmFyKCdBTExPV19FTVBUWScsIGxvY2FsZGF0
YSkgIT0gIjEiOgoJCQliYi5ub3RlKCJOb3QgY3JlYXRpbmcgZW1wdHkgUlBNIHBhY2thZ2UgZm9y
ICVzIiAlIHNwbGl0bmFtZSkKCQllbHNlOgoJCQlzcGVjX2ZpbGVzX2JvdHRvbS5hcHBlbmQoJyUl
ZmlsZXMgLW4gJXMnICUgc3BsaXRuYW1lKQoJCQlzcGVjX2ZpbGVzX2JvdHRvbS5hcHBlbmQoJyVk
ZWZhdHRyKC0sLSwtLC0pJykKCQkJaWYgZmlsZV9saXN0OgoJCQkJYmIubm90ZSgiQ3JlYXRpbmcg
UlBNIHBhY2thZ2UgZm9yICVzIiAlIHNwbGl0bmFtZSkKCQkJCXNwZWNfZmlsZXNfYm90dG9tLmV4
dGVuZChmaWxlX2xpc3QpCgkJCWVsc2U6CgkJCQliYi5ub3RlKCJDcmVhdGluZyBFTVBUWSBSUE0g
UGFja2FnZSBmb3IgJXMiICUgc3BsaXRuYW1lKQoJCQlzcGVjX2ZpbGVzX2JvdHRvbS5hcHBlbmQo
JycpCgoJCWRlbCBsb2NhbGRhdGEKCQliYi51dGlscy51bmxvY2tmaWxlKGxmKQoKCXNwZWNfcHJl
YW1ibGVfdG9wLmFwcGVuZCgnU3VtbWFyeTogJXMnICUgc3Jjc3VtbWFyeSkKCXNwZWNfcHJlYW1i
bGVfdG9wLmFwcGVuZCgnTmFtZTogJXMnICUgc3JjbmFtZSkKCXNwZWNfcHJlYW1ibGVfdG9wLmFw
cGVuZCgnVmVyc2lvbjogJXMnICUgc3JjdmVyc2lvbikKCXNwZWNfcHJlYW1ibGVfdG9wLmFwcGVu
ZCgnUmVsZWFzZTogJXMnICUgc3JjcmVsZWFzZSkKCWlmIHNyY2Vwb2NoIGFuZCBzcmNlcG9jaC5z
dHJpcCgpICE9ICIiOgoJCXNwZWNfcHJlYW1ibGVfdG9wLmFwcGVuZCgnRXBvY2g6ICVzJyAlIHNy
Y2Vwb2NoKQoJc3BlY19wcmVhbWJsZV90b3AuYXBwZW5kKCdMaWNlbnNlOiAlcycgJSBzcmNsaWNl
bnNlKQoJc3BlY19wcmVhbWJsZV90b3AuYXBwZW5kKCdHcm91cDogJXMnICUgc3Jjc2VjdGlvbikK
CXNwZWNfcHJlYW1ibGVfdG9wLmFwcGVuZCgnUGFja2FnZXI6ICVzJyAlIHNyY21haW50YWluZXIp
CglzcGVjX3ByZWFtYmxlX3RvcC5hcHBlbmQoJ1VSTDogJXMnICUgc3JjaG9tZXBhZ2UpCgoJIyBS
ZXBsYWNlcyA9PSBPYnNvbGV0ZXMgJiYgUHJvdmlkZXMKCWlmIHNyY3JyZXBsYWNlcyBhbmQgc3Jj
cnJlcGxhY2VzLnN0cmlwKCkgIT0gIiI6CgkJZm9yIGRlcCBpbiBzcmNycmVwbGFjZXMuc3BsaXQo
JywnKToKCQkJaWYgc3JjcnByb3ZpZGVzOgoJCQkJc3JjcnByb3ZpZGVzID0gc3JjcnByb3ZpZGVz
ICsgIiwgIiArIGRlcAoJCQllbHNlOgoJCQkJc3JjcnByb3ZpZGVzID0gZGVwCgkJCWlmIHNyY3Jv
YnNvbGV0ZXM6CgkJCQlzcmNyb2Jzb2xldGVzID0gc3Jjcm9ic29sZXRlcyArICIsICIgKyBkZXAK
CQkJZWxzZToKCQkJCXNyY3JvYnNvbGV0ZXMgPSBkZXAKCglwcmludF9kZXBzKHNyY2RlcGVuZHMs
CQkiQnVpbGRSZXF1aXJlcyIsIHNwZWNfcHJlYW1ibGVfdG9wLCBkKQoJcHJpbnRfZGVwcyhzcmNy
ZGVwZW5kcywJCSJSZXF1aXJlcyIsIHNwZWNfcHJlYW1ibGVfdG9wLCBkKQoJIyBTdWdnZXN0cyBp
biBSUE0gYXJlIGxpa2UgcmVjb21tZW5kcyBpbiBQb2t5IQoJcHJpbnRfZGVwcyhzcmNycmVjb21t
ZW5kcywJIlN1Z2dlc3RzIiwgc3BlY19wcmVhbWJsZV90b3AsIGQpCgkjIFdoaWxlIHRoZXJlIGlz
IG5vIGFuYWxvZyBmb3Igc3VnZ2VzdHMuLi4gKFNvIGNhbGwgdGhlbSByZWNvbW1lbmRzIGZvciBu
b3cpCglwcmludF9kZXBzKHNyY3JzdWdnZXN0cywgCSJSZWNvbW1lbmRzIiwgc3BlY19wcmVhbWJs
ZV90b3AsIGQpCglwcmludF9kZXBzKHNyY3Jwcm92aWRlcywgCSJQcm92aWRlcyIsIHNwZWNfcHJl
YW1ibGVfdG9wLCBkKQoJcHJpbnRfZGVwcyhzcmNyb2Jzb2xldGVzLCAJIk9ic29sZXRlcyIsIHNw
ZWNfcHJlYW1ibGVfdG9wLCBkKQoKCSMgY29uZmxpY3RzIGNhbiBub3QgYmUgaW4gYSBwcm92aWRl
ISAgV2Ugd2lsbCBuZWVkIHRvIGZpbHRlciBpdC4KCWlmIHNyY3Jjb25mbGljdHM6CgkJZGVwZW5k
c19kaWN0ID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMoc3JjcmNvbmZsaWN0cykKCQlu
ZXdkZXBzX2RpY3QgPSB7fQoJCWZvciBkZXAgaW4gZGVwZW5kc19kaWN0OgoJCQlpZiBkZXAgbm90
IGluIHNyY3Jwcm92aWRlczoKCQkJCW5ld2RlcHNfZGljdFtkZXBdID0gZGVwZW5kc19kaWN0W2Rl
cF0KCQlpZiBuZXdkZXBzX2RpY3Q6CgkJCXNyY3Jjb25mbGljdHMgPSBiYi51dGlscy5qb2luX2Rl
cHMobmV3ZGVwc19kaWN0KQoJCWVsc2U6CgkJCXNyY3Jjb25mbGljdHMgPSAiIgoKCXByaW50X2Rl
cHMoc3JjcmNvbmZsaWN0cywgCSJDb25mbGljdHMiLCBzcGVjX3ByZWFtYmxlX3RvcCwgZCkKCglz
cGVjX3ByZWFtYmxlX3RvcC5hcHBlbmQoJycpCgoJc3BlY19wcmVhbWJsZV90b3AuYXBwZW5kKCcl
ZGVzY3JpcHRpb24nKQoJZGVkZW50X3RleHQgPSB0ZXh0d3JhcC5kZWRlbnQoc3JjZGVzY3JpcHRp
b24pLnN0cmlwKCkKCXNwZWNfcHJlYW1ibGVfdG9wLmFwcGVuZCgnJXMnICUgdGV4dHdyYXAuZmls
bChkZWRlbnRfdGV4dCwgd2lkdGg9NzUpKQoKCXNwZWNfcHJlYW1ibGVfdG9wLmFwcGVuZCgnJykK
CglpZiBzcmNwcmVpbnN0OgoJCXNwZWNfc2NyaXB0bGV0c190b3AuYXBwZW5kKCclcHJlJykKCQlz
cGVjX3NjcmlwdGxldHNfdG9wLmFwcGVuZChzcmNwcmVpbnN0KQoJCXNwZWNfc2NyaXB0bGV0c190
b3AuYXBwZW5kKCcnKQoJaWYgc3JjcG9zdGluc3Q6CgkJc3BlY19zY3JpcHRsZXRzX3RvcC5hcHBl
bmQoJyVwb3N0JykKCQlzcGVjX3NjcmlwdGxldHNfdG9wLmFwcGVuZChzcmNwb3N0aW5zdCkKCQlz
cGVjX3NjcmlwdGxldHNfdG9wLmFwcGVuZCgnJykKCWlmIHNyY3ByZXJtOgoJCXNwZWNfc2NyaXB0
bGV0c190b3AuYXBwZW5kKCclcHJldW4nKQoJCXNwZWNfc2NyaXB0bGV0c190b3AuYXBwZW5kKHNy
Y3ByZXJtKQoJCXNwZWNfc2NyaXB0bGV0c190b3AuYXBwZW5kKCcnKQoJaWYgc3JjcG9zdHJtOgoJ
CXNwZWNfc2NyaXB0bGV0c190b3AuYXBwZW5kKCclcG9zdHVuJykKCQlzcGVjX3NjcmlwdGxldHNf
dG9wLmFwcGVuZChzcmNwb3N0cm0pCgkJc3BlY19zY3JpcHRsZXRzX3RvcC5hcHBlbmQoJycpCgoJ
IyBXcml0ZSB0aGUgU1BFQyBmaWxlCgl0cnk6CgkJZnJvbSBfX2J1aWx0aW5fXyBpbXBvcnQgZmls
ZQoJCXNwZWNmaWxlID0gZmlsZShvdXRzcGVjZmlsZSwgJ3cnKQoJZXhjZXB0IE9TRXJyb3I6CgkJ
cmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgidW5hYmxlIHRvIG9wZW4gc3BlYyBmaWxlIGZvciB3
cml0aW5nLiIpCgoJZm9yIGxpbmUgaW4gc3BlY19wcmVhbWJsZV90b3A6CgkJc3BlY2ZpbGUud3Jp
dGUobGluZSArICJcbiIpCgoJZm9yIGxpbmUgaW4gc3BlY19wcmVhbWJsZV9ib3R0b206CgkJc3Bl
Y2ZpbGUud3JpdGUobGluZSArICJcbiIpCgoJZm9yIGxpbmUgaW4gc3BlY19zY3JpcHRsZXRzX3Rv
cDoKCQlzcGVjZmlsZS53cml0ZShsaW5lICsgIlxuIikKCglmb3IgbGluZSBpbiBzcGVjX3Njcmlw
dGxldHNfYm90dG9tOgoJCXNwZWNmaWxlLndyaXRlKGxpbmUgKyAiXG4iKQoKCWZvciBsaW5lIGlu
IHNwZWNfZmlsZXNfdG9wOgoJCXNwZWNmaWxlLndyaXRlKGxpbmUgKyAiXG4iKQoKCWZvciBsaW5l
IGluIHNwZWNfZmlsZXNfYm90dG9tOgoJCXNwZWNmaWxlLndyaXRlKGxpbmUgKyAiXG4iKQoKCXNw
ZWNmaWxlLmNsb3NlKCkKfQoKCnB5dGhvbiBiYXNlX2dldF9tZXRhZGF0YV9naXRfYnJhbmNoICgp
IHsKZGVmIGJhc2VfZ2V0X21ldGFkYXRhX2dpdF9icmFuY2gocGF0aCwgZCk6CglicmFuY2ggPSBv
cy5wb3BlbignY2QgJXM7IGdpdCBicmFuY2ggMj4mMSB8IGdyZXAgIl4qICIgfCB0ciAtZCAiKiAi
JyAlIHBhdGgpLnJlYWQoKQoKCWlmIGxlbihicmFuY2gpICE9IDA6CgkJcmV0dXJuIGJyYW5jaAoJ
cmV0dXJuICI8dW5rbm93bj4iCn0KCgpweXRob24gY2hlY2tfc2FuaXR5X2V2ZW50aGFuZGxlciAo
KSB7CiAgICBpZiBiYi5ldmVudC5nZXROYW1lKGUpID09ICJDb25maWdQYXJzZWQiIGFuZCBiYi5k
YXRhLmdldFZhcigiQkJfV09SS0VSQ09OVEVYVCIsIGUuZGF0YSwgVHJ1ZSkgIT0gIjEiOgogICAg
ICAgIGNoZWNrX3Nhbml0eShlKQoKICAgIHJldHVybgp9CgoKcHl0aG9uIG9lX2ZpbHRlciAoKSB7
CmRlZiBvZV9maWx0ZXIoZiwgc3RyLCBkKToKICAgIHJldHVybiBvZS51dGlscy5zdHJfZmlsdGVy
KGYsIHN0ciwgZCkKfQoKCnB5dGhvbiBzc3RhdGVfY2xlYW5hbGwgKCkgewogICAgaW1wb3J0IGZu
bWF0Y2gKCiAgICBiYi5ub3RlKCJSZW1vdmluZyBzaGFyZWQgc3RhdGUgZm9yIHBhY2thZ2UgJXMi
ICUgYmIuZGF0YS5nZXRWYXIoJ1BOJywgZCwgVHJ1ZSkpCgogICAgbWFuaWZlc3RfZGlyID0gYmIu
ZGF0YS5nZXRWYXIoJ1NTVEFURV9NQU5JRkVTVFMnLCBkLCBUcnVlKQogICAgbWFuaWZlc3RfcHJl
Zml4ID0gYmIuZGF0YS5nZXRWYXIoIlNTVEFURV9NQU5GSUxFUFJFRklYIiwgZCwgVHJ1ZSkKICAg
IG1hbmlmZXN0X3BhdHRlcm4gPSBvcy5wYXRoLmJhc2VuYW1lKG1hbmlmZXN0X3ByZWZpeCkgKyAi
LioiCgogICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0X2Rpcik6CiAgICAgICAgcmV0
dXJuCgogICAgZm9yIG1hbmlmZXN0IGluIChvcy5saXN0ZGlyKG1hbmlmZXN0X2RpcikpOgogICAg
ICAgIGlmIGZubWF0Y2guZm5tYXRjaChtYW5pZmVzdCwgbWFuaWZlc3RfcGF0dGVybik6CiAgICAg
ICAgICAgICBuYW1lID0gbWFuaWZlc3QucmVwbGFjZShtYW5pZmVzdF9wYXR0ZXJuWzotMV0sICIi
KQogICAgICAgICAgICAgbmFtZW1hcCA9IGQuZ2V0VmFyKCdTU1RBVEVUQVNLTkFNRVMnLCBUcnVl
KS5zcGxpdCgpCiAgICAgICAgICAgICB0YXNrcyA9IGQuZ2V0VmFyKCdTU1RBVEVUQVNLUycsIFRy
dWUpLnNwbGl0KCkKICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIG5hbWVtYXA6CiAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB0YXNrbmFtZSA9IHRhc2tzW25hbWVtYXAu
aW5kZXgobmFtZSldCiAgICAgICAgICAgICBzaGFyZWRfc3RhdGUgPSBzc3RhdGVfc3RhdGVfZnJv
bXZhcnMoZCwgdGFza25hbWVbMzpdKQogICAgICAgICAgICAgc3N0YXRlX2NsZWFuKHNoYXJlZF9z
dGF0ZSwgZCkKfQoKCnB5dGhvbiBkb19jaGVja3VyaSAoKSB7CglzcmNfdXJpID0gKGJiLmRhdGEu
Z2V0VmFyKCdTUkNfVVJJJywgZCwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKCWlmIGxlbihzcmNfdXJp
KSA9PSAwOgoJCXJldHVybgoKCWxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQoJYmIu
ZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgICAgIHRyeToKICAgICAgICAgICAgZmV0
Y2hlciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBsb2NhbGRhdGEpCiAgICAgICAgICAgIGZl
dGNoZXIuY2hlY2tzdGF0dXMoKQogICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2Vw
dGlvbiwgZToKICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQp9CgoKcHl0
aG9uIGlzX21hY2hpbmVfc3BlY2lmaWMgKCkgewpkZWYgaXNfbWFjaGluZV9zcGVjaWZpYyhkKToK
ICAgICIiIkRldGVybWluZSB3aGV0aGVyIHRoZSBjdXJyZW50IHJlY2lwZSBpcyBtYWNoaW5lIHNw
ZWNpZmljIiIiCiAgICBtYWNoaW5lcGF0aHMgPSBzZXQobWFjaGluZV9wYXRocyhkKSkKICAgIHNy
Y3VyaSA9IGQuZ2V0VmFyKCJTUkNfVVJJIiwgVHJ1ZSkuc3BsaXQoKQogICAgZm9yIHVybCBpbiBz
cmN1cmk6CiAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbc3JjdXJpXSwgZCkKICAg
ICAgICBpZiB1cmwuc3RhcnRzd2l0aCgiZmlsZTovLyIpOgogICAgICAgICAgICBpZiBhbnkoZmV0
Y2hlci5sb2NhbHBhdGgodXJsKS5zdGFydHN3aXRoKG1wICsgIi8iKSBmb3IgbXAgaW4gbWFjaGlu
ZXBhdGhzKToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCn0KCgpweXRob24gb2VfZmlsdGVy
X291dCAoKSB7CmRlZiBvZV9maWx0ZXJfb3V0KGYsIHN0ciwgZCk6CiAgICByZXR1cm4gb2UudXRp
bHMuc3RyX2ZpbHRlcl9vdXQoZiwgc3RyLCBkKQp9CgoKcHl0aG9uIG9lX3Rlcm1pbmFsICgpIHsK
ZGVmIG9lX3Rlcm1pbmFsKGNvbW1hbmQsIHRpdGxlLCBkKToKICAgIGltcG9ydCBvZS5kYXRhCiAg
ICBpbXBvcnQgb2UudGVybWluYWwKCiAgICBmb3IgZXhwb3J0IGluIG9lLmRhdGEudHlwZWRfdmFs
dWUoJ09FX1RFUk1JTkFMX0VYUE9SVFMnLCBkKToKICAgICAgICB2YWx1ZSA9IGQuZ2V0VmFyKGV4
cG9ydCwgVHJ1ZSkKICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgb3Mu
ZW52aXJvbltleHBvcnRdID0gc3RyKHZhbHVlKQoKICAgIHRlcm1pbmFsID0gb2UuZGF0YS50eXBl
ZF92YWx1ZSgnT0VfVEVSTUlOQUwnLCBkKS5sb3dlcigpCiAgICBpZiB0ZXJtaW5hbCA9PSAnbm9u
ZSc6CiAgICAgICAgYmIuZmF0YWwoJ0RldnNoZWxsIHVzYWdlIGRpc2FibGVkIHdpdGggT0VfVEVS
TUlOQUwnKQogICAgZWxpZiB0ZXJtaW5hbCAhPSAnYXV0byc6CiAgICAgICAgdHJ5OgogICAgICAg
ICAgICBvZS50ZXJtaW5hbC5zcGF3bih0ZXJtaW5hbCwgY29tbWFuZCwgdGl0bGUpCiAgICAgICAg
ICAgIHJldHVybgogICAgICAgIGV4Y2VwdCBvZS50ZXJtaW5hbC5VbnN1cHBvcnRlZFRlcm1pbmFs
OgogICAgICAgICAgICBiYi53YXJuKCdVbnN1cHBvcnRlZCB0ZXJtaW5hbCAiJXMiLCBkZWZhdWx0
aW5nIHRvICJhdXRvIicgJQogICAgICAgICAgICAgICAgICAgIHRlcm1pbmFsKQogICAgICAgIGV4
Y2VwdCBvZS50ZXJtaW5hbC5FeGVjdXRpb25FcnJvciBhcyBleGM6CiAgICAgICAgICAgIGJiLmZh
dGFsKCdVbmFibGUgdG8gc3Bhd24gdGVybWluYWwgJXM6ICVzJyAlICh0ZXJtaW5hbCwgZXhjKSkK
CiAgICB0cnk6CiAgICAgICAgb2UudGVybWluYWwuc3Bhd25fcHJlZmVycmVkKGNvbW1hbmQsIHRp
dGxlKQogICAgZXhjZXB0IG9lLnRlcm1pbmFsLk5vU3VwcG9ydGVkVGVybWluYWxzOgogICAgICAg
IGJiLmZhdGFsKCdObyB2YWxpZCB0ZXJtaW5hbCBmb3VuZCwgdW5hYmxlIHRvIG9wZW4gZGV2c2hl
bGwnKQogICAgZXhjZXB0IG9lLnRlcm1pbmFsLkV4ZWN1dGlvbkVycm9yIGFzIGV4YzoKICAgICAg
ICBiYi5mYXRhbCgnVW5hYmxlIHRvIHNwYXduIHRlcm1pbmFsICVzOiAlcycgJSAodGVybWluYWws
IGV4YykpfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2dldF9tYWNoaW5lX2RpY3QgKCkgewpkZWYgcGFj
a2FnZV9xYV9nZXRfbWFjaGluZV9kaWN0KCk6CiAgICByZXR1cm4gewogICAgICAgICAgICAiZGFy
d2luOSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAg
MCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgImxpbnV4IiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImFy
bSIgOiAgICAgICAoNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiks
CiAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKDQwLCAgICA5NywgICAgMCwg
ICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAicG93
ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGM2NCI6ICAoMjEsICAgICAwLCAgICAwLCAg
ICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2
IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAg
ICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYi
OiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICJpNjg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAg
ICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0
IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgImlhNjQiOiAgICAgICAoNTAsICAgICAwLCAgICAwLCAgICAg
ICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYSI6
ICAgICAgKDM2OTAyLCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAg
ICAgICAgICAgICAgICAgICAgICAiaHBwYSI6ICAgICAgICgxNSwgICAgIDMsICAgIDAsICAgICAg
ICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgIm02OGsiOiAg
ICAgICAoIDQsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAg
ICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjog
ICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgInMzOTAiOiAgICAgICAoMjIsICAgICAwLCAgICAwLCAgICAgICAg
ICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAg
ICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAic3BhcmMiOiAgICAgICggMiwgICAgIDAsICAgIDAsICAgICAgICAg
IEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICJsaW51eC11Y2xpYmMiIDogewogICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAg
ICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAg
ICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6
ICAgICggIDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAg
ICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6
ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwg
ICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiaTY4
NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIp
LAogICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICggIDYyLCAgICAgMCwgICAg
MCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAi
bWlwcyI6ICAgICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAg
MzIpLAogICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggICA4LCAgICAgMCwg
ICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAiYXZyMzIiOiAgICAgICg2MzE3LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAg
ICAgMzIpLAoJCQkic2g0IjogICAgICAgICg0MiwJIDAsICAgIDAsICAgICAgICAgIFRydWUsICAg
ICAgICAgIDMyKSwKCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAidWNsaW51
eC11Y2xpYmMiIDogewogICAgICAgICAgICAgICAgICAgICAgICAiYmZpbiI6ICAgICAgICggMTA2
LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAibGludXgtZ251ZWFiaSIgOiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwg
ICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiIDogICAgICg0MCwg
ICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICJsaW51eC11Y2xpYmNlYWJpIiA6IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVl
LCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiIgOiAgICAgKDQw
LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgImxpbnV4LWdudSIgOiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAg
ICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxpbnV4LWdu
dXNwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAg
MCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgImxpbnV4LXVjbGliY3NwZSIgOiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAg
ICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxpbnV4LWdu
dSIgOiAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICAoNDc3
ODcsICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICJtaWNyb2JsYXplZWwiOiAoNDc3ODcsICAwLCAgICAwLCAgICAgICAgICBUcnVl
LCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAibGlu
dXgtZ251eDMyIiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAg
ICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgfQoKfQoKCnB5dGhvbiBiYXNlX2RldGVjdF9yZXZpc2lv
biAoKSB7CmRlZiBiYXNlX2RldGVjdF9yZXZpc2lvbihkKToKCXBhdGggPSBiYXNlX2dldF9zY21i
YXNlcGF0aChkKQoKCXNjbXMgPSBbYmFzZV9nZXRfbWV0YWRhdGFfZ2l0X3JldmlzaW9uLCBcCgkJ
CWJhc2VfZ2V0X21ldGFkYXRhX3N2bl9yZXZpc2lvbl0KCglmb3Igc2NtIGluIHNjbXM6CgkJcmV2
ID0gc2NtKHBhdGgsIGQpCgkJaWYgcmV2IDw+ICI8dW5rbm93bj4iOgoJCQlyZXR1cm4gcmV2CgoJ
cmV0dXJuICI8dW5rbm93bj4iCn0KCgpweXRob24gc3N0YXRlX2NsZWFuX2NhY2hlZmlsZSAoKSB7
CmRlZiBzc3RhdGVfY2xlYW5fY2FjaGVmaWxlKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRoCgog
ICAgc3N0YXRlcGtnZGlyID0gYmIuZGF0YS5nZXRWYXIoJ1NTVEFURV9ESVInLCBkLCBUcnVlKQog
ICAgc3N0YXRlcGtnZmlsZSA9IGJiLmRhdGEuZXhwYW5kKHNzdGF0ZXBrZ2RpciArICcvJyArICJz
c3RhdGUtZnNsLWltYWdlLXNpbXBsZS1wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlLTEuMC1yMC1w
MTAyMHJkYi0yLSIgKyAiKl8iICsgc3NbJ25hbWUnXSArICIudHh6KiIsIGQpCiAgICBiYi5ub3Rl
KCJSZW1vdmluZyAlcyIgJSBzc3RhdGVwa2dmaWxlKQogICAgb2UucGF0aC5yZW1vdmUoc3N0YXRl
cGtnZmlsZSkKfQoKCnB5dGhvbiBzZXRfYm4gKCkgewpkZWYgc2V0X2JuKGUpOgogICAgYm4gPSBl
LmdldFBrZ3MoKVswXSArICItIiArIGJiLmRhdGEuZ2V0VmFyKCdNQUNISU5FJyxlLmRhdGEsIFRy
dWUpCiAgICB0cnk6CiAgICAgICAgb3MucmVtb3ZlKGJiLmRhdGEuZ2V0VmFyKCdCTkZJTEUnLCBl
LmRhdGEsIFRydWUpKQogICAgZXhjZXB0OgogICAgICAgIHBhc3MKICAgIGZpbGUgPSBvcGVuKGJi
LmRhdGEuZ2V0VmFyKCdCTkZJTEUnLCBlLmRhdGEsIFRydWUpLCAidyIpCiAgICBmaWxlLndyaXRl
KG9zLnBhdGguam9pbihibiwgYmIuZGF0YS5nZXRWYXIoJ0JVSUxETkFNRScsIGUuZGF0YSwgVHJ1
ZSkpKQogICAgZmlsZS5jbG9zZSgpCn0KCgpweXRob24gZG9fY2xlYW4gKCkgewoJIiIiY2xlYXIg
dGhlIGJ1aWxkIGFuZCB0ZW1wIGRpcmVjdG9yaWVzIiIiCglkaXIgPSBiYi5kYXRhLmV4cGFuZCgi
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9y
ZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRiLWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBs
ZS0xLjAtcjAiLCBkKQoJYmIubm90ZSgiUmVtb3ZpbmcgIiArIGRpcikKCW9lLnBhdGgucmVtb3Zl
KGRpcikKCglkaXIgPSAiJXMuKiIgJSBiYi5kYXRhLmV4cGFuZChiYi5kYXRhLmdldFZhcignU1RB
TVAnLCBkKSwgZCkKCWJiLm5vdGUoIlJlbW92aW5nICIgKyBkaXIpCglvZS5wYXRoLnJlbW92ZShk
aXIpCgoJZm9yIGYgaW4gKGJiLmRhdGEuZ2V0VmFyKCdDTEVBTkZVTkNTJywgZCwgMSkgb3IgJycp
LnNwbGl0KCk6CgkJYmIuYnVpbGQuZXhlY19mdW5jKGYsIGQpCn0KCgpweXRob24gZG9fcGFja2Fn
ZV93cml0ZV9ycG1fc2V0c2NlbmUgKCkgewoJc3N0YXRlX3NldHNjZW5lKGQpCn0KCgpweXRob24g
cGFja2FnZV9xYV93cml0ZV9lcnJvciAoKSB7CmRlZiBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yKGVy
cm9yLCBkKToKICAgIGxvZ2ZpbGUgPSBkLmdldFZhcignUUFfTE9HRklMRScsIFRydWUpCiAgICBp
ZiBsb2dmaWxlOgogICAgICAgIHAgPSBkLmdldFZhcignUCcsIFRydWUpCiAgICAgICAgZiA9IGZp
bGUoIGxvZ2ZpbGUsICJhKyIpCiAgICAgICAgcHJpbnQgPj4gZiwgIiVzOiAlcyIgJSAocCwgZXJy
b3IpCiAgICAgICAgZi5jbG9zZSgpCn0KCgpweXRob24gd3JpdGVfdGFza19kYXRhICgpIHsKZGVm
IHdyaXRlX3Rhc2tfZGF0YShzdGF0dXMsIGxvZ2ZpbGUsIGRldiwgZSk6CiAgICBibiA9IGdldF9i
bihlKQogICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oYmIuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNf
QkFTRScsIGUuZGF0YSwgVHJ1ZSksIGJuKQogICAgdGFza2RpciA9IG9zLnBhdGguam9pbihic2Rp
ciwgYmIuZGF0YS5leHBhbmQoImZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwIiwgZS5kYXRhKSkKICAg
IGZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihsb2dmaWxlKSwgImEiKQogICAgdGltZWRhdGEgPSBn
ZXRfdGltZWRhdGEoIl9fdGltZWRhdGFfdGFzayIsIGUuZGF0YSkKICAgIGlmIHRpbWVkYXRhOgog
ICAgICAgIGVsYXBzZWR0aW1lLCBjcHUgPSB0aW1lZGF0YQogICAgICAgIGZpbGUud3JpdGUoYmIu
ZGF0YS5leHBhbmQoImZzbC1pbWFnZS1zaW1wbGUtMS4wLXIwOiAlczogRWxhcHNlZCB0aW1lOiAl
MC4yZiBzZWNvbmRzIFxuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLnRh
c2ssIGVsYXBzZWR0aW1lKSwgZS5kYXRhKSkKICAgICAgICBpZiBjcHU6CiAgICAgICAgICAgIGZp
bGUud3JpdGUoIkNQVSB1c2FnZTogJTAuMWYlJSBcbiIgJSBjcHUpCiAgICAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCiAgICAjIEhlcmUgd2UgZ2F0aGVyIHVwIGRpc2sgZGF0YS4gSW4gYW4gZWZmb3J0IHRv
IGF2b2lkIGx5aW5nIHdpdGggc3RhdHMKICAgICMgSSBkbyBhIGJhcmUgbWluaW11bSBvZiBhbmFs
eXNpcyBvZiBjb2xsZWN0ZWQgZGF0YS4KICAgICMgVGhlIHNpbXBsZSBmYWN0IGlzLCBkb2luZyBk
aXNrIGlvIGNvbGxlY3Rpb24gb24gYSBwZXIgcHJvY2VzcyBiYXNpcwogICAgIyB3aXRob3V0IGVm
ZmVjdGluZyBidWlsZCB0aW1lIHdvdWxkIGJlIGRpZmZpY3VsdC4KICAgICMgRm9yIHRoZSBiZXN0
IGluZm9ybWF0aW9uLCBydW5uaW5nIHRoaW5ncyB3aXRoIEJCX1RPVEFMX1RIUkVBRFMgPSAiMSIK
ICAgICMgd291bGQgcmV0dXJuIGFjY3VyYXRlIHBlciB0YXNrIHJlc3VsdHMuCiAgICAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCiAgICBkaXNrZGF0YSA9IGdldF9kaXNrZGF0YSgiX19kaXNrZGF0YV90YXNr
IiwgZGV2LCBlLmRhdGEpCiAgICBpZiBkaXNrZGF0YToKICAgICAgICBmb3Iga2V5IGluIHNvcnRl
ZChkaXNrZGF0YS5pdGVya2V5cygpKToKICAgICAgICAgICAgZmlsZS53cml0ZShrZXkgKyAiOiAi
ICsgZGlza2RhdGFba2V5XSArICJcbiIpCiAgICBpZiBzdGF0dXMgaXMgInBhc3NlZCI6CgkgICAg
ZmlsZS53cml0ZSgiU3RhdHVzOiBQQVNTRUQgXG4iKQogICAgZWxzZToKICAgICAgICBmaWxlLndy
aXRlKCJTdGF0dXM6IEZBSUxFRCBcbiIpCiAgICBmaWxlLndyaXRlKCJFbmRlZDogJTAuMmYgXG4i
ICUgdGltZS50aW1lKCkpCiAgICBmaWxlLmNsb3NlKCkKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2No
ZWNrX3N0YWdlZCAoKSB7CmRlZiBwYWNrYWdlX3FhX2NoZWNrX3N0YWdlZChwYXRoLGQpOgogICAg
IiIiCiAgICBDaGVjayBzdGFnZWQgbGEgYW5kIHBjIGZpbGVzIGZvciBzYW5pdHkKICAgICAgLWUu
Zy4gaW5zdGFsbGVkIGJlaW5nIGZhbHNlCgogICAgICAgIEFzIHRoaXMgaXMgcnVuIGFmdGVyIGV2
ZXJ5IHN0YWdlIHdlIHNob3VsZCBiZSBhYmxlCiAgICAgICAgdG8gZmluZCB0aGUgb25lIHJlc3Bv
bnNpYmxlIGZvciB0aGUgZXJyb3JzIGVhc2lseSBldmVuCiAgICAgICAgaWYgd2UgbG9vayBhdCBl
dmVyeSAucGMgYW5kIC5sYSBmaWxlCiAgICAiIiIKCiAgICBzYW5lID0gVHJ1ZQogICAgdG1wZGly
ID0gYmIuZGF0YS5nZXRWYXIoJ1RNUERJUicsIGQsIFRydWUpCiAgICB3b3JrZGlyID0gb3MucGF0
aC5qb2luKHRtcGRpciwgIndvcmsiKQoKICAgIGluc3RhbGxlZCA9ICJpbnN0YWxsZWQ9eWVzIgog
ICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibmF0aXZlIiwgZCkgb3IgYmIuZGF0YS5pbmhl
cml0c19jbGFzcygiY3Jvc3MiLCBkKToKICAgICAgICBwa2djb25maWdjaGVjayA9IHdvcmtkaXIK
ICAgIGVsc2U6CiAgICAgICAgcGtnY29uZmlnY2hlY2sgPSB0bXBkaXIKCiAgICAjIGZpbmQgYWxs
IC5sYSBhbmQgLnBjIGZpbGVzCiAgICAjIHJlYWQgdGhlIGNvbnRlbnQKICAgICMgYW5kIGNoZWNr
IGZvciBzdHVmZiB0aGF0IGxvb2tzIHdyb25nCiAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4g
b3Mud2FsayhwYXRoKToKICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgcGF0
aCA9IG9zLnBhdGguam9pbihyb290LGZpbGUpCiAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgo
Ii5sYSIpOgogICAgICAgICAgICAgICAgZmlsZV9jb250ZW50ID0gb3BlbihwYXRoKS5yZWFkKCkK
ICAgICAgICAgICAgICAgIGlmIHdvcmtkaXIgaW4gZmlsZV9jb250ZW50OgogICAgICAgICAgICAg
ICAgICAgIGVycm9yX21zZyA9ICIlcyBmYWlsZWQgc2FuaXR5IHRlc3QgKHdvcmtkaXIpIGluIHBh
dGggJXMiICUgKGZpbGUscm9vdCkKICAgICAgICAgICAgICAgICAgICBzYW5lID0gcGFja2FnZV9x
YV9oYW5kbGVfZXJyb3IoImxhIiwgZXJyb3JfbXNnLCBkKQogICAgICAgICAgICBlbGlmIGZpbGUu
ZW5kc3dpdGgoIi5wYyIpOgogICAgICAgICAgICAgICAgZmlsZV9jb250ZW50ID0gb3BlbihwYXRo
KS5yZWFkKCkKICAgICAgICAgICAgICAgIGlmIHBrZ2NvbmZpZ2NoZWNrIGluIGZpbGVfY29udGVu
dDoKICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAiJXMgZmFpbGVkIHNhbml0eSB0ZXN0
ICh0bXBkaXIpIGluIHBhdGggJXMiICUgKGZpbGUscm9vdCkKICAgICAgICAgICAgICAgICAgICBz
YW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBrZ2NvbmZpZyIsIGVycm9yX21zZywgZCkK
CiAgICByZXR1cm4gc2FuZQp9CgoKcHl0aG9uIGJhc2VfYm90aF9jb250YWluICgpIHsKZGVmIGJh
c2VfYm90aF9jb250YWluKHZhcmlhYmxlMSwgdmFyaWFibGUyLCBjaGVja3ZhbHVlLCBkKToKICAg
IHJldHVybiBvZS51dGlscy5ib3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNr
dmFsdWUsIGQpCn0KCgpweXRob24gc3lzcm9vdF9jbGVhbnNzdGF0ZSAoKSB7CiAgICAgc3MgPSBz
c3RhdGVfc3RhdGVfZnJvbXZhcnMoZCwgInBvcHVsYXRlX3N5c3Jvb3QiKQogICAgIHNzdGF0ZV9j
bGVhbihzcywgZCkKfQoKCnB5dGhvbiByZWFkX3N1YnBhY2thZ2VfbWV0YWRhdGEgKCkgewoJaW1w
b3J0IG9lLnBhY2thZ2VkYXRhCgoJZGF0YSA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfcGtnZGF0YShi
Yi5kYXRhLmdldFZhcignUE4nLCBkLCAxKSwgZCkKCglmb3Iga2V5IGluIGRhdGEua2V5cygpOgoJ
CWJiLmRhdGEuc2V0VmFyKGtleSwgZGF0YVtrZXldLCBkKQoKCWZvciBwa2cgaW4gYmIuZGF0YS5n
ZXRWYXIoJ1BBQ0tBR0VTJywgZCwgMSkuc3BsaXQoKToKCQlzZGF0YSA9IG9lLnBhY2thZ2VkYXRh
LnJlYWRfc3VicGtnZGF0YShwa2csIGQpCgkJZm9yIGtleSBpbiBzZGF0YS5rZXlzKCk6CgkJCWJi
LmRhdGEuc2V0VmFyKGtleSwgc2RhdGFba2V5XSwgZCkKfQoKCnB5dGhvbiBzc3RhdGVfY2hlY2to
YXNoZXMgKCkgewpkZWYgc3N0YXRlX2NoZWNraGFzaGVzKHNxX2ZuLCBzcV90YXNrLCBzcV9oYXNo
LCBzcV9oYXNoZm4sIGQpOgoKICAgIHJldCA9IFtdCiAgICAjIFRoaXMgbmVlZHMgdG8gZ28gYXdh
eSwgRklYTUUKICAgIG1hcHBpbmcgPSB7CiAgICAgICAgImRvX3BvcHVsYXRlX3N5c3Jvb3QiIDog
InBvcHVsYXRlLXN5c3Jvb3QiLAogICAgICAgICJkb19wb3B1bGF0ZV9saWMiIDogInBvcHVsYXRl
LWxpYyIsCiAgICAgICAgImRvX3BhY2thZ2Vfd3JpdGVfaXBrIiA6ICJkZXBsb3ktaXBrIiwKICAg
ICAgICAiZG9fcGFja2FnZV93cml0ZV9kZWIiIDogImRlcGxveS1kZWIiLAogICAgICAgICJkb19w
YWNrYWdlX3dyaXRlX3JwbSIgOiAiZGVwbG95LXJwbSIsCiAgICAgICAgImRvX3BhY2thZ2UiIDog
InBhY2thZ2UiLAogICAgICAgICJkb19kZXBsb3kiIDogImRlcGxveSIsCiAgICB9CgogICAgZm9y
IHRhc2sgaW4gcmFuZ2UobGVuKHNxX2ZuKSk6CiAgICAgICAgc3N0YXRlZmlsZSA9IGJiLmRhdGEu
ZXhwYW5kKCIvb3B0L3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvc3N0YXRlLWNhY2hlLyIgKyBz
cV9oYXNoZm5bdGFza10gKyAiXyIgKyBtYXBwaW5nW3NxX3Rhc2tbdGFza11dICsgIi50eHoiLCBk
KQogICAgICAgIHNzdGF0ZWZpbGUgPSBzc3RhdGVmaWxlLnJlcGxhY2UoIiR7QkJfVEFTS0hBU0h9
Iiwgc3FfaGFzaFt0YXNrXSkKICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzc3RhdGVmaWxlKToK
ICAgICAgICAgICAgYmIuZGVidWcoMiwgIlNTdGF0ZTogRm91bmQgdmFsaWQgc3N0YXRlIGZpbGUg
JXMiICUgc3N0YXRlZmlsZSkKICAgICAgICAgICAgcmV0LmFwcGVuZCh0YXNrKQogICAgICAgICAg
ICBjb250aW51ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6
IExvb2tlZCBmb3IgYnV0IGRpZG4ndCBmaW5kIGZpbGUgJXMiICUgc3N0YXRlZmlsZSkKCiAgICBt
aXJyb3JzID0gYmIuZGF0YS5nZXRWYXIoIlNTVEFURV9NSVJST1JTIiwgZCwgVHJ1ZSkKICAgIGlm
IG1pcnJvcnM6CiAgICAgICAgIyBDb3B5IHRoZSBkYXRhIG9iamVjdCBhbmQgb3ZlcnJpZGUgRExf
RElSIGFuZCBTUkNfVVJJCiAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQp
CiAgICAgICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgICAgIGRsZGlyID0g
YmIuZGF0YS5leHBhbmQoIi9vcHQveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9zc3RhdGUtY2Fj
aGUiLCBsb2NhbGRhdGEpCiAgICAgICAgYmIuZGF0YS5zZXRWYXIoJ0RMX0RJUicsIGRsZGlyLCBs
b2NhbGRhdGEpCiAgICAgICAgYmIuZGF0YS5zZXRWYXIoJ1BSRU1JUlJPUlMnLCBtaXJyb3JzLCBs
b2NhbGRhdGEpCgogICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGUgdXNpbmcgcHJlbWlycm9yIG9m
OiAlcyIgJSBtaXJyb3JzKQoKICAgICAgICBmb3IgdGFzayBpbiByYW5nZShsZW4oc3FfZm4pKToK
ICAgICAgICAgICAgaWYgdGFzayBpbiByZXQ6CiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAg
ICAgICAgICAgc3N0YXRlZmlsZSA9IGJiLmRhdGEuZXhwYW5kKCIvb3B0L3lvY3RvL2NhY2hlLXRl
c3QvcDEwMjByZGIvc3N0YXRlLWNhY2hlLyIgKyBzcV9oYXNoZm5bdGFza10gKyAiXyIgKyBtYXBw
aW5nW3NxX3Rhc2tbdGFza11dICsgIi50eHoiLCBkKQogICAgICAgICAgICBzc3RhdGVmaWxlID0g
c3N0YXRlZmlsZS5yZXBsYWNlKCIke0JCX1RBU0tIQVNIfSIsIHNxX2hhc2hbdGFza10pCgogICAg
ICAgICAgICBzcmN1cmkgPSAiZmlsZTovLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNzdGF0ZWZpbGUp
CiAgICAgICAgICAgIGJiLmRhdGEuc2V0VmFyKCdTUkNfVVJJJywgc3JjdXJpLCBsb2NhbGRhdGEp
CiAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6IEF0dGVtcHRpbmcgdG8gZmV0Y2ggJXMi
ICUgc3JjdXJpKQoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZmV0Y2hlciA9IGJi
LmZldGNoMi5GZXRjaChzcmN1cmkuc3BsaXQoKSwgbG9jYWxkYXRhKQogICAgICAgICAgICAgICAg
ZmV0Y2hlci5jaGVja3N0YXR1cygpCiAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRl
OiBTdWNjZXNzZnVsIGZldGNoIHRlc3QgZm9yICVzIiAlIHNyY3VyaSkKICAgICAgICAgICAgICAg
IHJldC5hcHBlbmQodGFzaykKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgYmIu
ZGVidWcoMiwgIlNTdGF0ZTogVW5zdWNjZXNzZnVsIGZldGNoIHRlc3QgZm9yICVzIiAlIHNyY3Vy
aSkKICAgICAgICAgICAgICAgIHBhc3MKCiAgICByZXR1cm4gcmV0Cn0KCgpweXRob24gYmFzZV9w
cnVuZV9zdWZmaXggKCkgewpkZWYgYmFzZV9wcnVuZV9zdWZmaXgodmFyLCBzdWZmaXhlcywgZCk6
CiAgICByZXR1cm4gb2UudXRpbHMucHJ1bmVfc3VmZml4KHZhciwgc3VmZml4ZXMsIGQpCn0KCgpw
eXRob24gYmFzZV9pZmVsc2UgKCkgewpkZWYgYmFzZV9pZmVsc2UoY29uZGl0aW9uLCBpZnRydWUg
PSBUcnVlLCBpZmZhbHNlID0gRmFsc2UpOgogICAgcmV0dXJuIG9lLnV0aWxzLmlmZWxzZShjb25k
aXRpb24sIGlmdHJ1ZSwgaWZmYWxzZSkKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2NoZWNrX2FyY2gg
KCkgewpkZWYgcGFja2FnZV9xYV9jaGVja19hcmNoKHBhdGgsbmFtZSxkLCBlbGYsIG1lc3NhZ2Vz
KToKICAgICIiIgogICAgQ2hlY2sgaWYgYXJjaHMgYXJlIGNvbXBhdGlibGUKICAgICIiIgogICAg
aWYgbm90IGVsZjoKICAgICAgICByZXR1cm4KCiAgICB0YXJnZXRfb3MgICA9IGJiLmRhdGEuZ2V0
VmFyKCdUQVJHRVRfT1MnLCAgIGQsIFRydWUpCiAgICB0YXJnZXRfYXJjaCA9IGJiLmRhdGEuZ2V0
VmFyKCdUQVJHRVRfQVJDSCcsIGQsIFRydWUpCgogICAgIyBGSVhNRTogQ3Jvc3MgcGFja2FnZSBj
b25mdXNlIHRoaXMgY2hlY2ssIHNvIGp1c3Qgc2tpcCB0aGVtCiAgICBmb3IgcyBpbiBbJ2Nyb3Nz
JywgJ25hdGl2ZXNkaycsICdjcm9zcy1jYW5hZGlhbiddOgogICAgICAgIGlmIGJiLmRhdGEuaW5o
ZXJpdHNfY2xhc3MocywgZCk6CiAgICAgICAgICAgIHJldHVybgoKICAgICMgYXZvaWQgZm9sbG93
aW5nIGxpbmtzIHRvIC91c3IvYmluIChlLmcuIG9uIHVkZXYgYnVpbGRzKQogICAgIyB3ZSB3aWxs
IGNoZWNrIHRoZSBmaWxlcyBwb2ludGVkIHRvIGFueXdheS4uLgogICAgaWYgb3MucGF0aC5pc2xp
bmsocGF0aCk6CiAgICAgICAgcmV0dXJuCgogICAgI2lmIHRoaXMgd2lsbCB0aHJvdyBhbiBleGNl
cHRpb24sIHRoZW4gZml4IHRoZSBkaWN0IGFib3ZlCiAgICAobWFjaGluZSwgb3NhYmksIGFiaXZl
cnNpb24sIGxpdHRsZWVuZGlhbiwgYml0cykgXAogICAgICAgID0gcGFja2FnZV9xYV9nZXRfbWFj
aGluZV9kaWN0KClbdGFyZ2V0X29zXVt0YXJnZXRfYXJjaF0KCiAgICAjIENoZWNrIHRoZSBhcmNo
aXRlY3R1cmUgYW5kIGVuZGlhbm5lcyBvZiB0aGUgYmluYXJ5CiAgICBpZiBub3QgbWFjaGluZSA9
PSBlbGYubWFjaGluZSgpOgogICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiQXJjaGl0ZWN0dXJlIGRp
ZCBub3QgbWF0Y2ggKCVkIHRvICVkKSBvbiAlcyIgJSBcCiAgICAgICAgICAgICAgICAgKG1hY2hp
bmUsIGVsZi5tYWNoaW5lKCksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKICAgIGVs
aWYgbm90IGJpdHMgPT0gZWxmLmFiaVNpemUoKToKICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIkJp
dCBzaXplIGRpZCBub3QgbWF0Y2ggKCVkIHRvICVkKSBvbiAlcyIgJSBcCiAgICAgICAgICAgICAg
ICAgKGJpdHMsIGVsZi5hYmlTaXplKCksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkK
ICAgIGVsaWYgbm90IGxpdHRsZWVuZGlhbiA9PSBlbGYuaXNMaXR0bGVFbmRpYW4oKToKICAgICAg
ICBtZXNzYWdlcy5hcHBlbmQoIkVuZGlhbm5lcyBkaWQgbm90IG1hdGNoICglZCB0byAlZCkgb24g
JXMiICUgXAogICAgICAgICAgICAgICAgIChsaXR0bGVlbmRpYW4sIGVsZi5pc0xpdHRsZUVuZGlh
bigpLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCn0KCgpweXRob24gcGFja2FnZV9x
YV9jaGVja19saWNlbnNlICgpIHsKZGVmIHBhY2thZ2VfcWFfY2hlY2tfbGljZW5zZSh3b3JrZGly
LCBkKToKICAgICIiIgogICAgQ2hlY2sgZm9yIGNoYW5nZXMgaW4gdGhlIGxpY2Vuc2UgZmlsZXMK
ICAgICIiIgogICAgaW1wb3J0IHRlbXBmaWxlCiAgICBzYW5lID0gVHJ1ZQoKICAgIGxpY19maWxl
cyA9IGJiLmRhdGEuZ2V0VmFyKCdMSUNfRklMRVNfQ0hLU1VNJywgZCwgVHJ1ZSkKICAgIGxpYyA9
IGJiLmRhdGEuZ2V0VmFyKCdMSUNFTlNFJywgZCwgVHJ1ZSkKICAgIHBuID0gYmIuZGF0YS5nZXRW
YXIoJ1BOJywgZCwgVHJ1ZSkKCiAgICBpZiBsaWMgPT0gIkNMT1NFRCI6CiAgICAgICAgcmV0dXJu
IFRydWUKCiAgICBpZiBub3QgbGljX2ZpbGVzOgogICAgICAgICMganVzdCB0aHJvdyBhIHdhcm5p
bmcgbm93LiBPbmNlIGxpY2Vuc2luZyBkYXRhIGluIGVudGVyZWQgZm9yIGVub3VnaCBvZiB0aGUg
cmVjaXBlcywKICAgICAgICAjIHRoaXMgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBlcnJvciBhbmQg
RmFsc2Ugd2lsbCBiZSByZXR1cm5lZC4KICAgICAgICBiYi5lcnJvcihwbiArICI6IFJlY2lwZSBm
aWxlIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uIChMSUNfRklMRVNfQ0hL
U1VNKSIpCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgc3JjZGlyID0gYmIuZGF0YS5nZXRWYXIo
J1MnLCBkLCBUcnVlKQoKICAgIGZvciB1cmwgaW4gbGljX2ZpbGVzLnNwbGl0KCk6CiAgICAgICAg
KHR5cGUsIGhvc3QsIHBhdGgsIHVzZXIsIHBzd2QsIHBhcm0pID0gYmIuZGVjb2RldXJsKHVybCkK
ICAgICAgICBzcmNsaWNmaWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgcGF0aCkKICAgICAgICBp
ZiBub3Qgb3MucGF0aC5pc2ZpbGUoc3JjbGljZmlsZSk6CiAgICAgICAgICAgIHJhaXNlIGJiLmJ1
aWxkLkZ1bmNGYWlsZWQoIHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBwb2ludHMgdG8gaW52YWxp
ZCBmaWxlOiAiICsgcGF0aCkKCiAgICAgICAgaWYgJ21kNScgbm90IGluIHBhcm06CiAgICAgICAg
ICAgIGJiLmVycm9yKHBuICsgIjogbWQ1IGNoZWNrc3VtIGlzIG5vdCBzcGVjaWZpZWQgZm9yICIs
IHVybCkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgYmVnaW5saW5lLCBlbmRsaW5l
ID0gMCwgMAogICAgICAgIGlmICdiZWdpbmxpbmUnIGluIHBhcm06CiAgICAgICAgICAgIGJlZ2lu
bGluZSA9IGludChwYXJtWydiZWdpbmxpbmUnXSkKICAgICAgICBpZiAnZW5kbGluZScgaW4gcGFy
bToKICAgICAgICAgICAgZW5kbGluZSA9IGludChwYXJtWydlbmRsaW5lJ10pCgogICAgICAgIGlm
IChub3QgYmVnaW5saW5lKSBhbmQgKG5vdCBlbmRsaW5lKToKICAgICAgICAgICAgbWQ1Y2hrc3Vt
ID0gYmIudXRpbHMubWQ1X2ZpbGUoc3JjbGljZmlsZSkKICAgICAgICBlbHNlOgogICAgICAgICAg
ICBmaSA9IG9wZW4oc3JjbGljZmlsZSwgJ3InKQogICAgICAgICAgICBmbyA9IHRlbXBmaWxlLk5h
bWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3YicsIHByZWZpeD0ncG9reS4nLCBzdWZmaXg9Jy50bXAn
LCBkZWxldGU9RmFsc2UpCiAgICAgICAgICAgIHRtcGxpY2ZpbGUgPSBmby5uYW1lOwogICAgICAg
ICAgICBsaW5lbm8gPSAwCiAgICAgICAgICAgIGxpbmVzb3V0ID0gMAogICAgICAgICAgICBmb3Ig
bGluZSBpbiBmaToKICAgICAgICAgICAgICAgIGxpbmVubyArPSAxCiAgICAgICAgICAgICAgICBp
ZiAobGluZW5vID49IGJlZ2lubGluZSk6CiAgICAgICAgICAgICAgICAgICAgaWYgKChsaW5lbm8g
PD0gZW5kbGluZSkgb3Igbm90IGVuZGxpbmUpOgogICAgICAgICAgICAgICAgICAgICAgICBmby53
cml0ZShsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICBsaW5lc291dCArPSAxCiAgICAgICAg
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAg
ICAgZm8uZmx1c2goKQogICAgICAgICAgICBmby5jbG9zZSgpCiAgICAgICAgICAgIGZpLmNsb3Nl
KCkKICAgICAgICAgICAgbWQ1Y2hrc3VtID0gYmIudXRpbHMubWQ1X2ZpbGUodG1wbGljZmlsZSkK
ICAgICAgICAgICAgb3MudW5saW5rKHRtcGxpY2ZpbGUpCgogICAgICAgIGlmIHBhcm1bJ21kNSdd
ID09IG1kNWNoa3N1bToKICAgICAgICAgICAgYmIubm90ZSAocG4gKyAiOiBtZDUgY2hlY2tzdW0g
bWF0Y2hlZCBmb3IgIiwgdXJsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJiLmVycm9yIChw
biArICI6IG1kNSBkYXRhIGlzIG5vdCBtYXRjaGluZyBmb3IgIiwgdXJsKQogICAgICAgICAgICBi
Yi5lcnJvciAocG4gKyAiOiBUaGUgbmV3IG1kNSBjaGVja3N1bSBpcyAiLCBtZDVjaGtzdW0pCiAg
ICAgICAgICAgIGJiLmVycm9yIChwbiArICI6IENoZWNrIGlmIHRoZSBsaWNlbnNlIGluZm9ybWF0
aW9uIGhhcyBjaGFuZ2VkIGluIikKICAgICAgICAgICAgc2FuZSA9IEZhbHNlCgogICAgcmV0dXJu
IHNhbmUKfQoKCnB5dGhvbiBkb19wYWNrYWdlX3FhICgpIHsKICAgIGJiLm5vdGUoIkRPIFBBQ0tB
R0UgUUEiKQoKICAgIGxvZ2RpciA9IGJiLmRhdGEuZ2V0VmFyKCdUJywgZCwgVHJ1ZSkKICAgIHBr
ZyA9IGJiLmRhdGEuZ2V0VmFyKCdQTicsIGQsIFRydWUpCgogICAgIyBDaGVjayB0aGUgY29tcGls
ZSBsb2cgZm9yIGhvc3QgY29udGFtaW5hdGlvbgogICAgY29tcGlsZWxvZyA9IG9zLnBhdGguam9p
bihsb2dkaXIsImxvZy5kb19jb21waWxlIikKCiAgICBzdGF0ZW1lbnQgPSAiZ3JlcCAtZSAnQ1JP
U1MgQ09NUElMRSBCYWRuZXNzOicgLWUgJ2lzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24n
ICVzID4gL2Rldi9udWxsIiAlIGNvbXBpbGVsb2cKICAgIGlmIG9zLnN5c3RlbShzdGF0ZW1lbnQp
ID09IDA6CiAgICAgICAgYmIud2FybigiJXM6IFRoZSBjb21waWxlIGxvZyBpbmRpY2F0ZXMgdGhh
dCBob3N0IGluY2x1ZGUgYW5kL29yIGxpYnJhcnkgcGF0aHMgd2VyZSB1c2VkLiAgUGxlYXNlIGNo
ZWNrIHRoZSBsb2cgJyVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICUgXAogICAgICAgICAgICAg
ICAgKHBrZywgY29tcGlsZWxvZykpCgoKICAgICMgQ2hlY2sgdGhlIGluc3RhbGwgbG9nIGZvciBo
b3N0IGNvbnRhbWluYXRpb24KICAgIGluc3RhbGxsb2cgPSBvcy5wYXRoLmpvaW4obG9nZGlyLCJs
b2cuZG9faW5zdGFsbCIpCgogICAgc3RhdGVtZW50ID0gImdyZXAgLWUgJ0NST1NTIENPTVBJTEUg
QmFkbmVzczonIC1lICdpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uJyAlcyA+IC9kZXYv
bnVsbCIgJSBpbnN0YWxsbG9nCiAgICBpZiBvcy5zeXN0ZW0oc3RhdGVtZW50KSA9PSAwOgogICAg
ICAgIGJiLndhcm4oIiVzOiBUaGUgaW5zdGFsbCBsb2cgaW5kaWNhdGVzIHRoYXQgaG9zdCBpbmNs
dWRlIGFuZC9vciBsaWJyYXJ5IHBhdGhzIHdlcmUgdXNlZC4gIFBsZWFzZSBjaGVjayB0aGUgbG9n
ICclcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAlIFwKICAgICAgICAgICAgICAgIChwa2csIGlu
c3RhbGxsb2cpKQoKICAgICMgU2NhbiB0aGUgcGFja2FnZXMuLi4KICAgIHBrZ2Rlc3QgPSBiYi5k
YXRhLmdldFZhcignUEtHREVTVCcsIGQsIFRydWUpCiAgICBwYWNrYWdlcyA9IGJiLmRhdGEuZ2V0
VmFyKCdQQUNLQUdFUycsZCwgVHJ1ZSkKCiAgICAjIG5vIHBhY2thZ2VzIHNob3VsZCBiZSBzY2Fu
bmVkCiAgICBpZiBub3QgcGFja2FnZXM6CiAgICAgICAgcmV0dXJuCgogICAgdGVzdG1hdHJpeCA9
IGQuZ2V0VmFyRmxhZ3MoIlFBUEFUSFRFU1QiKQoKICAgIGcgPSBnbG9iYWxzKCkKICAgIHdhbGtf
c2FuZSA9IFRydWUKICAgIHJkZXBlbmRzX3NhbmUgPSBUcnVlCiAgICBmb3IgcGFja2FnZSBpbiBw
YWNrYWdlcy5zcGxpdCgpOgogICAgICAgIHNraXAgPSAoYmIuZGF0YS5nZXRWYXIoJ0lOU0FORV9T
S0lQXycgKyBwYWNrYWdlLCBkLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgICAgIGlmIHNraXA6
CiAgICAgICAgICAgIGJiLm5vdGUoIlBhY2thZ2UgJXMgc2tpcHBpbmcgUUEgdGVzdHM6ICVzIiAl
IChwYWNrYWdlLCBzdHIoc2tpcCkpKQogICAgICAgIHdhcm5jaGVja3MgPSBbXQogICAgICAgIGZv
ciB3IGluIChkLmdldFZhcigiV0FSTl9RQSIsIFRydWUpIG9yICIiKS5zcGxpdCgpOgogICAgICAg
ICAgICBpZiB3IGluIHNraXA6CiAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGlm
IHcgaW4gdGVzdG1hdHJpeCBhbmQgdGVzdG1hdHJpeFt3XSBpbiBnOgogICAgICAgICAgICAgICAg
d2FybmNoZWNrcy5hcHBlbmQoZ1t0ZXN0bWF0cml4W3ddXSkKICAgICAgICBlcnJvcmNoZWNrcyA9
IFtdCiAgICAgICAgZm9yIGUgaW4gKGQuZ2V0VmFyKCJFUlJPUl9RQSIsIFRydWUpIG9yICIiKS5z
cGxpdCgpOgogICAgICAgICAgICBpZiBlIGluIHNraXA6CiAgICAgICAgICAgICAgIGNvbnRpbnVl
CiAgICAgICAgICAgIGlmIGUgaW4gdGVzdG1hdHJpeCBhbmQgdGVzdG1hdHJpeFtlXSBpbiBnOgog
ICAgICAgICAgICAgICAgZXJyb3JjaGVja3MuYXBwZW5kKGdbdGVzdG1hdHJpeFtlXV0pCgogICAg
ICAgIGJiLm5vdGUoIkNoZWNraW5nIFBhY2thZ2U6ICVzIiAlIHBhY2thZ2UpCiAgICAgICAgcGF0
aCA9ICIlcy8lcyIgJSAocGtnZGVzdCwgcGFja2FnZSkKICAgICAgICBpZiBub3QgcGFja2FnZV9x
YV93YWxrKHBhdGgsIHdhcm5jaGVja3MsIGVycm9yY2hlY2tzLCBza2lwLCBwYWNrYWdlLCBkKToK
ICAgICAgICAgICAgd2Fsa19zYW5lICA9IEZhbHNlCiAgICAgICAgaWYgbm90IHBhY2thZ2VfcWFf
Y2hlY2tfcmRlcGVuZHMocGFja2FnZSwgcGtnZGVzdCwgc2tpcCwgZCk6CiAgICAgICAgICAgIHJk
ZXBlbmRzX3NhbmUgPSBGYWxzZQoKCiAgICBpZiBub3Qgd2Fsa19zYW5lIG9yIG5vdCByZGVwZW5k
c19zYW5lOgogICAgICAgIGJiLmZhdGFsKCJRQSBydW4gZm91bmQgZmF0YWwgZXJyb3JzLiBQbGVh
c2UgY29uc2lkZXIgZml4aW5nIHRoZW0uIikKICAgIGJiLm5vdGUoIkRPTkUgd2l0aCBQQUNLQUdF
IFFBIikKfQoKCnB5dGhvbiBkb19wYWNrYWdlX3JwbSAoKSB7CglpbXBvcnQgb3MKCgkjIFdlIG5l
ZWQgYSBzaW1wbGUgd2F5IHRvIHJlbW92ZSB0aGUgTUxQUkVGSVggZnJvbSB0aGUgcGFja2FnZSBu
YW1lLAoJIyBhbmQgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbi4uLgoJZGVmIHN0cmlwX211bHRpbGli
KG5hbWUsIGQpOgoJCW1sID0gYmIuZGF0YS5nZXRWYXIoIk1MUFJFRklYIiwgZCwgVHJ1ZSkKCQlp
ZiBtbCBhbmQgbmFtZSBhbmQgbGVuKG1sKSAhPSAwIGFuZCBuYW1lLmZpbmQobWwpID49IDA6CgkJ
CXJldHVybiAiIi5qb2luKG5hbWUuc3BsaXQobWwpKQoJCXJldHVybiBuYW1lCgoJd29ya2RpciA9
IGJiLmRhdGEuZ2V0VmFyKCdXT1JLRElSJywgZCwgVHJ1ZSkKCW91dGRpciA9IGJiLmRhdGEuZ2V0
VmFyKCdERVBMT1lfRElSX0lQSycsIGQsIFRydWUpCgl0bXBkaXIgPSBiYi5kYXRhLmdldFZhcign
VE1QRElSJywgZCwgVHJ1ZSkKCXBrZ2QgPSBiYi5kYXRhLmdldFZhcignUEtHRCcsIGQsIFRydWUp
Cglwa2dkZXN0ID0gYmIuZGF0YS5nZXRWYXIoJ1BLR0RFU1QnLCBkLCBUcnVlKQoJaWYgbm90IHdv
cmtkaXIgb3Igbm90IG91dGRpciBvciBub3QgcGtnZCBvciBub3QgdG1wZGlyOgoJCWJiLmVycm9y
KCJWYXJpYWJsZXMgaW5jb3JyZWN0bHkgc2V0LCB1bmFibGUgdG8gcGFja2FnZSIpCgkJcmV0dXJu
CgoJcGFja2FnZXMgPSBiYi5kYXRhLmdldFZhcignUEFDS0FHRVMnLCBkLCBUcnVlKQoJaWYgbm90
IHBhY2thZ2VzIG9yIHBhY2thZ2VzID09ICcnOgoJCWJiLmRlYnVnKDEsICJObyBwYWNrYWdlczsg
bm90aGluZyB0byBkbyIpCgkJcmV0dXJuCgoJIyBDb25zdHJ1Y3QgdGhlIHNwZWMgZmlsZS4uLgoJ
c3JjbmFtZSAgICA9IHN0cmlwX211bHRpbGliKGJiLmRhdGEuZ2V0VmFyKCdQTicsIGQsIFRydWUp
LCBkKQoJb3V0c3BlY2ZpbGUgPSB3b3JrZGlyICsgIi8iICsgc3JjbmFtZSArICIuc3BlYyIKCWJi
LmRhdGEuc2V0VmFyKCdPVVRTUEVDRklMRScsIG91dHNwZWNmaWxlLCBkKQoJYmIuYnVpbGQuZXhl
Y19mdW5jKCd3cml0ZV9zcGVjZmlsZScsIGQpCgoJIyBDb25zdHJ1Y3QgcGVyIGZpbGUgZGVwZW5k
ZW5jaWVzIGZpbGUKCWRlZiBkdW1wX2ZpbGVyZGVwcyh2YXJuYW1lLCBvdXRmaWxlLCBkKToKCQlv
dXRmaWxlLndyaXRlKCIjIS9iaW4vc2hcbiIpCgkJb3V0ZmlsZS53cml0ZSgiXG4jIERlcGVuZGVu
Y3kgdGFibGVcbiIpCgkJZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgoJCQlkZXBlbmRzZmxp
c3Rfa2V5ID0gJ0ZJTEUnICsgdmFybmFtZSArICdGTElTVCcgKyAiXyIgKyBwa2cKCQkJZGVwZW5k
c2ZsaXN0ID0gKGJiLmRhdGEuZ2V0VmFyKGRlcGVuZHNmbGlzdF9rZXksIGQsIFRydWUpIG9yICIi
KQoJCQlmb3IgZGZpbGUgaW4gZGVwZW5kc2ZsaXN0LnNwbGl0KCk6CgkJCQlrZXkgPSAiRklMRSIg
KyB2YXJuYW1lICsgIl8iICsgZGZpbGUgKyAiXyIgKyBwa2cKCQkJCWRlcGVuZHNfZGljdCA9IGJi
LnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zKGJiLmRhdGEuZ2V0VmFyKGtleSwgZCwgVHJ1ZSkg
b3IgIiIpCgkJCQlmaWxlID0gZGZpbGUucmVwbGFjZSgiQHVuZGVyc2NvcmVAIiwgIl8iKQoJCQkJ
ZmlsZSA9IGZpbGUucmVwbGFjZSgiQGNsb3NlYnJhY2VAIiwgIl0iKQoJCQkJZmlsZSA9IGZpbGUu
cmVwbGFjZSgiQG9wZW5icmFjZUAiLCAiWyIpCgkJCQlmaWxlID0gZmlsZS5yZXBsYWNlKCJAdGFi
QCIsICJcdCIpCgkJCQlmaWxlID0gZmlsZS5yZXBsYWNlKCJAc3BhY2VAIiwgIiAiKQoJCQkJZmls
ZSA9IGZpbGUucmVwbGFjZSgiQGF0QCIsICJAIikKCQkJCW91dGZpbGUud3JpdGUoIiMiICsgcGtn
ZCArIGZpbGUgKyAiXHQiKQoJCQkJZm9yIGRlcCBpbiBkZXBlbmRzX2RpY3Q6CgkJCQkJdmVyID0g
ZGVwZW5kc19kaWN0W2RlcF0KCQkJCQlpZiBkZXAgYW5kIHZlcjoKCQkJCQkJdmVyID0gdmVyLnJl
cGxhY2UoIigiLCIiKQoJCQkJCQl2ZXIgPSB2ZXIucmVwbGFjZSgiKSIsIiIpCgkJCQkJCW91dGZp
bGUud3JpdGUoZGVwICsgIiAiICsgdmVyICsgIiAiKQoJCQkJCWVsc2U6CgkJCQkJCW91dGZpbGUu
d3JpdGUoZGVwICsgIiAiKQoJCQkJb3V0ZmlsZS53cml0ZSgiXG4iKQoJCW91dGZpbGUud3JpdGUo
IlxuXG53aGlsZSByZWFkIGZpbGVfbmFtZSA7IGRvXG4iKQoJCW91dGZpbGUud3JpdGUoIlx0bGVu
Z3RoPSQoZWNobyBcIiMke2ZpbGVfbmFtZX1cdFwiIHwgd2MgLWMgKVxuIikKCQlvdXRmaWxlLndy
aXRlKCJcdGxpbmU9JChncmVwIFwiXiMke2ZpbGVfbmFtZX1cdFwiICQwIHwgY3V0IC1jICR7bGVu
Z3RofS0gKVxuIikKCQlvdXRmaWxlLndyaXRlKCJcdHByaW50ZiBcIiVzXFxuXCIgJHtsaW5lfVxu
IikKCQlvdXRmaWxlLndyaXRlKCJkb25lXG4iKQoKCSMgUG9reSBkZXBlbmRlbmNpZXMgYS5rLmEu
IFJQTSByZXF1aXJlcwoJb3V0ZGVwZW5kcyA9IHdvcmtkaXIgKyAiLyIgKyBzcmNuYW1lICsgIi5y
ZXF1aXJlcyIKCgl0cnk6CgkJZnJvbSBfX2J1aWx0aW5fXyBpbXBvcnQgZmlsZQoJCWRlcGVuZHNm
aWxlID0gZmlsZShvdXRkZXBlbmRzLCAndycpCglleGNlcHQgT1NFcnJvcjoKCQlyYWlzZSBiYi5i
dWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBzcGVjIGZpbGUgZm9yIHdyaXRpbmcuIikK
CglkdW1wX2ZpbGVyZGVwcygnUkRFUEVORFMnLCBkZXBlbmRzZmlsZSwgZCkKCglkZXBlbmRzZmls
ZS5jbG9zZSgpCglvcy5jaG1vZChvdXRkZXBlbmRzLCAwNzU1KQoKCSMgUG9reSAvIFJQTSBQcm92
aWRlcwoJb3V0cHJvdmlkZXMgPSB3b3JrZGlyICsgIi8iICsgc3JjbmFtZSArICIucHJvdmlkZXMi
CgoJdHJ5OgoJCWZyb20gX19idWlsdGluX18gaW1wb3J0IGZpbGUKCQlwcm92aWRlc2ZpbGUgPSBm
aWxlKG91dHByb3ZpZGVzLCAndycpCglleGNlcHQgT1NFcnJvcjoKCQlyYWlzZSBiYi5idWlsZC5G
dW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBzcGVjIGZpbGUgZm9yIHdyaXRpbmcuIikKCglkdW1w
X2ZpbGVyZGVwcygnUlBST1ZJREVTJywgcHJvdmlkZXNmaWxlLCBkKQoKCXByb3ZpZGVzZmlsZS5j
bG9zZSgpCglvcy5jaG1vZChvdXRwcm92aWRlcywgMDc1NSkKCgkjIFNldHVwIHRoZSBycG1idWls
ZCBhcmd1bWVudHMuLi4KCXJwbWJ1aWxkID0gYmIuZGF0YS5nZXRWYXIoJ1JQTUJVSUxEJywgZCwg
VHJ1ZSkKCXRhcmdldHN5cyA9IGJiLmRhdGEuZ2V0VmFyKCdUQVJHRVRfU1lTJywgZCwgVHJ1ZSkK
CXRhcmdldHZlbmRvciA9IGJiLmRhdGEuZ2V0VmFyKCdUQVJHRVRfVkVORE9SJywgZCwgVHJ1ZSkK
CXBhY2thZ2VfYXJjaCA9IGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFX0FSQ0gnLCBkLCBUcnVlKSBv
ciAiIgoJaWYgcGFja2FnZV9hcmNoIG5vdCBpbiAiYWxsIGFueSBub2FyY2giLnNwbGl0KCk6CgkJ
bWxfcHJlZml4ID0gKGJiLmRhdGEuZ2V0VmFyKCdNTFBSRUZJWCcsIGQsIFRydWUpIG9yICIiKS5y
ZXBsYWNlKCItIiwgIl8iKQoJCWJiLmRhdGEuc2V0VmFyKCdQQUNLQUdFX0FSQ0hfRVhURU5EJywg
bWxfcHJlZml4ICsgcGFja2FnZV9hcmNoLCBkKQoJZWxzZToKCQliYi5kYXRhLnNldFZhcignUEFD
S0FHRV9BUkNIX0VYVEVORCcsIHBhY2thZ2VfYXJjaCwgZCkKCXBrZ3dyaXRlZGlyID0gYmIuZGF0
YS5leHBhbmQoJy9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRf
cDEwMjByZGJfcmVsZWFzZS90bXAvd29yay9wMTAyMHJkYi1mc2wtbGludXgtZ251c3BlL2ZzbC1p
bWFnZS1zaW1wbGUtMS4wLXIwL2RlcGxveS1ycG1zLyR7UEFDS0FHRV9BUkNIX0VYVEVORH0nLCBk
KQoJcGtnYXJjaCA9IGJiLmRhdGEuZXhwYW5kKCcke1BBQ0tBR0VfQVJDSF9FWFRFTkR9LWZzbC1s
aW51eC1nbnVzcGUnLCBkKQoJbWFnaWNmaWxlID0gYmIuZGF0YS5leHBhbmQoJy9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
c3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9taXNjL21hZ2ljLm1nYycsIGQpCgliYi5t
a2RpcmhpZXIocGtnd3JpdGVkaXIpCglvcy5jaG1vZChwa2d3cml0ZWRpciwgMDc1NSkKCgljbWQg
PSBycG1idWlsZAoJY21kID0gY21kICsgIiAtLW5vZGVwcyAtLXNob3J0LWNpcmN1aXQgLS10YXJn
ZXQgIiArIHBrZ2FyY2ggKyAiIC0tYnVpbGRyb290ICIgKyBwa2dkCgljbWQgPSBjbWQgKyAiIC0t
ZGVmaW5lICdfdG9wZGlyICIgKyB3b3JrZGlyICsgIicgLS1kZWZpbmUgJ19ycG1kaXIgIiArIHBr
Z3dyaXRlZGlyICsgIiciCgljbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRfbmFtZV9mbXQg
JSV7TkFNRX0tJSV7VkVSU0lPTn0tJSV7UkVMRUFTRX0uJSV7QVJDSH0ucnBtJyIKCWNtZCA9IGNt
ZCArICIgLS1kZWZpbmUgJ191c2VfaW50ZXJuYWxfZGVwZW5kZW5jeV9nZW5lcmF0b3IgMCciCglj
bWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfX2ZpbmRfcmVxdWlyZXMgIiArIG91dGRlcGVuZHMgKyAi
JyIKCWNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ19fZmluZF9wcm92aWRlcyAiICsgb3V0cHJvdmlk
ZXMgKyAiJyIKCWNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ191bnBhY2thZ2VkX2ZpbGVzX3Rlcm1p
bmF0ZV9idWlsZCAwJyIKCWNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ2RlYnVnX3BhY2thZ2UgJXtu
aWx9JyIKCWNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ19ycG1mY19tYWdpY19wYXRoICIgKyBtYWdp
Y2ZpbGUgKyAiJyIKCWNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ190bXBwYXRoICIgKyB3b3JrZGly
ICsgIiciCgljbWQgPSBjbWQgKyAiIC1iYiAiICsgb3V0c3BlY2ZpbGUKCgkjIEJ1aWxkIHRoZSBy
cG0gcGFja2FnZSEKCWJiLmRhdGEuc2V0VmFyKCdCVUlMRFNQRUMnLCBjbWQgKyAiXG4iLCBkKQoJ
YmIuZGF0YS5zZXRWYXJGbGFnKCdCVUlMRFNQRUMnLCAnZnVuYycsICcxJywgZCkKCWJiLmJ1aWxk
LmV4ZWNfZnVuYygnQlVJTERTUEVDJywgZCkKfQoKCnB5dGhvbiBtYXBfdWJvb3RfYXJjaCAoKSB7
CmRlZiBtYXBfdWJvb3RfYXJjaChhLCBkKToKCWltcG9ydCByZQoKCWlmICAgcmUubWF0Y2goJ3Ao
cGN8b3dlcnBjKSh8NjQpJywgYSk6IHJldHVybiAncHBjJwoJZWxpZiByZS5tYXRjaCgnaS44NiQn
LCBhKTogcmV0dXJuICd4ODYnCglyZXR1cm4gYQp9CgoKcHl0aG9uIGdldF90aW1lZGF0YSAoKSB7
CmRlZiBnZXRfdGltZWRhdGEodmFyLCBkYXRhKToKICAgIGltcG9ydCB0aW1lCiAgICB0aW1lZGF0
YSA9IGRhdGEuZ2V0VmFyKHZhciwgRmFsc2UpCiAgICBpZiB0aW1lZGF0YSBpcyBOb25lOgogICAg
ICAgIHJldHVybgogICAgb2xkdGltZSwgb2xkY3B1LCBvbGRwcm9jID0gdGltZWRhdGEKICAgIHBy
b2NkaWZmID0gZ2V0X3Byb2Nlc3NfY3B1dGltZShvcy5nZXRwaWQoKSkgLSBvbGRwcm9jCiAgICBj
cHVkaWZmID0gZ2V0X2NwdXRpbWUoKSAtIG9sZGNwdQogICAgdGltZWRpZmYgPSB0aW1lLnRpbWUo
KSAtIG9sZHRpbWUKICAgIGlmIGNwdWRpZmYgPiAwOgogICAgICAgIGNwdXBlcmMgPSBmbG9hdChw
cm9jZGlmZikgKiAxMDAgLyBjcHVkaWZmCiAgICBlbHNlOgogICAgICAgIGNwdXBlcmMgPSBOb25l
CiAgICByZXR1cm4gdGltZWRpZmYsIGNwdXBlcmMKfQoKCnB5dGhvbiBkb19xYV9zdGFnaW5nICgp
IHsKICAgIGJiLm5vdGUoIlFBIGNoZWNraW5nIHN0YWdpbmciKQoKICAgIGlmIG5vdCBwYWNrYWdl
X3FhX2NoZWNrX3N0YWdlZChiYi5kYXRhLmV4cGFuZCgnL2xvY2FsL2plbmtpbnMveW9jdG8vY2Fj
aGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC93b3JrL3AxMDIwcmRi
LWZzbC1saW51eC1nbnVzcGUvZnNsLWltYWdlLXNpbXBsZS0xLjAtcjAvc3lzcm9vdC1kZXN0ZGly
Ly8vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3AxMDIwcmRiL3Vzci9saWInLGQpLCBkKToKICAgICAgICBi
Yi5mYXRhbCgiUUEgc3RhZ2luZyB3YXMgYnJva2VuIGJ5IHRoZSBwYWNrYWdlIGJ1aWx0IGFib3Zl
IikKfQoKCnB5dGhvbiBkb19wYWNrYWdlICgpIHsKICAgICAgICAjIENoYW5nZSB0aGUgZm9sbG93
aW5nIHZlcnNpb24gdG8gY2F1c2Ugc3N0YXRlIHRvIGludmFsaWRhdGUgdGhlIHBhY2thZ2UKICAg
ICAgICAjIGNhY2hlLiAgVGhpcyBpcyB1c2VmdWwgaWYgYW4gaXRlbSB0aGlzIGNsYXNzIGRlcGVu
ZHMgb24gY2hhbmdlcyBpbiBhCiAgICAgICAgIyB3YXkgdGhhdCB0aGUgb3V0cHV0IG9mIHRoaXMg
Y2xhc3MgY2hhbmdlcy4gIHJwbWRlcHMgaXMgYSBnb29kIGV4YW1wbGUKICAgICAgICAjIGFzIGFu
eSBjaGFuZ2UgdG8gcnBtZGVwcyByZXF1aXJlcyB0aGlzIHRvIGJlIHJlcnVuLgogICAgICAgICMg
UEFDS0FHRV9CQkNMQVNTX1ZFUlNJT04gPSAiMSIKCglwYWNrYWdlcyA9IChiYi5kYXRhLmdldFZh
cignUEFDS0FHRVMnLCBkLCBUcnVlKSBvciAiIikuc3BsaXQoKQoJaWYgbGVuKHBhY2thZ2VzKSA8
IDE6CgkJYmIuZGVidWcoMSwgIk5vIHBhY2thZ2VzIHRvIGJ1aWxkLCBza2lwcGluZyBkb19wYWNr
YWdlIikKCQlyZXR1cm4KCgl3b3JrZGlyID0gYmIuZGF0YS5nZXRWYXIoJ1dPUktESVInLCBkLCBU
cnVlKQoJb3V0ZGlyID0gYmIuZGF0YS5nZXRWYXIoJ0RFUExPWV9ESVInLCBkLCBUcnVlKQoJZGVz
dCA9IGJiLmRhdGEuZ2V0VmFyKCdEJywgZCwgVHJ1ZSkKCWR2YXIgPSBiYi5kYXRhLmdldFZhcign
UEtHRCcsIGQsIFRydWUpCglwbiA9IGJiLmRhdGEuZ2V0VmFyKCdQTicsIGQsIFRydWUpCgoJaWYg
bm90IHdvcmtkaXIgb3Igbm90IG91dGRpciBvciBub3QgZGVzdCBvciBub3QgZHZhciBvciBub3Qg
cG4gb3Igbm90IHBhY2thZ2VzOgoJCWJiLmVycm9yKCJXT1JLRElSLCBERVBMT1lfRElSLCBELCBQ
TiBhbmQgUEtHRCBhbGwgbXVzdCBiZSBkZWZpbmVkLCB1bmFibGUgdG8gcGFja2FnZSIpCgkJcmV0
dXJuCgoJZm9yIGYgaW4gKGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFRlVOQ1MnLCBkLCBUcnVlKSBv
ciAnJykuc3BsaXQoKToKCQliYi5idWlsZC5leGVjX2Z1bmMoZiwgZCkKfQoKCnB5dGhvbiBwYWNr
YWdlX3FhX2NoZWNrX3Blcm0gKCkgewpkZWYgcGFja2FnZV9xYV9jaGVja19wZXJtKHBhdGgsbmFt
ZSxkLCBlbGYsIG1lc3NhZ2VzKToKICAgICIiIgogICAgQ2hlY2sgdGhlIHBlcm1pc3Npb24gb2Yg
ZmlsZXMKICAgICIiIgogICAgcmV0dXJuCn0KCgpweXRob24gb2VfaW1wb3J0ICgpIHsKZGVmIG9l
X2ltcG9ydChkKToKICAgIGltcG9ydCBvcywgc3lzCgogICAgYmJwYXRoID0gZC5nZXRWYXIoIkJC
UEFUSCIsIFRydWUpLnNwbGl0KCI6IikKICAgIHN5cy5wYXRoWzA6MF0gPSBbb3MucGF0aC5qb2lu
KGRpciwgImxpYiIpIGZvciBkaXIgaW4gYmJwYXRoXQoKICAgIGRlZiBpbmplY3QobmFtZSwgdmFs
dWUpOgogICAgICAgICIiIk1ha2UgYSBweXRob24gb2JqZWN0IGFjY2Vzc2libGUgZnJvbSB0aGUg
bWV0YWRhdGEiIiIKICAgICAgICBpZiBoYXNhdHRyKGJiLnV0aWxzLCAiX2NvbnRleHQiKToKICAg
ICAgICAgICAgYmIudXRpbHMuX2NvbnRleHRbbmFtZV0gPSB2YWx1ZQogICAgICAgIGVsc2U6CiAg
ICAgICAgICAgIF9fYnVpbHRpbnNfX1tuYW1lXSA9IHZhbHVlCgogICAgaW1wb3J0IG9lLmRhdGEK
ICAgIGZvciB0b2ltcG9ydCBpbiBvZS5kYXRhLnR5cGVkX3ZhbHVlKCJPRV9JTVBPUlRTIiwgZCk6
CiAgICAgICAgaW1wb3J0ZWQgPSBfX2ltcG9ydF9fKHRvaW1wb3J0KQogICAgICAgIGluamVjdCh0
b2ltcG9ydC5zcGxpdCgiLiIsIDEpWzBdLCBpbXBvcnRlZCkKfQoKCnB5dGhvbiBwYWNrYWdlX3Fh
X3dhbGsgKCkgewpkZWYgcGFja2FnZV9xYV93YWxrKHBhdGgsIHdhcm5mdW5jcywgZXJyb3JmdW5j
cywgc2tpcCwgcGFja2FnZSwgZCk6CiAgICBpbXBvcnQgb2UucWEKCiAgICAjaWYgdGhpcyB3aWxs
IHRocm93IGFuIGV4Y2VwdGlvbiwgdGhlbiBmaXggdGhlIGRpY3QgYWJvdmUKICAgIHRhcmdldF9v
cyAgID0gYmIuZGF0YS5nZXRWYXIoJ1RBUkdFVF9PUycsICAgZCwgVHJ1ZSkKICAgIHRhcmdldF9h
cmNoID0gYmIuZGF0YS5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgZCwgVHJ1ZSkKCiAgICB3YXJuaW5n
cyA9IFtdCiAgICBlcnJvcnMgPSBbXQogICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndh
bGsocGF0aCk6CiAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgIHBhdGggPSBv
cy5wYXRoLmpvaW4ocm9vdCxmaWxlKQogICAgICAgICAgICBlbGYgPSBvZS5xYS5FTEZGaWxlKHBh
dGgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGVsZi5vcGVuKCkKICAgICAgICAg
ICAgZXhjZXB0OgogICAgICAgICAgICAgICAgZWxmID0gTm9uZQogICAgICAgICAgICBmb3IgZnVu
YyBpbiB3YXJuZnVuY3M6CiAgICAgICAgICAgICAgICBmdW5jKHBhdGgsIHBhY2thZ2UsIGQsIGVs
Ziwgd2FybmluZ3MpCiAgICAgICAgICAgIGZvciBmdW5jIGluIGVycm9yZnVuY3M6CiAgICAgICAg
ICAgICAgICBmdW5jKHBhdGgsIHBhY2thZ2UsIGQsIGVsZiwgZXJyb3JzKQoKICAgIGZvciB3IGlu
IHdhcm5pbmdzOgogICAgICAgIGJiLndhcm4oIlFBIElzc3VlOiAlcyIgJSB3KQogICAgICAgIHBh
Y2thZ2VfcWFfd3JpdGVfZXJyb3IodywgZCkKICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICBi
Yi5lcnJvcigiUUEgSXNzdWU6ICVzIiAlIGUpCiAgICAgICAgcGFja2FnZV9xYV93cml0ZV9lcnJv
cihlLCBkKQoKICAgIHJldHVybiBsZW4oZXJyb3JzKSA9PSAwCn0KCgpweXRob24gZG9fdW5wYWNr
ICgpIHsKCWJiLmJ1aWxkLmV4ZWNfZnVuYygnYmFzZV9kb191bnBhY2snLCBkKQp9CgoKcHl0aG9u
IHJ1bnN0cmlwICgpIHsKZGVmIHJ1bnN0cmlwKGZpbGUsIGVsZnR5cGUsIGQpOgogICAgIyBGdW5j
dGlvbiB0byBzdHJpcCBhIHNpbmdsZSBmaWxlLCBjYWxsZWQgZnJvbSBzcGxpdF9hbmRfc3RyaXBf
ZmlsZXMgYmVsb3cKICAgICMgQSB3b3JraW5nICdmaWxlJyAob25lIHdoaWNoIHdvcmtzIG9uIHRo
ZSB0YXJnZXQgYXJjaGl0ZWN0dXJlKQogICAgIwogICAgIyBUaGUgZWxmdHlwZSBpcyBhIGJpdCBw
YXR0ZXJuIChleHBsYWluZWQgaW4gc3BsaXRfYW5kX3N0cmlwX2ZpbGVzKSB0byB0ZWxsCiAgICAj
IHVzIHdoYXQgdHlwZSBvZiBmaWxlIHdlJ3JlIHByb2Nlc3NpbmcuLi4KICAgICMgNCAtIGV4ZWN1
dGFibGUKICAgICMgOCAtIHNoYXJlZCBsaWJyYXJ5CgogICAgaW1wb3J0IGNvbW1hbmRzLCBzdGF0
CgogICAgcGF0aHByZWZpeCA9ICJleHBvcnQgUEFUSD0lczsgIiAlIGJiLmRhdGEuZ2V0VmFyKCdQ
QVRIJywgZCwgVHJ1ZSkKICAgIHN0cmlwID0gYmIuZGF0YS5nZXRWYXIoIlNUUklQIiwgZCwgVHJ1
ZSkKCiAgICAjIEhhbmRsZSBrZXJuZWwgbW9kdWxlcyBzcGVjaWZpY2FsbHkgLSAuZGVidWcgZGly
ZWN0b3JpZXMgaGVyZSBhcmUgcG9pbnRsZXNzCiAgICBpZiBmaWxlLmZpbmQoIi9saWIvbW9kdWxl
cy8iKSAhPSAtMSBhbmQgZmlsZS5lbmRzd2l0aCgiLmtvIik6CiAgICAgICAgcmV0dXJuIG9zLnN5
c3RlbSgiJXMnJXMnIC0tc3RyaXAtZGVidWcgLS1yZW1vdmUtc2VjdGlvbj0uY29tbWVudCAtLXJl
bW92ZS1zZWN0aW9uPS5ub3RlIC0tcHJlc2VydmUtZGF0ZXMgJyVzJyIgJSAocGF0aHByZWZpeCwg
c3RyaXAsIGZpbGUpKQoKICAgIG5ld21vZGUgPSBOb25lCiAgICBpZiBub3Qgb3MuYWNjZXNzKGZp
bGUsIG9zLldfT0spIG9yIG9zLmFjY2VzcyhmaWxlLCBvcy5SX09LKToKICAgICAgICBvcmlnbW9k
ZSA9IG9zLnN0YXQoZmlsZSlbc3RhdC5TVF9NT0RFXQogICAgICAgIG5ld21vZGUgPSBvcmlnbW9k
ZSB8IHN0YXQuU19JV1JJVEUgfCBzdGF0LlNfSVJFQUQKICAgICAgICBvcy5jaG1vZChmaWxlLCBu
ZXdtb2RlKQoKICAgIGV4dHJhZmxhZ3MgPSAiIgogICAgIyAuc28gYW5kIHNoYXJlZCBsaWJyYXJ5
CiAgICBpZiAiLnNvIiBpbiBmaWxlIGFuZCBlbGZ0eXBlICYgODoKICAgICAgICBleHRyYWZsYWdz
ID0gIi0tcmVtb3ZlLXNlY3Rpb249LmNvbW1lbnQgLS1yZW1vdmUtc2VjdGlvbj0ubm90ZSAtLXN0
cmlwLXVubmVlZGVkIgogICAgIyBzaGFyZWQgb3IgZXhlY3V0YWJsZToKICAgIGVsaWYgZWxmdHlw
ZSAmIDggb3IgZWxmdHlwZSAmIDQ6CiAgICAgICAgZXh0cmFmbGFncyA9ICItLXJlbW92ZS1zZWN0
aW9uPS5jb21tZW50IC0tcmVtb3ZlLXNlY3Rpb249Lm5vdGUiCgogICAgc3RyaXBjbWQgPSAiJyVz
JyAlcyAnJXMnIiAlIChzdHJpcCwgZXh0cmFmbGFncywgZmlsZSkKICAgIGJiLmRlYnVnKDEsICJy
dW5zdHJpcDogJXMiICUgc3RyaXBjbWQpCgogICAgcmV0ID0gb3Muc3lzdGVtKCIlcyVzIiAlIChw
YXRocHJlZml4LCBzdHJpcGNtZCkpCgogICAgaWYgbmV3bW9kZToKICAgICAgICBvcy5jaG1vZChm
aWxlLCBvcmlnbW9kZSkKCiAgICBpZiByZXQ6CiAgICAgICAgYmIuZXJyb3IoInJ1bnN0cmlwOiAn
JXMnIHN0cmlwIGNvbW1hbmQgZmFpbGVkIiAlIHN0cmlwY21kKQoKICAgIHJldHVybiAwCn0KCgpw
eXRob24gY2hlY2tfc2FuaXR5X3ZhbGlkbWFjaGluZSAoKSB7CmRlZiBjaGVja19zYW5pdHlfdmFs
aWRtYWNoaW5lKGUpOgogICAgZnJvbSBiYiBpbXBvcnQgZGF0YQoKICAgIG1lc3NhZ2VzID0gIiIK
CiAgICAjIENoZWNrIFRVTkVfQVJDSCBpcyBzZXQKICAgIGlmIGRhdGEuZ2V0VmFyKCdUVU5FX0FS
Q0gnLCBlLmRhdGEsIFRydWUpID09ICdJTlZBTElEJzoKICAgICAgICBtZXNzYWdlcyA9IG1lc3Nh
Z2VzICsgJ1RVTkVfQVJDSCBpcyB1bnNldC4gUGxlYXNlIGVuc3VyZSB5b3VyIE1BQ0hJTkUgY29u
ZmlndXJhdGlvbiBpbmNsdWRlcyBhIHZhbGlkIHR1bmUgY29uZmlndXJhdGlvbiBmaWxlIHdoaWNo
IHdpbGwgc2V0IHRoaXMgY29ycmVjdGx5LlxuJwoKICAgICMgQ2hlY2sgVEFSR0VUX0FSQ0ggaXMg
c2V0IGNvcnJlY3RseQogICAgaWYgZGF0YS5nZXRWYXIoJ1RBUkdFX0FSQ0gnLCBlLmRhdGEsIEZh
bHNlKSA9PSAncG93ZXJwYyc6CiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICdUQVJHRVRf
QVJDSCBpcyBiZWluZyBvdmVyd3JpdHRlbiwgbGlrZWx5IGJ5IHlvdXIgTUFDSElORSBjb25maWd1
cmF0aW9uIGZpbGVzLlxuUGxlYXNlIHVzZSBhIHZhbGlkIHR1bmUgY29uZmlndXJhdGlvbiBmaWxl
IHdoaWNoIHNob3VsZCBzZXQgdGhpcyBjb3JyZWN0bHkgYXV0b21hdGljYWxseVxuYW5kIGF2b2lk
IHNldHRpbmcgdGhpcyBpbiB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uLiBTZWUgdGhlIE9FLUNv
cmUgbWFpbGluZyBsaXN0IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJwoKICAgICMgQ2hlY2sgVEFS
R0VUX09TIGlzIHNldAogICAgaWYgZGF0YS5nZXRWYXIoJ1RBUkdFVF9PUycsIGUuZGF0YSwgVHJ1
ZSkgPT0gJ0lOVkFMSUQnOgogICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAnUGxlYXNlIHNl
dCBUQVJHRVRfT1MgZGlyZWN0bHksIG9yIGNob29zZSBhIE1BQ0hJTkUgb3IgRElTVFJPIHRoYXQg
ZG9lcyBzby5cbicKCiAgICAjIENoZWNrIHRoYXQgd2UgZG9uJ3QgaGF2ZSBkdXBsaWNhdGUgZW50
cmllcyBpbiBQQUNLQUdFX0FSQ0hTICYgdGhhdCBUVU5FX1BLR0FSQ0ggaXMgaW4gUEFDS0FHRV9B
UkNIUwogICAgcGtnYXJjaHMgPSBkYXRhLmdldFZhcignUEFDS0FHRV9BUkNIUycsIGUuZGF0YSwg
VHJ1ZSkKICAgIHR1bmVwa2cgPSBkYXRhLmdldFZhcignVFVORV9QS0dBUkNIJywgZS5kYXRhLCBU
cnVlKQogICAgdHVuZWZvdW5kID0gRmFsc2UKICAgIHNlZW4gPSB7fQogICAgZHVwcyA9IFtdCgog
ICAgZm9yIHBhIGluIHBrZ2FyY2hzLnNwbGl0KCk6CiAgICAgICAgaWYgc2Vlbi5nZXQocGEsIDAp
ID09IDE6CiAgICAgICAgICAgIGR1cHMuYXBwZW5kKHBhKQogICAgICAgIGVsc2U6CiAgICAgICAg
ICAgIHNlZW5bcGFdID0gMQogICAgICAgIGlmIHBhID09IHR1bmVwa2c6CiAgICAgICAgICAgIHR1
bmVmb3VuZCA9IFRydWUKCiAgICBpZiBsZW4oZHVwcyk6CiAgICAgICBtZXNzYWdlcyA9IG1lc3Nh
Z2VzICsgIkVycm9yLCB0aGUgUEFDS0FHRV9BUkNIUyB2YXJpYWJsZSBjb250YWlucyBkdXBsaWNh
dGVzLiBUaGUgZm9sbG93aW5nIGFyY2hzIGFyZSBsaXN0ZWQgbW9yZSB0aGFuIG9uY2U6ICVzIiAl
ICIgIi5qb2luKGR1cHMpCgogICAgaWYgdHVuZWZvdW5kID09IEZhbHNlOgogICAgICAgbWVzc2Fn
ZXMgPSBtZXNzYWdlcyArICJFcnJvciwgdGhlIFBBQ0tBR0VfQVJDSFMgdmFyaWFibGUgZG9lcyBu
b3QgY29udGFpbiBUVU5FX1BLR0FSQ0ggKCVzKS4iICUgdHVuZXBrZwoKICAgIHJldHVybiBtZXNz
YWdlcwoKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2NoZWNrX2Rlc2t0b3AgKCkgewpkZWYgcGFja2Fn
ZV9xYV9jaGVja19kZXNrdG9wKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogICAgIiIi
CiAgICBSdW4gYWxsIGRlc2t0b3AgZmlsZXMgdGhyb3VnaCBkZXNrdG9wLWZpbGUtdmFsaWRhdGUu
CiAgICAiIiIKICAgIGlmIHBhdGguZW5kc3dpdGgoIi5kZXNrdG9wIik6CiAgICAgICAgZGVza3Rv
cF9maWxlX3ZhbGlkYXRlID0gb3MucGF0aC5qb2luKGJiLmRhdGEuZ2V0VmFyKCdTVEFHSU5HX0JJ
TkRJUl9OQVRJVkUnLGQsVHJ1ZSksJ2Rlc2t0b3AtZmlsZS12YWxpZGF0ZScpCiAgICAgICAgb3V0
cHV0ID0gb3MucG9wZW4oIiVzICVzIiAlIChkZXNrdG9wX2ZpbGVfdmFsaWRhdGUsIHBhdGgpKQog
ICAgICAgICMgVGhpcyBvbmx5IHByb2R1Y2VzIG91dHB1dCBvbiBlcnJvcnMKICAgICAgICBmb3Ig
bCBpbiBvdXRwdXQ6CiAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiRGVza3RvcCBmaWxlIGlz
c3VlOiAiICsgbC5zdHJpcCgpKQp9CgoKcHl0aG9uIGdldF9kaXNrc3RhdHMgKCkgewpkZWYgZ2V0
X2Rpc2tzdGF0cyhkZXYpOgogICAgaW1wb3J0IGl0ZXJ0b29scwogICAgIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwogICAgIyBGb3IgaW5mbyBvbiB3aGF0IHRoZXNlIGFyZSwgc2VlIGtlcm5lbCBkb2MgZmls
ZSBpb3N0YXRzLnR4dAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgRFNUQVRfS0VZUyA9IFsn
UmVhZHNDb21wJywgJ1JlYWRzTWVyZ2VkJywgJ1NlY3RSZWFkJywgJ1RpbWVSZWFkcycsICdXcml0
ZXNDb21wJywgJ1NlY3RXcml0ZScsICdUaW1lV3JpdGUnLCAnSU9pblByb2dyZXNzJywgJ1RpbWVJ
TycsICdXVGltZUlPJ10KICAgIGZvciB4IGluIG9wZW4oIi9wcm9jL2Rpc2tzdGF0cyIsICJyIik6
CiAgICAgICAgaWYgZGV2IGluIHg6CiAgICAgICAgICAgIGRpc2tzdGF0c192YWwgPSB4LnJzdHJp
cCgpLnNwbGl0KClbNDpdCiAgICBkaXNrc3RhdHMgPSBkaWN0KGl0ZXJ0b29scy5pemlwKERTVEFU
X0tFWVMsIGRpc2tzdGF0c192YWwpKQogICAgcmV0dXJuIGRpc2tzdGF0cwp9CgoKcHl0aG9uIGdl
dF9kZXZpY2UgKCkgewpkZWYgZ2V0X2RldmljZShlKToKICAgIGZpbGUgPSBvcGVuKGJiLmRhdGEu
Z2V0VmFyKCdERVZGSUxFJywgZS5kYXRhLCBUcnVlKSkKICAgIGRldmljZSA9IGZpbGUucmVhZGxp
bmUoKQogICAgZmlsZS5jbG9zZSgpCiAgICByZXR1cm4gZGV2aWNlCn0KCgpweXRob24gcGFja2Fn
ZV9xYV9oYXNoX3N0eWxlICgpIHsKZGVmIHBhY2thZ2VfcWFfaGFzaF9zdHlsZShwYXRoLCBuYW1l
LCBkLCBlbGYsIG1lc3NhZ2VzKToKICAgICIiIgogICAgQ2hlY2sgaWYgdGhlIGJpbmFyeSBoYXMg
dGhlIHJpZ2h0IGhhc2ggc3R5bGUuLi4KICAgICIiIgoKICAgIGlmIG5vdCBlbGY6CiAgICAgICAg
cmV0dXJuCgogICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAgICAgcmV0dXJuCgogICAg
Z251X2hhc2ggPSAiLS1oYXNoLXN0eWxlPWdudSIgaW4gYmIuZGF0YS5nZXRWYXIoJ0xERkxBR1Mn
LCBkLCBUcnVlKQogICAgaWYgbm90IGdudV9oYXNoOgogICAgICAgIGdudV9oYXNoID0gIi0taGFz
aC1zdHlsZT1ib3RoIiBpbiBiYi5kYXRhLmdldFZhcignTERGTEFHUycsIGQsIFRydWUpCiAgICBp
ZiBub3QgZ251X2hhc2g6CiAgICAgICAgcmV0dXJuCgogICAgb2JqZHVtcCA9IGJiLmRhdGEuZ2V0
VmFyKCdPQkpEVU1QJywgZCwgVHJ1ZSkKICAgIGVudl9wYXRoID0gYmIuZGF0YS5nZXRWYXIoJ1BB
VEgnLCBkLCBUcnVlKQoKICAgIHNhbmUgPSBGYWxzZQogICAgaGFzX3N5bXMgPSBGYWxzZQoKICAg
ICMgSWYgdGhpcyBiaW5hcnkgaGFzIHN5bWJvbHMsIHdlIGV4cGVjdCBpdCB0byBoYXZlIEdOVV9I
QVNIIHRvby4KICAgIGZvciBsaW5lIGluIG9zLnBvcGVuKCJMQ19BTEw9QyBQQVRIPSVzICVzIC1w
ICclcycgMj4gL2Rldi9udWxsIiAlIChlbnZfcGF0aCwgb2JqZHVtcCwgcGF0aCksICJyIik6CiAg
ICAgICAgaWYgIlNZTVRBQiIgaW4gbGluZToKICAgICAgICAgICAgaGFzX3N5bXMgPSBUcnVlCiAg
ICAgICAgaWYgIkdOVV9IQVNIIiBpbiBsaW5lOgogICAgICAgICAgICBzYW5lID0gVHJ1ZQogICAg
ICAgIGlmICJbbWlwczMyXSIgaW4gbGluZSBvciAiW21pcHM2NF0iIGluIGxpbmU6CgkgICAgc2Fu
ZSA9IFRydWUKCiAgICBpZiBoYXNfc3ltcyBhbmQgbm90IHNhbmU6CiAgICAgICAgbWVzc2FnZXMu
YXBwZW5kKCJObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJyVzJyIgJSBwYXRoKQoKfQoK
CnB5dGhvbiBiYXNlX3NldF9maWxlc3BhdGggKCkgewpkZWYgYmFzZV9zZXRfZmlsZXNwYXRoKHBh
dGgsIGQpOgoJZmlsZXNwYXRoID0gW10KCWV4dHJhcGF0aHMgPSAoYmIuZGF0YS5nZXRWYXIoIkZJ
TEVTRVhUUkFQQVRIUyIsIGQsIFRydWUpIG9yICIiKQoJIyBEb24ndCBwcmVwZW5kIGVtcHR5IHN0
cmluZ3MgdG8gdGhlIHBhdGggbGlzdAoJaWYgZXh0cmFwYXRocyAhPSAiIjoKCQlwYXRoID0gZXh0
cmFwYXRocy5zcGxpdCgiOiIpICsgcGF0aAoJIyBUaGUgIjoiIGVuc3VyZXMgd2UgaGF2ZSBhbiAn
ZW1wdHknIG92ZXJyaWRlCglvdmVycmlkZXMgPSAoYmIuZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIs
IGQsIDEpIG9yICIiKSArICI6IgoJZm9yIHAgaW4gcGF0aDoKCQlpZiBwICE9ICIiOgoJCQlmb3Ig
byBpbiBvdmVycmlkZXMuc3BsaXQoIjoiKToKCQkJCWZpbGVzcGF0aC5hcHBlbmQob3MucGF0aC5q
b2luKHAsIG8pKQoJcmV0dXJuICI6Ii5qb2luKGZpbGVzcGF0aCkKfQoKCnB5dGhvbiBwYWNrYWdl
X3FhX2NoZWNrX3VzZWxlc3NfcnBhdGhzICgpIHsKZGVmIHBhY2thZ2VfcWFfY2hlY2tfdXNlbGVz
c19ycGF0aHMoZmlsZSwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CiAgICAiIiIKICAgIENoZWNr
IGZvciBSUEFUSHMgdGhhdCBhcmUgdXNlbGVzcyBidXQgbm90IGRhbmdlcm91cwogICAgIiIiCiAg
ICBpZiBub3QgZWxmOgogICAgICAgIHJldHVybgoKICAgIG9iamR1bXAgPSBiYi5kYXRhLmdldFZh
cignT0JKRFVNUCcsIGQsIFRydWUpCiAgICBlbnZfcGF0aCA9IGJiLmRhdGEuZ2V0VmFyKCdQQVRI
JywgZCwgVHJ1ZSkKCiAgICBsaWJkaXIgPSBiYi5kYXRhLmdldFZhcigibGliZGlyIiwgZCwgVHJ1
ZSkKICAgIGJhc2VfbGliZGlyID0gYmIuZGF0YS5nZXRWYXIoImJhc2VfbGliZGlyIiwgZCwgVHJ1
ZSkKCiAgICBpbXBvcnQgcmUKICAgIHJwYXRoX3JlID0gcmUuY29tcGlsZSgiXHMrUlBBVEhccyso
LiopIikKICAgIGZvciBsaW5lIGluIG9zLnBvcGVuKCJMQ19BTEw9QyBQQVRIPSVzICVzIC1wICcl
cycgMj4gL2Rldi9udWxsIiAlIChlbnZfcGF0aCwgb2JqZHVtcCwgZmlsZSksICJyIik6CiAgICAJ
bSA9IHJwYXRoX3JlLm1hdGNoKGxpbmUpCglpZiBtOgoJICAgcnBhdGggPSBtLmdyb3VwKDEpCgkg
ICBpZiBycGF0aCA9PSBsaWJkaXIgb3IgcnBhdGggPT0gYmFzZV9saWJkaXI6CgkgICAgICAjIFRo
ZSBkeW5hbWljIGxpbmtlciBzZWFyY2hlcyBib3RoIHRoZXNlIHBsYWNlcyBhbnl3YXkuICBUaGVy
ZSBpcyBubyBwb2ludCBpbgoJICAgICAgIyBsb29raW5nIHRoZXJlIGFnYWluLgoJICAgICAgbWVz
c2FnZXMuYXBwZW5kKCIlczogJXMgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIICVz
IiAlIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgoZmlsZSwgZCksIHJwYXRoKSkKfQoKCnB5
dGhvbiBiYXNlX2RvX3VucGFjayAoKSB7CglzcmNfdXJpID0gKGJiLmRhdGEuZ2V0VmFyKCdTUkNf
VVJJJywgZCwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKCWlmIGxlbihzcmNfdXJpKSA9PSAwOgoJCXJl
dHVybgoKCWxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQoJYmIuZGF0YS51cGRhdGVf
ZGF0YShsb2NhbGRhdGEpCgoJcm9vdGRpciA9IGJiLmRhdGEuZ2V0VmFyKCdXT1JLRElSJywgbG9j
YWxkYXRhLCBUcnVlKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRj
aDIuRmV0Y2goc3JjX3VyaSwgbG9jYWxkYXRhKQogICAgICAgICAgICBmZXRjaGVyLnVucGFjayhy
b290ZGlyKQogICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbiwgZToKICAg
ICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQp9CgoKcHl0aG9uIGRvX3BvcHVs
YXRlX3N5c3Jvb3Rfc2V0c2NlbmUgKCkgewoJc3N0YXRlX3NldHNjZW5lKGQpCn0KCgpweXRob24g
YmFzZV9nZXRfc2NtYmFzZXBhdGggKCkgewpkZWYgYmFzZV9nZXRfc2NtYmFzZXBhdGgoZCk6Cgly
ZXR1cm4gYmIuZGF0YS5nZXRWYXIoICdDT1JFQkFTRScsIGQsIDEgKQp9CgoKcHl0aG9uIGNoZWNr
X3Nhbml0eV92ZXJzaW9uX2NoYW5nZSAoKSB7CmRlZiBjaGVja19zYW5pdHlfdmVyc2lvbl9jaGFu
Z2UoZGF0YSk6CiAgICAjIFNhbml0eSBjaGVja3MgdG8gYmUgZG9uZSB3aGVuIFNBTklUWV9WRVJT
SU9OIGNoYW5nZXMKICAgIHJldHVybiAiIgp9CgoKcHl0aG9uIHBhY2thZ2VfZG9fcGtnY29uZmln
ICgpIHsKCWltcG9ydCByZQoKCXBhY2thZ2VzID0gYmIuZGF0YS5nZXRWYXIoJ1BBQ0tBR0VTJywg
ZCwgVHJ1ZSkKCXdvcmtkaXIgPSBiYi5kYXRhLmdldFZhcignV09SS0RJUicsIGQsIFRydWUpCglw
a2dkZXN0ID0gYmIuZGF0YS5nZXRWYXIoJ1BLR0RFU1QnLCBkLCBUcnVlKQoKCXNobGlic19kaXIg
PSBiYi5kYXRhLmdldFZhcignU0hMSUJTRElSJywgZCwgVHJ1ZSkKCXNobGlic3dvcmtfZGlyID0g
YmIuZGF0YS5nZXRWYXIoJ1NITElCU1dPUktESVInLCBkLCBUcnVlKQoKCXBjX3JlID0gcmUuY29t
cGlsZSgnKC4qKVwucGMkJykKCXZhcl9yZSA9IHJlLmNvbXBpbGUoJyguKik9KC4qKScpCglmaWVs
ZF9yZSA9IHJlLmNvbXBpbGUoJyguKik6ICguKiknKQoKCXBrZ2NvbmZpZ19wcm92aWRlZCA9IHt9
Cglwa2djb25maWdfbmVlZGVkID0ge30KCWZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKCQlw
a2djb25maWdfcHJvdmlkZWRbcGtnXSA9IFtdCgkJcGtnY29uZmlnX25lZWRlZFtwa2ddID0gW10K
CQl0b3AgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKQoJCWZvciByb290LCBkaXJzLCBmaWxl
cyBpbiBvcy53YWxrKHRvcCk6CgkJCWZvciBmaWxlIGluIGZpbGVzOgoJCQkJbSA9IHBjX3JlLm1h
dGNoKGZpbGUpCgkJCQlpZiBtOgoJCQkJCXBkID0gYmIuZGF0YS5pbml0KCkKCQkJCQluYW1lID0g
bS5ncm91cCgxKQoJCQkJCXBrZ2NvbmZpZ19wcm92aWRlZFtwa2ddLmFwcGVuZChuYW1lKQoJCQkJ
CXBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkKCQkJCQlpZiBub3Qgb3MuYWNjZXNzKHBh
dGgsIG9zLlJfT0spOgoJCQkJCQljb250aW51ZQoJCQkJCWYgPSBvcGVuKHBhdGgsICdyJykKCQkJ
CQlsaW5lcyA9IGYucmVhZGxpbmVzKCkKCQkJCQlmLmNsb3NlKCkKCQkJCQlmb3IgbCBpbiBsaW5l
czoKCQkJCQkJbSA9IHZhcl9yZS5tYXRjaChsKQoJCQkJCQlpZiBtOgoJCQkJCQkJbmFtZSA9IG0u
Z3JvdXAoMSkKCQkJCQkJCXZhbCA9IG0uZ3JvdXAoMikKCQkJCQkJCWJiLmRhdGEuc2V0VmFyKG5h
bWUsIGJiLmRhdGEuZXhwYW5kKHZhbCwgcGQpLCBwZCkKCQkJCQkJCWNvbnRpbnVlCgkJCQkJCW0g
PSBmaWVsZF9yZS5tYXRjaChsKQoJCQkJCQlpZiBtOgoJCQkJCQkJaGRyID0gbS5ncm91cCgxKQoJ
CQkJCQkJZXhwID0gYmIuZGF0YS5leHBhbmQobS5ncm91cCgyKSwgcGQpCgkJCQkJCQlpZiBoZHIg
PT0gJ1JlcXVpcmVzJzoKCQkJCQkJCQlwa2djb25maWdfbmVlZGVkW3BrZ10gKz0gZXhwLnJlcGxh
Y2UoJywnLCAnICcpLnNwbGl0KCkKCgkjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25s
eSByZWFkaW5nLCBub3Qgd3JpdGluZwoJbGYgPSBiYi51dGlscy5sb2NrZmlsZShiYi5kYXRhLmV4
cGFuZCgiL2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAy
MHJkYl9yZWxlYXNlL3RtcC9zeXNyb290cy9wYWNrYWdlLW91dHB1dC5sb2NrIiwgZCkpCgoJZm9y
IHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgoJCXBrZ3NfZmlsZSA9IG9zLnBhdGguam9pbihzaGxp
YnN3b3JrX2RpciwgcGtnICsgIi5wY2xpc3QiKQoJCWlmIHBrZ2NvbmZpZ19wcm92aWRlZFtwa2dd
ICE9IFtdOgoJCQlmID0gb3Blbihwa2dzX2ZpbGUsICd3JykKCQkJZm9yIHAgaW4gcGtnY29uZmln
X3Byb3ZpZGVkW3BrZ106CgkJCQlmLndyaXRlKCclc1xuJyAlIHApCgkJCWYuY2xvc2UoKQoKCWZv
ciBkaXIgaW4gW3NobGlic19kaXJdOgoJCWlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXIpOgoJCQlj
b250aW51ZQoJCWZvciBmaWxlIGluIG9zLmxpc3RkaXIoZGlyKToKCQkJbSA9IHJlLm1hdGNoKCde
KC4qKVwucGNsaXN0JCcsIGZpbGUpCgkJCWlmIG06CgkJCQlwa2cgPSBtLmdyb3VwKDEpCgkJCQlm
ZCA9IG9wZW4ob3MucGF0aC5qb2luKGRpciwgZmlsZSkpCgkJCQlsaW5lcyA9IGZkLnJlYWRsaW5l
cygpCgkJCQlmZC5jbG9zZSgpCgkJCQlwa2djb25maWdfcHJvdmlkZWRbcGtnXSA9IFtdCgkJCQlm
b3IgbCBpbiBsaW5lczoKCQkJCQlwa2djb25maWdfcHJvdmlkZWRbcGtnXS5hcHBlbmQobC5yc3Ry
aXAoKSkKCglmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CgkJZGVwcyA9IFtdCgkJZm9yIG4g
aW4gcGtnY29uZmlnX25lZWRlZFtwa2ddOgoJCQlmb3VuZCA9IEZhbHNlCgkJCWZvciBrIGluIHBr
Z2NvbmZpZ19wcm92aWRlZC5rZXlzKCk6CgkJCQlpZiBuIGluIHBrZ2NvbmZpZ19wcm92aWRlZFtr
XToKCQkJCQlpZiBrICE9IHBrZyBhbmQgbm90IChrIGluIGRlcHMpOgoJCQkJCQlkZXBzLmFwcGVu
ZChrKQoJCQkJCWZvdW5kID0gVHJ1ZQoJCQlpZiBmb3VuZCA9PSBGYWxzZToKCQkJCWJiLm5vdGUo
ImNvdWxkbid0IGZpbmQgcGtnY29uZmlnIG1vZHVsZSAnJXMnIGluIGFueSBwYWNrYWdlIiAlIG4p
CgkJZGVwc19maWxlID0gb3MucGF0aC5qb2luKHBrZ2Rlc3QsIHBrZyArICIucGNkZXBzIikKCQlp
ZiBsZW4oZGVwcyk6CgkJCWZkID0gb3BlbihkZXBzX2ZpbGUsICd3JykKCQkJZm9yIGRlcCBpbiBk
ZXBzOgoJCQkJZmQud3JpdGUoZGVwICsgJ1xuJykKCQkJZmQuY2xvc2UoKQoKCWJiLnV0aWxzLnVu
bG9ja2ZpbGUobGYpCn0KCgpweXRob24gYmFzZV9ldmVudGhhbmRsZXIgKCkgewoJZnJvbSBiYiBp
bXBvcnQgbm90ZSwgZXJyb3IsIGRhdGEKCWZyb20gYmIuZXZlbnQgaW1wb3J0IGdldE5hbWUKCglt
ZXNzYWdlcyA9IHt9CgltZXNzYWdlc1siQ29tcGxldGVkIl0gPSAiY29tcGxldGVkIgoJbWVzc2Fn
ZXNbIlN1Y2NlZWRlZCJdID0gImNvbXBsZXRlZCIKCW1lc3NhZ2VzWyJTdGFydGVkIl0gPSAic3Rh
cnRlZCIKCW1lc3NhZ2VzWyJGYWlsZWQiXSA9ICJmYWlsZWQiCgoJbmFtZSA9IGdldE5hbWUoZSkK
CW1zZyA9ICIiCglpZiBuYW1lLnN0YXJ0c3dpdGgoIlBrZyIpOgoJCW1zZyArPSAicGFja2FnZSAl
czogIiAlIGRhdGEuZ2V0VmFyKCJQIiwgZS5kYXRhLCAxKQoJCW1zZyArPSBtZXNzYWdlcy5nZXQo
bmFtZVszOl0pIG9yIG5hbWVbMzpdCgllbGlmIG5hbWUuc3RhcnRzd2l0aCgiVGFzayIpOgoJCW1z
ZyArPSAicGFja2FnZSAlczogdGFzayAlczogIiAlIChkYXRhLmdldFZhcigiUEYiLCBlLmRhdGEs
IDEpLCBlLnRhc2spCgkJbXNnICs9IG1lc3NhZ2VzLmdldChuYW1lWzQ6XSkgb3IgbmFtZVs0Ol0K
CWVsaWYgbmFtZS5zdGFydHN3aXRoKCJCdWlsZCIpOgoJCW1zZyArPSAiYnVpbGQgJXM6ICIgJSBl
Lm5hbWUKCQltc2cgKz0gbWVzc2FnZXMuZ2V0KG5hbWVbNTpdKSBvciBuYW1lWzU6XQoJZWxpZiBu
YW1lID09ICJVbnNhdGlzZmllZERlcCI6CgkJbXNnICs9ICJwYWNrYWdlICVzOiBkZXBlbmRlbmN5
ICVzICVzIiAlIChlLnBrZywgZS5kZXAsIG5hbWVbOi0zXS5sb3dlcigpKQoKCSMgT25seSBuZWVk
IHRvIG91dHB1dCB3aGVuIHVzaW5nIDEuOCBvciBsb3dlciwgdGhlIFVJIGNvZGUgaGFuZGxlcyBp
dAoJIyBvdGhlcndpc2UKCWlmIChpbnQoYmIuX192ZXJzaW9uX18uc3BsaXQoIi4iKVswXSkgPD0g
MSBhbmQgaW50KGJiLl9fdmVyc2lvbl9fLnNwbGl0KCIuIilbMV0pIDw9IDgpOgoJCWlmIG1zZzoK
CQkJbm90ZShtc2cpCgoJaWYgbmFtZS5zdGFydHN3aXRoKCJCdWlsZFN0YXJ0ZWQiKToKCQliYi5k
YXRhLnNldFZhciggJ0JCX1ZFUlNJT04nLCBiYi5fX3ZlcnNpb25fXywgZS5kYXRhICkKCQlzdGF0
dXN2YXJzID0gWydCQl9WRVJTSU9OJywgJ1RBUkdFVF9BUkNIJywgJ1RBUkdFVF9PUycsICdNQUNI
SU5FJywgJ0RJU1RSTycsICdESVNUUk9fVkVSU0lPTicsJ1RVTkVfRkVBVFVSRVMnLCAnVEFSR0VU
X0ZQVSddCgkJc3RhdHVzbGluZXMgPSBbIiUtMTdzID0gXCIlc1wiIiAlIChpLCBiYi5kYXRhLmdl
dFZhcihpLCBlLmRhdGEsIDEpIG9yICcnKSBmb3IgaSBpbiBzdGF0dXN2YXJzXQoKCQlsYXllcnMg
PSAoZGF0YS5nZXRWYXIoIkJCTEFZRVJTIiwgZS5kYXRhLCAxKSBvciAiIikuc3BsaXQoKQoJCWxh
eWVyc19icmFuY2hfcmV2ID0gWyIlLTE3cyA9IFwiJXM6JXNcIiIgJSAob3MucGF0aC5iYXNlbmFt
ZShpKSwgXAoJCQliYXNlX2dldF9tZXRhZGF0YV9naXRfYnJhbmNoKGksIE5vbmUpLnN0cmlwKCks
IFwKCQkJYmFzZV9nZXRfbWV0YWRhdGFfZ2l0X3JldmlzaW9uKGksIE5vbmUpKSBcCgkJCQlmb3Ig
aSBpbiBsYXllcnNdCgkJaSA9IGxlbihsYXllcnNfYnJhbmNoX3JldiktMQoJCXAxID0gbGF5ZXJz
X2JyYW5jaF9yZXZbaV0uZmluZCgiPSIpCgkJczE9IGxheWVyc19icmFuY2hfcmV2W2ldW3AxOl0K
CQl3aGlsZSBpID4gMDoKCQkJcDIgPSBsYXllcnNfYnJhbmNoX3JldltpLTFdLmZpbmQoIj0iKQoJ
CQlzMj0gbGF5ZXJzX2JyYW5jaF9yZXZbaS0xXVtwMjpdCgkJCWlmIHMxID09IHMyOgoJCQkJbGF5
ZXJzX2JyYW5jaF9yZXZbaS0xXSA9IGxheWVyc19icmFuY2hfcmV2W2ktMV1bMDpwMl0KCQkJCWkg
LT0gMQoJCQllbHNlOgoJCQkJaSAtPSAxCgkJCQlwMSA9IGxheWVyc19icmFuY2hfcmV2W2ldLmZp
bmQoIj0iKQoJCQkJczE9IGxheWVyc19icmFuY2hfcmV2W2ldW3AxOl0KCgkJc3RhdHVzbGluZXMg
Kz0gbGF5ZXJzX2JyYW5jaF9yZXYKCQlzdGF0dXNtc2cgPSAiXG5PRSBCdWlsZCBDb25maWd1cmF0
aW9uOlxuJXNcbiIgJSAnXG4nLmpvaW4oc3RhdHVzbGluZXMpCgkJcHJpbnQgc3RhdHVzbXNnCgoJ
CW5lZWRlZF92YXJzID0gWyAiVEFSR0VUX0FSQ0giLCAiVEFSR0VUX09TIiBdCgkJcGVzdGVydXNl
ciA9IFtdCgkJZm9yIHYgaW4gbmVlZGVkX3ZhcnM6CgkJCXZhbCA9IGJiLmRhdGEuZ2V0VmFyKHYs
IGUuZGF0YSwgMSkKCQkJaWYgbm90IHZhbCBvciB2YWwgPT0gJ0lOVkFMSUQnOgoJCQkJcGVzdGVy
dXNlci5hcHBlbmQodikKCQlpZiBwZXN0ZXJ1c2VyOgoJCQliYi5mYXRhbCgnVGhlIGZvbGxvd2lu
ZyB2YXJpYWJsZShzKSB3ZXJlIG5vdCBzZXQ6ICVzXG5QbGVhc2Ugc2V0IHRoZW0gZGlyZWN0bHks
IG9yIGNob29zZSBhIE1BQ0hJTkUgb3IgRElTVFJPIHRoYXQgc2V0cyB0aGVtLicgJSAnLCAnLmpv
aW4ocGVzdGVydXNlcikpCgogICAgICAgIGlmIG5hbWUgPT0gIkNvbmZpZ1BhcnNlZCI6CiAgICAg
ICAgICAgICAgICBnZW5lcmF0ZV9naXRfY29uZmlnKGUpCiAgICAgICAgICAgICAgICBwa2dhcmNo
X21hcHBpbmcoZS5kYXRhKQogICAgICAgICAgICAgICAgcHJlZmVycmVkX21sX3VwZGF0ZXMoZS5k
YXRhKQoKCWlmIG5vdCBkYXRhIGluIGUuX19kaWN0X186CgkJcmV0dXJuCgoJbG9nID0gZGF0YS5n
ZXRWYXIoIkVWRU5UTE9HIiwgZS5kYXRhLCAxKQoJaWYgbG9nOgoJCWxvZ2ZpbGUgPSBmaWxlKGxv
ZywgImEiKQoJCWxvZ2ZpbGUud3JpdGUoIiVzXG4iICUgbXNnKQoJCWxvZ2ZpbGUuY2xvc2UoKQp9
CgoKcHl0aG9uIHNzdGF0ZV9pbml0ICgpIHsKZGVmIHNzdGF0ZV9pbml0KG5hbWUsIHRhc2ssIGQp
OgogICAgc3MgPSB7fQogICAgc3NbJ3Rhc2snXSA9IHRhc2sKICAgIHNzWyduYW1lJ10gPSBuYW1l
CiAgICBzc1snZGlycyddID0gW10KICAgIHNzWydwbGFpbmRpcnMnXSA9IFtdCiAgICBzc1snbG9j
a2ZpbGVzJ10gPSBbXQogICAgc3NbJ2xvY2tmaWxlcy1zaGFyZWQnXSA9IFtdCiAgICByZXR1cm4g
c3MKfQoKCnB5dGhvbiBiYXNlX2NvbnRhaW5zICgpIHsKZGVmIGJhc2VfY29udGFpbnModmFyaWFi
bGUsIGNoZWNrdmFsdWVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgogICAgcmV0dXJuIG9l
LnV0aWxzLmNvbnRhaW5zKHZhcmlhYmxlLCBjaGVja3ZhbHVlcywgdHJ1ZXZhbHVlLCBmYWxzZXZh
bHVlLCBkKQp9CgoKcHl0aG9uIHNzdGF0ZV9jbGVhbiAoKSB7CmRlZiBzc3RhdGVfY2xlYW4oc3Ms
IGQpOgogICAgaW1wb3J0IG9lLnBhdGgKCiAgICBtYW5pZmVzdCA9IGJiLmRhdGEuZXhwYW5kKCIv
bG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRiX3Jl
bGVhc2UvdG1wL3NzdGF0ZS1jb250cm9sL21hbmlmZXN0LXAxMDIwcmRiLWZzbC1pbWFnZS1zaW1w
bGUuJXMiICUgc3NbJ25hbWUnXSwgZCkKCiAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6
CiAgICAgICAgbG9ja3MgPSBbXQogICAgICAgIGZvciBsb2NrIGluIHNzWydsb2NrZmlsZXMtc2hh
cmVkJ106CiAgICAgICAgICAgIGxvY2tzLmFwcGVuZChiYi51dGlscy5sb2NrZmlsZShsb2NrKSkK
ICAgICAgICBmb3IgbG9jayBpbiBzc1snbG9ja2ZpbGVzJ106CiAgICAgICAgICAgIGxvY2tzLmFw
cGVuZChiYi51dGlscy5sb2NrZmlsZShsb2NrKSkKCiAgICAgICAgc3N0YXRlX2NsZWFuX21hbmlm
ZXN0KG1hbmlmZXN0LCBkKQoKICAgICAgICBmb3IgbG9jayBpbiBsb2NrczoKICAgICAgICAgICAg
YmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQoKICAgIHN0ZmlsZSA9IGQuZ2V0VmFyKCJTVEFNUCIs
IFRydWUpICsgIi5kb18iICsgc3NbJ3Rhc2snXQogICAgZXh0cmFpbmYgPSBkLmdldFZhckZsYWco
ImRvXyIgKyBzc1sndGFzayddLCAnc3RhbXAtZXh0cmEtaW5mbycsIFRydWUpCiAgICBvZS5wYXRo
LnJlbW92ZShzdGZpbGUpCiAgICBvZS5wYXRoLnJlbW92ZShzdGZpbGUgKyAiX3NldHNjZW5lIikK
ICAgIGlmIGV4dHJhaW5mOgogICAgICAgIG9lLnBhdGgucmVtb3ZlKHN0ZmlsZSArICIuKiIgKyBl
eHRyYWluZikKICAgICAgICBvZS5wYXRoLnJlbW92ZShzdGZpbGUgKyAiX3NldHNjZW5lIiArICIu
KiIgKyBleHRyYWluZikKICAgIGVsc2U6CiAgICAgICAgb2UucGF0aC5yZW1vdmUoc3RmaWxlICsg
Ii4qIikKICAgICAgICBvZS5wYXRoLnJlbW92ZShzdGZpbGUgKyAiX3NldHNjZW5lIiArICIuKiIp
Cn0KCgpweXRob24gZW1pdF9wa2dkYXRhICgpIHsKCWZyb20gZ2xvYiBpbXBvcnQgZ2xvYgoKCWRl
ZiB3cml0ZV9pZl9leGlzdHMoZiwgcGtnLCB2YXIpOgoJCWRlZiBlbmNvZGUoc3RyKToKCQkJaW1w
b3J0IGNvZGVjcwoJCQljID0gY29kZWNzLmdldGVuY29kZXIoInN0cmluZ19lc2NhcGUiKQoJCQly
ZXR1cm4gYyhzdHIpWzBdCgoJCXZhbCA9IGJiLmRhdGEuZ2V0VmFyKCclc18lcycgJSAodmFyLCBw
a2cpLCBkLCBUcnVlKQoJCWlmIHZhbDoKCQkJZi53cml0ZSgnJXNfJXM6ICVzXG4nICUgKHZhciwg
cGtnLCBlbmNvZGUodmFsKSkpCgkJCXJldHVybgoJCXZhbCA9IGJiLmRhdGEuZ2V0VmFyKCclcycg
JSAodmFyKSwgZCwgVHJ1ZSkKCQlpZiB2YWw6CgkJCWYud3JpdGUoJyVzOiAlc1xuJyAlICh2YXIs
IGVuY29kZSh2YWwpKSkKCQlyZXR1cm4KCglwYWNrYWdlcyA9IGJiLmRhdGEuZ2V0VmFyKCdQQUNL
QUdFUycsIGQsIFRydWUpCglwa2dkZXN0ID0gYmIuZGF0YS5nZXRWYXIoJ1BLR0RFU1QnLCBkLCAx
KQoJcGtnZGF0YWRpciA9IGJiLmRhdGEuZ2V0VmFyKCdQS0dERVNUV09SSycsIGQsIFRydWUpCgoJ
IyBUYWtlIHNoYXJlZCBsb2NrIHNpbmNlIHdlJ3JlIG9ubHkgcmVhZGluZywgbm90IHdyaXRpbmcK
CWxmID0gYmIudXRpbHMubG9ja2ZpbGUoYmIuZGF0YS5leHBhbmQoIi9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAvc3lzcm9v
dHMvcGFja2FnZS1vdXRwdXQubG9jayIsIGQpLCBUcnVlKQoKCWRhdGFfZmlsZSA9IHBrZ2RhdGFk
aXIgKyBiYi5kYXRhLmV4cGFuZCgiL2ZzbC1pbWFnZS1zaW1wbGUiICwgZCkKCWYgPSBvcGVuKGRh
dGFfZmlsZSwgJ3cnKQoJZi53cml0ZSgiUEFDS0FHRVM6ICVzXG4iICUgcGFja2FnZXMpCglmLmNs
b3NlKCkKCgl3b3JrZGlyID0gYmIuZGF0YS5nZXRWYXIoJ1dPUktESVInLCBkLCBUcnVlKQoKCWZv
ciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKCQlzdWJkYXRhX2ZpbGUgPSBwa2dkYXRhZGlyICsg
Ii9ydW50aW1lLyVzIiAlIHBrZwoKCQlzZiA9IG9wZW4oc3ViZGF0YV9maWxlLCAndycpCgkJd3Jp
dGVfaWZfZXhpc3RzKHNmLCBwa2csICdQTicpCgkJd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdQ
VicpCgkJd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdQUicpCgkJd3JpdGVfaWZfZXhpc3RzKHNm
LCBwa2csICdQS0dWJykKCQl3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ1BLR1InKQoJCXdyaXRl
X2lmX2V4aXN0cyhzZiwgcGtnLCAnREVTQ1JJUFRJT04nKQoJCXdyaXRlX2lmX2V4aXN0cyhzZiwg
cGtnLCAnU1VNTUFSWScpCgkJd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdSREVQRU5EUycpCgkJ
d3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdSUFJPVklERVMnKQoJCXdyaXRlX2lmX2V4aXN0cyhz
ZiwgcGtnLCAnUlJFQ09NTUVORFMnKQoJCXdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnUlNVR0dF
U1RTJykKCQl3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ1JSRVBMQUNFUycpCgkJd3JpdGVfaWZf
ZXhpc3RzKHNmLCBwa2csICdSQ09ORkxJQ1RTJykKCQl3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywg
J1NFQ1RJT04nKQoJCXdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnUEtHJykKCQl3cml0ZV9pZl9l
eGlzdHMoc2YsIHBrZywgJ0FMTE9XX0VNUFRZJykKCQl3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywg
J0ZJTEVTJykKCQl3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wb3N0aW5zdCcpCgkJd3Jp
dGVfaWZfZXhpc3RzKHNmLCBwa2csICdwa2dfcG9zdHJtJykKCQl3cml0ZV9pZl9leGlzdHMoc2Ys
IHBrZywgJ3BrZ19wcmVpbnN0JykKCQl3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wcmVy
bScpCgkJd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdGSUxFUlBST1ZJREVTRkxJU1QnKQoJCWZv
ciBkZmlsZSBpbiAoYmIuZGF0YS5nZXRWYXIoJ0ZJTEVSUFJPVklERVNGTElTVF8nICsgcGtnLCBk
LCBUcnVlKSBvciAiIikuc3BsaXQoKToKCQkJd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdGSUxF
UlBST1ZJREVTXycgKyBkZmlsZSkKCgkJd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdGSUxFUkRF
UEVORFNGTElTVCcpCgkJZm9yIGRmaWxlIGluIChiYi5kYXRhLmdldFZhcignRklMRVJERVBFTkRT
RkxJU1RfJyArIHBrZywgZCwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCk6CgkJCXdyaXRlX2lmX2V4aXN0
cyhzZiwgcGtnLCAnRklMRVJERVBFTkRTXycgKyBkZmlsZSkKCgkJc2YuY2xvc2UoKQoKCgkJYWxs
b3dfZW1wdHkgPSBiYi5kYXRhLmdldFZhcignQUxMT1dfRU1QVFlfJXMnICUgcGtnLCBkLCBUcnVl
KQoJCWlmIG5vdCBhbGxvd19lbXB0eToKCQkJYWxsb3dfZW1wdHkgPSBiYi5kYXRhLmdldFZhcign
QUxMT1dfRU1QVFknLCBkLCBUcnVlKQoJCXJvb3QgPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBrZykK
CQlvcy5jaGRpcihyb290KQoJCWcgPSBnbG9iKCcqJykKCQlpZiBnIG9yIGFsbG93X2VtcHR5ID09
ICIxIjoKCQkJcGFja2FnZWRmaWxlID0gcGtnZGF0YWRpciArICcvcnVudGltZS8lcy5wYWNrYWdl
ZCcgJSBwa2cKCQkJZmlsZShwYWNrYWdlZGZpbGUsICd3JykuY2xvc2UoKQoKCWJiLnV0aWxzLnVu
bG9ja2ZpbGUobGYpCn0KCgpweXRob24gcGFja2FnZV9xYV9jaGVja19kYmcgKCkgewpkZWYgcGFj
a2FnZV9xYV9jaGVja19kYmcocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CiAgICAiIiIK
ICAgIENoZWNrIGZvciAiLmRlYnVnIiBmaWxlcyBvciBkaXJlY3RvcmllcyBvdXRzaWRlIG9mIHRo
ZSBkYmcgcGFja2FnZQogICAgIiIiCgogICAgaWYgbm90ICItZGJnIiBpbiBuYW1lOgogICAgICAg
IGlmICcuZGVidWcnIGluIHBhdGguc3BsaXQob3MucGF0aC5zZXApOgogICAgICAgICAgICBtZXNz
YWdlcy5hcHBlbmQoIm5vbiBkZWJ1ZyBwYWNrYWdlIGNvbnRhaW5zIC5kZWJ1ZyBkaXJlY3Rvcnk6
ICVzIHBhdGggJXMiICUgXAogICAgICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9j
bGVhbl9wYXRoKHBhdGgsZCkpKQp9CgoKcHl0aG9uIHBhY2thZ2VfZG9fZmlsZWRlcHMgKCkgewoJ
aW1wb3J0IG9zLCByZQoKCXBrZ2Rlc3QgPSBiYi5kYXRhLmdldFZhcignUEtHREVTVCcsIGQsIFRy
dWUpCglwYWNrYWdlcyA9IGJiLmRhdGEuZ2V0VmFyKCdQQUNLQUdFUycsIGQsIFRydWUpCgoJcnBt
ZGVwcyA9IGJiLmRhdGEuZXhwYW5kKCIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91
c3IvbGliL3JwbS9iaW4vcnBtZGVwcyAgLS1kZWZpbmUgJ19ycG1mY19tYWdpY19wYXRoIC9sb2Nh
bC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFz
ZS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9taXNjL21hZ2ljLm1nYyciLCBk
KQoJciA9IHJlLmNvbXBpbGUocidbPD49XSsgK1teIF0qJykKCgkjIFF1aWNrIHJvdXRpbmUgdG8g
cHJvY2VzcyB0aGUgcmVzdWx0cyBvZiB0aGUgcnBtZGVwcyBjYWxsLi4uCglkZWYgcHJvY2Vzc19k
ZXBzKHBpcGUsIHBrZywgZiwgcHJvdmlkZXNfZmlsZXMsIHJlcXVpcmVzX2ZpbGVzKToKCQlwcm92
aWRlcyA9IFtdCgkJcmVxdWlyZXMgPSBbXQoJCWZpbGUgPSBmLnJlcGxhY2UocGtnZGVzdCArICIv
IiArIHBrZywgIiIpCgkJZmlsZSA9IGZpbGUucmVwbGFjZSgiQCIsICJAYXRAIikKCQlmaWxlID0g
ZmlsZS5yZXBsYWNlKCIgIiwgIkBzcGFjZUAiKQoJCWZpbGUgPSBmaWxlLnJlcGxhY2UoIlx0Iiwg
IkB0YWJAIikKCQlmaWxlID0gZmlsZS5yZXBsYWNlKCJbIiwgIkBvcGVuYnJhY2VAIikKCQlmaWxl
ID0gZmlsZS5yZXBsYWNlKCJdIiwgIkBjbG9zZWJyYWNlQCIpCgkJZmlsZSA9IGZpbGUucmVwbGFj
ZSgiXyIsICJAdW5kZXJzY29yZUAiKQoKCQlmb3IgbGluZSBpbiBwaXBlOgoJCQlpZiBsaW5lLnN0
YXJ0c3dpdGgoIlJlcXVpcmVzOiIpOgoJCQkJaSA9IHJlcXVpcmVzCgkJCWVsaWYgbGluZS5zdGFy
dHN3aXRoKCJQcm92aWRlczoiKToKCQkJCWkgPSBwcm92aWRlcwoJCQllbHNlOgoJCQkJY29udGlu
dWUKCQkJdmFsdWUgPSBsaW5lLnNwbGl0KCI6IiwgMSlbMV0uc3RyaXAoKQoJCQl2YWx1ZSA9IHIu
c3ViKHInKFxnPDA+KScsIHZhbHVlKQoJCQlpZiB2YWx1ZS5zdGFydHN3aXRoKCJycG1saWIoIik6
CgkJCQljb250aW51ZQoJCQlpLmFwcGVuZCh2YWx1ZSkKCgkJaWYgbGVuKHByb3ZpZGVzKSA+IDA6
CgkJCXByb3ZpZGVzX2ZpbGVzLmFwcGVuZChmaWxlKQoJCQlrZXkgPSAiRklMRVJQUk9WSURFU18i
ICsgZmlsZSArICJfIiArIHBrZwoJCQliYi5kYXRhLnNldFZhcihrZXksICIgIi5qb2luKHByb3Zp
ZGVzKSwgZCkKCgkJaWYgbGVuKHJlcXVpcmVzKSA+IDA6CgkJCXJlcXVpcmVzX2ZpbGVzLmFwcGVu
ZChmaWxlKQoJCQlrZXkgPSAiRklMRVJERVBFTkRTXyIgKyBmaWxlICsgIl8iICsgcGtnCgkJCWJi
LmRhdGEuc2V0VmFyKGtleSwgIiAiLmpvaW4ocmVxdWlyZXMpLCBkKQoKCSMgRGV0ZXJtaW5lIGRl
cGVuZGVuY2llcwoJZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgoJCWlmIHBrZy5lbmRzd2l0
aCgnLWRiZycpIG9yIHBrZy5lbmRzd2l0aCgnLWRvYycpIG9yIHBrZy5maW5kKCctbG9jYWxlLScp
ICE9IC0xIG9yIHBrZy5maW5kKCctbG9jYWxlZGF0YS0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWdj
b252LScpICE9IC0xIG9yIHBrZy5maW5kKCctY2hhcm1hcC0nKSAhPSAtMSBvciBwa2cuc3RhcnRz
d2l0aCgna2VybmVsLW1vZHVsZS0nKToKCQkJY29udGludWUKCgkJcHJvdmlkZXNfZmlsZXMgPSBb
XQoJCXJlcXVpcmVzX2ZpbGVzID0gW10KCQlmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fs
ayhwa2dkZXN0ICsgIi8iICsgcGtnKToKCQkJZm9yIGZpbGUgaW4gZmlsZXM6CgkJCQlmID0gb3Mu
cGF0aC5qb2luKHJvb3QsIGZpbGUpCgoJCQkJZGVwX3BpcGUgPSBvcy5wb3BlbihycG1kZXBzICsg
IiAtLXByb3ZpZGVzIC0tcmVxdWlyZXMgLXYgIiArIGYpCgoJCQkJcHJvY2Vzc19kZXBzKGRlcF9w
aXBlLCBwa2csIGYsIHByb3ZpZGVzX2ZpbGVzLCByZXF1aXJlc19maWxlcykKCgkJYmIuZGF0YS5z
ZXRWYXIoIkZJTEVSREVQRU5EU0ZMSVNUXyIgKyBwa2csICIgIi5qb2luKHJlcXVpcmVzX2ZpbGVz
KSwgZCkKCQliYi5kYXRhLnNldFZhcigiRklMRVJQUk9WSURFU0ZMSVNUXyIgKyBwa2csICIgIi5q
b2luKHByb3ZpZGVzX2ZpbGVzKSwgZCkKfQoKCnB5dGhvbiBiYXNlX2dldF9tZXRhZGF0YV9naXRf
cmV2aXNpb24gKCkgewpkZWYgYmFzZV9nZXRfbWV0YWRhdGFfZ2l0X3JldmlzaW9uKHBhdGgsIGQp
OgoJZiA9IG9zLnBvcGVuKCJjZCAlczsgZ2l0IGxvZyAtbiAxIC0tcHJldHR5PW9uZWxpbmUgLS0g
Mj4mMSIgJSBwYXRoKQoJZGF0YSA9IGYucmVhZCgpCglpZiBmLmNsb3NlKCkgaXMgTm9uZToKCQly
ZXYgPSBkYXRhLnNwbGl0KCIgIilbMF0KCQlpZiBsZW4ocmV2KSAhPSAwOgoJCQlyZXR1cm4gcmV2
CglyZXR1cm4gIjx1bmtub3duPiIKfQoKCnB5dGhvbiByYWlzZV9zYW5pdHlfZXJyb3IgKCkgewpk
ZWYgcmFpc2Vfc2FuaXR5X2Vycm9yKG1zZyk6CiAgICBiYi5mYXRhbCgiIiIgUG9reSdzIGNvbmZp
ZyBzYW5pdHkgY2hlY2tlciBkZXRlY3RlZCBhIHBvdGVudGlhbCBtaXNjb25maWd1cmF0aW9uLgog
ICAgRWl0aGVyIGZpeCB0aGUgY2F1c2Ugb2YgdGhpcyBlcnJvciBvciBhdCB5b3VyIG93biByaXNr
IGRpc2FibGUgdGhlIGNoZWNrZXIgKHNlZSBzYW5pdHkuY29uZikuCiAgICBGb2xsb3dpbmcgaXMg
dGhlIGxpc3Qgb2YgcG90ZW50aWFsIHByb2JsZW1zIC8gYWR2aXNvcmllczoKCiAgICAlcyIiIiAl
IG1zZykKfQoKCnB5dGhvbiBiYXNlX2RldGVjdF9icmFuY2ggKCkgewpkZWYgYmFzZV9kZXRlY3Rf
YnJhbmNoKGQpOgoJcGF0aCA9IGJhc2VfZ2V0X3NjbWJhc2VwYXRoKGQpCgoJc2NtcyA9IFtiYXNl
X2dldF9tZXRhZGF0YV9naXRfYnJhbmNoXQoKCWZvciBzY20gaW4gc2NtczoKCQlyZXYgPSBzY20o
cGF0aCwgZCkKCQlpZiByZXYgPD4gIjx1bmtub3duPiI6CgkJCXJldHVybiByZXYuc3RyaXAoKQoK
CXJldHVybiAiPHVua25vd24+Igp9CgoKcHl0aG9uIGRlYmlhbl9wYWNrYWdlX25hbWVfaG9vayAo
KSB7CglpbXBvcnQgZ2xvYiwgY29weSwgc3RhdCwgZXJybm8sIHJlCgoJcGtnZGVzdCA9IGJiLmRh
dGEuZ2V0VmFyKCdQS0dERVNUJywgZCwgMSkKCXBhY2thZ2VzID0gYmIuZGF0YS5nZXRWYXIoJ1BB
Q0tBR0VTJywgZCwgMSkKCWJpbl9yZSA9IHJlLmNvbXBpbGUoIi4qL3M/IiArIG9zLnBhdGguYmFz
ZW5hbWUoZC5nZXRWYXIoImJpbmRpciIsIFRydWUpKSArICIkIikKCWxpYl9yZSA9IHJlLmNvbXBp
bGUoIi4qLyIgKyBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJsaWJkaXIiLCBUcnVlKSkgKyAi
JCIpCglzb19yZSA9IHJlLmNvbXBpbGUoImxpYi4qXC5zbyIpCgoJZGVmIHNvY3J1bmNoKHMpOgoJ
CXMgPSBzLmxvd2VyKCkucmVwbGFjZSgnXycsICctJykKCQltID0gcmUubWF0Y2goIl4oLiopKC4p
XC5zb1wuKC4qKSQiLCBzKQoJCWlmIG0gaXMgTm9uZToKCQkJcmV0dXJuIE5vbmUKCQlpZiBtLmdy
b3VwKDIpIGluICcwMTIzNDU2Nzg5JzoKCQkJYmluID0gJyVzJXMtJXMnICUgKG0uZ3JvdXAoMSks
IG0uZ3JvdXAoMiksIG0uZ3JvdXAoMykpCgkJZWxzZToKCQkJYmluID0gbS5ncm91cCgxKSArIG0u
Z3JvdXAoMikgKyBtLmdyb3VwKDMpCgkJZGV2ID0gbS5ncm91cCgxKSArIG0uZ3JvdXAoMikKCQly
ZXR1cm4gKGJpbiwgZGV2KQoKCWRlZiBpc2V4ZWMocGF0aCk6CgkJdHJ5OgoJCQlzID0gb3Muc3Rh
dChwYXRoKQoJCWV4Y2VwdCAob3MuZXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKCQkJcmV0dXJuIDAK
CQlyZXR1cm4gKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JRVhFQykKCglkZWYgYXV0b19saWJu
YW1lKHBhY2thZ2VzLCBvcmlnX3BrZyk6CgkJc29uYW1lcyA9IFtdCgkJaGFzX2JpbnMgPSAwCgkJ
aGFzX2xpYnMgPSAwCgkJcGtnX2RpciA9IG9zLnBhdGguam9pbihwa2dkZXN0LCBvcmlnX3BrZykK
CQlmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhwa2dfZGlyKToKCQkJaWYgYmluX3Jl
Lm1hdGNoKHJvb3QpIGFuZCBmaWxlczoKCQkJCWhhc19iaW5zID0gMQoJCQlpZiBsaWJfcmUubWF0
Y2gocm9vdCkgYW5kIGZpbGVzOgoJCQkJaGFzX2xpYnMgPSAxCgkJCQlmb3IgZiBpbiBmaWxlczoK
CQkJCQlpZiBzb19yZS5tYXRjaChmKToKCQkJCQkJZnAgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikK
CQkJCQkJY21kID0gKGJiLmRhdGEuZ2V0VmFyKCdCVUlMRF9QUkVGSVgnLCBkLCAxKSBvciAiIikg
KyAib2JqZHVtcCAtcCAiICsgZnAgKyAiIDI+L2Rldi9udWxsIgoJCQkJCQlmZCA9IG9zLnBvcGVu
KGNtZCkKCQkJCQkJbGluZXMgPSBmZC5yZWFkbGluZXMoKQoJCQkJCQlmZC5jbG9zZSgpCgkJCQkJ
CWZvciBsIGluIGxpbmVzOgoJCQkJCQkJbSA9IHJlLm1hdGNoKCJccytTT05BTUVccysoW15cc10q
KSIsIGwpCgkJCQkJCQlpZiBtIGFuZCBub3QgbS5ncm91cCgxKSBpbiBzb25hbWVzOgoJCQkJCQkJ
CXNvbmFtZXMuYXBwZW5kKG0uZ3JvdXAoMSkpCgoJCWJiLmRlYnVnKDEsICdMSUJOQU1FUzogcGtn
ICVzIGxpYnMgJWQgYmlucyAlZCBzb25hbWVzICVzJyAlIChvcmlnX3BrZywgaGFzX2xpYnMsIGhh
c19iaW5zLCBzb25hbWVzKSkKCQlzb25hbWUgPSBOb25lCgkJaWYgbGVuKHNvbmFtZXMpID09IDE6
CgkJCXNvbmFtZSA9IHNvbmFtZXNbMF0KCQllbGlmIGxlbihzb25hbWVzKSA+IDE6CgkJCWxlYWQg
PSBiYi5kYXRhLmdldFZhcignTEVBRF9TT05BTUUnLCBkLCAxKQoJCQlpZiBsZWFkOgoJCQkJciA9
IHJlLmNvbXBpbGUobGVhZCkKCQkJCWZpbHRlcmVkID0gW10KCQkJCWZvciBzIGluIHNvbmFtZXM6
CgkJCQkJaWYgci5tYXRjaChzKToKCQkJCQkJZmlsdGVyZWQuYXBwZW5kKHMpCgkJCQlpZiBsZW4o
ZmlsdGVyZWQpID09IDE6CgkJCQkJc29uYW1lID0gZmlsdGVyZWRbMF0KCQkJCWVsaWYgbGVuKGZp
bHRlcmVkKSA+IDE6CgkJCQkJYmIubm90ZSgiTXVsdGlwbGUgbWF0Y2hlcyAoJXMpIGZvciBMRUFE
X1NPTkFNRSAnJXMnIiAlICgiLCAiLmpvaW4oZmlsdGVyZWQpLCBsZWFkKSkKCQkJCWVsc2U6CgkJ
CQkJYmIubm90ZSgiTXVsdGlwbGUgbGlicmFyaWVzICglcykgZm91bmQsIGJ1dCBMRUFEX1NPTkFN
RSAnJXMnIGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZW0iICUgKCIsICIuam9pbihzb25hbWVzKSwg
bGVhZCkpCgkJCWVsc2U6CgkJCQliYi5ub3RlKCJNdWx0aXBsZSBsaWJyYXJpZXMgKCVzKSBmb3Vu
ZCBhbmQgTEVBRF9TT05BTUUgbm90IGRlZmluZWQiICUgIiwgIi5qb2luKHNvbmFtZXMpKQoKCQlp
ZiBoYXNfbGlicyBhbmQgbm90IGhhc19iaW5zIGFuZCBzb25hbWU6CgkJCXNvbmFtZV9yZXN1bHQg
PSBzb2NydW5jaChzb25hbWUpCgkJCWlmIHNvbmFtZV9yZXN1bHQ6CgkJCQkocGtnbmFtZSwgZGV2
bmFtZSkgPSBzb25hbWVfcmVzdWx0CgkJCQlmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CgkJ
CQkJaWYgKGJiLmRhdGEuZ2V0VmFyKCdQS0dfJyArIHBrZywgZCkgb3IgYmIuZGF0YS5nZXRWYXIo
J0RFQklBTl9OT0FVVE9OQU1FXycgKyBwa2csIGQpKToKCQkJCQkJY29udGludWUKCQkJCQlkZWJp
YW5fcG4gPSBiYi5kYXRhLmdldFZhcignREVCSUFOTkFNRV8nICsgcGtnLCBkKQoJCQkJCWlmIGRl
Ymlhbl9wbjoKCQkJCQkJbmV3cGtnID0gZGViaWFuX3BuCgkJCQkJZWxpZiBwa2cgPT0gb3JpZ19w
a2c6CgkJCQkJCW5ld3BrZyA9IHBrZ25hbWUKCQkJCQllbHNlOgoJCQkJCQluZXdwa2cgPSBwa2cu
cmVwbGFjZShvcmlnX3BrZywgZGV2bmFtZSwgMSkKCQkJCQltbHByZT1iYi5kYXRhLmdldFZhcign
TUxQUkVGSVgnLCBkLCBUcnVlKQoJCQkJCWlmIG1scHJlOgoJCQkJCQlpZiBub3QgbmV3cGtnLmZp
bmQobWxwcmUpID09IDA6CgkJCQkJCQluZXdwa2cgPSBtbHByZSArIG5ld3BrZwoJCQkJCWlmIG5l
d3BrZyAhPSBwa2c6CgkJCQkJCWJiLmRhdGEuc2V0VmFyKCdQS0dfJyArIHBrZywgbmV3cGtnLCBk
KQoKCSMgcmV2ZXJzZWQgc29ydCBpcyBuZWVkZWQgd2hlbiBzb21lIHBhY2thZ2UgaXMgc3Vic3Ry
aW5nIG9mIGFub3RoZXIKCSMgaWUgaW4gbmN1cnNlcyB3ZSBnZXQgd2l0aG91dCByZXZlcnNlIHNv
cnQ6CgkjIERFQlVHOiBMSUJOQU1FUzogcGtnbmFtZSBsaWJ0aWM1IGRldm5hbWUgbGlidGljIHBr
ZyBuY3Vyc2VzLWxpYnRpYyBvcmlnX3BrZyBuY3Vyc2VzLWxpYnRpYyBkZWJpYW5fcG4gTm9uZSBu
ZXdwa2cgbGlidGljNQoJIyBhbmQgbGF0ZXIKCSMgREVCVUc6IExJQk5BTUVTOiBwa2duYW1lIGxp
YnRpYzUgZGV2bmFtZSBsaWJ0aWMgcGtnIG5jdXJzZXMtbGlidGljdyBvcmlnX3BrZyBuY3Vyc2Vz
LWxpYnRpYyBkZWJpYW5fcG4gTm9uZSBuZXdwa2cgbGlidGljdwoJIyBzbyB3ZSBuZWVkIHRvIGhh
bmRsZSBuY3Vyc2VzLWxpYnRpY3ctPmxpYnRpY3c1IGJlZm9yZSBuY3Vyc2VzLWxpYnRpYy0+bGli
dGljNQoJZm9yIHBrZyBpbiBzb3J0ZWQoKGJiLmRhdGEuZ2V0VmFyKCdBVVRPX0xJQk5BTUVfUEtH
UycsIGQsIDEpIG9yICIiKS5zcGxpdCgpLCByZXZlcnNlPVRydWUpOgoJCWF1dG9fbGlibmFtZShw
YWNrYWdlcywgcGtnKQp9CgoKcHl0aG9uIHByc2Vydl9tYWtlX2Nvbm4gKCkgewpkZWYgcHJzZXJ2
X21ha2VfY29ubihkKToKICAgIGltcG9ydCBwcnNlcnYuc2VydgogICAgaG9zdD1kLmdldFZhcigi
UFJTRVJWX0hPU1QiLFRydWUpCiAgICBwb3J0PWQuZ2V0VmFyKCJQUlNFUlZfUE9SVCIsVHJ1ZSkK
ICAgIHRyeToKICAgICAgICBjb25uPU5vbmUKICAgICAgICBjb25uPXByc2Vydi5zZXJ2LlBSU2Vy
dmVyQ29ubmVjdGlvbihob3N0LGludChwb3J0KSkKICAgICAgICBkLnNldFZhcigiX19QUlNFUlZf
Q09OTiIsY29ubikKICAgIGV4Y2VwdCBFeGNlcHRpb24sIGV4YzoKICAgICAgICBiYi5mYXRhbCgi
Q29ubmVjdGluZyB0byBQUiBzZXJ2aWNlICVzOiVzIGZhaWxlZDogJXMiICUgKGhvc3QsIHBvcnQs
IHN0cihleGMpKSkKCiAgICByZXR1cm4gY29ubgp9CgoKcHl0aG9uIHBhY2thZ2VfZG9fc2hsaWJz
ICgpIHsKCWltcG9ydCByZQoKCWV4Y2x1ZGVfc2hsaWJzID0gYmIuZGF0YS5nZXRWYXIoJ0VYQ0xV
REVfRlJPTV9TSExJQlMnLCBkLCAwKQoJaWYgZXhjbHVkZV9zaGxpYnM6CgkJYmIubm90ZSgibm90
IGdlbmVyYXRpbmcgc2hsaWJzIikKCQlyZXR1cm4KCglsaWJfcmUgPSByZS5jb21waWxlKCJeLipc
LnNvIikKCWxpYmRpcl9yZSA9IHJlLmNvbXBpbGUoIi4qL2xpYiQiKQoKCXBhY2thZ2VzID0gYmIu
ZGF0YS5nZXRWYXIoJ1BBQ0tBR0VTJywgZCwgVHJ1ZSkKCXRhcmdldG9zID0gYmIuZGF0YS5nZXRW
YXIoJ1RBUkdFVF9PUycsIGQsIFRydWUpCgoJd29ya2RpciA9IGJiLmRhdGEuZ2V0VmFyKCdXT1JL
RElSJywgZCwgVHJ1ZSkKCgl2ZXIgPSBiYi5kYXRhLmdldFZhcignUEtHVicsIGQsIFRydWUpCglp
ZiBub3QgdmVyOgoJCWJiLmVycm9yKCJQS0dWIG5vdCBkZWZpbmVkIikKCQlyZXR1cm4KCglwa2dk
ZXN0ID0gYmIuZGF0YS5nZXRWYXIoJ1BLR0RFU1QnLCBkLCBUcnVlKQoKCXNobGlic19kaXIgPSBi
Yi5kYXRhLmdldFZhcignU0hMSUJTRElSJywgZCwgVHJ1ZSkKCXNobGlic3dvcmtfZGlyID0gYmIu
ZGF0YS5nZXRWYXIoJ1NITElCU1dPUktESVInLCBkLCBUcnVlKQoKCSMgVGFrZSBzaGFyZWQgbG9j
ayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCglsZiA9IGJiLnV0aWxzLmxv
Y2tmaWxlKGJiLmRhdGEuZXhwYW5kKCIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3BhY2thZ2Utb3V0cHV0
LmxvY2siLCBkKSkKCglkZWYgbGludXhfc28ocm9vdCwgcGF0aCwgZmlsZSk6CgkJY21kID0gYmIu
ZGF0YS5nZXRWYXIoJ09CSkRVTVAnLCBkLCBUcnVlKSArICIgLXAgIiArIG9zLnBhdGguam9pbihy
b290LCBmaWxlKSArICIgMj4vZGV2L251bGwiCgkJY21kID0gIlBBVEg9XCIlc1wiICVzIiAlIChi
Yi5kYXRhLmdldFZhcignUEFUSCcsIGQsIFRydWUpLCBjbWQpCgkJZmQgPSBvcy5wb3BlbihjbWQp
CgkJbGluZXMgPSBmZC5yZWFkbGluZXMoKQoJCWZkLmNsb3NlKCkKCQlmb3IgbCBpbiBsaW5lczoK
CQkJbSA9IHJlLm1hdGNoKCJccytORUVERURccysoW15cc10qKSIsIGwpCgkJCWlmIG06CgkJCQlu
ZWVkZWRbcGtnXS5hcHBlbmQobS5ncm91cCgxKSkKCQkJbSA9IHJlLm1hdGNoKCJccytTT05BTUVc
cysoW15cc10qKSIsIGwpCgkJCWlmIG06CgkJCQl0aGlzX3NvbmFtZSA9IG0uZ3JvdXAoMSkKCQkJ
CWlmIG5vdCB0aGlzX3NvbmFtZSBpbiBzb25hbWVzOgoJCQkJCSMgaWYgbGlicmFyeSBpcyBwcml2
YXRlIChvbmx5IHVzZWQgYnkgcGFja2FnZSkgdGhlbiBkbyBub3QgYnVpbGQgc2hsaWIgZm9yIGl0
CgkJCQkJaWYgbm90IHByaXZhdGVfbGlicyBvciAtMSA9PSBwcml2YXRlX2xpYnMuZmluZCh0aGlz
X3NvbmFtZSk6CgkJCQkJCXNvbmFtZXMuYXBwZW5kKHRoaXNfc29uYW1lKQoJCQkJaWYgbGliZGly
X3JlLm1hdGNoKHJvb3QpOgoJCQkJCW5lZWRzX2xkY29uZmlnID0gVHJ1ZQoJCQkJaWYgc25hcF9z
eW1saW5rcyBhbmQgKGZpbGUgIT0gdGhpc19zb25hbWUpOgoJCQkJCXJlbmFtZXMuYXBwZW5kKChv
cy5wYXRoLmpvaW4ocm9vdCwgZmlsZSksIG9zLnBhdGguam9pbihyb290LCB0aGlzX3NvbmFtZSkp
KQoKCWRlZiBkYXJ3aW5fc28ocm9vdCwgcGF0aCwgZmlsZSk6CgkJZnVsbHBhdGggPSBvcy5wYXRo
LmpvaW4ocm9vdCwgZmlsZSkKCQlpZiBub3Qgb3MucGF0aC5leGlzdHMoZnVsbHBhdGgpOgoJCQly
ZXR1cm4KCgkJZGVmIGdldF9jb21iaW5hdGlvbnMoYmFzZSk6CgkJCSMKCQkJIyBHaXZlbiBhIGJh
c2UgbGlicmFyeSBuYW1lLCBmaW5kIGFsbCBjb21iaW5hdGlvbnMgb2YgdGhpcyBzcGxpdCBieSAi
LiIgYW5kICItIgoJCQkjCgkJCWNvbWJvcyA9IFtdCgkJCW9wdGlvbnMgPSBiYXNlLnNwbGl0KCIu
IikKCQkJZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKG9wdGlvbnMpICsgMSk6CgkJCQljb21ib3MuYXBw
ZW5kKCIuIi5qb2luKG9wdGlvbnNbMDppXSkpCgkJCW9wdGlvbnMgPSBiYXNlLnNwbGl0KCItIikK
CQkJZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKG9wdGlvbnMpICsgMSk6CgkJCQljb21ib3MuYXBwZW5k
KCItIi5qb2luKG9wdGlvbnNbMDppXSkpCgkJCXJldHVybiBjb21ib3MKCgkJaWYgKGZpbGUuZW5k
c3dpdGgoJy5keWxpYicpIG9yIGZpbGUuZW5kc3dpdGgoJy5zbycpKSBhbmQgbm90IHBrZy5lbmRz
d2l0aCgnLWRldicpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGJnJyk6CgkJCSMgRHJvcCBzdWZm
aXgKCQkJbmFtZSA9IGZpbGUucnNwbGl0KCIuIiwxKVswXQoJCQkjIEZpbmQgYWxsIGNvbWJpbmF0
aW9ucwoJCQljb21ib3MgPSBnZXRfY29tYmluYXRpb25zKG5hbWUpCgkJCWZvciBjb21ibyBpbiBj
b21ib3M6CgkJCQlpZiBub3QgY29tYm8gaW4gc29uYW1lczoKCQkJCQlzb25hbWVzLmFwcGVuZChj
b21ibykKCQlpZiBmaWxlLmVuZHN3aXRoKCcuZHlsaWInKSBvciBmaWxlLmVuZHN3aXRoKCcuc28n
KToKCQkJbGFmaWxlID0gZnVsbHBhdGgucmVwbGFjZShvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtn
KSwgYmIuZGF0YS5nZXRWYXIoJ1BLR0QnLCBkLCBUcnVlKSkKCQkJIyBEcm9wIHN1ZmZpeAoJCQls
YWZpbGUgPSBsYWZpbGUucnNwbGl0KCIuIiwxKVswXQoJCQlsYXBhdGggPSBvcy5wYXRoLmRpcm5h
bWUobGFmaWxlKQoJCQlsYWZpbGUgPSBvcy5wYXRoLmJhc2VuYW1lKGxhZmlsZSkKCQkJIyBGaW5k
IGFsbCBjb21iaW5hdGlvbnMKCQkJY29tYm9zID0gZ2V0X2NvbWJpbmF0aW9ucyhsYWZpbGUpCgkJ
CWZvciBjb21ibyBpbiBjb21ib3M6CgkJCQlpZiBvcy5wYXRoLmV4aXN0cyhsYXBhdGggKyAnLycg
KyBjb21ibyArICcubGEnKToKCQkJCQlicmVhawoJCQlsYWZpbGUgPSBsYXBhdGggKyAnLycgKyBj
b21ibyArICcubGEnCgoJCQkjYmIubm90ZSgiRm9vMjogJXMiICUgbGFmaWxlKQoJCQkjYmIubm90
ZSgiRm9vICVzICVzIiAlIChmaWxlLCBmdWxscGF0aCkpCgkJCWlmIG9zLnBhdGguZXhpc3RzKGxh
ZmlsZSk6CgkJCQlmZCA9IG9wZW4obGFmaWxlLCAncicpCgkJCQlsaW5lcyA9IGZkLnJlYWRsaW5l
cygpCgkJCQlmZC5jbG9zZSgpCgkJCQlmb3IgbCBpbiBsaW5lczoKCQkJCQltID0gcmUubWF0Y2go
IlxzKmRlcGVuZGVuY3lfbGlicz1ccyonKC4qKSciLCBsKQoJCQkJCWlmIG06CgkJCQkJCWRlcHMg
PSBtLmdyb3VwKDEpLnNwbGl0KCIgIikKCQkJCQkJZm9yIGRlcCBpbiBkZXBzOgoJCQkJCQkJI2Ji
Lm5vdGUoIlRyeWluZyAlcyBmb3IgJXMiICUgKGRlcCwgcGtnKSkKCQkJCQkJCW5hbWUgPSBOb25l
CgkJCQkJCQlpZiBkZXAuZW5kc3dpdGgoIi5sYSIpOgoJCQkJCQkJCW5hbWUgPSBvcy5wYXRoLmJh
c2VuYW1lKGRlcCkucmVwbGFjZSgiLmxhIiwgIiIpCgkJCQkJCQllbGlmIGRlcC5zdGFydHN3aXRo
KCItbCIpOgoJCQkJCQkJCW5hbWUgPSBkZXAucmVwbGFjZSgiLWwiLCAibGliIikKCQkJCQkJCWlm
IHBrZyBub3QgaW4gbmVlZGVkOgoJCQkJCQkJCW5lZWRlZFtwa2ddID0gW10KCQkJCQkJCWlmIG5h
bWU6CgkJCQkJCQkJbmVlZGVkW3BrZ10uYXBwZW5kKG5hbWUpCgkJCQkJCQkJI2JiLm5vdGUoIkFk
ZGluZyAlcyBmb3IgJXMiICUgKG5hbWUsIHBrZykpCgoJaWYgYmIuZGF0YS5nZXRWYXIoJ1BBQ0tB
R0VfU05BUF9MSUJfU1lNTElOS1MnLCBkLCBUcnVlKSA9PSAiMSI6CgkJc25hcF9zeW1saW5rcyA9
IFRydWUKCWVsc2U6CgkJc25hcF9zeW1saW5rcyA9IEZhbHNlCgoJaWYgKGJiLmRhdGEuZ2V0VmFy
KCdVU0VfTERDT05GSUcnLCBkLCBUcnVlKSBvciAiMSIpID09ICIxIjoKCQl1c2VfbGRjb25maWcg
PSBUcnVlCgllbHNlOgoJCXVzZV9sZGNvbmZpZyA9IEZhbHNlCgoJbmVlZGVkID0ge30KCXNobGli
X3Byb3ZpZGVyID0ge30KCXByaXZhdGVfbGlicyA9IGJiLmRhdGEuZ2V0VmFyKCdQUklWQVRFX0xJ
QlMnLCBkLCBUcnVlKQoJZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgoJCW5lZWRzX2xkY29u
ZmlnID0gRmFsc2UKCQliYi5kZWJ1ZygyLCAiY2FsY3VsYXRpbmcgc2hsaWIgcHJvdmlkZXMgZm9y
ICVzIiAlIHBrZykKCgkJcGtndmVyID0gYmIuZGF0YS5nZXRWYXIoJ1BLR1ZfJyArIHBrZywgZCwg
VHJ1ZSkKCQlpZiBub3QgcGtndmVyOgoJCQlwa2d2ZXIgPSBiYi5kYXRhLmdldFZhcignUFZfJyAr
IHBrZywgZCwgVHJ1ZSkKCQlpZiBub3QgcGtndmVyOgoJCQlwa2d2ZXIgPSB2ZXIKCgkJbmVlZGVk
W3BrZ10gPSBbXQoJCXNvbmFtZXMgPSBsaXN0KCkKCQlyZW5hbWVzID0gbGlzdCgpCgkJdG9wID0g
b3MucGF0aC5qb2luKHBrZ2Rlc3QsIHBrZykKCQlmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mu
d2Fsayh0b3ApOgoJCQlmb3IgZmlsZSBpbiBmaWxlczoKCQkJCXNvbmFtZSA9IE5vbmUKCQkJCXBh
dGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkKCQkJCWlmIG9zLnBhdGguaXNsaW5rKHBhdGgp
OgoJCQkJCWNvbnRpbnVlCgkJCQlpZiB0YXJnZXRvcyA9PSAiZGFyd2luIiBvciB0YXJnZXRvcyA9
PSAiZGFyd2luOCI6CgkJCQkJZGFyd2luX3NvKHJvb3QsIGRpcnMsIGZpbGUpCgkJCQllbGlmIG9z
LmFjY2VzcyhwYXRoLCBvcy5YX09LKSBvciBsaWJfcmUubWF0Y2goZmlsZSk6CgkJCQkJbGludXhf
c28ocm9vdCwgZGlycywgZmlsZSkKCQlmb3IgKG9sZCwgbmV3KSBpbiByZW5hbWVzOgoJCSAgICAJ
YmIubm90ZSgiUmVuYW1pbmcgJXMgdG8gJXMiICUgKG9sZCwgbmV3KSkKCQkJb3MucmVuYW1lKG9s
ZCwgbmV3KQoJCXNobGlic19maWxlID0gb3MucGF0aC5qb2luKHNobGlic3dvcmtfZGlyLCBwa2cg
KyAiLmxpc3QiKQoJCXNodmVyX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2hsaWJzd29ya19kaXIsIHBr
ZyArICIudmVyIikKCQlpZiBsZW4oc29uYW1lcyk6CgkJCWZkID0gb3BlbihzaGxpYnNfZmlsZSwg
J3cnKQoJCQlmb3IgcyBpbiBzb25hbWVzOgoJCQkJZmQud3JpdGUocyArICdcbicpCgkJCQlzaGxp
Yl9wcm92aWRlcltzXSA9IChwa2csIHBrZ3ZlcikKCQkJZmQuY2xvc2UoKQoJCQlmZCA9IG9wZW4o
c2h2ZXJfZmlsZSwgJ3cnKQoJCQlmZC53cml0ZShwa2d2ZXIgKyAnXG4nKQoJCQlmZC5jbG9zZSgp
CgkJaWYgbmVlZHNfbGRjb25maWcgYW5kIHVzZV9sZGNvbmZpZzoKCQkJYmIuZGVidWcoMSwgJ2Fk
ZGluZyBsZGNvbmZpZyBjYWxsIHRvIHBvc3RpbnN0IGZvciAlcycgJSBwa2cpCgkJCXBvc3RpbnN0
ID0gYmIuZGF0YS5nZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIGQsIFRydWUpIG9yIGJi
LmRhdGEuZ2V0VmFyKCdwa2dfcG9zdGluc3QnLCBkLCBUcnVlKQoJCQlpZiBub3QgcG9zdGluc3Q6
CgkJCQlwb3N0aW5zdCA9ICcjIS9iaW4vc2hcbicKCQkJcG9zdGluc3QgKz0gYmIuZGF0YS5nZXRW
YXIoJ2xkY29uZmlnX3Bvc3RpbnN0X2ZyYWdtZW50JywgZCwgVHJ1ZSkKCQkJYmIuZGF0YS5zZXRW
YXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIHBvc3RpbnN0LCBkKQoKCWxpc3RfcmUgPSByZS5j
b21waWxlKCdeKC4qKVwubGlzdCQnKQoJZm9yIGRpciBpbiBbc2hsaWJzX2Rpcl06CgkJaWYgbm90
IG9zLnBhdGguZXhpc3RzKGRpcik6CgkJCWNvbnRpbnVlCgkJZm9yIGZpbGUgaW4gb3MubGlzdGRp
cihkaXIpOgoJCQltID0gbGlzdF9yZS5tYXRjaChmaWxlKQoJCQlpZiBtOgoJCQkJZGVwX3BrZyA9
IG0uZ3JvdXAoMSkKCQkJCWZkID0gb3Blbihvcy5wYXRoLmpvaW4oZGlyLCBmaWxlKSkKCQkJCWxp
bmVzID0gZmQucmVhZGxpbmVzKCkKCQkJCWZkLmNsb3NlKCkKCQkJCXZlcl9maWxlID0gb3MucGF0
aC5qb2luKGRpciwgZGVwX3BrZyArICcudmVyJykKCQkJCWxpYl92ZXIgPSBOb25lCgkJCQlpZiBv
cy5wYXRoLmV4aXN0cyh2ZXJfZmlsZSk6CgkJCQkJZmQgPSBvcGVuKHZlcl9maWxlKQoJCQkJCWxp
Yl92ZXIgPSBmZC5yZWFkbGluZSgpLnJzdHJpcCgpCgkJCQkJZmQuY2xvc2UoKQoJCQkJZm9yIGwg
aW4gbGluZXM6CgkJCQkJc2hsaWJfcHJvdmlkZXJbbC5yc3RyaXAoKV0gPSAoZGVwX3BrZywgbGli
X3ZlcikKCgliYi51dGlscy51bmxvY2tmaWxlKGxmKQoKCWFzc3VtZWRfbGlicyA9IGJiLmRhdGEu
Z2V0VmFyKCdBU1NVTUVfU0hMSUJTJywgZCwgVHJ1ZSkKCWlmIGFzc3VtZWRfbGliczoKCSAgICBm
b3IgZSBpbiBhc3N1bWVkX2xpYnMuc3BsaXQoKToKCQlsLCBkZXBfcGtnID0gZS5zcGxpdCgiOiIp
CgkJbGliX3ZlciA9IE5vbmUKCQlkZXBfcGtnID0gZGVwX3BrZy5yc3BsaXQoIl8iLCAxKQoJCWlm
IGxlbihkZXBfcGtnKSA9PSAyOgoJCSAgICBsaWJfdmVyID0gZGVwX3BrZ1sxXQoJCWRlcF9wa2cg
PSBkZXBfcGtnWzBdCgkJc2hsaWJfcHJvdmlkZXJbbF0gPSAoZGVwX3BrZywgbGliX3ZlcikKCglm
b3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CgkJYmIuZGVidWcoMiwgImNhbGN1bGF0aW5nIHNo
bGliIHJlcXVpcmVtZW50cyBmb3IgJXMiICUgcGtnKQoKCQlkZXBzID0gbGlzdCgpCgkJZm9yIG4g
aW4gbmVlZGVkW3BrZ106CgkJCWlmIG4gaW4gc2hsaWJfcHJvdmlkZXIua2V5cygpOgoJCQkJKGRl
cF9wa2csIHZlcl9uZWVkZWQpID0gc2hsaWJfcHJvdmlkZXJbbl0KCgkJCQlpZiBkZXBfcGtnID09
IHBrZzoKCQkJCQljb250aW51ZQoKCQkJCWlmIHZlcl9uZWVkZWQ6CgkJCQkJZGVwID0gIiVzICg+
PSAlcykiICUgKGRlcF9wa2csIHZlcl9uZWVkZWQpCgkJCQllbHNlOgoJCQkJCWRlcCA9IGRlcF9w
a2cKCQkJCWlmIG5vdCBkZXAgaW4gZGVwczoKCQkJCQlkZXBzLmFwcGVuZChkZXApCgkJCWVsc2U6
CgkJCQliYi5ub3RlKCJDb3VsZG4ndCBmaW5kIHNoYXJlZCBsaWJyYXJ5IHByb3ZpZGVyIGZvciAl
cyIgJSBuKQoKCQlkZXBzX2ZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnICsgIi5zaGxp
YmRlcHMiKQoJCWlmIG9zLnBhdGguZXhpc3RzKGRlcHNfZmlsZSk6CgkJCW9zLnJlbW92ZShkZXBz
X2ZpbGUpCgkJaWYgbGVuKGRlcHMpOgoJCQlmZCA9IG9wZW4oZGVwc19maWxlLCAndycpCgkJCWZv
ciBkZXAgaW4gZGVwczoKCQkJCWZkLndyaXRlKGRlcCArICdcbicpCgkJCWZkLmNsb3NlKCkKfQoK
CnB5dGhvbiBub3JtYWxfcGtnc190b19pbnN0YWxsICgpIHsKZGVmIG5vcm1hbF9wa2dzX3RvX2lu
c3RhbGwoZCk6CiAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKCiAgICB0b19pbnN0YWxsID0gb2Uu
ZGF0YS50eXBlZF92YWx1ZSgnSU1BR0VfSU5TVEFMTCcsIGQpCiAgICBmZWF0dXJlcyA9IG5vcm1h
bF9ncm91cHMoZCkKICAgIHJlcXVpcmVkID0gbGlzdChvZS5wYWNrYWdlZ3JvdXAucmVxdWlyZWRf
cGFja2FnZXMoZmVhdHVyZXMsIGQpKQogICAgb3B0aW9uYWwgPSBsaXN0KG9lLnBhY2thZ2Vncm91
cC5vcHRpb25hbF9wYWNrYWdlcyhmZWF0dXJlcywgZCkpCiAgICBhbGxfcGFja2FnZXMgPSB0b19p
bnN0YWxsICsgcmVxdWlyZWQgKyBvcHRpb25hbAoKICAgIHJlY2lwZXMgPSBmaWx0ZXIoTm9uZSwg
W29lLnBhY2thZ2VkYXRhLnJlY2lwZW5hbWUocGtnLCBkKSBmb3IgcGtnIGluIGFsbF9wYWNrYWdl
c10pCgogICAgcmV0dXJuIGFsbF9wYWNrYWdlcyArIHJlY2lwZXMKfQoKCnB5dGhvbiBnZXRfaW1h
Z2VjbWRzICgpIHsKZGVmIGdldF9pbWFnZWNtZHMoZCk6CiAgICBjbWRzID0gIlxuIgogICAgb2xk
X292ZXJyaWRlcyA9IGJiLmRhdGEuZ2V0VmFyKCdPVkVSUklERVMnLCBkLCAwKQoKICAgIHR5cGVz
ID0gYmIuZGF0YS5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnLCBkLCBUcnVlKS5zcGxpdCgpCiAgICAj
IExpdmUgaW1hZ2VzIHdpbGwgYmUgcHJvY2Vzc2VkIHZpYSBpbmhlcml0aW5nIGJiY2xhc3MgYW5k
CiAgICAjIGRvZXMgbm90IGdldCBwcm9jZXNzZWQgaGVyZS4KICAgICMgbGl2ZSBpbWFnZXMgYWxz
byBkZXBlbmQgb24gZXh0MyBzbyBlbnN1cmUgaXRzIHByZXNlbnQKICAgIGlmICJsaXZlIiBpbiB0
eXBlczoKICAgICAgICBpZiAiZXh0MyIgbm90IGluIHR5cGVzOgogICAgICAgICAgICB0eXBlcy5h
cHBlbmQoImV4dDMiKQogICAgICAgIHR5cGVzLnJlbW92ZSgibGl2ZSIpCgogICAgZm9yIHR5cGUg
aW4gdHlwZXM6CiAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAg
ICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgJyVzOiVzJyAlICh0eXBlLCBvbGRfb3Zl
cnJpZGVzKSkKICAgICAgICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKICAgICAgICBs
b2NhbGRhdGEuc2V0VmFyKCd0eXBlJywgdHlwZSkKICAgICAgICBjbWQgPSBsb2NhbGRhdGEuZ2V0
VmFyKCJJTUFHRV9DTUQiLCBUcnVlKQogICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ2NtZCcsIGNt
ZCkKICAgICAgICBjbWRzICs9IGxvY2FsZGF0YS5nZXRWYXIoInJ1bmltYWdlY21kIiwgVHJ1ZSkK
ICAgIHJldHVybiBjbWRzCn0KCgpweXRob24gcGFja2FnZV9ycG1faW5zdGFsbCAoKSB7CgliYi5m
YXRhbCgicGFja2FnZV9ycG1faW5zdGFsbCBub3QgaW1wbGVtZW50ZWQhIikKfQoKKyBiaXRiYWtl
IC1ERCBmc2wtaW1hZ2Utc2ltcGxlCisgdGVlIGJ1aWxkLmxvZwpQc2V1ZG8gaXMgbm90IHByZXNl
bnQgYnV0IGlzIHJlcXVpcmVkLCBidWlsZGluZyB0aGlzIGZpcnN0IGJlZm9yZSB0aGUgbWFpbiBi
dWlsZApMb2FkaW5nIGNhY2hlLi4uZG9uZS4KTG9hZGVkIDEwODEgZW50cmllcyBmcm9tIGRlcGVu
ZGVuY3kgY2FjaGUuClBhcnNpbmcgcmVjaXBlcy4uLmRvbmUuClBhcnNpbmcgb2YgODQxIC5iYiBm
aWxlcyBjb21wbGV0ZSAoODMyIGNhY2hlZCwgOSBwYXJzZWQpLiAxMDkxIHRhcmdldHMsIDQyIHNr
aXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRh
c2sgcXVldWUgZGVwZW5kZW5jaWVzCk5PVEU6IFByZXBhcmluZyBydW5xdWV1ZQoKT0UgQnVpbGQg
Q29uZmlndXJhdGlvbjoKQkJfVkVSU0lPTiAgICAgICAgPSAiMS4xNS4wIgpUQVJHRVRfQVJDSCAg
ICAgICA9ICJwb3dlcnBjIgpUQVJHRVRfT1MgICAgICAgICA9ICJsaW51eC1nbnVzcGUiCk1BQ0hJ
TkUgICAgICAgICAgID0gInAxMDIwcmRiIgpESVNUUk8gICAgICAgICAgICA9ICJmc2wiCkRJU1RS
T19WRVJTSU9OICAgID0gIjEuMSIKVFVORV9GRUFUVVJFUyAgICAgPSAibTMyIHNwZSBwcGNlNTAw
djIiClRBUkdFVF9GUFUgICAgICAgID0gInBwYy1lZmQiCm1ldGEgICAgICAgICAgICAgIAptZXRh
LXlvY3RvICAgICAgICA9ICJtYXN0ZXI6NjMwODNhNzE2Nzk3ZTE2YmM5YmMyNjA0ODJiMWM3Mjc2
ODk1MjZhNCIKbWV0YS1mc2wtcHBjICAgICAgPSAibWFzdGVyOmM4ZjNjMmJlNTkwYzQ3NDA1ZjM3
YzFmZTA4NDhlY2E3YWY1ZGI0NGQiCm1ldGEtZnNsLXBwYy1wcml2YXRlID0gIm1hc3Rlcjo3Njkw
MWY4OTZhOWNlYzM3MzM1ZGFkM2RkOWQ3MmEzYjcwYzkxYzlmIgoKTk9URTogRXhlY3V0aW5nIFNl
dFNjZW5lIFRhc2tzCk5PVEU6IFJ1bm5pbmcgc2V0c2NlbmUgdGFzayAxIG9mIDE4ICh2aXJ0dWFs
Om5hdGl2ZTovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVj
aXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuMS4xLmJiOmRvX3BvcHVsYXRlX3N5c3Jvb3Rf
c2V0c2NlbmUpCk5PVEU6IFJ1bm5pbmcgc2V0c2NlbmUgdGFzayAyIG9mIDE4ICgvbG9jYWwvamVu
a2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIv
dGFyLXJlcGxhY2VtZW50LW5hdGl2ZV8xLjI2LmJiOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2Nl
bmUpCk5PVEU6IHBhY2thZ2UgcHNldWRvLW5hdGl2ZS0xLjEuMS1yMjogdGFzayBkb19wb3B1bGF0
ZV9zeXNyb290X3NldHNjZW5lOiBTdGFydGVkCk5PVEU6IHBhY2thZ2UgdGFyLXJlcGxhY2VtZW50
LW5hdGl2ZS0xLjI2LXIwOiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN0YXJ0
ZWQKRVJST1I6IEVycm9yIGV4ZWN1dGluZyBhIHB5dGhvbiBmdW5jdGlvbiBpbiAvbG9jYWwvamVu
a2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1
ZG8vcHNldWRvXzEuMS4xLmJiOgpDYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ3RhciAtY2Yg
LSAtQyAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIw
cmRiX3JlbGVhc2UvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3BzZXVkby1uYXRpdmUtMS4xLjEtcjIv
c3lzcm9vdC1kZXN0ZGlyLy8vbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRi
L2J1aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eCAtcHMgLiB8
IHRhciAteGYgLSAtQyAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1
aWxkX3AxMDIwcmRiX3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eCcgcmV0dXJuZWQg
bm9uLXplcm8gZXhpdCBzdGF0dXMgMTI2IHdpdGggb3V0cHV0IC9iaW4vc2g6IC9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS90bXAv
c3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vdGFyOiBUZXh0IGZpbGUgYnVzeQovYmluL3No
OiAvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL2J1aWxkX3AxMDIwcmRi
X3JlbGVhc2UvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL3RhcjogVGV4dCBmaWxl
IGJ1c3kKCgpFUlJPUjogVGhlIHN0YWNrIHRyYWNlIG9mIHB5dGhvbiBjYWxscyB0aGF0IHJlc3Vs
dGVkIGluIHRoaXMgZXhjZXB0aW9uL2ZhaWx1cmUgd2FzOgpFUlJPUjogICBGaWxlICJkb19wb3B1
bGF0ZV9zeXNyb290X3NldHNjZW5lIiwgbGluZSA2LCBpbiA8bW9kdWxlPgpFUlJPUjogCkVSUk9S
OiAgIEZpbGUgImRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiLCBsaW5lIDMsIGluIGRvX3Bv
cHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUKRVJST1I6IApFUlJPUjogICBGaWxlICJzc3RhdGUuYmJj
bGFzcyIsIGxpbmUgMywgaW4gc3N0YXRlX3NldHNjZW5lCkVSUk9SOiAKRVJST1I6ICAgRmlsZSAi
c3N0YXRlLmJiY2xhc3MiLCBsaW5lIDQ3LCBpbiBzc3RhdGVfaW5zdGFsbHBrZwpFUlJPUjogCkVS
Uk9SOiAgIEZpbGUgInNzdGF0ZS5iYmNsYXNzIiwgbGluZSAxOSwgaW4gc3N0YXRlX2luc3RhbGwK
RVJST1I6IApFUlJPUjogICBGaWxlICIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL21ldGEvbGliL29lL3BhdGgucHkiLCBsaW5lIDU5LCBpbiBjb3B5dHJlZQpFUlJPUjog
ICAgIGNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9V
VCkKRVJST1I6IApFUlJPUjogICBGaWxlICIvbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0
L3AxMDIwcmRiL21ldGEvbGliL29lL3BhdGgucHkiLCBsaW5lIDEyMSwgaW4gY2hlY2tfb3V0cHV0
CkVSUk9SOiAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHJldGNvZGUsIGNtZCwgb3V0cHV0
PW91dHB1dCkKRVJST1I6IApFUlJPUjogVGhlIGNvZGUgdGhhdCB3YXMgYmVpbmcgZXhlY3V0ZWQg
d2FzOgpFUlJPUjogICAgICAwMDAyOmRlZiBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lKGQp
OgpFUlJPUjogICAgICAwMDAzOglzc3RhdGVfc2V0c2NlbmUoZCkKRVJST1I6ICAgICAgMDAwNDoK
RVJST1I6ICAgICAgMDAwNToKRVJST1I6ICAqKiogMDAwNjpkb19wb3B1bGF0ZV9zeXNyb290X3Nl
dHNjZW5lKGQpCkVSUk9SOiAgICAgIDAwMDc6CkVSUk9SOiAoZmlsZTogJ2RvX3BvcHVsYXRlX3N5
c3Jvb3Rfc2V0c2NlbmUnLCBsaW5lbm86IDYsIGZ1bmN0aW9uOiA8bW9kdWxlPikKRVJST1I6ICAg
ICAgMDAwMToKRVJST1I6ICAgICAgMDAwMjpkZWYgZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2Vu
ZShkKToKRVJST1I6ICAqKiogMDAwMzoJc3N0YXRlX3NldHNjZW5lKGQpCkVSUk9SOiAgICAgIDAw
MDQ6CkVSUk9SOiAgICAgIDAwMDU6CkVSUk9SOiAgICAgIDAwMDY6ZG9fcG9wdWxhdGVfc3lzcm9v
dF9zZXRzY2VuZShkKQpFUlJPUjogICAgICAwMDA3OgpFUlJPUjogKGZpbGU6ICdkb19wb3B1bGF0
ZV9zeXNyb290X3NldHNjZW5lJywgbGluZW5vOiAzLCBmdW5jdGlvbjogZG9fcG9wdWxhdGVfc3lz
cm9vdF9zZXRzY2VuZSkKRVJST1I6IFRhc2sgMyAodmlydHVhbDpuYXRpdmU6L2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRv
L3BzZXVkb18xLjEuMS5iYiwgZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSkgZmFpbGVkIHdp
dGggZXhpdCBjb2RlICcxJwpOT1RFOiBwYWNrYWdlIHRhci1yZXBsYWNlbWVudC1uYXRpdmUtMS4y
Ni1yMDogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdWNjZWVkZWQKTk9URTog
UnVubmluZyBzZXRzY2VuZSB0YXNrIDMgb2YgMTggKHZpcnR1YWw6bmF0aXZlOi9sb2NhbC9qZW5r
aW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9n
ZXR0ZXh0XzAuMTguMS4xLmJiOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUpCk5PVEU6IHBh
Y2thZ2UgZ2V0dGV4dC1uYXRpdmUtMC4xOC4xLjEtcjQ6IHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9v
dF9zZXRzY2VuZTogU3RhcnRlZApOT1RFOiBwYWNrYWdlIGdldHRleHQtbmF0aXZlLTAuMTguMS4x
LXI0OiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRlZApOT1RFOiBS
dW5uaW5nIHNldHNjZW5lIHRhc2sgNCBvZiAxOCAodmlydHVhbDpuYXRpdmU6L2xvY2FsL2plbmtp
bnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGli
eG1sMl8yLjcuOC5iYjpkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lKQpOT1RFOiBwYWNrYWdl
IGxpYnhtbDItbmF0aXZlLTIuNy44LXIyOiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2Nl
bmU6IFN0YXJ0ZWQKTk9URTogcGFja2FnZSBsaWJ4bWwyLW5hdGl2ZS0yLjcuOC1yMjogdGFzayBk
b19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdWNjZWVkZWQKTk9URTogUnVubmluZyBzZXRz
Y2VuZSB0YXNrIDUgb2YgMTggKC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNi42LmJiOmRv
X3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUpCk5PVEU6IHBhY2thZ2UgcHl0aG9uLW5hdGl2ZS0y
LjYuNi1yMi40OiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN0YXJ0ZWQKTk9U
RTogcGFja2FnZSBweXRob24tbmF0aXZlLTIuNi42LXIyLjQ6IHRhc2sgZG9fcG9wdWxhdGVfc3lz
cm9vdF9zZXRzY2VuZTogU3VjY2VlZGVkCk5PVEU6IFJ1bm5pbmcgc2V0c2NlbmUgdGFzayA2IG9m
IDE4ICh2aXJ0dWFsOm5hdGl2ZTovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiL21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuNy43LjEuYmI6ZG9fcG9w
dWxhdGVfc3lzcm9vdF9zZXRzY2VuZSkKTk9URTogUnVubmluZyBzZXRzY2VuZSB0YXNrIDcgb2Yg
MTggKHZpcnR1YWw6bmF0aXZlOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjBy
ZGIvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMC45LjhyLmJiOmRv
X3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUpCk5PVEU6IFJ1bm5pbmcgc2V0c2NlbmUgdGFzayA4
IG9mIDE4ICh2aXJ0dWFsOm5hdGl2ZTovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3Ax
MDIwcmRiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYjpkb19wb3B1
bGF0ZV9zeXNyb290X3NldHNjZW5lKQpOT1RFOiBSdW5uaW5nIHNldHNjZW5lIHRhc2sgOSBvZiAx
OCAodmlydHVhbDpuYXRpdmU6L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJk
Yi9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWJfMS4yLjUuYmI6ZG9fcG9wdWxhdGVfc3lzcm9v
dF9zZXRzY2VuZSkKTk9URTogUnVubmluZyBzZXRzY2VuZSB0YXNrIDEwIG9mIDE4ICh2aXJ0dWFs
Om5hdGl2ZTovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVj
aXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lXzYuMi5iYjpkb19wb3B1bGF0ZV9zeXNyb290X3Nl
dHNjZW5lKQpOT1RFOiBwYWNrYWdlIHNxbGl0ZTMtbmF0aXZlLTMuNy43LjEtcjA6IHRhc2sgZG9f
cG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTogU3RhcnRlZApOT1RFOiBwYWNrYWdlIG9wZW5zc2wt
bmF0aXZlLTAuOS44ci1yNTogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdGFy
dGVkCk5PVEU6IHBhY2thZ2UgYnppcDItbmF0aXZlLTEuMC42LXIzOiB0YXNrIGRvX3BvcHVsYXRl
X3N5c3Jvb3Rfc2V0c2NlbmU6IFN0YXJ0ZWQKTk9URTogcGFja2FnZSB6bGliLW5hdGl2ZS0xLjIu
NS1yMDogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdGFydGVkCk5PVEU6IHBh
Y2thZ2UgcmVhZGxpbmUtbmF0aXZlLTYuMi1yMDogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290X3Nl
dHNjZW5lOiBTdGFydGVkCk5PVEU6IHBhY2thZ2UgcmVhZGxpbmUtbmF0aXZlLTYuMi1yMDogdGFz
ayBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdWNjZWVkZWQKTk9URTogUnVubmluZyBz
ZXRzY2VuZSB0YXNrIDExIG9mIDE4ICh2aXJ0dWFsOm5hdGl2ZTovbG9jYWwvamVua2lucy95b2N0
by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc181
LjkuYmI6ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSkKTk9URTogcGFja2FnZSBiemlwMi1u
YXRpdmUtMS4wLjYtcjM6IHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTogU3VjY2Vl
ZGVkCk5PVEU6IHBhY2thZ2UgemxpYi1uYXRpdmUtMS4yLjUtcjA6IHRhc2sgZG9fcG9wdWxhdGVf
c3lzcm9vdF9zZXRzY2VuZTogU3VjY2VlZGVkCk5PVEU6IHBhY2thZ2Ugc3FsaXRlMy1uYXRpdmUt
My43LjcuMS1yMDogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdWNjZWVkZWQK
Tk9URTogcGFja2FnZSBuY3Vyc2VzLW5hdGl2ZS01LjktcjEuMTogdGFzayBkb19wb3B1bGF0ZV9z
eXNyb290X3NldHNjZW5lOiBTdGFydGVkCk5PVEU6IHBhY2thZ2Ugb3BlbnNzbC1uYXRpdmUtMC45
LjhyLXI1OiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRlZApOT1RF
OiBSdW5uaW5nIHNldHNjZW5lIHRhc2sgMTIgb2YgMTggKHZpcnR1YWw6bmF0aXZlOi9sb2NhbC9q
ZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3Br
Z2NvbmZpZy9wa2djb25maWdfMC4yNS5iYjpkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lKQpO
T1RFOiBwYWNrYWdlIHBrZ2NvbmZpZy1uYXRpdmUtMC4yNS1yMDogdGFzayBkb19wb3B1bGF0ZV9z
eXNyb290X3NldHNjZW5lOiBTdGFydGVkCk5PVEU6IHBhY2thZ2UgcGtnY29uZmlnLW5hdGl2ZS0w
LjI1LXIwOiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRlZApOT1RF
OiBwYWNrYWdlIG5jdXJzZXMtbmF0aXZlLTUuOS1yMS4xOiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jv
b3Rfc2V0c2NlbmU6IFN1Y2NlZWRlZApOT1RFOiBSdW5uaW5nIHNldHNjZW5lIHRhc2sgMTMgb2Yg
MTggKC9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVz
LWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC1uYXRpdmVfMi40LmJiOmRvX3BvcHVsYXRlX3N5c3Jv
b3Rfc2V0c2NlbmUpCk5PVEU6IHBhY2thZ2UgbGlidG9vbC1uYXRpdmUtMi40LXIyOiB0YXNrIGRv
X3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN0YXJ0ZWQKTk9URTogcGFja2FnZSBsaWJ0b29s
LW5hdGl2ZS0yLjQtcjI6IHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTogU3VjY2Vl
ZGVkCk5PVEU6IFJ1bm5pbmcgc2V0c2NlbmUgdGFzayAxNCBvZiAxOCAodmlydHVhbDpuYXRpdmU6
L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhL3JlY2lwZXMtZGV2
dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xMS4xLmJiOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0
c2NlbmUpCk5PVEU6IHBhY2thZ2UgYXV0b21ha2UtbmF0aXZlLTEuMTEuMS1yNDogdGFzayBkb19w
b3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdGFydGVkCk5PVEU6IHBhY2thZ2UgYXV0b21ha2Ut
bmF0aXZlLTEuMTEuMS1yNDogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lOiBTdWNj
ZWVkZWQKTk9URTogUnVubmluZyBzZXRzY2VuZSB0YXNrIDE1IG9mIDE4ICh2aXJ0dWFsOm5hdGl2
ZTovbG9jYWwvamVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVjaXBlcy1k
ZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZl8yLjY4LmJiOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0
c2NlbmUpCk5PVEU6IHBhY2thZ2UgYXV0b2NvbmYtbmF0aXZlLTIuNjgtcjI6IHRhc2sgZG9fcG9w
dWxhdGVfc3lzcm9vdF9zZXRzY2VuZTogU3RhcnRlZApOT1RFOiBwYWNrYWdlIGF1dG9jb25mLW5h
dGl2ZS0yLjY4LXIyOiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRl
ZApOT1RFOiBSdW5uaW5nIHNldHNjZW5lIHRhc2sgMTYgb2YgMTggKC9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LW5hdGl2
ZV8xLjQuMTYuYmI6ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSkKTk9URTogcGFja2FnZSBt
NC1uYXRpdmUtMS40LjE2LXIwOiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN0
YXJ0ZWQKTk9URTogcGFja2FnZSBtNC1uYXRpdmUtMS40LjE2LXIwOiB0YXNrIGRvX3BvcHVsYXRl
X3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRlZApOT1RFOiBSdW5uaW5nIHNldHNjZW5lIHRhc2sg
MTcgb2YgMTggKHZpcnR1YWw6bmF0aXZlOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3Qv
cDEwMjByZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDA4
MDEyMy5iYjpkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lKQpOT1RFOiBwYWNrYWdlIGdudS1j
b25maWctbmF0aXZlLTAuMStjdnMyMDA4MDEyMy1yNDogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290
X3NldHNjZW5lOiBTdGFydGVkCk5PVEU6IHBhY2thZ2UgZ251LWNvbmZpZy1uYXRpdmUtMC4xK2N2
czIwMDgwMTIzLXI0OiB0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRl
ZApOT1RFOiBSdW5uaW5nIHNldHNjZW5lIHRhc2sgMTggb2YgMTggKC9sb2NhbC9qZW5raW5zL3lv
Y3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0
LW5hdGl2ZV8wLjQ4LmJiOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUpCk5PVEU6IHBhY2th
Z2UgcXVpbHQtbmF0aXZlLTAuNDgtcjA6IHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2Vu
ZTogU3RhcnRlZApOT1RFOiBwYWNrYWdlIHF1aWx0LW5hdGl2ZS0wLjQ4LXIwOiB0YXNrIGRvX3Bv
cHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6IFN1Y2NlZWRlZApOT1RFOiBFeGVjdXRpbmcgUnVuUXVl
dWUgVGFza3MKTk9URTogUnVubmluZyB0YXNrIDc1IG9mIDEyNiAoSUQ6IDQsIHZpcnR1YWw6bmF0
aXZlOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVz
LWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS4xLjEuYmIsIGRvX2ZldGNoKQpOT1RFOiBwYWNrYWdl
IHBzZXVkby1uYXRpdmUtMS4xLjEtcjI6IHRhc2sgZG9fZmV0Y2g6IFN0YXJ0ZWQKTk9URTogcGFj
a2FnZSBwc2V1ZG8tbmF0aXZlLTEuMS4xLXIyOiB0YXNrIGRvX2ZldGNoOiBTdWNjZWVkZWQKTk9U
RTogUnVubmluZyB0YXNrIDEyMSBvZiAxMjYgKElEOiAwLCB2aXJ0dWFsOm5hdGl2ZTovbG9jYWwv
amVua2lucy95b2N0by9jYWNoZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVjaXBlcy1kZXZ0b29scy9w
c2V1ZG8vcHNldWRvXzEuMS4xLmJiLCBkb191bnBhY2spCk5PVEU6IHBhY2thZ2UgcHNldWRvLW5h
dGl2ZS0xLjEuMS1yMjogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQKTk9URTogcGFja2FnZSBwc2V1
ZG8tbmF0aXZlLTEuMS4xLXIyOiB0YXNrIGRvX3VucGFjazogU3VjY2VlZGVkCk5PVEU6IFJ1bm5p
bmcgdGFzayAxMjIgb2YgMTI2IChJRDogMSwgdmlydHVhbDpuYXRpdmU6L2xvY2FsL2plbmtpbnMv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3Bz
ZXVkb18xLjEuMS5iYiwgZG9fcGF0Y2gpCk5PVEU6IHBhY2thZ2UgcHNldWRvLW5hdGl2ZS0xLjEu
MS1yMjogdGFzayBkb19wYXRjaDogU3RhcnRlZApOT1RFOiBwYWNrYWdlIHBzZXVkby1uYXRpdmUt
MS4xLjEtcjI6IHRhc2sgZG9fcGF0Y2g6IFN1Y2NlZWRlZApOT1RFOiBSdW5uaW5nIHRhc2sgMTIz
IG9mIDEyNiAoSUQ6IDUsIHZpcnR1YWw6bmF0aXZlOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hl
LXRlc3QvcDEwMjByZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS4xLjEu
YmIsIGRvX2NvbmZpZ3VyZSkKTk9URTogcGFja2FnZSBwc2V1ZG8tbmF0aXZlLTEuMS4xLXIyOiB0
YXNrIGRvX2NvbmZpZ3VyZTogU3RhcnRlZApOT1RFOiBwYWNrYWdlIHBzZXVkby1uYXRpdmUtMS4x
LjEtcjI6IHRhc2sgZG9fY29uZmlndXJlOiBTdWNjZWVkZWQKTk9URTogUnVubmluZyB0YXNrIDEy
NCBvZiAxMjYgKElEOiA2LCB2aXJ0dWFsOm5hdGl2ZTovbG9jYWwvamVua2lucy95b2N0by9jYWNo
ZS10ZXN0L3AxMDIwcmRiL21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuMS4x
LmJiLCBkb19jb21waWxlKQpOT1RFOiBwYWNrYWdlIHBzZXVkby1uYXRpdmUtMS4xLjEtcjI6IHRh
c2sgZG9fY29tcGlsZTogU3RhcnRlZApOT1RFOiBwYWNrYWdlIHBzZXVkby1uYXRpdmUtMS4xLjEt
cjI6IHRhc2sgZG9fY29tcGlsZTogU3VjY2VlZGVkCk5PVEU6IFJ1bm5pbmcgdGFzayAxMjUgb2Yg
MTI2IChJRDogMiwgdmlydHVhbDpuYXRpdmU6L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVz
dC9wMTAyMHJkYi9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjEuMS5iYiwg
ZG9faW5zdGFsbCkKTk9URTogcGFja2FnZSBwc2V1ZG8tbmF0aXZlLTEuMS4xLXIyOiB0YXNrIGRv
X2luc3RhbGw6IFN0YXJ0ZWQKTk9URTogcGFja2FnZSBwc2V1ZG8tbmF0aXZlLTEuMS4xLXIyOiB0
YXNrIGRvX2luc3RhbGw6IFN1Y2NlZWRlZApOT1RFOiBSdW5uaW5nIHRhc2sgMTI2IG9mIDEyNiAo
SUQ6IDMsIHZpcnR1YWw6bmF0aXZlOi9sb2NhbC9qZW5raW5zL3lvY3RvL2NhY2hlLXRlc3QvcDEw
MjByZGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS4xLjEuYmIsIGRvX3Bv
cHVsYXRlX3N5c3Jvb3QpCk5PVEU6IHBhY2thZ2UgcHNldWRvLW5hdGl2ZS0xLjEuMS1yMjogdGFz
ayBkb19wb3B1bGF0ZV9zeXNyb290OiBTdGFydGVkCk5PVEU6IHBhY2thZ2UgcHNldWRvLW5hdGl2
ZS0xLjEuMS1yMjogdGFzayBkb19wb3B1bGF0ZV9zeXNyb290OiBTdWNjZWVkZWQKTk9URTogVGFz
a3MgU3VtbWFyeTogQXR0ZW1wdGVkIDEyNiB0YXNrcyBvZiB3aGljaCAxMTkgZGlkbid0IG5lZWQg
dG8gYmUgcmVydW4gYW5kIDAgZmFpbGVkLgorICdbJyAtZSAvbW50L3lvY3RvIC1hIC1lIC9vcHQv
eW9jdG8vY2FjaGUtdGVzdC9wMTAyMHJkYi9idWlsZF9wMTAyMHJkYl9yZWxlYXNlL3RtcC9kZXBs
b3kvaW1hZ2VzLyAnXScKW3AxMDIwcmRiXSAkIC9iaW4vc2ggLXhlIC90bXAvaHVkc29uODY1MzA2
MjUyMDI4MTM4ODg3LnNoCisgZ3JlcCAnRVJST1I6LipiYi4qZmFpbGVkJyAvb3B0L3lvY3RvL2Nh
Y2hlLXRlc3QvcDEwMjByZGIvYnVpbGRfcDEwMjByZGJfcmVsZWFzZS9idWlsZC5sb2cKRVJST1I6
IFRhc2sgMyAodmlydHVhbDpuYXRpdmU6L2xvY2FsL2plbmtpbnMveW9jdG8vY2FjaGUtdGVzdC9w
MTAyMHJkYi9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjEuMS5iYiwgZG9f
cG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSkgZmFpbGVkIHdpdGggZXhpdCBjb2RlICcxJworIHJj
PTEKKyAnWycgMSAnIT0nIDAgJ10nCisgcm0gLWYgL29wdC95b2N0by9jYWNoZS10ZXN0L3AxMDIw
cmRiLmxvY2sKKyBmYWxzZQpCdWlsZCBzdGVwICdFeGVjdXRlIHNoZWxsJyBtYXJrZWQgYnVpbGQg
YXMgZmFpbHVyZQpTZW5kaW5nIGUtbWFpbHMgdG86IG1zbUBmcmVlc2NhbGUuY29tCkZpbmlzaGVk
OiBGQUlMVVJFCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>