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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>177359</bug_id>
          
          <creation_ts>2017-09-22 05:34:34 -0700</creation_ts>
          <short_desc>Speedometer: Add missing build scripts for Vue.js example</short_desc>
          <delta_ts>2017-09-27 12:18:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172339</blocked>
    
    <blocked>177358</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Bynens">mathias</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>addyo</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mathias</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351613</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-09-22 05:34:34 -0700</bug_when>
    <thetext>While looking into #177358 I noticed that the Vue.js example is missing the `build` folder. This directory contains the build scripts needed to update `dist/*`.

It had not been checked in because previously, all `build` directories were ignored by `.gitignore`. An exception was recently added for the Speedometer directory, so now we can check it in. I’ll submit a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351616</commentid>
    <comment_count>1</comment_count>
      <attachid>321534</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-09-22 05:53:23 -0700</bug_when>
    <thetext>Created attachment 321534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351617</commentid>
    <comment_count>2</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-09-22 05:54:15 -0700</bug_when>
    <thetext>Note that this patch fixes #177358 as well, but only for the Vue.js example. I’ll submit a separate patch that fixes the others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351853</commentid>
    <comment_count>3</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-09-22 15:39:20 -0700</bug_when>
    <thetext>This should lead to a cleaner rebuild/update Vue implementation cycle in the future. Thanks for going ahead and submitting a patch for fixing the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351859</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-22 15:58:38 -0700</bug_when>
    <thetext>Did you test to make sure scores don&apos;t change before/after the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352136</commentid>
    <comment_count>5</comment_count>
      <attachid>321670</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-09-24 23:31:36 -0700</bug_when>
    <thetext>Created attachment 321670
Results before and after applying the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352567</commentid>
    <comment_count>6</comment_count>
      <attachid>321534</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-25 20:29:59 -0700</bug_when>
    <thetext>Comment on attachment 321534
Patch

Clearing flags on attachment: 321534

Committed r222488: &lt;http://trac.webkit.org/changeset/222488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352568</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-25 20:30:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353279</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:18:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693004&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321534</attachid>
            <date>2017-09-22 05:53:23 -0700</date>
            <delta_ts>2017-09-25 20:29:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177359-20170922145320.patch</filename>
            <type>text/plain</type>
            <size>2076377</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzc2CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhlYWVhNWFkNzgw
NDhmYzBiOTdmZWFhNDI1YWExMzhhNzI3NTQxNmIuLmE5NzQyZTE4MjBmMTI3Y2U3M2M2NzNkYWM1
YzIxNTE3ODNjMWY2NTAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDkt
MjIgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyOiBBZGQgbWlzc2luZyBidWlsZCBzY3JpcHRzIGZvciBWdWUuanMgZXhhbXBsZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MzU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkaXJlY3Rvcnkg
Y29udGFpbnMgdGhlIGJ1aWxkIHNjcmlwdHMgbmVlZGVkIHRvIHVwZGF0ZSBgZGlzdC8qYC4gSXQg
aGFkIG5vdCBiZWVuIGNoZWNrZWQgaW4gYmVjYXVzZSBwcmV2aW91c2x5LCBhbGwgYGJ1aWxkYCBk
aXJlY3RvcmllcyB3ZXJlIGlnbm9yZWQgYnkgYC5naXRpZ25vcmVgLiBUaGlzIGRpcmVjdG9yeSBp
cyBnZW5lcmF0ZWQgYXMgcGFydCBvZiBgbnBtIGluc3RhbGwgLWcgdnVlLWNsaSAmJiB2dWUgaW5p
dCB3ZWJwYWNrIHNvbWUtcHJvamVjdC1uYW1lYC4KKworICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvYnVp
bGQuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvY2hlY2stdmVyc2lvbnMuanM6IEFk
ZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvZGV2LWNsaWVudC5qczogQWRkZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9idWlsZC9kZXYtc2VydmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxk
L3V0aWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3Z1ZS1sb2FkZXIuY29uZi5q
czogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmJhc2UuY29uZi5qczogQWRk
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmRldi5jb25mLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2sucHJvZC5jb25mLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2J1aWxkL3dlYnBhY2sudGVzdC5jb25mLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xp
L2Rpc3QvKjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
cGFja2FnZS1sb2NrLmpzb246IEFkZGVkIGJ1aWxkIGRlcGVuZGVuY2llcyBwZXIgdnVlLWNsaS4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL3BhY2thZ2UuanNvbjogQWRkZWQgYnVpbGQgZGVwZW5kZW5jaWVzIHBl
ciB2dWUtY2xpLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvc3JjL2NvbXBvbmVudHMvdG9kby5jc3M6IFVwZGF0
ZWQgQ1NTIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgIzE3NzM1OC4KKwogMjAxNy0wOS0xMCAg
TWF0aGlhcyBCeW5lbnMgIDxtYXRoaWFzQHFpd2kuYmU+CiAKICAgICAgICAgU3BlZWRvbWV0ZXI6
IFJlZHVjZSBkdXBsaWNhdGlvbiBpbiByZWFjdC1yZWR1eCB0ZXN0CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvYnVpbGQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
YnVpbGQvYnVpbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY0NTAxMTYxMjM3YTg4NDNiZmJmZWI2YTYwOGY0
OTQzOTg1Mjk3NwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWls
ZC9idWlsZC5qcwpAQCAtMCwwICsxLDQwIEBACityZXF1aXJlKCcuL2NoZWNrLXZlcnNpb25zJyko
KQorCitwcm9jZXNzLmVudi5OT0RFX0VOViA9ICdwcm9kdWN0aW9uJworCit2YXIgb3JhID0gcmVx
dWlyZSgnb3JhJykKK3ZhciBybSA9IHJlcXVpcmUoJ3JpbXJhZicpCit2YXIgcGF0aCA9IHJlcXVp
cmUoJ3BhdGgnKQordmFyIGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKQordmFyIHdlYnBhY2sgPSBy
ZXF1aXJlKCd3ZWJwYWNrJykKK3ZhciBjb25maWcgPSByZXF1aXJlKCcuLi9jb25maWcnKQordmFy
IHdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2sucHJvZC5jb25mJykKKwordmFyIHNw
aW5uZXIgPSBvcmEoJ2J1aWxkaW5nIGZvciBwcm9kdWN0aW9uLi4uJykKK3NwaW5uZXIuc3RhcnQo
KQorCitybShwYXRoLmpvaW4oY29uZmlnLmJ1aWxkLmFzc2V0c1Jvb3QsIGNvbmZpZy5idWlsZC5h
c3NldHNTdWJEaXJlY3RvcnkpLCBlcnIgPT4geworICBpZiAoZXJyKSB0aHJvdyBlcnIKKyAgd2Vi
cGFjayh3ZWJwYWNrQ29uZmlnLCBmdW5jdGlvbiAoZXJyLCBzdGF0cykgeworICAgIHNwaW5uZXIu
c3RvcCgpCisgICAgaWYgKGVycikgdGhyb3cgZXJyCisgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUo
c3RhdHMudG9TdHJpbmcoeworICAgICAgY29sb3JzOiB0cnVlLAorICAgICAgbW9kdWxlczogZmFs
c2UsCisgICAgICBjaGlsZHJlbjogZmFsc2UsCisgICAgICBjaHVua3M6IGZhbHNlLAorICAgICAg
Y2h1bmtNb2R1bGVzOiBmYWxzZQorICAgIH0pICsgJ1xuXG4nKQorCisgICAgaWYgKHN0YXRzLmhh
c0Vycm9ycygpKSB7CisgICAgICBjb25zb2xlLmxvZyhjaGFsay5yZWQoJyAgQnVpbGQgZmFpbGVk
IHdpdGggZXJyb3JzLlxuJykpCisgICAgICBwcm9jZXNzLmV4aXQoMSkKKyAgICB9CisKKyAgICBj
b25zb2xlLmxvZyhjaGFsay5jeWFuKCcgIEJ1aWxkIGNvbXBsZXRlLlxuJykpCisgICAgY29uc29s
ZS5sb2coY2hhbGsueWVsbG93KAorICAgICAgJyAgVGlwOiBidWlsdCBmaWxlcyBhcmUgbWVhbnQg
dG8gYmUgc2VydmVkIG92ZXIgYW4gSFRUUCBzZXJ2ZXIuXG4nICsKKyAgICAgICcgIE9wZW5pbmcg
aW5kZXguaHRtbCBvdmVyIGZpbGU6Ly8gd29uXCd0IHdvcmsuXG4nCisgICAgKSkKKyAgfSkKK30p
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvY2hlY2stdmVyc2lvbnMu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvY2hlY2stdmVyc2lvbnMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjNlN2UxN2UzNDA1MzJjZGI0MjczYjVkMzllOGUyNDNhNDk4NGUyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9jaGVjay12ZXJzaW9ucy5qcwpA
QCAtMCwwICsxLDQ4IEBACit2YXIgY2hhbGsgPSByZXF1aXJlKCdjaGFsaycpCit2YXIgc2VtdmVy
ID0gcmVxdWlyZSgnc2VtdmVyJykKK3ZhciBwYWNrYWdlQ29uZmlnID0gcmVxdWlyZSgnLi4vcGFj
a2FnZS5qc29uJykKK3ZhciBzaGVsbCA9IHJlcXVpcmUoJ3NoZWxsanMnKQorZnVuY3Rpb24gZXhl
YyAoY21kKSB7CisgIHJldHVybiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMoY21k
KS50b1N0cmluZygpLnRyaW0oKQorfQorCit2YXIgdmVyc2lvblJlcXVpcmVtZW50cyA9IFsKKyAg
eworICAgIG5hbWU6ICdub2RlJywKKyAgICBjdXJyZW50VmVyc2lvbjogc2VtdmVyLmNsZWFuKHBy
b2Nlc3MudmVyc2lvbiksCisgICAgdmVyc2lvblJlcXVpcmVtZW50OiBwYWNrYWdlQ29uZmlnLmVu
Z2luZXMubm9kZQorICB9CitdCisKK2lmIChzaGVsbC53aGljaCgnbnBtJykpIHsKKyAgdmVyc2lv
blJlcXVpcmVtZW50cy5wdXNoKHsKKyAgICBuYW1lOiAnbnBtJywKKyAgICBjdXJyZW50VmVyc2lv
bjogZXhlYygnbnBtIC0tdmVyc2lvbicpLAorICAgIHZlcnNpb25SZXF1aXJlbWVudDogcGFja2Fn
ZUNvbmZpZy5lbmdpbmVzLm5wbQorICB9KQorfQorCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIHdhcm5pbmdzID0gW10KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB2ZXJzaW9u
UmVxdWlyZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIG1vZCA9IHZlcnNpb25SZXF1aXJl
bWVudHNbaV0KKyAgICBpZiAoIXNlbXZlci5zYXRpc2ZpZXMobW9kLmN1cnJlbnRWZXJzaW9uLCBt
b2QudmVyc2lvblJlcXVpcmVtZW50KSkgeworICAgICAgd2FybmluZ3MucHVzaChtb2QubmFtZSAr
ICc6ICcgKworICAgICAgICBjaGFsay5yZWQobW9kLmN1cnJlbnRWZXJzaW9uKSArICcgc2hvdWxk
IGJlICcgKworICAgICAgICBjaGFsay5ncmVlbihtb2QudmVyc2lvblJlcXVpcmVtZW50KQorICAg
ICAgKQorICAgIH0KKyAgfQorCisgIGlmICh3YXJuaW5ncy5sZW5ndGgpIHsKKyAgICBjb25zb2xl
LmxvZygnJykKKyAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coJ1RvIHVzZSB0aGlzIHRlbXBs
YXRlLCB5b3UgbXVzdCB1cGRhdGUgZm9sbG93aW5nIHRvIG1vZHVsZXM6JykpCisgICAgY29uc29s
ZS5sb2coKQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2FybmluZ3MubGVuZ3RoOyBpKyspIHsK
KyAgICAgIHZhciB3YXJuaW5nID0gd2FybmluZ3NbaV0KKyAgICAgIGNvbnNvbGUubG9nKCcgICcg
KyB3YXJuaW5nKQorICAgIH0KKyAgICBjb25zb2xlLmxvZygpCisgICAgcHJvY2Vzcy5leGl0KDEp
CisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtY2xp
ZW50LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL2Rldi1jbGllbnQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMThhYTFlMjE5NTJiOTQ2OGRkNWE3ZTYwM2ViOTk2NmQwMzdkMmYxYQotLS0gL2Rldi9u
dWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC9kZXYtY2xpZW50LmpzCkBAIC0w
LDAgKzEsOSBAQAorLyogZXNsaW50LWRpc2FibGUgKi8KK3JlcXVpcmUoJ2V2ZW50c291cmNlLXBv
bHlmaWxsJykKK3ZhciBob3RDbGllbnQgPSByZXF1aXJlKCd3ZWJwYWNrLWhvdC1taWRkbGV3YXJl
L2NsaWVudD9ub0luZm89dHJ1ZSZyZWxvYWQ9dHJ1ZScpCisKK2hvdENsaWVudC5zdWJzY3JpYmUo
ZnVuY3Rpb24gKGV2ZW50KSB7CisgIGlmIChldmVudC5hY3Rpb24gPT09ICdyZWxvYWQnKSB7Cisg
ICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpCisgIH0KK30pCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy92dWVqcy1jbGkvYnVpbGQvZGV2LXNlcnZlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNs
aS9idWlsZC9kZXYtc2VydmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMjdjYWUyNzU2YjY1MTgxN2IyODQ2
MmJjMzNhOTFjY2ViODc4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1j
bGkvYnVpbGQvZGV2LXNlcnZlci5qcwpAQCAtMCwwICsxLDkyIEBACityZXF1aXJlKCcuL2NoZWNr
LXZlcnNpb25zJykoKQorCit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK2lmICgh
cHJvY2Vzcy5lbnYuTk9ERV9FTlYpIHsKKyAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSBKU09OLnBh
cnNlKGNvbmZpZy5kZXYuZW52Lk5PREVfRU5WKQorfQorCit2YXIgb3BuID0gcmVxdWlyZSgnb3Bu
JykKK3ZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpCit2YXIgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4
cHJlc3MnKQordmFyIHdlYnBhY2sgPSByZXF1aXJlKCd3ZWJwYWNrJykKK3ZhciBwcm94eU1pZGRs
ZXdhcmUgPSByZXF1aXJlKCdodHRwLXByb3h5LW1pZGRsZXdhcmUnKQordmFyIHdlYnBhY2tDb25m
aWcgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0aW5nJyB8fCBwcm9jZXNzLmVudi5O
T0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKQorICA/IHJlcXVpcmUoJy4vd2VicGFjay5wcm9kLmNv
bmYnKQorICA6IHJlcXVpcmUoJy4vd2VicGFjay5kZXYuY29uZicpCisKKy8vIGRlZmF1bHQgcG9y
dCB3aGVyZSBkZXYgc2VydmVyIGxpc3RlbnMgZm9yIGluY29taW5nIHRyYWZmaWMKK3ZhciBwb3J0
ID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCBjb25maWcuZGV2LnBvcnQKKy8vIGF1dG9tYXRpY2FsbHkg
b3BlbiBicm93c2VyLCBpZiBub3Qgc2V0IHdpbGwgYmUgZmFsc2UKK3ZhciBhdXRvT3BlbkJyb3dz
ZXIgPSAhIWNvbmZpZy5kZXYuYXV0b09wZW5Ccm93c2VyCisvLyBEZWZpbmUgSFRUUCBwcm94aWVz
IHRvIHlvdXIgY3VzdG9tIEFQSSBiYWNrZW5kCisvLyBodHRwczovL2dpdGh1Yi5jb20vY2hpbXVy
YWkvaHR0cC1wcm94eS1taWRkbGV3YXJlCit2YXIgcHJveHlUYWJsZSA9IGNvbmZpZy5kZXYucHJv
eHlUYWJsZQorCit2YXIgYXBwID0gZXhwcmVzcygpCit2YXIgY29tcGlsZXIgPSB3ZWJwYWNrKHdl
YnBhY2tDb25maWcpCisKK3ZhciBkZXZNaWRkbGV3YXJlID0gcmVxdWlyZSgnd2VicGFjay1kZXYt
bWlkZGxld2FyZScpKGNvbXBpbGVyLCB7CisgIHB1YmxpY1BhdGg6IHdlYnBhY2tDb25maWcub3V0
cHV0LnB1YmxpY1BhdGgsCisgIHF1aWV0OiB0cnVlCit9KQorCit2YXIgaG90TWlkZGxld2FyZSA9
IHJlcXVpcmUoJ3dlYnBhY2staG90LW1pZGRsZXdhcmUnKShjb21waWxlciwgeworICBsb2c6IGZh
bHNlLAorICBoZWFydGJlYXQ6IDIwMDAKK30pCisvLyBmb3JjZSBwYWdlIHJlbG9hZCB3aGVuIGh0
bWwtd2VicGFjay1wbHVnaW4gdGVtcGxhdGUgY2hhbmdlcworY29tcGlsZXIucGx1Z2luKCdjb21w
aWxhdGlvbicsIGZ1bmN0aW9uIChjb21waWxhdGlvbikgeworICBjb21waWxhdGlvbi5wbHVnaW4o
J2h0bWwtd2VicGFjay1wbHVnaW4tYWZ0ZXItZW1pdCcsIGZ1bmN0aW9uIChkYXRhLCBjYikgewor
ICAgIGhvdE1pZGRsZXdhcmUucHVibGlzaCh7IGFjdGlvbjogJ3JlbG9hZCcgfSkKKyAgICBjYigp
CisgIH0pCit9KQorCisvLyBwcm94eSBhcGkgcmVxdWVzdHMKK09iamVjdC5rZXlzKHByb3h5VGFi
bGUpLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHsKKyAgdmFyIG9wdGlvbnMgPSBwcm94eVRh
YmxlW2NvbnRleHRdCisgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHsKKyAgICBv
cHRpb25zID0geyB0YXJnZXQ6IG9wdGlvbnMgfQorICB9CisgIGFwcC51c2UocHJveHlNaWRkbGV3
YXJlKG9wdGlvbnMuZmlsdGVyIHx8IGNvbnRleHQsIG9wdGlvbnMpKQorfSkKKworLy8gaGFuZGxl
IGZhbGxiYWNrIGZvciBIVE1MNSBoaXN0b3J5IEFQSQorYXBwLnVzZShyZXF1aXJlKCdjb25uZWN0
LWhpc3RvcnktYXBpLWZhbGxiYWNrJykoKSkKKworLy8gc2VydmUgd2VicGFjayBidW5kbGUgb3V0
cHV0CithcHAudXNlKGRldk1pZGRsZXdhcmUpCisKKy8vIGVuYWJsZSBob3QtcmVsb2FkIGFuZCBz
dGF0ZS1wcmVzZXJ2aW5nCisvLyBjb21waWxhdGlvbiBlcnJvciBkaXNwbGF5CithcHAudXNlKGhv
dE1pZGRsZXdhcmUpCisKKy8vIHNlcnZlIHB1cmUgc3RhdGljIGFzc2V0cwordmFyIHN0YXRpY1Bh
dGggPSBwYXRoLnBvc2l4LmpvaW4oY29uZmlnLmRldi5hc3NldHNQdWJsaWNQYXRoLCBjb25maWcu
ZGV2LmFzc2V0c1N1YkRpcmVjdG9yeSkKK2FwcC51c2Uoc3RhdGljUGF0aCwgZXhwcmVzcy5zdGF0
aWMoJy4vc3RhdGljJykpCisKK3ZhciB1cmkgPSAnaHR0cDovL2xvY2FsaG9zdDonICsgcG9ydAor
Cit2YXIgX3Jlc29sdmUKK3ZhciByZWFkeVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgX3Jlc29sdmUgPSByZXNvbHZlCit9KQorCitjb25zb2xlLmxvZygnPiBTdGFydGluZyBk
ZXYgc2VydmVyLi4uJykKK2Rldk1pZGRsZXdhcmUud2FpdFVudGlsVmFsaWQoKCkgPT4geworICBj
b25zb2xlLmxvZygnPiBMaXN0ZW5pbmcgYXQgJyArIHVyaSArICdcbicpCisgIC8vIHdoZW4gZW52
IGlzIHRlc3RpbmcsIGRvbid0IG5lZWQgb3BlbiBpdAorICBpZiAoYXV0b09wZW5Ccm93c2VyICYm
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdGluZycpIHsKKyAgICBvcG4odXJpKQorICB9
CisgIF9yZXNvbHZlKCkKK30pCisKK3ZhciBzZXJ2ZXIgPSBhcHAubGlzdGVuKHBvcnQpCisKK21v
ZHVsZS5leHBvcnRzID0geworICByZWFkeTogcmVhZHlQcm9taXNlLAorICBjbG9zZTogKCkgPT4g
eworICAgIHNlcnZlci5jbG9zZSgpCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9idWlsZC91dGlscy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9idWlsZC91dGls
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMWQ1NGI0ZDZjNTUxNjIzZDc2OWJlMGQwMmEyYTRmZWZkYTE5MmMy
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3V0aWxzLmpz
CkBAIC0wLDAgKzEsNzEgQEAKK3ZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpCit2YXIgY29uZmln
ID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3ZhciBFeHRyYWN0VGV4dFBsdWdpbiA9IHJlcXVpcmUo
J2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbicpCisKK2V4cG9ydHMuYXNzZXRzUGF0aCA9IGZ1
bmN0aW9uIChfcGF0aCkgeworICB2YXIgYXNzZXRzU3ViRGlyZWN0b3J5ID0gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJworICAgID8gY29uZmlnLmJ1aWxkLmFzc2V0c1N1YkRp
cmVjdG9yeQorICAgIDogY29uZmlnLmRldi5hc3NldHNTdWJEaXJlY3RvcnkKKyAgcmV0dXJuIHBh
dGgucG9zaXguam9pbihhc3NldHNTdWJEaXJlY3RvcnksIF9wYXRoKQorfQorCitleHBvcnRzLmNz
c0xvYWRlcnMgPSBmdW5jdGlvbiAob3B0aW9ucykgeworICBvcHRpb25zID0gb3B0aW9ucyB8fCB7
fQorCisgIHZhciBjc3NMb2FkZXIgPSB7CisgICAgbG9hZGVyOiAnY3NzLWxvYWRlcicsCisgICAg
b3B0aW9uczogeworICAgICAgbWluaW1pemU6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJv
ZHVjdGlvbicsCisgICAgICBzb3VyY2VNYXA6IG9wdGlvbnMuc291cmNlTWFwCisgICAgfQorICB9
CisKKyAgLy8gZ2VuZXJhdGUgbG9hZGVyIHN0cmluZyB0byBiZSB1c2VkIHdpdGggZXh0cmFjdCB0
ZXh0IHBsdWdpbgorICBmdW5jdGlvbiBnZW5lcmF0ZUxvYWRlcnMgKGxvYWRlciwgbG9hZGVyT3B0
aW9ucykgeworICAgIHZhciBsb2FkZXJzID0gW2Nzc0xvYWRlcl0KKyAgICBpZiAobG9hZGVyKSB7
CisgICAgICBsb2FkZXJzLnB1c2goeworICAgICAgICBsb2FkZXI6IGxvYWRlciArICctbG9hZGVy
JywKKyAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgbG9hZGVyT3B0aW9ucywgewor
ICAgICAgICAgIHNvdXJjZU1hcDogb3B0aW9ucy5zb3VyY2VNYXAKKyAgICAgICAgfSkKKyAgICAg
IH0pCisgICAgfQorCisgICAgLy8gRXh0cmFjdCBDU1Mgd2hlbiB0aGF0IG9wdGlvbiBpcyBzcGVj
aWZpZWQKKyAgICAvLyAod2hpY2ggaXMgdGhlIGNhc2UgZHVyaW5nIHByb2R1Y3Rpb24gYnVpbGQp
CisgICAgaWYgKG9wdGlvbnMuZXh0cmFjdCkgeworICAgICAgcmV0dXJuIEV4dHJhY3RUZXh0UGx1
Z2luLmV4dHJhY3QoeworICAgICAgICB1c2U6IGxvYWRlcnMsCisgICAgICAgIGZhbGxiYWNrOiAn
dnVlLXN0eWxlLWxvYWRlcicKKyAgICAgIH0pCisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBb
J3Z1ZS1zdHlsZS1sb2FkZXInXS5jb25jYXQobG9hZGVycykKKyAgICB9CisgIH0KKworICAvLyBo
dHRwczovL3Z1ZS1sb2FkZXIudnVlanMub3JnL2VuL2NvbmZpZ3VyYXRpb25zL2V4dHJhY3QtY3Nz
Lmh0bWwKKyAgcmV0dXJuIHsKKyAgICBjc3M6IGdlbmVyYXRlTG9hZGVycygpLAorICAgIHBvc3Rj
c3M6IGdlbmVyYXRlTG9hZGVycygpLAorICAgIGxlc3M6IGdlbmVyYXRlTG9hZGVycygnbGVzcycp
LAorICAgIHNhc3M6IGdlbmVyYXRlTG9hZGVycygnc2FzcycsIHsgaW5kZW50ZWRTeW50YXg6IHRy
dWUgfSksCisgICAgc2NzczogZ2VuZXJhdGVMb2FkZXJzKCdzYXNzJyksCisgICAgc3R5bHVzOiBn
ZW5lcmF0ZUxvYWRlcnMoJ3N0eWx1cycpLAorICAgIHN0eWw6IGdlbmVyYXRlTG9hZGVycygnc3R5
bHVzJykKKyAgfQorfQorCisvLyBHZW5lcmF0ZSBsb2FkZXJzIGZvciBzdGFuZGFsb25lIHN0eWxl
IGZpbGVzIChvdXRzaWRlIG9mIC52dWUpCitleHBvcnRzLnN0eWxlTG9hZGVycyA9IGZ1bmN0aW9u
IChvcHRpb25zKSB7CisgIHZhciBvdXRwdXQgPSBbXQorICB2YXIgbG9hZGVycyA9IGV4cG9ydHMu
Y3NzTG9hZGVycyhvcHRpb25zKQorICBmb3IgKHZhciBleHRlbnNpb24gaW4gbG9hZGVycykgewor
ICAgIHZhciBsb2FkZXIgPSBsb2FkZXJzW2V4dGVuc2lvbl0KKyAgICBvdXRwdXQucHVzaCh7Cisg
ICAgICB0ZXN0OiBuZXcgUmVnRXhwKCdcXC4nICsgZXh0ZW5zaW9uICsgJyQnKSwKKyAgICAgIHVz
ZTogbG9hZGVyCisgICAgfSkKKyAgfQorICByZXR1cm4gb3V0cHV0Cit9CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvdnVlLWxvYWRlci5jb25mLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2J1aWxkL3Z1ZS1sb2FkZXIuY29uZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTM0NmQ1
MjIyNmMwNzhkZWU3MDU5MmU1MmEzNjVhMjZjNGUwNTE0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3Z1ZS1sb2FkZXIuY29uZi5qcwpAQCAtMCwwICsxLDE4
IEBACit2YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJykKK3ZhciBjb25maWcgPSByZXF1aXJl
KCcuLi9jb25maWcnKQordmFyIGlzUHJvZHVjdGlvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09
PSAncHJvZHVjdGlvbicKKworbW9kdWxlLmV4cG9ydHMgPSB7CisgIGxvYWRlcnM6IHV0aWxzLmNz
c0xvYWRlcnMoeworICAgIHNvdXJjZU1hcDogaXNQcm9kdWN0aW9uCisgICAgICA/IGNvbmZpZy5i
dWlsZC5wcm9kdWN0aW9uU291cmNlTWFwCisgICAgICA6IGNvbmZpZy5kZXYuY3NzU291cmNlTWFw
LAorICAgIGV4dHJhY3Q6IGlzUHJvZHVjdGlvbgorICB9KSwKKyAgdHJhbnNmb3JtVG9SZXF1aXJl
OiB7CisgICAgdmlkZW86ICdzcmMnLAorICAgIHNvdXJjZTogJ3NyYycsCisgICAgaW1nOiAnc3Jj
JywKKyAgICBpbWFnZTogJ3hsaW5rOmhyZWYnCisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmJhc2UuY29uZi5qcyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1
ZWpzLWNsaS9idWlsZC93ZWJwYWNrLmJhc2UuY29uZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzk5YzRlYjMx
MjhiNTk0YjUyMTI3NDMyOTEzN2ZmN2E5YmE1YmYwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2suYmFzZS5jb25mLmpzCkBAIC0wLDAgKzEsNzUg
QEAKK3ZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpCit2YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0
aWxzJykKK3ZhciBjb25maWcgPSByZXF1aXJlKCcuLi9jb25maWcnKQordmFyIHZ1ZUxvYWRlckNv
bmZpZyA9IHJlcXVpcmUoJy4vdnVlLWxvYWRlci5jb25mJykKKworZnVuY3Rpb24gcmVzb2x2ZSAo
ZGlyKSB7CisgIHJldHVybiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBkaXIpCit9CisKK21v
ZHVsZS5leHBvcnRzID0geworICBlbnRyeTogeworICAgIGFwcDogJy4vc3JjL21haW4uanMnCisg
IH0sCisgIG91dHB1dDogeworICAgIHBhdGg6IGNvbmZpZy5idWlsZC5hc3NldHNSb290LAorICAg
IGZpbGVuYW1lOiAnW25hbWVdLmpzJywKKyAgICBwdWJsaWNQYXRoOiBwcm9jZXNzLmVudi5OT0RF
X0VOViA9PT0gJ3Byb2R1Y3Rpb24nCisgICAgICA/IGNvbmZpZy5idWlsZC5hc3NldHNQdWJsaWNQ
YXRoCisgICAgICA6IGNvbmZpZy5kZXYuYXNzZXRzUHVibGljUGF0aAorICB9LAorICByZXNvbHZl
OiB7CisgICAgZXh0ZW5zaW9uczogWycuanMnLCAnLnZ1ZScsICcuanNvbiddLAorICAgIGFsaWFz
OiB7CisgICAgICAndnVlJCc6ICd2dWUvZGlzdC92dWUuZXNtLmpzJywKKyAgICAgICdAJzogcmVz
b2x2ZSgnc3JjJyksCisgICAgfQorICB9LAorICBtb2R1bGU6IHsKKyAgICBydWxlczogWworICAg
ICAgeworICAgICAgICB0ZXN0OiAvXC4oanN8dnVlKSQvLAorICAgICAgICBsb2FkZXI6ICdlc2xp
bnQtbG9hZGVyJywKKyAgICAgICAgZW5mb3JjZTogJ3ByZScsCisgICAgICAgIGluY2x1ZGU6IFty
ZXNvbHZlKCdzcmMnKSwgcmVzb2x2ZSgndGVzdCcpXSwKKyAgICAgICAgb3B0aW9uczogeworICAg
ICAgICAgIGZvcm1hdHRlcjogcmVxdWlyZSgnZXNsaW50LWZyaWVuZGx5LWZvcm1hdHRlcicpCisg
ICAgICAgIH0KKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRlc3Q6IC9cLnZ1ZSQvLAorICAg
ICAgICBsb2FkZXI6ICd2dWUtbG9hZGVyJywKKyAgICAgICAgb3B0aW9uczogdnVlTG9hZGVyQ29u
ZmlnCisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAvXC5qcyQvLAorICAgICAgICBs
b2FkZXI6ICdiYWJlbC1sb2FkZXInLAorICAgICAgICBpbmNsdWRlOiBbcmVzb2x2ZSgnc3JjJyks
IHJlc29sdmUoJ3Rlc3QnKV0KKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHRlc3Q6IC9cLihw
bmd8anBlP2d8Z2lmfHN2ZykoXD8uKik/JC8sCisgICAgICAgIGxvYWRlcjogJ3VybC1sb2FkZXIn
LAorICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgbGltaXQ6IDEwMDAwLAorICAgICAgICAg
IG5hbWU6IHV0aWxzLmFzc2V0c1BhdGgoJ2ltZy9bbmFtZV0uW2hhc2g6N10uW2V4dF0nKQorICAg
ICAgICB9CisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAvXC4obXA0fHdlYm18b2dn
fG1wM3x3YXZ8ZmxhY3xhYWMpKFw/LiopPyQvLAorICAgICAgICBsb2FkZXI6ICd1cmwtbG9hZGVy
JywKKyAgICAgICAgb3B0aW9uczogeworICAgICAgICAgIGxpbWl0OiAxMDAwMCwKKyAgICAgICAg
ICBuYW1lOiB1dGlscy5hc3NldHNQYXRoKCdtZWRpYS9bbmFtZV0uW2hhc2g6N10uW2V4dF0nKQor
ICAgICAgICB9CisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAvXC4od29mZjI/fGVv
dHx0dGZ8b3RmKShcPy4qKT8kLywKKyAgICAgICAgbG9hZGVyOiAndXJsLWxvYWRlcicsCisgICAg
ICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICBsaW1pdDogMTAwMDAsCisgICAgICAgICAgbmFtZTog
dXRpbHMuYXNzZXRzUGF0aCgnZm9udHMvW25hbWVdLltoYXNoOjddLltleHRdJykKKyAgICAgICAg
fQorICAgICAgfQorICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL2J1aWxkL3dlYnBhY2suZGV2LmNvbmYuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVp
bGQvd2VicGFjay5kZXYuY29uZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDcwNDAyZDAzNzdjNGMzOTlmZWJm
YzQ4YWE2YjM1ODVlMzNjNmEyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL2J1aWxkL3dlYnBhY2suZGV2LmNvbmYuanMKQEAgLTAsMCArMSwzNSBAQAordmFyIHV0aWxz
ID0gcmVxdWlyZSgnLi91dGlscycpCit2YXIgd2VicGFjayA9IHJlcXVpcmUoJ3dlYnBhY2snKQor
dmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4uL2NvbmZpZycpCit2YXIgbWVyZ2UgPSByZXF1aXJlKCd3
ZWJwYWNrLW1lcmdlJykKK3ZhciBiYXNlV2VicGFja0NvbmZpZyA9IHJlcXVpcmUoJy4vd2VicGFj
ay5iYXNlLmNvbmYnKQordmFyIEh0bWxXZWJwYWNrUGx1Z2luID0gcmVxdWlyZSgnaHRtbC13ZWJw
YWNrLXBsdWdpbicpCit2YXIgRnJpZW5kbHlFcnJvcnNQbHVnaW4gPSByZXF1aXJlKCdmcmllbmRs
eS1lcnJvcnMtd2VicGFjay1wbHVnaW4nKQorCisvLyBhZGQgaG90LXJlbG9hZCByZWxhdGVkIGNv
ZGUgdG8gZW50cnkgY2h1bmtzCitPYmplY3Qua2V5cyhiYXNlV2VicGFja0NvbmZpZy5lbnRyeSku
Zm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICBiYXNlV2VicGFja0NvbmZpZy5lbnRyeVtuYW1l
XSA9IFsnLi9idWlsZC9kZXYtY2xpZW50J10uY29uY2F0KGJhc2VXZWJwYWNrQ29uZmlnLmVudHJ5
W25hbWVdKQorfSkKKworbW9kdWxlLmV4cG9ydHMgPSBtZXJnZShiYXNlV2VicGFja0NvbmZpZywg
eworICBtb2R1bGU6IHsKKyAgICBydWxlczogdXRpbHMuc3R5bGVMb2FkZXJzKHsgc291cmNlTWFw
OiBjb25maWcuZGV2LmNzc1NvdXJjZU1hcCB9KQorICB9LAorICAvLyBjaGVhcC1tb2R1bGUtZXZh
bC1zb3VyY2UtbWFwIGlzIGZhc3RlciBmb3IgZGV2ZWxvcG1lbnQKKyAgZGV2dG9vbDogJyNjaGVh
cC1tb2R1bGUtZXZhbC1zb3VyY2UtbWFwJywKKyAgcGx1Z2luczogWworICAgIG5ldyB3ZWJwYWNr
LkRlZmluZVBsdWdpbih7CisgICAgICAncHJvY2Vzcy5lbnYnOiBjb25maWcuZGV2LmVudgorICAg
IH0pLAorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nbGVuamFtaW4vd2VicGFjay1ob3QtbWlk
ZGxld2FyZSNpbnN0YWxsYXRpb24tLXVzYWdlCisgICAgbmV3IHdlYnBhY2suSG90TW9kdWxlUmVw
bGFjZW1lbnRQbHVnaW4oKSwKKyAgICBuZXcgd2VicGFjay5Ob0VtaXRPbkVycm9yc1BsdWdpbigp
LAorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBlZGFuZHdpcmVkL2h0bWwtd2VicGFjay1w
bHVnaW4KKyAgICBuZXcgSHRtbFdlYnBhY2tQbHVnaW4oeworICAgICAgZmlsZW5hbWU6ICdpbmRl
eC5odG1sJywKKyAgICAgIHRlbXBsYXRlOiAnaW5kZXguaHRtbCcsCisgICAgICBpbmplY3Q6IHRy
dWUKKyAgICB9KSwKKyAgICBuZXcgRnJpZW5kbHlFcnJvcnNQbHVnaW4oKQorICBdCit9KQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2sucHJvZC5jb25mLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2J1aWxkL3dlYnBhY2sucHJvZC5jb25mLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhkNGJjZTdiZTdkOWQzOTcyOWIwNTk2YzBmODJjNTM3YjkzNmUxZjAKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvYnVpbGQvd2VicGFjay5wcm9kLmNvbmYu
anMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpCit2YXIgdXRp
bHMgPSByZXF1aXJlKCcuL3V0aWxzJykKK3ZhciB3ZWJwYWNrID0gcmVxdWlyZSgnd2VicGFjaycp
Cit2YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJykKK3ZhciBtZXJnZSA9IHJlcXVpcmUo
J3dlYnBhY2stbWVyZ2UnKQordmFyIGJhc2VXZWJwYWNrQ29uZmlnID0gcmVxdWlyZSgnLi93ZWJw
YWNrLmJhc2UuY29uZicpCit2YXIgQ29weVdlYnBhY2tQbHVnaW4gPSByZXF1aXJlKCdjb3B5LXdl
YnBhY2stcGx1Z2luJykKK3ZhciBIdG1sV2VicGFja1BsdWdpbiA9IHJlcXVpcmUoJ2h0bWwtd2Vi
cGFjay1wbHVnaW4nKQordmFyIEV4dHJhY3RUZXh0UGx1Z2luID0gcmVxdWlyZSgnZXh0cmFjdC10
ZXh0LXdlYnBhY2stcGx1Z2luJykKK3ZhciBPcHRpbWl6ZUNTU1BsdWdpbiA9IHJlcXVpcmUoJ29w
dGltaXplLWNzcy1hc3NldHMtd2VicGFjay1wbHVnaW4nKQorCit2YXIgZW52ID0gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgPT09ICd0ZXN0aW5nJworICA/IHJlcXVpcmUoJy4uL2NvbmZpZy90ZXN0LmVu
dicpCisgIDogY29uZmlnLmJ1aWxkLmVudgorCit2YXIgd2VicGFja0NvbmZpZyA9IG1lcmdlKGJh
c2VXZWJwYWNrQ29uZmlnLCB7CisgIG1vZHVsZTogeworICAgIHJ1bGVzOiB1dGlscy5zdHlsZUxv
YWRlcnMoeworICAgICAgc291cmNlTWFwOiBjb25maWcuYnVpbGQucHJvZHVjdGlvblNvdXJjZU1h
cCwKKyAgICAgIGV4dHJhY3Q6IHRydWUKKyAgICB9KQorICB9LAorICBkZXZ0b29sOiBjb25maWcu
YnVpbGQucHJvZHVjdGlvblNvdXJjZU1hcCA/ICcjc291cmNlLW1hcCcgOiBmYWxzZSwKKyAgb3V0
cHV0OiB7CisgICAgcGF0aDogY29uZmlnLmJ1aWxkLmFzc2V0c1Jvb3QsCisgICAgZmlsZW5hbWU6
IHV0aWxzLmFzc2V0c1BhdGgoJ2pzL1tuYW1lXS5bY2h1bmtoYXNoXS5qcycpLAorICAgIGNodW5r
RmlsZW5hbWU6IHV0aWxzLmFzc2V0c1BhdGgoJ2pzL1tpZF0uW2NodW5raGFzaF0uanMnKQorICB9
LAorICBwbHVnaW5zOiBbCisgICAgLy8gaHR0cDovL3Z1ZWpzLmdpdGh1Yi5pby92dWUtbG9hZGVy
L2VuL3dvcmtmbG93L3Byb2R1Y3Rpb24uaHRtbAorICAgIG5ldyB3ZWJwYWNrLkRlZmluZVBsdWdp
bih7CisgICAgICAncHJvY2Vzcy5lbnYnOiBlbnYKKyAgICB9KSwKKyAgICBuZXcgd2VicGFjay5v
cHRpbWl6ZS5VZ2xpZnlKc1BsdWdpbih7CisgICAgICBjb21wcmVzczogeworICAgICAgICB3YXJu
aW5nczogZmFsc2UKKyAgICAgIH0sCisgICAgICBzb3VyY2VNYXA6IHRydWUKKyAgICB9KSwKKyAg
ICAvLyBleHRyYWN0IGNzcyBpbnRvIGl0cyBvd24gZmlsZQorICAgIG5ldyBFeHRyYWN0VGV4dFBs
dWdpbih7CisgICAgICBmaWxlbmFtZTogdXRpbHMuYXNzZXRzUGF0aCgnY3NzL1tuYW1lXS5bY29u
dGVudGhhc2hdLmNzcycpCisgICAgfSksCisgICAgLy8gQ29tcHJlc3MgZXh0cmFjdGVkIENTUy4g
V2UgYXJlIHVzaW5nIHRoaXMgcGx1Z2luIHNvIHRoYXQgcG9zc2libGUKKyAgICAvLyBkdXBsaWNh
dGVkIENTUyBmcm9tIGRpZmZlcmVudCBjb21wb25lbnRzIGNhbiBiZSBkZWR1cGVkLgorICAgIG5l
dyBPcHRpbWl6ZUNTU1BsdWdpbih7CisgICAgICBjc3NQcm9jZXNzb3JPcHRpb25zOiB7CisgICAg
ICAgIHNhZmU6IHRydWUKKyAgICAgIH0KKyAgICB9KSwKKyAgICAvLyBnZW5lcmF0ZSBkaXN0IGlu
ZGV4Lmh0bWwgd2l0aCBjb3JyZWN0IGFzc2V0IGhhc2ggZm9yIGNhY2hpbmcuCisgICAgLy8geW91
IGNhbiBjdXN0b21pemUgb3V0cHV0IGJ5IGVkaXRpbmcgL2luZGV4Lmh0bWwKKyAgICAvLyBzZWUg
aHR0cHM6Ly9naXRodWIuY29tL2FtcGVkYW5kd2lyZWQvaHRtbC13ZWJwYWNrLXBsdWdpbgorICAg
IG5ldyBIdG1sV2VicGFja1BsdWdpbih7CisgICAgICBmaWxlbmFtZTogcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgPT09ICd0ZXN0aW5nJworICAgICAgICA/ICdpbmRleC5odG1sJworICAgICAgICA6IGNv
bmZpZy5idWlsZC5pbmRleCwKKyAgICAgIHRlbXBsYXRlOiAnaW5kZXguaHRtbCcsCisgICAgICBp
bmplY3Q6IHRydWUsCisgICAgICBtaW5pZnk6IHsKKyAgICAgICAgcmVtb3ZlQ29tbWVudHM6IHRy
dWUsCisgICAgICAgIGNvbGxhcHNlV2hpdGVzcGFjZTogdHJ1ZSwKKyAgICAgICAgcmVtb3ZlQXR0
cmlidXRlUXVvdGVzOiB0cnVlCisgICAgICAgIC8vIG1vcmUgb3B0aW9uczoKKyAgICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL2thbmdheC9odG1sLW1pbmlmaWVyI29wdGlvbnMtcXVpY2stcmVm
ZXJlbmNlCisgICAgICB9LAorICAgICAgLy8gbmVjZXNzYXJ5IHRvIGNvbnNpc3RlbnRseSB3b3Jr
IHdpdGggbXVsdGlwbGUgY2h1bmtzIHZpYSBDb21tb25zQ2h1bmtQbHVnaW4KKyAgICAgIGNodW5r
c1NvcnRNb2RlOiAnZGVwZW5kZW5jeScKKyAgICB9KSwKKyAgICAvLyBrZWVwIG1vZHVsZS5pZCBz
dGFibGUgd2hlbiB2ZW5kZXIgbW9kdWxlcyBkb2VzIG5vdCBjaGFuZ2UKKyAgICBuZXcgd2VicGFj
ay5IYXNoZWRNb2R1bGVJZHNQbHVnaW4oKSwKKyAgICAvLyBzcGxpdCB2ZW5kb3IganMgaW50byBp
dHMgb3duIGZpbGUKKyAgICBuZXcgd2VicGFjay5vcHRpbWl6ZS5Db21tb25zQ2h1bmtQbHVnaW4o
eworICAgICAgbmFtZTogJ3ZlbmRvcicsCisgICAgICBtaW5DaHVua3M6IGZ1bmN0aW9uIChtb2R1
bGUsIGNvdW50KSB7CisgICAgICAgIC8vIGFueSByZXF1aXJlZCBtb2R1bGVzIGluc2lkZSBub2Rl
X21vZHVsZXMgYXJlIGV4dHJhY3RlZCB0byB2ZW5kb3IKKyAgICAgICAgcmV0dXJuICgKKyAgICAg
ICAgICBtb2R1bGUucmVzb3VyY2UgJiYKKyAgICAgICAgICAvXC5qcyQvLnRlc3QobW9kdWxlLnJl
c291cmNlKSAmJgorICAgICAgICAgIG1vZHVsZS5yZXNvdXJjZS5pbmRleE9mKAorICAgICAgICAg
ICAgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL25vZGVfbW9kdWxlcycpCisgICAgICAgICAgKSA9
PT0gMAorICAgICAgICApCisgICAgICB9CisgICAgfSksCisgICAgLy8gZXh0cmFjdCB3ZWJwYWNr
IHJ1bnRpbWUgYW5kIG1vZHVsZSBtYW5pZmVzdCB0byBpdHMgb3duIGZpbGUgaW4gb3JkZXIgdG8K
KyAgICAvLyBwcmV2ZW50IHZlbmRvciBoYXNoIGZyb20gYmVpbmcgdXBkYXRlZCB3aGVuZXZlciBh
cHAgYnVuZGxlIGlzIHVwZGF0ZWQKKyAgICBuZXcgd2VicGFjay5vcHRpbWl6ZS5Db21tb25zQ2h1
bmtQbHVnaW4oeworICAgICAgbmFtZTogJ21hbmlmZXN0JywKKyAgICAgIGNodW5rczogWyd2ZW5k
b3InXQorICAgIH0pLAorICAgIC8vIGNvcHkgY3VzdG9tIHN0YXRpYyBhc3NldHMKKyAgICBuZXcg
Q29weVdlYnBhY2tQbHVnaW4oWworICAgICAgeworICAgICAgICBmcm9tOiBwYXRoLnJlc29sdmUo
X19kaXJuYW1lLCAnLi4vc3RhdGljJyksCisgICAgICAgIHRvOiBjb25maWcuYnVpbGQuYXNzZXRz
U3ViRGlyZWN0b3J5LAorICAgICAgICBpZ25vcmU6IFsnLionXQorICAgICAgfQorICAgIF0pCisg
IF0KK30pCisKK2lmIChjb25maWcuYnVpbGQucHJvZHVjdGlvbkd6aXApIHsKKyAgdmFyIENvbXBy
ZXNzaW9uV2VicGFja1BsdWdpbiA9IHJlcXVpcmUoJ2NvbXByZXNzaW9uLXdlYnBhY2stcGx1Z2lu
JykKKworICB3ZWJwYWNrQ29uZmlnLnBsdWdpbnMucHVzaCgKKyAgICBuZXcgQ29tcHJlc3Npb25X
ZWJwYWNrUGx1Z2luKHsKKyAgICAgIGFzc2V0OiAnW3BhdGhdLmd6W3F1ZXJ5XScsCisgICAgICBh
bGdvcml0aG06ICdnemlwJywKKyAgICAgIHRlc3Q6IG5ldyBSZWdFeHAoCisgICAgICAgICdcXC4o
JyArCisgICAgICAgIGNvbmZpZy5idWlsZC5wcm9kdWN0aW9uR3ppcEV4dGVuc2lvbnMuam9pbign
fCcpICsKKyAgICAgICAgJykkJworICAgICAgKSwKKyAgICAgIHRocmVzaG9sZDogMTAyNDAsCisg
ICAgICBtaW5SYXRpbzogMC44CisgICAgfSkKKyAgKQorfQorCitpZiAoY29uZmlnLmJ1aWxkLmJ1
bmRsZUFuYWx5emVyUmVwb3J0KSB7CisgIHZhciBCdW5kbGVBbmFseXplclBsdWdpbiA9IHJlcXVp
cmUoJ3dlYnBhY2stYnVuZGxlLWFuYWx5emVyJykuQnVuZGxlQW5hbHl6ZXJQbHVnaW4KKyAgd2Vi
cGFja0NvbmZpZy5wbHVnaW5zLnB1c2gobmV3IEJ1bmRsZUFuYWx5emVyUGx1Z2luKCkpCit9CisK
K21vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbmZpZwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
dnVlanMtY2xpL2J1aWxkL3dlYnBhY2sudGVzdC5jb25mLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL2J1aWxkL3dlYnBhY2sudGVzdC5jb25mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZjY0Y2MzMTk4NTRk
MGQwZGM4ZGY0YzYyNTM5MTQwNzgyZTFkNzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvYnVpbGQvd2VicGFjay50ZXN0LmNvbmYuanMKQEAgLTAsMCArMSwzMSBAQAor
Ly8gVGhpcyBpcyB0aGUgd2VicGFjayBjb25maWcgdXNlZCBmb3IgdW5pdCB0ZXN0cy4KKwordmFy
IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpCit2YXIgd2VicGFjayA9IHJlcXVpcmUoJ3dlYnBh
Y2snKQordmFyIG1lcmdlID0gcmVxdWlyZSgnd2VicGFjay1tZXJnZScpCit2YXIgYmFzZUNvbmZp
ZyA9IHJlcXVpcmUoJy4vd2VicGFjay5iYXNlLmNvbmYnKQorCit2YXIgd2VicGFja0NvbmZpZyA9
IG1lcmdlKGJhc2VDb25maWcsIHsKKyAgLy8gdXNlIGlubGluZSBzb3VyY2VtYXAgZm9yIGthcm1h
LXNvdXJjZW1hcC1sb2FkZXIKKyAgbW9kdWxlOiB7CisgICAgcnVsZXM6IHV0aWxzLnN0eWxlTG9h
ZGVycygpCisgIH0sCisgIGRldnRvb2w6ICcjaW5saW5lLXNvdXJjZS1tYXAnLAorICByZXNvbHZl
TG9hZGVyOiB7CisgICAgYWxpYXM6IHsKKyAgICAgIC8vIG5lY2Vzc2FyeSB0byB0byBtYWtlIGxh
bmc9InNjc3MiIHdvcmsgaW4gdGVzdCB3aGVuIHVzaW5nIHZ1ZS1sb2FkZXIncyA/aW5qZWN0IG9w
dGlvbgorICAgICAgLy8gc2VlIGRpc2N1c3Npb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpz
L3Z1ZS1sb2FkZXIvaXNzdWVzLzcyNAorICAgICAgJ3Njc3MtbG9hZGVyJzogJ3Nhc3MtbG9hZGVy
JworICAgIH0KKyAgfSwKKyAgcGx1Z2luczogWworICAgIG5ldyB3ZWJwYWNrLkRlZmluZVBsdWdp
bih7CisgICAgICAncHJvY2Vzcy5lbnYnOiByZXF1aXJlKCcuLi9jb25maWcvdGVzdC5lbnYnKQor
ICAgIH0pCisgIF0KK30pCisKKy8vIG5vIG5lZWQgZm9yIGFwcCBlbnRyeSBkdXJpbmcgdGVzdHMK
K2RlbGV0ZSB3ZWJwYWNrQ29uZmlnLmVudHJ5CisKK21vZHVsZS5leHBvcnRzID0gd2VicGFja0Nv
bmZpZwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5kZXguaHRtbCBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L2luZGV4Lmh0bWwKaW5kZXggMmEwY2VkYWFjNGI5
M2IyZjVlMTc3YWMyZjQ5ZDIwNjViZWJiMzI3YS4uMDhjMTE2ZmJjN2FlOWQ1ZmNmYWE2MDM2YWNk
ZDA3ZTQzY2MxNDBiNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3QvaW5k
ZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9pbmRleC5odG1sCkBAIC0x
ICsxIEBACi08IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PXV0Zi04Pjx0
aXRsZT52dWUtY2xpLXRvZG9tdmM8L3RpdGxlPjxsaW5rIGhyZWY9Li9zdGF0aWMvY3NzL2FwcC5k
Y2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MgcmVsPXN0eWxlc2hlZXQ+PC9oZWFk
Pjxib2R5PjxkaXYgaWQ9YXBwPjwvZGl2PjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQgc3Jj
PS4vc3RhdGljL2pzL21hbmlmZXN0LmEzMDdjN2Y5YTVkYTVkYzcyYmI1LmpzPjwvc2NyaXB0Pjxz
Y3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQgc3JjPS4vc3RhdGljL2pzL3ZlbmRvci4yZTRlOWU1
Mjg2NjRmYTc5NmQzYS5qcz48L3NjcmlwdD48c2NyaXB0IHR5cGU9dGV4dC9qYXZhc2NyaXB0IHNy
Yz0uL3N0YXRpYy9qcy9hcHAuZDZlZDg5MzU0MzhmNDRlOTg0M2EuanM+PC9zY3JpcHQ+PC9ib2R5
PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8IURPQ1RZUEUgaHRtbD48aHRt
bD48aGVhZD48bWV0YSBjaGFyc2V0PXV0Zi04Pjx0aXRsZT52dWUtY2xpLXRvZG9tdmM8L3RpdGxl
PjxsaW5rIGhyZWY9Li9zdGF0aWMvY3NzL2FwcC41YjQ3MDQwYTIzZWMzZmNiNzgwMzdkZTM5OGM1
MzU1Ny5jc3MgcmVsPXN0eWxlc2hlZXQ+PC9oZWFkPjxib2R5PjxkaXYgaWQ9YXBwPjwvZGl2Pjxz
Y3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQgc3JjPS4vc3RhdGljL2pzL21hbmlmZXN0LmFhOTk3
OGFhOTZlZTk0OGYyYTRjLmpzPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQg
c3JjPS4vc3RhdGljL2pzL3ZlbmRvci5lNzAwODAwMWE4YmVkMDA5YmJmMS5qcz48L3NjcmlwdD48
c2NyaXB0IHR5cGU9dGV4dC9qYXZhc2NyaXB0IHNyYz0uL3N0YXRpYy9qcy9hcHAuZTZjMDEwZDU3
ZDUzNTM3ZjRhZDIuanM+PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMv
Y3NzL2FwcC41YjQ3MDQwYTIzZWMzZmNiNzgwMzdkZTM5OGM1MzU1Ny5jc3MgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC41YjQ3MDQwYTIzZWMzZmNiNzgwMzdkZTM5
OGM1MzU1Ny5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRmZjVmNTU0Njc1ODk3MDRiNGYzNjkxOWM5NzQ5ZWZm
YTdiZjQwMAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0
YXRpYy9jc3MvYXBwLjViNDcwNDBhMjNlYzNmY2I3ODAzN2RlMzk4YzUzNTU3LmNzcwpAQCAtMCww
ICsxIEBACitib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVy
OjA7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5l
O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13
ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3Ro
aW5nOmFudGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlz
Y2FsZX1ib2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1z
ZXJpZjtsaW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0ZDtt
aW4td2lkdGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1mb250
LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6MH0u
aGlkZGVue2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4
IDAgNDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCww
LDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13ZWJr
aXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2Nv
bG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTpp
dGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6OmlucHV0
LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZl
NmU2fS50b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAwJTtm
b250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnJn
YmEoMTc1LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxp
dHk7LW1vei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6
b3B0aW1pemVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTttYXJn
aW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13
ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0O3Bh
ZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFweCA1
cHggMCByZ2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250LXNt
b290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lm5l
dy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5k
OnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAs
LjAzKX0ubWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29s
aWQgI2U2ZTZlNn0udG9nZ2xlLWFsbHt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZTtvcGFj
aXR5OjA7cG9zaXRpb246YWJzb2x1dGV9LnRvZ2dsZS1hbGwrbGFiZWx7d2lkdGg6NjBweDtoZWln
aHQ6MzRweDtmb250LXNpemU6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTUycHg7bGVmdDotMTNw
eDstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcp
fS50b2dnbGUtYWxsK2xhYmVsOmJlZm9yZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXplOjIycHg7
Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkK2xhYmVs
OmJlZm9yZXtjb2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qt
c3R5bGU6bm9uZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4
O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxk
e2JvcmRlci1ib3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpu
b25lO3BhZGRpbmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3
aWR0aDo1MDZweDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0
IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0
LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3Rv
cDowO2JvdHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNl
Om5vbmU7YXBwZWFyYW5jZTpub25lO29wYWNpdHk6MH0udG9kby1saXN0IGxpIC50b2dnbGUrbGFi
ZWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUy
MHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIy
NDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAl
MjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIl
M0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzZWRlZGVkJTIy
JTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Mvc3ZnJTNFIik7YmFja2dyb3VuZC1yZXBl
YXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MH0udG9kby1saXN0IGxpIC50b2dnbGU6
Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0
ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBLy93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIw
d2lkdGglM0QlMjI0MCUyMiUyMGhlaWdodCUzRCUyMjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUy
MC0xOCUyMDEwMCUyMDEzNSUyMiUzRSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUy
MjUwJTIyJTIwciUzRCUyMjUwJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIl
MjNiZGRhZDUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIzJTIyLyUzRSUzQ3BhdGglMjBmaWxsJTNE
JTIyJTIzNWRjMmFmJTIyJTIwZCUzRCUyMk03MiUyMDI1TDQyJTIwNzElMjAyNyUyMDU2bC00JTIw
NCUyMDIwJTIwMjAlMjAzNC01MnolMjIvJTNFJTNDL3N2ZyUzRSIpfS50b2RvLWxpc3QgbGkgbGFi
ZWx7d29yZC1icmVhazpicmVhay1hbGw7cGFkZGluZzoxNXB4IDE1cHggMTVweCA2MHB4O2Rpc3Bs
YXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4yO3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2RvLWxpc3Qg
bGkuY29tcGxldGVkIGxhYmVse2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhy
b3VnaH0udG9kby1saXN0IGxpIC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0
ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2lu
OmF1dG8gMDtmb250LXNpemU6MzBweDtjb2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206MTFweDt0
cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNlLW91dH0udG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVy
e2NvbG9yOiNhZjViNWV9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlcntjb250ZW50OiJcRDci
fS50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3l7ZGlzcGxheTpibG9ja30udG9kby1saXN0IGxp
IC5lZGl0e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZHttYXJn
aW4tYm90dG9tOi0xcHh9LmZvb3Rlcntjb2xvcjojNzc3O3BhZGRpbmc6MTBweCAxNXB4O2hlaWdo
dDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9LmZv
b3RlcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTow
O2xlZnQ6MDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDFweCAxcHgg
cmdiYSgwLDAsMCwuMiksMCA4cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHggMXB4IC0zcHggcmdiYSgw
LDAsMCwuMiksMCAxNnB4IDAgLTZweCAjZjZmNmY2LDAgMTdweCAycHggLTZweCByZ2JhKDAsMCww
LC4yKX0udG9kby1jb3VudHtmbG9hdDpsZWZ0O3RleHQtYWxpZ246bGVmdH0udG9kby1jb3VudCBz
dHJvbmd7Zm9udC13ZWlnaHQ6MzAwfS5maWx0ZXJze21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0
eWxlOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OjB9LmZpbHRlcnMgbGl7ZGlz
cGxheTppbmxpbmV9LmZpbHRlcnMgbGkgYXtjb2xvcjppbmhlcml0O21hcmdpbjozcHg7cGFkZGlu
ZzozcHggN3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJl
bnQ7Ym9yZGVyLXJhZGl1czozcHh9LmZpbHRlcnMgbGkgYTpob3Zlcntib3JkZXItY29sb3I6cmdi
YSgxNzUsNDcsNDcsLjEpfS5maWx0ZXJzIGxpIGEuc2VsZWN0ZWR7Ym9yZGVyLWNvbG9yOnJnYmEo
MTc1LDQ3LDQ3LC4yKX0uY2xlYXItY29tcGxldGVkLGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3Rp
dmV7ZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6MjBweDt0ZXh0LWRl
Y29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uY2xlYXItY29tcGxldGVkOmhvdmVye3RleHQt
ZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmluZm97bWFyZ2luOjY1cHggYXV0byAwO2NvbG9yOiNiZmJm
YmY7Zm9udC1zaXplOjEwcHg7dGV4dC1zaGFkb3c6MCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuNSk7
dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm8gcHtsaW5lLWhlaWdodDoxfS5pbmZvIGF7Y29sb3I6aW5o
ZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo0MDB9LmluZm8gYTpob3Zlcnt0
ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1k
ZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnRvZG8tbGlzdCBsaSAudG9nZ2xlLC50b2dnbGUtYWxse2Jh
Y2tncm91bmQ6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7aGVpZ2h0OjQwcHh9fUBtZWRpYSAo
bWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdodDo1MHB4fS5maWx0ZXJze2JvdHRvbToxMHB4
fX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC41YjQ3MDQwYTIzZWMzZmNiNzgwMzdkZTM5OGM1
MzU1Ny5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAu
NWI0NzA0MGEyM2VjM2ZjYjc4MDM3ZGUzOThjNTM1NTcuY3NzLm1hcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Nzkw
ZjJhYTg3ZWJmNDAzYjU4YTE2NmFmZDE4NjUzYWU3ZDNhNmNhCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2Nzcy9hcHAuNWI0NzA0MGEyM2VjM2Zj
Yjc4MDM3ZGUzOThjNTM1NTcuY3NzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNv
dXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL3RvZG8uY3NzIl0sIm5hbWVzIjpb
XSwibWFwcGluZ3MiOiJBQU1BLGlCQUhJLFNBQ0EsU0FBVyxDQWdCZCxPQVhHLFNBQ0EsZ0JBQ0Es
ZUFDQSx3QkFDQSxvQkFDQSxvQkFDQSxjQUNBLHdCQUNBLGdCQUNBLGtDQUFvQyxDQUd4QyxZQUZJ
LGlDQUFtQyxDQWF0QyxLQVZHLG9EQUNBLGtCQUNBLG1CQUNBLGNBQ0EsZ0JBQ0EsZ0JBQ0EsY0FD
QSxtQ0FFQSxlQUFpQixDQUVyQixPQUNJLFNBQVcsQ0FFZixRQUNJLFlBQWMsQ0FFbEIsU0FDSSxn
QkFDQSxvQkFDQSxrQkFDQSxrRUFDNkMsQ0FFakQsMENBQ0ksa0JBQ0EsZ0JBQ0EsYUFBZSxDQUVu
QixpQ0FDSSxrQkFDQSxnQkFDQSxhQUFlLENBRW5CLGtDQUNJLGtCQUNBLGdCQUNBLGFBQWUsQ0FF
bkIsWUFDSSxrQkFDQSxXQUNBLFdBQ0EsZ0JBQ0EsZ0JBQ0Esa0JBQ0EsMEJBQ0EsMENBQ0EsdUNB
Q0EsaUNBQW1DLENBRXZDLGdCQUVJLGtCQUNBLFNBQ0EsV0FDQSxlQUNBLG9CQUNBLG9CQUNBLGtC
QUNBLFNBQ0EsY0FDQSxZQUNBLHNCQUNBLDZDQUNBLHNCQUNBLG1DQUNBLGlDQUFtQyxDQUV2QyxV
QUNJLDRCQUNBLFlBQ0EsNEJBQ0EsMkNBQThDLENBRWxELE1BQ0ksa0JBQ0EsVUFDQSw0QkFBOEIs
Q0FFbEMsWUFDSSxrQkFDQSxZQUNBLFVBQ0EsaUJBQW1CLENBRXZCLGtCQUNJLFdBQ0EsWUFDQSxZ
QUNBLGtCQUNBLFVBQ0EsV0FDQSxnQ0FDQSx1QkFBeUIsQ0FFN0IseUJBQ0ksZ0JBQ0EsZUFDQSxj
QUNBLGlCQUE2QixDQUVqQyxpQ0FDSSxhQUFlLENBRW5CLFdBQ0ksU0FDQSxVQUNBLGVBQWlCLENB
RXJCLGNBQ0ksa0JBQ0EsZUFDQSwrQkFBaUMsQ0FFckMseUJBQ0ksa0JBQW9CLENBRXhCLHNCQUNJ
LG1CQUNBLFNBQVcsQ0FFZiw0QkFDSSxjQUNBLFlBQ0Esa0JBQ0EsaUJBQW1CLENBRXZCLDRCQUNJ
LFlBQWMsQ0FFbEIsc0JBQ0ksa0JBQ0EsV0FFQSxZQUNBLGtCQUNBLE1BQ0EsU0FDQSxjQUNBLFlB
Q0Esd0JBQ0EsZ0JBR0EsU0FBVyxDQUVmLDRCQUtJLG9VQUNBLDRCQUNBLHFCQUFpQyxDQUVyQyxv
Q0FDSSx3YUFBMGEsQ0FFOWEsb0JBQ0kscUJBQ0EsNEJBQ0EsY0FDQSxnQkFDQSxvQkFBdUIsQ0FF
M0IsOEJBQ0ksY0FDQSw0QkFBOEIsQ0FFbEMsdUJBQ0ksYUFDQSxrQkFDQSxNQUNBLFdBQ0EsU0FD
QSxXQUNBLFlBQ0EsY0FDQSxlQUNBLGNBQ0EsbUJBQ0EsNkJBQWdDLENBRXBDLDZCQUNJLGFBQWUs
Q0FFbkIsNkJBQ0ksYUFBYSxDQUVqQiw2QkFDSSxhQUFlLENBRW5CLG9CQUNJLFlBQWMsQ0FFbEIs
aUNBQ0ksa0JBQW9CLENBRXhCLFFBQ0ksV0FDQSxrQkFDQSxZQUNBLGtCQUNBLDRCQUE4QixDQUVs
QyxlQUNJLFdBQ0Esa0JBQ0EsUUFDQSxTQUNBLE9BQ0EsWUFDQSxnQkFDQSwySUFJK0MsQ0FFbkQs
WUFDSSxXQUNBLGVBQWlCLENBRXJCLG1CQUNJLGVBQWlCLENBRXJCLFNBQ0ksU0FDQSxVQUNBLGdC
QUNBLGtCQUNBLFFBQ0EsTUFBUSxDQUVaLFlBQ0ksY0FBZ0IsQ0FFcEIsY0FDSSxjQUNBLFdBQ0Es
Z0JBQ0EscUJBQ0EsNkJBQ0EsaUJBQW1CLENBRXZCLG9CQUNJLCtCQUFxQyxDQUV6Qyx1QkFDSSwr
QkFBcUMsQ0FFekMsOENBRUksWUFDQSxrQkFDQSxpQkFDQSxxQkFDQSxjQUFnQixDQUVwQix1QkFD
SSx5QkFBMkIsQ0FFL0IsTUFDSSxtQkFDQSxjQUNBLGVBQ0EsdUNBQ0EsaUJBQW1CLENBRXZCLFFB
Q0ksYUFBZSxDQUVuQixRQUNJLGNBQ0EscUJBQ0EsZUFBaUIsQ0FFckIsY0FDSSx5QkFBMkIsQ0FP
L0IscURBQ0Esa0NBRVEsZUFBaUIsQ0FFekIsc0JBQ1EsV0FBYSxDQUNwQixDQUVELHlCQUNBLFFB
Q1EsV0FBYSxDQUVyQixTQUNRLFdBQWEsQ0FDcEIiLCJmaWxlIjoic3RhdGljL2Nzcy9hcHAuNWI0
NzA0MGEyM2VjM2ZjYjc4MDM3ZGUzOThjNTM1NTcuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiXG5o
dG1sLFxuYm9keSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5idXR0b24g
e1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBi
YWNrZ3JvdW5kOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICB2ZXJ0aWNhbC1hbGln
bjogYmFzZWxpbmU7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6
IGluaGVyaXQ7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1c
bmJvZHkge1xuICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlh
bCwgc2Fucy1zZXJpZjtcbiAgICBsaW5lLWhlaWdodDogMS40ZW07XG4gICAgYmFja2dyb3VuZDog
I2Y1ZjVmNTtcbiAgICBjb2xvcjogIzRkNGQ0ZDtcbiAgICBtaW4td2lkdGg6IDIzMHB4O1xuICAg
IG1heC13aWR0aDogNTUwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgLXdlYmtpdC1mb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdy
YXlzY2FsZTtcbiAgICBmb250LXdlaWdodDogMzAwO1xufVxuOmZvY3VzIHtcbiAgICBvdXRsaW5l
OiAwO1xufVxuLmhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi50b2RvYXBwIHtcbiAg
ICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7XG4gICAgcG9z
aXRpb246IHJlbGF0aXZlO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwg
MCwgMC4yKSxcbiAgICAgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4x
KTtcbn1cbi50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBm
b250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjb2xvcjogI2U2
ZTZlNjtcbn1cbi50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICBmb250LXN0
eWxlOiBpdGFsaWM7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjb2xvcjogI2U2ZTZlNjtc
bn1cbi50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgZm9udC1zdHlsZTog
aXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgY29sb3I6ICNlNmU2ZTY7XG59XG4u
dG9kb2FwcCBoMSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTE1NXB4O1xu
ICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTAwcHg7XG4gICAgZm9udC13ZWlnaHQ6
IDEwMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHJnYmEoMTc1LCA0Nywg
NDcsIDAuMTUpO1xuICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0
eTtcbiAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gICAgdGV4
dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbn1cbi5uZXctdG9kbyxcbi5lZGl0IHtc
biAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdpZHRoOiAxMDAl
O1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICBm
b250LXdlaWdodDogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogMS40ZW07XG4gICAgYm9yZGVy
OiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHBhZGRpbmc6IDZweDtcbiAgICBib3JkZXI6
IDFweCBzb2xpZCAjOTk5O1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2Jh
KDAsIDAsIDAsIDAuMik7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGlu
ZzogZ3JheXNjYWxlO1xufVxuLm5ldy10b2RvIHtcbiAgICBwYWRkaW5nOiAxNnB4IDE2cHggMTZw
eCA2MHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAs
IDAuMDAzKTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4w
Myk7XG59XG4ubWFpbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDI7
XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNmU2ZTY7XG59XG4udG9nZ2xlLWFsbCB7XG4g
ICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFy
aSAqL1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnRvZ2ds
ZS1hbGwgKyBsYWJlbCB7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAg
IGZvbnQtc2l6ZTogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtNTJweDtc
biAgICBsZWZ0OiAtMTNweDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtc
biAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG4udG9nZ2xlLWFsbCArIGxhYmVsOmJl
Zm9yZSB7XG4gICAgY29udGVudDogJ+Kdryc7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGNv
bG9yOiAjZTZlNmU2O1xuICAgIHBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3cHg7XG59XG4udG9n
Z2xlLWFsbDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBjb2xvcjogIzczNzM3Mztcbn1c
bi50b2RvLWxpc3Qge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qt
c3R5bGU6IG5vbmU7XG59XG4udG9kby1saXN0IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7
XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRl
ZGVkO1xufVxuLnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiBu
b25lO1xufVxuLnRvZG8tbGlzdCBsaS5lZGl0aW5nIHtcbiAgICBib3JkZXItYm90dG9tOiBub25l
O1xuICAgIHBhZGRpbmc6IDA7XG59XG4udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQge1xuICAg
IGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA1MDZweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2
cHg7XG4gICAgbWFyZ2luOiAwIDAgMCA0M3B4O1xufVxuLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52
aWV3IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHtcbiAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgLyogYXV0bywgc2lu
Y2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqL1xu
ICAgIGhlaWdodDogYXV0bztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xu
ICAgIGJvdHRvbTogMDtcbiAgICBtYXJnaW46IGF1dG8gMDtcbiAgICBib3JkZXI6IG5vbmU7IC8q
IE1vYmlsZSBTYWZhcmkgKi9cbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBw
ZWFyYW5jZTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7XG4gICAgb3BhY2l0eTog
MDtcbn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZSArIGxhYmVsIHtcbiAgICAvKlxuICAgICAgICBG
aXJlZm94IHJlcXVpcmVzIGAjYCB0byBiZSBlc2NhcGVkIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIyNDMzXG4gICAgICAgIElFIGFuZCBFZGdlIHJlcXVp
cmVzICpldmVyeXRoaW5nKiB0byBiZSBlc2NhcGVkIHRvIHJlbmRlciwgc28gd2UgZG8gdGhhdCBp
bnN0ZWFkIG9mIGp1c3QgdGhlIGAjYCAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVzLzcxNTc0NTkvXG4gICAgKi9cbiAg
ICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUy
MHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIy
NDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAl
MjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIl
M0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzZWRlZGVkJTIy
JTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Mvc3ZnJTNFJyk7XG4gICAgYmFja2dyb3Vu
ZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVm
dDtcbn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkICsgbGFiZWwge1xuICAgIGJhY2tn
cm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMl
M0QlMjJodHRwJTNBLy93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUy
MGhlaWdodCUzRCUyMjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUy
MiUzRSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUw
JTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNiZGRhZDUlMjIlMjBzdHJv
a2Utd2lkdGglM0QlMjIzJTIyLyUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzNWRjMmFmJTIyJTIw
ZCUzRCUyMk03MiUyMDI1TDQyJTIwNzElMjAyNyUyMDU2bC00JTIwNCUyMDIwJTIwMjAlMjAzNC01
MnolMjIvJTNFJTNDL3N2ZyUzRScpO1xufVxuLnRvZG8tbGlzdCBsaSBsYWJlbCB7XG4gICAgd29y
ZC1icmVhazogYnJlYWstYWxsO1xuICAgIHBhZGRpbmc6IDE1cHggMTVweCAxNXB4IDYwcHg7XG4g
ICAgZGlzcGxheTogYmxvY2s7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB0cmFuc2l0aW9u
OiBjb2xvciAwLjRzO1xufVxuLnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwge1xuICAgIGNv
bG9yOiAjZDlkOWQ5O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xufVxuLnRv
ZG8tbGlzdCBsaSAuZGVzdHJveSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjog
YWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIGJvdHRvbTogMDtc
biAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbWFyZ2luOiBhdXRvIDA7
XG4gICAgZm9udC1zaXplOiAzMHB4O1xuICAgIGNvbG9yOiAjY2M5YTlhO1xuICAgIG1hcmdpbi1i
b3R0b206IDExcHg7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDtcbn1cbi50
b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIge1xuICAgIGNvbG9yOiAjYWY1YjVlO1xufVxuLnRv
ZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7XG4gICAgY29udGVudDogJ8OXJztcbn1cbi50b2Rv
LWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuLnRvZG8t
bGlzdCBsaSAuZWRpdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkuZWRp
dGluZzpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xufVxuLmZvb3RlciB7
XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgcGFkZGluZzogMTBweCAxNXB4O1xuICAgIGhlaWdodDog
MjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlk
ICNlNmU2ZTY7XG59XG4uZm9vdGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9z
aXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0
OiAwO1xuICAgIGhlaWdodDogNTBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1z
aGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMiksXG4gICAgICAgICAgICAgICAgMCA4
cHggMCAtM3B4ICNmNmY2ZjYsXG4gICAgICAgICAgICAgICAgMCA5cHggMXB4IC0zcHggcmdiYSgw
LCAwLCAwLCAwLjIpLFxuICAgICAgICAgICAgICAgIDAgMTZweCAwIC02cHggI2Y2ZjZmNixcbiAg
ICAgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuLnRv
ZG8tY291bnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG4u
dG9kby1jb3VudCBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG4uZmlsdGVycyB7
XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtc
biAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogMDtcbn1c
bi5maWx0ZXJzIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG4uZmlsdGVycyBsaSBhIHtc
biAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBtYXJnaW46IDNweDtcbiAgICBwYWRkaW5nOiAzcHgg
N3B4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0
cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG4uZmlsdGVycyBsaSBhOmhv
dmVyIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMSk7XG59XG4uZmls
dGVycyBsaSBhLnNlbGVjdGVkIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcs
IDAuMik7XG59XG4uY2xlYXItY29tcGxldGVkLFxuaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2
ZSB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsaW5l
LWhlaWdodDogMjBweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBw
b2ludGVyO1xufVxuLmNsZWFyLWNvbXBsZXRlZDpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7XG59XG4uaW5mbyB7XG4gICAgbWFyZ2luOiA2NXB4IGF1dG8gMDtcbiAgICBj
b2xvcjogI2JmYmZiZjtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgdGV4dC1zaGFkb3c6IDAg
MXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtc
bn1cbi5pbmZvIHAge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuLmluZm8gYSB7XG4gICAgY29s
b3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0
OiA0MDA7XG59XG4uaW5mbyBhOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTtcbn1cblxuLypcbiAgICBIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNh
ZmFyaS5cbiAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2ti
b3hlcyBpbiBGaXJlZm94XG4qL1xuQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmlj
ZS1waXhlbC1yYXRpbzowKSB7XG4udG9nZ2xlLWFsbCxcbiAgICAudG9kby1saXN0IGxpIC50b2dn
bGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xufVxuLnRvZG8tbGlzdCBsaSAudG9nZ2xl
IHtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xufVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQzMHB4
KSB7XG4uZm9vdGVyIHtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xufVxuLmZpbHRlcnMge1xuICAg
ICAgICBib3R0b206IDEwcHg7XG59XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8g
Li9zcmMvY29tcG9uZW50cy90b2RvLmNzcyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9z
dGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUxNTM0ZTcyOTgxMDMyZS5jc3MgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUx
NTM0ZTcyOTgxMDMyZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMTI1MDY0
NDBiNDNmZjZiOTY0Mzk5ZTY3MWUxNGNmN2ZkNjVkYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGlj
L2Nzcy9hcHAuZGNhNDI5MmFiMzIyYzFlN2Q1MTUzNGU3Mjk4MTAzMmUuY3NzCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotYm9keSxidXR0b24saHRtbHttYXJnaW46MDtwYWRkaW5nOjB9YnV0
dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGln
bjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6
aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1m
b250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnstbW96LW9zeC1mb250LXNtb290
aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFy
aWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dyb3VuZDojZjVmNWY1O2NvbG9y
OiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBweDttYXJnaW46MCBhdXRvOy13
ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13ZWlnaHQ6MzAwfTpmb2N1c3tv
dXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7YmFja2dyb3VuZDojZmZmO21h
cmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNoYWRvdzowIDJweCA0cHgg
MCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCwwLDAsLjEpfS50b2RvYXBwIGlu
cHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2Vp
Z2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVye2Zv
bnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlu
cHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7
Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTE1NXB4O3dp
ZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEwMDt0ZXh0LWFsaWduOmNlbnRl
cjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4dC1yZW5kZXJpbmc6b3B0aW1p
emVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5O3RleHQt
cmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRpdCwubmV3LXRvZG97cG9zaXRpb246cmVs
YXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MjRweDtmb250LWZhbWlseTppbmhl
cml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40ZW07Ym9yZGVyOjA7Y29sb3I6
aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym94LXNoYWRvdzppbnNl
dCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJr
aXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3Jh
eXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4IDYwcHg7Ym9yZGVyOm5vbmU7
YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4IDFweCBy
Z2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2JvcmRlci10
b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1hbGxde2Rpc3BsYXk6bm9uZX0u
dG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7bGVmdDotMTJweDt3aWR0aDo2
MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25lfS50b2dnbGUtYWxs
OmJlZm9yZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRk
aW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZXtjb2xvcjojNzM3MzczfS50
b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udG9kby1saXN0IGxp
e3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlk
ICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0udG9k
by1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MH0udG9kby1saXN0
IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtwYWRkaW5nOjEycHgg
MTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxh
eTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4
O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdpbjphdXRv
IDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfS50
b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1s
O3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIg
aGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9
IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMi
Lz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcntjb250ZW50OnVy
bCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1
Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRk
YWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIg
NzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIGxhYmVs
e3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVweCA2MHB4IDE1cHggMTVweDttYXJnaW4t
bGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4yO3RyYW5zaXRpb246Y29sb3Ig
LjRzfS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVse2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNv
cmF0aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxpIC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtw
b3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVp
Z2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6MzBweDtjb2xvcjojY2M5YTlhO21hcmdp
bi1ib3R0b206MTFweDt0cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNlLW91dH0udG9kby1saXN0IGxp
IC5kZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRl
cntjb250ZW50OiJcRDcifS50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3l7ZGlzcGxheTpibG9j
a30udG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmc6
bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZvb3Rlcntjb2xvcjojNzc3O3BhZGRpbmc6
MTBweCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci10b3A6MXB4IHNv
bGlkICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTty
aWdodDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNo
YWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHgg
MXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAgLTZweCAjZjZmNmY2LDAgMTdweCAycHgg
LTZweCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtmbG9hdDpsZWZ0O3RleHQtYWxpZ246bGVm
dH0udG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6MzAwfS5maWx0ZXJze21hcmdpbjowO3Bh
ZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OjB9
LmZpbHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRlcnMgbGkgYXtjb2xvcjppbmhlcml0O21h
cmdpbjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHgg
c29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czozcHh9LmZpbHRlcnMgbGkgYTpob3Zlcnti
b3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5maWx0ZXJzIGxpIGEuc2VsZWN0ZWR7Ym9y
ZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xlYXItY29tcGxldGVkLGh0bWwgLmNsZWFy
LWNvbXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWln
aHQ6MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uY2xlYXItY29tcGxl
dGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmluZm97bWFyZ2luOjY1cHggYXV0
byAwO2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7dGV4dC1zaGFkb3c6MCAxcHggMCBoc2xh
KDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm8gcHtsaW5lLWhlaWdodDoxfS5p
bmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo0MDB9
LmluZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfUBtZWRpYSBzY3JlZW4gYW5k
ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnRvZG8tbGlzdCBsaSAudG9nZ2xl
LC50b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7aGVpZ2h0
OjQwcHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zv
cm06cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9
fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdodDo1MHB4fS5maWx0ZXJze2Jv
dHRvbToxMHB4fX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3ZDUx
NTM0ZTcyOTgxMDMyZS5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGlj
L2Nzcy9hcHAuZGNhNDI5MmFiMzIyYzFlN2Q1MTUzNGU3Mjk4MTAzMmUuY3NzLm1hcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzOGY3MzNkOWRiMjE2OTQzYTVmMGU5YjYyMWIyZDlj
OGE4ZGViNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvY3NzL2FwcC5kY2E0MjkyYWIzMjJjMWU3
ZDUxNTM0ZTcyOTgxMDMyZS5jc3MubWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJ2
ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy90b2RvLmNz
cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxpQkFISSxTQUNBLFNBQVcsQ0FnQmQsT0FY
RyxTQUNBLGdCQUNBLGVBQ0Esd0JBQ0Esb0JBQ0Esb0JBQ0EsY0FDQSx3QkFDQSxnQkFDQSxrQ0FB
b0MsQ0FHeEMsWUFGSSxpQ0FBbUMsQ0FhdEMsS0FWRyxvREFDQSxrQkFDQSxtQkFDQSxjQUNBLGdC
QUNBLGdCQUNBLGNBQ0EsbUNBRUEsZUFBaUIsQ0FFckIsT0FDSSxTQUFXLENBRWYsUUFDSSxZQUFj
LENBRWxCLFNBQ0ksZ0JBQ0Esb0JBQ0Esa0JBQ0Esa0VBQzZDLENBRWpELDBDQUNJLGtCQUNBLGdC
QUNBLGFBQWUsQ0FFbkIsaUNBQ0ksa0JBQ0EsZ0JBQ0EsYUFBZSxDQUVuQixrQ0FDSSxrQkFDQSxn
QkFDQSxhQUFlLENBRW5CLFlBQ0ksa0JBQ0EsV0FDQSxXQUNBLGdCQUNBLGdCQUNBLGtCQUNBLDBC
QUNBLDBDQUNBLHVDQUNBLGlDQUFtQyxDQUV2QyxnQkFFSSxrQkFDQSxTQUNBLFdBQ0EsZUFDQSxv
QkFDQSxvQkFDQSxrQkFDQSxTQUNBLGNBQ0EsWUFDQSxzQkFDQSw2Q0FDQSxzQkFDQSxtQ0FDQSxp
Q0FBbUMsQ0FFdkMsVUFDSSw0QkFDQSxZQUNBLDRCQUNBLDJDQUE4QyxDQUVsRCxNQUNJLGtCQUNB
LFVBQ0EsNEJBQThCLENBRWxDLHNCQUNJLFlBQWMsQ0FFbEIsWUFDSSxrQkFDQSxVQUNBLFdBQ0Es
V0FDQSxZQUNBLGtCQUNBLFdBQWEsQ0FFakIsbUJBQ0ksZ0JBQ0EsZUFDQSxjQUNBLGlCQUE2QixD
QUVqQywyQkFDSSxhQUFlLENBRW5CLFdBQ0ksU0FDQSxVQUNBLGVBQWlCLENBRXJCLGNBQ0ksa0JB
Q0EsZUFDQSwrQkFBaUMsQ0FFckMseUJBQ0ksa0JBQW9CLENBRXhCLHNCQUNJLG1CQUNBLFNBQVcs
Q0FFZiw0QkFDSSxjQUNBLFlBQ0Esa0JBQ0EsaUJBQW1CLENBRXZCLDRCQUNJLFlBQWMsQ0FFbEIs
c0JBQ0ksa0JBQ0EsV0FFQSxZQUNBLGtCQUNBLE1BQ0EsU0FDQSxjQUNBLFlBQ0Esd0JBQ0EsZUFB
aUIsQ0FFckIsNEJBQ0ksb05BQXNOLENBRTFOLG9DQUNJLG1SQUFxUixDQUV6UixvQkFDSSxxQkFD
QSw0QkFDQSxpQkFDQSxjQUNBLGdCQUNBLG9CQUF1QixDQUUzQiw4QkFDSSxjQUNBLDRCQUE4QixD
QUVsQyx1QkFDSSxhQUNBLGtCQUNBLE1BQ0EsV0FDQSxTQUNBLFdBQ0EsWUFDQSxjQUNBLGVBQ0Es
Y0FDQSxtQkFDQSw2QkFBZ0MsQ0FFcEMsNkJBQ0ksYUFBZSxDQUVuQiw2QkFDSSxhQUFhLENBRWpC
LDZCQUNJLGFBQWUsQ0FFbkIsb0JBQ0ksWUFBYyxDQUVsQixpQ0FDSSxrQkFBb0IsQ0FFeEIsUUFD
SSxXQUNBLGtCQUNBLFlBQ0Esa0JBQ0EsNEJBQThCLENBRWxDLGVBQ0ksV0FDQSxrQkFDQSxRQUNB
LFNBQ0EsT0FDQSxZQUNBLGdCQUNBLDJJQUkrQyxDQUVuRCxZQUNJLFdBQ0EsZUFBaUIsQ0FFckIs
bUJBQ0ksZUFBaUIsQ0FFckIsU0FDSSxTQUNBLFVBQ0EsZ0JBQ0Esa0JBQ0EsUUFDQSxNQUFRLENB
RVosWUFDSSxjQUFnQixDQUVwQixjQUNJLGNBQ0EsV0FDQSxnQkFDQSxxQkFDQSw2QkFDQSxpQkFB
bUIsQ0FFdkIsb0JBQ0ksK0JBQXFDLENBRXpDLHVCQUNJLCtCQUFxQyxDQUV6Qyw4Q0FFSSxZQUNB
LGtCQUNBLGlCQUNBLHFCQUNBLGNBQWdCLENBRXBCLHVCQUNJLHlCQUEyQixDQUUvQixNQUNJLG1C
QUNBLGNBQ0EsZUFDQSx1Q0FDQSxpQkFBbUIsQ0FFdkIsUUFDSSxhQUFlLENBRW5CLFFBQ0ksY0FD
QSxxQkFDQSxlQUFpQixDQUVyQixjQUNJLHlCQUEyQixDQU8vQixxREFDQSxrQ0FFUSxlQUFpQixD
QUV6QixzQkFDUSxXQUFhLENBRXJCLFlBQ1EsZ0NBQ0Esd0JBQ0Esd0JBQ0EsZUFBaUIsQ0FDeEIs
Q0FFRCx5QkFDQSxRQUNRLFdBQWEsQ0FFckIsU0FDUSxXQUFhLENBQ3BCIiwiZmlsZSI6InN0YXRp
Yy9jc3MvYXBwLmRjYTQyOTJhYjMyMmMxZTdkNTE1MzRlNzI5ODEwMzJlLmNzcyIsInNvdXJjZXND
b250ZW50IjpbIlxuaHRtbCxcbmJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAw
O1xufVxuYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3Jk
ZXI6IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAg
dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAg
IGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9u
dC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBn
cmF5c2NhbGU7XG59XG5ib2R5IHtcbiAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhl
bHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgbGluZS1oZWlnaHQ6IDEuNGVtO1xuICAg
IGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gICAgY29sb3I6ICM0ZDRkNGQ7XG4gICAgbWluLXdpZHRo
OiAyMzBweDtcbiAgICBtYXgtd2lkdGg6IDU1MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAg
IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQt
c21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cbjpmb2N1cyB7
XG4gICAgb3V0bGluZTogMDtcbn1cbi5oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4u
dG9kb2FwcCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBtYXJnaW46IDEzMHB4IDAgNDBw
eCAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHgg
MCByZ2JhKDAsIDAsIDAsIDAuMiksXG4gICAgICAgICAgICAgICAgMCAyNXB4IDUwcHggMCByZ2Jh
KDAsIDAsIDAsIDAuMSk7XG59XG4udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhv
bGRlciB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4g
ICAgY29sb3I6ICNlNmU2ZTY7XG59XG4udG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7
XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgY29s
b3I6ICNlNmU2ZTY7XG59XG4udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXIge1xuICAg
IGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGNvbG9yOiAj
ZTZlNmU2O1xufVxuLnRvZG9hcHAgaDEge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0
b3A6IC0xNTVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDEwMHB4O1xuICAg
IGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjE1KTtcbiAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRp
bWl6ZUxlZ2liaWxpdHk7XG4gICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmls
aXR5O1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG59XG4ubmV3LXRv
ZG8sXG4uZWRpdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogMDtcbiAg
ICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgZm9udC1mYW1pbHk6IGlu
aGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuNGVt
O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBwYWRkaW5nOiA2cHg7
XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0x
cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7
XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gt
Zm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cbi5uZXctdG9kbyB7XG4gICAgcGFkZGluZzog
MTZweCAxNnB4IDE2cHggNjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDog
cmdiYSgwLCAwLCAwLCAwLjAwMyk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDFweCBy
Z2JhKDAsMCwwLDAuMDMpO1xufVxuLm1haW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAg
ICB6LWluZGV4OiAyO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2O1xufVxubGFi
ZWxbZm9yPSd0b2dnbGUtYWxsJ10ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4udG9nZ2xlLWFs
bCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTU1cHg7XG4gICAgbGVmdDog
LTEycHg7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAgIHRleHQtYWxp
Z246IGNlbnRlcjtcbiAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi9cbn1cbi50
b2dnbGUtYWxsOmJlZm9yZSB7XG4gICAgY29udGVudDogJ+Kdryc7XG4gICAgZm9udC1zaXplOiAy
MnB4O1xuICAgIGNvbG9yOiAjZTZlNmU2O1xuICAgIHBhZGRpbmc6IDEwcHggMjdweCAxMHB4IDI3
cHg7XG59XG4udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7XG4gICAgY29sb3I6ICM3MzczNzM7
XG59XG4udG9kby1saXN0IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBs
aXN0LXN0eWxlOiBub25lO1xufVxuLnRvZG8tbGlzdCBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0
aXZlO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQg
I2VkZWRlZDtcbn1cbi50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRv
bTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkuZWRpdGluZyB7XG4gICAgYm9yZGVyLWJvdHRvbTog
bm9uZTtcbiAgICBwYWRkaW5nOiAwO1xufVxuLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHtc
biAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNTA2cHg7XG4gICAgcGFkZGluZzogMTJw
eCAxNnB4O1xuICAgIG1hcmdpbjogMCAwIDAgNDNweDtcbn1cbi50b2RvLWxpc3QgbGkuZWRpdGlu
ZyAudmlldyB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7
XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIC8qIGF1dG8s
IHNpbmNlIG5vbi1XZWJLaXQgYnJvd3NlcnMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHN0eWxpbmcg
Ki9cbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDog
MDtcbiAgICBib3R0b206IDA7XG4gICAgbWFyZ2luOiBhdXRvIDA7XG4gICAgYm9yZGVyOiBub25l
OyAvKiBNb2JpbGUgU2FmYXJpICovXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAg
IGFwcGVhcmFuY2U6IG5vbmU7XG59XG4udG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXIge1xuICAg
IGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0Jv
eD1cIi0xMCAtMTggMTAwIDEzNVwiPjxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNTBc
IiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiNlZGVkZWRcIiBzdHJva2Utd2lkdGg9XCIzXCIvPjwv
c3ZnPicpO1xufVxuLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIge1xuICAgIGNv
bnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cImh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1c
Ii0xMCAtMTggMTAwIDEzNVwiPjxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNTBcIiBm
aWxsPVwibm9uZVwiIHN0cm9rZT1cIiNiZGRhZDVcIiBzdHJva2Utd2lkdGg9XCIzXCIvPjxwYXRo
IGZpbGw9XCIjNWRjMmFmXCIgZD1cIk03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUy
elwiLz48L3N2Zz4nKTtcbn1cbi50b2RvLWxpc3QgbGkgbGFiZWwge1xuICAgIHdvcmQtYnJlYWs6
IGJyZWFrLWFsbDtcbiAgICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4O1xuICAgIG1hcmdp
bi1sZWZ0OiA0NXB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7
XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC40cztcbn1cbi50b2RvLWxpc3QgbGkuY29tcGxldGVk
IGxhYmVsIHtcbiAgICBjb2xvcjogI2Q5ZDlkOTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUt
dGhyb3VnaDtcbn1cbi50b2RvLWxpc3QgbGkgLmRlc3Ryb3kge1xuICAgIGRpc3BsYXk6IG5vbmU7
XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMTBweDtc
biAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAg
IG1hcmdpbjogYXV0byAwO1xuICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICBjb2xvcjogI2NjOWE5
YTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMXB4O1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMg
ZWFzZS1vdXQ7XG59XG4udG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHtcbiAgICBjb2xvcjog
I2FmNWI1ZTtcbn1cbi50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6
ICfDlyc7XG59XG4udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95IHtcbiAgICBkaXNwbGF5OiBi
bG9jaztcbn1cbi50b2RvLWxpc3QgbGkgLmVkaXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4u
dG9kby1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFw
eDtcbn1cbi5mb290ZXIge1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIHBhZGRpbmc6IDEwcHggMTVw
eDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRl
ci10b3A6IDFweCBzb2xpZCAjZTZlNmU2O1xufVxuLmZvb3RlcjpiZWZvcmUge1xuICAgIGNvbnRl
bnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBib3R0
b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgb3ZlcmZsb3c6IGhp
ZGRlbjtcbiAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLFxuICAg
ICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LFxuICAgICAgICAgICAgICAgIDAgOXB4
IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgICAwIDE2cHggMCAt
NnB4ICNmNmY2ZjYsXG4gICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwgMCwg
MCwgMC4yKTtcbn1cbi50b2RvLWNvdW50IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB0ZXh0LWFs
aWduOiBsZWZ0O1xufVxuLnRvZG8tY291bnQgc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogMzAw
O1xufVxuLmZpbHRlcnMge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxp
c3Qtc3R5bGU6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xu
ICAgIGxlZnQ6IDA7XG59XG4uZmlsdGVycyBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xufVxu
LmZpbHRlcnMgbGkgYSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAzcHg7XG4g
ICAgcGFkZGluZzogM3B4IDdweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9y
ZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxu
LmZpbHRlcnMgbGkgYTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcsIDQ3
LCAwLjEpO1xufVxuLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7XG4gICAgYm9yZGVyLWNvbG9yOiBy
Z2JhKDE3NSwgNDcsIDQ3LCAwLjIpO1xufVxuLmNsZWFyLWNvbXBsZXRlZCxcbmh0bWwgLmNsZWFy
LWNvbXBsZXRlZDphY3RpdmUge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25l
O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5jbGVhci1jb21wbGV0ZWQ6aG92ZXIge1xuICAg
IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLmluZm8ge1xuICAgIG1hcmdpbjogNjVw
eCBhdXRvIDA7XG4gICAgY29sb3I6ICNiZmJmYmY7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAg
IHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7XG59XG4uaW5mbyBwIHtcbiAgICBsaW5lLWhlaWdodDogMTtcbn1cbi5p
bmZvIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtc
biAgICBmb250LXdlaWdodDogNDAwO1xufVxuLmluZm8gYTpob3ZlciB7XG4gICAgdGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi8qXG4gICAgSGFjayB0byByZW1vdmUgYmFja2dyb3Vu
ZCBmcm9tIE1vYmlsZSBTYWZhcmkuXG4gICAgQ2FuJ3QgdXNlIGl0IGdsb2JhbGx5IHNpbmNlIGl0
IGRlc3Ryb3lzIGNoZWNrYm94ZXMgaW4gRmlyZWZveFxuKi9cbkBtZWRpYSBzY3JlZW4gYW5kICgt
d2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkge1xuLnRvZ2dsZS1hbGwsXG4gICAgLnRv
ZG8tbGlzdCBsaSAudG9nZ2xlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi50b2Rv
LWxpc3QgbGkgLnRvZ2dsZSB7XG4gICAgICAgIGhlaWdodDogNDBweDtcbn1cbi50b2dnbGUtYWxs
IHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIHRy
YW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25l
O1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xufVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQz
MHB4KSB7XG4uZm9vdGVyIHtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xufVxuLmZpbHRlcnMge1xu
ICAgICAgICBib3R0b206IDEwcHg7XG59XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xu
Ly8gLi9zcmMvY29tcG9uZW50cy90b2RvLmNzcyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlz
dC9zdGF0aWMvanMvYXBwLmQ2ZWQ4OTM1NDM4ZjQ0ZTk4NDNhLmpzIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC5kNmVkODkzNTQzOGY0NGU5ODQzYS5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJmYWM3YmY3ZDUwM2RjYWU2MDE1M2JiOTBlMzU3ZWEy
YzNhMzE2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmQ2ZWQ4OTM1NDM4ZjQ0ZTk4
NDNhLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi13ZWJwYWNrSnNvbnAoWzBdLFss
LCxmdW5jdGlvbihlLHQsbyl7dmFyIG49bygxKShvKDQpLG8oMTApLG51bGwsbnVsbCxudWxsKTtl
LmV4cG9ydHM9bi5leHBvcnRzfSxmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO09iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1vKDgpLGw9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fShuKTt0LmRlZmF1
bHQ9e25hbWU6ImFwcCIsY29tcG9uZW50czp7VG9kb3M6bC5kZWZhdWx0fX19LGZ1bmN0aW9uKGUs
dCxvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2
YWx1ZTohMH0pO3ZhciBuPW8oMCksbD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19KG4pO3QuZGVmYXVsdD17ZGF0YTpmdW5jdGlvbigpe3JldHVybnt0b2Rv
czpbXSxuZXdUb2RvOiIiLGZpbHRlcjoiYWxsIixhbGxEb25lOiExLGVkaXRpbmc6bnVsbH19LGZp
bHRlcnM6e3BsdXJhbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Iml0ZW0iOiJpdGVtcyJ9
fSxkaXJlY3RpdmVzOnt0b2RvRm9jdXM6ZnVuY3Rpb24oZSx0KXt0JiZsLmRlZmF1bHQubmV4dFRp
Y2soZnVuY3Rpb24odCl7ZS5mb2N1cygpfSl9fSxtZXRob2RzOnthZGRUb2RvOmZ1bmN0aW9uKCl7
dGhpcy50b2Rvcy5wdXNoKHtjb21wbGV0ZWQ6ITEsdGl0bGU6dGhpcy5uZXdUb2RvfSksdGhpcy5u
ZXdUb2RvPSIifSxkZWxldGVUb2RvOmZ1bmN0aW9uKGUpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5m
aWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSl9LGRlbGV0ZUNvbXBsZXRlZDpmdW5jdGlv
bigpe3RoaXMudG9kb3M9dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29t
cGxldGVkfSl9LGVkaXRUb2RvOmZ1bmN0aW9uKGUpe3RoaXMuZWRpdGluZz1lfSxkb25lRWRpdDpm
dW5jdGlvbigpe3RoaXMuZWRpdGluZz1udWxsfX0sY29tcHV0ZWQ6e3JlbWFpbmluZzpmdW5jdGlv
bigpe3JldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0
ZWR9KS5sZW5ndGh9LGNvbXBsZXRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvZG9zLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KS5sZW5ndGh9LGZpbHRlcmVkVG9kb3M6
ZnVuY3Rpb24oKXtyZXR1cm4iYWN0aXZlIj09PXRoaXMuZmlsdGVyP3RoaXMudG9kb3MuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pOiJjb21wbGV0ZWQiPT09dGhpcy5maWx0
ZXI/dGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSk6dGhp
cy50b2Rvc30sYWxsRG9uZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnJlbWFpbmlu
Z30sc2V0OmZ1bmN0aW9uKGUpe3RoaXMudG9kb3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbXBs
ZXRlZD1lfSl9fX19fSxmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7
cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPW8oMCksaT1uKGwpLHM9
bygzKSxjPW4ocyksYT1vKDIpLHI9bihhKTt3aW5kb3cuVnVlQXBwPW5ldyBpLmRlZmF1bHQoe2Vs
OiIjYXBwIixyZW5kZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoYy5kZWZhdWx0KX19KTt2YXIgZD1u
ZXcgci5kZWZhdWx0LlJvdXRlcjtbImFsbCIsImFjdGl2ZSIsImNvbXBsZXRlZCJdLmZvckVhY2go
ZnVuY3Rpb24oZSl7ZC5vbihlLGZ1bmN0aW9uKCl7d2luZG93LlZ1ZUFwcC5maWx0ZXI9ZX0pfSks
ZC5jb25maWd1cmUoe25vdGZvdW5kOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhhc2g9IiIs
d2luZG93LlZ1ZUFwcC5maWx0ZXI9ImFsbCJ9fSksZC5pbml0KCl9LGZ1bmN0aW9uKGUsdCl7fSxm
dW5jdGlvbihlLHQsbyl7ZnVuY3Rpb24gbihlKXtvKDcpfXZhciBsPW8oMSkobyg1KSxvKDkpLG4s
bnVsbCxudWxsKTtlLmV4cG9ydHM9bC5leHBvcnRzfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17
cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQsbz1lLl9zZWxm
Ll9jfHx0O3JldHVybiBvKCJzZWN0aW9uIix7c3RhdGljQ2xhc3M6InRvZG9hcHAifSxbbygiaGVh
ZGVyIix7c3RhdGljQ2xhc3M6ImhlYWRlciJ9LFtvKCJoMSIsW2UuX3YoIlRvZG9zIildKSxlLl92
KCIgIiksbygiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9k
ZWwiLHZhbHVlOmUubmV3VG9kbyxleHByZXNzaW9uOiJuZXdUb2RvIn1dLHN0YXRpY0NsYXNzOiJu
ZXctdG9kbyIsYXR0cnM6e3R5cGU6InRleHQiLGF1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9m
ZiIscGxhY2Vob2xkZXI6IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8ifSxkb21Qcm9wczp7dmFsdWU6
ZS5uZXdUb2RvfSxvbjp7a2V5dXA6ZnVuY3Rpb24odCl7aWYoISgiYnV0dG9uImluIHQpJiZlLl9r
KHQua2V5Q29kZSwiZW50ZXIiLDEzKSlyZXR1cm4gbnVsbDtlLmFkZFRvZG8odCl9LGlucHV0OmZ1
bmN0aW9uKHQpe3QudGFyZ2V0LmNvbXBvc2luZ3x8KGUubmV3VG9kbz10LnRhcmdldC52YWx1ZSl9
fX0pXSksZS5fdigiICIpLG8oInNlY3Rpb24iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3
TmFtZToidi1zaG93Iix2YWx1ZTplLnRvZG9zLmxlbmd0aCxleHByZXNzaW9uOiJ0b2Rvcy5sZW5n
dGgifV0sc3RhdGljQ2xhc3M6Im1haW4ifSxbbygiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToi
bW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUuYWxsRG9uZSxleHByZXNzaW9uOiJhbGxE
b25lIn1dLHN0YXRpY0NsYXNzOiJ0b2dnbGUtYWxsIixhdHRyczp7dHlwZToiY2hlY2tib3gifSxk
b21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5KGUuYWxsRG9uZSk/ZS5faShlLmFsbERvbmUs
bnVsbCk+LTE6ZS5hbGxEb25lfSxvbjp7X19jOmZ1bmN0aW9uKHQpe3ZhciBvPWUuYWxsRG9uZSxu
PXQudGFyZ2V0LGw9ISFuLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShvKSl7dmFyIGk9ZS5faShv
LG51bGwpO24uY2hlY2tlZD9pPDAmJihlLmFsbERvbmU9by5jb25jYXQobnVsbCkpOmk+LTEmJihl
LmFsbERvbmU9by5zbGljZSgwLGkpLmNvbmNhdChvLnNsaWNlKGkrMSkpKX1lbHNlIGUuYWxsRG9u
ZT1sfX19KSxlLl92KCIgIiksbygidWwiLHtzdGF0aWNDbGFzczoidG9kby1saXN0In0sZS5fbChl
LmZpbHRlcmVkVG9kb3MsZnVuY3Rpb24odCl7cmV0dXJuIG8oImxpIix7c3RhdGljQ2xhc3M6InRv
ZG8iLGNsYXNzOntjb21wbGV0ZWQ6dC5jb21wbGV0ZWQsZWRpdGluZzp0PT09ZS5lZGl0aW5nfX0s
W28oImRpdiIse3N0YXRpY0NsYXNzOiJ2aWV3In0sW28oImlucHV0Iix7ZGlyZWN0aXZlczpbe25h
bWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTp0LmNvbXBsZXRlZCxleHByZXNzaW9u
OiJ0b2RvLmNvbXBsZXRlZCJ9XSxzdGF0aWNDbGFzczoidG9nZ2xlIixhdHRyczp7dHlwZToiY2hl
Y2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5KHQuY29tcGxldGVkKT9lLl9p
KHQuY29tcGxldGVkLG51bGwpPi0xOnQuY29tcGxldGVkfSxvbjp7X19jOmZ1bmN0aW9uKG8pe3Zh
ciBuPXQuY29tcGxldGVkLGw9by50YXJnZXQsaT0hIWwuY2hlY2tlZDtpZihBcnJheS5pc0FycmF5
KG4pKXt2YXIgcz1lLl9pKG4sbnVsbCk7bC5jaGVja2VkP3M8MCYmKHQuY29tcGxldGVkPW4uY29u
Y2F0KG51bGwpKTpzPi0xJiYodC5jb21wbGV0ZWQ9bi5zbGljZSgwLHMpLmNvbmNhdChuLnNsaWNl
KHMrMSkpKX1lbHNlIHQuY29tcGxldGVkPWl9fX0pLGUuX3YoIiAiKSxvKCJsYWJlbCIse29uOntk
YmxjbGljazpmdW5jdGlvbihvKXtlLmVkaXRUb2RvKHQpfX19LFtlLl92KGUuX3ModC50aXRsZSkp
XSksZS5fdigiICIpLG8oImJ1dHRvbiIse3N0YXRpY0NsYXNzOiJkZXN0cm95Iixvbjp7Y2xpY2s6
ZnVuY3Rpb24obyl7by5wcmV2ZW50RGVmYXVsdCgpLGUuZGVsZXRlVG9kbyh0KX19fSldKSxlLl92
KCIgIiksbygiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9k
ZWwiLHZhbHVlOnQudGl0bGUsZXhwcmVzc2lvbjoidG9kby50aXRsZSJ9LHtuYW1lOiJ0b2RvRm9j
dXMiLHJhd05hbWU6InYtdG9kb0ZvY3VzIix2YWx1ZTp0PT09ZS5lZGl0aW5nLGV4cHJlc3Npb246
InRvZG8gPT09IGVkaXRpbmcifV0sc3RhdGljQ2xhc3M6ImVkaXQiLGF0dHJzOnt0eXBlOiJ0ZXh0
In0sZG9tUHJvcHM6e3ZhbHVlOnQudGl0bGV9LG9uOntrZXl1cDpmdW5jdGlvbih0KXtpZighKCJi
dXR0b24iaW4gdCkmJmUuX2sodC5rZXlDb2RlLCJlbnRlciIsMTMpKXJldHVybiBudWxsO2UuZG9u
ZUVkaXQodCl9LGJsdXI6ZS5kb25lRWRpdCxpbnB1dDpmdW5jdGlvbihlKXtlLnRhcmdldC5jb21w
b3Npbmd8fCh0LnRpdGxlPWUudGFyZ2V0LnZhbHVlKX19fSldKX0pKV0pLGUuX3YoIiAiKSxvKCJm
b290ZXIiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTpl
LnRvZG9zLmxlbmd0aD4wLGV4cHJlc3Npb246InRvZG9zLmxlbmd0aCA+IDAifV0sc3RhdGljQ2xh
c3M6ImZvb3RlciJ9LFtvKCJzcGFuIix7c3RhdGljQ2xhc3M6InRvZG8tY291bnQifSxbbygic3Ry
b25nIixbZS5fdihlLl9zKGUucmVtYWluaW5nKSldKSxlLl92KCIgIitlLl9zKGUuX2YoInBsdXJh
bGl6ZSIpKGUucmVtYWluaW5nKSkrIiBsZWZ0XG4gICAgICAgICIpXSksZS5fdigiICIpLG8oInVs
Iix7c3RhdGljQ2xhc3M6ImZpbHRlcnMifSxbbygibGkiLFtvKCJhIix7Y2xhc3M6e3NlbGVjdGVk
OiJhbGwiPT1lLmZpbHRlcn0sYXR0cnM6e2hyZWY6IiMvYWxsIn0sb246e2NsaWNrOmZ1bmN0aW9u
KHQpe2UuZmlsdGVyPSJhbGwifX19LFtlLl92KCJBbGwiKV0pXSksZS5fdigiICIpLG8oImxpIixb
bygiYSIse2NsYXNzOntzZWxlY3RlZDoiYWN0aXZlIj09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIj
L2FjdGl2ZSJ9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmZpbHRlcj0iYWN0aXZlIn19fSxbZS5f
digiQWN0aXZlIildKV0pLGUuX3YoIiAiKSxvKCJsaSIsW28oImEiLHtjbGFzczp7c2VsZWN0ZWQ6
ImNvbXBsZXRlZCI9PWUuZmlsdGVyfSxhdHRyczp7aHJlZjoiIy9jb21wbGV0ZWQifSxvbjp7Y2xp
Y2s6ZnVuY3Rpb24odCl7ZS5maWx0ZXI9ImNvbXBsZXRlZCJ9fX0sW2UuX3YoIkNvbXBsZXRlZCIp
XSldKV0pLGUuX3YoIiAiKSxvKCJidXR0b24iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3
TmFtZToidi1zaG93Iix2YWx1ZTplLmNvbXBsZXRlZCxleHByZXNzaW9uOiJjb21wbGV0ZWQifV0s
c3RhdGljQ2xhc3M6ImNsZWFyLWNvbXBsZXRlZCIsb246e2NsaWNrOmZ1bmN0aW9uKHQpe3QucHJl
dmVudERlZmF1bHQoKSxlLmRlbGV0ZUNvbXBsZXRlZCh0KX19fSxbZS5fdigiQ2xlYXIgQ29tcGxl
dGVkIildKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRz
PXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxvPWUuX3Nl
bGYuX2N8fHQ7cmV0dXJuIG8oImRpdiIse2F0dHJzOntpZDoiYXBwIn19LFtvKCJUb2RvcyIpXSwx
KX0sc3RhdGljUmVuZGVyRm5zOltdfX1dLFs2XSk7Ci0vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAu
ZDZlZDg5MzU0MzhmNDRlOTg0M2EuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC5kNmVk
ODkzNTQzOGY0NGU5ODQzYS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0
aWMvanMvYXBwLmQ2ZWQ4OTM1NDM4ZjQ0ZTk4NDNhLmpzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTljNTJjY2UwMTFmZjMzNTkxMTFmYzRkZWNjMTRlMTBjM2QxMTU4ZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmQ2ZWQ4OTM1NDM4ZjQ0ZTk4NDNhLmpzLm1hcAor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJw
YWNrOi8vL3N0YXRpYy9qcy9hcHAuZDZlZDg5MzU0MzhmNDRlOTg0M2EuanMiLCJ3ZWJwYWNrOi8v
Ly4vc3JjL0FwcC52dWUiLCJ3ZWJwYWNrOi8vL0FwcC52dWUiLCJ3ZWJwYWNrOi8vL1RvZG9zLnZ1
ZSIsIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50
cy9Ub2Rvcy52dWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVlP2NiODki
LCJ3ZWJwYWNrOi8vLy4vc3JjL0FwcC52dWU/MmIxZSJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAi
LCJtb2R1bGUiLCJleHBvcnRzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIkNvbXBvbmVudCIsIk9i
amVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfVG9kb3MiLCJfVG9kb3MyIiwib2JqIiwi
X19lc01vZHVsZSIsImRlZmF1bHQiLCJuYW1lIiwiY29tcG9uZW50cyIsIlRvZG9zIiwiX3Z1ZSIs
Il92dWUyIiwiZGF0YSIsInRvZG9zIiwibmV3VG9kbyIsImZpbHRlciIsImFsbERvbmUiLCJlZGl0
aW5nIiwiZmlsdGVycyIsInBsdXJhbGl6ZSIsIm4iLCJkaXJlY3RpdmVzIiwidG9kb0ZvY3VzIiwi
ZWwiLCJuZXh0VGljayIsIl8iLCJmb2N1cyIsIm1ldGhvZHMiLCJhZGRUb2RvIiwidGhpcyIsInB1
c2giLCJjb21wbGV0ZWQiLCJ0aXRsZSIsImRlbGV0ZVRvZG8iLCJ0b2RvIiwidCIsImRlbGV0ZUNv
bXBsZXRlZCIsImVkaXRUb2RvIiwiZG9uZUVkaXQiLCJjb21wdXRlZCIsInJlbWFpbmluZyIsImxl
bmd0aCIsImZpbHRlcmVkVG9kb3MiLCJnZXQiLCJzZXQiLCJmb3JFYWNoIiwiX2ludGVyb3BSZXF1
aXJlRGVmYXVsdCIsIl9BcHAiLCJfQXBwMiIsIl9kaXJlY3RvciIsIl9kaXJlY3RvcjIiLCJ3aW5k
b3ciLCJWdWVBcHAiLCJyZW5kZXIiLCJoIiwicm91dGVyIiwiUm91dGVyIiwidmlzaWJpbGl0eSIs
Im9uIiwiY29uZmlndXJlIiwibm90Zm91bmQiLCJsb2NhdGlvbiIsImhhc2giLCJpbml0IiwiaW5q
ZWN0U3R5bGUiLCJzc3JDb250ZXh0IiwiX3ZtIiwiX2giLCIkY3JlYXRlRWxlbWVudCIsIl9jIiwi
X3NlbGYiLCJzdGF0aWNDbGFzcyIsIl92IiwicmF3TmFtZSIsImV4cHJlc3Npb24iLCJhdHRycyIs
InR5cGUiLCJhdXRvZm9jdXMiLCJhdXRvY29tcGxldGUiLCJwbGFjZWhvbGRlciIsImRvbVByb3Bz
Iiwia2V5dXAiLCIkZXZlbnQiLCJfayIsImtleUNvZGUiLCJpbnB1dCIsInRhcmdldCIsImNvbXBv
c2luZyIsImNoZWNrZWQiLCJBcnJheSIsImlzQXJyYXkiLCJfaSIsIl9fYyIsIiQkYSIsIiQkZWwi
LCIkJGMiLCIkJGkiLCJjb25jYXQiLCJzbGljZSIsIl9sIiwiY2xhc3MiLCJkYmxjbGljayIsIl9z
IiwiY2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsImJsdXIiLCJfZiIsInNlbGVjdGVkIiwiaHJlZiIs
InN0YXRpY1JlbmRlckZucyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxJQUNQLENBQ0Es
Q0FDQSxDQUVELFNBQVVDLEVBQVFDLEVBQVNDLEdDTGpDLEdBQUFDLEdBQUFELEVBQUEsR0FFQUEs
RUFBQSxHQUVBQSxFQUFBLElBRUEsS0FFQSxLQUVBLEtBR0FGLEdBQUFDLFFBQUFFLEVBQUFGLFNE
WU0sU0FBVUQsRUFBUUMsRUFBU0MsR0FFakMsWUFHQUUsUUFBT0MsZUFBZUosRUFBUyxjQUMzQkss
T0FBTyxHRXRCWCxJQUFBQyxHQUFBTCxFQUFBLEdGMkJJTSxFQUVKLFNBQWdDQyxHQUFPLE1BQU9B
LElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLElBRmxERixFQUlyQ04sR0FBUVUsU0FDSkMs
S0U5QkosTUYrQklDLFlFNUJKQyxNQUFBTixFQUFBRyxXRm1DTSxTQUFVWCxFQUFRQyxFQUFTQyxH
QUVqQyxZQUdBRSxRQUFPQyxlQUFlSixFQUFTLGNBQzNCSyxPQUFPLEdHbkJYLElBQUFTLEdBQUFi
LEVBQUEsR0h3QkljLEVBRUosU0FBZ0NQLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FB
UUUsUUFBU0YsSUFGcERNLEVBSW5DZCxHQUFRVSxTQUNKTSxLQUFNLFdBQ0YsT0FDSUMsU0FDQUMs
UUczQlosR0g0QllDLE9HM0JaLE1INEJZQyxTRzNCWixFSDRCWUMsUUcxQlosT0g4QklDLFNBQ0lD
LFVBQVcsU0FBbUJDLEdBQzFCLE1BQWEsS0FBTkEsRUFBVSxPRzVCN0IsVUgrQklDLFlBQ0lDLFVB
QVcsU0FBbUJDLEVBQUl0QixHQUMxQkEsR0FDQVUsRUFBTUwsUUFBUWtCLFNBQVMsU0FBVUMsR0FD
N0JGLEVHNUJwQkcsWUhpQ0lDLFNBQ0lDLFFBQVMsV0FDTEMsS0FBS2hCLE1BQU1pQixNQUNQQyxX
RzVCaEIsRUg2QmdCQyxNQUFPSCxLRzNCdkJmLFVINkJZZSxLQUFLZixRRzVCakIsSUg4QlFtQixX
QUFZLFNBQW9CQyxHQUM1QkwsS0FBS2hCLE1BQVFnQixLQUFLaEIsTUFBTUUsT0FBTyxTQUFVb0Is
R0FDckMsTUFBT0EsS0c3QnZCRCxLSGdDUUUsZ0JBQWlCLFdBQ2JQLEtBQUtoQixNQUFRZ0IsS0FB
S2hCLE1BQU1FLE9BQU8sU0FBVW1CLEdBQ3JDLE9BQVFBLEVHL0J4QkgsYUhrQ1FNLFNBQVUsU0FB
a0JILEdBQ3hCTCxLQUFLWixRR2hDakJpQixHSGtDUUksU0FBVSxXQUNOVCxLQUFLWixRR2hDakIs
T0htQ0lzQixVQUNJQyxVQUFXLFdBQ1AsTUFBT1gsTUFBS2hCLE1BQU1FLE9BQU8sU0FBVW1CLEdB
Qy9CLE9BQVFBLEVBQUtILFlHakM3QlUsUUhvQ1FWLFVBQVcsV0FDUCxNQUFPRixNQUFLaEIsTUFB
TUUsT0FBTyxTQUFVbUIsR0FDL0IsTUFBT0EsR0FBS0gsWUduQzVCVSxRSHNDUUMsY0FBZSxXQUNY
LE1BQW9CLFdBQWhCYixLQUFLZCxPQUNFYyxLQUFLaEIsTUFBTUUsT0FBTyxTQUFVbUIsR0FDL0Is
T0FBUUEsRUdyQzVCSCxZSHVDdUMsY0FBaEJGLEtBQUtkLE9BQ0xjLEtBQUtoQixNQUFNRSxPQUFP
LFNBQVVtQixHQUMvQixNQUFPQSxHR3ZDM0JILFlIMkNtQkYsS0d4Q25CaEIsT0gyQ1FHLFNBQ0ky
QixJQUFLLFdBQ0QsTUd6Q2hCLEtIeUN1QmQsS0FBS1csV0FFaEJJLElBQUssU0FBYTNDLEdBQ2Q0
QixLQUFLaEIsTUFBTWdDLFFBQVEsU0FBVVgsR0FDekJBLEVBQUtILFVHekN6QjlCLFNIa0RNLFNB
QVVOLEVBQVFDLEVBQVNDLEdBRWpDLFlBZUEsU0FBU2lELEdBQXVCMUMsR0FBTyxNQUFPQSxJQUFP
QSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHSXpLdkYsR0FBQU0sR0FBQWIsRUFBQSxHSitKSWMs
RUFBUW1DLEVBQXVCcEMsR0k5Sm5DcUMsRUFBQWxELEVBQUEsR0prS0ltRCxFQUFRRixFQUF1QkMs
R0lqS25DRSxFQUFBcEQsRUFBQSxHSnFLSXFELEVBQWFKLEVBQXVCRyxFSWxLeENFLFFBQU9DLE9B
QVMsR0FBQXpDLEdBQUFMLFNBQ1ppQixHQUFJLE9BQ0o4QixPQUFRLFNBQUFDLEdBQUEsTUFBS0Es
Z0JBR2pCLElBQU1DLEdBQVMsR0FBSUwsR0FBQTVDLFFBQVNrRCxRQUUzQixNQUFPLFNBQVUsYUFB
YVgsUUFBUSxTQUFBWSxHQUNyQ0YsRUFBT0csR0FBR0QsRUFBWSxXQUNwQk4sT0FBT0MsT0FBT3JD
LE9BQVMwQyxNQUkzQkYsRUFBT0ksV0FDTEMsU0FBVSxXQUNSVCxPQUFPVSxTQUFTQyxLQUFPLEdB
Q3ZCWCxPQUFPQyxPQUFPckMsT0FBUyxTQUkzQndDLEVBQU9RLFFKNEtELFNBQVVwRSxFQUFRQyxL
QU1sQixTQUFVRCxFQUFRQyxFQUFTQyxHSzdNakMsUUFBQW1FLEdBQUFDLEdBQ0FwRSxFQUFBLEdB
RUEsR0FBQUMsR0FBQUQsRUFBQSxHQUVBQSxFQUFBLEdBRUFBLEVBQUEsR0FFQW1FLEVBRUEsS0FF
QSxLQUdBckUsR0FBQUMsUUFBQUUsRUFBQUYsU0xvTk0sU0FBVUQsRUFBUUMsR01wT3hCRCxFQUFB
QyxTQUFnQnlELE9BQUEsV0FBbUIsR0FBQWEsR0FBQXJDLEtBQWFzQyxFQUFBRCxFQUFBRSxlQUEw
QkMsRUFBQUgsRUFBQUksTUFBQUQsSUFBQUYsQ0FDMUUsT0FBQUUsR0FBQSxXQUNBRSxZQUFBLFlB
Q0dGLEVBQUEsVUFDSEUsWUFBQSxXQUNHRixFQUFBLE1BQUFILEVBQUFNLEdBQUEsV0FBQU4sRUFB
QU0sR0FBQSxLQUFBSCxFQUFBLFNBQ0hoRCxhQUNBZCxLQUFBLFFBQ0FrRSxRQUFBLFVBQ0F4RSxN
QUFBaUUsRUFBQSxRQUNBUSxXQUFBLFlBRUFILFlBQUEsV0FDQUksT0FDQUMsS0FBQSxPQUNBQyxV
QUFBLEdBQ0FDLGFBQUEsTUFDQUMsWUFBQSwwQkFFQUMsVUFDQS9FLE1BQUFpRSxFQUFBLFNBRUFS
LElBQ0F1QixNQUFBLFNBQUFDLEdBQ0EsZUFBQUEsS0FBQWhCLEVBQUFpQixHQUFBRCxFQUFBRSxR
QUFBLFlBQTJFLFdBQzNFbEIsR0FBQXRDLFFBQUFzRCxJQUVBRyxNQUFBLFNBQUFILEdBQ0FBLEVB
QUFJLE9BQUFDLFlBQ0FyQixFQUFBcEQsUUFBQW9FLEVBQUFJLE9BQUFyRixhQUdHaUUsRUFBQU0s
R0FBQSxLQUFBSCxFQUFBLFdBQ0hoRCxhQUNBZCxLQUFBLE9BQ0FrRSxRQUFBLFNBQ0F4RSxNQUFB
aUUsRUFBQXJELE1BQUEsT0FDQTZELFdBQUEsaUJBRUFILFlBQUEsU0FDR0YsRUFBQSxTQUNIaEQs
YUFDQWQsS0FBQSxRQUNBa0UsUUFBQSxVQUNBeEUsTUFBQWlFLEVBQUEsUUFDQVEsV0FBQSxZQUVB
SCxZQUFBLGFBQ0FJLE9BQ0FDLEtBQUEsWUFFQUksVUFDQVEsUUFBQUMsTUFBQUMsUUFBQXhCLEVB
QUFsRCxTQUFBa0QsRUFBQXlCLEdBQUF6QixFQUFBbEQsUUFBQSxTQUFBa0QsRUFBQSxTQUVBUixJ
QUNBa0MsSUFBQSxTQUFBVixHQUNBLEdBQUFXLEdBQUEzQixFQUFBbEQsUUFDQThFLEVBQUFaLEVB
QUFJLE9BQ0FTLElBQUFELEVBQUFOLE9BQ0EsSUFBQUMsTUFBQUMsUUFBQUcsR0FBQSxDQUNBLEdB
Q0FHLEdBQUE5QixFQUFBeUIsR0FBQUUsRUFEQSxLQUVBQyxHQUFBTixRQUNBUSxFQUFBLElBQUE5
QixFQUFBbEQsUUFBQTZFLEVBQUFJLE9BSEEsT0FLQUQsR0FBQSxJQUFBOUIsRUFBQWxELFFBQUE2
RSxFQUFBSyxNQUFBLEVBQUFGLEdBQUFDLE9BQUFKLEVBQUFLLE1BQUFGLEVBQUEsU0FHQTlCLEdB
QUFsRCxRQUFBK0UsTUFJRzdCLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxNQUNIRSxZQUFBLGFBQ0dM
LEVBQUFpQyxHQUFBakMsRUFBQSx1QkFBQWhDLEdBQ0gsTUFBQW1DLEdBQUEsTUFDQUUsWUFBQSxP
QUNBNkIsT0FDQXJFLFVBQUFHLEVBQUFILFVBQUFkLFFBQUFpQixJQUFBZ0MsRUFBQWpELFdBRUtv
RCxFQUFBLE9BQ0xFLFlBQUEsU0FDS0YsRUFBQSxTQUNMaEQsYUFDQWQsS0FBQSxRQUNBa0UsUUFB
QSxVQUNBeEUsTUFBQWlDLEVBQUEsVUFDQXdDLFdBQUEsbUJBRUFILFlBQUEsU0FDQUksT0FDQUMs
S0FBQSxZQUVBSSxVQUNBUSxRQUFBQyxNQUFBQyxRQUFBeEQsRUFBQUgsV0FBQW1DLEVBQUF5QixH
QUFBekQsRUFBQUgsVUFBQSxTQUFBRyxFQUFBLFdBRUF3QixJQUNBa0MsSUFBQSxTQUFBVixHQUNB
LEdBQUFXLEdBQUEzRCxFQUFBSCxVQUNBK0QsRUFBQVosRUFBQUksT0FDQVMsSUFBQUQsRUFBQU4s
T0FDQSxJQUFBQyxNQUFBQyxRQUFBRyxHQUFBLENBQ0EsR0FDQUcsR0FBQTlCLEVBQUF5QixHQUFB
RSxFQURBLEtBRUFDLEdBQUFOLFFBQ0FRLEVBQUEsSUFBQTlELEVBQUFILFVBQUE4RCxFQUFBSSxP
QUhBLE9BS0FELEdBQUEsSUFBQTlELEVBQUFILFVBQUE4RCxFQUFBSyxNQUFBLEVBQUFGLEdBQUFD
LE9BQUFKLEVBQUFLLE1BQUFGLEVBQUEsU0FHQTlELEdBQUFILFVBQUFnRSxNQUlLN0IsRUFBQU0s
R0FBQSxLQUFBSCxFQUFBLFNBQ0xYLElBQ0EyQyxTQUFBLFNBQUFuQixHQUNBaEIsRUFBQTdCLFNB
QUFILE9BR0tnQyxFQUFBTSxHQUFBTixFQUFBb0MsR0FBQXBFLEVBQUFGLFVBQUFrQyxFQUFBTSxH
QUFBLEtBQUFILEVBQUEsVUFDTEUsWUFBQSxVQUNBYixJQUNBNkMsTUFBQSxTQUFBckIsR0FDQUEs
RUFBQXNCLGlCQUNBdEMsRUFBQWpDLFdBQUFDLFNBR0tnQyxFQUFBTSxHQUFBLEtBQUFILEVBQUEs
U0FDTGhELGFBQ0FkLEtBQUEsUUFDQWtFLFFBQUEsVUFDQXhFLE1BQUFpQyxFQUFBLE1BQ0F3QyxX
QUFBLGVBRUFuRSxLQUFBLFlBQ0FrRSxRQUFBLGNBQ0F4RSxNQUFBaUMsSUFBQWdDLEVBQUFqRCxR
QUNBeUQsV0FBQSxxQkFFQUgsWUFBQSxPQUNBSSxPQUNBQyxLQUFBLFFBRUFJLFVBQ0EvRSxNQUFB
aUMsRUFBQSxPQUVBd0IsSUFDQXVCLE1BQUEsU0FBQUMsR0FDQSxlQUFBQSxLQUFBaEIsRUFBQWlC
LEdBQUFELEVBQUFFLFFBQUEsWUFBNkUsV0FDN0VsQixHQUFBNUIsU0FBQTRDLElBRUF1QixLQUFB
dkMsRUFBQTVCLFNBQ0ErQyxNQUFBLFNBQUFILEdBQ0FBLEVBQUFJLE9BQUFDLFlBQ0FyRCxFQUFB
RixNQUFBa0QsRUFBQUksT0FBQXJGLGtCQUlHaUUsRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFVBQ0ho
RCxhQUNBZCxLQUFBLE9BQ0FrRSxRQUFBLFNBQ0F4RSxNQUFBaUUsRUFBQXJELE1BQUE0QixPQUFB
LEVBQ0FpQyxXQUFBLHFCQUVBSCxZQUFBLFdBQ0dGLEVBQUEsUUFDSEUsWUFBQSxlQUNHRixFQUFB
LFVBQUFILEVBQUFNLEdBQUFOLEVBQUFvQyxHQUFBcEMsRUFBQTFCLGNBQUEwQixFQUFBTSxHQUFB
LElBQUFOLEVBQUFvQyxHQUFBcEMsRUFBQXdDLEdBQUEsYUFBQXhDLEVBQUExQixZQUFBLHFCQUFB
MEIsRUFBQU0sR0FBQSxLQUFBSCxFQUFBLE1BQ0hFLFlBQUEsWUFDR0YsRUFBQSxNQUFBQSxFQUFB
LEtBQ0grQixPQUNBTyxTQUFBLE9BQUF6QyxFQUFBbkQsUUFFQTRELE9BQ0FpQyxLQUFBLFNBRUFs
RCxJQUNBNkMsTUFBQSxTQUFBckIsR0FDQWhCLEVBQUFuRCxPQUFBLFVBR0dtRCxFQUFBTSxHQUFB
LFdBQUFOLEVBQUFNLEdBQUEsS0FBQUgsRUFBQSxNQUFBQSxFQUFBLEtBQ0grQixPQUNBTyxTQUFB
LFVBQUF6QyxFQUFBbkQsUUFFQTRELE9BQ0FpQyxLQUFBLFlBRUFsRCxJQUNBNkMsTUFBQSxTQUFB
ckIsR0FDQWhCLEVBQUFuRCxPQUFBLGFBR0dtRCxFQUFBTSxHQUFBLGNBQUFOLEVBQUFNLEdBQUEs
S0FBQUgsRUFBQSxNQUFBQSxFQUFBLEtBQ0grQixPQUNBTyxTQUFBLGFBQUF6QyxFQUFBbkQsUUFF
QTRELE9BQ0FpQyxLQUFBLGVBRUFsRCxJQUNBNkMsTUFBQSxTQUFBckIsR0FDQWhCLEVBQUFuRCxP
QUFBLGdCQUdHbUQsRUFBQU0sR0FBQSxtQkFBQU4sRUFBQU0sR0FBQSxLQUFBSCxFQUFBLFVBQ0ho
RCxhQUNBZCxLQUFBLE9BQ0FrRSxRQUFBLFNBQ0F4RSxNQUFBaUUsRUFBQSxVQUNBUSxXQUFBLGNB
RUFILFlBQUEsa0JBQ0FiLElBQ0E2QyxNQUFBLFNBQUFyQixHQUNBQSxFQUFBc0IsaUJBQ0F0QyxF
QUFBOUIsZ0JBQUE4QyxPQUdHaEIsRUFBQU0sR0FBQSwwQkFDRnFDLHFCTjBPSyxTQUFVbEgsRUFB
UUMsR094Y3hCRCxFQUFBQyxTQUFnQnlELE9BQUEsV0FBbUIsR0FBQWEsR0FBQXJDLEtBQWFzQyxF
QUFBRCxFQUFBRSxlQUEwQkMsRUFBQUgsRUFBQUksTUFBQUQsSUFBQUYsQ0FDMUUsT0FBQUUsR0FB
QSxPQUNBTSxPQUNBbUMsR0FBQSxTQUVHekMsRUFBQSxjQUNGd0MsdUJQNmNFIiwiZmlsZSI6InN0
YXRpYy9qcy9hcHAuZDZlZDg5MzU0MzhmNDRlOTg0M2EuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ3
ZWJwYWNrSnNvbnAoWzBdLFtcbi8qIDAgKi8sXG4vKiAxICovLFxuLyogMiAqLyxcbi8qIDMgKi9c
bi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxudmFyIENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSkoXG4gIC8qIHNjcmlwdCAq
L1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEwKSxcbiAgLyogc3R5bGVzICovXG4gIG51bGwsXG4gIC8qIHNjb3BlSWQg
Ki9cbiAgbnVsbCxcbiAgLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG4gIG51
bGxcbilcblxubW9kdWxlLmV4cG9ydHMgPSBDb21wb25lbnQuZXhwb3J0c1xuXG5cbi8qKiovIH0p
LFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHko
ZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBf
VG9kb3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXG52YXIgX1RvZG9zMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX1RvZG9zKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDog
b2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIG5hbWU6ICdhcHAnLFxuICAgIGNv
bXBvbmVudHM6IHtcbiAgICAgICAgVG9kb3M6IF9Ub2RvczIuZGVmYXVsdFxuICAgIH1cbn07XG5c
bi8qKiovIH0pLFxuLyogNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5PYmplY3QuZGVmaW5l
UHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7
XG5cbnZhciBfdnVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF92dWUyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVs
dDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGRhdGE6IGZ1bmN0aW9uIGRh
dGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b2RvczogW10sXG4gICAgICAg
ICAgICBuZXdUb2RvOiAnJyxcbiAgICAgICAgICAgIGZpbHRlcjogJ2FsbCcsXG4gICAgICAgICAg
ICBhbGxEb25lOiBmYWxzZSxcbiAgICAgICAgICAgIGVkaXRpbmc6IG51bGxcbiAgICAgICAgfTtc
biAgICB9LFxuXG4gICAgZmlsdGVyczoge1xuICAgICAgICBwbHVyYWxpemU6IGZ1bmN0aW9uIHBs
dXJhbGl6ZShuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMSA/ICdpdGVtJyA6ICdpdGVt
cyc7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgICAgdG9kb0Zv
Y3VzOiBmdW5jdGlvbiB0b2RvRm9jdXMoZWwsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFs
dWUpIHtcbiAgICAgICAgICAgICAgICBfdnVlMi5kZWZhdWx0Lm5leHRUaWNrKGZ1bmN0aW9uIChf
KSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSk7
XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAg
ICAgYWRkVG9kbzogZnVuY3Rpb24gYWRkVG9kbygpIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3Mu
cHVzaCh7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAg
ICB0aXRsZTogdGhpcy5uZXdUb2RvXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMu
bmV3VG9kbyA9ICcnO1xuICAgICAgICB9LFxuICAgICAgICBkZWxldGVUb2RvOiBmdW5jdGlvbiBk
ZWxldGVUb2RvKHRvZG8pIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRvZG9zLmZp
bHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ICE9PSB0b2RvO1xu
ICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0ZUNvbXBsZXRlZDogZnVu
Y3Rpb24gZGVsZXRlQ29tcGxldGVkKCkge1xuICAgICAgICAgICAgdGhpcy50b2RvcyA9IHRoaXMu
dG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0
b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlZGl0
VG9kbzogZnVuY3Rpb24gZWRpdFRvZG8odG9kbykge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5n
ID0gdG9kbztcbiAgICAgICAgfSxcbiAgICAgICAgZG9uZUVkaXQ6IGZ1bmN0aW9uIGRvbmVFZGl0
KCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0s
XG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgcmVtYWluaW5nOiBmdW5jdGlvbiByZW1haW5pbmco
KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8p
IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRvZG8uY29tcGxldGVkO1xuICAgICAgICAgICAg
fSkubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IGZ1bmN0aW9uIGNvbXBs
ZXRlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbiAo
dG9kbykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtcbiAgICAgICAg
ICAgIH0pLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyZWRUb2RvczogZnVuY3Rp
b24gZmlsdGVyZWRUb2RvcygpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlciA9PT0gJ2Fj
dGl2ZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rp
b24gKHRvZG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBsZXRlZDtc
biAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXIg
PT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmls
dGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2RvLmNv
bXBsZXRlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAg
ICAgcmV0dXJuIHRoaXMudG9kb3M7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYWxsRG9uZToge1xu
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMucmVtYWluaW5nID09PSAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldDog
ZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2Rvcy5mb3JFYWNo
KGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0g
dmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICB9XG59O1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFy
IF92dWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgX3Z1ZTIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF92dWUpO1xuXG52YXIgX0FwcCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7
XG5cbnZhciBfQXBwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0FwcCk7XG5cbnZhciBfZGly
ZWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG52YXIgX2RpcmVjdG9yMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2RpcmVjdG9yKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVm
YXVsdDogb2JqIH07IH1cblxud2luZG93LlZ1ZUFwcCA9IG5ldyBfdnVlMi5kZWZhdWx0KHtcbiAg
ZWw6ICcjYXBwJyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHJldHVybiBo
KF9BcHAyLmRlZmF1bHQpO1xuICB9XG59KTtcblxudmFyIHJvdXRlciA9IG5ldyBfZGlyZWN0b3Iy
LmRlZmF1bHQuUm91dGVyKCk7XG5cblsnYWxsJywgJ2FjdGl2ZScsICdjb21wbGV0ZWQnXS5mb3JF
YWNoKGZ1bmN0aW9uICh2aXNpYmlsaXR5KSB7XG4gIHJvdXRlci5vbih2aXNpYmlsaXR5LCBmdW5j
dGlvbiAoKSB7XG4gICAgd2luZG93LlZ1ZUFwcC5maWx0ZXIgPSB2aXNpYmlsaXR5O1xuICB9KTtc
bn0pO1xuXG5yb3V0ZXIuY29uZmlndXJlKHtcbiAgbm90Zm91bmQ6IGZ1bmN0aW9uIG5vdGZvdW5k
KCkge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyc7XG4gICAgd2luZG93LlZ1ZUFwcC5m
aWx0ZXIgPSAnYWxsJztcbiAgfVxufSk7XG5cbnJvdXRlci5pbml0KCk7XG5cbi8qKiovIH0pLFxu
LyogNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyByZW1vdmVk
IGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8q
KiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
ZnVuY3Rpb24gaW5qZWN0U3R5bGUgKHNzckNvbnRleHQpIHtcbiAgX193ZWJwYWNrX3JlcXVpcmVf
Xyg3KVxufVxudmFyIENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSkoXG4gIC8qIHNj
cmlwdCAqL1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpLFxuICAvKiB0ZW1wbGF0ZSAqL1xuICBf
X3dlYnBhY2tfcmVxdWlyZV9fKDkpLFxuICAvKiBzdHlsZXMgKi9cbiAgaW5qZWN0U3R5bGUsXG4g
IC8qIHNjb3BlSWQgKi9cbiAgbnVsbCxcbiAgLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9u
bHkpICovXG4gIG51bGxcbilcblxubW9kdWxlLmV4cG9ydHMgPSBDb21wb25lbnQuZXhwb3J0c1xu
XG5cbi8qKiovIH0pLFxuLyogOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
e1xuXG5tb2R1bGUuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uICgpe3ZhciBfdm09dGhpczt2YXIg
X2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO1xuICByZXR1cm4g
X2MoJ3NlY3Rpb24nLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwidG9kb2FwcFwiXG4gIH0sIFtfYygn
aGVhZGVyJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImhlYWRlclwiXG4gIH0sIFtfYygnaDEnLCBb
X3ZtLl92KFwiVG9kb3NcIildKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2lucHV0Jywge1xuICAgIGRp
cmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYt
bW9kZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLm5ld1RvZG8pLFxuICAgICAgZXhwcmVzc2lvbjog
XCJuZXdUb2RvXCJcbiAgICB9XSxcbiAgICBzdGF0aWNDbGFzczogXCJuZXctdG9kb1wiLFxuICAg
IGF0dHJzOiB7XG4gICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXG4gICAgICBcImF1dG9mb2N1c1wi
OiBcIlwiLFxuICAgICAgXCJhdXRvY29tcGxldGVcIjogXCJvZmZcIixcbiAgICAgIFwicGxhY2Vo
b2xkZXJcIjogXCJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/XCJcbiAgICB9LFxuICAgIGRvbVByb3Bz
OiB7XG4gICAgICBcInZhbHVlXCI6IChfdm0ubmV3VG9kbylcbiAgICB9LFxuICAgIG9uOiB7XG4g
ICAgICBcImtleXVwXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoISgnYnV0dG9u
JyBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwiLCAxMykpIHsg
cmV0dXJuIG51bGw7IH1cbiAgICAgICAgX3ZtLmFkZFRvZG8oJGV2ZW50KVxuICAgICAgfSxcbiAg
ICAgIFwiaW5wdXRcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICgkZXZlbnQudGFy
Z2V0LmNvbXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgX3ZtLm5ld1RvZG8gPSAkZXZlbnQu
dGFyZ2V0LnZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9KV0pLCBfdm0uX3YoXCIgXCIpLCBfYygn
c2VjdGlvbicsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJzaG93XCIsXG4g
ICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgdmFsdWU6IChfdm0udG9kb3MubGVuZ3Ro
KSxcbiAgICAgIGV4cHJlc3Npb246IFwidG9kb3MubGVuZ3RoXCJcbiAgICB9XSxcbiAgICBzdGF0
aWNDbGFzczogXCJtYWluXCJcbiAgfSwgW19jKCdpbnB1dCcsIHtcbiAgICBkaXJlY3RpdmVzOiBb
e1xuICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4g
ICAgICB2YWx1ZTogKF92bS5hbGxEb25lKSxcbiAgICAgIGV4cHJlc3Npb246IFwiYWxsRG9uZVwi
XG4gICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwidG9nZ2xlLWFsbFwiLFxuICAgIGF0dHJzOiB7
XG4gICAgICBcInR5cGVcIjogXCJjaGVja2JveFwiXG4gICAgfSxcbiAgICBkb21Qcm9wczoge1xu
ICAgICAgXCJjaGVja2VkXCI6IEFycmF5LmlzQXJyYXkoX3ZtLmFsbERvbmUpID8gX3ZtLl9pKF92
bS5hbGxEb25lLCBudWxsKSA+IC0xIDogKF92bS5hbGxEb25lKVxuICAgIH0sXG4gICAgb246IHtc
biAgICAgIFwiX19jXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICB2YXIgJCRhID0gX3Zt
LmFsbERvbmUsXG4gICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgJCRj
ID0gJCRlbC5jaGVja2VkID8gKHRydWUpIDogKGZhbHNlKTtcbiAgICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkoJCRhKSkge1xuICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgJCRp
ID0gX3ZtLl9pKCQkYSwgJCR2KTtcbiAgICAgICAgICBpZiAoJCRlbC5jaGVja2VkKSB7XG4gICAg
ICAgICAgICAkJGkgPCAwICYmIChfdm0uYWxsRG9uZSA9ICQkYS5jb25jYXQoJCR2KSlcbiAgICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCRpID4gLTEgJiYgKF92bS5hbGxEb25lID0gJCRh
LnNsaWNlKDAsICQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgfVxu
ICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF92bS5hbGxEb25lID0gJCRjXG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gIH0pLCBfdm0uX3YoXCIgXCIpLCBfYygndWwnLCB7XG4gICAgc3Rh
dGljQ2xhc3M6IFwidG9kby1saXN0XCJcbiAgfSwgX3ZtLl9sKChfdm0uZmlsdGVyZWRUb2Rvcyks
IGZ1bmN0aW9uKHRvZG8pIHtcbiAgICByZXR1cm4gX2MoJ2xpJywge1xuICAgICAgc3RhdGljQ2xh
c3M6IFwidG9kb1wiLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgY29tcGxldGVkOiB0b2RvLmNv
bXBsZXRlZCwgZWRpdGluZzogdG9kbyA9PT0gX3ZtLmVkaXRpbmdcbiAgICAgIH1cbiAgICB9LCBb
X2MoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInZpZXdcIlxuICAgIH0sIFtfYygnaW5w
dXQnLCB7XG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4g
ICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICB2YWx1ZTogKHRvZG8uY29tcGxl
dGVkKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvLmNvbXBsZXRlZFwiXG4gICAgICB9XSxc
biAgICAgIHN0YXRpY0NsYXNzOiBcInRvZ2dsZVwiLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAg
XCJ0eXBlXCI6IFwiY2hlY2tib3hcIlxuICAgICAgfSxcbiAgICAgIGRvbVByb3BzOiB7XG4gICAg
ICAgIFwiY2hlY2tlZFwiOiBBcnJheS5pc0FycmF5KHRvZG8uY29tcGxldGVkKSA/IF92bS5faSh0
b2RvLmNvbXBsZXRlZCwgbnVsbCkgPiAtMSA6ICh0b2RvLmNvbXBsZXRlZClcbiAgICAgIH0sXG4g
ICAgICBvbjoge1xuICAgICAgICBcIl9fY1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAg
ICB2YXIgJCRhID0gdG9kby5jb21wbGV0ZWQsXG4gICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRh
cmdldCxcbiAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/ICh0cnVlKSA6IChmYWxzZSk7
XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgdmFyICQk
diA9IG51bGwsXG4gICAgICAgICAgICAgICQkaSA9IF92bS5faSgkJGEsICQkdik7XG4gICAgICAg
ICAgICBpZiAoJCRlbC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICQkaSA8IDAgJiYgKHRvZG8u
Y29tcGxldGVkID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgICAgICAgJCRpID4gLTEgJiYgKHRvZG8uY29tcGxldGVkID0gJCRhLnNsaWNlKDAsICQkaSku
Y29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gJCRjXG4gICAgICAgICAgfVxuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfSksIF92bS5fdihcIiBcIiksIF9jKCdsYWJlbCcsIHtcbiAg
ICAgIG9uOiB7XG4gICAgICAgIFwiZGJsY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAg
ICAgICAgX3ZtLmVkaXRUb2RvKHRvZG8pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbX3Zt
Ll92KF92bS5fcyh0b2RvLnRpdGxlKSldKSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2J1dHRvbicsIHtc
biAgICAgIHN0YXRpY0NsYXNzOiBcImRlc3Ryb3lcIixcbiAgICAgIG9uOiB7XG4gICAgICAgIFwi
Y2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7XG4gICAgICAgICAgX3ZtLmRlbGV0ZVRvZG8odG9kbylcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH0pXSksIF92bS5fdihcIiBcIiksIF9jKCdpbnB1dCcsIHtcbiAgICAgIGRpcmVjdGl2
ZXM6IFt7XG4gICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgcmF3TmFtZTogXCJ2LW1v
ZGVsXCIsXG4gICAgICAgIHZhbHVlOiAodG9kby50aXRsZSksXG4gICAgICAgIGV4cHJlc3Npb246
IFwidG9kby50aXRsZVwiXG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6IFwidG9kb0ZvY3VzXCIs
XG4gICAgICAgIHJhd05hbWU6IFwidi10b2RvRm9jdXNcIixcbiAgICAgICAgdmFsdWU6ICh0b2Rv
ID09PSBfdm0uZWRpdGluZyksXG4gICAgICAgIGV4cHJlc3Npb246IFwidG9kbyA9PT0gZWRpdGlu
Z1wiXG4gICAgICB9XSxcbiAgICAgIHN0YXRpY0NsYXNzOiBcImVkaXRcIixcbiAgICAgIGF0dHJz
OiB7XG4gICAgICAgIFwidHlwZVwiOiBcInRleHRcIlxuICAgICAgfSxcbiAgICAgIGRvbVByb3Bz
OiB7XG4gICAgICAgIFwidmFsdWVcIjogKHRvZG8udGl0bGUpXG4gICAgICB9LFxuICAgICAgb246
IHtcbiAgICAgICAgXCJrZXl1cFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBpZiAo
ISgnYnV0dG9uJyBpbiAkZXZlbnQpICYmIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlbnRlclwi
LCAxMykpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgICAgICBfdm0uZG9uZUVkaXQoJGV2ZW50KVxu
ICAgICAgICB9LFxuICAgICAgICBcImJsdXJcIjogX3ZtLmRvbmVFZGl0LFxuICAgICAgICBcImlu
cHV0XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNv
bXBvc2luZykgeyByZXR1cm47IH1cbiAgICAgICAgICB0b2RvLnRpdGxlID0gJGV2ZW50LnRhcmdl
dC52YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSldKVxuICB9KSldKSwgX3ZtLl92KFwi
IFwiKSwgX2MoJ2Zvb3RlcicsIHtcbiAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgbmFtZTogXCJz
aG93XCIsXG4gICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgdmFsdWU6IChfdm0udG9k
b3MubGVuZ3RoID4gMCksXG4gICAgICBleHByZXNzaW9uOiBcInRvZG9zLmxlbmd0aCA+IDBcIlxu
ICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImZvb3RlclwiXG4gIH0sIFtfYygnc3BhbicsIHtc
biAgICBzdGF0aWNDbGFzczogXCJ0b2RvLWNvdW50XCJcbiAgfSwgW19jKCdzdHJvbmcnLCBbX3Zt
Ll92KF92bS5fcyhfdm0ucmVtYWluaW5nKSldKSwgX3ZtLl92KFwiIFwiICsgX3ZtLl9zKF92bS5f
ZihcInBsdXJhbGl6ZVwiKShfdm0ucmVtYWluaW5nKSkgKyBcIiBsZWZ0XFxuICAgICAgICBcIild
KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ3VsJywge1xuICAgIHN0YXRpY0NsYXNzOiBcImZpbHRlcnNc
IlxuICB9LCBbX2MoJ2xpJywgW19jKCdhJywge1xuICAgIGNsYXNzOiB7XG4gICAgICBzZWxlY3Rl
ZDogX3ZtLmZpbHRlciA9PSAnYWxsJ1xuICAgIH0sXG4gICAgYXR0cnM6IHtcbiAgICAgIFwiaHJl
ZlwiOiBcIiMvYWxsXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IGZ1bmN0
aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVyID0gJ2FsbCdcbiAgICAgIH1cbiAgICB9
XG4gIH0sIFtfdm0uX3YoXCJBbGxcIildKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnbGknLCBbX2Mo
J2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVjdGVkOiBfdm0uZmlsdGVyID09ICdhY3Rp
dmUnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAgXCJocmVmXCI6IFwiIy9hY3RpdmVcIlxu
ICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4g
ICAgICAgIF92bS5maWx0ZXIgPSAnYWN0aXZlJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5f
dihcIkFjdGl2ZVwiKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdsaScsIFtfYygnYScsIHtcbiAg
ICBjbGFzczoge1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2NvbXBsZXRlZCdcbiAg
ICB9LFxuICAgIGF0dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIjL2NvbXBsZXRlZFwiXG4gICAg
fSxcbiAgICBvbjoge1xuICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAg
ICAgX3ZtLmZpbHRlciA9ICdjb21wbGV0ZWQnXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3ZtLl92
KFwiQ29tcGxldGVkXCIpXSldKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywge1xuICAg
IGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgIHJhd05hbWU6IFwi
di1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS5jb21wbGV0ZWQpLFxuICAgICAgZXhwcmVzc2lv
bjogXCJjb21wbGV0ZWRcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcImNsZWFyLWNvbXBs
ZXRlZFwiLFxuICAgIG9uOiB7XG4gICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xu
ICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX3ZtLmRlbGV0ZUNvbXBs
ZXRlZCgkZXZlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQ2xlYXIgQ29tcGxl
dGVkXCIpXSldKV0pXG59LHN0YXRpY1JlbmRlckZuczogW119XG5cbi8qKiovIH0pLFxuLyogMTAg
Ki9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHM9
e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVu
dDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAgYXR0
cnM6IHtcbiAgICAgIFwiaWRcIjogXCJhcHBcIlxuICAgIH1cbiAgfSwgW19jKCdUb2RvcycpXSwg
MSlcbn0sc3RhdGljUmVuZGVyRm5zOiBbXX1cblxuLyoqKi8gfSlcbl0sWzZdKTtcblxuXG4vLyBX
RUJQQUNLIEZPT1RFUiAvL1xuLy8gc3RhdGljL2pzL2FwcC5kNmVkODkzNTQzOGY0NGU5ODQzYS5q
cyIsInZhciBDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVy
L2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKShcbiAgLyogc2NyaXB0ICovXG4gIHJlcXVpcmUo
XCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/
dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FwcC52dWVcIiksXG4gIC8qIHRlbXBsYXRlICovXG4gIHJl
cXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxl
ci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LWEyNTZlYzZhXFxcIixcXFwiaGFzU2NvcGVk
XFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9
dGVtcGxhdGUmaW5kZXg9MCEuL0FwcC52dWVcIiksXG4gIC8qIHN0eWxlcyAqL1xuICBudWxsLFxu
ICAvKiBzY29wZUlkICovXG4gIG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBv
bmx5KSAqL1xuICBudWxsXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50LmV4cG9ydHNc
blxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL0Fw
cC52dWVcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiPHRlbXBsYXRl
PlxuICA8ZGl2IGlkPVwiYXBwXCI+XG4gICAgPFRvZG9zPjwvVG9kb3M+XG4gIDwvZGl2PlxuPC90
ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBUb2RvcyBmcm9tICcuL2NvbXBvbmVudHMvVG9k
b3MnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAnYXBwJyxcbiAgICBjb21wb25lbnRz
OiB7XG4gICAgICAgIFRvZG9zXG4gICAgfVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNL
IEZPT1RFUiAvL1xuLy8gQXBwLnZ1ZT83MWE0ZTUxOSIsIjx0ZW1wbGF0ZT5cbiAgICA8c2VjdGlv
biBjbGFzcz1cInRvZG9hcHBcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cImhlYWRlclwiPlxu
ICAgICAgICAgICAgPGgxPlRvZG9zPC9oMT5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4
dFwiIGNsYXNzPVwibmV3LXRvZG9cIiBhdXRvZm9jdXMgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxh
Y2Vob2xkZXI9XCJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/XCIgdi1tb2RlbD1cIm5ld1RvZG9cIiBA
a2V5dXAuZW50ZXI9XCJhZGRUb2RvXCIgLz5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgIDxz
ZWN0aW9uIGNsYXNzPVwibWFpblwiIHYtc2hvdz1cInRvZG9zLmxlbmd0aFwiIHYtY2xvYWs+XG4g
ICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJ0b2dnbGUtYWxsXCIg
di1tb2RlbD1cImFsbERvbmVcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInRvZG8tbGlzdFwi
PlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRvZG9cIiB2LWZvcj1cInRvZG8gaW4gZmls
dGVyZWRUb2Rvc1wiIDpjbGFzcz1cIntjb21wbGV0ZWQgOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGlu
ZyA6IHRvZG8gPT09IGVkaXRpbmcgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PVwidmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2Jv
eFwiIHYtbW9kZWw9XCJ0b2RvLmNvbXBsZXRlZFwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAg
ICAgICAgICAgICAgICAgICA8bGFiZWwgQGRibGNsaWNrPVwiZWRpdFRvZG8odG9kbylcIj57eyB0
b2RvLnRpdGxlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xh
c3M9XCJkZXN0cm95XCIgQGNsaWNrLnByZXZlbnQ9XCJkZWxldGVUb2RvKHRvZG8pXCI+PC9idXR0
b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aW5w
dXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImVkaXRcIiB2LW1vZGVsPVwidG9kby50aXRsZVwiIEBr
ZXl1cC5lbnRlcj1cImRvbmVFZGl0XCIgQGJsdXI9XCJkb25lRWRpdFwiIHYtdG9kb0ZvY3VzPVwi
dG9kbyA9PT0gZWRpdGluZ1wiPjwvaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAg
ICAgICAgIDwvdWw+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPGZvb3RlciBjbGFzcz1c
ImZvb3RlclwiIHYtc2hvdz1cInRvZG9zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzcGFu
IGNsYXNzPVwidG9kby1jb3VudFwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyByZW1haW5pbmcg
fX08L3N0cm9uZz4ge3sgcmVtYWluaW5nIHwgcGx1cmFsaXplIH19IGxlZnRcbiAgICAgICAgICAg
IDwvc3Bhbj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImZpbHRlcnNcIj5cbiAgICAgICAgICAg
ICAgICA8bGk+PGEgaHJlZj1cIiMvYWxsXCIgOmNsYXNzPVwie3NlbGVjdGVkOiBmaWx0ZXIgPT0g
J2FsbCd9XCIgQGNsaWNrPVwiZmlsdGVyID0gJ2FsbCdcIj5BbGw8L2E+PC9saT5cbiAgICAgICAg
ICAgICAgICA8bGk+PGEgaHJlZj1cIiMvYWN0aXZlXCIgOmNsYXNzPVwie3NlbGVjdGVkOiBmaWx0
ZXIgPT0gJ2FjdGl2ZSd9XCIgQGNsaWNrPVwiZmlsdGVyID0gJ2FjdGl2ZSdcIj5BY3RpdmU8L2E+
PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj1cIiMvY29tcGxldGVkXCIgOmNsYXNz
PVwie3NlbGVjdGVkOiBmaWx0ZXIgPT0gJ2NvbXBsZXRlZCd9XCIgQGNsaWNrPVwiZmlsdGVyID0g
J2NvbXBsZXRlZCdcIj5Db21wbGV0ZWQ8L2E+PC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAg
ICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xlYXItY29tcGxldGVkXCIgdi1zaG93PVwiY29tcGxl
dGVkXCIgQGNsaWNrLnByZXZlbnQ9XCJkZWxldGVDb21wbGV0ZWRcIj5DbGVhciBDb21wbGV0ZWQ8
L2J1dHRvbj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5c
blxuPHNjcmlwdD5cbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4g
ICAgZGF0YSAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b2RvczogW10sXG4g
ICAgICAgICAgICBuZXdUb2RvOiAnJyxcbiAgICAgICAgICAgIGZpbHRlcjogJ2FsbCcsXG4gICAg
ICAgICAgICBhbGxEb25lOiBmYWxzZSxcbiAgICAgICAgICAgIGVkaXRpbmc6IG51bGxcbiAgICAg
ICAgfVxuICAgIH0sXG4gICAgZmlsdGVyczoge1xuICAgICAgICBwbHVyYWxpemU6IGZ1bmN0aW9u
IChuKSB7XG4gICAgICAgIHJldHVybiBuID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJ1xuICAgICAg
ICB9XG4gICAgfSxcbiAgICBkaXJlY3RpdmVzOiB7XG4gICAgICAgIHRvZG9Gb2N1cyAoZWwsIHZh
bHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBWdWUubmV4
dFRpY2soXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKClcbiAgICAgICAgICAg
ICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7
XG4gICAgICAgIGFkZFRvZG8gKCkge1xuICAgICAgICAgICAgdGhpcy50b2Rvcy5wdXNoKHtcbiAg
ICAgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0
aGlzLm5ld1RvZG9cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLm5ld1RvZG8gPSAn
J1xuICAgICAgICB9LFxuICAgICAgICBkZWxldGVUb2RvICh0b2RvKSB7XG4gICAgICAgICAgICB0
aGlzLnRvZG9zID0gdGhpcy50b2Rvcy5maWx0ZXIodCA9PiB0ICE9PSB0b2RvKVxuICAgICAgICB9
LFxuICAgICAgICBkZWxldGVDb21wbGV0ZWQgKCkge1xuICAgICAgICAgICAgdGhpcy50b2RvcyA9
IHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gIXRvZG8uY29tcGxldGVkKVxuICAgICAgICB9LFxu
ICAgICAgICBlZGl0VG9kbyAodG9kbykge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gdG9k
b1xuICAgICAgICB9LFxuICAgICAgICBkb25lRWRpdCAoKSB7XG4gICAgICAgICAgICB0aGlzLmVk
aXRpbmcgPSBudWxsXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAg
IHJlbWFpbmluZyAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9k
byA9PiAhdG9kby5jb21wbGV0ZWQpLmxlbmd0aFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0
ZWQgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gdG9k
by5jb21wbGV0ZWQpLmxlbmd0aFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJlZFRvZG9zICgp
IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlciA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiAhdG9kby5jb21wbGV0ZWQp
XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyID09PSAnY29tcGxldGVkJykge1xu
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+IHRvZG8uY29t
cGxldGVkKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvc1xu
ICAgICAgICB9LFxuICAgICAgICBhbGxEb25lOiB7XG4gICAgICAgICAgICBnZXQgKCkge1xuICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZyA9PT0gMFxuICAgICAgICAgICAgfSxc
biAgICAgICAgICAgIHNldCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZG9zLmZv
ckVhY2godG9kbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRvZG8uY29tcGxldGVkID0gdmFs
dWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxu
fVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzcmM9XCIuL3RvZG8uY3NzXCI+PC9zdHlsZT5cblxuXG5c
bi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBUb2Rvcy52dWU/MWFiMjM4MmYiLCIvLyBUaGUgVnVl
IGJ1aWxkIHZlcnNpb24gdG8gbG9hZCB3aXRoIHRoZSBgaW1wb3J0YCBjb21tYW5kXG4vLyAocnVu
dGltZS1vbmx5IG9yIHN0YW5kYWxvbmUpIGhhcyBiZWVuIHNldCBpbiB3ZWJwYWNrLmJhc2UuY29u
ZiB3aXRoIGFuIGFsaWFzLlxuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgQXBwIGZyb20g
Jy4vQXBwJ1xuaW1wb3J0IERpcmVjdG9yIGZyb20gJ2RpcmVjdG9yL2J1aWxkL2RpcmVjdG9yJ1xu
XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXcgKi9cbndpbmRvdy5WdWVBcHAgPSBuZXcgVnVlKHtc
biAgICBlbDogJyNhcHAnLFxuICAgIHJlbmRlcjogaCA9PiBoKEFwcClcbn0pXG5cbmNvbnN0IHJv
dXRlciA9IG5ldyBEaXJlY3Rvci5Sb3V0ZXIoKTtcblxuWydhbGwnLCAnYWN0aXZlJywgJ2NvbXBs
ZXRlZCddLmZvckVhY2godmlzaWJpbGl0eSA9PiB7XG4gIHJvdXRlci5vbih2aXNpYmlsaXR5LCAo
KSA9PiB7XG4gICAgd2luZG93LlZ1ZUFwcC5maWx0ZXIgPSB2aXNpYmlsaXR5O1xuICB9KTtcbn0p
O1xuXG5yb3V0ZXIuY29uZmlndXJlKHtcbiAgbm90Zm91bmQ6IGZ1bmN0aW9uICgpIHtcbiAgICB3
aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gJ2Fs
bCc7XG4gIH1cbn0pO1xuXG5yb3V0ZXIuaW5pdCgpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8v
XG4vLyAuL3NyYy9tYWluLmpzIiwiZnVuY3Rpb24gaW5qZWN0U3R5bGUgKHNzckNvbnRleHQpIHtc
biAgcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBs
dWdpbi9sb2FkZXIuanM/e1xcXCJvbWl0XFxcIjoxLFxcXCJyZW1vdmVcXFwiOnRydWV9IXZ1ZS1z
dHlsZS1sb2FkZXIhY3NzLWxvYWRlcj97XFxcIm1pbmltaXplXFxcIjp0cnVlLFxcXCJzb3VyY2VN
YXBcXFwiOnRydWV9IS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21w
aWxlci9pbmRleD97XFxcInZ1ZVxcXCI6dHJ1ZSxcXFwiaWRcXFwiOlxcXCJkYXRhLXYtN2QzY2Fj
YmFcXFwiLFxcXCJzY29wZWRcXFwiOmZhbHNlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOmZhbHNl
fSEuL3RvZG8uY3NzXCIpXG59XG52YXIgQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi8uLi9ub2Rl
X21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIikoXG4gIC8qIHNj
cmlwdCAqL1xuICByZXF1aXJlKFwiISFiYWJlbC1sb2FkZXIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1
ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Ub2Rvcy52dWVcIiks
XG4gIC8qIHRlbXBsYXRlICovXG4gIHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy92dWUt
bG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12
LTdkM2NhY2JhXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZX0hLi4vLi4vbm9kZV9tb2R1bGVz
L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1RvZG9zLnZ1
ZVwiKSxcbiAgLyogc3R5bGVzICovXG4gIGluamVjdFN0eWxlLFxuICAvKiBzY29wZUlkICovXG4g
IG51bGwsXG4gIC8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xuICBudWxsXG4p
XG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8v
Ly8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2NvbXBvbmVudHMvVG9kb3MudnVl
XG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRz
PXtyZW5kZXI6ZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1l
bnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7XG4gIHJldHVybiBfYygnc2VjdGlvbicsIHtcbiAg
ICBzdGF0aWNDbGFzczogXCJ0b2RvYXBwXCJcbiAgfSwgW19jKCdoZWFkZXInLCB7XG4gICAgc3Rh
dGljQ2xhc3M6IFwiaGVhZGVyXCJcbiAgfSwgW19jKCdoMScsIFtfdm0uX3YoXCJUb2Rvc1wiKV0p
LCBfdm0uX3YoXCIgXCIpLCBfYygnaW5wdXQnLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAgICAg
IG5hbWU6IFwibW9kZWxcIixcbiAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgdmFs
dWU6IChfdm0ubmV3VG9kbyksXG4gICAgICBleHByZXNzaW9uOiBcIm5ld1RvZG9cIlxuICAgIH1d
LFxuICAgIHN0YXRpY0NsYXNzOiBcIm5ldy10b2RvXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwi
dHlwZVwiOiBcInRleHRcIixcbiAgICAgIFwiYXV0b2ZvY3VzXCI6IFwiXCIsXG4gICAgICBcImF1
dG9jb21wbGV0ZVwiOiBcIm9mZlwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIldoYXQgbmVl
ZHMgdG8gYmUgZG9uZT9cIlxuICAgIH0sXG4gICAgZG9tUHJvcHM6IHtcbiAgICAgIFwidmFsdWVc
IjogKF92bS5uZXdUb2RvKVxuICAgIH0sXG4gICAgb246IHtcbiAgICAgIFwia2V5dXBcIjogZnVu
Y3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIGlmICghKCdidXR0b24nIGluICRldmVudCkgJiYgX3Zt
Ll9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzKSkgeyByZXR1cm4gbnVsbDsgfVxuICAg
ICAgICBfdm0uYWRkVG9kbygkZXZlbnQpXG4gICAgICB9LFxuICAgICAgXCJpbnB1dFwiOiBmdW5j
dGlvbigkZXZlbnQpIHtcbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7IHJl
dHVybjsgfVxuICAgICAgICBfdm0ubmV3VG9kbyA9ICRldmVudC50YXJnZXQudmFsdWVcbiAgICAg
IH1cbiAgICB9XG4gIH0pXSksIF92bS5fdihcIiBcIiksIF9jKCdzZWN0aW9uJywge1xuICAgIGRp
cmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgIHJhd05hbWU6IFwidi1z
aG93XCIsXG4gICAgICB2YWx1ZTogKF92bS50b2Rvcy5sZW5ndGgpLFxuICAgICAgZXhwcmVzc2lv
bjogXCJ0b2Rvcy5sZW5ndGhcIlxuICAgIH1dLFxuICAgIHN0YXRpY0NsYXNzOiBcIm1haW5cIlxu
ICB9LCBbX2MoJ2lucHV0Jywge1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcIm1v
ZGVsXCIsXG4gICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgIHZhbHVlOiAoX3ZtLmFs
bERvbmUpLFxuICAgICAgZXhwcmVzc2lvbjogXCJhbGxEb25lXCJcbiAgICB9XSxcbiAgICBzdGF0
aWNDbGFzczogXCJ0b2dnbGUtYWxsXCIsXG4gICAgYXR0cnM6IHtcbiAgICAgIFwidHlwZVwiOiBc
ImNoZWNrYm94XCJcbiAgICB9LFxuICAgIGRvbVByb3BzOiB7XG4gICAgICBcImNoZWNrZWRcIjog
QXJyYXkuaXNBcnJheShfdm0uYWxsRG9uZSkgPyBfdm0uX2koX3ZtLmFsbERvbmUsIG51bGwpID4g
LTEgOiAoX3ZtLmFsbERvbmUpXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgXCJfX2NcIjogZnVu
Y3Rpb24oJGV2ZW50KSB7XG4gICAgICAgIHZhciAkJGEgPSBfdm0uYWxsRG9uZSxcbiAgICAgICAg
ICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyAo
dHJ1ZSkgOiAoZmFsc2UpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAg
ICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYp
O1xuICAgICAgICAgIGlmICgkJGVsLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICQkaSA8IDAgJiYg
KF92bS5hbGxEb25lID0gJCRhLmNvbmNhdCgkJHYpKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAg
ICAgICAgICAkJGkgPiAtMSAmJiAoX3ZtLmFsbERvbmUgPSAkJGEuc2xpY2UoMCwgJCRpKS5jb25j
YXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgX3ZtLmFsbERvbmUgPSAkJGNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAg
fSksIF92bS5fdihcIiBcIiksIF9jKCd1bCcsIHtcbiAgICBzdGF0aWNDbGFzczogXCJ0b2RvLWxp
c3RcIlxuICB9LCBfdm0uX2woKF92bS5maWx0ZXJlZFRvZG9zKSwgZnVuY3Rpb24odG9kbykge1xu
ICAgIHJldHVybiBfYygnbGknLCB7XG4gICAgICBzdGF0aWNDbGFzczogXCJ0b2RvXCIsXG4gICAg
ICBjbGFzczoge1xuICAgICAgICBjb21wbGV0ZWQ6IHRvZG8uY29tcGxldGVkLCBlZGl0aW5nOiB0
b2RvID09PSBfdm0uZWRpdGluZ1xuICAgICAgfVxuICAgIH0sIFtfYygnZGl2Jywge1xuICAgICAg
c3RhdGljQ2xhc3M6IFwidmlld1wiXG4gICAgfSwgW19jKCdpbnB1dCcsIHtcbiAgICAgIGRpcmVj
dGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgcmF3TmFtZTogXCJ2
LW1vZGVsXCIsXG4gICAgICAgIHZhbHVlOiAodG9kby5jb21wbGV0ZWQpLFxuICAgICAgICBleHBy
ZXNzaW9uOiBcInRvZG8uY29tcGxldGVkXCJcbiAgICAgIH1dLFxuICAgICAgc3RhdGljQ2xhc3M6
IFwidG9nZ2xlXCIsXG4gICAgICBhdHRyczoge1xuICAgICAgICBcInR5cGVcIjogXCJjaGVja2Jv
eFwiXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgXCJjaGVja2VkXCI6IEFy
cmF5LmlzQXJyYXkodG9kby5jb21wbGV0ZWQpID8gX3ZtLl9pKHRvZG8uY29tcGxldGVkLCBudWxs
KSA+IC0xIDogKHRvZG8uY29tcGxldGVkKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAg
IFwiX19jXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIHZhciAkJGEgPSB0b2RvLmNv
bXBsZXRlZCxcbiAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAg
JCRjID0gJCRlbC5jaGVja2VkID8gKHRydWUpIDogKGZhbHNlKTtcbiAgICAgICAgICBpZiAoQXJy
YXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAgICAgICAg
ICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KTtcbiAgICAgICAgICAgIGlmICgkJGVsLmNoZWNr
ZWQpIHtcbiAgICAgICAgICAgICAgJCRpIDwgMCAmJiAodG9kby5jb21wbGV0ZWQgPSAkJGEuY29u
Y2F0KCQkdikpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAkJGkgPiAtMSAm
JiAodG9kby5jb21wbGV0ZWQgPSAkJGEuc2xpY2UoMCwgJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQk
aSArIDEpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAg
dG9kby5jb21wbGV0ZWQgPSAkJGNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9KSwgX3ZtLl92KFwiIFwiKSwgX2MoJ2xhYmVsJywge1xuICAgICAgb246IHtcbiAgICAgICAg
XCJkYmxjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICBfdm0uZWRpdFRvZG8o
dG9kbylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtfdm0uX3YoX3ZtLl9zKHRvZG8udGl0
bGUpKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnYnV0dG9uJywge1xuICAgICAgc3RhdGljQ2xhc3M6
IFwiZGVzdHJveVwiLFxuICAgICAgb246IHtcbiAgICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigk
ZXZlbnQpIHtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBf
dm0uZGVsZXRlVG9kbyh0b2RvKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSldKSwgX3ZtLl92
KFwiIFwiKSwgX2MoJ2lucHV0Jywge1xuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFt
ZTogXCJtb2RlbFwiLFxuICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgdmFs
dWU6ICh0b2RvLnRpdGxlKSxcbiAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvLnRpdGxlXCJcbiAg
ICAgIH0sIHtcbiAgICAgICAgbmFtZTogXCJ0b2RvRm9jdXNcIixcbiAgICAgICAgcmF3TmFtZTog
XCJ2LXRvZG9Gb2N1c1wiLFxuICAgICAgICB2YWx1ZTogKHRvZG8gPT09IF92bS5lZGl0aW5nKSxc
biAgICAgICAgZXhwcmVzc2lvbjogXCJ0b2RvID09PSBlZGl0aW5nXCJcbiAgICAgIH1dLFxuICAg
ICAgc3RhdGljQ2xhc3M6IFwiZWRpdFwiLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgXCJ0eXBl
XCI6IFwidGV4dFwiXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgXCJ2YWx1
ZVwiOiAodG9kby50aXRsZSlcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBcImtleXVw
XCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgIGlmICghKCdidXR0b24nIGluICRldmVu
dCkgJiYgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImVudGVyXCIsIDEzKSkgeyByZXR1cm4gbnVs
bDsgfVxuICAgICAgICAgIF92bS5kb25lRWRpdCgkZXZlbnQpXG4gICAgICAgIH0sXG4gICAgICAg
IFwiYmx1clwiOiBfdm0uZG9uZUVkaXQsXG4gICAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24oJGV2
ZW50KSB7XG4gICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7IHJldHVybjsg
fVxuICAgICAgICAgIHRvZG8udGl0bGUgPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9KV0pXG4gIH0pKV0pLCBfdm0uX3YoXCIgXCIpLCBfYygnZm9vdGVyJywg
e1xuICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgIHJhd05h
bWU6IFwidi1zaG93XCIsXG4gICAgICB2YWx1ZTogKF92bS50b2Rvcy5sZW5ndGggPiAwKSxcbiAg
ICAgIGV4cHJlc3Npb246IFwidG9kb3MubGVuZ3RoID4gMFwiXG4gICAgfV0sXG4gICAgc3RhdGlj
Q2xhc3M6IFwiZm9vdGVyXCJcbiAgfSwgW19jKCdzcGFuJywge1xuICAgIHN0YXRpY0NsYXNzOiBc
InRvZG8tY291bnRcIlxuICB9LCBbX2MoJ3N0cm9uZycsIFtfdm0uX3YoX3ZtLl9zKF92bS5yZW1h
aW5pbmcpKV0pLCBfdm0uX3YoXCIgXCIgKyBfdm0uX3MoX3ZtLl9mKFwicGx1cmFsaXplXCIpKF92
bS5yZW1haW5pbmcpKSArIFwiIGxlZnRcXG4gICAgICAgIFwiKV0pLCBfdm0uX3YoXCIgXCIpLCBf
YygndWwnLCB7XG4gICAgc3RhdGljQ2xhc3M6IFwiZmlsdGVyc1wiXG4gIH0sIFtfYygnbGknLCBb
X2MoJ2EnLCB7XG4gICAgY2xhc3M6IHtcbiAgICAgIHNlbGVjdGVkOiBfdm0uZmlsdGVyID09ICdh
bGwnXG4gICAgfSxcbiAgICBhdHRyczoge1xuICAgICAgXCJocmVmXCI6IFwiIy9hbGxcIlxuICAg
IH0sXG4gICAgb246IHtcbiAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAg
ICAgIF92bS5maWx0ZXIgPSAnYWxsJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW192bS5fdihcIkFs
bFwiKV0pXSksIF92bS5fdihcIiBcIiksIF9jKCdsaScsIFtfYygnYScsIHtcbiAgICBjbGFzczog
e1xuICAgICAgc2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2FjdGl2ZSdcbiAgICB9LFxuICAgIGF0
dHJzOiB7XG4gICAgICBcImhyZWZcIjogXCIjL2FjdGl2ZVwiXG4gICAgfSxcbiAgICBvbjoge1xu
ICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgX3ZtLmZpbHRlciA9
ICdhY3RpdmUnXG4gICAgICB9XG4gICAgfVxuICB9LCBbX3ZtLl92KFwiQWN0aXZlXCIpXSldKSwg
X3ZtLl92KFwiIFwiKSwgX2MoJ2xpJywgW19jKCdhJywge1xuICAgIGNsYXNzOiB7XG4gICAgICBz
ZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnY29tcGxldGVkJ1xuICAgIH0sXG4gICAgYXR0cnM6IHtc
biAgICAgIFwiaHJlZlwiOiBcIiMvY29tcGxldGVkXCJcbiAgICB9LFxuICAgIG9uOiB7XG4gICAg
ICBcImNsaWNrXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBfdm0uZmlsdGVyID0gJ2Nv
bXBsZXRlZCdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJDb21wbGV0ZWRcIildKV0p
XSksIF92bS5fdihcIiBcIiksIF9jKCdidXR0b24nLCB7XG4gICAgZGlyZWN0aXZlczogW3tcbiAg
ICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgIHZh
bHVlOiAoX3ZtLmNvbXBsZXRlZCksXG4gICAgICBleHByZXNzaW9uOiBcImNvbXBsZXRlZFwiXG4g
ICAgfV0sXG4gICAgc3RhdGljQ2xhc3M6IFwiY2xlYXItY29tcGxldGVkXCIsXG4gICAgb246IHtc
biAgICAgIFwiY2xpY2tcIjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICRldmVudC5wcmV2
ZW50RGVmYXVsdCgpO1xuICAgICAgICBfdm0uZGVsZXRlQ29tcGxldGVkKCRldmVudClcbiAgICAg
IH1cbiAgICB9XG4gIH0sIFtfdm0uX3YoXCJDbGVhciBDb21wbGV0ZWRcIildKV0pXSlcbn0sc3Rh
dGljUmVuZGVyRm5zOiBbXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRh
dGEtdi03ZDNjYWNiYVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2V9IS4vfi92dWUtbG9hZGVyL2xpYi9z
ZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvY29tcG9uZW50cy9Ub2Rvcy52
dWVcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9y
dHM9e3JlbmRlcjpmdW5jdGlvbiAoKXt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxl
bWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtcbiAgcmV0dXJuIF9jKCdkaXYnLCB7XG4gICAg
YXR0cnM6IHtcbiAgICAgIFwiaWRcIjogXCJhcHBcIlxuICAgIH1cbiAgfSwgW19jKCdUb2Rvcycp
XSwgMSlcbn0sc3RhdGljUmVuZGVyRm5zOiBbXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/
e1wiaWRcIjpcImRhdGEtdi1hMjU2ZWM2YVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2V9IS4vfi92dWUt
bG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvQXBwLnZ1
ZVxuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3Qi
OiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9hcHAuZTZjMDEwZDU3ZDUzNTM3ZjRhZDIuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvYXBwLmU2YzAxMGQ1N2Q1MzUzN2Y0
YWQyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4OTY5OWI1ODkwY2FjOWY5MWExOTExOGJjYTNiMjE2YjgyMGE0
MjcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMv
anMvYXBwLmU2YzAxMGQ1N2Q1MzUzN2Y0YWQyLmpzCkBAIC0wLDAgKzEsMiBAQAord2VicGFja0pz
b25wKFswXSx7RUhUSTpmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7
bygiamhqUiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9
KTt2YXIgbD1vKCJlWE5lIiksaT1vLm4obCkscz1vKCJiNXlLIiksYT1vKCJWVS84IiksYz1uLHI9
YShpLmEscy5hLGMsbnVsbCxudWxsKTt0LmRlZmF1bHQ9ci5leHBvcnRzfSxNOTN4OmZ1bmN0aW9u
KGUsdCxvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUi
LHt2YWx1ZTohMH0pO3ZhciBuPW8oInhKRDgiKSxsPW8ubihuKSxpPW8oIlZHNnAiKSxzPW8oIlZV
LzgiKSxhPXMobC5hLGkuYSxudWxsLG51bGwsbnVsbCk7dC5kZWZhdWx0PWEuZXhwb3J0c30sTkhu
cjpmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUmJmUu
X19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPW8oIjcrdVciKSxpPW4obCkscz1vKCJNOTN4
IiksYT1uKHMpLGM9bygicm1uaCIpLHI9bihjKTt3aW5kb3cuVnVlQXBwPW5ldyBpLmRlZmF1bHQo
e2VsOiIjYXBwIixyZW5kZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoYS5kZWZhdWx0KX19KTt2YXIg
ZD1uZXcgci5kZWZhdWx0LlJvdXRlcjtbImFsbCIsImFjdGl2ZSIsImNvbXBsZXRlZCJdLmZvckVh
Y2goZnVuY3Rpb24oZSl7ZC5vbihlLGZ1bmN0aW9uKCl7d2luZG93LlZ1ZUFwcC5maWx0ZXI9ZX0p
fSksZC5jb25maWd1cmUoe25vdGZvdW5kOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhhc2g9
IiIsd2luZG93LlZ1ZUFwcC5maWx0ZXI9ImFsbCJ9fSksZC5pbml0KCl9LFZHNnA6ZnVuY3Rpb24o
ZSx0LG8peyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVh
dGVFbGVtZW50LG89ZS5fc2VsZi5fY3x8dDtyZXR1cm4gbygiZGl2Iix7YXR0cnM6e2lkOiJhcHAi
fX0sW28oIlRvZG9zIildLDEpfSxsPVtdLGk9e3JlbmRlcjpuLHN0YXRpY1JlbmRlckZuczpsfTt0
LmE9aX0sYjV5SzpmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO3ZhciBuPWZ1bmN0aW9uKCl7
dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQsbz1lLl9zZWxmLl9jfHx0O3JldHVybiBvKCJz
ZWN0aW9uIix7c3RhdGljQ2xhc3M6InRvZG9hcHAifSxbbygiaGVhZGVyIix7c3RhdGljQ2xhc3M6
ImhlYWRlciJ9LFtvKCJoMSIsW2UuX3YoIlRvZG9zIildKSxlLl92KCIgIiksbygiaW5wdXQiLHtk
aXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUubmV3VG9k
byxleHByZXNzaW9uOiJuZXdUb2RvIn1dLHN0YXRpY0NsYXNzOiJuZXctdG9kbyIsYXR0cnM6e3R5
cGU6InRleHQiLGF1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIscGxhY2Vob2xkZXI6Ildo
YXQgbmVlZHMgdG8gYmUgZG9uZT8ifSxkb21Qcm9wczp7dmFsdWU6ZS5uZXdUb2RvfSxvbjp7a2V5
dXA6ZnVuY3Rpb24odCl7aWYoISgiYnV0dG9uImluIHQpJiZlLl9rKHQua2V5Q29kZSwiZW50ZXIi
LDEzKSlyZXR1cm4gbnVsbDtlLmFkZFRvZG8odCl9LGlucHV0OmZ1bmN0aW9uKHQpe3QudGFyZ2V0
LmNvbXBvc2luZ3x8KGUubmV3VG9kbz10LnRhcmdldC52YWx1ZSl9fX0pXSksZS5fdigiICIpLG8o
InNlY3Rpb24iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1
ZTplLnRvZG9zLmxlbmd0aCxleHByZXNzaW9uOiJ0b2Rvcy5sZW5ndGgifV0sc3RhdGljQ2xhc3M6
Im1haW4ifSxbbygiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYt
bW9kZWwiLHZhbHVlOmUuYWxsRG9uZSxleHByZXNzaW9uOiJhbGxEb25lIn1dLHN0YXRpY0NsYXNz
OiJ0b2dnbGUtYWxsIixhdHRyczp7dHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpB
cnJheS5pc0FycmF5KGUuYWxsRG9uZSk/ZS5faShlLmFsbERvbmUsbnVsbCk+LTE6ZS5hbGxEb25l
fSxvbjp7X19jOmZ1bmN0aW9uKHQpe3ZhciBvPWUuYWxsRG9uZSxuPXQudGFyZ2V0LGw9ISFuLmNo
ZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShvKSl7dmFyIGk9ZS5faShvLG51bGwpO24uY2hlY2tlZD9p
PDAmJihlLmFsbERvbmU9by5jb25jYXQobnVsbCkpOmk+LTEmJihlLmFsbERvbmU9by5zbGljZSgw
LGkpLmNvbmNhdChvLnNsaWNlKGkrMSkpKX1lbHNlIGUuYWxsRG9uZT1sfX19KSxlLl92KCIgIiks
bygidWwiLHtzdGF0aWNDbGFzczoidG9kby1saXN0In0sZS5fbChlLmZpbHRlcmVkVG9kb3MsZnVu
Y3Rpb24odCl7cmV0dXJuIG8oImxpIix7c3RhdGljQ2xhc3M6InRvZG8iLGNsYXNzOntjb21wbGV0
ZWQ6dC5jb21wbGV0ZWQsZWRpdGluZzp0PT09ZS5lZGl0aW5nfX0sW28oImRpdiIse3N0YXRpY0Ns
YXNzOiJ2aWV3In0sW28oImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1l
OiJ2LW1vZGVsIix2YWx1ZTp0LmNvbXBsZXRlZCxleHByZXNzaW9uOiJ0b2RvLmNvbXBsZXRlZCJ9
XSxzdGF0aWNDbGFzczoidG9nZ2xlIixhdHRyczp7dHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7
Y2hlY2tlZDpBcnJheS5pc0FycmF5KHQuY29tcGxldGVkKT9lLl9pKHQuY29tcGxldGVkLG51bGwp
Pi0xOnQuY29tcGxldGVkfSxvbjp7X19jOmZ1bmN0aW9uKG8pe3ZhciBuPXQuY29tcGxldGVkLGw9
by50YXJnZXQsaT0hIWwuY2hlY2tlZDtpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgcz1lLl9pKG4s
bnVsbCk7bC5jaGVja2VkP3M8MCYmKHQuY29tcGxldGVkPW4uY29uY2F0KG51bGwpKTpzPi0xJiYo
dC5jb21wbGV0ZWQ9bi5zbGljZSgwLHMpLmNvbmNhdChuLnNsaWNlKHMrMSkpKX1lbHNlIHQuY29t
cGxldGVkPWl9fX0pLGUuX3YoIiAiKSxvKCJsYWJlbCIse29uOntkYmxjbGljazpmdW5jdGlvbihv
KXtlLmVkaXRUb2RvKHQpfX19LFtlLl92KGUuX3ModC50aXRsZSkpXSksZS5fdigiICIpLG8oImJ1
dHRvbiIse3N0YXRpY0NsYXNzOiJkZXN0cm95Iixvbjp7Y2xpY2s6ZnVuY3Rpb24obyl7by5wcmV2
ZW50RGVmYXVsdCgpLGUuZGVsZXRlVG9kbyh0KX19fSldKSxlLl92KCIgIiksbygiaW5wdXQiLHtk
aXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOnQudGl0bGUs
ZXhwcmVzc2lvbjoidG9kby50aXRsZSJ9LHtuYW1lOiJ0b2RvRm9jdXMiLHJhd05hbWU6InYtdG9k
b0ZvY3VzIix2YWx1ZTp0PT09ZS5lZGl0aW5nLGV4cHJlc3Npb246InRvZG8gPT09IGVkaXRpbmci
fV0sc3RhdGljQ2xhc3M6ImVkaXQiLGF0dHJzOnt0eXBlOiJ0ZXh0In0sZG9tUHJvcHM6e3ZhbHVl
OnQudGl0bGV9LG9uOntrZXl1cDpmdW5jdGlvbih0KXtpZighKCJidXR0b24iaW4gdCkmJmUuX2so
dC5rZXlDb2RlLCJlbnRlciIsMTMpKXJldHVybiBudWxsO2UuZG9uZUVkaXQodCl9LGJsdXI6ZS5k
b25lRWRpdCxpbnB1dDpmdW5jdGlvbihlKXtlLnRhcmdldC5jb21wb3Npbmd8fCh0LnRpdGxlPWUu
dGFyZ2V0LnZhbHVlKX19fSldKX0pKV0pLGUuX3YoIiAiKSxvKCJmb290ZXIiLHtkaXJlY3RpdmVz
Olt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnRvZG9zLmxlbmd0aD4wLGV4
cHJlc3Npb246InRvZG9zLmxlbmd0aCA+IDAifV0sc3RhdGljQ2xhc3M6ImZvb3RlciJ9LFtvKCJz
cGFuIix7c3RhdGljQ2xhc3M6InRvZG8tY291bnQifSxbbygic3Ryb25nIixbZS5fdihlLl9zKGUu
cmVtYWluaW5nKSldKSxlLl92KCIgIitlLl9zKGUuX2YoInBsdXJhbGl6ZSIpKGUucmVtYWluaW5n
KSkrIiBsZWZ0XG4gICAgICAgICIpXSksZS5fdigiICIpLG8oInVsIix7c3RhdGljQ2xhc3M6ImZp
bHRlcnMifSxbbygibGkiLFtvKCJhIix7Y2xhc3M6e3NlbGVjdGVkOiJhbGwiPT1lLmZpbHRlcn0s
YXR0cnM6e2hyZWY6IiMvYWxsIn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuZmlsdGVyPSJhbGwi
fX19LFtlLl92KCJBbGwiKV0pXSksZS5fdigiICIpLG8oImxpIixbbygiYSIse2NsYXNzOntzZWxl
Y3RlZDoiYWN0aXZlIj09ZS5maWx0ZXJ9LGF0dHJzOntocmVmOiIjL2FjdGl2ZSJ9LG9uOntjbGlj
azpmdW5jdGlvbih0KXtlLmZpbHRlcj0iYWN0aXZlIn19fSxbZS5fdigiQWN0aXZlIildKV0pLGUu
X3YoIiAiKSxvKCJsaSIsW28oImEiLHtjbGFzczp7c2VsZWN0ZWQ6ImNvbXBsZXRlZCI9PWUuZmls
dGVyfSxhdHRyczp7aHJlZjoiIy9jb21wbGV0ZWQifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5m
aWx0ZXI9ImNvbXBsZXRlZCJ9fX0sW2UuX3YoIkNvbXBsZXRlZCIpXSldKV0pLGUuX3YoIiAiKSxv
KCJidXR0b24iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1
ZTplLmNvbXBsZXRlZCxleHByZXNzaW9uOiJjb21wbGV0ZWQifV0sc3RhdGljQ2xhc3M6ImNsZWFy
LWNvbXBsZXRlZCIsb246e2NsaWNrOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxlLmRl
bGV0ZUNvbXBsZXRlZCh0KX19fSxbZS5fdigiQ2xlYXIgQ29tcGxldGVkIildKV0pXSl9LGw9W10s
aT17cmVuZGVyOm4sc3RhdGljUmVuZGVyRm5zOmx9O3QuYT1pfSxlWE5lOmZ1bmN0aW9uKGUsdCxv
KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1
ZTohMH0pO3ZhciBuPW8oIjcrdVciKSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1
bGU/ZTp7ZGVmYXVsdDplfX0obik7dC5kZWZhdWx0PXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3Rv
ZG9zOltdLG5ld1RvZG86IiIsZmlsdGVyOiJhbGwiLGFsbERvbmU6ITEsZWRpdGluZzpudWxsfX0s
ZmlsdGVyczp7cGx1cmFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8iaXRlbSI6Iml0ZW1z
In19LGRpcmVjdGl2ZXM6e3RvZG9Gb2N1czpmdW5jdGlvbihlLHQpe3QmJmwuZGVmYXVsdC5uZXh0
VGljayhmdW5jdGlvbih0KXtlLmZvY3VzKCl9KX19LG1ldGhvZHM6e2FkZFRvZG86ZnVuY3Rpb24o
KXt0aGlzLnRvZG9zLnB1c2goe2NvbXBsZXRlZDohMSx0aXRsZTp0aGlzLm5ld1RvZG99KSx0aGlz
Lm5ld1RvZG89IiJ9LGRlbGV0ZVRvZG86ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcz10aGlzLnRvZG9z
LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KX0sZGVsZXRlQ29tcGxldGVkOmZ1bmN0
aW9uKCl7dGhpcy50b2Rvcz10aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5j
b21wbGV0ZWR9KX0sZWRpdFRvZG86ZnVuY3Rpb24oZSl7dGhpcy5lZGl0aW5nPWV9LGRvbmVFZGl0
OmZ1bmN0aW9uKCl7dGhpcy5lZGl0aW5nPW51bGx9fSxjb21wdXRlZDp7cmVtYWluaW5nOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBs
ZXRlZH0pLmxlbmd0aH0sY29tcGxldGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9kb3MuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pLmxlbmd0aH0sZmlsdGVyZWRUb2Rv
czpmdW5jdGlvbigpe3JldHVybiJhY3RpdmUiPT09dGhpcy5maWx0ZXI/dGhpcy50b2Rvcy5maWx0
ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSk6ImNvbXBsZXRlZCI9PT10aGlzLmZp
bHRlcj90aGlzLnRvZG9zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KTp0
aGlzLnRvZG9zfSxhbGxEb25lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMucmVtYWlu
aW5nfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy50b2Rvcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuY29t
cGxldGVkPWV9KX19fX19LGpoalI6ZnVuY3Rpb24oZSx0KXt9LHhKRDg6ZnVuY3Rpb24oZSx0LG8p
eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVl
OiEwfSk7dmFyIG49bygiRUhUSSIpLGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fShuKTt0LmRlZmF1bHQ9e25hbWU6ImFwcCIsY29tcG9uZW50czp7VG9k
b3M6bC5kZWZhdWx0fX19fSxbIk5IbnIiXSk7CisvLyMgc291cmNlTWFwcGluZ1VSTD1hcHAuZTZj
MDEwZDU3ZDUzNTM3ZjRhZDIuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC5lNmMwMTBk
NTdkNTM1MzdmNGFkMi5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMv
anMvYXBwLmU2YzAxMGQ1N2Q1MzUzN2Y0YWQyLmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTZlZTI5YjJi
NTA0MTgyNDA1MzBhYWQ0YmQ5YjdiZjg1ZmE1YmEwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL2FwcC5lNmMwMTBkNTdkNTM1MzdmNGFkMi5q
cy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8v
c3RhdGljL2pzL2FwcC5lNmMwMTBkNTdkNTM1MzdmNGFkMi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMv
Y29tcG9uZW50cy9Ub2Rvcy52dWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL0FwcC52dWUiLCJ3ZWJwYWNr
Oi8vLy4vc3JjL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0FwcC52dWU/YzQ0ZSIsIndlYnBh
Y2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWU/MzA3NSIsIndlYnBhY2s6Ly8vVG9kb3Mu
dnVlIiwid2VicGFjazovLy9BcHAudnVlIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIkVIVEki
LCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImlu
amVjdFN0eWxlIiwic3NyQ29udGV4dCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUi
LCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2JhYmVsX2xvYWRlcl9ub2RlX21vZHVsZXNf
dnVlX2xvYWRlcl9saWJfc2VsZWN0b3JfdHlwZV9zY3JpcHRfaW5kZXhfMF9Ub2Rvc192dWVfXyIs
Il9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYmFiZWxfbG9hZGVyX25vZGVfbW9kdWxlc192
dWVfbG9hZGVyX2xpYl9zZWxlY3Rvcl90eXBlX3NjcmlwdF9pbmRleF8wX1RvZG9zX3Z1ZV9fX2Rl
ZmF1bHQiLCJuIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19ub2RlX21vZHVsZXNfdnVl
X2xvYWRlcl9saWJfdGVtcGxhdGVfY29tcGlsZXJfaW5kZXhfaWRfZGF0YV92XzdkM2NhY2JhX2hh
c1Njb3BlZF9mYWxzZV90cmFuc2Zvcm1Ub1JlcXVpcmVfdmlkZW9fc3JjX3NvdXJjZV9zcmNfaW1n
X3NyY19pbWFnZV94bGlua19ocmVmX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9zZWxlY3Rv
cl90eXBlX3RlbXBsYXRlX2luZGV4XzBfVG9kb3NfdnVlX18iLCJub3JtYWxpemVDb21wb25lbnQi
LCJfX3Z1ZV9zdHlsZXNfXyIsIkNvbXBvbmVudCIsImEiLCJNOTN4IiwiX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19iYWJlbF9sb2FkZXJfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX3Nl
bGVjdG9yX3R5cGVfc2NyaXB0X2luZGV4XzBfQXBwX3Z1ZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19iYWJlbF9sb2FkZXJfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX3NlbGVj
dG9yX3R5cGVfc2NyaXB0X2luZGV4XzBfQXBwX3Z1ZV9fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl90ZW1wbGF0ZV9jb21w
aWxlcl9pbmRleF9pZF9kYXRhX3ZfYTI1NmVjNmFfaGFzU2NvcGVkX2ZhbHNlX3RyYW5zZm9ybVRv
UmVxdWlyZV92aWRlb19zcmNfc291cmNlX3NyY19pbWdfc3JjX2ltYWdlX3hsaW5rX2hyZWZfbm9k
ZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX3NlbGVjdG9yX3R5cGVfdGVtcGxhdGVfaW5kZXhfMF9B
cHBfdnVlX18iLCJOSG5yIiwiZXhwb3J0cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJvYmoi
LCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl92dWUiLCJfdnVlMiIsIl9BcHAiLCJfQXBwMiIsIl9k
aXJlY3RvciIsIl9kaXJlY3RvcjIiLCJ3aW5kb3ciLCJWdWVBcHAiLCJlbCIsInJlbmRlciIsImgi
LCJyb3V0ZXIiLCJSb3V0ZXIiLCJmb3JFYWNoIiwidmlzaWJpbGl0eSIsIm9uIiwiZmlsdGVyIiwi
Y29uZmlndXJlIiwibm90Zm91bmQiLCJsb2NhdGlvbiIsImhhc2giLCJpbml0IiwiVkc2cCIsIl92
bSIsInRoaXMiLCJfaCIsIiRjcmVhdGVFbGVtZW50IiwiX2MiLCJfc2VsZiIsImF0dHJzIiwiaWQi
LCJzdGF0aWNSZW5kZXJGbnMiLCJlc0V4cG9ydHMiLCJiNXlLIiwic3RhdGljQ2xhc3MiLCJfdiIs
ImRpcmVjdGl2ZXMiLCJuYW1lIiwicmF3TmFtZSIsImV4cHJlc3Npb24iLCJ0eXBlIiwiYXV0b2Zv
Y3VzIiwiYXV0b2NvbXBsZXRlIiwicGxhY2Vob2xkZXIiLCJkb21Qcm9wcyIsImtleXVwIiwiJGV2
ZW50IiwiX2siLCJrZXlDb2RlIiwiYWRkVG9kbyIsImlucHV0IiwidGFyZ2V0IiwiY29tcG9zaW5n
IiwibmV3VG9kbyIsInRvZG9zIiwiY2hlY2tlZCIsIkFycmF5IiwiaXNBcnJheSIsImFsbERvbmUi
LCJfaSIsIl9fYyIsIiQkYSIsIiQkZWwiLCIkJGMiLCIkJGkiLCJjb25jYXQiLCJzbGljZSIsIl9s
IiwidG9kbyIsImNsYXNzIiwiY29tcGxldGVkIiwiZWRpdGluZyIsImRibGNsaWNrIiwiZWRpdFRv
ZG8iLCJfcyIsInRpdGxlIiwiY2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsImRlbGV0ZVRvZG8iLCJk
b25lRWRpdCIsImJsdXIiLCJsZW5ndGgiLCJyZW1haW5pbmciLCJfZiIsInNlbGVjdGVkIiwiaHJl
ZiIsImRlbGV0ZUNvbXBsZXRlZCIsImVYTmUiLCJkYXRhIiwiZmlsdGVycyIsInBsdXJhbGl6ZSIs
InRvZG9Gb2N1cyIsIm5leHRUaWNrIiwiXyIsImZvY3VzIiwibWV0aG9kcyIsInB1c2giLCJ0Iiwi
Y29tcHV0ZWQiLCJmaWx0ZXJlZFRvZG9zIiwiZ2V0Iiwic2V0IiwiamhqUiIsInhKRDgiLCJfVG9k
b3MiLCJfVG9kb3MyIiwiY29tcG9uZW50cyIsIlRvZG9zIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FB
YyxJQUVSQyxLQUNBLFNBQVVDLEVBQVFDLEVBQXFCQyxHQUU3QyxZQ0xBLFNBQUFDLEdBQUFDLEdB
Q0FGLEVBQUEsUURLQUcsT0FBT0MsZUFBZUwsRUFBcUIsY0FBZ0JNLE9BQU8sR0FDN0MsSUFBSUMs
R0FBaUhOLEVBQW9CLFFBQ3JJTyxFQUF5SFAsRUFBb0JRLEVBQUVGLEdDUnhLRyxFQUFBVCxFQUFB
LFFBR0FVLEVBQUFWLEVBQUEsUUFNQVcsRUFBQVYsRUFLQVcsRUFBQUYsRUFDQUgsRUFBQU0sRUFD
QUosRUFBQSxFQUNBRSxFQU5BLEtBRUEsS0FTQVosR0FBQSxRQUFBYSxFQUFBLFNEZU1FLEtBQ0Es
U0FBVWhCLEVBQVFDLEVBQXFCQyxHQUU3QyxZQUNBRyxRQUFPQyxlQUFlTCxFQUFxQixjQUFnQk0s
T0FBTyxHQUM3QyxJQUFJVSxHQUErR2YsRUFBb0IsUUFDbklnQixFQUF1SGhCLEVBQW9CUSxFQUFF
TyxHRTNDdEtFLEVBQUFqQixFQUFBLFFBQUFVLEVBQUFWLEVBQUEsUUFXQVksRUFBQUYsRUFDQU0s
RUFBQUgsRUFDQUksRUFBQSxFQVBBLEtBRUEsS0FFQSxLQVNBbEIsR0FBQSxRQUFBYSxFQUFBLFNG
a0RNTSxLQUNBLFNBQVVwQixFQUFRcUIsRUFBU25CLEdBRWpDLFlBZUEsU0FBU29CLEdBQXVCQyxH
QUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdHckZ2RixHQUFBRyxHQUFB
eEIsRUFBQSxRSDJFSXlCLEVBQVFMLEVBQXVCSSxHRzFFbkNFLEVBQUExQixFQUFBLFFIOEVJMkIs
RUFBUVAsRUFBdUJNLEdHN0VuQ0UsRUFBQTVCLEVBQUEsUUhpRkk2QixFQUFhVCxFQUF1QlEsRUc5
RXhDRSxRQUFPQyxPQUFTLEdBQUFOLEdBQUFGLFNBQ1pTLEdBQUksT0FDSkMsT0FBUSxTQUFBQyxH
QUFBLE1BQUtBLGdCQUdqQixJQUFNQyxHQUFTLEdBQUlOLEdBQUFOLFFBQVNhLFFBRTNCLE1BQU8s
U0FBVSxhQUFhQyxRQUFRLFNBQUFDLEdBQ3JDSCxFQUFPSSxHQUFHRCxFQUFZLFdBQ3BCUixPQUFP
QyxPQUFPUyxPQUFTRixNQUkzQkgsRUFBT00sV0FDTEMsU0FBVSxXQUNSWixPQUFPYSxTQUFTQyxL
QUFPLEdBQ3ZCZCxPQUFPQyxPQUFPUyxPQUFTLFNBSTNCTCxFQUFPVSxRSHdGREMsS0FDQSxTQUFV
aEQsRUFBUUMsRUFBcUJDLEdBRTdDLFlJdEhBLElBQUFpQyxHQUFBLFdBQTBCLEdBQUFjLEdBQUFD
LEtBQWFDLEVBQUFGLEVBQUFHLGVBQTBCQyxFQUFBSixFQUFBSyxNQUFBRCxJQUFBRixDQUF3QixP
QUFBRSxHQUFBLE9BQWlCRSxPQUFPQyxHQUFBLFNBQVlILEVBQUEsY0FDN0hJLEtBQ0FDLEdBQWlC
dkIsU0FBQXNCLGtCQUNqQnhELEdBQUEsS0oySE0wRCxLQUNBLFNBQVUzRCxFQUFRQyxFQUFxQkMs
R0FFN0MsWUtqSUEsSUFBQWlDLEdBQUEsV0FBMEIsR0FBQWMsR0FBQUMsS0FBYUMsRUFBQUYsRUFB
QUcsZUFBMEJDLEVBQUFKLEVBQUFLLE1BQUFELElBQUFGLENBQXdCLE9BQUFFLEdBQUEsV0FBcUJP
LFlBQUEsWUFBc0JQLEVBQUEsVUFBZU8sWUFBQSxXQUFxQlAsRUFBQSxNQUFBSixFQUFBWSxHQUFB
LFdBQUFaLEVBQUFZLEdBQUEsS0FBQVIsRUFBQSxTQUFxRFMsYUFBYUMsS0FBQSxRQUFBQyxRQUFB
LFVBQUF6RCxNQUFBMEMsRUFBQSxRQUFBZ0IsV0FBQSxZQUF3RUwsWUFBQSxXQUFBTCxPQUFnQ1cs
S0FBQSxPQUFBQyxVQUFBLEdBQUFDLGFBQUEsTUFBQUMsWUFBQSwwQkFBeUZDLFVBQVcvRCxNQUFB
MEMsRUFBQSxTQUFzQlIsSUFBSzhCLE1BQUEsU0FBQUMsR0FBeUIsZUFBQUEsS0FBQXZCLEVBQUF3
QixHQUFBRCxFQUFBRSxRQUFBLFlBQTZELFdBQWV6QixHQUFBMEIsUUFBQUgsSUFBb0JJLE1BQUEs
U0FBQUosR0FBMEJBLEVBQUFLLE9BQUFDLFlBQXNDN0IsRUFBQThCLFFBQUFQLEVBQUFLLE9BQUF0
RSxhQUFrQzBDLEVBQUFZLEdBQUEsS0FBQVIsRUFBQSxXQUE4QlMsYUFBYUMsS0FBQSxPQUFBQyxR
QUFBLFNBQUF6RCxNQUFBMEMsRUFBQStCLE1BQUEsT0FBQWYsV0FBQSxpQkFBZ0ZMLFlBQUEsU0FB
cUJQLEVBQUEsU0FBY1MsYUFBYUMsS0FBQSxRQUFBQyxRQUFBLFVBQUF6RCxNQUFBMEMsRUFBQSxR
QUFBZ0IsV0FBQSxZQUF3RUwsWUFBQSxhQUFBTCxPQUFrQ1csS0FBQSxZQUFrQkksVUFBV1csUUFB
QUMsTUFBQUMsUUFBQWxDLEVBQUFtQyxTQUFBbkMsRUFBQW9DLEdBQUFwQyxFQUFBbUMsUUFBQSxT
QUFBbkMsRUFBQSxTQUErRVIsSUFBSzZDLElBQUEsU0FBQWQsR0FBdUIsR0FBQWUsR0FBQXRDLEVB
QUFtQyxRQUFBSSxFQUFBaEIsRUFBQUssT0FBQVksSUFBQUQsRUFBQVAsT0FBdUUsSUFBQUMsTUFB
QUMsUUFBQUksR0FBQSxDQUF1QixHQUFBRyxHQUFBekMsRUFBQW9DLEdBQUFFLEVBQUEsS0FBaUND
LEdBQUFQLFFBQWlCUyxFQUFBLElBQUF6QyxFQUFBbUMsUUFBQUcsRUFBQUksT0FBbEQsT0FBNEZE
LEdBQUEsSUFBQXpDLEVBQUFtQyxRQUFBRyxFQUFBSyxNQUFBLEVBQUFGLEdBQUFDLE9BQUFKLEVB
QUFLLE1BQUFGLEVBQUEsU0FBc0V6QyxHQUFBbUMsUUFBQUssTUFBbUJ4QyxFQUFBWSxHQUFBLEtB
QUFSLEVBQUEsTUFBdUJPLFlBQUEsYUFBd0JYLEVBQUE0QyxHQUFBNUMsRUFBQSx1QkFBQTZDLEdB
QTJDLE1BQUF6QyxHQUFBLE1BQWdCTyxZQUFBLE9BQUFtQyxPQUEwQkMsVUFBQUYsRUFBQUUsVUFB
QUMsUUFBQUgsSUFBQTdDLEVBQUFnRCxXQUE2RDVDLEVBQUEsT0FBWU8sWUFBQSxTQUFtQlAsRUFB
QSxTQUFjUyxhQUFhQyxLQUFBLFFBQUFDLFFBQUEsVUFBQXpELE1BQUF1RixFQUFBLFVBQUE3QixX
QUFBLG1CQUFrRkwsWUFBQSxTQUFBTCxPQUE4QlcsS0FBQSxZQUFrQkksVUFBV1csUUFBQUMsTUFB
QUMsUUFBQVcsRUFBQUUsV0FBQS9DLEVBQUFvQyxHQUFBUyxFQUFBRSxVQUFBLFNBQUFGLEVBQUEs
V0FBd0ZyRCxJQUFLNkMsSUFBQSxTQUFBZCxHQUF1QixHQUFBZSxHQUFBTyxFQUFBRSxVQUFBUixF
QUFBaEIsRUFBQUssT0FBQVksSUFBQUQsRUFBQVAsT0FBMEUsSUFBQUMsTUFBQUMsUUFBQUksR0FB
QSxDQUF1QixHQUFBRyxHQUFBekMsRUFBQW9DLEdBQUFFLEVBQUEsS0FBaUNDLEdBQUFQLFFBQWlC
UyxFQUFBLElBQUFJLEVBQUFFLFVBQUFULEVBQUFJLE9BQWxELE9BQStGRCxHQUFBLElBQUFJLEVB
QUFFLFVBQUFULEVBQUFLLE1BQUEsRUFBQUYsR0FBQUMsT0FBQUosRUFBQUssTUFBQUYsRUFBQSxT
QUF5RUksR0FBQUUsVUFBQVAsTUFBc0J4QyxFQUFBWSxHQUFBLEtBQUFSLEVBQUEsU0FBMEJaLElB
QUl5RCxTQUFBLFNBQUExQixHQUE0QnZCLEVBQUFrRCxTQUFBTCxPQUFxQjdDLEVBQUFZLEdBQUFa
LEVBQUFtRCxHQUFBTixFQUFBTyxVQUFBcEQsRUFBQVksR0FBQSxLQUFBUixFQUFBLFVBQXdETyxZ
QUFBLFVBQUFuQixJQUEwQjZELE1BQUEsU0FBQTlCLEdBQXlCQSxFQUFBK0IsaUJBQXdCdEQsRUFB
QXVELFdBQUFWLFNBQXVCN0MsRUFBQVksR0FBQSxLQUFBUixFQUFBLFNBQTRCUyxhQUFhQyxLQUFB
LFFBQUFDLFFBQUEsVUFBQXpELE1BQUF1RixFQUFBLE1BQUE3QixXQUFBLGVBQTRFRixLQUFBLFlB
QUFDLFFBQUEsY0FBQXpELE1BQUF1RixJQUFBN0MsRUFBQWdELFFBQUFoQyxXQUFBLHFCQUFrR0ws
WUFBQSxPQUFBTCxPQUE0QlcsS0FBQSxRQUFjSSxVQUFXL0QsTUFBQXVGLEVBQUEsT0FBcUJyRCxJ
QUFLOEIsTUFBQSxTQUFBQyxHQUF5QixlQUFBQSxLQUFBdkIsRUFBQXdCLEdBQUFELEVBQUFFLFFB
QUEsWUFBNkQsV0FBZXpCLEdBQUF3RCxTQUFBakMsSUFBcUJrQyxLQUFBekQsRUFBQXdELFNBQUE3
QixNQUFBLFNBQUFKLEdBQThDQSxFQUFBSyxPQUFBQyxZQUFzQ2dCLEVBQUFPLE1BQUE3QixFQUFB
SyxPQUFBdEUsa0JBQXFDMEMsRUFBQVksR0FBQSxLQUFBUixFQUFBLFVBQThCUyxhQUFhQyxLQUFB
LE9BQUFDLFFBQUEsU0FBQXpELE1BQUEwQyxFQUFBK0IsTUFBQTJCLE9BQUEsRUFBQTFDLFdBQUEs
cUJBQXdGTCxZQUFBLFdBQXVCUCxFQUFBLFFBQWFPLFlBQUEsZUFBeUJQLEVBQUEsVUFBQUosRUFB
QVksR0FBQVosRUFBQW1ELEdBQUFuRCxFQUFBMkQsY0FBQTNELEVBQUFZLEdBQUEsSUFBQVosRUFB
QW1ELEdBQUFuRCxFQUFBNEQsR0FBQSxhQUFBNUQsRUFBQTJELFlBQUEscUJBQUEzRCxFQUFBWSxH
QUFBLEtBQUFSLEVBQUEsTUFBK0lPLFlBQUEsWUFBc0JQLEVBQUEsTUFBQUEsRUFBQSxLQUFtQjBD
LE9BQU9lLFNBQUEsT0FBQTdELEVBQUFQLFFBQThCYSxPQUFRd0QsS0FBQSxTQUFldEUsSUFBSzZE
LE1BQUEsU0FBQTlCLEdBQXlCdkIsRUFBQVAsT0FBQSxVQUFxQk8sRUFBQVksR0FBQSxXQUFBWixF
QUFBWSxHQUFBLEtBQUFSLEVBQUEsTUFBQUEsRUFBQSxLQUFpRDBDLE9BQU9lLFNBQUEsVUFBQTdE
LEVBQUFQLFFBQWlDYSxPQUFRd0QsS0FBQSxZQUFrQnRFLElBQUs2RCxNQUFBLFNBQUE5QixHQUF5
QnZCLEVBQUFQLE9BQUEsYUFBd0JPLEVBQUFZLEdBQUEsY0FBQVosRUFBQVksR0FBQSxLQUFBUixF
QUFBLE1BQUFBLEVBQUEsS0FBb0QwQyxPQUFPZSxTQUFBLGFBQUE3RCxFQUFBUCxRQUFvQ2EsT0FB
UXdELEtBQUEsZUFBcUJ0RSxJQUFLNkQsTUFBQSxTQUFBOUIsR0FBeUJ2QixFQUFBUCxPQUFBLGdC
QUEyQk8sRUFBQVksR0FBQSxtQkFBQVosRUFBQVksR0FBQSxLQUFBUixFQUFBLFVBQXFEUyxhQUFh
QyxLQUFBLE9BQUFDLFFBQUEsU0FBQXpELE1BQUEwQyxFQUFBLFVBQUFnQixXQUFBLGNBQTBFTCxZ
QUFBLGtCQUFBbkIsSUFBb0M2RCxNQUFBLFNBQUE5QixHQUF5QkEsRUFBQStCLGlCQUF3QnRELEVB
QUErRCxnQkFBQXhDLE9BQThCdkIsRUFBQVksR0FBQSwwQkFDNzdISixLQUNBQyxHQUFpQnZCLFNB
QUFzQixrQkFDakJ4RCxHQUFBLEtMc0lNZ0gsS0FDQSxTQUFVakgsRUFBUXFCLEVBQVNuQixHQUVq
QyxZQUdBRyxRQUFPQyxlQUFlZSxFQUFTLGNBQzNCZCxPQUFPLEdNNUdYLElBQUFtQixHQUFBeEIs
RUFBQSxRTmlISXlCLEVBRUosU0FBZ0NKLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FB
UUUsUUFBU0YsSUFGcERHLEVBSW5DTCxHQUFRSSxTQUNKeUYsS0FBTSxXQUNGLE9BQ0lsQyxTQUNB
RCxRTXBIWixHTnFIWXJDLE9NcEhaLE1OcUhZMEMsU01wSFosRU5xSFlhLFFNbkhaLE9OdUhJa0Is
U0FDSUMsVUFBVyxTQUFtQjFHLEdBQzFCLE1BQWEsS0FBTkEsRUFBVSxPTXJIN0IsVU53SElvRCxZ
QUNJdUQsVUFBVyxTQUFtQm5GLEVBQUkzQixHQUMxQkEsR0FDQW9CLEVBQU1GLFFBQVE2RixTQUFT
LFNBQVVDLEdBQzdCckYsRU1ySHBCc0YsWU4wSElDLFNBQ0k5QyxRQUFTLFdBQ0x6QixLQUFLOEIs
TUFBTTBDLE1BQ1AxQixXTXJIaEIsRU5zSGdCSyxNQUFPbkQsS01wSHZCNkIsVU5zSFk3QixLQUFL
NkIsUU1ySGpCLElOdUhReUIsV0FBWSxTQUFvQlYsR0FDNUI1QyxLQUFLOEIsTUFBUTlCLEtBQUs4
QixNQUFNdEMsT0FBTyxTQUFVaUYsR0FDckMsTUFBT0EsS010SHZCN0IsS055SFFrQixnQkFBaUIs
V0FDYjlELEtBQUs4QixNQUFROUIsS0FBSzhCLE1BQU10QyxPQUFPLFNBQVVvRCxHQUNyQyxPQUFR
QSxFTXhIeEJFLGFOMkhRRyxTQUFVLFNBQWtCTCxHQUN4QjVDLEtBQUsrQyxRTXpIakJILEdOMkhR
VyxTQUFVLFdBQ052RCxLQUFLK0MsUU16SGpCLE9ONEhJMkIsVUFDSWhCLFVBQVcsV0FDUCxNQUFP
MUQsTUFBSzhCLE1BQU10QyxPQUFPLFNBQVVvRCxHQUMvQixPQUFRQSxFQUFLRSxZTTFIN0JXLFFO
NkhRWCxVQUFXLFdBQ1AsTUFBTzlDLE1BQUs4QixNQUFNdEMsT0FBTyxTQUFVb0QsR0FDL0IsTUFB
T0EsR0FBS0UsWU01SDVCVyxRTitIUWtCLGNBQWUsV0FDWCxNQUFvQixXQUFoQjNFLEtBQUtSLE9B
Q0VRLEtBQUs4QixNQUFNdEMsT0FBTyxTQUFVb0QsR0FDL0IsT0FBUUEsRU05SDVCRSxZTmdJdUMs
Y0FBaEI5QyxLQUFLUixPQUNMUSxLQUFLOEIsTUFBTXRDLE9BQU8sU0FBVW9ELEdBQy9CLE1BQU9B
LEdNaEkzQkUsWU5vSW1COUMsS01qSW5COEIsT05vSVFJLFNBQ0kwQyxJQUFLLFdBQ0QsTU1sSWhC
LEtOa0l1QjVFLEtBQUswRCxXQUVoQm1CLElBQUssU0FBYXhILEdBQ2QyQyxLQUFLOEIsTUFBTXpD
LFFBQVEsU0FBVXVELEdBQ3pCQSxFQUFLRSxVTWxJekJ6RixTTjJJTXlILEtBQ0EsU0FBVWhJLEVB
QVFxQixLQU1sQjRHLEtBQ0EsU0FBVWpJLEVBQVFxQixFQUFTbkIsR0FFakMsWUFHQUcsUUFBT0Ms
ZUFBZWUsRUFBUyxjQUMzQmQsT0FBTyxHT3hQWCxJQUFBMkgsR0FBQWhJLEVBQUEsUVA2UElpSSxF
QUVKLFNBQWdDNUcsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixJQUZs
RDJHLEVBSXJDN0csR0FBUUksU0FDSnNDLEtPaFFKLE1QaVFJcUUsWU85UEpDLE1BQUFGLEVBQUEx
RyxhUHFRRyIsImZpbGUiOiJzdGF0aWMvanMvYXBwLmU2YzAxMGQ1N2Q1MzUzN2Y0YWQyLmpzIiwi
c291cmNlc0NvbnRlbnQiOlsid2VicGFja0pzb25wKFswXSx7XG5cbi8qKiovIFwiRUhUSVwiOlxu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dl
YnBhY2tfZXhwb3J0c19fLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2JhYmVsX2xv
YWRlcl9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfc2VsZWN0b3JfdHlwZV9zY3JpcHRfaW5k
ZXhfMF9Ub2Rvc192dWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJlWE5lXCIpO1xuLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYmFiZWxfbG9h
ZGVyX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl9zZWxlY3Rvcl90eXBlX3NjcmlwdF9pbmRl
eF8wX1RvZG9zX3Z1ZV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19iYWJlbF9sb2FkZXJfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJf
bGliX3NlbGVjdG9yX3R5cGVfc2NyaXB0X2luZGV4XzBfVG9kb3NfdnVlX18pO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbm9kZV9tb2R1bGVz
X3Z1ZV9sb2FkZXJfbGliX3RlbXBsYXRlX2NvbXBpbGVyX2luZGV4X2lkX2RhdGFfdl83ZDNjYWNi
YV9oYXNTY29wZWRfZmFsc2VfdHJhbnNmb3JtVG9SZXF1aXJlX3ZpZGVvX3NyY19zb3VyY2Vfc3Jj
X2ltZ19zcmNfaW1hZ2VfeGxpbmtfaHJlZl9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfc2Vs
ZWN0b3JfdHlwZV90ZW1wbGF0ZV9pbmRleF8wX1RvZG9zX3Z1ZV9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXyhcImI1eUtcIik7XG5mdW5jdGlvbiBpbmplY3RTdHlsZSAoc3NyQ29udGV4dCkge1xuICBf
X3dlYnBhY2tfcmVxdWlyZV9fKFwiamhqUlwiKVxufVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oXCJWVS84XCIpXG4vKiBzY3JpcHQgKi9cblxuLyogdGVtcGxh
dGUgKi9cblxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBpbmplY3RTdHlsZVxu
Lyogc2NvcGVJZCAqL1xudmFyIF9fdnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVsZUlkZW50
aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSBu
dWxsXG52YXIgQ29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2JhYmVsX2xvYWRlcl9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJf
c2VsZWN0b3JfdHlwZV9zY3JpcHRfaW5kZXhfMF9Ub2Rvc192dWVfX19kZWZhdWx0LmEsXG4gIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX3Rl
bXBsYXRlX2NvbXBpbGVyX2luZGV4X2lkX2RhdGFfdl83ZDNjYWNiYV9oYXNTY29wZWRfZmFsc2Vf
dHJhbnNmb3JtVG9SZXF1aXJlX3ZpZGVvX3NyY19zb3VyY2Vfc3JjX2ltZ19zcmNfaW1hZ2VfeGxp
bmtfaHJlZl9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfc2VsZWN0b3JfdHlwZV90ZW1wbGF0
ZV9pbmRleF8wX1RvZG9zX3Z1ZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLFxuICBfX3Z1ZV9zdHls
ZXNfXyxcbiAgX192dWVfc2NvcGVJZF9fLFxuICBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fXG4p
XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRl
ZmF1bHRcIl0gPSAoQ29tcG9uZW50LmV4cG9ydHMpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBc
Ik05M3hcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJv
cGVydHkoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUg
fSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X19iYWJlbF9sb2FkZXJfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX3NlbGVjdG9yX3R5cGVf
c2NyaXB0X2luZGV4XzBfQXBwX3Z1ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcInhKRDhcIik7
XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19i
YWJlbF9sb2FkZXJfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGliX3NlbGVjdG9yX3R5cGVfc2Ny
aXB0X2luZGV4XzBfQXBwX3Z1ZV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19iYWJlbF9sb2FkZXJfbm9kZV9tb2R1bGVzX3Z1ZV9s
b2FkZXJfbGliX3NlbGVjdG9yX3R5cGVfc2NyaXB0X2luZGV4XzBfQXBwX3Z1ZV9fKTtcbi8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX25vZGVfbW9k
dWxlc192dWVfbG9hZGVyX2xpYl90ZW1wbGF0ZV9jb21waWxlcl9pbmRleF9pZF9kYXRhX3ZfYTI1
NmVjNmFfaGFzU2NvcGVkX2ZhbHNlX3RyYW5zZm9ybVRvUmVxdWlyZV92aWRlb19zcmNfc291cmNl
X3NyY19pbWdfc3JjX2ltYWdlX3hsaW5rX2hyZWZfbm9kZV9tb2R1bGVzX3Z1ZV9sb2FkZXJfbGli
X3NlbGVjdG9yX3R5cGVfdGVtcGxhdGVfaW5kZXhfMF9BcHBfdnVlX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKFwiVkc2cFwiKTtcbnZhciBub3JtYWxpemVDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKFwiVlUvOFwiKVxuLyogc2NyaXB0ICovXG5cbi8qIHRlbXBsYXRlICovXG5cbi8qIHN0
eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gbnVsbFxuLyogc2NvcGVJZCAqL1xudmFyIF9f
dnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAq
L1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSBudWxsXG52YXIgQ29tcG9uZW50ID0g
bm9ybWFsaXplQ29tcG9uZW50KFxuICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2JhYmVs
X2xvYWRlcl9ub2RlX21vZHVsZXNfdnVlX2xvYWRlcl9saWJfc2VsZWN0b3JfdHlwZV9zY3JpcHRf
aW5kZXhfMF9BcHBfdnVlX19fZGVmYXVsdC5hLFxuICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX25vZGVfbW9kdWxlc192dWVfbG9hZGVyX2xpYl90ZW1wbGF0ZV9jb21waWxlcl9pbmRleF9p
ZF9kYXRhX3ZfYTI1NmVjNmFfaGFzU2NvcGVkX2ZhbHNlX3RyYW5zZm9ybVRvUmVxdWlyZV92aWRl
b19zcmNfc291cmNlX3NyY19pbWdfc3JjX2ltYWdlX3hsaW5rX2hyZWZfbm9kZV9tb2R1bGVzX3Z1
ZV9sb2FkZXJfbGliX3NlbGVjdG9yX3R5cGVfdGVtcGxhdGVfaW5kZXhfMF9BcHBfdnVlX19bXCJh
XCIgLyogZGVmYXVsdCAqL10sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18s
XG4gIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4
cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IChDb21wb25lbnQuZXhw
b3J0cyk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiTkhuclwiOlxuLyoqKi8gKGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3Rc
IjtcblxuXG52YXIgX3Z1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oXCI3K3VXXCIpO1xuXG52YXIg
X3Z1ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92dWUpO1xuXG52YXIgX0FwcCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oXCJNOTN4XCIpO1xuXG52YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9BcHApO1xuXG52YXIgX2RpcmVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcInJt
bmhcIik7XG5cbnZhciBfZGlyZWN0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlyZWN0
b3IpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2Jq
ICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG53aW5kb3cu
VnVlQXBwID0gbmV3IF92dWUyLmRlZmF1bHQoe1xuICBlbDogJyNhcHAnLFxuICByZW5kZXI6IGZ1
bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgcmV0dXJuIGgoX0FwcDIuZGVmYXVsdCk7XG4gIH1cbn0p
O1xuXG52YXIgcm91dGVyID0gbmV3IF9kaXJlY3RvcjIuZGVmYXVsdC5Sb3V0ZXIoKTtcblxuWydh
bGwnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCddLmZvckVhY2goZnVuY3Rpb24gKHZpc2liaWxpdHkp
IHtcbiAgcm91dGVyLm9uKHZpc2liaWxpdHksIGZ1bmN0aW9uICgpIHtcbiAgICB3aW5kb3cuVnVl
QXBwLmZpbHRlciA9IHZpc2liaWxpdHk7XG4gIH0pO1xufSk7XG5cbnJvdXRlci5jb25maWd1cmUo
e1xuICBub3Rmb3VuZDogZnVuY3Rpb24gbm90Zm91bmQoKSB7XG4gICAgd2luZG93LmxvY2F0aW9u
Lmhhc2ggPSAnJztcbiAgICB3aW5kb3cuVnVlQXBwLmZpbHRlciA9ICdhbGwnO1xuICB9XG59KTtc
blxucm91dGVyLmluaXQoKTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiVkc2cFwiOlxuLyoqKi8g
KGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92
bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7
cmV0dXJuIF9jKCdkaXYnLHthdHRyczp7XCJpZFwiOlwiYXBwXCJ9fSxbX2MoJ1RvZG9zJyldLDEp
fVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJl
bmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuLyogaGFybW9ueSBkZWZh
dWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChlc0V4cG9ydHMpO1xu
XG4vKioqLyB9KSxcblxuLyoqKi8gXCJiNXlLXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBf
X3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4k
Y3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3NlY3Rpb24n
LHtzdGF0aWNDbGFzczpcInRvZG9hcHBcIn0sW19jKCdoZWFkZXInLHtzdGF0aWNDbGFzczpcImhl
YWRlclwifSxbX2MoJ2gxJyxbX3ZtLl92KFwiVG9kb3NcIildKSxfdm0uX3YoXCIgXCIpLF9jKCdp
bnB1dCcse2RpcmVjdGl2ZXM6W3tuYW1lOlwibW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbFwiLHZh
bHVlOihfdm0ubmV3VG9kbyksZXhwcmVzc2lvbjpcIm5ld1RvZG9cIn1dLHN0YXRpY0NsYXNzOlwi
bmV3LXRvZG9cIixhdHRyczp7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJhdXRvZm9jdXNcIjpcIlwiLFwi
YXV0b2NvbXBsZXRlXCI6XCJvZmZcIixcInBsYWNlaG9sZGVyXCI6XCJXaGF0IG5lZWRzIHRvIGJl
IGRvbmU/XCJ9LGRvbVByb3BzOntcInZhbHVlXCI6KF92bS5uZXdUb2RvKX0sb246e1wia2V5dXBc
IjpmdW5jdGlvbigkZXZlbnQpe2lmKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSYmX3ZtLl9rKCRldmVu
dC5rZXlDb2RlLFwiZW50ZXJcIiwxMykpeyByZXR1cm4gbnVsbDsgfV92bS5hZGRUb2RvKCRldmVu
dCl9LFwiaW5wdXRcIjpmdW5jdGlvbigkZXZlbnQpe2lmKCRldmVudC50YXJnZXQuY29tcG9zaW5n
KXsgcmV0dXJuOyB9X3ZtLm5ld1RvZG89JGV2ZW50LnRhcmdldC52YWx1ZX19fSldKSxfdm0uX3Yo
XCIgXCIpLF9jKCdzZWN0aW9uJyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpc
InYtc2hvd1wiLHZhbHVlOihfdm0udG9kb3MubGVuZ3RoKSxleHByZXNzaW9uOlwidG9kb3MubGVu
Z3RoXCJ9XSxzdGF0aWNDbGFzczpcIm1haW5cIn0sW19jKCdpbnB1dCcse2RpcmVjdGl2ZXM6W3tu
YW1lOlwibW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbFwiLHZhbHVlOihfdm0uYWxsRG9uZSksZXhw
cmVzc2lvbjpcImFsbERvbmVcIn1dLHN0YXRpY0NsYXNzOlwidG9nZ2xlLWFsbFwiLGF0dHJzOntc
InR5cGVcIjpcImNoZWNrYm94XCJ9LGRvbVByb3BzOntcImNoZWNrZWRcIjpBcnJheS5pc0FycmF5
KF92bS5hbGxEb25lKT9fdm0uX2koX3ZtLmFsbERvbmUsbnVsbCk+LTE6KF92bS5hbGxEb25lKX0s
b246e1wiX19jXCI6ZnVuY3Rpb24oJGV2ZW50KXt2YXIgJCRhPV92bS5hbGxEb25lLCQkZWw9JGV2
ZW50LnRhcmdldCwkJGM9JCRlbC5jaGVja2VkPyh0cnVlKTooZmFsc2UpO2lmKEFycmF5LmlzQXJy
YXkoJCRhKSl7dmFyICQkdj1udWxsLCQkaT1fdm0uX2koJCRhLCQkdik7aWYoJCRlbC5jaGVja2Vk
KXskJGk8MCYmKF92bS5hbGxEb25lPSQkYS5jb25jYXQoJCR2KSl9ZWxzZXskJGk+LTEmJihfdm0u
YWxsRG9uZT0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgkJGEuc2xpY2UoJCRpKzEpKSl9fWVsc2V7
X3ZtLmFsbERvbmU9JCRjfX19fSksX3ZtLl92KFwiIFwiKSxfYygndWwnLHtzdGF0aWNDbGFzczpc
InRvZG8tbGlzdFwifSxfdm0uX2woKF92bS5maWx0ZXJlZFRvZG9zKSxmdW5jdGlvbih0b2RvKXty
ZXR1cm4gX2MoJ2xpJyx7c3RhdGljQ2xhc3M6XCJ0b2RvXCIsY2xhc3M6e2NvbXBsZXRlZCA6IHRv
ZG8uY29tcGxldGVkLCBlZGl0aW5nIDogdG9kbyA9PT0gX3ZtLmVkaXRpbmcgfX0sW19jKCdkaXYn
LHtzdGF0aWNDbGFzczpcInZpZXdcIn0sW19jKCdpbnB1dCcse2RpcmVjdGl2ZXM6W3tuYW1lOlwi
bW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbFwiLHZhbHVlOih0b2RvLmNvbXBsZXRlZCksZXhwcmVz
c2lvbjpcInRvZG8uY29tcGxldGVkXCJ9XSxzdGF0aWNDbGFzczpcInRvZ2dsZVwiLGF0dHJzOntc
InR5cGVcIjpcImNoZWNrYm94XCJ9LGRvbVByb3BzOntcImNoZWNrZWRcIjpBcnJheS5pc0FycmF5
KHRvZG8uY29tcGxldGVkKT9fdm0uX2kodG9kby5jb21wbGV0ZWQsbnVsbCk+LTE6KHRvZG8uY29t
cGxldGVkKX0sb246e1wiX19jXCI6ZnVuY3Rpb24oJGV2ZW50KXt2YXIgJCRhPXRvZG8uY29tcGxl
dGVkLCQkZWw9JGV2ZW50LnRhcmdldCwkJGM9JCRlbC5jaGVja2VkPyh0cnVlKTooZmFsc2UpO2lm
KEFycmF5LmlzQXJyYXkoJCRhKSl7dmFyICQkdj1udWxsLCQkaT1fdm0uX2koJCRhLCQkdik7aWYo
JCRlbC5jaGVja2VkKXskJGk8MCYmKHRvZG8uY29tcGxldGVkPSQkYS5jb25jYXQoJCR2KSl9ZWxz
ZXskJGk+LTEmJih0b2RvLmNvbXBsZXRlZD0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgkJGEuc2xp
Y2UoJCRpKzEpKSl9fWVsc2V7dG9kby5jb21wbGV0ZWQ9JCRjfX19fSksX3ZtLl92KFwiIFwiKSxf
YygnbGFiZWwnLHtvbjp7XCJkYmxjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmVkaXRUb2Rv
KHRvZG8pfX19LFtfdm0uX3YoX3ZtLl9zKHRvZG8udGl0bGUpKV0pLF92bS5fdihcIiBcIiksX2Mo
J2J1dHRvbicse3N0YXRpY0NsYXNzOlwiZGVzdHJveVwiLG9uOntcImNsaWNrXCI6ZnVuY3Rpb24o
JGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtfdm0uZGVsZXRlVG9kbyh0b2RvKX19fSld
KSxfdm0uX3YoXCIgXCIpLF9jKCdpbnB1dCcse2RpcmVjdGl2ZXM6W3tuYW1lOlwibW9kZWxcIixy
YXdOYW1lOlwidi1tb2RlbFwiLHZhbHVlOih0b2RvLnRpdGxlKSxleHByZXNzaW9uOlwidG9kby50
aXRsZVwifSx7bmFtZTpcInRvZG9Gb2N1c1wiLHJhd05hbWU6XCJ2LXRvZG9Gb2N1c1wiLHZhbHVl
Oih0b2RvID09PSBfdm0uZWRpdGluZyksZXhwcmVzc2lvbjpcInRvZG8gPT09IGVkaXRpbmdcIn1d
LHN0YXRpY0NsYXNzOlwiZWRpdFwiLGF0dHJzOntcInR5cGVcIjpcInRleHRcIn0sZG9tUHJvcHM6
e1widmFsdWVcIjoodG9kby50aXRsZSl9LG9uOntcImtleXVwXCI6ZnVuY3Rpb24oJGV2ZW50KXtp
ZighKCdidXR0b24nIGluICRldmVudCkmJl92bS5faygkZXZlbnQua2V5Q29kZSxcImVudGVyXCIs
MTMpKXsgcmV0dXJuIG51bGw7IH1fdm0uZG9uZUVkaXQoJGV2ZW50KX0sXCJibHVyXCI6X3ZtLmRv
bmVFZGl0LFwiaW5wdXRcIjpmdW5jdGlvbigkZXZlbnQpe2lmKCRldmVudC50YXJnZXQuY29tcG9z
aW5nKXsgcmV0dXJuOyB9dG9kby50aXRsZT0kZXZlbnQudGFyZ2V0LnZhbHVlfX19KV0pfSkpXSks
X3ZtLl92KFwiIFwiKSxfYygnZm9vdGVyJyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3
TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0udG9kb3MubGVuZ3RoID4gMCksZXhwcmVzc2lvbjpc
InRvZG9zLmxlbmd0aCA+IDBcIn1dLHN0YXRpY0NsYXNzOlwiZm9vdGVyXCJ9LFtfYygnc3Bhbics
e3N0YXRpY0NsYXNzOlwidG9kby1jb3VudFwifSxbX2MoJ3N0cm9uZycsW192bS5fdihfdm0uX3Mo
X3ZtLnJlbWFpbmluZykpXSksX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uX2YoXCJwbHVyYWxpemVc
IikoX3ZtLnJlbWFpbmluZykpK1wiIGxlZnRcXG4gICAgICAgIFwiKV0pLF92bS5fdihcIiBcIiks
X2MoJ3VsJyx7c3RhdGljQ2xhc3M6XCJmaWx0ZXJzXCJ9LFtfYygnbGknLFtfYygnYScse2NsYXNz
OntzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWxsJ30sYXR0cnM6e1wiaHJlZlwiOlwiIy9hbGxc
In0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe192bS5maWx0ZXIgPSAnYWxsJ319fSxb
X3ZtLl92KFwiQWxsXCIpXSldKSxfdm0uX3YoXCIgXCIpLF9jKCdsaScsW19jKCdhJyx7Y2xhc3M6
e3NlbGVjdGVkOiBfdm0uZmlsdGVyID09ICdhY3RpdmUnfSxhdHRyczp7XCJocmVmXCI6XCIjL2Fj
dGl2ZVwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmZpbHRlciA9ICdhY3Rp
dmUnfX19LFtfdm0uX3YoXCJBY3RpdmVcIildKV0pLF92bS5fdihcIiBcIiksX2MoJ2xpJyxbX2Mo
J2EnLHtjbGFzczp7c2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2NvbXBsZXRlZCd9LGF0dHJzOntc
ImhyZWZcIjpcIiMvY29tcGxldGVkXCJ9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtf
dm0uZmlsdGVyID0gJ2NvbXBsZXRlZCd9fX0sW192bS5fdihcIkNvbXBsZXRlZFwiKV0pXSldKSxf
dm0uX3YoXCIgXCIpLF9jKCdidXR0b24nLHtkaXJlY3RpdmVzOlt7bmFtZTpcInNob3dcIixyYXdO
YW1lOlwidi1zaG93XCIsdmFsdWU6KF92bS5jb21wbGV0ZWQpLGV4cHJlc3Npb246XCJjb21wbGV0
ZWRcIn1dLHN0YXRpY0NsYXNzOlwiY2xlYXItY29tcGxldGVkXCIsb246e1wiY2xpY2tcIjpmdW5j
dGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO192bS5kZWxldGVDb21wbGV0ZWQo
JGV2ZW50KX19fSxbX3ZtLl92KFwiQ2xlYXIgQ29tcGxldGVkXCIpXSldKV0pfVxudmFyIHN0YXRp
Y1JlbmRlckZucyA9IFtdXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGlj
UmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAq
LyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChlc0V4cG9ydHMpO1xuXG4vKioqLyB9KSxc
blxuLyoqKi8gXCJlWE5lXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbk9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtc
blxudmFyIF92dWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiNyt1V1wiKTtcblxudmFyIF92dWUy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdnVlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsg
ZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGRhdGE6IGZ1bmN0
aW9uIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b2RvczogW10sXG4g
ICAgICAgICAgICBuZXdUb2RvOiAnJyxcbiAgICAgICAgICAgIGZpbHRlcjogJ2FsbCcsXG4gICAg
ICAgICAgICBhbGxEb25lOiBmYWxzZSxcbiAgICAgICAgICAgIGVkaXRpbmc6IG51bGxcbiAgICAg
ICAgfTtcbiAgICB9LFxuXG4gICAgZmlsdGVyczoge1xuICAgICAgICBwbHVyYWxpemU6IGZ1bmN0
aW9uIHBsdXJhbGl6ZShuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA9PT0gMSA/ICdpdGVtJyA6
ICdpdGVtcyc7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgICAg
dG9kb0ZvY3VzOiBmdW5jdGlvbiB0b2RvRm9jdXMoZWwsIHZhbHVlKSB7XG4gICAgICAgICAgICBp
ZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfdnVlMi5kZWZhdWx0Lm5leHRUaWNrKGZ1bmN0
aW9uIChfKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAg
ICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtc
biAgICAgICAgYWRkVG9kbzogZnVuY3Rpb24gYWRkVG9kbygpIHtcbiAgICAgICAgICAgIHRoaXMu
dG9kb3MucHVzaCh7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAg
ICAgICAgICB0aXRsZTogdGhpcy5uZXdUb2RvXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAg
IHRoaXMubmV3VG9kbyA9ICcnO1xuICAgICAgICB9LFxuICAgICAgICBkZWxldGVUb2RvOiBmdW5j
dGlvbiBkZWxldGVUb2RvKHRvZG8pIHtcbiAgICAgICAgICAgIHRoaXMudG9kb3MgPSB0aGlzLnRv
ZG9zLmZpbHRlcihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ICE9PSB0
b2RvO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0ZUNvbXBsZXRl
ZDogZnVuY3Rpb24gZGVsZXRlQ29tcGxldGVkKCkge1xuICAgICAgICAgICAgdGhpcy50b2RvcyA9
IHRoaXMudG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgcmV0
dXJuICF0b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAg
ICBlZGl0VG9kbzogZnVuY3Rpb24gZWRpdFRvZG8odG9kbykge1xuICAgICAgICAgICAgdGhpcy5l
ZGl0aW5nID0gdG9kbztcbiAgICAgICAgfSxcbiAgICAgICAgZG9uZUVkaXQ6IGZ1bmN0aW9uIGRv
bmVFZGl0KCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gbnVsbDtcbiAgICAgICAgfVxu
ICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgcmVtYWluaW5nOiBmdW5jdGlvbiByZW1h
aW5pbmcoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIoZnVuY3Rpb24g
KHRvZG8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRvZG8uY29tcGxldGVkO1xuICAgICAg
ICAgICAgfSkubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IGZ1bmN0aW9u
IGNvbXBsZXRlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcihmdW5j
dGlvbiAodG9kbykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtcbiAg
ICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyZWRUb2Rvczog
ZnVuY3Rpb24gZmlsdGVyZWRUb2RvcygpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlciA9
PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIo
ZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0b2RvLmNvbXBs
ZXRlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5m
aWx0ZXIgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9k
b3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
b2RvLmNvbXBsZXRlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAg
ICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3M7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYWxsRG9u
ZToge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMucmVtYWluaW5nID09PSAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAg
IHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2Rvcy5m
b3JFYWNoKGZ1bmN0aW9uICh0b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvZG8uY29tcGxl
dGVkID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAg
IH1cbiAgICB9XG59O1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJqaGpSXCI6XG4vKioqLyAoZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdl
YnBhY2stcGx1Z2luXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcInhKRDhcIjpcbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG5cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwi
LCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX1RvZG9zID0gX193ZWJwYWNrX3JlcXVp
cmVfXyhcIkVIVElcIik7XG5cbnZhciBfVG9kb3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
VG9kb3MpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4g
b2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBv
cnRzLmRlZmF1bHQgPSB7XG4gICAgbmFtZTogJ2FwcCcsXG4gICAgY29tcG9uZW50czoge1xuICAg
ICAgICBUb2RvczogX1RvZG9zMi5kZWZhdWx0XG4gICAgfVxufTtcblxuLyoqKi8gfSlcblxufSxb
XCJOSG5yXCJdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3RhdGljL2pzL2FwcC5l
NmMwMTBkNTdkNTM1MzdmNGFkMi5qcyIsImZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0
KSB7XG4gIHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9leHRyYWN0LXRleHQtd2VicGFj
ay1wbHVnaW4vbG9hZGVyLmpzP3tcXFwib21pdFxcXCI6MSxcXFwicmVtb3ZlXFxcIjp0cnVlfSF2
dWUtc3R5bGUtbG9hZGVyIWNzcy1sb2FkZXI/e1xcXCJtaW5pbWl6ZVxcXCI6dHJ1ZSxcXFwic291
cmNlTWFwXFxcIjp0cnVlfSEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUt
Y29tcGlsZXIvaW5kZXg/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTdk
M2NhY2JhXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpm
YWxzZX0hLi90b2RvLmNzc1wiKVxufVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUo
XCIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVy
XCIpXG4vKiBzY3JpcHQgKi9cbmltcG9ydCBfX3Z1ZV9zY3JpcHRfXyBmcm9tIFwiISFiYWJlbC1s
b2FkZXIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2Ny
aXB0JmluZGV4PTAhLi9Ub2Rvcy52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90
ZW1wbGF0ZV9fIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1w
bGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTdkM2NhY2JhXFxcIixc
XFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwidHJhbnNmb3JtVG9SZXF1aXJlXFxcIjp7XFxcInZp
ZGVvXFxcIjpcXFwic3JjXFxcIixcXFwic291cmNlXFxcIjpcXFwic3JjXFxcIixcXFwiaW1nXFxc
IjpcXFwic3JjXFxcIixcXFwiaW1hZ2VcXFwiOlxcXCJ4bGluazpocmVmXFxcIn19IS4uLy4uL25v
ZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAh
Li9Ub2Rvcy52dWVcIlxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBpbmplY3RT
dHlsZVxuLyogc2NvcGVJZCAqL1xudmFyIF9fdnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVs
ZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVy
X18gPSBudWxsXG52YXIgQ29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBfX3Z1ZV9z
Y3JpcHRfXyxcbiAgX192dWVfdGVtcGxhdGVfXyxcbiAgX192dWVfc3R5bGVzX18sXG4gIF9fdnVl
X3Njb3BlSWRfXyxcbiAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfX1xuKVxuXG5leHBvcnQgZGVm
YXVsdCBDb21wb25lbnQuZXhwb3J0c1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQ
QUNLIEZPT1RFUlxuLy8gLi9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWVcbi8vIG1vZHVsZSBpZCA9
IEVIVElcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJl
cXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxp
emVyXCIpXG4vKiBzY3JpcHQgKi9cbmltcG9ydCBfX3Z1ZV9zY3JpcHRfXyBmcm9tIFwiISFiYWJl
bC1sb2FkZXIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2Ny
aXB0JmluZGV4PTAhLi9BcHAudnVlXCJcbi8qIHRlbXBsYXRlICovXG5pbXBvcnQgX192dWVfdGVt
cGxhdGVfXyBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUt
Y29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1hMjU2ZWM2YVxcXCIsXFxcImhh
c1Njb3BlZFxcXCI6ZmFsc2UsXFxcInRyYW5zZm9ybVRvUmVxdWlyZVxcXCI6e1xcXCJ2aWRlb1xc
XCI6XFxcInNyY1xcXCIsXFxcInNvdXJjZVxcXCI6XFxcInNyY1xcXCIsXFxcImltZ1xcXCI6XFxc
InNyY1xcXCIsXFxcImltYWdlXFxcIjpcXFwieGxpbms6aHJlZlxcXCJ9fSEuLi9ub2RlX21vZHVs
ZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vQXBwLnZ1
ZVwiXG4vKiBzdHlsZXMgKi9cbnZhciBfX3Z1ZV9zdHlsZXNfXyA9IG51bGxcbi8qIHNjb3BlSWQg
Ki9cbnZhciBfX3Z1ZV9zY29wZUlkX18gPSBudWxsXG4vKiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2
ZXIgb25seSkgKi9cbnZhciBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fID0gbnVsbFxudmFyIENv
bXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgX192dWVfc2NyaXB0X18sXG4gIF9fdnVl
X3RlbXBsYXRlX18sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18sXG4gIF9f
dnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4
cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
c3JjL0FwcC52dWVcbi8vIG1vZHVsZSBpZCA9IE05M3hcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi
Ly8gVGhlIFZ1ZSBidWlsZCB2ZXJzaW9uIHRvIGxvYWQgd2l0aCB0aGUgYGltcG9ydGAgY29tbWFu
ZFxuLy8gKHJ1bnRpbWUtb25seSBvciBzdGFuZGFsb25lKSBoYXMgYmVlbiBzZXQgaW4gd2VicGFj
ay5iYXNlLmNvbmYgd2l0aCBhbiBhbGlhcy5cbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0
IEFwcCBmcm9tICcuL0FwcCdcbmltcG9ydCBEaXJlY3RvciBmcm9tICdkaXJlY3Rvci9idWlsZC9k
aXJlY3RvcidcblxuLyogZXNsaW50LWRpc2FibGUgbm8tbmV3ICovXG53aW5kb3cuVnVlQXBwID0g
bmV3IFZ1ZSh7XG4gICAgZWw6ICcjYXBwJyxcbiAgICByZW5kZXI6IGggPT4gaChBcHApXG59KVxu
XG5jb25zdCByb3V0ZXIgPSBuZXcgRGlyZWN0b3IuUm91dGVyKCk7XG5cblsnYWxsJywgJ2FjdGl2
ZScsICdjb21wbGV0ZWQnXS5mb3JFYWNoKHZpc2liaWxpdHkgPT4ge1xuICByb3V0ZXIub24odmlz
aWJpbGl0eSwgKCkgPT4ge1xuICAgIHdpbmRvdy5WdWVBcHAuZmlsdGVyID0gdmlzaWJpbGl0eTtc
biAgfSk7XG59KTtcblxucm91dGVyLmNvbmZpZ3VyZSh7XG4gIG5vdGZvdW5kOiBmdW5jdGlvbiAo
KSB7XG4gICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICB3aW5kb3cuVnVlQXBwLmZp
bHRlciA9ICdhbGwnO1xuICB9XG59KTtcblxucm91dGVyLmluaXQoKTtcblxuXG4vLyBXRUJQQUNL
IEZPT1RFUiAvL1xuLy8gLi9zcmMvbWFpbi5qcyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7
dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5f
Y3x8X2g7cmV0dXJuIF9jKCdkaXYnLHthdHRyczp7XCJpZFwiOlwiYXBwXCJ9fSxbX2MoJ1RvZG9z
JyldLDEpfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG52YXIgZXNFeHBvcnRzID0geyByZW5k
ZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRl
ZmF1bHQgZXNFeHBvcnRzXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RF
UlxuLy8gLi9+L3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRh
LXYtYTI1NmVjNmFcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwidHJhbnNmb3JtVG9SZXF1aXJlXCI6
e1widmlkZW9cIjpcInNyY1wiLFwic291cmNlXCI6XCJzcmNcIixcImltZ1wiOlwic3JjXCIsXCJp
bWFnZVwiOlwieGxpbms6aHJlZlwifX0hLi9+L3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5
cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9BcHAudnVlXG4vLyBtb2R1bGUgaWQgPSBWRzZwXG4v
LyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10
aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0
dXJuIF9jKCdzZWN0aW9uJyx7c3RhdGljQ2xhc3M6XCJ0b2RvYXBwXCJ9LFtfYygnaGVhZGVyJyx7
c3RhdGljQ2xhc3M6XCJoZWFkZXJcIn0sW19jKCdoMScsW192bS5fdihcIlRvZG9zXCIpXSksX3Zt
Ll92KFwiIFwiKSxfYygnaW5wdXQnLHtkaXJlY3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFt
ZTpcInYtbW9kZWxcIix2YWx1ZTooX3ZtLm5ld1RvZG8pLGV4cHJlc3Npb246XCJuZXdUb2RvXCJ9
XSxzdGF0aWNDbGFzczpcIm5ldy10b2RvXCIsYXR0cnM6e1widHlwZVwiOlwidGV4dFwiLFwiYXV0
b2ZvY3VzXCI6XCJcIixcImF1dG9jb21wbGV0ZVwiOlwib2ZmXCIsXCJwbGFjZWhvbGRlclwiOlwi
V2hhdCBuZWVkcyB0byBiZSBkb25lP1wifSxkb21Qcm9wczp7XCJ2YWx1ZVwiOihfdm0ubmV3VG9k
byl9LG9uOntcImtleXVwXCI6ZnVuY3Rpb24oJGV2ZW50KXtpZighKCdidXR0b24nIGluICRldmVu
dCkmJl92bS5faygkZXZlbnQua2V5Q29kZSxcImVudGVyXCIsMTMpKXsgcmV0dXJuIG51bGw7IH1f
dm0uYWRkVG9kbygkZXZlbnQpfSxcImlucHV0XCI6ZnVuY3Rpb24oJGV2ZW50KXtpZigkZXZlbnQu
dGFyZ2V0LmNvbXBvc2luZyl7IHJldHVybjsgfV92bS5uZXdUb2RvPSRldmVudC50YXJnZXQudmFs
dWV9fX0pXSksX3ZtLl92KFwiIFwiKSxfYygnc2VjdGlvbicse2RpcmVjdGl2ZXM6W3tuYW1lOlwi
c2hvd1wiLHJhd05hbWU6XCJ2LXNob3dcIix2YWx1ZTooX3ZtLnRvZG9zLmxlbmd0aCksZXhwcmVz
c2lvbjpcInRvZG9zLmxlbmd0aFwifV0sc3RhdGljQ2xhc3M6XCJtYWluXCJ9LFtfYygnaW5wdXQn
LHtkaXJlY3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZToo
X3ZtLmFsbERvbmUpLGV4cHJlc3Npb246XCJhbGxEb25lXCJ9XSxzdGF0aWNDbGFzczpcInRvZ2ds
ZS1hbGxcIixhdHRyczp7XCJ0eXBlXCI6XCJjaGVja2JveFwifSxkb21Qcm9wczp7XCJjaGVja2Vk
XCI6QXJyYXkuaXNBcnJheShfdm0uYWxsRG9uZSk/X3ZtLl9pKF92bS5hbGxEb25lLG51bGwpPi0x
Oihfdm0uYWxsRG9uZSl9LG9uOntcIl9fY1wiOmZ1bmN0aW9uKCRldmVudCl7dmFyICQkYT1fdm0u
YWxsRG9uZSwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8odHJ1ZSk6KGZhbHNl
KTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAkJHY9bnVsbCwkJGk9X3ZtLl9pKCQkYSwkJHYp
O2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihfdm0uYWxsRG9uZT0kJGEuY29uY2F0KCQkdikpfWVs
c2V7JCRpPi0xJiYoX3ZtLmFsbERvbmU9JCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNl
KCQkaSsxKSkpfX1lbHNle192bS5hbGxEb25lPSQkY319fX0pLF92bS5fdihcIiBcIiksX2MoJ3Vs
Jyx7c3RhdGljQ2xhc3M6XCJ0b2RvLWxpc3RcIn0sX3ZtLl9sKChfdm0uZmlsdGVyZWRUb2Rvcyks
ZnVuY3Rpb24odG9kbyl7cmV0dXJuIF9jKCdsaScse3N0YXRpY0NsYXNzOlwidG9kb1wiLGNsYXNz
Ontjb21wbGV0ZWQgOiB0b2RvLmNvbXBsZXRlZCwgZWRpdGluZyA6IHRvZG8gPT09IF92bS5lZGl0
aW5nIH19LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2aWV3XCJ9LFtfYygnaW5wdXQnLHtkaXJl
Y3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZToodG9kby5j
b21wbGV0ZWQpLGV4cHJlc3Npb246XCJ0b2RvLmNvbXBsZXRlZFwifV0sc3RhdGljQ2xhc3M6XCJ0
b2dnbGVcIixhdHRyczp7XCJ0eXBlXCI6XCJjaGVja2JveFwifSxkb21Qcm9wczp7XCJjaGVja2Vk
XCI6QXJyYXkuaXNBcnJheSh0b2RvLmNvbXBsZXRlZCk/X3ZtLl9pKHRvZG8uY29tcGxldGVkLG51
bGwpPi0xOih0b2RvLmNvbXBsZXRlZCl9LG9uOntcIl9fY1wiOmZ1bmN0aW9uKCRldmVudCl7dmFy
ICQkYT10b2RvLmNvbXBsZXRlZCwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8o
dHJ1ZSk6KGZhbHNlKTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAkJHY9bnVsbCwkJGk9X3Zt
Ll9pKCQkYSwkJHYpO2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJih0b2RvLmNvbXBsZXRlZD0kJGEu
Y29uY2F0KCQkdikpfWVsc2V7JCRpPi0xJiYodG9kby5jb21wbGV0ZWQ9JCRhLnNsaWNlKDAsJCRp
KS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkpfX1lbHNle3RvZG8uY29tcGxldGVkPSQkY319fX0p
LF92bS5fdihcIiBcIiksX2MoJ2xhYmVsJyx7b246e1wiZGJsY2xpY2tcIjpmdW5jdGlvbigkZXZl
bnQpe192bS5lZGl0VG9kbyh0b2RvKX19fSxbX3ZtLl92KF92bS5fcyh0b2RvLnRpdGxlKSldKSxf
dm0uX3YoXCIgXCIpLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImRlc3Ryb3lcIixvbjp7XCJj
bGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7X3ZtLmRlbGV0
ZVRvZG8odG9kbyl9fX0pXSksX3ZtLl92KFwiIFwiKSxfYygnaW5wdXQnLHtkaXJlY3RpdmVzOlt7
bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZToodG9kby50aXRsZSksZXhw
cmVzc2lvbjpcInRvZG8udGl0bGVcIn0se25hbWU6XCJ0b2RvRm9jdXNcIixyYXdOYW1lOlwidi10
b2RvRm9jdXNcIix2YWx1ZToodG9kbyA9PT0gX3ZtLmVkaXRpbmcpLGV4cHJlc3Npb246XCJ0b2Rv
ID09PSBlZGl0aW5nXCJ9XSxzdGF0aWNDbGFzczpcImVkaXRcIixhdHRyczp7XCJ0eXBlXCI6XCJ0
ZXh0XCJ9LGRvbVByb3BzOntcInZhbHVlXCI6KHRvZG8udGl0bGUpfSxvbjp7XCJrZXl1cFwiOmZ1
bmN0aW9uKCRldmVudCl7aWYoISgnYnV0dG9uJyBpbiAkZXZlbnQpJiZfdm0uX2soJGV2ZW50Lmtl
eUNvZGUsXCJlbnRlclwiLDEzKSl7IHJldHVybiBudWxsOyB9X3ZtLmRvbmVFZGl0KCRldmVudCl9
LFwiYmx1clwiOl92bS5kb25lRWRpdCxcImlucHV0XCI6ZnVuY3Rpb24oJGV2ZW50KXtpZigkZXZl
bnQudGFyZ2V0LmNvbXBvc2luZyl7IHJldHVybjsgfXRvZG8udGl0bGU9JGV2ZW50LnRhcmdldC52
YWx1ZX19fSldKX0pKV0pLF92bS5fdihcIiBcIiksX2MoJ2Zvb3Rlcicse2RpcmVjdGl2ZXM6W3tu
YW1lOlwic2hvd1wiLHJhd05hbWU6XCJ2LXNob3dcIix2YWx1ZTooX3ZtLnRvZG9zLmxlbmd0aCA+
IDApLGV4cHJlc3Npb246XCJ0b2Rvcy5sZW5ndGggPiAwXCJ9XSxzdGF0aWNDbGFzczpcImZvb3Rl
clwifSxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInRvZG8tY291bnRcIn0sW19jKCdzdHJvbmcn
LFtfdm0uX3YoX3ZtLl9zKF92bS5yZW1haW5pbmcpKV0pLF92bS5fdihcIiBcIitfdm0uX3MoX3Zt
Ll9mKFwicGx1cmFsaXplXCIpKF92bS5yZW1haW5pbmcpKStcIiBsZWZ0XFxuICAgICAgICBcIild
KSxfdm0uX3YoXCIgXCIpLF9jKCd1bCcse3N0YXRpY0NsYXNzOlwiZmlsdGVyc1wifSxbX2MoJ2xp
JyxbX2MoJ2EnLHtjbGFzczp7c2VsZWN0ZWQ6IF92bS5maWx0ZXIgPT0gJ2FsbCd9LGF0dHJzOntc
ImhyZWZcIjpcIiMvYWxsXCJ9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uZmls
dGVyID0gJ2FsbCd9fX0sW192bS5fdihcIkFsbFwiKV0pXSksX3ZtLl92KFwiIFwiKSxfYygnbGkn
LFtfYygnYScse2NsYXNzOntzZWxlY3RlZDogX3ZtLmZpbHRlciA9PSAnYWN0aXZlJ30sYXR0cnM6
e1wiaHJlZlwiOlwiIy9hY3RpdmVcIn0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe192
bS5maWx0ZXIgPSAnYWN0aXZlJ319fSxbX3ZtLl92KFwiQWN0aXZlXCIpXSldKSxfdm0uX3YoXCIg
XCIpLF9jKCdsaScsW19jKCdhJyx7Y2xhc3M6e3NlbGVjdGVkOiBfdm0uZmlsdGVyID09ICdjb21w
bGV0ZWQnfSxhdHRyczp7XCJocmVmXCI6XCIjL2NvbXBsZXRlZFwifSxvbjp7XCJjbGlja1wiOmZ1
bmN0aW9uKCRldmVudCl7X3ZtLmZpbHRlciA9ICdjb21wbGV0ZWQnfX19LFtfdm0uX3YoXCJDb21w
bGV0ZWRcIildKV0pXSksX3ZtLl92KFwiIFwiKSxfYygnYnV0dG9uJyx7ZGlyZWN0aXZlczpbe25h
bWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0uY29tcGxldGVkKSxleHBy
ZXNzaW9uOlwiY29tcGxldGVkXCJ9XSxzdGF0aWNDbGFzczpcImNsZWFyLWNvbXBsZXRlZFwiLG9u
OntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtfdm0u
ZGVsZXRlQ29tcGxldGVkKCRldmVudCl9fX0sW192bS5fdihcIkNsZWFyIENvbXBsZXRlZFwiKV0p
XSldKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVy
OiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZh
dWx0IGVzRXhwb3J0c1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJc
bi8vIC4vfi92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12
LTdkM2NhY2JhXCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcInRyYW5zZm9ybVRvUmVxdWlyZVwiOntc
InZpZGVvXCI6XCJzcmNcIixcInNvdXJjZVwiOlwic3JjXCIsXCJpbWdcIjpcInNyY1wiLFwiaW1h
Z2VcIjpcInhsaW5rOmhyZWZcIn19IS4vfi92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBl
PXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvY29tcG9uZW50cy9Ub2Rvcy52dWVcbi8vIG1vZHVsZSBp
ZCA9IGI1eUtcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiPHRlbXBsYXRlPlxuICAgIDxzZWN0aW9u
IGNsYXNzPVwidG9kb2FwcFwiPlxuICAgICAgICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCI+XG4g
ICAgICAgICAgICA8aDE+VG9kb3M8L2gxPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0
XCIgY2xhc3M9XCJuZXctdG9kb1wiIGF1dG9mb2N1cyBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFj
ZWhvbGRlcj1cIldoYXQgbmVlZHMgdG8gYmUgZG9uZT9cIiB2LW1vZGVsPVwibmV3VG9kb1wiIEBr
ZXl1cC5lbnRlcj1cImFkZFRvZG9cIiAvPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgPHNl
Y3Rpb24gY2xhc3M9XCJtYWluXCIgdi1zaG93PVwidG9kb3MubGVuZ3RoXCIgdi1jbG9haz5cbiAg
ICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInRvZ2dsZS1hbGxcIiB2
LW1vZGVsPVwiYWxsRG9uZVwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwidG9kby1saXN0XCI+
XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidG9kb1wiIHYtZm9yPVwidG9kbyBpbiBmaWx0
ZXJlZFRvZG9zXCIgOmNsYXNzPVwie2NvbXBsZXRlZCA6IHRvZG8uY29tcGxldGVkLCBlZGl0aW5n
IDogdG9kbyA9PT0gZWRpdGluZyB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
XCJ2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94
XCIgdi1tb2RlbD1cInRvZG8uY29tcGxldGVkXCIgY2xhc3M9XCJ0b2dnbGVcIj5cbiAgICAgICAg
ICAgICAgICAgICAgICAgIDxsYWJlbCBAZGJsY2xpY2s9XCJlZGl0VG9kbyh0b2RvKVwiPnt7IHRv
ZG8udGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFz
cz1cImRlc3Ryb3lcIiBAY2xpY2sucHJldmVudD1cImRlbGV0ZVRvZG8odG9kbylcIj48L2J1dHRv
bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1
dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZWRpdFwiIHYtbW9kZWw9XCJ0b2RvLnRpdGxlXCIgQGtl
eXVwLmVudGVyPVwiZG9uZUVkaXRcIiBAYmx1cj1cImRvbmVFZGl0XCIgdi10b2RvRm9jdXM9XCJ0
b2RvID09PSBlZGl0aW5nXCI+PC9pbnB1dD5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAg
ICAgICAgPC91bD5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8Zm9vdGVyIGNsYXNzPVwi
Zm9vdGVyXCIgdi1zaG93PVwidG9kb3MubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9XCJ0b2RvLWNvdW50XCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHJlbWFpbmluZyB9
fTwvc3Ryb25nPiB7eyByZW1haW5pbmcgfCBwbHVyYWxpemUgfX0gbGVmdFxuICAgICAgICAgICAg
PC9zcGFuPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiZmlsdGVyc1wiPlxuICAgICAgICAgICAg
ICAgIDxsaT48YSBocmVmPVwiIy9hbGxcIiA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAn
YWxsJ31cIiBAY2xpY2s9XCJmaWx0ZXIgPSAnYWxsJ1wiPkFsbDwvYT48L2xpPlxuICAgICAgICAg
ICAgICAgIDxsaT48YSBocmVmPVwiIy9hY3RpdmVcIiA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGZpbHRl
ciA9PSAnYWN0aXZlJ31cIiBAY2xpY2s9XCJmaWx0ZXIgPSAnYWN0aXZlJ1wiPkFjdGl2ZTwvYT48
L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiIy9jb21wbGV0ZWRcIiA6Y2xhc3M9
XCJ7c2VsZWN0ZWQ6IGZpbHRlciA9PSAnY29tcGxldGVkJ31cIiBAY2xpY2s9XCJmaWx0ZXIgPSAn
Y29tcGxldGVkJ1wiPkNvbXBsZXRlZDwvYT48L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAg
ICAgICAgIDxidXR0b24gY2xhc3M9XCJjbGVhci1jb21wbGV0ZWRcIiB2LXNob3c9XCJjb21wbGV0
ZWRcIiBAY2xpY2sucHJldmVudD1cImRlbGV0ZUNvbXBsZXRlZFwiPkNsZWFyIENvbXBsZXRlZDwv
YnV0dG9uPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxu
XG48c2NyaXB0PlxuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAg
ICBkYXRhICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvZG9zOiBbXSxcbiAg
ICAgICAgICAgIG5ld1RvZG86ICcnLFxuICAgICAgICAgICAgZmlsdGVyOiAnYWxsJyxcbiAgICAg
ICAgICAgIGFsbERvbmU6IGZhbHNlLFxuICAgICAgICAgICAgZWRpdGluZzogbnVsbFxuICAgICAg
ICB9XG4gICAgfSxcbiAgICBmaWx0ZXJzOiB7XG4gICAgICAgIHBsdXJhbGl6ZTogZnVuY3Rpb24g
KG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPT09IDEgPyAnaXRlbScgOiAnaXRlbXMnXG4gICAgICAg
IH1cbiAgICB9LFxuICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgICAgdG9kb0ZvY3VzIChlbCwgdmFs
dWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIFZ1ZS5uZXh0
VGljayhfID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWwuZm9jdXMoKVxuICAgICAgICAgICAg
ICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtc
biAgICAgICAgYWRkVG9kbyAoKSB7XG4gICAgICAgICAgICB0aGlzLnRvZG9zLnB1c2goe1xuICAg
ICAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRo
aXMubmV3VG9kb1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMubmV3VG9kbyA9ICcn
XG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0ZVRvZG8gKHRvZG8pIHtcbiAgICAgICAgICAgIHRo
aXMudG9kb3MgPSB0aGlzLnRvZG9zLmZpbHRlcih0ID0+IHQgIT09IHRvZG8pXG4gICAgICAgIH0s
XG4gICAgICAgIGRlbGV0ZUNvbXBsZXRlZCAoKSB7XG4gICAgICAgICAgICB0aGlzLnRvZG9zID0g
dGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiAhdG9kby5jb21wbGV0ZWQpXG4gICAgICAgIH0sXG4g
ICAgICAgIGVkaXRUb2RvICh0b2RvKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmcgPSB0b2Rv
XG4gICAgICAgIH0sXG4gICAgICAgIGRvbmVFZGl0ICgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRp
dGluZyA9IG51bGxcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAg
cmVtYWluaW5nICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0b2Rv
ID0+ICF0b2RvLmNvbXBsZXRlZCkubGVuZ3RoXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRl
ZCAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2Rvcy5maWx0ZXIodG9kbyA9PiB0b2Rv
LmNvbXBsZXRlZCkubGVuZ3RoXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcmVkVG9kb3MgKCkg
e1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyID09PSAnYWN0aXZlJykge1xuICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLnRvZG9zLmZpbHRlcih0b2RvID0+ICF0b2RvLmNvbXBsZXRlZClc
biAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXIgPT09ICdjb21wbGV0ZWQnKSB7XG4g
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kb3MuZmlsdGVyKHRvZG8gPT4gdG9kby5jb21w
bGV0ZWQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZG9zXG4g
ICAgICAgIH0sXG4gICAgICAgIGFsbERvbmU6IHtcbiAgICAgICAgICAgIGdldCAoKSB7XG4gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtYWluaW5nID09PSAwXG4gICAgICAgICAgICB9LFxu
ICAgICAgICAgICAgc2V0ICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9kb3MuZm9y
RWFjaCh0b2RvID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdG9kby5jb21wbGV0ZWQgPSB2YWx1
ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59
XG48L3NjcmlwdD5cblxuPHN0eWxlIHNyYz1cIi4vdG9kby5jc3NcIj48L3N0eWxlPlxuXG5cblxu
Ly8gV0VCUEFDSyBGT09URVIgLy9cbi8vIFRvZG9zLnZ1ZT8xYWIyMzgyZiIsIjx0ZW1wbGF0ZT5c
biAgPGRpdiBpZD1cImFwcFwiPlxuICAgIDxUb2Rvcz48L1RvZG9zPlxuICA8L2Rpdj5cbjwvdGVt
cGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVG9kb3MgZnJvbSAnLi9jb21wb25lbnRzL1RvZG9z
J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbmFtZTogJ2FwcCcsXG4gICAgY29tcG9uZW50czog
e1xuICAgICAgICBUb2Rvc1xuICAgIH1cbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBG
T09URVIgLy9cbi8vIEFwcC52dWU/NzFhNGU1MTkiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rp
c3Qvc3RhdGljL2pzL21hbmlmZXN0LmEzMDdjN2Y5YTVkYTVkYzcyYmI1LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL21hbmlmZXN0LmEzMDdjN2Y5YTVkYTVkYzcyYmI1
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTcyYzY1MjI3NDMzN2ViZmEyZmEx
ZTZhNDg2OTBiNWQ0YTY5NzcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC5h
MzA3YzdmOWE1ZGE1ZGM3MmJiNS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBv
PXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8s
by5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9dmFyIHI9d2luZG93LndlYnBhY2tKc29ucDt3
aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKHQsYSxjKXtmb3IodmFyIGksdSxmLHM9MCxsPVtd
O3M8dC5sZW5ndGg7cysrKXU9dFtzXSxvW3VdJiZsLnB1c2gob1t1XVswXSksb1t1XT0wO2Zvcihp
IGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsaSkmJihlW2ldPWFb
aV0pO2ZvcihyJiZyKHQsYSxjKTtsLmxlbmd0aDspbC5zaGlmdCgpKCk7aWYoYylmb3Iocz0wO3M8
Yy5sZW5ndGg7cysrKWY9bihuLnM9Y1tzXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07bi5l
PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoKXtpLm9uZXJyb3I9aS5vbmxvYWQ9bnVsbCxjbGVhclRp
bWVvdXQodSk7dmFyIG49b1tlXTswIT09biYmKG4mJm5bMV0obmV3IEVycm9yKCJMb2FkaW5nIGNo
dW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12b2lkIDApfXZhciB0PW9bZV07aWYoMD09PXQpcmV0
dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe2UoKX0pO2lmKHQpcmV0dXJuIHRbMl07dmFyIGE9
bmV3IFByb21pc2UoZnVuY3Rpb24obixyKXt0PW9bZV09W24scl19KTt0WzJdPWE7dmFyIGM9ZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxpPWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNjcmlwdCIpO2kudHlwZT0idGV4dC9qYXZhc2NyaXB0IixpLmNoYXJzZXQ9InV0Zi04
IixpLmFzeW5jPSEwLGkudGltZW91dD0xMmU0LG4ubmMmJmkuc2V0QXR0cmlidXRlKCJub25jZSIs
bi5uYyksaS5zcmM9bi5wKyJzdGF0aWMvanMvIitlKyIuIit7MDoiZDZlZDg5MzU0MzhmNDRlOTg0
M2EiLDE6IjJlNGU5ZTUyODY2NGZhNzk2ZDNhIn1bZV0rIi5qcyI7dmFyIHU9c2V0VGltZW91dChy
LDEyZTQpO3JldHVybiBpLm9uZXJyb3I9aS5vbmxvYWQ9cixjLmFwcGVuZENoaWxkKGkpLGF9LG4u
bT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUscix0KXtu
Lm8oZSxyKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVudW1l
cmFibGU6ITAsZ2V0OnR9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciByPWUmJmUuX19lc01vZHVsZT9m
dW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBu
LmQociwiYSIscikscn0sbi5vPWZ1bmN0aW9uKGUsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChlLG4pfSxuLnA9Ii4vIixuLm9lPWZ1bmN0aW9uKGUpe3Rocm93
IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKLS8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hbmlmZXN0
LmEzMDdjN2Y5YTVkYTVkYzcyYmI1LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVz
dC5hMzA3YzdmOWE1ZGE1ZGM3MmJiNS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlz
dC9zdGF0aWMvanMvbWFuaWZlc3QuYTMwN2M3ZjlhNWRhNWRjNzJiYjUuanMubWFwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDU0NmFhOGY5Y2ViMDI3NDYzNDEzYTZiZDM2YzFkMmVi
Y2JlOTFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC5hMzA3YzdmOWE1ZGE1
ZGM3MmJiNS5qcy5tYXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17InZlcnNpb24iOjMs
InNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvbWFuaWZlc3QuYTMwN2M3ZjlhNWRhNWRj
NzJiYjUuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGI3YjNkNzkxMWQ0ZjRhZTkx
NDMxIl0sIm5hbWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQi
LCJpbnN0YWxsZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwiY2FsbCIsInBh
cmVudEpzb25wRnVuY3Rpb24iLCJ3aW5kb3ciLCJjaHVua0lkcyIsIm1vcmVNb2R1bGVzIiwiZXhl
Y3V0ZU1vZHVsZXMiLCJjaHVua0lkIiwicmVzdWx0IiwicmVzb2x2ZXMiLCJsZW5ndGgiLCJpbnN0
YWxsZWRDaHVua3MiLCJwdXNoIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHki
LCJzaGlmdCIsInMiLCIyIiwiZSIsIm9uU2NyaXB0Q29tcGxldGUiLCJzY3JpcHQiLCJvbmVycm9y
Iiwib25sb2FkIiwiY2xlYXJUaW1lb3V0IiwidGltZW91dCIsImNodW5rIiwiRXJyb3IiLCJ1bmRl
ZmluZWQiLCJpbnN0YWxsZWRDaHVua0RhdGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsInByb21pc2Ui
LCJyZWplY3QiLCJoZWFkIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNyZWF0
ZUVsZW1lbnQiLCJ0eXBlIiwiY2hhcnNldCIsImFzeW5jIiwibmMiLCJzZXRBdHRyaWJ1dGUiLCJz
cmMiLCJwIiwiMCIsIjEiLCJzZXRUaW1lb3V0IiwiYXBwZW5kQ2hpbGQiLCJtIiwiYyIsInZhbHVl
IiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUi
LCJlbnVtZXJhYmxlIiwiZ2V0IiwibiIsIl9fZXNNb2R1bGUiLCJvYmplY3QiLCJwcm9wZXJ0eSIs
Im9lIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxTQUFVQSxHQ3VD
bkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9B
R0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNBSCxXQVVBLE9B
TkFKLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFF
LEdBQUEsRUFHQUYsRUFBQUQsUUExREEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxRQUFBLHNCQUFB
QyxFQUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQsRUFBQSxFQUFB
VSxLQUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdBQ0FZLEVBQUFK
LElBQ0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFFQUksRUFBQUosR0FBQSxDQUVBLEtBQUFa
LElBQUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FGLEVBQUFFLEdB
QUFVLEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFBQUMsUUFDQUQs
RUFBQU8sU0FFQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFBQUksT0FBMkJY
LElBQ3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlBLElBQUFaLE1B
R0FlLEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixHQStCQSxRQUFBYSxLQUVB
QyxFQUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMsR0FBQWYsRUFB
QUosRUFDQSxLQUFBbUIsSUFDQUEsR0FDQUEsRUFBQSxNQUFBQyxPQUFBLGlCQUFBcEIsRUFBQSxh
QUVBSSxFQUFBSixPQUFBcUIsSUF2Q0EsR0FBQUMsR0FBQWxCLEVBQUFKLEVBQ0EsUUFBQXNCLEVB
Q0EsVUFBQUMsU0FBQSxTQUFBQyxHQUEwQ0EsS0FJMUMsSUFBQUYsRUFDQSxNQUFBQSxHQUFBLEVB
SUEsSUFBQUcsR0FBQSxHQUFBRixTQUFBLFNBQUFDLEVBQUFFLEdBQ0FKLEVBQUFsQixFQUFBSixJ
QUFBd0IsRUFBQUUsSUFFQUosR0FBQSxHQUFBRyxDQUdBLElBQUFFLEdBQUFDLFNBQUFDLHFCQUFB
LFdBQ0FmLEVBQUFjLFNBQUFFLGNBQUEsU0FDQWhCLEdBQUFpQixLQUFBLGtCQUNBakIsRUFBQWtC
LFFBQUEsUUFDQWxCLEVBQUFtQixPQUFBLEVBQ0FuQixFQUFBSSxRQUFBLEtBRUEvQixFQUFBK0Ms
SUFDQXBCLEVBQUFxQixhQUFBLFFBQUFoRCxFQUFBK0MsSUFFQXBCLEVBQUFzQixJQUFBakQsRUFB
QWtELEVBQUEsYUFBQXJDLEVBQUEsS0FBd0VzQyxFQUFBLHVCQUFBQyxFQUFBLHdCQUFzRHZDLEdB
QUEsS0FDOUgsSUFBQWtCLEdBQUFzQixXQUFBM0IsRUFBQSxLQWdCQSxPQWZBQyxHQUFBQyxRQUFB
RCxFQUFBRSxPQUFBSCxFQWFBYyxFQUFBYyxZQUFBM0IsR0FFQVcsR0FJQXRDLEVBQUF1RCxFQUFB
eEQsRUFHQUMsRUFBQXdELEVBQUF0RCxFQUdBRixFQUFBSyxFQUFBLFNBQUFvRCxHQUEyQyxNQUFB
QSxJQUczQ3pELEVBQUEwRCxFQUFBLFNBQUF2RCxFQUFBd0QsRUFBQUMsR0FDQTVELEVBQUE2RCxF
QUFBMUQsRUFBQXdELElBQ0F4QyxPQUFBMkMsZUFBQTNELEVBQUF3RCxHQUNBSSxjQUFBLEVBQ0FD
LFlBQUEsRUFDQUMsSUFBQUwsS0FNQTVELEVBQUFrRSxFQUFBLFNBQUE5RCxHQUNBLEdBQUF3RCxH
QUFBeEQsS0FBQStELFdBQ0EsV0FBMkIsTUFBQS9ELEdBQUEsU0FDM0IsV0FBaUMsTUFBQUEsR0FF
akMsT0FEQUosR0FBQTBELEVBQUFFLEVBQUEsSUFBQUEsR0FDQUEsR0FJQTVELEVBQUE2RCxFQUFB
LFNBQUFPLEVBQUFDLEdBQXNELE1BQUFsRCxRQUFBQyxVQUFBQyxlQUFBZCxLQUFBNkQsRUFBQUMs
SUFHdERyRSxFQUFBa0QsRUFBQSxLQUdBbEQsRUFBQXNFLEdBQUEsU0FBQUMsR0FBOEQsS0FBcEJD
LFNBQUFDLE1BQUFGLEdBQW9CQSIsImZpbGUiOiJzdGF0aWMvanMvbWFuaWZlc3QuYTMwN2M3Zjlh
NWRhNWRjNzJiYjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqLyAoZnVuY3Rpb24obW9k
dWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIGluc3RhbGwgYSBKU09O
UCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuLyoqKioqKi8gXHR2YXIgcGFyZW50SnNvbnBG
dW5jdGlvbiA9IHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXTtcbi8qKioqKiovIFx0d2luZG93W1wi
d2VicGFja0pzb25wXCJdID0gZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soY2h1bmtJZHMs
IG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdC8vIGFkZCBcIm1v
cmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuLyoqKioqKi8gXHRcdC8vIHRoZW4g
ZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuLyoqKioq
Ki8gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW10sIHJlc3Vs
dDtcbi8qKioqKiovIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuLyoqKioq
Ki8gXHRcdFx0Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuLyoqKioqKi8gXHRcdFx0aWYoaW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4vKioqKioqLyBcdFx0XHRcdHJlc29sdmVzLnB1c2goaW5z
dGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBdKTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0
XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4vKioqKioqLyBcdFx0fVxuLyoqKioq
Ki8gXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuLyoqKioqKi8gXHRcdFx0aWYo
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJ
ZCkpIHtcbi8qKioqKiovIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1tt
b2R1bGVJZF07XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRc
dGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rpb24oY2h1bmtJZHMsIG1v
cmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4vKioqKioqLyBcdFx0d2hpbGUocmVzb2x2ZXMu
bGVuZ3RoKSB7XG4vKioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBc
dFx0fVxuLyoqKioqKi8gXHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRm
b3IoaT0wOyBpIDwgZXhlY3V0ZU1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbi8qKioqKiovIFx0XHRc
dFx0cmVzdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBl
eGVjdXRlTW9kdWxlc1tpXSk7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fVxuLyoq
KioqKi8gXHRcdHJldHVybiByZXN1bHQ7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioq
Ki8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVz
ID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBvYmplY3RzIHRvIHN0b3JlIGxvYWRlZCBh
bmQgbG9hZGluZyBjaHVua3Ncbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbi8q
KioqKiovIFx0XHQyOiAwXG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBU
aGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWly
ZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVs
ZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRd
KSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhw
b3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVs
ZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0g
aW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJ
ZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31c
bi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBt
b2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVs
ZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtc
bi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoq
KioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0
dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxl
LmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoaXMgZmls
ZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8qKioqKiovIFx0Ly8gVGhlIGNodW5r
IGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4vKioqKioqLyBcdF9fd2Vi
cGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuLyoq
KioqKi8gXHRcdHZhciBpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJ
ZF07XG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhID09PSAwKSB7XG4vKioqKioq
LyBcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNvbHZlKCk7
IH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gYSBQcm9taXNl
IG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRD
aHVua0RhdGEpIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRDaHVua0RhdGFbMl07
XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBzZXR1cCBQcm9taXNl
IGluIGNodW5rIGNhY2hlXG4vKioqKioqLyBcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbi8qKioqKiovIFx0XHRcdGluc3RhbGxlZENodW5r
RGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdO1xuLyoq
KioqKi8gXHRcdH0pO1xuLyoqKioqKi8gXHRcdGluc3RhbGxlZENodW5rRGF0YVsyXSA9IHByb21p
c2U7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIHN0YXJ0IGNodW5rIGxvYWRpbmdcbi8qKioq
KiovIFx0XHR2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylb
MF07XG4vKioqKioqLyBcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nj
cmlwdCcpO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4v
KioqKioqLyBcdFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuLyoqKioqKi8gXHRcdHNjcmlw
dC5hc3luYyA9IHRydWU7XG4vKioqKioqLyBcdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjAwMDA7XG4v
KioqKioqL1xuLyoqKioqKi8gXHRcdGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSB7XG4vKioq
KioqLyBcdFx0XHRzY3JpcHQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgX193ZWJwYWNrX3JlcXVp
cmVfXy5uYyk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdHNjcmlwdC5zcmMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fLnAgKyBcInN0YXRpYy9qcy9cIiArIGNodW5rSWQgKyBcIi5cIiArIHtc
IjBcIjpcImQ2ZWQ4OTM1NDM4ZjQ0ZTk4NDNhXCIsXCIxXCI6XCIyZTRlOWU1Mjg2NjRmYTc5NmQz
YVwifVtjaHVua0lkXSArIFwiLmpzXCI7XG4vKioqKioqLyBcdFx0dmFyIHRpbWVvdXQgPSBzZXRU
aW1lb3V0KG9uU2NyaXB0Q29tcGxldGUsIDEyMDAwMCk7XG4vKioqKioqLyBcdFx0c2NyaXB0Lm9u
ZXJyb3IgPSBzY3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZTtcbi8qKioqKiovIFx0XHRm
dW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuLyoqKioqKi8gXHRcdFx0Ly8gYXZvaWQgbWVt
IGxlYWtzIGluIElFLlxuLyoqKioqKi8gXHRcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25s
b2FkID0gbnVsbDtcbi8qKioqKiovIFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbi8qKioq
KiovIFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbi8qKioqKiov
IFx0XHRcdGlmKGNodW5rICE9PSAwKSB7XG4vKioqKioqLyBcdFx0XHRcdGlmKGNodW5rKSB7XG4v
KioqKioqLyBcdFx0XHRcdFx0Y2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBj
aHVua0lkICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHR9XG4vKioqKioqLyBcdFx0
XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbi8qKioqKiovIFx0XHRc
dH1cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi8gXHRcdGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0
KTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0cmV0dXJuIHByb21pc2U7XG4vKioqKioqLyBcdH07
XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dl
YnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1
bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8q
KioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioq
KiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkg
aW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9c
bi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRz
XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5h
bWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhw
b3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBv
cnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioq
KioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0
dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4v
KioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21w
YXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVy
ID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9u
IGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBc
dFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoq
KioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8q
KioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioq
KiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBc
dF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0
dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5
KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiLi9cIjtcbi8qKioqKiovXG4vKioq
KioqLyBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5nXG4vKioqKioqLyBc
dF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihl
cnIpOyB0aHJvdyBlcnI7IH07XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioq
KiovIChbXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHN0YXRpYy9qcy9tYW5pZmVz
dC5hMzA3YzdmOWE1ZGE1ZGM3MmJiNS5qcyIsIiBcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFj
ayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSB3aW5kb3db
XCJ3ZWJwYWNrSnNvbnBcIl07XG4gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlv
biB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1
bGVzKSB7XG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0
LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUg
Y2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBb
XSwgcmVzdWx0O1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuIFx0XHRc
dGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbY2h1bmtJ
ZF0pIHtcbiBcdFx0XHRcdHJlc29sdmVzLnB1c2goaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzBd
KTtcbiBcdFx0XHR9XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBcdFx0
fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xu
IFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRc
dFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVu
Y3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4gXHRcdHdoaWxl
KHJlc29sdmVzLmxlbmd0aCkge1xuIFx0XHRcdHJlc29sdmVzLnNoaWZ0KCkoKTtcbiBcdFx0fVxu
IFx0XHRpZihleGVjdXRlTW9kdWxlcykge1xuIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9k
dWxlcy5sZW5ndGg7IGkrKykge1xuIFx0XHRcdFx0cmVzdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVf
XyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBleGVjdXRlTW9kdWxlc1tpXSk7XG4gXHRcdFx0fVxu
IFx0XHR9XG4gXHRcdHJldHVybiByZXN1bHQ7XG4gXHR9O1xuXG4gXHQvLyBUaGUgbW9kdWxlIGNh
Y2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBvYmplY3RzIHRvIHN0
b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3NcbiBcdHZhciBpbnN0YWxsZWRDaHVua3MgPSB7
XG4gXHRcdDI6IDBcbiBcdH07XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5j
dGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYg
bW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7
XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRc
dH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNo
ZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0
XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4g
XHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVs
ZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2Fk
ZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBv
ZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuIFx0Ly8g
VGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuIFx0Ly8gVGhlIGNodW5r
IGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4gXHRfX3dlYnBhY2tfcmVx
dWlyZV9fLmUgPSBmdW5jdGlvbiByZXF1aXJlRW5zdXJlKGNodW5rSWQpIHtcbiBcdFx0dmFyIGlu
c3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdFx0aWYoaW5z
dGFsbGVkQ2h1bmtEYXRhID09PSAwKSB7XG4gXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUpIHsgcmVzb2x2ZSgpOyB9KTtcbiBcdFx0fVxuXG4gXHRcdC8vIGEgUHJvbWlz
ZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5nXCIuXG4gXHRcdGlmKGluc3RhbGxlZENodW5rRGF0
YSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRDaHVua0RhdGFbMl07XG4gXHRcdH1cblxuIFx0
XHQvLyBzZXR1cCBQcm9taXNlIGluIGNodW5rIGNhY2hlXG4gXHRcdHZhciBwcm9taXNlID0gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1
bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF07XG4g
XHRcdH0pO1xuIFx0XHRpbnN0YWxsZWRDaHVua0RhdGFbMl0gPSBwcm9taXNlO1xuXG4gXHRcdC8v
IHN0YXJ0IGNodW5rIGxvYWRpbmdcbiBcdFx0dmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuIFx0XHR2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2NyaXB0Jyk7XG4gXHRcdHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7
XG4gXHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04JztcbiBcdFx0c2NyaXB0LmFzeW5jID0gdHJ1
ZTtcbiBcdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjAwMDA7XG5cbiBcdFx0aWYgKF9fd2VicGFja19y
ZXF1aXJlX18ubmMpIHtcbiBcdFx0XHRzY3JpcHQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgX193
ZWJwYWNrX3JlcXVpcmVfXy5uYyk7XG4gXHRcdH1cbiBcdFx0c2NyaXB0LnNyYyA9IF9fd2VicGFj
a19yZXF1aXJlX18ucCArIFwic3RhdGljL2pzL1wiICsgY2h1bmtJZCArIFwiLlwiICsge1wiMFwi
OlwiZDZlZDg5MzU0MzhmNDRlOTg0M2FcIixcIjFcIjpcIjJlNGU5ZTUyODY2NGZhNzk2ZDNhXCJ9
W2NodW5rSWRdICsgXCIuanNcIjtcbiBcdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9uU2Ny
aXB0Q29tcGxldGUsIDEyMDAwMCk7XG4gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9h
ZCA9IG9uU2NyaXB0Q29tcGxldGU7XG4gXHRcdGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUoKSB7
XG4gXHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuIFx0XHRcdHNjcmlwdC5vbmVycm9y
ID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4gXHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xu
IFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdFx0XHRpZihj
aHVuayAhPT0gMCkge1xuIFx0XHRcdFx0aWYoY2h1bmspIHtcbiBcdFx0XHRcdFx0Y2h1bmtbMV0o
bmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuIFx0
XHRcdFx0fVxuIFx0XHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xu
IFx0XHRcdH1cbiBcdFx0fTtcbiBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXG4gXHRc
dHJldHVybiBwcm9taXNlO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVj
dCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVs
ZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWly
ZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3Ig
Y2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dl
YnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5c
biBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193
ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4g
XHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRP
YmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJh
YmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdl
dHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0
IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0
X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0
ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERl
ZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24g
Z2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0
fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dl
YnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07
XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
LnAgPSBcIi4vXCI7XG5cbiBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5n
XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm9lID0gZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUuZXJy
b3IoZXJyKTsgdGhyb3cgZXJyOyB9O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdl
YnBhY2svYm9vdHN0cmFwIGI3YjNkNzkxMWQ0ZjRhZTkxNDMxIl0sInNvdXJjZVJvb3QiOiIifQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpz
LWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC5hYTk5NzhhYTk2ZWU5NDhmMmE0Yy5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5pZmVzdC5hYTk5NzhhYTk2ZWU5
NDhmMmE0Yy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmFjNDdlZTdiMWQzOGJmNWM2MjEzMzBlOTc1YzcyM2Ux
MzM4ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3Rh
dGljL2pzL21hbmlmZXN0LmFhOTk3OGFhOTZlZTk0OGYyYTRjLmpzCkBAIC0wLDAgKzEsMiBAQAor
IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3Zh
ciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRz
LG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9dmFyIHI9d2luZG93LndlYnBhY2tKc29u
cDt3aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKHQsYyxpKXtmb3IodmFyIHUsYSxmLHM9MCxs
PVtdO3M8dC5sZW5ndGg7cysrKWE9dFtzXSxvW2FdJiZsLnB1c2gob1thXVswXSksb1thXT0wO2Zv
cih1IGluIGMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsdSkmJihlW3Vd
PWNbdV0pO2ZvcihyJiZyKHQsYyxpKTtsLmxlbmd0aDspbC5zaGlmdCgpKCk7aWYoaSlmb3Iocz0w
O3M8aS5sZW5ndGg7cysrKWY9bihuLnM9aVtzXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07
bi5lPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoKXt1Lm9uZXJyb3I9dS5vbmxvYWQ9bnVsbCxjbGVh
clRpbWVvdXQoYSk7dmFyIG49b1tlXTswIT09biYmKG4mJm5bMV0obmV3IEVycm9yKCJMb2FkaW5n
IGNodW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12b2lkIDApfXZhciB0PW9bZV07aWYoMD09PXQp
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe2UoKX0pO2lmKHQpcmV0dXJuIHRbMl07dmFy
IGM9bmV3IFByb21pc2UoZnVuY3Rpb24obixyKXt0PW9bZV09W24scl19KTt0WzJdPWM7dmFyIGk9
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSx1PWRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNjcmlwdCIpO3UudHlwZT0idGV4dC9qYXZhc2NyaXB0Iix1LmNoYXJzZXQ9InV0
Zi04Iix1LmFzeW5jPSEwLHUudGltZW91dD0xMmU0LG4ubmMmJnUuc2V0QXR0cmlidXRlKCJub25j
ZSIsbi5uYyksdS5zcmM9bi5wKyJzdGF0aWMvanMvIitlKyIuIit7MDoiZTZjMDEwZDU3ZDUzNTM3
ZjRhZDIiLDE6ImU3MDA4MDAxYThiZWQwMDliYmYxIn1bZV0rIi5qcyI7dmFyIGE9c2V0VGltZW91
dChyLDEyZTQpO3JldHVybiB1Lm9uZXJyb3I9dS5vbmxvYWQ9cixpLmFwcGVuZENoaWxkKHUpLGN9
LG4ubT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUscix0
KXtuLm8oZSxyKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVu
dW1lcmFibGU6ITAsZ2V0OnR9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciByPWUmJmUuX19lc01vZHVs
ZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVy
biBuLmQociwiYSIscikscn0sbi5vPWZ1bmN0aW9uKGUsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pfSxuLnA9Ii4vIixuLm9lPWZ1bmN0aW9uKGUpe3Ro
cm93IGNvbnNvbGUuZXJyb3IoZSksZX19KFtdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hbmlm
ZXN0LmFhOTk3OGFhOTZlZTk0OGYyYTRjLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy9tYW5p
ZmVzdC5hYTk5NzhhYTk2ZWU5NDhmMmE0Yy5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkv
ZGlzdC9zdGF0aWMvanMvbWFuaWZlc3QuYWE5OTc4YWE5NmVlOTQ4ZjJhNGMuanMubWFwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlZjQ2MDlhY2FmZTU4MjhiOGE5MTY4NjcwZGM4MTkyNmZlN2FmYWMKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMvbWFuaWZlc3Qu
YWE5OTc4YWE5NmVlOTQ4ZjJhNGMuanMubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywi
c291cmNlcyI6WyJ3ZWJwYWNrOi8vL3N0YXRpYy9qcy9tYW5pZmVzdC5hYTk5NzhhYTk2ZWU5NDhm
MmE0Yy5qcyIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgZmU2MWIyOWQ5MTY3YTY4ZWFh
ODIiXSwibmFtZXMiOlsibW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIs
Imluc3RhbGxlZE1vZHVsZXMiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFy
ZW50SnNvbnBGdW5jdGlvbiIsIndpbmRvdyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVj
dXRlTW9kdWxlcyIsImNodW5rSWQiLCJyZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3Rh
bGxlZENodW5rcyIsInB1c2giLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIs
InNoaWZ0IiwicyIsIjIiLCJlIiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3Ii
LCJvbmxvYWQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVm
aW5lZCIsImluc3RhbGxlZENodW5rRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwicHJvbWlzZSIs
InJlamVjdCIsImhlYWQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiY3JlYXRl
RWxlbWVudCIsInR5cGUiLCJjaGFyc2V0IiwiYXN5bmMiLCJuYyIsInNldEF0dHJpYnV0ZSIsInNy
YyIsInAiLCIwIiwiMSIsInNldFRpbWVvdXQiLCJhcHBlbmRDaGlsZCIsIm0iLCJjIiwidmFsdWUi
LCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIs
ImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5Iiwi
b2UiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJDQUFTLFNBQVVBLEdDdUNu
QixRQUFBQyxHQUFBQyxHQUdBLEdBQUFDLEVBQUFELEdBQ0EsTUFBQUMsR0FBQUQsR0FBQUUsT0FH
QSxJQUFBQyxHQUFBRixFQUFBRCxJQUNBSSxFQUFBSixFQUNBSyxHQUFBLEVBQ0FILFdBVUEsT0FO
QUosR0FBQUUsR0FBQU0sS0FBQUgsRUFBQUQsUUFBQUMsSUFBQUQsUUFBQUgsR0FHQUksRUFBQUUs
R0FBQSxFQUdBRixFQUFBRCxRQTFEQSxHQUFBSyxHQUFBQyxPQUFBLFlBQ0FBLFFBQUEsc0JBQUFD
LEVBQUFDLEVBQUFDLEdBSUEsSUFEQSxHQUFBWCxHQUFBWSxFQUFBQyxFQUFBVCxFQUFBLEVBQUFV
LEtBQ1FWLEVBQUFLLEVBQUFNLE9BQW9CWCxJQUM1QlEsRUFBQUgsRUFBQUwsR0FDQVksRUFBQUos
SUFDQUUsRUFBQUcsS0FBQUQsRUFBQUosR0FBQSxJQUVBSSxFQUFBSixHQUFBLENBRUEsS0FBQVos
SUFBQVUsR0FDQVEsT0FBQUMsVUFBQUMsZUFBQWQsS0FBQUksRUFBQVYsS0FDQUYsRUFBQUUsR0FB
QVUsRUFBQVYsR0FJQSxLQURBTyxLQUFBRSxFQUFBQyxFQUFBQyxHQUNBRyxFQUFBQyxRQUNBRCxF
QUFBTyxTQUVBLElBQUFWLEVBQ0EsSUFBQVAsRUFBQSxFQUFZQSxFQUFBTyxFQUFBSSxPQUEyQlgs
SUFDdkNTLEVBQUFkLElBQUF1QixFQUFBWCxFQUFBUCxHQUdBLE9BQUFTLEdBSUEsSUFBQVosTUFH
QWUsR0FDQU8sRUFBQSxFQTZCQXhCLEdBQUF5QixFQUFBLFNBQUFaLEdBK0JBLFFBQUFhLEtBRUFD
LEVBQUFDLFFBQUFELEVBQUFFLE9BQUEsS0FDQUMsYUFBQUMsRUFDQSxJQUFBQyxHQUFBZixFQUFB
SixFQUNBLEtBQUFtQixJQUNBQSxHQUNBQSxFQUFBLE1BQUFDLE9BQUEsaUJBQUFwQixFQUFBLGFB
RUFJLEVBQUFKLE9BQUFxQixJQXZDQSxHQUFBQyxHQUFBbEIsRUFBQUosRUFDQSxRQUFBc0IsRUFD
QSxVQUFBQyxTQUFBLFNBQUFDLEdBQTBDQSxLQUkxQyxJQUFBRixFQUNBLE1BQUFBLEdBQUEsRUFJ
QSxJQUFBRyxHQUFBLEdBQUFGLFNBQUEsU0FBQUMsRUFBQUUsR0FDQUosRUFBQWxCLEVBQUFKLElB
QUF3QixFQUFBRSxJQUVBSixHQUFBLEdBQUFHLENBR0EsSUFBQUUsR0FBQUMsU0FBQUMscUJBQUEs
V0FDQWYsRUFBQWMsU0FBQUUsY0FBQSxTQUNBaEIsR0FBQWlCLEtBQUEsa0JBQ0FqQixFQUFBa0Is
UUFBQSxRQUNBbEIsRUFBQW1CLE9BQUEsRUFDQW5CLEVBQUFJLFFBQUEsS0FFQS9CLEVBQUErQyxJ
QUNBcEIsRUFBQXFCLGFBQUEsUUFBQWhELEVBQUErQyxJQUVBcEIsRUFBQXNCLElBQUFqRCxFQUFB
a0QsRUFBQSxhQUFBckMsRUFBQSxLQUF3RXNDLEVBQUEsdUJBQUFDLEVBQUEsd0JBQXNEdkMsR0FB
QSxLQUM5SCxJQUFBa0IsR0FBQXNCLFdBQUEzQixFQUFBLEtBZ0JBLE9BZkFDLEdBQUFDLFFBQUFE
LEVBQUFFLE9BQUFILEVBYUFjLEVBQUFjLFlBQUEzQixHQUVBVyxHQUlBdEMsRUFBQXVELEVBQUF4
RCxFQUdBQyxFQUFBd0QsRUFBQXRELEVBR0FGLEVBQUFLLEVBQUEsU0FBQW9ELEdBQTJDLE1BQUFB
LElBRzNDekQsRUFBQTBELEVBQUEsU0FBQXZELEVBQUF3RCxFQUFBQyxHQUNBNUQsRUFBQTZELEVB
QUExRCxFQUFBd0QsSUFDQXhDLE9BQUEyQyxlQUFBM0QsRUFBQXdELEdBQ0FJLGNBQUEsRUFDQUMs
WUFBQSxFQUNBQyxJQUFBTCxLQU1BNUQsRUFBQWtFLEVBQUEsU0FBQTlELEdBQ0EsR0FBQXdELEdB
QUF4RCxLQUFBK0QsV0FDQSxXQUEyQixNQUFBL0QsR0FBQSxTQUMzQixXQUFpQyxNQUFBQSxHQUVq
QyxPQURBSixHQUFBMEQsRUFBQUUsRUFBQSxJQUFBQSxHQUNBQSxHQUlBNUQsRUFBQTZELEVBQUEs
U0FBQU8sRUFBQUMsR0FBc0QsTUFBQWxELFFBQUFDLFVBQUFDLGVBQUFkLEtBQUE2RCxFQUFBQyxJ
QUd0RHJFLEVBQUFrRCxFQUFBLEtBR0FsRCxFQUFBc0UsR0FBQSxTQUFBQyxHQUE4RCxLQUFwQkMs
U0FBQUMsTUFBQUYsR0FBb0JBIiwiZmlsZSI6InN0YXRpYy9qcy9tYW5pZmVzdC5hYTk5NzhhYTk2
ZWU5NDhmMmE0Yy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKiovIChmdW5jdGlvbihtb2R1
bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gaW5zdGFsbCBhIEpTT05Q
IGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdHZhciBwYXJlbnRKc29ucEZ1
bmN0aW9uID0gd2luZG93W1wid2VicGFja0pzb25wXCJdO1xuLyoqKioqKi8gXHR3aW5kb3dbXCJ3
ZWJwYWNrSnNvbnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywg
bW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0Ly8gYWRkIFwibW9y
ZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG4vKioqKioqLyBcdFx0Ly8gdGhlbiBm
bGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4vKioqKioq
LyBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0
O1xuLyoqKioqKi8gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4vKioqKioq
LyBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4vKioqKioqLyBcdFx0XHRpZihpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF0pIHtcbi8qKioqKiovIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0
YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuLyoqKioqKi8gXHRcdFx0fVxuLyoqKioqKi8gXHRc
dFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioq
LyBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlk
KSkge1xuLyoqKioqKi8gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21v
ZHVsZUlkXTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0
aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9y
ZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5s
ZW5ndGgpIHtcbi8qKioqKiovIFx0XHRcdHJlc29sdmVzLnNoaWZ0KCkoKTtcbi8qKioqKiovIFx0
XHR9XG4vKioqKioqLyBcdFx0aWYoZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdGZv
cihpPTA7IGkgPCBleGVjdXRlTW9kdWxlcy5sZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0
XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4
ZWN1dGVNb2R1bGVzW2ldKTtcbi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioq
KioqLyBcdFx0cmV0dXJuIHJlc3VsdDtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioq
LyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMg
PSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFu
ZCBsb2FkaW5nIGNodW5rc1xuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoq
KioqKi8gXHRcdDI6IDBcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRo
ZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJl
X18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxl
IGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0p
IHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBv
cnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxl
IChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBp
bnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlk
LFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxu
LyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1v
ZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxl
LmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xu
LyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioq
KioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1
cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUu
ZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhpcyBmaWxl
IGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLyoqKioqKi8gXHQvLyBUaGUgY2h1bmsg
bG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbi8qKioqKiovIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5lID0gZnVuY3Rpb24gcmVxdWlyZUVuc3VyZShjaHVua0lkKSB7XG4vKioq
KioqLyBcdFx0dmFyIGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lk
XTtcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEgPT09IDApIHtcbi8qKioqKiov
IFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7IHJlc29sdmUoKTsg
fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBhIFByb21pc2Ug
bWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENo
dW5rRGF0YSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rRGF0YVsyXTtc
bi8qKioqKiovIFx0XHR9XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIHNldHVwIFByb21pc2Ug
aW4gY2h1bmsgY2FjaGVcbi8qKioqKiovIFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1bmtE
YXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gW3Jlc29sdmUsIHJlamVjdF07XG4vKioq
KioqLyBcdFx0fSk7XG4vKioqKioqLyBcdFx0aW5zdGFsbGVkQ2h1bmtEYXRhWzJdID0gcHJvbWlz
ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuLyoqKioq
Ki8gXHRcdHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVsw
XTtcbi8qKioqKiovIFx0XHR2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2Ny
aXB0Jyk7XG4vKioqKioqLyBcdFx0c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0Jztcbi8q
KioqKiovIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4vKioqKioqLyBcdFx0c2NyaXB0
LmFzeW5jID0gdHJ1ZTtcbi8qKioqKiovIFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcbi8q
KioqKiovXG4vKioqKioqLyBcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubmMpIHtcbi8qKioq
KiovIFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBfX3dlYnBhY2tfcmVxdWly
ZV9fLm5jKTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0c2NyaXB0LnNyYyA9IF9fd2Vi
cGFja19yZXF1aXJlX18ucCArIFwic3RhdGljL2pzL1wiICsgY2h1bmtJZCArIFwiLlwiICsge1wi
MFwiOlwiZTZjMDEwZDU3ZDUzNTM3ZjRhZDJcIixcIjFcIjpcImU3MDA4MDAxYThiZWQwMDliYmYx
XCJ9W2NodW5rSWRdICsgXCIuanNcIjtcbi8qKioqKiovIFx0XHR2YXIgdGltZW91dCA9IHNldFRp
bWVvdXQob25TY3JpcHRDb21wbGV0ZSwgMTIwMDAwKTtcbi8qKioqKiovIFx0XHRzY3JpcHQub25l
cnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xuLyoqKioqKi8gXHRcdGZ1
bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUoKSB7XG4vKioqKioqLyBcdFx0XHQvLyBhdm9pZCBtZW0g
bGVha3MgaW4gSUUuXG4vKioqKioqLyBcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxv
YWQgPSBudWxsO1xuLyoqKioqKi8gXHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuLyoqKioq
Ki8gXHRcdFx0dmFyIGNodW5rID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuLyoqKioqKi8g
XHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbi8qKioqKiovIFx0XHRcdFx0aWYoY2h1bmspIHtcbi8q
KioqKiovIFx0XHRcdFx0XHRjaHVua1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNo
dW5rSWQgKyAnIGZhaWxlZC4nKSk7XG4vKioqKioqLyBcdFx0XHRcdH1cbi8qKioqKiovIFx0XHRc
dFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuLyoqKioqKi8gXHRcdFx0
fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFx0aGVhZC5hcHBlbmRDaGlsZChzY3JpcHQp
O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHRyZXR1cm4gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtc
bi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2Vi
cGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVs
ZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBp
bXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVx
dWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xu
LyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNc
bi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFt
ZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBv
cnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9y
dHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioq
KiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0
ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8q
KioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19y
ZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIg
PSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24g
Z2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0
XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioq
KioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoq
KioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioq
Ki8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0
X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1
cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkp
OyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8q
KioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIuL1wiO1xuLyoqKioqKi9cbi8qKioq
KiovIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbi8qKioqKiovIFx0
X193ZWJwYWNrX3JlcXVpcmVfXy5vZSA9IGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmVycm9yKGVy
cik7IHRocm93IGVycjsgfTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioq
Ki8gKFtdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3RhdGljL2pzL21hbmlmZXN0
LmFhOTk3OGFhOTZlZTk0OGYyYTRjLmpzIiwiIFx0Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNr
IGZvciBjaHVuayBsb2FkaW5nXG4gXHR2YXIgcGFyZW50SnNvbnBGdW5jdGlvbiA9IHdpbmRvd1tc
IndlYnBhY2tKc29ucFwiXTtcbiBcdHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9u
IHdlYnBhY2tKc29ucENhbGxiYWNrKGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVs
ZXMpIHtcbiBcdFx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3Qs
XG4gXHRcdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBj
YWxsYmFja1xuIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtd
LCByZXN1bHQ7XG4gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0
Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuIFx0XHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lk
XSkge1xuIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0p
O1xuIFx0XHRcdH1cbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuIFx0XHR9
XG4gXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlmKE9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG4g
XHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0
XHR9XG4gXHRcdH1cbiBcdFx0aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5j
dGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1dGVNb2R1bGVzKTtcbiBcdFx0d2hpbGUo
cmVzb2x2ZXMubGVuZ3RoKSB7XG4gXHRcdFx0cmVzb2x2ZXMuc2hpZnQoKSgpO1xuIFx0XHR9XG4g
XHRcdGlmKGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1
bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9XG4g
XHRcdH1cbiBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2Fj
aGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8gc3Rv
cmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtc
biBcdFx0MjogMFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0
aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBt
b2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtc
biBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0
fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hl
KVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRc
dFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBc
dFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxl
c1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRl
ZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9m
IHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG4gXHQvLyBU
aGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4gXHQvLyBUaGUgY2h1bmsg
bG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3NcbiBcdF9fd2VicGFja19yZXF1
aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuIFx0XHR2YXIgaW5z
dGFsbGVkQ2h1bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0XHRpZihpbnN0
YWxsZWRDaHVua0RhdGEgPT09IDApIHtcbiBcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rp
b24ocmVzb2x2ZSkgeyByZXNvbHZlKCk7IH0pO1xuIFx0XHR9XG5cbiBcdFx0Ly8gYSBQcm9taXNl
IG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRh
KSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rRGF0YVsyXTtcbiBcdFx0fVxuXG4gXHRc
dC8vIHNldHVwIFByb21pc2UgaW4gY2h1bmsgY2FjaGVcbiBcdFx0dmFyIHByb21pc2UgPSBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiBcdFx0XHRpbnN0YWxsZWRDaHVu
a0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBc
dFx0fSk7XG4gXHRcdGluc3RhbGxlZENodW5rRGF0YVsyXSA9IHByb21pc2U7XG5cbiBcdFx0Ly8g
c3RhcnQgY2h1bmsgbG9hZGluZ1xuIFx0XHR2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdoZWFkJylbMF07XG4gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzY3JpcHQnKTtcbiBcdFx0c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0Jztc
biBcdFx0c2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnO1xuIFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVl
O1xuIFx0XHRzY3JpcHQudGltZW91dCA9IDEyMDAwMDtcblxuIFx0XHRpZiAoX193ZWJwYWNrX3Jl
cXVpcmVfXy5uYykge1xuIFx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBfX3dl
YnBhY2tfcmVxdWlyZV9fLm5jKTtcbiBcdFx0fVxuIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNr
X3JlcXVpcmVfXy5wICsgXCJzdGF0aWMvanMvXCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIwXCI6
XCJlNmMwMTBkNTdkNTM1MzdmNGFkMlwiLFwiMVwiOlwiZTcwMDgwMDFhOGJlZDAwOWJiZjFcIn1b
Y2h1bmtJZF0gKyBcIi5qc1wiO1xuIFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVvdXQob25TY3Jp
cHRDb21wbGV0ZSwgMTIwMDAwKTtcbiBcdFx0c2NyaXB0Lm9uZXJyb3IgPSBzY3JpcHQub25sb2Fk
ID0gb25TY3JpcHRDb21wbGV0ZTtcbiBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtc
biBcdFx0XHQvLyBhdm9pZCBtZW0gbGVha3MgaW4gSUUuXG4gXHRcdFx0c2NyaXB0Lm9uZXJyb3Ig
PSBzY3JpcHQub25sb2FkID0gbnVsbDtcbiBcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4g
XHRcdFx0dmFyIGNodW5rID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0XHRcdGlmKGNo
dW5rICE9PSAwKSB7XG4gXHRcdFx0XHRpZihjaHVuaykge1xuIFx0XHRcdFx0XHRjaHVua1sxXShu
ZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4nKSk7XG4gXHRc
dFx0XHR9XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4g
XHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiBcdFx0
cmV0dXJuIHByb21pc2U7XG4gXHR9O1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0
IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxl
cztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJl
X18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBj
YWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2Vi
cGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxu
IFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dl
YnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBc
dFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFi
bGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0
dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQg
ZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRf
X3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRl
ciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVm
YXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBn
ZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVx
dWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9
O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2Vi
cGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtc
blxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18u
cCA9IFwiLi9cIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdc
biBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJv
cihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2Vi
cGFjay9ib290c3RyYXAgZmU2MWIyOWQ5MTY3YTY4ZWFhODIiXSwic291cmNlUm9vdCI6IiJ9Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci4yZTRlOWU1Mjg2NjRmYTc5NmQzYS5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuMmU0ZTllNTI4NjY0ZmE3OTZk
M2EuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZDEzNjdkNWMyNDZkMjEyMWNi
NjA4YTBlNjRjNzkxOGM4ZWEyOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci4y
ZTRlOWU1Mjg2NjRmYTc5NmQzYS5qcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotd2Vi
cGFja0pzb25wKFsxXSxbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5l
UHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZnVuY3Rpb24odCl7LyohCi0gKiBW
dWUuanMgdjIuNC4yCi0gKiAoYykgMjAxNC0yMDE3IEV2YW4gWW91Ci0gKiBSZWxlYXNlZCB1bmRl
ciB0aGUgTUlUIExpY2Vuc2UuCi0gKi8KLWZ1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PXR8
fG51bGw9PT10fWZ1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQmJm51bGwhPT10fWZ1bmN0
aW9uIGkodCl7cmV0dXJuITA9PT10fWZ1bmN0aW9uIG8odCl7cmV0dXJuITE9PT10fWZ1bmN0aW9u
IGEodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHR8fCJib29s
ZWFuIj09dHlwZW9mIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10
eXBlb2YgdH1mdW5jdGlvbiBjKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09UmkuY2FsbCh0
KX1mdW5jdGlvbiB1KHQpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09UmkuY2FsbCh0KX1mdW5j
dGlvbiBsKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIGU+PTAmJk1hdGguZmxvb3IoZSk9
PT1lJiZpc0Zpbml0ZSh0KX1mdW5jdGlvbiBmKHQpe3JldHVybiBudWxsPT10PyIiOiJvYmplY3Qi
PT10eXBlb2YgdD9KU09OLnN0cmluZ2lmeSh0LG51bGwsMik6U3RyaW5nKHQpfWZ1bmN0aW9uIHAo
dCl7dmFyIGU9cGFyc2VGbG9hdCh0KTtyZXR1cm4gaXNOYU4oZSk/dDplfWZ1bmN0aW9uIGQodCxl
KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXQuc3BsaXQoIiwiKSxpPTA7aTxyLmxl
bmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gZT9mdW5jdGlvbih0KXtyZXR1cm4gblt0LnRvTG93
ZXJDYXNlKCldfTpmdW5jdGlvbih0KXtyZXR1cm4gblt0XX19ZnVuY3Rpb24gdih0LGUpe2lmKHQu
bGVuZ3RoKXt2YXIgbj10LmluZGV4T2YoZSk7aWYobj4tMSlyZXR1cm4gdC5zcGxpY2UobiwxKX19
ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBCaS5jYWxsKHQsZSl9ZnVuY3Rpb24gbSh0KXt2YXIgZT1P
YmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZVtuXXx8KGVbbl09
dChuKSl9fWZ1bmN0aW9uIHkodCxlKXtmdW5jdGlvbiBuKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5n
dGg7cmV0dXJuIHI/cj4xP3QuYXBwbHkoZSxhcmd1bWVudHMpOnQuY2FsbChlLG4pOnQuY2FsbChl
KX1yZXR1cm4gbi5fbGVuZ3RoPXQubGVuZ3RoLG59ZnVuY3Rpb24gZyh0LGUpe2U9ZXx8MDtmb3Io
dmFyIG49dC5sZW5ndGgtZSxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09dFtuK2VdO3JldHVybiBy
fWZ1bmN0aW9uIF8odCxlKXtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rp
b24gYih0KXtmb3IodmFyIGU9e30sbj0wO248dC5sZW5ndGg7bisrKXRbbl0mJl8oZSx0W25dKTty
ZXR1cm4gZX1mdW5jdGlvbiB3KHQsZSxuKXt9ZnVuY3Rpb24gJCh0LGUpe2lmKHQ9PT1lKXJldHVy
biEwO3ZhciBuPXModCkscj1zKGUpO2lmKCFufHwhcilyZXR1cm4hbiYmIXImJlN0cmluZyh0KT09
PVN0cmluZyhlKTt0cnl7dmFyIGk9QXJyYXkuaXNBcnJheSh0KSxvPUFycmF5LmlzQXJyYXkoZSk7
aWYoaSYmbylyZXR1cm4gdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeShmdW5jdGlvbih0LG4p
e3JldHVybiAkKHQsZVtuXSl9KTtpZihpfHxvKXJldHVybiExO3ZhciBhPU9iamVjdC5rZXlzKHQp
LGM9T2JqZWN0LmtleXMoZSk7cmV0dXJuIGEubGVuZ3RoPT09Yy5sZW5ndGgmJmEuZXZlcnkoZnVu
Y3Rpb24obil7cmV0dXJuICQodFtuXSxlW25dKX0pfWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlv
biBDKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoJCh0W25dLGUpKXJldHVybiBu
O3JldHVybi0xfWZ1bmN0aW9uIHgodCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7ZXx8KGU9
ITAsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBBKHQpe3ZhciBlPSh0KyIiKS5j
aGFyQ29kZUF0KDApO3JldHVybiAzNj09PWV8fDk1PT09ZX1mdW5jdGlvbiBrKHQsZSxuLHIpe09i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gTyh0KXtpZighUWkudGVzdCh0KSl7dmFyIGU9
dC5zcGxpdCgiLiIpO3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24r
Kyl7aWYoIXQpcmV0dXJuO3Q9dFtlW25dXX1yZXR1cm4gdH19fWZ1bmN0aW9uIFModCxlLG4pe2lm
KFhpLmVycm9ySGFuZGxlcilYaS5lcnJvckhhbmRsZXIuY2FsbChudWxsLHQsZSxuKTtlbHNle2lm
KCFub3x8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlKXRocm93IHQ7Y29uc29sZS5lcnJvcih0
KX19ZnVuY3Rpb24gVCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmL25hdGl2ZSBjb2Rl
Ly50ZXN0KHQudG9TdHJpbmcoKSl9ZnVuY3Rpb24gRSh0KXt3by50YXJnZXQmJiRvLnB1c2god28u
dGFyZ2V0KSx3by50YXJnZXQ9dH1mdW5jdGlvbiBqKCl7d28udGFyZ2V0PSRvLnBvcCgpfWZ1bmN0
aW9uIE4odCxlLG4pe3QuX19wcm90b19fPWV9ZnVuY3Rpb24gTCh0LGUsbil7Zm9yKHZhciByPTAs
aT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2sodCxvLGVbb10pfX1mdW5jdGlvbiBNKHQs
ZSl7aWYocyh0KSl7dmFyIG47cmV0dXJuIGgodCwiX19vYl9fIikmJnQuX19vYl9fIGluc3RhbmNl
b2YgT28/bj10Ll9fb2JfXzprby5zaG91bGRDb252ZXJ0JiYhbW8oKSYmKEFycmF5LmlzQXJyYXko
dCl8fGModCkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiYhdC5faXNWdWUmJihuPW5ldyBPbyh0
KSksZSYmbiYmbi52bUNvdW50Kyssbn19ZnVuY3Rpb24gSSh0LGUsbixyLGkpe3ZhciBvPW5ldyB3
byxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKTtpZighYXx8ITEhPT1hLmNv
bmZpZ3VyYWJsZSl7dmFyIHM9YSYmYS5nZXQsYz1hJiZhLnNldCx1PSFpJiZNKG4pO09iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5j
dGlvbigpe3ZhciBlPXM/cy5jYWxsKHQpOm47cmV0dXJuIHdvLnRhcmdldCYmKG8uZGVwZW5kKCks
dSYmdS5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShlKSYmRChlKSksZX0sc2V0OmZ1bmN0aW9u
KGUpe3ZhciByPXM/cy5jYWxsKHQpOm47ZT09PXJ8fGUhPT1lJiZyIT09cnx8KGM/Yy5jYWxsKHQs
ZSk6bj1lLHU9IWkmJk0oZSksby5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uIFAodCxlLG4pe2lmKEFy
cmF5LmlzQXJyYXkodCkmJmwoZSkpcmV0dXJuIHQubGVuZ3RoPU1hdGgubWF4KHQubGVuZ3RoLGUp
LHQuc3BsaWNlKGUsMSxuKSxuO2lmKGgodCxlKSlyZXR1cm4gdFtlXT1uLG47dmFyIHI9dC5fX29i
X187cmV0dXJuIHQuX2lzVnVlfHxyJiZyLnZtQ291bnQ/bjpyPyhJKHIudmFsdWUsZSxuKSxyLmRl
cC5ub3RpZnkoKSxuKToodFtlXT1uLG4pfWZ1bmN0aW9uIFIodCxlKXtpZihBcnJheS5pc0FycmF5
KHQpJiZsKGUpKXJldHVybiB2b2lkIHQuc3BsaWNlKGUsMSk7dmFyIG49dC5fX29iX187dC5faXNW
dWV8fG4mJm4udm1Db3VudHx8aCh0LGUpJiYoZGVsZXRlIHRbZV0sbiYmbi5kZXAubm90aWZ5KCkp
fWZ1bmN0aW9uIEQodCl7Zm9yKHZhciBlPXZvaWQgMCxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWU9
dFtuXSxlJiZlLl9fb2JfXyYmZS5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkoZSkm
JkQoZSl9ZnVuY3Rpb24gRih0LGUpe2lmKCFlKXJldHVybiB0O2Zvcih2YXIgbixyLGksbz1PYmpl
Y3Qua2V5cyhlKSxhPTA7YTxvLmxlbmd0aDthKyspbj1vW2FdLHI9dFtuXSxpPWVbbl0saCh0LG4p
P2MocikmJmMoaSkmJkYocixpKTpQKHQsbixpKTtyZXR1cm4gdH1mdW5jdGlvbiBCKHQsZSxuKXty
ZXR1cm4gbj90fHxlP2Z1bmN0aW9uKCl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5jYWxs
KG4pOmUsaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwobik6dm9pZCAwO3JldHVybiByP0Yo
cixpKTppfTp2b2lkIDA6ZT90P2Z1bmN0aW9uKCl7cmV0dXJuIEYoImZ1bmN0aW9uIj09dHlwZW9m
IGU/ZS5jYWxsKHRoaXMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIHQ/dC5jYWxsKHRoaXMpOnQpfTpl
OnR9ZnVuY3Rpb24gVSh0LGUpe3JldHVybiBlP3Q/dC5jb25jYXQoZSk6QXJyYXkuaXNBcnJheShl
KT9lOltlXTp0fWZ1bmN0aW9uIEgodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHR8fG51bGwpO3Jl
dHVybiBlP18obixlKTpufWZ1bmN0aW9uIFYodCl7dmFyIGU9dC5wcm9wcztpZihlKXt2YXIgbixy
LGksbz17fTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihuPWUubGVuZ3RoO24tLTspInN0cmluZyI9
PXR5cGVvZihyPWVbbl0pJiYoaT1IaShyKSxvW2ldPXt0eXBlOm51bGx9KTtlbHNlIGlmKGMoZSkp
Zm9yKHZhciBhIGluIGUpcj1lW2FdLGk9SGkoYSksb1tpXT1jKHIpP3I6e3R5cGU6cn07dC5wcm9w
cz1vfX1mdW5jdGlvbiB6KHQpe3ZhciBlPXQuaW5qZWN0O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9y
KHZhciBuPXQuaW5qZWN0PXt9LHI9MDtyPGUubGVuZ3RoO3IrKyluW2Vbcl1dPWVbcl19ZnVuY3Rp
b24gSih0KXt2YXIgZT10LmRpcmVjdGl2ZXM7aWYoZSlmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtu
XTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKGVbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX1mdW5jdGlv
biBLKHQsZSxuKXtmdW5jdGlvbiByKHIpe3ZhciBpPVNvW3JdfHxUbztjW3JdPWkodFtyXSxlW3Jd
LG4scil9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUub3B0aW9ucyksVihlKSx6KGUpLEooZSk7
dmFyIGk9ZS5leHRlbmRzO2lmKGkmJih0PUsodCxpLG4pKSxlLm1peGlucylmb3IodmFyIG89MCxh
PWUubWl4aW5zLmxlbmd0aDtvPGE7bysrKXQ9Syh0LGUubWl4aW5zW29dLG4pO3ZhciBzLGM9e307
Zm9yKHMgaW4gdClyKHMpO2ZvcihzIGluIGUpaCh0LHMpfHxyKHMpO3JldHVybiBjfWZ1bmN0aW9u
IHEodCxlLG4scil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIgaT10W2VdO2lmKGgoaSxuKSly
ZXR1cm4gaVtuXTt2YXIgbz1IaShuKTtpZihoKGksbykpcmV0dXJuIGlbb107dmFyIGE9Vmkobyk7
aWYoaChpLGEpKXJldHVybiBpW2FdO3JldHVybiBpW25dfHxpW29dfHxpW2FdfX1mdW5jdGlvbiBX
KHQsZSxuLHIpe3ZhciBpPWVbdF0sbz0haChuLHQpLGE9blt0XTtpZihYKEJvb2xlYW4saS50eXBl
KSYmKG8mJiFoKGksImRlZmF1bHQiKT9hPSExOlgoU3RyaW5nLGkudHlwZSl8fCIiIT09YSYmYSE9
PUppKHQpfHwoYT0hMCkpLHZvaWQgMD09PWEpe2E9RyhyLGksdCk7dmFyIHM9a28uc2hvdWxkQ29u
dmVydDtrby5zaG91bGRDb252ZXJ0PSEwLE0oYSksa28uc2hvdWxkQ29udmVydD1zfXJldHVybiBh
fWZ1bmN0aW9uIEcodCxlLG4pe2lmKGgoZSwiZGVmYXVsdCIpKXt2YXIgcj1lLmRlZmF1bHQ7cmV0
dXJuIHQmJnQuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT10LiRvcHRpb25zLnByb3BzRGF0
YVtuXSYmdm9pZCAwIT09dC5fcHJvcHNbbl0/dC5fcHJvcHNbbl06ImZ1bmN0aW9uIj09dHlwZW9m
IHImJiJGdW5jdGlvbiIhPT1aKGUudHlwZSk/ci5jYWxsKHQpOnJ9fWZ1bmN0aW9uIFoodCl7dmFy
IGU9dCYmdC50b1N0cmluZygpLm1hdGNoKC9eXHMqZnVuY3Rpb24gKFx3KykvKTtyZXR1cm4gZT9l
WzFdOiIifWZ1bmN0aW9uIFgodCxlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gWihlKT09
PVoodCk7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKFooZVtuXSk9PT1aKHQpKXJl
dHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFkodCl7cmV0dXJuIG5ldyBFbyh2b2lkIDAsdm9pZCAw
LHZvaWQgMCxTdHJpbmcodCkpfWZ1bmN0aW9uIFEodCl7dmFyIGU9bmV3IEVvKHQudGFnLHQuZGF0
YSx0LmNoaWxkcmVuLHQudGV4dCx0LmVsbSx0LmNvbnRleHQsdC5jb21wb25lbnRPcHRpb25zLHQu
YXN5bmNGYWN0b3J5KTtyZXR1cm4gZS5ucz10Lm5zLGUuaXNTdGF0aWM9dC5pc1N0YXRpYyxlLmtl
eT10LmtleSxlLmlzQ29tbWVudD10LmlzQ29tbWVudCxlLmlzQ2xvbmVkPSEwLGV9ZnVuY3Rpb24g
dHQodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09
USh0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBldCh0KXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1l
bnRzLG49ZS5mbnM7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG4uYXBwbHkobnVsbCxhcmd1
bWVudHMpO2Zvcih2YXIgcj1uLnNsaWNlKCksaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV0uYXBwbHko
bnVsbCx0KX1yZXR1cm4gZS5mbnM9dCxlfWZ1bmN0aW9uIG50KHQsZSxyLGksbyl7dmFyIGEscyxj
LHU7Zm9yKGEgaW4gdClzPXRbYV0sYz1lW2FdLHU9TW8oYSksbihzKXx8KG4oYyk/KG4ocy5mbnMp
JiYocz10W2FdPWV0KHMpKSxyKHUubmFtZSxzLHUub25jZSx1LmNhcHR1cmUsdS5wYXNzaXZlKSk6
cyE9PWMmJihjLmZucz1zLHRbYV09YykpO2ZvcihhIGluIGUpbih0W2FdKSYmKHU9TW8oYSksaSh1
Lm5hbWUsZVthXSx1LmNhcHR1cmUpKX1mdW5jdGlvbiBydCh0LGUsbyl7ZnVuY3Rpb24gYSgpe28u
YXBwbHkodGhpcyxhcmd1bWVudHMpLHYocy5mbnMsYSl9dmFyIHMsYz10W2VdO24oYyk/cz1ldChb
YV0pOnIoYy5mbnMpJiZpKGMubWVyZ2VkKT8ocz1jLHMuZm5zLnB1c2goYSkpOnM9ZXQoW2MsYV0p
LHMubWVyZ2VkPSEwLHRbZV09c31mdW5jdGlvbiBpdCh0LGUsaSl7dmFyIG89ZS5vcHRpb25zLnBy
b3BzO2lmKCFuKG8pKXt2YXIgYT17fSxzPXQuYXR0cnMsYz10LnByb3BzO2lmKHIocyl8fHIoYykp
Zm9yKHZhciB1IGluIG8pe3ZhciBsPUppKHUpO290KGEsYyx1LGwsITApfHxvdChhLHMsdSxsLCEx
KX1yZXR1cm4gYX19ZnVuY3Rpb24gb3QodCxlLG4saSxvKXtpZihyKGUpKXtpZihoKGUsbikpcmV0
dXJuIHRbbl09ZVtuXSxvfHxkZWxldGUgZVtuXSwhMDtpZihoKGUsaSkpcmV0dXJuIHRbbl09ZVtp
XSxvfHxkZWxldGUgZVtpXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhdCh0KXtmb3IodmFyIGU9MDtl
PHQubGVuZ3RoO2UrKylpZihBcnJheS5pc0FycmF5KHRbZV0pKXJldHVybiBBcnJheS5wcm90b3R5
cGUuY29uY2F0LmFwcGx5KFtdLHQpO3JldHVybiB0fWZ1bmN0aW9uIHN0KHQpe3JldHVybiBhKHQp
P1tZKHQpXTpBcnJheS5pc0FycmF5KHQpP3V0KHQpOnZvaWQgMH1mdW5jdGlvbiBjdCh0KXtyZXR1
cm4gcih0KSYmcih0LnRleHQpJiZvKHQuaXNDb21tZW50KX1mdW5jdGlvbiB1dCh0LGUpe3ZhciBv
LHMsYyx1PVtdO2ZvcihvPTA7bzx0Lmxlbmd0aDtvKyspcz10W29dLG4ocyl8fCJib29sZWFuIj09
dHlwZW9mIHN8fChjPXVbdS5sZW5ndGgtMV0sQXJyYXkuaXNBcnJheShzKT91LnB1c2guYXBwbHko
dSx1dChzLChlfHwiIikrIl8iK28pKTphKHMpP2N0KGMpP2MudGV4dCs9U3RyaW5nKHMpOiIiIT09
cyYmdS5wdXNoKFkocykpOmN0KHMpJiZjdChjKT91W3UubGVuZ3RoLTFdPVkoYy50ZXh0K3MudGV4
dCk6KGkodC5faXNWTGlzdCkmJnIocy50YWcpJiZuKHMua2V5KSYmcihlKSYmKHMua2V5PSJfX3Zs
aXN0IitlKyJfIitvKyJfXyIpLHUucHVzaChzKSkpO3JldHVybiB1fWZ1bmN0aW9uIGx0KHQsZSl7
cmV0dXJuIHQuX19lc01vZHVsZSYmdC5kZWZhdWx0JiYodD10LmRlZmF1bHQpLHModCk/ZS5leHRl
bmQodCk6dH1mdW5jdGlvbiBmdCh0LGUsbixyLGkpe3ZhciBvPUxvKCk7cmV0dXJuIG8uYXN5bmNG
YWN0b3J5PXQsby5hc3luY01ldGE9e2RhdGE6ZSxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0s
b31mdW5jdGlvbiBwdCh0LGUsbyl7aWYoaSh0LmVycm9yKSYmcih0LmVycm9yQ29tcCkpcmV0dXJu
IHQuZXJyb3JDb21wO2lmKHIodC5yZXNvbHZlZCkpcmV0dXJuIHQucmVzb2x2ZWQ7aWYoaSh0Lmxv
YWRpbmcpJiZyKHQubG9hZGluZ0NvbXApKXJldHVybiB0LmxvYWRpbmdDb21wO2lmKCFyKHQuY29u
dGV4dHMpKXt2YXIgYT10LmNvbnRleHRzPVtvXSxjPSEwLHU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9
MCxlPWEubGVuZ3RoO3Q8ZTt0KyspYVt0XS4kZm9yY2VVcGRhdGUoKX0sbD14KGZ1bmN0aW9uKG4p
e3QucmVzb2x2ZWQ9bHQobixlKSxjfHx1KCl9KSxmPXgoZnVuY3Rpb24oZSl7cih0LmVycm9yQ29t
cCkmJih0LmVycm9yPSEwLHUoKSl9KSxwPXQobCxmKTtyZXR1cm4gcyhwKSYmKCJmdW5jdGlvbiI9
PXR5cGVvZiBwLnRoZW4/bih0LnJlc29sdmVkKSYmcC50aGVuKGwsZik6cihwLmNvbXBvbmVudCkm
JiJmdW5jdGlvbiI9PXR5cGVvZiBwLmNvbXBvbmVudC50aGVuJiYocC5jb21wb25lbnQudGhlbihs
LGYpLHIocC5lcnJvcikmJih0LmVycm9yQ29tcD1sdChwLmVycm9yLGUpKSxyKHAubG9hZGluZykm
Jih0LmxvYWRpbmdDb21wPWx0KHAubG9hZGluZyxlKSwwPT09cC5kZWxheT90LmxvYWRpbmc9ITA6
c2V0VGltZW91dChmdW5jdGlvbigpe24odC5yZXNvbHZlZCkmJm4odC5lcnJvcikmJih0LmxvYWRp
bmc9ITAsdSgpKX0scC5kZWxheXx8MjAwKSkscihwLnRpbWVvdXQpJiZzZXRUaW1lb3V0KGZ1bmN0
aW9uKCl7bih0LnJlc29sdmVkKSYmZihudWxsKX0scC50aW1lb3V0KSkpLGM9ITEsdC5sb2FkaW5n
P3QubG9hZGluZ0NvbXA6dC5yZXNvbHZlZH10LmNvbnRleHRzLnB1c2gobyl9ZnVuY3Rpb24gZHQo
dCl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49
dFtlXTtpZihyKG4pJiZyKG4uY29tcG9uZW50T3B0aW9ucykpcmV0dXJuIG59fWZ1bmN0aW9uIHZ0
KHQpe3QuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHQuX2hhc0hvb2tFdmVudD0hMTt2YXIg
ZT10LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7ZSYmeXQodCxlKX1mdW5jdGlvbiBodCh0LGUs
bil7bj9Oby4kb25jZSh0LGUpOk5vLiRvbih0LGUpfWZ1bmN0aW9uIG10KHQsZSl7Tm8uJG9mZih0
LGUpfWZ1bmN0aW9uIHl0KHQsZSxuKXtObz10LG50KGUsbnx8e30saHQsbXQsdCl9ZnVuY3Rpb24g
Z3QodCxlKXt2YXIgbj17fTtpZighdClyZXR1cm4gbjtmb3IodmFyIHI9W10saT0wLG89dC5sZW5n
dGg7aTxvO2krKyl7dmFyIGE9dFtpXTtpZihhLmNvbnRleHQhPT1lJiZhLmZ1bmN0aW9uYWxDb250
ZXh0IT09ZXx8IWEuZGF0YXx8bnVsbD09YS5kYXRhLnNsb3Qpci5wdXNoKGEpO2Vsc2V7dmFyIHM9
YS5kYXRhLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PWEudGFnP2MucHVzaC5h
cHBseShjLGEuY2hpbGRyZW4pOmMucHVzaChhKX19cmV0dXJuIHIuZXZlcnkoX3QpfHwobi5kZWZh
dWx0PXIpLG59ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHQuaXNDb21tZW50fHwiICI9PT10LnRleHR9
ZnVuY3Rpb24gYnQodCxlKXtlPWV8fHt9O2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKUFycmF5
LmlzQXJyYXkodFtuXSk/YnQodFtuXSxlKTplW3Rbbl0ua2V5XT10W25dLmZuO3JldHVybiBlfWZ1
bmN0aW9uIHd0KHQpe3ZhciBlPXQuJG9wdGlvbnMsbj1lLnBhcmVudDtpZihuJiYhZS5hYnN0cmFj
dCl7Zm9yKDtuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNo
aWxkcmVuLnB1c2godCl9dC4kcGFyZW50PW4sdC4kcm9vdD1uP24uJHJvb3Q6dCx0LiRjaGlsZHJl
bj1bXSx0LiRyZWZzPXt9LHQuX3dhdGNoZXI9bnVsbCx0Ll9pbmFjdGl2ZT1udWxsLHQuX2RpcmVj
dEluYWN0aXZlPSExLHQuX2lzTW91bnRlZD0hMSx0Ll9pc0Rlc3Ryb3llZD0hMSx0Ll9pc0JlaW5n
RGVzdHJveWVkPSExfWZ1bmN0aW9uICR0KHQsZSxuKXt0LiRlbD1lLHQuJG9wdGlvbnMucmVuZGVy
fHwodC4kb3B0aW9ucy5yZW5kZXI9TG8pLE90KHQsImJlZm9yZU1vdW50Iik7dmFyIHI7cmV0dXJu
IHI9ZnVuY3Rpb24oKXt0Ll91cGRhdGUodC5fcmVuZGVyKCksbil9LHQuX3dhdGNoZXI9bmV3IFZv
KHQscix3KSxuPSExLG51bGw9PXQuJHZub2RlJiYodC5faXNNb3VudGVkPSEwLE90KHQsIm1vdW50
ZWQiKSksdH1mdW5jdGlvbiBDdCh0LGUsbixyLGkpe3ZhciBvPSEhKGl8fHQuJG9wdGlvbnMuX3Jl
bmRlckNoaWxkcmVufHxyLmRhdGEuc2NvcGVkU2xvdHN8fHQuJHNjb3BlZFNsb3RzIT09WWkpO2lm
KHQuJG9wdGlvbnMuX3BhcmVudFZub2RlPXIsdC4kdm5vZGU9cix0Ll92bm9kZSYmKHQuX3Zub2Rl
LnBhcmVudD1yKSx0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbj1pLHQuJGF0dHJzPXIuZGF0YSYm
ci5kYXRhLmF0dHJzLHQuJGxpc3RlbmVycz1uLGUmJnQuJG9wdGlvbnMucHJvcHMpe2tvLnNob3Vs
ZENvbnZlcnQ9ITE7Zm9yKHZhciBhPXQuX3Byb3BzLHM9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtd
LGM9MDtjPHMubGVuZ3RoO2MrKyl7dmFyIHU9c1tjXTthW3VdPVcodSx0LiRvcHRpb25zLnByb3Bz
LGUsdCl9a28uc2hvdWxkQ29udmVydD0hMCx0LiRvcHRpb25zLnByb3BzRGF0YT1lfWlmKG4pe3Zh
ciBsPXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5l
cnM9bix5dCh0LG4sbCl9byYmKHQuJHNsb3RzPWd0KGksci5jb250ZXh0KSx0LiRmb3JjZVVwZGF0
ZSgpKX1mdW5jdGlvbiB4dCh0KXtmb3IoO3QmJih0PXQuJHBhcmVudCk7KWlmKHQuX2luYWN0aXZl
KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEF0KHQsZSl7aWYoZSl7aWYodC5fZGlyZWN0SW5h
Y3RpdmU9ITEseHQodCkpcmV0dXJufWVsc2UgaWYodC5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lm
KHQuX2luYWN0aXZlfHxudWxsPT09dC5faW5hY3RpdmUpe3QuX2luYWN0aXZlPSExO2Zvcih2YXIg
bj0wO248dC4kY2hpbGRyZW4ubGVuZ3RoO24rKylBdCh0LiRjaGlsZHJlbltuXSk7T3QodCwiYWN0
aXZhdGVkIil9fWZ1bmN0aW9uIGt0KHQsZSl7aWYoIShlJiYodC5fZGlyZWN0SW5hY3RpdmU9ITAs
eHQodCkpfHx0Ll9pbmFjdGl2ZSkpe3QuX2luYWN0aXZlPSEwO2Zvcih2YXIgbj0wO248dC4kY2hp
bGRyZW4ubGVuZ3RoO24rKylrdCh0LiRjaGlsZHJlbltuXSk7T3QodCwiZGVhY3RpdmF0ZWQiKX19
ZnVuY3Rpb24gT3QodCxlKXt2YXIgbj10LiRvcHRpb25zW2VdO2lmKG4pZm9yKHZhciByPTAsaT1u
Lmxlbmd0aDtyPGk7cisrKXRyeXtuW3JdLmNhbGwodCl9Y2F0Y2gobil7UyhuLHQsZSsiIGhvb2si
KX10Ll9oYXNIb29rRXZlbnQmJnQuJGVtaXQoImhvb2s6IitlKX1mdW5jdGlvbiBTdCgpe1VvPVBv
Lmxlbmd0aD1Sby5sZW5ndGg9MCxEbz17fSxGbz1Cbz0hMX1mdW5jdGlvbiBUdCgpe0JvPSEwO3Zh
ciB0LGU7Zm9yKFBvLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pZC1lLmlkfSksVW89MDtV
bzxQby5sZW5ndGg7VW8rKyl0PVBvW1VvXSxlPXQuaWQsRG9bZV09bnVsbCx0LnJ1bigpO3ZhciBu
PVJvLnNsaWNlKCkscj1Qby5zbGljZSgpO1N0KCksTnQobiksRXQocikseW8mJlhpLmRldnRvb2xz
JiZ5by5lbWl0KCJmbHVzaCIpfWZ1bmN0aW9uIEV0KHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS07
KXt2YXIgbj10W2VdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiZPdChyLCJ1
cGRhdGVkIil9fWZ1bmN0aW9uIGp0KHQpe3QuX2luYWN0aXZlPSExLFJvLnB1c2godCl9ZnVuY3Rp
b24gTnQodCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5faW5hY3RpdmU9ITAsQXQo
dFtlXSwhMCl9ZnVuY3Rpb24gTHQodCl7dmFyIGU9dC5pZDtpZihudWxsPT1Eb1tlXSl7aWYoRG9b
ZV09ITAsQm8pe2Zvcih2YXIgbj1Qby5sZW5ndGgtMTtuPlVvJiZQb1tuXS5pZD50LmlkOyluLS07
UG8uc3BsaWNlKG4rMSwwLHQpfWVsc2UgUG8ucHVzaCh0KTtGb3x8KEZvPSEwLF9vKFR0KSl9fWZ1
bmN0aW9uIE10KHQpe3pvLmNsZWFyKCksSXQodCx6byl9ZnVuY3Rpb24gSXQodCxlKXt2YXIgbixy
LGk9QXJyYXkuaXNBcnJheSh0KTtpZigoaXx8cyh0KSkmJk9iamVjdC5pc0V4dGVuc2libGUodCkp
e2lmKHQuX19vYl9fKXt2YXIgbz10Ll9fb2JfXy5kZXAuaWQ7aWYoZS5oYXMobykpcmV0dXJuO2Uu
YWRkKG8pfWlmKGkpZm9yKG49dC5sZW5ndGg7bi0tOylJdCh0W25dLGUpO2Vsc2UgZm9yKHI9T2Jq
ZWN0LmtleXModCksbj1yLmxlbmd0aDtuLS07KUl0KHRbcltuXV0sZSl9fWZ1bmN0aW9uIFB0KHQs
ZSxuKXtKby5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tlXVtuXX0sSm8uc2V0PWZ1bmN0aW9u
KHQpe3RoaXNbZV1bbl09dH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixKbyl9ZnVuY3Rpb24g
UnQodCl7dC5fd2F0Y2hlcnM9W107dmFyIGU9dC4kb3B0aW9ucztlLnByb3BzJiZEdCh0LGUucHJv
cHMpLGUubWV0aG9kcyYmenQodCxlLm1ldGhvZHMpLGUuZGF0YT9GdCh0KTpNKHQuX2RhdGE9e30s
ITApLGUuY29tcHV0ZWQmJlV0KHQsZS5jb21wdXRlZCksZS53YXRjaCYmZS53YXRjaCE9PWxvJiZK
dCh0LGUud2F0Y2gpfWZ1bmN0aW9uIER0KHQsZSl7dmFyIG49dC4kb3B0aW9ucy5wcm9wc0RhdGF8
fHt9LHI9dC5fcHJvcHM9e30saT10LiRvcHRpb25zLl9wcm9wS2V5cz1bXSxvPSF0LiRwYXJlbnQ7
a28uc2hvdWxkQ29udmVydD1vO2Zvcih2YXIgYSBpbiBlKSFmdW5jdGlvbihvKXtpLnB1c2gobyk7
dmFyIGE9VyhvLGUsbix0KTtJKHIsbyxhKSxvIGluIHR8fFB0KHQsIl9wcm9wcyIsbyl9KGEpO2tv
LnNob3VsZENvbnZlcnQ9ITB9ZnVuY3Rpb24gRnQodCl7dmFyIGU9dC4kb3B0aW9ucy5kYXRhO2U9
dC5fZGF0YT0iZnVuY3Rpb24iPT10eXBlb2YgZT9CdChlLHQpOmV8fHt9LGMoZSl8fChlPXt9KTtm
b3IodmFyIG49T2JqZWN0LmtleXMoZSkscj10LiRvcHRpb25zLnByb3BzLGk9KHQuJG9wdGlvbnMu
bWV0aG9kcyxuLmxlbmd0aCk7aS0tOyl7dmFyIG89bltpXTtyJiZoKHIsbyl8fEEobyl8fFB0KHQs
Il9kYXRhIixvKX1NKGUsITApfWZ1bmN0aW9uIEJ0KHQsZSl7dHJ5e3JldHVybiB0LmNhbGwoZSl9
Y2F0Y2godCl7cmV0dXJuIFModCxlLCJkYXRhKCkiKSx7fX19ZnVuY3Rpb24gVXQodCxlKXt2YXIg
bj10Ll9jb21wdXRlZFdhdGNoZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciByIGluIGUp
e3ZhciBpPWVbcl0sbz0iZnVuY3Rpb24iPT10eXBlb2YgaT9pOmkuZ2V0O25bcl09bmV3IFZvKHQs
b3x8dyx3LEtvKSxyIGluIHR8fEh0KHQscixpKX19ZnVuY3Rpb24gSHQodCxlLG4peyJmdW5jdGlv
biI9PXR5cGVvZiBuPyhKby5nZXQ9VnQoZSksSm8uc2V0PXcpOihKby5nZXQ9bi5nZXQ/ITEhPT1u
LmNhY2hlP1Z0KGUpOm4uZ2V0OncsSm8uc2V0PW4uc2V0P24uc2V0OncpLE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LGUsSm8pfWZ1bmN0aW9uIFZ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRo
aXMuX2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbdF07aWYoZSlyZXR1
cm4gZS5kaXJ0eSYmZS5ldmFsdWF0ZSgpLHdvLnRhcmdldCYmZS5kZXBlbmQoKSxlLnZhbHVlfX1m
dW5jdGlvbiB6dCh0LGUpe3QuJG9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIGUpdFtuXT1udWxs
PT1lW25dP3c6eShlW25dLHQpfWZ1bmN0aW9uIEp0KHQsZSl7Zm9yKHZhciBuIGluIGUpe3ZhciBy
PWVbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylLdCh0
LG4scltpXSk7ZWxzZSBLdCh0LG4scil9fWZ1bmN0aW9uIEt0KHQsZSxuLHIpe3JldHVybiBjKG4p
JiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9mIG4mJihuPXRbbl0pLHQuJHdhdGNo
KGUsbixyKX1mdW5jdGlvbiBxdCh0KXt2YXIgZT10LiRvcHRpb25zLnByb3ZpZGU7ZSYmKHQuX3By
b3ZpZGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbCh0KTplKX1mdW5jdGlvbiBXdCh0KXt2
YXIgZT1HdCh0LiRvcHRpb25zLmluamVjdCx0KTtlJiYoa28uc2hvdWxkQ29udmVydD0hMSxPYmpl
Y3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe0kodCxuLGVbbl0pfSksa28uc2hvdWxkQ29u
dmVydD0hMCl9ZnVuY3Rpb24gR3QodCxlKXtpZih0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShu
dWxsKSxyPWdvP1JlZmxlY3Qub3duS2V5cyh0KTpPYmplY3Qua2V5cyh0KSxpPTA7aTxyLmxlbmd0
aDtpKyspZm9yKHZhciBvPXJbaV0sYT10W29dLHM9ZTtzOyl7aWYocy5fcHJvdmlkZWQmJmEgaW4g
cy5fcHJvdmlkZWQpe25bb109cy5fcHJvdmlkZWRbYV07YnJlYWt9cz1zLiRwYXJlbnR9cmV0dXJu
IG59fWZ1bmN0aW9uIFp0KHQsZSxuLGksbyl7dmFyIGE9e30scz10Lm9wdGlvbnMucHJvcHM7aWYo
cihzKSlmb3IodmFyIGMgaW4gcylhW2NdPVcoYyxzLGV8fHt9KTtlbHNlIHIobi5hdHRycykmJlh0
KGEsbi5hdHRycykscihuLnByb3BzKSYmWHQoYSxuLnByb3BzKTt2YXIgdT1PYmplY3QuY3JlYXRl
KGkpLGw9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHJlKHUsdCxlLG4sciwhMCl9LGY9dC5vcHRp
b25zLnJlbmRlci5jYWxsKG51bGwsbCx7ZGF0YTpuLHByb3BzOmEsY2hpbGRyZW46byxwYXJlbnQ6
aSxsaXN0ZW5lcnM6bi5vbnx8e30saW5qZWN0aW9uczpHdCh0Lm9wdGlvbnMuaW5qZWN0LGkpLHNs
b3RzOmZ1bmN0aW9uKCl7cmV0dXJuIGd0KG8saSl9fSk7cmV0dXJuIGYgaW5zdGFuY2VvZiBFbyYm
KGYuZnVuY3Rpb25hbENvbnRleHQ9aSxmLmZ1bmN0aW9uYWxPcHRpb25zPXQub3B0aW9ucyxuLnNs
b3QmJigoZi5kYXRhfHwoZi5kYXRhPXt9KSkuc2xvdD1uLnNsb3QpKSxmfWZ1bmN0aW9uIFh0KHQs
ZSl7Zm9yKHZhciBuIGluIGUpdFtIaShuKV09ZVtuXX1mdW5jdGlvbiBZdCh0LGUsbyxhLGMpe2lm
KCFuKHQpKXt2YXIgdT1vLiRvcHRpb25zLl9iYXNlO2lmKHModCkmJih0PXUuZXh0ZW5kKHQpKSwi
ZnVuY3Rpb24iPT10eXBlb2YgdCl7dmFyIGw7aWYobih0LmNpZCkmJihsPXQsdm9pZCAwPT09KHQ9
cHQobCx1LG8pKSkpcmV0dXJuIGZ0KGwsZSxvLGEsYyk7ZT1lfHx7fSxnZSh0KSxyKGUubW9kZWwp
JiZuZSh0Lm9wdGlvbnMsZSk7dmFyIGY9aXQoZSx0LGMpO2lmKGkodC5vcHRpb25zLmZ1bmN0aW9u
YWwpKXJldHVybiBadCh0LGYsZSxvLGEpO3ZhciBwPWUub247aWYoZS5vbj1lLm5hdGl2ZU9uLGko
dC5vcHRpb25zLmFic3RyYWN0KSl7dmFyIGQ9ZS5zbG90O2U9e30sZCYmKGUuc2xvdD1kKX10ZShl
KTt2YXIgdj10Lm9wdGlvbnMubmFtZXx8YztyZXR1cm4gbmV3IEVvKCJ2dWUtY29tcG9uZW50LSIr
dC5jaWQrKHY/Ii0iK3Y6IiIpLGUsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbyx7Q3Rvcjp0LHByb3Bz
RGF0YTpmLGxpc3RlbmVyczpwLHRhZzpjLGNoaWxkcmVuOmF9LGwpfX19ZnVuY3Rpb24gUXQodCxl
LG4saSl7dmFyIG89dC5jb21wb25lbnRPcHRpb25zLGE9e19pc0NvbXBvbmVudDohMCxwYXJlbnQ6
ZSxwcm9wc0RhdGE6by5wcm9wc0RhdGEsX2NvbXBvbmVudFRhZzpvLnRhZyxfcGFyZW50Vm5vZGU6
dCxfcGFyZW50TGlzdGVuZXJzOm8ubGlzdGVuZXJzLF9yZW5kZXJDaGlsZHJlbjpvLmNoaWxkcmVu
LF9wYXJlbnRFbG06bnx8bnVsbCxfcmVmRWxtOml8fG51bGx9LHM9dC5kYXRhLmlubGluZVRlbXBs
YXRlO3JldHVybiByKHMpJiYoYS5yZW5kZXI9cy5yZW5kZXIsYS5zdGF0aWNSZW5kZXJGbnM9cy5z
dGF0aWNSZW5kZXJGbnMpLG5ldyBvLkN0b3IoYSl9ZnVuY3Rpb24gdGUodCl7dC5ob29rfHwodC5o
b29rPXt9KTtmb3IodmFyIGU9MDtlPFdvLmxlbmd0aDtlKyspe3ZhciBuPVdvW2VdLHI9dC5ob29r
W25dLGk9cW9bbl07dC5ob29rW25dPXI/ZWUoaSxyKTppfX1mdW5jdGlvbiBlZSh0LGUpe3JldHVy
biBmdW5jdGlvbihuLHIsaSxvKXt0KG4scixpLG8pLGUobixyLGksbyl9fWZ1bmN0aW9uIG5lKHQs
ZSl7dmFyIG49dC5tb2RlbCYmdC5tb2RlbC5wcm9wfHwidmFsdWUiLGk9dC5tb2RlbCYmdC5tb2Rl
bC5ldmVudHx8ImlucHV0IjsoZS5wcm9wc3x8KGUucHJvcHM9e30pKVtuXT1lLm1vZGVsLnZhbHVl
O3ZhciBvPWUub258fChlLm9uPXt9KTtyKG9baV0pP29baV09W2UubW9kZWwuY2FsbGJhY2tdLmNv
bmNhdChvW2ldKTpvW2ldPWUubW9kZWwuY2FsbGJhY2t9ZnVuY3Rpb24gcmUodCxlLG4scixvLHMp
e3JldHVybihBcnJheS5pc0FycmF5KG4pfHxhKG4pKSYmKG89cixyPW4sbj12b2lkIDApLGkocykm
JihvPVpvKSxpZSh0LGUsbixyLG8pfWZ1bmN0aW9uIGllKHQsZSxuLGksbyl7aWYocihuKSYmcihu
Ll9fb2JfXykpcmV0dXJuIExvKCk7aWYocihuKSYmcihuLmlzKSYmKGU9bi5pcyksIWUpcmV0dXJu
IExvKCk7QXJyYXkuaXNBcnJheShpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGlbMF0mJihuPW58fHt9
LG4uc2NvcGVkU2xvdHM9e2RlZmF1bHQ6aVswXX0saS5sZW5ndGg9MCksbz09PVpvP2k9c3QoaSk6
bz09PUdvJiYoaT1hdChpKSk7dmFyIGEscztpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBjO3M9
WGkuZ2V0VGFnTmFtZXNwYWNlKGUpLGE9WGkuaXNSZXNlcnZlZFRhZyhlKT9uZXcgRW8oWGkucGFy
c2VQbGF0Zm9ybVRhZ05hbWUoZSksbixpLHZvaWQgMCx2b2lkIDAsdCk6cihjPXEodC4kb3B0aW9u
cywiY29tcG9uZW50cyIsZSkpP1l0KGMsbix0LGksZSk6bmV3IEVvKGUsbixpLHZvaWQgMCx2b2lk
IDAsdCl9ZWxzZSBhPVl0KGUsbix0LGkpO3JldHVybiByKGEpPyhzJiZvZShhLHMpLGEpOkxvKCl9
ZnVuY3Rpb24gb2UodCxlKXtpZih0Lm5zPWUsImZvcmVpZ25PYmplY3QiIT09dC50YWcmJnIodC5j
aGlsZHJlbikpZm9yKHZhciBpPTAsbz10LmNoaWxkcmVuLmxlbmd0aDtpPG87aSsrKXt2YXIgYT10
LmNoaWxkcmVuW2ldO3IoYS50YWcpJiZuKGEubnMpJiZvZShhLGUpfX1mdW5jdGlvbiBhZSh0LGUp
e3ZhciBuLGksbyxhLGM7aWYoQXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyI9PXR5cGVvZiB0KWZv
cihuPW5ldyBBcnJheSh0Lmxlbmd0aCksaT0wLG89dC5sZW5ndGg7aTxvO2krKyluW2ldPWUodFtp
XSxpKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdClmb3Iobj1uZXcgQXJyYXkodCksaT0wO2k8
dDtpKyspbltpXT1lKGkrMSxpKTtlbHNlIGlmKHModCkpZm9yKGE9T2JqZWN0LmtleXModCksbj1u
ZXcgQXJyYXkoYS5sZW5ndGgpLGk9MCxvPWEubGVuZ3RoO2k8bztpKyspYz1hW2ldLG5baV09ZSh0
W2NdLGMsaSk7cmV0dXJuIHIobikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIHNlKHQsZSxu
LHIpe3ZhciBpPXRoaXMuJHNjb3BlZFNsb3RzW3RdO2lmKGkpcmV0dXJuIG49bnx8e30sciYmKG49
XyhfKHt9LHIpLG4pKSxpKG4pfHxlO3ZhciBvPXRoaXMuJHNsb3RzW3RdO3JldHVybiBvfHxlfWZ1
bmN0aW9uIGNlKHQpe3JldHVybiBxKHRoaXMuJG9wdGlvbnMsImZpbHRlcnMiLHQsITApfHxxaX1m
dW5jdGlvbiB1ZSh0LGUsbil7dmFyIHI9WGkua2V5Q29kZXNbZV18fG47cmV0dXJuIEFycmF5Lmlz
QXJyYXkocik/LTE9PT1yLmluZGV4T2YodCk6ciE9PXR9ZnVuY3Rpb24gbGUodCxlLG4scixpKXtp
ZihuKWlmKHMobikpe0FycmF5LmlzQXJyYXkobikmJihuPWIobikpO3ZhciBvO2Zvcih2YXIgYSBp
biBuKSFmdW5jdGlvbihhKXtpZigiY2xhc3MiPT09YXx8InN0eWxlIj09PWF8fEZpKGEpKW89dDtl
bHNle3ZhciBzPXQuYXR0cnMmJnQuYXR0cnMudHlwZTtvPXJ8fFhpLm11c3RVc2VQcm9wKGUscyxh
KT90LmRvbVByb3BzfHwodC5kb21Qcm9wcz17fSk6dC5hdHRyc3x8KHQuYXR0cnM9e30pfWlmKCEo
YSBpbiBvKSYmKG9bYV09blthXSxpKSl7KHQub258fCh0Lm9uPXt9KSlbInVwZGF0ZToiK2FdPWZ1
bmN0aW9uKHQpe25bYV09dH19fShhKX1lbHNlO3JldHVybiB0fWZ1bmN0aW9uIGZlKHQsZSl7dmFy
IG49dGhpcy5fc3RhdGljVHJlZXNbdF07cmV0dXJuIG4mJiFlP0FycmF5LmlzQXJyYXkobik/dHQo
bik6UShuKToobj10aGlzLl9zdGF0aWNUcmVlc1t0XT10aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRl
ckZuc1t0XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KSxkZShuLCJfX3N0YXRpY19fIit0LCExKSxu
KX1mdW5jdGlvbiBwZSh0LGUsbil7cmV0dXJuIGRlKHQsIl9fb25jZV9fIitlKyhuPyJfIituOiIi
KSwhMCksdH1mdW5jdGlvbiBkZSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9
MDtyPHQubGVuZ3RoO3IrKyl0W3JdJiYic3RyaW5nIiE9dHlwZW9mIHRbcl0mJnZlKHRbcl0sZSsi
XyIrcixuKTtlbHNlIHZlKHQsZSxuKX1mdW5jdGlvbiB2ZSh0LGUsbil7dC5pc1N0YXRpYz0hMCx0
LmtleT1lLHQuaXNPbmNlPW59ZnVuY3Rpb24gaGUodCxlKXtpZihlKWlmKGMoZSkpe3ZhciBuPXQu
b249dC5vbj9fKHt9LHQub24pOnt9O2Zvcih2YXIgciBpbiBlKXt2YXIgaT1uW3JdLG89ZVtyXTtu
W3JdPWk/W10uY29uY2F0KG8saSk6b319ZWxzZTtyZXR1cm4gdH1mdW5jdGlvbiBtZSh0KXt0Ll92
bm9kZT1udWxsLHQuX3N0YXRpY1RyZWVzPW51bGw7dmFyIGU9dC4kdm5vZGU9dC4kb3B0aW9ucy5f
cGFyZW50Vm5vZGUsbj1lJiZlLmNvbnRleHQ7dC4kc2xvdHM9Z3QodC4kb3B0aW9ucy5fcmVuZGVy
Q2hpbGRyZW4sbiksdC4kc2NvcGVkU2xvdHM9WWksdC5fYz1mdW5jdGlvbihlLG4scixpKXtyZXR1
cm4gcmUodCxlLG4scixpLCExKX0sdC4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4scixpKXty
ZXR1cm4gcmUodCxlLG4scixpLCEwKX07dmFyIHI9ZSYmZS5kYXRhO0kodCwiJGF0dHJzIixyJiZy
LmF0dHJzLG51bGwsITApLEkodCwiJGxpc3RlbmVycyIsdC4kb3B0aW9ucy5fcGFyZW50TGlzdGVu
ZXJzLG51bGwsITApfWZ1bmN0aW9uIHllKHQsZSl7dmFyIG49dC4kb3B0aW9ucz1PYmplY3QuY3Jl
YXRlKHQuY29uc3RydWN0b3Iub3B0aW9ucyk7bi5wYXJlbnQ9ZS5wYXJlbnQsbi5wcm9wc0RhdGE9
ZS5wcm9wc0RhdGEsbi5fcGFyZW50Vm5vZGU9ZS5fcGFyZW50Vm5vZGUsbi5fcGFyZW50TGlzdGVu
ZXJzPWUuX3BhcmVudExpc3RlbmVycyxuLl9yZW5kZXJDaGlsZHJlbj1lLl9yZW5kZXJDaGlsZHJl
bixuLl9jb21wb25lbnRUYWc9ZS5fY29tcG9uZW50VGFnLG4uX3BhcmVudEVsbT1lLl9wYXJlbnRF
bG0sbi5fcmVmRWxtPWUuX3JlZkVsbSxlLnJlbmRlciYmKG4ucmVuZGVyPWUucmVuZGVyLG4uc3Rh
dGljUmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5zKX1mdW5jdGlvbiBnZSh0KXt2YXIgZT10Lm9w
dGlvbnM7aWYodC5zdXBlcil7dmFyIG49Z2UodC5zdXBlcik7aWYobiE9PXQuc3VwZXJPcHRpb25z
KXt0LnN1cGVyT3B0aW9ucz1uO3ZhciByPV9lKHQpO3ImJl8odC5leHRlbmRPcHRpb25zLHIpLGU9
dC5vcHRpb25zPUsobix0LmV4dGVuZE9wdGlvbnMpLGUubmFtZSYmKGUuY29tcG9uZW50c1tlLm5h
bWVdPXQpfX1yZXR1cm4gZX1mdW5jdGlvbiBfZSh0KXt2YXIgZSxuPXQub3B0aW9ucyxyPXQuZXh0
ZW5kT3B0aW9ucyxpPXQuc2VhbGVkT3B0aW9ucztmb3IodmFyIG8gaW4gbiluW29dIT09aVtvXSYm
KGV8fChlPXt9KSxlW29dPWJlKG5bb10scltvXSxpW29dKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYmUo
dCxlLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciByPVtdO249QXJyYXkuaXNBcnJheShuKT9u
OltuXSxlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKysp
KGUuaW5kZXhPZih0W2ldKT49MHx8bi5pbmRleE9mKHRbaV0pPDApJiZyLnB1c2godFtpXSk7cmV0
dXJuIHJ9cmV0dXJuIHR9ZnVuY3Rpb24gd2UodCl7dGhpcy5faW5pdCh0KX1mdW5jdGlvbiAkZSh0
KXt0LnVzZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pbnN0YWxsZWRQbHVnaW5zfHwodGhpcy5f
aW5zdGFsbGVkUGx1Z2lucz1bXSk7aWYoZS5pbmRleE9mKHQpPi0xKXJldHVybiB0aGlzO3ZhciBu
PWcoYXJndW1lbnRzLDEpO3JldHVybiBuLnVuc2hpZnQodGhpcyksImZ1bmN0aW9uIj09dHlwZW9m
IHQuaW5zdGFsbD90Lmluc3RhbGwuYXBwbHkodCxuKToiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5h
cHBseShudWxsLG4pLGUucHVzaCh0KSx0aGlzfX1mdW5jdGlvbiBDZSh0KXt0Lm1peGluPWZ1bmN0
aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnM9Syh0aGlzLm9wdGlvbnMsdCksdGhpc319ZnVuY3Rp
b24geGUodCl7dC5jaWQ9MDt2YXIgZT0xO3QuZXh0ZW5kPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFy
IG49dGhpcyxyPW4uY2lkLGk9dC5fQ3Rvcnx8KHQuX0N0b3I9e30pO2lmKGlbcl0pcmV0dXJuIGlb
cl07dmFyIG89dC5uYW1lfHxuLm9wdGlvbnMubmFtZSxhPWZ1bmN0aW9uKHQpe3RoaXMuX2luaXQo
dCl9O3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSxhLnByb3Rv
dHlwZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPWUrKyxhLm9wdGlvbnM9SyhuLm9wdGlvbnMsdCksYS5z
dXBlcj1uLGEub3B0aW9ucy5wcm9wcyYmQWUoYSksYS5vcHRpb25zLmNvbXB1dGVkJiZrZShhKSxh
LmV4dGVuZD1uLmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsR2kuZm9yRWFjaChm
dW5jdGlvbih0KXthW3RdPW5bdF19KSxvJiYoYS5vcHRpb25zLmNvbXBvbmVudHNbb109YSksYS5z
dXBlck9wdGlvbnM9bi5vcHRpb25zLGEuZXh0ZW5kT3B0aW9ucz10LGEuc2VhbGVkT3B0aW9ucz1f
KHt9LGEub3B0aW9ucyksaVtyXT1hLGF9fWZ1bmN0aW9uIEFlKHQpe3ZhciBlPXQub3B0aW9ucy5w
cm9wcztmb3IodmFyIG4gaW4gZSlQdCh0LnByb3RvdHlwZSwiX3Byb3BzIixuKX1mdW5jdGlvbiBr
ZSh0KXt2YXIgZT10Lm9wdGlvbnMuY29tcHV0ZWQ7Zm9yKHZhciBuIGluIGUpSHQodC5wcm90b3R5
cGUsbixlW25dKX1mdW5jdGlvbiBPZSh0KXtHaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZnVu
Y3Rpb24odCxuKXtyZXR1cm4gbj8oImNvbXBvbmVudCI9PT1lJiZjKG4pJiYobi5uYW1lPW4ubmFt
ZXx8dCxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLCJkaXJlY3RpdmUiPT09ZSYmImZ1
bmN0aW9uIj09dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9wdGlvbnNbZSsi
cyJdW3RdPW4sbik6dGhpcy5vcHRpb25zW2UrInMiXVt0XX19KX1mdW5jdGlvbiBTZSh0KXtyZXR1
cm4gdCYmKHQuQ3Rvci5vcHRpb25zLm5hbWV8fHQudGFnKX1mdW5jdGlvbiBUZSh0LGUpe3JldHVy
biBBcnJheS5pc0FycmF5KHQpP3QuaW5kZXhPZihlKT4tMToic3RyaW5nIj09dHlwZW9mIHQ/dC5z
cGxpdCgiLCIpLmluZGV4T2YoZSk+LTE6ISF1KHQpJiZ0LnRlc3QoZSl9ZnVuY3Rpb24gRWUodCxl
LG4pe2Zvcih2YXIgciBpbiB0KXt2YXIgaT10W3JdO2lmKGkpe3ZhciBvPVNlKGkuY29tcG9uZW50
T3B0aW9ucyk7byYmIW4obykmJihpIT09ZSYmamUoaSksdFtyXT1udWxsKX19fWZ1bmN0aW9uIGpl
KHQpe3QmJnQuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKX1mdW5jdGlvbiBOZSh0KXtmb3Io
dmFyIGU9dC5kYXRhLG49dCxpPXQ7cihpLmNvbXBvbmVudEluc3RhbmNlKTspaT1pLmNvbXBvbmVu
dEluc3RhbmNlLl92bm9kZSxpLmRhdGEmJihlPUxlKGkuZGF0YSxlKSk7Zm9yKDtyKG49bi5wYXJl
bnQpOyluLmRhdGEmJihlPUxlKGUsbi5kYXRhKSk7cmV0dXJuIE1lKGUuc3RhdGljQ2xhc3MsZS5j
bGFzcyl9ZnVuY3Rpb24gTGUodCxlKXtyZXR1cm57c3RhdGljQ2xhc3M6SWUodC5zdGF0aWNDbGFz
cyxlLnN0YXRpY0NsYXNzKSxjbGFzczpyKHQuY2xhc3MpP1t0LmNsYXNzLGUuY2xhc3NdOmUuY2xh
c3N9fWZ1bmN0aW9uIE1lKHQsZSl7cmV0dXJuIHIodCl8fHIoZSk/SWUodCxQZShlKSk6IiJ9ZnVu
Y3Rpb24gSWUodCxlKXtyZXR1cm4gdD9lP3QrIiAiK2U6dDplfHwiIn1mdW5jdGlvbiBQZSh0KXty
ZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9SZSh0KTpzKHQpP0RlKHQpOiJzdHJpbmciPT10eXBlb2Yg
dD90OiIifWZ1bmN0aW9uIFJlKHQpe2Zvcih2YXIgZSxuPSIiLGk9MCxvPXQubGVuZ3RoO2k8bztp
KyspcihlPVBlKHRbaV0pKSYmIiIhPT1lJiYobiYmKG4rPSIgIiksbis9ZSk7cmV0dXJuIG59ZnVu
Y3Rpb24gRGUodCl7dmFyIGU9IiI7Zm9yKHZhciBuIGluIHQpdFtuXSYmKGUmJihlKz0iICIpLGUr
PW4pO3JldHVybiBlfWZ1bmN0aW9uIEZlKHQpe3JldHVybiB3YSh0KT8ic3ZnIjoibWF0aCI9PT10
PyJtYXRoIjp2b2lkIDB9ZnVuY3Rpb24gQmUodCl7aWYoIW5vKXJldHVybiEwO2lmKENhKHQpKXJl
dHVybiExO2lmKHQ9dC50b0xvd2VyQ2FzZSgpLG51bGwhPXhhW3RdKXJldHVybiB4YVt0XTt2YXIg
ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO3JldHVybiB0LmluZGV4T2YoIi0iKT4tMT94YVt0
XT1lLmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxVbmtub3duRWxlbWVudHx8ZS5jb25zdHJ1Y3Rv
cj09PXdpbmRvdy5IVE1MRWxlbWVudDp4YVt0XT0vSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KGUu
dG9TdHJpbmcoKSl9ZnVuY3Rpb24gVWUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT1k
b2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO3JldHVybiBlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKX1yZXR1cm4gdH1mdW5jdGlvbiBIZSh0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQodCk7cmV0dXJuInNlbGVjdCIhPT10P246KGUuZGF0YSYmZS5kYXRhLmF0dHJzJiZ2b2lk
IDAhPT1lLmRhdGEuYXR0cnMubXVsdGlwbGUmJm4uc2V0QXR0cmlidXRlKCJtdWx0aXBsZSIsIm11
bHRpcGxlIiksbil9ZnVuY3Rpb24gVmUodCxlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKF9hW3RdLGUpfWZ1bmN0aW9uIHplKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0KX1mdW5jdGlvbiBKZSh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX1mdW5j
dGlvbiBLZSh0LGUsbil7dC5pbnNlcnRCZWZvcmUoZSxuKX1mdW5jdGlvbiBxZSh0LGUpe3QucmVt
b3ZlQ2hpbGQoZSl9ZnVuY3Rpb24gV2UodCxlKXt0LmFwcGVuZENoaWxkKGUpfWZ1bmN0aW9uIEdl
KHQpe3JldHVybiB0LnBhcmVudE5vZGV9ZnVuY3Rpb24gWmUodCl7cmV0dXJuIHQubmV4dFNpYmxp
bmd9ZnVuY3Rpb24gWGUodCl7cmV0dXJuIHQudGFnTmFtZX1mdW5jdGlvbiBZZSh0LGUpe3QudGV4
dENvbnRlbnQ9ZX1mdW5jdGlvbiBRZSh0LGUsbil7dC5zZXRBdHRyaWJ1dGUoZSxuKX1mdW5jdGlv
biB0bih0LGUpe3ZhciBuPXQuZGF0YS5yZWY7aWYobil7dmFyIHI9dC5jb250ZXh0LGk9dC5jb21w
b25lbnRJbnN0YW5jZXx8dC5lbG0sbz1yLiRyZWZzO2U/QXJyYXkuaXNBcnJheShvW25dKT92KG9b
bl0saSk6b1tuXT09PWkmJihvW25dPXZvaWQgMCk6dC5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJy
YXkob1tuXSk/b1tuXS5pbmRleE9mKGkpPDAmJm9bbl0ucHVzaChpKTpvW25dPVtpXTpvW25dPWl9
fWZ1bmN0aW9uIGVuKHQsZSl7cmV0dXJuIHQua2V5PT09ZS5rZXkmJih0LnRhZz09PWUudGFnJiZ0
LmlzQ29tbWVudD09PWUuaXNDb21tZW50JiZyKHQuZGF0YSk9PT1yKGUuZGF0YSkmJm5uKHQsZSl8
fGkodC5pc0FzeW5jUGxhY2Vob2xkZXIpJiZ0LmFzeW5jRmFjdG9yeT09PWUuYXN5bmNGYWN0b3J5
JiZuKGUuYXN5bmNGYWN0b3J5LmVycm9yKSl9ZnVuY3Rpb24gbm4odCxlKXtpZigiaW5wdXQiIT09
dC50YWcpcmV0dXJuITA7dmFyIG47cmV0dXJuKHIobj10LmRhdGEpJiZyKG49bi5hdHRycykmJm4u
dHlwZSk9PT0ocihuPWUuZGF0YSkmJnIobj1uLmF0dHJzKSYmbi50eXBlKX1mdW5jdGlvbiBybih0
LGUsbil7dmFyIGksbyxhPXt9O2ZvcihpPWU7aTw9bjsrK2kpbz10W2ldLmtleSxyKG8pJiYoYVtv
XT1pKTtyZXR1cm4gYX1mdW5jdGlvbiBvbih0LGUpeyh0LmRhdGEuZGlyZWN0aXZlc3x8ZS5kYXRh
LmRpcmVjdGl2ZXMpJiZhbih0LGUpfWZ1bmN0aW9uIGFuKHQsZSl7dmFyIG4scixpLG89dD09PU9h
LGE9ZT09PU9hLHM9c24odC5kYXRhLmRpcmVjdGl2ZXMsdC5jb250ZXh0KSxjPXNuKGUuZGF0YS5k
aXJlY3RpdmVzLGUuY29udGV4dCksdT1bXSxsPVtdO2ZvcihuIGluIGMpcj1zW25dLGk9Y1tuXSxy
PyhpLm9sZFZhbHVlPXIudmFsdWUsdW4oaSwidXBkYXRlIixlLHQpLGkuZGVmJiZpLmRlZi5jb21w
b25lbnRVcGRhdGVkJiZsLnB1c2goaSkpOih1bihpLCJiaW5kIixlLHQpLGkuZGVmJiZpLmRlZi5p
bnNlcnRlZCYmdS5wdXNoKGkpKTtpZih1Lmxlbmd0aCl7dmFyIGY9ZnVuY3Rpb24oKXtmb3IodmFy
IG49MDtuPHUubGVuZ3RoO24rKyl1bih1W25dLCJpbnNlcnRlZCIsZSx0KX07bz9ydChlLmRhdGEu
aG9va3x8KGUuZGF0YS5ob29rPXt9KSwiaW5zZXJ0IixmKTpmKCl9aWYobC5sZW5ndGgmJnJ0KGUu
ZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7Zm9yKHZh
ciBuPTA7bjxsLmxlbmd0aDtuKyspdW4obFtuXSwiY29tcG9uZW50VXBkYXRlZCIsZSx0KX0pLCFv
KWZvcihuIGluIHMpY1tuXXx8dW4oc1tuXSwidW5iaW5kIix0LHQsYSl9ZnVuY3Rpb24gc24odCxl
KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCF0KXJldHVybiBuO3ZhciByLGk7Zm9yKHI9
MDtyPHQubGVuZ3RoO3IrKylpPXRbcl0saS5tb2RpZmllcnN8fChpLm1vZGlmaWVycz1FYSksbltj
bihpKV09aSxpLmRlZj1xKGUuJG9wdGlvbnMsImRpcmVjdGl2ZXMiLGkubmFtZSwhMCk7cmV0dXJu
IG59ZnVuY3Rpb24gY24odCl7cmV0dXJuIHQucmF3TmFtZXx8dC5uYW1lKyIuIitPYmplY3Qua2V5
cyh0Lm1vZGlmaWVyc3x8e30pLmpvaW4oIi4iKX1mdW5jdGlvbiB1bih0LGUsbixyLGkpe3ZhciBv
PXQuZGVmJiZ0LmRlZltlXTtpZihvKXRyeXtvKG4uZWxtLHQsbixyLGkpfWNhdGNoKHIpe1Mocixu
LmNvbnRleHQsImRpcmVjdGl2ZSAiK3QubmFtZSsiICIrZSsiIGhvb2siKX19ZnVuY3Rpb24gbG4o
dCxlKXt2YXIgaT1lLmNvbXBvbmVudE9wdGlvbnM7aWYoIShyKGkpJiYhMT09PWkuQ3Rvci5vcHRp
b25zLmluaGVyaXRBdHRyc3x8bih0LmRhdGEuYXR0cnMpJiZuKGUuZGF0YS5hdHRycykpKXt2YXIg
byxhLHM9ZS5lbG0sYz10LmRhdGEuYXR0cnN8fHt9LHU9ZS5kYXRhLmF0dHJzfHx7fTtyKHUuX19v
Yl9fKSYmKHU9ZS5kYXRhLmF0dHJzPV8oe30sdSkpO2ZvcihvIGluIHUpYT11W29dLGNbb10hPT1h
JiZmbihzLG8sYSk7b28mJnUudmFsdWUhPT1jLnZhbHVlJiZmbihzLCJ2YWx1ZSIsdS52YWx1ZSk7
Zm9yKG8gaW4gYyluKHVbb10pJiYobWEobyk/cy5yZW1vdmVBdHRyaWJ1dGVOUyhoYSx5YShvKSk6
ZGEobyl8fHMucmVtb3ZlQXR0cmlidXRlKG8pKX19ZnVuY3Rpb24gZm4odCxlLG4pe3ZhKGUpP2dh
KG4pP3QucmVtb3ZlQXR0cmlidXRlKGUpOnQuc2V0QXR0cmlidXRlKGUsZSk6ZGEoZSk/dC5zZXRB
dHRyaWJ1dGUoZSxnYShuKXx8ImZhbHNlIj09PW4/ImZhbHNlIjoidHJ1ZSIpOm1hKGUpP2dhKG4p
P3QucmVtb3ZlQXR0cmlidXRlTlMoaGEseWEoZSkpOnQuc2V0QXR0cmlidXRlTlMoaGEsZSxuKTpn
YShuKT90LnJlbW92ZUF0dHJpYnV0ZShlKTp0LnNldEF0dHJpYnV0ZShlLG4pfWZ1bmN0aW9uIHBu
KHQsZSl7dmFyIGk9ZS5lbG0sbz1lLmRhdGEsYT10LmRhdGE7aWYoIShuKG8uc3RhdGljQ2xhc3Mp
JiZuKG8uY2xhc3MpJiYobihhKXx8bihhLnN0YXRpY0NsYXNzKSYmbihhLmNsYXNzKSkpKXt2YXIg
cz1OZShlKSxjPWkuX3RyYW5zaXRpb25DbGFzc2VzO3IoYykmJihzPUllKHMsUGUoYykpKSxzIT09
aS5fcHJldkNsYXNzJiYoaS5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKSxpLl9wcmV2Q2xhc3M9cyl9
fWZ1bmN0aW9uIGRuKHQpe2Z1bmN0aW9uIGUoKXsoYXx8KGE9W10pKS5wdXNoKHQuc2xpY2Uodixp
KS50cmltKCkpLHY9aSsxfXZhciBuLHIsaSxvLGEscz0hMSxjPSExLHU9ITEsbD0hMSxmPTAscD0w
LGQ9MCx2PTA7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylpZihyPW4sbj10LmNoYXJDb2RlQXQoaSks
cykzOT09PW4mJjkyIT09ciYmKHM9ITEpO2Vsc2UgaWYoYykzND09PW4mJjkyIT09ciYmKGM9ITEp
O2Vsc2UgaWYodSk5Nj09PW4mJjkyIT09ciYmKHU9ITEpO2Vsc2UgaWYobCk0Nz09PW4mJjkyIT09
ciYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09bnx8MTI0PT09dC5jaGFyQ29kZUF0KGkrMSl8fDEyND09
PXQuY2hhckNvZGVBdChpLTEpfHxmfHxwfHxkKXtzd2l0Y2gobil7Y2FzZSAzNDpjPSEwO2JyZWFr
O2Nhc2UgMzk6cz0hMDticmVhaztjYXNlIDk2OnU9ITA7YnJlYWs7Y2FzZSA0MDpkKys7YnJlYWs7
Y2FzZSA0MTpkLS07YnJlYWs7Y2FzZSA5MTpwKys7YnJlYWs7Y2FzZSA5MzpwLS07YnJlYWs7Y2Fz
ZSAxMjM6ZisrO2JyZWFrO2Nhc2UgMTI1OmYtLX1pZig0Nz09PW4pe2Zvcih2YXIgaD1pLTEsbT12
b2lkIDA7aD49MCYmIiAiPT09KG09dC5jaGFyQXQoaCkpO2gtLSk7bSYmTWEudGVzdChtKXx8KGw9
ITApfX1lbHNlIHZvaWQgMD09PW8/KHY9aSsxLG89dC5zbGljZSgwLGkpLnRyaW0oKSk6ZSgpO2lm
KHZvaWQgMD09PW8/bz10LnNsaWNlKDAsaSkudHJpbSgpOjAhPT12JiZlKCksYSlmb3IoaT0wO2k8
YS5sZW5ndGg7aSsrKW89dm4obyxhW2ldKTtyZXR1cm4gb31mdW5jdGlvbiB2bih0LGUpe3ZhciBu
PWUuaW5kZXhPZigiKCIpO3JldHVybiBuPDA/J19mKCInK2UrJyIpKCcrdCsiKSI6J19mKCInK2Uu
c2xpY2UoMCxuKSsnIikoJyt0KyIsIitlLnNsaWNlKG4rMSl9ZnVuY3Rpb24gaG4odCl7Y29uc29s
ZS5lcnJvcigiW1Z1ZSBjb21waWxlcl06ICIrdCl9ZnVuY3Rpb24gbW4odCxlKXtyZXR1cm4gdD90
Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFtlXX0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4g
dH0pOltdfWZ1bmN0aW9uIHluKHQsZSxuKXsodC5wcm9wc3x8KHQucHJvcHM9W10pKS5wdXNoKHtu
YW1lOmUsdmFsdWU6bn0pfWZ1bmN0aW9uIGduKHQsZSxuKXsodC5hdHRyc3x8KHQuYXR0cnM9W10p
KS5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pfWZ1bmN0aW9uIF9uKHQsZSxuLHIsaSxvKXsodC5kaXJl
Y3RpdmVzfHwodC5kaXJlY3RpdmVzPVtdKSkucHVzaCh7bmFtZTplLHJhd05hbWU6bix2YWx1ZTpy
LGFyZzppLG1vZGlmaWVyczpvfSl9ZnVuY3Rpb24gYm4odCxlLG4scixpLG8pe3ImJnIuY2FwdHVy
ZSYmKGRlbGV0ZSByLmNhcHR1cmUsZT0iISIrZSksciYmci5vbmNlJiYoZGVsZXRlIHIub25jZSxl
PSJ+IitlKSxyJiZyLnBhc3NpdmUmJihkZWxldGUgci5wYXNzaXZlLGU9IiYiK2UpO3ZhciBhO3Im
JnIubmF0aXZlPyhkZWxldGUgci5uYXRpdmUsYT10Lm5hdGl2ZUV2ZW50c3x8KHQubmF0aXZlRXZl
bnRzPXt9KSk6YT10LmV2ZW50c3x8KHQuZXZlbnRzPXt9KTt2YXIgcz17dmFsdWU6bixtb2RpZmll
cnM6cn0sYz1hW2VdO0FycmF5LmlzQXJyYXkoYyk/aT9jLnVuc2hpZnQocyk6Yy5wdXNoKHMpOmFb
ZV09Yz9pP1tzLGNdOltjLHNdOnN9ZnVuY3Rpb24gd24odCxlLG4pe3ZhciByPSRuKHQsIjoiK2Up
fHwkbih0LCJ2LWJpbmQ6IitlKTtpZihudWxsIT1yKXJldHVybiBkbihyKTtpZighMSE9PW4pe3Zh
ciBpPSRuKHQsZSk7aWYobnVsbCE9aSlyZXR1cm4gSlNPTi5zdHJpbmdpZnkoaSl9fWZ1bmN0aW9u
ICRuKHQsZSl7dmFyIG47aWYobnVsbCE9KG49dC5hdHRyc01hcFtlXSkpZm9yKHZhciByPXQuYXR0
cnNMaXN0LGk9MCxvPXIubGVuZ3RoO2k8bztpKyspaWYocltpXS5uYW1lPT09ZSl7ci5zcGxpY2Uo
aSwxKTticmVha31yZXR1cm4gbn1mdW5jdGlvbiBDbih0LGUsbil7dmFyIHI9bnx8e30saT1yLm51
bWJlcixvPXIudHJpbSxhPSIkJHYiO28mJihhPSIodHlwZW9mICQkdiA9PT0gJ3N0cmluZyc/ICQk
di50cmltKCk6ICQkdikiKSxpJiYoYT0iX24oIithKyIpIik7dmFyIHM9eG4oZSxhKTt0Lm1vZGVs
PXt2YWx1ZToiKCIrZSsiKSIsZXhwcmVzc2lvbjonIicrZSsnIicsY2FsbGJhY2s6ImZ1bmN0aW9u
ICgkJHYpIHsiK3MrIn0ifX1mdW5jdGlvbiB4bih0LGUpe3ZhciBuPUFuKHQpO3JldHVybiBudWxs
PT09bi5pZHg/dCsiPSIrZToiJHNldCgiK24uZXhwKyIsICIrbi5pZHgrIiwgIitlKyIpIn1mdW5j
dGlvbiBBbih0KXtpZihuYT10LGVhPW5hLmxlbmd0aCxpYT1vYT1hYT0wLHQuaW5kZXhPZigiWyIp
PDB8fHQubGFzdEluZGV4T2YoIl0iKTxlYS0xKXJldHVybntleHA6dCxpZHg6bnVsbH07Zm9yKDsh
T24oKTspcmE9a24oKSxTbihyYSk/RW4ocmEpOjkxPT09cmEmJlRuKHJhKTtyZXR1cm57ZXhwOnQu
c3Vic3RyaW5nKDAsb2EpLGlkeDp0LnN1YnN0cmluZyhvYSsxLGFhKX19ZnVuY3Rpb24ga24oKXty
ZXR1cm4gbmEuY2hhckNvZGVBdCgrK2lhKX1mdW5jdGlvbiBPbigpe3JldHVybiBpYT49ZWF9ZnVu
Y3Rpb24gU24odCl7cmV0dXJuIDM0PT09dHx8Mzk9PT10fWZ1bmN0aW9uIFRuKHQpe3ZhciBlPTE7
Zm9yKG9hPWlhOyFPbigpOylpZih0PWtuKCksU24odCkpRW4odCk7ZWxzZSBpZig5MT09PXQmJmUr
Kyw5Mz09PXQmJmUtLSwwPT09ZSl7YWE9aWE7YnJlYWt9fWZ1bmN0aW9uIEVuKHQpe2Zvcih2YXIg
ZT10OyFPbigpJiYodD1rbigpKSE9PWU7KTt9ZnVuY3Rpb24gam4odCxlLG4pe3NhPW47dmFyIHI9
ZS52YWx1ZSxpPWUubW9kaWZpZXJzLG89dC50YWcsYT10LmF0dHJzTWFwLnR5cGU7aWYodC5jb21w
b25lbnQpcmV0dXJuIENuKHQscixpKSwhMTtpZigic2VsZWN0Ij09PW8pTW4odCxyLGkpO2Vsc2Ug
aWYoImlucHV0Ij09PW8mJiJjaGVja2JveCI9PT1hKU5uKHQscixpKTtlbHNlIGlmKCJpbnB1dCI9
PT1vJiYicmFkaW8iPT09YSlMbih0LHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09b3x8InRleHRhcmVh
Ij09PW8pSW4odCxyLGkpO2Vsc2UgaWYoIVhpLmlzUmVzZXJ2ZWRUYWcobykpcmV0dXJuIENuKHQs
cixpKSwhMTtyZXR1cm4hMH1mdW5jdGlvbiBObih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT13
bih0LCJ2YWx1ZSIpfHwibnVsbCIsbz13bih0LCJ0cnVlLXZhbHVlIil8fCJ0cnVlIixhPXduKHQs
ImZhbHNlLXZhbHVlIil8fCJmYWxzZSI7eW4odCwiY2hlY2tlZCIsIkFycmF5LmlzQXJyYXkoIitl
KyIpP19pKCIrZSsiLCIraSsiKT4tMSIrKCJ0cnVlIj09PW8/IjooIitlKyIpIjoiOl9xKCIrZSsi
LCIrbysiKSIpKSxibih0LFBhLCJ2YXIgJCRhPSIrZSsiLCQkZWw9JGV2ZW50LnRhcmdldCwkJGM9
JCRlbC5jaGVja2VkPygiK28rIik6KCIrYSsiKTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAk
JHY9Iisocj8iX24oIitpKyIpIjppKSsiLCQkaT1faSgkJGEsJCR2KTtpZigkJGVsLmNoZWNrZWQp
eyQkaTwwJiYoIitlKyI9JCRhLmNvbmNhdCgkJHYpKX1lbHNleyQkaT4tMSYmKCIrZSsiPSQkYS5z
bGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX19ZWxzZXsiK3huKGUsIiQkYyIp
KyJ9IixudWxsLCEwKX1mdW5jdGlvbiBMbih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT13bih0
LCJ2YWx1ZSIpfHwibnVsbCI7aT1yPyJfbigiK2krIikiOmkseW4odCwiY2hlY2tlZCIsIl9xKCIr
ZSsiLCIraSsiKSIpLGJuKHQsUGEseG4oZSxpKSxudWxsLCEwKX1mdW5jdGlvbiBNbih0LGUsbil7
dmFyIHI9biYmbi5udW1iZXIsaT0nQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKCRldmVudC50
YXJnZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pLm1hcChmdW5jdGlv
bihvKXt2YXIgdmFsID0gIl92YWx1ZSIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4g
Jysocj8iX24odmFsKSI6InZhbCIpKyJ9KSIsbz0idmFyICQkc2VsZWN0ZWRWYWwgPSAiK2krIjsi
O289bysiICIreG4oZSwiJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA/ICQkc2VsZWN0ZWRWYWwgOiAk
JHNlbGVjdGVkVmFsWzBdIiksYm4odCwiY2hhbmdlIixvLG51bGwsITApfWZ1bmN0aW9uIEluKHQs
ZSxuKXt2YXIgcj10LmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9
aS50cmltLGM9IW8mJiJyYW5nZSIhPT1yLHU9bz8iY2hhbmdlIjoicmFuZ2UiPT09cj9JYToiaW5w
dXQiLGw9IiRldmVudC50YXJnZXQudmFsdWUiO3MmJihsPSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRy
aW0oKSIpLGEmJihsPSJfbigiK2wrIikiKTt2YXIgZj14bihlLGwpO2MmJihmPSJpZigkZXZlbnQu
dGFyZ2V0LmNvbXBvc2luZylyZXR1cm47IitmKSx5bih0LCJ2YWx1ZSIsIigiK2UrIikiKSxibih0
LHUsZixudWxsLCEwKSwoc3x8YSkmJmJuKHQsImJsdXIiLCIkZm9yY2VVcGRhdGUoKSIpfWZ1bmN0
aW9uIFBuKHQpe3ZhciBlO3IodFtJYV0pJiYoZT1pbz8iY2hhbmdlIjoiaW5wdXQiLHRbZV09W10u
Y29uY2F0KHRbSWFdLHRbZV18fFtdKSxkZWxldGUgdFtJYV0pLHIodFtQYV0pJiYoZT11bz8iY2xp
Y2siOiJjaGFuZ2UiLHRbZV09W10uY29uY2F0KHRbUGFdLHRbZV18fFtdKSxkZWxldGUgdFtQYV0p
fWZ1bmN0aW9uIFJuKHQsZSxuLHIsaSl7aWYobil7dmFyIG89ZSxhPWNhO2U9ZnVuY3Rpb24obil7
bnVsbCE9PSgxPT09YXJndW1lbnRzLmxlbmd0aD9vKG4pOm8uYXBwbHkobnVsbCxhcmd1bWVudHMp
KSYmRG4odCxlLHIsYSl9fWNhLmFkZEV2ZW50TGlzdGVuZXIodCxlLGZvP3tjYXB0dXJlOnIscGFz
c2l2ZTppfTpyKX1mdW5jdGlvbiBEbih0LGUsbixyKXsocnx8Y2EpLnJlbW92ZUV2ZW50TGlzdGVu
ZXIodCxlLG4pfWZ1bmN0aW9uIEZuKHQsZSl7aWYoIW4odC5kYXRhLm9uKXx8IW4oZS5kYXRhLm9u
KSl7dmFyIHI9ZS5kYXRhLm9ufHx7fSxpPXQuZGF0YS5vbnx8e307Y2E9ZS5lbG0sUG4ociksbnQo
cixpLFJuLERuLGUuY29udGV4dCl9fWZ1bmN0aW9uIEJuKHQsZSl7aWYoIW4odC5kYXRhLmRvbVBy
b3BzKXx8IW4oZS5kYXRhLmRvbVByb3BzKSl7dmFyIGksbyxhPWUuZWxtLHM9dC5kYXRhLmRvbVBy
b3BzfHx7fSxjPWUuZGF0YS5kb21Qcm9wc3x8e307cihjLl9fb2JfXykmJihjPWUuZGF0YS5kb21Q
cm9wcz1fKHt9LGMpKTtmb3IoaSBpbiBzKW4oY1tpXSkmJihhW2ldPSIiKTtmb3IoaSBpbiBjKWlm
KG89Y1tpXSwidGV4dENvbnRlbnQiIT09aSYmImlubmVySFRNTCIhPT1pfHwoZS5jaGlsZHJlbiYm
KGUuY2hpbGRyZW4ubGVuZ3RoPTApLG8hPT1zW2ldKSlpZigidmFsdWUiPT09aSl7YS5fdmFsdWU9
bzt2YXIgdT1uKG8pPyIiOlN0cmluZyhvKTtVbihhLGUsdSkmJihhLnZhbHVlPXUpfWVsc2UgYVtp
XT1vfX1mdW5jdGlvbiBVbih0LGUsbil7cmV0dXJuIXQuY29tcG9zaW5nJiYoIm9wdGlvbiI9PT1l
LnRhZ3x8SG4odCxuKXx8Vm4odCxuKSl9ZnVuY3Rpb24gSG4odCxlKXt2YXIgbj0hMDt0cnl7bj1k
b2N1bWVudC5hY3RpdmVFbGVtZW50IT09dH1jYXRjaCh0KXt9cmV0dXJuIG4mJnQudmFsdWUhPT1l
fWZ1bmN0aW9uIFZuKHQsZSl7dmFyIG49dC52YWx1ZSxpPXQuX3ZNb2RpZmllcnM7cmV0dXJuIHIo
aSkmJmkubnVtYmVyP3AobikhPT1wKGUpOnIoaSkmJmkudHJpbT9uLnRyaW0oKSE9PWUudHJpbSgp
Om4hPT1lfWZ1bmN0aW9uIHpuKHQpe3ZhciBlPUpuKHQuc3R5bGUpO3JldHVybiB0LnN0YXRpY1N0
eWxlP18odC5zdGF0aWNTdHlsZSxlKTplfWZ1bmN0aW9uIEpuKHQpe3JldHVybiBBcnJheS5pc0Fy
cmF5KHQpP2IodCk6InN0cmluZyI9PXR5cGVvZiB0P0ZhKHQpOnR9ZnVuY3Rpb24gS24odCxlKXt2
YXIgbixyPXt9O2lmKGUpZm9yKHZhciBpPXQ7aS5jb21wb25lbnRJbnN0YW5jZTspaT1pLmNvbXBv
bmVudEluc3RhbmNlLl92bm9kZSxpLmRhdGEmJihuPXpuKGkuZGF0YSkpJiZfKHIsbik7KG49em4o
dC5kYXRhKSkmJl8ocixuKTtmb3IodmFyIG89dDtvPW8ucGFyZW50OylvLmRhdGEmJihuPXpuKG8u
ZGF0YSkpJiZfKHIsbik7cmV0dXJuIHJ9ZnVuY3Rpb24gcW4odCxlKXt2YXIgaT1lLmRhdGEsbz10
LmRhdGE7aWYoIShuKGkuc3RhdGljU3R5bGUpJiZuKGkuc3R5bGUpJiZuKG8uc3RhdGljU3R5bGUp
JiZuKG8uc3R5bGUpKSl7dmFyIGEscyxjPWUuZWxtLHU9by5zdGF0aWNTdHlsZSxsPW8ubm9ybWFs
aXplZFN0eWxlfHxvLnN0eWxlfHx7fSxmPXV8fGwscD1KbihlLmRhdGEuc3R5bGUpfHx7fTtlLmRh
dGEubm9ybWFsaXplZFN0eWxlPXIocC5fX29iX18pP18oe30scCk6cDt2YXIgZD1LbihlLCEwKTtm
b3IocyBpbiBmKW4oZFtzXSkmJkhhKGMscywiIik7Zm9yKHMgaW4gZCkoYT1kW3NdKSE9PWZbc10m
JkhhKGMscyxudWxsPT1hPyIiOmEpfX1mdW5jdGlvbiBXbih0LGUpe2lmKGUmJihlPWUudHJpbSgp
KSlpZih0LmNsYXNzTGlzdCllLmluZGV4T2YoIiAiKT4tMT9lLnNwbGl0KC9ccysvKS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlzdC5hZGQoZSl9KTp0LmNsYXNzTGlzdC5hZGQo
ZSk7ZWxzZXt2YXIgbj0iICIrKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5k
ZXhPZigiICIrZSsiICIpPDAmJnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rZSkudHJpbSgpKX19
ZnVuY3Rpb24gR24odCxlKXtpZihlJiYoZT1lLnRyaW0oKSkpaWYodC5jbGFzc0xpc3QpZS5pbmRl
eE9mKCIgIik+LTE/ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5j
bGFzc0xpc3QucmVtb3ZlKGUpfSk6dC5jbGFzc0xpc3QucmVtb3ZlKGUpLHQuY2xhc3NMaXN0Lmxl
bmd0aHx8dC5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyh0Lmdl
dEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjtuLmluZGV4T2Yocik+PTA7
KW49bi5yZXBsYWNlKHIsIiAiKTtuPW4udHJpbSgpLG4/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixu
KTp0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gWm4odCl7aWYodCl7aWYoIm9i
amVjdCI9PXR5cGVvZiB0KXt2YXIgZT17fTtyZXR1cm4hMSE9PXQuY3NzJiZfKGUsS2EodC5uYW1l
fHwidiIpKSxfKGUsdCksZX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/S2EodCk6dm9pZCAwfX1m
dW5jdGlvbiBYbih0KXt0cyhmdW5jdGlvbigpe3RzKHQpfSl9ZnVuY3Rpb24gWW4odCxlKXt2YXIg
bj10Ll90cmFuc2l0aW9uQ2xhc3Nlc3x8KHQuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4
T2YoZSk8MCYmKG4ucHVzaChlKSxXbih0LGUpKX1mdW5jdGlvbiBRbih0LGUpe3QuX3RyYW5zaXRp
b25DbGFzc2VzJiZ2KHQuX3RyYW5zaXRpb25DbGFzc2VzLGUpLEduKHQsZSl9ZnVuY3Rpb24gdHIo
dCxlLG4pe3ZhciByPWVyKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtp
ZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1XYT9YYTpRYSxjPTAsdT1mdW5jdGlvbigpe3QucmVt
b3ZlRXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisr
Yz49YSYmdSgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksdC5hZGRFdmVu
dExpc3RlbmVyKHMsbCl9ZnVuY3Rpb24gZXIodCxlKXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKHQpLGk9cltaYSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxvPXJbWmErIkR1cmF0aW9uIl0u
c3BsaXQoIiwgIiksYT1ucihpLG8pLHM9cltZYSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxjPXJbWWEr
IkR1cmF0aW9uIl0uc3BsaXQoIiwgIiksdT1ucihzLGMpLGw9MCxmPTA7cmV0dXJuIGU9PT1XYT9h
PjAmJihuPVdhLGw9YSxmPW8ubGVuZ3RoKTplPT09R2E/dT4wJiYobj1HYSxsPXUsZj1jLmxlbmd0
aCk6KGw9TWF0aC5tYXgoYSx1KSxuPWw+MD9hPnU/V2E6R2E6bnVsbCxmPW4/bj09PVdhP28ubGVu
Z3RoOmMubGVuZ3RoOjApLHt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9y
bTpuPT09V2EmJmVzLnRlc3QocltaYSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIG5yKHQsZSl7Zm9y
KDt0Lmxlbmd0aDxlLmxlbmd0aDspdD10LmNvbmNhdCh0KTtyZXR1cm4gTWF0aC5tYXguYXBwbHko
bnVsbCxlLm1hcChmdW5jdGlvbihlLG4pe3JldHVybiBycihlKStycih0W25dKX0pKX1mdW5jdGlv
biBycih0KXtyZXR1cm4gMWUzKk51bWJlcih0LnNsaWNlKDAsLTEpKX1mdW5jdGlvbiBpcih0LGUp
e3ZhciBpPXQuZWxtO3IoaS5fbGVhdmVDYikmJihpLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxpLl9s
ZWF2ZUNiKCkpO3ZhciBvPVpuKHQuZGF0YS50cmFuc2l0aW9uKTtpZighbihvKSYmIXIoaS5fZW50
ZXJDYikmJjE9PT1pLm5vZGVUeXBlKXtmb3IodmFyIGE9by5jc3MsYz1vLnR5cGUsdT1vLmVudGVy
Q2xhc3MsbD1vLmVudGVyVG9DbGFzcyxmPW8uZW50ZXJBY3RpdmVDbGFzcyxkPW8uYXBwZWFyQ2xh
c3Msdj1vLmFwcGVhclRvQ2xhc3MsaD1vLmFwcGVhckFjdGl2ZUNsYXNzLG09by5iZWZvcmVFbnRl
cix5PW8uZW50ZXIsZz1vLmFmdGVyRW50ZXIsXz1vLmVudGVyQ2FuY2VsbGVkLGI9by5iZWZvcmVB
cHBlYXIsdz1vLmFwcGVhciwkPW8uYWZ0ZXJBcHBlYXIsQz1vLmFwcGVhckNhbmNlbGxlZCxBPW8u
ZHVyYXRpb24saz1JbyxPPUlvLiR2bm9kZTtPJiZPLnBhcmVudDspTz1PLnBhcmVudCxrPU8uY29u
dGV4dDt2YXIgUz0hay5faXNNb3VudGVkfHwhdC5pc1Jvb3RJbnNlcnQ7aWYoIVN8fHd8fCIiPT09
dyl7dmFyIFQ9UyYmZD9kOnUsRT1TJiZoP2g6ZixqPVMmJnY/djpsLE49Uz9ifHxtOm0sTD1TJiYi
ZnVuY3Rpb24iPT10eXBlb2Ygdz93OnksTT1TPyR8fGc6ZyxJPVM/Q3x8XzpfLFA9cChzKEEpP0Eu
ZW50ZXI6QSksUj0hMSE9PWEmJiFvbyxEPXNyKEwpLEY9aS5fZW50ZXJDYj14KGZ1bmN0aW9uKCl7
UiYmKFFuKGksaiksUW4oaSxFKSksRi5jYW5jZWxsZWQ/KFImJlFuKGksVCksSSYmSShpKSk6TSYm
TShpKSxpLl9lbnRlckNiPW51bGx9KTt0LmRhdGEuc2hvd3x8cnQodC5kYXRhLmhvb2t8fCh0LmRh
dGEuaG9vaz17fSksImluc2VydCIsZnVuY3Rpb24oKXt2YXIgZT1pLnBhcmVudE5vZGUsbj1lJiZl
Ll9wZW5kaW5nJiZlLl9wZW5kaW5nW3Qua2V5XTtuJiZuLnRhZz09PXQudGFnJiZuLmVsbS5fbGVh
dmVDYiYmbi5lbG0uX2xlYXZlQ2IoKSxMJiZMKGksRil9KSxOJiZOKGkpLFImJihZbihpLFQpLFlu
KGksRSksWG4oZnVuY3Rpb24oKXtZbihpLGopLFFuKGksVCksRi5jYW5jZWxsZWR8fER8fChhcihQ
KT9zZXRUaW1lb3V0KEYsUCk6dHIoaSxjLEYpKX0pKSx0LmRhdGEuc2hvdyYmKGUmJmUoKSxMJiZM
KGksRikpLFJ8fER8fEYoKX19fWZ1bmN0aW9uIG9yKHQsZSl7ZnVuY3Rpb24gaSgpe0MuY2FuY2Vs
bGVkfHwodC5kYXRhLnNob3d8fCgoby5wYXJlbnROb2RlLl9wZW5kaW5nfHwoby5wYXJlbnROb2Rl
Ll9wZW5kaW5nPXt9KSlbdC5rZXldPXQpLHYmJnYobyksYiYmKFluKG8sbCksWW4obyxkKSxYbihm
dW5jdGlvbigpe1luKG8sZiksUW4obyxsKSxDLmNhbmNlbGxlZHx8d3x8KGFyKCQpP3NldFRpbWVv
dXQoQywkKTp0cihvLHUsQykpfSkpLGgmJmgobyxDKSxifHx3fHxDKCkpfXZhciBvPXQuZWxtO3Io
by5fZW50ZXJDYikmJihvLl9lbnRlckNiLmNhbmNlbGxlZD0hMCxvLl9lbnRlckNiKCkpO3ZhciBh
PVpuKHQuZGF0YS50cmFuc2l0aW9uKTtpZihuKGEpKXJldHVybiBlKCk7aWYoIXIoby5fbGVhdmVD
YikmJjE9PT1vLm5vZGVUeXBlKXt2YXIgYz1hLmNzcyx1PWEudHlwZSxsPWEubGVhdmVDbGFzcyxm
PWEubGVhdmVUb0NsYXNzLGQ9YS5sZWF2ZUFjdGl2ZUNsYXNzLHY9YS5iZWZvcmVMZWF2ZSxoPWEu
bGVhdmUsbT1hLmFmdGVyTGVhdmUseT1hLmxlYXZlQ2FuY2VsbGVkLGc9YS5kZWxheUxlYXZlLF89
YS5kdXJhdGlvbixiPSExIT09YyYmIW9vLHc9c3IoaCksJD1wKHMoXyk/Xy5sZWF2ZTpfKSxDPW8u
X2xlYXZlQ2I9eChmdW5jdGlvbigpe28ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLl9wZW5kaW5n
JiYoby5wYXJlbnROb2RlLl9wZW5kaW5nW3Qua2V5XT1udWxsKSxiJiYoUW4obyxmKSxRbihvLGQp
KSxDLmNhbmNlbGxlZD8oYiYmUW4obyxsKSx5JiZ5KG8pKTooZSgpLG0mJm0obykpLG8uX2xlYXZl
Q2I9bnVsbH0pO2c/ZyhpKTppKCl9fWZ1bmN0aW9uIGFyKHQpe3JldHVybiJudW1iZXIiPT10eXBl
b2YgdCYmIWlzTmFOKHQpfWZ1bmN0aW9uIHNyKHQpe2lmKG4odCkpcmV0dXJuITE7dmFyIGU9dC5m
bnM7cmV0dXJuIHIoZSk/c3IoQXJyYXkuaXNBcnJheShlKT9lWzBdOmUpOih0Ll9sZW5ndGh8fHQu
bGVuZ3RoKT4xfWZ1bmN0aW9uIGNyKHQsZSl7ITAhPT1lLmRhdGEuc2hvdyYmaXIoZSl9ZnVuY3Rp
b24gdXIodCxlLG4pe3ZhciByPWUudmFsdWUsaT10Lm11bHRpcGxlO2lmKCFpfHxBcnJheS5pc0Fy
cmF5KHIpKXtmb3IodmFyIG8sYSxzPTAsYz10Lm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYoYT10
Lm9wdGlvbnNbc10saSlvPUMocixscihhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVk
PW8pO2Vsc2UgaWYoJChscihhKSxyKSlyZXR1cm4gdm9pZCh0LnNlbGVjdGVkSW5kZXghPT1zJiYo
dC5zZWxlY3RlZEluZGV4PXMpKTtpfHwodC5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gbHIo
dCl7cmV0dXJuIl92YWx1ZSJpbiB0P3QuX3ZhbHVlOnQudmFsdWV9ZnVuY3Rpb24gZnIodCl7dC50
YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIHByKHQpe3QudGFyZ2V0LmNvbXBvc2luZyYmKHQu
dGFyZ2V0LmNvbXBvc2luZz0hMSxkcih0LnRhcmdldCwiaW5wdXQiKSl9ZnVuY3Rpb24gZHIodCxl
KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpO24uaW5pdEV2ZW50KGUs
ITAsITApLHQuZGlzcGF0Y2hFdmVudChuKX1mdW5jdGlvbiB2cih0KXtyZXR1cm4hdC5jb21wb25l
bnRJbnN0YW5jZXx8dC5kYXRhJiZ0LmRhdGEudHJhbnNpdGlvbj90OnZyKHQuY29tcG9uZW50SW5z
dGFuY2UuX3Zub2RlKX1mdW5jdGlvbiBocih0KXt2YXIgZT10JiZ0LmNvbXBvbmVudE9wdGlvbnM7
cmV0dXJuIGUmJmUuQ3Rvci5vcHRpb25zLmFic3RyYWN0P2hyKGR0KGUuY2hpbGRyZW4pKTp0fWZ1
bmN0aW9uIG1yKHQpe3ZhciBlPXt9LG49dC4kb3B0aW9ucztmb3IodmFyIHIgaW4gbi5wcm9wc0Rh
dGEpZVtyXT10W3JdO3ZhciBpPW4uX3BhcmVudExpc3RlbmVycztmb3IodmFyIG8gaW4gaSllW0hp
KG8pXT1pW29dO3JldHVybiBlfWZ1bmN0aW9uIHlyKHQsZSl7aWYoL1xkLWtlZXAtYWxpdmUkLy50
ZXN0KGUudGFnKSlyZXR1cm4gdCgia2VlcC1hbGl2ZSIse3Byb3BzOmUuY29tcG9uZW50T3B0aW9u
cy5wcm9wc0RhdGF9KX1mdW5jdGlvbiBncih0KXtmb3IoO3Q9dC5wYXJlbnQ7KWlmKHQuZGF0YS50
cmFuc2l0aW9uKXJldHVybiEwfWZ1bmN0aW9uIF9yKHQsZSl7cmV0dXJuIGUua2V5PT09dC5rZXkm
JmUudGFnPT09dC50YWd9ZnVuY3Rpb24gYnIodCl7cmV0dXJuIHQuaXNDb21tZW50JiZ0LmFzeW5j
RmFjdG9yeX1mdW5jdGlvbiB3cih0KXt0LmVsbS5fbW92ZUNiJiZ0LmVsbS5fbW92ZUNiKCksdC5l
bG0uX2VudGVyQ2ImJnQuZWxtLl9lbnRlckNiKCl9ZnVuY3Rpb24gJHIodCl7dC5kYXRhLm5ld1Bv
cz10LmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlvbiBDcih0KXt2YXIgZT10LmRh
dGEucG9zLG49dC5kYXRhLm5ld1BvcyxyPWUubGVmdC1uLmxlZnQsaT1lLnRvcC1uLnRvcDtpZihy
fHxpKXt0LmRhdGEubW92ZWQ9ITA7dmFyIG89dC5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJr
aXRUcmFuc2Zvcm09InRyYW5zbGF0ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJh
dGlvbj0iMHMifX1mdW5jdGlvbiB4cih0LGUpe3ZhciBuPWU/X3MoZSk6eXM7aWYobi50ZXN0KHQp
KXtmb3IodmFyIHIsaSxvPVtdLGE9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyh0KTspe2k9ci5pbmRl
eCxpPmEmJm8ucHVzaChKU09OLnN0cmluZ2lmeSh0LnNsaWNlKGEsaSkpKTt2YXIgcz1kbihyWzFd
LnRyaW0oKSk7by5wdXNoKCJfcygiK3MrIikiKSxhPWkrclswXS5sZW5ndGh9cmV0dXJuIGE8dC5s
ZW5ndGgmJm8ucHVzaChKU09OLnN0cmluZ2lmeSh0LnNsaWNlKGEpKSksby5qb2luKCIrIil9fWZ1
bmN0aW9uIEFyKHQsZSl7dmFyIG49KGUud2Fybiwkbih0LCJjbGFzcyIpKTtuJiYodC5zdGF0aWND
bGFzcz1KU09OLnN0cmluZ2lmeShuKSk7dmFyIHI9d24odCwiY2xhc3MiLCExKTtyJiYodC5jbGFz
c0JpbmRpbmc9cil9ZnVuY3Rpb24ga3IodCl7dmFyIGU9IiI7cmV0dXJuIHQuc3RhdGljQ2xhc3Mm
JihlKz0ic3RhdGljQ2xhc3M6Iit0LnN0YXRpY0NsYXNzKyIsIiksdC5jbGFzc0JpbmRpbmcmJihl
Kz0iY2xhc3M6Iit0LmNsYXNzQmluZGluZysiLCIpLGV9ZnVuY3Rpb24gT3IodCxlKXt2YXIgbj0o
ZS53YXJuLCRuKHQsInN0eWxlIikpO2lmKG4pe3Quc3RhdGljU3R5bGU9SlNPTi5zdHJpbmdpZnko
RmEobikpfXZhciByPXduKHQsInN0eWxlIiwhMSk7ciYmKHQuc3R5bGVCaW5kaW5nPXIpfWZ1bmN0
aW9uIFNyKHQpe3ZhciBlPSIiO3JldHVybiB0LnN0YXRpY1N0eWxlJiYoZSs9InN0YXRpY1N0eWxl
OiIrdC5zdGF0aWNTdHlsZSsiLCIpLHQuc3R5bGVCaW5kaW5nJiYoZSs9InN0eWxlOigiK3Quc3R5
bGVCaW5kaW5nKyIpLCIpLGV9ZnVuY3Rpb24gVHIodCxlKXtlLnZhbHVlJiZ5bih0LCJ0ZXh0Q29u
dGVudCIsIl9zKCIrZS52YWx1ZSsiKSIpfWZ1bmN0aW9uIEVyKHQsZSl7ZS52YWx1ZSYmeW4odCwi
aW5uZXJIVE1MIiwiX3MoIitlLnZhbHVlKyIpIil9ZnVuY3Rpb24ganIodCxlKXt2YXIgbj1lP25j
OmVjO3JldHVybiB0LnJlcGxhY2UobixmdW5jdGlvbih0KXtyZXR1cm4gdGNbdF19KX1mdW5jdGlv
biBOcih0LGUpe2Z1bmN0aW9uIG4oZSl7bCs9ZSx0PXQuc3Vic3RyaW5nKGUpfWZ1bmN0aW9uIHIo
dCxuLHIpe3ZhciBpLHM7aWYobnVsbD09biYmKG49bCksbnVsbD09ciYmKHI9bCksdCYmKHM9dC50
b0xvd2VyQ2FzZSgpKSx0KWZvcihpPWEubGVuZ3RoLTE7aT49MCYmYVtpXS5sb3dlckNhc2VkVGFn
IT09cztpLS0pO2Vsc2UgaT0wO2lmKGk+PTApe2Zvcih2YXIgYz1hLmxlbmd0aC0xO2M+PWk7Yy0t
KWUuZW5kJiZlLmVuZChhW2NdLnRhZyxuLHIpO2EubGVuZ3RoPWksbz1pJiZhW2ktMV0udGFnfWVs
c2UiYnIiPT09cz9lLnN0YXJ0JiZlLnN0YXJ0KHQsW10sITAsbixyKToicCI9PT1zJiYoZS5zdGFy
dCYmZS5zdGFydCh0LFtdLCExLG4sciksZS5lbmQmJmUuZW5kKHQsbixyKSl9Zm9yKHZhciBpLG8s
YT1bXSxzPWUuZXhwZWN0SFRNTCxjPWUuaXNVbmFyeVRhZ3x8S2ksdT1lLmNhbkJlTGVmdE9wZW5U
YWd8fEtpLGw9MDt0Oyl7aWYoaT10LG8mJllzKG8pKXt2YXIgZj0wLHA9by50b0xvd2VyQ2FzZSgp
LGQ9UXNbcF18fChRc1twXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPykoPC8iK3ArIltePl0qPiki
LCJpIikpLHY9dC5yZXBsYWNlKGQsZnVuY3Rpb24odCxuLHIpe3JldHVybiBmPXIubGVuZ3RoLFlz
KHApfHwibm9zY3JpcHQiPT09cHx8KG49bi5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nLCIk
MSIpLnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo/KV1dPi9nLCIkMSIpKSxpYyhwLG4pJiYo
bj1uLnNsaWNlKDEpKSxlLmNoYXJzJiZlLmNoYXJzKG4pLCIifSk7bCs9dC5sZW5ndGgtdi5sZW5n
dGgsdD12LHIocCxsLWYsbCl9ZWxzZXt2YXIgaD10LmluZGV4T2YoIjwiKTtpZigwPT09aCl7aWYo
RnMudGVzdCh0KSl7dmFyIG09dC5pbmRleE9mKCItLVx4M2UiKTtpZihtPj0wKXtlLnNob3VsZEtl
ZXBDb21tZW50JiZlLmNvbW1lbnQodC5zdWJzdHJpbmcoNCxtKSksbihtKzMpO2NvbnRpbnVlfX1p
ZihCcy50ZXN0KHQpKXt2YXIgeT10LmluZGV4T2YoIl0+Iik7aWYoeT49MCl7bih5KzIpO2NvbnRp
bnVlfX12YXIgZz10Lm1hdGNoKERzKTtpZihnKXtuKGdbMF0ubGVuZ3RoKTtjb250aW51ZX12YXIg
Xz10Lm1hdGNoKFJzKTtpZihfKXt2YXIgYj1sO24oX1swXS5sZW5ndGgpLHIoX1sxXSxiLGwpO2Nv
bnRpbnVlfXZhciB3PWZ1bmN0aW9uKCl7dmFyIGU9dC5tYXRjaChJcyk7aWYoZSl7dmFyIHI9e3Rh
Z05hbWU6ZVsxXSxhdHRyczpbXSxzdGFydDpsfTtuKGVbMF0ubGVuZ3RoKTtmb3IodmFyIGksbzsh
KGk9dC5tYXRjaChQcykpJiYobz10Lm1hdGNoKE5zKSk7KW4ob1swXS5sZW5ndGgpLHIuYXR0cnMu
cHVzaChvKTtpZihpKXJldHVybiByLnVuYXJ5U2xhc2g9aVsxXSxuKGlbMF0ubGVuZ3RoKSxyLmVu
ZD1sLHJ9fSgpO2lmKHcpeyFmdW5jdGlvbih0KXt2YXIgbj10LnRhZ05hbWUsaT10LnVuYXJ5U2xh
c2g7cyYmKCJwIj09PW8mJmtzKG4pJiZyKG8pLHUobikmJm89PT1uJiZyKG4pKTtmb3IodmFyIGw9
YyhuKXx8ISFpLGY9dC5hdHRycy5sZW5ndGgscD1uZXcgQXJyYXkoZiksZD0wO2Q8ZjtkKyspe3Zh
ciB2PXQuYXR0cnNbZF07VXMmJi0xPT09dlswXS5pbmRleE9mKCciIicpJiYoIiI9PT12WzNdJiZk
ZWxldGUgdlszXSwiIj09PXZbNF0mJmRlbGV0ZSB2WzRdLCIiPT09dls1XSYmZGVsZXRlIHZbNV0p
O3ZhciBoPXZbM118fHZbNF18fHZbNV18fCIiO3BbZF09e25hbWU6dlsxXSx2YWx1ZTpqcihoLGUu
c2hvdWxkRGVjb2RlTmV3bGluZXMpfX1sfHwoYS5wdXNoKHt0YWc6bixsb3dlckNhc2VkVGFnOm4u
dG9Mb3dlckNhc2UoKSxhdHRyczpwfSksbz1uKSxlLnN0YXJ0JiZlLnN0YXJ0KG4scCxsLHQuc3Rh
cnQsdC5lbmQpfSh3KSxpYyhvLHQpJiZuKDEpO2NvbnRpbnVlfX12YXIgJD12b2lkIDAsQz12b2lk
IDAseD12b2lkIDA7aWYoaD49MCl7Zm9yKEM9dC5zbGljZShoKTshKFJzLnRlc3QoQyl8fElzLnRl
c3QoQyl8fEZzLnRlc3QoQyl8fEJzLnRlc3QoQyl8fCh4PUMuaW5kZXhPZigiPCIsMSkpPDApOylo
Kz14LEM9dC5zbGljZShoKTskPXQuc3Vic3RyaW5nKDAsaCksbihoKX1oPDAmJigkPXQsdD0iIiks
ZS5jaGFycyYmJCYmZS5jaGFycygkKX1pZih0PT09aSl7ZS5jaGFycyYmZS5jaGFycyh0KTticmVh
a319cigpfWZ1bmN0aW9uIExyKHQsZSl7ZnVuY3Rpb24gbih0KXt0LnByZSYmKHM9ITEpLHFzKHQu
dGFnKSYmKGM9ITEpfUhzPWUud2Fybnx8aG4scXM9ZS5pc1ByZVRhZ3x8S2ksV3M9ZS5tdXN0VXNl
UHJvcHx8S2ksR3M9ZS5nZXRUYWdOYW1lc3BhY2V8fEtpLHpzPW1uKGUubW9kdWxlcywidHJhbnNm
b3JtTm9kZSIpLEpzPW1uKGUubW9kdWxlcywicHJlVHJhbnNmb3JtTm9kZSIpLEtzPW1uKGUubW9k
dWxlcywicG9zdFRyYW5zZm9ybU5vZGUiKSxWcz1lLmRlbGltaXRlcnM7dmFyIHIsaSxvPVtdLGE9
ITEhPT1lLnByZXNlcnZlV2hpdGVzcGFjZSxzPSExLGM9ITE7cmV0dXJuIE5yKHQse3dhcm46SHMs
ZXhwZWN0SFRNTDplLmV4cGVjdEhUTUwsaXNVbmFyeVRhZzplLmlzVW5hcnlUYWcsY2FuQmVMZWZ0
T3BlblRhZzplLmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6ZS5zaG91bGRE
ZWNvZGVOZXdsaW5lcyxzaG91bGRLZWVwQ29tbWVudDplLmNvbW1lbnRzLHN0YXJ0OmZ1bmN0aW9u
KHQsYSx1KXt2YXIgbD1pJiZpLm5zfHxHcyh0KTtpbyYmInN2ZyI9PT1sJiYoYT1ZcihhKSk7dmFy
IGY9e3R5cGU6MSx0YWc6dCxhdHRyc0xpc3Q6YSxhdHRyc01hcDpHcihhKSxwYXJlbnQ6aSxjaGls
ZHJlbjpbXX07bCYmKGYubnM9bCksWHIoZikmJiFtbygpJiYoZi5mb3JiaWRkZW49ITApO2Zvcih2
YXIgcD0wO3A8SnMubGVuZ3RoO3ArKylKc1twXShmLGUpO2lmKHN8fChNcihmKSxmLnByZSYmKHM9
ITApKSxxcyhmLnRhZykmJihjPSEwKSxzKUlyKGYpO2Vsc2V7RHIoZiksRnIoZiksVnIoZiksUHIo
ZiksZi5wbGFpbj0hZi5rZXkmJiFhLmxlbmd0aCxScihmKSx6cihmKSxKcihmKTtmb3IodmFyIGQ9
MDtkPHpzLmxlbmd0aDtkKyspenNbZF0oZixlKTtLcihmKX1pZihyP28ubGVuZ3RofHxyLmlmJiYo
Zi5lbHNlaWZ8fGYuZWxzZSkmJkhyKHIse2V4cDpmLmVsc2VpZixibG9jazpmfSk6cj1mLGkmJiFm
LmZvcmJpZGRlbilpZihmLmVsc2VpZnx8Zi5lbHNlKUJyKGYsaSk7ZWxzZSBpZihmLnNsb3RTY29w
ZSl7aS5wbGFpbj0hMTt2YXIgdj1mLnNsb3RUYXJnZXR8fCciZGVmYXVsdCInOyhpLnNjb3BlZFNs
b3RzfHwoaS5zY29wZWRTbG90cz17fSkpW3ZdPWZ9ZWxzZSBpLmNoaWxkcmVuLnB1c2goZiksZi5w
YXJlbnQ9aTt1P24oZik6KGk9ZixvLnB1c2goZikpO2Zvcih2YXIgaD0wO2g8S3MubGVuZ3RoO2gr
KylLc1toXShmLGUpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIgdD1vW28ubGVuZ3RoLTFdLGU9dC5jaGls
ZHJlblt0LmNoaWxkcmVuLmxlbmd0aC0xXTtlJiYzPT09ZS50eXBlJiYiICI9PT1lLnRleHQmJiFj
JiZ0LmNoaWxkcmVuLnBvcCgpLG8ubGVuZ3RoLT0xLGk9b1tvLmxlbmd0aC0xXSxuKHQpfSxjaGFy
czpmdW5jdGlvbih0KXtpZihpJiYoIWlvfHwidGV4dGFyZWEiIT09aS50YWd8fGkuYXR0cnNNYXAu
cGxhY2Vob2xkZXIhPT10KSl7dmFyIGU9aS5jaGlsZHJlbjtpZih0PWN8fHQudHJpbSgpP1pyKGkp
P3Q6cGModCk6YSYmZS5sZW5ndGg/IiAiOiIiKXt2YXIgbjshcyYmIiAiIT09dCYmKG49eHIodCxW
cykpP2UucHVzaCh7dHlwZToyLGV4cHJlc3Npb246bix0ZXh0OnR9KToiICI9PT10JiZlLmxlbmd0
aCYmIiAiPT09ZVtlLmxlbmd0aC0xXS50ZXh0fHxlLnB1c2goe3R5cGU6Myx0ZXh0OnR9KX19fSxj
b21tZW50OmZ1bmN0aW9uKHQpe2kuY2hpbGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6dCxpc0NvbW1l
bnQ6ITB9KX19KSxyfWZ1bmN0aW9uIE1yKHQpe251bGwhPSRuKHQsInYtcHJlIikmJih0LnByZT0h
MCl9ZnVuY3Rpb24gSXIodCl7dmFyIGU9dC5hdHRyc0xpc3QubGVuZ3RoO2lmKGUpZm9yKHZhciBu
PXQuYXR0cnM9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09e25hbWU6dC5hdHRyc0xpc3Rb
cl0ubmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lmeSh0LmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2Ug
dC5wcmV8fCh0LnBsYWluPSEwKX1mdW5jdGlvbiBQcih0KXt2YXIgZT13bih0LCJrZXkiKTtlJiYo
dC5rZXk9ZSl9ZnVuY3Rpb24gUnIodCl7dmFyIGU9d24odCwicmVmIik7ZSYmKHQucmVmPWUsdC5y
ZWZJbkZvcj1xcih0KSl9ZnVuY3Rpb24gRHIodCl7dmFyIGU7aWYoZT0kbih0LCJ2LWZvciIpKXt2
YXIgbj1lLm1hdGNoKHNjKTtpZighbilyZXR1cm47dC5mb3I9blsyXS50cmltKCk7dmFyIHI9blsx
XS50cmltKCksaT1yLm1hdGNoKGNjKTtpPyh0LmFsaWFzPWlbMV0udHJpbSgpLHQuaXRlcmF0b3Ix
PWlbMl0udHJpbSgpLGlbM10mJih0Lml0ZXJhdG9yMj1pWzNdLnRyaW0oKSkpOnQuYWxpYXM9cn19
ZnVuY3Rpb24gRnIodCl7dmFyIGU9JG4odCwidi1pZiIpO2lmKGUpdC5pZj1lLEhyKHQse2V4cDpl
LGJsb2NrOnR9KTtlbHNle251bGwhPSRuKHQsInYtZWxzZSIpJiYodC5lbHNlPSEwKTt2YXIgbj0k
bih0LCJ2LWVsc2UtaWYiKTtuJiYodC5lbHNlaWY9bil9fWZ1bmN0aW9uIEJyKHQsZSl7dmFyIG49
VXIoZS5jaGlsZHJlbik7biYmbi5pZiYmSHIobix7ZXhwOnQuZWxzZWlmLGJsb2NrOnR9KX1mdW5j
dGlvbiBVcih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tOyl7aWYoMT09PXRbZV0udHlwZSlyZXR1
cm4gdFtlXTt0LnBvcCgpfX1mdW5jdGlvbiBIcih0LGUpe3QuaWZDb25kaXRpb25zfHwodC5pZkNv
bmRpdGlvbnM9W10pLHQuaWZDb25kaXRpb25zLnB1c2goZSl9ZnVuY3Rpb24gVnIodCl7bnVsbCE9
JG4odCwidi1vbmNlIikmJih0Lm9uY2U9ITApfWZ1bmN0aW9uIHpyKHQpe2lmKCJzbG90Ij09PXQu
dGFnKXQuc2xvdE5hbWU9d24odCwibmFtZSIpO2Vsc2V7dmFyIGU9d24odCwic2xvdCIpO2UmJih0
LnNsb3RUYXJnZXQ9JyIiJz09PWU/JyJkZWZhdWx0Iic6ZSksInRlbXBsYXRlIj09PXQudGFnJiYo
dC5zbG90U2NvcGU9JG4odCwic2NvcGUiKSl9fWZ1bmN0aW9uIEpyKHQpe3ZhciBlOyhlPXduKHQs
ImlzIikpJiYodC5jb21wb25lbnQ9ZSksbnVsbCE9JG4odCwiaW5saW5lLXRlbXBsYXRlIikmJih0
LmlubGluZVRlbXBsYXRlPSEwKX1mdW5jdGlvbiBLcih0KXt2YXIgZSxuLHIsaSxvLGEscyxjPXQu
YXR0cnNMaXN0O2ZvcihlPTAsbj1jLmxlbmd0aDtlPG47ZSsrKWlmKHI9aT1jW2VdLm5hbWUsbz1j
W2VdLnZhbHVlLGFjLnRlc3QocikpaWYodC5oYXNCaW5kaW5ncz0hMCxhPVdyKHIpLGEmJihyPXIu
cmVwbGFjZShmYywiIikpLGxjLnRlc3Qocikpcj1yLnJlcGxhY2UobGMsIiIpLG89ZG4obykscz0h
MSxhJiYoYS5wcm9wJiYocz0hMCwiaW5uZXJIdG1sIj09PShyPUhpKHIpKSYmKHI9ImlubmVySFRN
TCIpKSxhLmNhbWVsJiYocj1IaShyKSksYS5zeW5jJiZibih0LCJ1cGRhdGU6IitIaShyKSx4bihv
LCIkZXZlbnQiKSkpLHN8fCF0LmNvbXBvbmVudCYmV3ModC50YWcsdC5hdHRyc01hcC50eXBlLHIp
P3luKHQscixvKTpnbih0LHIsbyk7ZWxzZSBpZihvYy50ZXN0KHIpKXI9ci5yZXBsYWNlKG9jLCIi
KSxibih0LHIsbyxhLCExLEhzKTtlbHNle3I9ci5yZXBsYWNlKGFjLCIiKTt2YXIgdT1yLm1hdGNo
KHVjKSxsPXUmJnVbMV07bCYmKHI9ci5zbGljZSgwLC0obC5sZW5ndGgrMSkpKSxfbih0LHIsaSxv
LGwsYSl9ZWxzZXtnbih0LHIsSlNPTi5zdHJpbmdpZnkobykpfX1mdW5jdGlvbiBxcih0KXtmb3Io
dmFyIGU9dDtlOyl7aWYodm9pZCAwIT09ZS5mb3IpcmV0dXJuITA7ZT1lLnBhcmVudH1yZXR1cm4h
MX1mdW5jdGlvbiBXcih0KXt2YXIgZT10Lm1hdGNoKGZjKTtpZihlKXt2YXIgbj17fTtyZXR1cm4g
ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdC5zbGljZSgxKV09ITB9KSxufX1mdW5jdGlvbiBHcih0
KXtmb3IodmFyIGU9e30sbj0wLHI9dC5sZW5ndGg7bjxyO24rKyllW3Rbbl0ubmFtZV09dFtuXS52
YWx1ZTtyZXR1cm4gZX1mdW5jdGlvbiBacih0KXtyZXR1cm4ic2NyaXB0Ij09PXQudGFnfHwic3R5
bGUiPT09dC50YWd9ZnVuY3Rpb24gWHIodCl7cmV0dXJuInN0eWxlIj09PXQudGFnfHwic2NyaXB0
Ij09PXQudGFnJiYoIXQuYXR0cnNNYXAudHlwZXx8InRleHQvamF2YXNjcmlwdCI9PT10LmF0dHJz
TWFwLnR5cGUpfWZ1bmN0aW9uIFlyKHQpe2Zvcih2YXIgZT1bXSxuPTA7bjx0Lmxlbmd0aDtuKysp
e3ZhciByPXRbbl07ZGMudGVzdChyLm5hbWUpfHwoci5uYW1lPXIubmFtZS5yZXBsYWNlKHZjLCIi
KSxlLnB1c2gocikpfXJldHVybiBlfWZ1bmN0aW9uIFFyKHQsZSl7dCYmKFpzPWhjKGUuc3RhdGlj
S2V5c3x8IiIpLFhzPWUuaXNSZXNlcnZlZFRhZ3x8S2ksZWkodCksbmkodCwhMSkpfWZ1bmN0aW9u
IHRpKHQpe3JldHVybiBkKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50
LGNoaWxkcmVuLGF0dHJzIisodD8iLCIrdDoiIikpfWZ1bmN0aW9uIGVpKHQpe2lmKHQuc3RhdGlj
PXJpKHQpLDE9PT10LnR5cGUpe2lmKCFYcyh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10
LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBlPTAsbj10LmNoaWxk
cmVuLmxlbmd0aDtlPG47ZSsrKXt2YXIgcj10LmNoaWxkcmVuW2VdO2VpKHIpLHIuc3RhdGljfHwo
dC5zdGF0aWM9ITEpfWlmKHQuaWZDb25kaXRpb25zKWZvcih2YXIgaT0xLG89dC5pZkNvbmRpdGlv
bnMubGVuZ3RoO2k8bztpKyspe3ZhciBhPXQuaWZDb25kaXRpb25zW2ldLmJsb2NrO2VpKGEpLGEu
c3RhdGljfHwodC5zdGF0aWM9ITEpfX19ZnVuY3Rpb24gbmkodCxlKXtpZigxPT09dC50eXBlKXtp
ZigodC5zdGF0aWN8fHQub25jZSkmJih0LnN0YXRpY0luRm9yPWUpLHQuc3RhdGljJiZ0LmNoaWxk
cmVuLmxlbmd0aCYmKDEhPT10LmNoaWxkcmVuLmxlbmd0aHx8MyE9PXQuY2hpbGRyZW5bMF0udHlw
ZSkpcmV0dXJuIHZvaWQodC5zdGF0aWNSb290PSEwKTtpZih0LnN0YXRpY1Jvb3Q9ITEsdC5jaGls
ZHJlbilmb3IodmFyIG49MCxyPXQuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspbmkodC5jaGlsZHJl
bltuXSxlfHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIGk9MSxvPXQuaWZDb25k
aXRpb25zLmxlbmd0aDtpPG87aSsrKW5pKHQuaWZDb25kaXRpb25zW2ldLmJsb2NrLGUpfX1mdW5j
dGlvbiByaSh0KXtyZXR1cm4gMiE9PXQudHlwZSYmKDM9PT10LnR5cGV8fCEoIXQucHJlJiYodC5o
YXNCaW5kaW5nc3x8dC5pZnx8dC5mb3J8fERpKHQudGFnKXx8IVhzKHQudGFnKXx8aWkodCl8fCFP
YmplY3Qua2V5cyh0KS5ldmVyeShacykpKSl9ZnVuY3Rpb24gaWkodCl7Zm9yKDt0LnBhcmVudDsp
e2lmKHQ9dC5wYXJlbnQsInRlbXBsYXRlIiE9PXQudGFnKXJldHVybiExO2lmKHQuZm9yKXJldHVy
biEwfXJldHVybiExfWZ1bmN0aW9uIG9pKHQsZSxuKXt2YXIgcj1lPyJuYXRpdmVPbjp7Ijoib246
eyI7Zm9yKHZhciBpIGluIHQpe3IrPSciJytpKyciOicrYWkoaSx0W2ldKSsiLCJ9cmV0dXJuIHIu
c2xpY2UoMCwtMSkrIn0ifWZ1bmN0aW9uIGFpKHQsZSl7aWYoIWUpcmV0dXJuImZ1bmN0aW9uKCl7
fSI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iWyIrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
IGFpKHQsZSl9KS5qb2luKCIsIikrIl0iO3ZhciBuPXljLnRlc3QoZS52YWx1ZSkscj1tYy50ZXN0
KGUudmFsdWUpO2lmKGUubW9kaWZpZXJzKXt2YXIgaT0iIixvPSIiLGE9W107Zm9yKHZhciBzIGlu
IGUubW9kaWZpZXJzKWJjW3NdPyhvKz1iY1tzXSxnY1tzXSYmYS5wdXNoKHMpKTphLnB1c2gocyk7
YS5sZW5ndGgmJihpKz1zaShhKSksbyYmKGkrPW8pO3JldHVybiJmdW5jdGlvbigkZXZlbnQpeyIr
aSsobj9lLnZhbHVlKyIoJGV2ZW50KSI6cj8iKCIrZS52YWx1ZSsiKSgkZXZlbnQpIjplLnZhbHVl
KSsifSJ9cmV0dXJuIG58fHI/ZS52YWx1ZToiZnVuY3Rpb24oJGV2ZW50KXsiK2UudmFsdWUrIn0i
fWZ1bmN0aW9uIHNpKHQpe3JldHVybiJpZighKCdidXR0b24nIGluICRldmVudCkmJiIrdC5tYXAo
Y2kpLmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsifWZ1bmN0aW9uIGNpKHQpe3ZhciBlPXBhcnNl
SW50KHQsMTApO2lmKGUpcmV0dXJuIiRldmVudC5rZXlDb2RlIT09IitlO3ZhciBuPWdjW3RdO3Jl
dHVybiJfaygkZXZlbnQua2V5Q29kZSwiK0pTT04uc3RyaW5naWZ5KHQpKyhuPyIsIitKU09OLnN0
cmluZ2lmeShuKToiIikrIikifWZ1bmN0aW9uIHVpKHQsZSl7dC53cmFwTGlzdGVuZXJzPWZ1bmN0
aW9uKHQpe3JldHVybiJfZygiK3QrIiwiK2UudmFsdWUrIikifX1mdW5jdGlvbiBsaSh0LGUpe3Qu
d3JhcERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCciK3QudGFnKyInLCIrZS52YWx1
ZSsiLCIrKGUubW9kaWZpZXJzJiZlLm1vZGlmaWVycy5wcm9wPyJ0cnVlIjoiZmFsc2UiKSsoZS5t
b2RpZmllcnMmJmUubW9kaWZpZXJzLnN5bmM/Iix0cnVlIjoiIikrIikifX1mdW5jdGlvbiBmaSh0
LGUpe3ZhciBuPW5ldyAkYyhlKTtyZXR1cm57cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiKyh0
P3BpKHQsbik6J19jKCJkaXYiKScpKyJ9IixzdGF0aWNSZW5kZXJGbnM6bi5zdGF0aWNSZW5kZXJG
bnN9fWZ1bmN0aW9uIHBpKHQsZSl7aWYodC5zdGF0aWNSb290JiYhdC5zdGF0aWNQcm9jZXNzZWQp
cmV0dXJuIGRpKHQsZSk7aWYodC5vbmNlJiYhdC5vbmNlUHJvY2Vzc2VkKXJldHVybiB2aSh0LGUp
O2lmKHQuZm9yJiYhdC5mb3JQcm9jZXNzZWQpcmV0dXJuIHlpKHQsZSk7aWYodC5pZiYmIXQuaWZQ
cm9jZXNzZWQpcmV0dXJuIGhpKHQsZSk7aWYoInRlbXBsYXRlIiE9PXQudGFnfHx0LnNsb3RUYXJn
ZXQpe2lmKCJzbG90Ij09PXQudGFnKXJldHVybiBFaSh0LGUpO3ZhciBuO2lmKHQuY29tcG9uZW50
KW49amkodC5jb21wb25lbnQsdCxlKTtlbHNle3ZhciByPXQucGxhaW4/dm9pZCAwOmdpKHQsZSks
aT10LmlubGluZVRlbXBsYXRlP251bGw6eGkodCxlLCEwKTtuPSJfYygnIit0LnRhZysiJyIrKHI/
IiwiK3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzxlLnRyYW5zZm9ybXMubGVu
Z3RoO28rKyluPWUudHJhbnNmb3Jtc1tvXSh0LG4pO3JldHVybiBufXJldHVybiB4aSh0LGUpfHwi
dm9pZCAwIn1mdW5jdGlvbiBkaSh0LGUpe3JldHVybiB0LnN0YXRpY1Byb2Nlc3NlZD0hMCxlLnN0
YXRpY1JlbmRlckZucy5wdXNoKCJ3aXRoKHRoaXMpe3JldHVybiAiK3BpKHQsZSkrIn0iKSwiX20o
IisoZS5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoLTEpKyh0LnN0YXRpY0luRm9yPyIsdHJ1ZSI6IiIp
KyIpIn1mdW5jdGlvbiB2aSh0LGUpe2lmKHQub25jZVByb2Nlc3NlZD0hMCx0LmlmJiYhdC5pZlBy
b2Nlc3NlZClyZXR1cm4gaGkodCxlKTtpZih0LnN0YXRpY0luRm9yKXtmb3IodmFyIG49IiIscj10
LnBhcmVudDtyOyl7aWYoci5mb3Ipe249ci5rZXk7YnJlYWt9cj1yLnBhcmVudH1yZXR1cm4gbj8i
X28oIitwaSh0LGUpKyIsIitlLm9uY2VJZCsrKyhuPyIsIituOiIiKSsiKSI6cGkodCxlKX1yZXR1
cm4gZGkodCxlKX1mdW5jdGlvbiBoaSh0LGUsbixyKXtyZXR1cm4gdC5pZlByb2Nlc3NlZD0hMCxt
aSh0LmlmQ29uZGl0aW9ucy5zbGljZSgpLGUsbixyKX1mdW5jdGlvbiBtaSh0LGUsbixyKXtmdW5j
dGlvbiBpKHQpe3JldHVybiBuP24odCxlKTp0Lm9uY2U/dmkodCxlKTpwaSh0LGUpfWlmKCF0Lmxl
bmd0aClyZXR1cm4gcnx8Il9lKCkiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/IigiK28u
ZXhwKyIpPyIraShvLmJsb2NrKSsiOiIrbWkodCxlLG4scik6IiIraShvLmJsb2NrKX1mdW5jdGlv
biB5aSh0LGUsbixyKXt2YXIgaT10LmZvcixvPXQuYWxpYXMsYT10Lml0ZXJhdG9yMT8iLCIrdC5p
dGVyYXRvcjE6IiIscz10Lml0ZXJhdG9yMj8iLCIrdC5pdGVyYXRvcjI6IiI7cmV0dXJuIHQuZm9y
UHJvY2Vzc2VkPSEwLChyfHwiX2wiKSsiKCgiK2krIiksZnVuY3Rpb24oIitvK2ErcysiKXtyZXR1
cm4gIisobnx8cGkpKHQsZSkrIn0pIn1mdW5jdGlvbiBnaSh0LGUpe3ZhciBuPSJ7IixyPV9pKHQs
ZSk7ciYmKG4rPXIrIiwiKSx0LmtleSYmKG4rPSJrZXk6Iit0LmtleSsiLCIpLHQucmVmJiYobis9
InJlZjoiK3QucmVmKyIsIiksdC5yZWZJbkZvciYmKG4rPSJyZWZJbkZvcjp0cnVlLCIpLHQucHJl
JiYobis9InByZTp0cnVlLCIpLHQuY29tcG9uZW50JiYobis9J3RhZzoiJyt0LnRhZysnIiwnKTtm
b3IodmFyIGk9MDtpPGUuZGF0YUdlbkZucy5sZW5ndGg7aSsrKW4rPWUuZGF0YUdlbkZuc1tpXSh0
KTtpZih0LmF0dHJzJiYobis9ImF0dHJzOnsiK05pKHQuYXR0cnMpKyJ9LCIpLHQucHJvcHMmJihu
Kz0iZG9tUHJvcHM6eyIrTmkodC5wcm9wcykrIn0sIiksdC5ldmVudHMmJihuKz1vaSh0LmV2ZW50
cywhMSxlLndhcm4pKyIsIiksdC5uYXRpdmVFdmVudHMmJihuKz1vaSh0Lm5hdGl2ZUV2ZW50cywh
MCxlLndhcm4pKyIsIiksdC5zbG90VGFyZ2V0JiYobis9InNsb3Q6Iit0LnNsb3RUYXJnZXQrIiwi
KSx0LnNjb3BlZFNsb3RzJiYobis9d2kodC5zY29wZWRTbG90cyxlKSsiLCIpLHQubW9kZWwmJihu
Kz0ibW9kZWw6e3ZhbHVlOiIrdC5tb2RlbC52YWx1ZSsiLGNhbGxiYWNrOiIrdC5tb2RlbC5jYWxs
YmFjaysiLGV4cHJlc3Npb246Iit0Lm1vZGVsLmV4cHJlc3Npb24rIn0sIiksdC5pbmxpbmVUZW1w
bGF0ZSl7dmFyIG89YmkodCxlKTtvJiYobis9bysiLCIpfXJldHVybiBuPW4ucmVwbGFjZSgvLCQv
LCIiKSsifSIsdC53cmFwRGF0YSYmKG49dC53cmFwRGF0YShuKSksdC53cmFwTGlzdGVuZXJzJiYo
bj10LndyYXBMaXN0ZW5lcnMobikpLG59ZnVuY3Rpb24gX2kodCxlKXt2YXIgbj10LmRpcmVjdGl2
ZXM7aWYobil7dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxl
bmd0aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgdT1lLmRpcmVjdGl2ZXNbby5uYW1lXTt1JiYo
YT0hIXUodCxvLGUud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFt
ZToiJytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNz
aW9uOiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8nLGFyZzoiJytvLmFyZysn
Iic6IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZp
ZXJzKToiIikrIn0sIil9cmV0dXJuIGM/cy5zbGljZSgwLC0xKSsiXSI6dm9pZCAwfX1mdW5jdGlv
biBiaSh0LGUpe3ZhciBuPXQuY2hpbGRyZW5bMF07aWYoMT09PW4udHlwZSl7dmFyIHI9Zmkobixl
Lm9wdGlvbnMpO3JldHVybiJpbmxpbmVUZW1wbGF0ZTp7cmVuZGVyOmZ1bmN0aW9uKCl7IityLnJl
bmRlcisifSxzdGF0aWNSZW5kZXJGbnM6WyIrci5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9u
KHQpe3JldHVybiJmdW5jdGlvbigpeyIrdCsifSJ9KS5qb2luKCIsIikrIl19In19ZnVuY3Rpb24g
d2kodCxlKXtyZXR1cm4ic2NvcGVkU2xvdHM6X3UoWyIrT2JqZWN0LmtleXModCkubWFwKGZ1bmN0
aW9uKG4pe3JldHVybiAkaShuLHRbbl0sZSl9KS5qb2luKCIsIikrIl0pIn1mdW5jdGlvbiAkaSh0
LGUsbil7cmV0dXJuIGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQ/Q2kodCxlLG4pOiJ7a2V5OiIrdCsi
LGZuOmZ1bmN0aW9uKCIrU3RyaW5nKGUuYXR0cnNNYXAuc2NvcGUpKyIpe3JldHVybiAiKygidGVt
cGxhdGUiPT09ZS50YWc/eGkoZSxuKXx8InZvaWQgMCI6cGkoZSxuKSkrIn19In1mdW5jdGlvbiBD
aSh0LGUsbil7dmFyIHI9ZS5mb3IsaT1lLmFsaWFzLG89ZS5pdGVyYXRvcjE/IiwiK2UuaXRlcmF0
b3IxOiIiLGE9ZS5pdGVyYXRvcjI/IiwiK2UuaXRlcmF0b3IyOiIiO3JldHVybiBlLmZvclByb2Nl
c3NlZD0hMCwiX2woKCIrcisiKSxmdW5jdGlvbigiK2krbythKyIpe3JldHVybiAiKyRpKHQsZSxu
KSsifSkifWZ1bmN0aW9uIHhpKHQsZSxuLHIsaSl7dmFyIG89dC5jaGlsZHJlbjtpZihvLmxlbmd0
aCl7dmFyIGE9b1swXTtpZigxPT09by5sZW5ndGgmJmEuZm9yJiYidGVtcGxhdGUiIT09YS50YWcm
JiJzbG90IiE9PWEudGFnKXJldHVybihyfHxwaSkoYSxlKTt2YXIgcz1uP0FpKG8sZS5tYXliZUNv
bXBvbmVudCk6MCxjPWl8fE9pO3JldHVybiJbIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYyh0
LGUpfSkuam9pbigiLCIpKyJdIisocz8iLCIrczoiIil9fWZ1bmN0aW9uIEFpKHQsZSl7Zm9yKHZh
ciBuPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaT10W3JdO2lmKDE9PT1pLnR5cGUpe2lmKGtp
KGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbih0KXtyZXR1
cm4ga2kodC5ibG9jayl9KSl7bj0yO2JyZWFrfShlKGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNv
bmRpdGlvbnMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LmJsb2NrKX0pKSYmKG49MSl9fXJl
dHVybiBufWZ1bmN0aW9uIGtpKHQpe3JldHVybiB2b2lkIDAhPT10LmZvcnx8InRlbXBsYXRlIj09
PXQudGFnfHwic2xvdCI9PT10LnRhZ31mdW5jdGlvbiBPaSh0LGUpe3JldHVybiAxPT09dC50eXBl
P3BpKHQsZSk6Mz09PXQudHlwZSYmdC5pc0NvbW1lbnQ/VGkodCk6U2kodCl9ZnVuY3Rpb24gU2ko
dCl7cmV0dXJuIl92KCIrKDI9PT10LnR5cGU/dC5leHByZXNzaW9uOkxpKEpTT04uc3RyaW5naWZ5
KHQudGV4dCkpKSsiKSJ9ZnVuY3Rpb24gVGkodCl7cmV0dXJuIl9lKCIrSlNPTi5zdHJpbmdpZnko
dC50ZXh0KSsiKSJ9ZnVuY3Rpb24gRWkodCxlKXt2YXIgbj10LnNsb3ROYW1lfHwnImRlZmF1bHQi
JyxyPXhpKHQsZSksaT0iX3QoIituKyhyPyIsIityOiIiKSxvPXQuYXR0cnMmJiJ7Iit0LmF0dHJz
Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gSGkodC5uYW1lKSsiOiIrdC52YWx1ZX0pLmpvaW4oIiwi
KSsifSIsYT10LmF0dHJzTWFwWyJ2LWJpbmQiXTtyZXR1cm4hbyYmIWF8fHJ8fChpKz0iLG51bGwi
KSxvJiYoaSs9IiwiK28pLGEmJihpKz0obz8iIjoiLG51bGwiKSsiLCIrYSksaSsiKSJ9ZnVuY3Rp
b24gamkodCxlLG4pe3ZhciByPWUuaW5saW5lVGVtcGxhdGU/bnVsbDp4aShlLG4sITApO3JldHVy
biJfYygiK3QrIiwiK2dpKGUsbikrKHI/IiwiK3I6IiIpKyIpIn1mdW5jdGlvbiBOaSh0KXtmb3Io
dmFyIGU9IiIsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2UrPSciJytyLm5hbWUrJyI6
JytMaShyLnZhbHVlKSsiLCJ9cmV0dXJuIGUuc2xpY2UoMCwtMSl9ZnVuY3Rpb24gTGkodCl7cmV0
dXJuIHQucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1
MjAyOSIpfWZ1bmN0aW9uIE1pKHQsZSl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24odCl9Y2F0Y2go
bil7cmV0dXJuIGUucHVzaCh7ZXJyOm4sY29kZTp0fSksd319ZnVuY3Rpb24gSWkodCl7dmFyIGU9
T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obixyLGkpe3I9cnx8e307dmFyIG89
ci5kZWxpbWl0ZXJzP1N0cmluZyhyLmRlbGltaXRlcnMpK246bjtpZihlW29dKXJldHVybiBlW29d
O3ZhciBhPXQobixyKSxzPXt9LGM9W107cmV0dXJuIHMucmVuZGVyPU1pKGEucmVuZGVyLGMpLHMu
c3RhdGljUmVuZGVyRm5zPWEuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4g
TWkodCxjKX0pLGVbb109c319ZnVuY3Rpb24gUGkodCl7aWYodC5vdXRlckhUTUwpcmV0dXJuIHQu
b3V0ZXJIVE1MO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmFw
cGVuZENoaWxkKHQuY2xvbmVOb2RlKCEwKSksZS5pbm5lckhUTUx9dmFyIFJpPU9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcsRGk9ZCgic2xvdCxjb21wb25lbnQiLCEwKSxGaT1kKCJrZXkscmVmLHNs
b3QsaXMiKSxCaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFVpPS8tKFx3KS9nLEhp
PW0oZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShVaSxmdW5jdGlvbih0LGUpe3JldHVybiBl
P2UudG9VcHBlckNhc2UoKToiIn0pfSksVmk9bShmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQo
MCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfSksemk9LyhbXi1dKShbQS1aXSkvZyxKaT1tKGZ1
bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoemksIiQxLSQyIikucmVwbGFjZSh6aSwiJDEtJDIi
KS50b0xvd2VyQ2FzZSgpfSksS2k9ZnVuY3Rpb24odCxlLG4pe3JldHVybiExfSxxaT1mdW5jdGlv
bih0KXtyZXR1cm4gdH0sV2k9ImRhdGEtc2VydmVyLXJlbmRlcmVkIixHaT1bImNvbXBvbmVudCIs
ImRpcmVjdGl2ZSIsImZpbHRlciJdLFppPVsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9y
ZU1vdW50IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95
IiwiZGVzdHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiXSxYaT17b3B0aW9uTWVyZ2VT
dHJhdGVnaWVzOk9iamVjdC5jcmVhdGUobnVsbCksc2lsZW50OiExLHByb2R1Y3Rpb25UaXA6ITEs
ZGV2dG9vbHM6ITEscGVyZm9ybWFuY2U6ITEsZXJyb3JIYW5kbGVyOm51bGwsd2FybkhhbmRsZXI6
bnVsbCxpZ25vcmVkRWxlbWVudHM6W10sa2V5Q29kZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxpc1Jl
c2VydmVkVGFnOktpLGlzUmVzZXJ2ZWRBdHRyOktpLGlzVW5rbm93bkVsZW1lbnQ6S2ksZ2V0VGFn
TmFtZXNwYWNlOncscGFyc2VQbGF0Zm9ybVRhZ05hbWU6cWksbXVzdFVzZVByb3A6S2ksX2xpZmVj
eWNsZUhvb2tzOlppfSxZaT1PYmplY3QuZnJlZXplKHt9KSxRaT0vW15cdy4kXS8sdG89dyxlbz0i
X19wcm90b19fImlue30sbm89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cscm89bm8mJndpbmRv
dy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksaW89cm8mJi9tc2llfHRyaWRlbnQv
LnRlc3Qocm8pLG9vPXJvJiZyby5pbmRleE9mKCJtc2llIDkuMCIpPjAsYW89cm8mJnJvLmluZGV4
T2YoImVkZ2UvIik+MCxzbz1ybyYmcm8uaW5kZXhPZigiYW5kcm9pZCIpPjAsY289cm8mJi9pcGhv
bmV8aXBhZHxpcG9kfGlvcy8udGVzdChybyksdW89cm8mJi9jaHJvbWVcL1xkKy8udGVzdChybykm
JiFhbyxsbz17fS53YXRjaCxmbz0hMTtpZihubyl0cnl7dmFyIHBvPXt9O09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShwbywicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe2ZvPSEwfX0pLHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJ0ZXN0LXBhc3NpdmUiLG51bGwscG8pfWNhdGNoKHQpe312YXIgdm8saG8s
bW89ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dm8mJih2bz0hbm8mJnZvaWQgMCE9PXQmJiJz
ZXJ2ZXIiPT09dC5wcm9jZXNzLmVudi5WVUVfRU5WKSx2b30seW89bm8mJndpbmRvdy5fX1ZVRV9E
RVZUT09MU19HTE9CQUxfSE9PS19fLGdvPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZUKFN5
bWJvbCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmVChSZWZsZWN0Lm93bktleXMpLF9v
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3I9ITE7dmFyIHQ9bi5zbGljZSgwKTtuLmxlbmd0aD0w
O2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0oKX12YXIgZSxuPVtdLHI9ITE7aWYoInVu
ZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZUKFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29s
dmUoKSxvPWZ1bmN0aW9uKHQpe2NvbnNvbGUuZXJyb3IodCl9O2U9ZnVuY3Rpb24oKXtpLnRoZW4o
dCkuY2F0Y2gobyksY28mJnNldFRpbWVvdXQodyl9fWVsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVv
ZiBNdXRhdGlvbk9ic2VydmVyfHwhVChNdXRhdGlvbk9ic2VydmVyKSYmIltvYmplY3QgTXV0YXRp
b25PYnNlcnZlckNvbnN0cnVjdG9yXSIhPT1NdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkpZT1m
dW5jdGlvbigpe3NldFRpbWVvdXQodCwwKX07ZWxzZXt2YXIgYT0xLHM9bmV3IE11dGF0aW9uT2Jz
ZXJ2ZXIodCksYz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSkpO3Mub2JzZXJ2ZShj
LHtjaGFyYWN0ZXJEYXRhOiEwfSksZT1mdW5jdGlvbigpe2E9KGErMSklMixjLmRhdGE9U3RyaW5n
KGEpfX1yZXR1cm4gZnVuY3Rpb24odCxpKXt2YXIgbztpZihuLnB1c2goZnVuY3Rpb24oKXtpZih0
KXRyeXt0LmNhbGwoaSl9Y2F0Y2godCl7Uyh0LGksIm5leHRUaWNrIil9ZWxzZSBvJiZvKGkpfSks
cnx8KHI9ITAsZSgpKSwhdCYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbih0LGUpe289dH0pfX0oKTtobz0idW5kZWZpbmVkIiE9dHlwZW9mIFNl
dCYmVChTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnNldD1PYmplY3QuY3Jl
YXRlKG51bGwpfXJldHVybiB0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10
aGlzLnNldFt0XX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3RoaXMuc2V0W3RdPSEwfSx0
LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9
LHR9KCk7dmFyIGJvPTAsd289ZnVuY3Rpb24oKXt0aGlzLmlkPWJvKyssdGhpcy5zdWJzPVtdfTt3
by5wcm90b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKHQpe3RoaXMuc3Vicy5wdXNoKHQpfSx3by5wcm90
b3R5cGUucmVtb3ZlU3ViPWZ1bmN0aW9uKHQpe3YodGhpcy5zdWJzLHQpfSx3by5wcm90b3R5cGUu
ZGVwZW5kPWZ1bmN0aW9uKCl7d28udGFyZ2V0JiZ3by50YXJnZXQuYWRkRGVwKHRoaXMpfSx3by5w
cm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3Vicy5zbGljZSgpLGU9
MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGUoKX0sd28udGFyZ2V0PW51bGw7dmFyICRv
PVtdLENvPUFycmF5LnByb3RvdHlwZSx4bz1PYmplY3QuY3JlYXRlKENvKTtbInB1c2giLCJwb3Ai
LCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVu
Y3Rpb24odCl7dmFyIGU9Q29bdF07ayh4byx0LGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHI9YXJn
dW1lbnRzLmxlbmd0aDtyLS07KW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89ZS5hcHBseSh0aGlz
LG4pLGE9dGhpcy5fX29iX187c3dpdGNoKHQpe2Nhc2UicHVzaCI6Y2FzZSJ1bnNoaWZ0IjppPW47
YnJlYWs7Y2FzZSJzcGxpY2UiOmk9bi5zbGljZSgyKX1yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXko
aSksYS5kZXAubm90aWZ5KCksb30pfSk7dmFyIEFvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHhvKSxrbz17c2hvdWxkQ29udmVydDohMH0sT289ZnVuY3Rpb24odCl7aWYodGhpcy52YWx1ZT10
LHRoaXMuZGVwPW5ldyB3byx0aGlzLnZtQ291bnQ9MCxrKHQsIl9fb2JfXyIsdGhpcyksQXJyYXku
aXNBcnJheSh0KSl7KGVvP046TCkodCx4byxBbyksdGhpcy5vYnNlcnZlQXJyYXkodCl9ZWxzZSB0
aGlzLndhbGsodCl9O09vLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmpl
Y3Qua2V5cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspSSh0LGVbbl0sdFtlW25dXSl9LE9vLnByb3Rv
dHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47
ZSsrKU0odFtlXSl9O3ZhciBTbz1YaS5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7U28uZGF0YT1mdW5j
dGlvbih0LGUsbil7cmV0dXJuIG4/Qih0LGUsbik6ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/dDpC
LmNhbGwodGhpcyx0LGUpfSxaaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1NvW3RdPVV9KSxHaS5mb3JF
YWNoKGZ1bmN0aW9uKHQpe1NvW3QrInMiXT1IfSksU28ud2F0Y2g9ZnVuY3Rpb24odCxlKXtpZih0
PT09bG8mJih0PXZvaWQgMCksZT09PWxvJiYoZT12b2lkIDApLCFlKXJldHVybiBPYmplY3QuY3Jl
YXRlKHR8fG51bGwpO2lmKCF0KXJldHVybiBlO3ZhciBuPXt9O18obix0KTtmb3IodmFyIHIgaW4g
ZSl7dmFyIGk9bltyXSxvPWVbcl07aSYmIUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSksbltyXT1p
P2kuY29uY2F0KG8pOkFycmF5LmlzQXJyYXkobyk/bzpbb119cmV0dXJuIG59LFNvLnByb3BzPVNv
Lm1ldGhvZHM9U28uaW5qZWN0PVNvLmNvbXB1dGVkPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJu
IGU7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gXyhuLHQpLGUmJl8obixlKSxufSxT
by5wcm92aWRlPUI7dmFyIFRvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dDplfSxF
bz1mdW5jdGlvbih0LGUsbixyLGksbyxhLHMpe3RoaXMudGFnPXQsdGhpcy5kYXRhPWUsdGhpcy5j
aGlsZHJlbj1uLHRoaXMudGV4dD1yLHRoaXMuZWxtPWksdGhpcy5ucz12b2lkIDAsdGhpcy5jb250
ZXh0PW8sdGhpcy5mdW5jdGlvbmFsQ29udGV4dD12b2lkIDAsdGhpcy5rZXk9ZSYmZS5rZXksdGhp
cy5jb21wb25lbnRPcHRpb25zPWEsdGhpcy5jb21wb25lbnRJbnN0YW5jZT12b2lkIDAsdGhpcy5w
YXJlbnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNl
cnQ9ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMSx0
aGlzLmFzeW5jRmFjdG9yeT1zLHRoaXMuYXN5bmNNZXRhPXZvaWQgMCx0aGlzLmlzQXN5bmNQbGFj
ZWhvbGRlcj0hMX0sam89e2NoaWxkOnt9fTtqby5jaGlsZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb21wb25lbnRJbnN0YW5jZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRW8ucHJvdG90
eXBlLGpvKTt2YXIgTm8sTG89ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9IiIpO3ZhciBlPW5l
dyBFbztyZXR1cm4gZS50ZXh0PXQsZS5pc0NvbW1lbnQ9ITAsZX0sTW89bShmdW5jdGlvbih0KXt2
YXIgZT0iJiI9PT10LmNoYXJBdCgwKTt0PWU/dC5zbGljZSgxKTp0O3ZhciBuPSJ+Ij09PXQuY2hh
ckF0KDApO3Q9bj90LnNsaWNlKDEpOnQ7dmFyIHI9IiEiPT09dC5jaGFyQXQoMCk7cmV0dXJuIHQ9
cj90LnNsaWNlKDEpOnQse25hbWU6dCxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6ZX19KSxJbz1u
dWxsLFBvPVtdLFJvPVtdLERvPXt9LEZvPSExLEJvPSExLFVvPTAsSG89MCxWbz1mdW5jdGlvbih0
LGUsbixyKXt0aGlzLnZtPXQsdC5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFy
LmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFy
LnN5bmMpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNi
PW4sdGhpcy5pZD0rK0hvLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMu
ZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IGhvLHRoaXMubmV3RGVwSWRz
PW5ldyBobyx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5nZXR0
ZXI9ZToodGhpcy5nZXR0ZXI9TyhlKSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9u
KCl7fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtWby5wcm90b3R5
cGUuZ2V0PWZ1bmN0aW9uKCl7RSh0aGlzKTt2YXIgdCxlPXRoaXMudm07dHJ5e3Q9dGhpcy5nZXR0
ZXIuY2FsbChlLGUpfWNhdGNoKHQpe2lmKCF0aGlzLnVzZXIpdGhyb3cgdDtTKHQsZSwnZ2V0dGVy
IGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZN
dCh0KSxqKCksdGhpcy5jbGVhbnVwRGVwcygpfXJldHVybiB0fSxWby5wcm90b3R5cGUuYWRkRGVw
PWZ1bmN0aW9uKHQpe3ZhciBlPXQuaWQ7dGhpcy5uZXdEZXBJZHMuaGFzKGUpfHwodGhpcy5uZXdE
ZXBJZHMuYWRkKGUpLHRoaXMubmV3RGVwcy5wdXNoKHQpLHRoaXMuZGVwSWRzLmhhcyhlKXx8dC5h
ZGRTdWIodGhpcykpfSxWby5wcm90b3R5cGUuY2xlYW51cERlcHM9ZnVuY3Rpb24oKXtmb3IodmFy
IHQ9dGhpcyxlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIG49dC5kZXBzW2VdO3QubmV3RGVw
SWRzLmhhcyhuLmlkKXx8bi5yZW1vdmVTdWIodCl9dmFyIHI9dGhpcy5kZXBJZHM7dGhpcy5kZXBJ
ZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9cix0aGlzLm5ld0RlcElkcy5jbGVhcigp
LHI9dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPXIsdGhpcy5u
ZXdEZXBzLmxlbmd0aD0wfSxWby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5
P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6THQodGhpcyl9LFZvLnByb3RvdHlw
ZS5ydW49ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dmFyIHQ9dGhpcy5nZXQoKTtpZih0IT09
dGhpcy52YWx1ZXx8cyh0KXx8dGhpcy5kZWVwKXt2YXIgZT10aGlzLnZhbHVlO2lmKHRoaXMudmFs
dWU9dCx0aGlzLnVzZXIpdHJ5e3RoaXMuY2IuY2FsbCh0aGlzLnZtLHQsZSl9Y2F0Y2godCl7Uyh0
LHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVs
c2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sdCxlKX19fSxWby5wcm90b3R5cGUuZXZhbHVhdGU9ZnVu
Y3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sVm8ucHJvdG90eXBl
LmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07
KXQuZGVwc1tlXS5kZXBlbmQoKX0sVm8ucHJvdG90eXBlLnRlYXJkb3duPWZ1bmN0aW9uKCl7dmFy
IHQ9dGhpcztpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8dih0aGlz
LnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXQuZGVw
c1tlXS5yZW1vdmVTdWIodCk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgem89bmV3IGhvLEpvPXtlbnVt
ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6dyxzZXQ6d30sS289e2xhenk6ITB9LHFvPXtp
bml0OmZ1bmN0aW9uKHQsZSxuLHIpe2lmKCF0LmNvbXBvbmVudEluc3RhbmNlfHx0LmNvbXBvbmVu
dEluc3RhbmNlLl9pc0Rlc3Ryb3llZCl7KHQuY29tcG9uZW50SW5zdGFuY2U9UXQodCxJbyxuLHIp
KS4kbW91bnQoZT90LmVsbTp2b2lkIDAsZSl9ZWxzZSBpZih0LmRhdGEua2VlcEFsaXZlKXt2YXIg
aT10O3FvLnByZXBhdGNoKGksaSl9fSxwcmVwYXRjaDpmdW5jdGlvbih0LGUpe3ZhciBuPWUuY29t
cG9uZW50T3B0aW9ucztDdChlLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2Us
bi5wcm9wc0RhdGEsbi5saXN0ZW5lcnMsZSxuLmNoaWxkcmVuKX0saW5zZXJ0OmZ1bmN0aW9uKHQp
e3ZhciBlPXQuY29udGV4dCxuPXQuY29tcG9uZW50SW5zdGFuY2U7bi5faXNNb3VudGVkfHwobi5f
aXNNb3VudGVkPSEwLE90KG4sIm1vdW50ZWQiKSksdC5kYXRhLmtlZXBBbGl2ZSYmKGUuX2lzTW91
bnRlZD9qdChuKTpBdChuLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb21wb25l
bnRJbnN0YW5jZTtlLl9pc0Rlc3Ryb3llZHx8KHQuZGF0YS5rZWVwQWxpdmU/a3QoZSwhMCk6ZS4k
ZGVzdHJveSgpKX19LFdvPU9iamVjdC5rZXlzKHFvKSxHbz0xLFpvPTIsWG89MDshZnVuY3Rpb24o
dCl7dC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLl91aWQ9WG8rKyxl
Ll9pc1Z1ZT0hMCx0JiZ0Ll9pc0NvbXBvbmVudD95ZShlLHQpOmUuJG9wdGlvbnM9SyhnZShlLmNv
bnN0cnVjdG9yKSx0fHx7fSxlKSxlLl9yZW5kZXJQcm94eT1lLGUuX3NlbGY9ZSx3dChlKSx2dChl
KSxtZShlKSxPdChlLCJiZWZvcmVDcmVhdGUiKSxXdChlKSxSdChlKSxxdChlKSxPdChlLCJjcmVh
dGVkIiksZS4kb3B0aW9ucy5lbCYmZS4kbW91bnQoZS4kb3B0aW9ucy5lbCl9fSh3ZSksZnVuY3Rp
b24odCl7dmFyIGU9e307ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YX07dmFyIG49
e307bi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcHN9LE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LnByb3RvdHlwZSwiJGRhdGEiLGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3Rv
dHlwZSwiJHByb3BzIixuKSx0LnByb3RvdHlwZS4kc2V0PVAsdC5wcm90b3R5cGUuJGRlbGV0ZT1S
LHQucHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztpZihjKGUpKXJl
dHVybiBLdChyLHQsZSxuKTtuPW58fHt9LG4udXNlcj0hMDt2YXIgaT1uZXcgVm8ocix0LGUsbik7
cmV0dXJuIG4uaW1tZWRpYXRlJiZlLmNhbGwocixpLnZhbHVlKSxmdW5jdGlvbigpe2kudGVhcmRv
d24oKX19fSh3ZSksZnVuY3Rpb24odCl7dmFyIGU9L15ob29rOi87dC5wcm90b3R5cGUuJG9uPWZ1
bmN0aW9uKHQsbil7dmFyIHI9dGhpcyxpPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFy
IG89MCxhPXQubGVuZ3RoO288YTtvKyspci4kb24odFtvXSxuKTtlbHNlKGkuX2V2ZW50c1t0XXx8
KGkuX2V2ZW50c1t0XT1bXSkpLnB1c2gobiksZS50ZXN0KHQpJiYoaS5faGFzSG9va0V2ZW50PSEw
KTtyZXR1cm4gaX0sdC5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7
ci4kb2ZmKHQsbiksZS5hcHBseShyLGFyZ3VtZW50cyl9dmFyIHI9dGhpcztyZXR1cm4gbi5mbj1l
LHIuJG9uKHQsbikscn0sdC5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMs
cj10aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiByLl9ldmVudHM9T2JqZWN0LmNyZWF0
ZShudWxsKSxyO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgaT0wLG89dC5sZW5ndGg7aTxv
O2krKyluLiRvZmYodFtpXSxlKTtyZXR1cm4gcn12YXIgYT1yLl9ldmVudHNbdF07aWYoIWEpcmV0
dXJuIHI7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIuX2V2ZW50c1t0XT1udWxsLHI7
Zm9yKHZhciBzLGM9YS5sZW5ndGg7Yy0tOylpZigocz1hW2NdKT09PWV8fHMuZm49PT1lKXthLnNw
bGljZShjLDEpO2JyZWFrfXJldHVybiByfSx0LnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2
YXIgZT10aGlzLG49ZS5fZXZlbnRzW3RdO2lmKG4pe249bi5sZW5ndGg+MT9nKG4pOm47Zm9yKHZh
ciByPWcoYXJndW1lbnRzLDEpLGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspdHJ5e25baV0uYXBwbHko
ZSxyKX1jYXRjaChuKXtTKG4sZSwnZXZlbnQgaGFuZGxlciBmb3IgIicrdCsnIicpfX1yZXR1cm4g
ZX19KHdlKSxmdW5jdGlvbih0KXt0LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7dmFy
IG49dGhpcztuLl9pc01vdW50ZWQmJk90KG4sImJlZm9yZVVwZGF0ZSIpO3ZhciByPW4uJGVsLGk9
bi5fdm5vZGUsbz1JbztJbz1uLG4uX3Zub2RlPXQsaT9uLiRlbD1uLl9fcGF0Y2hfXyhpLHQpOihu
LiRlbD1uLl9fcGF0Y2hfXyhuLiRlbCx0LGUsITEsbi4kb3B0aW9ucy5fcGFyZW50RWxtLG4uJG9w
dGlvbnMuX3JlZkVsbSksbi4kb3B0aW9ucy5fcGFyZW50RWxtPW4uJG9wdGlvbnMuX3JlZkVsbT1u
dWxsKSxJbz1vLHImJihyLl9fdnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4u
JHZub2RlJiZuLiRwYXJlbnQmJm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVu
dC4kZWw9bi4kZWwpfSx0LnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgdD10
aGlzO3QuX3dhdGNoZXImJnQuX3dhdGNoZXIudXBkYXRlKCl9LHQucHJvdG90eXBlLiRkZXN0cm95
PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdC5faXNCZWluZ0Rlc3Ryb3llZCl7T3QodCwiYmVm
b3JlRGVzdHJveSIpLHQuX2lzQmVpbmdEZXN0cm95ZWQ9ITA7dmFyIGU9dC4kcGFyZW50OyFlfHxl
Ll9pc0JlaW5nRGVzdHJveWVkfHx0LiRvcHRpb25zLmFic3RyYWN0fHx2KGUuJGNoaWxkcmVuLHQp
LHQuX3dhdGNoZXImJnQuX3dhdGNoZXIudGVhcmRvd24oKTtmb3IodmFyIG49dC5fd2F0Y2hlcnMu
bGVuZ3RoO24tLTspdC5fd2F0Y2hlcnNbbl0udGVhcmRvd24oKTt0Ll9kYXRhLl9fb2JfXyYmdC5f
ZGF0YS5fX29iX18udm1Db3VudC0tLHQuX2lzRGVzdHJveWVkPSEwLHQuX19wYXRjaF9fKHQuX3Zu
b2RlLG51bGwpLE90KHQsImRlc3Ryb3llZCIpLHQuJG9mZigpLHQuJGVsJiYodC4kZWwuX192dWVf
Xz1udWxsKX19fSh3ZSksZnVuY3Rpb24odCl7dC5wcm90b3R5cGUuJG5leHRUaWNrPWZ1bmN0aW9u
KHQpe3JldHVybiBfbyh0LHRoaXMpfSx0LnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dmFy
IHQ9dGhpcyxlPXQuJG9wdGlvbnMsbj1lLnJlbmRlcixyPWUuc3RhdGljUmVuZGVyRm5zLGk9ZS5f
cGFyZW50Vm5vZGU7aWYodC5faXNNb3VudGVkKWZvcih2YXIgbyBpbiB0LiRzbG90cyl0LiRzbG90
c1tvXT10dCh0LiRzbG90c1tvXSk7dC4kc2NvcGVkU2xvdHM9aSYmaS5kYXRhLnNjb3BlZFNsb3Rz
fHxZaSxyJiYhdC5fc3RhdGljVHJlZXMmJih0Ll9zdGF0aWNUcmVlcz1bXSksdC4kdm5vZGU9aTt2
YXIgYTt0cnl7YT1uLmNhbGwodC5fcmVuZGVyUHJveHksdC4kY3JlYXRlRWxlbWVudCl9Y2F0Y2go
ZSl7UyhlLHQsInJlbmRlciBmdW5jdGlvbiIpLGE9dC5fdm5vZGV9cmV0dXJuIGEgaW5zdGFuY2Vv
ZiBFb3x8KGE9TG8oKSksYS5wYXJlbnQ9aSxhfSx0LnByb3RvdHlwZS5fbz1wZSx0LnByb3RvdHlw
ZS5fbj1wLHQucHJvdG90eXBlLl9zPWYsdC5wcm90b3R5cGUuX2w9YWUsdC5wcm90b3R5cGUuX3Q9
c2UsdC5wcm90b3R5cGUuX3E9JCx0LnByb3RvdHlwZS5faT1DLHQucHJvdG90eXBlLl9tPWZlLHQu
cHJvdG90eXBlLl9mPWNlLHQucHJvdG90eXBlLl9rPXVlLHQucHJvdG90eXBlLl9iPWxlLHQucHJv
dG90eXBlLl92PVksdC5wcm90b3R5cGUuX2U9TG8sdC5wcm90b3R5cGUuX3U9YnQsdC5wcm90b3R5
cGUuX2c9aGV9KHdlKTt2YXIgWW89W1N0cmluZyxSZWdFeHAsQXJyYXldLFFvPXtuYW1lOiJrZWVw
LWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTpZbyxleGNsdWRlOllvfSxjcmVhdGVk
OmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpfSxkZXN0cm95ZWQ6ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzO2Zvcih2YXIgZSBpbiB0LmNhY2hlKWplKHQuY2FjaGVbZV0pfSx3
YXRjaDp7aW5jbHVkZTpmdW5jdGlvbih0KXtFZSh0aGlzLmNhY2hlLHRoaXMuX3Zub2RlLGZ1bmN0
aW9uKGUpe3JldHVybiBUZSh0LGUpfSl9LGV4Y2x1ZGU6ZnVuY3Rpb24odCl7RWUodGhpcy5jYWNo
ZSx0aGlzLl92bm9kZSxmdW5jdGlvbihlKXtyZXR1cm4hVGUodCxlKX0pfX0scmVuZGVyOmZ1bmN0
aW9uKCl7dmFyIHQ9ZHQodGhpcy4kc2xvdHMuZGVmYXVsdCksZT10JiZ0LmNvbXBvbmVudE9wdGlv
bnM7aWYoZSl7dmFyIG49U2UoZSk7aWYobiYmKHRoaXMuaW5jbHVkZSYmIVRlKHRoaXMuaW5jbHVk
ZSxuKXx8dGhpcy5leGNsdWRlJiZUZSh0aGlzLmV4Y2x1ZGUsbikpKXJldHVybiB0O3ZhciByPW51
bGw9PXQua2V5P2UuQ3Rvci5jaWQrKGUudGFnPyI6OiIrZS50YWc6IiIpOnQua2V5O3RoaXMuY2Fj
aGVbcl0/dC5jb21wb25lbnRJbnN0YW5jZT10aGlzLmNhY2hlW3JdLmNvbXBvbmVudEluc3RhbmNl
OnRoaXMuY2FjaGVbcl09dCx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fX0sdGE9e0tlZXBB
bGl2ZTpRb307IWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2UuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIFhp
fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiY29uZmlnIixlKSx0LnV0aWw9e3dhcm46dG8sZXh0
ZW5kOl8sbWVyZ2VPcHRpb25zOkssZGVmaW5lUmVhY3RpdmU6SX0sdC5zZXQ9UCx0LmRlbGV0ZT1S
LHQubmV4dFRpY2s9X28sdC5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksR2kuZm9yRWFjaChm
dW5jdGlvbihlKXt0Lm9wdGlvbnNbZSsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSx0Lm9wdGlv
bnMuX2Jhc2U9dCxfKHQub3B0aW9ucy5jb21wb25lbnRzLHRhKSwkZSh0KSxDZSh0KSx4ZSh0KSxP
ZSh0KX0od2UpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3ZS5wcm90b3R5cGUsIiRpc1NlcnZlciIs
e2dldDptb30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3ZS5wcm90b3R5cGUsIiRzc3JDb250ZXh0
Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250
ZXh0fX0pLHdlLnZlcnNpb249IjIuNC4yIjt2YXIgZWEsbmEscmEsaWEsb2EsYWEsc2EsY2EsdWEs
bGE9ZCgic3R5bGUsY2xhc3MiKSxmYT1kKCJpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0Iiks
cGE9ZnVuY3Rpb24odCxlLG4pe3JldHVybiJ2YWx1ZSI9PT1uJiZmYSh0KSYmImJ1dHRvbiIhPT1l
fHwic2VsZWN0ZWQiPT09biYmIm9wdGlvbiI9PT10fHwiY2hlY2tlZCI9PT1uJiYiaW5wdXQiPT09
dHx8Im11dGVkIj09PW4mJiJ2aWRlbyI9PT10fSxkYT1kKCJjb250ZW50ZWRpdGFibGUsZHJhZ2dh
YmxlLHNwZWxsY2hlY2siKSx2YT1kKCJhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1
dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLGRlZmF1bHQsZGVmYXVsdGNo
ZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCxlbmFibGVk
LGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29w
ZSxsb29wLG11bHRpcGxlLG11dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUs
bm93cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHkscmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVk
LHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSx0cnVlc3BlZWQsdHlwZW11c3Rt
YXRjaCx2aXNpYmxlIiksaGE9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLG1hPWZ1bmN0
aW9uKHQpe3JldHVybiI6Ij09PXQuY2hhckF0KDUpJiYieGxpbmsiPT09dC5zbGljZSgwLDUpfSx5
YT1mdW5jdGlvbih0KXtyZXR1cm4gbWEodCk/dC5zbGljZSg2LHQubGVuZ3RoKToiIn0sZ2E9ZnVu
Y3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fCExPT09dH0sX2E9e3N2ZzoiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwifSxi
YT1kKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFy
dGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNl
Y3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1h
aW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0s
aSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIs
c3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVj
dCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29s
LGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVs
ZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0
LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1
bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0
Zm9vdCIpLHdhPWQoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNj
LGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGlu
ZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5l
LHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksJGE9
ZnVuY3Rpb24odCl7cmV0dXJuInByZSI9PT10fSxDYT1mdW5jdGlvbih0KXtyZXR1cm4gYmEodCl8
fHdhKHQpfSx4YT1PYmplY3QuY3JlYXRlKG51bGwpLEFhPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVs
ZW1lbnQ6SGUsY3JlYXRlRWxlbWVudE5TOlZlLGNyZWF0ZVRleHROb2RlOnplLGNyZWF0ZUNvbW1l
bnQ6SmUsaW5zZXJ0QmVmb3JlOktlLHJlbW92ZUNoaWxkOnFlLGFwcGVuZENoaWxkOldlLHBhcmVu
dE5vZGU6R2UsbmV4dFNpYmxpbmc6WmUsdGFnTmFtZTpYZSxzZXRUZXh0Q29udGVudDpZZSxzZXRB
dHRyaWJ1dGU6UWV9KSxrYT17Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dG4oZSl9LHVwZGF0ZTpmdW5j
dGlvbih0LGUpe3QuZGF0YS5yZWYhPT1lLmRhdGEucmVmJiYodG4odCwhMCksdG4oZSkpfSxkZXN0
cm95OmZ1bmN0aW9uKHQpe3RuKHQsITApfX0sT2E9bmV3IEVvKCIiLHt9LFtdKSxTYT1bImNyZWF0
ZSIsImFjdGl2YXRlIiwidXBkYXRlIiwicmVtb3ZlIiwiZGVzdHJveSJdLFRhPXtjcmVhdGU6b24s
dXBkYXRlOm9uLGRlc3Ryb3k6ZnVuY3Rpb24odCl7b24odCxPYSl9fSxFYT1PYmplY3QuY3JlYXRl
KG51bGwpLGphPVtrYSxUYV0sTmE9e2NyZWF0ZTpsbix1cGRhdGU6bG59LExhPXtjcmVhdGU6cG4s
dXBkYXRlOnBufSxNYT0vW1x3KS4rXC1fJFxdXS8sSWE9Il9fciIsUGE9Il9fYyIsUmE9e2NyZWF0
ZTpGbix1cGRhdGU6Rm59LERhPXtjcmVhdGU6Qm4sdXBkYXRlOkJufSxGYT1tKGZ1bmN0aW9uKHQp
e3ZhciBlPXt9LG49LzsoPyFbXihdKlwpKS9nLHI9LzooLispLztyZXR1cm4gdC5zcGxpdChuKS5m
b3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBuPXQuc3BsaXQocik7bi5sZW5ndGg+MSYmKGVb
blswXS50cmltKCldPW5bMV0udHJpbSgpKX19KSxlfSksQmE9L14tLS8sVWE9L1xzKiFpbXBvcnRh
bnQkLyxIYT1mdW5jdGlvbih0LGUsbil7aWYoQmEudGVzdChlKSl0LnN0eWxlLnNldFByb3BlcnR5
KGUsbik7ZWxzZSBpZihVYS50ZXN0KG4pKXQuc3R5bGUuc2V0UHJvcGVydHkoZSxuLnJlcGxhY2Uo
VWEsIiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPXphKGUpO2lmKEFycmF5LmlzQXJyYXkobikp
Zm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXQuc3R5bGVbcl09bltpXTtlbHNlIHQuc3R5
bGVbcl09bn19LFZhPVsiV2Via2l0IiwiTW96IiwibXMiXSx6YT1tKGZ1bmN0aW9uKHQpe2lmKHVh
PXVhfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiZmlsdGVyIiE9PSh0PUhp
KHQpKSYmdCBpbiB1YSlyZXR1cm4gdDtmb3IodmFyIGU9dC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSt0LnNsaWNlKDEpLG49MDtuPFZhLmxlbmd0aDtuKyspe3ZhciByPVZhW25dK2U7aWYociBpbiB1
YSlyZXR1cm4gcn19KSxKYT17Y3JlYXRlOnFuLHVwZGF0ZTpxbn0sS2E9bShmdW5jdGlvbih0KXty
ZXR1cm57ZW50ZXJDbGFzczp0KyItZW50ZXIiLGVudGVyVG9DbGFzczp0KyItZW50ZXItdG8iLGVu
dGVyQWN0aXZlQ2xhc3M6dCsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczp0KyItbGVhdmUiLGxl
YXZlVG9DbGFzczp0KyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6dCsiLWxlYXZlLWFjdGl2
ZSJ9fSkscWE9bm8mJiFvbyxXYT0idHJhbnNpdGlvbiIsR2E9ImFuaW1hdGlvbiIsWmE9InRyYW5z
aXRpb24iLFhhPSJ0cmFuc2l0aW9uZW5kIixZYT0iYW5pbWF0aW9uIixRYT0iYW5pbWF0aW9uZW5k
IjtxYSYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5v
bndlYmtpdHRyYW5zaXRpb25lbmQmJihaYT0iV2Via2l0VHJhbnNpdGlvbiIsWGE9IndlYmtpdFRy
YW5zaXRpb25FbmQiKSx2b2lkIDA9PT13aW5kb3cub25hbmltYXRpb25lbmQmJnZvaWQgMCE9PXdp
bmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCYmKFlhPSJXZWJraXRBbmltYXRpb24iLFFhPSJ3ZWJr
aXRBbmltYXRpb25FbmQiKSk7dmFyIHRzPW5vJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1l
P3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQsZXM9
L1xiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLG5zPW5vP3tjcmVhdGU6Y3IsYWN0aXZhdGU6Y3IscmVt
b3ZlOmZ1bmN0aW9uKHQsZSl7ITAhPT10LmRhdGEuc2hvdz9vcih0LGUpOmUoKX19Ont9LHJzPVtO
YSxMYSxSYSxEYSxKYSxuc10saXM9cnMuY29uY2F0KGphKSxvcz1mdW5jdGlvbih0KXtmdW5jdGlv
biBlKHQpe3JldHVybiBuZXcgRW8oRS50YWdOYW1lKHQpLnRvTG93ZXJDYXNlKCkse30sW10sdm9p
ZCAwLHQpfWZ1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmcyh0
KX1yZXR1cm4gbi5saXN0ZW5lcnM9ZSxufWZ1bmN0aW9uIHModCl7dmFyIGU9RS5wYXJlbnROb2Rl
KHQpO3IoZSkmJkUucmVtb3ZlQ2hpbGQoZSx0KX1mdW5jdGlvbiBjKHQsZSxuLG8sYSl7aWYodC5p
c1Jvb3RJbnNlcnQ9IWEsIXUodCxlLG4sbykpe3ZhciBzPXQuZGF0YSxjPXQuY2hpbGRyZW4sbD10
LnRhZztyKGwpPyh0LmVsbT10Lm5zP0UuY3JlYXRlRWxlbWVudE5TKHQubnMsbCk6RS5jcmVhdGVF
bGVtZW50KGwsdCkseSh0KSx2KHQsYyxlKSxyKHMpJiZtKHQsZSkscChuLHQuZWxtLG8pKTppKHQu
aXNDb21tZW50KT8odC5lbG09RS5jcmVhdGVDb21tZW50KHQudGV4dCkscChuLHQuZWxtLG8pKToo
dC5lbG09RS5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpLHAobix0LmVsbSxvKSl9fWZ1bmN0aW9uIHUo
dCxlLG4sbyl7dmFyIGE9dC5kYXRhO2lmKHIoYSkpe3ZhciBzPXIodC5jb21wb25lbnRJbnN0YW5j
ZSkmJmEua2VlcEFsaXZlO2lmKHIoYT1hLmhvb2spJiZyKGE9YS5pbml0KSYmYSh0LCExLG4sbyks
cih0LmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gbCh0LGUpLGkocykmJmYodCxlLG4sbyksITB9
fWZ1bmN0aW9uIGwodCxlKXtyKHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKGUucHVzaC5hcHBseShl
LHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSx0LmRhdGEucGVuZGluZ0luc2VydD1udWxsKSx0LmVsbT10
LmNvbXBvbmVudEluc3RhbmNlLiRlbCxoKHQpPyhtKHQsZSkseSh0KSk6KHRuKHQpLGUucHVzaCh0
KSl9ZnVuY3Rpb24gZih0LGUsbixpKXtmb3IodmFyIG8sYT10O2EuY29tcG9uZW50SW5zdGFuY2U7
KWlmKGE9YS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUscihvPWEuZGF0YSkmJnIobz1vLnRyYW5z
aXRpb24pKXtmb3Iobz0wO288Uy5hY3RpdmF0ZS5sZW5ndGg7KytvKVMuYWN0aXZhdGVbb10oT2Es
YSk7ZS5wdXNoKGEpO2JyZWFrfXAobix0LmVsbSxpKX1mdW5jdGlvbiBwKHQsZSxuKXtyKHQpJiYo
cihuKT9uLnBhcmVudE5vZGU9PT10JiZFLmluc2VydEJlZm9yZSh0LGUsbik6RS5hcHBlbmRDaGls
ZCh0LGUpKX1mdW5jdGlvbiB2KHQsZSxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcj0w
O3I8ZS5sZW5ndGg7KytyKWMoZVtyXSxuLHQuZWxtLG51bGwsITApO2Vsc2UgYSh0LnRleHQpJiZF
LmFwcGVuZENoaWxkKHQuZWxtLEUuY3JlYXRlVGV4dE5vZGUodC50ZXh0KSl9ZnVuY3Rpb24gaCh0
KXtmb3IoO3QuY29tcG9uZW50SW5zdGFuY2U7KXQ9dC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7
cmV0dXJuIHIodC50YWcpfWZ1bmN0aW9uIG0odCxlKXtmb3IodmFyIG49MDtuPFMuY3JlYXRlLmxl
bmd0aDsrK24pUy5jcmVhdGVbbl0oT2EsdCk7az10LmRhdGEuaG9vayxyKGspJiYocihrLmNyZWF0
ZSkmJmsuY3JlYXRlKE9hLHQpLHIoay5pbnNlcnQpJiZlLnB1c2godCkpfWZ1bmN0aW9uIHkodCl7
Zm9yKHZhciBlLG49dDtuOylyKGU9bi5jb250ZXh0KSYmcihlPWUuJG9wdGlvbnMuX3Njb3BlSWQp
JiZFLnNldEF0dHJpYnV0ZSh0LmVsbSxlLCIiKSxuPW4ucGFyZW50O3IoZT1JbykmJmUhPT10LmNv
bnRleHQmJnIoZT1lLiRvcHRpb25zLl9zY29wZUlkKSYmRS5zZXRBdHRyaWJ1dGUodC5lbG0sZSwi
Iil9ZnVuY3Rpb24gZyh0LGUsbixyLGksbyl7Zm9yKDtyPD1pOysrciljKG5bcl0sbyx0LGUpfWZ1
bmN0aW9uIF8odCl7dmFyIGUsbixpPXQuZGF0YTtpZihyKGkpKWZvcihyKGU9aS5ob29rKSYmcihl
PWUuZGVzdHJveSkmJmUodCksZT0wO2U8Uy5kZXN0cm95Lmxlbmd0aDsrK2UpUy5kZXN0cm95W2Vd
KHQpO2lmKHIoZT10LmNoaWxkcmVuKSlmb3Iobj0wO248dC5jaGlsZHJlbi5sZW5ndGg7KytuKV8o
dC5jaGlsZHJlbltuXSl9ZnVuY3Rpb24gYih0LGUsbixpKXtmb3IoO248PWk7KytuKXt2YXIgbz1l
W25dO3IobykmJihyKG8udGFnKT8odyhvKSxfKG8pKTpzKG8uZWxtKSl9fWZ1bmN0aW9uIHcodCxl
KXtpZihyKGUpfHxyKHQuZGF0YSkpe3ZhciBuLGk9Uy5yZW1vdmUubGVuZ3RoKzE7Zm9yKHIoZSk/
ZS5saXN0ZW5lcnMrPWk6ZT1vKHQuZWxtLGkpLHIobj10LmNvbXBvbmVudEluc3RhbmNlKSYmcihu
PW4uX3Zub2RlKSYmcihuLmRhdGEpJiZ3KG4sZSksbj0wO248Uy5yZW1vdmUubGVuZ3RoOysrbilT
LnJlbW92ZVtuXSh0LGUpO3Iobj10LmRhdGEuaG9vaykmJnIobj1uLnJlbW92ZSk/bih0LGUpOmUo
KX1lbHNlIHModC5lbG0pfWZ1bmN0aW9uICQodCxlLGksbyxhKXtmb3IodmFyIHMsdSxsLGYscD0w
LGQ9MCx2PWUubGVuZ3RoLTEsaD1lWzBdLG09ZVt2XSx5PWkubGVuZ3RoLTEsXz1pWzBdLHc9aVt5
XSwkPSFhO3A8PXYmJmQ8PXk7KW4oaCk/aD1lWysrcF06bihtKT9tPWVbLS12XTplbihoLF8pPyhD
KGgsXyxvKSxoPWVbKytwXSxfPWlbKytkXSk6ZW4obSx3KT8oQyhtLHcsbyksbT1lWy0tdl0sdz1p
Wy0teV0pOmVuKGgsdyk/KEMoaCx3LG8pLCQmJkUuaW5zZXJ0QmVmb3JlKHQsaC5lbG0sRS5uZXh0
U2libGluZyhtLmVsbSkpLGg9ZVsrK3BdLHc9aVstLXldKTplbihtLF8pPyhDKG0sXyxvKSwkJiZF
Lmluc2VydEJlZm9yZSh0LG0uZWxtLGguZWxtKSxtPWVbLS12XSxfPWlbKytkXSk6KG4ocykmJihz
PXJuKGUscCx2KSksdT1yKF8ua2V5KT9zW18ua2V5XTpudWxsLG4odSk/KGMoXyxvLHQsaC5lbG0p
LF89aVsrK2RdKToobD1lW3VdLGVuKGwsXyk/KEMobCxfLG8pLGVbdV09dm9pZCAwLCQmJkUuaW5z
ZXJ0QmVmb3JlKHQsbC5lbG0saC5lbG0pLF89aVsrK2RdKTooYyhfLG8sdCxoLmVsbSksXz1pWysr
ZF0pKSk7cD52PyhmPW4oaVt5KzFdKT9udWxsOmlbeSsxXS5lbG0sZyh0LGYsaSxkLHksbykpOmQ+
eSYmYih0LGUscCx2KX1mdW5jdGlvbiBDKHQsZSxvLGEpe2lmKHQhPT1lKXt2YXIgcz1lLmVsbT10
LmVsbTtpZihpKHQuaXNBc3luY1BsYWNlaG9sZGVyKSlyZXR1cm4gdm9pZChyKGUuYXN5bmNGYWN0
b3J5LnJlc29sdmVkKT9BKHQuZWxtLGUsbyk6ZS5pc0FzeW5jUGxhY2Vob2xkZXI9ITApO2lmKGko
ZS5pc1N0YXRpYykmJmkodC5pc1N0YXRpYykmJmUua2V5PT09dC5rZXkmJihpKGUuaXNDbG9uZWQp
fHxpKGUuaXNPbmNlKSkpcmV0dXJuIHZvaWQoZS5jb21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVu
dEluc3RhbmNlKTt2YXIgYyx1PWUuZGF0YTtyKHUpJiZyKGM9dS5ob29rKSYmcihjPWMucHJlcGF0
Y2gpJiZjKHQsZSk7dmFyIGw9dC5jaGlsZHJlbixmPWUuY2hpbGRyZW47aWYocih1KSYmaChlKSl7
Zm9yKGM9MDtjPFMudXBkYXRlLmxlbmd0aDsrK2MpUy51cGRhdGVbY10odCxlKTtyKGM9dS5ob29r
KSYmcihjPWMudXBkYXRlKSYmYyh0LGUpfW4oZS50ZXh0KT9yKGwpJiZyKGYpP2whPT1mJiYkKHMs
bCxmLG8sYSk6cihmKT8ocih0LnRleHQpJiZFLnNldFRleHRDb250ZW50KHMsIiIpLGcocyxudWxs
LGYsMCxmLmxlbmd0aC0xLG8pKTpyKGwpP2IocyxsLDAsbC5sZW5ndGgtMSk6cih0LnRleHQpJiZF
LnNldFRleHRDb250ZW50KHMsIiIpOnQudGV4dCE9PWUudGV4dCYmRS5zZXRUZXh0Q29udGVudChz
LGUudGV4dCkscih1KSYmcihjPXUuaG9vaykmJnIoYz1jLnBvc3RwYXRjaCkmJmModCxlKX19ZnVu
Y3Rpb24geCh0LGUsbil7aWYoaShuKSYmcih0LnBhcmVudCkpdC5wYXJlbnQuZGF0YS5wZW5kaW5n
SW5zZXJ0PWU7ZWxzZSBmb3IodmFyIG89MDtvPGUubGVuZ3RoOysrbyllW29dLmRhdGEuaG9vay5p
bnNlcnQoZVtvXSl9ZnVuY3Rpb24gQSh0LGUsbil7aWYoaShlLmlzQ29tbWVudCkmJnIoZS5hc3lu
Y0ZhY3RvcnkpKXJldHVybiBlLmVsbT10LGUuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2UuZWxt
PXQ7dmFyIG89ZS50YWcsYT1lLmRhdGEscz1lLmNoaWxkcmVuO2lmKHIoYSkmJihyKGs9YS5ob29r
KSYmcihrPWsuaW5pdCkmJmsoZSwhMCkscihrPWUuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4g
bChlLG4pLCEwO2lmKHIobykpe2lmKHIocykpaWYodC5oYXNDaGlsZE5vZGVzKCkpe2Zvcih2YXIg
Yz0hMCx1PXQuZmlyc3RDaGlsZCxmPTA7ZjxzLmxlbmd0aDtmKyspe2lmKCF1fHwhQSh1LHNbZl0s
bikpe2M9ITE7YnJlYWt9dT11Lm5leHRTaWJsaW5nfWlmKCFjfHx1KXJldHVybiExfWVsc2Ugdihl
LHMsbik7aWYocihhKSlmb3IodmFyIHAgaW4gYSlpZighaihwKSl7bShlLG4pO2JyZWFrfX1lbHNl
IHQuZGF0YSE9PWUudGV4dCYmKHQuZGF0YT1lLnRleHQpO3JldHVybiEwfXZhciBrLE8sUz17fSxU
PXQubW9kdWxlcyxFPXQubm9kZU9wcztmb3Ioaz0wO2s8U2EubGVuZ3RoOysraylmb3IoU1tTYVtr
XV09W10sTz0wO088VC5sZW5ndGg7KytPKXIoVFtPXVtTYVtrXV0pJiZTW1NhW2tdXS5wdXNoKFRb
T11bU2Fba11dKTt2YXIgaj1kKCJhdHRycyxzdHlsZSxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNT
dHlsZSxrZXkiKTtyZXR1cm4gZnVuY3Rpb24odCxvLGEscyx1LGwpe2lmKG4obykpcmV0dXJuIHZv
aWQocih0KSYmXyh0KSk7dmFyIGY9ITEscD1bXTtpZihuKHQpKWY9ITAsYyhvLHAsdSxsKTtlbHNl
e3ZhciBkPXIodC5ub2RlVHlwZSk7aWYoIWQmJmVuKHQsbykpQyh0LG8scCxzKTtlbHNle2lmKGQp
e2lmKDE9PT10Lm5vZGVUeXBlJiZ0Lmhhc0F0dHJpYnV0ZShXaSkmJih0LnJlbW92ZUF0dHJpYnV0
ZShXaSksYT0hMCksaShhKSYmQSh0LG8scCkpcmV0dXJuIHgobyxwLCEwKSx0O3Q9ZSh0KX12YXIg
dj10LmVsbSxtPUUucGFyZW50Tm9kZSh2KTtpZihjKG8scCx2Ll9sZWF2ZUNiP251bGw6bSxFLm5l
eHRTaWJsaW5nKHYpKSxyKG8ucGFyZW50KSl7Zm9yKHZhciB5PW8ucGFyZW50O3k7KXkuZWxtPW8u
ZWxtLHk9eS5wYXJlbnQ7aWYoaChvKSlmb3IodmFyIGc9MDtnPFMuY3JlYXRlLmxlbmd0aDsrK2cp
Uy5jcmVhdGVbZ10oT2Esby5wYXJlbnQpfXIobSk/YihtLFt0XSwwLDApOnIodC50YWcpJiZfKHQp
fX1yZXR1cm4geChvLHAsZiksby5lbG19fSh7bm9kZU9wczpBYSxtb2R1bGVzOmlzfSksYXM9ZCgi
dGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwiKTtvbyYmZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciB0PWRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQ7dCYmdC52bW9kZWwmJmRyKHQsImlucHV0Iil9KTt2YXIgc3M9e2lu
c2VydGVkOmZ1bmN0aW9uKHQsZSxuKXtpZigic2VsZWN0Ij09PW4udGFnKXt2YXIgcj1mdW5jdGlv
bigpe3VyKHQsZSxuLmNvbnRleHQpfTtyKCksKGlvfHxhbykmJnNldFRpbWVvdXQociwwKSx0Ll92
T3B0aW9ucz1bXS5tYXAuY2FsbCh0Lm9wdGlvbnMsbHIpfWVsc2UoInRleHRhcmVhIj09PW4udGFn
fHxhcyh0LnR5cGUpKSYmKHQuX3ZNb2RpZmllcnM9ZS5tb2RpZmllcnMsZS5tb2RpZmllcnMubGF6
eXx8KHQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixwciksc298fCh0LmFkZEV2ZW50TGlzdGVu
ZXIoImNvbXBvc2l0aW9uc3RhcnQiLGZyKSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9u
ZW5kIixwcikpLG9vJiYodC52bW9kZWw9ITApKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24o
dCxlLG4pe2lmKCJzZWxlY3QiPT09bi50YWcpe3VyKHQsZSxuLmNvbnRleHQpO3ZhciByPXQuX3ZP
cHRpb25zOyh0Ll92T3B0aW9ucz1bXS5tYXAuY2FsbCh0Lm9wdGlvbnMsbHIpKS5zb21lKGZ1bmN0
aW9uKHQsZSl7cmV0dXJuISQodCxyW2VdKX0pJiZkcih0LCJjaGFuZ2UiKX19fSxjcz17YmluZDpm
dW5jdGlvbih0LGUsbil7dmFyIHI9ZS52YWx1ZTtuPXZyKG4pO3ZhciBpPW4uZGF0YSYmbi5kYXRh
LnRyYW5zaXRpb24sbz10Ll9fdk9yaWdpbmFsRGlzcGxheT0ibm9uZSI9PT10LnN0eWxlLmRpc3Bs
YXk/IiI6dC5zdHlsZS5kaXNwbGF5O3ImJmk/KG4uZGF0YS5zaG93PSEwLGlyKG4sZnVuY3Rpb24o
KXt0LnN0eWxlLmRpc3BsYXk9b30pKTp0LnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIn0sdXBkYXRl
OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLnZhbHVlO3IhPT1lLm9sZFZhbHVlJiYobj12cihuKSxu
LmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uPyhuLmRhdGEuc2hvdz0hMCxyP2lyKG4sZnVuY3Rpb24o
KXt0LnN0eWxlLmRpc3BsYXk9dC5fX3ZPcmlnaW5hbERpc3BsYXl9KTpvcihuLGZ1bmN0aW9uKCl7
dC5zdHlsZS5kaXNwbGF5PSJub25lIn0pKTp0LnN0eWxlLmRpc3BsYXk9cj90Ll9fdk9yaWdpbmFs
RGlzcGxheToibm9uZSIpfSx1bmJpbmQ6ZnVuY3Rpb24odCxlLG4scixpKXtpfHwodC5zdHlsZS5k
aXNwbGF5PXQuX192T3JpZ2luYWxEaXNwbGF5KX19LHVzPXttb2RlbDpzcyxzaG93OmNzfSxscz17
bmFtZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpT
dHJpbmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0
cmluZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0
aXZlQ2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJp
bmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX0s
ZnM9e25hbWU6InRyYW5zaXRpb24iLHByb3BzOmxzLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlv
bih0KXt2YXIgZT10aGlzLG49dGhpcy4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47aWYobiYmKG49
bi5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnfHxicih0KX0pLG4ubGVuZ3RoKSl7dmFy
IHI9dGhpcy5tb2RlLGk9blswXTtpZihncih0aGlzLiR2bm9kZSkpcmV0dXJuIGk7dmFyIG89aHIo
aSk7aWYoIW8pcmV0dXJuIGk7aWYodGhpcy5fbGVhdmluZylyZXR1cm4geXIodCxpKTt2YXIgcz0i
X190cmFuc2l0aW9uLSIrdGhpcy5fdWlkKyItIjtvLmtleT1udWxsPT1vLmtleT9vLmlzQ29tbWVu
dD9zKyJjb21tZW50IjpzK28udGFnOmEoby5rZXkpPzA9PT1TdHJpbmcoby5rZXkpLmluZGV4T2Yo
cyk/by5rZXk6cytvLmtleTpvLmtleTt2YXIgYz0oby5kYXRhfHwoby5kYXRhPXt9KSkudHJhbnNp
dGlvbj1tcih0aGlzKSx1PXRoaXMuX3Zub2RlLGw9aHIodSk7aWYoby5kYXRhLmRpcmVjdGl2ZXMm
Jm8uZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuInNob3ciPT09dC5uYW1l
fSkmJihvLmRhdGEuc2hvdz0hMCksbCYmbC5kYXRhJiYhX3IobyxsKSYmIWJyKGwpKXt2YXIgZj1s
JiYobC5kYXRhLnRyYW5zaXRpb249Xyh7fSxjKSk7aWYoIm91dC1pbiI9PT1yKXJldHVybiB0aGlz
Ll9sZWF2aW5nPSEwLHJ0KGYsImFmdGVyTGVhdmUiLGZ1bmN0aW9uKCl7ZS5fbGVhdmluZz0hMSxl
LiRmb3JjZVVwZGF0ZSgpfSkseXIodCxpKTtpZigiaW4tb3V0Ij09PXIpe2lmKGJyKG8pKXJldHVy
biB1O3ZhciBwLGQ9ZnVuY3Rpb24oKXtwKCl9O3J0KGMsImFmdGVyRW50ZXIiLGQpLHJ0KGMsImVu
dGVyQ2FuY2VsbGVkIixkKSxydChmLCJkZWxheUxlYXZlIixmdW5jdGlvbih0KXtwPXR9KX19cmV0
dXJuIGl9fX0scHM9Xyh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSxscyk7ZGVsZXRlIHBz
Lm1vZGU7dmFyIGRzPXtwcm9wczpwcyxyZW5kZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMu
dGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0LmNyZWF0ZShudWxsKSxy
PXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRzbG90cy5kZWZhdWx0fHxb
XSxvPXRoaXMuY2hpbGRyZW49W10sYT1tcih0aGlzKSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBj
PWlbc107aWYoYy50YWcpaWYobnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2Yo
Il9fdmxpc3QiKSlvLnB1c2goYyksbltjLmtleV09YywoYy5kYXRhfHwoYy5kYXRhPXt9KSkudHJh
bnNpdGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIgdT1bXSxsPVtdLGY9MDtmPHIubGVuZ3RoO2Yr
Kyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0/dS5wdXNoKHApOmwucHVzaChwKX10aGlzLmtlcHQ9
dChlLG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIHQoZSxudWxsLG8pfSxiZWZvcmVVcGRh
dGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0aGlzLmtlcHQsITEsITAp
LHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucHJl
dkNoaWxkcmVuLGU9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtpZih0
Lmxlbmd0aCYmdGhpcy5oYXNNb3ZlKHRbMF0uZWxtLGUpKXt0LmZvckVhY2god3IpLHQuZm9yRWFj
aCgkciksdC5mb3JFYWNoKENyKTt2YXIgbj1kb2N1bWVudC5ib2R5O24ub2Zmc2V0SGVpZ2h0O3Qu
Zm9yRWFjaChmdW5jdGlvbih0KXtpZih0LmRhdGEubW92ZWQpe3ZhciBuPXQuZWxtLHI9bi5zdHls
ZTtZbihuLGUpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0
aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihYYSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gdChyKXtyJiYh
L3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVy
KFhhLHQpLG4uX21vdmVDYj1udWxsLFFuKG4sZSkpfSl9fSl9fSxtZXRob2RzOntoYXNNb3ZlOmZ1
bmN0aW9uKHQsZSl7aWYoIXFhKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMu
X2hhc01vdmU7dmFyIG49dC5jbG9uZU5vZGUoKTt0Ll90cmFuc2l0aW9uQ2xhc3NlcyYmdC5fdHJh
bnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbih0KXtHbihuLHQpfSksV24obixlKSxuLnN0
eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPWVyKG4pO3Jl
dHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3Jt
fX19LHZzPXtUcmFuc2l0aW9uOmZzLFRyYW5zaXRpb25Hcm91cDpkc307d2UuY29uZmlnLm11c3RV
c2VQcm9wPXBhLHdlLmNvbmZpZy5pc1Jlc2VydmVkVGFnPUNhLHdlLmNvbmZpZy5pc1Jlc2VydmVk
QXR0cj1sYSx3ZS5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPUZlLHdlLmNvbmZpZy5pc1Vua25vd25F
bGVtZW50PUJlLF8od2Uub3B0aW9ucy5kaXJlY3RpdmVzLHVzKSxfKHdlLm9wdGlvbnMuY29tcG9u
ZW50cyx2cyksd2UucHJvdG90eXBlLl9fcGF0Y2hfXz1ubz9vczp3LHdlLnByb3RvdHlwZS4kbW91
bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10JiZubz9VZSh0KTp2b2lkIDAsJHQodGhpcyx0LGUp
fSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WGkuZGV2dG9vbHMmJnlvJiZ5by5lbWl0KCJpbml0Iix3
ZSl9LDApO3ZhciBocyxtcz0hIW5vJiZmdW5jdGlvbih0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlubmVySFRNTD0nPGRpdiBhPSInK3QrJyIvPicsbi5p
bm5lckhUTUwuaW5kZXhPZihlKT4wfSgiXG4iLCImIzEwOyIpLHlzPS9ce1x7KCg/Oi58XG4pKz8p
XH1cfS9nLGdzPS9bLS4qKz9eJHt9KCl8W1xdXC9cXF0vZyxfcz1tKGZ1bmN0aW9uKHQpe3ZhciBl
PXRbMF0ucmVwbGFjZShncywiXFwkJiIpLG49dFsxXS5yZXBsYWNlKGdzLCJcXCQmIik7cmV0dXJu
IG5ldyBSZWdFeHAoZSsiKCg/Oi58XFxuKSs/KSIrbiwiZyIpfSksYnM9e3N0YXRpY0tleXM6WyJz
dGF0aWNDbGFzcyJdLHRyYW5zZm9ybU5vZGU6QXIsZ2VuRGF0YTprcn0sd3M9e3N0YXRpY0tleXM6
WyJzdGF0aWNTdHlsZSJdLHRyYW5zZm9ybU5vZGU6T3IsZ2VuRGF0YTpTcn0sJHM9W2JzLHdzXSxD
cz17bW9kZWw6am4sdGV4dDpUcixodG1sOkVyfSx4cz1kKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVk
LGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNl
LHRyYWNrLHdiciIpLEFzPWQoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0
aCx0aGVhZCx0cixzb3VyY2UiKSxrcz1kKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9j
a3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRs
LGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1
LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9w
dGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0
Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLE9zPXtleHBlY3RIVE1MOiEwLG1vZHVsZXM6
JHMsZGlyZWN0aXZlczpDcyxpc1ByZVRhZzokYSxpc1VuYXJ5VGFnOnhzLG11c3RVc2VQcm9wOnBh
LGNhbkJlTGVmdE9wZW5UYWc6QXMsaXNSZXNlcnZlZFRhZzpDYSxnZXRUYWdOYW1lc3BhY2U6RmUs
c3RhdGljS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1
cm4gdC5jb25jYXQoZS5zdGF0aWNLZXlzfHxbXSl9LFtdKS5qb2luKCIsIil9KCRzKX0sU3M9e2Rl
Y29kZTpmdW5jdGlvbih0KXtyZXR1cm4gaHM9aHN8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpLGhzLmlubmVySFRNTD10LGhzLnRleHRDb250ZW50fX0sVHM9LyhbXlxzIic8PlwvPV0rKS8s
RXM9Lyg/Oj0pLyxqcz1bLyIoW14iXSopIisvLnNvdXJjZSwvJyhbXiddKiknKy8uc291cmNlLC8o
W15ccyInPTw+YF0rKS8uc291cmNlXSxOcz1uZXcgUmVnRXhwKCJeXFxzKiIrVHMuc291cmNlKyIo
PzpcXHMqKCIrRXMuc291cmNlKyIpXFxzKig/OiIranMuam9pbigifCIpKyIpKT8iKSxMcz0iW2Et
ekEtWl9dW1xcd1xcLVxcLl0qIixNcz0iKCg/OiIrTHMrIlxcOik/IitMcysiKSIsSXM9bmV3IFJl
Z0V4cCgiXjwiK01zKSxQcz0vXlxzKihcLz8pPi8sUnM9bmV3IFJlZ0V4cCgiXjxcXC8iK01zKyJb
Xj5dKj4iKSxEcz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxGcz0vXjwhLS0vLEJzPS9ePCFcWy8sVXM9
ITE7IngiLnJlcGxhY2UoL3goLik/L2csZnVuY3Rpb24odCxlKXtVcz0iIj09PWV9KTt2YXIgSHMs
VnMsenMsSnMsS3MscXMsV3MsR3MsWnMsWHMsWXM9ZCgic2NyaXB0LHN0eWxlLHRleHRhcmVhIiwh
MCksUXM9e30sdGM9eyImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiZhbXA7Ijoi
JiIsIiYjMTA7IjoiXG4ifSxlYz0vJig/Omx0fGd0fHF1b3R8YW1wKTsvZyxuYz0vJig/Omx0fGd0
fHF1b3R8YW1wfCMxMCk7L2cscmM9ZCgicHJlLHRleHRhcmVhIiwhMCksaWM9ZnVuY3Rpb24odCxl
KXtyZXR1cm4gdCYmcmModCkmJiJcbiI9PT1lWzBdfSxvYz0vXkB8XnYtb246LyxhYz0vXnYtfF5A
fF46LyxzYz0vKC4qPylccysoPzppbnxvZilccysoLiopLyxjYz0vXCgoXHtbXn1dKlx9fFteLF0q
KSwoW14sXSopKD86LChbXixdKikpP1wpLyx1Yz0vOiguKikkLyxsYz0vXjp8XnYtYmluZDovLGZj
PS9cLlteLl0rL2cscGM9bShTcy5kZWNvZGUpLGRjPS9eeG1sbnM6TlNcZCsvLHZjPS9eTlNcZCs6
LyxoYz1tKHRpKSxtYz0vXlxzKihbXHckX10rfFwoW14pXSo/XCkpXHMqPT58XmZ1bmN0aW9uXHMq
XCgvLHljPS9eXHMqW0EtWmEtel8kXVtcdyRdKig/OlwuW0EtWmEtel8kXVtcdyRdKnxcWycuKj8n
XXxcWyIuKj8iXXxcW1xkK118XFtbQS1aYS16XyRdW1x3JF0qXSkqXHMqJC8sZ2M9e2VzYzoyNyx0
YWI6OSxlbnRlcjoxMyxzcGFjZTozMix1cDozOCxsZWZ0OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVs
ZXRlOls4LDQ2XX0sX2M9ZnVuY3Rpb24odCl7cmV0dXJuImlmKCIrdCsiKXJldHVybiBudWxsOyJ9
LGJjPXtzdG9wOiIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IixwcmV2ZW50OiIkZXZlbnQucHJl
dmVudERlZmF1bHQoKTsiLHNlbGY6X2MoIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50
VGFyZ2V0IiksY3RybDpfYygiISRldmVudC5jdHJsS2V5Iiksc2hpZnQ6X2MoIiEkZXZlbnQuc2hp
ZnRLZXkiKSxhbHQ6X2MoIiEkZXZlbnQuYWx0S2V5IiksbWV0YTpfYygiISRldmVudC5tZXRhS2V5
IiksbGVmdDpfYygiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDAiKSxt
aWRkbGU6X2MoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxIikscmln
aHQ6X2MoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyIil9LHdjPXtv
bjp1aSxiaW5kOmxpLGNsb2FrOnd9LCRjPWZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz10LHRoaXMu
d2Fybj10Lndhcm58fGhuLHRoaXMudHJhbnNmb3Jtcz1tbih0Lm1vZHVsZXMsInRyYW5zZm9ybUNv
ZGUiKSx0aGlzLmRhdGFHZW5GbnM9bW4odC5tb2R1bGVzLCJnZW5EYXRhIiksdGhpcy5kaXJlY3Rp
dmVzPV8oXyh7fSx3YyksdC5kaXJlY3RpdmVzKTt2YXIgZT10LmlzUmVzZXJ2ZWRUYWd8fEtpO3Ro
aXMubWF5YmVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIWUodC50YWcpfSx0aGlzLm9uY2VJ
ZD0wLHRoaXMuc3RhdGljUmVuZGVyRm5zPVtdfSxDYz0obmV3IFJlZ0V4cCgiXFxiIisiZG8saWYs
Zm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFz
cyxjb25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1
cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0
aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpLG5ldyBSZWdF
eHAoIlxcYiIrImRlbGV0ZSx0eXBlb2Ysdm9pZCIuc3BsaXQoIiwiKS5qb2luKCJcXHMqXFwoW15c
XCldKlxcKXxcXGIiKSsiXFxzKlxcKFteXFwpXSpcXCkiKSxmdW5jdGlvbih0KXtyZXR1cm4gZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gbihuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZSksbz1bXSxhPVtd
O2lmKGkud2Fybj1mdW5jdGlvbih0LGUpeyhlP2E6bykucHVzaCh0KX0scil7ci5tb2R1bGVzJiYo
aS5tb2R1bGVzPShlLm1vZHVsZXN8fFtdKS5jb25jYXQoci5tb2R1bGVzKSksci5kaXJlY3RpdmVz
JiYoaS5kaXJlY3RpdmVzPV8oT2JqZWN0LmNyZWF0ZShlLmRpcmVjdGl2ZXMpLHIuZGlyZWN0aXZl
cykpO2Zvcih2YXIgcyBpbiByKSJtb2R1bGVzIiE9PXMmJiJkaXJlY3RpdmVzIiE9PXMmJihpW3Nd
PXJbc10pfXZhciBjPXQobixpKTtyZXR1cm4gYy5lcnJvcnM9byxjLnRpcHM9YSxjfXJldHVybntj
b21waWxlOm4sY29tcGlsZVRvRnVuY3Rpb25zOklpKG4pfX19KGZ1bmN0aW9uKHQsZSl7dmFyIG49
THIodC50cmltKCksZSk7UXIobixlKTt2YXIgcj1maShuLGUpO3JldHVybnthc3Q6bixyZW5kZXI6
ci5yZW5kZXIsc3RhdGljUmVuZGVyRm5zOnIuc3RhdGljUmVuZGVyRm5zfX0pKSx4Yz1DYyhPcyks
QWM9eGMuY29tcGlsZVRvRnVuY3Rpb25zLGtjPW0oZnVuY3Rpb24odCl7dmFyIGU9VWUodCk7cmV0
dXJuIGUmJmUuaW5uZXJIVE1MfSksT2M9d2UucHJvdG90eXBlLiRtb3VudDt3ZS5wcm90b3R5cGUu
JG1vdW50PWZ1bmN0aW9uKHQsZSl7aWYoKHQ9dCYmVWUodCkpPT09ZG9jdW1lbnQuYm9keXx8dD09
PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25z
O2lmKCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKCJzdHJpbmciPT10eXBlb2Yg
cikiIyI9PT1yLmNoYXJBdCgwKSYmKHI9a2MocikpO2Vsc2V7aWYoIXIubm9kZVR5cGUpcmV0dXJu
IHRoaXM7cj1yLmlubmVySFRNTH1lbHNlIHQmJihyPVBpKHQpKTtpZihyKXt2YXIgaT1BYyhyLHtz
aG91bGREZWNvZGVOZXdsaW5lczptcyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVycyxjb21tZW50czpu
LmNvbW1lbnRzfSx0aGlzKSxvPWkucmVuZGVyLGE9aS5zdGF0aWNSZW5kZXJGbnM7bi5yZW5kZXI9
byxuLnN0YXRpY1JlbmRlckZucz1hfX1yZXR1cm4gT2MuY2FsbCh0aGlzLHQsZSl9LHdlLmNvbXBp
bGU9QWMsZS5kZWZhdWx0PXdlfS5jYWxsKGUsbigxMikpfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0
cz1mdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGE9dD10fHx7fSxzPXR5cGVvZiB0LmRlZmF1bHQ7
Im9iamVjdCIhPT1zJiYiZnVuY3Rpb24iIT09c3x8KG89dCxhPXQuZGVmYXVsdCk7dmFyIGM9ImZ1
bmN0aW9uIj09dHlwZW9mIGE/YS5vcHRpb25zOmE7ZSYmKGMucmVuZGVyPWUucmVuZGVyLGMuc3Rh
dGljUmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5zKSxyJiYoYy5fc2NvcGVJZD1yKTt2YXIgdTtp
ZihpPyh1PWZ1bmN0aW9uKHQpe3Q9dHx8dGhpcy4kdm5vZGUmJnRoaXMuJHZub2RlLnNzckNvbnRl
eHR8fHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC4kdm5vZGUmJnRoaXMucGFyZW50LiR2bm9kZS5z
c3JDb250ZXh0LHR8fCJ1bmRlZmluZWQiPT10eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfX3x8KHQ9
X19WVUVfU1NSX0NPTlRFWFRfXyksbiYmbi5jYWxsKHRoaXMsdCksdCYmdC5fcmVnaXN0ZXJlZENv
bXBvbmVudHMmJnQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChpKX0sYy5fc3NyUmVnaXN0ZXI9
dSk6biYmKHU9biksdSl7dmFyIGw9Yy5mdW5jdGlvbmFsLGY9bD9jLnJlbmRlcjpjLmJlZm9yZUNy
ZWF0ZTtsP2MucmVuZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUuY2FsbChlKSxmKHQsZSl9OmMu
YmVmb3JlQ3JlYXRlPWY/W10uY29uY2F0KGYsdSk6W3VdfXJldHVybntlc01vZHVsZTpvLGV4cG9y
dHM6YSxvcHRpb25zOmN9fX0sZnVuY3Rpb24odCxlLG4peyFmdW5jdGlvbih0KXtmdW5jdGlvbiBl
KCl7cmV0dXJuIiI9PT11Lmhhc2h8fCIjIj09PXUuaGFzaH1mdW5jdGlvbiBuKHQsZSl7Zm9yKHZh
ciBuPTA7bjx0Lmxlbmd0aDtuKz0xKWlmKCExPT09ZSh0W25dLG4sdCkpcmV0dXJufWZ1bmN0aW9u
IHIodCl7Zm9yKHZhciBlPVtdLG49MCxyPXQubGVuZ3RoO248cjtuKyspZT1lLmNvbmNhdCh0W25d
KTtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSxuKXtpZighdC5sZW5ndGgpcmV0dXJuIG4oKTt2YXIg
cj0wOyFmdW5jdGlvbiBpKCl7ZSh0W3JdLGZ1bmN0aW9uKGUpe2V8fCExPT09ZT8obihlKSxuPWZ1
bmN0aW9uKCl7fSk6KHIrPTEscj09PXQubGVuZ3RoP24oKTppKCkpfSl9KCl9ZnVuY3Rpb24gbyh0
LGUsbil7bj10O2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikmJihuPWVbcl0o
dCkpIT09dClicmVhaztyZXR1cm4gbj09PXQ/IihbLl9hLXpBLVowLTktJSgpXSspIjpufWZ1bmN0
aW9uIGEodCxlKXtmb3IodmFyIG4scj0wLGk9IiI7bj10LnN1YnN0cihyKS5tYXRjaCgvW15cd1xk
XC0gJUAmXSpcKlteXHdcZFwtICVAJl0qLyk7KXI9bi5pbmRleCtuWzBdLmxlbmd0aCxuWzBdPW5b
MF0ucmVwbGFjZSgvXlwqLywiKFtfLigpIVxcICVAJmEtekEtWjAtOS1dKykiKSxpKz10LnN1YnN0
cigwLG4uaW5kZXgpK25bMF07dD1pKz10LnN1YnN0cihyKTt2YXIgYSxzLGM9dC5tYXRjaCgvOihb
XlwvXSspL2dpKTtpZihjKXtzPWMubGVuZ3RoO2Zvcih2YXIgdT0wO3U8czt1KyspYT1jW3VdLHQ9
Ijo6Ij09PWEuc2xpY2UoMCwyKT9hLnNsaWNlKDEpOnQucmVwbGFjZShhLG8oYSxlKSl9cmV0dXJu
IHR9ZnVuY3Rpb24gYyh0LGUsbixyKXt2YXIgaSxvPTAsYT0wLHM9MCxuPShufHwiKCIpLnRvU3Ry
aW5nKCkscj0ocnx8IikiKS50b1N0cmluZygpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBj
PXRbaV07aWYoYy5pbmRleE9mKG4sbyk+Yy5pbmRleE9mKHIsbyl8fH5jLmluZGV4T2YobixvKSYm
IX5jLmluZGV4T2YocixvKXx8IX5jLmluZGV4T2YobixvKSYmfmMuaW5kZXhPZihyLG8pKXtpZihh
PWMuaW5kZXhPZihuLG8pLHM9Yy5pbmRleE9mKHIsbyksfmEmJiF+c3x8IX5hJiZ+cyl7dD1bdC5z
bGljZSgwLChpfHwxKSsxKS5qb2luKGUpXS5jb25jYXQodC5zbGljZSgoaXx8MSkrMSkpfW89KHM+
YT9zOmEpKzEsaT0wfWVsc2Ugbz0wfXJldHVybiB0fXZhciB1PWRvY3VtZW50LmxvY2F0aW9uLGw9
e21vZGU6Im1vZGVybiIsaGFzaDp1Lmhhc2gsaGlzdG9yeTohMSxjaGVjazpmdW5jdGlvbigpe3Zh
ciB0PXUuaGFzaDt0IT10aGlzLmhhc2gmJih0aGlzLmhhc2g9dCx0aGlzLm9uSGFzaENoYW5nZWQo
KSl9LGZpcmU6ZnVuY3Rpb24oKXsibW9kZXJuIj09PXRoaXMubW9kZT8hMD09PXRoaXMuaGlzdG9y
eT93aW5kb3cub25wb3BzdGF0ZSgpOndpbmRvdy5vbmhhc2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENo
YW5nZWQoKX0saW5pdDpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBlPTAsbj1m
Lmxpc3RlbmVycy5sZW5ndGg7ZTxuO2UrKylmLmxpc3RlbmVyc1tlXSh0KX12YXIgcj10aGlzO2lm
KHRoaXMuaGlzdG9yeT1lLGYubGlzdGVuZXJzfHwoZi5saXN0ZW5lcnM9W10pLCJvbmhhc2hjaGFu
Z2UiaW4gd2luZG93JiYodm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5k
b2N1bWVudE1vZGU+NykpITA9PT10aGlzLmhpc3Rvcnk/c2V0VGltZW91dChmdW5jdGlvbigpe3dp
bmRvdy5vbnBvcHN0YXRlPW59LDUwMCk6d2luZG93Lm9uaGFzaGNoYW5nZT1uLHRoaXMubW9kZT0i
bW9kZXJuIjtlbHNle3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2kuaWQ9
InN0YXRlLWZyYW1lIixpLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaSksdGhpcy53cml0ZUZyYW1lKCIiKSwib25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVu
dCYmImF0dGFjaEV2ZW50ImluIGRvY3VtZW50JiZkb2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9w
ZXJ0eWNoYW5nZSIsZnVuY3Rpb24oKXsibG9jYXRpb24iPT09ZXZlbnQucHJvcGVydHlOYW1lJiZy
LmNoZWNrKCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtyLmNoZWNrKCl9LDUwKSx0
aGlzLm9uSGFzaENoYW5nZWQ9bix0aGlzLm1vZGU9ImxlZ2FjeSJ9cmV0dXJuIGYubGlzdGVuZXJz
LnB1c2godCksdGhpcy5tb2RlfSxkZXN0cm95OmZ1bmN0aW9uKHQpe2lmKGYmJmYubGlzdGVuZXJz
KWZvcih2YXIgZT1mLmxpc3RlbmVycyxuPWUubGVuZ3RoLTE7bj49MDtuLS0pZVtuXT09PXQmJmUu
c3BsaWNlKG4sMSl9LHNldEhhc2g6ZnVuY3Rpb24odCl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLm1v
ZGUmJnRoaXMud3JpdGVGcmFtZSh0KSwhMD09PXRoaXMuaGlzdG9yeT8od2luZG93Lmhpc3Rvcnku
cHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLHQpLHRoaXMuZmlyZSgpKTp1Lmhhc2g9Ii8iPT09
dFswXT90OiIvIit0LHRoaXN9LHdyaXRlRnJhbWU6ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1lIiksbj1lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250
ZW50V2luZG93LmRvY3VtZW50O24ub3BlbigpLG4ud3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIit0
KyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNjcmlwdD4iKSxuLmNsb3Nl
KCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faGFzaDtyZXR1cm4gdCE9dS5oYXNo
JiYodS5oYXNoPXQpLHRoaXN9LG9uSGFzaENoYW5nZWQ6ZnVuY3Rpb24oKXt9fSxmPXQuUm91dGVy
PWZ1bmN0aW9uKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYpKXJldHVybiBuZXcgZih0KTt0aGlz
LnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlzLm1ldGhvZHM9WyJvbiIsIm9uY2UiLCJhZnRl
ciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhpcy5fbWV0aG9kcz17fSx0aGlzLl9pbnNlcnQ9
dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5pbnNlcnRFeCx0aGlzLmhpc3RvcnlTdXBwb3J0
PW51bGwhPShudWxsIT13aW5kb3cuaGlzdG9yeT93aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU6bnVs
bCksdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50KHR8fHt9KX07Zi5wcm90b3R5cGUuaW5pdD1m
dW5jdGlvbih0KXt2YXIgbixyPXRoaXM7cmV0dXJuIHRoaXMuaGFuZGxlcj1mdW5jdGlvbih0KXt2
YXIgZT10JiZ0Lm5ld1VSTHx8d2luZG93LmxvY2F0aW9uLmhhc2gsbj0hMD09PXIuaGlzdG9yeT9y
LmdldFBhdGgoKTplLnJlcGxhY2UoLy4qIy8sIiIpO3IuZGlzcGF0Y2goIm9uIiwiLyI9PT1uLmNo
YXJBdCgwKT9uOiIvIituKX0sbC5pbml0KHRoaXMuaGFuZGxlcix0aGlzLmhpc3RvcnkpLCExPT09
dGhpcy5oaXN0b3J5P2UoKSYmdD91Lmhhc2g9dDplKCl8fHIuZGlzcGF0Y2goIm9uIiwiLyIrdS5o
YXNoLnJlcGxhY2UoL14oI1wvfCN8XC8pLywiIikpOih0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0
PyhuPWUoKSYmdD90OmUoKT9udWxsOnUuaGFzaC5yZXBsYWNlKC9eIy8sIiIpKSYmd2luZG93Lmhp
c3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLG4pOm49dGhpcy5nZXRQYXRoKCks
KG58fCEwPT09dGhpcy5ydW5faW5faW5pdCkmJnRoaXMuaGFuZGxlcigpKSx0aGlzfSxmLnByb3Rv
dHlwZS5leHBsb2RlPWZ1bmN0aW9uKCl7dmFyIHQ9ITA9PT10aGlzLmhpc3Rvcnk/dGhpcy5nZXRQ
YXRoKCk6dS5oYXNoO3JldHVybiIvIj09PXQuY2hhckF0KDEpJiYodD10LnNsaWNlKDEpKSx0LnNs
aWNlKDEsdC5sZW5ndGgpLnNwbGl0KCIvIil9LGYucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9u
KHQsZSxuKXt2YXIgcj10aGlzLmV4cGxvZGUoKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJiJz
dHJpbmciPT10eXBlb2YgZT9yW3RdPWU6InN0cmluZyI9PXR5cGVvZiBuP3Iuc3BsaWNlKHQsZSxz
KTpyPVt0XSxsLnNldEhhc2goci5qb2luKCIvIikpLHJ9LGYucHJvdG90eXBlLmluc2VydEV4PWZ1
bmN0aW9uKHQsZSxuLHIpe3JldHVybiJvbmNlIj09PXQmJih0PSJvbiIsbj1mdW5jdGlvbih0KXt2
YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighZSlyZXR1cm4gZT0hMCx0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKX19KG4pKSx0aGlzLl9pbnNlcnQodCxlLG4scil9LGYucHJvdG90eXBlLmdldFJv
dXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQ7aWYoIm51bWJlciI9PXR5cGVvZiB0KWU9dGhpcy5leHBs
b2RlKClbdF07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPXRoaXMuZXhwbG9kZSgp
O2U9bi5pbmRleE9mKHQpfWVsc2UgZT10aGlzLmV4cGxvZGUoKTtyZXR1cm4gZX0sZi5wcm90b3R5
cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBsLmRlc3Ryb3kodGhpcy5oYW5kbGVyKSx0aGlz
fSxmLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmxvY2F0aW9uLnBh
dGhuYW1lO3JldHVybiIvIiE9PXQuc3Vic3RyKDAsMSkmJih0PSIvIit0KSx0fTt2YXIgcD0vXD8u
Ki87Zi5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKHQpe3Q9dHx8e307Zm9yKHZhciBlPTA7
ZTx0aGlzLm1ldGhvZHMubGVuZ3RoO2UrKyl0aGlzLl9tZXRob2RzW3RoaXMubWV0aG9kc1tlXV09
ITA7cmV0dXJuIHRoaXMucmVjdXJzZT10LnJlY3Vyc2V8fHRoaXMucmVjdXJzZXx8ITEsdGhpcy5h
c3luYz10LmFzeW5jfHwhMSx0aGlzLmRlbGltaXRlcj10LmRlbGltaXRlcnx8Ii8iLHRoaXMuc3Ry
aWN0PXZvaWQgMD09PXQuc3RyaWN0fHx0LnN0cmljdCx0aGlzLm5vdGZvdW5kPXQubm90Zm91bmQs
dGhpcy5yZXNvdXJjZT10LnJlc291cmNlLHRoaXMuaGlzdG9yeT10Lmh0bWw1aGlzdG9yeSYmdGhp
cy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5faW5faW5pdD0hMD09PXRoaXMuaGlzdG9yeSYm
ITEhPT10LnJ1bl9oYW5kbGVyX2luX2luaXQsdGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdD0hMD09
PXRoaXMuaGlzdG9yeSYmITEhPT10LmNvbnZlcnRfaGFzaF9pbl9pbml0LHRoaXMuZXZlcnk9e2Fm
dGVyOnQuYWZ0ZXJ8fG51bGwsYmVmb3JlOnQuYmVmb3JlfHxudWxsLG9uOnQub258fG51bGx9LHRo
aXN9LGYucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKHQsZSl7IjoiIT09dFswXSYmKHQ9IjoiK3Qp
O3ZhciBuPW5ldyBSZWdFeHAodCwiZyIpO3JldHVybiB0aGlzLnBhcmFtc1t0XT1mdW5jdGlvbih0
KXtyZXR1cm4gdC5yZXBsYWNlKG4sZS5zb3VyY2V8fGUpfSx0aGlzfSxmLnByb3RvdHlwZS5vbj1m
LnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztyZXR1cm4gbnx8ImZ1
bmN0aW9uIiE9dHlwZW9mIGV8fChuPWUsZT10LHQ9Im9uIiksQXJyYXkuaXNBcnJheShlKT9lLmZv
ckVhY2goZnVuY3Rpb24oZSl7ci5vbih0LGUsbil9KTooZS5zb3VyY2UmJihlPWUuc291cmNlLnJl
cGxhY2UoL1xcXC8vZ2ksIi8iKSksQXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2goZnVuY3Rpb24o
dCl7ci5vbih0LnRvTG93ZXJDYXNlKCksZSxuKX0pOihlPWUuc3BsaXQobmV3IFJlZ0V4cCh0aGlz
LmRlbGltaXRlcikpLGU9YyhlLHRoaXMuZGVsaW1pdGVyKSx2b2lkIHRoaXMuaW5zZXJ0KHQsdGhp
cy5zY29wZS5jb25jYXQoZSksbikpKX0sZi5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0LGUpe3Zh
ciBuPXRoaXMuc2NvcGUubGVuZ3RoO3Quc291cmNlJiYodD10LnNvdXJjZS5yZXBsYWNlKC9cXFwv
L2dpLCIvIikpLHQ9dC5zcGxpdChuZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSksdD1jKHQsdGhp
cy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29wZS5jb25jYXQodCksZS5jYWxsKHRoaXMs
dGhpcyksdGhpcy5zY29wZS5zcGxpY2Uobix0Lmxlbmd0aCl9LGYucHJvdG90eXBlLmRpc3BhdGNo
PWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7by5sYXN0PWEuYWZ0ZXIsby5pbnZva2Uoby5y
dW5saXN0KGEpLG8sbil9dmFyIGksbz10aGlzLGE9dGhpcy50cmF2ZXJzZSh0LGUucmVwbGFjZShw
LCIiKSx0aGlzLnJvdXRlcywiIikscz10aGlzLl9pbnZva2VkO3JldHVybiB0aGlzLl9pbnZva2Vk
PSEwLGEmJjAhPT1hLmxlbmd0aD8oImZvcndhcmQiPT09dGhpcy5yZWN1cnNlJiYoYT1hLnJldmVy
c2UoKSksKGk9dGhpcy5ldmVyeSYmdGhpcy5ldmVyeS5hZnRlcj9bdGhpcy5ldmVyeS5hZnRlcl0u
Y29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF0pJiZpLmxlbmd0aD4wJiZzPyh0aGlzLmFzeW5j
P3RoaXMuaW52b2tlKGksdGhpcyxyKToodGhpcy5pbnZva2UoaSx0aGlzKSxyKCkpLCEwKToocigp
LCEwKSk6KHRoaXMubGFzdD1bXSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5ub3Rmb3VuZCYmdGhp
cy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHttZXRob2Q6dCxwYXRoOmV9LG4pLCExKX0sZi5wcm90
b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyxhPXRoaXM7dGhpcy5hc3luYz8obz1m
dW5jdGlvbihuLHIpe2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJuIGkobixvLHIpOyJmdW5jdGlv
biI9PXR5cGVvZiBuJiZuLmFwcGx5KGUsKHQuY2FwdHVyZXN8fFtdKS5jb25jYXQocikpfSxpKHQs
byxmdW5jdGlvbigpe3ImJnIuYXBwbHkoZSxhcmd1bWVudHMpfSkpOihvPWZ1bmN0aW9uKHIpe3Jl
dHVybiBBcnJheS5pc0FycmF5KHIpP24ocixvKToiZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5
KGUsdC5jYXB0dXJlc3x8W10pOnZvaWQoInN0cmluZyI9PXR5cGVvZiByJiZhLnJlc291cmNlJiZh
LnJlc291cmNlW3JdLmFwcGx5KGUsdC5jYXB0dXJlc3x8W10pKX0sbih0LG8pKX0sZi5wcm90b3R5
cGUudHJhdmVyc2U9ZnVuY3Rpb24odCxlLG4scixpKXtmdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUo
dCl7Zm9yKHZhciBuPVtdLHI9MDtyPHQubGVuZ3RoO3IrKyluW3JdPUFycmF5LmlzQXJyYXkodFty
XSk/ZSh0W3JdKTp0W3JdO3JldHVybiBufWZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPXQubGVuZ3Ro
LTE7ZT49MDtlLS0pQXJyYXkuaXNBcnJheSh0W2VdKT8obih0W2VdKSwwPT09dFtlXS5sZW5ndGgm
JnQuc3BsaWNlKGUsMSkpOmkodFtlXSl8fHQuc3BsaWNlKGUsMSl9aWYoIWkpcmV0dXJuIHQ7dmFy
IHI9ZSh0KTtyZXR1cm4gci5tYXRjaGVkPXQubWF0Y2hlZCxyLmNhcHR1cmVzPXQuY2FwdHVyZXMs
ci5hZnRlcj10LmFmdGVyLmZpbHRlcihpKSxuKHIpLHJ9dmFyIGEscyxjLHUsbD1bXTtpZihlPT09
dGhpcy5kZWxpbWl0ZXImJm5bdF0pcmV0dXJuIHU9W1tuLmJlZm9yZSxuW3RdXS5maWx0ZXIoQm9v
bGVhbildLHUuYWZ0ZXI9W24uYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSx1Lm1hdGNoZWQ9ITAsdS5j
YXB0dXJlcz1bXSxvKHUpO2Zvcih2YXIgZiBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoZikmJigh
dGhpcy5fbWV0aG9kc1tmXXx8dGhpcy5fbWV0aG9kc1tmXSYmIm9iamVjdCI9PXR5cGVvZiBuW2Zd
JiYhQXJyYXkuaXNBcnJheShuW2ZdKSkpe2lmKGE9cz1yK3RoaXMuZGVsaW1pdGVyK2YsdGhpcy5z
dHJpY3R8fChzKz0iWyIrdGhpcy5kZWxpbWl0ZXIrIl0/IiksIShjPWUubWF0Y2gobmV3IFJlZ0V4
cCgiXiIrcykpKSljb250aW51ZTtpZihjWzBdJiZjWzBdPT1lJiZuW2ZdW3RdKXJldHVybiB1PVtb
bltmXS5iZWZvcmUsbltmXVt0XV0uZmlsdGVyKEJvb2xlYW4pXSx1LmFmdGVyPVtuW2ZdLmFmdGVy
XS5maWx0ZXIoQm9vbGVhbiksdS5tYXRjaGVkPSEwLHUuY2FwdHVyZXM9Yy5zbGljZSgxKSx0aGlz
LnJlY3Vyc2UmJm49PT10aGlzLnJvdXRlcyYmKHUucHVzaChbbi5iZWZvcmUsbi5vbl0uZmlsdGVy
KEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29uY2F0KFtuLmFmdGVyXS5maWx0ZXIoQm9vbGVh
bikpKSxvKHUpO2lmKHU9dGhpcy50cmF2ZXJzZSh0LGUsbltmXSxhKSx1Lm1hdGNoZWQpcmV0dXJu
IHUubGVuZ3RoPjAmJihsPWwuY29uY2F0KHUpKSx0aGlzLnJlY3Vyc2UmJihsLnB1c2goW25bZl0u
YmVmb3JlLG5bZl0ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRlcj11LmFmdGVyLmNvbmNhdChb
bltmXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSxuPT09dGhpcy5yb3V0ZXMmJihsLnB1c2goW24u
YmVmb3JlLG4ub25dLmZpbHRlcihCb29sZWFuKSksdS5hZnRlcj11LmFmdGVyLmNvbmNhdChbbi5h
ZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkpLGwubWF0Y2hlZD0hMCxsLmNhcHR1cmVzPXUuY2FwdHVy
ZXMsbC5hZnRlcj11LmFmdGVyLG8obCl9cmV0dXJuITF9LGYucHJvdG90eXBlLmluc2VydD1mdW5j
dGlvbih0LGUsbixyKXt2YXIgaSxvLHMsYztpZihlPWUuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVy
biB0JiZ0Lmxlbmd0aD4wfSkscj1yfHx0aGlzLnJvdXRlcyxjPWUuc2hpZnQoKSwvXDp8XCovLnRl
c3QoYykmJiEvXFxkfFxcdy8udGVzdChjKSYmKGM9YShjLHRoaXMucGFyYW1zKSksZS5sZW5ndGg+
MClyZXR1cm4gcltjXT1yW2NdfHx7fSx0aGlzLmluc2VydCh0LGUsbixyW2NdKTtpZihjfHxlLmxl
bmd0aHx8ciE9PXRoaXMucm91dGVzKXtpZihpPXR5cGVvZiByW2NdLG89QXJyYXkuaXNBcnJheShy
W2NdKSxyW2NdJiYhbyYmIm9iamVjdCI9PWkpc3dpdGNoKHR5cGVvZiByW2NdW3RdKXtjYXNlImZ1
bmN0aW9uIjpyZXR1cm4gdm9pZChyW2NdW3RdPVtyW2NdW3RdLG5dKTtjYXNlIm9iamVjdCI6cmV0
dXJuIHZvaWQgcltjXVt0XS5wdXNoKG4pO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gdm9pZChyW2Nd
W3RdPW4pfWVsc2UgaWYoInVuZGVmaW5lZCI9PWkpcmV0dXJuIHM9e30sc1t0XT1uLHZvaWQocltj
XT1zKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIitpKX1zd2l0Y2go
dHlwZW9mIHJbdF0pe2Nhc2UiZnVuY3Rpb24iOnJldHVybiB2b2lkKHJbdF09W3JbdF0sbl0pO2Nh
c2Uib2JqZWN0IjpyZXR1cm4gdm9pZCByW3RdLnB1c2gobik7Y2FzZSJ1bmRlZmluZWQiOnJldHVy
biB2b2lkKHJbdF09bil9fSxmLnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24odCl7dmFyIGUsbj10
aGlzLHI9dC5sZW5ndGg7Zm9yKGU9MDtlPHI7ZSsrKSFmdW5jdGlvbih0KXtuLl9tZXRob2RzW3Rd
PSEwLG5bdF09ZnVuY3Rpb24oKXt2YXIgZT0xPT09YXJndW1lbnRzLmxlbmd0aD9bdCwiIl06W3Rd
O24ub24uYXBwbHkobixlLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMpKSl9fSh0W2VdKX0sZi5wcm90b3R5cGUucnVubGlzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlz
LmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmJlZm9yZT9bdGhpcy5ldmVyeS5iZWZvcmVdLmNvbmNhdChyKHQp
KTpyKHQpO3JldHVybiB0aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5Lm9uJiZlLnB1c2godGhpcy5ldmVy
eS5vbiksZS5jYXB0dXJlcz10LmNhcHR1cmVzLGUuc291cmNlPXQuc291cmNlLGV9LGYucHJvdG90
eXBlLm1vdW50PWZ1bmN0aW9uKHQsZSl7aWYodCYmIm9iamVjdCI9PXR5cGVvZiB0JiYhQXJyYXku
aXNBcnJheSh0KSl7dmFyIG49dGhpcztlPWV8fFtdLEFycmF5LmlzQXJyYXkoZSl8fChlPWUuc3Bs
aXQobi5kZWxpbWl0ZXIpKTtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiZmdW5j
dGlvbihlLHIpe3ZhciBpPWUsbz1lLnNwbGl0KG4uZGVsaW1pdGVyKSxhPXR5cGVvZiB0W2VdLHM9
IiI9PT1vWzBdfHwhbi5fbWV0aG9kc1tvWzBdXSx1PXM/Im9uIjppO2lmKHMmJihpPWkuc2xpY2Uo
KGkubWF0Y2gobmV3IFJlZ0V4cCgiXiIrbi5kZWxpbWl0ZXIpKXx8WyIiXSlbMF0ubGVuZ3RoKSxv
LnNoaWZ0KCkpLHMmJiJvYmplY3QiPT09YSYmIUFycmF5LmlzQXJyYXkodFtlXSkpcmV0dXJuIHI9
ci5jb25jYXQobyksdm9pZCBuLm1vdW50KHRbZV0scik7cyYmKHI9ci5jb25jYXQoaS5zcGxpdChu
LmRlbGltaXRlcikpLHI9YyhyLG4uZGVsaW1pdGVyKSksbi5pbnNlcnQodSxyLHRbZV0pfShyLGUu
c2xpY2UoMCkpfX19KGUpfSwsLCwsLCwsLGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9u
KHQsZSl7Zm9yKHZhciBuPVtdLHI9e30saT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldLGE9
b1swXSxzPW9bMV0sYz1vWzJdLHU9b1szXSxsPXtpZDp0KyI6IitpLGNzczpzLG1lZGlhOmMsc291
cmNlTWFwOnV9O3JbYV0/clthXS5wYXJ0cy5wdXNoKGwpOm4ucHVzaChyW2FdPXtpZDphLHBhcnRz
OltsXX0pfXJldHVybiBufX0sZnVuY3Rpb24odCxlKXt2YXIgbjtuPWZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXN9KCk7dHJ5e249bnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKXx8KDAsZXZhbCkoInRo
aXMiKX1jYXRjaCh0KXsib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKG49d2luZG93KX10LmV4cG9y
dHM9bn0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSl7dmFyIG49dFsxXXx8IiIsaT10WzNd
O2lmKCFpKXJldHVybiBuO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBidG9hKXt2YXIgbz1yKGkp
O3JldHVybltuXS5jb25jYXQoaS5zb3VyY2VzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iLyojIHNv
dXJjZVVSTD0iK2kuc291cmNlUm9vdCt0KyIgKi8ifSkpLmNvbmNhdChbb10pLmpvaW4oIlxuIil9
cmV0dXJuW25dLmpvaW4oIlxuIil9ZnVuY3Rpb24gcih0KXtyZXR1cm4iLyojIHNvdXJjZU1hcHBp
bmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCIrYnRvYSh1
bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodCkpKSkrIiAqLyJ9dC5l
eHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKGUpe3ZhciByPW4oZSx0KTtyZXR1cm4gZVsyXT8iQG1l
ZGlhICIrZVsyXSsieyIrcisifSI6cn0pLmpvaW4oIiIpfSxlLmk9ZnVuY3Rpb24odCxuKXsic3Ry
aW5nIj09dHlwZW9mIHQmJih0PVtbbnVsbCx0LCIiXV0pO2Zvcih2YXIgcj17fSxpPTA7aTx0aGlz
Lmxlbmd0aDtpKyspe3ZhciBvPXRoaXNbaV1bMF07Im51bWJlciI9PXR5cGVvZiBvJiYocltvXT0h
MCl9Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9dFtpXTsibnVtYmVyIj09dHlwZW9mIGFb
MF0mJnJbYVswXV18fChuJiYhYVsyXT9hWzJdPW46biYmKGFbMl09IigiK2FbMl0rIikgYW5kICgi
K24rIikiKSxlLnB1c2goYSkpfX0sZX19LGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Zv
cih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdLHI9bFtuLmlkXTtpZihyKXtyLnJl
ZnMrKztmb3IodmFyIGk9MDtpPHIucGFydHMubGVuZ3RoO2krKylyLnBhcnRzW2ldKG4ucGFydHNb
aV0pO2Zvcig7aTxuLnBhcnRzLmxlbmd0aDtpKyspci5wYXJ0cy5wdXNoKG8obi5wYXJ0c1tpXSkp
O3IucGFydHMubGVuZ3RoPm4ucGFydHMubGVuZ3RoJiYoci5wYXJ0cy5sZW5ndGg9bi5wYXJ0cy5s
ZW5ndGgpfWVsc2V7Zm9yKHZhciBhPVtdLGk9MDtpPG4ucGFydHMubGVuZ3RoO2krKylhLnB1c2go
byhuLnBhcnRzW2ldKSk7bFtuLmlkXT17aWQ6bi5pZCxyZWZzOjEscGFydHM6YX19fX1mdW5jdGlv
biBpKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gdC50eXBl
PSJ0ZXh0L2NzcyIsZi5hcHBlbmRDaGlsZCh0KSx0fWZ1bmN0aW9uIG8odCl7dmFyIGUsbixyPWRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtdnVlLXNzci1pZH49IicrdC5pZCsnIl0n
KTtpZihyKXtpZih2KXJldHVybiBoO3IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKX1pZihtKXt2
YXIgbz1kKys7cj1wfHwocD1pKCkpLGU9YS5iaW5kKG51bGwscixvLCExKSxuPWEuYmluZChudWxs
LHIsbywhMCl9ZWxzZSByPWkoKSxlPXMuYmluZChudWxsLHIpLG49ZnVuY3Rpb24oKXtyLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQocil9O3JldHVybiBlKHQpLGZ1bmN0aW9uKHIpe2lmKHIpe2lmKHIu
Y3NzPT09dC5jc3MmJnIubWVkaWE9PT10Lm1lZGlhJiZyLnNvdXJjZU1hcD09PXQuc291cmNlTWFw
KXJldHVybjtlKHQ9cil9ZWxzZSBuKCl9fWZ1bmN0aW9uIGEodCxlLG4scil7dmFyIGk9bj8iIjpy
LmNzcztpZih0LnN0eWxlU2hlZXQpdC5zdHlsZVNoZWV0LmNzc1RleHQ9eShlLGkpO2Vsc2V7dmFy
IG89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaSksYT10LmNoaWxkTm9kZXM7YVtlXSYmdC5yZW1v
dmVDaGlsZChhW2VdKSxhLmxlbmd0aD90Lmluc2VydEJlZm9yZShvLGFbZV0pOnQuYXBwZW5kQ2hp
bGQobyl9fWZ1bmN0aW9uIHModCxlKXt2YXIgbj1lLmNzcyxyPWUubWVkaWEsaT1lLnNvdXJjZU1h
cDtpZihyJiZ0LnNldEF0dHJpYnV0ZSgibWVkaWEiLHIpLGkmJihuKz0iXG4vKiMgc291cmNlVVJM
PSIraS5zb3VyY2VzWzBdKyIgKi8iLG4rPSJcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBw
bGljYXRpb24vanNvbjtiYXNlNjQsIitidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChK
U09OLnN0cmluZ2lmeShpKSkpKSsiICovIiksdC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NU
ZXh0PW47ZWxzZXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQp
O3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobikpfX12YXIgYz0idW5kZWZp
bmVkIiE9dHlwZW9mIGRvY3VtZW50O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgREVCVUcmJkRFQlVH
JiYhYyl0aHJvdyBuZXcgRXJyb3IoInZ1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4g
YSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5b3Vy
IFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9ubWVu
dC4iKTt2YXIgdT1uKDExKSxsPXt9LGY9YyYmKGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0pLHA9bnVsbCxkPTAsdj0hMSxoPWZ1bmN0aW9uKCl7
fSxtPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYvbXNpZSBbNi05XVxiLy50ZXN0KG5h
dmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxu
KXt2PW47dmFyIGk9dSh0LGUpO3JldHVybiByKGkpLGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxv
PTA7bzxpLmxlbmd0aDtvKyspe3ZhciBhPWlbb10scz1sW2EuaWRdO3MucmVmcy0tLG4ucHVzaChz
KX1lPyhpPXUodCxlKSxyKGkpKTppPVtdO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXt2YXIg
cz1uW29dO2lmKDA9PT1zLnJlZnMpe2Zvcih2YXIgYz0wO2M8cy5wYXJ0cy5sZW5ndGg7YysrKXMu
cGFydHNbY10oKTtkZWxldGUgbFtzLmlkXX19fX07dmFyIHk9ZnVuY3Rpb24oKXt2YXIgdD1bXTty
ZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdFtlXT1uLHQuZmlsdGVyKEJvb2xlYW4pLmpvaW4o
IlxuIil9fSgpfV0pOwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVuZG9yLjJlNGU5ZTUyODY2NGZh
Nzk2ZDNhLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuMmU0ZTllNTI4NjY0ZmE3
OTZkM2EuanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rpc3Qvc3RhdGljL2pzL3ZlbmRv
ci4yZTRlOWU1Mjg2NjRmYTc5NmQzYS5qcy5tYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBiNTc0ODk1ODA0YzFmNjk2ZGMyODM0NTI2NDllYjQ4MGQyNjUyNmYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xp
L2Rpc3Qvc3RhdGljL2pzL3ZlbmRvci4yZTRlOWU1Mjg2NjRmYTc5NmQzYS5qcy5tYXAKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi17InZlcnNpb24iOjMsInNvdXJjZXMiOlsid2VicGFjazov
Ly9zdGF0aWMvanMvdmVuZG9yLjJlNGU5ZTUyODY2NGZhNzk2ZDNhLmpzIiwid2VicGFjazovLy8u
L34vdnVlL2Rpc3QvdnVlLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9+L3Z1ZS1sb2FkZXIvbGliL2Nv
bXBvbmVudC1ub3JtYWxpemVyLmpzIiwid2VicGFjazovLy8uL34vZGlyZWN0b3IvYnVpbGQvZGly
ZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi92dWUtc3R5bGUtbG9hZGVyL2xpYi9saXN0VG9TdHls
ZXMuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6
Ly8vLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIiwid2VicGFjazovLy8uL34vdnVlLXN0
eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29u
cCIsIm1vZHVsZSIsIl9fd2VicGFja19leHBvcnRzX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwi
T2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImdsb2JhbCIsImlzVW5kZWYiLCJ2Iiwi
dW5kZWZpbmVkIiwiaXNEZWYiLCJpc1RydWUiLCJpc0ZhbHNlIiwiaXNQcmltaXRpdmUiLCJpc09i
amVjdCIsIm9iaiIsImlzUGxhaW5PYmplY3QiLCJfdG9TdHJpbmciLCJjYWxsIiwiaXNSZWdFeHAi
LCJpc1ZhbGlkQXJyYXlJbmRleCIsInZhbCIsIm4iLCJwYXJzZUZsb2F0IiwiTWF0aCIsImZsb29y
IiwiaXNGaW5pdGUiLCJ0b1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJTdHJpbmciLCJ0b051
bWJlciIsImlzTmFOIiwibWFrZU1hcCIsInN0ciIsImV4cGVjdHNMb3dlckNhc2UiLCJtYXAiLCJj
cmVhdGUiLCJsaXN0Iiwic3BsaXQiLCJpIiwibGVuZ3RoIiwidG9Mb3dlckNhc2UiLCJyZW1vdmUi
LCJhcnIiLCJpdGVtIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiaGFzT3duIiwia2V5Iiwi
aGFzT3duUHJvcGVydHkiLCJjYWNoZWQiLCJmbiIsImNhY2hlIiwiYmluZCIsImN0eCIsImJvdW5k
Rm4iLCJhIiwibCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX2xlbmd0aCIsInRvQXJyYXkiLCJzdGFy
dCIsInJldCIsIkFycmF5IiwiZXh0ZW5kIiwidG8iLCJfZnJvbSIsInRvT2JqZWN0IiwicmVzIiwi
bm9vcCIsImIiLCJjIiwibG9vc2VFcXVhbCIsImlzT2JqZWN0QSIsImlzT2JqZWN0QiIsImlzQXJy
YXlBIiwiaXNBcnJheSIsImlzQXJyYXlCIiwiZXZlcnkiLCJlIiwia2V5c0EiLCJrZXlzIiwia2V5
c0IiLCJsb29zZUluZGV4T2YiLCJvbmNlIiwiY2FsbGVkIiwidGhpcyIsImlzUmVzZXJ2ZWQiLCJj
aGFyQ29kZUF0IiwiZGVmIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwi
cGFyc2VQYXRoIiwicGF0aCIsImJhaWxSRSIsInRlc3QiLCJzZWdtZW50cyIsImhhbmRsZUVycm9y
IiwiZXJyIiwidm0iLCJpbmZvIiwiY29uZmlnIiwiZXJyb3JIYW5kbGVyIiwiaW5Ccm93c2VyIiwi
Y29uc29sZSIsImVycm9yIiwiaXNOYXRpdmUiLCJDdG9yIiwicHVzaFRhcmdldCIsIl90YXJnZXQi
LCJEZXAiLCJ0YXJnZXQiLCJ0YXJnZXRTdGFjayIsInB1c2giLCJwb3BUYXJnZXQiLCJwb3AiLCJw
cm90b0F1Z21lbnQiLCJzcmMiLCJfX3Byb3RvX18iLCJjb3B5QXVnbWVudCIsIm9ic2VydmUiLCJh
c1Jvb3REYXRhIiwib2IiLCJfX29iX18iLCJPYnNlcnZlciIsIm9ic2VydmVyU3RhdGUiLCJzaG91
bGRDb252ZXJ0IiwiaXNTZXJ2ZXJSZW5kZXJpbmciLCJpc0V4dGVuc2libGUiLCJfaXNWdWUiLCJ2
bUNvdW50IiwiZGVmaW5lUmVhY3RpdmUkJDEiLCJjdXN0b21TZXR0ZXIiLCJzaGFsbG93IiwiZGVw
IiwicHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXR0ZXIiLCJnZXQiLCJz
ZXR0ZXIiLCJzZXQiLCJjaGlsZE9iIiwiZGVwZW5kIiwiZGVwZW5kQXJyYXkiLCJuZXdWYWwiLCJu
b3RpZnkiLCJtYXgiLCJkZWwiLCJtZXJnZURhdGEiLCJmcm9tIiwidG9WYWwiLCJmcm9tVmFsIiwi
bWVyZ2VEYXRhT3JGbiIsInBhcmVudFZhbCIsImNoaWxkVmFsIiwiaW5zdGFuY2VEYXRhIiwiZGVm
YXVsdERhdGEiLCJtZXJnZUhvb2siLCJjb25jYXQiLCJtZXJnZUFzc2V0cyIsIm5vcm1hbGl6ZVBy
b3BzIiwib3B0aW9ucyIsInByb3BzIiwibmFtZSIsImNhbWVsaXplIiwidHlwZSIsIm5vcm1hbGl6
ZUluamVjdCIsImluamVjdCIsIm5vcm1hbGl6ZWQiLCJub3JtYWxpemVEaXJlY3RpdmVzIiwiZGly
cyIsImRpcmVjdGl2ZXMiLCJ1cGRhdGUiLCJtZXJnZU9wdGlvbnMiLCJwYXJlbnQiLCJjaGlsZCIs
Im1lcmdlRmllbGQiLCJzdHJhdCIsInN0cmF0cyIsImRlZmF1bHRTdHJhdCIsImV4dGVuZHNGcm9t
IiwiZXh0ZW5kcyIsIm1peGlucyIsInJlc29sdmVBc3NldCIsImlkIiwid2Fybk1pc3NpbmciLCJh
c3NldHMiLCJjYW1lbGl6ZWRJZCIsIlBhc2NhbENhc2VJZCIsImNhcGl0YWxpemUiLCJ2YWxpZGF0
ZVByb3AiLCJwcm9wT3B0aW9ucyIsInByb3BzRGF0YSIsInByb3AiLCJhYnNlbnQiLCJpc1R5cGUi
LCJCb29sZWFuIiwiaHlwaGVuYXRlIiwiZ2V0UHJvcERlZmF1bHRWYWx1ZSIsInByZXZTaG91bGRD
b252ZXJ0IiwiZGVmYXVsdCIsIiRvcHRpb25zIiwiX3Byb3BzIiwiZ2V0VHlwZSIsIm1hdGNoIiwi
bGVuIiwiY3JlYXRlVGV4dFZOb2RlIiwiVk5vZGUiLCJjbG9uZVZOb2RlIiwidm5vZGUiLCJjbG9u
ZWQiLCJ0YWciLCJkYXRhIiwiY2hpbGRyZW4iLCJ0ZXh0IiwiZWxtIiwiY29udGV4dCIsImNvbXBv
bmVudE9wdGlvbnMiLCJhc3luY0ZhY3RvcnkiLCJucyIsImlzU3RhdGljIiwiaXNDb21tZW50Iiwi
aXNDbG9uZWQiLCJjbG9uZVZOb2RlcyIsInZub2RlcyIsImNyZWF0ZUZuSW52b2tlciIsImZucyIs
Imludm9rZXIiLCJhcmd1bWVudHMkMSIsInNsaWNlIiwidXBkYXRlTGlzdGVuZXJzIiwib24iLCJv
bGRPbiIsImFkZCIsInJlbW92ZSQkMSIsImN1ciIsIm9sZCIsImV2ZW50Iiwibm9ybWFsaXplRXZl
bnQiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm1lcmdlVk5vZGVIb29rIiwiaG9va0tleSIsImhvb2si
LCJ3cmFwcGVkSG9vayIsIm9sZEhvb2siLCJtZXJnZWQiLCJleHRyYWN0UHJvcHNGcm9tVk5vZGVE
YXRhIiwiYXR0cnMiLCJhbHRLZXkiLCJjaGVja1Byb3AiLCJoYXNoIiwicHJlc2VydmUiLCJzaW1w
bGVOb3JtYWxpemVDaGlsZHJlbiIsInByb3RvdHlwZSIsIm5vcm1hbGl6ZUNoaWxkcmVuIiwibm9y
bWFsaXplQXJyYXlDaGlsZHJlbiIsImlzVGV4dE5vZGUiLCJub2RlIiwibmVzdGVkSW5kZXgiLCJs
YXN0IiwiX2lzVkxpc3QiLCJlbnN1cmVDdG9yIiwiY29tcCIsImJhc2UiLCJfX2VzTW9kdWxlIiwi
Y3JlYXRlQXN5bmNQbGFjZWhvbGRlciIsImZhY3RvcnkiLCJjcmVhdGVFbXB0eVZOb2RlIiwiYXN5
bmNNZXRhIiwicmVzb2x2ZUFzeW5jQ29tcG9uZW50IiwiYmFzZUN0b3IiLCJlcnJvckNvbXAiLCJy
ZXNvbHZlZCIsImxvYWRpbmciLCJsb2FkaW5nQ29tcCIsImNvbnRleHRzIiwic3luYyIsImZvcmNl
UmVuZGVyIiwiJGZvcmNlVXBkYXRlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYXNvbiIsInRoZW4i
LCJjb21wb25lbnQiLCJkZWxheSIsInNldFRpbWVvdXQiLCJ0aW1lb3V0IiwiZ2V0Rmlyc3RDb21w
b25lbnRDaGlsZCIsImluaXRFdmVudHMiLCJfZXZlbnRzIiwiX2hhc0hvb2tFdmVudCIsImxpc3Rl
bmVycyIsIl9wYXJlbnRMaXN0ZW5lcnMiLCJ1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMiLCJvbmNl
JCQxIiwiJG9uY2UiLCIkb24iLCJyZW1vdmUkMSIsIiRvZmYiLCJvbGRMaXN0ZW5lcnMiLCJyZXNv
bHZlU2xvdHMiLCJzbG90cyIsImRlZmF1bHRTbG90IiwiZnVuY3Rpb25hbENvbnRleHQiLCJzbG90
IiwiaXNXaGl0ZXNwYWNlIiwicmVzb2x2ZVNjb3BlZFNsb3RzIiwiaW5pdExpZmVjeWNsZSIsImFi
c3RyYWN0IiwiJHBhcmVudCIsIiRjaGlsZHJlbiIsIiRyb290IiwiJHJlZnMiLCJfd2F0Y2hlciIs
Il9pbmFjdGl2ZSIsIl9kaXJlY3RJbmFjdGl2ZSIsIl9pc01vdW50ZWQiLCJfaXNEZXN0cm95ZWQi
LCJfaXNCZWluZ0Rlc3Ryb3llZCIsIm1vdW50Q29tcG9uZW50IiwiZWwiLCJoeWRyYXRpbmciLCIk
ZWwiLCJyZW5kZXIiLCJjYWxsSG9vayIsInVwZGF0ZUNvbXBvbmVudCIsIl91cGRhdGUiLCJfcmVu
ZGVyIiwiV2F0Y2hlciIsIiR2bm9kZSIsInVwZGF0ZUNoaWxkQ29tcG9uZW50IiwicGFyZW50Vm5v
ZGUiLCJyZW5kZXJDaGlsZHJlbiIsImhhc0NoaWxkcmVuIiwiX3JlbmRlckNoaWxkcmVuIiwic2Nv
cGVkU2xvdHMiLCIkc2NvcGVkU2xvdHMiLCJlbXB0eU9iamVjdCIsIl9wYXJlbnRWbm9kZSIsIl92
bm9kZSIsIiRhdHRycyIsIiRsaXN0ZW5lcnMiLCJwcm9wS2V5cyIsIl9wcm9wS2V5cyIsIiRzbG90
cyIsImlzSW5JbmFjdGl2ZVRyZWUiLCJhY3RpdmF0ZUNoaWxkQ29tcG9uZW50IiwiZGlyZWN0Iiwi
ZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50IiwiaGFuZGxlcnMiLCJqIiwiJGVtaXQiLCJyZXNldFNj
aGVkdWxlclN0YXRlIiwicXVldWUiLCJhY3RpdmF0ZWRDaGlsZHJlbiIsImhhcyIsIndhaXRpbmci
LCJmbHVzaGluZyIsImZsdXNoU2NoZWR1bGVyUXVldWUiLCJ3YXRjaGVyIiwic29ydCIsInJ1biIs
ImFjdGl2YXRlZFF1ZXVlIiwidXBkYXRlZFF1ZXVlIiwiY2FsbEFjdGl2YXRlZEhvb2tzIiwiY2Fs
bFVwZGF0ZWRIb29rcyIsImRldnRvb2xzIiwiZW1pdCIsInF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50
IiwicXVldWVXYXRjaGVyIiwibmV4dFRpY2siLCJ0cmF2ZXJzZSIsInNlZW5PYmplY3RzIiwiY2xl
YXIiLCJfdHJhdmVyc2UiLCJzZWVuIiwiaXNBIiwiZGVwSWQiLCJwcm94eSIsInNvdXJjZUtleSIs
InNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiIsImluaXRTdGF0ZSIsIl93YXRjaGVycyIsIm9wdHMi
LCJpbml0UHJvcHMiLCJtZXRob2RzIiwiaW5pdE1ldGhvZHMiLCJpbml0RGF0YSIsIl9kYXRhIiwi
Y29tcHV0ZWQiLCJpbml0Q29tcHV0ZWQiLCJ3YXRjaCIsIm5hdGl2ZVdhdGNoIiwiaW5pdFdhdGNo
IiwicHJvcHNPcHRpb25zIiwiaXNSb290IiwiZ2V0RGF0YSIsIndhdGNoZXJzIiwiX2NvbXB1dGVk
V2F0Y2hlcnMiLCJ1c2VyRGVmIiwiY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyIsImRlZmluZUNvbXB1
dGVkIiwiY3JlYXRlQ29tcHV0ZWRHZXR0ZXIiLCJkaXJ0eSIsImV2YWx1YXRlIiwiaGFuZGxlciIs
ImNyZWF0ZVdhdGNoZXIiLCJrZXlPckZuIiwiJHdhdGNoIiwiaW5pdFByb3ZpZGUiLCJwcm92aWRl
IiwiX3Byb3ZpZGVkIiwiaW5pdEluamVjdGlvbnMiLCJyZXN1bHQiLCJyZXNvbHZlSW5qZWN0Iiwi
Zm9yRWFjaCIsImhhc1N5bWJvbCIsIlJlZmxlY3QiLCJvd25LZXlzIiwicHJvdmlkZUtleSIsInNv
dXJjZSIsImNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQiLCJtZXJnZVByb3BzIiwiX2NvbnRleHQi
LCJoIiwiZCIsImNyZWF0ZUVsZW1lbnQiLCJpbmplY3Rpb25zIiwiZnVuY3Rpb25hbE9wdGlvbnMi
LCJjcmVhdGVDb21wb25lbnQiLCJfYmFzZSIsImNpZCIsInJlc29sdmVDb25zdHJ1Y3Rvck9wdGlv
bnMiLCJtb2RlbCIsInRyYW5zZm9ybU1vZGVsIiwiZnVuY3Rpb25hbCIsIm5hdGl2ZU9uIiwibWVy
Z2VIb29rcyIsImNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUiLCJwYXJlbnRFbG0iLCJy
ZWZFbG0iLCJ2bm9kZUNvbXBvbmVudE9wdGlvbnMiLCJfaXNDb21wb25lbnQiLCJfY29tcG9uZW50
VGFnIiwiX3BhcmVudEVsbSIsIl9yZWZFbG0iLCJpbmxpbmVUZW1wbGF0ZSIsInN0YXRpY1JlbmRl
ckZucyIsImhvb2tzVG9NZXJnZSIsImZyb21QYXJlbnQiLCJvdXJzIiwiY29tcG9uZW50Vk5vZGVI
b29rcyIsIm1lcmdlSG9vayQxIiwib25lIiwidHdvIiwiY2FsbGJhY2siLCJub3JtYWxpemF0aW9u
VHlwZSIsImFsd2F5c05vcm1hbGl6ZSIsIkFMV0FZU19OT1JNQUxJWkUiLCJfY3JlYXRlRWxlbWVu
dCIsImlzIiwiU0lNUExFX05PUk1BTElaRSIsImdldFRhZ05hbWVzcGFjZSIsImlzUmVzZXJ2ZWRU
YWciLCJwYXJzZVBsYXRmb3JtVGFnTmFtZSIsImFwcGx5TlMiLCJyZW5kZXJMaXN0IiwicmVuZGVy
U2xvdCIsImZhbGxiYWNrIiwiYmluZE9iamVjdCIsInNjb3BlZFNsb3RGbiIsInNsb3ROb2RlcyIs
InJlc29sdmVGaWx0ZXIiLCJpZGVudGl0eSIsImNoZWNrS2V5Q29kZXMiLCJldmVudEtleUNvZGUi
LCJidWlsdEluQWxpYXMiLCJrZXlDb2RlcyIsImJpbmRPYmplY3RQcm9wcyIsImFzUHJvcCIsImlz
U3luYyIsImlzUmVzZXJ2ZWRBdHRyaWJ1dGUiLCJtdXN0VXNlUHJvcCIsImRvbVByb3BzIiwiJGV2
ZW50IiwicmVuZGVyU3RhdGljIiwiaXNJbkZvciIsInRyZWUiLCJfc3RhdGljVHJlZXMiLCJfcmVu
ZGVyUHJveHkiLCJtYXJrU3RhdGljIiwibWFya09uY2UiLCJpc09uY2UiLCJtYXJrU3RhdGljTm9k
ZSIsImJpbmRPYmplY3RMaXN0ZW5lcnMiLCJleGlzdGluZyIsImluaXRSZW5kZXIiLCJyZW5kZXJD
b250ZXh0IiwiX2MiLCIkY3JlYXRlRWxlbWVudCIsInBhcmVudERhdGEiLCJpbml0SW50ZXJuYWxD
b21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInN1cGVyIiwic3VwZXJPcHRpb25zIiwibW9kaWZpZWRP
cHRpb25zIiwicmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyIsImV4dGVuZE9wdGlvbnMiLCJjb21wb25l
bnRzIiwibW9kaWZpZWQiLCJsYXRlc3QiLCJleHRlbmRlZCIsInNlYWxlZCIsInNlYWxlZE9wdGlv
bnMiLCJkZWR1cGUiLCJWdWUkMyIsIl9pbml0IiwiaW5pdFVzZSIsIlZ1ZSIsInVzZSIsInBsdWdp
biIsImluc3RhbGxlZFBsdWdpbnMiLCJfaW5zdGFsbGVkUGx1Z2lucyIsImFyZ3MiLCJ1bnNoaWZ0
IiwiaW5zdGFsbCIsImluaXRNaXhpbiQxIiwibWl4aW4iLCJpbml0RXh0ZW5kIiwiU3VwZXIiLCJT
dXBlcklkIiwiY2FjaGVkQ3RvcnMiLCJfQ3RvciIsIlN1YiIsImluaXRQcm9wcyQxIiwiaW5pdENv
bXB1dGVkJDEiLCJBU1NFVF9UWVBFUyIsIkNvbXAiLCJpbml0QXNzZXRSZWdpc3RlcnMiLCJkZWZp
bml0aW9uIiwiZ2V0Q29tcG9uZW50TmFtZSIsIm1hdGNoZXMiLCJwYXR0ZXJuIiwicHJ1bmVDYWNo
ZSIsImN1cnJlbnQiLCJmaWx0ZXIiLCJjYWNoZWROb2RlIiwicHJ1bmVDYWNoZUVudHJ5IiwiY29t
cG9uZW50SW5zdGFuY2UiLCIkZGVzdHJveSIsImdlbkNsYXNzRm9yVm5vZGUiLCJwYXJlbnROb2Rl
IiwiY2hpbGROb2RlIiwibWVyZ2VDbGFzc0RhdGEiLCJyZW5kZXJDbGFzcyIsInN0YXRpY0NsYXNz
IiwiY2xhc3MiLCJkeW5hbWljQ2xhc3MiLCJzdHJpbmdpZnlDbGFzcyIsInN0cmluZ2lmeUFycmF5
Iiwic3RyaW5naWZ5T2JqZWN0Iiwic3RyaW5naWZpZWQiLCJpc1NWRyIsImlzVW5rbm93bkVsZW1l
bnQiLCJ1bmtub3duRWxlbWVudENhY2hlIiwiZG9jdW1lbnQiLCJ3aW5kb3ciLCJIVE1MVW5rbm93
bkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsInF1ZXJ5Iiwic2VsZWN0ZWQiLCJxdWVyeVNlbGVjdG9y
IiwiY3JlYXRlRWxlbWVudCQxIiwidGFnTmFtZSIsIm11bHRpcGxlIiwic2V0QXR0cmlidXRlIiwi
Y3JlYXRlRWxlbWVudE5TIiwibmFtZXNwYWNlIiwibmFtZXNwYWNlTWFwIiwiY3JlYXRlVGV4dE5v
ZGUiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0QmVmb3JlIiwibmV3Tm9kZSIsInJlZmVyZW5jZU5v
ZGUiLCJyZW1vdmVDaGlsZCIsImFwcGVuZENoaWxkIiwibmV4dFNpYmxpbmciLCJzZXRUZXh0Q29u
dGVudCIsInRleHRDb250ZW50IiwicmVnaXN0ZXJSZWYiLCJpc1JlbW92YWwiLCJyZWYiLCJyZWZz
IiwicmVmSW5Gb3IiLCJzYW1lVm5vZGUiLCJzYW1lSW5wdXRUeXBlIiwiaXNBc3luY1BsYWNlaG9s
ZGVyIiwiY3JlYXRlS2V5VG9PbGRJZHgiLCJiZWdpbklkeCIsImVuZElkeCIsInVwZGF0ZURpcmVj
dGl2ZXMiLCJvbGRWbm9kZSIsIm9sZERpciIsImRpciIsImlzQ3JlYXRlIiwiZW1wdHlOb2RlIiwi
aXNEZXN0cm95Iiwib2xkRGlycyIsIm5vcm1hbGl6ZURpcmVjdGl2ZXMkMSIsIm5ld0RpcnMiLCJk
aXJzV2l0aEluc2VydCIsImRpcnNXaXRoUG9zdHBhdGNoIiwib2xkVmFsdWUiLCJjYWxsSG9vayQx
IiwiY29tcG9uZW50VXBkYXRlZCIsImluc2VydGVkIiwiY2FsbEluc2VydCIsIm1vZGlmaWVycyIs
ImVtcHR5TW9kaWZpZXJzIiwiZ2V0UmF3RGlyTmFtZSIsInJhd05hbWUiLCJqb2luIiwidXBkYXRl
QXR0cnMiLCJpbmhlcml0QXR0cnMiLCJvbGRBdHRycyIsInNldEF0dHIiLCJpc0lFOSIsImlzWGxp
bmsiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsInhsaW5rTlMiLCJnZXRYbGlua1Byb3AiLCJpc0VudW1l
cmF0ZWRBdHRyIiwicmVtb3ZlQXR0cmlidXRlIiwiaXNCb29sZWFuQXR0ciIsImlzRmFsc3lBdHRy
VmFsdWUiLCJzZXRBdHRyaWJ1dGVOUyIsInVwZGF0ZUNsYXNzIiwib2xkRGF0YSIsImNscyIsInRy
YW5zaXRpb25DbGFzcyIsIl90cmFuc2l0aW9uQ2xhc3NlcyIsIl9wcmV2Q2xhc3MiLCJwYXJzZUZp
bHRlcnMiLCJleHAiLCJwdXNoRmlsdGVyIiwiZmlsdGVycyIsImxhc3RGaWx0ZXJJbmRleCIsInRy
aW0iLCJwcmV2IiwiZXhwcmVzc2lvbiIsImluU2luZ2xlIiwiaW5Eb3VibGUiLCJpblRlbXBsYXRl
U3RyaW5nIiwiaW5SZWdleCIsImN1cmx5Iiwic3F1YXJlIiwicGFyZW4iLCJwIiwiY2hhckF0Iiwi
dmFsaWREaXZpc2lvbkNoYXJSRSIsIndyYXBGaWx0ZXIiLCJiYXNlV2FybiIsIm1zZyIsInBsdWNr
TW9kdWxlRnVuY3Rpb24iLCJtb2R1bGVzIiwibSIsIl8iLCJhZGRQcm9wIiwiYWRkQXR0ciIsImFk
ZERpcmVjdGl2ZSIsImFyZyIsImFkZEhhbmRsZXIiLCJpbXBvcnRhbnQiLCJ3YXJuIiwiZXZlbnRz
IiwibmF0aXZlIiwibmF0aXZlRXZlbnRzIiwibmV3SGFuZGxlciIsImdldEJpbmRpbmdBdHRyIiwi
Z2V0U3RhdGljIiwiZHluYW1pY1ZhbHVlIiwiZ2V0QW5kUmVtb3ZlQXR0ciIsInN0YXRpY1ZhbHVl
IiwiYXR0cnNNYXAiLCJhdHRyc0xpc3QiLCJnZW5Db21wb25lbnRNb2RlbCIsIm51bWJlciIsInZh
bHVlRXhwcmVzc2lvbiIsImFzc2lnbm1lbnQiLCJnZW5Bc3NpZ25tZW50Q29kZSIsIm1vZGVsUnMi
LCJwYXJzZU1vZGVsIiwiaWR4IiwiaW5kZXgkMSIsImV4cHJlc3Npb25Qb3MiLCJleHByZXNzaW9u
RW5kUG9zIiwibGFzdEluZGV4T2YiLCJlb2YiLCJjaHIiLCJuZXh0IiwiaXNTdHJpbmdTdGFydCIs
InBhcnNlU3RyaW5nIiwicGFyc2VCcmFja2V0Iiwic3Vic3RyaW5nIiwiaW5CcmFja2V0Iiwic3Ry
aW5nUXVvdGUiLCJfd2FybiIsIndhcm4kMSIsImdlblNlbGVjdCIsImdlbkNoZWNrYm94TW9kZWwi
LCJnZW5SYWRpb01vZGVsIiwiZ2VuRGVmYXVsdE1vZGVsIiwidmFsdWVCaW5kaW5nIiwidHJ1ZVZh
bHVlQmluZGluZyIsImZhbHNlVmFsdWVCaW5kaW5nIiwiQ0hFQ0tCT1hfUkFESU9fVE9LRU4iLCJz
ZWxlY3RlZFZhbCIsImNvZGUiLCJsYXp5IiwibmVlZENvbXBvc2l0aW9uR3VhcmQiLCJSQU5HRV9U
T0tFTiIsIm5vcm1hbGl6ZUV2ZW50cyIsImlzSUUiLCJpc0Nocm9tZSIsImFkZCQxIiwib2xkSGFu
ZGxlciIsInRhcmdldCQxIiwiZXYiLCJyZW1vdmUkMiIsImFkZEV2ZW50TGlzdGVuZXIiLCJzdXBw
b3J0c1Bhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlRE9NTGlzdGVuZXJzIiwi
dXBkYXRlRE9NUHJvcHMiLCJvbGRQcm9wcyIsIl92YWx1ZSIsInN0ckN1ciIsInNob3VsZFVwZGF0
ZVZhbHVlIiwiY2hlY2tWYWwiLCJjb21wb3NpbmciLCJpc0RpcnR5IiwiaXNJbnB1dENoYW5nZWQi
LCJub3RJbkZvY3VzIiwiYWN0aXZlRWxlbWVudCIsIl92TW9kaWZpZXJzIiwibm9ybWFsaXplU3R5
bGVEYXRhIiwic3R5bGUiLCJub3JtYWxpemVTdHlsZUJpbmRpbmciLCJzdGF0aWNTdHlsZSIsImJp
bmRpbmdTdHlsZSIsInBhcnNlU3R5bGVUZXh0IiwiZ2V0U3R5bGUiLCJjaGVja0NoaWxkIiwic3R5
bGVEYXRhIiwidXBkYXRlU3R5bGUiLCJvbGRTdGF0aWNTdHlsZSIsIm9sZFN0eWxlQmluZGluZyIs
Im5vcm1hbGl6ZWRTdHlsZSIsIm9sZFN0eWxlIiwibmV3U3R5bGUiLCJzZXRQcm9wIiwiYWRkQ2xh
c3MiLCJjbGFzc0xpc3QiLCJnZXRBdHRyaWJ1dGUiLCJyZW1vdmVDbGFzcyIsInRhciIsInJlcGxh
Y2UiLCJyZXNvbHZlVHJhbnNpdGlvbiIsImRlZiQkMSIsImNzcyIsImF1dG9Dc3NUcmFuc2l0aW9u
IiwibmV4dEZyYW1lIiwicmFmIiwiYWRkVHJhbnNpdGlvbkNsYXNzIiwidHJhbnNpdGlvbkNsYXNz
ZXMiLCJyZW1vdmVUcmFuc2l0aW9uQ2xhc3MiLCJ3aGVuVHJhbnNpdGlvbkVuZHMiLCJleHBlY3Rl
ZFR5cGUiLCJjYiIsImdldFRyYW5zaXRpb25JbmZvIiwicHJvcENvdW50IiwiVFJBTlNJVElPTiIs
InRyYW5zaXRpb25FbmRFdmVudCIsImFuaW1hdGlvbkVuZEV2ZW50IiwiZW5kZWQiLCJlbmQiLCJv
bkVuZCIsInN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9uRGVsYXlzIiwidHJh
bnNpdGlvblByb3AiLCJ0cmFuc2l0aW9uRHVyYXRpb25zIiwidHJhbnNpdGlvblRpbWVvdXQiLCJn
ZXRUaW1lb3V0IiwiYW5pbWF0aW9uRGVsYXlzIiwiYW5pbWF0aW9uUHJvcCIsImFuaW1hdGlvbkR1
cmF0aW9ucyIsImFuaW1hdGlvblRpbWVvdXQiLCJBTklNQVRJT04iLCJoYXNUcmFuc2Zvcm0iLCJ0
cmFuc2Zvcm1SRSIsImRlbGF5cyIsImR1cmF0aW9ucyIsInRvTXMiLCJzIiwiTnVtYmVyIiwiZW50
ZXIiLCJ0b2dnbGVEaXNwbGF5IiwiX2xlYXZlQ2IiLCJjYW5jZWxsZWQiLCJ0cmFuc2l0aW9uIiwi
X2VudGVyQ2IiLCJub2RlVHlwZSIsImVudGVyQ2xhc3MiLCJlbnRlclRvQ2xhc3MiLCJlbnRlckFj
dGl2ZUNsYXNzIiwiYXBwZWFyQ2xhc3MiLCJhcHBlYXJUb0NsYXNzIiwiYXBwZWFyQWN0aXZlQ2xh
c3MiLCJiZWZvcmVFbnRlciIsImFmdGVyRW50ZXIiLCJlbnRlckNhbmNlbGxlZCIsImJlZm9yZUFw
cGVhciIsImFwcGVhciIsImFmdGVyQXBwZWFyIiwiYXBwZWFyQ2FuY2VsbGVkIiwiZHVyYXRpb24i
LCJhY3RpdmVJbnN0YW5jZSIsInRyYW5zaXRpb25Ob2RlIiwiaXNBcHBlYXIiLCJpc1Jvb3RJbnNl
cnQiLCJzdGFydENsYXNzIiwiYWN0aXZlQ2xhc3MiLCJ0b0NsYXNzIiwiYmVmb3JlRW50ZXJIb29r
IiwiZW50ZXJIb29rIiwiYWZ0ZXJFbnRlckhvb2siLCJlbnRlckNhbmNlbGxlZEhvb2siLCJleHBs
aWNpdEVudGVyRHVyYXRpb24iLCJleHBlY3RzQ1NTIiwidXNlcldhbnRzQ29udHJvbCIsImdldEhv
b2tBcmd1bWVudHNMZW5ndGgiLCJzaG93IiwicGVuZGluZ05vZGUiLCJfcGVuZGluZyIsImlzVmFs
aWREdXJhdGlvbiIsImxlYXZlIiwicm0iLCJwZXJmb3JtTGVhdmUiLCJiZWZvcmVMZWF2ZSIsImxl
YXZlQ2xhc3MiLCJsZWF2ZUFjdGl2ZUNsYXNzIiwibGVhdmVUb0NsYXNzIiwiZXhwbGljaXRMZWF2
ZUR1cmF0aW9uIiwiYWZ0ZXJMZWF2ZSIsImxlYXZlQ2FuY2VsbGVkIiwiZGVsYXlMZWF2ZSIsImlu
dm9rZXJGbnMiLCJfZW50ZXIiLCJzZXRTZWxlY3RlZCIsImJpbmRpbmciLCJpc011bHRpcGxlIiwi
b3B0aW9uIiwiZ2V0VmFsdWUiLCJzZWxlY3RlZEluZGV4Iiwib25Db21wb3NpdGlvblN0YXJ0Iiwi
b25Db21wb3NpdGlvbkVuZCIsInRyaWdnZXIiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImRp
c3BhdGNoRXZlbnQiLCJsb2NhdGVOb2RlIiwiZ2V0UmVhbENoaWxkIiwiY29tcE9wdGlvbnMiLCJl
eHRyYWN0VHJhbnNpdGlvbkRhdGEiLCJrZXkkMSIsInBsYWNlaG9sZGVyIiwicmF3Q2hpbGQiLCJo
YXNQYXJlbnRUcmFuc2l0aW9uIiwiaXNTYW1lQ2hpbGQiLCJvbGRDaGlsZCIsImNhbGxQZW5kaW5n
Q2JzIiwiX21vdmVDYiIsInJlY29yZFBvc2l0aW9uIiwibmV3UG9zIiwiZ2V0Qm91bmRpbmdDbGll
bnRSZWN0IiwiYXBwbHlUcmFuc2xhdGlvbiIsIm9sZFBvcyIsInBvcyIsImR4IiwibGVmdCIsImR5
IiwidG9wIiwibW92ZWQiLCJ0cmFuc2Zvcm0iLCJXZWJraXRUcmFuc2Zvcm0iLCJ0cmFuc2l0aW9u
RHVyYXRpb24iLCJwYXJzZVRleHQiLCJkZWxpbWl0ZXJzIiwidGFnUkUiLCJidWlsZFJlZ2V4Iiwi
ZGVmYXVsdFRhZ1JFIiwidG9rZW5zIiwibGFzdEluZGV4IiwiZXhlYyIsInRyYW5zZm9ybU5vZGUi
LCJjbGFzc0JpbmRpbmciLCJnZW5EYXRhIiwidHJhbnNmb3JtTm9kZSQxIiwic3R5bGVCaW5kaW5n
IiwiZ2VuRGF0YSQxIiwiaHRtbCIsImRlY29kZUF0dHIiLCJzaG91bGREZWNvZGVOZXdsaW5lcyIs
InJlIiwiZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMiLCJlbmNvZGVkQXR0ciIsImRlY29kaW5nTWFw
IiwicGFyc2VIVE1MIiwiYWR2YW5jZSIsInBhcnNlRW5kVGFnIiwibG93ZXJDYXNlZFRhZ05hbWUi
LCJzdGFjayIsImxvd2VyQ2FzZWRUYWciLCJsYXN0VGFnIiwiZXhwZWN0SFRNTCIsImlzVW5hcnlU
YWckJDEiLCJpc1VuYXJ5VGFnIiwibm8iLCJjYW5CZUxlZnRPcGVuVGFnJCQxIiwiY2FuQmVMZWZ0
T3BlblRhZyIsImlzUGxhaW5UZXh0RWxlbWVudCIsImVuZFRhZ0xlbmd0aCIsInN0YWNrZWRUYWci
LCJyZVN0YWNrZWRUYWciLCJyZUNhY2hlIiwiUmVnRXhwIiwicmVzdCQxIiwiYWxsIiwiZW5kVGFn
Iiwic2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lIiwiY2hhcnMiLCJ0ZXh0RW5kIiwiY29tbWVudCIs
ImNvbW1lbnRFbmQiLCJzaG91bGRLZWVwQ29tbWVudCIsImNvbmRpdGlvbmFsQ29tbWVudCIsImNv
bmRpdGlvbmFsRW5kIiwiZG9jdHlwZU1hdGNoIiwiZG9jdHlwZSIsImVuZFRhZ01hdGNoIiwiY3Vy
SW5kZXgiLCJzdGFydFRhZ01hdGNoIiwic3RhcnRUYWdPcGVuIiwiYXR0ciIsInN0YXJ0VGFnQ2xv
c2UiLCJhdHRyaWJ1dGUiLCJ1bmFyeVNsYXNoIiwiaXNOb25QaHJhc2luZ1RhZyIsInVuYXJ5Iiwi
SVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiIsInJlc3QiLCJwYXJzZSIsInRlbXBsYXRlIiwiZW5k
UHJlIiwiZWxlbWVudCIsInByZSIsImluVlByZSIsInBsYXRmb3JtSXNQcmVUYWciLCJpblByZSIs
Indhcm4kMiIsImlzUHJlVGFnIiwicGxhdGZvcm1NdXN0VXNlUHJvcCIsInBsYXRmb3JtR2V0VGFn
TmFtZXNwYWNlIiwidHJhbnNmb3JtcyIsInByZVRyYW5zZm9ybXMiLCJwb3N0VHJhbnNmb3JtcyIs
InJvb3QiLCJjdXJyZW50UGFyZW50IiwicHJlc2VydmVXaGl0ZXNwYWNlIiwiY29tbWVudHMiLCJn
dWFyZElFU1ZHQnVnIiwibWFrZUF0dHJzTWFwIiwiaXNGb3JiaWRkZW5UYWciLCJmb3JiaWRkZW4i
LCJwcm9jZXNzUHJlIiwicHJvY2Vzc1Jhd0F0dHJzIiwicHJvY2Vzc0ZvciIsInByb2Nlc3NJZiIs
InByb2Nlc3NPbmNlIiwicHJvY2Vzc0tleSIsInBsYWluIiwicHJvY2Vzc1JlZiIsInByb2Nlc3NT
bG90IiwicHJvY2Vzc0NvbXBvbmVudCIsImkkMSIsInByb2Nlc3NBdHRycyIsImlmIiwiZWxzZWlm
IiwiZWxzZSIsImFkZElmQ29uZGl0aW9uIiwiYmxvY2siLCJwcm9jZXNzSWZDb25kaXRpb25zIiwi
c2xvdFNjb3BlIiwic2xvdFRhcmdldCIsImkkMiIsImxhc3ROb2RlIiwiaXNUZXh0VGFnIiwiZGVj
b2RlSFRNTENhY2hlZCIsImNoZWNrSW5Gb3IiLCJpbk1hdGNoIiwiZm9yQWxpYXNSRSIsImZvciIs
ImFsaWFzIiwiaXRlcmF0b3JNYXRjaCIsImZvckl0ZXJhdG9yUkUiLCJpdGVyYXRvcjEiLCJpdGVy
YXRvcjIiLCJmaW5kUHJldkVsZW1lbnQiLCJjb25kaXRpb24iLCJpZkNvbmRpdGlvbnMiLCJzbG90
TmFtZSIsImlzUHJvcCIsImRpclJFIiwiaGFzQmluZGluZ3MiLCJwYXJzZU1vZGlmaWVycyIsIm1v
ZGlmaWVyUkUiLCJiaW5kUkUiLCJjYW1lbCIsIm9uUkUiLCJhcmdNYXRjaCIsImFyZ1JFIiwiaWVO
U0J1ZyIsImllTlNQcmVmaXgiLCJvcHRpbWl6ZSIsImlzU3RhdGljS2V5IiwiZ2VuU3RhdGljS2V5
c0NhY2hlZCIsInN0YXRpY0tleXMiLCJpc1BsYXRmb3JtUmVzZXJ2ZWRUYWciLCJtYXJrU3RhdGlj
JDEiLCJtYXJrU3RhdGljUm9vdHMiLCJnZW5TdGF0aWNLZXlzJDEiLCJzdGF0aWMiLCJsJDEiLCJz
dGF0aWNJbkZvciIsInN0YXRpY1Jvb3QiLCJpc0J1aWx0SW5UYWciLCJpc0RpcmVjdENoaWxkT2ZU
ZW1wbGF0ZUZvciIsImdlbkhhbmRsZXJzIiwiZ2VuSGFuZGxlciIsImlzTWV0aG9kUGF0aCIsInNp
bXBsZVBhdGhSRSIsImlzRnVuY3Rpb25FeHByZXNzaW9uIiwiZm5FeHBSRSIsImdlbk1vZGlmaWVy
Q29kZSIsIm1vZGlmaWVyQ29kZSIsImdlbktleUZpbHRlciIsImdlbkZpbHRlckNvZGUiLCJrZXlW
YWwiLCJwYXJzZUludCIsIndyYXBMaXN0ZW5lcnMiLCJiaW5kJDEiLCJ3cmFwRGF0YSIsImdlbmVy
YXRlIiwiYXN0Iiwic3RhdGUiLCJDb2RlZ2VuU3RhdGUiLCJnZW5FbGVtZW50Iiwic3RhdGljUHJv
Y2Vzc2VkIiwiZ2VuU3RhdGljIiwib25jZVByb2Nlc3NlZCIsImdlbk9uY2UiLCJmb3JQcm9jZXNz
ZWQiLCJnZW5Gb3IiLCJpZlByb2Nlc3NlZCIsImdlbklmIiwiZ2VuU2xvdCIsImdlbkNvbXBvbmVu
dCIsImdlbkRhdGEkMiIsImdlbkNoaWxkcmVuIiwib25jZUlkIiwiYWx0R2VuIiwiYWx0RW1wdHki
LCJnZW5JZkNvbmRpdGlvbnMiLCJjb25kaXRpb25zIiwiZ2VuVGVybmFyeUV4cCIsInNoaWZ0Iiwi
YWx0SGVscGVyIiwiZ2VuRGlyZWN0aXZlcyIsImRhdGFHZW5GbnMiLCJnZW5Qcm9wcyIsImdlblNj
b3BlZFNsb3RzIiwiZ2VuSW5saW5lVGVtcGxhdGUiLCJuZWVkUnVudGltZSIsImhhc1J1bnRpbWUi
LCJnZW4iLCJpbmxpbmVSZW5kZXJGbnMiLCJnZW5TY29wZWRTbG90IiwiZ2VuRm9yU2NvcGVkU2xv
dCIsInNjb3BlIiwiY2hlY2tTa2lwIiwiYWx0R2VuRWxlbWVudCIsImFsdEdlbk5vZGUiLCJlbCQx
IiwiZ2V0Tm9ybWFsaXphdGlvblR5cGUiLCJtYXliZUNvbXBvbmVudCIsImdlbk5vZGUiLCJuZWVk
c05vcm1hbGl6YXRpb24iLCJzb21lIiwiZ2VuQ29tbWVudCIsImdlblRleHQiLCJ0cmFuc2Zvcm1T
cGVjaWFsTmV3bGluZXMiLCJiaW5kJCQxIiwiY29tcG9uZW50TmFtZSIsImNyZWF0ZUZ1bmN0aW9u
IiwiZXJyb3JzIiwiRnVuY3Rpb24iLCJjcmVhdGVDb21waWxlVG9GdW5jdGlvbkZuIiwiY29tcGls
ZSIsImNvbXBpbGVkIiwiZm5HZW5FcnJvcnMiLCJnZXRPdXRlckhUTUwiLCJvdXRlckhUTUwiLCJj
b250YWluZXIiLCJjbG9uZU5vZGUiLCJpbm5lckhUTUwiLCJjYW1lbGl6ZVJFIiwidG9VcHBlckNh
c2UiLCJoeXBoZW5hdGVSRSIsIlNTUl9BVFRSIiwiTElGRUNZQ0xFX0hPT0tTIiwib3B0aW9uTWVy
Z2VTdHJhdGVnaWVzIiwic2lsZW50IiwicHJvZHVjdGlvblRpcCIsInBlcmZvcm1hbmNlIiwid2Fy
bkhhbmRsZXIiLCJpZ25vcmVkRWxlbWVudHMiLCJpc1Jlc2VydmVkQXR0ciIsIl9saWZlY3ljbGVI
b29rcyIsImZyZWV6ZSIsImhhc1Byb3RvIiwiVUEiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJp
c0VkZ2UiLCJpc0FuZHJvaWQiLCJpc0lPUyIsIl9pc1NlcnZlciIsIl9TZXQiLCJlbnYiLCJWVUVf
RU5WIiwiX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsIlN5bWJvbCIsIm5leHRUaWNrSGFu
ZGxlciIsInBlbmRpbmciLCJjb3BpZXMiLCJjYWxsYmFja3MiLCJ0aW1lckZ1bmMiLCJQcm9taXNl
IiwibG9nRXJyb3IiLCJjYXRjaCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJjb3VudGVyIiwib2JzZXJ2
ZXIiLCJ0ZXh0Tm9kZSIsImNoYXJhY3RlckRhdGEiLCJfcmVzb2x2ZSIsIlNldCIsInVpZCIsInN1
YnMiLCJhZGRTdWIiLCJzdWIiLCJyZW1vdmVTdWIiLCJhZGREZXAiLCJhcnJheVByb3RvIiwiYXJy
YXlNZXRob2RzIiwibWV0aG9kIiwib3JpZ2luYWwiLCJvYnNlcnZlQXJyYXkiLCJhcnJheUtleXMi
LCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwid2FsayIsIml0ZW1zIiwicmF3IiwicHJvdG90eXBlQWNj
ZXNzb3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInVpZCQyIiwiZXhwT3JGbiIsImRlZXAiLCJ1c2Vy
IiwiYWN0aXZlIiwiZGVwcyIsIm5ld0RlcHMiLCJkZXBJZHMiLCJuZXdEZXBJZHMiLCJjbGVhbnVw
RGVwcyIsInRoaXMkMSIsInRtcCIsInRlYXJkb3duIiwiaW5pdCIsIiRtb3VudCIsImtlZXBBbGl2
ZSIsIm1vdW50ZWROb2RlIiwicHJlcGF0Y2giLCJpbnNlcnQiLCJkZXN0cm95IiwidWlkJDEiLCJf
dWlkIiwiX3NlbGYiLCJkYXRhRGVmIiwicHJvcHNEZWYiLCIkc2V0IiwiJGRlbGV0ZSIsImltbWVk
aWF0ZSIsImhvb2tSRSIsImNicyIsInByZXZFbCIsInByZXZWbm9kZSIsInByZXZBY3RpdmVJbnN0
YW5jZSIsIl9fcGF0Y2hfXyIsIl9fdnVlX18iLCIkbmV4dFRpY2siLCJfbyIsIl9uIiwiX3MiLCJf
bCIsIl90IiwiX3EiLCJfaSIsIl9tIiwiX2YiLCJfayIsIl9iIiwiX3YiLCJfZSIsIl91IiwiX2ci
LCJwYXR0ZXJuVHlwZXMiLCJLZWVwQWxpdmUiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImNyZWF0ZWQi
LCJkZXN0cm95ZWQiLCJidWlsdEluQ29tcG9uZW50cyIsImNvbmZpZ0RlZiIsInV0aWwiLCJkZWZp
bmVSZWFjdGl2ZSIsImRlbGV0ZSIsInNzckNvbnRleHQiLCJ2ZXJzaW9uIiwiZW1wdHlTdHlsZSIs
ImFjY2VwdFZhbHVlIiwic3ZnIiwibWF0aCIsImlzSFRNTFRhZyIsIm5vZGVPcHMiLCJob29rcyIs
ImJhc2VNb2R1bGVzIiwia2xhc3MiLCJjc3NUZXh0IiwibGlzdERlbGltaXRlciIsInByb3BlcnR5
RGVsaW1pdGVyIiwiY3NzVmFyUkUiLCJpbXBvcnRhbnRSRSIsInNldFByb3BlcnR5Iiwibm9ybWFs
aXplZE5hbWUiLCJub3JtYWxpemUiLCJ2ZW5kb3JOYW1lcyIsImNhcE5hbWUiLCJoYXNUcmFuc2l0
aW9uIiwib250cmFuc2l0aW9uZW5kIiwib253ZWJraXR0cmFuc2l0aW9uZW5kIiwib25hbmltYXRp
b25lbmQiLCJvbndlYmtpdGFuaW1hdGlvbmVuZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImFj
dGl2YXRlIiwicGxhdGZvcm1Nb2R1bGVzIiwicGF0Y2giLCJiYWNrZW5kIiwiZW1wdHlOb2RlQXQi
LCJjcmVhdGVSbUNiIiwiY2hpbGRFbG0iLCJyZW1vdmVOb2RlIiwiY3JlYXRlRWxtIiwiaW5zZXJ0
ZWRWbm9kZVF1ZXVlIiwibmVzdGVkIiwic2V0U2NvcGUiLCJjcmVhdGVDaGlsZHJlbiIsImludm9r
ZUNyZWF0ZUhvb2tzIiwiaXNSZWFjdGl2YXRlZCIsImluaXRDb21wb25lbnQiLCJyZWFjdGl2YXRl
Q29tcG9uZW50IiwicGVuZGluZ0luc2VydCIsImlzUGF0Y2hhYmxlIiwiaW5uZXJOb2RlIiwicmVm
JCQxIiwiYW5jZXN0b3IiLCJfc2NvcGVJZCIsImFkZFZub2RlcyIsInN0YXJ0SWR4IiwiaW52b2tl
RGVzdHJveUhvb2siLCJyZW1vdmVWbm9kZXMiLCJjaCIsInJlbW92ZUFuZEludm9rZVJlbW92ZUhv
b2siLCJ1cGRhdGVDaGlsZHJlbiIsIm9sZENoIiwibmV3Q2giLCJyZW1vdmVPbmx5Iiwib2xkS2V5
VG9JZHgiLCJpZHhJbk9sZCIsImVsbVRvTW92ZSIsIm9sZFN0YXJ0SWR4IiwibmV3U3RhcnRJZHgi
LCJvbGRFbmRJZHgiLCJvbGRTdGFydFZub2RlIiwib2xkRW5kVm5vZGUiLCJuZXdFbmRJZHgiLCJu
ZXdTdGFydFZub2RlIiwibmV3RW5kVm5vZGUiLCJjYW5Nb3ZlIiwicGF0Y2hWbm9kZSIsImh5ZHJh
dGUiLCJwb3N0cGF0Y2giLCJpbnZva2VJbnNlcnRIb29rIiwiaW5pdGlhbCIsImhhc0NoaWxkTm9k
ZXMiLCJjaGlsZHJlbk1hdGNoIiwiZmlyc3RDaGlsZCIsImlzUmVuZGVyZWRNb2R1bGUiLCJpc0lu
aXRpYWxQYXRjaCIsImlzUmVhbEVsZW1lbnQiLCJoYXNBdHRyaWJ1dGUiLCJvbGRFbG0iLCJwYXJl
bnRFbG0kMSIsImlzVGV4dElucHV0VHlwZSIsInZtb2RlbCIsIm1vZGVsJDEiLCJfdk9wdGlvbnMi
LCJwcmV2T3B0aW9ucyIsIm8iLCJ0cmFuc2l0aW9uJCQxIiwib3JpZ2luYWxEaXNwbGF5IiwiX192
T3JpZ2luYWxEaXNwbGF5IiwiZGlzcGxheSIsInVuYmluZCIsInBsYXRmb3JtRGlyZWN0aXZlcyIs
InRyYW5zaXRpb25Qcm9wcyIsIm1vZGUiLCJUcmFuc2l0aW9uIiwiX2xlYXZpbmciLCJvbGRSYXdD
aGlsZCIsImRlbGF5ZWRMZWF2ZSIsIm1vdmVDbGFzcyIsIlRyYW5zaXRpb25Hcm91cCIsInByZXZD
aGlsZHJlbiIsInJhd0NoaWxkcmVuIiwidHJhbnNpdGlvbkRhdGEiLCJrZXB0IiwicmVtb3ZlZCIs
ImMkMSIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJoYXNNb3ZlIiwiYm9keSIsIm9mZnNldEhl
aWdodCIsInByb3BlcnR5TmFtZSIsIl9oYXNNb3ZlIiwiY2xvbmUiLCJwbGF0Zm9ybUNvbXBvbmVu
dHMiLCJkZWNvZGVyIiwiY29udGVudCIsImVuY29kZWQiLCJkaXYiLCJyZWdleEVzY2FwZVJFIiwi
b3BlbiIsImNsb3NlIiwia2xhc3MkMSIsInN0eWxlJDEiLCJtb2R1bGVzJDEiLCJkaXJlY3RpdmVz
JDEiLCJiYXNlT3B0aW9ucyIsInJlZHVjZSIsImhlIiwiZGVjb2RlIiwic2luZ2xlQXR0cklkZW50
aWZpZXIiLCJzaW5nbGVBdHRyQXNzaWduIiwic2luZ2xlQXR0clZhbHVlcyIsIm5jbmFtZSIsInFu
YW1lQ2FwdHVyZSIsImciLCImbHQ7IiwiJmd0OyIsIiZxdW90OyIsIiZhbXA7IiwiJiMxMDsiLCJp
c0lnbm9yZU5ld2xpbmVUYWciLCJlc2MiLCJ0YWIiLCJzcGFjZSIsInVwIiwicmlnaHQiLCJkb3du
IiwiZ2VuR3VhcmQiLCJzdG9wIiwicHJldmVudCIsInNlbGYiLCJjdHJsIiwiYWx0IiwibWV0YSIs
Im1pZGRsZSIsImJhc2VEaXJlY3RpdmVzIiwiY2xvYWsiLCJjcmVhdGVDb21waWxlciIsImJhc2VD
b21waWxlIiwiZmluYWxPcHRpb25zIiwidGlwcyIsInRpcCIsImNvbXBpbGVUb0Z1bmN0aW9ucyIs
InJlZiQxIiwiaWRUb1RlbXBsYXRlIiwibW91bnQiLCJkb2N1bWVudEVsZW1lbnQiLCJleHBvcnRz
IiwicmF3U2NyaXB0RXhwb3J0cyIsImNvbXBpbGVkVGVtcGxhdGUiLCJpbmplY3RTdHlsZXMiLCJz
Y29wZUlkIiwibW9kdWxlSWRlbnRpZmllciIsImVzTW9kdWxlIiwic2NyaXB0RXhwb3J0cyIsIl9f
VlVFX1NTUl9DT05URVhUX18iLCJfcmVnaXN0ZXJlZENvbXBvbmVudHMiLCJfc3NyUmVnaXN0ZXIi
LCJiZWZvcmVDcmVhdGUiLCJkbG9jSGFzaEVtcHR5IiwiZGxvYyIsIl9ldmVyeSIsIml0ZXJhdG9y
IiwiX2ZsYXR0ZW4iLCJmbGF0IiwiX2FzeW5jRXZlcnlTZXJpZXMiLCJjb21wbGV0ZWQiLCJpdGVy
YXRlIiwicGFyYW1pZnlTdHJpbmciLCJwYXJhbXMiLCJtb2QiLCJwYXJhbSIsInJlZ2lmeVN0cmlu
ZyIsIm91dCIsInN1YnN0ciIsImNhcHR1cmVzIiwidGVybWluYXRvciIsInJvdXRlcyIsImRlbGlt
aXRlciIsImNodW5rIiwibG9jYXRpb24iLCJsaXN0ZW5lciIsImhpc3RvcnkiLCJjaGVjayIsIm9u
SGFzaENoYW5nZWQiLCJmaXJlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9uY2hhbmdl
Iiwib25DaGFuZ2VFdmVudCIsIlJvdXRlciIsImRvY3VtZW50TW9kZSIsImZyYW1lIiwid3JpdGVG
cmFtZSIsImF0dGFjaEV2ZW50Iiwic2V0SW50ZXJ2YWwiLCJzZXRIYXNoIiwicHVzaFN0YXRlIiwi
dGl0bGUiLCJmIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZW50RG9jdW1lbnQiLCJjb250ZW50V2lu
ZG93Iiwid3JpdGUiLCJzeW5jSGFzaCIsIl9oYXNoIiwiX21ldGhvZHMiLCJfaW5zZXJ0IiwiaW5z
ZXJ0RXgiLCJoaXN0b3J5U3VwcG9ydCIsImNvbmZpZ3VyZSIsInIiLCJyb3V0ZVRvIiwibmV3VVJM
IiwidXJsIiwiZ2V0UGF0aCIsImRpc3BhdGNoIiwiY29udmVydF9oYXNoX2luX2luaXQiLCJyZXBs
YWNlU3RhdGUiLCJydW5faW5faW5pdCIsImV4cGxvZGUiLCJzZXRSb3V0ZSIsInJvdXRlIiwiZ2V0
Um91dGUiLCJwYXRobmFtZSIsIlFVRVJZX1NFUEFSQVRPUiIsInJlY3Vyc2UiLCJhc3luYyIsInN0
cmljdCIsIm5vdGZvdW5kIiwicmVzb3VyY2UiLCJodG1sNWhpc3RvcnkiLCJydW5faGFuZGxlcl9p
bl9pbml0IiwiYWZ0ZXIiLCJiZWZvcmUiLCJ0b2tlbiIsIm1hdGNoZXIiLCJyb3V0ZXNGbiIsInVw
ZGF0ZUFuZEludm9rZSIsImludm9rZSIsInJ1bmxpc3QiLCJpbnZva2VkIiwiX2ludm9rZWQiLCJy
ZXZlcnNlIiwidGhpc0FyZyIsInJlZ2V4cCIsImZpbHRlclJvdXRlcyIsImRlZXBDb3B5IiwiYXBw
bHlGaWx0ZXIiLCJuZXdSb3V0ZXMiLCJtYXRjaGVkIiwiZXhhY3QiLCJwYXJlbnRUeXBlIiwicGFy
dCIsIkVycm9yIiwiZXh0cmEiLCJsb2NhbCIsInJlbmFtZSIsInBhcnRzIiwicm91dGVUeXBlIiwi
aXNSb3V0ZSIsInBhcmVudElkIiwibmV3U3R5bGVzIiwibWVkaWEiLCJzb3VyY2VNYXAiLCJldmFs
IiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsInVzZVNvdXJjZU1hcCIsImNzc01hcHBpbmciLCJi
dG9hIiwic291cmNlTWFwcGluZyIsInRvQ29tbWVudCIsInNvdXJjZXMiLCJzb3VyY2VSb290Iiwi
dW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJtZWRpYVF1ZXJ5IiwiYWxyZWFkeUltcG9y
dGVkTW9kdWxlcyIsImFkZFN0eWxlc1RvRG9tIiwiZG9tU3R5bGUiLCJzdHlsZXNJbkRvbSIsImFk
ZFN0eWxlIiwiY3JlYXRlU3R5bGVFbGVtZW50Iiwic3R5bGVFbGVtZW50IiwiaGVhZCIsImlzUHJv
ZHVjdGlvbiIsImlzT2xkSUUiLCJzdHlsZUluZGV4Iiwic2luZ2xldG9uQ291bnRlciIsInNpbmds
ZXRvbkVsZW1lbnQiLCJhcHBseVRvU2luZ2xldG9uVGFnIiwiYXBwbHlUb1RhZyIsIm5ld09iaiIs
InN0eWxlU2hlZXQiLCJyZXBsYWNlVGV4dCIsImNzc05vZGUiLCJjaGlsZE5vZGVzIiwiaGFzRG9j
dW1lbnQiLCJERUJVRyIsImxpc3RUb1N0eWxlcyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiX2lz
UHJvZHVjdGlvbiIsIm5ld0xpc3QiLCJtYXlSZW1vdmUiLCJ0ZXh0U3RvcmUiLCJyZXBsYWNlbWVu
dCJdLCJtYXBwaW5ncyI6IkFBQUFBLGNBQWMsSUFFUixTQUFVQyxFQUFRQyxFQUFxQkMsR0FFN0Ms
WUFDQUMsUUFBT0MsZUFBZUgsRUFBcUIsY0FBZ0JJLE9BQU8sSUNMbEUsU0FBQUM7Ozs7O0FBU0Es
UUFBQUMsR0FBQUMsR0FDQSxXQUFBQyxLQUFBRCxHQUFBLE9BQUFBLEVBR0EsUUFBQUUsR0FBQUYs
R0FDQSxXQUFBQyxLQUFBRCxHQUFBLE9BQUFBLEVBR0EsUUFBQUcsR0FBQUgsR0FDQSxXQUFBQSxF
QUdBLFFBQUFJLEdBQUFKLEdBQ0EsV0FBQUEsRUFNQSxRQUFBSyxHQUFBUixHQUNBLE1BQ0EsZ0JB
QUFBLElBQ0EsZ0JBQUFBLElBQ0EsaUJBQUFBLEdBU0EsUUFBQVMsR0FBQUMsR0FDQSxjQUFBQSxH
QUFBLGdCQUFBQSxHQVNBLFFBQUFDLEdBQUFELEdBQ0EsMEJBQUFFLEdBQUFDLEtBQUFILEdBR0Es
UUFBQUksR0FBQVgsR0FDQSwwQkFBQVMsR0FBQUMsS0FBQVYsR0FNQSxRQUFBWSxHQUFBQyxHQUNB
LEdBQUFDLEdBQUFDLFdBQUFGLEVBQ0EsT0FBQUMsSUFBQSxHQUFBRSxLQUFBQyxNQUFBSCxRQUFB
SSxTQUFBTCxHQU1BLFFBQUFNLEdBQUFOLEdBQ0EsYUFBQUEsRUFDQSxHQUNBLGdCQUFBQSxHQUNB
TyxLQUFBQyxVQUFBUixFQUFBLFFBQ0FTLE9BQUFULEdBT0EsUUFBQVUsR0FBQVYsR0FDQSxHQUFB
QyxHQUFBQyxXQUFBRixFQUNBLE9BQUFXLE9BQUFWLEdBQUFELEVBQUFDLEVBT0EsUUFBQVcsR0FD
QUMsRUFDQUMsR0FJQSxPQUZBQyxHQUFBakMsT0FBQWtDLE9BQUEsTUFDQUMsRUFBQUosRUFBQUss
TUFBQSxLQUNBQyxFQUFBLEVBQWlCQSxFQUFBRixFQUFBRyxPQUFpQkQsSUFDbENKLEVBQUFFLEVB
QUFFLEtBQUEsQ0FFQSxPQUFBTCxHQUNBLFNBQUFkLEdBQXNCLE1BQUFlLEdBQUFmLEVBQUFxQixn
QkFDdEIsU0FBQXJCLEdBQXNCLE1BQUFlLEdBQUFmLElBZ0J0QixRQUFBc0IsR0FBQUMsRUFBQUMs
R0FDQSxHQUFBRCxFQUFBSCxPQUFBLENBQ0EsR0FBQUssR0FBQUYsRUFBQUcsUUFBQUYsRUFDQSxJ
QUFBQyxHQUFBLEVBQ0EsTUFBQUYsR0FBQUksT0FBQUYsRUFBQSxJQVNBLFFBQUFHLEdBQUFsQyxF
QUFBbUMsR0FDQSxNQUFBQyxJQUFBakMsS0FBQUgsRUFBQW1DLEdBTUEsUUFBQUUsR0FBQUMsR0FD
QSxHQUFBQyxHQUFBbkQsT0FBQWtDLE9BQUEsS0FDQSxpQkFBQUgsR0FFQSxNQURBb0IsR0FBQXBC
LEtBQ0FvQixFQUFBcEIsR0FBQW1CLEVBQUFuQixLQWlDQSxRQUFBcUIsR0FBQUYsRUFBQUcsR0FD
QSxRQUFBQyxHQUFBQyxHQUNBLEdBQUFDLEdBQUFDLFVBQUFuQixNQUNBLE9BQUFrQixHQUNBQSxF
QUFBLEVBQ0FOLEVBQUFRLE1BQUFMLEVBQUFJLFdBQ0FQLEVBQUFuQyxLQUFBc0MsRUFBQUUsR0FD
QUwsRUFBQW5DLEtBQUFzQyxHQUlBLE1BREFDLEdBQUFLLFFBQUFULEVBQUFaLE9BQ0FnQixFQU1B
LFFBQUFNLEdBQUF6QixFQUFBMEIsR0FDQUEsS0FBQSxDQUdBLEtBRkEsR0FBQXhCLEdBQUFGLEVB
QUFHLE9BQUF1QixFQUNBQyxFQUFBLEdBQUFDLE9BQUExQixHQUNBQSxLQUNBeUIsRUFBQXpCLEdB
QUFGLEVBQUFFLEVBQUF3QixFQUVBLE9BQUFDLEdBTUEsUUFBQUUsR0FBQUMsRUFBQUMsR0FDQSxP
QUFBbkIsS0FBQW1CLEdBQ0FELEVBQUFsQixHQUFBbUIsRUFBQW5CLEVBRUEsT0FBQWtCLEdBTUEs
UUFBQUUsR0FBQTFCLEdBRUEsT0FEQTJCLE1BQ0EvQixFQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxP
QUFnQkQsSUFDakNJLEVBQUFKLElBQ0EyQixFQUFBSSxFQUFBM0IsRUFBQUosR0FHQSxPQUFBK0Is
R0FRQSxRQUFBQyxHQUFBZCxFQUFBZSxFQUFBQyxJQXlCQSxRQUFBQyxHQUFBakIsRUFBQWUsR0FD
QSxHQUFBZixJQUFBZSxFQUFnQixRQUNoQixJQUFBRyxHQUFBOUQsRUFBQTRDLEdBQ0FtQixFQUFB
L0QsRUFBQTJELEVBQ0EsS0FBQUcsSUFBQUMsRUFzQkcsT0FBQUQsSUFBQUMsR0FDSC9DLE9BQUE0
QixLQUFBNUIsT0FBQTJDLEVBdEJBLEtBQ0EsR0FBQUssR0FBQVosTUFBQWEsUUFBQXJCLEdBQ0Fz
QixFQUFBZCxNQUFBYSxRQUFBTixFQUNBLElBQUFLLEdBQUFFLEVBQ0EsTUFBQXRCLEdBQUFqQixT
QUFBZ0MsRUFBQWhDLFFBQUFpQixFQUFBdUIsTUFBQSxTQUFBQyxFQUFBMUMsR0FDQSxNQUFBbUMs
R0FBQU8sRUFBQVQsRUFBQWpDLEtBRU8sSUFBQXNDLEdBQUFFLEVBUVAsUUFQQSxJQUFBRyxHQUFB
aEYsT0FBQWlGLEtBQUExQixHQUNBMkIsRUFBQWxGLE9BQUFpRixLQUFBWCxFQUNBLE9BQUFVLEdB
QUExQyxTQUFBNEMsRUFBQTVDLFFBQUEwQyxFQUFBRixNQUFBLFNBQUEvQixHQUNBLE1BQUF5QixH
QUFBakIsRUFBQVIsR0FBQXVCLEVBQUF2QixNQU1LLE1BQUFnQyxHQUVMLFVBU0EsUUFBQUksR0FB
QTFDLEVBQUF2QixHQUNBLE9BQUFtQixHQUFBLEVBQWlCQSxFQUFBSSxFQUFBSCxPQUFnQkQsSUFD
akMsR0FBQW1DLEVBQUEvQixFQUFBSixHQUFBbkIsR0FBa0MsTUFBQW1CLEVBRWxDLFVBTUEsUUFB
QStDLEdBQUFsQyxHQUNBLEdBQUFtQyxJQUFBLENBQ0EsbUJBQ0FBLElBQ0FBLEdBQUEsRUFDQW5D
LEVBQUFRLE1BQUE0QixLQUFBN0IsYUF5SEEsUUFBQThCLEdBQUF4RCxHQUNBLEdBQUF3QyxJQUFB
eEMsRUFBQSxJQUFBeUQsV0FBQSxFQUNBLGFBQUFqQixHQUFBLEtBQUFBLEVBTUEsUUFBQWtCLEdB
QUE3RSxFQUFBbUMsRUFBQTdCLEVBQUF3RSxHQUNBMUYsT0FBQUMsZUFBQVcsRUFBQW1DLEdBQ0E3
QyxNQUFBZ0IsRUFDQXdFLGVBQ0FDLFVBQUEsRUFDQUMsY0FBQSxJQVFBLFFBQUFDLEdBQUFDLEdB
Q0EsSUFBQUMsR0FBQUMsS0FBQUYsR0FBQSxDQUdBLEdBQUFHLEdBQUFILEVBQUExRCxNQUFBLElB
Q0EsaUJBQUF4QixHQUNBLE9BQUF5QixHQUFBLEVBQW1CQSxFQUFBNEQsRUFBQTNELE9BQXFCRCxJ
QUFBLENBQ3hDLElBQUF6QixFQUFpQixNQUNqQkEsS0FBQXFGLEVBQUE1RCxJQUVBLE1BQUF6QixL
QXFHQSxRQUFBc0YsR0FBQUMsRUFBQUMsRUFBQUMsR0FDQSxHQUFBQyxHQUFBQyxhQUNBRCxHQUFB
QyxhQUFBeEYsS0FBQSxLQUFBb0YsRUFBQUMsRUFBQUMsT0FDRyxDQUtILElBQUFHLElBQUEsbUJB
QUFDLFNBR0EsS0FBQU4sRUFGQU0sU0FBQUMsTUFBQVAsSUE2REEsUUFBQVEsR0FBQUMsR0FDQSx3
QkFBQUEsSUFBQSxjQUFBWixLQUFBWSxFQUFBcEYsWUFnS0EsUUFBQXFGLEdBQUFDLEdBQ0FDLEdB
QUFDLFFBQW1CQyxHQUFBQyxLQUFBSCxHQUFBQyxRQUNuQkQsR0FBQUMsT0FBQUYsRUFHQSxRQUFB
SyxLQUNBSixHQUFBQyxPQUFBQyxHQUFBRyxNQTJHQSxRQUFBQyxHQUFBTCxFQUFBTSxFQUFBckMs
R0FFQStCLEVBQUFPLFVBQUFELEVBU0EsUUFBQUUsR0FBQVIsRUFBQU0sRUFBQXJDLEdBQ0EsT0FB
QTVDLEdBQUEsRUFBQW1CLEVBQUF5QixFQUFBM0MsT0FBa0NELEVBQUFtQixFQUFPbkIsSUFBQSxD
QUN6QyxHQUFBVSxHQUFBa0MsRUFBQTVDLEVBQ0FvRCxHQUFBdUIsRUFBQWpFLEVBQUF1RSxFQUFB
dkUsS0FTQSxRQUFBMEUsR0FBQXZILEVBQUF3SCxHQUNBLEdBQUEvRyxFQUFBVCxHQUFBLENBR0Es
R0FBQXlILEVBZUEsT0FkQTdFLEdBQUE1QyxFQUFBLFdBQUFBLEVBQUEwSCxpQkFBQUMsSUFDQUYs
RUFBQXpILEVBQUEwSCxPQUVBRSxHQUFBQyxnQkFDQUMsT0FDQWpFLE1BQUFhLFFBQUExRSxJQUFB
VyxFQUFBWCxLQUNBRixPQUFBaUksYUFBQS9ILEtBQ0FBLEVBQUFnSSxTQUVBUCxFQUFBLEdBQUFF
LElBQUEzSCxJQUVBd0gsR0FBQUMsR0FDQUEsRUFBQVEsVUFFQVIsR0FNQSxRQUFBUyxHQUNBeEgs
RUFDQW1DLEVBQ0E3QixFQUNBbUgsRUFDQUMsR0FFQSxHQUFBQyxHQUFBLEdBQUF4QixJQUVBeUIs
RUFBQXhJLE9BQUF5SSx5QkFBQTdILEVBQUFtQyxFQUNBLEtBQUF5RixJQUFBLElBQUFBLEVBQUE1
QyxhQUFBLENBS0EsR0FBQThDLEdBQUFGLEtBQUFHLElBQ0FDLEVBQUFKLEtBQUFLLElBRUFDLEdB
QUFSLEdBQUFiLEVBQUF2RyxFQUNBbEIsUUFBQUMsZUFBQVcsRUFBQW1DLEdBQ0EyQyxZQUFBLEVB
Q0FFLGNBQUEsRUFDQStDLElBQUEsV0FDQSxHQUFBekksR0FBQXdJLElBQUEzSCxLQUFBSCxHQUFB
TSxDQVVBLE9BVEE2RixJQUFBQyxTQUNBdUIsRUFBQVEsU0FDQUQsR0FDQUEsRUFBQVAsSUFBQVEs
U0FFQWhGLE1BQUFhLFFBQUExRSxJQUNBOEksRUFBQTlJLElBR0FBLEdBRUEySSxJQUFBLFNBQUFJ
LEdBQ0EsR0FBQS9JLEdBQUF3SSxJQUFBM0gsS0FBQUgsR0FBQU0sQ0FFQStILEtBQUEvSSxHQUFB
K0ksT0FBQS9JLFFBT0EwSSxFQUNBQSxFQUFBN0gsS0FBQUgsRUFBQXFJLEdBRUEvSCxFQUFBK0gs
RUFFQUgsR0FBQVIsR0FBQWIsRUFBQXdCLEdBQ0FWLEVBQUFXLGNBVUEsUUFBQUwsR0FBQTdCLEVB
QUFqRSxFQUFBN0IsR0FDQSxHQUFBNkMsTUFBQWEsUUFBQW9DLElBQUEvRixFQUFBOEIsR0FHQSxN
QUZBaUUsR0FBQTFFLE9BQUFqQixLQUFBOEgsSUFBQW5DLEVBQUExRSxPQUFBUyxHQUNBaUUsRUFB
QW5FLE9BQUFFLEVBQUEsRUFBQTdCLEdBQ0FBLENBRUEsSUFBQTRCLEVBQUFrRSxFQUFBakUsR0FF
QSxNQURBaUUsR0FBQWpFLEdBQUE3QixFQUNBQSxDQUVBLElBQUF5RyxHQUFBLEVBQUFDLE1BQ0Es
T0FBQVosR0FBQWtCLFFBQUFQLEtBQUFRLFFBS0FqSCxFQUVBeUcsR0FJQVMsRUFBQVQsRUFBQXpI
LE1BQUE2QyxFQUFBN0IsR0FDQXlHLEVBQUFZLElBQUFXLFNBQ0FoSSxJQUxBOEYsRUFBQWpFLEdB
QUE3QixFQUNBQSxHQVVBLFFBQUFrSSxHQUFBcEMsRUFBQWpFLEdBQ0EsR0FBQWdCLE1BQUFhLFFB
QUFvQyxJQUFBL0YsRUFBQThCLEdBRUEsV0FEQWlFLEdBQUFuRSxPQUFBRSxFQUFBLEVBR0EsSUFB
QTRFLEdBQUEsRUFBQUMsTUFDQVosR0FBQWtCLFFBQUFQLEtBQUFRLFNBT0FyRixFQUFBa0UsRUFB
QWpFLFdBR0FpRSxHQUFBakUsR0FDQTRFLEdBR0FBLEVBQUFZLElBQUFXLFVBT0EsUUFBQUYsR0FB
QTlJLEdBQ0EsT0FBQTZFLE9BQUEsR0FBQTFDLEVBQUEsRUFBQW1CLEVBQUF0RCxFQUFBb0MsT0FB
aURELEVBQUFtQixFQUFPbkIsSUFDeEQwQyxFQUFBN0UsRUFBQW1DLEdBQ0EwQyxLQUFBNkMsUUFB
QTdDLEVBQUE2QyxPQUFBVyxJQUFBUSxTQUNBaEYsTUFBQWEsUUFBQUcsSUFDQWlFLEVBQUFqRSxH
QWdDQSxRQUFBc0UsR0FBQXBGLEVBQUFxRixHQUNBLElBQUFBLEVBQWMsTUFBQXJGLEVBR2QsUUFG
QWxCLEdBQUF3RyxFQUFBQyxFQUNBdkUsRUFBQWpGLE9BQUFpRixLQUFBcUUsR0FDQWpILEVBQUEs
RUFBaUJBLEVBQUE0QyxFQUFBM0MsT0FBaUJELElBQ2xDVSxFQUFBa0MsRUFBQTVDLEdBQ0FrSCxF
QUFBdEYsRUFBQWxCLEdBQ0F5RyxFQUFBRixFQUFBdkcsR0FDQUQsRUFBQW1CLEVBQUFsQixHQUVL
bEMsRUFBQTBJLElBQUExSSxFQUFBMkksSUFDTEgsRUFBQUUsRUFBQUMsR0FGQVgsRUFBQTVFLEVB
QUFsQixFQUFBeUcsRUFLQSxPQUFBdkYsR0FNQSxRQUFBd0YsR0FDQUMsRUFDQUMsRUFDQXZELEdB
RUEsTUFBQUEsR0FtQkdzRCxHQUFBQyxFQUNILFdBRUEsR0FBQUMsR0FBQSxrQkFBQUQsR0FDQUEs
RUFBQTVJLEtBQUFxRixHQUNBdUQsRUFDQUUsRUFBQSxrQkFBQUgsR0FDQUEsRUFBQTNJLEtBQUFx
RixPQUNBOUYsRUFDQSxPQUFBc0osR0FDQVAsRUFBQU8sRUFBQUMsR0FFQUEsT0FaRyxHQWpCSEYs
RUFHQUQsRUFRQSxXQUNBLE1BQUFMLEdBQ0Esa0JBQUFNLEtBQUE1SSxLQUFBdUUsTUFBQXFFLEVB
Q0Esa0JBQUFELEtBQUEzSSxLQUFBdUUsTUFBQW9FLElBVkFDLEVBSEFELEVBMkRBLFFBQUFJLEdB
Q0FKLEVBQ0FDLEdBRUEsTUFBQUEsR0FDQUQsRUFDQUEsRUFBQUssT0FBQUosR0FDQTVGLE1BQUFh
LFFBQUErRSxHQUNBQSxHQUNBQSxHQUNBRCxFQWNBLFFBQUFNLEdBQUFOLEVBQUFDLEdBQ0EsR0FB
QXZGLEdBQUFwRSxPQUFBa0MsT0FBQXdILEdBQUEsS0FDQSxPQUFBQyxHQUNBM0YsRUFBQUksRUFB
QXVGLEdBQ0F2RixFQThFQSxRQUFBNkYsR0FBQUMsR0FDQSxHQUFBQyxHQUFBRCxFQUFBQyxLQUNB
LElBQUFBLEVBQUEsQ0FDQSxHQUNBOUgsR0FBQW5CLEVBQUFrSixFQURBaEcsSUFFQSxJQUFBTCxN
QUFBYSxRQUFBdUYsR0FFQSxJQURBOUgsRUFBQThILEVBQUE3SCxPQUNBRCxLQUVBLGlCQURBbkIs
RUFBQWlKLEVBQUE5SCxNQUVBK0gsRUFBQUMsR0FBQW5KLEdBQ0FrRCxFQUFBZ0csSUFBcUJFLEtB
QUEsV0FLbEIsSUFBQXpKLEVBQUFzSixHQUNILE9BQUFwSCxLQUFBb0gsR0FDQWpKLEVBQUFpSixF
QUFBcEgsR0FDQXFILEVBQUFDLEdBQUF0SCxHQUNBcUIsRUFBQWdHLEdBQUF2SixFQUFBSyxHQUNB
QSxHQUNXb0osS0FBQXBKLEVBR1hnSixHQUFBQyxNQUFBL0YsR0FNQSxRQUFBbUcsR0FBQUwsR0FD
QSxHQUFBTSxHQUFBTixFQUFBTSxNQUNBLElBQUF6RyxNQUFBYSxRQUFBNEYsR0FFQSxPQURBQyxH
QUFBUCxFQUFBTSxVQUNBbkksRUFBQSxFQUFtQkEsRUFBQW1JLEVBQUFsSSxPQUFtQkQsSUFDdENv
SSxFQUFBRCxFQUFBbkksSUFBQW1JLEVBQUFuSSxHQVFBLFFBQUFxSSxHQUFBUixHQUNBLEdBQUFT
LEdBQUFULEVBQUFVLFVBQ0EsSUFBQUQsRUFDQSxPQUFBNUgsS0FBQTRILEdBQUEsQ0FDQSxHQUFB
bEYsR0FBQWtGLEVBQUE1SCxFQUNBLG1CQUFBMEMsS0FDQWtGLEVBQUE1SCxJQUFxQkssS0FBQXFD
LEVBQUFvRixPQUFBcEYsS0FVckIsUUFBQXFGLEdBQ0FDLEVBQ0FDLEVBQ0E1RSxHQWdDQSxRQUFB
NkUsR0FBQWxJLEdBQ0EsR0FBQW1JLEdBQUFDLEdBQUFwSSxJQUFBcUksRUFDQWxCLEdBQUFuSCxH
QUFBbUksRUFBQUgsRUFBQWhJLEdBQUFpSSxFQUFBakksR0FBQXFELEVBQUFyRCxHQTVCQSxrQkFB
QWlJLEtBQ0FBLElBQUFkLFNBR0FELEVBQUFlLEdBQ0FULEVBQUFTLEdBQ0FOLEVBQUFNLEVBQ0Es
SUFBQUssR0FBQUwsRUFBQU0sT0FJQSxJQUhBRCxJQUNBTixFQUFBRCxFQUFBQyxFQUFBTSxFQUFB
akYsSUFFQTRFLEVBQUFPLE9BQ0EsT0FBQWxKLEdBQUEsRUFBQW1CLEVBQUF3SCxFQUFBTyxPQUFB
akosT0FBNENELEVBQUFtQixFQUFPbkIsSUFDbkQwSSxFQUFBRCxFQUFBQyxFQUFBQyxFQUFBTyxP
QUFBbEosR0FBQStELEVBR0EsSUFDQXJELEdBREFtSCxJQUVBLEtBQUFuSCxJQUFBZ0ksR0FDQUUs
RUFBQWxJLEVBRUEsS0FBQUEsSUFBQWlJLEdBQ0FsSSxFQUFBaUksRUFBQWhJLElBQ0FrSSxFQUFB
bEksRUFPQSxPQUFBbUgsR0FRQSxRQUFBc0IsR0FDQXRCLEVBQ0FJLEVBQ0FtQixFQUNBQyxHQUdB
LG1CQUFBRCxHQUFBLENBR0EsR0FBQUUsR0FBQXpCLEVBQUFJLEVBRUEsSUFBQXhILEVBQUE2SSxF
QUFBRixHQUEyQixNQUFBRSxHQUFBRixFQUMzQixJQUFBRyxHQUFBdkIsR0FBQW9CLEVBQ0EsSUFB
QTNJLEVBQUE2SSxFQUFBQyxHQUFvQyxNQUFBRCxHQUFBQyxFQUNwQyxJQUFBQyxHQUFBQyxHQUFB
RixFQUNBLElBQUE5SSxFQUFBNkksRUFBQUUsR0FBcUMsTUFBQUYsR0FBQUUsRUFTckMsT0FQQUYs
R0FBQUYsSUFBQUUsRUFBQUMsSUFBQUQsRUFBQUUsSUFZQSxRQUFBRSxHQUNBaEosRUFDQWlKLEVB
Q0FDLEVBQ0E3RixHQUVBLEdBQUE4RixHQUFBRixFQUFBakosR0FDQW9KLEdBQUFySixFQUFBbUos
RUFBQWxKLEdBQ0E3QyxFQUFBK0wsRUFBQWxKLEVBVUEsSUFSQXFKLEVBQUFDLFFBQUFILEVBQUE1
QixRQUNBNkIsSUFBQXJKLEVBQUFvSixFQUFBLFdBQ0FoTSxHQUFBLEVBQ0trTSxFQUFBekssT0FB
QXVLLEVBQUE1QixPQUFBLEtBQUFwSyxPQUFBb00sR0FBQXZKLEtBQ0w3QyxHQUFBLFFBSUFJLEtB
QUFKLEVBQUEsQ0FDQUEsRUFBQXFNLEVBQUFuRyxFQUFBOEYsRUFBQW5KLEVBR0EsSUFBQXlKLEdB
QUExRSxHQUFBQyxhQUNBRCxJQUFBQyxlQUFBLEVBQ0FOLEVBQUF2SCxHQUNBNEgsR0FBQUMsY0FB
QXlFLEVBS0EsTUFBQXRNLEdBTUEsUUFBQXFNLEdBQUFuRyxFQUFBOEYsRUFBQW5KLEdBRUEsR0FB
QUQsRUFBQW9KLEVBQUEsWUFHQSxHQUFBekcsR0FBQXlHLEVBQUFPLE9BWUEsT0FBQXJHLE1BQUFz
RyxTQUFBVCxlQUNBM0wsS0FBQThGLEVBQUFzRyxTQUFBVCxVQUFBbEosUUFDQXpDLEtBQUE4RixF
QUFBdUcsT0FBQTVKLEdBRUFxRCxFQUFBdUcsT0FBQTVKLEdBSUEsa0JBQUEwQyxJQUFBLGFBQUFt
SCxFQUFBVixFQUFBNUIsTUFDQTdFLEVBQUExRSxLQUFBcUYsR0FDQVgsR0FpRkEsUUFBQW1ILEdB
QUExSixHQUNBLEdBQUEySixHQUFBM0osS0FBQTFCLFdBQUFxTCxNQUFBLHFCQUNBLE9BQUFBLEtB
QUEsTUFHQSxRQUFBVCxHQUFBOUIsRUFBQXBILEdBQ0EsSUFBQWEsTUFBQWEsUUFBQTFCLEdBQ0Es
TUFBQTBKLEdBQUExSixLQUFBMEosRUFBQXRDLEVBRUEsUUFBQWpJLEdBQUEsRUFBQXlLLEVBQUE1
SixFQUFBWixPQUFrQ0QsRUFBQXlLLEVBQVN6SyxJQUMzQyxHQUFBdUssRUFBQTFKLEVBQUFiLE1B
QUF1SyxFQUFBdEMsR0FDQSxRQUlBLFVBNEpBLFFBQUF5QyxHQUFBN0wsR0FDQSxVQUFBOEwsUUFB
QTFNLGlCQUFBcUIsT0FBQVQsSUFPQSxRQUFBK0wsR0FBQUMsR0FDQSxHQUFBQyxHQUFBLEdBQUFI
LElBQ0FFLEVBQUFFLElBQ0FGLEVBQUFHLEtBQ0FILEVBQUFJLFNBQ0FKLEVBQUFLLEtBQ0FMLEVB
QUFNLElBQ0FOLEVBQUFPLFFBQ0FQLEVBQUFRLGlCQUNBUixFQUFBUyxhQU9BLE9BTEFSLEdBQUFT
LEdBQUFWLEVBQUFVLEdBQ0FULEVBQUFVLFNBQUFYLEVBQUFXLFNBQ0FWLEVBQUFwSyxJQUFBbUss
RUFBQW5LLElBQ0FvSyxFQUFBVyxVQUFBWixFQUFBWSxVQUNBWCxFQUFBWSxVQUFBLEVBQ0FaLEVB
R0EsUUFBQWEsSUFBQUMsR0FHQSxPQUZBbkIsR0FBQW1CLEVBQUEzTCxPQUNBOEIsRUFBQSxHQUFB
TCxPQUFBK0ksR0FDQXpLLEVBQUEsRUFBaUJBLEVBQUF5SyxFQUFTekssSUFDMUIrQixFQUFBL0Is
R0FBQTRLLEVBQUFnQixFQUFBNUwsR0FFQSxPQUFBK0IsR0FvQkEsUUFBQThKLElBQUFDLEdBQ0Es
UUFBQUMsS0FDQSxHQUFBQyxHQUFBNUssVUFFQTBLLEVBQUFDLEVBQUFELEdBQ0EsS0FBQXBLLE1B
QUFhLFFBQUF1SixHQU9BLE1BQUFBLEdBQUF6SyxNQUFBLEtBQUFELFVBTEEsUUFEQTBKLEdBQUFn
QixFQUFBRyxRQUNBak0sRUFBQSxFQUFxQkEsRUFBQThLLEVBQUE3SyxPQUFtQkQsSUFDeEM4SyxF
QUFBOUssR0FBQXFCLE1BQUEsS0FBQTJLLEdBUUEsTUFEQUQsR0FBQUQsTUFDQUMsRUFHQSxRQUFB
RyxJQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBdkksR0FFQSxHQUFBZ0UsR0FBQXdFLEVBQUFD
LEVBQUFDLENBQ0EsS0FBQTFFLElBQUFvRSxHQUNBSSxFQUFBSixFQUFBcEUsR0FDQXlFLEVBQUFK
LEVBQUFyRSxHQUNBMEUsRUFBQUMsR0FBQTNFLEdBQ0FoSyxFQUFBd08sS0FLS3hPLEVBQUF5TyxJ
QUNMek8sRUFBQXdPLEVBQUFULE9BQ0FTLEVBQUFKLEVBQUFwRSxHQUFBOEQsR0FBQVUsSUFFQUYs
RUFBQUksRUFBQTFFLEtBQUF3RSxFQUFBRSxFQUFBMUosS0FBQTBKLEVBQUFFLFFBQUFGLEVBQUFH
LFVBQ0tMLElBQUFDLElBQ0xBLEVBQUFWLElBQUFTLEVBQ0FKLEVBQUFwRSxHQUFBeUUsR0FHQSxL
QUFBekUsSUFBQXFFLEdBQ0FyTyxFQUFBb08sRUFBQXBFLE1BQ0EwRSxFQUFBQyxHQUFBM0UsR0FD
QXVFLEVBQUFHLEVBQUExRSxLQUFBcUUsRUFBQXJFLEdBQUEwRSxFQUFBRSxVQU9BLFFBQUFFLElB
QUF6SixFQUFBMEosRUFBQUMsR0FJQSxRQUFBQyxLQUNBRCxFQUFBMUwsTUFBQTRCLEtBQUE3QixX
QUdBakIsRUFBQTRMLEVBQUFELElBQUFrQixHQVBBLEdBQUFqQixHQUNBa0IsRUFBQTdKLEVBQUEw
SixFQVNBL08sR0FBQWtQLEdBRUFsQixFQUFBRixJQUFBbUIsSUFHQTlPLEVBQUErTyxFQUFBbkIs
TUFBQTNOLEVBQUE4TyxFQUFBQyxTQUVBbkIsRUFBQWtCLEVBQ0FsQixFQUFBRCxJQUFBakgsS0FB
QW1JLElBR0FqQixFQUFBRixJQUFBb0IsRUFBQUQsSUFJQWpCLEVBQUFtQixRQUFBLEVBQ0E5SixF
QUFBMEosR0FBQWYsRUFLQSxRQUFBb0IsSUFDQW5DLEVBQ0F6RyxFQUNBd0csR0FLQSxHQUFBcEIs
R0FBQXBGLEVBQUFzRCxRQUFBQyxLQUNBLEtBQUEvSixFQUFBNEwsR0FBQSxDQUdBLEdBQUE1SCxN
QUNBcUwsRUFBQXBDLEVBQUFvQyxNQUNBdEYsRUFBQWtELEVBQUFsRCxLQUNBLElBQUE1SixFQUFB
a1AsSUFBQWxQLEVBQUE0SixHQUNBLE9BQUFwSCxLQUFBaUosR0FBQSxDQUNBLEdBQUEwRCxHQUFB
cEQsR0FBQXZKLEVBaUJBNE0sSUFBQXZMLEVBQUErRixFQUFBcEgsRUFBQTJNLEdBQUEsSUFDQUMs
R0FBQXZMLEVBQUFxTCxFQUFBMU0sRUFBQTJNLEdBQUEsR0FHQSxNQUFBdEwsSUFHQSxRQUFBdUws
SUFDQXZMLEVBQ0F3TCxFQUNBN00sRUFDQTJNLEVBQ0FHLEdBRUEsR0FBQXRQLEVBQUFxUCxHQUFB
LENBQ0EsR0FBQTlNLEVBQUE4TSxFQUFBN00sR0FLQSxNQUpBcUIsR0FBQXJCLEdBQUE2TSxFQUFB
N00sR0FDQThNLFNBQ0FELEdBQUE3TSxJQUVBLENBQ0ssSUFBQUQsRUFBQThNLEVBQUFGLEdBS0ws
TUFKQXRMLEdBQUFyQixHQUFBNk0sRUFBQUYsR0FDQUcsU0FDQUQsR0FBQUYsSUFFQSxFQUdBLFNB
aUJBLFFBQUFJLElBQUF4QyxHQUNBLE9BQUFqTCxHQUFBLEVBQWlCQSxFQUFBaUwsRUFBQWhMLE9B
QXFCRCxJQUN0QyxHQUFBMEIsTUFBQWEsUUFBQTBJLEVBQUFqTCxJQUNBLE1BQUEwQixPQUFBZ00s
VUFBQWhHLE9BQUFyRyxTQUFBNEosRUFHQSxPQUFBQSxHQU9BLFFBQUEwQyxJQUFBMUMsR0FDQSxN
QUFBNU0sR0FBQTRNLElBQ0FQLEVBQUFPLElBQ0F2SixNQUFBYSxRQUFBMEksR0FDQTJDLEdBQUEz
QyxPQUNBaE4sR0FHQSxRQUFBNFAsSUFBQUMsR0FDQSxNQUFBNVAsR0FBQTRQLElBQUE1UCxFQUFB
NFAsRUFBQTVDLE9BQUE5TSxFQUFBMFAsRUFBQXJDLFdBR0EsUUFBQW1DLElBQUEzQyxFQUFBOEMs
R0FDQSxHQUNBL04sR0FBQWtDLEVBQUE4TCxFQURBak0sSUFFQSxLQUFBL0IsRUFBQSxFQUFhQSxF
QUFBaUwsRUFBQWhMLE9BQXFCRCxJQUNsQ2tDLEVBQUErSSxFQUFBakwsR0FDQWpDLEVBQUFtRSxJ
QUFBLGlCQUFBQSxLQUNBOEwsRUFBQWpNLElBQUE5QixPQUFBLEdBRUF5QixNQUFBYSxRQUFBTCxH
QUNBSCxFQUFBOEMsS0FBQXhELE1BQUFVLEVBQUE2TCxHQUFBMUwsR0FBQTZMLEdBQUEsUUFBQS9O
LElBQ0szQixFQUFBNkQsR0FDTDJMLEdBQUFHLEdBSUEsRUFBQTlDLE1BQUE1TCxPQUFBNEMsR0FD
TyxLQUFBQSxHQUVQSCxFQUFBOEMsS0FBQTZGLEVBQUF4SSxJQUdBMkwsR0FBQTNMLElBQUEyTCxH
QUFBRyxHQUVBak0sSUFBQTlCLE9BQUEsR0FBQXlLLEVBQUFzRCxFQUFBOUMsS0FBQWhKLEVBQUFn
SixPQUdBL00sRUFBQThNLEVBQUFnRCxXQUNBL1AsRUFBQWdFLEVBQUE2SSxNQUNBaE4sRUFBQW1F
LEVBQUF4QixNQUNBeEMsRUFBQTZQLEtBQ0E3TCxFQUFBeEIsSUFBQSxVQUFBcU4sRUFBQSxJQUFB
L04sRUFBQSxNQUVBK0IsRUFBQThDLEtBQUEzQyxJQUlBLE9BQUFILEdBS0EsUUFBQW1NLElBQUFD
LEVBQUFDLEdBSUEsTUFIQUQsR0FBQUUsWUFBQUYsRUFBQS9ELFVBQ0ErRCxJQUFBL0QsU0FFQTlM
LEVBQUE2UCxHQUNBQyxFQUFBek0sT0FBQXdNLEdBQ0FBLEVBR0EsUUFBQUcsSUFDQUMsRUFDQXZE
LEVBQ0FJLEVBQ0FILEVBQ0FGLEdBRUEsR0FBQStDLEdBQUFVLElBR0EsT0FGQVYsR0FBQXhDLGFB
QUFpRCxFQUNBVCxFQUFBVyxXQUFvQnpELE9BQUFJLFVBQUFILFdBQUFGLE9BQ3BCK0MsRUFHQSxR
QUFBWSxJQUNBSCxFQUNBSSxFQUNBdkQsR0FFQSxHQUFBak4sRUFBQW9RLEVBQUFsSyxRQUFBbkcs
RUFBQXFRLEVBQUFLLFdBQ0EsTUFBQUwsR0FBQUssU0FHQSxJQUFBMVEsRUFBQXFRLEVBQUFNLFVB
Q0EsTUFBQU4sR0FBQU0sUUFHQSxJQUFBMVEsRUFBQW9RLEVBQUFPLFVBQUE1USxFQUFBcVEsRUFB
QVEsYUFDQSxNQUFBUixHQUFBUSxXQUdBLEtBQUE3USxFQUFBcVEsRUFBQVMsVUFHRyxDQUNILEdB
QUFBLEdBQUFULEVBQUFTLFVBQUE1RCxHQUNBNkQsR0FBQSxFQUVBQyxFQUFBLFdBQ0EsT0FBQWxQ
LEdBQUEsRUFBQW1CLEVBQUE2TixFQUFBL08sT0FBMENELEVBQUFtQixFQUFPbkIsSUFDakRnUCxF
QUFBaFAsR0FBQW1QLGdCQUlBQyxFQUFBck0sRUFBQSxTQUFBaEIsR0FFQXdNLEVBQUFNLFNBQUFY
LEdBQUFuTSxFQUFBNE0sR0FHQU0sR0FDQUMsTUFJQUcsRUFBQXRNLEVBQUEsU0FBQXVNLEdBS0Fw
UixFQUFBcVEsRUFBQUssYUFDQUwsRUFBQWxLLE9BQUEsRUFDQTZLLE9BSUFuTixFQUFBd00sRUFB
QWEsRUFBQUMsRUE2Q0EsT0EzQ0EvUSxHQUFBeUQsS0FDQSxrQkFBQUEsR0FBQXdOLEtBRUF4UixF
QUFBd1EsRUFBQU0sV0FDQTlNLEVBQUF3TixLQUFBSCxFQUFBQyxHQUVPblIsRUFBQTZELEVBQUF5
TixZQUFBLGtCQUFBek4sR0FBQXlOLFVBQUFELE9BQ1B4TixFQUFBeU4sVUFBQUQsS0FBQUgsRUFB
QUMsR0FFQW5SLEVBQUE2RCxFQUFBc0MsU0FDQWtLLEVBQUFLLFVBQUFWLEdBQUFuTSxFQUFBc0Ms
TUFBQXNLLElBR0F6USxFQUFBNkQsRUFBQStNLFdBQ0FQLEVBQUFRLFlBQUFiLEdBQUFuTSxFQUFB
K00sUUFBQUgsR0FDQSxJQUFBNU0sRUFBQTBOLE1BQ0FsQixFQUFBTyxTQUFBLEVBRUFZLFdBQUEs
V0FDQTNSLEVBQUF3USxFQUFBTSxXQUFBOVEsRUFBQXdRLEVBQUFsSyxTQUNBa0ssRUFBQU8sU0FB
QSxFQUNBSSxNQUVhbk4sRUFBQTBOLE9BQUEsTUFJYnZSLEVBQUE2RCxFQUFBNE4sVUFDQUQsV0FB
QSxXQUNBM1IsRUFBQXdRLEVBQUFNLFdBQ0FRLEVBR0EsT0FHV3ROLEVBQUE0TixXQUtYVixHQUFB
LEVBRUFWLEVBQUFPLFFBQ0FQLEVBQUFRLFlBQ0FSLEVBQUFNLFNBL0VBTixFQUFBUyxTQUFBbkss
S0FBQXVHLEdBcUZBLFFBQUF3RSxJQUFBM0UsR0FDQSxHQUFBdkosTUFBQWEsUUFBQTBJLEdBQ0Es
T0FBQWpMLEdBQUEsRUFBbUJBLEVBQUFpTCxFQUFBaEwsT0FBcUJELElBQUEsQ0FDeEMsR0FBQWtD
LEdBQUErSSxFQUFBakwsRUFDQSxJQUFBOUIsRUFBQWdFLElBQUFoRSxFQUFBZ0UsRUFBQW1KLGtC
QUNBLE1BQUFuSixJQVVBLFFBQUEyTixJQUFBOUwsR0FDQUEsRUFBQStMLFFBQUFuUyxPQUFBa0Ms
T0FBQSxNQUNBa0UsRUFBQWdNLGVBQUEsQ0FFQSxJQUFBQyxHQUFBak0sRUFBQXNHLFNBQUE0Rixn
QkFDQUQsSUFDQUUsR0FBQW5NLEVBQUFpTSxHQU1BLFFBQUEzRCxJQUFBSSxFQUFBNUwsRUFBQXNQ
LEdBQ0FBLEVBQ0F4TCxHQUFBeUwsTUFBQTNELEVBQUE1TCxHQUVBOEQsR0FBQTBMLElBQUE1RCxF
QUFBNUwsR0FJQSxRQUFBeVAsSUFBQTdELEVBQUE1TCxHQUNBOEQsR0FBQTRMLEtBQUE5RCxFQUFB
NUwsR0FHQSxRQUFBcVAsSUFDQW5NLEVBQ0FpTSxFQUNBUSxHQUVBN0wsR0FBQVosRUFDQW1JLEdB
QUE4RCxFQUFBUSxNQUErQ25FLEdBQUFpRSxHQUFBdk0sR0E0Ry9DLFFBQUEwTSxJQUNBeEYsRUFD
QUcsR0FFQSxHQUFBc0YsS0FDQSxLQUFBekYsRUFDQSxNQUFBeUYsRUFHQSxRQURBQyxNQUNBM1Es
RUFBQSxFQUFBbUIsRUFBQThKLEVBQUFoTCxPQUFzQ0QsRUFBQW1CLEVBQU9uQixJQUFBLENBQzdD
LEdBQUEySSxHQUFBc0MsRUFBQWpMLEVBR0EsSUFBQTJJLEVBQUF5QyxhQUFBekMsRUFBQWlJLG9C
QUFBeEYsSUFDQXpDLEVBQUFxQyxNQUFBLE1BQUFyQyxFQUFBcUMsS0FBQTZGLEtBVUFGLEVBQUE5
TCxLQUFBOEQsT0FUQSxDQUNBLEdBQUFaLEdBQUFZLEVBQUFxQyxLQUFBNkYsS0FDQUEsRUFBQUgs
RUFBQTNJLEtBQUEySSxFQUFBM0ksTUFDQSxjQUFBWSxFQUFBb0MsSUFDQThGLEVBQUFoTSxLQUFB
eEQsTUFBQXdQLEVBQUFsSSxFQUFBc0MsVUFFQTRGLEVBQUFoTSxLQUFBOEQsSUFVQSxNQUhBZ0ks
R0FBQWxPLE1BQUFxTyxNQUNBSixFQUFBdEcsUUFBQXVHLEdBRUFELEVBR0EsUUFBQUksSUFBQWhE
LEdBQ0EsTUFBQUEsR0FBQXJDLFdBQUEsTUFBQXFDLEVBQUE1QyxLQUdBLFFBQUE2RixJQUNBakYs
RUFDQS9KLEdBRUFBLE9BQ0EsUUFBQS9CLEdBQUEsRUFBaUJBLEVBQUE4TCxFQUFBN0wsT0FBZ0JE
LElBQ2pDMEIsTUFBQWEsUUFBQXVKLEVBQUE5TCxJQUNBK1EsR0FBQWpGLEVBQUE5TCxHQUFBK0Is
R0FFQUEsRUFBQStKLEVBQUE5TCxHQUFBVSxLQUFBb0wsRUFBQTlMLEdBQUFhLEVBR0EsT0FBQWtC
LEdBUUEsUUFBQWlQLElBQUFqTixHQUNBLEdBQUE4RCxHQUFBOUQsRUFBQXNHLFNBR0EzQixFQUFB
YixFQUFBYSxNQUNBLElBQUFBLElBQUFiLEVBQUFvSixTQUFBLENBQ0EsS0FBQXZJLEVBQUEyQixT
QUFBNEcsVUFBQXZJLEVBQUF3SSxTQUNBeEksSUFBQXdJLE9BRUF4SSxHQUFBeUksVUFBQXRNLEtB
QUFkLEdBR0FBLEVBQUFtTixRQUFBeEksRUFDQTNFLEVBQUFxTixNQUFBMUksSUFBQTBJLE1BQUFy
TixFQUVBQSxFQUFBb04sYUFDQXBOLEVBQUFzTixTQUVBdE4sRUFBQXVOLFNBQUEsS0FDQXZOLEVB
QUF3TixVQUFBLEtBQ0F4TixFQUFBeU4saUJBQUEsRUFDQXpOLEVBQUEwTixZQUFBLEVBQ0ExTixF
QUFBMk4sY0FBQSxFQUNBM04sRUFBQTROLG1CQUFBLEVBNkZBLFFBQUFDLElBQ0E3TixFQUNBOE4s
RUFDQUMsR0FFQS9OLEVBQUFnTyxJQUFBRixFQUNBOU4sRUFBQXNHLFNBQUEySCxTQUNBak8sRUFB
QXNHLFNBQUEySCxPQUFBeEQsSUFtQkF5RCxHQUFBbE8sRUFBQSxjQUVBLElBQUFtTyxFQWtDQSxP
QWRBQSxHQUFBLFdBQ0FuTyxFQUFBb08sUUFBQXBPLEVBQUFxTyxVQUFBTixJQUlBL04sRUFBQXVO
LFNBQUEsR0FBQWUsSUFBQXRPLEVBQUFtTyxFQUFBbFEsR0FDQThQLEdBQUEsRUFJQSxNQUFBL04s
RUFBQXVPLFNBQ0F2TyxFQUFBME4sWUFBQSxFQUNBUSxHQUFBbE8sRUFBQSxZQUVBQSxFQUdBLFFB
QUF3TyxJQUNBeE8sRUFDQTZGLEVBQ0FvRyxFQUNBd0MsRUFDQUMsR0FRQSxHQUFBQyxNQUNBRCxH
QUNBMU8sRUFBQXNHLFNBQUFzSSxpQkFDQUgsRUFBQXhILEtBQUE0SCxhQUNBN08sRUFBQThPLGVB
QUFDLEdBa0JBLElBZkEvTyxFQUFBc0csU0FBQTBJLGFBQUFQLEVBQ0F6TyxFQUFBdU8sT0FBQUUs
RUFFQXpPLEVBQUFpUCxTQUNBalAsRUFBQWlQLE9BQUF0SyxPQUFBOEosR0FFQXpPLEVBQUFzRyxT
QUFBc0ksZ0JBQUFGLEVBS0ExTyxFQUFBa1AsT0FBQVQsRUFBQXhILE1BQUF3SCxFQUFBeEgsS0FB
QW9DLE1BQ0FySixFQUFBbVAsV0FBQWxELEVBR0FwRyxHQUFBN0YsRUFBQXNHLFNBQUF2QyxNQUFB
LENBQ0FyQyxHQUFBQyxlQUFBLENBR0EsUUFGQW9DLEdBQUEvRCxFQUFBdUcsT0FDQTZJLEVBQUFw
UCxFQUFBc0csU0FBQStJLGNBQ0FwVCxFQUFBLEVBQW1CQSxFQUFBbVQsRUFBQWxULE9BQXFCRCxJ
QUFBLENBQ3hDLEdBQUFVLEdBQUF5UyxFQUFBblQsRUFDQThILEdBQUFwSCxHQUFBZ0osRUFBQWhK
LEVBQUFxRCxFQUFBc0csU0FBQXZDLE1BQUE4QixFQUFBN0YsR0FFQTBCLEdBQUFDLGVBQUEsRUFF
QTNCLEVBQUFzRyxTQUFBVCxZQUlBLEdBQUFvRyxFQUFBLENBQ0EsR0FBQVEsR0FBQXpNLEVBQUFz
RyxTQUFBNEYsZ0JBQ0FsTSxHQUFBc0csU0FBQTRGLGlCQUFBRCxFQUNBRSxHQUFBbk0sRUFBQWlN
LEVBQUFRLEdBR0FrQyxJQUNBM08sRUFBQXNQLE9BQUE1QyxHQUFBZ0MsRUFBQUQsRUFBQXBILFNB
Q0FySCxFQUFBb0wsZ0JBUUEsUUFBQW1FLElBQUF2UCxHQUNBLEtBQUFBLFFBQUFtTixVQUNBLEdB
QUFuTixFQUFBd04sVUFBdUIsUUFFdkIsVUFHQSxRQUFBZ0MsSUFBQXhQLEVBQUF5UCxHQUNBLEdB
QUFBLEdBRUEsR0FEQXpQLEVBQUF5TixpQkFBQSxFQUNBOEIsR0FBQXZQLEdBQ0EsV0FFRyxJQUFB
QSxFQUFBeU4sZ0JBQ0gsTUFFQSxJQUFBek4sRUFBQXdOLFdBQUEsT0FBQXhOLEVBQUF3TixVQUFB
LENBQ0F4TixFQUFBd04sV0FBQSxDQUNBLFFBQUF2UixHQUFBLEVBQW1CQSxFQUFBK0QsRUFBQW9O
LFVBQUFsUixPQUF5QkQsSUFDNUN1VCxHQUFBeFAsRUFBQW9OLFVBQUFuUixHQUVBaVMsSUFBQWxP
LEVBQUEsY0FJQSxRQUFBMFAsSUFBQTFQLEVBQUF5UCxHQUNBLEtBQUFBLElBQ0F6UCxFQUFBeU4s
aUJBQUEsRUFDQThCLEdBQUF2UCxLQUlBQSxFQUFBd04sV0FBQSxDQUNBeE4sRUFBQXdOLFdBQUEs
Q0FDQSxRQUFBdlIsR0FBQSxFQUFtQkEsRUFBQStELEVBQUFvTixVQUFBbFIsT0FBeUJELElBQzVD
eVQsR0FBQTFQLEVBQUFvTixVQUFBblIsR0FFQWlTLElBQUFsTyxFQUFBLGdCQUlBLFFBQUFrTyxJ
QUFBbE8sRUFBQWdKLEdBQ0EsR0FBQTJHLEdBQUEzUCxFQUFBc0csU0FBQTBDLEVBQ0EsSUFBQTJH
LEVBQ0EsT0FBQTFULEdBQUEsRUFBQTJULEVBQUFELEVBQUF6VCxPQUF3Q0QsRUFBQTJULEVBQU8z
VCxJQUMvQyxJQUNBMFQsRUFBQTFULEdBQUF0QixLQUFBcUYsR0FDTyxNQUFBckIsR0FDUG1CLEVB
QUFuQixFQUFBcUIsRUFBQWdKLEVBQUEsU0FJQWhKLEVBQUFnTSxlQUNBaE0sRUFBQTZQLE1BQUEs
UUFBQTdHLEdBb0JBLFFBQUE4RyxNQUNBdlQsR0FBQXdULEdBQUE3VCxPQUFBOFQsR0FBQTlULE9B
QUEsRUFDQStULE1BSUFDLEdBQUFDLElBQUEsRUFNQSxRQUFBQyxNQUNBRCxJQUFBLENBQ0EsSUFB
QUUsR0FBQWhMLENBY0EsS0FKQTBLLEdBQUFPLEtBQUEsU0FBQW5ULEVBQUFlLEdBQThCLE1BQUFm
LEdBQUFrSSxHQUFBbkgsRUFBQW1ILEtBSTlCOUksR0FBQSxFQUFpQkEsR0FBQXdULEdBQUE3VCxP
QUFzQkssS0FDdkM4VCxFQUFBTixHQUFBeFQsSUFDQThJLEVBQUFnTCxFQUFBaEwsR0FDQTRLLEdB
QUE1SyxHQUFBLEtBQ0FnTCxFQUFBRSxLQW1CQSxJQUFBQyxHQUFBUixHQUFBOUgsUUFDQXVJLEVB
QUFWLEdBQUE3SCxPQUVBNEgsTUFHQVksR0FBQUYsR0FDQUcsR0FBQUYsR0FJQUcsSUFBQTFRLEdB
QUEwUSxVQUNBQSxHQUFBQyxLQUFBLFNBSUEsUUFBQUYsSUFBQVosR0FFQSxJQURBLEdBQUE5VCxH
QUFBOFQsRUFBQTdULE9BQ0FELEtBQUEsQ0FDQSxHQUFBb1UsR0FBQU4sRUFBQTlULEdBQ0ErRCxF
QUFBcVEsRUFBQXJRLEVBQ0FBLEdBQUF1TixXQUFBOEMsR0FBQXJRLEVBQUEwTixZQUNBUSxHQUFB
bE8sRUFBQSxZQVNBLFFBQUE4USxJQUFBOVEsR0FHQUEsRUFBQXdOLFdBQUEsRUFDQXdDLEdBQUFs
UCxLQUFBZCxHQUdBLFFBQUEwUSxJQUFBWCxHQUNBLE9BQUE5VCxHQUFBLEVBQWlCQSxFQUFBOFQs
RUFBQTdULE9BQWtCRCxJQUNuQzhULEVBQUE5VCxHQUFBdVIsV0FBQSxFQUNBZ0MsR0FBQU8sRUFB
QTlULElBQUEsR0FTQSxRQUFBOFUsSUFBQVYsR0FDQSxHQUFBaEwsR0FBQWdMLEVBQUFoTCxFQUNB
LFVBQUE0SyxHQUFBNUssR0FBQSxDQUVBLEdBREE0SyxHQUFBNUssSUFBQSxFQUNBOEssR0FFSyxD
QUlMLElBREEsR0FBQWxVLEdBQUE4VCxHQUFBN1QsT0FBQSxFQUNBRCxFQUFBTSxJQUFBd1QsR0FB
QTlULEdBQUFvSixHQUFBZ0wsRUFBQWhMLElBQ0FwSixHQUVBOFQsSUFBQXRULE9BQUFSLEVBQUEs
SUFBQW9VLE9BUkFOLElBQUFqUCxLQUFBdVAsRUFXQUgsTUFDQUEsSUFBQSxFQUNBYyxHQUFBWixN
QTROQSxRQUFBYSxJQUFBblcsR0FDQW9XLEdBQUFDLFFBQ0FDLEdBQUF0VyxFQUFBb1csSUFHQSxR
QUFBRSxJQUFBdFcsRUFBQXVXLEdBQ0EsR0FBQXBWLEdBQUE0QyxFQUNBeVMsRUFBQTNULE1BQUFh
LFFBQUExRCxFQUNBLEtBQUF3VyxHQUFBL1csRUFBQU8sS0FBQWxCLE9BQUFpSSxhQUFBL0csR0FB
QSxDQUdBLEdBQUFBLEVBQUEwRyxPQUFBLENBQ0EsR0FBQStQLEdBQUF6VyxFQUFBMEcsT0FBQVcs
SUFBQWtELEVBQ0EsSUFBQWdNLEVBQUFwQixJQUFBc0IsR0FDQSxNQUVBRixHQUFBL0ksSUFBQWlK
LEdBRUEsR0FBQUQsRUFFQSxJQURBclYsRUFBQW5CLEVBQUFvQixPQUNBRCxLQUFpQm1WLEdBQUF0
VyxFQUFBbUIsR0FBQW9WLE9BSWpCLEtBRkF4UyxFQUFBakYsT0FBQWlGLEtBQUEvRCxHQUNBbUIs
RUFBQTRDLEVBQUEzQyxPQUNBRCxLQUFpQm1WLEdBQUF0VyxFQUFBK0QsRUFBQTVDLElBQUFvVixJ
QWFqQixRQUFBRyxJQUFBNVEsRUFBQTZRLEVBQUE5VSxHQUNBK1UsR0FBQW5QLElBQUEsV0FDQSxN
QUFBckQsTUFBQXVTLEdBQUE5VSxJQUVBK1UsR0FBQWpQLElBQUEsU0FBQTNILEdBQ0FvRSxLQUFB
dVMsR0FBQTlVLEdBQUE3QixHQUVBbEIsT0FBQUMsZUFBQStHLEVBQUFqRSxFQUFBK1UsSUFHQSxR
QUFBQyxJQUFBM1IsR0FDQUEsRUFBQTRSLFlBQ0EsSUFBQUMsR0FBQTdSLEVBQUFzRyxRQUNBdUws
R0FBQTlOLE9BQW1CK04sR0FBQTlSLEVBQUE2UixFQUFBOU4sT0FDbkI4TixFQUFBRSxTQUFxQkMs
R0FBQWhTLEVBQUE2UixFQUFBRSxTQUNyQkYsRUFBQTVLLEtBQ0FnTCxHQUFBalMsR0FFQXFCLEVB
QUFyQixFQUFBa1MsVUFBeUIsR0FFekJMLEVBQUFNLFVBQXNCQyxHQUFBcFMsRUFBQTZSLEVBQUFN
LFVBQ3RCTixFQUFBUSxPQUFBUixFQUFBUSxRQUFBQyxJQUNBQyxHQUFBdlMsRUFBQTZSLEVBQUFR
LE9BY0EsUUFBQVAsSUFBQTlSLEVBQUF3UyxHQUNBLEdBQUEzTSxHQUFBN0YsRUFBQXNHLFNBQUFU
LGNBQ0E5QixFQUFBL0QsRUFBQXVHLFVBR0ExSCxFQUFBbUIsRUFBQXNHLFNBQUErSSxhQUNBb0Qs
R0FBQXpTLEVBQUFtTixPQUVBekwsSUFBQUMsY0FBQThRLENBa0NBLFFBQUE5VixLQUFBNlYsSUFq
Q0EsU0FBQTdWLEdBQ0FrQyxFQUFBaUMsS0FBQW5FLEVBQ0EsSUFBQTdDLEdBQUE2TCxFQUFBaEos
RUFBQTZWLEVBQUEzTSxFQUFBN0YsRUFxQkFnQyxHQUFBK0IsRUFBQXBILEVBQUE3QyxHQUtBNkMs
SUFBQXFELElBQ0F3UixHQUFBeFIsRUFBQSxTQUFBckQsSUFJQUEsRUFDQStFLElBQUFDLGVBQUEs
RUFHQSxRQUFBc1EsSUFBQWpTLEdBQ0EsR0FBQWlILEdBQUFqSCxFQUFBc0csU0FBQVcsSUFDQUEs
R0FBQWpILEVBQUFrUyxNQUFBLGtCQUFBakwsR0FDQXlMLEdBQUF6TCxFQUFBakgsR0FDQWlILE1B
Q0F4TSxFQUFBd00sS0FDQUEsS0FZQSxLQUpBLEdBQUFwSSxHQUFBakYsT0FBQWlGLEtBQUFvSSxH
QUNBbEQsRUFBQS9ELEVBQUFzRyxTQUFBdkMsTUFFQTlILEdBREErRCxFQUFBc0csU0FBQXlMLFFB
Q0FsVCxFQUFBM0MsUUFDQUQsS0FBQSxDQUNBLEdBQUFVLEdBQUFrQyxFQUFBNUMsRUFTQThILElB
QUFySCxFQUFBcUgsRUFBQXBILElBTUt3QyxFQUFBeEMsSUFDTDZVLEdBQUF4UixFQUFBLFFBQUFy
RCxHQUlBMEUsRUFBQTRGLEdBQUEsR0FHQSxRQUFBeUwsSUFBQXpMLEVBQUFqSCxHQUNBLElBQ0Es
TUFBQWlILEdBQUF0TSxLQUFBcUYsR0FDRyxNQUFBckIsR0FFSCxNQURBbUIsR0FBQW5CLEVBQUFx
QixFQUFBLGNBT0EsUUFBQW9TLElBQUFwUyxFQUFBbVMsR0FFQSxHQUFBUSxHQUFBM1MsRUFBQTRT
LGtCQUFBaFosT0FBQWtDLE9BQUEsS0FFQSxRQUFBYSxLQUFBd1YsR0FBQSxDQUNBLEdBQUFVLEdB
QUFWLEVBQUF4VixHQUNBMkYsRUFBQSxrQkFBQXVRLE9BQUF0USxHQVFBb1EsR0FBQWhXLEdBQUEs
R0FBQTJSLElBQUF0TyxFQUFBc0MsR0FBQXJFLElBQUE2VSxJQUtBblcsSUFBQXFELElBQ0ErUyxH
QUFBL1MsRUFBQXJELEVBQUFrVyxJQVdBLFFBQUFFLElBQUFuUyxFQUFBakUsRUFBQWtXLEdBQ0Es
a0JBQUFBLElBQ0FuQixHQUFBblAsSUFBQXlRLEdBQUFyVyxHQUNBK1UsR0FBQWpQLElBQUF4RSxJ
QUVBeVQsR0FBQW5QLElBQUFzUSxFQUFBdFEsS0FDQSxJQUFBc1EsRUFBQTlWLE1BQ0FpVyxHQUFB
clcsR0FDQWtXLEVBQUF0USxJQUNBdEUsRUFDQXlULEdBQUFqUCxJQUFBb1EsRUFBQXBRLElBQ0Fv
USxFQUFBcFEsSUFDQXhFLEdBV0FyRSxPQUFBQyxlQUFBK0csRUFBQWpFLEVBQUErVSxJQUdBLFFB
QUFzQixJQUFBclcsR0FDQSxrQkFDQSxHQUFBMFQsR0FBQW5SLEtBQUEwVCxtQkFBQTFULEtBQUEw
VCxrQkFBQWpXLEVBQ0EsSUFBQTBULEVBT0EsTUFOQUEsR0FBQTRDLE9BQ0E1QyxFQUFBNkMsV0FF
QXZTLEdBQUFDLFFBQ0F5UCxFQUFBMU4sU0FFQTBOLEVBQUF2VyxPQUtBLFFBQUFrWSxJQUFBaFMs
RUFBQStSLEdBRUEvUixFQUFBc0csU0FBQXZDLEtBQ0EsUUFBQXBILEtBQUFvVixHQUNBL1IsRUFB
QXJELEdBQUEsTUFBQW9WLEVBQUFwVixHQUFBc0IsRUFBQWpCLEVBQUErVSxFQUFBcFYsR0FBQXFE
LEdBbUJBLFFBQUF1UyxJQUFBdlMsRUFBQXFTLEdBRUEsT0FBQTFWLEtBQUEwVixHQUFBLENBQ0Es
R0FBQWMsR0FBQWQsRUFBQTFWLEVBQ0EsSUFBQWdCLE1BQUFhLFFBQUEyVSxHQUNBLE9BQUFsWCxH
QUFBLEVBQXFCQSxFQUFBa1gsRUFBQWpYLE9BQW9CRCxJQUN6Q21YLEdBQUFwVCxFQUFBckQsRUFB
QXdXLEVBQUFsWCxRQUdBbVgsSUFBQXBULEVBQUFyRCxFQUFBd1csSUFLQSxRQUFBQyxJQUNBcFQs
RUFDQXFULEVBQ0FGLEVBQ0FyUCxHQVNBLE1BUEFySixHQUFBMFksS0FDQXJQLEVBQUFxUCxFQUNB
QSxhQUVBLGdCQUFBQSxLQUNBQSxFQUFBblQsRUFBQW1ULElBRUFuVCxFQUFBc1QsT0FBQUQsRUFB
QUYsRUFBQXJQLEdBb0RBLFFBQUF5UCxJQUFBdlQsR0FDQSxHQUFBd1QsR0FBQXhULEVBQUFzRyxT
QUFBa04sT0FDQUEsS0FDQXhULEVBQUF5VCxVQUFBLGtCQUFBRCxHQUNBQSxFQUFBN1ksS0FBQXFG
LEdBQ0F3VCxHQUlBLFFBQUFFLElBQUExVCxHQUNBLEdBQUEyVCxHQUFBQyxHQUFBNVQsRUFBQXNH
LFNBQUFsQyxPQUFBcEUsRUFDQTJULEtBQ0FqUyxHQUFBQyxlQUFBLEVBQ0EvSCxPQUFBaUYsS0FB
QThVLEdBQUFFLFFBQUEsU0FBQWxYLEdBWUFxRixFQUFBaEMsRUFBQXJELEVBQUFnWCxFQUFBaFgs
TUFHQStFLEdBQUFDLGVBQUEsR0FJQSxRQUFBaVMsSUFBQXhQLEVBQUFwRSxHQUNBLEdBQUFvRSxF
QUFBLENBT0EsT0FMQXVQLEdBQUEvWixPQUFBa0MsT0FBQSxNQUNBK0MsRUFBQWlWLEdBQ0FDLFFB
QUFDLFFBQUE1UCxHQUNBeEssT0FBQWlGLEtBQUF1RixHQUVBbkksRUFBQSxFQUFtQkEsRUFBQTRD
LEVBQUEzQyxPQUFpQkQsSUFJcEMsSUFIQSxHQUFBVSxHQUFBa0MsRUFBQTVDLEdBQ0FnWSxFQUFB
N1AsRUFBQXpILEdBQ0F1WCxFQUFBbFUsRUFDQWtVLEdBQUEsQ0FDQSxHQUFBQSxFQUFBVCxXQUFB
USxJQUFBQyxHQUFBVCxVQUFBLENBQ0FFLEVBQUFoWCxHQUFBdVgsRUFBQVQsVUFBQVEsRUFDQSxP
QUVBQyxJQUFBL0csUUFNQSxNQUFBd0csSUFNQSxRQUFBUSxJQUNBM1QsRUFDQXFGLEVBQ0FvQixF
QUNBSSxFQUNBSCxHQUVBLEdBQUFuRCxNQUNBNkIsRUFBQXBGLEVBQUFzRCxRQUFBQyxLQUNBLElB
QUE1SixFQUFBeUwsR0FDQSxPQUFBakosS0FBQWlKLEdBQ0E3QixFQUFBcEgsR0FBQWdKLEVBQUFo
SixFQUFBaUosRUFBQUMsV0FHQTFMLEdBQUE4TSxFQUFBb0MsUUFBNEIrSyxHQUFBclEsRUFBQWtE
LEVBQUFvQyxPQUM1QmxQLEVBQUE4TSxFQUFBbEQsUUFBNEJxUSxHQUFBclEsRUFBQWtELEVBQUFs
RCxNQUk1QixJQUFBc1EsR0FBQXphLE9BQUFrQyxPQUFBdUwsR0FDQWlOLEVBQUEsU0FBQW5YLEVB
QUFlLEVBQUFDLEVBQUFvVyxHQUFpQyxNQUFBQyxJQUFBSCxFQUFBbFgsRUFBQWUsRUFBQUMsRUFB
QW9XLEdBQUEsSUFDakN6TixFQUFBdEcsRUFBQXNELFFBQUFtSyxPQUFBdFQsS0FBQSxLQUFBMlos
R0FDQXJOLE9BQ0FsRCxRQUNBbUQsV0FDQXZDLE9BQUEwQyxFQUNBNEUsVUFBQWhGLEVBQUFtQixP
QUNBcU0sV0FBQWIsR0FBQXBULEVBQUFzRCxRQUFBTSxPQUFBaUQsR0FDQXNGLE1BQUEsV0FBd0Is
TUFBQUQsSUFBQXhGLEVBQUFHLEtBU3hCLE9BUEFQLGFBQUFGLE1BQ0FFLEVBQUErRixrQkFBQXhG
LEVBQ0FQLEVBQUE0TixrQkFBQWxVLEVBQUFzRCxRQUNBbUQsRUFBQTZGLFFBQ0FoRyxFQUFBRyxP
QUFBSCxFQUFBRyxVQUFxQzZGLEtBQUE3RixFQUFBNkYsT0FHckNoRyxFQUdBLFFBQUFzTixJQUFB
dlcsRUFBQXFGLEdBQ0EsT0FBQXZHLEtBQUF1RyxHQUNBckYsRUFBQW9HLEdBQUF0SCxJQUFBdUcs
RUFBQXZHLEdBNEVBLFFBQUFnWSxJQUNBblUsRUFDQXlHLEVBQ0FJLEVBQ0FILEVBQ0FGLEdBRUEs
SUFBQWhOLEVBQUF3RyxHQUFBLENBSUEsR0FBQW9LLEdBQUF2RCxFQUFBZixTQUFBc08sS0FTQSxJ
QU5BcmEsRUFBQWlHLEtBQ0FBLEVBQUFvSyxFQUFBaE4sT0FBQTRDLElBS0Esa0JBQUFBLEdBQUEs
Q0FRQSxHQUFBK0csRUFDQSxJQUFBdk4sRUFBQXdHLEVBQUFxVSxPQUNBdE4sRUFBQS9HLE1BRUF0
RyxNQURBc0csRUFBQW1LLEdBQUFwRCxFQUFBcUQsRUFBQXZELEtBS0EsTUFBQWtELElBQ0FoRCxF
QUNBTixFQUNBSSxFQUNBSCxFQUNBRixFQUtBQyxTQUlBNk4sR0FBQXRVLEdBR0FyRyxFQUFBOE0s
RUFBQThOLFFBQ0FDLEdBQUF4VSxFQUFBc0QsUUFBQW1ELEVBSUEsSUFBQXBCLEdBQUF1RCxHQUFB
bkMsRUFBQXpHLEVBQUF3RyxFQUdBLElBQUE1TSxFQUFBb0csRUFBQXNELFFBQUFtUixZQUNBLE1B
QUFkLElBQUEzVCxFQUFBcUYsRUFBQW9CLEVBQUFJLEVBQUFILEVBS0EsSUFBQStFLEdBQUFoRixF
QUFBbUIsRUFLQSxJQUZBbkIsRUFBQW1CLEdBQUFuQixFQUFBaU8sU0FFQTlhLEVBQUFvRyxFQUFB
c0QsUUFBQW9KLFVBQUEsQ0FLQSxHQUFBSixHQUFBN0YsRUFBQTZGLElBQ0E3RixNQUNBNkYsSUFD
QTdGLEVBQUE2RixRQUtBcUksR0FBQWxPLEVBR0EsSUFBQWpELEdBQUF4RCxFQUFBc0QsUUFBQUUs
TUFBQWdELENBT0EsT0FOQSxJQUFBSixJQUNBLGlCQUFBcEcsRUFBQSxLQUFBd0QsRUFBQSxJQUFB
QSxFQUFBLElBQ0FpRCxNQUFBL00saUJBQUFtTixHQUNLN0csT0FBQXFGLFlBQUFvRyxZQUFBakYs
TUFBQUUsWUFDTEssS0FLQSxRQUFBNk4sSUFDQXRPLEVBQ0FuQyxFQUNBMFEsRUFDQUMsR0FFQSxH
QUFBQyxHQUFBek8sRUFBQVEsaUJBQ0F4RCxHQUNBMFIsY0FBQSxFQUNBN1EsU0FDQWtCLFVBQUEw
UCxFQUFBMVAsVUFDQTRQLGNBQUFGLEVBQUF2TyxJQUNBZ0ksYUFBQWxJLEVBQ0FvRixpQkFBQXFK
LEVBQUF0SixVQUNBMkMsZ0JBQUEyRyxFQUFBck8sU0FDQXdPLFdBQUFMLEdBQUEsS0FDQU0sUUFB
QUwsR0FBQSxNQUdBTSxFQUFBOU8sRUFBQUcsS0FBQTJPLGNBS0EsT0FKQXpiLEdBQUF5YixLQUNB
OVIsRUFBQW1LLE9BQUEySCxFQUFBM0gsT0FDQW5LLEVBQUErUixnQkFBQUQsRUFBQUMsaUJBRUEs
R0FBQU4sR0FBQS9VLEtBQUFzRCxHQUdBLFFBQUFxUixJQUFBbE8sR0FDQUEsRUFBQStCLE9BQ0Ev
QixFQUFBK0IsUUFFQSxRQUFBL00sR0FBQSxFQUFpQkEsRUFBQTZaLEdBQUE1WixPQUF5QkQsSUFB
QSxDQUMxQyxHQUFBVSxHQUFBbVosR0FBQTdaLEdBQ0E4WixFQUFBOU8sRUFBQStCLEtBQUFyTSxH
QUNBcVosRUFBQUMsR0FBQXRaLEVBQ0FzSyxHQUFBK0IsS0FBQXJNLEdBQUFvWixFQUFBRyxHQUFB
RixFQUFBRCxHQUFBQyxHQUlBLFFBQUFFLElBQUFDLEVBQUFDLEdBQ0EsZ0JBQUFqWixFQUFBZSxF
QUFBQyxFQUFBb1csR0FDQTRCLEVBQUFoWixFQUFBZSxFQUFBQyxFQUFBb1csR0FDQTZCLEVBQUFq
WixFQUFBZSxFQUFBQyxFQUFBb1csSUFNQSxRQUFBUyxJQUFBbFIsRUFBQW1ELEdBQ0EsR0FBQW5C
LEdBQUFoQyxFQUFBaVIsT0FBQWpSLEVBQUFpUixNQUFBalAsTUFBQSxRQUNBNEMsRUFBQTVFLEVB
QUFpUixPQUFBalIsRUFBQWlSLE1BQUFyTSxPQUFBLFNBQWdFekIsRUFBQWxELFFBQUFrRCxFQUFB
bEQsV0FBK0IrQixHQUFBbUIsRUFBQThOLE1BQUFqYixLQUMvRixJQUFBc08sR0FBQW5CLEVBQUFt
QixLQUFBbkIsRUFBQW1CLE1BQ0FqTyxHQUFBaU8sRUFBQU0sSUFDQU4sRUFBQU0sSUFBQXpCLEVB
QUE4TixNQUFBc0IsVUFBQTFTLE9BQUF5RSxFQUFBTSxJQUVBTixFQUFBTSxHQUFBekIsRUFBQThO
LE1BQUFzQixTQVdBLFFBQUE3QixJQUNBbk4sRUFDQUwsRUFDQUMsRUFDQUMsRUFDQW9QLEVBQ0FD
LEdBVUEsT0FSQTVZLE1BQUFhLFFBQUF5SSxJQUFBM00sRUFBQTJNLE1BQ0FxUCxFQUFBcFAsRUFD
QUEsRUFBQUQsRUFDQUEsTUFBQS9NLElBRUFFLEVBQUFtYyxLQUNBRCxFQUFBRSxJQUVBQyxHQUFB
cFAsRUFBQUwsRUFBQUMsRUFBQUMsRUFBQW9QLEdBR0EsUUFBQUcsSUFDQXBQLEVBQ0FMLEVBQ0FD
LEVBQ0FDLEVBQ0FvUCxHQUVBLEdBQUFuYyxFQUFBOE0sSUFBQTlNLEVBQUEsRUFBQXFILFFBTUEs
TUFBQWlKLEtBTUEsSUFIQXRRLEVBQUE4TSxJQUFBOU0sRUFBQThNLEVBQUF5UCxNQUNBMVAsRUFB
QUMsRUFBQXlQLEtBRUExUCxFQUVBLE1BQUF5RCxLQWFBOU0sT0FBQWEsUUFBQTBJLElBQ0Esa0JB
QUFBLEdBQUEsS0FFQUQsUUFDQUEsRUFBQTRILGFBQXdCeEksUUFBQWEsRUFBQSxJQUN4QkEsRUFB
QWhMLE9BQUEsR0FFQW9hLElBQUFFLEdBQ0F0UCxFQUFBMEMsR0FBQTFDLEdBQ0dvUCxJQUFBSyxL
QUNIelAsRUFBQXdDLEdBQUF4QyxHQUVBLElBQUFKLEdBQUFVLENBQ0Esb0JBQUFSLEdBQUEsQ0FD
QSxHQUFBeEcsRUFDQWdILEdBQUF0SCxHQUFBMFcsZ0JBQUE1UCxHQUdBRixFQUZBNUcsR0FBQTJX
LGNBQUE3UCxHQUVBLEdBQUFKLElBQ0ExRyxHQUFBNFcscUJBQUE5UCxHQUFBQyxFQUFBQyxNQUNB
aE4sVUFBQW1OLEdBRUtsTixFQUFBcUcsRUFBQTRFLEVBQUFpQyxFQUFBZixTQUFBLGFBQUFVLElB
RUwyTixHQUFBblUsRUFBQXlHLEVBQUFJLEVBQUFILEVBQUFGLEdBS0EsR0FBQUosSUFDQUksRUFB
QUMsRUFBQUMsTUFDQWhOLFVBQUFtTixPQUtBUCxHQUFBNk4sR0FBQTNOLEVBQUFDLEVBQUFJLEVB
QUFILEVBRUEsT0FBQS9NLEdBQUEyTSxJQUNBVSxHQUFhdVAsR0FBQWpRLEVBQUFVLEdBQ2JWLEdB
RUEyRCxLQUlBLFFBQUFzTSxJQUFBalEsRUFBQVUsR0FFQSxHQURBVixFQUFBVSxLQUNBLGtCQUFB
VixFQUFBRSxLQUlBN00sRUFBQTJNLEVBQUFJLFVBQ0EsT0FBQWpMLEdBQUEsRUFBQW1CLEVBQUEw
SixFQUFBSSxTQUFBaEwsT0FBOENELEVBQUFtQixFQUFPbkIsSUFBQSxDQUNyRCxHQUFBMkksR0FB
QWtDLEVBQUFJLFNBQUFqTCxFQUNBOUIsR0FBQXlLLEVBQUFvQyxNQUFBaE4sRUFBQTRLLEVBQUE0
QyxLQUNBdVAsR0FBQW5TLEVBQUE0QyxJQVdBLFFBQUF3UCxJQUNBbGMsRUFDQW1ULEdBRUEsR0FB
QXZRLEdBQUF6QixFQUFBbUIsRUFBQXlCLEVBQUFsQyxDQUNBLElBQUFnQixNQUFBYSxRQUFBMUQs
SUFBQSxnQkFBQUEsR0FFQSxJQURBNEMsRUFBQSxHQUFBQyxPQUFBN0MsRUFBQW9CLFFBQ0FELEVB
QUEsRUFBQW1CLEVBQUF0QyxFQUFBb0IsT0FBK0JELEVBQUFtQixFQUFPbkIsSUFDdEN5QixFQUFB
ekIsR0FBQWdTLEVBQUFuVCxFQUFBbUIsVUFFRyxvQkFBQW5CLEdBRUgsSUFEQTRDLEVBQUEsR0FB
QUMsT0FBQTdDLEdBQ0FtQixFQUFBLEVBQWVBLEVBQUFuQixFQUFTbUIsSUFDeEJ5QixFQUFBekIs
R0FBQWdTLEVBQUFoUyxFQUFBLEVBQUFBLE9BRUcsSUFBQTFCLEVBQUFPLEdBR0gsSUFGQStELEVB
QUFqRixPQUFBaUYsS0FBQS9ELEdBQ0E0QyxFQUFBLEdBQUFDLE9BQUFrQixFQUFBM0MsUUFDQUQs
RUFBQSxFQUFBbUIsRUFBQXlCLEVBQUEzQyxPQUFnQ0QsRUFBQW1CLEVBQU9uQixJQUN2Q1UsRUFB
QWtDLEVBQUE1QyxHQUNBeUIsRUFBQXpCLEdBQUFnUyxFQUFBblQsRUFBQTZCLEtBQUFWLEVBTUEs
T0FIQTlCLEdBQUF1RCxLQUNBLEVBQUF3TSxVQUFBLEdBRUF4TSxFQVFBLFFBQUF1WixJQUNBalQs
RUFDQWtULEVBQ0FuVCxFQUNBb1QsR0FFQSxHQUFBQyxHQUFBbFksS0FBQTRQLGFBQUE5SyxFQUNB
LElBQUFvVCxFQUtBLE1BSkFyVCxTQUNBb1QsSUFDQXBULEVBQUFuRyxPQUE4QnVaLEdBQUFwVCxJ
QUU5QnFULEVBQUFyVCxJQUFBbVQsQ0FFQSxJQUFBRyxHQUFBblksS0FBQW9RLE9BQUF0TCxFQVVB
LE9BQUFxVCxJQUFBSCxFQVNBLFFBQUFJLElBQUFqUyxHQUNBLE1BQUFELEdBQUFsRyxLQUFBb0gs
U0FBQSxVQUFBakIsR0FBQSxJQUFBa1MsR0FRQSxRQUFBQyxJQUNBQyxFQUNBOWEsRUFDQSthLEdB
RUEsR0FBQUMsR0FBQXpYLEdBQUF5WCxTQUFBaGIsSUFBQSthLENBQ0EsT0FBQS9aLE9BQUFhLFFB
QUFtWixJQUNBLElBQUFBLEVBQUFuYixRQUFBaWIsR0FFQUUsSUFBQUYsRUFTQSxRQUFBRyxJQUNB
M1EsRUFDQUQsRUFDQWxOLEVBQ0ErZCxFQUNBQyxHQUVBLEdBQUFoZSxFQUNBLEdBQUFTLEVBQUFU
LEdBS0ssQ0FDTDZELE1BQUFhLFFBQUExRSxLQUNBQSxFQUFBaUUsRUFBQWpFLEdBRUEsSUFBQTBQ
LEVBMEJBLFFBQUE3TSxLQUFBN0MsSUF6QkEsU0FBQTZDLEdBQ0EsR0FDQSxVQUFBQSxHQUNBLFVB
QUFBLEdBQ0FvYixHQUFBcGIsR0FFQTZNLEVBQUF2QyxNQUNTLENBQ1QsR0FBQS9DLEdBQUErQyxF
QUFBb0MsT0FBQXBDLEVBQUFvQyxNQUFBbkYsSUFDQXNGLEdBQUFxTyxHQUFBM1gsR0FBQThYLFlB
QUFoUixFQUFBOUMsRUFBQXZILEdBQ0FzSyxFQUFBZ1IsV0FBQWhSLEVBQUFnUixhQUNBaFIsRUFB
QW9DLFFBQUFwQyxFQUFBb0MsVUFFQSxLQUFBMU0sSUFBQTZNLE1BQ0FBLEVBQUE3TSxHQUFBN0Ms
RUFBQTZDLEdBRUFtYixHQUFBLEVBQ0E3USxFQUFBbUIsS0FBQW5CLEVBQUFtQixRQUNBLFVBQUF6
TCxHQUFBLFNBQUF1YixHQUNBcGUsRUFBQTZDLEdBQUF1YixLQU1BdmIsUUFHQSxNQUFBc0ssR0FR
QSxRQUFBa1IsSUFDQTViLEVBQ0E2YixHQUVBLEdBQUFDLEdBQUFuWixLQUFBb1osYUFBQS9iLEVB
R0EsT0FBQThiLEtBQUFELEVBQ0F6YSxNQUFBYSxRQUFBNlosR0FDQXpRLEdBQUF5USxHQUNBeFIs
RUFBQXdSLElBR0FBLEVBQUFuWixLQUFBb1osYUFBQS9iLEdBQ0EyQyxLQUFBb0gsU0FBQXVQLGdC
QUFBdFosR0FBQTVCLEtBQUF1RSxLQUFBcVosY0FDQUMsR0FBQUgsRUFBQSxhQUFBOWIsR0FBQSxH
QUNBOGIsR0FPQSxRQUFBSSxJQUNBSixFQUNBOWIsRUFDQUksR0FHQSxNQURBNmIsSUFBQUgsRUFB
QSxXQUFBOWIsR0FBQUksRUFBQSxJQUFBQSxFQUFBLFFBQ0EwYixFQUdBLFFBQUFHLElBQ0FILEVB
Q0ExYixFQUNBK2IsR0FFQSxHQUFBL2EsTUFBQWEsUUFBQTZaLEdBQ0EsT0FBQXBjLEdBQUEsRUFB
bUJBLEVBQUFvYyxFQUFBbmMsT0FBaUJELElBQ3BDb2MsRUFBQXBjLElBQUEsZ0JBQUFvYyxHQUFB
cGMsSUFDQTBjLEdBQUFOLEVBQUFwYyxHQUFBVSxFQUFBLElBQUFWLEVBQUF5YyxPQUlBQyxJQUFB
TixFQUFBMWIsRUFBQStiLEdBSUEsUUFBQUMsSUFBQTVPLEVBQUFwTixFQUFBK2IsR0FDQTNPLEVB
QUF0QyxVQUFBLEVBQ0FzQyxFQUFBcE4sTUFDQW9OLEVBQUEyTyxTQUtBLFFBQUFFLElBQUEzUixF
QUFBbk4sR0FDQSxHQUFBQSxFQUNBLEdBQUFXLEVBQUFYLEdBS0ssQ0FDTCxHQUFBc08sR0FBQW5C
LEVBQUFtQixHQUFBbkIsRUFBQW1CLEdBQUF4SyxLQUE0Q3FKLEVBQUFtQixNQUM1QyxRQUFBekws
S0FBQTdDLEdBQUEsQ0FDQSxHQUFBK2UsR0FBQXpRLEVBQUF6TCxHQUNBcVosRUFBQWxjLEVBQUE2
QyxFQUNBeUwsR0FBQXpMLEdBQUFrYyxLQUFBbFYsT0FBQXFTLEVBQUE2QyxHQUFBN0MsUUFJQSxN
QUFBL08sR0FLQSxRQUFBNlIsSUFBQTlZLEdBQ0FBLEVBQUFpUCxPQUFBLEtBQ0FqUCxFQUFBc1ks
YUFBQSxJQUNBLElBQUE3SixHQUFBek8sRUFBQXVPLE9BQUF2TyxFQUFBc0csU0FBQTBJLGFBQ0Er
SixFQUFBdEssS0FBQXBILE9BQ0FySCxHQUFBc1AsT0FBQTVDLEdBQUExTSxFQUFBc0csU0FBQXNJ
LGdCQUFBbUssR0FDQS9ZLEVBQUE4TyxhQUFBQyxHQUtBL08sRUFBQWdaLEdBQUEsU0FBQTdiLEVB
QUFlLEVBQUFDLEVBQUFvVyxHQUFpQyxNQUFBQyxJQUFBeFUsRUFBQTdDLEVBQUFlLEVBQUFDLEVB
QUFvVyxHQUFBLElBR2pDdlUsRUFBQWlaLGVBQUEsU0FBQTliLEVBQUFlLEVBQUFDLEVBQUFvVyxH
QUE2QyxNQUFBQyxJQUFBeFUsRUFBQTdDLEVBQUFlLEVBQUFDLEVBQUFvVyxHQUFBLEdBSTdDLElB
QUEyRSxHQUFBekssS0FBQXhILElBVUFqRixHQUFBaEMsRUFBQSxTQUFBa1osS0FBQTdQLE1BQUEs
U0FDQXJILEVBQUFoQyxFQUFBLGFBQUFBLEVBQUFzRyxTQUFBNEYsaUJBQUEsU0FtSkEsUUFBQWlO
LElBQUFuWixFQUFBOEQsR0FDQSxHQUFBK04sR0FBQTdSLEVBQUFzRyxTQUFBMU0sT0FBQWtDLE9B
QUFrRSxFQUFBb1osWUFBQXRWLFFBRUErTixHQUFBbE4sT0FBQWIsRUFBQWEsT0FDQWtOLEVBQUFo
TSxVQUFBL0IsRUFBQStCLFVBQ0FnTSxFQUFBN0MsYUFBQWxMLEVBQUFrTCxhQUNBNkMsRUFBQTNG
LGlCQUFBcEksRUFBQW9JLGlCQUNBMkYsRUFBQWpELGdCQUFBOUssRUFBQThLLGdCQUNBaUQsRUFB
QTRELGNBQUEzUixFQUFBMlIsY0FDQTVELEVBQUE2RCxXQUFBNVIsRUFBQTRSLFdBQ0E3RCxFQUFB
OEQsUUFBQTdSLEVBQUE2UixRQUNBN1IsRUFBQW1LLFNBQ0E0RCxFQUFBNUQsT0FBQW5LLEVBQUFt
SyxPQUNBNEQsRUFBQWdFLGdCQUFBL1IsRUFBQStSLGlCQUlBLFFBQUFmLElBQUF0VSxHQUNBLEdB
QUFzRCxHQUFBdEQsRUFBQXNELE9BQ0EsSUFBQXRELEVBQUE2WSxNQUFBLENBQ0EsR0FBQUMsR0FB
QXhFLEdBQUF0VSxFQUFBNlksTUFFQSxJQUFBQyxJQURBOVksRUFBQThZLGFBQ0EsQ0FHQTlZLEVB
QUE4WSxjQUVBLElBQUFDLEdBQUFDLEdBQUFoWixFQUVBK1ksSUFDQTNiLEVBQUE0QyxFQUFBaVos
Y0FBQUYsR0FFQXpWLEVBQUF0RCxFQUFBc0QsUUFBQVksRUFBQTRVLEVBQUE5WSxFQUFBaVosZUFD
QTNWLEVBQUFFLE9BQ0FGLEVBQUE0VixXQUFBNVYsRUFBQUUsTUFBQXhELElBSUEsTUFBQXNELEdB
R0EsUUFBQTBWLElBQUFoWixHQUNBLEdBQUFtWixHQUNBQyxFQUFBcFosRUFBQXNELFFBQ0ErVixF
QUFBclosRUFBQWlaLGNBQ0FLLEVBQUF0WixFQUFBdVosYUFDQSxRQUFBcGQsS0FBQWlkLEdBQ0FB
LEVBQUFqZCxLQUFBbWQsRUFBQW5kLEtBQ0FnZCxJQUFzQkEsTUFDdEJBLEVBQUFoZCxHQUFBcWQs
R0FBQUosRUFBQWpkLEdBQUFrZCxFQUFBbGQsR0FBQW1kLEVBQUFuZCxJQUdBLE9BQUFnZCxHQUdB
LFFBQUFLLElBQUFKLEVBQUFDLEVBQUFDLEdBR0EsR0FBQW5jLE1BQUFhLFFBQUFvYixHQUFBLENB
Q0EsR0FBQTViLEtBQ0E4YixHQUFBbmMsTUFBQWEsUUFBQXNiLFNBQ0FELEVBQUFsYyxNQUFBYSxR
QUFBcWIsUUFDQSxRQUFBNWQsR0FBQSxFQUFtQkEsRUFBQTJkLEVBQUExZCxPQUFtQkQsS0FFdEM0
ZCxFQUFBcmQsUUFBQW9kLEVBQUEzZCxLQUFBLEdBQUE2ZCxFQUFBdGQsUUFBQW9kLEVBQUEzZCxJ
QUFBLElBQ0ErQixFQUFBOEMsS0FBQThZLEVBQUEzZCxHQUdBLE9BQUErQixHQUVBLE1BQUE0YixH
QUlBLFFBQUFLLElBQUFuVyxHQU1BNUUsS0FBQWdiLE1BQUFwVyxHQVdBLFFBQUFxVyxJQUFBQyxH
QUNBQSxFQUFBQyxJQUFBLFNBQUFDLEdBQ0EsR0FBQUMsR0FBQXJiLEtBQUFzYixvQkFBQXRiLEtB
QUFzYixxQkFDQSxJQUFBRCxFQUFBL2QsUUFBQThkLElBQUEsRUFDQSxNQUFBcGIsS0FJQSxJQUFB
dWIsR0FBQWpkLEVBQUFILFVBQUEsRUFRQSxPQVBBb2QsR0FBQUMsUUFBQXhiLE1BQ0Esa0JBQUFv
YixHQUFBSyxRQUNBTCxFQUFBSyxRQUFBcmQsTUFBQWdkLEVBQUFHLEdBQ0ssa0JBQUFILElBQ0xB
LEVBQUFoZCxNQUFBLEtBQUFtZCxHQUVBRixFQUFBelosS0FBQXdaLEdBQ0FwYixNQU1BLFFBQUEw
YixJQUFBUixHQUNBQSxFQUFBUyxNQUFBLFNBQUFBLEdBRUEsTUFEQTNiLE1BQUE0RSxRQUFBWSxF
QUFBeEYsS0FBQTRFLFFBQUErVyxHQUNBM2IsTUFNQSxRQUFBNGIsSUFBQVYsR0FNQUEsRUFBQXZG
LElBQUEsQ0FDQSxJQUFBQSxHQUFBLENBS0F1RixHQUFBeGMsT0FBQSxTQUFBNmIsR0FDQUEsT0FD
QSxJQUFBc0IsR0FBQTdiLEtBQ0E4YixFQUFBRCxFQUFBbEcsSUFDQW9HLEVBQUF4QixFQUFBeUIs
UUFBQXpCLEVBQUF5QixTQUNBLElBQUFELEVBQUFELEdBQ0EsTUFBQUMsR0FBQUQsRUFHQSxJQUFB
aFgsR0FBQXlWLEVBQUF6VixNQUFBK1csRUFBQWpYLFFBQUFFLEtBV0FtWCxFQUFBLFNBQUFyWCxH
QUNBNUUsS0FBQWdiLE1BQUFwVyxHQTZDQSxPQTNDQXFYLEdBQUF4UixVQUFBL1AsT0FBQWtDLE9B
QUFpZixFQUFBcFIsV0FDQXdSLEVBQUF4UixVQUFBeVAsWUFBQStCLEVBQ0FBLEVBQUF0RyxRQUNB
c0csRUFBQXJYLFFBQUFZLEVBQ0FxVyxFQUFBalgsUUFDQTJWLEdBRUEwQixFQUFBLE1BQUFKLEVB
S0FJLEVBQUFyWCxRQUFBQyxPQUNBcVgsR0FBQUQsR0FFQUEsRUFBQXJYLFFBQUFxTyxVQUNBa0os
R0FBQUYsR0FJQUEsRUFBQXZkLE9BQUFtZCxFQUFBbmQsT0FDQXVkLEVBQUFOLE1BQUFFLEVBQUFG
LE1BQ0FNLEVBQUFkLElBQUFVLEVBQUFWLElBSUFpQixHQUFBekgsUUFBQSxTQUFBM1AsR0FDQWlY
LEVBQUFqWCxHQUFBNlcsRUFBQTdXLEtBR0FGLElBQ0FtWCxFQUFBclgsUUFBQTRWLFdBQUExVixH
QUFBbVgsR0FNQUEsRUFBQTdCLGFBQUF5QixFQUFBalgsUUFDQXFYLEVBQUExQixnQkFDQTBCLEVB
QUFwQixjQUFBbmMsS0FBaUN1ZCxFQUFBclgsU0FHakNtWCxFQUFBRCxHQUFBRyxFQUNBQSxHQUlB
LFFBQUFDLElBQUFHLEdBQ0EsR0FBQXhYLEdBQUF3WCxFQUFBelgsUUFBQUMsS0FDQSxRQUFBcEgs
S0FBQW9ILEdBQ0F5TixHQUFBK0osRUFBQTVSLFVBQUEsU0FBQWhOLEdBSUEsUUFBQTBlLElBQUFF
LEdBQ0EsR0FBQXBKLEdBQUFvSixFQUFBelgsUUFBQXFPLFFBQ0EsUUFBQXhWLEtBQUF3VixHQUNB
WSxHQUFBd0ksRUFBQTVSLFVBQUFoTixFQUFBd1YsRUFBQXhWLElBTUEsUUFBQTZlLElBQUFwQixH
QUlBa0IsR0FBQXpILFFBQUEsU0FBQTNQLEdBQ0FrVyxFQUFBbFcsR0FBQSxTQUNBbUIsRUFDQW9X
LEdBRUEsTUFBQUEsSUFZQSxjQUFBdlgsR0FBQXpKLEVBQUFnaEIsS0FDQUEsRUFBQXpYLEtBQUF5
WCxFQUFBelgsTUFBQXFCLEVBQ0FvVyxFQUFBdmMsS0FBQTRFLFFBQUE4USxNQUFBaFgsT0FBQTZk
LElBRUEsY0FBQXZYLEdBQUEsa0JBQUF1WCxLQUNBQSxHQUF3QnplLEtBQUF5ZSxFQUFBaFgsT0FB
QWdYLElBRXhCdmMsS0FBQTRFLFFBQUFJLEVBQUEsS0FBQW1CLEdBQUFvVyxFQUNBQSxHQW5CQXZj
LEtBQUE0RSxRQUFBSSxFQUFBLEtBQUFtQixNQTZCQSxRQUFBcVcsSUFBQTdKLEdBQ0EsTUFBQUEs
T0FBQXJSLEtBQUFzRCxRQUFBRSxNQUFBNk4sRUFBQTdLLEtBR0EsUUFBQTJVLElBQUFDLEVBQUE1
WCxHQUNBLE1BQUFyRyxPQUFBYSxRQUFBb2QsR0FDQUEsRUFBQXBmLFFBQUF3SCxJQUFBLEVBQ0cs
Z0JBQUE0WCxHQUNIQSxFQUFBNWYsTUFBQSxLQUFBUSxRQUFBd0gsSUFBQSxJQUNHcEosRUFBQWdo
QixJQUNIQSxFQUFBaGMsS0FBQW9FLEdBTUEsUUFBQTZYLElBQUE5ZSxFQUFBK2UsRUFBQUMsR0FD
QSxPQUFBcGYsS0FBQUksR0FBQSxDQUNBLEdBQUFpZixHQUFBamYsRUFBQUosRUFDQSxJQUFBcWYs
RUFBQSxDQUNBLEdBQUFoWSxHQUFBMFgsR0FBQU0sRUFBQTFVLGlCQUNBdEQsS0FBQStYLEVBQUEv
WCxLQUNBZ1ksSUFBQUYsR0FDQUcsR0FBQUQsR0FFQWpmLEVBQUFKLEdBQUEsUUFNQSxRQUFBc2Ys
SUFBQW5WLEdBQ0FBLEdBQ0FBLEVBQUFvVixrQkFBQUMsV0EyS0EsUUFBQUMsSUFBQXRWLEdBSUEs
SUFIQSxHQUFBRyxHQUFBSCxFQUFBRyxLQUNBb1YsRUFBQXZWLEVBQ0F3VixFQUFBeFYsRUFDQTNN
LEVBQUFtaUIsRUFBQUosb0JBQ0FJLElBQUFKLGtCQUFBak4sT0FDQXFOLEVBQUFyVixPQUNBQSxF
QUFBc1YsR0FBQUQsRUFBQXJWLFFBR0EsTUFBQTlNLEVBQUFraUIsSUFBQTFYLFNBQ0EwWCxFQUFB
cFYsT0FDQUEsRUFBQXNWLEdBQUF0VixFQUFBb1YsRUFBQXBWLE1BR0EsT0FBQXVWLElBQUF2VixF
QUFBd1YsWUFBQXhWLEVBQUF5VixPQUdBLFFBQUFILElBQUEzWCxFQUFBRCxHQUNBLE9BQ0E4WCxZ
QUFBOVksR0FBQWlCLEVBQUE2WCxZQUFBOVgsRUFBQThYLGFBQ0FDLE1BQUF2aUIsRUFBQXlLLEVB
QUE4WCxRQUNBOVgsRUFBQThYLE1BQUEvWCxFQUFBK1gsT0FDQS9YLEVBQUErWCxPQUlBLFFBQUFG
LElBQ0FDLEVBQ0FFLEdBRUEsTUFBQXhpQixHQUFBc2lCLElBQUF0aUIsRUFBQXdpQixHQUNBaFos
R0FBQThZLEVBQUFHLEdBQUFELElBR0EsR0FHQSxRQUFBaFosSUFBQXhHLEVBQUFlLEdBQ0EsTUFB
QWYsR0FBQWUsRUFBQWYsRUFBQSxJQUFBZSxFQUFBZixFQUFBZSxHQUFBLEdBR0EsUUFBQTBlLElB
QUE5aUIsR0FDQSxNQUFBNkQsT0FBQWEsUUFBQTFFLEdBQ0EraUIsR0FBQS9pQixHQUVBUyxFQUFB
VCxHQUNBZ2pCLEdBQUFoakIsR0FFQSxnQkFBQUEsR0FDQUEsRUFHQSxHQUdBLFFBQUEraUIsSUFB
QS9pQixHQUdBLE9BREFpakIsR0FEQS9lLEVBQUEsR0FFQS9CLEVBQUEsRUFBQW1CLEVBQUF0RCxF
QUFBb0MsT0FBbUNELEVBQUFtQixFQUFPbkIsSUFDMUM5QixFQUFBNGlCLEVBQUFILEdBQUE5aUIs
RUFBQW1DLE1BQUEsS0FBQThnQixJQUNBL2UsSUFBZ0JBLEdBQUEsS0FDaEJBLEdBQUErZSxFQUdB
LE9BQUEvZSxHQUdBLFFBQUE4ZSxJQUFBaGpCLEdBQ0EsR0FBQWtFLEdBQUEsRUFDQSxRQUFBckIs
S0FBQTdDLEdBQ0FBLEVBQUE2QyxLQUNBcUIsSUFBZ0JBLEdBQUEsS0FDaEJBLEdBQUFyQixFQUdB
LE9BQUFxQixHQXVDQSxRQUFBNFksSUFBQTVQLEdBQ0EsTUFBQWdXLElBQUFoVyxHQUNBLE1BSUEs
U0FBQUEsRUFDQSxXQURBLEdBTUEsUUFBQWlXLElBQUFqVyxHQUVBLElBQUE1RyxHQUNBLFFBRUEs
SUFBQXlXLEdBQUE3UCxHQUNBLFFBSUEsSUFGQUEsSUFBQTdLLGNBRUEsTUFBQStnQixHQUFBbFcs
R0FDQSxNQUFBa1csSUFBQWxXLEVBRUEsSUFBQThHLEdBQUFxUCxTQUFBM0ksY0FBQXhOLEVBQ0Es
T0FBQUEsR0FBQXhLLFFBQUEsUUFFQTBnQixHQUFBbFcsR0FDQThHLEVBQUFzTCxjQUFBZ0UsT0FB
QUMsb0JBQ0F2UCxFQUFBc0wsY0FBQWdFLE9BQUFFLFlBR0FKLEdBQUFsVyxHQUFBLHFCQUFBcEgs
S0FBQWtPLEVBQUExUyxZQVNBLFFBQUFtaUIsSUFBQXpQLEdBQ0EsbUJBQUFBLEdBQUEsQ0FDQSxH
QUFBMFAsR0FBQUwsU0FBQU0sY0FBQTNQLEVBQ0EsT0FBQTBQLElBSUFMLFNBQUEzSSxjQUFBLE9B
SUEsTUFBQTFHLEdBTUEsUUFBQTRQLElBQUFDLEVBQUE3VyxHQUNBLEdBQUFNLEdBQUErVixTQUFB
M0ksY0FBQW1KLEVBQ0Esa0JBQUFBLEVBQ0F2VyxHQUdBTixFQUFBRyxNQUFBSCxFQUFBRyxLQUFB
b0MsV0FBQW5QLEtBQUE0TSxFQUFBRyxLQUFBb0MsTUFBQXVVLFVBQ0F4VyxFQUFBeVcsYUFBQSx1
QkFFQXpXLEdBR0EsUUFBQTBXLElBQUFDLEVBQUFKLEdBQ0EsTUFBQVIsVUFBQVcsZ0JBQUFFLEdB
QUFELEdBQUFKLEdBR0EsUUFBQU0sSUFBQTlXLEdBQ0EsTUFBQWdXLFVBQUFjLGVBQUE5VyxHQUdB
LFFBQUErVyxJQUFBL1csR0FDQSxNQUFBZ1csVUFBQWUsY0FBQS9XLEdBR0EsUUFBQWdYLElBQUE5
QixFQUFBK0IsRUFBQUMsR0FDQWhDLEVBQUE4QixhQUFBQyxFQUFBQyxHQUdBLFFBQUFDLElBQUF2
VSxFQUFBbkYsR0FDQW1GLEVBQUF1VSxZQUFBMVosR0FHQSxRQUFBMlosSUFBQXhVLEVBQUFuRixH
QUNBbUYsRUFBQXdVLFlBQUEzWixHQUdBLFFBQUF5WCxJQUFBdFMsR0FDQSxNQUFBQSxHQUFBc1Ms
V0FHQSxRQUFBbUMsSUFBQXpVLEdBQ0EsTUFBQUEsR0FBQXlVLFlBR0EsUUFBQWIsSUFBQTVULEdB
Q0EsTUFBQUEsR0FBQTRULFFBR0EsUUFBQWMsSUFBQTFVLEVBQUE1QyxHQUNBNEMsRUFBQTJVLFlB
QUF2WCxFQUdBLFFBQUEwVyxJQUFBOVQsRUFBQXBOLEVBQUE3QixHQUNBaVAsRUFBQThULGFBQUFs
aEIsRUFBQTdCLEdBb0NBLFFBQUE2akIsSUFBQTdYLEVBQUE4WCxHQUNBLEdBQUFqaUIsR0FBQW1L
LEVBQUFHLEtBQUE0WCxHQUNBLElBQUFsaUIsRUFBQSxDQUVBLEdBQUFxRCxHQUFBOEcsRUFBQU8s
UUFDQXdYLEVBQUEvWCxFQUFBb1YsbUJBQUFwVixFQUFBTSxJQUNBMFgsRUFBQTllLEVBQUFzTixL
QUNBc1IsR0FDQWpoQixNQUFBYSxRQUFBc2dCLEVBQUFuaUIsSUFDQVAsRUFBQTBpQixFQUFBbmlC
LEdBQUFraUIsR0FDS0MsRUFBQW5pQixLQUFBa2lCLElBQ0xDLEVBQUFuaUIsT0FBQXpDLElBR0E0
TSxFQUFBRyxLQUFBOFgsU0FDQXBoQixNQUFBYSxRQUFBc2dCLEVBQUFuaUIsSUFFT21pQixFQUFB
bmlCLEdBQUFILFFBQUFxaUIsR0FBQSxHQUVQQyxFQUFBbmlCLEdBQUFtRSxLQUFBK2QsR0FIQUMs
RUFBQW5pQixJQUFBa2lCLEdBTUFDLEVBQUFuaUIsR0FBQWtpQixHQXVCQSxRQUFBRyxJQUFBN2hC
LEVBQUFlLEdBQ0EsTUFDQWYsR0FBQVIsTUFBQXVCLEVBQUF2QixNQUVBUSxFQUFBNkosTUFBQTlJ
LEVBQUE4SSxLQUNBN0osRUFBQXVLLFlBQUF4SixFQUFBd0osV0FDQXZOLEVBQUFnRCxFQUFBOEos
UUFBQTlNLEVBQUErRCxFQUFBK0ksT0FDQWdZLEdBQUE5aEIsRUFBQWUsSUFFQTlELEVBQUErQyxF
QUFBK2hCLHFCQUNBL2hCLEVBQUFvSyxlQUFBckosRUFBQXFKLGNBQ0F2TixFQUFBa0UsRUFBQXFK
LGFBQUFqSCxRQVFBLFFBQUEyZSxJQUFBOWhCLEVBQUFlLEdBQ0EsYUFBQWYsRUFBQTZKLElBQTBC
LFFBQzFCLElBQUEvSyxFQUdBLFFBRkE5QixFQUFBOEIsRUFBQWtCLEVBQUE4SixPQUFBOU0sRUFB
QThCLElBQUFvTixRQUFBcE4sRUFBQWlJLFNBQ0EvSixFQUFBOEIsRUFBQWlDLEVBQUErSSxPQUFB
OU0sRUFBQThCLElBQUFvTixRQUFBcE4sRUFBQWlJLE1BSUEsUUFBQWliLElBQUFqWSxFQUFBa1ks
RUFBQUMsR0FDQSxHQUFBcGpCLEdBQUFVLEVBQ0FkLElBQ0EsS0FBQUksRUFBQW1qQixFQUFvQm5q
QixHQUFBb2pCLElBQWFwakIsRUFDakNVLEVBQUF1SyxFQUFBakwsR0FBQVUsSUFDQXhDLEVBQUF3
QyxLQUFxQmQsRUFBQWMsR0FBQVYsRUFFckIsT0FBQUosR0FnbUJBLFFBQUF5akIsSUFBQUMsRUFB
QXpZLElBQ0F5WSxFQUFBdFksS0FBQXpDLFlBQUFzQyxFQUFBRyxLQUFBekMsYUFDQTRKLEdBQUFt
UixFQUFBelksR0FJQSxRQUFBc0gsSUFBQW1SLEVBQUF6WSxHQUNBLEdBUUFuSyxHQUFBNmlCLEVB
QUFDLEVBUkFDLEVBQUFILElBQUFJLEdBQ0FDLEVBQUE5WSxJQUFBNlksR0FDQUUsRUFBQUMsR0FB
QVAsRUFBQXRZLEtBQUF6QyxXQUFBK2EsRUFBQWxZLFNBQ0EwWSxFQUFBRCxHQUFBaFosRUFBQUcs
S0FBQXpDLFdBQUFzQyxFQUFBTyxTQUVBMlksS0FDQUMsSUFHQSxLQUFBdGpCLElBQUFvakIsR0FD
QVAsRUFBQUssRUFBQWxqQixHQUNBOGlCLEVBQUFNLEVBQUFwakIsR0FDQTZpQixHQVFBQyxFQUFB
UyxTQUFBVixFQUFBMWxCLE1BQ0FxbUIsR0FBQVYsRUFBQSxTQUFBM1ksRUFBQXlZLEdBQ0FFLEVB
QUFwZ0IsS0FBQW9nQixFQUFBcGdCLElBQUErZ0Isa0JBQ0FILEVBQUFuZixLQUFBMmUsS0FUQVUs
R0FBQVYsRUFBQSxPQUFBM1ksRUFBQXlZLEdBQ0FFLEVBQUFwZ0IsS0FBQW9nQixFQUFBcGdCLElB
QUFnaEIsVUFDQUwsRUFBQWxmLEtBQUEyZSxHQVlBLElBQUFPLEVBQUE5akIsT0FBQSxDQUNBLEdB
QUFva0IsR0FBQSxXQUNBLE9BQUFya0IsR0FBQSxFQUFxQkEsRUFBQStqQixFQUFBOWpCLE9BQTJC
RCxJQUNoRGtrQixHQUFBSCxFQUFBL2pCLEdBQUEsV0FBQTZLLEVBQUF5WSxHQUdBRyxHQUNBNVcs
R0FBQWhDLEVBQUFHLEtBQUErQixPQUFBbEMsRUFBQUcsS0FBQStCLFNBQTZELFNBQUFzWCxHQUU3
REEsSUFZQSxHQVJBTCxFQUFBL2pCLFFBQ0E0TSxHQUFBaEMsRUFBQUcsS0FBQStCLE9BQUFsQyxF
QUFBRyxLQUFBK0IsU0FBMkQsdUJBQzNELE9BQUEvTSxHQUFBLEVBQXFCQSxFQUFBZ2tCLEVBQUEv
akIsT0FBOEJELElBQ25Ea2tCLEdBQUFGLEVBQUFoa0IsR0FBQSxtQkFBQTZLLEVBQUF5WSxNQUtB
RyxFQUNBLElBQUEvaUIsSUFBQWtqQixHQUNBRSxFQUFBcGpCLElBRUF3akIsR0FBQU4sRUFBQWxq
QixHQUFBLFNBQUE0aUIsSUFBQUssR0FRQSxRQUFBRSxJQUNBdmIsRUFDQXZFLEdBRUEsR0FBQWhD
LEdBQUFwRSxPQUFBa0MsT0FBQSxLQUNBLEtBQUF5SSxFQUNBLE1BQUF2RyxFQUVBLElBQUEvQixH
QUFBd2pCLENBQ0EsS0FBQXhqQixFQUFBLEVBQWFBLEVBQUFzSSxFQUFBckksT0FBaUJELElBQzlC
d2pCLEVBQUFsYixFQUFBdEksR0FDQXdqQixFQUFBYyxZQUNBZCxFQUFBYyxVQUFBQyxJQUVBeGlC
LEVBQUF5aUIsR0FBQWhCLE1BQ0FBLEVBQUFwZ0IsSUFBQStGLEVBQUFwRixFQUFBc0csU0FBQSxh
QUFBbVosRUFBQXpiLE1BQUEsRUFFQSxPQUFBaEcsR0FHQSxRQUFBeWlCLElBQUFoQixHQUNBLE1B
QUFBLEdBQUFpQixTQUFBakIsRUFBQSxTQUFBN2xCLE9BQUFpRixLQUFBNGdCLEVBQUFjLGVBQTRF
SSxLQUFBLEtBRzVFLFFBQUFSLElBQUFWLEVBQUF6VyxFQUFBbEMsRUFBQXlZLEVBQUFLLEdBQ0Es
R0FBQTlpQixHQUFBMmlCLEVBQUFwZ0IsS0FBQW9nQixFQUFBcGdCLElBQUEySixFQUNBLElBQUFs
TSxFQUNBLElBQ0FBLEVBQUFnSyxFQUFBTSxJQUFBcVksRUFBQTNZLEVBQUF5WSxFQUFBSyxHQUNL
LE1BQUFqaEIsR0FDTG1CLEVBQUFuQixFQUFBbUksRUFBQU8sUUFBQSxhQUFBb1ksRUFBQSxTQUFB
elcsRUFBQSxVQVlBLFFBQUE0WCxJQUFBckIsRUFBQXpZLEdBQ0EsR0FBQStLLEdBQUEvSyxFQUFB
USxnQkFDQSxNQUFBbk4sRUFBQTBYLEtBQUEsSUFBQUEsRUFBQXJSLEtBQUFzRCxRQUFBK2MsY0FH
QTdtQixFQUFBdWxCLEVBQUF0WSxLQUFBb0MsUUFBQXJQLEVBQUE4TSxFQUFBRyxLQUFBb0MsUUFB
QSxDQUdBLEdBQUExTSxHQUFBNkwsRUFDQXBCLEVBQUFOLEVBQUFNLElBQ0EwWixFQUFBdkIsRUFB
QXRZLEtBQUFvQyxVQUNBQSxFQUFBdkMsRUFBQUcsS0FBQW9DLFNBRUFsUCxHQUFBa1AsRUFBQTdI
LFVBQ0E2SCxFQUFBdkMsRUFBQUcsS0FBQW9DLE1BQUF6TCxLQUF3Q3lMLEdBR3hDLEtBQUExTSxJ
QUFBME0sR0FDQWIsRUFBQWEsRUFBQTFNLEdBQ0Fta0IsRUFBQW5rQixLQUNBNkwsR0FDQXVZLEdB
QUEzWixFQUFBekssRUFBQTZMLEVBS0F3WSxLQUFBM1gsRUFBQXZQLFFBQUFnbkIsRUFBQWhuQixP
QUNBaW5CLEdBQUEzWixFQUFBLFFBQUFpQyxFQUFBdlAsTUFFQSxLQUFBNkMsSUFBQW1rQixHQUNB
OW1CLEVBQUFxUCxFQUFBMU0sTUFDQXNrQixHQUFBdGtCLEdBQ0F5SyxFQUFBOFosa0JBQUFDLEdB
QUFDLEdBQUF6a0IsSUFDTzBrQixHQUFBMWtCLElBQ1B5SyxFQUFBa2EsZ0JBQUEza0IsS0FNQSxR
QUFBb2tCLElBQUFqVCxFQUFBblIsRUFBQTdDLEdBQ0F5bkIsR0FBQTVrQixHQUdBNmtCLEdBQUEx
bkIsR0FDQWdVLEVBQUF3VCxnQkFBQTNrQixHQUVBbVIsRUFBQStQLGFBQUFsaEIsS0FFRzBrQixH
QUFBMWtCLEdBQ0htUixFQUFBK1AsYUFBQWxoQixFQUFBNmtCLEdBQUExbkIsSUFBQSxVQUFBQSxF
QUFBLGdCQUNHbW5CLEdBQUF0a0IsR0FDSDZrQixHQUFBMW5CLEdBQ0FnVSxFQUFBb1Qsa0JBQUFD
LEdBQUFDLEdBQUF6a0IsSUFFQW1SLEVBQUEyVCxlQUFBTixHQUFBeGtCLEVBQUE3QyxHQUdBMG5C
LEdBQUExbkIsR0FDQWdVLEVBQUF3VCxnQkFBQTNrQixHQUVBbVIsRUFBQStQLGFBQUFsaEIsRUFB
QTdDLEdBWUEsUUFBQTRuQixJQUFBbkMsRUFBQXpZLEdBQ0EsR0FBQWdILEdBQUFoSCxFQUFBTSxJ
QUNBSCxFQUFBSCxFQUFBRyxLQUNBMGEsRUFBQXBDLEVBQUF0WSxJQUNBLE1BQ0FqTixFQUFBaU4s
RUFBQXdWLGNBQ0F6aUIsRUFBQWlOLEVBQUF5VixTQUNBMWlCLEVBQUEybkIsSUFDQTNuQixFQUFB
Mm5CLEVBQUFsRixjQUNBemlCLEVBQUEybkIsRUFBQWpGLFNBTEEsQ0FZQSxHQUFBa0YsR0FBQXhG
LEdBQUF0VixHQUdBK2EsRUFBQS9ULEVBQUFnVSxrQkFDQTNuQixHQUFBMG5CLEtBQ0FELEVBQUFq
ZSxHQUFBaWUsRUFBQWhGLEdBQUFpRixLQUlBRCxJQUFBOVQsRUFBQWlVLGFBQ0FqVSxFQUFBK1As
YUFBQSxRQUFBK0QsR0FDQTlULEVBQUFpVSxXQUFBSCxJQWFBLFFBQUFJLElBQUFDLEdBb0VBLFFB
QUFDLE1BQ0FDLFdBQUFyaEIsS0FBQW1oQixFQUFBL1osTUFBQWthLEVBQUFubUIsR0FBQW9tQixR
QUNBRCxFQUFBbm1CLEVBQUEsRUFyRUEsR0FRQWtDLEdBQUFta0IsRUFBQXJtQixFQUFBc21CLEVB
QUFKLEVBUkFLLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsRUFB
QSxFQUNBQyxFQUFBLEVBQ0FDLEVBQUEsRUFDQVYsRUFBQSxDQUdBLEtBQUFubUIsRUFBQSxFQUFh
QSxFQUFBZ21CLEVBQUEvbEIsT0FBZ0JELElBRzdCLEdBRkFxbUIsRUFBQW5rQixFQUNBQSxFQUFB
OGpCLEVBQUE3aUIsV0FBQW5ELEdBQ0F1bUIsRUFDQSxLQUFBcmtCLEdBQUEsS0FBQW1rQixJQUF3
Q0UsR0FBQSxPQUNuQyxJQUFBQyxFQUNMLEtBQUF0a0IsR0FBQSxLQUFBbWtCLElBQXdDRyxHQUFB
LE9BQ25DLElBQUFDLEVBQ0wsS0FBQXZrQixHQUFBLEtBQUFta0IsSUFBd0NJLEdBQUEsT0FDbkMs
SUFBQUMsRUFDTCxLQUFBeGtCLEdBQUEsS0FBQW1rQixJQUF3Q0ssR0FBQSxPQUNuQyxJQUNMLE1B
QUF4a0IsR0FDQSxNQUFBOGpCLEVBQUE3aUIsV0FBQW5ELEVBQUEsSUFDQSxNQUFBZ21CLEVBQUE3
aUIsV0FBQW5ELEVBQUEsSUFDQTJtQixHQUFBQyxHQUFBQyxFQVNLLENBQ0wsT0FBQTNrQixHQUNB
LFFBQUFza0IsR0FBQSxDQUFtQyxNQUNuQyxTQUFBRCxHQUFBLENBQW1DLE1BQ25DLFNBQUFFLEdB
QUEsQ0FBMkMsTUFDM0MsU0FBQUksR0FBMkIsTUFDM0IsU0FBQUEsR0FBMkIsTUFDM0IsU0FBQUQs
R0FBNEIsTUFDNUIsU0FBQUEsR0FBNEIsTUFDNUIsVUFBQUQsR0FBMkIsTUFDM0IsVUFBQUEsSUFF
QSxRQUFBemtCLEVBQUEsQ0FJQSxJQUhBLEdBQUF5UixHQUFBM1QsRUFBQSxFQUNBOG1CLE1BQUEs
R0FFY25ULEdBQUEsR0FFZCxPQURBbVQsRUFBQWQsRUFBQWUsT0FBQXBULElBRHNCQSxLQUl0Qm1U
LEdBQUFFLEdBQUFyakIsS0FBQW1qQixLQUNBSixHQUFBLGFBNUJBem9CLEtBQUFxb0IsR0FFQUgs
RUFBQW5tQixFQUFBLEVBQ0FzbUIsRUFBQU4sRUFBQS9aLE1BQUEsRUFBQWpNLEdBQUFvbUIsUUFF
QUgsR0F3Q0EsUUFYQWhvQixLQUFBcW9CLEVBQ0FBLEVBQUFOLEVBQUEvWixNQUFBLEVBQUFqTSxH
QUFBb21CLE9BQ0csSUFBQUQsR0FDSEYsSUFRQUMsRUFDQSxJQUFBbG1CLEVBQUEsRUFBZUEsRUFB
QWttQixFQUFBam1CLE9BQW9CRCxJQUNuQ3NtQixFQUFBVyxHQUFBWCxFQUFBSixFQUFBbG1CLEdB
SUEsT0FBQXNtQixHQUdBLFFBQUFXLElBQUFqQixFQUFBbEcsR0FDQSxHQUFBOWYsR0FBQThmLEVB
QUF2ZixRQUFBLElBQ0EsT0FBQVAsR0FBQSxFQUVBLE9BQUE4ZixFQUFBLE1BQUFrRyxFQUFBLElB
SUEsT0FGQWxHLEVBQUE3VCxNQUFBLEVBQUFqTSxHQUVBLE1BQUFnbUIsRUFBQSxJQURBbEcsRUFB
QTdULE1BQUFqTSxFQUFBLEdBT0EsUUFBQWtuQixJQUFBQyxHQUNBL2lCLFFBQUFDLE1BQUEsbUJB
QUE4aUIsR0FHQSxRQUFBQyxJQUNBQyxFQUNBM21CLEdBRUEsTUFBQTJtQixHQUNBQSxFQUFBem5C
LElBQUEsU0FBQTBuQixHQUFnQyxNQUFBQSxHQUFBNW1CLEtBQWlCb2YsT0FBQSxTQUFBeUgsR0FB
dUIsTUFBQUEsUUFJeEUsUUFBQUMsSUFBQTNWLEVBQUE5SixFQUFBbEssSUFDQWdVLEVBQUEvSixR
QUFBK0osRUFBQS9KLFdBQUFqRCxNQUFzQ2tELE9BQUFsSyxVQUd0QyxRQUFBNHBCLElBQUE1VixF
QUFBOUosRUFBQWxLLElBQ0FnVSxFQUFBekUsUUFBQXlFLEVBQUF6RSxXQUFBdkksTUFBc0NrRCxP
QUFBbEssVUFHdEMsUUFBQTZwQixJQUNBN1YsRUFDQTlKLEVBQ0EwYyxFQUNBNW1CLEVBQ0E4cEIs
RUFDQXJELElBRUF6UyxFQUFBdEosYUFBQXNKLEVBQUF0SixnQkFBQTFELE1BQWdEa0QsT0FBQTBj
LFVBQUE1bUIsUUFBQThwQixNQUFBckQsY0FHaEQsUUFBQXNELElBQ0EvVixFQUNBOUosRUFDQWxL
LEVBQ0F5bUIsRUFDQXVELEVBQ0FDLEdBY0F4RCxLQUFBM1gsZ0JBQ0EyWCxHQUFBM1gsUUFDQTVF
LEVBQUEsSUFBQUEsR0FFQXVjLEtBQUF2aEIsYUFDQXVoQixHQUFBdmhCLEtBQ0FnRixFQUFBLElB
QUFBLEdBR0F1YyxLQUFBMVgsZ0JBQ0EwWCxHQUFBMVgsUUFDQTdFLEVBQUEsSUFBQUEsRUFFQSxJ
QUFBZ2dCLEVBQ0F6RCxNQUFBMEQsY0FDQTFELEdBQUEwRCxPQUNBRCxFQUFBbFcsRUFBQW9XLGVB
QUFwVyxFQUFBb1csa0JBRUFGLEVBQUFsVyxFQUFBa1csU0FBQWxXLEVBQUFrVyxVQUVBLElBQUFH
LElBQW9CcnFCLFFBQUF5bUIsYUFDcEI1USxFQUFBcVUsRUFBQWhnQixFQUVBckcsT0FBQWEsUUFB
QW1SLEdBQ0FtVSxFQUFBblUsRUFBQStLLFFBQUF5SixHQUFBeFUsRUFBQTdPLEtBQUFxakIsR0FF
QUgsRUFBQWhnQixHQURHMkwsRUFDSG1VLEdBQUFLLEVBQUF4VSxNQUFBd1UsR0FFQUEsRUFJQSxR
QUFBQyxJQUNBdFcsRUFDQTlKLEVBQ0FxZ0IsR0FFQSxHQUFBQyxHQUNBQyxHQUFBelcsRUFBQSxJ
QUFBOUosSUFDQXVnQixHQUFBelcsRUFBQSxVQUFBOUosRUFDQSxVQUFBc2dCLEVBQ0EsTUFBQXRD
LElBQUFzQyxFQUNHLFNBQUFELEVBQUEsQ0FDSCxHQUFBRyxHQUFBRCxHQUFBelcsRUFBQTlKLEVB
Q0EsVUFBQXdnQixFQUNBLE1BQUFucEIsTUFBQUMsVUFBQWtwQixJQUtBLFFBQUFELElBQUF6VyxF
QUFBOUosR0FDQSxHQUFBbEosRUFDQSxXQUFBQSxFQUFBZ1QsRUFBQTJXLFNBQUF6Z0IsSUFFQSxP
QURBakksR0FBQStSLEVBQUE0VyxVQUNBem9CLEVBQUEsRUFBQW1CLEVBQUFyQixFQUFBRyxPQUFv
Q0QsRUFBQW1CLEVBQU9uQixJQUMzQyxHQUFBRixFQUFBRSxHQUFBK0gsU0FBQSxDQUNBakksRUFB
QVUsT0FBQVIsRUFBQSxFQUNBLE9BSUEsTUFBQW5CLEdBUUEsUUFBQTZwQixJQUNBN1csRUFDQWhV
LEVBQ0F5bUIsR0FFQSxHQUFBMUIsR0FBQTBCLE1BQ0FxRSxFQUFBL0YsRUFBQStGLE9BQ0F2QyxF
QUFBeEQsRUFBQXdELEtBR0F3QyxFQURBLEtBRUF4QyxLQUNBd0MsRUFDQSw4Q0FJQUQsSUFDQUMs
RUFBQSxNQUFBQSxFQUFBLElBRUEsSUFBQUMsR0FBQUMsR0FBQWpyQixFQUFBK3FCLEVBRUEvVyxH
QUFBaUgsT0FDQWpiLE1BQUEsSUFBQUEsRUFBQSxJQUNBeW9CLFdBQUEsSUFBQXpvQixFQUFBLElB
Q0F1YyxTQUFBLG1CQUF3RHlPLEVBQUEsS0FPeEQsUUFBQUMsSUFDQWpyQixFQUNBZ3JCLEdBRUEs
R0FBQUUsR0FBQUMsR0FBQW5yQixFQUNBLGVBQUFrckIsRUFBQUUsSUFDQXByQixFQUFBLElBQUFn
ckIsRUFFQSxRQUFBRSxFQUFBLFNBQUFBLEVBQUEsU0FBQUYsRUFBQSxJQXlCQSxRQUFBRyxJQUFB
bnFCLEdBS0EsR0FKQWEsR0FBQWIsRUFDQTRMLEdBQUEvSyxHQUFBTyxPQUNBaXBCLEdBQUFDLEdB
QUFDLEdBQUEsRUFFQXZxQixFQUFBMEIsUUFBQSxRQUFBMUIsRUFBQXdxQixZQUFBLEtBQUE1ZSxH
QUFBLEVBQ0EsT0FDQXViLElBQUFubkIsRUFDQW9xQixJQUFBLEtBSUEsT0FBQUssTUFDQUMsR0FB
QUMsS0FFQUMsR0FBQUYsSUFDQUcsR0FBQUgsSUFDSyxLQUFBQSxJQUNMSSxHQUFBSixHQUlBLFFB
Q0F2RCxJQUFBbm5CLEVBQUErcUIsVUFBQSxFQUFBVCxJQUNBRixJQUFBcHFCLEVBQUErcUIsVUFB
QVQsR0FBQSxFQUFBQyxLQUlBLFFBQUFJLE1BQ0EsTUFBQTlwQixJQUFBeUQsYUFBQStsQixJQUdB
LFFBQUFJLE1BQ0EsTUFBQUosS0FBQXplLEdBR0EsUUFBQWdmLElBQUFGLEdBQ0EsWUFBQUEsR0FB
QSxLQUFBQSxFQUdBLFFBQUFJLElBQUFKLEdBQ0EsR0FBQU0sR0FBQSxDQUVBLEtBREFWLEdBQUFE
LElBQ0FJLE1BRUEsR0FEQUMsRUFBQUMsS0FDQUMsR0FBQUYsR0FDQUcsR0FBQUgsT0FLQSxJQUZB
LEtBQUFBLEdBQXVCTSxJQUN2QixLQUFBTixHQUF1Qk0sSUFDdkIsSUFBQUEsRUFBQSxDQUNBVCxH
QUFBRixFQUNBLFFBS0EsUUFBQVEsSUFBQUgsR0FFQSxJQURBLEdBQUFPLEdBQUFQLEdBQ0FELE9B
Q0FDLEVBQUFDLFFBQ0FNLEtBZUEsUUFBQWhSLElBQ0FqSCxFQUNBMlIsRUFDQXVHLEdBRUFDLEdB
QUFELENBQ0EsSUFBQWxzQixHQUFBMmxCLEVBQUEzbEIsTUFDQXltQixFQUFBZCxFQUFBYyxVQUNB
dlosRUFBQThHLEVBQUE5RyxJQUNBOUMsRUFBQTRKLEVBQUEyVyxTQUFBdmdCLElBb0JBLElBQUE0
SixFQUFBckMsVUFHQSxNQUZBa1osSUFBQTdXLEVBQUFoVSxFQUFBeW1CLElBRUEsQ0FDRyxlQUFB
dlosRUFDSGtmLEdBQUFwWSxFQUFBaFUsRUFBQXltQixPQUNHLGNBQUF2WixHQUFBLGFBQUE5QyxF
QUNIaWlCLEdBQUFyWSxFQUFBaFUsRUFBQXltQixPQUNHLGNBQUF2WixHQUFBLFVBQUE5QyxFQUNI
a2lCLEdBQUF0WSxFQUFBaFUsRUFBQXltQixPQUNHLGNBQUF2WixHQUFBLGFBQUFBLEVBQ0hxZixH
QUFBdlksRUFBQWhVLEVBQUF5bUIsT0FDRyxLQUFBcmdCLEdBQUEyVyxjQUFBN1AsR0FHSCxNQUZB
MmQsSUFBQTdXLEVBQUFoVSxFQUFBeW1CLElBRUEsQ0FXQSxVQUdBLFFBQUE0RixJQUNBclksRUFD
QWhVLEVBQ0F5bUIsR0FFQSxHQUFBcUUsR0FBQXJFLEtBQUFxRSxPQUNBMEIsRUFBQWxDLEdBQUF0
VyxFQUFBLGlCQUNBeVksRUFBQW5DLEdBQUF0VyxFQUFBLHNCQUNBMFksRUFBQXBDLEdBQUF0VyxF
QUFBLHVCQUNBMlYsSUFBQTNWLEVBQUEsVUFDQSxpQkFBQWhVLEVBQUEsUUFDQUEsRUFBQSxJQUFB
d3NCLEVBQUEsUUFDQSxTQUFBQyxFQUNBLEtBQUF6c0IsRUFBQSxJQUNBLE9BQUFBLEVBQUEsSUFB
QXlzQixFQUFBLE1BR0ExQyxHQUFBL1YsRUFBQTJZLEdBQ0EsV0FBQTNzQixFQUFBLHlDQUVBeXNC
LEVBQUEsTUFBQUMsRUFBQSxxQ0FFQTVCLEVBQUEsTUFBQTBCLEVBQUEsSUFBQUEsR0FBQSw2Q0FF
d0J4c0IsRUFBQSxtQ0FDWkEsRUFBQSxxREFDRGlyQixHQUFBanJCLEVBQUEsV0FDWCxTQUlBLFFB
QUFzc0IsSUFDQXRZLEVBQ0FoVSxFQUNBeW1CLEdBRUEsR0FBQXFFLEdBQUFyRSxLQUFBcUUsT0FD
QTBCLEVBQUFsQyxHQUFBdFcsRUFBQSxnQkFDQXdZLEdBQUExQixFQUFBLE1BQUEwQixFQUFBLElB
QUFBLEVBQ0E3QyxHQUFBM1YsRUFBQSxnQkFBQWhVLEVBQUEsSUFBQXdzQixFQUFBLEtBQ0F6QyxH
QUFBL1YsRUFBQTJZLEdBQUExQixHQUFBanJCLEVBQUF3c0IsR0FBQSxTQUdBLFFBQUFKLElBQ0Fw
WSxFQUNBaFUsRUFDQXltQixHQUVBLEdBQUFxRSxHQUFBckUsS0FBQXFFLE9BQ0E4QixFQUFBLDBK
QUdBOUIsRUFBQSxzQkFHQStCLEVBQUEsdUJBQUFELEVBQUEsR0FDQUMsS0FBQSxJQUFBNUIsR0FB
QWpyQixFQUZBLDZEQUdBK3BCLEdBQUEvVixFQUFBLFNBQUE2WSxFQUFBLFNBR0EsUUFBQU4sSUFD
QXZZLEVBQ0FoVSxFQUNBeW1CLEdBRUEsR0FBQXJjLEdBQUE0SixFQUFBMlcsU0FBQXZnQixLQUNB
MmEsRUFBQTBCLE1BQ0FxRyxFQUFBL0gsRUFBQStILEtBQ0FoQyxFQUFBL0YsRUFBQStGLE9BQ0F2
QyxFQUFBeEQsRUFBQXdELEtBQ0F3RSxHQUFBRCxHQUFBLFVBQUExaUIsRUFDQXdFLEVBQUFrZSxF
QUNBLFNBQ0EsVUFBQTFpQixFQUNBNGlCLEdBQ0EsUUFFQWpDLEVBQUEscUJBQ0F4QyxLQUNBd0Ms
RUFBQSw4QkFFQUQsSUFDQUMsRUFBQSxNQUFBQSxFQUFBLElBR0EsSUFBQThCLEdBQUE1QixHQUFB
anJCLEVBQUErcUIsRUFDQWdDLEtBQ0FGLEVBQUEscUNBQThDQSxHQUc5Q2xELEdBQUEzVixFQUFB
LFlBQUFoVSxFQUFBLEtBQ0ErcEIsR0FBQS9WLEVBQUFwRixFQUFBaWUsRUFBQSxVQUNBdEUsR0FB
QXVDLElBQ0FmLEdBQUEvVixFQUFBLHlCQVVBLFFBQUFpWixJQUFBM2UsR0FDQSxHQUFBTSxFQUVB
dk8sR0FBQWlPLEVBQUEwZSxPQUVBcGUsRUFBQXNlLEdBQUEsaUJBQ0E1ZSxFQUFBTSxNQUFBL0Us
T0FBQXlFLEVBQUEwZSxJQUFBMWUsRUFBQU0sY0FDQU4sR0FBQTBlLEtBRUEzc0IsRUFBQWlPLEVB
QUFxZSxPQUVBL2QsRUFBQXVlLEdBQUEsaUJBQ0E3ZSxFQUFBTSxNQUFBL0UsT0FBQXlFLEVBQUFx
ZSxJQUFBcmUsRUFBQU0sY0FDQU4sR0FBQXFlLEtBTUEsUUFBQVMsSUFDQXhlLEVBQ0F5SyxFQUNB
L0csRUFDQXhELEVBQ0FDLEdBRUEsR0FBQXVELEVBQUEsQ0FDQSxHQUFBK2EsR0FBQWhVLEVBQ0F6
UyxFQUFBMG1CLEVBQ0FqVSxHQUFBLFNBQUFrVSxHQUlBLFFBSEEsSUFBQWhxQixVQUFBbkIsT0FD
QWlyQixFQUFBRSxHQUNBRixFQUFBN3BCLE1BQUEsS0FBQUQsYUFFQWlxQixHQUFBNWUsRUFBQXlL
LEVBQUF2SyxFQUFBbEksSUFJQTBtQixHQUFBRyxpQkFDQTdlLEVBQ0F5SyxFQUNBcVUsSUFDUzVl
LFVBQUFDLFdBQ1RELEdBSUEsUUFBQTBlLElBQ0E1ZSxFQUNBeUssRUFDQXZLLEVBQ0FsSSxJQUVB
QSxHQUFBMG1CLElBQUFLLG9CQUFBL2UsRUFBQXlLLEVBQUF2SyxHQUdBLFFBQUE4ZSxJQUFBbkks
RUFBQXpZLEdBQ0EsSUFBQTlNLEVBQUF1bEIsRUFBQXRZLEtBQUFtQixNQUFBcE8sRUFBQThNLEVB
QUFHLEtBQUFtQixJQUFBLENBR0EsR0FBQUEsR0FBQXRCLEVBQUFHLEtBQUFtQixPQUNBQyxFQUFB
a1gsRUFBQXRZLEtBQUFtQixNQUNBZ2YsSUFBQXRnQixFQUFBTSxJQUNBMmYsR0FBQTNlLEdBQ0FE
LEdBQUFDLEVBQUFDLEVBQUE2ZSxHQUFBSSxHQUFBeGdCLEVBQUFPLFVBVUEsUUFBQXNnQixJQUFB
cEksRUFBQXpZLEdBQ0EsSUFBQTlNLEVBQUF1bEIsRUFBQXRZLEtBQUFnUixZQUFBamUsRUFBQThN
LEVBQUFHLEtBQUFnUixVQUFBLENBR0EsR0FBQXRiLEdBQUE2TCxFQUNBcEIsRUFBQU4sRUFBQU0s
SUFDQXdnQixFQUFBckksRUFBQXRZLEtBQUFnUixhQUNBbFUsRUFBQStDLEVBQUFHLEtBQUFnUixZ
QUVBOWQsR0FBQTRKLEVBQUF2QyxVQUNBdUMsRUFBQStDLEVBQUFHLEtBQUFnUixTQUFBcmEsS0FB
MkNtRyxHQUczQyxLQUFBcEgsSUFBQWlyQixHQUNBNXRCLEVBQUErSixFQUFBcEgsTUFDQXlLLEVB
QUF6SyxHQUFBLEdBR0EsS0FBQUEsSUFBQW9ILEdBS0EsR0FKQXlFLEVBQUF6RSxFQUFBcEgsR0FJ
QSxnQkFBQUEsR0FBQSxjQUFBQSxJQUNBbUssRUFBQUksV0FBMkJKLEVBQUFJLFNBQUFoTCxPQUFB
LEdBQzNCc00sSUFBQW9mLEVBQUFqckIsSUFHQSxhQUFBQSxFQUFBLENBR0F5SyxFQUFBeWdCLE9B
QUFyZixDQUVBLElBQUFzZixHQUFBOXRCLEVBQUF3TyxHQUFBLEdBQUFqTixPQUFBaU4sRUFDQXVm
LElBQUEzZ0IsRUFBQU4sRUFBQWdoQixLQUNBMWdCLEVBQUF0TixNQUFBZ3VCLE9BR0ExZ0IsR0FB
QXpLLEdBQUE2TCxHQVFBLFFBQUF1ZixJQUNBM2dCLEVBQ0FOLEVBQ0FraEIsR0FFQSxPQUFBNWdC
LEVBQUE2Z0IsWUFDQSxXQUFBbmhCLEVBQUFFLEtBQ0FraEIsR0FBQTlnQixFQUFBNGdCLElBQ0FH
LEdBQUEvZ0IsRUFBQTRnQixJQUlBLFFBQUFFLElBQUE5Z0IsRUFBQTRnQixHQUdBLEdBQUFJLElB
QUEsQ0FHQSxLQUFPQSxFQUFBakwsU0FBQWtMLGdCQUFBamhCLEVBQStDLE1BQUF6SSxJQUN0RCxN
QUFBeXBCLElBQUFoaEIsRUFBQXROLFFBQUFrdUIsRUFHQSxRQUFBRyxJQUFBL2dCLEVBQUF2RSxH
QUNBLEdBQUEvSSxHQUFBc04sRUFBQXROLE1BQ0F5bUIsRUFBQW5aLEVBQUFraEIsV0FDQSxPQUFB
bnVCLEdBQUFvbUIsTUFBQXFFLE9BQ0FwcEIsRUFBQTFCLEtBQUEwQixFQUFBcUgsR0FFQTFJLEVB
QUFvbUIsTUFBQThCLEtBQ0F2b0IsRUFBQXVvQixTQUFBeGYsRUFBQXdmLE9BRUF2b0IsSUFBQStJ
LEVBd0JBLFFBQUEwbEIsSUFBQXRoQixHQUNBLEdBQUF1aEIsR0FBQUMsR0FBQXhoQixFQUFBdWhC
LE1BR0EsT0FBQXZoQixHQUFBeWhCLFlBQ0E5cUIsRUFBQXFKLEVBQUF5aEIsWUFBQUYsR0FDQUEs
RUFJQSxRQUFBQyxJQUFBRSxHQUNBLE1BQUFockIsT0FBQWEsUUFBQW1xQixHQUNBNXFCLEVBQUE0
cUIsR0FFQSxnQkFBQUEsR0FDQUMsR0FBQUQsR0FFQUEsRUFPQSxRQUFBRSxJQUFBL2hCLEVBQUFn
aUIsR0FDQSxHQUNBQyxHQURBL3FCLElBR0EsSUFBQThxQixFQUVBLElBREEsR0FBQXhNLEdBQUF4
VixFQUNBd1YsRUFBQUosbUJBQ0FJLElBQUFKLGtCQUFBak4sT0FDQXFOLEVBQUFyVixPQUFBOGhC
LEVBQUFSLEdBQUFqTSxFQUFBclYsUUFDQXJKLEVBQUFJLEVBQUErcUIsSUFLQUEsRUFBQVIsR0FB
QXpoQixFQUFBRyxRQUNBckosRUFBQUksRUFBQStxQixFQUlBLEtBREEsR0FBQTFNLEdBQUF2VixF
QUNBdVYsSUFBQTFYLFFBQ0EwWCxFQUFBcFYsT0FBQThoQixFQUFBUixHQUFBbE0sRUFBQXBWLFFB
Q0FySixFQUFBSSxFQUFBK3FCLEVBR0EsT0FBQS9xQixHQThDQSxRQUFBZ3JCLElBQUF6SixFQUFB
elksR0FDQSxHQUFBRyxHQUFBSCxFQUFBRyxLQUNBMGEsRUFBQXBDLEVBQUF0WSxJQUVBLE1BQUFq
TixFQUFBaU4sRUFBQXloQixjQUFBMXVCLEVBQUFpTixFQUFBdWhCLFFBQ0F4dUIsRUFBQTJuQixF
QUFBK0csY0FBQTF1QixFQUFBMm5CLEVBQUE2RyxRQURBLENBTUEsR0FBQWhnQixHQUFBeEUsRUFD
QThKLEVBQUFoSCxFQUFBTSxJQUNBNmhCLEVBQUF0SCxFQUFBK0csWUFDQVEsRUFBQXZILEVBQUF3
SCxpQkFBQXhILEVBQUE2RyxVQUdBWSxFQUFBSCxHQUFBQyxFQUVBVixFQUFBQyxHQUFBM2hCLEVB
QUFHLEtBQUF1aEIsVUFLQTFoQixHQUFBRyxLQUFBa2lCLGdCQUFBaHZCLEVBQUFxdUIsRUFBQWhu
QixRQUNBNUQsS0FBZTRxQixHQUNmQSxDQUVBLElBQUFhLEdBQUFSLEdBQUEvaEIsR0FBQSxFQUVB
LEtBQUE5QyxJQUFBb2xCLEdBQ0FwdkIsRUFBQXF2QixFQUFBcmxCLEtBQ0FzbEIsR0FBQXhiLEVB
QUE5SixFQUFBLEdBR0EsS0FBQUEsSUFBQXFsQixJQUNBN2dCLEVBQUE2Z0IsRUFBQXJsQixNQUNB
b2xCLEVBQUFwbEIsSUFFQXNsQixHQUFBeGIsRUFBQTlKLEVBQUEsTUFBQXdFLEVBQUEsR0FBQUEs
SUFnQkEsUUFBQStnQixJQUFBemIsRUFBQThULEdBRUEsR0FBQUEsUUFBQVMsUUFLQSxHQUFBdlUs
RUFBQTBiLFVBQ0E1SCxFQUFBcGxCLFFBQUEsUUFDQW9sQixFQUFBNWxCLE1BQUEsT0FBQTZYLFFB
QUEsU0FBQTFWLEdBQTZDLE1BQUEyUCxHQUFBMGIsVUFBQWxoQixJQUFBbkssS0FFN0MyUCxFQUFB
MGIsVUFBQWxoQixJQUFBc1osT0FFRyxDQUNILEdBQUFwWixHQUFBLEtBQUFzRixFQUFBMmIsYUFB
QSxpQkFDQWpoQixHQUFBaE0sUUFBQSxJQUFBb2xCLEVBQUEsUUFDQTlULEVBQUErUCxhQUFBLFNB
QUFyVixFQUFBb1osR0FBQVMsU0FTQSxRQUFBcUgsSUFBQTViLEVBQUE4VCxHQUVBLEdBQUFBLFFB
QUFTLFFBS0EsR0FBQXZVLEVBQUEwYixVQUNBNUgsRUFBQXBsQixRQUFBLFFBQ0FvbEIsRUFBQTVs
QixNQUFBLE9BQUE2WCxRQUFBLFNBQUExVixHQUE2QyxNQUFBMlAsR0FBQTBiLFVBQUFwdEIsT0FB
QStCLEtBRTdDMlAsRUFBQTBiLFVBQUFwdEIsT0FBQXdsQixHQUVBOVQsRUFBQTBiLFVBQUF0dEIs
UUFDQTRSLEVBQUF3VCxnQkFBQSxhQUVHLENBR0gsSUFGQSxHQUFBOVksR0FBQSxLQUFBc0YsRUFB
QTJiLGFBQUEsa0JBQ0FFLEVBQUEsSUFBQS9ILEVBQUEsSUFDQXBaLEVBQUFoTSxRQUFBbXRCLElB
QUEsR0FDQW5oQixJQUFBb2hCLFFBQUFELEVBQUEsSUFFQW5oQixLQUFBNlosT0FDQTdaLEVBQ0Fz
RixFQUFBK1AsYUFBQSxRQUFBclYsR0FFQXNGLEVBQUF3VCxnQkFBQSxVQU9BLFFBQUF1SSxJQUFB
QyxHQUNBLEdBQUFBLEVBQUEsQ0FJQSxtQkFBQUEsR0FBQSxDQUNBLEdBQUE5ckIsS0FLQSxRQUpB
LElBQUE4ckIsRUFBQUMsS0FDQW5zQixFQUFBSSxFQUFBZ3NCLEdBQUFGLEVBQUE5bEIsTUFBQSxN
QUVBcEcsRUFBQUksRUFBQThyQixHQUNBOXJCLEVBQ0csc0JBQUE4ckIsR0FDSEUsR0FBQUYsT0FE
RyxJQThDSCxRQUFBRyxJQUFBbnRCLEdBQ0FvdEIsR0FBQSxXQUNBQSxHQUFBcHRCLEtBSUEsUUFB
QXF0QixJQUFBcmMsRUFBQThULEdBQ0EsR0FBQXdJLEdBQUF0YyxFQUFBZ1UscUJBQUFoVSxFQUFB
Z1Usc0JBQ0FzSSxHQUFBNXRCLFFBQUFvbEIsR0FBQSxJQUNBd0ksRUFBQXRwQixLQUFBOGdCLEdB
Q0EySCxHQUFBemIsRUFBQThULElBSUEsUUFBQXlJLElBQUF2YyxFQUFBOFQsR0FDQTlULEVBQUFn
VSxvQkFDQTFsQixFQUFBMFIsRUFBQWdVLG1CQUFBRixHQUVBOEgsR0FBQTViLEVBQUE4VCxHQUdB
LFFBQUEwSSxJQUNBeGMsRUFDQXljLEVBQ0FDLEdBRUEsR0FBQTNMLEdBQUE0TCxHQUFBM2MsRUFB
QXljLEdBQ0FybUIsRUFBQTJhLEVBQUEzYSxLQUNBMEgsRUFBQWlULEVBQUFqVCxRQUNBOGUsRUFB
QTdMLEVBQUE2TCxTQUNBLEtBQUF4bUIsRUFBYyxNQUFBc21CLElBQ2QsSUFBQTloQixHQUFBeEUs
SUFBQXltQixHQUFBQyxHQUFBQyxHQUNBQyxFQUFBLEVBQ0FDLEVBQUEsV0FDQWpkLEVBQUEyWixv
QkFBQS9lLEVBQUFzaUIsR0FDQVIsS0FFQVEsRUFBQSxTQUFBcnNCLEdBQ0FBLEVBQUFpQyxTQUFB
a04sS0FDQWdkLEdBQUFKLEdBQ0FLLElBSUFwZixZQUFBLFdBQ0FtZixFQUFBSixHQUNBSyxLQUVH
bmYsRUFBQSxHQUNIa0MsRUFBQXlaLGlCQUFBN2UsRUFBQXNpQixHQUtBLFFBQUFQLElBQUEzYyxF
QUFBeWMsR0FDQSxHQVFBcm1CLEdBUkErbUIsRUFBQTdOLE9BQUE4TixpQkFBQXBkLEdBQ0FxZCxF
QUFBRixFQUFBRyxHQUFBLFNBQUFwdkIsTUFBQSxNQUNBcXZCLEVBQUFKLEVBQUFHLEdBQUEsWUFB
QXB2QixNQUFBLE1BQ0FzdkIsRUFBQUMsR0FBQUosRUFBQUUsR0FDQUcsRUFBQVAsRUFBQVEsR0FB
QSxTQUFBenZCLE1BQUEsTUFDQTB2QixFQUFBVCxFQUFBUSxHQUFBLFlBQUF6dkIsTUFBQSxNQUNB
MnZCLEVBQUFKLEdBQUFDLEVBQUFFLEdBR0E5ZixFQUFBLEVBQ0E4ZSxFQUFBLENBOEJBLE9BNUJB
SCxLQUFBSSxHQUNBVyxFQUFBLElBQ0FwbkIsRUFBQXltQixHQUNBL2UsRUFBQTBmLEVBQ0FaLEVB
QUFXLEVBQUFudkIsUUFFR3F1QixJQUFBcUIsR0FDSEQsRUFBQSxJQUNBem5CLEVBQUEwbkIsR0FD
QWhnQixFQUFBK2YsRUFDQWpCLEVBQUFnQixFQUFBeHZCLFNBR0EwUCxFQUFBM1EsS0FBQThILElB
QUF1b0IsRUFBQUssR0FDQXpuQixFQUFBMEgsRUFBQSxFQUNBMGYsRUFBQUssRUFDQWhCLEdBQ0Fp
QixHQUNBLEtBQ0FsQixFQUFBeG1CLEVBQ0FBLElBQUF5bUIsR0FDQVUsRUFBQW52QixPQUNBd3ZC
LEVBQUF4dkIsT0FDQSxJQU1BZ0ksT0FDQTBILFVBQ0E4ZSxZQUNBbUIsYUFOQTNuQixJQUFBeW1C
LElBQ0FtQixHQUFBbHNCLEtBQUFxckIsRUFBQUcsR0FBQSxjQVNBLFFBQUFHLElBQUFRLEVBQUFD
LEdBRUEsS0FBQUQsRUFBQTd2QixPQUFBOHZCLEVBQUE5dkIsUUFDQTZ2QixJQUFBcG9CLE9BQUFv
b0IsRUFHQSxPQUFBOXdCLE1BQUE4SCxJQUFBekYsTUFBQSxLQUFBMHVCLEVBQUFud0IsSUFBQSxT
QUFBMFksRUFBQXRZLEdBQ0EsTUFBQWd3QixJQUFBMVgsR0FBQTBYLEdBQUFGLEVBQUE5dkIsT0FJ
QSxRQUFBZ3dCLElBQUFDLEdBQ0EsV0FBQUMsT0FBQUQsRUFBQWhrQixNQUFBLE9BS0EsUUFBQWtr
QixJQUFBdGxCLEVBQUF1bEIsR0FDQSxHQUFBdmUsR0FBQWhILEVBQUFNLEdBR0FqTixHQUFBMlQs
RUFBQXdlLFlBQ0F4ZSxFQUFBd2UsU0FBQUMsV0FBQSxFQUNBemUsRUFBQXdlLFdBR0EsSUFBQXJs
QixHQUFBNGlCLEdBQUEvaUIsRUFBQUcsS0FBQXVsQixXQUNBLEtBQUF4eUIsRUFBQWlOLEtBS0E5
TSxFQUFBMlQsRUFBQTJlLFdBQUEsSUFBQTNlLEVBQUE0ZSxTQUFBLENBNEJBLElBeEJBLEdBQUEz
QyxHQUFBOWlCLEVBQUE4aUIsSUFDQTdsQixFQUFBK0MsRUFBQS9DLEtBQ0F5b0IsRUFBQTFsQixF
QUFBMGxCLFdBQ0FDLEVBQUEzbEIsRUFBQTJsQixhQUNBQyxFQUFBNWxCLEVBQUE0bEIsaUJBQ0FD
LEVBQUE3bEIsRUFBQTZsQixZQUNBQyxFQUFBOWxCLEVBQUE4bEIsY0FDQUMsRUFBQS9sQixFQUFB
K2xCLGtCQUNBQyxFQUFBaG1CLEVBQUFnbUIsWUFDQWIsRUFBQW5sQixFQUFBbWxCLE1BQ0FjLEVB
QUFqbUIsRUFBQWltQixXQUNBQyxFQUFBbG1CLEVBQUFrbUIsZUFDQUMsRUFBQW5tQixFQUFBbW1C
LGFBQ0FDLEVBQUFwbUIsRUFBQW9tQixPQUNBQyxFQUFBcm1CLEVBQUFxbUIsWUFDQUMsRUFBQXRt
QixFQUFBc21CLGdCQUNBQyxFQUFBdm1CLEVBQUF1bUIsU0FNQW5tQixFQUFBb21CLEdBQ0FDLEVB
QUFELEdBQUFsZixPQUNBbWYsS0FBQS9vQixRQUNBK29CLElBQUEvb0IsT0FDQTBDLEVBQUFxbUIs
RUFBQXJtQixPQUdBLElBQUFzbUIsSUFBQXRtQixFQUFBcUcsYUFBQTVHLEVBQUE4bUIsWUFFQSxL
QUFBRCxHQUFBTixHQUFBLEtBQUFBLEVBQUEsQ0FJQSxHQUFBUSxHQUFBRixHQUFBYixFQUNBQSxF
QUNBSCxFQUNBbUIsRUFBQUgsR0FBQVgsRUFDQUEsRUFDQUgsRUFDQWtCLEVBQUFKLEdBQUFaLEVB
Q0FBLEVBQ0FILEVBRUFvQixFQUFBTCxFQUNBUCxHQUFBSCxFQUNBQSxFQUNBZ0IsRUFBQU4sR0FD
QSxrQkFBQU4sS0FDQWpCLEVBQ0E4QixFQUFBUCxFQUNBTCxHQUFBSixFQUNBQSxFQUNBaUIsRUFB
QVIsRUFDQUosR0FBQUosRUFDQUEsRUFFQWlCLEVBQUE1eUIsRUFDQWpCLEVBQUFpekIsR0FDQUEs
RUFBQXBCLE1BQ0FvQixHQU9BYSxHQUFBLElBQUF0RSxJQUFBL0ksR0FDQXNOLEVBQUFDLEdBQUFO
LEdBRUF6RCxFQUFBMWMsRUFBQTJlLFNBQUF6dEIsRUFBQSxXQUNBcXZCLElBQ0FoRSxHQUFBdmMs
RUFBQWlnQixHQUNBMUQsR0FBQXZjLEVBQUFnZ0IsSUFFQXRELEVBQUErQixXQUNBOEIsR0FDQWhF
LEdBQUF2YyxFQUFBK2YsR0FFQU0sS0FBQXJnQixJQUVBb2dCLEtBQUFwZ0IsR0FFQUEsRUFBQTJl
LFNBQUEsTUFHQTNsQixHQUFBRyxLQUFBdW5CLE1BRUExbEIsR0FBQWhDLEVBQUFHLEtBQUErQixP
QUFBbEMsRUFBQUcsS0FBQStCLFNBQTJELG9CQUMzRCxHQUFBckUsR0FBQW1KLEVBQUF1TyxXQUNB
b1MsRUFBQTlwQixLQUFBK3BCLFVBQUEvcEIsRUFBQStwQixTQUFBNW5CLEVBQUFuSyxJQUNBOHhC
LElBQ0FBLEVBQUF6bkIsTUFBQUYsRUFBQUUsS0FDQXluQixFQUFBcm5CLElBQUFrbEIsVUFFQW1D
LEVBQUFybkIsSUFBQWtsQixXQUVBMkIsS0FBQW5nQixFQUFBMGMsS0FLQXdELEtBQUFsZ0IsR0FD
QXVnQixJQUNBbEUsR0FBQXJjLEVBQUErZixHQUNBMUQsR0FBQXJjLEVBQUFnZ0IsR0FDQTdELEdB
QUEsV0FDQUUsR0FBQXJjLEVBQUFpZ0IsR0FDQTFELEdBQUF2YyxFQUFBK2YsR0FDQXJELEVBQUEr
QixXQUFBK0IsSUFDQUssR0FBQVAsR0FDQXppQixXQUFBNmUsRUFBQTRELEdBRUE5RCxHQUFBeGMs
RUFBQTVKLEVBQUFzbUIsT0FNQTFqQixFQUFBRyxLQUFBdW5CLE9BQ0FuQyxPQUNBNEIsS0FBQW5n
QixFQUFBMGMsSUFHQTZELEdBQUFDLEdBQ0E5RCxNQUlBLFFBQUFvRSxJQUFBOW5CLEVBQUErbkIs
R0FzRUEsUUFBQUMsS0FFQXRFLEVBQUErQixZQUlBemxCLEVBQUFHLEtBQUF1bkIsUUFDQTFnQixF
QUFBdU8sV0FBQXFTLFdBQUE1Z0IsRUFBQXVPLFdBQUFxUyxjQUE2RDVuQixFQUFBLEtBQUFBLEdB
RTdEaW9CLEtBQUFqaEIsR0FDQXVnQixJQUNBbEUsR0FBQXJjLEVBQUFraEIsR0FDQTdFLEdBQUFy
YyxFQUFBbWhCLEdBQ0FoRixHQUFBLFdBQ0FFLEdBQUFyYyxFQUFBb2hCLEdBQ0E3RSxHQUFBdmMs
RUFBQWtoQixHQUNBeEUsRUFBQStCLFdBQUErQixJQUNBSyxHQUFBUSxHQUNBeGpCLFdBQUE2ZSxF
QUFBMkUsR0FFQTdFLEdBQUF4YyxFQUFBNUosRUFBQXNtQixPQUtBb0UsS0FBQTlnQixFQUFBMGMs
R0FDQTZELEdBQUFDLEdBQ0E5RCxLQWhHQSxHQUFBMWMsR0FBQWhILEVBQUFNLEdBR0FqTixHQUFB
MlQsRUFBQTJlLFlBQ0EzZSxFQUFBMmUsU0FBQUYsV0FBQSxFQUNBemUsRUFBQTJlLFdBR0EsSUFB
QXhsQixHQUFBNGlCLEdBQUEvaUIsRUFBQUcsS0FBQXVsQixXQUNBLElBQUF4eUIsRUFBQWlOLEdB
Q0EsTUFBQTRuQixJQUlBLEtBQUExMEIsRUFBQTJULEVBQUF3ZSxXQUFBLElBQUF4ZSxFQUFBNGUs
U0FBQSxDQUlBLEdBQUEzQyxHQUFBOWlCLEVBQUE4aUIsSUFDQTdsQixFQUFBK0MsRUFBQS9DLEtB
Q0E4cUIsRUFBQS9uQixFQUFBK25CLFdBQ0FFLEVBQUFqb0IsRUFBQWlvQixhQUNBRCxFQUFBaG9C
LEVBQUFnb0IsaUJBQ0FGLEVBQUE5bkIsRUFBQThuQixZQUNBSCxFQUFBM25CLEVBQUEybkIsTUFD
QVEsRUFBQW5vQixFQUFBbW9CLFdBQ0FDLEVBQUFwb0IsRUFBQW9vQixlQUNBQyxFQUFBcm9CLEVB
QUFxb0IsV0FDQTlCLEVBQUF2bUIsRUFBQXVtQixTQUVBYSxHQUFBLElBQUF0RSxJQUFBL0ksR0FD
QXNOLEVBQUFDLEdBQUFLLEdBRUFPLEVBQUEzekIsRUFDQWpCLEVBQUFpekIsR0FDQUEsRUFBQW9C
LE1BQ0FwQixHQU9BaEQsRUFBQTFjLEVBQUF3ZSxTQUFBdHRCLEVBQUEsV0FDQThPLEVBQUF1TyxZ
QUFBdk8sRUFBQXVPLFdBQUFxUyxXQUNBNWdCLEVBQUF1TyxXQUFBcVMsU0FBQTVuQixFQUFBbkss
S0FBQSxNQUVBMHhCLElBQ0FoRSxHQUFBdmMsRUFBQW9oQixHQUNBN0UsR0FBQXZjLEVBQUFtaEIs
SUFFQXpFLEVBQUErQixXQUNBOEIsR0FDQWhFLEdBQUF2YyxFQUFBa2hCLEdBRUFLLEtBQUF2aEIs
S0FFQStnQixJQUNBTyxLQUFBdGhCLElBRUFBLEVBQUF3ZSxTQUFBLE1BR0FnRCxHQUNBQSxFQUFB
UixHQUVBQSxLQW9EQSxRQUFBSCxJQUFBN3pCLEdBQ0Esc0JBQUFBLEtBQUFXLE1BQUFYLEdBU0Es
UUFBQXl6QixJQUFBenhCLEdBQ0EsR0FBQTlDLEVBQUE4QyxHQUNBLFFBRUEsSUFBQXl5QixHQUFB
enlCLEVBQUFpTCxHQUNBLE9BQUE1TixHQUFBbzFCLEdBRUFoQixHQUNBNXdCLE1BQUFhLFFBQUEr
d0IsR0FDQUEsRUFBQSxHQUNBQSxJQUdBenlCLEVBQUFTLFNBQUFULEVBQUFaLFFBQUEsRUFJQSxR
QUFBc3pCLElBQUFoTSxFQUFBMWMsSUFDQSxJQUFBQSxFQUFBRyxLQUFBdW5CLE1BQ0FwQyxHQUFB
dGxCLEdBbUdBLFFBQUEyb0IsSUFBQTNoQixFQUFBNGhCLEVBQUExdkIsR0FDQSxHQUFBbEcsR0FB
QTQxQixFQUFBNTFCLE1BQ0E2MUIsRUFBQTdoQixFQUFBOFAsUUFDQSxLQUFBK1IsR0FBQWh5QixN
QUFBYSxRQUFBMUUsR0FBQSxDQVNBLE9BREEwakIsR0FBQW9TLEVBQ0EzekIsRUFBQSxFQUFBbUIs
RUFBQTBRLEVBQUFoSyxRQUFBNUgsT0FBd0NELEVBQUFtQixFQUFPbkIsSUFFL0MsR0FEQTJ6QixF
QUFBOWhCLEVBQUFoSyxRQUFBN0gsR0FDQTB6QixFQUNBblMsRUFBQXplLEVBQUFqRixFQUFBKzFC
LEdBQUFELEtBQUEsRUFDQUEsRUFBQXBTLGVBQ0FvUyxFQUFBcFMsZ0JBR0EsSUFBQXBmLEVBQUF5
eEIsR0FBQUQsR0FBQTkxQixHQUlBLFlBSEFnVSxFQUFBZ2lCLGdCQUFBN3pCLElBQ0E2UixFQUFB
Z2lCLGNBQUE3ekIsR0FNQTB6QixLQUNBN2hCLEVBQUFnaUIsZUFBQSxJQUlBLFFBQUFELElBQUFE
LEdBQ0EsZ0JBQUFBLEdBQ0FBLEVBQUEvSCxPQUNBK0gsRUFBQTkxQixNQUdBLFFBQUFpMkIsSUFB
QXB4QixHQUNBQSxFQUFBaUMsT0FBQXFuQixXQUFBLEVBR0EsUUFBQStILElBQUFyeEIsR0FFQUEs
RUFBQWlDLE9BQUFxbkIsWUFDQXRwQixFQUFBaUMsT0FBQXFuQixXQUFBLEVBQ0FnSSxHQUFBdHhC
LEVBQUFpQyxPQUFBLFVBR0EsUUFBQXF2QixJQUFBbmlCLEVBQUE1SixHQUNBLEdBQUF2RixHQUFB
d2UsU0FBQStTLFlBQUEsYUFDQXZ4QixHQUFBd3hCLFVBQUFqc0IsR0FBQSxNQUNBNEosRUFBQXNp
QixjQUFBenhCLEdBTUEsUUFBQTB4QixJQUFBdnBCLEdBQ0EsT0FBQUEsRUFBQW9WLG1CQUFBcFYs
RUFBQUcsTUFBQUgsRUFBQUcsS0FBQXVsQixXQUVBMWxCLEVBREF1cEIsR0FBQXZwQixFQUFBb1Ys
a0JBQUFqTixRQXlGQSxRQUFBcWhCLElBQUF4cEIsR0FDQSxHQUFBeXBCLEdBQUF6cEIsS0FBQVEs
Z0JBQ0EsT0FBQWlwQixNQUFBL3ZCLEtBQUFzRCxRQUFBb0osU0FDQW9qQixHQUFBemtCLEdBQUEw
a0IsRUFBQXJwQixXQUVBSixFQUlBLFFBQUEwcEIsSUFBQXBtQixHQUNBLEdBQUFuRCxNQUNBbkQs
RUFBQXNHLEVBQUE5RCxRQUVBLFFBQUEzSixLQUFBbUgsR0FBQStCLFVBQ0FvQixFQUFBdEssR0FB
QXlOLEVBQUF6TixFQUlBLElBQUFzUCxHQUFBbkksRUFBQW9JLGdCQUNBLFFBQUF1a0IsS0FBQXhr
QixHQUNBaEYsRUFBQWhELEdBQUF3c0IsSUFBQXhrQixFQUFBd2tCLEVBRUEsT0FBQXhwQixHQUdB
LFFBQUF5cEIsSUFBQXBjLEVBQUFxYyxHQUNBLG9CQUFBL3dCLEtBQUErd0IsRUFBQTNwQixLQUNB
LE1BQUFzTixHQUFBLGNBQ0F2USxNQUFBNHNCLEVBQUFycEIsaUJBQUF6QixZQUtBLFFBQUErcUIs
SUFBQTlwQixHQUNBLEtBQUFBLElBQUFuQyxRQUNBLEdBQUFtQyxFQUFBRyxLQUFBdWxCLFdBQ0Es
U0FLQSxRQUFBcUUsSUFBQWpzQixFQUFBa3NCLEdBQ0EsTUFBQUEsR0FBQW4wQixNQUFBaUksRUFB
QWpJLEtBQUFtMEIsRUFBQTlwQixNQUFBcEMsRUFBQW9DLElBR0EsUUFBQWtZLElBQUFuVixHQUNB
LE1BQUFBLEdBQUFyQyxXQUFBcUMsRUFBQXhDLGFBb1FBLFFBQUF3cEIsSUFBQTV5QixHQUVBQSxF
QUFBaUosSUFBQTRwQixTQUNBN3lCLEVBQUFpSixJQUFBNHBCLFVBR0E3eUIsRUFBQWlKLElBQUFx
bEIsVUFDQXR1QixFQUFBaUosSUFBQXFsQixXQUlBLFFBQUF3RSxJQUFBOXlCLEdBQ0FBLEVBQUE4
SSxLQUFBaXFCLE9BQUEveUIsRUFBQWlKLElBQUErcEIsd0JBR0EsUUFBQUMsSUFBQWp6QixHQUNB
LEdBQUFrekIsR0FBQWx6QixFQUFBOEksS0FBQXFxQixJQUNBSixFQUFBL3lCLEVBQUE4SSxLQUFB
aXFCLE9BQ0FLLEVBQUFGLEVBQUFHLEtBQUFOLEVBQUFNLEtBQ0FDLEVBQUFKLEVBQUFLLElBQUFS
LEVBQUFRLEdBQ0EsSUFBQUgsR0FBQUUsRUFBQSxDQUNBdHpCLEVBQUE4SSxLQUFBMHFCLE9BQUEs
Q0FDQSxJQUFBekYsR0FBQS90QixFQUFBaUosSUFBQW9oQixLQUNBMEQsR0FBQTBGLFVBQUExRixF
QUFBMkYsZ0JBQUEsYUFBQU4sRUFBQSxNQUFBRSxFQUFBLE1BQ0F2RixFQUFBNEYsbUJBQUEsTUFt
RkEsUUFBQUMsSUFDQTVxQixFQUNBNnFCLEdBRUEsR0FBQUMsR0FBQUQsRUFBQUUsR0FBQUYsR0FB
QUcsRUFDQSxJQUFBRixFQUFBcnlCLEtBQUF1SCxHQUFBLENBTUEsSUFIQSxHQUVBVixHQUFBbEss
RUFGQTYxQixLQUNBQyxFQUFBSixFQUFBSSxVQUFBLEVBRUE1ckIsRUFBQXdyQixFQUFBSyxLQUFB
bnJCLElBQUEsQ0FDQTVLLEVBQUFrSyxFQUFBbEssTUFFQUEsRUFBQTgxQixHQUNBRCxFQUFBdHhC
LEtBQUF6RixLQUFBQyxVQUFBNkwsRUFBQWUsTUFBQW1xQixFQUFBOTFCLElBR0EsSUFBQTBsQixH
QUFBRCxHQUFBdmIsRUFBQSxHQUFBNGIsT0FDQStQLEdBQUF0eEIsS0FBQSxNQUFBbWhCLEVBQUEs
S0FDQW9RLEVBQUE5MUIsRUFBQWtLLEVBQUEsR0FBQXZLLE9BS0EsTUFIQW0yQixHQUFBbHJCLEVB
QUFqTCxRQUNBazJCLEVBQUF0eEIsS0FBQXpGLEtBQUFDLFVBQUE2TCxFQUFBZSxNQUFBbXFCLEtB
RUFELEVBQUF6UixLQUFBLE1BS0EsUUFBQTRSLElBQUF6a0IsRUFBQWhLLEdBQ0EsR0FDQTJZLElB
REEzWSxFQUFBaWdCLEtBQ0FRLEdBQUF6VyxFQUFBLFNBWUEyTyxLQUNBM08sRUFBQTJPLFlBQUFw
aEIsS0FBQUMsVUFBQW1oQixHQUVBLElBQUErVixHQUFBcE8sR0FBQXRXLEVBQUEsV0FDQTBrQixL
QUNBMWtCLEVBQUEwa0IsZ0JBSUEsUUFBQUMsSUFBQTNrQixHQUNBLEdBQUE3RyxHQUFBLEVBT0Es
T0FOQTZHLEdBQUEyTyxjQUNBeFYsR0FBQSxlQUFBNkcsRUFBQSxpQkFFQUEsRUFBQTBrQixlQUNB
dnJCLEdBQUEsU0FBQTZHLEVBQUEsa0JBRUE3RyxFQVdBLFFBQUF5ckIsSUFBQTVrQixFQUFBaEss
R0FDQSxHQUNBNGtCLElBREE1a0IsRUFBQWlnQixLQUNBUSxHQUFBelcsRUFBQSxTQUNBLElBQUE0
YSxFQUFBLENBYUE1YSxFQUFBNGEsWUFBQXJ0QixLQUFBQyxVQUFBc3RCLEdBQUFGLElBR0EsR0FB
QWlLLEdBQUF2TyxHQUFBdFcsRUFBQSxXQUNBNmtCLEtBQ0E3a0IsRUFBQTZrQixnQkFJQSxRQUFB
QyxJQUFBOWtCLEdBQ0EsR0FBQTdHLEdBQUEsRUFPQSxPQU5BNkcsR0FBQTRhLGNBQ0F6aEIsR0FB
QSxlQUFBNkcsRUFBQSxpQkFFQUEsRUFBQTZrQixlQUNBMXJCLEdBQUEsVUFBQTZHLEVBQUEsbUJB
RUE3RyxFQWdCQSxRQUFBRSxJQUFBMkcsRUFBQTJSLEdBQ0FBLEVBQUEzbEIsT0FDQTJwQixHQUFB
M1YsRUFBQSxvQkFBQTJSLEVBQUEsV0FNQSxRQUFBb1QsSUFBQS9rQixFQUFBMlIsR0FDQUEsRUFB
QTNsQixPQUNBMnBCLEdBQUEzVixFQUFBLGtCQUFBMlIsRUFBQSxXQTBIQSxRQUFBcVQsSUFBQWg1
QixFQUFBaTVCLEdBQ0EsR0FBQUMsR0FBQUQsRUFBQUUsR0FBQUMsRUFDQSxPQUFBcDVCLEdBQUE4
dkIsUUFBQW9KLEVBQUEsU0FBQXZzQixHQUE2QyxNQUFBMHNCLElBQUExc0IsS0FHN0MsUUFBQTJz
QixJQUFBUCxFQUFBL3VCLEdBOEhBLFFBQUF1dkIsR0FBQXQ0QixHQUNBd0IsR0FBQXhCLEVBQ0E4
M0IsSUFBQWhOLFVBQUE5cUIsR0F1RUEsUUFBQXU0QixHQUFBM1YsRUFBQWxnQixFQUFBc3RCLEdB
Q0EsR0FBQXVHLEdBQUFpQyxDQVNBLElBUkEsTUFBQTkxQixJQUF3QkEsRUFBQWxCLEdBQ3hCLE1B
QUF3dUIsSUFBc0JBLEVBQUF4dUIsR0FFdEJvaEIsSUFDQTRWLEVBQUE1VixFQUFBeGhCLGVBSUF3
aEIsRUFDQSxJQUFBMlQsRUFBQWtDLEVBQUF0M0IsT0FBQSxFQUFrQ28xQixHQUFBLEdBQ2xDa0Ms
RUFBQWxDLEdBQUFtQyxnQkFBQUYsRUFENENqQyxTQU81Q0EsR0FBQSxDQUdBLElBQUFBLEdBQUEs
R0FFQSxPQUFBcjFCLEdBQUF1M0IsRUFBQXQzQixPQUFBLEVBQW9DRCxHQUFBcTFCLEVBQVVyMUIs
SUFTOUM2SCxFQUFBaW5CLEtBQ0FqbkIsRUFBQWluQixJQUFBeUksRUFBQXYzQixHQUFBK0ssSUFB
QXZKLEVBQUFzdEIsRUFLQXlJLEdBQUF0M0IsT0FBQW8xQixFQUNBb0MsRUFBQXBDLEdBQUFrQyxF
QUFBbEMsRUFBQSxHQUFBdHFCLFFBQ0ssT0FBQXVzQixFQUNMenZCLEVBQUFyRyxPQUNBcUcsRUFB
QXJHLE1BQUFrZ0IsTUFBQSxFQUFBbGdCLEVBQUFzdEIsR0FFSyxNQUFBd0ksSUFDTHp2QixFQUFB
ckcsT0FDQXFHLEVBQUFyRyxNQUFBa2dCLE1BQUEsRUFBQWxnQixFQUFBc3RCLEdBRUFqbkIsRUFB
QWluQixLQUNBam5CLEVBQUFpbkIsSUFBQXBOLEVBQUFsZ0IsRUFBQXN0QixJQWpQQSxJQU5BLEdB
S0E5Z0IsR0FBQXlwQixFQUxBRixLQUNBRyxFQUFBN3ZCLEVBQUE2dkIsV0FDQUMsRUFBQTl2QixF
QUFBK3ZCLFlBQUFDLEdBQ0FDLEVBQUFqd0IsRUFBQWt3QixrQkFBQUYsR0FDQXYzQixFQUFBLEVB
RUFzMkIsR0FBQSxDQUdBLEdBRkE1b0IsRUFBQTRvQixFQUVBYSxHQUFBTyxHQUFBUCxHQWdGSyxD
QUNMLEdBQUFRLEdBQUEsRUFDQUMsRUFBQVQsRUFBQXYzQixjQUNBaTRCLEVBQUFDLEdBQUFGLEtB
QUFFLEdBQUFGLEdBQUEsR0FBQUcsUUFBQSxrQkFBQUgsRUFBQSxnQkFDQUksRUFBQTFCLEVBQUFq
SixRQUFBd0ssRUFBQSxTQUFBSSxFQUFBcnRCLEVBQUFzdEIsR0FhQSxNQVpBUCxHQUFBTyxFQUFB
djRCLE9BQ0ErM0IsR0FBQUUsSUFBQSxhQUFBQSxJQUNBaHRCLElBQ0F5aUIsUUFBQSwyQkFDQUEs
UUFBQSxtQ0FFQThLLEdBQUFQLEVBQUFodEIsS0FDQUEsSUFBQWUsTUFBQSxJQUVBcEUsRUFBQTZ3
QixPQUNBN3dCLEVBQUE2d0IsTUFBQXh0QixHQUVBLElBRUE1SyxJQUFBczJCLEVBQUEzMkIsT0FB
QXE0QixFQUFBcjRCLE9BQ0EyMkIsRUFBQTBCLEVBQ0FqQixFQUFBYSxFQUFBNTNCLEVBQUEyM0Is
RUFBQTMzQixPQXJHQSxDQUNBLEdBQUFxNEIsR0FBQS9CLEVBQUFyMkIsUUFBQSxJQUNBLFFBQUFv
NEIsRUFBQSxDQUVBLEdBQUFDLEdBQUFqMUIsS0FBQWl6QixHQUFBLENBQ0EsR0FBQWlDLEdBQUFq
QyxFQUFBcjJCLFFBQUEsU0FFQSxJQUFBczRCLEdBQUEsR0FDQWh4QixFQUFBaXhCLG1CQUNBanhC
LEVBQUErd0IsUUFBQWhDLEVBQUFoTixVQUFBLEVBQUFpUCxJQUVBekIsRUFBQXlCLEVBQUEsRUFD
QSxXQUtBLEdBQUFFLEdBQUFwMUIsS0FBQWl6QixHQUFBLENBQ0EsR0FBQW9DLEdBQUFwQyxFQUFB
cjJCLFFBQUEsS0FFQSxJQUFBeTRCLEdBQUEsR0FDQTVCLEVBQUE0QixFQUFBLEVBQ0EsV0FLQSxH
QUFBQyxHQUFBckMsRUFBQXBzQixNQUFBMHVCLEdBQ0EsSUFBQUQsRUFBQSxDQUNBN0IsRUFBQTZC
LEVBQUEsR0FBQWg1QixPQUNBLFVBSUEsR0FBQWs1QixHQUFBdkMsRUFBQXBzQixNQUFBZ3VCLEdB
Q0EsSUFBQVcsRUFBQSxDQUNBLEdBQUFDLEdBQUE5NEIsQ0FDQTgyQixHQUFBK0IsRUFBQSxHQUFB
bDVCLFFBQ0FvM0IsRUFBQThCLEVBQUEsR0FBQUMsRUFBQTk0QixFQUNBLFVBSUEsR0FBQSs0QixH
QThFQSxXQUNBLEdBQUE3M0IsR0FBQW8xQixFQUFBcHNCLE1BQUE4dUIsR0FDQSxJQUFBOTNCLEVB
QUEsQ0FDQSxHQUFBZ0osSUFDQWtYLFFBQUFsZ0IsRUFBQSxHQUNBNEwsU0FDQTVMLE1BQUFsQixF
QUVBODJCLEdBQUE1MUIsRUFBQSxHQUFBdkIsT0FFQSxLQURBLEdBQUE2dUIsR0FBQXlLLElBQ0F6
SyxFQUFBOEgsRUFBQXBzQixNQUFBZ3ZCLE9BQUFELEVBQUEzQyxFQUFBcHNCLE1BQUFpdkIsTUFD
QXJDLEVBQUFtQyxFQUFBLEdBQUF0NUIsUUFDQXVLLEVBQUE0QyxNQUFBdkksS0FBQTAwQixFQUVB
LElBQUF6SyxFQUlBLE1BSEF0a0IsR0FBQWt2QixXQUFBNUssRUFBQSxHQUNBc0ksRUFBQXRJLEVB
QUEsR0FBQTd1QixRQUNBdUssRUFBQXNrQixJQUFBeHVCLEVBQ0FrSyxLQS9GQSxJQUFBNnVCLEVB
QUEsRUFvR0EsU0FBQTd1QixHQUNBLEdBQUFrWCxHQUFBbFgsRUFBQWtYLFFBQ0FnWSxFQUFBbHZC
LEVBQUFrdkIsVUFFQWhDLEtBQ0EsTUFBQUQsR0FBQWtDLEdBQUFqWSxJQUNBMlYsRUFBQUksR0FF
QUssRUFBQXBXLElBQUErVixJQUFBL1YsR0FDQTJWLEVBQUEzVixHQVFBLFFBSkFrWSxHQUFBakMs
RUFBQWpXLE1BQUFnWSxFQUVBdjRCLEVBQUFxSixFQUFBNEMsTUFBQW5OLE9BQ0FtTixFQUFBLEdB
QUExTCxPQUFBUCxHQUNBbkIsRUFBQSxFQUFtQkEsRUFBQW1CLEVBQU9uQixJQUFBLENBQzFCLEdB
QUF3ZSxHQUFBaFUsRUFBQTRDLE1BQUFwTixFQUVBNjVCLE1BQUEsSUFBQXJiLEVBQUEsR0FBQWpl
LFFBQUEsUUFDQSxLQUFBaWUsRUFBQSxVQUE2QkEsR0FBQSxHQUM3QixLQUFBQSxFQUFBLFVBQTZC
QSxHQUFBLEdBQzdCLEtBQUFBLEVBQUEsVUFBNkJBLEdBQUEsR0FFN0IsSUFBQTNnQixHQUFBMmdC
LEVBQUEsSUFBQUEsRUFBQSxJQUFBQSxFQUFBLE1BQ0FwUixHQUFBcE4sSUFDQStILEtBQUF5VyxF
QUFBLEdBQ0EzZ0IsTUFBQWc1QixHQUNBaDVCLEVBQ0FnSyxFQUFBaXZCLHVCQUtBOEMsSUFDQXJD
LEVBQUExeUIsTUFBa0JrRyxJQUFBMlcsRUFBQThWLGNBQUE5VixFQUFBeGhCLGNBQUFrTixVQUNs
QnFxQixFQUFBL1YsR0FHQTdaLEVBQUFyRyxPQUNBcUcsRUFBQXJHLE1BQUFrZ0IsRUFBQXRVLEVB
QUF3c0IsRUFBQXB2QixFQUFBaEosTUFBQWdKLEVBQUFza0IsTUE1SUF1SyxHQUNBWixHQUFBaEIs
RUFBQWIsSUFDQVEsRUFBQSxFQUVBLFdBSUEsR0FBQWxzQixPQUFBLEdBQUE0dUIsTUFBQSxHQUFB
dFEsTUFBQSxFQUNBLElBQUFtUCxHQUFBLEdBRUEsSUFEQW1CLEVBQUFsRCxFQUFBM3FCLE1BQUEw
c0IsS0FFQUgsR0FBQTcwQixLQUFBbTJCLElBQ0FSLEdBQUEzMUIsS0FBQW0yQixJQUNBbEIsR0FB
QWoxQixLQUFBbTJCLElBQ0FmLEdBQUFwMUIsS0FBQW0yQixLQUdBdFEsRUFBQXNRLEVBQUF2NUIs
UUFBQSxRQUNBLElBQ0FvNEIsR0FBQW5QLEVBQ0FzUSxFQUFBbEQsRUFBQTNxQixNQUFBMHNCLEVB
RUF6dEIsR0FBQTByQixFQUFBaE4sVUFBQSxFQUFBK08sR0FDQXZCLEVBQUF1QixHQUdBQSxFQUFB
LElBQ0F6dEIsRUFBQTByQixFQUNBQSxFQUFBLElBR0EvdUIsRUFBQTZ3QixPQUFBeHRCLEdBQ0Fy
RCxFQUFBNndCLE1BQUF4dEIsR0EwQkEsR0FBQTByQixJQUFBNW9CLEVBQUEsQ0FDQW5HLEVBQUE2
d0IsT0FBQTd3QixFQUFBNndCLE1BQUE5QixFQUlBLFFBS0FTLElBNEpBLFFBQUEwQyxJQUNBQyxF
QUNBbnlCLEdBNkJBLFFBQUFveUIsR0FBQUMsR0FFQUEsRUFBQUMsTUFDQUMsR0FBQSxHQUVBQyxH
QUFBSCxFQUFBbnZCLE9BQ0F1dkIsR0FBQSxHQWpDQUMsR0FBQTF5QixFQUFBaWdCLE1BQUFaLEdB
RUFtVCxHQUFBeHlCLEVBQUEyeUIsVUFBQTNDLEdBQ0E0QyxHQUFBNXlCLEVBQUFrVSxhQUFBOGIs
R0FDQTZDLEdBQUE3eUIsRUFBQThTLGlCQUFBa2QsR0FFQThDLEdBQUF2VCxHQUFBdmYsRUFBQXdm
LFFBQUEsaUJBQ0F1VCxHQUFBeFQsR0FBQXZmLEVBQUF3ZixRQUFBLG9CQUNBd1QsR0FBQXpULEdB
QUF2ZixFQUFBd2YsUUFBQSxxQkFFQTBPLEdBQUFsdUIsRUFBQWt1QixVQUVBLElBRUErRSxHQUNB
QyxFQUhBeEQsS0FDQXlELEdBQUEsSUFBQW56QixFQUFBbXpCLG1CQUdBWixHQUFBLEVBQ0FFLEdB
QUEsQ0EyTkEsT0F2TUFuRCxJQUFBNkMsR0FDQWxTLEtBQUF5UyxHQUNBN0MsV0FBQTd2QixFQUFB
NnZCLFdBQ0FFLFdBQUEvdkIsRUFBQSt2QixXQUNBRyxpQkFBQWx3QixFQUFBa3dCLGlCQUNBakIs
cUJBQUFqdkIsRUFBQWl2QixxQkFDQWdDLGtCQUFBanhCLEVBQUFvekIsU0FDQXo1QixNQUFBLFNB
QUF1SixFQUFBcUMsRUFBQXdzQixHQUdBLEdBQUFydUIsR0FBQXd2QixLQUFBeHZCLElBQUFtdkIs
R0FBQTN2QixFQUlBZ2dCLEtBQUEsUUFBQXhmLElBQ0E2QixFQUFBOHRCLEdBQUE5dEIsR0FHQSxJ
QUFBOHNCLElBQ0FqeUIsS0FBQSxFQUNBOEMsTUFDQTBkLFVBQUFyYixFQUNBb2IsU0FBQTJTLEdB
QUEvdEIsR0FDQTFFLE9BQUFxeUIsRUFDQTl2QixZQUVBTSxLQUNBMnVCLEVBQUEzdUIsTUFHQTZ2
QixHQUFBbEIsS0FBQXYwQixPQUNBdTBCLEVBQUFtQixXQUFBLEVBU0EsUUFBQXI3QixHQUFBLEVB
QXFCQSxFQUFBNDZCLEdBQUEzNkIsT0FBMEJELElBQy9DNDZCLEdBQUE1NkIsR0FBQWs2QixFQUFB
cnlCLEVBWUEsSUFUQXV5QixJQUNBa0IsR0FBQXBCLEdBQ0FBLEVBQUFDLE1BQ0FDLEdBQUEsSUFH
QUMsR0FBQUgsRUFBQW52QixPQUNBdXZCLEdBQUEsR0FFQUYsRUFDQW1CLEdBQUFyQixPQUNPLENB
Q1BzQixHQUFBdEIsR0FDQXVCLEdBQUF2QixHQUNBd0IsR0FBQXhCLEdBQ0F5QixHQUFBekIsR0FJ
QUEsRUFBQTBCLE9BQUExQixFQUFBeDVCLE1BQUEwTSxFQUFBbk4sT0FFQTQ3QixHQUFBM0IsR0FD
QTRCLEdBQUE1QixHQUNBNkIsR0FBQTdCLEVBQ0EsUUFBQThCLEdBQUEsRUFBeUJBLEVBQUFyQixH
QUFBMTZCLE9BQXlCKzdCLElBQ2xEckIsR0FBQXFCLEdBQUE5QixFQUFBcnlCLEVBRUFvMEIsSUFB
QS9CLEdBd0NBLEdBbkJBWSxFQUdPdkQsRUFBQXQzQixRQUVQNjZCLEVBQUFvQixLQUFBaEMsRUFB
QWlDLFFBQUFqQyxFQUFBa0MsT0FFQUMsR0FBQXZCLEdBQ0E5VSxJQUFBa1UsRUFBQWlDLE9BQ0FH
LE1BQUFwQyxJQVJBWSxFQUFBWixFQWtCQWEsSUFBQWIsRUFBQW1CLFVBQ0EsR0FBQW5CLEVBQUFp
QyxRQUFBakMsRUFBQWtDLEtBQ0FHLEdBQUFyQyxFQUFBYSxPQUNTLElBQUFiLEVBQUFzQyxVQUFB
LENBQ1R6QixFQUFBYSxPQUFBLENBQ0EsSUFBQTd6QixHQUFBbXlCLEVBQUF1QyxZQUFBLGFBQXVE
MUIsRUFBQW5vQixjQUFBbW9CLEVBQUFub0IsaUJBQTZEN0ssR0FBQW15QixNQUVwSGEsR0FBQTl2
QixTQUFBcEcsS0FBQXExQixHQUNBQSxFQUFBeHhCLE9BQUFxeUIsQ0FHQW5CLEdBSUFLLEVBQUFD
LElBSEFhLEVBQUFiLEVBQ0EzQyxFQUFBMXlCLEtBQUFxMUIsR0FLQSxRQUFBd0MsR0FBQSxFQUF1
QkEsRUFBQTdCLEdBQUE1NkIsT0FBNkJ5OEIsSUFDcEQ3QixHQUFBNkIsR0FBQXhDLEVBQUFyeUIs
SUFJQWluQixJQUFBLFdBRUEsR0FBQW9MLEdBQUEzQyxJQUFBdDNCLE9BQUEsR0FDQTA4QixFQUFB
ekMsRUFBQWp2QixTQUFBaXZCLEVBQUFqdkIsU0FBQWhMLE9BQUEsRUFDQTA4QixJQUFBLElBQUFB
LEVBQUExMEIsTUFBQSxNQUFBMDBCLEVBQUF6eEIsT0FBQW92QixHQUNBSixFQUFBanZCLFNBQUFs
RyxNQUdBd3lCLEVBQUF0M0IsUUFBQSxFQUNBODZCLEVBQUF4RCxJQUFBdDNCLE9BQUEsR0FDQWc2
QixFQUFBQyxJQUdBeEIsTUFBQSxTQUFBeHRCLEdBQ0EsR0FBQTZ2QixLQWdCQWhRLElBQ0EsYUFB
QWdRLEVBQUFod0IsS0FDQWd3QixFQUFBdlMsU0FBQWlNLGNBQUF2cEIsR0FGQSxDQU1BLEdBQUFE
LEdBQUE4dkIsRUFBQTl2QixRQUtBLElBSkFDLEVBQUFvdkIsR0FBQXB2QixFQUFBa2IsT0FDQXdX
LEdBQUE3QixHQUFBN3ZCLEVBQUEyeEIsR0FBQTN4QixHQUVBOHZCLEdBQUEvdkIsRUFBQWhMLE9B
QUEsT0FDQSxDQUNBLEdBQUFxbUIsSUFDQThULEdBQUEsTUFBQWx2QixJQUFBb2IsRUFBQXdQLEdB
QUE1cUIsRUFBQTZxQixLQUNBOXFCLEVBQUFwRyxNQUNBb0QsS0FBQSxFQUNBcWUsYUFDQXBiLFNB
RVMsTUFBQUEsR0FBQUQsRUFBQWhMLFFBQUEsTUFBQWdMLElBQUFoTCxPQUFBLEdBQUFpTCxNQUNU
RCxFQUFBcEcsTUFDQW9ELEtBQUEsRUFDQWlELFlBS0EwdEIsUUFBQSxTQUFBMXRCLEdBQ0E2dkIs
RUFBQTl2QixTQUFBcEcsTUFDQW9ELEtBQUEsRUFDQWlELE9BQ0FPLFdBQUEsT0FJQXF2QixFQUdB
LFFBQUFRLElBQUF6cEIsR0FDQSxNQUFBeVcsR0FBQXpXLEVBQUEsV0FDQUEsRUFBQXNvQixLQUFB
LEdBSUEsUUFBQW9CLElBQUExcEIsR0FDQSxHQUFBMVEsR0FBQTBRLEVBQUE0VyxVQUFBeG9CLE1B
Q0EsSUFBQWtCLEVBRUEsT0FEQWlNLEdBQUF5RSxFQUFBekUsTUFBQSxHQUFBMUwsT0FBQVAsR0FD
QW5CLEVBQUEsRUFBbUJBLEVBQUFtQixFQUFPbkIsSUFDMUJvTixFQUFBcE4sSUFDQStILEtBQUE4
SixFQUFBNFcsVUFBQXpvQixHQUFBK0gsS0FDQWxLLE1BQUF1QixLQUFBQyxVQUFBd1MsRUFBQTRX
LFVBQUF6b0IsR0FBQW5DLFlBR0dnVSxHQUFBc29CLE1BRUh0b0IsRUFBQStwQixPQUFBLEdBSUEs
UUFBQUQsSUFBQTlwQixHQUNBLEdBQUFtVSxHQUFBbUMsR0FBQXRXLEVBQUEsTUFDQW1VLEtBSUFu
VSxFQUFBblIsSUFBQXNsQixHQUlBLFFBQUE2VixJQUFBaHFCLEdBQ0EsR0FBQStRLEdBQUF1RixH
QUFBdFcsRUFBQSxNQUNBK1EsS0FDQS9RLEVBQUErUSxNQUNBL1EsRUFBQWlSLFNBQUFnYSxHQUFB
anJCLElBSUEsUUFBQTJwQixJQUFBM3BCLEdBQ0EsR0FBQW1VLEVBQ0EsSUFBQUEsRUFBQXNDLEdB
QUF6VyxFQUFBLFVBQ0EsR0FBQWtyQixHQUFBL1csRUFBQXhiLE1BQUF3eUIsR0FDQSxLQUFBRCxF
QUlBLE1BRUFsckIsR0FBQW9yQixJQUFBRixFQUFBLEdBQUEzVyxNQUNBLElBQUE4VyxHQUFBSCxF
QUFBLEdBQUEzVyxPQUNBK1csRUFBQUQsRUFBQTF5QixNQUFBNHlCLEdBQ0FELElBQ0F0ckIsRUFB
QXFyQixNQUFBQyxFQUFBLEdBQUEvVyxPQUNBdlUsRUFBQXdyQixVQUFBRixFQUFBLEdBQUEvVyxP
QUNBK1csRUFBQSxLQUNBdHJCLEVBQUF5ckIsVUFBQUgsRUFBQSxHQUFBL1csU0FHQXZVLEVBQUFx
ckIsU0FLQSxRQUFBekIsSUFBQTVwQixHQUNBLEdBQUFtVSxHQUFBc0MsR0FBQXpXLEVBQUEsT0FD
QSxJQUFBbVUsRUFDQW5VLEVBQUFxcUIsR0FBQWxXLEVBQ0FxVyxHQUFBeHFCLEdBQ0FtVSxNQUNB
c1csTUFBQXpxQixRQUVHLENBQ0gsTUFBQXlXLEdBQUF6VyxFQUFBLFlBQ0FBLEVBQUF1cUIsTUFB
QSxFQUVBLElBQUFELEdBQUE3VCxHQUFBelcsRUFBQSxZQUNBc3FCLEtBQ0F0cUIsRUFBQXNxQixX
QUtBLFFBQUFJLElBQUExcUIsRUFBQW5KLEdBQ0EsR0FBQTJkLEdBQUFrWCxHQUFBNzBCLEVBQUF1
QyxTQUNBb2IsTUFBQTZWLElBQ0FHLEdBQUFoVyxHQUNBTCxJQUFBblUsRUFBQXNxQixPQUNBRyxN
QUFBenFCLElBVUEsUUFBQTByQixJQUFBdHlCLEdBRUEsSUFEQSxHQUFBakwsR0FBQWlMLEVBQUFo
TCxPQUNBRCxLQUFBLENBQ0EsT0FBQWlMLEVBQUFqTCxHQUFBaUksS0FDQSxNQUFBZ0QsR0FBQWpM
LEVBUUFpTCxHQUFBbEcsT0FLQSxRQUFBczNCLElBQUF4cUIsRUFBQTJyQixHQUNBM3JCLEVBQUE0
ckIsZUFDQTVyQixFQUFBNHJCLGlCQUVBNXJCLEVBQUE0ckIsYUFBQTU0QixLQUFBMjRCLEdBR0Es
UUFBQTlCLElBQUE3cEIsR0FFQSxNQURBeVcsR0FBQXpXLEVBQUEsWUFFQUEsRUFBQTlPLE1BQUEs
R0FJQSxRQUFBKzRCLElBQUFqcUIsR0FDQSxZQUFBQSxFQUFBOUcsSUFDQThHLEVBQUE2ckIsU0FB
QXZWLEdBQUF0VyxFQUFBLFlBUUcsQ0FDSCxHQUFBNHFCLEdBQUF0VSxHQUFBdFcsRUFBQSxPQUNB
NHFCLEtBQ0E1cUIsRUFBQTRxQixXQUFBLE9BQUFBLEVBQUEsWUFBQUEsR0FFQSxhQUFBNXFCLEVB
QUE5RyxNQUNBOEcsRUFBQTJxQixVQUFBbFUsR0FBQXpXLEVBQUEsV0FLQSxRQUFBa3FCLElBQUFs
cUIsR0FDQSxHQUFBNGhCLElBQ0FBLEVBQUF0TCxHQUFBdFcsRUFBQSxTQUNBQSxFQUFBckMsVUFB
QWlrQixHQUVBLE1BQUFuTCxHQUFBelcsRUFBQSxxQkFDQUEsRUFBQThILGdCQUFBLEdBSUEsUUFB
QXNpQixJQUFBcHFCLEdBQ0EsR0FDQTdSLEdBQUFtQixFQUFBNEcsRUFBQTBjLEVBQUE1bUIsRUFB
QXltQixFQUFBcVosRUFEQTc5QixFQUFBK1IsRUFBQTRXLFNBRUEsS0FBQXpvQixFQUFBLEVBQUFt
QixFQUFBckIsRUFBQUcsT0FBOEJELEVBQUFtQixFQUFPbkIsSUFHckMsR0FGQStILEVBQUEwYyxF
QUFBM2tCLEVBQUFFLEdBQUErSCxLQUNBbEssRUFBQWlDLEVBQUFFLEdBQUFuQyxNQUNBKy9CLEdB
QUFqNkIsS0FBQW9FLEdBUUEsR0FOQThKLEVBQUFnc0IsYUFBQSxFQUVBdlosRUFBQXdaLEdBQUEv
MUIsR0FDQXVjLElBQ0F2YyxJQUFBNGxCLFFBQUFvUSxHQUFBLEtBRUFDLEdBQUFyNkIsS0FBQW9F
LEdBQ0FBLElBQUE0bEIsUUFBQXFRLEdBQUEsSUFDQW5nQyxFQUFBa29CLEdBQUFsb0IsR0FDQTgv
QixHQUFBLEVBQ0FyWixJQUNBQSxFQUFBemEsT0FDQTh6QixHQUFBLEVBRUEsZUFEQTUxQixFQUFB
QyxHQUFBRCxNQUN1Q0EsRUFBQSxjQUV2Q3VjLEVBQUEyWixRQUNBbDJCLEVBQUFDLEdBQUFELElB
RUF1YyxFQUFBclYsTUFDQTJZLEdBQ0EvVixFQUNBLFVBQUE3SixHQUFBRCxHQUNBK2dCLEdBQUFq
ckIsRUFBQSxZQUlBOC9CLElBQ0E5ckIsRUFBQXJDLFdBQUFpckIsR0FBQTVvQixFQUFBOUcsSUFB
QThHLEVBQUEyVyxTQUFBdmdCLEtBQUFGLEdBRUF5ZixHQUFBM1YsRUFBQTlKLEVBQUFsSyxHQUVB
NHBCLEdBQUE1VixFQUFBOUosRUFBQWxLLE9BRU8sSUFBQXFnQyxHQUFBdjZCLEtBQUFvRSxHQUNQ
QSxJQUFBNGxCLFFBQUF1USxHQUFBLElBQ0F0VyxHQUFBL1YsRUFBQTlKLEVBQUFsSyxFQUFBeW1C
LEdBQUEsRUFBQWlXLFFBQ08sQ0FDUHh5QixJQUFBNGxCLFFBQUFpUSxHQUFBLEdBRUEsSUFBQU8s
R0FBQXAyQixFQUFBeUMsTUFBQTR6QixJQUNBelcsRUFBQXdXLEtBQUEsRUFDQXhXLEtBQ0E1ZixJ
QUFBa0UsTUFBQSxJQUFBMGIsRUFBQTFuQixPQUFBLEtBRUF5bkIsR0FBQTdWLEVBQUE5SixFQUFB
MGMsRUFBQTVtQixFQUFBOHBCLEVBQUFyRCxPQUtLLENBYUxtRCxHQUFBNVYsRUFBQTlKLEVBQUEz
SSxLQUFBQyxVQUFBeEIsS0FLQSxRQUFBaS9CLElBQUFqckIsR0FFQSxJQURBLEdBQUFuSixHQUFB
bUosRUFDQW5KLEdBQUEsQ0FDQSxPQUFBekssS0FBQXlLLEVBQUF1MEIsSUFDQSxRQUVBdjBCLFlB
RUEsU0FHQSxRQUFBbzFCLElBQUEvMUIsR0FDQSxHQUFBeUMsR0FBQXpDLEVBQUF5QyxNQUFBdXpC
LEdBQ0EsSUFBQXZ6QixFQUFBLENBQ0EsR0FBQS9JLEtBRUEsT0FEQStJLEdBQUFvTixRQUFBLFNB
QUEwUCxHQUFnQzdsQixFQUFBNmxCLEVBQUFyYixNQUFBLFNBQ2hDeEssR0FJQSxRQUFBMDVCLElB
QUEvdEIsR0FFQSxPQURBeE4sTUFDQUksRUFBQSxFQUFBbUIsRUFBQWlNLEVBQUFuTixPQUFtQ0Qs
RUFBQW1CLEVBQU9uQixJQU8xQ0osRUFBQXdOLEVBQUFwTixHQUFBK0gsTUFBQXFGLEVBQUFwTixH
QUFBbkMsS0FFQSxPQUFBK0IsR0FJQSxRQUFBZzlCLElBQUEvcUIsR0FDQSxpQkFBQUEsRUFBQTlH
LEtBQUEsVUFBQThHLEVBQUE5RyxJQUdBLFFBQUFxd0IsSUFBQXZwQixHQUNBLE1BQ0EsVUFBQUEs
RUFBQTlHLEtBQ0EsV0FBQThHLEVBQUE5RyxPQUNBOEcsRUFBQTJXLFNBQUF2Z0IsTUFDQSxvQkFB
QTRKLEVBQUEyVyxTQUFBdmdCLE1BU0EsUUFBQWl6QixJQUFBOXRCLEdBRUEsT0FEQXJMLE1BQ0Ev
QixFQUFBLEVBQWlCQSxFQUFBb04sRUFBQW5OLE9BQWtCRCxJQUFBLENBQ25DLEdBQUF1NUIsR0FB
QW5zQixFQUFBcE4sRUFDQXErQixJQUFBMTZCLEtBQUE0MUIsRUFBQXh4QixRQUNBd3hCLEVBQUF4
eEIsS0FBQXd4QixFQUFBeHhCLEtBQUE0bEIsUUFBQTJRLEdBQUEsSUFDQXY4QixFQUFBOEMsS0FB
QTAwQixJQUdBLE1BQUF4M0IsR0FxQ0EsUUFBQXc4QixJQUFBekQsRUFBQWp6QixHQUNBaXpCLElB
Q0EwRCxHQUFBQyxHQUFBNTJCLEVBQUE2MkIsWUFBQSxJQUNBQyxHQUFBOTJCLEVBQUErUyxlQUFB
aWQsR0FFQStHLEdBQUE5RCxHQUVBK0QsR0FBQS9ELEdBQUEsSUFHQSxRQUFBZ0UsSUFBQWw4QixH
QUNBLE1BQUFuRCxHQUNBLDJEQUNBbUQsRUFBQSxJQUFBQSxFQUFBLEtBSUEsUUFBQWc4QixJQUFB
OXdCLEdBRUEsR0FEQUEsRUFBQWl4QixPQUFBdnpCLEdBQUFzQyxHQUNBLElBQUFBLEVBQUE3RixL
QUFBLENBSUEsSUFDQTAyQixHQUFBN3dCLEVBQUEvQyxNQUNBLFNBQUErQyxFQUFBL0MsS0FDQSxN
QUFBK0MsRUFBQTBhLFNBQUEsbUJBRUEsTUFFQSxRQUFBeG9CLEdBQUEsRUFBQW1CLEVBQUEyTSxF
QUFBN0MsU0FBQWhMLE9BQTZDRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FDcEQsR0FBQTJJLEdBQUFt
RixFQUFBN0MsU0FBQWpMLEVBQ0E0K0IsSUFBQWoyQixHQUNBQSxFQUFBbzJCLFNBQ0FqeEIsRUFB
QWl4QixRQUFBLEdBR0EsR0FBQWp4QixFQUFBMnZCLGFBQ0EsT0FBQXpCLEdBQUEsRUFBQWdELEVB
QUFseEIsRUFBQTJ2QixhQUFBeDlCLE9BQXVEKzdCLEVBQUFnRCxFQUFXaEQsSUFBQSxDQUNsRSxH
QUFBTSxHQUFBeHVCLEVBQUEydkIsYUFBQXpCLEdBQUFNLEtBQ0FzQyxJQUFBdEMsR0FDQUEsRUFB
QXlDLFNBQ0FqeEIsRUFBQWl4QixRQUFBLEtBT0EsUUFBQUYsSUFBQS93QixFQUFBcU8sR0FDQSxP
QUFBck8sRUFBQTdGLEtBQUEsQ0FPQSxJQU5BNkYsRUFBQWl4QixRQUFBanhCLEVBQUEvSyxRQUNB
K0ssRUFBQW14QixZQUFBOWlCLEdBS0FyTyxFQUFBaXhCLFFBQUFqeEIsRUFBQTdDLFNBQUFoTCxT
QUNBLElBQUE2TixFQUFBN0MsU0FBQWhMLFFBQ0EsSUFBQTZOLEVBQUE3QyxTQUFBLEdBQUFoRCxN
QUdBLFlBREE2RixFQUFBb3hCLFlBQUEsRUFLQSxJQUZBcHhCLEVBQUFveEIsWUFBQSxFQUVBcHhC
LEVBQUE3QyxTQUNBLE9BQUFqTCxHQUFBLEVBQUFtQixFQUFBMk0sRUFBQTdDLFNBQUFoTCxPQUEr
Q0QsRUFBQW1CLEVBQU9uQixJQUN0RDYrQixHQUFBL3dCLEVBQUE3QyxTQUFBakwsR0FBQW1jLEtB
QUFyTyxFQUFBbXZCLElBR0EsSUFBQW52QixFQUFBMnZCLGFBQ0EsT0FBQXpCLEdBQUEsRUFBQWdE
LEVBQUFseEIsRUFBQTJ2QixhQUFBeDlCLE9BQXVEKzdCLEVBQUFnRCxFQUFXaEQsSUFDbEU2QyxH
QUFBL3dCLEVBQUEydkIsYUFBQXpCLEdBQUFNLE1BQUFuZ0IsSUFNQSxRQUFBM1EsSUFBQXNDLEdB
Q0EsV0FBQUEsRUFBQTdGLE9BR0EsSUFBQTZGLEVBQUE3RixTQUdBNkYsRUFBQXFzQixNQUNBcnNC
LEVBQUErdkIsYUFDQS92QixFQUFBb3VCLElBQUFwdUIsRUFBQW12QixLQUNBa0MsR0FBQXJ4QixF
QUFBL0MsT0FDQTR6QixHQUFBN3dCLEVBQUEvQyxNQUNBcTBCLEdBQUF0eEIsS0FDQW5RLE9BQUFp
RixLQUFBa0wsR0FBQXJMLE1BQUErN0IsT0FJQSxRQUFBWSxJQUFBdHhCLEdBQ0EsS0FBQUEsRUFB
QXBGLFFBQUEsQ0FFQSxHQURBb0YsSUFBQXBGLE9BQ0EsYUFBQW9GLEVBQUEvQyxJQUNBLFFBRUEs
SUFBQStDLEVBQUFtdkIsSUFDQSxTQUdBLFNBdUNBLFFBQUFvQyxJQUNBdFgsRUFDQXpqQixFQUNB
d2pCLEdBRUEsR0FBQS9sQixHQUFBdUMsRUFBQSxhQUFrQyxNQUNsQyxRQUFBeUQsS0FBQWdnQixH
QUFBLENBWUFobUIsR0FBQSxJQUFBZ0csRUFBQSxLQUFBdTNCLEdBQUF2M0IsRUFYQWdnQixFQUFB
aGdCLElBV0EsSUFFQSxNQUFBaEcsR0FBQWtLLE1BQUEsVUFHQSxRQUFBcXpCLElBQ0F2M0IsRUFD
QW1QLEdBRUEsSUFBQUEsRUFDQSxvQkFHQSxJQUFBeFYsTUFBQWEsUUFBQTJVLEdBQ0EsVUFBQUEs
RUFBQXRYLElBQUEsU0FBQXNYLEdBQW1ELE1BQUFvb0IsSUFBQXYzQixFQUFBbVAsS0FBb0N3TixL
QUFBLFFBR3ZGLElBQUE2YSxHQUFBQyxHQUFBNzdCLEtBQUF1VCxFQUFBclosT0FDQTRoQyxFQUFB
QyxHQUFBLzdCLEtBQUF1VCxFQUFBclosTUFFQSxJQUFBcVosRUFBQW9OLFVBSUcsQ0FDSCxHQUFB
b0csR0FBQSxHQUNBaVYsRUFBQSxHQUNBLzhCLElBQ0EsUUFBQWxDLEtBQUF3VyxHQUFBb04sVUFD
QXNiLEdBQUFsL0IsSUFDQWkvQixHQUFBQyxHQUFBbC9CLEdBRUFnYixHQUFBaGIsSUFDQWtDLEVB
QUFpQyxLQUFBbkUsSUFHQWtDLEVBQUFpQyxLQUFBbkUsRUFHQWtDLEdBQUEzQyxTQUNBeXFCLEdB
QUFtVixHQUFBajlCLElBR0ErOEIsSUFDQWpWLEdBQUFpVixFQU9BLDJCQUE4QmpWLEdBTDlCNlUs
RUFDQXJvQixFQUFBclosTUFBQSxXQUNBNGhDLEVBQ0EsSUFBQXZvQixFQUFBLGtCQUNBQSxFQUFB
closT0FDOEIsSUE5QjlCLE1BQUEwaEMsSUFBQUUsRUFDQXZvQixFQUFBclosTUFDQSxvQkFBMkJx
WixFQUFBLFVBZ0MzQixRQUFBMm9CLElBQUFqOUIsR0FDQSxtQ0FBQUEsRUFBQWhELElBQUFrZ0Ms
SUFBQXBiLEtBQUEsc0JBR0EsUUFBQW9iLElBQUFwL0IsR0FDQSxHQUFBcS9CLEdBQUFDLFNBQUF0
L0IsRUFBQSxHQUNBLElBQUFxL0IsRUFDQSwwQkFBQUEsQ0FFQSxJQUFBN0MsR0FBQXhoQixHQUFB
aGIsRUFDQSw0QkFBQXRCLEtBQUFDLFVBQUFxQixJQUFBdzhCLEVBQUEsSUFBQTk5QixLQUFBQyxV
QUFBNjlCLEdBQUEsUUFLQSxRQUFBL3dCLElBQUEwRixFQUFBMlIsR0FJQTNSLEVBQUFvdUIsY0FB
QSxTQUFBdlYsR0FBc0MsWUFBQUEsRUFBQSxJQUFBbEgsRUFBQSxXQUt0QyxRQUFBMGMsSUFBQXJ1
QixFQUFBMlIsR0FDQTNSLEVBQUFzdUIsU0FBQSxTQUFBelYsR0FDQSxZQUFBQSxFQUFBLEtBQUE3
WSxFQUFBLFNBQUEyUixFQUFBLFdBQUFBLEVBQUFjLFdBQUFkLEVBQUFjLFVBQUF6YSxLQUFBLGlC
QUFBMlosRUFBQWMsV0FBQWQsRUFBQWMsVUFBQXJWLEtBQUEsaUJBNEJBLFFBQUFteEIsSUFDQUMs
RUFDQXg0QixHQUVBLEdBQUF5NEIsR0FBQSxHQUFBQyxJQUFBMTRCLEVBRUEsUUFDQW1LLE9BQUEs
c0JBRkFxdUIsRUFBQUcsR0FBQUgsRUFBQUMsR0FBQSxhQUV5QixJQUN6QjFtQixnQkFBQTBtQixF
QUFBMW1CLGlCQUlBLFFBQUE0bUIsSUFBQTN1QixFQUFBeXVCLEdBQ0EsR0FBQXp1QixFQUFBcXRC
LGFBQUFydEIsRUFBQTR1QixnQkFDQSxNQUFBQyxJQUFBN3VCLEVBQUF5dUIsRUFDRyxJQUFBenVC
LEVBQUE5TyxPQUFBOE8sRUFBQTh1QixjQUNILE1BQUFDLElBQUEvdUIsRUFBQXl1QixFQUNHLElB
QUF6dUIsRUFBQW9yQixNQUFBcHJCLEVBQUFndkIsYUFDSCxNQUFBQyxJQUFBanZCLEVBQUF5dUIs
RUFDRyxJQUFBenVCLEVBQUFxcUIsS0FBQXJxQixFQUFBa3ZCLFlBQ0gsTUFBQUMsSUFBQW52QixF
QUFBeXVCLEVBQ0csaUJBQUF6dUIsRUFBQTlHLEtBQUE4RyxFQUFBNHFCLFdBRUEsYUFBQTVxQixF
QUFBOUcsSUFDSCxNQUFBazJCLElBQUFwdkIsRUFBQXl1QixFQUdBLElBQUE1VixFQUNBLElBQUE3
WSxFQUFBckMsVUFDQWtiLEVBQUF3VyxHQUFBcnZCLEVBQUFyQyxVQUFBcUMsRUFBQXl1QixPQUNL
LENBQ0wsR0FBQXQxQixHQUFBNkcsRUFBQStwQixVQUFBMzlCLEdBQUFrakMsR0FBQXR2QixFQUFB
eXVCLEdBRUFyMUIsRUFBQTRHLEVBQUE4SCxlQUFBLEtBQUF5bkIsR0FBQXZ2QixFQUFBeXVCLEdB
QUEsRUFDQTVWLEdBQUEsT0FBQTdZLEVBQUEsU0FBQTdHLEVBQUEsSUFBQUEsRUFBQSxLQUFBQyxF
QUFBLElBQUFBLEVBQUEsUUFHQSxPQUFBakwsR0FBQSxFQUFtQkEsRUFBQXNnQyxFQUFBM0YsV0FB
QTE2QixPQUE2QkQsSUFDaEQwcUIsRUFBQTRWLEVBQUEzRixXQUFBMzZCLEdBQUE2UixFQUFBNlks
RUFFQSxPQUFBQSxHQWxCQSxNQUFBMFcsSUFBQXZ2QixFQUFBeXVCLElBQUEsU0F1QkEsUUFBQUks
SUFBQTd1QixFQUFBeXVCLEdBR0EsTUFGQXp1QixHQUFBNHVCLGlCQUFBLEVBQ0FILEVBQUExbUIs
Z0JBQUEvVSxLQUFBLHFCQUEwQzI3QixHQUFBM3VCLEVBQUF5dUIsR0FBQSxLQUMxQyxPQUFBQSxF
QUFBMW1CLGdCQUFBM1osT0FBQSxJQUFBNFIsRUFBQW90QixZQUFBLGdCQUlBLFFBQUEyQixJQUFB
L3VCLEVBQUF5dUIsR0FFQSxHQURBenVCLEVBQUE4dUIsZUFBQSxFQUNBOXVCLEVBQUFxcUIsS0FB
QXJxQixFQUFBa3ZCLFlBQ0EsTUFBQUMsSUFBQW52QixFQUFBeXVCLEVBQ0csSUFBQXp1QixFQUFB
b3RCLFlBQUEsQ0FHSCxJQUZBLEdBQUF2K0IsR0FBQSxHQUNBZ0ksRUFBQW1KLEVBQUFuSixPQUNB
QSxHQUFBLENBQ0EsR0FBQUEsRUFBQXUwQixJQUFBLENBQ0F2OEIsRUFBQWdJLEVBQUFoSSxHQUNB
LE9BRUFnSSxXQUVBLE1BQUFoSSxHQU1BLE1BQUE4L0IsR0FBQTN1QixFQUFBeXVCLEdBQUEsSUFB
QUEsRUFBQWUsVUFBQTNnQyxFQUFBLElBQUFBLEVBQUEsUUFGQTgvQixHQUFBM3VCLEVBQUF5dUIs
R0FJQSxNQUFBSSxJQUFBN3VCLEVBQUF5dUIsR0FJQSxRQUFBVSxJQUNBbnZCLEVBQ0F5dUIsRUFD
QWdCLEVBQ0FDLEdBR0EsTUFEQTF2QixHQUFBa3ZCLGFBQUEsRUFDQVMsR0FBQTN2QixFQUFBNHJC
LGFBQUF4eEIsUUFBQXEwQixFQUFBZ0IsRUFBQUMsR0FHQSxRQUFBQyxJQUNBQyxFQUNBbkIsRUFD
QWdCLEVBQ0FDLEdBY0EsUUFBQUcsR0FBQTd2QixHQUNBLE1BQUF5dkIsR0FDQUEsRUFBQXp2QixF
QUFBeXVCLEdBQ0F6dUIsRUFBQTlPLEtBQ0E2OUIsR0FBQS91QixFQUFBeXVCLEdBQ0FFLEdBQUEz
dUIsRUFBQXl1QixHQWpCQSxJQUFBbUIsRUFBQXhoQyxPQUNBLE1BQUFzaEMsSUFBQSxNQUdBLElB
QUEvRCxHQUFBaUUsRUFBQUUsT0FDQSxPQUFBbkUsR0FBQXhYLElBQ0EsSUFBQXdYLEVBQUEsU0FB
QWtFLEVBQUFsRSxFQUFBbEIsT0FBQSxJQUFBa0YsR0FBQUMsRUFBQW5CLEVBQUFnQixFQUFBQyxH
QUVBLEdBQUFHLEVBQUFsRSxFQUFBbEIsT0FhQSxRQUFBd0UsSUFDQWp2QixFQUNBeXVCLEVBQ0Fn
QixFQUNBTSxHQUVBLEdBQUE1YixHQUFBblUsRUFBQW9yQixJQUNBQyxFQUFBcnJCLEVBQUFxckIs
TUFDQUcsRUFBQXhyQixFQUFBd3JCLFVBQUEsSUFBQXhyQixFQUFBLGFBQ0F5ckIsRUFBQXpyQixF
QUFBeXJCLFVBQUEsSUFBQXpyQixFQUFBLFlBaUJBLE9BREFBLEdBQUFndkIsY0FBQSxHQUNBZSxH
QUFBLFdBQUE1YixFQUFBLGNBQ0FrWCxFQUFBRyxFQUFBQyxFQUFBLGFBQ0FnRSxHQUFBZCxJQUFB
M3VCLEVBQUF5dUIsR0FDQSxLQUdBLFFBQUFhLElBQUF0dkIsRUFBQXl1QixHQUNBLEdBQUF0MUIs
R0FBQSxJQUlBMUMsRUFBQXU1QixHQUFBaHdCLEVBQUF5dUIsRUFDQWg0QixLQUFhMEMsR0FBQTFD
LEVBQUEsS0FHYnVKLEVBQUFuUixNQUNBc0ssR0FBQSxPQUFBNkcsRUFBQSxTQUdBQSxFQUFBK1Es
TUFDQTVYLEdBQUEsT0FBQTZHLEVBQUEsU0FFQUEsRUFBQWlSLFdBQ0E5WCxHQUFBLGtCQUdBNkcs
RUFBQXNvQixNQUNBbnZCLEdBQUEsYUFHQTZHLEVBQUFyQyxZQUNBeEUsR0FBQSxRQUFBNkcsRUFB
QSxTQUdBLFFBQUE3UixHQUFBLEVBQWlCQSxFQUFBc2dDLEVBQUF3QixXQUFBN2hDLE9BQTZCRCxJ
QUM5Q2dMLEdBQUFzMUIsRUFBQXdCLFdBQUE5aEMsR0FBQTZSLEVBOEJBLElBM0JBQSxFQUFBekUs
UUFDQXBDLEdBQUEsVUFBb0IrMkIsR0FBQWx3QixFQUFBekUsT0FBQSxNQUdwQnlFLEVBQUEvSixR
QUNBa0QsR0FBQSxhQUF1QisyQixHQUFBbHdCLEVBQUEvSixPQUFBLE1BR3ZCK0osRUFBQWtXLFNB
Q0EvYyxHQUFBcTBCLEdBQUF4dEIsRUFBQWtXLFFBQUEsRUFBQXVZLEVBQUF4WSxNQUFBLEtBRUFq
VyxFQUFBb1csZUFDQWpkLEdBQUFxMEIsR0FBQXh0QixFQUFBb1csY0FBQSxFQUFBcVksRUFBQXhZ
LE1BQUEsS0FHQWpXLEVBQUE0cUIsYUFDQXp4QixHQUFBLFFBQUE2RyxFQUFBLGdCQUdBQSxFQUFB
ZSxjQUNBNUgsR0FBQWczQixHQUFBbndCLEVBQUFlLFlBQUEwdEIsR0FBQSxLQUdBenVCLEVBQUFp
SCxRQUNBOU4sR0FBQSxnQkFBb0I2RyxFQUFBaUgsTUFBQSxtQkFBQWpILEVBQUFpSCxNQUFBLHdC
QUFBakgsRUFBQWlILE1BQUEsaUJBR3BCakgsRUFBQThILGVBQUEsQ0FDQSxHQUFBQSxHQUFBc29C
LEdBQUFwd0IsRUFBQXl1QixFQUNBM21CLEtBQ0EzTyxHQUFBMk8sRUFBQSxLQVlBLE1BVEEzTyxL
QUFBMmlCLFFBQUEsYUFFQTliLEVBQUFzdUIsV0FDQW4xQixFQUFBNkcsRUFBQXN1QixTQUFBbjFC
LElBR0E2RyxFQUFBb3VCLGdCQUNBajFCLEVBQUE2RyxFQUFBb3VCLGNBQUFqMUIsSUFFQUEsRUFH
QSxRQUFBNjJCLElBQUFod0IsRUFBQXl1QixHQUNBLEdBQUFoNEIsR0FBQXVKLEVBQUF0SixVQUNB
LElBQUFELEVBQUEsQ0FDQSxHQUVBdEksR0FBQW1CLEVBQUFxaUIsRUFBQTBlLEVBRkFuZ0MsRUFB
QSxlQUNBb2dDLEdBQUEsQ0FFQSxLQUFBbmlDLEVBQUEsRUFBQW1CLEVBQUFtSCxFQUFBckksT0FB
OEJELEVBQUFtQixFQUFPbkIsSUFBQSxDQUNyQ3dqQixFQUFBbGIsRUFBQXRJLEdBQ0FraUMsR0FB
QSxDQUNBLElBQUFFLEdBQUE5QixFQUFBLzNCLFdBQUFpYixFQUFBemIsS0FDQXE2QixLQUdBRixJ
QUFBRSxFQUFBdndCLEVBQUEyUixFQUFBOGMsRUFBQXhZLE9BRUFvYSxJQUNBQyxHQUFBLEVBQ0Fw
Z0MsR0FBQSxVQUFleWhCLEVBQUEsbUJBQUFBLEVBQUEsYUFBQUEsRUFBQTNsQixNQUFBLFdBQUEy
bEIsRUFBQSxzQkFBQXBrQixLQUFBQyxVQUFBbWtCLEVBQUEzbEIsT0FBQSxLQUFBMmxCLEVBQUFt
RSxJQUFBLFNBQUFuRSxFQUFBLGFBQUFBLEVBQUFjLFVBQUEsY0FBQWxsQixLQUFBQyxVQUFBbWtC
LEVBQUFjLFdBQUEsVUFHZixNQUFBNmQsR0FDQXBnQyxFQUFBa0ssTUFBQSxjQURBLElBS0EsUUFB
QWcyQixJQUFBcHdCLEVBQUF5dUIsR0FDQSxHQUFBRCxHQUFBeHVCLEVBQUE1RyxTQUFBLEVBTUEs
UUFBQW8xQixFQUFBcDRCLEtBQUEsQ0FDQSxHQUFBbzZCLEdBQUFqQyxHQUFBQyxFQUFBQyxFQUFB
ejRCLFFBQ0EsNENBQStDdzZCLEVBQUEsNkJBQWlDQSxFQUFBem9CLGdCQUFBaGEsSUFBQSxTQUFB
OHFCLEdBQTRFLG9CQUFxQkEsRUFBQSxNQUFrQmhHLEtBQUEsV0FJbk0sUUFBQXNkLElBQ0F0eEIs
RUFDQTR2QixHQUVBLHlCQUFBM2lDLE9BQUFpRixLQUFBOE4sR0FBQTlRLElBQUEsU0FBQWMsR0FD
QSxNQUFBNGhDLElBQUE1aEMsRUFBQWdRLEVBQUFoUSxHQUFBNC9CLEtBQ0s1YixLQUFBLFVBR0ws
UUFBQTRkLElBQ0E1aEMsRUFDQW1SLEVBQ0F5dUIsR0FFQSxNQUFBenVCLEdBQUFvckIsTUFBQXBy
QixFQUFBZ3ZCLGFBQ0EwQixHQUFBN2hDLEVBQUFtUixFQUFBeXVCLEdBRUEsUUFBVzUvQixFQUFB
LGdCQUFBcEIsT0FBQXVTLEVBQUEyVyxTQUFBZ2EsT0FBQSxhQUNYLGFBQUEzd0IsRUFBQTlHLElB
Q0FxMkIsR0FBQXZ2QixFQUFBeXVCLElBQUEsU0FDQUUsR0FBQTN1QixFQUFBeXVCLElBQUEsS0FH
QSxRQUFBaUMsSUFDQTdoQyxFQUNBbVIsRUFDQXl1QixHQUVBLEdBQUF0YSxHQUFBblUsRUFBQW9y
QixJQUNBQyxFQUFBcnJCLEVBQUFxckIsTUFDQUcsRUFBQXhyQixFQUFBd3JCLFVBQUEsSUFBQXhy
QixFQUFBLGFBQ0F5ckIsRUFBQXpyQixFQUFBeXJCLFVBQUEsSUFBQXpyQixFQUFBLFlBRUEsT0FE
QUEsR0FBQWd2QixjQUFBLEVBQ0EsT0FBQTdhLEVBQUEsY0FDQWtYLEVBQUFHLEVBQUFDLEVBQUEs
WUFDQWdGLEdBQUE1aEMsRUFBQW1SLEVBQUF5dUIsR0FDQSxLQUdBLFFBQUFjLElBQ0F2dkIsRUFD
QXl1QixFQUNBbUMsRUFDQUMsRUFDQUMsR0FFQSxHQUFBMTNCLEdBQUE0RyxFQUFBNUcsUUFDQSxJ
QUFBQSxFQUFBaEwsT0FBQSxDQUNBLEdBQUEyaUMsR0FBQTMzQixFQUFBLEVBRUEsUUFBQUEsRUFB
QWhMLFFBQ0EyaUMsRUFBQTNGLEtBQ0EsYUFBQTJGLEVBQUE3M0IsS0FDQSxTQUFBNjNCLEVBQUE3
M0IsSUFFQSxPQUFBMjNCLEdBQUFsQyxJQUFBb0MsRUFBQXRDLEVBRUEsSUFBQWptQixHQUFBb29C
LEVBQ0FJLEdBQUE1M0IsRUFBQXExQixFQUFBd0MsZ0JBQ0EsRUFDQVYsRUFBQU8sR0FBQUksRUFD
QSxXQUFBOTNCLEVBQUFyTCxJQUFBLFNBQUFzQyxHQUE4QyxNQUFBa2dDLEdBQUFsZ0MsRUFBQW8r
QixLQUF3QjViLEtBQUEsVUFBQXJLLEVBQUEsSUFBQUEsRUFBQSxLQVF0RSxRQUFBd29CLElBQ0E1
M0IsRUFDQTYzQixHQUdBLE9BREEvZ0MsR0FBQSxFQUNBL0IsRUFBQSxFQUFpQkEsRUFBQWlMLEVB
QUFoTCxPQUFxQkQsSUFBQSxDQUN0QyxHQUFBNlIsR0FBQTVHLEVBQUFqTCxFQUNBLFFBQUE2UixF
QUFBNUosS0FBQSxDQUdBLEdBQUErNkIsR0FBQW54QixJQUNBQSxFQUFBNHJCLGNBQUE1ckIsRUFB
QTRyQixhQUFBd0YsS0FBQSxTQUFBL2dDLEdBQStELE1BQUE4Z0MsSUFBQTlnQyxFQUFBbzZCLFNB
QXNDLENBQ3JHdjZCLEVBQUEsQ0FDQSxRQUVBK2dDLEVBQUFqeEIsSUFDQUEsRUFBQTRyQixjQUFB
NXJCLEVBQUE0ckIsYUFBQXdGLEtBQUEsU0FBQS9nQyxHQUErRCxNQUFBNGdDLEdBQUE1Z0MsRUFB
QW82QixZQUMvRHY2QixFQUFBLElBR0EsTUFBQUEsR0FHQSxRQUFBaWhDLElBQUFueEIsR0FDQSxX
QUFBNVQsS0FBQTRULEVBQUFvckIsS0FBQSxhQUFBcHJCLEVBQUE5RyxLQUFBLFNBQUE4RyxFQUFB
OUcsSUFHQSxRQUFBZzRCLElBQUFqMUIsRUFBQXd5QixHQUNBLFdBQUF4eUIsRUFBQTdGLEtBQ0F1
NEIsR0FBQTF5QixFQUFBd3lCLEdBQ0csSUFBQXh5QixFQUFBN0YsTUFBQTZGLEVBQUFyQyxVQUNI
eTNCLEdBQUFwMUIsR0FFQXExQixHQUFBcjFCLEdBSUEsUUFBQXExQixJQUFBajRCLEdBQ0EsaUJB
QUFBLEVBQUFqRCxLQUNBaUQsRUFBQW9iLFdBQ0E4YyxHQUFBaGtDLEtBQUFDLFVBQUE2TCxVQUFB
LElBR0EsUUFBQWc0QixJQUFBdEssR0FDQSxZQUFBeDVCLEtBQUFDLFVBQUF1NUIsRUFBQTF0QixN
QUFBLElBR0EsUUFBQSsxQixJQUFBcHZCLEVBQUF5dUIsR0FDQSxHQUFBNUMsR0FBQTdyQixFQUFB
NnJCLFVBQUEsWUFDQXp5QixFQUFBbTJCLEdBQUF2dkIsRUFBQXl1QixHQUNBditCLEVBQUEsTUFB
QTI3QixHQUFBenlCLEVBQUEsSUFBQUEsRUFBQSxJQUNBbUMsRUFBQXlFLEVBQUF6RSxPQUFBLElB
QTZCeUUsRUFBQXpFLE1BQUF4TixJQUFBLFNBQUFzQixHQUFnQyxNQUFBOEcsSUFBQTlHLEVBQUE2
RyxNQUFBLElBQUE3RyxFQUFBLFFBQWlEd2pCLEtBQUEsU0FDOUcyZSxFQUFBeHhCLEVBQUEyVyxT
QUFBLFNBVUEsUUFUQXBiLElBQUFpMkIsR0FBQXA0QixJQUNBbEosR0FBQSxTQUVBcUwsSUFDQXJM
LEdBQUEsSUFBQXFMLEdBRUFpMkIsSUFDQXRoQyxJQUFBcUwsRUFBQSxnQkFBQWkyQixHQUVBdGhD
LEVBQUEsSUFJQSxRQUFBbS9CLElBQ0FvQyxFQUNBenhCLEVBQ0F5dUIsR0FFQSxHQUFBcjFCLEdB
QUE0RyxFQUFBOEgsZUFBQSxLQUFBeW5CLEdBQUF2dkIsRUFBQXl1QixHQUFBLEVBQ0EsYUFBQWdE
LEVBQUEsSUFBQW5DLEdBQUF0dkIsRUFBQXl1QixJQUFBcjFCLEVBQUEsSUFBQUEsRUFBQSxRQUdB
LFFBQUE4MkIsSUFBQWo2QixHQUVBLE9BREEvRixHQUFBLEdBQ0EvQixFQUFBLEVBQWlCQSxFQUFB
OEgsRUFBQTdILE9BQWtCRCxJQUFBLENBQ25DLEdBQUE2SixHQUFBL0IsRUFBQTlILEVBQ0ErQixJ
QUFBLElBQUE4SCxFQUFBLFVBQUF1NUIsR0FBQXY1QixFQUFBaE0sT0FBQSxJQUVBLE1BQUFrRSxH
QUFBa0ssTUFBQSxNQUlBLFFBQUFtM0IsSUFBQWw0QixHQUNBLE1BQUFBLEdBQ0F5aUIsUUFBQSxx
QkFDQUEsUUFBQSxxQkFzR0EsUUFBQTRWLElBQUE3WSxFQUFBOFksR0FDQSxJQUNBLFVBQUFDLFVB
QUEvWSxHQUNHLE1BQUE1bUIsR0FFSCxNQURBMC9CLEdBQUEzK0IsTUFBaUJmLE1BQUE0bUIsU0FD
akIxb0IsR0FJQSxRQUFBMGhDLElBQUFDLEdBQ0EsR0FBQTdpQyxHQUFBbkQsT0FBQWtDLE9BQUEs
S0FFQSxpQkFDQW02QixFQUNBbnlCLEVBQ0E5RCxHQUVBOEQsT0FxQkEsSUFBQW5ILEdBQUFtSCxF
QUFBa3VCLFdBQ0F6MkIsT0FBQXVJLEVBQUFrdUIsWUFBQWlFLEVBQ0FBLENBQ0EsSUFBQWw1QixF
QUFBSixHQUNBLE1BQUFJLEdBQUFKLEVBSUEsSUFBQWtqQyxHQUFBRCxFQUFBM0osRUFBQW55QixH
QWlCQTlGLEtBQ0E4aEMsSUF5QkEsT0F4QkE5aEMsR0FBQWlRLE9BQUF1eEIsR0FBQUssRUFBQTV4
QixPQUFBNnhCLEdBQ0E5aEMsRUFBQTZYLGdCQUFBZ3FCLEVBQUFocUIsZ0JBQUFoYSxJQUFBLFNB
QUE4cUIsR0FDQSxNQUFBNlksSUFBQTdZLEVBQUFtWixLQXNCQS9pQyxFQUFBSixHQUFBcUIsR0Er
SkEsUUFBQStoQyxJQUFBanlCLEdBQ0EsR0FBQUEsRUFBQWt5QixVQUNBLE1BQUFseUIsR0FBQWt5
QixTQUVBLElBQUFDLEdBQUE5aUIsU0FBQTNJLGNBQUEsTUFFQSxPQURBeXJCLEdBQUExaEIsWUFB
QXpRLEVBQUFveUIsV0FBQSxJQUNBRCxFQUFBRSxVQWp6VEEsR0FBQXpsQyxJQUFBZCxPQUFBK1As
VUFBQXZPLFNBK0RBZ2dDLEdBQUExL0IsRUFBQSxxQkFLQXFjLEdBQUFyYyxFQUFBLG1CQWlCQWtC
LEdBQUFoRCxPQUFBK1AsVUFBQS9NLGVBbUJBd2pDLEdBQUEsU0FDQW44QixHQUFBcEgsRUFBQSxT
QUFBbEIsR0FDQSxNQUFBQSxHQUFBaXVCLFFBQUF3VyxHQUFBLFNBQUE1YyxFQUFBcmxCLEdBQWtE
LE1BQUFBLEtBQUFraUMsY0FBQSxPQU1sRDM2QixHQUFBN0ksRUFBQSxTQUFBbEIsR0FDQSxNQUFB
QSxHQUFBcW5CLE9BQUEsR0FBQXFkLGNBQUExa0MsRUFBQXVNLE1BQUEsS0FNQW80QixHQUFBLGlC
QUNBcDZCLEdBQUFySixFQUFBLFNBQUFsQixHQUNBLE1BQUFBLEdBQ0FpdUIsUUFBQTBXLEdBQUEs
U0FDQTFXLFFBQUEwVyxHQUFBLFNBQ0Fua0MsZ0JBa0VBMjNCLEdBQUEsU0FBQTMyQixFQUFBZSxF
QUFBQyxHQUE2QixVQUs3Qm9aLEdBQUEsU0FBQWlNLEdBQTZCLE1BQUFBLElBb0U3QitjLEdBQUEs
dUJBRUFqbEIsSUFDQSxZQUNBLFlBQ0EsVUFHQWtsQixJQUNBLGVBQ0EsVUFDQSxjQUNBLFVBQ0Es
ZUFDQSxVQUNBLGdCQUNBLFlBQ0EsWUFDQSxlQUtBdGdDLElBSUF1Z0Msc0JBQUE3bUMsT0FBQWtD
LE9BQUEsTUFLQTRrQyxRQUFBLEVBS0FDLGVBQUEsRUFLQS92QixVQUFBLEVBS0Fnd0IsYUFBQSxF
QUtBemdDLGFBQUEsS0FLQTBnQyxZQUFBLEtBS0FDLG1CQUtBbnBCLFNBQUEvZCxPQUFBa0MsT0FB
QSxNQU1BK2EsY0FBQWlkLEdBTUFpTixlQUFBak4sR0FNQTdXLGlCQUFBNlcsR0FLQWxkLGdCQUFB
M1ksRUFLQTZZLHFCQUFBUyxHQU1BUyxZQUFBOGIsR0FLQWtOLGdCQUFBUixJQUtBenhCLEdBQUFu
VixPQUFBcW5DLFdBeUJBdGhDLEdBQUEsVUFpQkFva0IsR0FBQTlsQixFQW1IQWlqQyxHQUFBLGdC
QUdBOWdDLEdBQUEsbUJBQUFnZCxRQUNBK2pCLEdBQUEvZ0MsSUFBQWdkLE9BQUFna0IsVUFBQUMs
VUFBQWxsQyxjQUNBNnFCLEdBQUFtYSxJQUFBLGVBQUF2aEMsS0FBQXVoQyxJQUNBbmdCLEdBQUFt
Z0IsT0FBQTNrQyxRQUFBLGNBQ0E4a0MsR0FBQUgsT0FBQTNrQyxRQUFBLFdBQ0Era0MsR0FBQUos
T0FBQTNrQyxRQUFBLGFBQ0FnbEMsR0FBQUwsSUFBQSx1QkFBQXZoQyxLQUFBdWhDLElBQ0FsYSxH
QUFBa2EsSUFBQSxjQUFBdmhDLEtBQUF1aEMsTUFBQUcsR0FHQWh2QixNQUFxQkQsTUFFckJtVixJ
QUFBLENBQ0EsSUFBQXBuQixHQUNBLElBQ0EsR0FBQXlSLE1BQ0FqWSxRQUFBQyxlQUFBZ1ksR0FB
QSxXQUNBdFAsSUFBQSxXQUVBaWxCLElBQUEsS0FHQXBLLE9BQUFtSyxpQkFBQSxvQkFBQTFWLElB
Q0csTUFBQWxULElBS0gsR0FBQThpQyxJQWlIQUMsR0FoSEE5L0IsR0FBQSxXQVdBLFdBVkExSCxL
QUFBdW5DLEtBT0FBLElBTEFyaEMsUUFBQSxLQUFBckcsR0FHQSxXQUFBQSxFQUFBLFFBQUE0bkMs
SUFBQUMsU0FLQUgsSUFJQTd3QixHQUFBeFEsSUFBQWdkLE9BQUF5a0IsNkJBT0EvdEIsR0FDQSxt
QkFBQWd1QixTQUFBdmhDLEVBQUF1aEMsU0FDQSxtQkFBQS90QixVQUFBeFQsRUFBQXdULFFBQUFD
LFNBS0FoRCxHQUFBLFdBS0EsUUFBQSt3QixLQUNBQyxHQUFBLENBQ0EsSUFBQUMsR0FBQUMsRUFB
QWg2QixNQUFBLEVBQ0FnNkIsR0FBQWhtQyxPQUFBLENBQ0EsUUFBQUQsR0FBQSxFQUFtQkEsRUFB
QWdtQyxFQUFBL2xDLE9BQW1CRCxJQUN0Q2dtQyxFQUFBaG1DLEtBVEEsR0FFQWttQyxHQUZBRCxL
QUNBRixHQUFBLENBbUJBLHVCQUFBSSxVQUFBN2hDLEVBQUE2aEMsU0FBQSxDQUNBLEdBQUFyZixH
QUFBcWYsUUFBQS8yQixVQUNBZzNCLEVBQUEsU0FBQXRpQyxHQUFtQ00sUUFBQUMsTUFBQVAsR0FD
bkNvaUMsR0FBQSxXQUNBcGYsRUFBQXZYLEtBQUF1MkIsR0FBQU8sTUFBQUQsR0FNQWIsSUFBa0I3
MUIsV0FBQTFOLFFBRWYsdUJBQUFza0Msb0JBQ0hoaUMsRUFBQWdpQyxtQkFFQSx5Q0FBQUEsaUJB
QUFubkMsV0FpQkErbUMsRUFBQSxXQUNBeDJCLFdBQUFvMkIsRUFBQSxRQWpCQSxDQUdBLEdBQUFT
LEdBQUEsRUFDQUMsRUFBQSxHQUFBRixrQkFBQVIsR0FDQVcsRUFBQXZsQixTQUFBYyxlQUFBMWlC
LE9BQUFpbkMsR0FDQUMsR0FBQXBoQyxRQUFBcWhDLEdBQ0FDLGVBQUEsSUFFQVIsRUFBQSxXQUNB
SyxLQUFBLEtBQ0FFLEVBQUF6N0IsS0FBQTFMLE9BQUFpbkMsSUFVQSxnQkFBQWhZLEVBQUF2dEIs
R0FDQSxHQUFBMmxDLEVBZ0JBLElBZkFWLEVBQUFwaEMsS0FBQSxXQUNBLEdBQUEwcEIsRUFDQSxJ
QUNBQSxFQUFBN3ZCLEtBQUFzQyxHQUNTLE1BQUEwQixHQUNUbUIsRUFBQW5CLEVBQUExQixFQUFB
LGdCQUVPMmxDLElBQ1BBLEVBQUEzbEMsS0FHQStrQyxJQUNBQSxHQUFBLEVBQ0FHLE1BRUEzWCxH
QUFBLG1CQUFBNFgsU0FDQSxVQUFBQSxTQUFBLFNBQUEvMkIsRUFBQUMsR0FDQXMzQixFQUFBdjNC
LE9BVUFxMkIsSUFGQSxtQkFBQW1CLE1BQUF0aUMsRUFBQXNpQyxLQUVBQSxJQUdBLFdBQ0EsUUFB
QUEsS0FDQTNqQyxLQUFBdUQsSUFBQTdJLE9BQUFrQyxPQUFBLE1BWUEsTUFWQSttQyxHQUFBbDVC
LFVBQUFzRyxJQUFBLFNBQUF0VCxHQUNBLFdBQUF1QyxLQUFBdUQsSUFBQTlGLElBRUFrbUMsRUFB
QWw1QixVQUFBckIsSUFBQSxTQUFBM0wsR0FDQXVDLEtBQUF1RCxJQUFBOUYsSUFBQSxHQUVBa21D
LEVBQUFsNUIsVUFBQXdILE1BQUEsV0FDQWpTLEtBQUF1RCxJQUFBN0ksT0FBQWtDLE9BQUEsT0FH
QSttQyxJQU9BLElBQUFDLElBQUEsRUFNQW5pQyxHQUFBLFdBQ0F6QixLQUFBbUcsR0FBQXk5QixL
QUNBNWpDLEtBQUE2akMsUUFHQXBpQyxJQUFBZ0osVUFBQXE1QixPQUFBLFNBQUFDLEdBQ0EvakMs
S0FBQTZqQyxLQUFBamlDLEtBQUFtaUMsSUFHQXRpQyxHQUFBZ0osVUFBQXU1QixVQUFBLFNBQUFE
LEdBQ0E3bUMsRUFBQThDLEtBQUE2akMsS0FBQUUsSUFHQXRpQyxHQUFBZ0osVUFBQWhILE9BQUEs
V0FDQWhDLEdBQUFDLFFBQ0FELEdBQUFDLE9BQUF1aUMsT0FBQWprQyxPQUlBeUIsR0FBQWdKLFVB
QUE3RyxPQUFBLFdBR0EsT0FEQWlnQyxHQUFBN2pDLEtBQUE2akMsS0FBQTc2QixRQUNBak0sRUFB
QSxFQUFBbUIsRUFBQTJsQyxFQUFBN21DLE9BQWtDRCxFQUFBbUIsRUFBT25CLElBQ3pDOG1DLEVB
QUE5bUMsR0FBQXdJLFVBT0E5RCxHQUFBQyxPQUFBLElBQ0EsSUFBQUMsT0FnQkF1aUMsR0FBQXps
QyxNQUFBZ00sVUFDQTA1QixHQUFBenBDLE9BQUFrQyxPQUFBc25DLEtBQ0EsT0FDQSxNQUNBLFFB
Q0EsVUFDQSxTQUNBLE9BQ0EsV0FFQXZ2QixRQUFBLFNBQUF5dkIsR0FFQSxHQUFBQyxHQUFBSCxH
QUFBRSxFQUNBamtDLEdBQUFna0MsR0FBQUMsRUFBQSxXQUVBLElBREEsR0FBQTdvQixNQUFBL1Qs
RUFBQXJKLFVBQUFuQixPQUNBd0ssS0FBQStULEVBQUEvVCxHQUFBckosVUFBQXFKLEVBRUEsSUFF
QTJaLEdBRkExTSxFQUFBNHZCLEVBQUFqbUMsTUFBQTRCLEtBQUF1YixHQUNBbFosRUFBQXJDLEtB
QUFzQyxNQUVBLFFBQUE4aEMsR0FDQSxXQUNBLGNBQ0FqakIsRUFBQTVGLENBQ0EsTUFDQSxjQUNB
NEYsRUFBQTVGLEVBQUF2UyxNQUFBLEdBTUEsTUFIQW1ZLElBQW1COWUsRUFBQWlpQyxhQUFBbmpC
LEdBRW5COWUsRUFBQVksSUFBQVcsU0FDQTZRLEtBTUEsSUFBQTh2QixJQUFBN3BDLE9BQUE4cEMs
b0JBQUFMLElBUUEzaEMsSUFDQUMsZUFBQSxHQVNBRixHQUFBLFNBQUEzSCxHQUtBLEdBSkFvRixL
QUFBcEYsUUFDQW9GLEtBQUFpRCxJQUFBLEdBQUF4QixJQUNBekIsS0FBQTZDLFFBQUEsRUFDQTFD
LEVBQUF2RixFQUFBLFNBQUFvRixNQUNBdkIsTUFBQWEsUUFBQTFFLEdBQUEsRUFDQW9uQyxHQUNB
amdDLEVBQ0FHLEdBQ0F0SCxFQUFBdXBDLEdBQUFJLElBQ0F2a0MsS0FBQXNrQyxhQUFBMXBDLE9B
RUFvRixNQUFBeWtDLEtBQUE3cEMsR0FTQTJILElBQUFrSSxVQUFBZzZCLEtBQUEsU0FBQW5wQyxH
QUVBLE9BREFxRSxHQUFBakYsT0FBQWlGLEtBQUFyRSxHQUNBeUIsRUFBQSxFQUFpQkEsRUFBQTRD
LEVBQUEzQyxPQUFpQkQsSUFDbEMrRixFQUFBeEgsRUFBQXFFLEVBQUE1QyxHQUFBekIsRUFBQXFF
LEVBQUE1QyxNQU9Bd0YsR0FBQWtJLFVBQUE2NUIsYUFBQSxTQUFBSSxHQUNBLE9BQUEzbkMsR0FB
QSxFQUFBbUIsRUFBQXdtQyxFQUFBMW5DLE9BQW1DRCxFQUFBbUIsRUFBT25CLElBQzFDb0YsRUFB
QXVpQyxFQUFBM25DLElBaU1BLElBQUE4SSxJQUFBN0UsR0FBQXVnQyxxQkFrRkExN0IsSUFBQWtD
LEtBQUEsU0FDQTNELEVBQ0FDLEVBQ0F2RCxHQUVBLE1BQUFBLEdBY0FxRCxFQUFBQyxFQUFBQyxF
QUFBdkQsR0FiQXVELEdBQUEsa0JBQUFBLEdBUUFELEVBRUFELEVBQUExSSxLQUFBdUUsS0FBQW9F
LEVBQUFDLElBc0JBaTlCLEdBQUEzc0IsUUFBQSxTQUFBN0ssR0FDQWpFLEdBQUFpRSxHQUFBdEYs
SUFpQkE0WCxHQUFBekgsUUFBQSxTQUFBM1AsR0FDQWEsR0FBQWIsRUFBQSxLQUFBTixJQVNBbUIs
R0FBQXNOLE1BQUEsU0FBQS9PLEVBQUFDLEdBS0EsR0FIQUQsSUFBQWdQLEtBQWtDaFAsTUFBQXBK
LElBQ2xDcUosSUFBQStPLEtBQWlDL08sTUFBQXJKLEtBRWpDcUosRUFBa0IsTUFBQTNKLFFBQUFr
QyxPQUFBd0gsR0FBQSxLQUNsQixLQUFBQSxFQUFtQixNQUFBQyxFQUNuQixJQUFBN0YsS0FDQUUs
R0FBQUYsRUFBQTRGLEVBQ0EsUUFBQTNHLEtBQUE0RyxHQUFBLENBQ0EsR0FBQW9CLEdBQUFqSCxF
QUFBZixHQUNBaUksRUFBQXJCLEVBQUE1RyxFQUNBZ0ksS0FBQWhILE1BQUFhLFFBQUFtRyxLQUNB
QSxPQUVBakgsRUFBQWYsR0FBQWdJLEVBQ0FBLEVBQUFoQixPQUFBaUIsR0FDQWpILE1BQUFhLFFB
QUFvRyxTQUVBLE1BQUFsSCxJQU1BcUgsR0FBQWhCLE1BQ0FnQixHQUFBZ04sUUFDQWhOLEdBQUFY
LE9BQ0FXLEdBQUFvTixTQUFBLFNBQUE3TyxFQUFBQyxHQUNBLElBQUFELEVBQW1CLE1BQUFDLEVB
Q25CLElBQUE3RixHQUFBOUQsT0FBQWtDLE9BQUEsS0FHQSxPQUZBOEIsR0FBQUYsRUFBQTRGLEdB
Q0FDLEdBQWlCM0YsRUFBQUYsRUFBQTZGLEdBQ2pCN0YsR0FFQXFILEdBQUF5TyxRQUFBblEsQ0FL
QSxJQUFBMkIsSUFBQSxTQUFBMUIsRUFBQUMsR0FDQSxXQUFBckosS0FBQXFKLEVBQ0FELEVBQ0FD
LEdBc2FBcUQsR0FBQSxTQUNBSSxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxF
QUNBQyxHQUVBckksS0FBQThILE1BQ0E5SCxLQUFBK0gsT0FDQS9ILEtBQUFnSSxXQUNBaEksS0FB
QWlJLE9BQ0FqSSxLQUFBa0ksTUFDQWxJLEtBQUFzSSxPQUFBdE4sR0FDQWdGLEtBQUFtSSxVQUNB
bkksS0FBQTJOLHNCQUFBM1MsR0FDQWdGLEtBQUF2QyxJQUFBc0ssS0FBQXRLLElBQ0F1QyxLQUFB
b0ksbUJBQ0FwSSxLQUFBZ2Qsc0JBQUFoaUIsR0FDQWdGLEtBQUF5RixXQUFBekssR0FDQWdGLEtB
QUEya0MsS0FBQSxFQUNBM2tDLEtBQUF1SSxVQUFBLEVBQ0F2SSxLQUFBMHVCLGNBQUEsRUFDQTF1
QixLQUFBd0ksV0FBQSxFQUNBeEksS0FBQXlJLFVBQUEsRUFDQXpJLEtBQUF3WixRQUFBLEVBQ0F4
WixLQUFBcUksZUFDQXJJLEtBQUF3TCxjQUFBeFEsR0FDQWdGLEtBQUFnZ0Isb0JBQUEsR0FHQTRr
QixJQUEwQmwvQixTQUkxQmsvQixJQUFBbC9CLE1BQUFyQyxJQUFBLFdBQ0EsTUFBQXJELE1BQUFn
ZCxtQkFHQXRpQixPQUFBbXFDLGlCQUFBbjlCLEdBQUErQyxVQUFBbTZCLEdBRUEsSUErYkFsakMs
SUEvYkE2SixHQUFBLFNBQUF0RCxPQUNBLEtBQUFBLE1BQUEsR0FFQSxJQUFBNEMsR0FBQSxHQUFB
bkQsR0FHQSxPQUZBbUQsR0FBQTVDLE9BQ0E0QyxFQUFBckMsV0FBQSxFQUNBcUMsR0F5Q0FwQixH
QUFBOUwsRUFBQSxTQUFBbUgsR0FDQSxHQUFBNkUsR0FBQSxNQUFBN0UsRUFBQWdmLE9BQUEsRUFD
QWhmLEdBQUE2RSxFQUFBN0UsRUFBQWtFLE1BQUEsR0FBQWxFLENBQ0EsSUFBQW9JLEdBQUEsTUFB
QXBJLEVBQUFnZixPQUFBLEVBQ0FoZixHQUFBb0ksRUFBQXBJLEVBQUFrRSxNQUFBLEdBQUFsRSxD
QUNBLElBQUE0RSxHQUFBLE1BQUE1RSxFQUFBZ2YsT0FBQSxFQUVBLE9BREFoZixHQUFBNEUsRUFB
QTVFLEVBQUFrRSxNQUFBLEdBQUFsRSxHQUVBQSxPQUNBaEYsS0FBQW9OLEVBQ0F4RCxVQUNBQyxh
QTRqQkE0a0IsR0FBQSxLQXVUQTFkLE1BQ0FDLE1BQ0FDLE1BRUFDLElBQUEsRUFDQUMsSUFBQSxF
QUNBNVQsR0FBQSxFQW1JQXluQyxHQUFBLEVBT0ExMUIsR0FBQSxTQUNBdE8sRUFDQWlrQyxFQUNB
elosRUFDQTFtQixHQUVBNUUsS0FBQWMsS0FDQUEsRUFBQTRSLFVBQUE5USxLQUFBNUIsTUFFQTRF
LEdBQ0E1RSxLQUFBZ2xDLE9BQUFwZ0MsRUFBQW9nQyxLQUNBaGxDLEtBQUFpbEMsT0FBQXJnQyxF
QUFBcWdDLEtBQ0FqbEMsS0FBQTBuQixPQUFBOWlCLEVBQUE4aUIsS0FDQTFuQixLQUFBZ00sT0FB
QXBILEVBQUFvSCxNQUVBaE0sS0FBQWdsQyxLQUFBaGxDLEtBQUFpbEMsS0FBQWpsQyxLQUFBMG5C
LEtBQUExbkIsS0FBQWdNLE1BQUEsRUFFQWhNLEtBQUFzckIsS0FDQXRyQixLQUFBbUcsS0FBQTIr
QixHQUNBOWtDLEtBQUFrbEMsUUFBQSxFQUNBbGxDLEtBQUErVCxNQUFBL1QsS0FBQTBuQixLQUNB
MW5CLEtBQUFtbEMsUUFDQW5sQyxLQUFBb2xDLFdBQ0FwbEMsS0FBQXFsQyxPQUFBLEdBQUE3QyxJ
QUNBeGlDLEtBQUFzbEMsVUFBQSxHQUFBOUMsSUFDQXhpQyxLQUFBcWpCLFdBRUEsR0FFQSxrQkFB
QTBoQixHQUNBL2tDLEtBQUFvRCxPQUFBMmhDLEdBRUEva0MsS0FBQW9ELE9BQUE3QyxFQUFBd2tD
LEdBQ0Eva0MsS0FBQW9ELFNBQ0FwRCxLQUFBb0QsT0FBQSxlQVNBcEQsS0FBQXBGLE1BQUFvRixL
QUFBMG5CLFNBQ0Exc0IsR0FDQWdGLEtBQUFxRCxNQU1BK0wsSUFBQTNFLFVBQUFwSCxJQUFBLFdB
Q0E5QixFQUFBdkIsS0FDQSxJQUFBcEYsR0FDQWtHLEVBQUFkLEtBQUFjLEVBQ0EsS0FDQWxHLEVB
QUFvRixLQUFBb0QsT0FBQTNILEtBQUFxRixLQUNHLE1BQUFyQixHQUNILElBQUFPLEtBQUFpbEMs
S0FHQSxLQUFBeGxDLEVBRkFtQixHQUFBbkIsRUFBQXFCLEVBQUEsdUJBQUFkLEtBQUEsZ0JBSUcs
UUFHSEEsS0FBQWdsQyxNQUNBanpCLEdBQUFuWCxHQUVBaUgsSUFDQTdCLEtBQUF1bEMsY0FFQSxN
QUFBM3FDLElBTUF3VSxHQUFBM0UsVUFBQXc1QixPQUFBLFNBQUFoaEMsR0FDQSxHQUFBa0QsR0FB
QWxELEVBQUFrRCxFQUNBbkcsTUFBQXNsQyxVQUFBdjBCLElBQUE1SyxLQUNBbkcsS0FBQXNsQyxV
QUFBbDhCLElBQUFqRCxHQUNBbkcsS0FBQW9sQyxRQUFBeGpDLEtBQUFxQixHQUNBakQsS0FBQXFs
QyxPQUFBdDBCLElBQUE1SyxJQUNBbEQsRUFBQTZnQyxPQUFBOWpDLFFBUUFvUCxHQUFBM0UsVUFB
QTg2QixZQUFBLFdBSUEsSUFIQSxHQUFBQyxHQUFBeGxDLEtBRUFqRCxFQUFBaUQsS0FBQW1sQyxL
QUFBbm9DLE9BQ0FELEtBQUEsQ0FDQSxHQUFBa0csR0FBQXVpQyxFQUFBTCxLQUFBcG9DLEVBQ0F5
b0MsR0FBQUYsVUFBQXYwQixJQUFBOU4sRUFBQWtELEtBQ0FsRCxFQUFBK2dDLFVBQUF3QixHQUdB
LEdBQUFDLEdBQUF6bEMsS0FBQXFsQyxNQUNBcmxDLE1BQUFxbEMsT0FBQXJsQyxLQUFBc2xDLFVB
Q0F0bEMsS0FBQXNsQyxVQUFBRyxFQUNBemxDLEtBQUFzbEMsVUFBQXJ6QixRQUNBd3pCLEVBQUF6
bEMsS0FBQW1sQyxLQUNBbmxDLEtBQUFtbEMsS0FBQW5sQyxLQUFBb2xDLFFBQ0FwbEMsS0FBQW9s
QyxRQUFBSyxFQUNBemxDLEtBQUFvbEMsUUFBQXBvQyxPQUFBLEdBT0FvUyxHQUFBM0UsVUFBQWxG
LE9BQUEsV0FFQXZGLEtBQUEwbkIsS0FDQTFuQixLQUFBK1QsT0FBQSxFQUNHL1QsS0FBQWdNLEtB
Q0hoTSxLQUFBcVIsTUFFQVEsR0FBQTdSLE9BUUFvUCxHQUFBM0UsVUFBQTRHLElBQUEsV0FDQSxH
QUFBclIsS0FBQWtsQyxPQUFBLENBQ0EsR0FBQXRxQyxHQUFBb0YsS0FBQXFELEtBQ0EsSUFDQXpJ
LElBQUFvRixLQUFBcEYsT0FJQVMsRUFBQVQsSUFDQW9GLEtBQUFnbEMsS0FDQSxDQUVBLEdBQUFo
a0IsR0FBQWhoQixLQUFBcEYsS0FFQSxJQURBb0YsS0FBQXBGLFFBQ0FvRixLQUFBaWxDLEtBQ0Es
SUFDQWpsQyxLQUFBc3JCLEdBQUE3dkIsS0FBQXVFLEtBQUFjLEdBQUFsRyxFQUFBb21CLEdBQ1Ms
TUFBQXZoQixHQUNUbUIsRUFBQW5CLEVBQUFPLEtBQUFjLEdBQUEseUJBQUFkLEtBQUEsb0JBR0FB
LE1BQUFzckIsR0FBQTd2QixLQUFBdUUsS0FBQWMsR0FBQWxHLEVBQUFvbUIsTUFVQTVSLEdBQUEz
RSxVQUFBdUosU0FBQSxXQUNBaFUsS0FBQXBGLE1BQUFvRixLQUFBcUQsTUFDQXJELEtBQUErVCxP
QUFBLEdBTUEzRSxHQUFBM0UsVUFBQWhILE9BQUEsV0FJQSxJQUhBLEdBQUEraEMsR0FBQXhsQyxL
QUVBakQsRUFBQWlELEtBQUFtbEMsS0FBQW5vQyxPQUNBRCxLQUNBeW9DLEVBQUFMLEtBQUFwb0Ms
R0FBQTBHLFVBT0EyTCxHQUFBM0UsVUFBQWk3QixTQUFBLFdBQ0EsR0FBQUYsR0FBQXhsQyxJQUVB
LElBQUFBLEtBQUFrbEMsT0FBQSxDQUlBbGxDLEtBQUFjLEdBQUE0TixtQkFDQXhSLEVBQUE4QyxL
QUFBYyxHQUFBNFIsVUFBQTFTLEtBR0EsS0FEQSxHQUFBakQsR0FBQWlELEtBQUFtbEMsS0FBQW5v
QyxPQUNBRCxLQUNBeW9DLEVBQUFMLEtBQUFwb0MsR0FBQWluQyxVQUFBd0IsRUFFQXhsQyxNQUFB
a2xDLFFBQUEsR0FTQSxJQUFBbHpCLElBQUEsR0FBQXd3QixJQStCQWh3QixJQUNBcFMsWUFBQSxF
QUNBRSxjQUFBLEVBQ0ErQyxJQUFBdEUsRUFDQXdFLElBQUF4RSxHQXdJQTZVLElBQThCOFQsTUFB
QSxHQThSOUIzUSxJQUNBNHVCLEtBQUEsU0FDQS85QixFQUNBaUgsRUFDQXNILEVBQ0FDLEdBRUEs
SUFBQXhPLEVBQUFvVixtQkFBQXBWLEVBQUFvVixrQkFBQXZPLGFBQUEsRUFDQTdHLEVBQUFvVixr
QkFBQTlHLEdBQ0F0TyxFQUNBMm1CLEdBQ0FwWSxFQUNBQyxJQUVBd3ZCLE9BQUEvMkIsRUFBQWpI
LEVBQUFNLFFBQUFsTixHQUFBNlQsT0FDSyxJQUFBakgsRUFBQUcsS0FBQTg5QixVQUFBLENBRUws
R0FBQUMsR0FBQWwrQixDQUNBbVAsSUFBQWd2QixTQUFBRCxPQUlBQyxTQUFBLFNBQUExbEIsRUFB
QXpZLEdBQ0EsR0FBQWhELEdBQUFnRCxFQUFBUSxnQkFFQWtILElBREExSCxFQUFBb1Ysa0JBQUFx
RCxFQUFBckQsa0JBR0FwWSxFQUFBK0IsVUFDQS9CLEVBQUFtSSxVQUNBbkYsRUFDQWhELEVBQUFv
RCxXQUlBZytCLE9BQUEsU0FBQXArQixHQUNBLEdBQUFPLEdBQUFQLEVBQUFPLFFBQ0E2VSxFQUFB
cFYsRUFBQW9WLGlCQUNBQSxHQUFBeE8sYUFDQXdPLEVBQUF4TyxZQUFBLEVBQ0FRLEdBQUFnTyxF
QUFBLFlBRUFwVixFQUFBRyxLQUFBODlCLFlBQ0ExOUIsRUFBQXFHLFdBTUFvRCxHQUFBb0wsR0FF
QTFNLEdBQUEwTSxHQUFBLEtBS0FpcEIsUUFBQSxTQUFBcitCLEdBQ0EsR0FBQW9WLEdBQUFwVixF
QUFBb1YsaUJBQ0FBLEdBQUF2TyxlQUNBN0csRUFBQUcsS0FBQTg5QixVQUdBcjFCLEdBQUF3TSxH
QUFBLEdBRkFBLEVBQUFDLGNBUUFyRyxHQUFBbGMsT0FBQWlGLEtBQUFvWCxJQWlLQVUsR0FBQSxF
QUNBSCxHQUFBLEVBZ2RBNHVCLEdBQUEsR0FFQSxTQUFBaHJCLEdBQ0FBLEVBQUF6USxVQUFBdVEs
TUFBQSxTQUFBcFcsR0FDQSxHQUFBOUQsR0FBQWQsSUFFQWMsR0FBQXFsQyxLQUFBRCxLQVdBcGxD
LEVBQUE4QixRQUFBLEVBRUFnQyxLQUFBMFIsYUFJQTJELEdBQUFuWixFQUFBOEQsR0FFQTlELEVB
QUFzRyxTQUFBNUIsRUFDQW9RLEdBQUE5VSxFQUFBb1osYUFDQXRWLE1BQ0E5RCxHQU9BQSxFQUFB
dVksYUFBQXZZLEVBR0FBLEVBQUFzbEMsTUFBQXRsQyxFQUNBaU4sR0FBQWpOLEdBQ0E4TCxHQUFB
OUwsR0FDQThZLEdBQUE5WSxHQUNBa08sR0FBQWxPLEVBQUEsZ0JBQ0EwVCxHQUFBMVQsR0FDQTJS
LEdBQUEzUixHQUNBdVQsR0FBQXZULEdBQ0FrTyxHQUFBbE8sRUFBQSxXQVNBQSxFQUFBc0csU0FB
QXdILElBQ0E5TixFQUFBOGtDLE9BQUE5a0MsRUFBQXNHLFNBQUF3SCxNQXdGQW1NLElBcCtCQSxT
QUFBRyxHQUlBLEdBQUFtckIsS0FDQUEsR0FBQWhqQyxJQUFBLFdBQTZCLE1BQUFyRCxNQUFBZ1Qs
TUFDN0IsSUFBQXN6QixLQUNBQSxHQUFBampDLElBQUEsV0FBOEIsTUFBQXJELE1BQUFxSCxRQWE5
QjNNLE9BQUFDLGVBQUF1Z0IsRUFBQXpRLFVBQUEsUUFBQTQ3QixHQUNBM3JDLE9BQUFDLGVBQUF1
Z0IsRUFBQXpRLFVBQUEsU0FBQTY3QixHQUVBcHJCLEVBQUF6USxVQUFBODdCLEtBQUFoakMsRUFD
QTJYLEVBQUF6USxVQUFBKzdCLFFBQUExaUMsRUFFQW9YLEVBQUF6USxVQUFBMkosT0FBQSxTQUNB
MndCLEVBQ0F6WixFQUNBMW1CLEdBRUEsR0FBQTlELEdBQUFkLElBQ0EsSUFBQXpFLEVBQUErdkIs
R0FDQSxNQUFBcFgsSUFBQXBULEVBQUFpa0MsRUFBQXpaLEVBQUExbUIsRUFFQUEsU0FDQUEsRUFB
QXFnQyxNQUFBLENBQ0EsSUFBQTl6QixHQUFBLEdBQUEvQixJQUFBdE8sRUFBQWlrQyxFQUFBelos
RUFBQTFtQixFQUlBLE9BSEFBLEdBQUE2aEMsV0FDQW5iLEVBQUE3dkIsS0FBQXFGLEVBQUFxUSxF
QUFBdlcsT0FFQSxXQUNBdVcsRUFBQXUwQixjQTI3QkEzcUIsSUFua0VBLFNBQUFHLEdBQ0EsR0FB
QXdyQixHQUFBLFFBQ0F4ckIsR0FBQXpRLFVBQUEyQyxJQUFBLFNBQUE1RCxFQUFBNUwsR0FDQSxH
QUFBNG5DLEdBQUF4bEMsS0FFQWMsRUFBQWQsSUFDQSxJQUFBdkIsTUFBQWEsUUFBQWtLLEdBQ0Es
T0FBQXpNLEdBQUEsRUFBQW1CLEVBQUFzTCxFQUFBeE0sT0FBdUNELEVBQUFtQixFQUFPbkIsSUFD
OUN5b0MsRUFBQXA0QixJQUFBNUQsRUFBQXpNLEdBQUFhLFFBR0FrRCxFQUFBK0wsUUFBQXJELEtB
QUExSSxFQUFBK0wsUUFBQXJELFFBQUE1SCxLQUFBaEUsR0FHQThvQyxFQUFBaG1DLEtBQUE4SSxL
QUNBMUksRUFBQWdNLGVBQUEsRUFHQSxPQUFBaE0sSUFHQW9hLEVBQUF6USxVQUFBMEMsTUFBQSxT
QUFBM0QsRUFBQTVMLEdBRUEsUUFBQXNMLEtBQ0FwSSxFQUFBd00sS0FBQTlELEVBQUFOLEdBQ0F0
TCxFQUFBUSxNQUFBMEMsRUFBQTNDLFdBSEEsR0FBQTJDLEdBQUFkLElBT0EsT0FGQWtKLEdBQUF0
TCxLQUNBa0QsRUFBQXNNLElBQUE1RCxFQUFBTixHQUNBcEksR0FHQW9hLEVBQUF6USxVQUFBNkMs
S0FBQSxTQUFBOUQsRUFBQTVMLEdBQ0EsR0FBQTRuQyxHQUFBeGxDLEtBRUFjLEVBQUFkLElBRUEs
S0FBQTdCLFVBQUFuQixPQUVBLE1BREE4RCxHQUFBK0wsUUFBQW5TLE9BQUFrQyxPQUFBLE1BQ0Fr
RSxDQUdBLElBQUFyQyxNQUFBYSxRQUFBa0ssR0FBQSxDQUNBLE9BQUF1dkIsR0FBQSxFQUFBNzZC
LEVBQUFzTCxFQUFBeE0sT0FBeUMrN0IsRUFBQTc2QixFQUFTNjZCLElBQ2xEeU0sRUFBQWw0QixL
QUFBOUQsRUFBQXV2QixHQUFBbjdCLEVBRUEsT0FBQWtELEdBR0EsR0FBQTZsQyxHQUFBN2xDLEVB
QUErTCxRQUFBckQsRUFDQSxLQUFBbTlCLEVBQ0EsTUFBQTdsQyxFQUVBLFFBQUEzQyxVQUFBbkIs
T0FFQSxNQURBOEQsR0FBQStMLFFBQUFyRCxHQUFBLEtBQ0ExSSxDQUtBLEtBRkEsR0FBQXdxQixH
QUNBdnVCLEVBQUE0cEMsRUFBQTNwQyxPQUNBRCxLQUVBLElBREF1dUIsRUFBQXFiLEVBQUE1cEMs
TUFDQWEsR0FBQTB0QixFQUFBMXRCLE9BQUEsQ0FDQStvQyxFQUFBcHBDLE9BQUFSLEVBQUEsRUFD
QSxPQUdBLE1BQUErRCxJQUdBb2EsRUFBQXpRLFVBQUFrRyxNQUFBLFNBQUFuSCxHQUNBLEdBQUEx
SSxHQUFBZCxLQWFBMm1DLEVBQUE3bEMsRUFBQStMLFFBQUFyRCxFQUNBLElBQUFtOUIsRUFBQSxD
QUNBQSxJQUFBM3BDLE9BQUEsRUFBQXNCLEVBQUFxb0MsSUFFQSxRQURBcHJCLEdBQUFqZCxFQUFB
SCxVQUFBLEdBQ0FwQixFQUFBLEVBQUFtQixFQUFBeW9DLEVBQUEzcEMsT0FBcUNELEVBQUFtQixF
QUFPbkIsSUFDNUMsSUFDQTRwQyxFQUFBNXBDLEdBQUFxQixNQUFBMEMsRUFBQXlhLEdBQ1MsTUFB
QTliLEdBQ1RtQixFQUFBbkIsRUFBQXFCLEVBQUEsc0JBQUEwSSxFQUFBLE1BSUEsTUFBQTFJLEtB
bytEQWlhLElBdjREQSxTQUFBRyxHQUNBQSxFQUFBelEsVUFBQXlFLFFBQUEsU0FBQXRILEVBQUFp
SCxHQUNBLEdBQUEvTixHQUFBZCxJQUNBYyxHQUFBME4sWUFDQVEsR0FBQWxPLEVBQUEsZUFFQSxJ
QUFBOGxDLEdBQUE5bEMsRUFBQWdPLElBQ0ErM0IsRUFBQS9sQyxFQUFBaVAsT0FDQSsyQixFQUFB
dlksRUFDQUEsSUFBQXp0QixFQUNBQSxFQUFBaVAsT0FBQW5JLEVBR0FpL0IsRUFZQS9sQyxFQUFB
Z08sSUFBQWhPLEVBQUFpbUMsVUFBQUYsRUFBQWovQixJQVZBOUcsRUFBQWdPLElBQUFoTyxFQUFB
aW1DLFVBQ0FqbUMsRUFBQWdPLElBQUFsSCxFQUFBaUgsR0FBQSxFQUNBL04sRUFBQXNHLFNBQUFv
UCxXQUNBMVYsRUFBQXNHLFNBQUFxUCxTQUlBM1YsRUFBQXNHLFNBQUFvUCxXQUFBMVYsRUFBQXNH
LFNBQUFxUCxRQUFBLE1BS0E4WCxHQUFBdVksRUFFQUYsSUFDQUEsRUFBQUksUUFBQSxNQUVBbG1D
LEVBQUFnTyxNQUNBaE8sRUFBQWdPLElBQUFrNEIsUUFBQWxtQyxHQUdBQSxFQUFBdU8sUUFBQXZP
LEVBQUFtTixTQUFBbk4sRUFBQXVPLFNBQUF2TyxFQUFBbU4sUUFBQThCLFNBQ0FqUCxFQUFBbU4s
UUFBQWEsSUFBQWhPLEVBQUFnTyxNQU1Bb00sRUFBQXpRLFVBQUF5QixhQUFBLFdBQ0EsR0FBQXBM
LEdBQUFkLElBQ0FjLEdBQUF1TixVQUNBdk4sRUFBQXVOLFNBQUE5SSxVQUlBMlYsRUFBQXpRLFVB
QUF3UyxTQUFBLFdBQ0EsR0FBQW5jLEdBQUFkLElBQ0EsS0FBQWMsRUFBQTROLGtCQUFBLENBR0FN
LEdBQUFsTyxFQUFBLGlCQUNBQSxFQUFBNE4sbUJBQUEsQ0FFQSxJQUFBakosR0FBQTNFLEVBQUFt
TixTQUNBeEksS0FBQWlKLG1CQUFBNU4sRUFBQXNHLFNBQUE0RyxVQUNBOVEsRUFBQXVJLEVBQUF5
SSxVQUFBcE4sR0FHQUEsRUFBQXVOLFVBQ0F2TixFQUFBdU4sU0FBQXEzQixVQUdBLEtBREEsR0FB
QTNvQyxHQUFBK0QsRUFBQTRSLFVBQUExVixPQUNBRCxLQUNBK0QsRUFBQTRSLFVBQUEzVixHQUFB
Mm9DLFVBSUE1a0MsR0FBQWtTLE1BQUExUSxRQUNBeEIsRUFBQWtTLE1BQUExUSxPQUFBTyxVQUdB
L0IsRUFBQTJOLGNBQUEsRUFFQTNOLEVBQUFpbUMsVUFBQWptQyxFQUFBaVAsT0FBQSxNQUVBZixH
QUFBbE8sRUFBQSxhQUVBQSxFQUFBd00sT0FFQXhNLEVBQUFnTyxNQUNBaE8sRUFBQWdPLElBQUFr
NEIsUUFBQSxTQW16REFqc0IsSUFyT0EsU0FBQUcsR0FDQUEsRUFBQXpRLFVBQUF3OEIsVUFBQSxT
QUFBcnBDLEdBQ0EsTUFBQWtVLElBQUFsVSxFQUFBb0MsT0FHQWtiLEVBQUF6USxVQUFBMEUsUUFB
QSxXQUNBLEdBQUFyTyxHQUFBZCxLQUNBMmYsRUFBQTdlLEVBQUFzRyxTQUNBMkgsRUFBQTRRLEVB
QUE1USxPQUNBNEgsRUFBQWdKLEVBQUFoSixnQkFDQTdHLEVBQUE2UCxFQUFBN1AsWUFFQSxJQUFB
aFAsRUFBQTBOLFdBRUEsT0FBQS9RLEtBQUFxRCxHQUFBc1AsT0FDQXRQLEVBQUFzUCxPQUFBM1Ms
R0FBQWlMLEdBQUE1SCxFQUFBc1AsT0FBQTNTLEdBSUFxRCxHQUFBOE8sYUFBQUUsS0FBQS9ILEtB
QUE0SCxhQUFBRSxHQUVBOEcsSUFBQTdWLEVBQUFzWSxlQUNBdFksRUFBQXNZLGlCQUlBdFksRUFB
QXVPLE9BQUFTLENBRUEsSUFBQWxJLEVBQ0EsS0FDQUEsRUFBQW1ILEVBQUF0VCxLQUFBcUYsRUFB
QXVZLGFBQUF2WSxFQUFBaVosZ0JBQ0ssTUFBQXRhLEdBQ0xtQixFQUFBbkIsRUFBQXFCLEVBQUEs
bUJBU0E4RyxFQUFBOUcsRUFBQWlQLE9BZ0JBLE1BWkFuSSxhQUFBRixNQVFBRSxFQUFBMkQsTUFH
QTNELEVBQUFuQyxPQUFBcUssRUFDQWxJLEdBTUFzVCxFQUFBelEsVUFBQXk4QixHQUFBM3RCLEdB
Q0EyQixFQUFBelEsVUFBQTA4QixHQUFBN3FDLEVBQ0E0ZSxFQUFBelEsVUFBQTI4QixHQUFBbHJD
LEVBQ0FnZixFQUFBelEsVUFBQTQ4QixHQUFBdnZCLEdBQ0FvRCxFQUFBelEsVUFBQTY4QixHQUFB
dnZCLEdBQ0FtRCxFQUFBelEsVUFBQTg4QixHQUFBcm9DLEVBQ0FnYyxFQUFBelEsVUFBQSs4QixH
QUFBM25DLEVBQ0FxYixFQUFBelEsVUFBQWc5QixHQUFBeHVCLEdBQ0FpQyxFQUFBelEsVUFBQWk5
QixHQUFBdHZCLEdBQ0E4QyxFQUFBelEsVUFBQWs5QixHQUFBcnZCLEdBQ0E0QyxFQUFBelEsVUFB
QW05QixHQUFBbHZCLEdBQ0F3QyxFQUFBelEsVUFBQW85QixHQUFBcGdDLEVBQ0F5VCxFQUFBelEs
VUFBQXE5QixHQUFBdjhCLEdBQ0EyUCxFQUFBelEsVUFBQXM5QixHQUFBajZCLEdBQ0FvTixFQUFB
elEsVUFBQXU5QixHQUFBdHVCLElBeUpBcUIsR0EwS0EsSUFBQWt0QixLQUFBNXJDLE9BQUErNEIs
T0FBQTMyQixPQXVDQXlwQyxJQUNBcGpDLEtBQUEsYUFDQWtKLFVBQUEsRUFFQW5KLE9BQ0FzakMs
UUFBQUYsR0FDQUcsUUFBQUgsSUFHQUksUUFBQSxXQUNBcm9DLEtBQUFuQyxNQUFBbkQsT0FBQWtD
LE9BQUEsT0FHQTByQyxVQUFBLFdBQ0EsR0FBQTlDLEdBQUF4bEMsSUFFQSxRQUFBdkMsS0FBQStu
QyxHQUFBM25DLE1BQ0FrZixHQUFBeW9CLEVBQUEzbkMsTUFBQUosS0FJQTBWLE9BQ0FnMUIsUUFB
QSxTQUFBdnNDLEdBQ0ErZ0IsR0FBQTNjLEtBQUFuQyxNQUFBbUMsS0FBQStQLE9BQUEsU0FBQWpM
LEdBQTJELE1BQUEyWCxJQUFBN2dCLEVBQUFrSixNQUUzRHNqQyxRQUFBLFNBQUF4c0MsR0FDQStn
QixHQUFBM2MsS0FBQW5DLE1BQUFtQyxLQUFBK1AsT0FBQSxTQUFBakwsR0FBMkQsT0FBQTJYLEdB
QUE3Z0IsRUFBQWtKLE9BSTNEaUssT0FBQSxXQUNBLEdBQUFuSCxHQUFBK0UsR0FBQTNNLEtBQUFv
USxPQUFBakosU0FDQWlCLEVBQUFSLEtBQUFRLGdCQUNBLElBQUFBLEVBQUEsQ0FFQSxHQUFBdEQs
R0FBQTBYLEdBQUFwVSxFQUNBLElBQUF0RCxJQUNBOUUsS0FBQW1vQyxVQUFBMXJCLEdBQUF6YyxL
QUFBbW9DLFFBQUFyakMsSUFDQTlFLEtBQUFvb0MsU0FBQTNyQixHQUFBemMsS0FBQW9vQyxRQUFB
dGpDLElBRUEsTUFBQThDLEVBRUEsSUFBQW5LLEdBQUEsTUFBQW1LLEVBQUFuSyxJQUdBMkssRUFB
QTlHLEtBQUFxVSxLQUFBdk4sRUFBQU4sSUFBQSxLQUFBTSxFQUFBLFFBQ0FSLEVBQUFuSyxHQUNB
dUMsTUFBQW5DLE1BQUFKLEdBQ0FtSyxFQUFBb1Ysa0JBQUFoZCxLQUFBbkMsTUFBQUosR0FBQXVm
LGtCQUVBaGQsS0FBQW5DLE1BQUFKLEdBQUFtSyxFQUVBQSxFQUFBRyxLQUFBODlCLFdBQUEsRUFF
QSxNQUFBaitCLEtBSUEyZ0MsSUFDQUwsZUFLQSxTQUFBaHRCLEdBRUEsR0FBQXN0QixLQUNBQSxH
QUFBbmxDLElBQUEsV0FBK0IsTUFBQXJDLEtBUS9CdEcsT0FBQUMsZUFBQXVnQixFQUFBLFNBQUFz
dEIsR0FLQXR0QixFQUFBdXRCLE1BQ0E1akIsUUFDQW5tQixTQUNBOEcsZUFDQWtqQyxlQUFBNWxD
LEdBR0FvWSxFQUFBM1gsTUFDQTJYLEVBQUF5dEIsT0FBQTdrQyxFQUNBb1gsRUFBQXBKLFlBRUFv
SixFQUFBdFcsUUFBQWxLLE9BQUFrQyxPQUFBLE1BQ0F3ZixHQUFBekgsUUFBQSxTQUFBM1AsR0FD
QWtXLEVBQUF0VyxRQUFBSSxFQUFBLEtBQUF0SyxPQUFBa0MsT0FBQSxRQUtBc2UsRUFBQXRXLFFB
QUE4USxNQUFBd0YsRUFFQXhjLEVBQUF3YyxFQUFBdFcsUUFBQTRWLFdBQUErdEIsSUFFQXR0QixH
QUFBQyxHQUNBUSxHQUFBUixHQUNBVSxHQUFBVixHQUNBb0IsR0FBQXBCLElBR0FILElBRUFyZ0Is
T0FBQUMsZUFBQW9nQixHQUFBdFEsVUFBQSxhQUNBcEgsSUFBQVgsS0FHQWhJLE9BQUFDLGVBQUFv
Z0IsR0FBQXRRLFVBQUEsZUFDQXBILElBQUEsV0FFQSxNQUFBckQsTUFBQXFQLFFBQUFyUCxLQUFB
cVAsT0FBQXU1QixjQUlBN3RCLEdBQUE4dEIsUUFBQSxPQU1BLElBZzlDQXJoQyxJQUNBL0ssR0FD
QTZwQixHQUNBTCxHQUNBQyxHQUNBQyxHQXdFQVksR0F5TEFtQixHQTRPQTRnQixHQWw4REFqSCxH
QUFBcmxDLEVBQUEsZUFHQXVzQyxHQUFBdnNDLEVBQUEsZ0NBQ0FzYyxHQUFBLFNBQUFoUixFQUFB
OUMsRUFBQXN4QixHQUNBLE1BQ0EsVUFBQUEsR0FBQXlTLEdBQUFqaEMsSUFBQSxXQUFBOUMsR0FD
QSxhQUFBc3hCLEdBQUEsV0FBQXh1QixHQUNBLFlBQUF3dUIsR0FBQSxVQUFBeHVCLEdBQ0EsVUFB
QXd1QixHQUFBLFVBQUF4dUIsR0FJQXFhLEdBQUEzbEIsRUFBQSx3Q0FFQTZsQixHQUFBN2xCLEVB
Q0Esd1lBUUF5bEIsR0FBQSwrQkFFQUYsR0FBQSxTQUFBamQsR0FDQSxZQUFBQSxFQUFBZ2YsT0FB
QSxjQUFBaGYsRUFBQWtFLE1BQUEsTUFHQWtaLEdBQUEsU0FBQXBkLEdBQ0EsTUFBQWlkLElBQUFq
ZCxLQUFBa0UsTUFBQSxFQUFBbEUsRUFBQTlILFFBQUEsSUFHQXNsQixHQUFBLFNBQUExbUIsR0FD
QSxhQUFBQSxJQUFBLElBQUFBLEdBc0ZBa2pCLElBQ0FrcUIsSUFBQSw2QkFDQUMsS0FBQSxzQ0FH
QUMsR0FBQTFzQyxFQUNBLHNuQkFlQXNoQixHQUFBdGhCLEVBQ0Esa05BR0EsR0FHQSs2QixHQUFB
LFNBQUF6dkIsR0FBK0IsY0FBQUEsR0FFL0I2UCxHQUFBLFNBQUE3UCxHQUNBLE1BQUFvaEMsSUFB
QXBoQyxJQUFBZ1csR0FBQWhXLElBY0FrVyxHQUFBdGpCLE9BQUFrQyxPQUFBLE1BeUdBdXNDLEdB
QUF6dUMsT0FBQXFuQyxRQUNBenNCLGNBQUFrSixHQUNBSSxtQkFDQUcsa0JBQ0FDLGlCQUNBQyxn
QkFDQUcsZUFDQUMsZUFDQWxDLGNBQ0FtQyxlQUNBYixXQUNBYyxrQkFDQVosa0JBS0FnQixJQUNB
L2lCLE9BQUEsU0FBQTBuQixFQUFBMWMsR0FDQTZYLEdBQUE3WCxJQUVBckMsT0FBQSxTQUFBOGEs
RUFBQXpZLEdBQ0F5WSxFQUFBdFksS0FBQTRYLE1BQUEvWCxFQUFBRyxLQUFBNFgsTUFDQUYsR0FB
QVksR0FBQSxHQUNBWixHQUFBN1gsS0FHQXErQixRQUFBLFNBQUFyK0IsR0FDQTZYLEdBQUE3WCxH
QUFBLEtBNkNBNlksR0FBQSxHQUFBL1ksSUFBQSxVQUVBMGhDLElBQUEsaURBNG5CQTlqQyxJQUNB
MUksT0FBQXdqQixHQUNBN2EsT0FBQTZhLEdBQ0E2bEIsUUFBQSxTQUFBcitCLEdBQ0F3WSxHQUFB
eFksRUFBQTZZLE1Bc0VBYSxHQUFBNW1CLE9BQUFrQyxPQUFBLE1BcUNBeXNDLElBQ0ExcEIsR0FD
QXJhLElBdUVBNkUsSUFDQXZOLE9BQUE4a0IsR0FDQW5jLE9BQUFtYyxJQW9DQTRuQixJQUNBMXND
LE9BQUE0bEIsR0FDQWpkLE9BQUFpZCxJQUtBdUIsR0FBQSxnQkFzV0E2RCxHQUFBLE1BQ0FMLEdB
QUEsTUFzT0F6QyxJQUNBbG9CLE9BQUE0ckIsR0FDQWpqQixPQUFBaWpCLElBcUZBelAsSUFDQW5j
LE9BQUE2ckIsR0FDQWxqQixPQUFBa2pCLElBS0FpQixHQUFBL3JCLEVBQUEsU0FBQTRyQyxHQUNB
LEdBQUF6cUMsTUFDQTBxQyxFQUFBLGdCQUNBQyxFQUFBLE9BT0EsT0FOQUYsR0FBQXpzQyxNQUFB
MHNDLEdBQUE3MEIsUUFBQSxTQUFBdlgsR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FBQXFvQyxHQUFB
cm9DLEVBQUFOLE1BQUEyc0MsRUFDQWhFLEdBQUF6b0MsT0FBQSxJQUFBOEIsRUFBQTJtQyxFQUFB
LEdBQUF0aUIsUUFBQXNpQixFQUFBLEdBQUF0aUIsV0FHQXJrQixJQXlEQTRxQyxHQUFBLE1BQ0FD
LEdBQUEsaUJBQ0F2ZixHQUFBLFNBQUF4YixFQUFBOUosRUFBQWxKLEdBRUEsR0FBQTh0QyxHQUFB
aHBDLEtBQUFvRSxHQUNBOEosRUFBQTBhLE1BQUFzZ0IsWUFBQTlrQyxFQUFBbEosT0FDRyxJQUFB
K3RDLEdBQUFqcEMsS0FBQTlFLEdBQ0hnVCxFQUFBMGEsTUFBQXNnQixZQUFBOWtDLEVBQUFsSixF
QUFBOHVCLFFBQUFpZixHQUFBLHFCQUNHLENBQ0gsR0FBQUUsR0FBQUMsR0FBQWhsQyxFQUNBLElB
QUFyRyxNQUFBYSxRQUFBMUQsR0FJQSxPQUFBbUIsR0FBQSxFQUFBeUssRUFBQTVMLEVBQUFvQixP
QUF1Q0QsRUFBQXlLLEVBQVN6SyxJQUNoRDZSLEVBQUEwYSxNQUFBdWdCLEdBQUFqdUMsRUFBQW1C
LE9BR0E2UixHQUFBMGEsTUFBQXVnQixHQUFBanVDLElBS0FtdUMsSUFBQSxxQkFHQUQsR0FBQW5z
QyxFQUFBLFNBQUFpSixHQUdBLEdBRkFraUMsT0FBQTdxQixTQUFBM0ksY0FBQSxPQUFBZ1UsTUFF
QSxZQURBMWlCLEVBQUE3QixHQUFBNkIsS0FDQUEsSUFBQWtpQyxJQUNBLE1BQUFsaUMsRUFHQSxR
QURBb2pDLEdBQUFwakMsRUFBQWtkLE9BQUEsR0FBQXFkLGNBQUF2NkIsRUFBQW9DLE1BQUEsR0FD
QWpNLEVBQUEsRUFBaUJBLEVBQUFndEMsR0FBQS9zQyxPQUF3QkQsSUFBQSxDQUN6QyxHQUFBK0gs
R0FBQWlsQyxHQUFBaHRDLEdBQUFpdEMsQ0FDQSxJQUFBbGxDLElBQUFna0MsSUFDQSxNQUFBaGtD
LE1BZ0RBd2tCLElBQ0Exc0IsT0FBQWt0QixHQUNBdmtCLE9BQUF1a0IsSUFvRkFnQixHQUFBbnRC
LEVBQUEsU0FBQW1ILEdBQ0EsT0FDQTJvQixXQUFBM29CLEVBQUEsU0FDQTRvQixhQUFBNW9CLEVB
QUEsWUFDQTZvQixpQkFBQTdvQixFQUFBLGdCQUNBZ3JCLFdBQUFockIsRUFBQSxTQUNBa3JCLGFB
QUFsckIsRUFBQSxZQUNBaXJCLGlCQUFBanJCLEVBQUEsbUJBSUFtbEMsR0FBQS9vQyxLQUFBNGdC
LEdBQ0EySixHQUFBLGFBQ0FpQixHQUFBLFlBR0FSLEdBQUEsYUFDQVIsR0FBQSxnQkFDQWEsR0FB
QSxZQUNBWixHQUFBLGNBQ0FzZSxVQUVBanZDLEtBQUFrakIsT0FBQWdzQixxQkFDQWx2QyxLQUFB
a2pCLE9BQUFpc0Isd0JBRUFqZSxHQUFBLG1CQUNBUixHQUFBLDJCQUVBMXdCLEtBQUFrakIsT0FB
QWtzQixvQkFDQXB2QyxLQUFBa2pCLE9BQUFtc0IsdUJBRUE5ZCxHQUFBLGtCQUNBWixHQUFBLHNC
QUtBLElBQUFYLElBQUE5cEIsSUFBQWdkLE9BQUFvc0Isc0JBQ0Fwc0IsT0FBQW9zQixzQkFBQXhz
QyxLQUFBb2dCLFFBQ0F6UixXQXNEQW1nQixHQUFBLHlCQWlYQVUsR0FBQXBzQixJQUNBdEUsT0FB
QTB6QixHQUNBaWEsU0FBQWphLEdBQ0FwekIsT0FBQSxTQUFBMEssRUFBQStuQixJQUVBLElBQUEv
bkIsRUFBQUcsS0FBQXVuQixLQUNBSSxHQUFBOW5CLEVBQUErbkIsR0FFQUEsU0FLQTZhLElBQ0Fy
Z0MsR0FDQW0vQixHQUNBeGtCLEdBQ0EvTCxHQUNBdVEsR0FDQWdFLElBT0FsSixHQUFBb21CLEdB
QUEvbEMsT0FBQTRrQyxJQUVBb0IsR0E1ckVBLFNBQUFDLEdBZ0JBLFFBQUFDLEdBQUF6aUMsR0FD
QSxVQUFBUixJQUFBeWhDLEVBQUExcUIsUUFBQXZXLEdBQUFqTCx3QkFBMkRqQyxHQUFBa04sR0FH
M0QsUUFBQTBpQyxHQUFBQyxFQUFBOTlCLEdBQ0EsUUFBQTFELEtBQ0EsS0FBQUEsRUFBQTBELFdB
Q0ErOUIsRUFBQUQsR0FJQSxNQURBeGhDLEdBQUEwRCxZQUNBMUQsRUFHQSxRQUFBeWhDLEdBQUFs
OEIsR0FDQSxHQUFBbkosR0FBQTBqQyxFQUFBaHNCLFdBQUF2TyxFQUVBM1QsR0FBQXdLLElBQ0Ew
akMsRUFBQS9wQixZQUFBM1osRUFBQW1KLEdBS0EsUUFBQW04QixHQUFBbmpDLEVBQUFvakMsRUFB
QTcwQixFQUFBQyxFQUFBNjBCLEdBRUEsR0FEQXJqQyxFQUFBOG1CLGNBQUF1YyxHQUNBeDFCLEVB
QUE3TixFQUFBb2pDLEVBQUE3MEIsRUFBQUMsR0FBQSxDQUlBLEdBQUFyTyxHQUFBSCxFQUFBRyxL
QUNBQyxFQUFBSixFQUFBSSxTQUNBRixFQUFBRixFQUFBRSxHQUNBN00sR0FBQTZNLElBbUJBRixF
QUFBTSxJQUFBTixFQUFBVSxHQUNBNmdDLEVBQUF2cUIsZ0JBQUFoWCxFQUFBVSxHQUFBUixHQUNB
cWhDLEVBQUE3ekIsY0FBQXhOLEVBQUFGLEdBQ0FzakMsRUFBQXRqQyxHQUlBdWpDLEVBQUF2akMs
RUFBQUksRUFBQWdqQyxHQUNBL3ZDLEVBQUE4TSxJQUNBcWpDLEVBQUF4akMsRUFBQW9qQyxHQUVB
aEYsRUFBQTd2QixFQUFBdk8sRUFBQU0sSUFBQWtPLElBTUtsYixFQUFBME0sRUFBQVksWUFDTFos
RUFBQU0sSUFBQWloQyxFQUFBbnFCLGNBQUFwWCxFQUFBSyxNQUNBKzlCLEVBQUE3dkIsRUFBQXZP
LEVBQUFNLElBQUFrTyxLQUVBeE8sRUFBQU0sSUFBQWloQyxFQUFBcHFCLGVBQUFuWCxFQUFBSyxN
QUNBKzlCLEVBQUE3dkIsRUFBQXZPLEVBQUFNLElBQUFrTyxLQUlBLFFBQUFYLEdBQUE3TixFQUFB
b2pDLEVBQUE3MEIsRUFBQUMsR0FDQSxHQUFBclosR0FBQTZLLEVBQUFHLElBQ0EsSUFBQTlNLEVB
QUE4QixHQUFBLENBQ0EsR0FBQXN1QyxHQUFBcHdDLEVBQUEyTSxFQUFBb1Ysb0JBQUFqZ0IsRUFB
QThvQyxTQVFBLElBUEE1cUMsRUFBQThCLElBQUErTSxPQUFBN08sRUFBQThCLElBQUE0b0MsT0FD
QTVvQyxFQUFBNkssR0FBQSxFQUFBdU8sRUFBQUMsR0FNQW5iLEVBQUEyTSxFQUFBb1YsbUJBS0Es
TUFKQXN1QixHQUFBMWpDLEVBQUFvakMsR0FDQTl2QyxFQUFBbXdDLElBQ0FFLEVBQUEzakMsRUFB
QW9qQyxFQUFBNzBCLEVBQUFDLElBRUEsR0FLQSxRQUFBazFCLEdBQUExakMsRUFBQW9qQyxHQUNB
L3ZDLEVBQUEyTSxFQUFBRyxLQUFBeWpDLGlCQUNBUixFQUFBcHBDLEtBQUF4RCxNQUFBNHNDLEVB
QUFwakMsRUFBQUcsS0FBQXlqQyxlQUNBNWpDLEVBQUFHLEtBQUF5akMsY0FBQSxNQUVBNWpDLEVB
QUFNLElBQUFOLEVBQUFvVixrQkFBQWxPLElBQ0EyOEIsRUFBQTdqQyxJQUNBd2pDLEVBQUF4akMs
RUFBQW9qQyxHQUNBRSxFQUFBdGpDLEtBSUE2WCxHQUFBN1gsR0FFQW9qQyxFQUFBcHBDLEtBQUFn
RyxJQUlBLFFBQUEyakMsR0FBQTNqQyxFQUFBb2pDLEVBQUE3MEIsRUFBQUMsR0FPQSxJQU5BLEdB
QUFyWixHQUtBMnVDLEVBQUE5akMsRUFDQThqQyxFQUFBMXVCLG1CQUVBLEdBREEwdUIsSUFBQTF1
QixrQkFBQWpOLE9BQ0E5VSxFQUFBOEIsRUFBQTJ1QyxFQUFBM2pDLE9BQUE5TSxFQUFBOEIsSUFB
QXV3QixZQUFBLENBQ0EsSUFBQXZ3QixFQUFBLEVBQW1CQSxFQUFBNHBDLEVBQUE0RCxTQUFBdnRD
LFNBQXlCRCxFQUM1QzRwQyxFQUFBNEQsU0FBQXh0QyxHQUFBMGpCLEdBQUFpckIsRUFFQVYsR0FB
QXBwQyxLQUFBOHBDLEVBQ0EsT0FLQTFGLEVBQUE3dkIsRUFBQXZPLEVBQUFNLElBQUFrTyxHQUdB
LFFBQUE0dkIsR0FBQXZnQyxFQUFBeUMsRUFBQXlqQyxHQUNBMXdDLEVBQUF3SyxLQUNBeEssRUFB
QTB3QyxHQUNBQSxFQUFBeHVCLGFBQUExWCxHQUNBMGpDLEVBQUFscUIsYUFBQXhaLEVBQUF5QyxF
QUFBeWpDLEdBR0F4QyxFQUFBOXBCLFlBQUE1WixFQUFBeUMsSUFLQSxRQUFBaWpDLEdBQUF2akMs
RUFBQUksRUFBQWdqQyxHQUNBLEdBQUF2c0MsTUFBQWEsUUFBQTBJLEdBQ0EsT0FBQWpMLEdBQUEs
RUFBcUJBLEVBQUFpTCxFQUFBaEwsU0FBcUJELEVBQzFDZ3VDLEVBQUEvaUMsRUFBQWpMLEdBQUFp
dUMsRUFBQXBqQyxFQUFBTSxJQUFBLGFBRUs5TSxHQUFBd00sRUFBQUssT0FDTGtoQyxFQUFBOXBC
LFlBQUF6WCxFQUFBTSxJQUFBaWhDLEVBQUFwcUIsZUFBQW5YLEVBQUFLLE9BSUEsUUFBQXdqQyxH
QUFBN2pDLEdBQ0EsS0FBQUEsRUFBQW9WLG1CQUNBcFYsSUFBQW9WLGtCQUFBak4sTUFFQSxPQUFB
OVUsR0FBQTJNLEVBQUFFLEtBR0EsUUFBQXNqQyxHQUFBeGpDLEVBQUFvakMsR0FDQSxPQUFBalMs
R0FBQSxFQUFxQkEsRUFBQTROLEVBQUEvcEMsT0FBQUksU0FBeUIrN0IsRUFDOUM0TixFQUFBL3BD
LE9BQUFtOEIsR0FBQXRZLEdBQUE3WSxFQUVBN0ssR0FBQTZLLEVBQUFHLEtBQUErQixLQUNBN08s
RUFBQThCLEtBQ0E5QixFQUFBOEIsRUFBQUgsU0FBNEJHLEVBQUFILE9BQUE2akIsR0FBQTdZLEdB
QzVCM00sRUFBQThCLEVBQUFpcEMsU0FBNEJnRixFQUFBcHBDLEtBQUFnRyxJQU81QixRQUFBc2pD
LEdBQUF0akMsR0FHQSxJQUZBLEdBQUE3SyxHQUNBNnVDLEVBQUFoa0MsRUFDQWdrQyxHQUNBM3dD
LEVBQUE4QixFQUFBNnVDLEVBQUF6akMsVUFBQWxOLEVBQUE4QixJQUFBcUssU0FBQXlrQyxXQUNB
MUMsRUFBQXhxQixhQUFBL1csRUFBQU0sSUFBQW5MLEVBQUEsSUFFQTZ1QyxJQUFBbm1DLE1BR0F4
SyxHQUFBOEIsRUFBQXd4QixLQUNBeHhCLElBQUE2SyxFQUFBTyxTQUNBbE4sRUFBQThCLElBQUFx
SyxTQUFBeWtDLFdBRUExQyxFQUFBeHFCLGFBQUEvVyxFQUFBTSxJQUFBbkwsRUFBQSxJQUlBLFFB
QUErdUMsR0FBQTMxQixFQUFBQyxFQUFBek4sRUFBQW9qQyxFQUFBNXJCLEVBQUE2cUIsR0FDQSxL
QUFVZSxHQUFBNXJCLElBQW9CNHJCLEVBQzlCaEIsRUFBQXBpQyxFQUFBb2pDLEdBQUFmLEVBQUE3
MEIsRUFBQUMsR0FJQSxRQUFBNDFCLEdBQUFwa0MsR0FDQSxHQUFBN0ssR0FBQTJULEVBQ0EzSSxF
QUFBSCxFQUFBRyxJQUNBLElBQUE5TSxFQUFBOE0sR0FFQSxJQURBOU0sRUFBQThCLEVBQUFnTCxF
QUFBK0IsT0FBQTdPLEVBQUE4QixJQUFBa3BDLFVBQXlEbHBDLEVBQUE2SyxHQUN6RDdLLEVBQUEs
RUFBaUJBLEVBQUE0cEMsRUFBQVYsUUFBQWpwQyxTQUF3QkQsRUFBTzRwQyxFQUFBVixRQUFBbHBD
LEdBQUE2SyxFQUVoRCxJQUFBM00sRUFBQThCLEVBQUE2SyxFQUFBSSxVQUNBLElBQUEwSSxFQUFB
LEVBQWlCQSxFQUFBOUksRUFBQUksU0FBQWhMLFNBQTJCMFQsRUFDNUNzN0IsRUFBQXBrQyxFQUFB
SSxTQUFBMEksSUFLQSxRQUFBdTdCLEdBQUE5MUIsRUFBQXhOLEVBQUFvakMsRUFBQTVyQixHQUNB
LEtBQVU0ckIsR0FBQTVyQixJQUFvQjRyQixFQUFBLENBQzlCLEdBQUFHLEdBQUF2akMsRUFBQW9q
QyxFQUNBOXdDLEdBQUFpeEMsS0FDQWp4QyxFQUFBaXhDLEVBQUFwa0MsTUFDQXFrQyxFQUFBRCxH
QUNBRixFQUFBRSxJQUVBcEIsRUFBQW9CLEVBQUFoa0MsT0FNQSxRQUFBaWtDLEdBQUF2a0MsRUFB
QStuQixHQUNBLEdBQUExMEIsRUFBQTAwQixJQUFBMTBCLEVBQUEyTSxFQUFBRyxNQUFBLENBQ0Es
R0FBQWhMLEdBQ0FnUSxFQUFBNDVCLEVBQUF6cEMsT0FBQUYsT0FBQSxDQWFBLEtBWkEvQixFQUFB
MDBCLEdBR0FBLEVBQUE1aUIsYUFHQTRpQixFQUFBaWIsRUFBQWhqQyxFQUFBTSxJQUFBNkUsR0FH
QTlSLEVBQUE4QixFQUFBNkssRUFBQW9WLG9CQUFBL2hCLEVBQUE4QixJQUFBZ1QsU0FBQTlVLEVB
QUE4QixFQUFBZ0wsT0FDQW9rQyxFQUFBcHZDLEVBQUE0eUIsR0FFQTV5QixFQUFBLEVBQWlCQSxF
QUFBNHBDLEVBQUF6cEMsT0FBQUYsU0FBdUJELEVBQ3hDNHBDLEVBQUF6cEMsT0FBQUgsR0FBQTZL
LEVBQUErbkIsRUFFQTEwQixHQUFBOEIsRUFBQTZLLEVBQUFHLEtBQUErQixPQUFBN08sRUFBQThC
LElBQUFHLFFBQ0FILEVBQUE2SyxFQUFBK25CLEdBRUFBLFFBR0FtYixHQUFBbGpDLEVBQUFNLEtB
SUEsUUFBQWtrQyxHQUFBajJCLEVBQUFrMkIsRUFBQUMsRUFBQXRCLEVBQUF1QixHQWdCQSxJQWZB
LEdBUUFDLEdBQUFDLEVBQUFDLEVBQUF0MkIsRUFSQXUyQixFQUFBLEVBQ0FDLEVBQUEsRUFDQUMs
RUFBQVIsRUFBQXJ2QyxPQUFBLEVBQ0E4dkMsRUFBQVQsRUFBQSxHQUNBVSxFQUFBVixFQUFBUSxH
QUNBRyxFQUFBVixFQUFBdHZDLE9BQUEsRUFDQWl3QyxFQUFBWCxFQUFBLEdBQ0FZLEVBQUFaLEVB
QUFVLEdBTUFHLEdBQUFaLEVBRUFJLEdBQUFFLEdBQUFELEdBQUFJLEdBQ0FseUMsRUFBQWd5QyxH
QUNBQSxFQUFBVCxJQUFBTSxHQUNPN3hDLEVBQUFpeUMsR0FDUEEsRUFBQVYsSUFBQVEsR0FDTy9z
QixHQUFBZ3RCLEVBQUFHLElBQ1BHLEVBQUFOLEVBQUFHLEVBQUFqQyxHQUNBOEIsRUFBQVQsSUFB
QU0sR0FDQU0sRUFBQVgsSUFBQU0sSUFDTzlzQixHQUFBaXRCLEVBQUFHLElBQ1BFLEVBQUFMLEVB
QUFHLEVBQUFsQyxHQUNBK0IsRUFBQVYsSUFBQVEsR0FDQUssRUFBQVosSUFBQVUsSUFDT2x0QixH
QUFBZ3RCLEVBQUFJLElBQ1BFLEVBQUFOLEVBQUFJLEVBQUFsQyxHQUNBbUMsR0FBQWhFLEVBQUFs
cUIsYUFBQTlJLEVBQUEyMkIsRUFBQTVrQyxJQUFBaWhDLEVBQUE3cEIsWUFBQXl0QixFQUFBN2tD
LE1BQ0E0a0MsRUFBQVQsSUFBQU0sR0FDQU8sRUFBQVosSUFBQVUsSUFDT2x0QixHQUFBaXRCLEVB
QUFFLElBQ1BHLEVBQUFMLEVBQUFFLEVBQUFqQyxHQUNBbUMsR0FBQWhFLEVBQUFscUIsYUFBQTlJ
LEVBQUE0MkIsRUFBQTdrQyxJQUFBNGtDLEVBQUE1a0MsS0FDQTZrQyxFQUFBVixJQUFBUSxHQUNB
SSxFQUFBWCxJQUFBTSxLQUVBOXhDLEVBQUEweEMsS0FBbUNBLEVBQUF2c0IsR0FBQW9zQixFQUFB
TSxFQUFBRSxJQUNuQ0osRUFBQXh4QyxFQUFBZ3lDLEVBQUF4dkMsS0FBQSt1QyxFQUFBUyxFQUFB
eHZDLEtBQUEsS0FDQTNDLEVBQUEyeEMsSUFDQTFCLEVBQUFrQyxFQUFBakMsRUFBQTcwQixFQUFB
MjJCLEVBQUE1a0MsS0FDQStrQyxFQUFBWCxJQUFBTSxLQUVBRixFQUFBTCxFQUFBSSxHQVFBM3NC
LEdBQUE0c0IsRUFBQU8sSUFDQUcsRUFBQVYsRUFBQU8sRUFBQWpDLEdBQ0FxQixFQUFBSSxPQUFB
enhDLEdBQ0FteUMsR0FBQWhFLEVBQUFscUIsYUFBQTlJLEVBQUF1MkIsRUFBQXhrQyxJQUFBNGtD
LEVBQUE1a0MsS0FDQStrQyxFQUFBWCxJQUFBTSxLQUdBN0IsRUFBQWtDLEVBQUFqQyxFQUFBNzBC
LEVBQUEyMkIsRUFBQTVrQyxLQUNBK2tDLEVBQUFYLElBQUFNLEtBS0FELEdBQUFFLEdBQ0F6MkIs
RUFBQXRiLEVBQUF3eEMsRUFBQVUsRUFBQSxTQUFBVixFQUFBVSxFQUFBLEdBQUE5a0MsSUFDQTRq
QyxFQUFBMzFCLEVBQUFDLEVBQUFrMkIsRUFBQU0sRUFBQUksRUFBQWhDLElBQ0s0QixFQUFBSSxH
QUNMZixFQUFBOTFCLEVBQUFrMkIsRUFBQU0sRUFBQUUsR0FJQSxRQUFBTyxHQUFBL3NCLEVBQUF6
WSxFQUFBb2pDLEVBQUF1QixHQUNBLEdBQUFsc0IsSUFBQXpZLEVBQUEsQ0FJQSxHQUFBTSxHQUFB
TixFQUFBTSxJQUFBbVksRUFBQW5ZLEdBRUEsSUFBQWhOLEVBQUFtbEIsRUFBQUwsb0JBTUEsWUFM
QS9rQixFQUFBMk0sRUFBQVMsYUFBQXVELFVBQ0F5aEMsRUFBQWh0QixFQUFBblksSUFBQU4sRUFB
QW9qQyxHQUVBcGpDLEVBQUFvWSxvQkFBQSxFQVNBLElBQUE5a0IsRUFBQTBNLEVBQUFXLFdBQ0Fy
TixFQUFBbWxCLEVBQUE5WCxXQUNBWCxFQUFBbkssTUFBQTRpQixFQUFBNWlCLE1BQ0F2QyxFQUFB
ME0sRUFBQWEsV0FBQXZOLEVBQUEwTSxFQUFBNFIsU0FHQSxZQURBNVIsRUFBQW9WLGtCQUFBcUQs
RUFBQXJELGtCQUlBLElBQUFqZ0IsR0FDQWdMLEVBQUFILEVBQUFHLElBQ0E5TSxHQUFBOE0sSUFB
QTlNLEVBQUE4QixFQUFBZ0wsRUFBQStCLE9BQUE3TyxFQUFBOEIsSUFBQWdwQyxXQUNBaHBDLEVB
QUFzakIsRUFBQXpZLEVBR0EsSUFBQXlrQyxHQUFBaHNCLEVBQUFyWSxTQUNBa2tDLEVBQUF0a0Ms
RUFBQUksUUFDQSxJQUFBL00sRUFBQThNLElBQUEwakMsRUFBQTdqQyxHQUFBLENBQ0EsSUFBQTdL
LEVBQUEsRUFBaUJBLEVBQUE0cEMsRUFBQXBoQyxPQUFBdkksU0FBdUJELEVBQU80cEMsRUFBQXBo
QyxPQUFBeEksR0FBQXNqQixFQUFBelksRUFDL0MzTSxHQUFBOEIsRUFBQWdMLEVBQUErQixPQUFB
N08sRUFBQThCLElBQUF3SSxTQUF3RHhJLEVBQUFzakIsRUFBQXpZLEdBRXhEOU0sRUFBQThNLEVB
QUFLLE1BQ0FoTixFQUFBb3hDLElBQUFweEMsRUFBQWl4QyxHQUNBRyxJQUFBSCxHQUEyQkUsRUFB
QWxrQyxFQUFBbWtDLEVBQUFILEVBQUFsQixFQUFBdUIsR0FDcEJ0eEMsRUFBQWl4QyxJQUNQanhD
LEVBQUFvbEIsRUFBQXBZLE9BQW1Da2hDLEVBQUE1cEIsZUFBQXJYLEVBQUEsSUFDbkM0akMsRUFB
QTVqQyxFQUFBLEtBQUFna0MsRUFBQSxFQUFBQSxFQUFBbHZDLE9BQUEsRUFBQWd1QyxJQUNPL3ZD
LEVBQUFveEMsR0FDUEosRUFBQS9qQyxFQUFBbWtDLEVBQUEsRUFBQUEsRUFBQXJ2QyxPQUFBLEdB
Q08vQixFQUFBb2xCLEVBQUFwWSxPQUNQa2hDLEVBQUE1cEIsZUFBQXJYLEVBQUEsSUFFS21ZLEVB
QUFwWSxPQUFBTCxFQUFBSyxNQUNMa2hDLEVBQUE1cEIsZUFBQXJYLEVBQUFOLEVBQUFLLE1BRUFo
TixFQUFBOE0sSUFDQTlNLEVBQUE4QixFQUFBZ0wsRUFBQStCLE9BQUE3TyxFQUFBOEIsSUFBQXV3
QyxZQUEyRHZ3QyxFQUFBc2pCLEVBQUF6WSxJQUkzRCxRQUFBMmxDLEdBQUEzbEMsRUFBQWlKLEVB
QUEyOEIsR0FHQSxHQUFBdHlDLEVBQUFzeUMsSUFBQXZ5QyxFQUFBMk0sRUFBQW5DLFFBQ0FtQyxF
QUFBbkMsT0FBQXNDLEtBQUF5akMsY0FBQTM2QixNQUVBLFFBQUE5VCxHQUFBLEVBQXFCQSxFQUFB
OFQsRUFBQTdULFNBQWtCRCxFQUN2QzhULEVBQUE5VCxHQUFBZ0wsS0FBQStCLEtBQUFrOEIsT0FB
QW4xQixFQUFBOVQsSUFXQSxRQUFBc3dDLEdBQUFubEMsRUFBQU4sRUFBQW9qQyxHQUNBLEdBQUE5
dkMsRUFBQTBNLEVBQUFZLFlBQUF2TixFQUFBMk0sRUFBQVMsY0FHQSxNQUZBVCxHQUFBTSxNQUNB
TixFQUFBb1ksb0JBQUEsR0FDQSxDQU9BcFksR0FBQU0sS0FDQSxJQUFBSixHQUFBRixFQUFBRSxJ
QUNBQyxFQUFBSCxFQUFBRyxLQUNBQyxFQUFBSixFQUFBSSxRQUNBLElBQUEvTSxFQUFBOE0sS0FD
QTlNLEVBQUE4QixFQUFBZ0wsRUFBQStCLE9BQUE3TyxFQUFBOEIsSUFBQTRvQyxPQUFzRDVvQyxF
QUFBNkssR0FBQSxHQUN0RDNNLEVBQUE4QixFQUFBNkssRUFBQW9WLG9CQUdBLE1BREFzdUIsR0FB
QTFqQyxFQUFBb2pDLElBQ0EsQ0FHQSxJQUFBL3ZDLEVBQUE2TSxHQUFBLENBQ0EsR0FBQTdNLEVB
QUErTSxHQUVBLEdBQUFFLEVBQUF1bEMsZ0JBRVMsQ0FHVCxPQUZBQyxJQUFBLEVBQ0F0d0IsRUFB
QWxWLEVBQUF5bEMsV0FDQTVVLEVBQUEsRUFBMkJBLEVBQUEvd0IsRUFBQWhMLE9BQXVCKzdCLElB
QUEsQ0FDbEQsSUFBQTNiLElBQUFpd0IsRUFBQWp3QixFQUFBcFYsRUFBQSt3QixHQUFBaVMsR0FB
QSxDQUNBMEMsR0FBQSxDQUNBLE9BRUF0d0IsSUFBQWtDLFlBSUEsSUFBQW91QixHQUFBdHdCLEVB
U0EsYUF0QkErdEIsR0FBQXZqQyxFQUFBSSxFQUFBZ2pDLEVBMEJBLElBQUEvdkMsRUFBQThNLEdB
Q0EsT0FBQXRLLEtBQUFzSyxHQUNBLElBQUE2bEMsRUFBQW53QyxHQUFBLENBQ0EydEMsRUFBQXhq
QyxFQUFBb2pDLEVBQ0EsWUFJSzlpQyxHQUFBSCxPQUFBSCxFQUFBSyxPQUNMQyxFQUFBSCxLQUFB
SCxFQUFBSyxLQUVBLFVBOWVBLEdBQUFsTCxHQUFBMlQsRUFDQWkyQixLQUVBdmlCLEVBQUFzbUIs
RUFBQXRtQixRQUNBK2tCLEVBQUF1QixFQUFBdkIsT0FFQSxLQUFBcHNDLEVBQUEsRUFBYUEsRUFB
QXFzQyxHQUFBcHNDLFNBQWtCRCxFQUUvQixJQURBNHBDLEVBQUF5QyxHQUFBcnNDLE9BQ0EyVCxF
QUFBLEVBQWVBLEVBQUEwVCxFQUFBcG5CLFNBQW9CMFQsRUFDbkN6VixFQUFBbXBCLEVBQUExVCxH
QUFBMDRCLEdBQUFyc0MsTUFDQTRwQyxFQUFBeUMsR0FBQXJzQyxJQUFBNkUsS0FBQXdpQixFQUFB
MVQsR0FBQTA0QixHQUFBcnNDLElBMkJBLElBc1lBNndDLEdBQUFweEMsRUFBQSxnREFpRkEsaUJB
QUE2akIsRUFBQXpZLEVBQUFpSCxFQUFBMDlCLEVBQUFwMkIsRUFBQUMsR0FDQSxHQUFBdGIsRUFB
QThNLEdBRUEsWUFEQTNNLEVBQUFvbEIsSUFBNEIyckIsRUFBQTNyQixHQUk1QixJQUFBd3RCLElB
QUEsRUFDQTdDLElBRUEsSUFBQWx3QyxFQUFBdWxCLEdBRUF3dEIsR0FBQSxFQUNBOUMsRUFBQW5q
QyxFQUFBb2pDLEVBQUE3MEIsRUFBQUMsT0FDSyxDQUNMLEdBQUEwM0IsR0FBQTd5QyxFQUFBb2xC
LEVBQUFtTixTQUNBLEtBQUFzZ0IsR0FBQWh1QixHQUFBTyxFQUFBelksR0FFQXdsQyxFQUFBL3NC
LEVBQUF6WSxFQUFBb2pDLEVBQUF1QixPQUNPLENBQ1AsR0FBQXVCLEVBQUEsQ0FRQSxHQUpBLElB
QUF6dEIsRUFBQW1OLFVBQUFuTixFQUFBMHRCLGFBQUExTSxNQUNBaGhCLEVBQUErQixnQkFBQWlm
LElBQ0F4eUIsR0FBQSxHQUVBM1QsRUFBQTJULElBQ0F3K0IsRUFBQWh0QixFQUFBelksRUFBQW9q
QyxHQUVBLE1BREF1QyxHQUFBM2xDLEVBQUFvakMsR0FBQSxHQUNBM3FCLENBYUFBLEdBQUFzcUIs
RUFBQXRxQixHQUdBLEdBQUEydEIsR0FBQTN0QixFQUFBblksSUFDQStsQyxFQUFBOUUsRUFBQWhz
QixXQUFBNndCLEVBV0EsSUFWQWpELEVBQ0FuakMsRUFDQW9qQyxFQUlBZ0QsRUFBQTVnQixTQUFB
LEtBQUE2Z0IsRUFDQTlFLEVBQUE3cEIsWUFBQTB1QixJQUdBL3lDLEVBQUEyTSxFQUFBbkMsUUFB
QSxDQUlBLElBREEsR0FBQW1tQyxHQUFBaGtDLEVBQUFuQyxPQUNBbW1DLEdBQ0FBLEVBQUExakMs
SUFBQU4sRUFBQU0sSUFDQTBqQyxJQUFBbm1DLE1BRUEsSUFBQWdtQyxFQUFBN2pDLEdBQ0EsT0FB
QTdLLEdBQUEsRUFBMkJBLEVBQUE0cEMsRUFBQS9wQyxPQUFBSSxTQUF1QkQsRUFDbEQ0cEMsRUFB
QS9wQyxPQUFBRyxHQUFBMGpCLEdBQUE3WSxFQUFBbkMsUUFLQXhLLEVBQUFnekMsR0FDQWhDLEVB
QUFnQyxHQUFBNXRCLEdBQUEsS0FDU3BsQixFQUFBb2xCLEVBQUF2WSxNQUNUa2tDLEVBQUEzckIs
SUFNQSxNQURBa3RCLEdBQUEzbEMsRUFBQW9qQyxFQUFBNkMsR0FDQWptQyxFQUFBTSxPQTZtRGlD
aWhDLFdBQUEva0IsYUFPakM4cEIsR0FBQTF4QyxFQUFBLDRDQUdBc2xCLEtBRUE3RCxTQUFBb0ss
aUJBQUEsNkJBQ0EsR0FBQXpaLEdBQUFxUCxTQUFBa0wsYUFDQXZhLE1BQUF1L0IsUUFDQXBkLEdB
QUFuaUIsRUFBQSxVQUtBLElBQUF3L0IsS0FDQWp0QixTQUFBLFNBQUF2UyxFQUFBNGhCLEVBQUE1
b0IsR0FDQSxjQUFBQSxFQUFBRSxJQUFBLENBQ0EsR0FBQXdqQixHQUFBLFdBQ0FpRixHQUFBM2hC
LEVBQUE0aEIsRUFBQTVvQixFQUFBTyxTQUVBbWpCLE1BRUF4RCxJQUFBc2EsS0FDQTMxQixXQUFB
NmUsRUFBQSxHQUVBMWMsRUFBQXkvQixhQUFBMXhDLElBQUFsQixLQUFBbVQsRUFBQWhLLFFBQUEr
ckIsU0FDSyxhQUFBL29CLEVBQUFFLEtBQUFvbUMsR0FBQXQvQixFQUFBNUosU0FDTDRKLEVBQUF3
YSxZQUFBb0gsRUFBQW5QLFVBQ0FtUCxFQUFBblAsVUFBQXFHLE9BS0E5WSxFQUFBeVosaUJBQUEs
U0FBQXlJLElBQ0F1UixLQUNBenpCLEVBQUF5WixpQkFBQSxtQkFBQXdJLElBQ0FqaUIsRUFBQXla
LGlCQUFBLGlCQUFBeUksS0FHQWhQLEtBQ0FsVCxFQUFBdS9CLFFBQUEsTUFLQWp0QixpQkFBQSxT
QUFBdFMsRUFBQTRoQixFQUFBNW9CLEdBQ0EsY0FBQUEsRUFBQUUsSUFBQSxDQUNBeW9CLEdBQUEz
aEIsRUFBQTRoQixFQUFBNW9CLEVBQUFPLFFBS0EsSUFBQW1tQyxHQUFBMS9CLEVBQUF5L0IsV0FD
QXovQixFQUFBeS9CLGFBQUExeEMsSUFBQWxCLEtBQUFtVCxFQUFBaEssUUFBQStyQixLQUNBcVAs
S0FBQSxTQUFBdU8sRUFBQXh4QyxHQUEyQyxPQUFBbUMsRUFBQXF2QyxFQUFBRCxFQUFBdnhDLE9B
QzNDZzBCLEdBQUFuaUIsRUFBQSxhQXVFQTBnQixJQUNBeHhCLEtBQUEsU0FBQThRLEVBQUErUSxF
QUFBL1gsR0FDQSxHQUFBaE4sR0FBQStrQixFQUFBL2tCLEtBRUFnTixHQUFBdXBCLEdBQUF2cEIs
RUFDQSxJQUFBNG1DLEdBQUE1bUMsRUFBQUcsTUFBQUgsRUFBQUcsS0FBQXVsQixXQUNBbWhCLEVB
QUE3L0IsRUFBQTgvQixtQkFDQSxTQUFBOS9CLEVBQUEwYSxNQUFBcWxCLFFBQUEsR0FBQS8vQixF
QUFBMGEsTUFBQXFsQixPQUNBL3pDLElBQUE0ekMsR0FDQTVtQyxFQUFBRyxLQUFBdW5CLE1BQUEs
RUFDQXBDLEdBQUF0bEIsRUFBQSxXQUNBZ0gsRUFBQTBhLE1BQUFxbEIsUUFBQUYsS0FHQTcvQixF
QUFBMGEsTUFBQXFsQixRQUFBL3pDLEVBQUE2ekMsRUFBQSxRQUlBbHBDLE9BQUEsU0FBQXFKLEVB
QUErUSxFQUFBL1gsR0FDQSxHQUFBaE4sR0FBQStrQixFQUFBL2tCLEtBSUFBLEtBSEEra0IsRUFB
QXFCLFdBSUFwWixFQUFBdXBCLEdBQUF2cEIsR0FDQUEsRUFBQUcsTUFBQUgsRUFBQUcsS0FBQXVs
QixZQUVBMWxCLEVBQUFHLEtBQUF1bkIsTUFBQSxFQUNBMTBCLEVBQ0FzeUIsR0FBQXRsQixFQUFB
LFdBQ0FnSCxFQUFBMGEsTUFBQXFsQixRQUFBLy9CLEVBQUE4L0IscUJBR0FoZixHQUFBOW5CLEVB
QUEsV0FDQWdILEVBQUEwYSxNQUFBcWxCLFFBQUEsVUFJQS8vQixFQUFBMGEsTUFBQXFsQixRQUFB
L3pDLEVBQUFnVSxFQUFBOC9CLG1CQUFBLFNBSUFFLE9BQUEsU0FDQWhnQyxFQUNBNGhCLEVBQ0E1
b0IsRUFDQXlZLEVBQ0FLLEdBRUFBLElBQ0E5UixFQUFBMGEsTUFBQXFsQixRQUFBLy9CLEVBQUE4
L0Isc0JBS0FHLElBQ0FoNUIsTUFBQXU0QixHQUNBOWUsU0FRQXdmLElBQ0FocUMsS0FBQXpJLE9B
Q0E4eEIsT0FBQXBuQixRQUNBOGpCLElBQUE5akIsUUFDQWdvQyxLQUFBMXlDLE9BQ0EySSxLQUFB
M0ksT0FDQW94QixXQUFBcHhCLE9BQ0F5ekIsV0FBQXp6QixPQUNBcXhCLGFBQUFyeEIsT0FDQTJ6
QixhQUFBM3pCLE9BQ0FzeEIsaUJBQUF0eEIsT0FDQTB6QixpQkFBQTF6QixPQUNBdXhCLFlBQUF2
eEIsT0FDQXl4QixrQkFBQXp4QixPQUNBd3hCLGNBQUF4eEIsT0FDQWl5QixVQUFBckIsT0FBQTV3
QixPQUFBM0IsU0FzREFzMEMsSUFDQWxxQyxLQUFBLGFBQ0FELE1BQUFpcUMsR0FDQTlnQyxVQUFB
LEVBRUFlLE9BQUEsU0FBQXFHLEdBQ0EsR0FBQW93QixHQUFBeGxDLEtBRUFnSSxFQUFBaEksS0FB
QW9ILFNBQUFzSSxlQUNBLElBQUExSCxJQUtBQSxJQUFBNlUsT0FBQSxTQUFBNWQsR0FBNkMsTUFB
QUEsR0FBQTZJLEtBQUFrWSxHQUFBL2dCLEtBRTdDK0ksRUFBQWhMLFFBQUEsQ0FhQSxHQUFBK3hD
LEdBQUEvdUMsS0FBQSt1QyxLQVlBdGQsRUFBQXpwQixFQUFBLEVBSUEsSUFBQTBwQixHQUFBMXhC
LEtBQUFxUCxRQUNBLE1BQUFvaUIsRUFLQSxJQUFBL3JCLEdBQUEwckIsR0FBQUssRUFFQSxLQUFB
L3JCLEVBQ0EsTUFBQStyQixFQUdBLElBQUF6eEIsS0FBQWl2QyxTQUNBLE1BQUF6ZCxJQUFBcGMs
RUFBQXFjLEVBTUEsSUFBQXRyQixHQUFBLGdCQUFBbkcsS0FBQSxRQUNBMEYsR0FBQWpJLElBQUEs
TUFBQWlJLEVBQUFqSSxJQUNBaUksRUFBQThDLFVBQ0FyQyxFQUFBLFVBQ0FBLEVBQUFULEVBQUFv
QyxJQUNBMU0sRUFBQXNLLEVBQUFqSSxLQUNBLElBQUFwQixPQUFBcUosRUFBQWpJLEtBQUFILFFB
QUE2SSxHQUFBVCxFQUFBakksSUFBQTBJLEVBQUFULEVBQUFqSSxJQUNBaUksRUFBQWpJLEdBRUEs
SUFBQXNLLElBQUFyQyxFQUFBcUMsT0FBQXJDLEVBQUFxQyxVQUE4Q3VsQixXQUFBZ0UsR0FBQXR4
QixNQUM5Q2t2QyxFQUFBbHZDLEtBQUErUCxPQUNBNmhCLEVBQUFSLEdBQUE4ZCxFQVFBLElBSkF4
cEMsRUFBQXFDLEtBQUF6QyxZQUFBSSxFQUFBcUMsS0FBQXpDLFdBQUEwNkIsS0FBQSxTQUFBM3FC
LEdBQTBFLGVBQUFBLEVBQUF2USxTQUMxRVksRUFBQXFDLEtBQUF1bkIsTUFBQSxHQUlBc0MsR0FD
QUEsRUFBQTdwQixPQUNBNHBCLEdBQUFqc0IsRUFBQWtzQixLQUNBNVIsR0FBQTRSLEdBQ0EsQ0FH
QSxHQUFBblAsR0FBQW1QLE1BQUE3cEIsS0FBQXVsQixXQUFBNXVCLEtBQXFFcUosR0FFckUsZUFB
QWduQyxFQU9BLE1BTEEvdUMsTUFBQWl2QyxVQUFBLEVBQ0FybEMsR0FBQTZZLEVBQUEsd0JBQ0Er
aUIsRUFBQXlKLFVBQUEsRUFDQXpKLEVBQUF0NUIsaUJBRUFzbEIsR0FBQXBjLEVBQUFxYyxFQUNP
LGVBQUFzZCxFQUFBLENBQ1AsR0FBQS91QixHQUFBdGEsR0FDQSxNQUFBd3BDLEVBRUEsSUFBQUMs
R0FDQXZmLEVBQUEsV0FBd0N1ZixJQUN4Q3ZsQyxJQUFBN0IsRUFBQSxhQUFBNm5CLEdBQ0FobUIs
R0FBQTdCLEVBQUEsaUJBQUE2bkIsR0FDQWhtQixHQUFBNlksRUFBQSxzQkFBQWlOLEdBQWdFeWYs
RUFBQXpmLEtBSWhFLE1BQUErQixNQWlCQTVzQixHQUFBbkcsR0FDQW9KLElBQUF6TCxPQUNBK3lD
LFVBQUEveUMsUUFDQ3l5QyxVQUVEanFDLElBQUFrcUMsSUFFQSxJQUFBTSxLQUNBeHFDLFNBRUFr
SyxPQUFBLFNBQUFxRyxHQVFBLE9BUEF0TixHQUFBOUgsS0FBQThILEtBQUE5SCxLQUFBcVAsT0FB
QXRILEtBQUFELEtBQUEsT0FDQW5MLEVBQUFqQyxPQUFBa0MsT0FBQSxNQUNBMHlDLEVBQUF0dkMs
S0FBQXN2QyxhQUFBdHZDLEtBQUFnSSxTQUNBdW5DLEVBQUF2dkMsS0FBQW9RLE9BQUFqSixZQUNB
YSxFQUFBaEksS0FBQWdJLFlBQ0F3bkMsRUFBQWxlLEdBQUF0eEIsTUFFQWpELEVBQUEsRUFBbUJB
LEVBQUF3eUMsRUFBQXZ5QyxPQUF3QkQsSUFBQSxDQUMzQyxHQUFBa0MsR0FBQXN3QyxFQUFBeHlD
LEVBQ0EsSUFBQWtDLEVBQUE2SSxJQUNBLFNBQUE3SSxFQUFBeEIsS0FBQSxJQUFBcEIsT0FBQTRD
LEVBQUF4QixLQUFBSCxRQUFBLFdBQ0EwSyxFQUFBcEcsS0FBQTNDLEdBQ0F0QyxFQUFBc0MsRUFB
QXhCLEtBQUF3QixHQUNXQSxFQUFBOEksT0FBQTlJLEVBQUE4SSxVQUF1QnVsQixXQUFBa2lCLFFB
U2xDLEdBQUFGLEVBQUEsQ0FHQSxPQUZBRyxNQUNBQyxLQUNBM1csRUFBQSxFQUF1QkEsRUFBQXVX
LEVBQUF0eUMsT0FBMkIrN0IsSUFBQSxDQUNsRCxHQUFBNFcsR0FBQUwsRUFBQXZXLEVBQ0E0VyxH
QUFBNW5DLEtBQUF1bEIsV0FBQWtpQixFQUNBRyxFQUFBNW5DLEtBQUFxcUIsSUFBQXVkLEVBQUF6
bkMsSUFBQStwQix3QkFDQXQxQixFQUFBZ3pDLEVBQUFseUMsS0FDQWd5QyxFQUFBN3RDLEtBQUEr
dEMsR0FFQUQsRUFBQTl0QyxLQUFBK3RDLEdBR0EzdkMsS0FBQXl2QyxLQUFBcjZCLEVBQUF0TixF
QUFBLEtBQUEybkMsR0FDQXp2QyxLQUFBMHZDLFVBR0EsTUFBQXQ2QixHQUFBdE4sRUFBQSxLQUFB
RSxJQUdBNG5DLGFBQUEsV0FFQTV2QyxLQUFBK21DLFVBQ0EvbUMsS0FBQStQLE9BQ0EvUCxLQUFB
eXZDLE1BQ0EsR0FDQSxHQUVBenZDLEtBQUErUCxPQUFBL1AsS0FBQXl2QyxNQUdBSSxRQUFBLFdB
Q0EsR0FBQTduQyxHQUFBaEksS0FBQXN2QyxhQUNBRixFQUFBcHZDLEtBQUFvdkMsWUFBQXB2QyxL
QUFBOEUsTUFBQSxZQUNBLElBQUFrRCxFQUFBaEwsUUFBQWdELEtBQUE4dkMsUUFBQTluQyxFQUFB
LEdBQUFFLElBQUFrbkMsR0FBQSxDQU1BcG5DLEVBQUEyTSxRQUFBa2QsSUFDQTdwQixFQUFBMk0s
UUFBQW9kLElBQ0EvcEIsRUFBQTJNLFFBQUF1ZCxHQUdBLElBQUE2ZCxHQUFBOXhCLFNBQUE4eEIs
SUFDQUEsR0FBQUMsWUFFQWhvQyxHQUFBMk0sUUFBQSxTQUFBMVYsR0FDQSxHQUFBQSxFQUFBOEks
S0FBQTBxQixNQUFBLENBQ0EsR0FBQTdqQixHQUFBM1AsRUFBQWlKLElBQ0E4a0IsRUFBQXBlLEVB
QUEwYSxLQUNBMkIsSUFBQXJjLEVBQUF3Z0MsR0FDQXBpQixFQUFBMEYsVUFBQTFGLEVBQUEyRixn
QkFBQTNGLEVBQUE0RixtQkFBQSxHQUNBaGtCLEVBQUF5WixpQkFBQXFELEdBQUE5YyxFQUFBa2pC
LFFBQUEsUUFBQXhHLEdBQUE3ckIsR0FDQUEsSUFBQSxhQUFBaUIsS0FBQWpCLEVBQUF3d0MsZ0JB
Q0FyaEMsRUFBQTJaLG9CQUFBbUQsR0FBQUosR0FDQTFjLEVBQUFrakIsUUFBQSxLQUNBM0csR0FB
QXZjLEVBQUF3Z0MsV0FPQXY4QixTQUNBaTlCLFFBQUEsU0FBQWxoQyxFQUFBd2dDLEdBRUEsSUFB
QW5GLEdBQ0EsUUFHQSxJQUFBanFDLEtBQUFrd0MsU0FDQSxNQUFBbHdDLE1BQUFrd0MsUUFPQSxJ
QUFBQyxHQUFBdmhDLEVBQUFveUIsV0FDQXB5QixHQUFBZ1Usb0JBQ0FoVSxFQUFBZ1UsbUJBQUFq
TyxRQUFBLFNBQUErTixHQUFzRDhILEdBQUEybEIsRUFBQXp0QixLQUV0RDJILEdBQUE4bEIsRUFB
QWYsR0FDQWUsRUFBQTdtQixNQUFBcWxCLFFBQUEsT0FDQTN1QyxLQUFBOE8sSUFBQXVRLFlBQUE4
d0IsRUFDQSxJQUFBcHZDLEdBQUF3cUIsR0FBQTRrQixFQUVBLE9BREFud0MsTUFBQThPLElBQUFz
USxZQUFBK3dCLEdBQ0Fud0MsS0FBQWt3QyxTQUFBbnZDLEVBQUE0ckIsZ0JBaUNBeWpCLElBQ0Fw
QixjQUNBSyxtQkFNQXQwQixJQUFBL1osT0FBQThYLGVBQ0FpQyxHQUFBL1osT0FBQTJXLGlCQUNB
b0QsR0FBQS9aLE9BQUE2Z0Msa0JBQ0E5bUIsR0FBQS9aLE9BQUEwVyxtQkFDQXFELEdBQUEvWixP
QUFBK2Msb0JBR0FyZixFQUFBcWMsR0FBQW5XLFFBQUFVLFdBQUF1cEMsSUFDQW53QyxFQUFBcWMs
R0FBQW5XLFFBQUE0VixXQUFBNDFCLElBR0FyMUIsR0FBQXRRLFVBQUFzOEIsVUFBQTdsQyxHQUFB
dXBDLEdBQUExckMsRUFHQWdjLEdBQUF0USxVQUFBbTdCLE9BQUEsU0FDQWgzQixFQUNBQyxHQUdB
LE1BREFELE1BQUExTixHQUFBbWQsR0FBQXpQLE9BQUE1VCxHQUNBMlQsR0FBQTNPLEtBQUE0TyxF
QUFBQyxJQUtBcEMsV0FBQSxXQUNBekwsR0FBQTBRLFVBQ0FBLElBQ0FBLEdBQUFDLEtBQUEsT0FB
QW9KLEtBa0JDLEVBYUQsSUFrTUFzMUIsSUFsTUF4YyxLQUFBM3lCLElBUkEsU0FBQW92QyxFQUFB
QyxHQUNBLEdBQUFDLEdBQUF2eUIsU0FBQTNJLGNBQUEsTUFFQSxPQURBazdCLEdBQUF2UCxVQUFB
LFdBQUFxUCxFQUFBLE1BQ0FFLEVBQUF2UCxVQUFBM2pDLFFBQUFpekMsR0FBQSxHQUtBLGNBSUF0
ZCxHQUFBLHdCQUNBd2QsR0FBQSx5QkFFQXpkLEdBQUFyMUIsRUFBQSxTQUFBbTFCLEdBQ0EsR0FB
QTRkLEdBQUE1ZCxFQUFBLEdBQUFwSSxRQUFBK2xCLEdBQUEsUUFDQUUsRUFBQTdkLEVBQUEsR0FB
QXBJLFFBQUErbEIsR0FBQSxPQUNBLFdBQUFyYixRQUFBc2IsRUFBQSxnQkFBQUMsRUFBQSxPQW1F
QUMsSUFDQW5WLFlBQUEsZUFDQXBJLGlCQUNBRSxZQXlDQXNkLElBQ0FwVixZQUFBLGVBQ0FwSSxj
QUFBRyxHQUNBRCxRQUFBRyxJQUdBb2QsSUFDQUYsR0FDQUMsSUFtQkFFLElBQ0FsN0IsU0FDQTVO
LFFBQ0EwckIsU0FLQWdCLEdBQUFuNEIsRUFDQSw2RkFNQXM0QixHQUFBdDRCLEVBQ0EsMkRBS0Fr
NkIsR0FBQWw2QixFQUNBLG1TQVNBdzBDLElBQ0F2YyxZQUFBLEVBQ0FyUSxRQUFBMHNCLEdBQ0F4
ckMsV0FBQXlyQyxHQUNBeFosWUFDQTVDLGNBQ0E3YixlQUNBZ2Msb0JBQ0FuZCxpQkFDQUQsbUJB
Q0ErakIsV0FycVBBLFNBQUFyWCxHQUNBLE1BQUFBLEdBQUE2c0IsT0FBQSxTQUFBdHhDLEVBQUEw
a0IsR0FDQSxNQUFBMWtCLEdBQUE4RSxPQUFBNGYsRUFBQW9YLHFCQUNHaGEsS0FBQSxNQWtxUEhx
dkIsS0FPQUksSUFDQUMsT0FBQSxTQUFBeGQsR0FHQSxNQUZBMGMsUUFBQXB5QixTQUFBM0ksY0FB
QSxPQUNBKzZCLEdBQUFwUCxVQUFBdE4sRUFDQTBjLEdBQUE3d0IsY0FnQkE0eEIsR0FBQSxrQkFD
QUMsR0FBQSxRQUNBQyxJQUVBLGFBQUF0OEIsT0FFQSxhQUFBQSxPQUVBLGlCQUFBQSxRQUVBd2hC
LEdBQUEsR0FBQXBCLFFBQ0EsUUFBQWdjLEdBQUFwOEIsT0FDQSxXQUFBcThCLEdBQUFyOEIsT0FB
QSxXQUNBczhCLEdBQUE3dkIsS0FBQSxZQUtBOHZCLEdBQUEsd0JBQ0FDLEdBQUEsT0FBQUQsR0FB
QSxRQUFBQSxHQUFBLElBQ0FsYixHQUFBLEdBQUFqQixRQUFBLEtBQUFvYyxJQUNBamIsR0FBQSxh
QUNBaEIsR0FBQSxHQUFBSCxRQUFBLFFBQUFvYyxHQUFBLFVBQ0F2YixHQUFBLHFCQUNBTixHQUFB
LFFBQ0FHLEdBQUEsUUFFQWMsSUFBQSxDQUNBLEtBQUFsTSxRQUFBLGtCQUFBckcsRUFBQW90QixH
QUNBN2EsR0FBQSxLQUFBNmEsR0FJQSxJQWtTQW5hLElBQ0F4RSxHQUNBNEUsR0FDQUMsR0FDQUMs
R0FDQVIsR0FDQUksR0FDQUMsR0F3akJBOEQsR0FDQUcsR0FsMkJBM0csR0FBQXY0QixFQUFBLDRC
QUNBMjRCLE1BRUFsQixJQUNBeWQsT0FBTyxJQUNQQyxPQUFPLElBQ1BDLFNBQVMsSUFDVEMsUUFB
USxJQUNSQyxRQUFRLE1BRVI5ZCxHQUFBLHdCQUNBRCxHQUFBLDRCQUdBZ2UsR0FBQXYxQyxFQUFB
LG1CQUNBZzVCLEdBQUEsU0FBQTF0QixFQUFBNnJCLEdBQXFELE1BQUE3ckIsSUFBQWlxQyxHQUFB
anFDLElBQUEsT0FBQTZyQixFQUFBLElBdVFyRHNILEdBQUEsWUFDQU4sR0FBQSxZQUNBWixHQUFB
LDJCQUNBSSxHQUFBLDZDQUVBZ0IsR0FBQSxTQUNBSixHQUFBLGNBQ0FELEdBQUEsV0FFQWxCLEdB
QUFqOEIsRUFBQXV6QyxHQUFBQyxRQWdpQkEvVixHQUFBLGVBQ0FDLEdBQUEsVUFvQ0FHLEdBQUE3
OUIsRUFBQWsrQixJQTRIQVksR0FBQSwrQ0FDQUYsR0FBQSwrRkFHQTlqQixJQUNBdTVCLElBQUEs
R0FDQUMsSUFBQSxFQUNBL2tCLE1BQUEsR0FDQWdsQixNQUFBLEdBQ0FDLEdBQUEsR0FDQTdmLEtB
QUEsR0FDQThmLE1BQUEsR0FDQUMsS0FBQSxHQUNBMUosUUFBQSxPQU1BMkosR0FBQSxTQUFBL1gs
R0FBcUMsWUFBQUEsRUFBQSxpQkFFckNvQyxJQUNBNFYsS0FBQSw0QkFDQUMsUUFBQSwyQkFDQUMs
S0FBQUgsR0FBQSwwQ0FDQUksS0FBQUosR0FBQSxtQkFDQTVULE1BQUE0VCxHQUFBLG9CQUNBSyxJ
QUFBTCxHQUFBLGtCQUNBTSxLQUFBTixHQUFBLG1CQUNBaGdCLEtBQUFnZ0IsR0FBQSw2Q0FDQU8s
T0FBQVAsR0FBQSw2Q0FDQUYsTUFBQUUsR0FBQSw4Q0E0R0FRLElBQ0E1cEMsTUFDQXBMLEtBQUFt
L0IsR0FDQThWLE1BQUFoMEMsR0FLQXUrQixHQUFBLFNBQUExNEIsR0FDQTVFLEtBQUE0RSxVQUNB
NUUsS0FBQTZrQixLQUFBamdCLEVBQUFpZ0IsTUFBQVosR0FDQWprQixLQUFBMDNCLFdBQUF2VCxH
QUFBdmYsRUFBQXdmLFFBQUEsaUJBQ0Fwa0IsS0FBQTYrQixXQUFBMWEsR0FBQXZmLEVBQUF3ZixR
QUFBLFdBQ0Fwa0IsS0FBQXNGLFdBQUE1RyxPQUFvQ28wQyxJQUFBbHVDLEVBQUFVLFdBQ3BDLElB
QUFxUyxHQUFBL1MsRUFBQStTLGVBQUFpZCxFQUNBNTBCLE1BQUE2L0IsZUFBQSxTQUFBanhCLEdB
QXVDLE9BQUErSSxFQUFBL0ksRUFBQTlHLE1BQ3ZDOUgsS0FBQW8rQixPQUFBLEVBQ0FwK0IsS0FB
QTJXLG9CQW9xQkFxOEIsSUFyUEEsR0FBQTVkLFFBQUEsdU1BSUF0NEIsTUFBQSxLQUFBMmtCLEtB
QUEsa0JBR0EsR0FBQTJULFFBQUEsMkJBRUF0NEIsTUFBQSxLQUFBMmtCLEtBQUEsOENBcUxBLFNB
QUF3eEIsR0FDQSxnQkFBQWpDLEdBQ0EsUUFBQXRRLEdBQ0EzSixFQUNBbnlCLEdBRUEsR0FBQXN1
QyxHQUFBeDRDLE9BQUFrQyxPQUFBbzBDLEdBQ0F6USxLQUNBNFMsSUFLQSxJQUpBRCxFQUFBcnVC
LEtBQUEsU0FBQVgsRUFBQWt2QixJQUNBQSxFQUFBRCxFQUFBNVMsR0FBQTMrQixLQUFBc2lCLElB
R0F0ZixFQUFBLENBRUFBLEVBQUF3ZixVQUNBOHVCLEVBQUE5dUIsU0FDQTRzQixFQUFBNXNCLGFB
QUEzZixPQUFBRyxFQUFBd2YsVUFHQXhmLEVBQUFVLGFBQ0E0dEMsRUFBQTV0QyxXQUFBNUcsRUFD
QWhFLE9BQUFrQyxPQUFBbzBDLEVBQUExckMsWUFDQVYsRUFBQVUsWUFJQSxRQUFBN0gsS0FBQW1I
LEdBQ0EsWUFBQW5ILEdBQUEsZUFBQUEsSUFDQXkxQyxFQUFBejFDLEdBQUFtSCxFQUFBbkgsSUFL
QSxHQUFBa2pDLEdBQUFzUyxFQUFBbGMsRUFBQW1jLEVBTUEsT0FGQXZTLEdBQUFKLFNBQ0FJLEVB
QUF3UyxPQUNBeFMsRUFHQSxPQUNBRCxVQUNBMlMsbUJBQUE1UyxHQUFBQyxNQVVBLFNBQ0EzSixF
QUNBbnlCLEdBRUEsR0FBQXc0QixHQUFBdEcsR0FBQUMsRUFBQTVULE9BQUF2ZSxFQUNBMDJCLElB
QUE4QixFQUFBeDRCLEVBQ0EsSUFBQTZpQixHQUFBMFYsR0FBQUMsRUFBQXg0QixFQUNBLFFBQ0F3
NEIsTUFDQXJ1QixPQUFBMFksRUFBQTFZLE9BQ0E0SCxnQkFBQThRLEVBQUE5USxvQkFNQTI4QixH
QUFBTixHQUFBaEMsSUFDQXFDLEdBQUFDLEdBQUFELG1CQUlBRSxHQUFBNTFDLEVBQUEsU0FBQXdJ
LEdBQ0EsR0FBQXlJLEdBQUF5UCxHQUFBbFksRUFDQSxPQUFBeUksTUFBQXF5QixZQUdBdVMsR0FB
QXo0QixHQUFBdFEsVUFBQW03QixNQUNBN3FCLElBQUF0USxVQUFBbTdCLE9BQUEsU0FDQWgzQixF
QUNBQyxHQUtBLElBSEFELEtBQUF5UCxHQUFBelAsTUFHQXFQLFNBQUE4eEIsTUFBQW5oQyxJQUFB
cVAsU0FBQXcxQixnQkFJQSxNQUFBenpDLEtBR0EsSUFBQTRFLEdBQUE1RSxLQUFBb0gsUUFFQSxL
QUFBeEMsRUFBQW1LLE9BQUEsQ0FDQSxHQUFBZ29CLEdBQUFueUIsRUFBQW15QixRQUNBLElBQUFB
LEVBQ0EsbUJBQUFBLEdBQ0EsTUFBQUEsRUFBQWpULE9BQUEsS0FDQWlULEVBQUF3YyxHQUFBeGMs
UUFTTyxLQUFBQSxFQUFBdkosU0FNUCxNQUFBeHRCLEtBTEErMkIsS0FBQWtLLGNBT0tyeUIsS0FD
TG1vQixFQUFBOEosR0FBQWp5QixHQUVBLElBQUFtb0IsRUFBQSxDQU1BLEdBQUFwWCxHQUFBMHpC
LEdBQUF0YyxHQUNBbEQsd0JBQ0FmLFdBQUFsdUIsRUFBQWt1QixXQUNBa0YsU0FBQXB6QixFQUFB
b3pCLFVBQ09oNEIsTUFDUCtPLEVBQUE0USxFQUFBNVEsT0FDQTRILEVBQUFnSixFQUFBaEosZUFD
QS9SLEdBQUFtSyxTQUNBbkssRUFBQStSLG1CQVNBLE1BQUE2OEIsSUFBQS8zQyxLQUFBdUUsS0FB
QTRPLEVBQUFDLElBaUJBa00sR0FBQTJsQixRQUFBMlMsR0FFQTc0QyxFQUFBLFlEWjZCaUIsS0FB
S2pCLEVBQXFCQyxFQUFvQixNQUlyRSxTQUFVRixFQUFRbTVDLEdFdjFUeEJuNUMsRUFBQW01QyxR
QUFBLFNBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEdBRUEsR0FBQUMsR0FDQUMsRUFBQU4s
UUFHQTN1QyxRQUFBMnVDLEdBQUF4c0MsT0FDQSxZQUFBbkMsR0FBQSxhQUFBQSxJQUNBZ3ZDLEVB
QUFMLEVBQ0FNLEVBQUFOLEVBQUF4c0MsUUFJQSxJQUFBdkMsR0FBQSxrQkFBQXF2QyxHQUNBQSxF
QUFBcnZDLFFBQ0FxdkMsQ0FHQUwsS0FDQWh2QyxFQUFBbUssT0FBQTZrQyxFQUFBN2tDLE9BQ0Fu
SyxFQUFBK1IsZ0JBQUFpOUIsRUFBQWo5QixpQkFJQW05QixJQUNBbHZDLEVBQUFpbkMsU0FBQWlJ
LEVBR0EsSUFBQWhxQyxFQTRCQSxJQTNCQWlxQyxHQUNBanFDLEVBQUEsU0FBQTNCLEdBRUFBLEVB
Q0FBLEdBQ0FuSSxLQUFBcVAsUUFBQXJQLEtBQUFxUCxPQUFBdTVCLFlBQ0E1b0MsS0FBQXlGLFFB
QUF6RixLQUFBeUYsT0FBQTRKLFFBQUFyUCxLQUFBeUYsT0FBQTRKLE9BQUF1NUIsV0FFQXpnQyxH
QUFBLG1CQUFBK3JDLHVCQUNBL3JDLEVBQUErckMscUJBR0FMLEdBQ0FBLEVBQUFwNEMsS0FBQXVF
LEtBQUFtSSxHQUdBQSxLQUFBZ3NDLHVCQUNBaHNDLEVBQUFnc0Msc0JBQUEvcUMsSUFBQTJxQyxJ
QUtBbnZDLEVBQUF3dkMsYUFBQXRxQyxHQUNHK3BDLElBQ0gvcEMsRUFBQStwQyxHQUdBL3BDLEVB
QUEsQ0FDQSxHQUFBaU0sR0FBQW5SLEVBQUFtUixXQUNBNEQsRUFBQTVELEVBQ0FuUixFQUFBbUss
T0FDQW5LLEVBQUF5dkMsWUFDQXQrQixHQU9BblIsRUFBQW1LLE9BQUEsU0FBQXFHLEVBQUFqTixH
QUVBLE1BREEyQixHQUFBck8sS0FBQTBNLEdBQ0F3UixFQUFBdkUsRUFBQWpOLElBUEF2RCxFQUFB
eXZDLGFBQUExNkIsS0FDQWxWLE9BQUFrVixFQUFBN1AsSUFDQUEsR0FVQSxPQUNBa3FDLFdBQ0FO
LFFBQUFPLEVBQ0FydkMsYUZxMlRNLFNBQVVySyxFQUFRbTVDLEVBQVNqNUMsSUd0N1RqQyxTQUFB
aTVDLEdBWUEsUUFBQVksS0FHQSxXQUFBQyxFQUFBanFDLE1BQUEsTUFBQWlxQyxFQUFBanFDLEtB
aVJBLFFBQUFrcUMsR0FBQXIzQyxFQUFBczNDLEdBQ0EsT0FBQTEzQyxHQUFBLEVBQWlCQSxFQUFB
SSxFQUFBSCxPQUFnQkQsR0FBQSxFQUNqQyxRQUFBMDNDLEVBQUF0M0MsRUFBQUosS0FBQUksR0FD
QSxPQUtBLFFBQUF1M0MsR0FBQXYzQyxHQUVBLE9BREF3M0MsTUFDQTUzQyxFQUFBLEVBQUFsQixF
QUFBc0IsRUFBQUgsT0FBaUNELEVBQUFsQixFQUFPa0IsSUFDeEM0M0MsSUFBQWx3QyxPQUFBdEgs
RUFBQUosR0FFQSxPQUFBNDNDLEdBR0EsUUFBQUMsR0FBQXozQyxFQUFBczNDLEVBQUF0OUIsR0FD
QSxJQUFBaGEsRUFBQUgsT0FDQSxNQUFBbWEsSUFFQSxJQUFBMDlCLEdBQUEsR0FDQSxRQUFBQyxL
QUNBTCxFQUFBdDNDLEVBQUEwM0MsR0FBQSxTQUFBaDBDLEdBQ0FBLElBQUEsSUFBQUEsR0FDQXNX
LEVBQUF0VyxHQUNBc1csRUFBQSxlQUVBMDlCLEdBQUEsRUFDQUEsSUFBQTEzQyxFQUFBSCxPQUNB
bWEsSUFFQTI5QixVQU9BLFFBQUFDLEdBQUF0NEMsRUFBQXU0QyxFQUFBQyxHQUNBQSxFQUFBeDRD
LENBQ0EsUUFBQXk0QyxLQUFBRixHQUNBLEdBQUFBLEVBQUF0M0MsZUFBQXczQyxLQUNBRCxFQUFB
RCxFQUFBRSxHQUFBejRDLE1BQ0FBLEVBQ0EsS0FJQSxPQUFBdzRDLEtBQUF4NEMsRUFBQSx1QkFB
QXc0QyxFQUdBLFFBQUFFLEdBQUExNEMsRUFBQXU0QyxHQUVBLElBREEsR0FBQXY0QixHQUFBMVIs
RUFBQSxFQUFBcXFDLEVBQUEsR0FDQTM0QixFQUFBaGdCLEVBQUE0NEMsT0FBQXRxQyxHQUFBeEQs
TUFBQSxtQ0FDQXdELEVBQUEwUixFQUFBcGYsTUFBQW9mLEVBQUEsR0FBQXpmLE9BQ0F5ZixFQUFB
LEdBQUFBLEVBQUEsR0FBQWlPLFFBQUEsb0NBQ0EwcUIsR0FBQTM0QyxFQUFBNDRDLE9BQUEsRUFB
QTU0QixFQUFBcGYsT0FBQW9mLEVBQUEsRUFFQWhnQixHQUFBMjRDLEdBQUEzNEMsRUFBQTQ0QyxP
QUFBdHFDLEVBQ0EsSUFBQXJCLEdBQUExTSxFQUFBczRDLEVBQUE3NEMsRUFBQThLLE1BQUEsY0FD
QSxJQUFBK3RDLEVBQUEsQ0FDQXQ0QyxFQUFBczRDLEVBQUF0NEMsTUFDQSxRQUFBRCxHQUFBLEVB
QW1CQSxFQUFBQyxFQUFZRCxJQUMvQjJNLEVBQUE0ckMsRUFBQXY0QyxHQUVBTixFQURBLE9BQUFp
TixFQUFBVixNQUFBLEtBQ0FVLEVBQUFWLE1BQUEsR0FFQXZNLEVBQUFpdUIsUUFBQWhoQixFQUFB
cXJDLEVBQUFyckMsRUFBQXNyQyxJQUlBLE1BQUF2NEMsR0FHQSxRQUFBODRDLEdBQUFDLEVBQUFD
LEVBQUFsM0MsRUFBQWcwQyxHQUNBLEdBQUF4MUMsR0FBQWdPLEVBQUEsRUFBQXVuQixFQUFBLEVB
QUE4ZixFQUFBLEVBQUE3ekMsTUFBQSxLQUFBckMsV0FBQXEyQyxNQUFBLEtBQUFyMkMsVUFDQSxL
QUFBYSxFQUFBLEVBQWFBLEVBQUF5NEMsRUFBQXg0QyxPQUFtQkQsSUFBQSxDQUNoQyxHQUFBMjRD
LEdBQUFGLEVBQUF6NEMsRUFDQSxJQUFBMjRDLEVBQUFwNEMsUUFBQWlCLEVBQUF3TSxHQUFBMnFD
LEVBQUFwNEMsUUFBQWkxQyxFQUFBeG5DLEtBQUEycUMsRUFBQXA0QyxRQUFBaUIsRUFBQXdNLE1B
QUEycUMsRUFBQXA0QyxRQUFBaTFDLEVBQUF4bkMsTUFBQTJxQyxFQUFBcDRDLFFBQUFpQixFQUFB
d00sS0FBQTJxQyxFQUFBcDRDLFFBQUFpMUMsRUFBQXhuQyxHQUFBLENBR0EsR0FGQXVuQixFQUFB
b2pCLEVBQUFwNEMsUUFBQWlCLEVBQUF3TSxHQUNBcW5DLEVBQUFzRCxFQUFBcDRDLFFBQUFpMUMs
RUFBQXhuQyxJQUNBdW5CLEtBQUE4ZixLQUFBOWYsSUFBQThmLEVBQUEsQ0FFQW9ELEdBREFBLEVB
QUF4c0MsTUFBQSxHQUFBak0sR0FBQSxNQUFBMGtCLEtBQUFnMEIsSUFDQWh4QyxPQUFBK3dDLEVB
QUF4c0MsT0FBQWpNLEdBQUEsT0FFQWdPLEdBQUFxbkMsRUFBQTlmLEVBQUE4ZixFQUFBOWYsR0FB
QSxFQUNBdjFCLEVBQUEsTUFFQWdPLEdBQUEsRUFHQSxNQUFBeXFDLEdBalhBLEdBQUFqQixHQUFB
dDJCLFNBQUEwM0IsU0FRQUMsR0FDQTdHLEtBQUEsU0FDQXprQyxLQUFBaXFDLEVBQUFqcUMsS0FD
QXVyQyxTQUFBLEVBRUFDLE1BQUEsV0FDQSxHQUFBMWdDLEdBQUFtL0IsRUFBQWpxQyxJQUNBOEss
SUFBQXBWLEtBQUFzSyxPQUNBdEssS0FBQXNLLEtBQUE4SyxFQUNBcFYsS0FBQSsxQyxrQkFJQUMs
S0FBQSxXQUNBLFdBQUFoMkMsS0FBQSt1QyxNQUNBLElBQUEvdUMsS0FBQTYxQyxRQUFBMzNCLE9B
QUErM0IsYUFBQS8zQixPQUFBZzRCLGVBR0FsMkMsS0FBQSsxQyxpQkFJQXBRLEtBQUEsU0FBQS9u
QyxFQUFBaTRDLEdBUUEsUUFBQU0sR0FBQUMsR0FDQSxPQUFBcjVDLEdBQUEsRUFBQW1CLEVBQUFt
NEMsRUFBQXRwQyxVQUFBL1AsT0FBa0RELEVBQUFtQixFQUFPbkIsSUFDekRzNUMsRUFBQXRwQyxV
QUFBaFEsR0FBQXE1QyxHQVRBLEdBQUEzRCxHQUFBenlDLElBY0EsSUFiQUEsS0FBQTYxQyxVQUVB
USxFQUFBdHBDLFlBQ0FzcEMsRUFBQXRwQyxjQVVBLGdCQUFBbVIsY0FBQWxqQixLQUFBaWpCLFNB
QUFxNEIsY0FDQXI0QixTQUFBcTRCLGFBQUEsSUFFQSxJQUFBdDJDLEtBQUE2MUMsUUFNQXBwQyxX
QUFBLFdBQ0F5UixPQUFBKzNCLFdBQUFFLEdBQ1MsS0FHVGo0QixPQUFBZzRCLGFBQUFDLEVBRUFu
MkMsS0FBQSt1QyxLQUFBLGFBRUEsQ0FJQSxHQUFBd0gsR0FBQXQ0QixTQUFBM0ksY0FBQSxTQUNB
aWhDLEdBQUFwd0MsR0FBQSxjQUNBb3dDLEVBQUFqdEIsTUFBQXFsQixRQUFBLE9BQ0Exd0IsU0FB
QTh4QixLQUFBMXdCLFlBQUFrM0IsR0FDQXYyQyxLQUFBdzJDLFdBQUEsSUFFQSxvQkFBQXY0QixX
QUFBLGVBQUFBLFdBQ0FBLFNBQUF3NEIsWUFBQSw4QkFDQSxhQUFBanRDLE1BQUF5bUMsY0FDQXdD
LEVBQUFxRCxVQUtBNTNCLE9BQUF3NEIsWUFBQSxXQUFzQ2pFLEVBQUFxRCxTQUFnQixJQUV0RDkx
QyxLQUFBKzFDLGNBQUFJLEVBQ0FuMkMsS0FBQSt1QyxLQUFBLFNBS0EsTUFGQXNILEdBQUF0cEMs
VUFBQW5MLEtBQUFoRSxHQUVBb0MsS0FBQSt1QyxNQUdBOUksUUFBQSxTQUFBcm9DLEdBQ0EsR0FB
QXk0QyxLQUFBdHBDLFVBTUEsT0FGQUEsR0FBQXNwQyxFQUFBdHBDLFVBRUFoUSxFQUFBZ1EsRUFB
QS9QLE9BQUEsRUFBc0NELEdBQUEsRUFBUUEsSUFDOUNnUSxFQUFBaFEsS0FBQWEsR0FDQW1QLEVB
QUF4UCxPQUFBUixFQUFBLElBS0E0NUMsUUFBQSxTQUFBM3BCLEdBY0EsTUFaQSxXQUFBaHRCLEtB
QUErdUMsTUFDQS91QyxLQUFBdzJDLFdBQUF4cEIsSUFHQSxJQUFBaHRCLEtBQUE2MUMsU0FDQTMz
QixPQUFBMjNCLFFBQUFlLGFBQWlDMzRCLFNBQUE0NEIsTUFBQTdwQixHQUdqQ2h0QixLQUFBZzJD
LFFBRUF6QixFQUFBanFDLEtBQUEsTUFBQTBpQixFQUFBLEdBQUFBLEVBQUEsSUFBQUEsRUFFQWh0
QixNQUdBdzJDLFdBQUEsU0FBQXhwQixHQUVBLEdBQUE4cEIsR0FBQTc0QixTQUFBODRCLGVBQUEs
ZUFDQTFoQyxFQUFBeWhDLEVBQUFFLGlCQUFBRixFQUFBRyxjQUFBaDVCLFFBQ0E1SSxHQUFBcTdC
LE9BQ0FyN0IsRUFBQTZoQyxNQUFBLG9CQUFBbHFCLEVBQUEsaURBQ0EzWCxFQUFBczdCLFNBR0F3
RyxTQUFBLFdBRUEsR0FBQW5xQixHQUFBaHRCLEtBQUFvM0MsS0FJQSxPQUhBcHFCLElBQUF1bkIs
RUFBQWpxQyxPQUNBaXFDLEVBQUFqcUMsS0FBQTBpQixHQUVBaHRCLE1BR0ErMUMsY0FBQSxjQUdB
TSxFQUFBM0MsRUFBQTJDLE9BQUEsU0FBQWIsR0FDQSxLQUFBeDFDLGVBQUFxMkMsSUFBQSxVQUFB
QSxHQUFBYixFQUVBeDFDLE1BQUFnMUMsVUFDQWgxQyxLQUFBdzFDLFVBQ0F4MUMsS0FBQTZTLFNB
QUEsOEJBQ0E3UyxLQUFBdS9CLFNBQ0F2L0IsS0FBQXEzQyxZQUVBcjNDLEtBQUFzM0MsUUFBQXQz
QyxLQUFBZ21DLE9BQ0FobUMsS0FBQWdtQyxPQUFBaG1DLEtBQUF1M0MsU0FFQXYzQyxLQUFBdzND
LGVBQUEsYUFBQXQ1QixPQUFBMjNCLFFBQUEzM0IsT0FBQTIzQixRQUFBZSxVQUFBLE1BRUE1MkMs
S0FBQXkzQyxZQUNBejNDLEtBQUF3ekMsTUFBQWdDLE9BR0FhLEdBQUE1ckMsVUFBQWs3QixLQUFB
LFNBQUErUixHQUNBLEdBQ0FDLEdBREFsRixFQUFBenlDLElBcUNBLE9BbkNBQSxNQUFBaVUsUUFB
QSxTQUFBbWlDLEdBQ0EsR0FBQXdCLEdBQUF4QixLQUFBd0IsUUFBQTE1QixPQUFBeTNCLFNBQUFy
ckMsS0FDQXV0QyxHQUFBLElBQUFwRixFQUFBb0QsUUFBQXBELEVBQUFxRixVQUFBRixFQUFBbHRC
LFFBQUEsU0FDQStuQixHQUFBc0YsU0FBQSxXQUFBRixFQUFBL3pCLE9BQUEsR0FBQSt6QixFQUFB
LElBQUFBLElBR0FqQyxFQUFBalEsS0FBQTNsQyxLQUFBaVUsUUFBQWpVLEtBQUE2MUMsVUFFQSxJ
QUFBNzFDLEtBQUE2MUMsUUFDQXZCLEtBQUFvRCxFQUNBbkQsRUFBQWpxQyxLQUFBb3RDLEVBQ0tw
RCxLQUNMN0IsRUFBQXNGLFNBQUEsU0FBQXhELEVBQUFqcUMsS0FBQW9nQixRQUFBLG9CQUlBMXFC
LEtBQUFnNEMsc0JBRUFMLEVBQUFyRCxLQUFBb0QsSUFBQXBELElBQUEsS0FBQUMsRUFBQWpxQyxL
QUFBb2dCLFFBQUEsV0FFQXhNLE9BQUEyM0IsUUFBQW9DLGdCQUFzQ2g2QixTQUFBNDRCLE1BQUFj
LEdBS3RDQSxFQUFBMzNDLEtBQUE4M0MsV0FLQUgsSUFBQSxJQUFBMzNDLEtBQUFrNEMsY0FDQWw0
QyxLQUFBaVUsV0FJQWpVLE1BR0FxMkMsRUFBQTVyQyxVQUFBMHRDLFFBQUEsV0FDQSxHQUFBcDlD
LElBQUEsSUFBQWlGLEtBQUE2MUMsUUFBQTcxQyxLQUFBODNDLFVBQUF2RCxFQUFBanFDLElBRUEs
T0FEQSxNQUFBdlAsRUFBQStvQixPQUFBLEtBQTRCL29CLElBQUFpTyxNQUFBLElBQzVCak8sRUFB
QWlPLE1BQUEsRUFBQWpPLEVBQUFpQyxRQUFBRixNQUFBLE1BR0F1NUMsRUFBQTVyQyxVQUFBMnRD
LFNBQUEsU0FBQXI3QyxFQUFBaEMsRUFBQWEsR0FDQSxHQUFBaThDLEdBQUE3M0MsS0FBQW00QyxT
QWFBLE9BWEEsZ0JBQUFwN0MsSUFBQSxnQkFBQWhDLEdBQ0E4OEMsRUFBQTk2QyxHQUFBaEMsRUFF
QSxnQkFBQWEsR0FDQWk4QyxFQUFBdDZDLE9BQUFSLEVBQUFoQyxFQUFBaXlCLEdBR0E2cUIsR0FB
QTk2QyxHQUdBNjRDLEVBQUFlLFFBQUFrQixFQUFBcDJCLEtBQUEsTUFDQW8yQixHQVdBeEIsRUFB
QTVyQyxVQUFBOHNDLFNBQUEsU0FBQW5ULEVBQUE1akMsRUFBQTYzQyxFQUFBNXlDLEdBWUEsTUFY
QSxTQUFBMitCLElBQ0FBLEVBQUEsS0FDQWlVLEVBQUEsU0FBQUEsR0FDQSxHQUFBdjRDLElBQUEs
Q0FDQSxtQkFDQSxJQUFBQSxFQUVBLE1BREFBLElBQUEsRUFDQXU0QyxFQUFBajZDLE1BQUE0QixL
QUFBN0IsYUFFS2s2QyxJQUVMcjRDLEtBQUFzM0MsUUFBQWxULEVBQUE1akMsRUFBQTYzQyxFQUFB
NXlDLElBR0E0d0MsRUFBQTVyQyxVQUFBNnRDLFNBQUEsU0FBQXY5QyxHQUNBLEdBQUF5RCxHQUFB
ekQsQ0FFQSxvQkFBQUEsR0FDQXlELEVBQUF3QixLQUFBbTRDLFVBQUFwOUMsT0FFQSxvQkFBQUEs
R0FBQSxDQUNBLEdBQUFxYSxHQUFBcFYsS0FBQW00QyxTQUNBMzVDLEdBQUE0VyxFQUFBOVgsUUFB
QXZDLE9BR0F5RCxHQUFBd0IsS0FBQW00QyxTQUdBLE9BQUEzNUMsSUFHQTYzQyxFQUFBNXJDLFVB
QUF3N0IsUUFBQSxXQUVBLE1BREEyUCxHQUFBM1AsUUFBQWptQyxLQUFBaVUsU0FDQWpVLE1BR0Fx
MkMsRUFBQTVyQyxVQUFBcXRDLFFBQUEsV0FDQSxHQUFBdDNDLEdBQUEwZCxPQUFBeTNCLFNBQUE0
QyxRQUlBLE9BSEEsTUFBQS8zQyxFQUFBNjBDLE9BQUEsT0FDQTcwQyxFQUFBLElBQUFBLEdBRUFB
LEVBZ0dBLElBQUFnNEMsR0FBQSxNQUVBbkMsR0FBQTVyQyxVQUFBZ3RDLFVBQUEsU0FBQTd5QyxH
QUNBQSxPQUNBLFFBQUE3SCxHQUFBLEVBQWlCQSxFQUFBaUQsS0FBQTZTLFFBQUE3VixPQUF5QkQs
SUFDMUNpRCxLQUFBcTNDLFNBQUFyM0MsS0FBQTZTLFFBQUE5VixLQUFBLENBZ0JBLE9BZEFpRCxN
QUFBeTRDLFFBQUE3ekMsRUFBQTZ6QyxTQUFBejRDLEtBQUF5NEMsVUFBQSxFQUNBejRDLEtBQUEw
NEMsTUFBQTl6QyxFQUFBOHpDLFFBQUEsRUFDQTE0QyxLQUFBeTFDLFVBQUE3d0MsRUFBQTZ3QyxX
QUFBLElBQ0F6MUMsS0FBQTI0QyxXQUFBLEtBQUEvekMsRUFBQSt6QyxRQUFBL3pDLEVBQUErekMs
T0FDQTM0QyxLQUFBNDRDLFNBQUFoMEMsRUFBQWcwQyxTQUNBNTRDLEtBQUE2NEMsU0FBQWowQyxF
QUFBaTBDLFNBQ0E3NEMsS0FBQTYxQyxRQUFBanhDLEVBQUFrMEMsY0FBQTk0QyxLQUFBdzNDLGlC
QUFBLEVBQ0F4M0MsS0FBQWs0QyxhQUFBLElBQUFsNEMsS0FBQTYxQyxVQUFBLElBQUFqeEMsRUFB
QW0wQyxvQkFDQS80QyxLQUFBZzRDLHNCQUFBLElBQUFoNEMsS0FBQTYxQyxVQUFBLElBQUFqeEMs
RUFBQW96QyxxQkFDQWg0QyxLQUFBUixPQUNBdzVDLE1BQUFwMEMsRUFBQW8wQyxPQUFBLEtBQ0FD
LE9BQUFyMEMsRUFBQXEwQyxRQUFBLEtBQ0EvdkMsR0FBQXRFLEVBQUFzRSxJQUFBLE1BRUFsSixN
QUdBcTJDLEVBQUE1ckMsVUFBQXlxQyxNQUFBLFNBQUFnRSxFQUFBQyxHQUNBLE1BQUFELEVBQUEs
S0FDQUEsRUFBQSxJQUFBQSxFQUVBLElBQUF2WSxHQUFBLEdBQUF2TCxRQUFBOGpCLEVBQUEsSUFJ
QSxPQUhBbDVDLE1BQUFnMUMsT0FBQWtFLEdBQUEsU0FBQXo4QyxHQUNBLE1BQUFBLEdBQUFpdUIs
UUFBQWlXLEVBQUF3WSxFQUFBbmtDLFFBQUFta0MsSUFFQW41QyxNQUdBcTJDLEVBQUE1ckMsVUFB
QXZCLEdBQUFtdEMsRUFBQTVyQyxVQUFBNHRDLE1BQUEsU0FBQWpVLEVBQUE1akMsRUFBQTYzQyxH
QUNBLEdBQUE1RixHQUFBenlDLElBTUEsT0FMQXE0QyxJQUFBLGtCQUFBNzNDLEtBQ0E2M0MsRUFB
QTczQyxFQUNBQSxFQUFBNGpDLEVBQ0FBLEVBQUEsTUFFQTNsQyxNQUFBYSxRQUFBa0IsR0FDQUEs
RUFBQW1VLFFBQUEsU0FBQWtQLEdBQ0E0dUIsRUFBQXZwQyxHQUFBazdCLEVBQUF2Z0IsRUFBQXcw
QixNQUdBNzNDLEVBQUF3VSxTQUNBeFUsSUFBQXdVLE9BQUEwVixRQUFBLGVBRUFqc0IsTUFBQWEs
UUFBQThrQyxHQUNBQSxFQUFBenZCLFFBQUEsU0FBQTBQLEdBQ0FvdUIsRUFBQXZwQyxHQUFBbWIs
RUFBQXBuQixjQUFBdUQsRUFBQTYzQyxNQUdBNzNDLElBQUExRCxNQUFBLEdBQUFzNEIsUUFBQXAx
QixLQUFBeTFDLFlBQ0FqMUMsRUFBQSswQyxFQUFBLzBDLEVBQUFSLEtBQUF5MUMsZUFDQXoxQyxN
QUFBZ21DLE9BQUE1QixFQUFBcGtDLEtBQUF1L0IsTUFBQTk2QixPQUFBakUsR0FBQTYzQyxNQUdB
aEMsRUFBQTVyQyxVQUFBakssS0FBQSxTQUFBQSxFQUFBNDRDLEdBQ0EsR0FBQXA4QyxHQUFBZ0Qs
S0FBQXUvQixNQUFBdmlDLE1BQ0F3RCxHQUFBd1UsU0FDQXhVLElBQUF3VSxPQUFBMFYsUUFBQSxl
QUVBbHFCLElBQUExRCxNQUFBLEdBQUFzNEIsUUFBQXAxQixLQUFBeTFDLFlBQ0FqMUMsRUFBQSsw
QyxFQUFBLzBDLEVBQUFSLEtBQUF5MUMsV0FDQXoxQyxLQUFBdS9CLE1BQUF2L0IsS0FBQXUvQixN
QUFBOTZCLE9BQUFqRSxHQUNBNDRDLEVBQUEzOUMsS0FBQXVFLFdBQ0FBLEtBQUF1L0IsTUFBQWhp
QyxPQUFBUCxFQUFBd0QsRUFBQXhELFNBR0FxNUMsRUFBQTVyQyxVQUFBc3RDLFNBQUEsU0FBQTNU
LEVBQUE1akMsRUFBQTJXLEdBZ0JBLFFBQUFraUMsS0FDQTVHLEVBQUExbkMsS0FBQWxDLEVBQUFt
d0MsTUFDQXZHLEVBQUE2RyxPQUFBN0csRUFBQThHLFFBQUExd0MsR0FBQTRwQyxFQUFBdDdCLEdB
akJBLEdBQUE2aEMsR0FBQXZHLEVBQUF6eUMsS0FBQTZJLEVBQUE3SSxLQUFBK1IsU0FBQXF5QixF
QUFBNWpDLEVBQUFrcUIsUUFBQTh0QixFQUFBLElBQUF4NEMsS0FBQXcxQyxPQUFBLElBQUFnRSxF
QUFBeDVDLEtBQUF5NUMsUUFFQSxPQURBejVDLE1BQUF5NUMsVUFBQSxFQUNBNXdDLEdBQUEsSUFB
QUEsRUFBQTdMLFFBVUEsWUFBQWdELEtBQUF5NEMsVUFDQTV2QyxJQUFBNndDLFlBTUFWLEVBQUFo
NUMsS0FBQVIsT0FBQVEsS0FBQVIsTUFBQXc1QyxPQUFBaDVDLEtBQUFSLE1BQUF3NUMsT0FBQXYw
QyxPQUFBekUsS0FBQStLLE9BQUEvSyxLQUFBK0ssUUFDQWl1QyxFQUFBaDhDLE9BQUEsR0FBQXc4
QyxHQUNBeDVDLEtBQUEwNEMsTUFDQTE0QyxLQUFBczVDLE9BQUFOLEVBQUFoNUMsS0FBQXE1QyxJ
QUVBcjVDLEtBQUFzNUMsT0FBQU4sRUFBQWg1QyxNQUNBcTVDLE1BRUEsSUFFQUEsS0FDQSxLQTNC
QXI1QyxLQUFBK0ssUUFDQSxrQkFBQS9LLE1BQUE0NEMsVUFDQTU0QyxLQUFBczVDLFFBQUF0NUMs
S0FBQTQ0QyxXQUNBeFUsU0FDQTVqQyxRQUNPMlcsSUFFUCxJQXVCQWsvQixFQUFBNXJDLFVBQUE2
dUMsT0FBQSxTQUFBendDLEVBQUE4d0MsRUFBQXhpQyxHQUNBLEdBQ0EvWSxHQURBcTBDLEVBQUF6
eUMsSUFFQUEsTUFBQTA0QyxPQUNBdDZDLEVBQUEsU0FBQVIsRUFBQTJvQixHQUNBLEdBQUE5bkIs
TUFBQWEsUUFBQTFCLEdBQ0EsTUFBQWczQyxHQUFBaDNDLEVBQUFRLEVBQUFtb0IsRUFDTyxtQkFB
QTNvQixJQUNQQSxFQUFBUSxNQUFBdTdDLEdBQUE5d0MsRUFBQXlzQyxjQUFBN3dDLE9BQUE4aEIs
S0FHQXF1QixFQUFBL3JDLEVBQUF6SyxFQUFBLFdBQ0ErWSxHQUNBQSxFQUFBL1ksTUFBQXU3QyxF
QUFBeDdDLGVBSUFDLEVBQUEsU0FBQVIsR0FDQSxNQUFBYSxPQUFBYSxRQUFBMUIsR0FDQTQyQyxF
QUFBNTJDLEVBQUFRLEdBQ08sa0JBQUFSLEdBQ1BBLEVBQUFRLE1BQUF1N0MsRUFBQTl3QyxFQUFB
eXNDLG1CQUNPLGdCQUFBMTNDLElBQUE2MEMsRUFBQW9HLFVBQ1BwRyxFQUFBb0csU0FBQWo3QyxH
QUFBUSxNQUFBdTdDLEVBQUE5d0MsRUFBQXlzQyxnQkFHQWQsRUFBQTNyQyxFQUFBekssS0FJQWk0
QyxFQUFBNXJDLFVBQUFzSCxTQUFBLFNBQUFxeUIsRUFBQTVqQyxFQUFBZzFDLEVBQUFvRSxFQUFB
LzhCLEdBRUEsUUFBQWc5QixHQUFBckUsR0FJQSxRQUFBc0UsR0FBQTlrQyxHQUVBLE9BREFQLE1B
Q0ExWCxFQUFBLEVBQXFCQSxFQUFBaVksRUFBQWhZLE9BQW1CRCxJQUN4QzBYLEVBQUExWCxHQUFB
MEIsTUFBQWEsUUFBQTBWLEVBQUFqWSxJQUFBKzhDLEVBQUE5a0MsRUFBQWpZLElBQUFpWSxFQUFB
alksRUFFQSxPQUFBMFgsR0FFQSxRQUFBc2xDLEdBQUFseEMsR0FDQSxPQUFBOUwsR0FBQThMLEVB
QUE3TCxPQUFBLEVBQWtDRCxHQUFBLEVBQVFBLElBQzFDMEIsTUFBQWEsUUFBQXVKLEVBQUE5TCxL
QUNBZzlDLEVBQUFseEMsRUFBQTlMLElBQ0EsSUFBQThMLEVBQUE5TCxHQUFBQyxRQUNBNkwsRUFB
QXRMLE9BQUFSLEVBQUEsSUFHQThmLEVBQUFoVSxFQUFBOUwsS0FDQThMLEVBQUF0TCxPQUFBUixF
QUFBLEdBbkJBLElBQUE4ZixFQUNBLE1BQUEyNEIsRUF1QkEsSUFBQXdFLEdBQUFGLEVBQUF0RSxF
QUtBLE9BSkF3RSxHQUFBQyxRQUFBekUsRUFBQXlFLFFBQ0FELEVBQUExRSxTQUFBRSxFQUFBRixT
QUNBMEUsRUFBQWhCLE1BQUF4RCxFQUFBd0QsTUFBQW44QixVQUNBazlCLEVBQUFDLEdBQ0FBLEVB
L0JBLEdBQUFwOUIsR0FBQXM5QixFQUFBM3lDLEVBQUFnZixFQUFBMWQsSUFpQ0EsSUFBQXJJLElB
QUFSLEtBQUF5MUMsV0FBQUQsRUFBQXBSLEdBS0EsTUFKQTdkLEtBQUFpdkIsRUFBQXlELE9BQUF6
RCxFQUFBcFIsSUFBQXZuQixPQUFBOVYsVUFDQXdmLEVBQUF5eUIsT0FBQXhELEVBQUF3RCxPQUFB
bjhCLE9BQUE5VixTQUNBd2YsRUFBQTB6QixTQUFBLEVBQ0ExekIsRUFBQSt1QixZQUNBdUUsRUFB
QXR6QixFQUVBLFFBQUFteEIsS0FBQWxDLEdBQ0EsR0FBQUEsRUFBQTkzQyxlQUFBZzZDLE1BQUEx
M0MsS0FBQXEzQyxTQUFBSyxJQUFBMTNDLEtBQUFxM0MsU0FBQUssSUFBQSxnQkFBQWxDLEdBQUFr
QyxLQUFBajVDLE1BQUFhLFFBQUFrMkMsRUFBQWtDLEtBQUEsQ0FNQSxHQUxBOTZCLEVBQUFzOUIs
RUFBQU4sRUFBQTU1QyxLQUFBeTFDLFVBQUFpQyxFQUNBMTNDLEtBQUEyNEMsU0FDQXVCLEdBQUEs
SUFBQWw2QyxLQUFBeTFDLFVBQUEsUUFFQWx1QyxFQUFBL0csRUFBQStHLE1BQUEsR0FBQTZ0QixR
QUFBLElBQUE4a0IsS0FFQSxRQUVBLElBQUEzeUMsRUFBQSxJQUFBQSxFQUFBLElBQUEvRyxHQUFB
ZzFDLEVBQUFrQyxHQUFBdFQsR0FTQSxNQVJBN2QsS0FBQWl2QixFQUFBa0MsR0FBQXVCLE9BQUF6
RCxFQUFBa0MsR0FBQXRULElBQUF2bkIsT0FBQTlWLFVBQ0F3ZixFQUFBeXlCLE9BQUF4RCxFQUFB
a0MsR0FBQXNCLE9BQUFuOEIsT0FBQTlWLFNBQ0F3ZixFQUFBMHpCLFNBQUEsRUFDQTF6QixFQUFB
K3VCLFNBQUEvdEMsRUFBQXlCLE1BQUEsR0FDQWhKLEtBQUF5NEMsU0FBQWpELElBQUF4MUMsS0FB
QXcxQyxTQUNBanZCLEVBQUEza0IsTUFBQTR6QyxFQUFBeUQsT0FBQXpELEVBQUF0c0MsSUFBQTJU
LE9BQUE5VixVQUNBd2YsRUFBQXl5QixNQUFBenlCLEVBQUF5eUIsTUFBQXYwQyxRQUFBK3dDLEVB
QUF3RCxPQUFBbjhCLE9BQUE5VixXQUVBOHlDLEVBQUF0ekIsRUFHQSxJQURBQSxFQUFBdm1CLEtB
QUErUixTQUFBcXlCLEVBQUE1akMsRUFBQWcxQyxFQUFBa0MsR0FBQTk2QixHQUNBMkosRUFBQTB6
QixRQWVBLE1BZEExekIsR0FBQXZwQixPQUFBLElBQ0E2TCxJQUFBcEUsT0FBQThoQixJQUVBdm1C
LEtBQUF5NEMsVUFDQTV2QyxFQUFBakgsTUFBQTR6QyxFQUFBa0MsR0FBQXVCLE9BQUF6RCxFQUFB
a0MsR0FBQXh1QyxJQUFBMlQsT0FBQTlWLFVBQ0F3ZixFQUFBeXlCLE1BQUF6eUIsRUFBQXl5QixN
QUFBdjBDLFFBQUErd0MsRUFBQWtDLEdBQUFzQixPQUFBbjhCLE9BQUE5VixVQUNBeXVDLElBQUF4
MUMsS0FBQXcxQyxTQUNBM3NDLEVBQUFqSCxNQUFBNHpDLEVBQUEsT0FBQUEsRUFBQSxJQUFBMzRC
LE9BQUE5VixVQUNBd2YsRUFBQXl5QixNQUFBenlCLEVBQUF5eUIsTUFBQXYwQyxRQUFBK3dDLEVB
QUEsT0FBQTM0QixPQUFBOVYsWUFHQThCLEVBQUFveEMsU0FBQSxFQUNBcHhDLEVBQUF5c0MsU0FB
QS91QixFQUFBK3VCLFNBQ0F6c0MsRUFBQW13QyxNQUFBenlCLEVBQUF5eUIsTUFDQWEsRUFBQWh4
QyxHQUlBLFVBR0F3dEMsRUFBQTVyQyxVQUFBdTdCLE9BQUEsU0FBQTVCLEVBQUE1akMsRUFBQTYz
QyxFQUFBNXlDLEdBQ0EsR0FBQTAwQyxHQUFBNzZDLEVBQUEyckMsRUFBQW1QLENBU0EsSUFSQTU1
QyxJQUFBcWMsT0FBQSxTQUFBZ0gsR0FDQSxNQUFBQSxNQUFBN21CLE9BQUEsSUFFQXlJLEtBQUF6
RixLQUFBdzFDLE9BQ0E0RSxFQUFBNTVDLEVBQUFrK0IsUUFDQSxRQUFBaCtCLEtBQUEwNUMsS0FB
QSxVQUFBMTVDLEtBQUEwNUMsS0FDQUEsRUFBQWpGLEVBQUFpRixFQUFBcDZDLEtBQUFnMUMsU0FF
QXgwQyxFQUFBeEQsT0FBQSxFQUVBLE1BREF5SSxHQUFBMjBDLEdBQUEzMEMsRUFBQTIwQyxPQUNB
cDZDLEtBQUFnbUMsT0FBQTVCLEVBQUE1akMsRUFBQTYzQyxFQUFBNXlDLEVBQUEyMEMsR0FFQSxJ
QUFBQSxHQUFBNTVDLEVBQUF4RCxRQUFBeUksSUFBQXpGLEtBQUF3MUMsT0FBQSxDQWlCQSxHQUZB
MkUsUUFBQTEwQyxHQUFBMjBDLEdBQ0E5NkMsRUFBQWIsTUFBQWEsUUFBQW1HLEVBQUEyMEMsSUFD
QTMwQyxFQUFBMjBDLEtBQUE5NkMsR0FBQSxVQUFBNjZDLEVBRUEsYUFEQTEwQyxHQUFBMjBDLEdB
QUFoVyxJQUVBLGVBRUEsWUFEQTMrQixFQUFBMjBDLEdBQUFoVyxJQUFBMytCLEVBQUEyMEMsR0FB
QWhXLEdBQUFpVSxHQUVBLGNBRUEsV0FEQTV5QyxHQUFBMjBDLEdBQUFoVyxHQUFBeGlDLEtBQUF5
MkMsRUFFQSxpQkFFQSxZQURBNXlDLEVBQUEyMEMsR0FBQWhXLEdBQUFpVSxPQUdHLGlCQUFBOEIs
RUFJSCxNQUhBbFAsTUFDQUEsRUFBQTdHLEdBQUFpVSxPQUNBNXlDLEVBQUEyMEMsR0FBQW5QLEVB
R0EsVUFBQW9QLE9BQUEsMEJBQUFGLEdBbENBLGFBREExMEMsR0FBQTIrQixJQUVBLGVBRUEsWUFE
QTMrQixFQUFBMitCLElBQUEzK0IsRUFBQTIrQixHQUFBaVUsR0FFQSxjQUVBLFdBREE1eUMsR0FB
QTIrQixHQUFBeGlDLEtBQUF5MkMsRUFFQSxpQkFFQSxZQURBNXlDLEVBQUEyK0IsR0FBQWlVLEtB
K0JBaEMsRUFBQTVyQyxVQUFBL0wsT0FBQSxTQUFBbVUsR0FDQSxHQUFBOVYsR0FBQTAxQyxFQUFB
enlDLEtBQUF3SCxFQUFBcUwsRUFBQTdWLE1BUUEsS0FBQUQsRUFBQSxFQUFhQSxFQUFBeUssRUFB
U3pLLEtBUHRCLFNBQUFxbkMsR0FDQXFPLEVBQUE0RSxTQUFBalQsSUFBQSxFQUNBcU8sRUFBQXJP
LEdBQUEsV0FDQSxHQUFBa1csR0FBQSxJQUFBbjhDLFVBQUFuQixRQUFBb25DLEVBQUEsS0FBQUEs
RUFDQXFPLEdBQUF2cEMsR0FBQTlLLE1BQUFxMEMsRUFBQTZILEVBQUE3MUMsT0FBQWhHLE1BQUFn
TSxVQUFBekIsTUFBQXZOLEtBQUEwQyxlQUlBMFUsRUFBQTlWLEtBSUFzNUMsRUFBQTVyQyxVQUFB
OHVDLFFBQUEsU0FBQTF3QyxHQUNBLEdBQUEwd0MsR0FBQXY1QyxLQUFBUixPQUFBUSxLQUFBUixN
QUFBeTVDLFFBQUFqNUMsS0FBQVIsTUFBQXk1QyxRQUFBeDBDLE9BQUFpd0MsRUFBQTdyQyxJQUFB
NnJDLEVBQUE3ckMsRUFNQSxPQUxBN0ksTUFBQVIsT0FBQVEsS0FBQVIsTUFBQTBKLElBQ0Fxd0Ms
RUFBQTMzQyxLQUFBNUIsS0FBQVIsTUFBQTBKLElBRUFxd0MsRUFBQWpFLFNBQUF6c0MsRUFBQXlz
QyxTQUNBaUUsRUFBQXZrQyxPQUFBbk0sRUFBQW1NLE9BQ0F1a0MsR0FHQWxELEVBQUE1ckMsVUFB
QStvQyxNQUFBLFNBQUFnQyxFQUFBaDFDLEdBQ0EsR0FBQWcxQyxHQUFBLGdCQUFBQSxLQUFBLzJD
LE1BQUFhLFFBQUFrMkMsR0FBQSxDQUdBLEdBQUEvQyxHQUFBenlDLElBQ0FRLFNBQ0EvQixNQUFB
YSxRQUFBa0IsS0FDQUEsSUFBQTFELE1BQUEyMUMsRUFBQWdELFdBbUJBLFFBQUE0QyxLQUFBN0Ms
R0FDQUEsRUFBQTkzQyxlQUFBMjZDLElBbEJBLFNBQUFBLEVBQUFrQyxHQUNBLEdBQUFDLEdBQUFu
QyxFQUFBb0MsRUFBQXBDLEVBQUF2N0MsTUFBQTIxQyxFQUFBZ0QsV0FBQWlGLFFBQUFsRixHQUFB
NkMsR0FBQXNDLEVBQUEsS0FBQUYsRUFBQSxLQUFBaEksRUFBQTRFLFNBQUFvRCxFQUFBLElBQUFq
eEMsRUFBQW14QyxFQUFBLEtBQUFILENBS0EsSUFKQUcsSUFDQUgsSUFBQXh4QyxPQUFBd3hDLEVB
QUFqekMsTUFBQSxHQUFBNnRCLFFBQUEsSUFBQXFkLEVBQUFnRCxjQUFBLFFBQUF6NEMsUUFDQXk5
QyxFQUFBL2IsU0FFQWljLEdBQUEsV0FBQUQsSUFBQWo4QyxNQUFBYSxRQUFBazJDLEVBQUE2QyxJ
QUdBLE1BRkFrQyxLQUFBOTFDLE9BQUFnMkMsT0FDQWhJLEdBQUFlLE1BQUFnQyxFQUFBNkMsR0FB
QWtDLEVBR0FJLEtBQ0FKLElBQUE5MUMsT0FBQSsxQyxFQUFBMTlDLE1BQUEyMUMsRUFBQWdELFlB
Q0E4RSxFQUFBaEYsRUFBQWdGLEVBQUE5SCxFQUFBZ0QsWUFFQWhELEVBQUF6TSxPQUFBeDhCLEVB
QUErd0MsRUFBQS9FLEVBQUE2QyxLQUlBQSxFQUFBNzNDLEVBQUF3SSxNQUFBLE9BT0MwcUMsSUhr
OFRNLENBQ0EsQ0FDQSxDQUNBLENBQ0EsQ0FDQSxDQUNBLENBQ0MsQ0FFRixTQUFVbjVDLEVBQVFt
NUMsR0kzcFZ4Qm41QyxFQUFBbTVDLFFBQUEsU0FBQWtILEVBQUEvOUMsR0FHQSxPQUZBa3ZCLE1B
Q0E4dUIsS0FDQTk5QyxFQUFBLEVBQWlCQSxFQUFBRixFQUFBRyxPQUFpQkQsSUFBQSxDQUNsQyxH
QUFBSyxHQUFBUCxFQUFBRSxHQUNBb0osRUFBQS9JLEVBQUEsR0FDQXl0QixFQUFBenRCLEVBQUEs
R0FDQTA5QyxFQUFBMTlDLEVBQUEsR0FDQTI5QyxFQUFBMzlDLEVBQUEsR0FDQWc5QyxHQUNBajBD
LEdBQUF5MEMsRUFBQSxJQUFBNzlDLEVBQ0E4dEIsTUFDQWl3QixRQUNBQyxZQUVBRixHQUFBMTBD
LEdBR0EwMEMsRUFBQTEwQyxHQUFBczBDLE1BQUE3NEMsS0FBQXc0QyxHQUZBcnVCLEVBQUFucUIs
S0FBQWk1QyxFQUFBMTBDLElBQW1DQSxLQUFBczBDLE9BQUFMLEtBS25DLE1BQUFydUIsS0p1cVZN
LFNBQVV4eEIsRUFBUW01QyxHS2hzVnhCLEdBQUFqQyxFQUdBQSxHQUFBLFdBQ0EsTUFBQXp4QyxR
QUdBLEtBRUF5eEMsS0FBQWpSLFNBQUEscUJBQUF3YSxNQUFBLFFBQ0MsTUFBQXY3QyxHQUVELGdC
QUFBeWUsVUFDQXV6QixFQUFBdnpCLFFBT0EzakIsRUFBQW01QyxRQUFBakMsR0x1c1ZNLFNBQVVs
M0MsRUFBUW01QyxHTTFxVnhCLFFBQUF1SCxHQUFBNzlDLEVBQUE4OUMsR0FDQSxHQUFBNUssR0FB
QWx6QyxFQUFBLE9BQ0ErOUMsRUFBQS85QyxFQUFBLEVBQ0EsS0FBQSs5QyxFQUNBLE1BQUE3SyxF
QUdBLElBQUE0SyxHQUFBLGtCQUFBRSxNQUFBLENBQ0EsR0FBQUMsR0FBQUMsRUFBQUgsRUFLQSxR
QUFBN0ssR0FBQTdyQyxPQUpBMDJDLEVBQUFJLFFBQUE1K0MsSUFBQSxTQUFBcVksR0FDQSx1QkFB
QW1tQyxFQUFBSyxXQUFBeG1DLEVBQUEsU0FHQXZRLFFBQUE0MkMsSUFBQTU1QixLQUFBLE1BR0Es
T0FBQTZ1QixHQUFBN3VCLEtBQUEsTUFJQSxRQUFBNjVCLEdBQUFQLEdBS0EseUVBSEFLLEtBQUFL
LFNBQUFDLG1CQUFBdi9DLEtBQUFDLFVBQUEyK0MsTUFHQSxNQXJFQXhnRCxFQUFBbTVDLFFBQUEs
U0FBQXdILEdBQ0EsR0FBQXIrQyxLQXdDQSxPQXJDQUEsR0FBQVgsU0FBQSxXQUNBLE1BQUE4RCxN
QUFBckQsSUFBQSxTQUFBUyxHQUNBLEdBQUFrekMsR0FBQTJLLEVBQUE3OUMsRUFBQTg5QyxFQUNB
LE9BQUE5OUMsR0FBQSxHQUNBLFVBQUFBLEVBQUEsT0FBbUNrekMsRUFBQSxJQUVuQ0EsSUFFRzd1
QixLQUFBLEtBSUg1a0IsRUFBQUUsRUFBQSxTQUFBcW5CLEVBQUF1M0IsR0FDQSxnQkFBQXYzQixL
QUNBQSxJQUFBLEtBQUFBLEVBQUEsS0FFQSxRQURBdzNCLE1BQ0E3K0MsRUFBQSxFQUFnQkEsRUFB
QWlELEtBQUFoRCxPQUFpQkQsSUFBQSxDQUNqQyxHQUFBb0osR0FBQW5HLEtBQUFqRCxHQUFBLEVB
Q0EsaUJBQUFvSixLQUNBeTFDLEVBQUF6MUMsSUFBQSxHQUVBLElBQUFwSixFQUFBLEVBQVlBLEVB
QUFxbkIsRUFBQXBuQixPQUFvQkQsSUFBQSxDQUNoQyxHQUFBSyxHQUFBZ25CLEVBQUFybkIsRUFL
QSxpQkFBQUssR0FBQSxJQUFBdytDLEVBQUF4K0MsRUFBQSxNQUNBdStDLElBQUF2K0MsRUFBQSxH
QUNBQSxFQUFBLEdBQUF1K0MsRUFDS0EsSUFDTHYrQyxFQUFBLE9BQUFBLEVBQUEsYUFBQXUrQyxF
QUFBLEtBRUE5K0MsRUFBQStFLEtBQUF4RSxNQUlBUCxJTit2Vk0sU0FBVXRDLEVBQVFtNUMsRUFB
U2o1QyxHTzV0VmpDLFFBQUFvaEQsR0FBQTl2QixHQUNBLE9BQUFodkIsR0FBQSxFQUFpQkEsRUFB
QWd2QixFQUFBL3VCLE9BQW1CRCxJQUFBLENBQ3BDLEdBQUFLLEdBQUEydUIsRUFBQWh2QixHQUNB
KytDLEVBQUFDLEVBQUEzK0MsRUFBQStJLEdBQ0EsSUFBQTIxQyxFQUFBLENBQ0FBLEVBQUFsOEIs
TUFDQSxRQUFBbFAsR0FBQSxFQUFxQkEsRUFBQW9yQyxFQUFBckIsTUFBQXo5QyxPQUEyQjBULElB
Q2hEb3JDLEVBQUFyQixNQUFBL3BDLEdBQUF0VCxFQUFBcTlDLE1BQUEvcEMsR0FFQSxNQUFZQSxF
QUFBdFQsRUFBQXE5QyxNQUFBejlDLE9BQXVCMFQsSUFDbkNvckMsRUFBQXJCLE1BQUE3NEMsS0FB
QW82QyxFQUFBNStDLEVBQUFxOUMsTUFBQS9wQyxJQUVBb3JDLEdBQUFyQixNQUFBejlDLE9BQUFJ
LEVBQUFxOUMsTUFBQXo5QyxTQUNBOCtDLEVBQUFyQixNQUFBejlDLE9BQUFJLEVBQUFxOUMsTUFB
QXo5QyxZQUVLLENBRUwsT0FEQXk5QyxNQUNBL3BDLEVBQUEsRUFBcUJBLEVBQUF0VCxFQUFBcTlD
LE1BQUF6OUMsT0FBdUIwVCxJQUM1QytwQyxFQUFBNzRDLEtBQUFvNkMsRUFBQTUrQyxFQUFBcTlD
LE1BQUEvcEMsSUFFQXFyQyxHQUFBMytDLEVBQUErSSxLQUE4QkEsR0FBQS9JLEVBQUErSSxHQUFB
eVosS0FBQSxFQUFBNjZCLFdBSzlCLFFBQUF3QixLQUNBLEdBQUFDLEdBQUFqK0IsU0FBQTNJLGNB
QUEsUUFHQSxPQUZBNG1DLEdBQUFsM0MsS0FBQSxXQUNBbTNDLEVBQUE5OEIsWUFBQTY4QixHQUNB
QSxFQUdBLFFBQUFGLEdBQUExZ0QsR0FDQSxHQUFBaUssR0FBQXJJLEVBQ0FnL0MsRUFBQWorQixT
QUFBTSxjQUFBLDJCQUFBampCLEVBQUE2SyxHQUFBLEtBRUEsSUFBQSsxQyxFQUFBLENBQ0EsR0FB
QUUsRUFHQSxNQUFBcjlDLEVBT0FtOUMsR0FBQS8rQixXQUFBaUMsWUFBQTg4QixHQUlBLEdBQUFH
LEVBQUEsQ0FFQSxHQUFBQyxHQUFBQyxHQUNBTCxHQUFBTSxNQUFBUCxLQUNBMTJDLEVBQUFrM0Ms
RUFBQTMrQyxLQUFBLEtBQUFvK0MsRUFBQUksR0FBQSxHQUNBcC9DLEVBQUF1L0MsRUFBQTMrQyxL
QUFBLEtBQUFvK0MsRUFBQUksR0FBQSxPQUdBSixHQUFBRCxJQUNBMTJDLEVBQUFtM0MsRUFBQTUr
QyxLQUFBLEtBQUFvK0MsR0FDQWgvQyxFQUFBLFdBQ0FnL0MsRUFBQS8rQixXQUFBaUMsWUFBQTg4
QixHQU1BLE9BRkEzMkMsR0FBQWpLLEdBRUEsU0FBQXFoRCxHQUNBLEdBQUFBLEVBQUEsQ0FDQSxH
QUFBQSxFQUFBOXhCLE1BQUF2dkIsRUFBQXV2QixLQUNBOHhCLEVBQUE3QixRQUFBeC9DLEVBQUF3
L0MsT0FDQTZCLEVBQUE1QixZQUFBei9DLEVBQUF5L0MsVUFDQSxNQUVBeDFDLEdBQUFqSyxFQUFB
cWhELE9BRUF6L0MsTUFjQSxRQUFBdS9DLEdBQUFQLEVBQUE3K0MsRUFBQUgsRUFBQTVCLEdBQ0Es
R0FBQXV2QixHQUFBM3RCLEVBQUEsR0FBQTVCLEVBQUF1dkIsR0FFQSxJQUFBcXhCLEVBQUFVLFdB
Q0FWLEVBQUFVLFdBQUFyVCxRQUFBc1QsRUFBQXgvQyxFQUFBd3RCLE9BQ0csQ0FDSCxHQUFBaXlC
LEdBQUE3K0IsU0FBQWMsZUFBQThMLEdBQ0FreUIsRUFBQWIsRUFBQWEsVUFDQUEsR0FBQTEvQyxJ
QUFBNitDLEVBQUE5OEIsWUFBQTI5QixFQUFBMS9DLElBQ0EwL0MsRUFBQS8vQyxPQUNBay9DLEVB
QUFqOUIsYUFBQTY5QixFQUFBQyxFQUFBMS9DLElBRUE2K0MsRUFBQTc4QixZQUFBeTlCLElBS0Es
UUFBQUosR0FBQVIsRUFBQTVnRCxHQUNBLEdBQUF1dkIsR0FBQXZ2QixFQUFBdXZCLElBQ0Fpd0Is
RUFBQXgvQyxFQUFBdy9DLE1BQ0FDLEVBQUF6L0MsRUFBQXkvQyxTQWNBLElBWkFELEdBQ0FvQixF
QUFBdjlCLGFBQUEsUUFBQW04QixHQUdBQyxJQUdBbHdCLEdBQUEsbUJBQUFrd0IsRUFBQVEsUUFB
QSxTQUVBMXdCLEdBQUEsdURBQXlEdXdCLEtBQUFLLFNBQUFDLG1CQUFBdi9DLEtBQUFDLFVBQUEy
K0MsTUFBQSxPQUd6RG1CLEVBQUFVLFdBQ0FWLEVBQUFVLFdBQUFyVCxRQUFBMWUsTUFDRyxDQUNI
LEtBQUFxeEIsRUFBQXZPLFlBQ0F1TyxFQUFBOThCLFlBQUE4OEIsRUFBQXZPLFdBRUF1TyxHQUFB
NzhCLFlBQUFwQixTQUFBYyxlQUFBOEwsS0E5TUEsR0FBQW15QixHQUFBLG1CQUFBLytCLFNBRUEs
dUJBQUFnL0IsZ0JBQ0FELEVBQ0EsU0FBQTNDLE9BQ0EsMEpBS0EsSUFBQTZDLEdBQUF6aUQsRUFB
QSxJQWVBc2hELEtBUUFJLEVBQUFhLElBQUEvK0IsU0FBQWsrQixNQUFBbCtCLFNBQUFrL0IscUJB
QUEsWUFDQVgsRUFBQSxLQUNBRCxFQUFBLEVBQ0FILEdBQUEsRUFDQXI5QyxFQUFBLGFBSUFzOUMs
RUFBQSxtQkFBQW5hLFlBQUEsZUFBQXhoQyxLQUFBd2hDLFVBQUFDLFVBQUFsbEMsY0FFQTFDLEdB
QUFtNUMsUUFBQSxTQUFBa0gsRUFBQS85QyxFQUFBdWdELEdBQ0FoQixFQUFBZ0IsQ0FFQSxJQUFB
cnhCLEdBQUFteEIsRUFBQXRDLEVBQUEvOUMsRUFHQSxPQUZBZy9DLEdBQUE5dkIsR0FFQSxTQUFB
c3hCLEdBRUEsT0FEQUMsTUFDQXZnRCxFQUFBLEVBQW1CQSxFQUFBZ3ZCLEVBQUEvdUIsT0FBbUJE
LElBQUEsQ0FDdEMsR0FBQUssR0FBQTJ1QixFQUFBaHZCLEdBQ0ErK0MsRUFBQUMsRUFBQTMrQyxF
QUFBK0ksR0FDQTIxQyxHQUFBbDhCLE9BQ0EwOUIsRUFBQTE3QyxLQUFBazZDLEdBRUF1QixHQUNB
dHhCLEVBQUFteEIsRUFBQXRDLEVBQUF5QyxHQUNBeEIsRUFBQTl2QixJQUVBQSxJQUVBLFFBQUFo
dkIsR0FBQSxFQUFtQkEsRUFBQXVnRCxFQUFBdGdELE9BQXNCRCxJQUFBLENBQ3pDLEdBQUErK0Ms
R0FBQXdCLEVBQUF2Z0QsRUFDQSxRQUFBKytDLEVBQUFsOEIsS0FBQSxDQUNBLE9BQUFsUCxHQUFB
LEVBQXVCQSxFQUFBb3JDLEVBQUFyQixNQUFBejlDLE9BQTJCMFQsSUFDbERvckMsRUFBQXJCLE1B
QUEvcEMsV0FFQXFyQyxHQUFBRCxFQUFBMzFDLE9Bd0ZBLElBQUEwMkMsR0FBQSxXQUNBLEdBQUFV
LEtBRUEsaUJBQUFsZ0QsRUFBQW1nRCxHQUVBLE1BREFELEdBQUFsZ0QsR0FBQW1nRCxFQUNBRCxF
QUFBMWdDLE9BQUE5VixTQUFBMGEsS0FBQSIsImZpbGUiOiJzdGF0aWMvanMvdmVuZG9yLjJlNGU5
ZTUyODY2NGZhNzk2ZDNhLmpzIiwic291cmNlc0NvbnRlbnQiOlsid2VicGFja0pzb25wKFsxXSxb
XG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVBy
b3BlcnR5KF9fd2VicGFja19leHBvcnRzX18sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVl
IH0pO1xuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8qIVxu
ICogVnVlLmpzIHYyLjQuMlxuICogKGMpIDIwMTQtMjAxNyBFdmFuIFlvdVxuICogUmVsZWFzZWQg
dW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG4vKiAgKi9cblxuLy8gdGhlc2UgaGVscGVycyBw
cm9kdWNlcyBiZXR0ZXIgdm0gY29kZSBpbiBKUyBlbmdpbmVzIGR1ZSB0byB0aGVpclxuLy8gZXhw
bGljaXRuZXNzIGFuZCBmdW5jdGlvbiBpbmxpbmluZ1xuZnVuY3Rpb24gaXNVbmRlZiAodikge1xu
ICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNE
ZWYgKHYpIHtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsXG59XG5cbmZ1
bmN0aW9uIGlzVHJ1ZSAodikge1xuICByZXR1cm4gdiA9PT0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBp
c0ZhbHNlICh2KSB7XG4gIHJldHVybiB2ID09PSBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlm
IHZhbHVlIGlzIHByaW1pdGl2ZVxuICovXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSAodmFsdWUpIHtc
biAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgdHlwZW9m
IHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nXG4g
IClcbn1cblxuLyoqXG4gKiBRdWljayBvYmplY3QgY2hlY2sgLSB0aGlzIGlzIHByaW1hcmlseSB1
c2VkIHRvIHRlbGxcbiAqIE9iamVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4gd2Uga25v
dyB0aGUgdmFsdWVcbiAqIGlzIGEgSlNPTi1jb21wbGlhbnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24g
aXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09
ICdvYmplY3QnXG59XG5cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
O1xuXG4vKipcbiAqIFN0cmljdCBvYmplY3QgdHlwZSBjaGVjay4gT25seSByZXR1cm5zIHRydWVc
biAqIGZvciBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5P
YmplY3QgKG9iaikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3Qg
T2JqZWN0XSdcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAgKHYpIHtcbiAgcmV0dXJuIF90b1N0cmlu
Zy5jYWxsKHYpID09PSAnW29iamVjdCBSZWdFeHBdJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZh
bCBpcyBhIHZhbGlkIGFycmF5IGluZGV4LlxuICovXG5mdW5jdGlvbiBpc1ZhbGlkQXJyYXlJbmRl
eCAodmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gbiA+PSAwICYm
IE1hdGguZmxvb3IobikgPT09IG4gJiYgaXNGaW5pdGUodmFsKVxufVxuXG4vKipcbiAqIENvbnZl
cnQgYSB2YWx1ZSB0byBhIHN0cmluZyB0aGF0IGlzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICovXG5m
dW5jdGlvbiB0b1N0cmluZyAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbFxuICAgID8gJydc
biAgICA6IHR5cGVvZiB2YWwgPT09ICdvYmplY3QnXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHZh
bCwgbnVsbCwgMilcbiAgICAgIDogU3RyaW5nKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEg
aW5wdXQgdmFsdWUgdG8gYSBudW1iZXIgZm9yIHBlcnNpc3RlbmNlLlxuICogSWYgdGhlIGNvbnZl
cnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRvTnVt
YmVyICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCk7XG4gIHJldHVybiBpc05hTihu
KSA/IHZhbCA6IG5cbn1cblxuLyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlv
biBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlv
biBtYWtlTWFwIChcbiAgc3RyLFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9
IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9
IHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2
YWwpIHsgcmV0dXJuIG1hcFt2YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2
YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMg
YSBidWlsdC1pbiB0YWcuXG4gKi9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNv
bXBvbmVudCcsIHRydWUpO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgYXR0cmlidXRlIGlzIGEgcmVz
ZXJ2ZWQgYXR0cmlidXRlLlxuICovXG52YXIgaXNSZXNlcnZlZEF0dHJpYnV0ZSA9IG1ha2VNYXAo
J2tleSxyZWYsc2xvdCxpcycpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJy
YXlcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAgaWYgKGFyci5sZW5ndGgp
IHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAt
MSkge1xuICAgICAgcmV0dXJuIGFyci5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG59XG5c
bi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9c
bnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5m
dW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxs
KG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVy
ZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBP
YmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtc
biAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJd
ID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0
ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6
ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6
ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9
KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxp
emUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1Vw
cGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1l
bENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvKFteLV0pKFtBLVpdKS9nO1xu
dmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHJcbiAg
ICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAucmVwbGFjZShoeXBoZW5hdGVS
RSwgJyQxLSQyJylcbiAgICAudG9Mb3dlckNhc2UoKVxufSk7XG5cbi8qKlxuICogU2ltcGxlIGJp
bmQsIGZhc3RlciB0aGFuIG5hdGl2ZVxuICovXG5mdW5jdGlvbiBiaW5kIChmbiwgY3R4KSB7XG4g
IGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcbiAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4g
ICAgcmV0dXJuIGxcbiAgICAgID8gbCA+IDFcbiAgICAgICAgPyBmbi5hcHBseShjdHgsIGFyZ3Vt
ZW50cylcbiAgICAgICAgOiBmbi5jYWxsKGN0eCwgYSlcbiAgICAgIDogZm4uY2FsbChjdHgpXG4g
IH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIGZuIGxlbmd0aFxuICBib3VuZEZuLl9sZW5ndGggPSBm
bi5sZW5ndGg7XG4gIHJldHVybiBib3VuZEZuXG59XG5cbi8qKlxuICogQ29udmVydCBhbiBBcnJh
eS1saWtlIG9iamVjdCB0byBhIHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkgKGxp
c3QsIHN0YXJ0KSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFyIGkgPSBsaXN0Lmxlbmd0
aCAtIHN0YXJ0O1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSB7XG4g
ICAgcmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyoq
XG4gKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4
dGVuZCAodG8sIF9mcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBfZnJvbSkge1xuICAgIHRvW2tl
eV0gPSBfZnJvbVtrZXldO1xuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIE1lcmdlIGFu
IEFycmF5IG9mIE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRv
T2JqZWN0IChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
ci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFy
cltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyoqXG4gKiBQZXJmb3JtIG5v
IG9wZXJhdGlvbi5cbiAqIFN0dWJiaW5nIGFyZ3MgdG8gbWFrZSBGbG93IGhhcHB5IHdpdGhvdXQg
bGVhdmluZyB1c2VsZXNzIHRyYW5zcGlsZWQgY29kZVxuICogd2l0aCAuLi5yZXN0IChodHRwczov
L2Zsb3cub3JnL2Jsb2cvMjAxNy8wNS8wNy9TdHJpY3QtRnVuY3Rpb24tQ2FsbC1Bcml0eS8pXG4g
Ki9cbmZ1bmN0aW9uIG5vb3AgKGEsIGIsIGMpIHt9XG5cbi8qKlxuICogQWx3YXlzIHJldHVybiBm
YWxzZS5cbiAqL1xudmFyIG5vID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIGZhbHNlOyB9
O1xuXG4vKipcbiAqIFJldHVybiBzYW1lIHZhbHVlXG4gKi9cbnZhciBpZGVudGl0eSA9IGZ1bmN0
aW9uIChfKSB7IHJldHVybiBfOyB9O1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RhdGljIGtleXMg
c3RyaW5nIGZyb20gY29tcGlsZXIgbW9kdWxlcy5cbiAqL1xuZnVuY3Rpb24gZ2VuU3RhdGljS2V5
cyAobW9kdWxlcykge1xuICByZXR1cm4gbW9kdWxlcy5yZWR1Y2UoZnVuY3Rpb24gKGtleXMsIG0p
IHtcbiAgICByZXR1cm4ga2V5cy5jb25jYXQobS5zdGF0aWNLZXlzIHx8IFtdKVxuICB9LCBbXSku
am9pbignLCcpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdHdvIHZhbHVlcyBhcmUgbG9vc2VseSBl
cXVhbCAtIHRoYXQgaXMsXG4gKiBpZiB0aGV5IGFyZSBwbGFpbiBvYmplY3RzLCBkbyB0aGV5IGhh
dmUgdGhlIHNhbWUgc2hhcGU/XG4gKi9cbmZ1bmN0aW9uIGxvb3NlRXF1YWwgKGEsIGIpIHtcbiAg
aWYgKGEgPT09IGIpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaXNPYmplY3RBID0gaXNPYmplY3Qo
YSk7XG4gIHZhciBpc09iamVjdEIgPSBpc09iamVjdChiKTtcbiAgaWYgKGlzT2JqZWN0QSAmJiBp
c09iamVjdEIpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGlzQXJyYXlBID0gQXJyYXkuaXNBcnJh
eShhKTtcbiAgICAgIHZhciBpc0FycmF5QiA9IEFycmF5LmlzQXJyYXkoYik7XG4gICAgICBpZiAo
aXNBcnJheUEgJiYgaXNBcnJheUIpIHtcbiAgICAgICAgcmV0dXJuIGEubGVuZ3RoID09PSBiLmxl
bmd0aCAmJiBhLmV2ZXJ5KGZ1bmN0aW9uIChlLCBpKSB7XG4gICAgICAgICAgcmV0dXJuIGxvb3Nl
RXF1YWwoZSwgYltpXSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIWlzQXJyYXlBICYm
ICFpc0FycmF5Qikge1xuICAgICAgICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAg
ICAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICAgIHJldHVybiBrZXlzQS5sZW5n
dGggPT09IGtleXNCLmxlbmd0aCAmJiBrZXlzQS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAg
ICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoYVtrZXldLCBiW2tleV0pXG4gICAgICAgIH0pXG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBy
ZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9IGVsc2UgaWYg
KCFpc09iamVjdEEgJiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0
cmluZyhiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9u
IGxvb3NlSW5kZXhPZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVu
Z3RoOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkg
fVxuICB9XG4gIHJldHVybiAtMVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNh
bGxlZCBvbmx5IG9uY2UuXG4gKi9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQg
PSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAg
ICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAg
fVxuICB9XG59XG5cbnZhciBTU1JfQVRUUiA9ICdkYXRhLXNlcnZlci1yZW5kZXJlZCc7XG5cbnZh
ciBBU1NFVF9UWVBFUyA9IFtcbiAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmls
dGVyJ1xuXTtcblxudmFyIExJRkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4g
ICdjcmVhdGVkJyxcbiAgJ2JlZm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBk
YXRlJyxcbiAgJ3VwZGF0ZWQnLFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxu
ICAnYWN0aXZhdGVkJyxcbiAgJ2RlYWN0aXZhdGVkJ1xuXTtcblxuLyogICovXG5cbnZhciBjb25m
aWcgPSAoe1xuICAvKipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29y
ZS91dGlsL29wdGlvbnMpXG4gICAqL1xuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5j
cmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3Mu
XG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24g
bW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogXCJwcm9k
dWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFi
bGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1
Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBw
ZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNo
ZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIFdh
cm4gaGFuZGxlciBmb3Igd2F0Y2hlciB3YXJuc1xuICAgKi9cbiAgd2FybkhhbmRsZXI6IG51bGws
XG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAg
aWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFz
ZXMgZm9yIHYtb25cbiAgICovXG4gIGtleUNvZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4g
IC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBi
ZSByZWdpc3RlcmVkIGFzIGFcbiAgICogY29tcG9uZW50LiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVu
ZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZFRhZzogbm8s
XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBzbyB0aGF0
IGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEgY29tcG9uZW50XG4gICAqIHByb3AuIFRoaXMgaXMgcGxh
dGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2Vy
dmVkQXR0cjogbm8sXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIGFuIHVua25vd24g
ZWxlbWVudC5cbiAgICogUGxhdGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgaXNVbmtub3duRWxl
bWVudDogbm8sXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZXNwYWNlIG9mIGFuIGVsZW1lbnRc
biAgICovXG4gIGdldFRhZ05hbWVzcGFjZTogbm9vcCxcblxuICAvKipcbiAgICogUGFyc2UgdGhl
IHJlYWwgdGFnIG5hbWUgZm9yIHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS5cbiAgICovXG4gIHBhcnNl
UGxhdGZvcm1UYWdOYW1lOiBpZGVudGl0eSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0
cmlidXRlIG11c3QgYmUgYm91bmQgdXNpbmcgcHJvcGVydHksIGUuZy4gdmFsdWVcbiAgICogUGxh
dGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgbXVzdFVzZVByb3A6IG5vLFxuXG4gIC8qKlxuICAg
KiBFeHBvc2VkIGZvciBsZWdhY3kgcmVhc29uc1xuICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBM
SUZFQ1lDTEVfSE9PS1Ncbn0pO1xuXG4vKiAgKi9cblxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0
LmZyZWV6ZSh7fSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBv
ciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAn
JykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxu
XG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5
LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7
XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3Jp
dGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAq
IFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gL1teXFx3LiRdLztcbmZ1bmN0
aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBm
dW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7
IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdt
ZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxudmFy
IHdhcm4gPSBub29wO1xudmFyIHRpcCA9IG5vb3A7XG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9
IChudWxsKTsgLy8gd29yayBhcm91bmQgZmxvdyBjaGVja1xuXG5pZiAoZmFsc2UpIHtcbiAgdmFy
IGhhc0NvbnNvbGUgPSB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFz
c2lmeVJFID0gLyg/Ol58Wy1fXSkoXFx3KS9nO1xuICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAo
c3RyKSB7IHJldHVybiBzdHJcbiAgICAucmVwbGFjZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykg
eyByZXR1cm4gYy50b1VwcGVyQ2FzZSgpOyB9KVxuICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsg
fTtcblxuICB3YXJuID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICB2YXIgdHJhY2UgPSB2bSA/
IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJyc7XG5cbiAgICBpZiAoY29uZmlnLndhcm5I
YW5kbGVyKSB7XG4gICAgICBjb25maWcud2FybkhhbmRsZXIuY2FsbChudWxsLCBtc2csIHZtLCB0
cmFjZSk7XG4gICAgfSBlbHNlIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtc
biAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyB0cmFjZSkpO1xu
ICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXND
b25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltWdWUg
dGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2
bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUg
PSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkg
e1xuICAgICAgcmV0dXJuICc8Um9vdD4nXG4gICAgfVxuICAgIHZhciBuYW1lID0gdHlwZW9mIHZt
ID09PSAnc3RyaW5nJ1xuICAgICAgPyB2bVxuICAgICAgOiB0eXBlb2Ygdm0gPT09ICdmdW5jdGlv
bicgJiYgdm0ub3B0aW9uc1xuICAgICAgICA/IHZtLm9wdGlvbnMubmFtZVxuICAgICAgICA6IHZt
Ll9pc1Z1ZVxuICAgICAgICAgID8gdm0uJG9wdGlvbnMubmFtZSB8fCB2bS4kb3B0aW9ucy5fY29t
cG9uZW50VGFnXG4gICAgICAgICAgOiB2bS5uYW1lO1xuXG4gICAgdmFyIGZpbGUgPSB2bS5faXNW
dWUgJiYgdm0uJG9wdGlvbnMuX19maWxlO1xuICAgIGlmICghbmFtZSAmJiBmaWxlKSB7XG4gICAg
ICB2YXIgbWF0Y2ggPSBmaWxlLm1hdGNoKC8oW14vXFxcXF0rKVxcLnZ1ZSQvKTtcbiAgICAgIG5h
bWUgPSBtYXRjaCAmJiBtYXRjaFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG5h
bWUgPyAoXCI8XCIgKyAoY2xhc3NpZnkobmFtZSkpICsgXCI+XCIpIDogXCI8QW5vbnltb3VzPlwi
KSArXG4gICAgICAoZmlsZSAmJiBpbmNsdWRlRmlsZSAhPT0gZmFsc2UgPyAoXCIgYXQgXCIgKyBm
aWxlKSA6ICcnKVxuICAgIClcbiAgfTtcblxuICB2YXIgcmVwZWF0ID0gZnVuY3Rpb24gKHN0ciwg
bikge1xuICAgIHZhciByZXMgPSAnJztcbiAgICB3aGlsZSAobikge1xuICAgICAgaWYgKG4gJSAy
ID09PSAxKSB7IHJlcyArPSBzdHI7IH1cbiAgICAgIGlmIChuID4gMSkgeyBzdHIgKz0gc3RyOyB9
XG4gICAgICBuID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH07XG5cbiAgdmFyIGdl
bmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVl
ICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2YXIgY3VycmVu
dFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgIHdoaWxlICh2bSkge1xuICAgICAgICBpZiAo
dHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3Ro
IC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9y
KSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAg
IHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNl
IGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAgICB0cmVlW3Ry
ZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAg
ICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAg
ICB9XG4gICAgICAgIHRyZWUucHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAg
ICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+
ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZtKVxuICAgICAg
ICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsx
XSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVu
dE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAg
ICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0p
KSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGhhbmRsZUVy
cm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAg
Y29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pO1xuICB9IGVsc2Ug
e1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBc
IjogXFxcIlwiICsgKGVyci50b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICAgIH1cbiAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpbkJyb3dzZXIgJiYgdHlwZW9m
IGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8q
IGdsb2JhbHMgTXV0YXRpb25PYnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9c
bnZhciBoYXNQcm90byA9ICdfX3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25t
ZW50IHNuaWZmaW5nXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5l
ZCc7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9M
b3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52
YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2Ug
PSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBV
QS5pbmRleE9mKCdhbmRyb2lkJykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFk
fGlwb2R8aW9zLy50ZXN0KFVBKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQr
Ly50ZXN0KFVBKSAmJiAhaXNFZGdlO1xuXG4vLyBGaXJlZml4IGhhcyBhIFwid2F0Y2hcIiBmdW5j
dGlvbiBvbiBPYmplY3QucHJvdG90eXBlLi4uXG52YXIgbmF0aXZlV2F0Y2ggPSAoe30pLndhdGNo
O1xuXG52YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRy
eSB7XG4gICAgdmFyIG9wdHMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywg
J3Bhc3NpdmUnLCAoe1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xu
ICAgICAgfVxuICAgIH0pKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNz
dWVzLzI4NVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUnLCBudWxs
LCBvcHRzKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBiZSBsYXp5
LWV2YWxlZCBiZWNhdXNlIHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVy
LXJlbmRlcmVyIGNhbiBzZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1NlcnZlclJl
bmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7
XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIgJiYgdHlw
ZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVzZW5jZSBv
ZiB2dWUtc2VydmVyLXJlbmRlcmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBzaGltbWlu
ZyB0aGUgcHJvY2Vzc1xuICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10uZW52LlZV
RV9FTlYgPT09ICdzZXJ2ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIgPSBmYWxz
ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0IGRldnRv
b2xzXG52YXIgZGV2dG9vbHMgPSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRPT0xTX0dM
T0JBTF9IT09LX187XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpc05h
dGl2ZSAoQ3Rvcikge1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicgJiYgL25h
dGl2ZSBjb2RlLy50ZXN0KEN0b3IudG9TdHJpbmcoKSlcbn1cblxudmFyIGhhc1N5bWJvbCA9XG4g
IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFN5bWJvbCkgJiZcbiAg
dHlwZW9mIFJlZmxlY3QgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFJlZmxlY3Qub3duS2V5
cyk7XG5cbi8qKlxuICogRGVmZXIgYSB0YXNrIHRvIGV4ZWN1dGUgaXQgYXN5bmNocm9ub3VzbHku
XG4gKi9cbnZhciBuZXh0VGljayA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsYmFja3MgPSBb
XTtcbiAgdmFyIHBlbmRpbmcgPSBmYWxzZTtcbiAgdmFyIHRpbWVyRnVuYztcblxuICBmdW5jdGlv
biBuZXh0VGlja0hhbmRsZXIgKCkge1xuICAgIHBlbmRpbmcgPSBmYWxzZTtcbiAgICB2YXIgY29w
aWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY29waWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb3BpZXNb
aV0oKTtcbiAgICB9XG4gIH1cblxuICAvLyB0aGUgbmV4dFRpY2sgYmVoYXZpb3IgbGV2ZXJhZ2Vz
IHRoZSBtaWNyb3Rhc2sgcXVldWUsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZFxuICAvLyB2aWEgZWl0
aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbiAgLy8gTXV0YXRp
b25PYnNlcnZlciBoYXMgd2lkZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBpcyBzZXJpb3VzbHkgYnVn
Z2VkIGluXG4gIC8vIFVJV2ViVmlldyBpbiBpT1MgPj0gOS4zLjMgd2hlbiB0cmlnZ2VyZWQgaW4g
dG91Y2ggZXZlbnQgaGFuZGxlcnMuIEl0XG4gIC8vIGNvbXBsZXRlbHkgc3RvcHMgd29ya2luZyBh
ZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbiAgLy8gUHJvbWlz
ZSBpcyBhdmFpbGFibGUsIHdlIHdpbGwgdXNlIGl0OlxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgaWYgKHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm9t
aXNlKSkge1xuICAgIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdmFyIGxvZ0Vycm9y
ID0gZnVuY3Rpb24gKGVycikgeyBjb25zb2xlLmVycm9yKGVycik7IH07XG4gICAgdGltZXJGdW5j
ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcC50aGVuKG5leHRUaWNrSGFuZGxlcikuY2F0Y2gobG9n
RXJyb3IpO1xuICAgICAgLy8gaW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlzZS50aGVu
IGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4gICAgICAvLyBpdCBjYW4gZ2V0IHN0dWNr
IGluIGEgd2VpcmQgc3RhdGUgd2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0aGVcbiAg
ICAgIC8vIG1pY3JvdGFzayBxdWV1ZSBidXQgdGhlIHF1ZXVlIGlzbid0IGJlaW5nIGZsdXNoZWQs
IHVudGlsIHRoZSBicm93c2VyXG4gICAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVyIHdvcmss
IGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAgIC8vIFwiZm9yY2Vc
IiB0aGUgbWljcm90YXNrIHF1ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVtcHR5IHRp
bWVyLlxuICAgICAgaWYgKGlzSU9TKSB7IHNldFRpbWVvdXQobm9vcCk7IH1cbiAgICB9O1xuICB9
IGVsc2UgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAmJiAoXG4g
ICAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZlcikgfHxcbiAgICAvLyBQaGFudG9tSlMgYW5kIGlP
UyA3LnhcbiAgICBNdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE11dGF0
aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0nXG4gICkpIHtcbiAgICAvLyB1c2UgTXV0YXRpb25PYnNl
cnZlciB3aGVyZSBuYXRpdmUgUHJvbWlzZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgIC8vIGUuZy4g
UGhhbnRvbUpTIElFMTEsIGlPUzcsIEFuZHJvaWQgNC40XG4gICAgdmFyIGNvdW50ZXIgPSAxO1xu
ICAgIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG5leHRUaWNrSGFuZGxlcik7
XG4gICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGNvdW50
ZXIpKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgICBjaGFyYWN0ZXJE
YXRhOiB0cnVlXG4gICAgfSk7XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAg
Y291bnRlciA9IChjb3VudGVyICsgMSkgJSAyO1xuICAgICAgdGV4dE5vZGUuZGF0YSA9IFN0cmlu
Zyhjb3VudGVyKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIGZhbGxiYWNrIHRvIHNldFRp
bWVvdXRcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRpbWVyRnVuYyA9IGZ1
bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQobmV4dFRpY2tIYW5kbGVyLCAwKTtcbiAgICB9
O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXVlTmV4dFRpY2sgKGNiLCBjdHgpIHtcbiAg
ICB2YXIgX3Jlc29sdmU7XG4gICAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAg
aWYgKGNiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAg
ICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgY3R4LCAnbmV4dFRpY2sn
KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAgICBfcmVz
b2x2ZShjdHgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAg
cGVuZGluZyA9IHRydWU7XG4gICAgICB0aW1lckZ1bmMoKTtcbiAgICB9XG4gICAgaWYgKCFjYiAm
JiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgUHJv
bWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIF9yZXNvbHZlID0gcmVz
b2x2ZTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSgpO1xuXG52YXIgX1NldDtcbi8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuaWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0
aXZlKFNldCkpIHtcbiAgLy8gdXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUuXG4gIF9TZXQg
PSBTZXQ7XG59IGVsc2Uge1xuICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZpbGwgdGhhdCBv
bmx5IHdvcmtzIHdpdGggcHJpbWl0aXZlIGtleXMuXG4gIF9TZXQgPSAoZnVuY3Rpb24gKCkge1xu
ICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChrZXkpIHtc
biAgICAgIHJldHVybiB0aGlzLnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBTZXQucHJv
dG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtrZXldID0g
dHJ1ZTtcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhciAo
KSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtcblxuICAg
IHJldHVybiBTZXQ7XG4gIH0oKSk7XG59XG5cbi8qICAqL1xuXG5cbnZhciB1aWQgPSAwO1xuXG4v
KipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZVxuICog
ZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0aW9uIERl
cCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQrKztcbiAgdGhpcy5zdWJzID0gW107XG59O1xuXG5EZXAu
cHJvdG90eXBlLmFkZFN1YiA9IGZ1bmN0aW9uIGFkZFN1YiAoc3ViKSB7XG4gIHRoaXMuc3Vicy5w
dXNoKHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLnJlbW92ZVN1YiA9IGZ1bmN0aW9uIHJlbW92
ZVN1YiAoc3ViKSB7XG4gIHJlbW92ZSh0aGlzLnN1YnMsIHN1Yik7XG59O1xuXG5EZXAucHJvdG90
eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7XG4g
ICAgRGVwLnRhcmdldC5hZGREZXAodGhpcyk7XG4gIH1cbn07XG5cbkRlcC5wcm90b3R5cGUubm90
aWZ5ID0gZnVuY3Rpb24gbm90aWZ5ICgpIHtcbiAgLy8gc3RhYmlsaXplIHRoZSBzdWJzY3JpYmVy
IGxpc3QgZmlyc3RcbiAgdmFyIHN1YnMgPSB0aGlzLnN1YnMuc2xpY2UoKTtcbiAgZm9yICh2YXIg
aSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0udXBkYXRl
KCk7XG4gIH1cbn07XG5cbi8vIHRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1
YXRlZC5cbi8vIHRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2UgdGhlcmUgY291bGQgYmUg
b25seSBvbmVcbi8vIHdhdGNoZXIgYmVpbmcgZXZhbHVhdGVkIGF0IGFueSB0aW1lLlxuRGVwLnRh
cmdldCA9IG51bGw7XG52YXIgdGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVzaFRhcmdl
dCAoX3RhcmdldCkge1xuICBpZiAoRGVwLnRhcmdldCkgeyB0YXJnZXRTdGFjay5wdXNoKERlcC50
YXJnZXQpOyB9XG4gIERlcC50YXJnZXQgPSBfdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJn
ZXQgKCkge1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0U3RhY2sucG9wKCk7XG59XG5cbi8qXG4gKiBu
b3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxs
IHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlw
ZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFycmF5TWV0
aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7W1xuICAncHVzaCcsXG4gICdwb3AnLFxu
ICAnc2hpZnQnLFxuICAndW5zaGlmdCcsXG4gICdzcGxpY2UnLFxuICAnc29ydCcsXG4gICdyZXZl
cnNlJ1xuXVxuLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBvcmlnaW5h
bCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBkZWYoYXJy
YXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBhcmdzID0g
W10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxl
biBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBs
eSh0aGlzLCBhcmdzKTtcbiAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0
ZWQ7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgY2Fz
ZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAg
ICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAg
ICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShp
bnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xu
ICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEJ5
IGRlZmF1bHQsIHdoZW4gYSByZWFjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQsIHRoZSBuZXcgdmFsdWUg
aXNcbiAqIGFsc28gY29udmVydGVkIHRvIGJlY29tZSByZWFjdGl2ZS4gSG93ZXZlciB3aGVuIHBh
c3NpbmcgZG93biBwcm9wcyxcbiAqIHdlIGRvbid0IHdhbnQgdG8gZm9yY2UgY29udmVyc2lvbiBi
ZWNhdXNlIHRoZSB2YWx1ZSBtYXkgYmUgYSBuZXN0ZWQgdmFsdWVcbiAqIHVuZGVyIGEgZnJvemVu
IGRhdGEgc3RydWN0dXJlLiBDb252ZXJ0aW5nIGl0IHdvdWxkIGRlZmVhdCB0aGUgb3B0aW1pemF0
aW9uLlxuICovXG52YXIgb2JzZXJ2ZXJTdGF0ZSA9IHtcbiAgc2hvdWxkQ29udmVydDogdHJ1ZVxu
fTtcblxuLyoqXG4gKiBPYnNlcnZlciBjbGFzcyB0aGF0IGFyZSBhdHRhY2hlZCB0byBlYWNoIG9i
c2VydmVkXG4gKiBvYmplY3QuIE9uY2UgYXR0YWNoZWQsIHRoZSBvYnNlcnZlciBjb252ZXJ0cyB0
YXJnZXRcbiAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0
XG4gKiBjb2xsZWN0IGRlcGVuZGVuY2llcyBhbmQgZGlzcGF0Y2hlcyB1cGRhdGVzLlxuICovXG52
YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9
IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAg
ZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkg
e1xuICAgIHZhciBhdWdtZW50ID0gaGFzUHJvdG9cbiAgICAgID8gcHJvdG9BdWdtZW50XG4gICAg
ICA6IGNvcHlBdWdtZW50O1xuICAgIGF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlL
ZXlzKTtcbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhp
cy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggZWFjaCBwcm9w
ZXJ0eSBhbmQgY29udmVydCB0aGVtIGludG9cbiAqIGdldHRlci9zZXR0ZXJzLiBUaGlzIG1ldGhv
ZCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlblxuICogdmFsdWUgdHlwZSBpcyBPYmplY3QuXG4g
Ki9cbk9ic2VydmVyLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gd2FsayAob2JqKSB7XG4gIHZh
ciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxl
bmd0aDsgaSsrKSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEob2JqLCBrZXlzW2ldLCBvYmpba2V5
c1tpXV0pO1xuICB9XG59O1xuXG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1z
LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2
ZUFycmF5IChpdGVtcykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8
IGw7IGkrKykge1xuICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJz
XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGludGVyY2Vw
dGluZ1xuICogdGhlIHByb3RvdHlwZSBjaGFpbiB1c2luZyBfX3Byb3RvX19cbiAqL1xuZnVuY3Rp
b24gcHJvdG9BdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICAvKiBlc2xpbnQtZGlzYWJs
ZSBuby1wcm90byAqL1xuICB0YXJnZXQuX19wcm90b19fID0gc3JjO1xuICAvKiBlc2xpbnQtZW5h
YmxlIG5vLXByb3RvICovXG59XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9y
IEFycmF5IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5i
dWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5
cykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4g
ICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4g
IH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBm
b3IgYSB2YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkg
b2JzZXJ2ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVh
ZHkgaGFzIG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtc
biAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4g
IGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBP
YnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIG9i
c2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYm
XG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxu
ICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICAp
IHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEg
JiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxu
ICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlv
biBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNl
dHRlcixcbiAgc2hhbGxvd1xuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHBy
b3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlm
IChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0
dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAg
dmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHBy
b3BlcnR5ICYmIHByb3BlcnR5LnNldDtcblxuICB2YXIgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9i
c2VydmUodmFsKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51
bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlv
biByZWFjdGl2ZUdldHRlciAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIu
Y2FsbChvYmopIDogdmFsO1xuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRl
cGVuZCgpO1xuICAgICAgICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRl
cGVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xu
ICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAg
cmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChu
ZXdWYWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2
YWw7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlm
IChuZXdWYWwgPT09IHZhbHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFs
dWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBu
by1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBjdXN0b21TZXR0
ZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwo
b2JqLCBuZXdWYWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAg
ICAgfVxuICAgICAgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9ic2VydmUobmV3VmFsKTtcbiAgICAg
IGRlcC5ub3RpZnkoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5
IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUgbmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hh
bmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUgcHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlz
dC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5p
c0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5s
ZW5ndGggPSBNYXRoLm1heCh0YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uo
a2V5LCAxLCB2YWwpO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoaGFzT3duKHRhcmdldCwg
a2V5KSkge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2
YXIgb2IgPSAodGFyZ2V0KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBv
Yi52bUNvdW50KSkge1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2Fy
bihcbiAgICAgICdBdm9pZCBhZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0
YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBp
dCB1cGZyb250IGluIHRoZSBkYXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4g
IH1cbiAgaWYgKCFvYikge1xuICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxc
biAgfVxuICBkZWZpbmVSZWFjdGl2ZSQkMShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAu
bm90aWZ5KCk7XG4gIHJldHVybiB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBh
bmQgdHJpZ2dlciBjaGFuZ2UgaWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdl
dCwga2V5KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5k
ZXgoa2V5KSkge1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxu
ICB2YXIgb2IgPSAodGFyZ2V0KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAm
JiBvYi52bUNvdW50KSkge1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybihcbiAgICAgICdBdm9pZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGluc3RhbmNl
IG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVsbC4nXG4g
ICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIHtcbiAg
ICByZXR1cm5cbiAgfVxuICBkZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuICBvYi5kZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVjdCBkZXBl
bmRlbmNpZXMgb24gYXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2lu
Y2VcbiAqIHdlIGNhbm5vdCBpbnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlrZSBwcm9w
ZXJ0eSBnZXR0ZXJzLlxuICovXG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcbiAgZm9y
ICh2YXIgZSA9ICh2b2lkIDApLCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykg
e1xuICAgIGUgPSB2YWx1ZVtpXTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9fLmRlcC5k
ZXBlbmQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5kQXJyYXko
ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVyd3JpdGlu
ZyBzdHJhdGVnaWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBtZXJnZSBh
IHBhcmVudCBvcHRpb24gdmFsdWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBpbnRvIHRo
ZSBmaW5hbCB2YWx1ZS5cbiAqL1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJnZVN0cmF0
ZWdpZXM7XG5cbi8qKlxuICogT3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5pZiAoZmFs
c2UpIHtcbiAgc3RyYXRzLmVsID0gc3RyYXRzLnByb3BzRGF0YSA9IGZ1bmN0aW9uIChwYXJlbnQs
IGNoaWxkLCB2bSwga2V5KSB7XG4gICAgaWYgKCF2bSkge1xuICAgICAgd2FybihcbiAgICAgICAg
XCJvcHRpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGlu
c3RhbmNlIFwiICtcbiAgICAgICAgJ2NyZWF0aW9uIHdpdGggdGhlIGBuZXdgIGtleXdvcmQuJ1xu
ICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRTdHJhdChwYXJlbnQsIGNoaWxkKVxu
ICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciB0aGF0IHJlY3Vyc2l2ZWx5IG1lcmdlcyB0d28gZGF0
YSBvYmplY3RzIHRvZ2V0aGVyLlxuICovXG5mdW5jdGlvbiBtZXJnZURhdGEgKHRvLCBmcm9tKSB7
XG4gIGlmICghZnJvbSkgeyByZXR1cm4gdG8gfVxuICB2YXIga2V5LCB0b1ZhbCwgZnJvbVZhbDtc
biAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhmcm9tKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBr
ZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICB0b1ZhbCA9IHRvW2tl
eV07XG4gICAgZnJvbVZhbCA9IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5KSkg
e1xuICAgICAgc2V0KHRvLCBrZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9i
amVjdCh0b1ZhbCkgJiYgaXNQbGFpbk9iamVjdChmcm9tVmFsKSkge1xuICAgICAgbWVyZ2VEYXRh
KHRvVmFsLCBmcm9tVmFsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICog
RGF0YVxuICovXG5mdW5jdGlvbiBtZXJnZURhdGFPckZuIChcbiAgcGFyZW50VmFsLFxuICBjaGls
ZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgLy8gaW4gYSBWdWUuZXh0ZW5kIG1l
cmdlLCBib3RoIHNob3VsZCBiZSBmdW5jdGlvbnNcbiAgICBpZiAoIWNoaWxkVmFsKSB7XG4gICAg
ICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICBy
ZXR1cm4gY2hpbGRWYWxcbiAgICB9XG4gICAgLy8gd2hlbiBwYXJlbnRWYWwgJiBjaGlsZFZhbCBh
cmUgYm90aCBwcmVzZW50LFxuICAgIC8vIHdlIG5lZWQgdG8gcmV0dXJuIGEgZnVuY3Rpb24gdGhh
dCByZXR1cm5zIHRoZVxuICAgIC8vIG1lcmdlZCByZXN1bHQgb2YgYm90aCBmdW5jdGlvbnMuLi4g
bm8gbmVlZCB0b1xuICAgIC8vIGNoZWNrIGlmIHBhcmVudFZhbCBpcyBhIGZ1bmN0aW9uIGhlcmUg
YmVjYXVzZVxuICAgIC8vIGl0IGhhcyB0byBiZSBhIGZ1bmN0aW9uIHRvIHBhc3MgcHJldmlvdXMg
bWVyZ2VzLlxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4gKCkge1xuICAgICAgcmV0
dXJuIG1lcmdlRGF0YShcbiAgICAgICAgdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nID8g
Y2hpbGRWYWwuY2FsbCh0aGlzKSA6IGNoaWxkVmFsLFxuICAgICAgICB0eXBlb2YgcGFyZW50VmFs
ID09PSAnZnVuY3Rpb24nID8gcGFyZW50VmFsLmNhbGwodGhpcykgOiBwYXJlbnRWYWxcbiAgICAg
IClcbiAgICB9XG4gIH0gZWxzZSBpZiAocGFyZW50VmFsIHx8IGNoaWxkVmFsKSB7XG4gICAgcmV0
dXJuIGZ1bmN0aW9uIG1lcmdlZEluc3RhbmNlRGF0YUZuICgpIHtcbiAgICAgIC8vIGluc3RhbmNl
IG1lcmdlXG4gICAgICB2YXIgaW5zdGFuY2VEYXRhID0gdHlwZW9mIGNoaWxkVmFsID09PSAnZnVu
Y3Rpb24nXG4gICAgICAgID8gY2hpbGRWYWwuY2FsbCh2bSlcbiAgICAgICAgOiBjaGlsZFZhbDtc
biAgICAgIHZhciBkZWZhdWx0RGF0YSA9IHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbidc
biAgICAgICAgPyBwYXJlbnRWYWwuY2FsbCh2bSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAg
ICBpZiAoaW5zdGFuY2VEYXRhKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VE
YXRhLCBkZWZhdWx0RGF0YSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0
RGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChc
biAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAg
aWYgKGNoaWxkVmFsICYmIHR5cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAg
XCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnVGhlIFwi
ZGF0YVwiIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiAnICtcbiAgICAgICAgJ3RoYXQgcmV0
dXJucyBhIHBlci1pbnN0YW5jZSB2YWx1ZSBpbiBjb21wb25lbnQgJyArXG4gICAgICAgICdkZWZp
bml0aW9ucy4nLFxuICAgICAgICB2bVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHBhcmVudFZh
bFxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VEYXRhT3JGbi5jYWxsKHRoaXMsIHBhcmVudFZhbCwg
Y2hpbGRWYWwpXG4gIH1cblxuICByZXR1cm4gbWVyZ2VEYXRhT3JGbihwYXJlbnRWYWwsIGNoaWxk
VmFsLCB2bSlcbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHByb3BzIGFyZSBtZXJnZWQgYXMgYXJy
YXlzLlxuICovXG5mdW5jdGlvbiBtZXJnZUhvb2sgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFs
XG4pIHtcbiAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBwYXJlbnRWYWxcbiAgICAgID8gcGFyZW50
VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZFZhbClcbiAg
ICAgICAgPyBjaGlsZFZhbFxuICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICA6IHBhcmVudFZhbFxu
fVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJhdHNb
aG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVuIGEg
dm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBhIHRo
cmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4gKiBv
cHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMgKHBh
cmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFs
IHx8IG51bGwpO1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/IGV4dGVuZChyZXMsIGNoaWxkVmFs
KVxuICAgIDogcmVzXG59XG5cbkFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtc
biAgc3RyYXRzW3R5cGUgKyAncyddID0gbWVyZ2VBc3NldHM7XG59KTtcblxuLyoqXG4gKiBXYXRj
aGVycy5cbiAqXG4gKiBXYXRjaGVycyBoYXNoZXMgc2hvdWxkIG5vdCBvdmVyd3JpdGUgb25lXG4g
KiBhbm90aGVyLCBzbyB3ZSBtZXJnZSB0aGVtIGFzIGFycmF5cy5cbiAqL1xuc3RyYXRzLndhdGNo
ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgLy8gd29yayBhcm91bmQgRmly
ZWZveCdzIE9iamVjdC5wcm90b3R5cGUud2F0Y2guLi5cbiAgaWYgKHBhcmVudFZhbCA9PT0gbmF0
aXZlV2F0Y2gpIHsgcGFyZW50VmFsID0gdW5kZWZpbmVkOyB9XG4gIGlmIChjaGlsZFZhbCA9PT0g
bmF0aXZlV2F0Y2gpIHsgY2hpbGRWYWwgPSB1bmRlZmluZWQ7IH1cbiAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gIGlmICghY2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50
VmFsIHx8IG51bGwpIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAg
dmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3IgKHZhciBrZXkg
aW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleV07XG4gICAgdmFyIGNoaWxk
ID0gY2hpbGRWYWxba2V5XTtcbiAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0FycmF5KHBhcmVu
dCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRba2V5XSA9IHBh
cmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBBcnJheS5pc0FycmF5
KGNoaWxkKSA/IGNoaWxkIDogW2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0XG59O1xuXG4vKipc
biAqIE90aGVyIG9iamVjdCBoYXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9XG5zdHJhdHMubWV0
aG9kcyA9XG5zdHJhdHMuaW5qZWN0ID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChwYXJl
bnRWYWwsIGNoaWxkVmFsKSB7XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9
XG4gIHZhciByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBleHRlbmQocmV0LCBwYXJlbnRW
YWwpO1xuICBpZiAoY2hpbGRWYWwpIHsgZXh0ZW5kKHJldCwgY2hpbGRWYWwpOyB9XG4gIHJldHVy
biByZXRcbn07XG5zdHJhdHMucHJvdmlkZSA9IG1lcmdlRGF0YU9yRm47XG5cbi8qKlxuICogRGVm
YXVsdCBzdHJhdGVneS5cbiAqL1xudmFyIGRlZmF1bHRTdHJhdCA9IGZ1bmN0aW9uIChwYXJlbnRW
YWwsIGNoaWxkVmFsKSB7XG4gIHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBw
YXJlbnRWYWxcbiAgICA6IGNoaWxkVmFsXG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGNvbXBvbmVu
dCBuYW1lc1xuICovXG5mdW5jdGlvbiBjaGVja0NvbXBvbmVudHMgKG9wdGlvbnMpIHtcbiAgZm9y
ICh2YXIga2V5IGluIG9wdGlvbnMuY29tcG9uZW50cykge1xuICAgIHZhciBsb3dlciA9IGtleS50
b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChpc0J1aWx0SW5UYWcobG93ZXIpIHx8IGNvbmZpZy5pc1Jl
c2VydmVkVGFnKGxvd2VyKSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCB1c2UgYnVp
bHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAg
ICdpZDogJyArIGtleVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUg
YWxsIHByb3BzIG9wdGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAqIE9iamVj
dC1iYXNlZCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRpb25zKSB7
XG4gIHZhciBwcm9wcyA9IG9wdGlvbnMucHJvcHM7XG4gIGlmICghcHJvcHMpIHsgcmV0dXJuIH1c
biAgdmFyIHJlcyA9IHt9O1xuICB2YXIgaSwgdmFsLCBuYW1lO1xuICBpZiAoQXJyYXkuaXNBcnJh
eShwcm9wcykpIHtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAg
ICAgIHZhbCA9IHByb3BzW2ldO1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7
XG4gICAgICAgIG5hbWUgPSBjYW1lbGl6ZSh2YWwpO1xuICAgICAgICByZXNbbmFtZV0gPSB7IHR5
cGU6IG51bGwgfTtcbiAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgd2FybigncHJv
cHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxu
ICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFy
IGtleSBpbiBwcm9wcykge1xuICAgICAgdmFsID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBj
YW1lbGl6ZShrZXkpO1xuICAgICAgcmVzW25hbWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAg
ICAgID8gdmFsXG4gICAgICAgIDogeyB0eXBlOiB2YWwgfTtcbiAgICB9XG4gIH1cbiAgb3B0aW9u
cy5wcm9wcyA9IHJlcztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYWxsIGluamVjdGlvbnMgaW50
byBPYmplY3QtYmFzZWQgZm9ybWF0XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdCAob3B0
aW9ucykge1xuICB2YXIgaW5qZWN0ID0gb3B0aW9ucy5pbmplY3Q7XG4gIGlmIChBcnJheS5pc0Fy
cmF5KGluamVjdCkpIHtcbiAgICB2YXIgbm9ybWFsaXplZCA9IG9wdGlvbnMuaW5qZWN0ID0ge307
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5v
cm1hbGl6ZWRbaW5qZWN0W2ldXSA9IGluamVjdFtpXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4g
KiBOb3JtYWxpemUgcmF3IGZ1bmN0aW9uIGRpcmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0Llxu
ICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJz
ID0gb3B0aW9ucy5kaXJlY3RpdmVzO1xuICBpZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBp
biBkaXJzKSB7XG4gICAgICB2YXIgZGVmID0gZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBk
ZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYsIHVw
ZGF0ZTogZGVmIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgdHdv
IG9wdGlvbiBvYmplY3RzIGludG8gYSBuZXcgb25lLlxuICogQ29yZSB1dGlsaXR5IHVzZWQgaW4g
Ym90aCBpbnN0YW50aWF0aW9uIGFuZCBpbmhlcml0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VP
cHRpb25zIChcbiAgcGFyZW50LFxuICBjaGlsZCxcbiAgdm1cbikge1xuICBpZiAoZmFsc2UpIHtc
biAgICBjaGVja0NvbXBvbmVudHMoY2hpbGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9
PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxuXG4gIG5v
cm1hbGl6ZVByb3BzKGNoaWxkKTtcbiAgbm9ybWFsaXplSW5qZWN0KGNoaWxkKTtcbiAgbm9ybWFs
aXplRGlyZWN0aXZlcyhjaGlsZCk7XG4gIHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7
XG4gIGlmIChleHRlbmRzRnJvbSkge1xuICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQs
IGV4dGVuZHNGcm9tLCB2bSk7XG4gIH1cbiAgaWYgKGNoaWxkLm1peGlucykge1xuICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gY2hpbGQubWl4aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAg
cGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAg
fVxuICB9XG4gIHZhciBvcHRpb25zID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBh
cmVudCkge1xuICAgIG1lcmdlRmllbGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkg
e1xuICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkp
O1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3Ry
YXQgPSBzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3Ry
YXQocGFyZW50W2tleV0sIGNoaWxkW2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRp
b25zXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMg
dXNlZCBiZWNhdXNlIGNoaWxkIGluc3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRl
ZmluZWQgaW4gaXRzIGFuY2VzdG9yIGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQg
KFxuICBvcHRpb25zLFxuICB0eXBlLFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAg
ICByZXR1cm5cbiAgfVxuICB2YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sg
bG9jYWwgcmVnaXN0cmF0aW9uIHZhcmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMs
IGlkKSkgeyByZXR1cm4gYXNzZXRzW2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXpl
KGlkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRz
W2NhbWVsaXplZElkXSB9XG4gIHZhciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXpl
ZElkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0
c1tQYXNjYWxDYXNlSWRdIH1cbiAgLy8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZh
ciByZXMgPSBhc3NldHNbaWRdIHx8IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2Nh
bENhc2VJZF07XG4gIGlmIChmYWxzZSkge1xuICAgIHdhcm4oXG4gICAgICAnRmFpbGVkIHRvIHJl
c29sdmUgJyArIHR5cGUuc2xpY2UoMCwgLTEpICsgJzogJyArIGlkLFxuICAgICAgb3B0aW9uc1xu
ICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdmFsaWRh
dGVQcm9wIChcbiAga2V5LFxuICBwcm9wT3B0aW9ucyxcbiAgcHJvcHNEYXRhLFxuICB2bVxuKSB7
XG4gIHZhciBwcm9wID0gcHJvcE9wdGlvbnNba2V5XTtcbiAgdmFyIGFic2VudCA9ICFoYXNPd24o
cHJvcHNEYXRhLCBrZXkpO1xuICB2YXIgdmFsdWUgPSBwcm9wc0RhdGFba2V5XTtcbiAgLy8gaGFu
ZGxlIGJvb2xlYW4gcHJvcHNcbiAgaWYgKGlzVHlwZShCb29sZWFuLCBwcm9wLnR5cGUpKSB7XG4g
ICAgaWYgKGFic2VudCAmJiAhaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICAgIHZhbHVl
ID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNUeXBlKFN0cmluZywgcHJvcC50eXBlKSAmJiAo
dmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcbiAgICAgIHZhbHVl
ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gY2hlY2sgZGVmYXVsdCB2YWx1ZVxuICBpZiAodmFs
dWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gZ2V0UHJvcERlZmF1bHRWYWx1ZSh2bSwg
cHJvcCwga2V5KTtcbiAgICAvLyBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGZyZXNoIGNv
cHksXG4gICAgLy8gbWFrZSBzdXJlIHRvIG9ic2VydmUgaXQuXG4gICAgdmFyIHByZXZTaG91bGRD
b252ZXJ0ID0gb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0O1xuICAgIG9ic2VydmVyU3RhdGUu
c2hvdWxkQ29udmVydCA9IHRydWU7XG4gICAgb2JzZXJ2ZSh2YWx1ZSk7XG4gICAgb2JzZXJ2ZXJT
dGF0ZS5zaG91bGRDb252ZXJ0ID0gcHJldlNob3VsZENvbnZlcnQ7XG4gIH1cbiAgaWYgKGZhbHNl
KSB7XG4gICAgYXNzZXJ0UHJvcChwcm9wLCBrZXksIHZhbHVlLCB2bSwgYWJzZW50KTtcbiAgfVxu
ICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBw
cm9wLlxuICovXG5mdW5jdGlvbiBnZXRQcm9wRGVmYXVsdFZhbHVlICh2bSwgcHJvcCwga2V5KSB7
XG4gIC8vIG5vIGRlZmF1bHQsIHJldHVybiB1bmRlZmluZWRcbiAgaWYgKCFoYXNPd24ocHJvcCwg
J2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICB2YXIgZGVmID0gcHJv
cC5kZWZhdWx0O1xuICAvLyB3YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVsdHMgZm9yIE9i
amVjdCAmIEFycmF5XG4gIGlmIChmYWxzZSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBk
ZWZhdWx0IHZhbHVlIGZvciBwcm9wIFwiJyArIGtleSArICdcIjogJyArXG4gICAgICAnUHJvcHMg
d2l0aCB0eXBlIE9iamVjdC9BcnJheSBtdXN0IHVzZSBhIGZhY3RvcnkgZnVuY3Rpb24gJyArXG4g
ICAgICAndG8gcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlLicsXG4gICAgICB2bVxuICAgICk7XG4g
IH1cbiAgLy8gdGhlIHJhdyBwcm9wIHZhbHVlIHdhcyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZp
b3VzIHJlbmRlcixcbiAgLy8gcmV0dXJuIHByZXZpb3VzIGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQg
dW5uZWNlc3Nhcnkgd2F0Y2hlciB0cmlnZ2VyXG4gIGlmICh2bSAmJiB2bS4kb3B0aW9ucy5wcm9w
c0RhdGEgJiZcbiAgICB2bS4kb3B0aW9ucy5wcm9wc0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYm
XG4gICAgdm0uX3Byb3BzW2tleV0gIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdm0u
X3Byb3BzW2tleV1cbiAgfVxuICAvLyBjYWxsIGZhY3RvcnkgZnVuY3Rpb24gZm9yIG5vbi1GdW5j
dGlvbiB0eXBlc1xuICAvLyBhIHZhbHVlIGlzIEZ1bmN0aW9uIGlmIGl0cyBwcm90b3R5cGUgaXMg
ZnVuY3Rpb24gZXZlbiBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gIHJldHVy
biB0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nICYmIGdldFR5cGUocHJvcC50eXBlKSAhPT0gJ0Z1
bmN0aW9uJ1xuICAgID8gZGVmLmNhbGwodm0pXG4gICAgOiBkZWZcbn1cblxuLyoqXG4gKiBBc3Nl
cnQgd2hldGhlciBhIHByb3AgaXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFByb3AgKFxu
ICBwcm9wLFxuICBuYW1lLFxuICB2YWx1ZSxcbiAgdm0sXG4gIGFic2VudFxuKSB7XG4gIGlmIChw
cm9wLnJlcXVpcmVkICYmIGFic2VudCkge1xuICAgIHdhcm4oXG4gICAgICAnTWlzc2luZyByZXF1
aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1
cm5cbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xuICAgIHJl
dHVyblxuICB9XG4gIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICB2YXIgdmFsaWQgPSAhdHlwZSB8
fCB0eXBlID09PSB0cnVlO1xuICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuICBpZiAodHlwZSkg
e1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgdHlwZSA9IFt0eXBlXTtc
biAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlLmxlbmd0aCAmJiAhdmFsaWQ7IGkr
Kykge1xuICAgICAgdmFyIGFzc2VydGVkVHlwZSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVbaV0p
O1xuICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGFzc2VydGVkVHlwZS5leHBlY3RlZFR5cGUgfHwg
JycpO1xuICAgICAgdmFsaWQgPSBhc3NlcnRlZFR5cGUudmFsaWQ7XG4gICAgfVxuICB9XG4gIGlm
ICghdmFsaWQpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQgcHJvcDogdHlwZSBjaGVjayBm
YWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nICtcbiAgICAgICcgRXhwZWN0ZWQgJyAr
IGV4cGVjdGVkVHlwZXMubWFwKGNhcGl0YWxpemUpLmpvaW4oJywgJykgK1xuICAgICAgJywgZ290
ICcgKyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSAr
ICcuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdmFsaWRhdG9y
ID0gcHJvcC52YWxpZGF0b3I7XG4gIGlmICh2YWxpZGF0b3IpIHtcbiAgICBpZiAoIXZhbGlkYXRv
cih2YWx1ZSkpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdJbnZhbGlkIHByb3A6IGN1c3RvbSB2
YWxpZGF0b3IgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyxcbiAgICAg
ICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbnZhciBzaW1wbGVDaGVja1JFID0gL14o
U3RyaW5nfE51bWJlcnxCb29sZWFufEZ1bmN0aW9ufFN5bWJvbCkkLztcblxuZnVuY3Rpb24gYXNz
ZXJ0VHlwZSAodmFsdWUsIHR5cGUpIHtcbiAgdmFyIHZhbGlkO1xuICB2YXIgZXhwZWN0ZWRUeXBl
ID0gZ2V0VHlwZSh0eXBlKTtcbiAgaWYgKHNpbXBsZUNoZWNrUkUudGVzdChleHBlY3RlZFR5cGUp
KSB7XG4gICAgdmFsaWQgPSB0eXBlb2YgdmFsdWUgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2Fz
ZSgpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcbiAgICB2YWxp
ZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0g
J0FycmF5Jykge1xuICAgIHZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7
XG4gICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9mIHR5cGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAg
ICB2YWxpZDogdmFsaWQsXG4gICAgZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGVcbiAgfVxufVxu
XG4vKipcbiAqIFVzZSBmdW5jdGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayBidWlsdC1pbiB0eXBl
cyxcbiAqIGJlY2F1c2UgYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2sgd2lsbCBmYWlsIHdoZW4gcnVu
bmluZ1xuICogYWNyb3NzIGRpZmZlcmVudCB2bXMgLyBpZnJhbWVzLlxuICovXG5mdW5jdGlvbiBn
ZXRUeXBlIChmbikge1xuICB2YXIgbWF0Y2ggPSBmbiAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9e
XFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnXG59
XG5cbmZ1bmN0aW9uIGlzVHlwZSAodHlwZSwgZm4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZu
KSkge1xuICAgIHJldHVybiBnZXRUeXBlKGZuKSA9PT0gZ2V0VHlwZSh0eXBlKVxuICB9XG4gIGZv
ciAodmFyIGkgPSAwLCBsZW4gPSBmbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChn
ZXRUeXBlKGZuW2ldKSA9PT0gZ2V0VHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAg
ICB9XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59
XG5cbi8qICAqL1xuXG52YXIgbWFyaztcbnZhciBtZWFzdXJlO1xuXG5pZiAoZmFsc2UpIHtcbiAg
dmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAg
ICBwZXJmLm1lYXN1cmUgJiZcbiAgICBwZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFy
TWVhc3VyZXNcbiAgKSB7XG4gICAgbWFyayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYu
bWFyayh0YWcpOyB9O1xuICAgIG1lYXN1cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVu
ZFRhZykge1xuICAgICAgcGVyZi5tZWFzdXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAg
ICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRU
YWcpO1xuICAgICAgcGVyZi5jbGVhck1lYXN1cmVzKG5hbWUpO1xuICAgIH07XG4gIH1cbn1cblxu
Lyogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkg
d2VsbCB3aXRoIFByb3h5ICovXG5cbnZhciBpbml0UHJveHk7XG5cbmlmIChmYWxzZSkge1xuICB2
YXIgYWxsb3dlZEdsb2JhbHMgPSBtYWtlTWFwKFxuICAgICdJbmZpbml0eSx1bmRlZmluZWQsTmFO
LGlzRmluaXRlLGlzTmFOLCcgK1xuICAgICdwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxk
ZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCwnICtcbiAgICAn
TWF0aCxOdW1iZXIsRGF0ZSxBcnJheSxPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxT
ZXQsSlNPTixJbnRsLCcgK1xuICAgICdyZXF1aXJlJyAvLyBmb3IgV2VicGFjay9Ccm93c2VyaWZ5
XG4gICk7XG5cbiAgdmFyIHdhcm5Ob25QcmVzZW50ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7
XG4gICAgd2FybihcbiAgICAgIFwiUHJvcGVydHkgb3IgbWV0aG9kIFxcXCJcIiArIGtleSArIFwi
XFxcIiBpcyBub3QgZGVmaW5lZCBvbiB0aGUgaW5zdGFuY2UgYnV0IFwiICtcbiAgICAgIFwicmVm
ZXJlbmNlZCBkdXJpbmcgcmVuZGVyLiBNYWtlIHN1cmUgdG8gZGVjbGFyZSByZWFjdGl2ZSBkYXRh
IFwiICtcbiAgICAgIFwicHJvcGVydGllcyBpbiB0aGUgZGF0YSBvcHRpb24uXCIsXG4gICAgICB0
YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5
ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIFByb3h5LnRvU3RyaW5nKCkubWF0Y2goL25hdGl2ZSBj
b2RlLyk7XG5cbiAgaWYgKGhhc1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0g
bWFrZU1hcCgnc3RvcCxwcmV2ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YScpO1xuICAgIGNv
bmZpZy5rZXlDb2RlcyA9IG5ldyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDog
ZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJ
bk1vZGlmaWVyKGtleSkpIHtcbiAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1
aWx0LWluIG1vZGlmaWVyIGluIGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAg
ICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0g
PSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
fSk7XG4gIH1cblxuICB2YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAo
dGFyZ2V0LCBrZXkpIHtcbiAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFy
IGlzQWxsb3dlZCA9IGFsbG93ZWRHbG9iYWxzKGtleSkgfHwga2V5LmNoYXJBdCgwKSA9PT0gJ18n
O1xuICAgICAgaWYgKCFoYXMgJiYgIWlzQWxsb3dlZCkge1xuICAgICAgICB3YXJuTm9uUHJlc2Vu
dCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRc
biAgICB9XG4gIH07XG5cbiAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBn
ZXQgKHRhcmdldCwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYg
IShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7
XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0W2tleV1cbiAgICB9XG4gIH07XG5cbiAgaW5p
dFByb3h5ID0gZnVuY3Rpb24gaW5pdFByb3h5ICh2bSkge1xuICAgIGlmIChoYXNQcm94eSkge1xu
ICAgICAgLy8gZGV0ZXJtaW5lIHdoaWNoIHByb3h5IGhhbmRsZXIgdG8gdXNlXG4gICAgICB2YXIg
b3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuICAgICAgdmFyIGhhbmRsZXJzID0gb3B0aW9ucy5yZW5k
ZXIgJiYgb3B0aW9ucy5yZW5kZXIuX3dpdGhTdHJpcHBlZFxuICAgICAgICA/IGdldEhhbmRsZXJc
biAgICAgICAgOiBoYXNIYW5kbGVyO1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gbmV3IFByb3h5
KHZtLCBoYW5kbGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZt
O1xuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2Rl
IChcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgdGV4dCxcbiAgZWxtLFxuICBjb250
ZXh0LFxuICBjb21wb25lbnRPcHRpb25zLFxuICBhc3luY0ZhY3Rvcnlcbikge1xuICB0aGlzLnRh
ZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVu
O1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVu
ZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mdW5jdGlvbmFsQ29u
dGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlz
LmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudElu
c3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5y
YXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2Vy
dCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBm
YWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbiAgdGhpcy5hc3luY0ZhY3RvcnkgPSBhc3lu
Y0ZhY3Rvcnk7XG4gIHRoaXMuYXN5bmNNZXRhID0gdW5kZWZpbmVkO1xuICB0aGlzLmlzQXN5bmNQ
bGFjZWhvbGRlciA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hp
bGQ6IHt9IH07XG5cbi8vIERFUFJFQ0FURUQ6IGFsaWFzIGZvciBjb21wb25lbnRJbnN0YW5jZSBm
b3IgYmFja3dhcmRzIGNvbXBhdC5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5wcm90b3R5
cGVBY2Nlc3NvcnMuY2hpbGQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jb21w
b25lbnRJbnN0YW5jZVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFZOb2RlLnByb3Rv
dHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbnZhciBjcmVhdGVFbXB0eVZOb2RlID0gZnVu
Y3Rpb24gKHRleHQpIHtcbiAgaWYgKCB0ZXh0ID09PSB2b2lkIDAgKSB0ZXh0ID0gJyc7XG5cbiAg
dmFyIG5vZGUgPSBuZXcgVk5vZGUoKTtcbiAgbm9kZS50ZXh0ID0gdGV4dDtcbiAgbm9kZS5pc0Nv
bW1lbnQgPSB0cnVlO1xuICByZXR1cm4gbm9kZVxufTtcblxuZnVuY3Rpb24gY3JlYXRlVGV4dFZO
b2RlICh2YWwpIHtcbiAgcmV0dXJuIG5ldyBWTm9kZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCBTdHJpbmcodmFsKSlcbn1cblxuLy8gb3B0aW1pemVkIHNoYWxsb3cgY2xvbmVcbi8v
IHVzZWQgZm9yIHN0YXRpYyBub2RlcyBhbmQgc2xvdCBub2RlcyBiZWNhdXNlIHRoZXkgbWF5IGJl
IHJldXNlZCBhY3Jvc3Ncbi8vIG11bHRpcGxlIHJlbmRlcnMsIGNsb25pbmcgdGhlbSBhdm9pZHMg
ZXJyb3JzIHdoZW4gRE9NIG1hbmlwdWxhdGlvbnMgcmVseVxuLy8gb24gdGhlaXIgZWxtIHJlZmVy
ZW5jZS5cbmZ1bmN0aW9uIGNsb25lVk5vZGUgKHZub2RlKSB7XG4gIHZhciBjbG9uZWQgPSBuZXcg
Vk5vZGUoXG4gICAgdm5vZGUudGFnLFxuICAgIHZub2RlLmRhdGEsXG4gICAgdm5vZGUuY2hpbGRy
ZW4sXG4gICAgdm5vZGUudGV4dCxcbiAgICB2bm9kZS5lbG0sXG4gICAgdm5vZGUuY29udGV4dCxc
biAgICB2bm9kZS5jb21wb25lbnRPcHRpb25zLFxuICAgIHZub2RlLmFzeW5jRmFjdG9yeVxuICAp
O1xuICBjbG9uZWQubnMgPSB2bm9kZS5ucztcbiAgY2xvbmVkLmlzU3RhdGljID0gdm5vZGUuaXNT
dGF0aWM7XG4gIGNsb25lZC5rZXkgPSB2bm9kZS5rZXk7XG4gIGNsb25lZC5pc0NvbW1lbnQgPSB2
bm9kZS5pc0NvbW1lbnQ7XG4gIGNsb25lZC5pc0Nsb25lZCA9IHRydWU7XG4gIHJldHVybiBjbG9u
ZWRcbn1cblxuZnVuY3Rpb24gY2xvbmVWTm9kZXMgKHZub2Rlcykge1xuICB2YXIgbGVuID0gdm5v
ZGVzLmxlbmd0aDtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4pO1xuICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzW2ldID0gY2xvbmVWTm9kZSh2bm9kZXNbaV0pO1xu
ICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNh
Y2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09
PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBv
bmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tl
ZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIg
Y2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFt
ZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNl
OiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxu
ICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMpIHtcbiAgZnVuY3Rpb24g
aW52b2tlciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFy
IGZucyA9IGludm9rZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAg
IHZhciBjbG9uZWQgPSBmbnMuc2xpY2UoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xv
bmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNsb25lZFtpXS5hcHBseShudWxsLCBhcmd1bWVu
dHMkMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJl
dHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gZm5zLmFwcGx5KG51
bGwsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVy
biBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRP
bixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xk
LCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgY3VyID0gb25bbmFtZV07XG4gICAg
b2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAg
ICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIg
KyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2
bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlz
VW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9r
ZXIoY3VyKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50Lm9uY2Us
IGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUpO1xuICAgIH0gZWxzZSBpZiAoY3VyICE9PSBv
bGQpIHtcbiAgICAgIG9sZC5mbnMgPSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9
XG4gIH1cbiAgZm9yIChuYW1lIGluIG9sZE9uKSB7XG4gICAgaWYgKGlzVW5kZWYob25bbmFtZV0p
KSB7XG4gICAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgICAgcmVtb3ZlJCQx
KGV2ZW50Lm5hbWUsIG9sZE9uW25hbWVdLCBldmVudC5jYXB0dXJlKTtcbiAgICB9XG4gIH1cbn1c
blxuLyogICovXG5cbmZ1bmN0aW9uIG1lcmdlVk5vZGVIb29rIChkZWYsIGhvb2tLZXksIGhvb2sp
IHtcbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1
bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2Fs
bGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3Zl
KGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29r
KSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZv
a2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2Vk
KSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0g
b2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxz
ZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRl
Rm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9r
ZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICov
XG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9y
LFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVy
ZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhl
IGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iu
b3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJu
XG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIg
cHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkg
e1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9
IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIHZhciBrZXlJbkxv
d2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5
ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0dHJzICYmIGhhc093bihhdHRycywg
a2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIHRpcChcbiAgICAgICAgICAg
IFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwiXFxcIiBpcyBwYXNzZWQgdG8gY29t
cG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHRhZyB8fCBDdG9y
KSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUgaXNcIiArXG4gICAgICAgICAgICBc
IiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICAgIFwiTm90ZSB0aGF0IEhU
TUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgY2FtZWxDYXNlZCBcIiArXG4g
ICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWlyIGtlYmFiLWNhc2UgZXF1aXZhbGVu
dHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAgICAgXCJ0ZW1wbGF0ZXMuIFlvdSBz
aG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxc
XCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAgICAg
IGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgIH1cbiAgfVxu
ICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcCAoXG4gIHJlcyxcbiAgaGFzaCxc
biAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtcbiAgaWYgKGlzRGVmKGhhc2gpKSB7
XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hba2V5
XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hba2V5XTtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChoYXNPd24oaGFzaCwgYWx0
S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07XG4gICAgICBpZiAoIXByZXNl
cnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4gICAgICB9XG4gICAgICByZXR1
cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbi8vIFRo
ZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igbm9y
bWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXppbmcgdGhlIHRlbXBsYXRlIGF0IGNv
bXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBtYXJrdXAsIG5vcm1hbGl6YXRpb24g
Y2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRoZVxuLy8gZ2VuZXJhdGVkIHJlbmRl
ciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBBcnJheTxWTm9kZT4uIFRoZXJlIGFy
ZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkOlxuXG4v
LyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21wb25lbnRzIC0gYmVjYXVzZSBhIGZ1
bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFuIEFycmF5IGluc3RlYWQgb2YgYSBz
aW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2ltcGxlXG4vLyBub3JtYWxpemF0aW9u
IGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJheSwgd2UgZmxhdHRlbiB0aGUgd2hv
bGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNvbmNhdC4gSXQgaXMgZ3VhcmFudGVl
ZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVzZSBmdW5jdGlvbmFsIGNvbXBvbmVu
dHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxkcmVuLlxuZnVuY3Rpb24gc2ltcGxl
Tm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbltpXSkp
IHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBjaGlsZHJl
bilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59XG5cbi8vIDIuIFdoZW4gdGhlIGNo
aWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdheXMgZ2VuZXJhdGVkIG5lc3RlZCBB
cnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwgdi1mb3IsIG9yIHdoZW4gdGhlIGNo
aWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGggaGFuZC13cml0dGVuIHJlbmRlciBm
dW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxsIG5vcm1hbGl6YXRpb25cbi8vIGlz
IG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlwZXMgb2YgY2hpbGRyZW4gdmFsdWVz
LlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIHJldHVybiBpc1By
aW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxuICAg
IDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8gbm9ybWFsaXplQXJyYXlDaGlsZHJl
bihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzVGV4dE5vZGUg
KG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlzRGVmKG5vZGUudGV4dCkgJiYgaXNG
YWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXlDaGlsZHJl
biAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciByZXMgPSBbXTtcbiAgdmFyIGksIGMs
IGxhc3Q7XG4gIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGMg
PSBjaGlsZHJlbltpXTtcbiAgICBpZiAoaXNVbmRlZihjKSB8fCB0eXBlb2YgYyA9PT0gJ2Jvb2xl
YW4nKSB7IGNvbnRpbnVlIH1cbiAgICBsYXN0ID0gcmVzW3Jlcy5sZW5ndGggLSAxXTtcbiAgICAv
LyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtcbiAgICAgIHJlcy5wdXNoLmFw
cGx5KHJlcywgbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcnKSAr
IFwiX1wiICsgaSkpKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKGMpKSB7XG4gICAgICBp
ZiAoaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5v
ZGVzXG4gICAgICAgIC8vIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBTU1IgaHlkcmF0aW9uIGJlY2F1
c2UgdGV4dCBub2RlcyBhcmVcbiAgICAgICAgLy8gZXNzZW50aWFsbHkgbWVyZ2VkIHdoZW4gcmVu
ZGVyZWQgdG8gSFRNTCBzdHJpbmdzXG4gICAgICAgIChsYXN0KS50ZXh0ICs9IFN0cmluZyhjKTtc
biAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmltaXRp
dmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9kZShs
YXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHJl
c1tyZXMubGVuZ3RoIC0gMV0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYy50ZXh0KTtc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQga2V5IGZvciBuZXN0ZWQgYXJyYXkg
Y2hpbGRyZW4gKGxpa2VseSBnZW5lcmF0ZWQgYnkgdi1mb3IpXG4gICAgICAgIGlmIChpc1RydWUo
Y2hpbGRyZW4uX2lzVkxpc3QpICYmXG4gICAgICAgICAgaXNEZWYoYy50YWcpICYmXG4gICAgICAg
ICAgaXNVbmRlZihjLmtleSkgJiZcbiAgICAgICAgICBpc0RlZihuZXN0ZWRJbmRleCkpIHtcbiAg
ICAgICAgICBjLmtleSA9IFwiX192bGlzdFwiICsgbmVzdGVkSW5kZXggKyBcIl9cIiArIGkgKyBc
Il9fXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxu
ICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3IgKGNv
bXAsIGJhc2UpIHtcbiAgaWYgKGNvbXAuX19lc01vZHVsZSAmJiBjb21wLmRlZmF1bHQpIHtcbiAg
ICBjb21wID0gY29tcC5kZWZhdWx0O1xuICB9XG4gIHJldHVybiBpc09iamVjdChjb21wKVxuICAg
ID8gYmFzZS5leHRlbmQoY29tcClcbiAgICA6IGNvbXBcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXN5
bmNQbGFjZWhvbGRlciAoXG4gIGZhY3RvcnksXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxk
cmVuLFxuICB0YWdcbikge1xuICB2YXIgbm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgbm9k
ZS5hc3luY0ZhY3RvcnkgPSBmYWN0b3J5O1xuICBub2RlLmFzeW5jTWV0YSA9IHsgZGF0YTogZGF0
YSwgY29udGV4dDogY29udGV4dCwgY2hpbGRyZW46IGNoaWxkcmVuLCB0YWc6IHRhZyB9O1xuICBy
ZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQXN5bmNDb21wb25lbnQgKFxuICBmYWN0
b3J5LFxuICBiYXNlQ3RvcixcbiAgY29udGV4dFxuKSB7XG4gIGlmIChpc1RydWUoZmFjdG9yeS5l
cnJvcikgJiYgaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAgcmV0dXJuIGZhY3Rvcnku
ZXJyb3JDb21wXG4gIH1cblxuICBpZiAoaXNEZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICBy
ZXR1cm4gZmFjdG9yeS5yZXNvbHZlZFxuICB9XG5cbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmxvYWRp
bmcpICYmIGlzRGVmKGZhY3RvcnkubG9hZGluZ0NvbXApKSB7XG4gICAgcmV0dXJuIGZhY3Rvcnku
bG9hZGluZ0NvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LmNvbnRleHRzKSkge1xuICAg
IC8vIGFscmVhZHkgcGVuZGluZ1xuICAgIGZhY3RvcnkuY29udGV4dHMucHVzaChjb250ZXh0KTtc
biAgfSBlbHNlIHtcbiAgICB2YXIgY29udGV4dHMgPSBmYWN0b3J5LmNvbnRleHRzID0gW2NvbnRl
eHRdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcblxuICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0
aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY29udGV4dHMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7XG4gICAgICAgIGNvbnRleHRzW2ldLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxu
ICAgIH07XG5cbiAgICB2YXIgcmVzb2x2ZSA9IG9uY2UoZnVuY3Rpb24gKHJlcykge1xuICAgICAg
Ly8gY2FjaGUgcmVzb2x2ZWRcbiAgICAgIGZhY3RvcnkucmVzb2x2ZWQgPSBlbnN1cmVDdG9yKHJl
cywgYmFzZUN0b3IpO1xuICAgICAgLy8gaW52b2tlIGNhbGxiYWNrcyBvbmx5IGlmIHRoaXMgaXMg
bm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxuICAgICAgLy8gKGFzeW5jIHJlc29sdmVzIGFyZSBz
aGltbWVkIGFzIHN5bmNocm9ub3VzIGR1cmluZyBTU1IpXG4gICAgICBpZiAoIXN5bmMpIHtcbiAg
ICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZWplY3Qg
PSBvbmNlKGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJv
ZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21w
b25lbnQ6IFwiICsgKFN0cmluZyhmYWN0b3J5KSkgK1xuICAgICAgICAocmVhc29uID8gKFwiXFxu
UmVhc29uOiBcIiArIHJlYXNvbikgOiAnJylcbiAgICAgICk7XG4gICAgICBpZiAoaXNEZWYoZmFj
dG9yeS5lcnJvckNvbXApKSB7XG4gICAgICAgIGZhY3RvcnkuZXJyb3IgPSB0cnVlO1xuICAgICAg
ICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlcyA9IGZhY3Rv
cnkocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgIGlmIChpc09iamVjdChyZXMpKSB7XG4gICAgICBp
ZiAodHlwZW9mIHJlcy50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vICgpID0+IFBy
b21pc2VcbiAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAg
ICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYg
KGlzRGVmKHJlcy5jb21wb25lbnQpICYmIHR5cGVvZiByZXMuY29tcG9uZW50LnRoZW4gPT09ICdm
dW5jdGlvbicpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7
XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVy
cm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxu
ICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2Fk
aW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBp
ZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVl
O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRl
ZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRy
dWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgICAgICAgICAgfVxuICAg
ICAgICAgICAgfSwgcmVzLmRlbGF5IHx8IDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5c
biAgICAgICAgaWYgKGlzRGVmKHJlcy50aW1lb3V0KSkge1xuICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkp
IHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAg
ICAgICAgICAgICAgPyAoXCJ0aW1lb3V0IChcIiArIChyZXMudGltZW91dCkgKyBcIm1zKVwiKVxu
ICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9
XG4gICAgICAgICAgfSwgcmVzLnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxu
XG4gICAgc3luYyA9IGZhbHNlO1xuICAgIC8vIHJldHVybiBpbiBjYXNlIHJlc29sdmVkIHN5bmNo
cm9ub3VzbHlcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nXG4gICAgICA/IGZhY3RvcnkubG9h
ZGluZ0NvbXBcbiAgICAgIDogZmFjdG9yeS5yZXNvbHZlZFxuICB9XG59XG5cbi8qICAqL1xuXG5m
dW5jdGlvbiBnZXRGaXJzdENvbXBvbmVudENoaWxkIChjaGlsZHJlbikge1xuICBpZiAoQXJyYXku
aXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxl
bmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVm
KGMpICYmIGlzRGVmKGMuY29tcG9uZW50T3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGNcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0
RXZlbnRzICh2bSkge1xuICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0u
X2hhc0hvb2tFdmVudCA9IGZhbHNlO1xuICAvLyBpbml0IHBhcmVudCBhdHRhY2hlZCBldmVudHNc
biAgdmFyIGxpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChs
aXN0ZW5lcnMpIHtcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycyk7
XG4gIH1cbn1cblxudmFyIHRhcmdldDtcblxuZnVuY3Rpb24gYWRkIChldmVudCwgZm4sIG9uY2Uk
JDEpIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB0YXJnZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAg
fSBlbHNlIHtcbiAgICB0YXJnZXQuJG9uKGV2ZW50LCBmbik7XG4gIH1cbn1cblxuZnVuY3Rpb24g
cmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5m
dW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxu
ICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxp
c3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1
bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBW
dWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQx
ID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZl
bnQpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkr
Kykge1xuICAgICAgICB0aGlzJDEuJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBl
bHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBb
XSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5n
IGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQg
b2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAg
ICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZt
XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtc
biAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYo
ZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBv
bi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xu
XG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIg
dGhpcyQxID0gdGhpcztcblxuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYWxsXG4gICAgaWYg
KCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShu
dWxsKTtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBhcnJheSBvZiBldmVudHNcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDAsIGwg
PSBldmVudC5sZW5ndGg7IGkkMSA8IGw7IGkkMSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2
ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBz
cGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAo
IWNicykge1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAxKSB7XG4gICAgICB2bS5fZXZlbnRzW2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4g
dm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgaGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIg
aSA9IGNicy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4g
ICAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNl
KGksIDEpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAg
fTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFy
IHZtID0gdGhpcztcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHZhciBsb3dlckNhc2VFdmVudCA9
IGV2ZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50
ICYmIHZtLl9ldmVudHNbbG93ZXJDYXNlRXZlbnRdKSB7XG4gICAgICAgIHRpcChcbiAgICAgICAg
ICBcIkV2ZW50IFxcXCJcIiArIGxvd2VyQ2FzZUV2ZW50ICsgXCJcXFwiIGlzIGVtaXR0ZWQgaW4g
Y29tcG9uZW50IFwiICtcbiAgICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIg
YnV0IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwi
LiBcIiArXG4gICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWlu
c2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBcIiArXG4gICAgICAgICAgXCJ2LW9uIHRvIGxp
c3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gXCIg
K1xuICAgICAgICAgIFwiWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgKGh5cGhlbmF0
ZShldmVudCkpICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuXCJc
biAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZl
bnRdO1xuICAgIGlmIChjYnMpIHtcbiAgICAgIGNicyA9IGNicy5sZW5ndGggPiAxID8gdG9BcnJh
eShjYnMpIDogY2JzO1xuICAgICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4g
ICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAg
ICAgdHJ5IHtcbiAgICAgICAgICBjYnNbaV0uYXBwbHkodm0sIGFyZ3MpO1xuICAgICAgICB9IGNh
dGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImV2ZW50IGhhbmRsZXIg
Zm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH1cbiAgICByZXR1cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBo
ZWxwZXIgZm9yIHJlc29sdmluZyByYXcgY2hpbGRyZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVj
dC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNsb3RzIChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRc
bikge1xuICB2YXIgc2xvdHMgPSB7fTtcbiAgaWYgKCFjaGlsZHJlbikge1xuICAgIHJldHVybiBz
bG90c1xuICB9XG4gIHZhciBkZWZhdWx0U2xvdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9
IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVu
W2ldO1xuICAgIC8vIG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUg
dm5vZGUgd2FzIHJlbmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAo
KGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZnVuY3Rpb25hbENvbnRleHQgPT09
IGNvbnRleHQpICYmXG4gICAgICBjaGlsZC5kYXRhICYmIGNoaWxkLmRhdGEuc2xvdCAhPSBudWxs
XG4gICAgKSB7XG4gICAgICB2YXIgbmFtZSA9IGNoaWxkLmRhdGEuc2xvdDtcbiAgICAgIHZhciBz
bG90ID0gKHNsb3RzW25hbWVdIHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hp
bGQudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBj
aGlsZC5jaGlsZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQp
O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWZhdWx0U2xvdC5wdXNoKGNoaWxkKTtc
biAgICB9XG4gIH1cbiAgLy8gaWdub3JlIHdoaXRlc3BhY2VcbiAgaWYgKCFkZWZhdWx0U2xvdC5l
dmVyeShpc1doaXRlc3BhY2UpKSB7XG4gICAgc2xvdHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xu
ICB9XG4gIHJldHVybiBzbG90c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtc
biAgcmV0dXJuIG5vZGUuaXNDb21tZW50IHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbmZ1bmN0
aW9uIHJlc29sdmVTY29wZWRTbG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVz
XG4pIHtcbiAgcmVzID0gcmVzIHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5n
dGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgIHJlc29s
dmVTY29wZWRTbG90cyhmbnNbaV0sIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1tmbnNb
aV0ua2V5XSA9IGZuc1tpXS5mbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAg
Ki9cblxudmFyIGFjdGl2ZUluc3RhbmNlID0gbnVsbDtcbnZhciBpc1VwZGF0aW5nQ2hpbGRDb21w
b25lbnQgPSBmYWxzZTtcblxuZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtcbiAgdmFyIG9w
dGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFic3RyYWN0IHBh
cmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJlbnQgJiYgIW9w
dGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFic3RyYWN0ICYm
IHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICB9
XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRwYXJlbnQgPSBw
YXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07XG5cbiAgdm0u
JGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNoZXIgPSBudWxs
O1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtc
biAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAg
dm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4
aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5
ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtc
biAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgfVxuICAgIHZhciBwcmV2
RWwgPSB2bS4kZWw7XG4gICAgdmFyIHByZXZWbm9kZSA9IHZtLl92bm9kZTtcbiAgICB2YXIgcHJl
dkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFuY2U7XG4gICAgYWN0aXZlSW5zdGFuY2UgPSB2
bTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hf
XyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVy
aW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlh
bCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyhcbiAgICAgICAgdm0uJGVsLCB2
bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1vdmVPbmx5ICovLFxuICAgICAgICB2bS4kb3B0
aW9ucy5fcGFyZW50RWxtLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcmVmRWxtXG4gICAgICApO1xu
ICAgICAgLy8gbm8gbmVlZCBmb3IgdGhlIHJlZiBub2RlcyBhZnRlciBpbml0aWFsIHBhdGNoXG4g
ICAgICAvLyB0aGlzIHByZXZlbnRzIGtlZXBpbmcgYSBkZXRhY2hlZCBET00gdHJlZSBpbiBtZW1v
cnkgKCM1ODUxKVxuICAgICAgdm0uJG9wdGlvbnMuX3BhcmVudEVsbSA9IHZtLiRvcHRpb25zLl9y
ZWZFbG0gPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4k
ZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGFjdGl2ZUlu
c3RhbmNlID0gcHJldkFjdGl2ZUluc3RhbmNlO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVy
ZW5jZVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAg
ICB9XG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9
XG4gICAgLy8gaWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAg
IGlmICh2bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQu
X3Zub2RlKSB7XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8g
dXBkYXRlZCBob29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNo
aWxkcmVuIGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4g
IH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAg
dmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVy
LnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVu
Y3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJv
eWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0
cm95Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBz
ZWxmIGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBh
cmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFj
dCkge1xuICAgICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8g
dGVhcmRvd24gd2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRj
aGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtc
biAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAg
ICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4g
b2JqZWN0IG1heSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7
XG4gICAgICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRo
ZSBsYXN0IGhvb2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9r
ZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hf
Xyh2bS5fdm5vZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxs
SG9vayh2bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0
ZW5lcnMuXG4gICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxu
ICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4g
IH07XG59XG5cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50IChcbiAgdm0sXG4gIGVsLFxuICBoeWRy
YXRpbmdcbikge1xuICB2bS4kZWwgPSBlbDtcbiAgaWYgKCF2bS4kb3B0aW9ucy5yZW5kZXIpIHtc
biAgICB2bS4kb3B0aW9ucy5yZW5kZXIgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICAgIGlmIChmYWxz
ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoKHZtLiRvcHRp
b25zLnRlbXBsYXRlICYmIHZtLiRvcHRpb25zLnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB8
fFxuICAgICAgICB2bS4kb3B0aW9ucy5lbCB8fCBlbCkge1xuICAgICAgICB3YXJuKFxuICAgICAg
ICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQgb2YgVnVlIHdoZXJlIHRo
ZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAnY29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZS4gRWl0
aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0ZXMgaW50byAnICtcbiAgICAgICAgICAncmVuZGVy
IGZ1bmN0aW9ucywgb3IgdXNlIHRoZSBjb21waWxlci1pbmNsdWRlZCBidWlsZC4nLFxuICAgICAg
ICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuKFxuICAgICAg
ICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9uZW50OiB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rp
b24gbm90IGRlZmluZWQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuICBjYWxsSG9vayh2bSwgJ2JlZm9yZU1vdW50Jyk7XG5cbiAgdmFyIHVwZGF0ZUNv
bXBvbmVudDtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChmYWxzZSkge1xuICAg
IHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBuYW1lID0gdm0uX25h
bWU7XG4gICAgICB2YXIgaWQgPSB2bS5fdWlkO1xuICAgICAgdmFyIHN0YXJ0VGFnID0gXCJ2dWUt
cGVyZi1zdGFydDpcIiArIGlkO1xuICAgICAgdmFyIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwi
ICsgaWQ7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdmFyIHZub2RlID0gdm0uX3Jl
bmRlcigpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHJl
bmRlclwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAg
ICAgdm0uX3VwZGF0ZSh2bm9kZSwgaHlkcmF0aW5nKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAg
ICAgIG1lYXN1cmUoKG5hbWUgKyBcIiBwYXRjaFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAg
fTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAg
ICB2bS5fdXBkYXRlKHZtLl9yZW5kZXIoKSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9XG5cbiAg
dm0uX3dhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgdXBkYXRlQ29tcG9uZW50LCBub29wKTtcbiAg
aHlkcmF0aW5nID0gZmFsc2U7XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwgY2Fs
bCBtb3VudGVkIG9uIHNlbGZcbiAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVh
dGVkIGNoaWxkIGNvbXBvbmVudHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2bm9k
ZSA9PSBudWxsKSB7XG4gICAgdm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2sodm0s
ICdtb3VudGVkJyk7XG4gIH1cbiAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxk
Q29tcG9uZW50IChcbiAgdm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRW
bm9kZSxcbiAgcmVuZGVyQ2hpbGRyZW5cbikge1xuICBpZiAoZmFsc2UpIHtcbiAgICBpc1VwZGF0
aW5nQ2hpbGRDb21wb25lbnQgPSB0cnVlO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIg
Y29tcG9uZW50IGhhcyBzbG90IGNoaWxkcmVuXG4gIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBiZWZv
cmUgb3ZlcndyaXRpbmcgJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuXG4gIHZhciBoYXNDaGlsZHJl
biA9ICEhKFxuICAgIHJlbmRlckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBz
dGF0aWMgc2xvdHNcbiAgICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBv
bGQgc3RhdGljIHNsb3RzXG4gICAgcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyB8fCAvLyBo
YXMgbmV3IHNjb3BlZCBzbG90c1xuICAgIHZtLiRzY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3Qg
Ly8gaGFzIG9sZCBzY29wZWQgc2xvdHNcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5v
ZGUgPSBwYXJlbnRWbm9kZTtcbiAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2
bSdzIHBsYWNlaG9sZGVyIG5vZGUgd2l0aG91dCByZS1yZW5kZXJcblxuICBpZiAodm0uX3Zub2Rl
KSB7IC8vIHVwZGF0ZSBjaGlsZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9
IHBhcmVudFZub2RlO1xuICB9XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRl
ckNoaWxkcmVuO1xuXG4gIC8vIHVwZGF0ZSAkYXR0cnMgYW5kICRsaXN0ZW5zZXJzIGhhc2hcbiAg
Ly8gdGhlc2UgYXJlIGFsc28gcmVhY3RpdmUgc28gdGhleSBtYXkgdHJpZ2dlciBjaGlsZCB1cGRh
dGUgaWYgdGhlIGNoaWxkXG4gIC8vIHVzZWQgdGhlbSBkdXJpbmcgcmVuZGVyXG4gIHZtLiRhdHRy
cyA9IHBhcmVudFZub2RlLmRhdGEgJiYgcGFyZW50Vm5vZGUuZGF0YS5hdHRycztcbiAgdm0uJGxp
c3RlbmVycyA9IGxpc3RlbmVycztcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0
YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVy
dCA9IGZhbHNlO1xuICAgIHZhciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMg
PSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
cm9wS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAg
ICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9w
c0RhdGEsIHZtKTtcbiAgICB9XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1
ZTtcbiAgICAvLyBrZWVwIGEgY29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMu
cHJvcHNEYXRhID0gcHJvcHNEYXRhO1xuICB9XG5cbiAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICBp
ZiAobGlzdGVuZXJzKSB7XG4gICAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJl
bnRMaXN0ZW5lcnM7XG4gICAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVy
cztcbiAgICB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycywgb2xkTGlzdGVu
ZXJzKTtcbiAgfVxuICAvLyByZXNvbHZlIHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGls
ZHJlblxuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMo
cmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0
ZSgpO1xuICB9XG5cbiAgaWYgKGZhbHNlKSB7XG4gICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50
ID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAg
d2hpbGUgKHZtICYmICh2bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkg
eyByZXR1cm4gdHJ1ZSB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2
YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZt
Ll9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkg
e1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkg
e1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09
PSBudWxsKSB7XG4gICAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21w
b25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0
ZWQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBk
aXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7
XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4g
IH1cbiAgaWYgKCF2bS5faW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBk
ZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2Fs
bEhvb2sodm0sICdkZWFjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2
bSwgaG9vaykge1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgaWYgKGhh
bmRsZXJzKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBq
OyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGhhbmRsZXJzW2ldLmNhbGwodm0pO1xuICAg
ICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKGhvb2sgKyBcIiBo
b29rXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHZtLl9oYXNIb29rRXZlbnQpIHtc
biAgICB2bS4kZW1pdCgnaG9vazonICsgaG9vayk7XG4gIH1cbn1cblxuLyogICovXG5cblxudmFy
IE1BWF9VUERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRl
ZENoaWxkcmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3
YWl0aW5nID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5c
bi8qKlxuICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNl
dFNjaGVkdWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRD
aGlsZHJlbi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgY2ly
Y3VsYXIgPSB7fTtcbiAgfVxuICB3YWl0aW5nID0gZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLyoq
XG4gKiBGbHVzaCBib3RoIHF1ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rp
b24gZmx1c2hTY2hlZHVsZXJRdWV1ZSAoKSB7XG4gIGZsdXNoaW5nID0gdHJ1ZTtcbiAgdmFyIHdh
dGNoZXIsIGlkO1xuXG4gIC8vIFNvcnQgcXVldWUgYmVmb3JlIGZsdXNoLlxuICAvLyBUaGlzIGVu
c3VyZXMgdGhhdDpcbiAgLy8gMS4gQ29tcG9uZW50cyBhcmUgdXBkYXRlZCBmcm9tIHBhcmVudCB0
byBjaGlsZC4gKGJlY2F1c2UgcGFyZW50IGlzIGFsd2F5c1xuICAvLyAgICBjcmVhdGVkIGJlZm9y
ZSB0aGUgY2hpbGQpXG4gIC8vIDIuIEEgY29tcG9uZW50J3MgdXNlciB3YXRjaGVycyBhcmUgcnVu
IGJlZm9yZSBpdHMgcmVuZGVyIHdhdGNoZXIgKGJlY2F1c2VcbiAgLy8gICAgdXNlciB3YXRjaGVy
cyBhcmUgY3JlYXRlZCBiZWZvcmUgdGhlIHJlbmRlciB3YXRjaGVyKVxuICAvLyAzLiBJZiBhIGNv
bXBvbmVudCBpcyBkZXN0cm95ZWQgZHVyaW5nIGEgcGFyZW50IGNvbXBvbmVudCdzIHdhdGNoZXIg
cnVuLFxuICAvLyAgICBpdHMgd2F0Y2hlcnMgY2FuIGJlIHNraXBwZWQuXG4gIHF1ZXVlLnNvcnQo
ZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuaWQgLSBiLmlkOyB9KTtcblxuICAvLyBkbyBub3Qg
Y2FjaGUgbGVuZ3RoIGJlY2F1c2UgbW9yZSB3YXRjaGVycyBtaWdodCBiZSBwdXNoZWRcbiAgLy8g
YXMgd2UgcnVuIGV4aXN0aW5nIHdhdGNoZXJzXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHF1
ZXVlLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIHdhdGNoZXIgPSBxdWV1ZVtpbmRleF07XG4gICAg
aWQgPSB3YXRjaGVyLmlkO1xuICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7
XG4gICAgLy8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxu
ICAgIGlmIChmYWxzZSkge1xuICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAw
KSArIDE7XG4gICAgICBpZiAoY2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAg
ICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxv
b3AgJyArIChcbiAgICAgICAgICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImlu
IHdhdGNoZXIgd2l0aCBleHByZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsg
XCJcXFwiXCIpXG4gICAgICAgICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rp
b24uXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAg
ICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBw
b3N0IHF1ZXVlcyBiZWZvcmUgcmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9
IGFjdGl2YXRlZENoaWxkcmVuLnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5z
bGljZSgpO1xuXG4gIHJlc2V0U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVu
dCB1cGRhdGVkIGFuZCBhY3RpdmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2
YXRlZFF1ZXVlKTtcbiAgY2FsbFVwZGF0ZWRIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRl
dnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYm
IGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1c
blxuZnVuY3Rpb24gY2FsbFVwZGF0ZWRIb29rcyAocXVldWUpIHtcbiAgdmFyIGkgPSBxdWV1ZS5s
ZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgd2F0Y2hlciA9IHF1ZXVlW2ldO1xuICAg
IHZhciB2bSA9IHdhdGNoZXIudm07XG4gICAgaWYgKHZtLl93YXRjaGVyID09PSB3YXRjaGVyICYm
IHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAndXBkYXRlZCcpO1xuICAgIH1c
biAgfVxufVxuXG4vKipcbiAqIFF1ZXVlIGEga2VwdC1hbGl2ZSBjb21wb25lbnQgdGhhdCB3YXMg
YWN0aXZhdGVkIGR1cmluZyBwYXRjaC5cbiAqIFRoZSBxdWV1ZSB3aWxsIGJlIHByb2Nlc3NlZCBh
ZnRlciB0aGUgZW50aXJlIHRyZWUgaGFzIGJlZW4gcGF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVl
dWVBY3RpdmF0ZWRDb21wb25lbnQgKHZtKSB7XG4gIC8vIHNldHRpbmcgX2luYWN0aXZlIHRvIGZh
bHNlIGhlcmUgc28gdGhhdCBhIHJlbmRlciBmdW5jdGlvbiBjYW5cbiAgLy8gcmVseSBvbiBjaGVj
a2luZyB3aGV0aGVyIGl0J3MgaW4gYW4gaW5hY3RpdmUgdHJlZSAoZS5nLiByb3V0ZXItdmlldylc
biAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gIGFjdGl2YXRlZENoaWxkcmVuLnB1c2godm0pO1xu
fVxuXG5mdW5jdGlvbiBjYWxsQWN0aXZhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIGZvciAodmFyIGkg
PSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBxdWV1ZVtpXS5faW5hY3RpdmUgPSB0
cnVlO1xuICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQocXVldWVbaV0sIHRydWUgLyogdHJ1ZSAq
Lyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoIGEgd2F0Y2hlciBpbnRvIHRoZSB3YXRjaGVyIHF1
ZXVlLlxuICogSm9icyB3aXRoIGR1cGxpY2F0ZSBJRHMgd2lsbCBiZSBza2lwcGVkIHVubGVzcyBp
dCdzXG4gKiBwdXNoZWQgd2hlbiB0aGUgcXVldWUgaXMgYmVpbmcgZmx1c2hlZC5cbiAqL1xuZnVu
Y3Rpb24gcXVldWVXYXRjaGVyICh3YXRjaGVyKSB7XG4gIHZhciBpZCA9IHdhdGNoZXIuaWQ7XG4g
IGlmIChoYXNbaWRdID09IG51bGwpIHtcbiAgICBoYXNbaWRdID0gdHJ1ZTtcbiAgICBpZiAoIWZs
dXNoaW5nKSB7XG4gICAgICBxdWV1ZS5wdXNoKHdhdGNoZXIpO1xuICAgIH0gZWxzZSB7XG4gICAg
ICAvLyBpZiBhbHJlYWR5IGZsdXNoaW5nLCBzcGxpY2UgdGhlIHdhdGNoZXIgYmFzZWQgb24gaXRz
IGlkXG4gICAgICAvLyBpZiBhbHJlYWR5IHBhc3QgaXRzIGlkLCBpdCB3aWxsIGJlIHJ1biBuZXh0
IGltbWVkaWF0ZWx5LlxuICAgICAgdmFyIGkgPSBxdWV1ZS5sZW5ndGggLSAxO1xuICAgICAgd2hp
bGUgKGkgPiBpbmRleCAmJiBxdWV1ZVtpXS5pZCA+IHdhdGNoZXIuaWQpIHtcbiAgICAgICAgaS0t
O1xuICAgICAgfVxuICAgICAgcXVldWUuc3BsaWNlKGkgKyAxLCAwLCB3YXRjaGVyKTtcbiAgICB9
XG4gICAgLy8gcXVldWUgdGhlIGZsdXNoXG4gICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICB3YWl0
aW5nID0gdHJ1ZTtcbiAgICAgIG5leHRUaWNrKGZsdXNoU2NoZWR1bGVyUXVldWUpO1xuICAgIH1c
biAgfVxufVxuXG4vKiAgKi9cblxudmFyIHVpZCQyID0gMDtcblxuLyoqXG4gKiBBIHdhdGNoZXIg
cGFyc2VzIGFuIGV4cHJlc3Npb24sIGNvbGxlY3RzIGRlcGVuZGVuY2llcyxcbiAqIGFuZCBmaXJl
cyBjYWxsYmFjayB3aGVuIHRoZSBleHByZXNzaW9uIHZhbHVlIGNoYW5nZXMuXG4gKiBUaGlzIGlz
IHVzZWQgZm9yIGJvdGggdGhlICR3YXRjaCgpIGFwaSBhbmQgZGlyZWN0aXZlcy5cbiAqL1xudmFy
IFdhdGNoZXIgPSBmdW5jdGlvbiBXYXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGNiLFxu
ICBvcHRpb25zXG4pIHtcbiAgdGhpcy52bSA9IHZtO1xuICB2bS5fd2F0Y2hlcnMucHVzaCh0aGlz
KTtcbiAgLy8gb3B0aW9uc1xuICBpZiAob3B0aW9ucykge1xuICAgIHRoaXMuZGVlcCA9ICEhb3B0
aW9ucy5kZWVwO1xuICAgIHRoaXMudXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICAgIHRoaXMubGF6
eSA9ICEhb3B0aW9ucy5sYXp5O1xuICAgIHRoaXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuICB9
IGVsc2Uge1xuICAgIHRoaXMuZGVlcCA9IHRoaXMudXNlciA9IHRoaXMubGF6eSA9IHRoaXMuc3lu
YyA9IGZhbHNlO1xuICB9XG4gIHRoaXMuY2IgPSBjYjtcbiAgdGhpcy5pZCA9ICsrdWlkJDI7IC8v
IHVpZCBmb3IgYmF0Y2hpbmdcbiAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB0aGlzLmRpcnR5ID0g
dGhpcy5sYXp5OyAvLyBmb3IgbGF6eSB3YXRjaGVyc1xuICB0aGlzLmRlcHMgPSBbXTtcbiAgdGhp
cy5uZXdEZXBzID0gW107XG4gIHRoaXMuZGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5uZXdE
ZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLmV4cHJlc3Npb24gPSAgZmFsc2VcbiAgICA/IGV4
cE9yRm4udG9TdHJpbmcoKVxuICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdl
dHRlclxuICBpZiAodHlwZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdl
dHRlciA9IGV4cE9yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgo
ZXhwT3JGbik7XG4gICAgaWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBm
dW5jdGlvbiAoKSB7fTtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybihcbiAgICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiAr
IFwiXFxcIiBcIiArXG4gICAgICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRl
bGltaXRlZCBwYXRocy4gJyArXG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5j
dGlvbiBpbnN0ZWFkLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlz
LnZhbHVlID0gdGhpcy5sYXp5XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59
O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVu
Y2llcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAg
cHVzaFRhcmdldCh0aGlzKTtcbiAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICB0
cnkge1xuICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9IGNhdGNoIChl
KSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdl
dHRlciBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAg
Ly8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4g
ICAgLy8gZGVwZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG4gICAgaWYgKHRoaXMuZGVlcCkg
e1xuICAgICAgdHJhdmVyc2UodmFsdWUpO1xuICAgIH1cbiAgICBwb3BUYXJnZXQoKTtcbiAgICB0
aGlzLmNsZWFudXBEZXBzKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFk
ZCBhIGRlcGVuZGVuY3kgdG8gdGhpcyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBl
LmFkZERlcCA9IGZ1bmN0aW9uIGFkZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAg
aWYgKCF0aGlzLm5ld0RlcElkcy5oYXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlk
KTtcbiAgICB0aGlzLm5ld0RlcHMucHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFz
KGlkKSkge1xuICAgICAgZGVwLmFkZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxu
ICogQ2xlYW4gdXAgZm9yIGRlcGVuZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90
b3R5cGUuY2xlYW51cERlcHMgPSBmdW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gICAgdmFyIHRo
aXMkMSA9IHRoaXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0t
KSB7XG4gICAgdmFyIGRlcCA9IHRoaXMkMS5kZXBzW2ldO1xuICAgIGlmICghdGhpcyQxLm5ld0Rl
cElkcy5oYXMoZGVwLmlkKSkge1xuICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1c
biAgfVxuICB2YXIgdG1wID0gdGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdE
ZXBJZHM7XG4gIHRoaXMubmV3RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigp
O1xuICB0bXAgPSB0aGlzLmRlcHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhp
cy5uZXdEZXBzID0gdG1wO1xuICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxu
ICogU3Vic2NyaWJlciBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5k
ZW5jeSBjaGFuZ2VzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1
cGRhdGUgKCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5
KSB7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4g
ICAgdGhpcy5ydW4oKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1c
bn07XG5cbi8qKlxuICogU2NoZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxl
ZCBieSB0aGUgc2NoZWR1bGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlv
biBydW4gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdl
dCgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBE
ZWVwIHdhdGNoZXJzIGFuZCB3YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2
ZW5cbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1
ZSBtYXlcbiAgICAgIC8vIGhhdmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxu
ICAgICAgdGhpcy5kZWVwXG4gICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2
YXIgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAg
ICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2Fs
bCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAg
ICAgICAgaGFuZGxlRXJyb3IoZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxc
IlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtc
biAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9m
IHRoZSB3YXRjaGVyLlxuICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJz
LlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgp
IHtcbiAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07
XG5cbi8qKlxuICogRGVwZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIu
XG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4g
ICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3
aGlsZSAoaS0tKSB7XG4gICAgdGhpcyQxLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8q
KlxuICogUmVtb3ZlIHNlbGYgZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3Qu
XG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkg
e1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8v
IHJlbW92ZSBzZWxmIGZyb20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29t
ZXdoYXQgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZt
IGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQp
IHtcbiAgICAgIHJlbW92ZSh0aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZh
ciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzJDEu
ZGVwc1tpXS5yZW1vdmVTdWIodGhpcyQxKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxz
ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8g
ZXZva2UgYWxsIGNvbnZlcnRlZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJv
cGVydHkgaW5zaWRlIHRoZSBvYmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRl
cGVuZGVuY3kuXG4gKi9cbnZhciBzZWVuT2JqZWN0cyA9IG5ldyBfU2V0KCk7XG5mdW5jdGlvbiB0
cmF2ZXJzZSAodmFsKSB7XG4gIHNlZW5PYmplY3RzLmNsZWFyKCk7XG4gIF90cmF2ZXJzZSh2YWws
IHNlZW5PYmplY3RzKTtcbn1cblxuZnVuY3Rpb24gX3RyYXZlcnNlICh2YWwsIHNlZW4pIHtcbiAg
dmFyIGksIGtleXM7XG4gIHZhciBpc0EgPSBBcnJheS5pc0FycmF5KHZhbCk7XG4gIGlmICgoIWlz
QSAmJiAhaXNPYmplY3QodmFsKSkgfHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsKSkge1xuICAg
IHJldHVyblxuICB9XG4gIGlmICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9f
b2JfXy5kZXAuaWQ7XG4gICAgaWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4g
ICAgfVxuICAgIHNlZW4uYWRkKGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZh
bC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxu
ICB9IGVsc2Uge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxl
bmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9
XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4g
IGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxu
ICBzZXQ6IG5vb3Bcbn07XG5cbmZ1bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5
KSB7XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRl
ciAoKSB7XG4gICAgcmV0dXJuIHRoaXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFBy
b3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAg
dGhpc1tzb3VyY2VLZXldW2tleV0gPSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24g
aW5pdFN0YXRlICh2bSkge1xuICB2bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4k
b3B0aW9ucztcbiAgaWYgKG9wdHMucHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsg
fVxuICBpZiAob3B0cy5tZXRob2RzKSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9
XG4gIGlmIChvcHRzLmRhdGEpIHtcbiAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAg
b2JzZXJ2ZSh2bS5fZGF0YSA9IHt9LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlm
IChvcHRzLmNvbXB1dGVkKSB7IGluaXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAg
aWYgKG9wdHMud2F0Y2ggJiYgb3B0cy53YXRjaCAhPT0gbmF0aXZlV2F0Y2gpIHtcbiAgICBpbml0
V2F0Y2godm0sIG9wdHMud2F0Y2gpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrT3B0aW9uVHlw
ZSAodm0sIG5hbWUpIHtcbiAgdmFyIG9wdGlvbiA9IHZtLiRvcHRpb25zW25hbWVdO1xuICBpZiAo
IWlzUGxhaW5PYmplY3Qob3B0aW9uKSkge1xuICAgIHdhcm4oXG4gICAgICAoXCJjb21wb25lbnQg
b3B0aW9uIFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgc2hvdWxkIGJlIGFuIG9iamVjdC5cIiksXG4g
ICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNP
cHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307
XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28g
dGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBp
bnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2
bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xu
ICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgb2JzZXJ2ZXJT
dGF0ZS5zaG91bGRDb252ZXJ0ID0gaXNSb290O1xuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5
ICkge1xuICAgIGtleXMucHVzaChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChr
ZXksIHByb3BzT3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3Jl
IGVsc2UgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmIChpc1Jlc2VydmVkQXR0cmlidXRl
KGtleSkgfHwgY29uZmlnLmlzUmVzZXJ2ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgd2FybihcbiAg
ICAgICAgICAoXCJcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUg
YW5kIGNhbm5vdCBiZSB1c2VkIGFzIGNvbXBvbmVudCBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxu
ICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwg
dmFsdWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHZtLiRwYXJlbnQgJiYgIWlzVXBkYXRp
bmdDaGlsZENvbXBvbmVudCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lk
IG11dGF0aW5nIGEgcHJvcCBkaXJlY3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4g
ICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJl
LXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21w
dXRlZCBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFs
dWUuIFByb3AgYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAg
ICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7
XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAg
IC8vIHN0YXRpYyBwcm9wcyBhcmUgYWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBw
cm90b3R5cGVcbiAgICAvLyBkdXJpbmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJv
eHkgcHJvcHMgZGVmaW5lZCBhdFxuICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAo
IShrZXkgaW4gdm0pKSB7XG4gICAgICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9
XG4gIH07XG5cbiAgZm9yICh2YXIga2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4g
IG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGluaXRE
YXRhICh2bSkge1xuICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5f
ZGF0YSA9IHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZt
KVxuICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAg
ZGF0YSA9IHt9O1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihc
biAgICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAg
ICAgICdodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0
LUJlLWEtRnVuY3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEg
b24gaW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3Bz
ID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBtZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9k
cztcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBrZXkg
PSBrZXlzW2ldO1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKG1ldGhvZHMgJiYgaGFzT3du
KG1ldGhvZHMsIGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJtZXRob2QgXFxc
IlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIGRhdGEgcHJv
cGVydHkuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAg
IGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgIFwicHJvZHVjdGlvblwi
ICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJUaGUgZGF0YSBwcm9wZXJ0eSBc
XFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWNsYXJlZCBhcyBhIHByb3AuIFwiICtc
biAgICAgICAgXCJVc2UgcHJvcCBkZWZhdWx0IHZhbHVlIGluc3RlYWQuXCIsXG4gICAgICAgIHZt
XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoIWlzUmVzZXJ2ZWQoa2V5KSkge1xuICAgICAgcHJv
eHkodm0sIFwiX2RhdGFcIiwga2V5KTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBkYXRhXG4g
IG9ic2VydmUoZGF0YSwgdHJ1ZSAvKiBhc1Jvb3REYXRhICovKTtcbn1cblxuZnVuY3Rpb24gZ2V0
RGF0YSAoZGF0YSwgdm0pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtKVxuICB9
IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwiZGF0YSgpXCIpO1xuICAgIHJl
dHVybiB7fVxuICB9XG59XG5cbnZhciBjb21wdXRlZFdhdGNoZXJPcHRpb25zID0geyBsYXp5OiB0
cnVlIH07XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCAodm0sIGNvbXB1dGVkKSB7XG4gIFwicHJv
ZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgY2hlY2tPcHRpb25UeXBlKHZtLCAnY29tcHV0
ZWQnKTtcbiAgdmFyIHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3Jl
YXRlKG51bGwpO1xuXG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2Vy
RGVmID0gY29tcHV0ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09
ICdmdW5jdGlvbicgPyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKGZhbHNlKSB7XG4g
ICAgICB3YXJuKFxuICAgICAgICAoXCJHZXR0ZXIgaXMgbWlzc2luZyBmb3IgY29tcHV0ZWQgcHJv
cGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4g
ICAgfVxuICAgIC8vIGNyZWF0ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJv
cGVydHkuXG4gICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKHZtLCBnZXR0ZXIgfHwgbm9v
cCwgbm9vcCwgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyk7XG5cbiAgICAvLyBjb21wb25lbnQtZGVm
aW5lZCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmluZWQgb24gdGhlXG4gICAg
Ly8gY29tcG9uZW50IHByb3RvdHlwZS4gV2Ugb25seSBuZWVkIHRvIGRlZmluZSBjb21wdXRlZCBw
cm9wZXJ0aWVzIGRlZmluZWRcbiAgICAvLyBhdCBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYg
KCEoa2V5IGluIHZtKSkge1xuICAgICAgZGVmaW5lQ29tcHV0ZWQodm0sIGtleSwgdXNlckRlZik7
XG4gICAgfSBlbHNlIGlmIChmYWxzZSkge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0YSkge1xu
ICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxc
XCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVsc2UgaWYg
KHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAg
ICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMg
YWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKHRhcmdldCwga2V5LCB1c2VyRGVmKSB7XG4g
IGlmICh0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNoYXJlZFByb3BlcnR5
RGVmaW5pdGlvbi5nZXQgPSBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpO1xuICAgIHNoYXJlZFBy
b3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJlZFByb3Bl
cnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyB1c2VyRGVmLmNhY2hlICE9
PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgICAgOiB1
c2VyRGVmLmdldFxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5z
ZXQgPSB1c2VyRGVmLnNldFxuICAgICAgPyB1c2VyRGVmLnNldFxuICAgICAgOiBub29wO1xuICB9
XG4gIGlmIChmYWxzZSkge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5j
dGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAoXCJDb21wdXRlZCBwcm9wZXJ0eSBcXFwi
XCIgKyBrZXkgKyBcIlxcXCIgd2FzIGFzc2lnbmVkIHRvIGJ1dCBpdCBoYXMgbm8gc2V0dGVyLlwi
KSxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVu
Y3Rpb24gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIgKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24gY29t
cHV0ZWRHZXR0ZXIgKCkge1xuICAgIHZhciB3YXRjaGVyID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVy
cyAmJiB0aGlzLl9jb21wdXRlZFdhdGNoZXJzW2tleV07XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAg
ICAgIGlmICh3YXRjaGVyLmRpcnR5KSB7XG4gICAgICAgIHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAg
ICAgIH1cbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7
XG4gICAgICB9XG4gICAgICByZXR1cm4gd2F0Y2hlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBpbml0TWV0aG9kcyAodm0sIG1ldGhvZHMpIHtcbiAgXCJwcm9kdWN0aW9uXCIgIT09
ICdwcm9kdWN0aW9uJyAmJiBjaGVja09wdGlvblR5cGUodm0sICdtZXRob2RzJyk7XG4gIHZhciBw
cm9wcyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xu
ICAgIHZtW2tleV0gPSBtZXRob2RzW2tleV0gPT0gbnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNb
a2V5XSwgdm0pO1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBu
dWxsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsg
XCJcXFwiIGhhcyBhbiB1bmRlZmluZWQgdmFsdWUgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9u
LiBcIiArXG4gICAgICAgICAgXCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVj
dGx5P1wiLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocHJv
cHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwi
bWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMg
YSBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAg
fVxufVxuXG5mdW5jdGlvbiBpbml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBcInByb2R1Y3Rpb25c
IiAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoZWNrT3B0aW9uVHlwZSh2bSwgJ3dhdGNoJyk7XG4gIGZv
ciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwg
aGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIo
dm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNo
ZXIgKFxuICB2bSxcbiAga2V5T3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlm
IChpc1BsYWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAg
aGFuZGxlciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09
ICdzdHJpbmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2
bS4kd2F0Y2goa2V5T3JGbiwgaGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVN
aXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3Rs
eSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhl
IG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0
aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHBy
b3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChm
YWxzZSkge1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAgIHdh
cm4oXG4gICAgICAgICdBdm9pZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0YS4gJyArXG4g
ICAgICAgICdVc2UgbmVzdGVkIGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLicsXG4gICAgICAgIHRo
aXNcbiAgICAgICk7XG4gICAgfTtcbiAgICBwcm9wc0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4g
ICAgICB3YXJuKFwiJHByb3BzIGlzIHJlYWRvbmx5LlwiLCB0aGlzKTtcbiAgICB9O1xuICB9XG4g
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGRhdGEnLCBkYXRhRGVmKTtc
biAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcHJvcHMnLCBwcm9wc0Rl
Zik7XG5cbiAgVnVlLnByb3RvdHlwZS4kc2V0ID0gc2V0O1xuICBWdWUucHJvdG90eXBlLiRkZWxl
dGUgPSBkZWw7XG5cbiAgVnVlLnByb3RvdHlwZS4kd2F0Y2ggPSBmdW5jdGlvbiAoXG4gICAgZXhw
T3JGbixcbiAgICBjYixcbiAgICBvcHRpb25zXG4gICkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4g
ICAgaWYgKGlzUGxhaW5PYmplY3QoY2IpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV2F0Y2hlcih2
bSwgZXhwT3JGbiwgY2IsIG9wdGlvbnMpXG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8
IHt9O1xuICAgIG9wdGlvbnMudXNlciA9IHRydWU7XG4gICAgdmFyIHdhdGNoZXIgPSBuZXcgV2F0
Y2hlcih2bSwgZXhwT3JGbiwgY2IsIG9wdGlvbnMpO1xuICAgIGlmIChvcHRpb25zLmltbWVkaWF0
ZSkge1xuICAgICAgY2IuY2FsbCh2bSwgd2F0Y2hlci52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVy
biBmdW5jdGlvbiB1bndhdGNoRm4gKCkge1xuICAgICAgd2F0Y2hlci50ZWFyZG93bigpO1xuICAg
IH1cbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRQcm92aWRlICh2bSkge1xuICB2
YXIgcHJvdmlkZSA9IHZtLiRvcHRpb25zLnByb3ZpZGU7XG4gIGlmIChwcm92aWRlKSB7XG4gICAg
dm0uX3Byb3ZpZGVkID0gdHlwZW9mIHByb3ZpZGUgPT09ICdmdW5jdGlvbidcbiAgICAgID8gcHJv
dmlkZS5jYWxsKHZtKVxuICAgICAgOiBwcm92aWRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRJ
bmplY3Rpb25zICh2bSkge1xuICB2YXIgcmVzdWx0ID0gcmVzb2x2ZUluamVjdCh2bS4kb3B0aW9u
cy5pbmplY3QsIHZtKTtcbiAgaWYgKHJlc3VsdCkge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxk
Q29udmVydCA9IGZhbHNlO1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChmdW5jdGlv
biAoa2V5KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGZh
bHNlKSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBm
dW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRp
bmcgYW4gaW5qZWN0ZWQgdmFsdWUgZGlyZWN0bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBc
IiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21w
b25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0
YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAg
ICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUk
JDEodm0sIGtleSwgcmVzdWx0W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVy
U3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUlu
amVjdCAoaW5qZWN0LCB2bSkge1xuICBpZiAoaW5qZWN0KSB7XG4gICAgLy8gaW5qZWN0IGlzIDph
bnkgYmVjYXVzZSBmbG93IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBjYWNoZWRc
biAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIga2V5cyA9IGhh
c1N5bWJvbFxuICAgICAgICA/IFJlZmxlY3Qub3duS2V5cyhpbmplY3QpXG4gICAgICAgIDogT2Jq
ZWN0LmtleXMoaW5qZWN0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7
IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICB2YXIgcHJvdmlkZUtleSA9
IGluamVjdFtrZXldO1xuICAgICAgdmFyIHNvdXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJj
ZSkge1xuICAgICAgICBpZiAoc291cmNlLl9wcm92aWRlZCAmJiBwcm92aWRlS2V5IGluIHNvdXJj
ZS5fcHJvdmlkZWQpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRb
cHJvdmlkZUtleV07XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2Ug
PSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB3
YXJuKChcIkluamVjdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgbm90IGZvdW5kXCIpLCB2bSk7
XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG4vKiAgKi9cblxu
ZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0
YSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW5cbikge1xuICB2YXIgcHJvcHMgPSB7
fTtcbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNEZWYo
cHJvcE9wdGlvbnMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAg
ICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3BzRGF0YSB8
fCB7fSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpc0RlZihkYXRhLmF0dHJzKSkgeyBt
ZXJnZVByb3BzKHByb3BzLCBkYXRhLmF0dHJzKTsgfVxuICAgIGlmIChpc0RlZihkYXRhLnByb3Bz
KSkgeyBtZXJnZVByb3BzKHByb3BzLCBkYXRhLnByb3BzKTsgfVxuICB9XG4gIC8vIGVuc3VyZSB0
aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgLy8g
Z2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFt
ZWQgc2xvdCBjaGVja1xuICB2YXIgX2NvbnRleHQgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQpO1xu
ICB2YXIgaCA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KF9j
b250ZXh0LCBhLCBiLCBjLCBkLCB0cnVlKTsgfTtcbiAgdmFyIHZub2RlID0gQ3Rvci5vcHRpb25z
LnJlbmRlci5jYWxsKG51bGwsIGgsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIHByb3BzOiBwcm9w
cyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgcGFyZW50OiBjb250ZXh0LFxuICAgIGxp
c3RlbmVyczogZGF0YS5vbiB8fCB7fSxcbiAgICBpbmplY3Rpb25zOiByZXNvbHZlSW5qZWN0KEN0
b3Iub3B0aW9ucy5pbmplY3QsIGNvbnRleHQpLFxuICAgIHNsb3RzOiBmdW5jdGlvbiAoKSB7IHJl
dHVybiByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIGNvbnRleHQpOyB9XG4gIH0pO1xuICBpZiAodm5v
ZGUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0ID0gY29u
dGV4dDtcbiAgICB2bm9kZS5mdW5jdGlvbmFsT3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgICBp
ZiAoZGF0YS5zbG90KSB7XG4gICAgICAodm5vZGUuZGF0YSB8fCAodm5vZGUuZGF0YSA9IHt9KSku
c2xvdCA9IGRhdGEuc2xvdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0
aW9uIG1lcmdlUHJvcHMgKHRvLCBmcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG4g
ICAgdG9bY2FtZWxpemUoa2V5KV0gPSBmcm9tW2tleV07XG4gIH1cbn1cblxuLyogICovXG5cbi8v
IGhvb2tzIHRvIGJlIGludm9rZWQgb24gY29tcG9uZW50IFZOb2RlcyBkdXJpbmcgcGF0Y2hcbnZh
ciBjb21wb25lbnRWTm9kZUhvb2tzID0ge1xuICBpbml0OiBmdW5jdGlvbiBpbml0IChcbiAgICB2
bm9kZSxcbiAgICBoeWRyYXRpbmcsXG4gICAgcGFyZW50RWxtLFxuICAgIHJlZkVsbVxuICApIHtc
biAgICBpZiAoIXZub2RlLmNvbXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmNvbXBvbmVudEluc3Rh
bmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5z
dGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2bm9kZSxc
biAgICAgICAgYWN0aXZlSW5zdGFuY2UsXG4gICAgICAgIHBhcmVudEVsbSxcbiAgICAgICAgcmVm
RWxtXG4gICAgICApO1xuICAgICAgY2hpbGQuJG1vdW50KGh5ZHJhdGluZyA/IHZub2RlLmVsbSA6
IHVuZGVmaW5lZCwgaHlkcmF0aW5nKTtcbiAgICB9IGVsc2UgaWYgKHZub2RlLmRhdGEua2VlcEFs
aXZlKSB7XG4gICAgICAvLyBrZXB0LWFsaXZlIGNvbXBvbmVudHMsIHRyZWF0IGFzIGEgcGF0Y2hc
biAgICAgIHZhciBtb3VudGVkTm9kZSA9IHZub2RlOyAvLyB3b3JrIGFyb3VuZCBmbG93XG4gICAg
ICBjb21wb25lbnRWTm9kZUhvb2tzLnByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVkTm9kZSk7
XG4gICAgfVxuICB9LFxuXG4gIHByZXBhdGNoOiBmdW5jdGlvbiBwcmVwYXRjaCAob2xkVm5vZGUs
IHZub2RlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAg
IHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50
SW5zdGFuY2U7XG4gICAgdXBkYXRlQ2hpbGRDb21wb25lbnQoXG4gICAgICBjaGlsZCxcbiAgICAg
IG9wdGlvbnMucHJvcHNEYXRhLCAvLyB1cGRhdGVkIHByb3BzXG4gICAgICBvcHRpb25zLmxpc3Rl
bmVycywgLy8gdXBkYXRlZCBsaXN0ZW5lcnNcbiAgICAgIHZub2RlLCAvLyBuZXcgcGFyZW50IHZu
b2RlXG4gICAgICBvcHRpb25zLmNoaWxkcmVuIC8vIG5ldyBjaGlsZHJlblxuICAgICk7XG4gIH0s
XG5cbiAgaW5zZXJ0OiBmdW5jdGlvbiBpbnNlcnQgKHZub2RlKSB7XG4gICAgdmFyIGNvbnRleHQg
PSB2bm9kZS5jb250ZXh0O1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBv
bmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCkge1xu
ICAgICAgY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCA9IHRydWU7XG4gICAgICBjYWxsSG9v
ayhjb21wb25lbnRJbnN0YW5jZSwgJ21vdW50ZWQnKTtcbiAgICB9XG4gICAgaWYgKHZub2RlLmRh
dGEua2VlcEFsaXZlKSB7XG4gICAgICBpZiAoY29udGV4dC5faXNNb3VudGVkKSB7XG4gICAgICAg
IC8vIHZ1ZS1yb3V0ZXIjMTIxMlxuICAgICAgICAvLyBEdXJpbmcgdXBkYXRlcywgYSBrZXB0LWFs
aXZlIGNvbXBvbmVudCdzIGNoaWxkIGNvbXBvbmVudHMgbWF5XG4gICAgICAgIC8vIGNoYW5nZSwg
c28gZGlyZWN0bHkgd2Fsa2luZyB0aGUgdHJlZSBoZXJlIG1heSBjYWxsIGFjdGl2YXRlZCBob29r
c1xuICAgICAgICAvLyBvbiBpbmNvcnJlY3QgY2hpbGRyZW4uIEluc3RlYWQgd2UgcHVzaCB0aGVt
IGludG8gYSBxdWV1ZSB3aGljaCB3aWxsXG4gICAgICAgIC8vIGJlIHByb2Nlc3NlZCBhZnRlciB0
aGUgd2hvbGUgcGF0Y2ggcHJvY2VzcyBlbmRlZC5cbiAgICAgICAgcXVldWVBY3RpdmF0ZWRDb21w
b25lbnQoY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZh
dGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xu
ICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9k
ZSkge1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNl
O1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkKSB7XG4gICAgICBpZiAo
IXZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAgIGNvbXBvbmVudEluc3RhbmNlLiRkZXN0
cm95KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQo
Y29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn07XG5cbnZhciBob29rc1RvTWVyZ2UgPSBPYmplY3Qua2V5cyhjb21wb25lbnRWTm9kZUhv
b2tzKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgZGF0YSxcbiAg
Y29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIGlmIChpc1VuZGVmKEN0b3IpKSB7
XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgYmFzZUN0b3IgPSBjb250ZXh0LiRvcHRpb25zLl9i
YXNlO1xuXG4gIC8vIHBsYWluIG9wdGlvbnMgb2JqZWN0OiB0dXJuIGl0IGludG8gYSBjb25zdHJ1
Y3RvclxuICBpZiAoaXNPYmplY3QoQ3RvcikpIHtcbiAgICBDdG9yID0gYmFzZUN0b3IuZXh0ZW5k
KEN0b3IpO1xuICB9XG5cbiAgLy8gaWYgYXQgdGhpcyBzdGFnZSBpdCdzIG5vdCBhIGNvbnN0cnVj
dG9yIG9yIGFuIGFzeW5jIGNvbXBvbmVudCBmYWN0b3J5LFxuICAvLyByZWplY3QuXG4gIGlmICh0
eXBlb2YgQ3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgd2Fy
bigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwg
Y29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50
XG4gIHZhciBhc3luY0ZhY3Rvcnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFz
eW5jRmFjdG9yeSA9IEN0b3I7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3lu
Y0ZhY3RvcnksIGJhc2VDdG9yLCBjb250ZXh0KTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVk
KSB7XG4gICAgICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25l
bnQsIHdoaWNoIGlzIHJlbmRlcmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJl
c2VydmVzIGFsbCB0aGUgcmF3IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRo
ZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5k
IGh5ZHJhdGlvbi5cbiAgICAgIHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAg
ICBhc3luY0ZhY3RvcnksXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAg
IGNoaWxkcmVuLFxuICAgICAgICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0g
ZGF0YSB8fCB7fTtcblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBn
bG9iYWwgbWl4aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3Rv
ciBjcmVhdGlvblxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRy
YW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYg
KGlzRGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBk
YXRhKTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJh
Y3RQcm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFs
IGNvbXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAg
IHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwg
Y29udGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2Ug
dGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVu
ZXJzIGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtc
biAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8g
c28gaXQgZ2V0cyBwcm9jZXNzZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRh
dGEub24gPSBkYXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3Ry
YWN0KSkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdc
biAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29y
ayBhcm91bmQgZmxvd1xuICAgIHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtc
biAgICBpZiAoc2xvdCkge1xuICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxu
ICAvLyBtZXJnZSBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRl
ciBub2RlXG4gIG1lcmdlSG9va3MoZGF0YSk7XG5cbiAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIg
dm5vZGVcbiAgdmFyIG5hbWUgPSBDdG9yLm9wdGlvbnMubmFtZSB8fCB0YWc7XG4gIHZhciB2bm9k
ZSA9IG5ldyBWTm9kZShcbiAgICAoXCJ2dWUtY29tcG9uZW50LVwiICsgKEN0b3IuY2lkKSArIChu
YW1lID8gKFwiLVwiICsgbmFtZSkgOiAnJykpLFxuICAgIGRhdGEsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIGNvbnRleHQsXG4gICAgeyBDdG9yOiBDdG9yLCBwcm9wc0RhdGE6IHBy
b3BzRGF0YSwgbGlzdGVuZXJzOiBsaXN0ZW5lcnMsIHRhZzogdGFnLCBjaGlsZHJlbjogY2hpbGRy
ZW4gfSxcbiAgICBhc3luY0ZhY3RvcnlcbiAgKTtcbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0
aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25v
dyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCwg
Ly8gYWN0aXZlSW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0YXRlXG4gIHBhcmVudEVsbSxcbiAgcmVm
RWxtXG4pIHtcbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9w
dGlvbnM7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIF9pc0NvbXBvbmVudDogdHJ1ZSxcbiAgICBw
YXJlbnQ6IHBhcmVudCxcbiAgICBwcm9wc0RhdGE6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9w
c0RhdGEsXG4gICAgX2NvbXBvbmVudFRhZzogdm5vZGVDb21wb25lbnRPcHRpb25zLnRhZyxcbiAg
ICBfcGFyZW50Vm5vZGU6IHZub2RlLFxuICAgIF9wYXJlbnRMaXN0ZW5lcnM6IHZub2RlQ29tcG9u
ZW50T3B0aW9ucy5saXN0ZW5lcnMsXG4gICAgX3JlbmRlckNoaWxkcmVuOiB2bm9kZUNvbXBvbmVu
dE9wdGlvbnMuY2hpbGRyZW4sXG4gICAgX3BhcmVudEVsbTogcGFyZW50RWxtIHx8IG51bGwsXG4g
ICAgX3JlZkVsbTogcmVmRWxtIHx8IG51bGxcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBs
YXRlIHJlbmRlciBmdW5jdGlvbnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5p
bmxpbmVUZW1wbGF0ZTtcbiAgaWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlv
bnMucmVuZGVyID0gaW5saW5lVGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVu
ZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBu
ZXcgdm5vZGVDb21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gbWVy
Z2VIb29rcyAoZGF0YSkge1xuICBpZiAoIWRhdGEuaG9vaykge1xuICAgIGRhdGEuaG9vayA9IHt9
O1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3NUb01lcmdlLmxlbmd0aDsgaSsrKSB7
XG4gICAgdmFyIGtleSA9IGhvb2tzVG9NZXJnZVtpXTtcbiAgICB2YXIgZnJvbVBhcmVudCA9IGRh
dGEuaG9va1trZXldO1xuICAgIHZhciBvdXJzID0gY29tcG9uZW50Vk5vZGVIb29rc1trZXldO1xu
ICAgIGRhdGEuaG9va1trZXldID0gZnJvbVBhcmVudCA/IG1lcmdlSG9vayQxKG91cnMsIGZyb21Q
YXJlbnQpIDogb3VycztcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUhvb2skMSAob25lLCB0d28p
IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgb25lKGEsIGIsIGMsIGQp
O1xuICAgIHR3byhhLCBiLCBjLCBkKTtcbiAgfVxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50
IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVu
dCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25z
LCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5w
cm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25z
Lm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnOyhkYXRhLnByb3BzIHx8IChkYXRhLnByb3BzID0ge30p
KVtwcm9wXSA9IGRhdGEubW9kZWwudmFsdWU7XG4gIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEu
b24gPSB7fSk7XG4gIGlmIChpc0RlZihvbltldmVudF0pKSB7XG4gICAgb25bZXZlbnRdID0gW2Rh
dGEubW9kZWwuY2FsbGJhY2tdLmNvbmNhdChvbltldmVudF0pO1xuICB9IGVsc2Uge1xuICAgIG9u
W2V2ZW50XSA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBT
SU1QTEVfTk9STUFMSVpFID0gMTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3Jh
cHBlciBmdW5jdGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8v
IHdpdGhvdXQgZ2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVu
dCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6
YXRpb25UeXBlLFxuICBhbHdheXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShk
YXRhKSB8fCBpc1ByaW1pdGl2ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hp
bGRyZW47XG4gICAgY2hpbGRyZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1c
biAgaWYgKGlzVHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUg
PSBBTFdBWVNfTk9STUFMSVpFO1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0
LCB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24g
X2NyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVu
LFxuICBub3JtYWxpemF0aW9uVHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigo
ZGF0YSkuX19vYl9fKSkge1xuICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYg
d2FybihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUg
ZGF0YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3
YXlzIGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAg
ICAgIGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxu
ICAvLyBvYmplY3Qgc3ludGF4IGluIHYtYmluZFxuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYo
ZGF0YS5pcykpIHtcbiAgICB0YWcgPSBkYXRhLmlzO1xuICB9XG4gIGlmICghdGFnKSB7XG4gICAg
Ly8gaW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAgIHJldHVy
biBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyB3YXJuIGFnYWluc3Qgbm9uLXByaW1pdGl2
ZSBrZXlcbiAgaWYgKGZhbHNlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAnQXZvaWQgdXNpbmcg
bm9uLXByaW1pdGl2ZSB2YWx1ZSBhcyBrZXksICcgK1xuICAgICAgJ3VzZSBzdHJpbmcvbnVtYmVy
IHZhbHVlIGluc3RlYWQuJyxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICB9XG4gIC8vIHN1cHBv
cnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYg
KEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAn
ZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVk
U2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0g
MDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtc
biAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlm
IChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVu
ID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwg
bnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAg
IG5zID0gY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNl
cnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAg
ICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFt
ZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNv
bnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0
KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBv
bmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwg
Y2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0
ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNl
IGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVu
dCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAg
dGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRl
eHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQg
b3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBk
YXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAg
IGlmIChucykgeyBhcHBseU5TKHZub2RlLCBucyk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBl
bHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24g
YXBwbHlOUyAodm5vZGUsIG5zKSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcg
PT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNp
ZGUgZm9yZWlnbk9iamVjdFxuICAgIHJldHVyblxuICB9XG4gIGlmIChpc0RlZih2bm9kZS5jaGls
ZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsg
aSA8IGw7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY2hpbGRyZW5baV07XG4gICAg
ICBpZiAoaXNEZWYoY2hpbGQudGFnKSAmJiBpc1VuZGVmKGNoaWxkLm5zKSkge1xuICAgICAgICBh
cHBseU5TKGNoaWxkLCBucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4v
KipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1
bmN0aW9uIHJlbmRlckxpc3QgKFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGks
IGwsIGtleXMsIGtleTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09
PSAnc3RyaW5nJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3Ig
KGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVu
ZGVyKHZhbFtpXSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1i
ZXInKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZh
bDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBl
bHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4g
ICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0ga2V5
cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICByZXRb
aV0gPSByZW5kZXIodmFsW2tleV0sIGtleSwgaSk7XG4gICAgfVxuICB9XG4gIGlmIChpc0RlZihy
ZXQpKSB7XG4gICAgKHJldCkuX2lzVkxpc3QgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXRcbn1c
blxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyA8c2xvdD5c
biAqL1xuZnVuY3Rpb24gcmVuZGVyU2xvdCAoXG4gIG5hbWUsXG4gIGZhbGxiYWNrLFxuICBwcm9w
cyxcbiAgYmluZE9iamVjdFxuKSB7XG4gIHZhciBzY29wZWRTbG90Rm4gPSB0aGlzLiRzY29wZWRT
bG90c1tuYW1lXTtcbiAgaWYgKHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHBy
b3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIHByb3BzID0g
ZXh0ZW5kKGV4dGVuZCh7fSwgYmluZE9iamVjdCksIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJu
IHNjb3BlZFNsb3RGbihwcm9wcykgfHwgZmFsbGJhY2tcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xv
dE5vZGVzID0gdGhpcy4kc2xvdHNbbmFtZV07XG4gICAgLy8gd2FybiBkdXBsaWNhdGUgc2xvdCB1
c2FnZVxuICAgIGlmIChzbG90Tm9kZXMgJiYgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCAmJiB3YXJuKFxuICAgICAgICBcIkR1cGxp
Y2F0ZSBwcmVzZW5jZSBvZiBzbG90IFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgZm91bmQgaW4gdGhl
IHNhbWUgcmVuZGVyIHRyZWUgXCIgK1xuICAgICAgICBcIi0gdGhpcyB3aWxsIGxpa2VseSBjYXVz
ZSByZW5kZXIgZXJyb3JzLlwiLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgICAgc2xvdE5v
ZGVzLl9yZW5kZXJlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzbG90Tm9kZXMgfHwgZmFs
bGJhY2tcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVz
b2x2aW5nIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAgcmV0
dXJuIHJlc29sdmVBc3NldCh0aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8fCBp
ZGVudGl0eVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgY2hlY2tp
bmcga2V5Q29kZXMgZnJvbSBjb25maWcuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMgKFxu
ICBldmVudEtleUNvZGUsXG4gIGtleSxcbiAgYnVpbHRJbkFsaWFzXG4pIHtcbiAgdmFyIGtleUNv
ZGVzID0gY29uZmlnLmtleUNvZGVzW2tleV0gfHwgYnVpbHRJbkFsaWFzO1xuICBpZiAoQXJyYXku
aXNBcnJheShrZXlDb2RlcykpIHtcbiAgICByZXR1cm4ga2V5Q29kZXMuaW5kZXhPZihldmVudEtl
eUNvZGUpID09PSAtMVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBrZXlDb2RlcyAhPT0gZXZlbnRL
ZXlDb2RlXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIG1l
cmdpbmcgdi1iaW5kPVwib2JqZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVuY3Rp
b24gYmluZE9iamVjdFByb3BzIChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQcm9w
LFxuICBpc1N5bmNcbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVl
KSkge1xuICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAg
ICAgICAndi1iaW5kIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkg
dmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAo
QXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7
XG4gICAgICB9XG4gICAgICB2YXIgaGFzaDtcbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBr
ZXkgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgPT09ICdjbGFzcycgfHxcbiAgICAg
ICAgICBrZXkgPT09ICdzdHlsZScgfHxcbiAgICAgICAgICBpc1Jlc2VydmVkQXR0cmlidXRlKGtl
eSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7
XG4gICAgICAgICAgdmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAg
ICAgICAgICBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtl
eSlcbiAgICAgICAgICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxu
ICAgICAgICAgICAgOiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9
XG4gICAgICAgIGlmICghKGtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZh
bHVlW2tleV07XG5cbiAgICAgICAgICBpZiAoaXNTeW5jKSB7XG4gICAgICAgICAgICB2YXIgb24g
PSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICAgICAgICAgICAgb25bKFwidXBkYXRlOlwi
ICsga2V5KV0gPSBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHZhbHVlW2tleV0g
PSAkZXZlbnQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAg
fTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSBsb29wKCBrZXkgKTtcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIg
Zm9yIHJlbmRlcmluZyBzdGF0aWMgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAo
XG4gIGluZGV4LFxuICBpc0luRm9yXG4pIHtcbiAgdmFyIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVl
c1tpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBu
b3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZSBieSBkb2lu
ZyBhIHNoYWxsb3cgY2xvbmUuXG4gIGlmICh0cmVlICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJu
IEFycmF5LmlzQXJyYXkodHJlZSlcbiAgICAgID8gY2xvbmVWTm9kZXModHJlZSlcbiAgICAgIDog
Y2xvbmVWTm9kZSh0cmVlKVxuICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJl
ZS5cbiAgdHJlZSA9IHRoaXMuX3N0YXRpY1RyZWVzW2luZGV4XSA9XG4gICAgdGhpcy4kb3B0aW9u
cy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwodGhpcy5fcmVuZGVyUHJveHkpO1xuICBtYXJr
U3RhdGljKHRyZWUsIChcIl9fc3RhdGljX19cIiArIGluZGV4KSwgZmFsc2UpO1xuICByZXR1cm4g
dHJlZVxufVxuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciB2LW9uY2UuXG4gKiBFZmZlY3Rp
dmVseSBpdCBtZWFucyBtYXJraW5nIHRoZSBub2RlIGFzIHN0YXRpYyB3aXRoIGEgdW5pcXVlIGtl
eS5cbiAqL1xuZnVuY3Rpb24gbWFya09uY2UgKFxuICB0cmVlLFxuICBpbmRleCxcbiAga2V5XG4p
IHtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX29uY2VfX1wiICsgaW5kZXggKyAoa2V5ID8gKFwi
X1wiICsga2V5KSA6IFwiXCIpKSwgdHJ1ZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9u
IG1hcmtTdGF0aWMgKFxuICB0cmVlLFxuICBrZXksXG4gIGlzT25jZVxuKSB7XG4gIGlmIChBcnJh
eS5pc0FycmF5KHRyZWUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsg
aSsrKSB7XG4gICAgICBpZiAodHJlZVtpXSAmJiB0eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycp
IHtcbiAgICAgICAgbWFya1N0YXRpY05vZGUodHJlZVtpXSwgKGtleSArIFwiX1wiICsgaSksIGlz
T25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG1hcmtTdGF0aWNOb2RlKHRy
ZWUsIGtleSwgaXNPbmNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljTm9kZSAobm9k
ZSwga2V5LCBpc09uY2UpIHtcbiAgbm9kZS5pc1N0YXRpYyA9IHRydWU7XG4gIG5vZGUua2V5ID0g
a2V5O1xuICBub2RlLmlzT25jZSA9IGlzT25jZTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJp
bmRPYmplY3RMaXN0ZW5lcnMgKGRhdGEsIHZhbHVlKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlm
ICghaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJv
ZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ3Ytb24gd2l0aG91dCBhcmd1bWVudCBleHBlY3Rz
IGFuIE9iamVjdCB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtc
biAgICAgIHZhciBvbiA9IGRhdGEub24gPSBkYXRhLm9uID8gZXh0ZW5kKHt9LCBkYXRhLm9uKSA6
IHt9O1xuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIHZhciBleGlzdGlu
ZyA9IG9uW2tleV07XG4gICAgICAgIHZhciBvdXJzID0gdmFsdWVba2V5XTtcbiAgICAgICAgb25b
a2V5XSA9IGV4aXN0aW5nID8gW10uY29uY2F0KG91cnMsIGV4aXN0aW5nKSA6IG91cnM7XG4gICAg
ICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBp
bml0UmVuZGVyICh2bSkge1xuICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0aGUg
Y2hpbGQgdHJlZVxuICB2bS5fc3RhdGljVHJlZXMgPSBudWxsO1xuICB2YXIgcGFyZW50Vm5vZGUg
PSB2bS4kdm5vZGUgPSB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU7IC8vIHRoZSBwbGFjZWhvbGRl
ciBub2RlIGluIHBhcmVudCB0cmVlXG4gIHZhciByZW5kZXJDb250ZXh0ID0gcGFyZW50Vm5vZGUg
JiYgcGFyZW50Vm5vZGUuY29udGV4dDtcbiAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHZtLiRv
cHRpb25zLl9yZW5kZXJDaGlsZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90
cyA9IGVtcHR5T2JqZWN0O1xuICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRoaXMg
aW5zdGFuY2VcbiAgLy8gc28gdGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGluc2lk
ZSBpdC5cbiAgLy8gYXJncyBvcmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlv
blR5cGUsIGFsd2F5c05vcm1hbGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQgYnkg
cmVuZGVyIGZ1bmN0aW9ucyBjb21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1bmN0
aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCBm
YWxzZSk7IH07XG4gIC8vIG5vcm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRoZSBw
dWJsaWMgdmVyc2lvbiwgdXNlZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9u
cy5cbiAgdm0uJGNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4g
Y3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG5cbiAgLy8gJGF0dHJzICYg
JGxpc3RlbmVycyBhcmUgZXhwb3NlZCBmb3IgZWFzaWVyIEhPQyBjcmVhdGlvbi5cbiAgLy8gdGhl
eSBuZWVkIHRvIGJlIHJlYWN0aXZlIHNvIHRoYXQgSE9DcyB1c2luZyB0aGVtIGFyZSBhbHdheXMg
dXBkYXRlZFxuICB2YXIgcGFyZW50RGF0YSA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmRh
dGE7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChmYWxzZSkge1xuICAgIGRl
ZmluZVJlYWN0aXZlJCQxKHZtLCAnJGF0dHJzJywgcGFyZW50RGF0YSAmJiBwYXJlbnREYXRhLmF0
dHJzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdh
cm4oXCIkYXR0cnMgaXMgcmVhZG9ubHkuXCIsIHZtKTtcbiAgICB9LCB0cnVlKTtcbiAgICBkZWZp
bmVSZWFjdGl2ZSQkMSh2bSwgJyRsaXN0ZW5lcnMnLCB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVu
ZXJzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdh
cm4oXCIkbGlzdGVuZXJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gIH0g
ZWxzZSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYm
IHBhcmVudERhdGEuYXR0cnMsIG51bGwsIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZt
LCAnJGxpc3RlbmVycycsIHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMsIG51bGwsIHRydWUp
O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlck1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlw
ZS4kbmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRo
aXMpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAg
IHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHJlZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5k
ZXIgPSByZWYucmVuZGVyO1xuICAgIHZhciBzdGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVu
ZGVyRm5zO1xuICAgIHZhciBfcGFyZW50Vm5vZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAg
aWYgKHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIC8vIGNsb25lIHNsb3Qgbm9kZXMgb24gcmUtcmVu
ZGVyc1xuICAgICAgZm9yICh2YXIga2V5IGluIHZtLiRzbG90cykge1xuICAgICAgICB2bS4kc2xv
dHNba2V5XSA9IGNsb25lVk5vZGVzKHZtLiRzbG90c1trZXldKTtcbiAgICAgIH1cbiAgICB9XG5c
biAgICB2bS4kc2NvcGVkU2xvdHMgPSAoX3BhcmVudFZub2RlICYmIF9wYXJlbnRWbm9kZS5kYXRh
LnNjb3BlZFNsb3RzKSB8fCBlbXB0eU9iamVjdDtcblxuICAgIGlmIChzdGF0aWNSZW5kZXJGbnMg
JiYgIXZtLl9zdGF0aWNUcmVlcykge1xuICAgICAgdm0uX3N0YXRpY1RyZWVzID0gW107XG4gICAg
fVxuICAgIC8vIHNldCBwYXJlbnQgdm5vZGUuIHRoaXMgYWxsb3dzIHJlbmRlciBmdW5jdGlvbnMg
dG8gaGF2ZSBhY2Nlc3NcbiAgICAvLyB0byB0aGUgZGF0YSBvbiB0aGUgcGxhY2Vob2xkZXIgbm9k
ZS5cbiAgICB2bS4kdm5vZGUgPSBfcGFyZW50Vm5vZGU7XG4gICAgLy8gcmVuZGVyIHNlbGZcbiAg
ICB2YXIgdm5vZGU7XG4gICAgdHJ5IHtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3Jl
bmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAg
aGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyIGZ1bmN0aW9uXCIpO1xuICAgICAgLy8gcmV0dXJu
IGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2
ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5i
dWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB2bm9kZSA9IHZt
LiRvcHRpb25zLnJlbmRlckVycm9yXG4gICAgICAgICAgPyB2bS4kb3B0aW9ucy5yZW5kZXJFcnJv
ci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQsIGUpXG4gICAgICAgICAg
OiB2bS5fdm5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtc
biAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIGVtcHR5IHZub2RlIGluIGNhc2UgdGhlIHJl
bmRlciBmdW5jdGlvbiBlcnJvcmVkIG91dFxuICAgIGlmICghKHZub2RlIGluc3RhbmNlb2YgVk5v
ZGUpKSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVs
dGlwbGUgcm9vdCBub2RlcyByZXR1cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1
bmN0aW9uICcgK1xuICAgICAgICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4n
LFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0
ZUVtcHR5Vk5vZGUoKTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVu
dCA9IF9wYXJlbnRWbm9kZTtcbiAgICByZXR1cm4gdm5vZGVcbiAgfTtcblxuICAvLyBpbnRlcm5h
bCByZW5kZXIgaGVscGVycy5cbiAgLy8gdGhlc2UgYXJlIGV4cG9zZWQgb24gdGhlIGluc3RhbmNl
IHByb3RvdHlwZSB0byByZWR1Y2UgZ2VuZXJhdGVkIHJlbmRlclxuICAvLyBjb2RlIHNpemUuXG4g
IFZ1ZS5wcm90b3R5cGUuX28gPSBtYXJrT25jZTtcbiAgVnVlLnByb3RvdHlwZS5fbiA9IHRvTnVt
YmVyO1xuICBWdWUucHJvdG90eXBlLl9zID0gdG9TdHJpbmc7XG4gIFZ1ZS5wcm90b3R5cGUuX2wg
PSByZW5kZXJMaXN0O1xuICBWdWUucHJvdG90eXBlLl90ID0gcmVuZGVyU2xvdDtcbiAgVnVlLnBy
b3RvdHlwZS5fcSA9IGxvb3NlRXF1YWw7XG4gIFZ1ZS5wcm90b3R5cGUuX2kgPSBsb29zZUluZGV4
T2Y7XG4gIFZ1ZS5wcm90b3R5cGUuX20gPSByZW5kZXJTdGF0aWM7XG4gIFZ1ZS5wcm90b3R5cGUu
X2YgPSByZXNvbHZlRmlsdGVyO1xuICBWdWUucHJvdG90eXBlLl9rID0gY2hlY2tLZXlDb2Rlcztc
biAgVnVlLnByb3RvdHlwZS5fYiA9IGJpbmRPYmplY3RQcm9wcztcbiAgVnVlLnByb3RvdHlwZS5f
diA9IGNyZWF0ZVRleHRWTm9kZTtcbiAgVnVlLnByb3RvdHlwZS5fZSA9IGNyZWF0ZUVtcHR5Vk5v
ZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX3UgPSByZXNvbHZlU2NvcGVkU2xvdHM7XG4gIFZ1ZS5wcm90
b3R5cGUuX2cgPSBiaW5kT2JqZWN0TGlzdGVuZXJzO1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCQx
ID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5faW5p
dCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhIHVp
ZFxuICAgIHZtLl91aWQgPSB1aWQkMSsrO1xuXG4gICAgdmFyIHN0YXJ0VGFnLCBlbmRUYWc7XG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBzdGFy
dFRhZyA9IFwidnVlLXBlcmYtaW5pdDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwi
dnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAg
fVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5f
aXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBv
cHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9u
ZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5n
IGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBv
bmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFs
Q29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMg
PSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29u
c3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtc
biAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZmFsc2UpIHtc
biAgICAgIGluaXRQcm94eSh2bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94
eSA9IHZtO1xuICAgIH1cbiAgICAvLyBleHBvc2UgcmVhbCBzZWxmXG4gICAgdm0uX3NlbGYgPSB2
bTtcbiAgICBpbml0TGlmZWN5Y2xlKHZtKTtcbiAgICBpbml0RXZlbnRzKHZtKTtcbiAgICBpbml0
UmVuZGVyKHZtKTtcbiAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZUNyZWF0ZScpO1xuICAgIGluaXRJ
bmplY3Rpb25zKHZtKTsgLy8gcmVzb2x2ZSBpbmplY3Rpb25zIGJlZm9yZSBkYXRhL3Byb3BzXG4g
ICAgaW5pdFN0YXRlKHZtKTtcbiAgICBpbml0UHJvdmlkZSh2bSk7IC8vIHJlc29sdmUgcHJvdmlk
ZSBhZnRlciBkYXRhL3Byb3BzXG4gICAgY2FsbEhvb2sodm0sICdjcmVhdGVkJyk7XG5cbiAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHZtLl9uYW1l
ID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xu
ICAgICAgbWVhc3VyZSgoKHZtLl9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFnLCBlbmRUYWcp
O1xuICAgIH1cblxuICAgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0uJG1vdW50KHZt
LiRvcHRpb25zLmVsKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJbnRlcm5hbENv
bXBvbmVudCAodm0sIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucyA9IE9iamVj
dC5jcmVhdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRoaXMgYmVjYXVz
ZSBpdCdzIGZhc3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIG9wdHMucGFyZW50ID0g
b3B0aW9ucy5wYXJlbnQ7XG4gIG9wdHMucHJvcHNEYXRhID0gb3B0aW9ucy5wcm9wc0RhdGE7XG4g
IG9wdHMuX3BhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMuX3BhcmVu
dExpc3RlbmVycyA9IG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hp
bGRyZW4gPSBvcHRpb25zLl9yZW5kZXJDaGlsZHJlbjtcbiAgb3B0cy5fY29tcG9uZW50VGFnID0g
b3B0aW9ucy5fY29tcG9uZW50VGFnO1xuICBvcHRzLl9wYXJlbnRFbG0gPSBvcHRpb25zLl9wYXJl
bnRFbG07XG4gIG9wdHMuX3JlZkVsbSA9IG9wdGlvbnMuX3JlZkVsbTtcbiAgaWYgKG9wdGlvbnMu
cmVuZGVyKSB7XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0
YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0
aW9uIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBD
dG9yLm9wdGlvbnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9
IHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1
cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09
IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4g
ICAgICAvLyBuZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0
aW9ucyA9IHN1cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0
ZS1tb2RpZmllZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9w
dGlvbnMgPSByZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJh
c2UgZXh0ZW5kIG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAg
ZXh0ZW5kKEN0b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAg
ICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBD
dG9yLmV4dGVuZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBv
cHRpb25zLmNvbXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxu
ICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlv
bnMgKEN0b3IpIHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25z
O1xuICB2YXIgZXh0ZW5kZWQgPSBDdG9yLmV4dGVuZE9wdGlvbnM7XG4gIHZhciBzZWFsZWQgPSBD
dG9yLnNlYWxlZE9wdGlvbnM7XG4gIGZvciAodmFyIGtleSBpbiBsYXRlc3QpIHtcbiAgICBpZiAo
bGF0ZXN0W2tleV0gIT09IHNlYWxlZFtrZXldKSB7XG4gICAgICBpZiAoIW1vZGlmaWVkKSB7IG1v
ZGlmaWVkID0ge307IH1cbiAgICAgIG1vZGlmaWVkW2tleV0gPSBkZWR1cGUobGF0ZXN0W2tleV0s
IGV4dGVuZGVkW2tleV0sIHNlYWxlZFtrZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGlm
aWVkXG59XG5cbmZ1bmN0aW9uIGRlZHVwZSAobGF0ZXN0LCBleHRlbmRlZCwgc2VhbGVkKSB7XG4g
IC8vIGNvbXBhcmUgbGF0ZXN0IGFuZCBzZWFsZWQgdG8gZW5zdXJlIGxpZmVjeWNsZSBob29rcyB3
b24ndCBiZSBkdXBsaWNhdGVkXG4gIC8vIGJldHdlZW4gbWVyZ2VzXG4gIGlmIChBcnJheS5pc0Fy
cmF5KGxhdGVzdCkpIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgc2VhbGVkID0gQXJyYXkuaXNB
cnJheShzZWFsZWQpID8gc2VhbGVkIDogW3NlYWxlZF07XG4gICAgZXh0ZW5kZWQgPSBBcnJheS5p
c0FycmF5KGV4dGVuZGVkKSA/IGV4dGVuZGVkIDogW2V4dGVuZGVkXTtcbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxhdGVzdC5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gcHVzaCBvcmlnaW5hbCBv
cHRpb25zIGFuZCBub3Qgc2VhbGVkIG9wdGlvbnMgdG8gZXhjbHVkZSBkdXBsaWNhdGVkIG9wdGlv
bnNcbiAgICAgIGlmIChleHRlbmRlZC5pbmRleE9mKGxhdGVzdFtpXSkgPj0gMCB8fCBzZWFsZWQu
aW5kZXhPZihsYXRlc3RbaV0pIDwgMCkge1xuICAgICAgICByZXMucHVzaChsYXRlc3RbaV0pO1xu
ICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxh
dGVzdFxuICB9XG59XG5cbmZ1bmN0aW9uIFZ1ZSQzIChvcHRpb25zKSB7XG4gIGlmIChmYWxzZVxu
ICApIHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxl
ZCB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtc
bn1cblxuaW5pdE1peGluKFZ1ZSQzKTtcbnN0YXRlTWl4aW4oVnVlJDMpO1xuZXZlbnRzTWl4aW4o
VnVlJDMpO1xubGlmZWN5Y2xlTWl4aW4oVnVlJDMpO1xucmVuZGVyTWl4aW4oVnVlJDMpO1xuXG4v
KiAgKi9cblxuZnVuY3Rpb24gaW5pdFVzZSAoVnVlKSB7XG4gIFZ1ZS51c2UgPSBmdW5jdGlvbiAo
cGx1Z2luKSB7XG4gICAgdmFyIGluc3RhbGxlZFBsdWdpbnMgPSAodGhpcy5faW5zdGFsbGVkUGx1
Z2lucyB8fCAodGhpcy5faW5zdGFsbGVkUGx1Z2lucyA9IFtdKSk7XG4gICAgaWYgKGluc3RhbGxl
ZFBsdWdpbnMuaW5kZXhPZihwbHVnaW4pID4gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAg
fVxuXG4gICAgLy8gYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gICAgdmFyIGFyZ3MgPSB0b0FycmF5
KGFyZ3VtZW50cywgMSk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIGlmICh0eXBlb2Yg
cGx1Z2luLmluc3RhbGwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5pbnN0YWxsLmFw
cGx5KHBsdWdpbiwgYXJncyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGx1Z2luID09PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICBwbHVnaW4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICAgIGlu
c3RhbGxlZFBsdWdpbnMucHVzaChwbHVnaW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5c
bi8qICAqL1xuXG5mdW5jdGlvbiBpbml0TWl4aW4kMSAoVnVlKSB7XG4gIFZ1ZS5taXhpbiA9IGZ1
bmN0aW9uIChtaXhpbikge1xuICAgIHRoaXMub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLm9w
dGlvbnMsIG1peGluKTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVu
Y3Rpb24gaW5pdEV4dGVuZCAoVnVlKSB7XG4gIC8qKlxuICAgKiBFYWNoIGluc3RhbmNlIGNvbnN0
cnVjdG9yLCBpbmNsdWRpbmcgVnVlLCBoYXMgYSB1bmlxdWVcbiAgICogY2lkLiBUaGlzIGVuYWJs
ZXMgdXMgdG8gY3JlYXRlIHdyYXBwZWQgXCJjaGlsZFxuICAgKiBjb25zdHJ1Y3RvcnNcIiBmb3Ig
cHJvdG90eXBhbCBpbmhlcml0YW5jZSBhbmQgY2FjaGUgdGhlbS5cbiAgICovXG4gIFZ1ZS5jaWQg
PSAwO1xuICB2YXIgY2lkID0gMTtcblxuICAvKipcbiAgICogQ2xhc3MgaW5oZXJpdGFuY2VcbiAg
ICovXG4gIFZ1ZS5leHRlbmQgPSBmdW5jdGlvbiAoZXh0ZW5kT3B0aW9ucykge1xuICAgIGV4dGVu
ZE9wdGlvbnMgPSBleHRlbmRPcHRpb25zIHx8IHt9O1xuICAgIHZhciBTdXBlciA9IHRoaXM7XG4g
ICAgdmFyIFN1cGVySWQgPSBTdXBlci5jaWQ7XG4gICAgdmFyIGNhY2hlZEN0b3JzID0gZXh0ZW5k
T3B0aW9ucy5fQ3RvciB8fCAoZXh0ZW5kT3B0aW9ucy5fQ3RvciA9IHt9KTtcbiAgICBpZiAoY2Fj
aGVkQ3RvcnNbU3VwZXJJZF0pIHtcbiAgICAgIHJldHVybiBjYWNoZWRDdG9yc1tTdXBlcklkXVxu
ICAgIH1cblxuICAgIHZhciBuYW1lID0gZXh0ZW5kT3B0aW9ucy5uYW1lIHx8IFN1cGVyLm9wdGlv
bnMubmFtZTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSok
Ly50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ludmFsaWQgY29tcG9u
ZW50IG5hbWU6IFwiJyArIG5hbWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICAg
ICAnY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIGh5cGhl
biwgJyArXG4gICAgICAgICAgJ2FuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIuJ1xuICAgICAg
ICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25l
bnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBT
dWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1
Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4
dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8g
Rm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdl
dHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24g
dGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5l
UHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9w
dGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChT
dWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9
XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAg
ICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGlu
O1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0
ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBh
c3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAg
ICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1
cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29t
cG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRv
IHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGlu
c3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8g
YmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAg
IFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9u
cyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3Jc
biAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59
XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0
aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5w
cm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1
dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xu
ICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnBy
b3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCBy
ZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rp
b24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAg
IGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICBy
ZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAg
ICAgIGlmICh0eXBlID09PSAnY29tcG9uZW50JyAmJiBjb25maWcuaXNSZXNlcnZlZFRhZyhpZCkp
IHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWlu
IG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgICAgICAg
ICAnaWQ6ICcgKyBpZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGlzUGxhaW5PYmplY3QoZGVmaW5pdGlv
bikpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBkZWZpbml0aW9uLm5hbWUgfHwgaWQ7
XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQoZGVmaW5p
dGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09ICdkaXJlY3RpdmUnICYmIHR5
cGVvZiBkZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9
IHsgYmluZDogZGVmaW5pdGlvbiwgdXBkYXRlOiBkZWZpbml0aW9uIH07XG4gICAgICAgIH1cbiAg
ICAgICAgdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXSA9IGRlZmluaXRpb247XG4gICAgICAg
IHJldHVybiBkZWZpbml0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbi8qICAqL1xu
XG52YXIgcGF0dGVyblR5cGVzID0gW1N0cmluZywgUmVnRXhwLCBBcnJheV07XG5cbmZ1bmN0aW9u
IGdldENvbXBvbmVudE5hbWUgKG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgJiYgKG9wdHMuQ3Rvci5v
cHRpb25zLm5hbWUgfHwgb3B0cy50YWcpXG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMgKHBhdHRlcm4s
IG5hbWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0
dGVybi5pbmRleE9mKG5hbWUpID4gLTFcbiAgfSBlbHNlIGlmICh0eXBlb2YgcGF0dGVybiA9PT0g
J3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkg
PiAtMVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRl
cm4udGVzdChuYW1lKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVy
biBmYWxzZVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlIChjYWNoZSwgY3VycmVudCwgZmlsdGVy
KSB7XG4gIGZvciAodmFyIGtleSBpbiBjYWNoZSkge1xuICAgIHZhciBjYWNoZWROb2RlID0gY2Fj
aGVba2V5XTtcbiAgICBpZiAoY2FjaGVkTm9kZSkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21w
b25lbnROYW1lKGNhY2hlZE5vZGUuY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAm
JiAhZmlsdGVyKG5hbWUpKSB7XG4gICAgICAgIGlmIChjYWNoZWROb2RlICE9PSBjdXJyZW50KSB7
XG4gICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGNhY2hlZE5vZGUpO1xuICAgICAgICB9XG4gICAg
ICAgIGNhY2hlW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlv
biBwcnVuZUNhY2hlRW50cnkgKHZub2RlKSB7XG4gIGlmICh2bm9kZSkge1xuICAgIHZub2RlLmNv
bXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbn1cblxudmFyIEtlZXBBbGl2ZSA9IHtc
biAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xu
ICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNcbiAg
fSxcblxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkICgpIHtcbiAgICB0aGlzLmNhY2hlID0g
T2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfSxcblxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ry
b3llZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4g
dGhpcyQxLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhpcyQxLmNhY2hlW2tleV0p
O1xuICAgIH1cbiAgfSxcblxuICB3YXRjaDoge1xuICAgIGluY2x1ZGU6IGZ1bmN0aW9uIGluY2x1
ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVu
Y3Rpb24gKG5hbWUpIHsgcmV0dXJuIG1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSxcbiAg
ICBleGNsdWRlOiBmdW5jdGlvbiBleGNsdWRlICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhp
cy5jYWNoZSwgdGhpcy5fdm5vZGUsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2
YWwsIG5hbWUpOyB9KTtcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIg
KCkge1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQodGhpcy4kc2xvdHMu
ZGVmYXVsdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21w
b25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVj
ayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0
aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAoXG4gICAgICAgICh0aGlzLmluY2x1ZGUgJiYgIW1h
dGNoZXModGhpcy5pbmNsdWRlLCBuYW1lKSkgfHxcbiAgICAgICAgKHRoaXMuZXhjbHVkZSAmJiBt
YXRjaGVzKHRoaXMuZXhjbHVkZSwgbmFtZSkpXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB2
bm9kZVxuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAg
IC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2Nh
bCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2
OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlv
bnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAg
IDogdm5vZGUua2V5O1xuICAgICAgaWYgKHRoaXMuY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9k
ZS5jb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuY2FjaGVba2V5XS5jb21wb25lbnRJbnN0YW5jZTtc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAg
fVxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4g
dm5vZGVcbiAgfVxufTtcblxudmFyIGJ1aWx0SW5Db21wb25lbnRzID0ge1xuICBLZWVwQWxpdmU6
IEtlZXBBbGl2ZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRHbG9iYWxBUEkgKFZ1ZSkg
e1xuICAvLyBjb25maWdcbiAgdmFyIGNvbmZpZ0RlZiA9IHt9O1xuICBjb25maWdEZWYuZ2V0ID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gY29uZmlnOyB9O1xuICBpZiAoZmFsc2UpIHtcbiAgICBjb25m
aWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCBy
ZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3Rl
YWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUs
ICdjb25maWcnLCBjb25maWdEZWYpO1xuXG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAv
LyBOT1RFOiB0aGVzZSBhcmUgbm90IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAt
IGF2b2lkIHJlbHlpbmcgb25cbiAgLy8gdGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUg
cmlzay5cbiAgVnVlLnV0aWwgPSB7XG4gICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVu
ZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTog
ZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtcblxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRl
ID0gZGVsO1xuICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztcblxuICBWdWUub3B0aW9ucyA9IE9i
amVjdC5jcmVhdGUobnVsbCk7XG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUp
IHtcbiAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4g
IH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3Ry
dWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGlu
IFdlZXgncyBtdWx0aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0g
VnVlO1xuXG4gIGV4dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50
cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5k
KFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1
ZSQzKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRpc1NlcnZl
cicsIHtcbiAgZ2V0OiBpc1NlcnZlclJlbmRlcmluZ1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShWdWUkMy5wcm90b3R5cGUsICckc3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBn
ZXQgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMu
JHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cblZ1ZSQzLnZlcnNp
b24gPSAnMi40LjInO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZvciB3ZWIg
YmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcgdGVtcGxh
dGUgY29tcGlsYXRpb25cbnZhciBpc1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxlLGNsYXNz
Jyk7XG5cbi8vIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9yIGJpbmRp
bmdcbnZhciBhY2NlcHRWYWx1ZSA9IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlvbixzZWxl
Y3QnKTtcbnZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIpIHtcbiAg
cmV0dXJuIChcbiAgICAoYXR0ciA9PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcpKSAmJiB0
eXBlICE9PSAnYnV0dG9uJyB8fFxuICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRhZyA9PT0g
J29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcp
IHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICApXG59O1xu
XG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxkcmFnZ2Fi
bGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNCb29sZWFuQXR0ciA9IG1ha2VNYXAoXG4gICdhbGxv
d2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250
cm9scyxkZWNsYXJlLCcgK1xuICAnZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQs
ZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLCcgK1xuICAnZW5hYmxlZCxmb3Jtbm92YWxp
ZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0
aXBsZSwnICtcbiAgJ211dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93
cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHksJyArXG4gICdyZXF1aXJlZCxyZXZlcnNlZCxz
Y29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLCcgK1xuICAndHJ1ZXNw
ZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSdcbik7XG5cbnZhciB4bGlua05TID0gJ2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsnO1xuXG52YXIgaXNYbGluayA9IGZ1bmN0aW9uIChuYW1lKSB7
XG4gIHJldHVybiBuYW1lLmNoYXJBdCg1KSA9PT0gJzonICYmIG5hbWUuc2xpY2UoMCwgNSkgPT09
ICd4bGluaydcbn07XG5cbnZhciBnZXRYbGlua1Byb3AgPSBmdW5jdGlvbiAobmFtZSkge1xuICBy
ZXR1cm4gaXNYbGluayhuYW1lKSA/IG5hbWUuc2xpY2UoNiwgbmFtZS5sZW5ndGgpIDogJydcbn07
XG5cbnZhciBpc0ZhbHN5QXR0clZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gdmFs
ID09IG51bGwgfHwgdmFsID09PSBmYWxzZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGdlbkNs
YXNzRm9yVm5vZGUgKHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIHBh
cmVudE5vZGUgPSB2bm9kZTtcbiAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICB3aGlsZSAoaXNE
ZWYoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgaWYgKGNoaWxkTm9kZS5kYXRhKSB7
XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoY2hpbGROb2RlLmRhdGEsIGRhdGEpO1xuICAg
IH1cbiAgfVxuICB3aGlsZSAoaXNEZWYocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkg
e1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0
YShkYXRhLCBwYXJlbnROb2RlLmRhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVuZGVyQ2xh
c3MoZGF0YS5zdGF0aWNDbGFzcywgZGF0YS5jbGFzcylcbn1cblxuZnVuY3Rpb24gbWVyZ2VDbGFz
c0RhdGEgKGNoaWxkLCBwYXJlbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0aWNDbGFzczogY29u
Y2F0KGNoaWxkLnN0YXRpY0NsYXNzLCBwYXJlbnQuc3RhdGljQ2xhc3MpLFxuICAgIGNsYXNzOiBp
c0RlZihjaGlsZC5jbGFzcylcbiAgICAgID8gW2NoaWxkLmNsYXNzLCBwYXJlbnQuY2xhc3NdXG4g
ICAgICA6IHBhcmVudC5jbGFzc1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNsYXNzIChcbiAg
c3RhdGljQ2xhc3MsXG4gIGR5bmFtaWNDbGFzc1xuKSB7XG4gIGlmIChpc0RlZihzdGF0aWNDbGFz
cykgfHwgaXNEZWYoZHluYW1pY0NsYXNzKSkge1xuICAgIHJldHVybiBjb25jYXQoc3RhdGljQ2xh
c3MsIHN0cmluZ2lmeUNsYXNzKGR5bmFtaWNDbGFzcykpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdu
b3JlIG5leHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYSwgYikge1xu
ICByZXR1cm4gYSA/IGIgPyAoYSArICcgJyArIGIpIDogYSA6IChiIHx8ICcnKVxufVxuXG5mdW5j
dGlvbiBzdHJpbmdpZnlDbGFzcyAodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUp
KSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeUFycmF5KHZhbHVlKVxuICB9XG4gIGlmIChpc09iamVj
dCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3RyaW5naWZ5T2JqZWN0KHZhbHVlKVxuICB9XG4gIGlm
ICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAg
LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHN0
cmluZ2lmeUFycmF5ICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBzdHJpbmdpZmll
ZDtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAg
ICBpZiAoaXNEZWYoc3RyaW5naWZpZWQgPSBzdHJpbmdpZnlDbGFzcyh2YWx1ZVtpXSkpICYmIHN0
cmluZ2lmaWVkICE9PSAnJykge1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAg
ICByZXMgKz0gc3RyaW5naWZpZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVu
Y3Rpb24gc3RyaW5naWZ5T2JqZWN0ICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAo
dmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZVtrZXldKSB7XG4gICAgICBpZiAocmVz
KSB7IHJlcyArPSAnICc7IH1cbiAgICAgIHJlcyArPSBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVy
biByZXNcbn1cblxuLyogICovXG5cbnZhciBuYW1lc3BhY2VNYXAgPSB7XG4gIHN2ZzogJ2h0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgbWF0aDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgv
TWF0aC9NYXRoTUwnXG59O1xuXG52YXIgaXNIVE1MVGFnID0gbWFrZU1hcChcbiAgJ2h0bWwsYm9k
eSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLCcgK1xuICAnYWRkcmVzcyxhcnRpY2xl
LGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9u
LCcgK1xuICAnZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxp
LG1haW4sb2wscCxwcmUsdWwsJyArXG4gICdhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxk
YXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnksJyArXG4gICdzLHNhbXAsc21h
bGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFj
ayx2aWRlbywnICtcbiAgJ2VtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxu
b3NjcmlwdCxkZWwsaW5zLCcgK1xuICAnY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQs
dGJvZHksdGQsdGgsdHIsJyArXG4gICdidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1
dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLCcgK1xuICAnb3V0cHV0LHByb2dy
ZXNzLHNlbGVjdCx0ZXh0YXJlYSwnICtcbiAgJ2RldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0s
c3VtbWFyeSwnICtcbiAgJ2NvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90
ZSxpZnJhbWUsdGZvb3QnXG4pO1xuXG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNlbGVj
dGl2ZSwgb25seSBjb3ZlcmluZyBTVkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4gY2hp
bGQgZWxlbWVudHMuXG52YXIgaXNTVkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2lyY2xl
LGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLCcgK1xu
ICAnZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1n
bHlwaCxwYXRoLHBhdHRlcm4sJyArXG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5
bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxudmFyIGlz
UHJlVGFnID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gdGFnID09PSAncHJlJzsgfTtcblxudmFy
IGlzUmVzZXJ2ZWRUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBpc0hUTUxUYWcodGFn
KSB8fCBpc1NWRyh0YWcpXG59O1xuXG5mdW5jdGlvbiBnZXRUYWdOYW1lc3BhY2UgKHRhZykge1xu
ICBpZiAoaXNTVkcodGFnKSkge1xuICAgIHJldHVybiAnc3ZnJ1xuICB9XG4gIC8vIGJhc2ljIHN1
cHBvcnQgZm9yIE1hdGhNTFxuICAvLyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBNYXRo
TUwgZWxlbWVudHMgYmVpbmcgY29tcG9uZW50IHJvb3RzXG4gIGlmICh0YWcgPT09ICdtYXRoJykg
e1xuICAgIHJldHVybiAnbWF0aCdcbiAgfVxufVxuXG52YXIgdW5rbm93bkVsZW1lbnRDYWNoZSA9
IE9iamVjdC5jcmVhdGUobnVsbCk7XG5mdW5jdGlvbiBpc1Vua25vd25FbGVtZW50ICh0YWcpIHtc
biAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghaW5Ccm93c2VyKSB7XG4gICAgcmV0
dXJuIHRydWVcbiAgfVxuICBpZiAoaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgcmV0dXJuIGZh
bHNlXG4gIH1cbiAgdGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7XG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICBpZiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddICE9IG51bGwpIHtcbiAgICBy
ZXR1cm4gdW5rbm93bkVsZW1lbnRDYWNoZVt0YWddXG4gIH1cbiAgdmFyIGVsID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCh0YWcpO1xuICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAg
Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjgyMTAzNjQvMTA3MDI0NFxuICAgIHJldHVy
biAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddID0gKFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09
IHdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnQgfHxcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3
aW5kb3cuSFRNTEVsZW1lbnRcbiAgICApKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAodW5rbm93
bkVsZW1lbnRDYWNoZVt0YWddID0gL0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlbC50b1N0cmlu
ZygpKSlcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNlbGVj
dG9yIGlmIGl0J3Mgbm90IGFuIGVsZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnkg
KGVsKSB7XG4gIGlmICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVjdGVk
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbCk7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAg
ICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnQ2Fu
bm90IGZpbmQgZWxlbWVudDogJyArIGVsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFxuICB9IGVs
c2Uge1xuICAgIHJldHVybiBlbFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVF
bGVtZW50JDEgKHRhZ05hbWUsIHZub2RlKSB7XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KHRhZ05hbWUpO1xuICBpZiAodGFnTmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICByZXR1
cm4gZWxtXG4gIH1cbiAgLy8gZmFsc2Ugb3IgbnVsbCB3aWxsIHJlbW92ZSB0aGUgYXR0cmlidXRl
IGJ1dCB1bmRlZmluZWQgd2lsbCBub3RcbiAgaWYgKHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS5h
dHRycyAmJiB2bm9kZS5kYXRhLmF0dHJzLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBl
bG0uc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4gIHJldHVybiBl
bG1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRhZ05hbWUpIHtc
biAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBbbmFtZXNwYWNl
XSwgdGFnTmFtZSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcbiAgcmV0
dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNv
bW1lbnQgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dClcbn1c
blxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VO
b2RlKSB7XG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUp
O1xufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5yZW1v
dmVDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2RlLCBjaGlsZCkg
e1xuICBub2RlLmFwcGVuZENoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFyZW50Tm9kZSAo
bm9kZSkge1xuICByZXR1cm4gbm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIG5leHRTaWJs
aW5nIChub2RlKSB7XG4gIHJldHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1bmN0aW9uIHRh
Z05hbWUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5jdGlvbiBzZXRU
ZXh0Q29udGVudCAobm9kZSwgdGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcbn1c
blxuZnVuY3Rpb24gc2V0QXR0cmlidXRlIChub2RlLCBrZXksIHZhbCkge1xuICBub2RlLnNldEF0
dHJpYnV0ZShrZXksIHZhbCk7XG59XG5cblxudmFyIG5vZGVPcHMgPSBPYmplY3QuZnJlZXplKHtc
blx0Y3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCQxLFxuXHRjcmVhdGVFbGVtZW50TlM6IGNy
ZWF0ZUVsZW1lbnROUyxcblx0Y3JlYXRlVGV4dE5vZGU6IGNyZWF0ZVRleHROb2RlLFxuXHRjcmVh
dGVDb21tZW50OiBjcmVhdGVDb21tZW50LFxuXHRpbnNlcnRCZWZvcmU6IGluc2VydEJlZm9yZSxc
blx0cmVtb3ZlQ2hpbGQ6IHJlbW92ZUNoaWxkLFxuXHRhcHBlbmRDaGlsZDogYXBwZW5kQ2hpbGQs
XG5cdHBhcmVudE5vZGU6IHBhcmVudE5vZGUsXG5cdG5leHRTaWJsaW5nOiBuZXh0U2libGluZyxc
blx0dGFnTmFtZTogdGFnTmFtZSxcblx0c2V0VGV4dENvbnRlbnQ6IHNldFRleHRDb250ZW50LFxu
XHRzZXRBdHRyaWJ1dGU6IHNldEF0dHJpYnV0ZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmID0g
e1xuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3RlclJl
Zih2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5v
ZGUpIHtcbiAgICBpZiAob2xkVm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7XG4g
ICAgICByZWdpc3RlclJlZihvbGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2bm9k
ZSk7XG4gICAgfVxuICB9LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xu
ICAgIHJlZ2lzdGVyUmVmKHZub2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVnaXN0
ZXJSZWYgKHZub2RlLCBpc1JlbW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xu
ICBpZiAoIWtleSkgeyByZXR1cm4gfVxuXG4gIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4gIHZh
ciByZWYgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5lbG07XG4gIHZhciByZWZz
ID0gdm0uJHJlZnM7XG4gIGlmIChpc1JlbW92YWwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShy
ZWZzW2tleV0pKSB7XG4gICAgICByZW1vdmUocmVmc1trZXldLCByZWYpO1xuICAgIH0gZWxzZSBp
ZiAocmVmc1trZXldID09PSByZWYpIHtcbiAgICAgIHJlZnNba2V5XSA9IHVuZGVmaW5lZDtcbiAg
ICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZub2RlLmRhdGEucmVmSW5Gb3IpIHtcbiAgICAgIGlm
ICghQXJyYXkuaXNBcnJheShyZWZzW2tleV0pKSB7XG4gICAgICAgIHJlZnNba2V5XSA9IFtyZWZd
O1xuICAgICAgfSBlbHNlIGlmIChyZWZzW2tleV0uaW5kZXhPZihyZWYpIDwgMCkge1xuICAgICAg
ICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICAgICAgcmVmc1trZXldLnB1c2gocmVmKTtcbiAg
ICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAgfVxu
fVxuXG4vKipcbiAqIFZpcnR1YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBTbmFi
YmRvbSBieVxuICogU2ltb24gRnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5zZWQg
dW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5kL3Nu
YWJiZG9tL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlvdSAo
QHl5eDk5MDgwMylcbiAqXG5cbi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1c2Ug
dGhpcyBmaWxlIGlzIHBlcmYtY3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcgZmxv
dyB1bmRlcnN0YW5kIGl0IGlzIG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2RlID0g
bmV3IFZOb2RlKCcnLCB7fSwgW10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3RpdmF0
ZScsICd1cGRhdGUnLCAncmVtb3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZub2Rl
IChhLCBiKSB7XG4gIHJldHVybiAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmIChcbiAgICAgIChc
biAgICAgICAgYS50YWcgPT09IGIudGFnICYmXG4gICAgICAgIGEuaXNDb21tZW50ID09PSBiLmlz
Q29tbWVudCAmJlxuICAgICAgICBpc0RlZihhLmRhdGEpID09PSBpc0RlZihiLmRhdGEpICYmXG4g
ICAgICAgIHNhbWVJbnB1dFR5cGUoYSwgYilcbiAgICAgICkgfHwgKFxuICAgICAgICBpc1RydWUo
YS5pc0FzeW5jUGxhY2Vob2xkZXIpICYmXG4gICAgICAgIGEuYXN5bmNGYWN0b3J5ID09PSBiLmFz
eW5jRmFjdG9yeSAmJlxuICAgICAgICBpc1VuZGVmKGIuYXN5bmNGYWN0b3J5LmVycm9yKVxuICAg
ICAgKVxuICAgIClcbiAgKVxufVxuXG4vLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5
bmFtaWNhbGx5IGNoYW5naW5nIHR5cGUgZm9yIDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBi
ZSB0cmVhdGVkIGFzIGRpZmZlcmVudCBub2Rlc1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwg
Yikge1xuICBpZiAoYS50YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtc
biAgdmFyIHR5cGVBID0gaXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYm
IGkudHlwZTtcbiAgdmFyIHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGku
YXR0cnMpICYmIGkudHlwZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlv
biBjcmVhdGVLZXlUb09sZElkeCAoY2hpbGRyZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFy
IGksIGtleTtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJ
ZHg7ICsraSkge1xuICAgIGtleSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5
KSkgeyBtYXBba2V5XSA9IGk7IH1cbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNy
ZWF0ZVBhdGNoRnVuY3Rpb24gKGJhY2tlbmQpIHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7
fTtcblxuICB2YXIgbW9kdWxlcyA9IGJhY2tlbmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBi
YWNrZW5kLm5vZGVPcHM7XG5cbiAgZm9yIChpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7
XG4gICAgY2JzW2hvb2tzW2ldXSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxl
bmd0aDsgKytqKSB7XG4gICAgICBpZiAoaXNEZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4g
ICAgICAgIGNic1tob29rc1tpXV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVy
biBuZXcgVk5vZGUobm9kZU9wcy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1
bmRlZmluZWQsIGVsbSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBs
aXN0ZW5lcnMpIHtcbiAgICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVt
b3ZlJCQxLmxpc3RlbmVycyA9PT0gMCkge1xuICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtc
biAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAg
ICByZXR1cm4gcmVtb3ZlJCQxXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xu
ICAgIHZhciBwYXJlbnQgPSBub2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQg
bWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAg
IGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAgICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwg
ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpblByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVs
bSAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkg
e1xuICAgIHZub2RlLmlzUm9vdEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVu
dGVyIGNoZWNrXG4gICAgaWYgKGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZh
ciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtc
biAgICB2YXIgdGFnID0gdm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBp
ZiAoZmFsc2UpIHtcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBp
blByZSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAg
ICAgICAgICAhdm5vZGUubnMgJiZcbiAgICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMu
bGVuZ3RoICYmIGNvbmZpZy5pZ25vcmVkRWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4g
ICAgICAgICAgY29uZmlnLmlzVW5rbm93bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAg
ICAgICB3YXJuKFxuICAgICAgICAgICAgJ1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFn
ICsgJz4gLSBkaWQgeW91ICcgK1xuICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQg
Y29ycmVjdGx5PyBGb3IgcmVjdXJzaXZlIGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21h
a2Ugc3VyZSB0byBwcm92aWRlIHRoZSBcIm5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZu
b2RlLmNvbnRleHRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9k
ZS5lbG0gPSB2bm9kZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2Rl
Lm5zLCB0YWcpXG4gICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xu
ICAgICAgc2V0U2NvcGUodm5vZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgICAgIHtcbiAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRl
ZFZub2RlUXVldWUpO1xuICAgICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZv
a2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAg
ICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAg
ICAgIGlmIChmYWxzZSkge1xuICAgICAgICBpblByZS0tO1xuICAgICAgfVxuICAgIH0gZWxzZSBp
ZiAoaXNUcnVlKHZub2RlLmlzQ29tbWVudCkpIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMu
Y3JlYXRlQ29tbWVudCh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2Rl
LmVsbSwgcmVmRWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5j
cmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2Rl
LmVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQg
KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFy
IGkgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgdmFyIGlzUmVhY3Rp
dmF0ZWQgPSBpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaS5rZWVwQWxpdmU7XG4g
ICAgICBpZiAoaXNEZWYoaSA9IGkuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHtcbiAgICAg
ICAgaSh2bm9kZSwgZmFsc2UgLyogaHlkcmF0aW5nICovLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4g
ICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9k
ZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBj
aGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25l
bnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGlu
IHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4g
ICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRD
b21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc1RydWUo
aXNSZWFjdGl2YXRlZCkpIHtcbiAgICAgICAgICByZWFjdGl2YXRlQ29tcG9uZW50KHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgICAgfVxuICAgICAg
ICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRDb21w
b25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUu
ZGF0YS5wZW5kaW5nSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBw
bHkoaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgICAg
dm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gbnVsbDtcbiAgICB9XG4gICAgdm5vZGUuZWxtID0g
dm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGVsO1xuICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkp
IHtcbiAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xu
ICAgICAgc2V0U2NvcGUodm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlbXB0eSBjb21w
b25lbnQgcm9vdC5cbiAgICAgIC8vIHNraXAgYWxsIGVsZW1lbnQtcmVsYXRlZCBtb2R1bGVzIGV4
Y2VwdCBmb3IgcmVmICgjMzQ1NSlcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICAgIC8v
IG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGluc2VydCBob29rXG4gICAgICBpbnNlcnRlZFZub2Rl
UXVldWUucHVzaCh2bm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhY3RpdmF0ZUNv
bXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtc
biAgICB2YXIgaTtcbiAgICAvLyBoYWNrIGZvciAjNDMzOTogYSByZWFjdGl2YXRlZCBjb21wb25l
bnQgd2l0aCBpbm5lciB0cmFuc2l0aW9uXG4gICAgLy8gZG9lcyBub3QgdHJpZ2dlciBiZWNhdXNl
IHRoZSBpbm5lciBub2RlJ3MgY3JlYXRlZCBob29rcyBhcmUgbm90IGNhbGxlZFxuICAgIC8vIGFn
YWluLiBJdCdzIG5vdCBpZGVhbCB0byBpbnZvbHZlIG1vZHVsZS1zcGVjaWZpYyBsb2dpYyBpbiBo
ZXJlIGJ1dFxuICAgIC8vIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJldHRlciB3YXkgdG8g
ZG8gaXQuXG4gICAgdmFyIGlubmVyTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChpbm5lck5vZGUu
Y29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGlubmVyTm9kZSA9IGlubmVyTm9kZS5jb21wb25l
bnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGlubmVyTm9kZS5kYXRhKSAm
JiBpc0RlZihpID0gaS50cmFuc2l0aW9uKSkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2Jz
LmFjdGl2YXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY2JzLmFjdGl2YXRlW2ldKGVtcHR5
Tm9kZSwgaW5uZXJOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUu
cHVzaChpbm5lck5vZGUpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB1
bmxpa2UgYSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCxcbiAgICAvLyBhIHJlYWN0aXZhdGVkIGtl
ZXAtYWxpdmUgY29tcG9uZW50IGRvZXNuJ3QgaW5zZXJ0IGl0c2VsZlxuICAgIGluc2VydChwYXJl
bnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc2VydCAocGFy
ZW50LCBlbG0sIHJlZiQkMSkge1xuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAgICBpZiAo
aXNEZWYocmVmJCQxKSkge1xuICAgICAgICBpZiAocmVmJCQxLnBhcmVudE5vZGUgPT09IHBhcmVu
dCkge1xuICAgICAgICAgIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxtLCByZWYkJDEp
O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlT3BzLmFwcGVuZENoaWxk
KHBhcmVudCwgZWxtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVD
aGlsZHJlbiAodm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAo
QXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNl
cnRlZFZub2RlUXVldWUsIHZub2RlLmVsbSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBl
bHNlIGlmIChpc1ByaW1pdGl2ZSh2bm9kZS50ZXh0KSkge1xuICAgICAgbm9kZU9wcy5hcHBlbmRD
aGlsZCh2bm9kZS5lbG0sIG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCkpO1xuICAg
IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xuICAgIHdoaWxlICh2
bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnRJ
bnN0YW5jZS5fdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiBpc0RlZih2bm9kZS50YWcpXG4gIH1c
blxuICBmdW5jdGlvbiBpbnZva2VDcmVhdGVIb29rcyAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1
ZSkge1xuICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kk
MSkge1xuICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgIH1cbiAg
ICBpID0gdm5vZGUuZGF0YS5ob29rOyAvLyBSZXVzZSB2YXJpYWJsZVxuICAgIGlmIChpc0RlZihp
KSkge1xuICAgICAgaWYgKGlzRGVmKGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShlbXB0eU5vZGUsIHZu
b2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRlZFZub2RlUXVldWUu
cHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmlidXRl
IGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBj
YXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3Jt
YWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2bm9k
ZSkge1xuICAgIHZhciBpO1xuICAgIHZhciBhbmNlc3RvciA9IHZub2RlO1xuICAgIHdoaWxlIChh
bmNlc3Rvcikge1xuICAgICAgaWYgKGlzRGVmKGkgPSBhbmNlc3Rvci5jb250ZXh0KSAmJiBpc0Rl
ZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRBdHRyaWJ1
dGUodm5vZGUuZWxtLCBpLCAnJyk7XG4gICAgICB9XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9y
LnBhcmVudDtcbiAgICB9XG4gICAgLy8gZm9yIHNsb3QgY29udGVudCB0aGV5IHNob3VsZCBhbHNv
IGdldCB0aGUgc2NvcGVJZCBmcm9tIHRoZSBob3N0IGluc3RhbmNlLlxuICAgIGlmIChpc0RlZihp
ID0gYWN0aXZlSW5zdGFuY2UpICYmXG4gICAgICBpICE9PSB2bm9kZS5jb250ZXh0ICYmXG4gICAg
ICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMu
c2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9u
IGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwg
aW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytz
dGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5v
ZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlu
dm9rZURlc3Ryb3lIb29rICh2bm9kZSkge1xuICAgIHZhciBpLCBqO1xuICAgIHZhciBkYXRhID0g
dm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0g
ZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5kZXN0cm95KSkgeyBpKHZub2RlKTsgfVxuICAgICAg
Zm9yIChpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7IGNicy5kZXN0cm95W2ld
KHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkcmVuKSkge1xu
ICAgICAgZm9yIChqID0gMDsgaiA8IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytqKSB7XG4gICAg
ICAgIGludm9rZURlc3Ryb3lIb29rKHZub2RlLmNoaWxkcmVuW2pdKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVWbm9kZXMgKHBhcmVudEVsbSwgdm5vZGVzLCBzdGFy
dElkeCwgZW5kSWR4KSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElk
eCkge1xuICAgICAgdmFyIGNoID0gdm5vZGVzW3N0YXJ0SWR4XTtcbiAgICAgIGlmIChpc0RlZihj
aCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKGNoLnRhZykpIHtcbiAgICAgICAgICByZW1vdmVBbmRJ
bnZva2VSZW1vdmVIb29rKGNoKTtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhjaCk7XG4g
ICAgICAgIH0gZWxzZSB7IC8vIFRleHQgbm9kZVxuICAgICAgICAgIHJlbW92ZU5vZGUoY2guZWxt
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFu
ZEludm9rZVJlbW92ZUhvb2sgKHZub2RlLCBybSkge1xuICAgIGlmIChpc0RlZihybSkgfHwgaXNE
ZWYodm5vZGUuZGF0YSkpIHtcbiAgICAgIHZhciBpO1xuICAgICAgdmFyIGxpc3RlbmVycyA9IGNi
cy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgIGlmIChpc0RlZihybSkpIHtcbiAgICAgICAgLy8g
d2UgaGF2ZSBhIHJlY3Vyc2l2ZWx5IHBhc3NlZCBkb3duIHJtIGNhbGxiYWNrXG4gICAgICAgIC8v
IGluY3JlYXNlIHRoZSBsaXN0ZW5lcnMgY291bnRcbiAgICAgICAgcm0ubGlzdGVuZXJzICs9IGxp
c3RlbmVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRpcmVjdGx5IHJlbW92aW5nXG4g
ICAgICAgIHJtID0gY3JlYXRlUm1DYih2bm9kZS5lbG0sIGxpc3RlbmVycyk7XG4gICAgICB9XG4g
ICAgICAvLyByZWN1cnNpdmVseSBpbnZva2UgaG9va3Mgb24gY2hpbGQgY29tcG9uZW50IHJvb3Qg
bm9kZVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaXNE
ZWYoaSA9IGkuX3Zub2RlKSAmJiBpc0RlZihpLmRhdGEpKSB7XG4gICAgICAgIHJlbW92ZUFuZElu
dm9rZVJlbW92ZUhvb2soaSwgcm0pO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNi
cy5yZW1vdmUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0p
O1xuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhvb2spICYmIGlzRGVm
KGkgPSBpLnJlbW92ZSkpIHtcbiAgICAgICAgaSh2bm9kZSwgcm0pO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlTm9kZSh2
bm9kZS5lbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuIChwYXJl
bnRFbG0sIG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4g
ICAgdmFyIG9sZFN0YXJ0SWR4ID0gMDtcbiAgICB2YXIgbmV3U3RhcnRJZHggPSAwO1xuICAgIHZh
ciBvbGRFbmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuICAgIHZhciBvbGRTdGFydFZub2RlID0g
b2xkQ2hbMF07XG4gICAgdmFyIG9sZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5kSWR4XTtcbiAgICB2
YXIgbmV3RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3U3RhcnRWbm9kZSA9
IG5ld0NoWzBdO1xuICAgIHZhciBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF07XG4gICAg
dmFyIG9sZEtleVRvSWR4LCBpZHhJbk9sZCwgZWxtVG9Nb3ZlLCByZWZFbG07XG5cbiAgICAvLyBy
ZW1vdmVPbmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91
cD5cbiAgICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVs
YXRpdmUgcG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2
YXIgY2FuTW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9s
ZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVm
KG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0
YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChp
c1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xk
RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0
YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRW
bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENo
Wysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFy
dElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5v
ZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNl
cnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4
XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVs
c2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUg
bW92ZWQgcmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2Vy
dEJlZm9yZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5n
KG9sZEVuZFZub2RlLmVsbSkpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRT
dGFydElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAg
ICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7IC8v
IFZub2RlIG1vdmVkIGxlZnRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3Rh
cnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3Bz
Lmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZEVuZFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5l
bG0pO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAg
bmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgaWYgKGlzVW5kZWYob2xkS2V5VG9JZHgpKSB7IG9sZEtleVRvSWR4ID0gY3JlYXRlS2V5
VG9PbGRJZHgob2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpOyB9XG4gICAgICAgIGlkeElu
T2xkID0gaXNEZWYobmV3U3RhcnRWbm9kZS5rZXkpID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9k
ZS5rZXldIDogbnVsbDtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBl
bGVtZW50XG4gICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgbmV3U3RhcnRW
bm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAg
IGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAg
ICAgICAgICAgICdJdCBzZWVtcyB0aGVyZSBhcmUgZHVwbGljYXRlIGtleXMgdGhhdCBpcyBjYXVz
aW5nIGFuIHVwZGF0ZSBlcnJvci4gJyArXG4gICAgICAgICAgICAgICdNYWtlIHN1cmUgZWFjaCB2
LWZvciBpdGVtIGhhcyBhIHVuaXF1ZSBrZXkuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9
XG4gICAgICAgICAgaWYgKHNhbWVWbm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4g
ICAgICAgICAgICBwYXRjaFZub2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRW
bm9kZVF1ZXVlKTtcbiAgICAgICAgICAgIG9sZENoW2lkeEluT2xkXSA9IHVuZGVmaW5lZDtcbiAg
ICAgICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBlbG1U
b01vdmUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgICBuZXdTdGFydFZub2Rl
ID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAg
IC8vIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgZWxlbWVudC4gdHJlYXQgYXMgbmV3IGVsZW1lbnRc
biAgICAgICAgICAgIGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUs
IHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9k
ZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVs
bSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElk
eCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5l
d1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlm
IChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVs
bSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0
aW9uIHBhdGNoVm5vZGUgKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1v
dmVPbmx5KSB7XG4gICAgaWYgKG9sZFZub2RlID09PSB2bm9kZSkge1xuICAgICAgcmV0dXJuXG4g
ICAgfVxuXG4gICAgdmFyIGVsbSA9IHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtcblxuICAgIGlm
IChpc1RydWUob2xkVm5vZGUuaXNBc3luY1BsYWNlaG9sZGVyKSkge1xuICAgICAgaWYgKGlzRGVm
KHZub2RlLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgaHlkcmF0ZShvbGRWbm9k
ZS5lbG0sIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgdm5vZGUuaXNBc3luY1BsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVy
blxuICAgIH1cblxuICAgIC8vIHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAgICAv
LyBub3RlIHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAvLyBp
ZiB0aGUgbmV3IG5vZGUgaXMgbm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9u
cyBoYXZlIGJlZW5cbiAgICAvLyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdlIG5l
ZWQgdG8gZG8gYSBwcm9wZXIgcmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNTdGF0
aWMpICYmXG4gICAgICBpc1RydWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9kZS5r
ZXkgPT09IG9sZFZub2RlLmtleSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkgfHwg
aXNUcnVlKHZub2RlLmlzT25jZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0
YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxu
XG4gICAgdmFyIGk7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihk
YXRhKSAmJiBpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wcmVwYXRjaCkpIHtc
biAgICAgIGkob2xkVm5vZGUsIHZub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgb2xkQ2ggPSBvbGRW
bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgY2ggPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNE
ZWYoZGF0YSkgJiYgaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwg
Y2JzLnVwZGF0ZS5sZW5ndGg7ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2bm9kZSk7
IH1cbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS51cGRhdGUp
KSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNVbmRlZih2bm9kZS50
ZXh0KSkge1xuICAgICAgaWYgKGlzRGVmKG9sZENoKSAmJiBpc0RlZihjaCkpIHtcbiAgICAgICAg
aWYgKG9sZENoICE9PSBjaCkgeyB1cGRhdGVDaGlsZHJlbihlbG0sIG9sZENoLCBjaCwgaW5zZXJ0
ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTsgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihjaCkp
IHtcbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0VGV4dENv
bnRlbnQoZWxtLCAnJyk7IH1cbiAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gsIDAsIGNo
Lmxlbmd0aCAtIDEsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVm
KG9sZENoKSkge1xuICAgICAgICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xkQ2gubGVu
Z3RoIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7XG4gICAg
ICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNl
IGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3BzLnNldFRl
eHRDb250ZW50KGVsbSwgdm5vZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChpc0RlZihkYXRhKSkg
e1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnBvc3RwYXRj
aCkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52
b2tlSW5zZXJ0SG9vayAodm5vZGUsIHF1ZXVlLCBpbml0aWFsKSB7XG4gICAgLy8gZGVsYXkgaW5z
ZXJ0IGhvb2tzIGZvciBjb21wb25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhl
XG4gICAgLy8gZWxlbWVudCBpcyByZWFsbHkgaW5zZXJ0ZWRcbiAgICBpZiAoaXNUcnVlKGluaXRp
YWwpICYmIGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBl
bmRpbmdJbnNlcnQgPSBxdWV1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5z
ZXJ0KHF1ZXVlW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYmFpbGVkID0gZmFs
c2U7XG4gIC8vIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGNhbiBza2lwIGNyZWF0ZSBob29rIGR1cmlu
ZyBoeWRyYXRpb24gYmVjYXVzZSB0aGV5XG4gIC8vIGFyZSBhbHJlYWR5IHJlbmRlcmVkIG9uIHRo
ZSBjbGllbnQgb3IgaGFzIG5vIG5lZWQgZm9yIGluaXRpYWxpemF0aW9uXG4gIHZhciBpc1JlbmRl
cmVkTW9kdWxlID0gbWFrZU1hcCgnYXR0cnMsc3R5bGUsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGlj
U3R5bGUsa2V5Jyk7XG5cbiAgLy8gTm90ZTogdGhpcyBpcyBhIGJyb3dzZXItb25seSBmdW5jdGlv
biBzbyB3ZSBjYW4gYXNzdW1lIGVsbXMgYXJlIERPTSBub2Rlcy5cbiAgZnVuY3Rpb24gaHlkcmF0
ZSAoZWxtLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKGlzVHJ1ZSh2bm9k
ZS5pc0NvbW1lbnQpICYmIGlzRGVmKHZub2RlLmFzeW5jRmFjdG9yeSkpIHtcbiAgICAgIHZub2Rl
LmVsbSA9IGVsbTtcbiAgICAgIHZub2RlLmlzQXN5bmNQbGFjZWhvbGRlciA9IHRydWU7XG4gICAg
ICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICghYXNzZXJ0
Tm9kZU1hdGNoKGVsbSwgdm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxu
ICAgIH1cbiAgICB2bm9kZS5lbG0gPSBlbG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAg
ICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRy
ZW47XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9v
aykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8p
OyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAg
ICAgICAvLyBjaGlsZCBjb21wb25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24g
dHJlZS5cbiAgICAgICAgaW5pdENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtc
biAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykp
IHtcbiAgICAgIGlmIChpc0RlZihjaGlsZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVu
dCwgYWxsb3cgY2xpZW50IHRvIHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAg
IGlmICghZWxtLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZu
b2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgICB2YXIgY2hpbGRyZW5NYXRjaCA9IHRydWU7XG4gICAgICAgICAgdmFyIGNoaWxkTm9k
ZSA9IGVsbS5maXJzdENoaWxkO1xuICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNo
aWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgIGlmICghY2hpbGROb2RlIHx8ICFo
eWRyYXRlKGNoaWxkTm9kZSwgY2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xu
ICAgICAgICAgICAgICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFr
XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNp
Ymxpbmc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIGNoaWxkTm9kZSBpcyBub3QgbnVs
bCwgaXQgbWVhbnMgdGhlIGFjdHVhbCBjaGlsZE5vZGVzIGxpc3QgaXNcbiAgICAgICAgICAvLyBs
b25nZXIgdGhhbiB0aGUgdmlydHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgIGlmICghY2hp
bGRyZW5NYXRjaCB8fCBjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZVxuICAgICAg
ICAgICAgKSB7XG4gICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNv
bnNvbGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4o
J01pc21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9kZXMsIGNo
aWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAg
ICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9k
dWxlKGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRl
ZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAg
ICBlbG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxu
ICBmdW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVm
KHZub2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9m
KCd2dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNl
KCkgPT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAg
ICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUu
aXNDb21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNo
IChvbGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZF
bG0pIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9k
ZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9
XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVt
cHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRc
biAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHZhciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYg
KCFpc1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAg
IC8vIHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2Rl
LCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8g
YSByZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5k
ZXJlZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vz
c2Z1bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYm
IG9sZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2Rl
LnJlbW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVl
O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAg
ICAgICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkg
e1xuICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVl
dWUsIHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgICAn
VGhlIGNsaWVudC1zaWRlIHJlbmRlcmVkIHZpcnR1YWwgRE9NIHRyZWUgaXMgbm90IG1hdGNoaW5n
ICcgK1xuICAgICAgICAgICAgICAgICdzZXJ2ZXItcmVuZGVyZWQgY29udGVudC4gVGhpcyBpcyBs
aWtlbHkgY2F1c2VkIGJ5IGluY29ycmVjdCAnICtcbiAgICAgICAgICAgICAgICAnSFRNTCBtYXJr
dXAsIGZvciBleGFtcGxlIG5lc3RpbmcgYmxvY2stbGV2ZWwgZWxlbWVudHMgaW5zaWRlICcgK1xu
ICAgICAgICAgICAgICAgICc8cD4sIG9yIG1pc3NpbmcgPHRib2R5Pi4gQmFpbGluZyBoeWRyYXRp
b24gYW5kIHBlcmZvcm1pbmcgJyArXG4gICAgICAgICAgICAgICAgJ2Z1bGwgY2xpZW50LXNpZGUg
cmVuZGVyLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4g
ICAgICAgICAgLy8gZWl0aGVyIG5vdCBzZXJ2ZXItcmVuZGVyZWQsIG9yIGh5ZHJhdGlvbiBmYWls
ZWQuXG4gICAgICAgICAgLy8gY3JlYXRlIGFuIGVtcHR5IG5vZGUgYW5kIHJlcGxhY2UgaXRcbiAg
ICAgICAgICBvbGRWbm9kZSA9IGVtcHR5Tm9kZUF0KG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAg
ICAgICAvLyByZXBsYWNpbmcgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xkRWxtID0g
b2xkVm5vZGUuZWxtO1xuICAgICAgICB2YXIgcGFyZW50RWxtJDEgPSBub2RlT3BzLnBhcmVudE5v
ZGUob2xkRWxtKTtcbiAgICAgICAgY3JlYXRlRWxtKFxuICAgICAgICAgIHZub2RlLFxuICAgICAg
ICAgIGluc2VydGVkVm5vZGVRdWV1ZSxcbiAgICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSBlZGdl
IGNhc2U6IGRvIG5vdCBpbnNlcnQgaWYgb2xkIGVsZW1lbnQgaXMgaW4gYVxuICAgICAgICAgIC8v
IGxlYXZpbmcgdHJhbnNpdGlvbi4gT25seSBoYXBwZW5zIHdoZW4gY29tYmluaW5nIHRyYW5zaXRp
b24gK1xuICAgICAgICAgIC8vIGtlZXAtYWxpdmUgKyBIT0NzLiAoIzQ1OTApXG4gICAgICAgICAg
b2xkRWxtLl9sZWF2ZUNiID8gbnVsbCA6IHBhcmVudEVsbSQxLFxuICAgICAgICAgIG5vZGVPcHMu
bmV4dFNpYmxpbmcob2xkRWxtKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0RlZih2bm9k
ZS5wYXJlbnQpKSB7XG4gICAgICAgICAgLy8gY29tcG9uZW50IHJvb3QgZWxlbWVudCByZXBsYWNl
ZC5cbiAgICAgICAgICAvLyB1cGRhdGUgcGFyZW50IHBsYWNlaG9sZGVyIG5vZGUgZWxlbWVudCwg
cmVjdXJzaXZlbHlcbiAgICAgICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5wYXJlbnQ7XG4gICAg
ICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9k
ZS5lbG07XG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAg
ICB9XG4gICAgICAgICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAg
IGNicy5jcmVhdGVbaV0oZW1wdHlOb2RlLCB2bm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxu
ICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihwYXJlbnRFbG0kMSkp
IHtcbiAgICAgICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtJDEsIFtvbGRWbm9kZV0sIDAsIDAp
O1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRhZykpIHtcbiAgICAgICAgICBp
bnZva2VEZXN0cm95SG9vayhvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5c
biAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGlzSW5pdGlh
bFBhdGNoKTtcbiAgICByZXR1cm4gdm5vZGUuZWxtXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBk
aXJlY3RpdmVzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIHVwZGF0ZTogdXBk
YXRlRGlyZWN0aXZlcyxcbiAgZGVzdHJveTogZnVuY3Rpb24gdW5iaW5kRGlyZWN0aXZlcyAodm5v
ZGUpIHtcbiAgICB1cGRhdGVEaXJlY3RpdmVzKHZub2RlLCBlbXB0eU5vZGUpO1xuICB9XG59O1xu
XG5mdW5jdGlvbiB1cGRhdGVEaXJlY3RpdmVzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKG9s
ZFZub2RlLmRhdGEuZGlyZWN0aXZlcyB8fCB2bm9kZS5kYXRhLmRpcmVjdGl2ZXMpIHtcbiAgICBf
dXBkYXRlKG9sZFZub2RlLCB2bm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3VwZGF0ZSAob2xk
Vm5vZGUsIHZub2RlKSB7XG4gIHZhciBpc0NyZWF0ZSA9IG9sZFZub2RlID09PSBlbXB0eU5vZGU7
XG4gIHZhciBpc0Rlc3Ryb3kgPSB2bm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgb2xkRGlycyA9
IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMShvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMsIG9sZFZub2Rl
LmNvbnRleHQpO1xuICB2YXIgbmV3RGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSh2bm9kZS5k
YXRhLmRpcmVjdGl2ZXMsIHZub2RlLmNvbnRleHQpO1xuXG4gIHZhciBkaXJzV2l0aEluc2VydCA9
IFtdO1xuICB2YXIgZGlyc1dpdGhQb3N0cGF0Y2ggPSBbXTtcblxuICB2YXIga2V5LCBvbGREaXIs
IGRpcjtcbiAgZm9yIChrZXkgaW4gbmV3RGlycykge1xuICAgIG9sZERpciA9IG9sZERpcnNba2V5
XTtcbiAgICBkaXIgPSBuZXdEaXJzW2tleV07XG4gICAgaWYgKCFvbGREaXIpIHtcbiAgICAgIC8v
IG5ldyBkaXJlY3RpdmUsIGJpbmRcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAnYmluZCcsIHZub2Rl
LCBvbGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmluc2VydGVkKSB7XG4g
ICAgICAgIGRpcnNXaXRoSW5zZXJ0LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xu
ICAgICAgLy8gZXhpc3RpbmcgZGlyZWN0aXZlLCB1cGRhdGVcbiAgICAgIGRpci5vbGRWYWx1ZSA9
IG9sZERpci52YWx1ZTtcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9s
ZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkg
e1xuICAgICAgICBkaXJzV2l0aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxu
ICB9XG5cbiAgaWYgKGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0
ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aEluc2Vy
dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0W2ldLCAn
aW5zZXJ0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlz
Q3JlYXRlKSB7XG4gICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2Rl
LmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBjYWxsSW5zZXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9zdHBhdGNo
Lmxlbmd0aCkge1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUu
ZGF0YS5ob29rID0ge30pLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICBj
YWxsSG9vayQxKGRpcnNXaXRoUG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcsIHZub2Rl
LCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3JlYXRlKSB7
XG4gICAgZm9yIChrZXkgaW4gb2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tleV0pIHtc
biAgICAgICAgLy8gbm8gbG9uZ2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxsSG9vayQx
KG9sZERpcnNba2V5XSwgJ3VuYmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtc
biAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNy
ZWF0ZShudWxsKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAgZGlycyxc
biAgdm1cbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKCFkaXJz
KSB7XG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9IDA7IGkg
PCBkaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAoIWRpci5t
b2RpZmllcnMpIHtcbiAgICAgIGRpci5tb2RpZmllcnMgPSBlbXB0eU1vZGlmaWVycztcbiAgICB9
XG4gICAgcmVzW2dldFJhd0Rpck5hbWUoZGlyKV0gPSBkaXI7XG4gICAgZGlyLmRlZiA9IHJlc29s
dmVBc3NldCh2bS4kb3B0aW9ucywgJ2RpcmVjdGl2ZXMnLCBkaXIubmFtZSwgdHJ1ZSk7XG4gIH1c
biAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtcbiAgcmV0
dXJuIGRpci5yYXdOYW1lIHx8ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0LmtleXMoZGly
Lm1vZGlmaWVycyB8fCB7fSkuam9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhvb2skMSAo
ZGlyLCBob29rLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4gPSBkaXIu
ZGVmICYmIGRpci5kZWZbaG9va107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBmbih2
bm9kZS5lbG0sIGRpciwgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0gY2F0Y2gg
KGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVjdGl2ZSBc
IiArIChkaXIubmFtZSkgKyBcIiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9XG4gIH1c
bn1cblxudmFyIGJhc2VNb2R1bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBv
cHRzID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGlzRGVmKG9wdHMpICYmIG9wdHMu
Q3Rvci5vcHRpb25zLmluaGVyaXRBdHRycyA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxu
ICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmF0dHJzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEu
YXR0cnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyLCBvbGQ7XG4gIHZhciBl
bG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRBdHRycyA9IG9sZFZub2RlLmRhdGEuYXR0cnMgfHwg
e307XG4gIHZhciBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIC8vIGNsb25lIG9i
c2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxu
ICBpZiAoaXNEZWYoYXR0cnMuX19vYl9fKSkge1xuICAgIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRy
cyA9IGV4dGVuZCh7fSwgYXR0cnMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gYXR0cnMpIHtcbiAg
ICBjdXIgPSBhdHRyc1trZXldO1xuICAgIG9sZCA9IG9sZEF0dHJzW2tleV07XG4gICAgaWYgKG9s
ZCAhPT0gY3VyKSB7XG4gICAgICBzZXRBdHRyKGVsbSwga2V5LCBjdXIpO1xuICAgIH1cbiAgfVxu
ICAvLyAjNDM5MTogaW4gSUU5LCBzZXR0aW5nIHR5cGUgY2FuIHJlc2V0IHZhbHVlIGZvciBpbnB1
dFt0eXBlPXJhZGlvXVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzSUU5ICYm
IGF0dHJzLnZhbHVlICE9PSBvbGRBdHRycy52YWx1ZSkge1xuICAgIHNldEF0dHIoZWxtLCAndmFs
dWUnLCBhdHRycy52YWx1ZSk7XG4gIH1cbiAgZm9yIChrZXkgaW4gb2xkQXR0cnMpIHtcbiAgICBp
ZiAoaXNVbmRlZihhdHRyc1trZXldKSkge1xuICAgICAgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAg
ICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtleSkpO1xu
ICAgICAgfSBlbHNlIGlmICghaXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgICAgIGVsbS5y
ZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24g
c2V0QXR0ciAoZWwsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGlzQm9vbGVhbkF0dHIoa2V5KSkge1xu
ICAgIC8vIHNldCBhdHRyaWJ1dGUgZm9yIGJsYW5rIHZhbHVlXG4gICAgLy8gZS5nLiA8b3B0aW9u
IGRpc2FibGVkPlNlbGVjdCBvbmU8L29wdGlvbj5cbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2
YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBrZXkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0Vu
dW1lcmF0ZWRBdHRyKGtleSkpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBpc0ZhbHN5QXR0
clZhbHVlKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJyA/ICdmYWxzZScgOiAndHJ1ZScpO1xu
ICB9IGVsc2UgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZh
bHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9w
KGtleSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGVOUyh4bGlua05TLCBr
ZXksIHZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUo
dmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG52YXIg
YXR0cnMgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQXR0cnMsXG4gIHVwZGF0ZTogdXBkYXRlQXR0cnNc
bn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVDbGFzcyAob2xkVm5vZGUsIHZub2RlKSB7
XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIg
b2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG4gIGlmIChcbiAgICBpc1VuZGVmKGRhdGEuc3RhdGlj
Q2xhc3MpICYmXG4gICAgaXNVbmRlZihkYXRhLmNsYXNzKSAmJiAoXG4gICAgICBpc1VuZGVmKG9s
ZERhdGEpIHx8IChcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAg
ICAgICBpc1VuZGVmKG9sZERhdGEuY2xhc3MpXG4gICAgICApXG4gICAgKVxuICApIHtcbiAgICBy
ZXR1cm5cbiAgfVxuXG4gIHZhciBjbHMgPSBnZW5DbGFzc0ZvclZub2RlKHZub2RlKTtcblxuICAv
LyBoYW5kbGUgdHJhbnNpdGlvbiBjbGFzc2VzXG4gIHZhciB0cmFuc2l0aW9uQ2xhc3MgPSBlbC5f
dHJhbnNpdGlvbkNsYXNzZXM7XG4gIGlmIChpc0RlZih0cmFuc2l0aW9uQ2xhc3MpKSB7XG4gICAg
Y2xzID0gY29uY2F0KGNscywgc3RyaW5naWZ5Q2xhc3ModHJhbnNpdGlvbkNsYXNzKSk7XG4gIH1c
blxuICAvLyBzZXQgdGhlIGNsYXNzXG4gIGlmIChjbHMgIT09IGVsLl9wcmV2Q2xhc3MpIHtcbiAg
ICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY2xzKTtcbiAgICBlbC5fcHJldkNsYXNzID0gY2xz
O1xuICB9XG59XG5cbnZhciBrbGFzcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVDbGFzcyxcbiAgdXBk
YXRlOiB1cGRhdGVDbGFzc1xufTtcblxuLyogICovXG5cbnZhciB2YWxpZERpdmlzaW9uQ2hhclJF
ID0gL1tcXHcpLitcXC1fJFxcXV0vO1xuXG5mdW5jdGlvbiBwYXJzZUZpbHRlcnMgKGV4cCkge1xu
ICB2YXIgaW5TaW5nbGUgPSBmYWxzZTtcbiAgdmFyIGluRG91YmxlID0gZmFsc2U7XG4gIHZhciBp
blRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XG4gIHZhciBpblJlZ2V4ID0gZmFsc2U7XG4gIHZhciBj
dXJseSA9IDA7XG4gIHZhciBzcXVhcmUgPSAwO1xuICB2YXIgcGFyZW4gPSAwO1xuICB2YXIgbGFz
dEZpbHRlckluZGV4ID0gMDtcbiAgdmFyIGMsIHByZXYsIGksIGV4cHJlc3Npb24sIGZpbHRlcnM7
XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4cC5sZW5ndGg7IGkrKykge1xuICAgIHByZXYgPSBjO1xu
ICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaW5TaW5nbGUpIHtcbiAgICAgIGlm
IChjID09PSAweDI3ICYmIHByZXYgIT09IDB4NUMpIHsgaW5TaW5nbGUgPSBmYWxzZTsgfVxuICAg
IH0gZWxzZSBpZiAoaW5Eb3VibGUpIHtcbiAgICAgIGlmIChjID09PSAweDIyICYmIHByZXYgIT09
IDB4NUMpIHsgaW5Eb3VibGUgPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5UZW1wbGF0ZVN0
cmluZykge1xuICAgICAgaWYgKGMgPT09IDB4NjAgJiYgcHJldiAhPT0gMHg1QykgeyBpblRlbXBs
YXRlU3RyaW5nID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluUmVnZXgpIHtcbiAgICAgIGlm
IChjID09PSAweDJmICYmIHByZXYgIT09IDB4NUMpIHsgaW5SZWdleCA9IGZhbHNlOyB9XG4gICAg
fSBlbHNlIGlmIChcbiAgICAgIGMgPT09IDB4N0MgJiYgLy8gcGlwZVxuICAgICAgZXhwLmNoYXJD
b2RlQXQoaSArIDEpICE9PSAweDdDICYmXG4gICAgICBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09
IDB4N0MgJiZcbiAgICAgICFjdXJseSAmJiAhc3F1YXJlICYmICFwYXJlblxuICAgICkge1xuICAg
ICAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBmaXJzdCBmaWx0
ZXIsIGVuZCBvZiBleHByZXNzaW9uXG4gICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xu
ICAgICAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHB1c2hGaWx0ZXIoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAg
c3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgMHgyMjogaW5Eb3VibGUgPSB0cnVlOyBicmVhayAg
ICAgICAgIC8vIFwiXG4gICAgICAgIGNhc2UgMHgyNzogaW5TaW5nbGUgPSB0cnVlOyBicmVhayAg
ICAgICAgIC8vICdcbiAgICAgICAgY2FzZSAweDYwOiBpblRlbXBsYXRlU3RyaW5nID0gdHJ1ZTsg
YnJlYWsgLy8gYFxuICAgICAgICBjYXNlIDB4Mjg6IHBhcmVuKys7IGJyZWFrICAgICAgICAgICAg
ICAgICAvLyAoXG4gICAgICAgIGNhc2UgMHgyOTogcGFyZW4tLTsgYnJlYWsgICAgICAgICAgICAg
ICAgIC8vIClcbiAgICAgICAgY2FzZSAweDVCOiBzcXVhcmUrKzsgYnJlYWsgICAgICAgICAgICAg
ICAgLy8gW1xuICAgICAgICBjYXNlIDB4NUQ6IHNxdWFyZS0tOyBicmVhayAgICAgICAgICAgICAg
ICAvLyBdXG4gICAgICAgIGNhc2UgMHg3QjogY3VybHkrKzsgYnJlYWsgICAgICAgICAgICAgICAg
IC8vIHtcbiAgICAgICAgY2FzZSAweDdEOiBjdXJseS0tOyBicmVhayAgICAgICAgICAgICAgICAg
Ly8gfVxuICAgICAgfVxuICAgICAgaWYgKGMgPT09IDB4MmYpIHsgLy8gL1xuICAgICAgICB2YXIg
aiA9IGkgLSAxO1xuICAgICAgICB2YXIgcCA9ICh2b2lkIDApO1xuICAgICAgICAvLyBmaW5kIGZp
cnN0IG5vbi13aGl0ZXNwYWNlIHByZXYgY2hhclxuICAgICAgICBmb3IgKDsgaiA+PSAwOyBqLS0p
IHtcbiAgICAgICAgICBwID0gZXhwLmNoYXJBdChqKTtcbiAgICAgICAgICBpZiAocCAhPT0gJyAn
KSB7IGJyZWFrIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXAgfHwgIXZhbGlkRGl2aXNpb25D
aGFyUkUudGVzdChwKSkge1xuICAgICAgICAgIGluUmVnZXggPSB0cnVlO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xu
ICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICB9IGVsc2UgaWYgKGxh
c3RGaWx0ZXJJbmRleCAhPT0gMCkge1xuICAgIHB1c2hGaWx0ZXIoKTtcbiAgfVxuXG4gIGZ1bmN0
aW9uIHB1c2hGaWx0ZXIgKCkge1xuICAgIChmaWx0ZXJzIHx8IChmaWx0ZXJzID0gW10pKS5wdXNo
KGV4cC5zbGljZShsYXN0RmlsdGVySW5kZXgsIGkpLnRyaW0oKSk7XG4gICAgbGFzdEZpbHRlcklu
ZGV4ID0gaSArIDE7XG4gIH1cblxuICBpZiAoZmlsdGVycykge1xuICAgIGZvciAoaSA9IDA7IGkg
PCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBleHByZXNzaW9uID0gd3JhcEZpbHRlcihl
eHByZXNzaW9uLCBmaWx0ZXJzW2ldKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhwcmVzc2lv
blxufVxuXG5mdW5jdGlvbiB3cmFwRmlsdGVyIChleHAsIGZpbHRlcikge1xuICB2YXIgaSA9IGZp
bHRlci5pbmRleE9mKCcoJyk7XG4gIGlmIChpIDwgMCkge1xuICAgIC8vIF9mOiByZXNvbHZlRmls
dGVyXG4gICAgcmV0dXJuIChcIl9mKFxcXCJcIiArIGZpbHRlciArIFwiXFxcIikoXCIgKyBleHAg
KyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICB2YXIgbmFtZSA9IGZpbHRlci5zbGljZSgwLCBpKTtc
biAgICB2YXIgYXJncyA9IGZpbHRlci5zbGljZShpICsgMSk7XG4gICAgcmV0dXJuIChcIl9mKFxc
XCJcIiArIG5hbWUgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIsXCIgKyBhcmdzKVxuICB9XG59XG5c
bi8qICAqL1xuXG5mdW5jdGlvbiBiYXNlV2FybiAobXNnKSB7XG4gIGNvbnNvbGUuZXJyb3IoKFwi
W1Z1ZSBjb21waWxlcl06IFwiICsgbXNnKSk7XG59XG5cbmZ1bmN0aW9uIHBsdWNrTW9kdWxlRnVu
Y3Rpb24gKFxuICBtb2R1bGVzLFxuICBrZXlcbikge1xuICByZXR1cm4gbW9kdWxlc1xuICAgID8g
bW9kdWxlcy5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG1ba2V5XTsgfSkuZmlsdGVyKGZ1bmN0
aW9uIChfKSB7IHJldHVybiBfOyB9KVxuICAgIDogW11cbn1cblxuZnVuY3Rpb24gYWRkUHJvcCAo
ZWwsIG5hbWUsIHZhbHVlKSB7XG4gIChlbC5wcm9wcyB8fCAoZWwucHJvcHMgPSBbXSkpLnB1c2go
eyBuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHIgKGVs
LCBuYW1lLCB2YWx1ZSkge1xuICAoZWwuYXR0cnMgfHwgKGVsLmF0dHJzID0gW10pKS5wdXNoKHsg
bmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBhZGREaXJlY3RpdmUg
KFxuICBlbCxcbiAgbmFtZSxcbiAgcmF3TmFtZSxcbiAgdmFsdWUsXG4gIGFyZyxcbiAgbW9kaWZp
ZXJzXG4pIHtcbiAgKGVsLmRpcmVjdGl2ZXMgfHwgKGVsLmRpcmVjdGl2ZXMgPSBbXSkpLnB1c2go
eyBuYW1lOiBuYW1lLCByYXdOYW1lOiByYXdOYW1lLCB2YWx1ZTogdmFsdWUsIGFyZzogYXJnLCBt
b2RpZmllcnM6IG1vZGlmaWVycyB9KTtcbn1cblxuZnVuY3Rpb24gYWRkSGFuZGxlciAoXG4gIGVs
LFxuICBuYW1lLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzLFxuICBpbXBvcnRhbnQsXG4gIHdhcm5c
bikge1xuICAvLyB3YXJuIHByZXZlbnQgYW5kIHBhc3NpdmUgbW9kaWZpZXJcbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmIChcbiAgICBmYWxzZVxuICApIHtcbiAgICB3YXJuKFxuICAg
ICAgJ3Bhc3NpdmUgYW5kIHByZXZlbnQgY2FuXFwndCBiZSB1c2VkIHRvZ2V0aGVyLiAnICtcbiAg
ICAgICdQYXNzaXZlIGhhbmRsZXIgY2FuXFwndCBwcmV2ZW50IGRlZmF1bHQgZXZlbnQuJ1xuICAg
ICk7XG4gIH1cbiAgLy8gY2hlY2sgY2FwdHVyZSBtb2RpZmllclxuICBpZiAobW9kaWZpZXJzICYm
IG1vZGlmaWVycy5jYXB0dXJlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5jYXB0dXJlO1xuICAg
IG5hbWUgPSAnIScgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBjYXB0dXJlZFxuICB9XG4g
IGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm9uY2UpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJz
Lm9uY2U7XG4gICAgbmFtZSA9ICd+JyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIG9uY2Vc
biAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKG1vZGlmaWVycyAmJiBtb2Rp
ZmllcnMucGFzc2l2ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMucGFzc2l2ZTtcbiAgICBuYW1l
ID0gJyYnICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgcGFzc2l2ZVxuICB9XG4gIHZhciBl
dmVudHM7XG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm5hdGl2ZSkge1xuICAgIGRlbGV0
ZSBtb2RpZmllcnMubmF0aXZlO1xuICAgIGV2ZW50cyA9IGVsLm5hdGl2ZUV2ZW50cyB8fCAoZWwu
bmF0aXZlRXZlbnRzID0ge30pO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50cyA9IGVsLmV2ZW50cyB8
fCAoZWwuZXZlbnRzID0ge30pO1xuICB9XG4gIHZhciBuZXdIYW5kbGVyID0geyB2YWx1ZTogdmFs
dWUsIG1vZGlmaWVyczogbW9kaWZpZXJzIH07XG4gIHZhciBoYW5kbGVycyA9IGV2ZW50c1tuYW1l
XTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRs
ZXJzKSkge1xuICAgIGltcG9ydGFudCA/IGhhbmRsZXJzLnVuc2hpZnQobmV3SGFuZGxlcikgOiBo
YW5kbGVycy5wdXNoKG5ld0hhbmRsZXIpO1xuICB9IGVsc2UgaWYgKGhhbmRsZXJzKSB7XG4gICAg
ZXZlbnRzW25hbWVdID0gaW1wb3J0YW50ID8gW25ld0hhbmRsZXIsIGhhbmRsZXJzXSA6IFtoYW5k
bGVycywgbmV3SGFuZGxlcl07XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzW25hbWVdID0gbmV3SGFu
ZGxlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1l
LFxuICBnZXRTdGF0aWNcbikge1xuICB2YXIgZHluYW1pY1ZhbHVlID1cbiAgICBnZXRBbmRSZW1v
dmVBdHRyKGVsLCAnOicgKyBuYW1lKSB8fFxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWJp
bmQ6JyArIG5hbWUpO1xuICBpZiAoZHluYW1pY1ZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4g
cGFyc2VGaWx0ZXJzKGR5bmFtaWNWYWx1ZSlcbiAgfSBlbHNlIGlmIChnZXRTdGF0aWMgIT09IGZh
bHNlKSB7XG4gICAgdmFyIHN0YXRpY1ZhbHVlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgbmFtZSk7
XG4gICAgaWYgKHN0YXRpY1ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmlu
Z2lmeShzdGF0aWNWYWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QW5kUmVtb3Zl
QXR0ciAoZWwsIG5hbWUpIHtcbiAgdmFyIHZhbDtcbiAgaWYgKCh2YWwgPSBlbC5hdHRyc01hcFtu
YW1lXSkgIT0gbnVsbCkge1xuICAgIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChsaXN0
W2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAg
IGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxuLyogICovXG5c
bi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gY29kZSBnZW5lcmF0aW9uIGZvciBjb21wb25lbnQgdi1t
b2RlbFxuICovXG5mdW5jdGlvbiBnZW5Db21wb25lbnRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxc
biAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIG51
bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG5cbiAgdmFyIGJhc2VW
YWx1ZUV4cHJlc3Npb24gPSAnJCR2JztcbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9IGJhc2VWYWx1
ZUV4cHJlc3Npb247XG4gIGlmICh0cmltKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID1cbiAgICAg
IFwiKHR5cGVvZiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIiA9PT0gJ3N0cmluZydcIiAr
XG4gICAgICAgIFwiPyBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIi50cmltKClcIiArXG4g
ICAgICAgIFwiOiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuICBpZiAo
bnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lv
biArIFwiKVwiO1xuICB9XG4gIHZhciBhc3NpZ25tZW50ID0gZ2VuQXNzaWdubWVudENvZGUodmFs
dWUsIHZhbHVlRXhwcmVzc2lvbik7XG5cbiAgZWwubW9kZWwgPSB7XG4gICAgdmFsdWU6IChcIihc
IiArIHZhbHVlICsgXCIpXCIpLFxuICAgIGV4cHJlc3Npb246IChcIlxcXCJcIiArIHZhbHVlICsg
XCJcXFwiXCIpLFxuICAgIGNhbGxiYWNrOiAoXCJmdW5jdGlvbiAoXCIgKyBiYXNlVmFsdWVFeHBy
ZXNzaW9uICsgXCIpIHtcIiArIGFzc2lnbm1lbnQgKyBcIn1cIilcbiAgfTtcbn1cblxuLyoqXG4g
KiBDcm9zcy1wbGF0Zm9ybSBjb2RlZ2VuIGhlbHBlciBmb3IgZ2VuZXJhdGluZyB2LW1vZGVsIHZh
bHVlIGFzc2lnbm1lbnQgY29kZS5cbiAqL1xuZnVuY3Rpb24gZ2VuQXNzaWdubWVudENvZGUgKFxu
ICB2YWx1ZSxcbiAgYXNzaWdubWVudFxuKSB7XG4gIHZhciBtb2RlbFJzID0gcGFyc2VNb2RlbCh2
YWx1ZSk7XG4gIGlmIChtb2RlbFJzLmlkeCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAodmFsdWUg
KyBcIj1cIiArIGFzc2lnbm1lbnQpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcIiRzZXQoXCIg
KyAobW9kZWxScy5leHApICsgXCIsIFwiICsgKG1vZGVsUnMuaWR4KSArIFwiLCBcIiArIGFzc2ln
bm1lbnQgKyBcIilcIilcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRpcmVjdGl2ZSBtb2RlbCB0
byBkbyB0aGUgYXJyYXkgdXBkYXRlIHRyYW5zZm9ybS4gYVtpZHhdID0gdmFsID0+ICQkYS5zcGxp
Y2UoJCRpZHgsIDEsIHZhbClcbiAqXG4gKiBmb3IgbG9vcCBwb3NzaWJsZSBjYXNlczpcbiAqXG4g
KiAtIHRlc3RcbiAqIC0gdGVzdFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFbaWR4XV1cbiAqIC0gdGVz
dFtcImFcIl1baWR4XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2lkeF1dXG4gKiAtIHRlc3Qu
eHh4LmFbXCJhc2FcIl1bdGVzdDFbaWR4XV1cbiAqXG4gKi9cblxudmFyIGxlbjtcbnZhciBzdHI7
XG52YXIgY2hyO1xudmFyIGluZGV4JDE7XG52YXIgZXhwcmVzc2lvblBvcztcbnZhciBleHByZXNz
aW9uRW5kUG9zO1xuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgc3RyID0gdmFsO1xu
ICBsZW4gPSBzdHIubGVuZ3RoO1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Np
b25FbmRQb3MgPSAwO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdElu
ZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhwOiB2YWwsXG4g
ICAgICBpZHg6IG51bGxcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hy
ID0gbmV4dCgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc1N0cmlu
Z1N0YXJ0KGNocikpIHtcbiAgICAgIHBhcnNlU3RyaW5nKGNocik7XG4gICAgfSBlbHNlIGlmIChj
aHIgPT09IDB4NUIpIHtcbiAgICAgIHBhcnNlQnJhY2tldChjaHIpO1xuICAgIH1cbiAgfVxuXG4g
IHJldHVybiB7XG4gICAgZXhwOiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAg
IGlkeDogdmFsLnN1YnN0cmluZyhleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylc
biAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsr
aW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVu
XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4gY2hyID09PSAw
eDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xu
ICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxl
ICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hy
KSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAg
IGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVE
KSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhw
cmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAg
d2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJp
bmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3
YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRl
cm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVy
aW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJ
T19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93
YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAg
dmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZh
ciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICB2YXIgZHlu
YW1pY1R5cGUgPSBlbC5hdHRyc01hcFsndi1iaW5kOnR5cGUnXSB8fCBlbC5hdHRyc01hcFsnOnR5
cGUnXTtcbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIGR5bmFtaWNUeXBlKSB7XG4gICAgICB3
YXJuJDEoXG4gICAgICAgIFwiPGlucHV0IDp0eXBlPVxcXCJcIiArIGR5bmFtaWNUeXBlICsgXCJc
XFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OlxcblwiICtcbiAgICAgICAgXCJ2
LW1vZGVsIGRvZXMgbm90IHN1cHBvcnQgZHluYW1pYyBpbnB1dCB0eXBlcy4gVXNlIHYtaWYgYnJh
bmNoZXMgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gaW5wdXRzIHdpdGggdHlw
ZT1cImZpbGVcIiBhcmUgcmVhZCBvbmx5IGFuZCBzZXR0aW5nIHRoZSBpbnB1dCdzXG4gICAgLy8g
dmFsdWUgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5
cGUgPT09ICdmaWxlJykge1xuICAgICAgd2FybiQxKFxuICAgICAgICBcIjxcIiArIChlbC50YWcp
ICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJmaWxlXFxcIj46
XFxuXCIgK1xuICAgICAgICBcIkZpbGUgaW5wdXRzIGFyZSByZWFkIG9ubHkuIFVzZSBhIHYtb246
Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYg
KGVsLmNvbXBvbmVudCkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZp
ZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGlt
ZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAg
ICBnZW5TZWxlY3QoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0g
J2lucHV0JyAmJiB0eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChl
bCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5
cGUgPT09ICdyYWRpbycpIHtcbiAgICBnZW5SYWRpb01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJz
KTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnKSB7
XG4gICAgZ2VuRGVmYXVsdE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlm
ICghY29uZmlnLmlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVs
LCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5l
ZWQgZXh0cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKGZhbHNlKSB7
XG4gICAgd2FybiQxKFxuICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwi
ICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRl
ZCBvbiB0aGlzIGVsZW1lbnQgdHlwZS4gXCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3
aXRoIGNvbnRlbnRlZGl0YWJsZSwgaXRcXCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dy
YXAgYSBsaWJyYXJ5IGRlZGljYXRlZCBmb3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBj
b21wb25lbnQuJ1xuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUg
bWV0YWRhdGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAo
XG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlm
aWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGlu
Z0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBn
ZXRCaW5kaW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZh
bHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2Un
O1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFs
dWUgKyBcIilcIiArXG4gICAgICBcIj9faShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRp
bmcgKyBcIik+LTFcIiArIChcbiAgICAgICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4g
ICAgICAgICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShc
IiArIHZhbHVlICsgXCIsXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4g
ICk7XG4gIGFkZEhhbmRsZXIoZWwsIENIRUNLQk9YX1JBRElPX1RPS0VOLFxuICAgIFwidmFyICQk
YT1cIiArIHZhbHVlICsgXCIsXCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xu
ICAgICAgICBcIiQkYz0kJGVsLmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKToo
XCIgKyBmYWxzZVZhbHVlQmluZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXko
JCRhKSl7JyArXG4gICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJp
bmRpbmcgKyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2ko
JCRhLCQkdik7JyArXG4gICAgICBcImlmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihcIiArIHZhbHVl
ICsgXCI9JCRhLmNvbmNhdCgkJHYpKX1cIiArXG4gICAgICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2
YWx1ZSArIFwiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1cIiAr
XG4gICAgXCJ9ZWxzZXtcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgJyQkYycpKSArIFwi
fVwiLFxuICAgIG51bGwsIHRydWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAo
XG4gICAgZWwsXG4gICAgdmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9
IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0
QmluZGluZ0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFsdWVCaW5kaW5nID0gbnVt
YmVyID8gKFwiX24oXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIilcIikgOiB2YWx1ZUJpbmRpbmc7XG4g
IGFkZFByb3AoZWwsICdjaGVja2VkJywgKFwiX3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVC
aW5kaW5nICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgQ0hFQ0tCT1hfUkFESU9fVE9LRU4s
IGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCB2YWx1ZUJpbmRpbmcpLCBudWxsLCB0cnVlKTtcbn1c
blxuZnVuY3Rpb24gZ2VuU2VsZWN0IChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmll
cnNcbikge1xuICB2YXIgbnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4g
IHZhciBzZWxlY3RlZFZhbCA9IFwiQXJyYXkucHJvdG90eXBlLmZpbHRlclwiICtcbiAgICBcIi5j
YWxsKCRldmVudC50YXJnZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0p
XCIgK1xuICAgIFwiLm1hcChmdW5jdGlvbihvKXt2YXIgdmFsID0gXFxcIl92YWx1ZVxcXCIgaW4g
byA/IG8uX3ZhbHVlIDogby52YWx1ZTtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAobnVtYmVyID8g
J19uKHZhbCknIDogJ3ZhbCcpICsgXCJ9KVwiO1xuXG4gIHZhciBhc3NpZ25tZW50ID0gJyRldmVu
dC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSc7XG4g
IHZhciBjb2RlID0gXCJ2YXIgJCRzZWxlY3RlZFZhbCA9IFwiICsgc2VsZWN0ZWRWYWwgKyBcIjtc
IjtcbiAgY29kZSA9IGNvZGUgKyBcIiBcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgYXNz
aWdubWVudCkpO1xuICBhZGRIYW5kbGVyKGVsLCAnY2hhbmdlJywgY29kZSwgbnVsbCwgdHJ1ZSk7
XG59XG5cbmZ1bmN0aW9uIGdlbkRlZmF1bHRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9k
aWZpZXJzXG4pIHtcbiAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuICB2YXIgcmVmID0g
bW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbGF6eSA9IHJlZi5sYXp5O1xuICB2YXIgbnVtYmVyID0g
cmVmLm51bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJpbTtcbiAgdmFyIG5lZWRDb21wb3NpdGlv
bkd1YXJkID0gIWxhenkgJiYgdHlwZSAhPT0gJ3JhbmdlJztcbiAgdmFyIGV2ZW50ID0gbGF6eVxu
ICAgID8gJ2NoYW5nZSdcbiAgICA6IHR5cGUgPT09ICdyYW5nZSdcbiAgICAgID8gUkFOR0VfVE9L
RU5cbiAgICAgIDogJ2lucHV0JztcblxuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gJyRldmVudC50
YXJnZXQudmFsdWUnO1xuICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiJGV2
ZW50LnRhcmdldC52YWx1ZS50cmltKClcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFs
dWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG5c
biAgdmFyIGNvZGUgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtc
biAgaWYgKG5lZWRDb21wb3NpdGlvbkd1YXJkKSB7XG4gICAgY29kZSA9IFwiaWYoJGV2ZW50LnRh
cmdldC5jb21wb3NpbmcpcmV0dXJuO1wiICsgY29kZTtcbiAgfVxuXG4gIGFkZFByb3AoZWwsICd2
YWx1ZScsIChcIihcIiArIHZhbHVlICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgZXZlbnQs
IGNvZGUsIG51bGwsIHRydWUpO1xuICBpZiAodHJpbSB8fCBudW1iZXIpIHtcbiAgICBhZGRIYW5k
bGVyKGVsLCAnYmx1cicsICckZm9yY2VVcGRhdGUoKScpO1xuICB9XG59XG5cbi8qICAqL1xuXG4v
LyBub3JtYWxpemUgdi1tb2RlbCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBiZSBkZXRlcm1p
bmVkIGF0IHJ1bnRpbWUuXG4vLyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUgZXZlbnQgYXMg
dGhlIGZpcnN0IGluIHRoZSBhcnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9pbnQgaXMgZW5z
dXJpbmcgdGhlIHYtbW9kZWwgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4vLyB1c2VyLWF0
dGFjaGVkIGhhbmRsZXJzLlxuZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikge1xuICB2YXIg
ZXZlbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25bUkFOR0Vf
VE9LRU5dKSkge1xuICAgIC8vIElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3VwcG9ydHMgYGNo
YW5nZWAgZXZlbnRcbiAgICBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gICAg
b25bZXZlbnRdID0gW10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtc
biAgICBkZWxldGUgb25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIGlmIChpc0RlZihvbltDSEVDS0JP
WF9SQURJT19UT0tFTl0pKSB7XG4gICAgLy8gQ2hyb21lIGZpcmVzIG1pY3JvdGFza3MgaW4gYmV0
d2VlbiBjbGljay9jaGFuZ2UsIGxlYWRzIHRvICM0NTIxXG4gICAgZXZlbnQgPSBpc0Nocm9tZSA/
ICdjbGljaycgOiAnY2hhbmdlJztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25bQ0hFQ0tC
T1hfUkFESU9fVE9LRU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltDSEVDS0JP
WF9SQURJT19UT0tFTl07XG4gIH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5jdGlvbiBhZGQk
MSAoXG4gIGV2ZW50LFxuICBoYW5kbGVyLFxuICBvbmNlJCQxLFxuICBjYXB0dXJlLFxuICBwYXNz
aXZlXG4pIHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB2YXIgb2xkSGFuZGxlciA9IGhhbmRsZXI7
XG4gICAgdmFyIF90YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdldCBlbGVt
ZW50IGluIGNsb3N1cmVcbiAgICBoYW5kbGVyID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIg
cmVzID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IG9sZEhhbmRsZXIoZXYpXG4g
ICAgICAgIDogb2xkSGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKHJl
cyAhPT0gbnVsbCkge1xuICAgICAgICByZW1vdmUkMihldmVudCwgaGFuZGxlciwgY2FwdHVyZSwg
X3RhcmdldCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICB0YXJnZXQkMS5hZGRFdmVudExpc3Rl
bmVyKFxuICAgIGV2ZW50LFxuICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNzaXZlXG4gICAg
ICA/IHsgY2FwdHVyZTogY2FwdHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAgICA6IGNhcHR1
cmVcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDIgKFxuICBldmVudCxcbiAgaGFuZGxlcixc
biAgY2FwdHVyZSxcbiAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQxKS5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxuZnVuY3Rpb24g
dXBkYXRlRE9NTGlzdGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xk
Vm5vZGUuZGF0YS5vbikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJldHVyblxu
ICB9XG4gIHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9IG9sZFZu
b2RlLmRhdGEub24gfHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3JtYWxpemVF
dmVudHMob24pO1xuICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVtb3ZlJDIs
IHZub2RlLmNvbnRleHQpO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURP
TUxpc3RlbmVycyxcbiAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiB1cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1Vu
ZGVmKG9sZFZub2RlLmRhdGEuZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5kb21Qcm9w
cykpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBlbG0gPSB2bm9k
ZS5lbG07XG4gIHZhciBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4g
IHZhciBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNsb25lIG9ic2Vy
dmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBp
ZiAoaXNEZWYocHJvcHMuX19vYl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0YS5kb21Qcm9w
cyA9IGV4dGVuZCh7fSwgcHJvcHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xkUHJvcHMpIHtc
biAgICBpZiAoaXNVbmRlZihwcm9wc1trZXldKSkge1xuICAgICAgZWxtW2tleV0gPSAnJztcbiAg
ICB9XG4gIH1cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9wc1trZXldO1xu
ICAgIC8vIGlnbm9yZSBjaGlsZHJlbiBpZiB0aGUgbm9kZSBoYXMgdGV4dENvbnRlbnQgb3IgaW5u
ZXJIVE1MLFxuICAgIC8vIGFzIHRoZXNlIHdpbGwgdGhyb3cgYXdheSBleGlzdGluZyBET00gbm9k
ZXMgYW5kIGNhdXNlIHJlbW92YWwgZXJyb3JzXG4gICAgLy8gb24gc3Vic2VxdWVudCBwYXRjaGVz
ICgjMzM2MClcbiAgICBpZiAoa2V5ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9PT0gJ2lubmVy
SFRNTCcpIHtcbiAgICAgIGlmICh2bm9kZS5jaGlsZHJlbikgeyB2bm9kZS5jaGlsZHJlbi5sZW5n
dGggPSAwOyB9XG4gICAgICBpZiAoY3VyID09PSBvbGRQcm9wc1trZXldKSB7IGNvbnRpbnVlIH1c
biAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAndmFsdWUnKSB7XG4gICAgICAvLyBzdG9yZSB2YWx1
ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2ls
bCBiZSBzdHJpbmdpZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8vIGF2b2lk
IHJlc2V0dGluZyBjdXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxuICAgICAg
dmFyIHN0ckN1ciA9IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAgICBpZiAo
c2hvdWxkVXBkYXRlVmFsdWUoZWxtLCB2bm9kZSwgc3RyQ3VyKSkge1xuICAgICAgICBlbG0udmFs
dWUgPSBzdHJDdXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsbVtrZXldID0gY3Vy
O1xuICAgIH1cbiAgfVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0cnMuanMg
YWNjZXB0VmFsdWVcblxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoXG4gIGVsbSxcbiAg
dm5vZGUsXG4gIGNoZWNrVmFsXG4pIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2luZyAmJiAoXG4g
ICAgdm5vZGUudGFnID09PSAnb3B0aW9uJyB8fFxuICAgIGlzRGlydHkoZWxtLCBjaGVja1ZhbCkg
fHxcbiAgICBpc0lucHV0Q2hhbmdlZChlbG0sIGNoZWNrVmFsKVxuICApKVxufVxuXG5mdW5jdGlv
biBpc0RpcnR5IChlbG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4gdGV4dGJv
eCAoLm51bWJlciBhbmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXNcbiAgLy8g
bm90IGVxdWFsIHRvIHRoZSB1cGRhdGVkIHZhbHVlXG4gIHZhciBub3RJbkZvY3VzID0gdHJ1ZTtc
biAgLy8gIzYxNTdcbiAgLy8gd29yayBhcm91bmQgSUUgYnVnIHdoZW4gYWNjZXNzaW5nIGRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQgaW4gYW4gaWZyYW1lXG4gIHRyeSB7IG5vdEluRm9jdXMgPSBkb2N1
bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbG07IH0gY2F0Y2ggKGUpIHt9XG4gIHJldHVybiBub3RJ
bkZvY3VzICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENo
YW5nZWQgKGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1v
ZGlmaWVycyA9IGVsbS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1l
XG4gIGlmIChpc0RlZihtb2RpZmllcnMpICYmIG1vZGlmaWVycy5udW1iZXIpIHtcbiAgICByZXR1
cm4gdG9OdW1iZXIodmFsdWUpICE9PSB0b051bWJlcihuZXdWYWwpXG4gIH1cbiAgaWYgKGlzRGVm
KG1vZGlmaWVycykgJiYgbW9kaWZpZXJzLnRyaW0pIHtcbiAgICByZXR1cm4gdmFsdWUudHJpbSgp
ICE9PSBuZXdWYWwudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxu
dmFyIGRvbVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVw
ZGF0ZURPTVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVk
KGZ1bmN0aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0
ZXIgPSAvOyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykv
O1xuICBjc3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0p
IHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlE
ZWxpbWl0ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9
IHRtcFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBt
ZXJnZSBzdGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVu
Y3Rpb24gbm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6
ZVN0eWxlQmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9j
ZXNzZWQgaW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdh
eXMgYSBmcmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVy
biBkYXRhLnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUp
XG4gICAgOiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcg
dmFsdWVzIGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRp
bmdTdHlsZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0
dXJuIHRvT2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHls
ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxl
KVxuICB9XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9u
ZW50IHN0eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21w
b25lbnQncyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAo
dm5vZGUsIGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xu
XG4gIGlmIChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdo
aWxlIChjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNo
aWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoY2hpbGROb2RlLmRh
dGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpKSB7
XG4gICAgICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5c
biAgaWYgKChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5vZGUuZGF0YSkpKSB7XG4g
ICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBwYXJlbnROb2RlID0gdm5v
ZGU7XG4gIHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlm
IChwYXJlbnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShwYXJl
bnROb2RlLmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1ZhclJFID0gL14tLS87XG52
YXIgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbnZhciBzZXRQcm9wID0gZnVuY3Rp
b24gKGVsLCBuYW1lLCB2YWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChj
c3NWYXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFs
KTtcbiAgfSBlbHNlIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICBlbC5zdHlsZS5z
ZXRQcm9wZXJ0eShuYW1lLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50
Jyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUp
O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVz
IGFycmF5IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTog
W1wiLXdlYmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBT
ZXQgdGhlbSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBp
dCBjYW4gcmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsg
aSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtp
XTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVd
ID0gdmFsO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHZlbmRvck5hbWVzID0gWydXZWJraXQnLCAn
TW96JywgJ21zJ107XG5cbnZhciBlbXB0eVN0eWxlO1xudmFyIG5vcm1hbGl6ZSA9IGNhY2hlZChm
dW5jdGlvbiAocHJvcCkge1xuICBlbXB0eVN0eWxlID0gZW1wdHlTdHlsZSB8fCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBp
ZiAocHJvcCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gZW1wdHlTdHlsZSkpIHtcbiAgICByZXR1
cm4gcHJvcFxuICB9XG4gIHZhciBjYXBOYW1lID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSArIHByb3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmVuZG9yTmFtZXMubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIgbmFtZSA9IHZlbmRvck5hbWVzW2ldICsgY2FwTmFtZTtcbiAg
ICBpZiAobmFtZSBpbiBlbXB0eVN0eWxlKSB7XG4gICAgICByZXR1cm4gbmFtZVxuICAgIH1cbiAg
fVxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFy
IGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAg
aWYgKGlzVW5kZWYoZGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxu
ICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxl
KVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9
IHZub2RlLmVsbTtcbiAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtc
biAgdmFyIG9sZFN0eWxlQmluZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERh
dGEuc3R5bGUgfHwge307XG5cbiAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5k
aW5nIGFscmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFc
biAgdmFyIG9sZFN0eWxlID0gb2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4g
IHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7
fTtcblxuICAvLyBzdG9yZSBub3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBm
b3IgbmV4dCBkaWZmXG4gIC8vIG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZl
LCBzaW5jZSB0aGUgdXNlciBsaWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9k
ZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVu
ZCh7fSwgc3R5bGUpXG4gICAgOiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2
bm9kZSwgdHJ1ZSk7XG5cbiAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5k
ZWYobmV3U3R5bGVbbmFtZV0pKSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAg
fVxuICB9XG4gIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25h
bWVdO1xuICAgIGlmIChjdXIgIT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0
dGluZyB0byBudWxsIGhhcyBubyBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAg
c2V0UHJvcChlbCwgbmFtZSwgY3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59
XG5cbnZhciBzdHlsZSA9IHtcbiAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRh
dGVTdHlsZVxufTtcblxuLyogICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJp
bGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcg
ZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkp
IHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlm
IChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAg
ICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFz
c0xpc3QuYWRkKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChj
bHMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0
cmlidXRlKCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcg
KyBjbHMgKyAnICcpIDwgMCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIg
KyBjbHMpLnRyaW0oKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdp
dGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVk
IG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVs
LCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xz
ID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAn
KSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7
IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAg
ZWwuY2xhc3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAgICBpZiAoIWVsLmNsYXNzTGlzdC5s
ZW5ndGgpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4gIH0g
ZWxzZSB7XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8
fCAnJykgKyBcIiBcIjtcbiAgICB2YXIgdGFyID0gJyAnICsgY2xzICsgJyAnO1xuICAgIHdoaWxl
IChjdXIuaW5kZXhPZih0YXIpID49IDApIHtcbiAgICAgIGN1ciA9IGN1ci5yZXBsYWNlKHRhciwg
JyAnKTtcbiAgICB9XG4gICAgY3VyID0gY3VyLnRyaW0oKTtcbiAgICBpZiAoY3VyKSB7XG4gICAg
ICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwu
cmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVu
Y3Rpb24gcmVzb2x2ZVRyYW5zaXRpb24gKGRlZiQkMSkge1xuICBpZiAoIWRlZiQkMSkge1xuICAg
IHJldHVyblxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0eXBlb2Yg
ZGVmJCQxID09PSAnb2JqZWN0Jykge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICBpZiAoZGVmJCQx
LmNzcyAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuZChyZXMsIGF1dG9Dc3NUcmFuc2l0aW9uKGRl
ZiQkMS5uYW1lIHx8ICd2JykpO1xuICAgIH1cbiAgICBleHRlbmQocmVzLCBkZWYkJDEpO1xuICAg
IHJldHVybiByZXNcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmJCQxID09PSAnc3RyaW5nJykge1xu
ICAgIHJldHVybiBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEpXG4gIH1cbn1cblxudmFyIGF1dG9D
c3NUcmFuc2l0aW9uID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiB7XG4gICAg
ZW50ZXJDbGFzczogKG5hbWUgKyBcIi1lbnRlclwiKSxcbiAgICBlbnRlclRvQ2xhc3M6IChuYW1l
ICsgXCItZW50ZXItdG9cIiksXG4gICAgZW50ZXJBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1lbnRl
ci1hY3RpdmVcIiksXG4gICAgbGVhdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZVwiKSxcbiAgICBs
ZWF2ZVRvQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtdG9cIiksXG4gICAgbGVhdmVBY3RpdmVDbGFz
czogKG5hbWUgKyBcIi1sZWF2ZS1hY3RpdmVcIilcbiAgfVxufSk7XG5cbnZhciBoYXNUcmFuc2l0
aW9uID0gaW5Ccm93c2VyICYmICFpc0lFOTtcbnZhciBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24n
O1xudmFyIEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xuXG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5
L2V2ZW50IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlvblByb3AgPSAndHJhbnNpdGlvbic7XG52YXIg
dHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRpb25lbmQnO1xudmFyIGFuaW1hdGlvblByb3Ag
PSAnYW5pbWF0aW9uJztcbnZhciBhbmltYXRpb25FbmRFdmVudCA9ICdhbmltYXRpb25lbmQnO1xu
aWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh3
aW5kb3cub250cmFuc2l0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJr
aXR0cmFuc2l0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgdHJhbnNpdGlvblByb3Ag
PSAnV2Via2l0VHJhbnNpdGlvbic7XG4gICAgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3dlYmtpdFRy
YW5zaXRpb25FbmQnO1xuICB9XG4gIGlmICh3aW5kb3cub25hbmltYXRpb25lbmQgPT09IHVuZGVm
aW5lZCAmJlxuICAgIHdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4g
ICkge1xuICAgIGFuaW1hdGlvblByb3AgPSAnV2Via2l0QW5pbWF0aW9uJztcbiAgICBhbmltYXRp
b25FbmRFdmVudCA9ICd3ZWJraXRBbmltYXRpb25FbmQnO1xuICB9XG59XG5cbi8vIGJpbmRpbmcg
dG8gd2luZG93IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGhvdCByZWxvYWQgd29yayBpbiBJRSBpbiBz
dHJpY3QgbW9kZVxudmFyIHJhZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lXG4gID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdylcbiAg
OiBzZXRUaW1lb3V0O1xuXG5mdW5jdGlvbiBuZXh0RnJhbWUgKGZuKSB7XG4gIHJhZihmdW5jdGlv
biAoKSB7XG4gICAgcmFmKGZuKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25D
bGFzcyAoZWwsIGNscykge1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzZXMgPSBlbC5fdHJhbnNpdGlv
bkNsYXNzZXMgfHwgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyA9IFtdKTtcbiAgaWYgKHRyYW5zaXRp
b25DbGFzc2VzLmluZGV4T2YoY2xzKSA8IDApIHtcbiAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5wdXNo
KGNscyk7XG4gICAgYWRkQ2xhc3MoZWwsIGNscyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzIChlbCwgY2xzKSB7XG4gIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMp
IHtcbiAgICByZW1vdmUoZWwuX3RyYW5zaXRpb25DbGFzc2VzLCBjbHMpO1xuICB9XG4gIHJlbW92
ZUNsYXNzKGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMgKFxuICBl
bCxcbiAgZXhwZWN0ZWRUeXBlLFxuICBjYlxuKSB7XG4gIHZhciByZWYgPSBnZXRUcmFuc2l0aW9u
SW5mbyhlbCwgZXhwZWN0ZWRUeXBlKTtcbiAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgdmFyIHRp
bWVvdXQgPSByZWYudGltZW91dDtcbiAgdmFyIHByb3BDb3VudCA9IHJlZi5wcm9wQ291bnQ7XG4g
IGlmICghdHlwZSkgeyByZXR1cm4gY2IoKSB9XG4gIHZhciBldmVudCA9IHR5cGUgPT09IFRSQU5T
SVRJT04gPyB0cmFuc2l0aW9uRW5kRXZlbnQgOiBhbmltYXRpb25FbmRFdmVudDtcbiAgdmFyIGVu
ZGVkID0gMDtcbiAgdmFyIGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBlbC5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50LCBvbkVuZCk7XG4gICAgY2IoKTtcbiAgfTtcbiAgdmFyIG9uRW5kID0gZnVu
Y3Rpb24gKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGVsKSB7XG4gICAgICBpZiAoKytlbmRl
ZCA+PSBwcm9wQ291bnQpIHtcbiAgICAgICAgZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xu
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZW5kZWQgPCBwcm9wQ291bnQpIHtc
biAgICAgIGVuZCgpO1xuICAgIH1cbiAgfSwgdGltZW91dCArIDEpO1xuICBlbC5hZGRFdmVudExp
c3RlbmVyKGV2ZW50LCBvbkVuZCk7XG59XG5cbnZhciB0cmFuc2Zvcm1SRSA9IC9cXGIodHJhbnNm
b3JtfGFsbCkoLHwkKS87XG5cbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25JbmZvIChlbCwgZXhwZWN0
ZWRUeXBlKSB7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4g
IHZhciB0cmFuc2l0aW9uRGVsYXlzID0gc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0RlbGF5J10u
c3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9uRHVyYXRpb25zID0gc3R5bGVzW3RyYW5zaXRp
b25Qcm9wICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9uVGltZW91
dCA9IGdldFRpbWVvdXQodHJhbnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9ucyk7XG4g
IHZhciBhbmltYXRpb25EZWxheXMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEZWxheSddLnNw
bGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uRHVyYXRpb25zID0gc3R5bGVzW2FuaW1hdGlvblBy
b3AgKyAnRHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIGFuaW1hdGlvblRpbWVvdXQgPSBn
ZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcblxuICB2YXIg
dHlwZTtcbiAgdmFyIHRpbWVvdXQgPSAwO1xuICB2YXIgcHJvcENvdW50ID0gMDtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChleHBlY3RlZFR5cGUgPT09IFRSQU5TSVRJT04pIHtc
biAgICBpZiAodHJhbnNpdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gVFJBTlNJVElP
TjtcbiAgICAgIHRpbWVvdXQgPSB0cmFuc2l0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9
IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIGlmIChleHBlY3Rl
ZFR5cGUgPT09IEFOSU1BVElPTikge1xuICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4gMCkge1xu
ICAgICAgdHlwZSA9IEFOSU1BVElPTjtcbiAgICAgIHRpbWVvdXQgPSBhbmltYXRpb25UaW1lb3V0
O1xuICAgICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9XG4g
IH0gZWxzZSB7XG4gICAgdGltZW91dCA9IE1hdGgubWF4KHRyYW5zaXRpb25UaW1lb3V0LCBhbmlt
YXRpb25UaW1lb3V0KTtcbiAgICB0eXBlID0gdGltZW91dCA+IDBcbiAgICAgID8gdHJhbnNpdGlv
blRpbWVvdXQgPiBhbmltYXRpb25UaW1lb3V0XG4gICAgICAgID8gVFJBTlNJVElPTlxuICAgICAg
ICA6IEFOSU1BVElPTlxuICAgICAgOiBudWxsO1xuICAgIHByb3BDb3VudCA9IHR5cGVcbiAgICAg
ID8gdHlwZSA9PT0gVFJBTlNJVElPTlxuICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlvbnMubGVu
Z3RoXG4gICAgICAgIDogYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgOiAwO1xuICB9
XG4gIHZhciBoYXNUcmFuc2Zvcm0gPVxuICAgIHR5cGUgPT09IFRSQU5TSVRJT04gJiZcbiAgICB0
cmFuc2Zvcm1SRS50ZXN0KHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdQcm9wZXJ0eSddKTtcbiAg
cmV0dXJuIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgcHJv
cENvdW50OiBwcm9wQ291bnQsXG4gICAgaGFzVHJhbnNmb3JtOiBoYXNUcmFuc2Zvcm1cbiAgfVxu
fVxuXG5mdW5jdGlvbiBnZXRUaW1lb3V0IChkZWxheXMsIGR1cmF0aW9ucykge1xuICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB3aGlsZSAoZGVsYXlzLmxlbmd0aCA8IGR1cmF0aW9ucy5s
ZW5ndGgpIHtcbiAgICBkZWxheXMgPSBkZWxheXMuY29uY2F0KGRlbGF5cyk7XG4gIH1cblxuICBy
ZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCwgZHVyYXRpb25zLm1hcChmdW5jdGlvbiAoZCwgaSkg
e1xuICAgIHJldHVybiB0b01zKGQpICsgdG9NcyhkZWxheXNbaV0pXG4gIH0pKVxufVxuXG5mdW5j
dGlvbiB0b01zIChzKSB7XG4gIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkpICogMTAwMFxu
fVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW50ZXIgKHZub2RlLCB0b2dnbGVEaXNwbGF5KSB7XG4g
IHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5vd1xuICBp
ZiAoaXNEZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgZWwuX2xlYXZlQ2IuY2FuY2VsbGVkID0gdHJ1
ZTtcbiAgICBlbC5fbGVhdmVDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNp
dGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAg
IHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihl
bC5fZW50ZXJDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4g
IHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBlbnRl
ckNsYXNzID0gZGF0YS5lbnRlckNsYXNzO1xuICB2YXIgZW50ZXJUb0NsYXNzID0gZGF0YS5lbnRl
clRvQ2xhc3M7XG4gIHZhciBlbnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNz
O1xuICB2YXIgYXBwZWFyQ2xhc3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBwZWFyVG9D
bGFzcyA9IGRhdGEuYXBwZWFyVG9DbGFzcztcbiAgdmFyIGFwcGVhckFjdGl2ZUNsYXNzID0gZGF0
YS5hcHBlYXJBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUVudGVyID0gZGF0YS5iZWZvcmVFbnRl
cjtcbiAgdmFyIGVudGVyID0gZGF0YS5lbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXIgPSBkYXRhLmFm
dGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZCA9IGRhdGEuZW50ZXJDYW5jZWxsZWQ7XG4g
IHZhciBiZWZvcmVBcHBlYXIgPSBkYXRhLmJlZm9yZUFwcGVhcjtcbiAgdmFyIGFwcGVhciA9IGRh
dGEuYXBwZWFyO1xuICB2YXIgYWZ0ZXJBcHBlYXIgPSBkYXRhLmFmdGVyQXBwZWFyO1xuICB2YXIg
YXBwZWFyQ2FuY2VsbGVkID0gZGF0YS5hcHBlYXJDYW5jZWxsZWQ7XG4gIHZhciBkdXJhdGlvbiA9
IGRhdGEuZHVyYXRpb247XG5cbiAgLy8gYWN0aXZlSW5zdGFuY2Ugd2lsbCBhbHdheXMgYmUgdGhl
IDx0cmFuc2l0aW9uPiBjb21wb25lbnQgbWFuYWdpbmcgdGhpc1xuICAvLyB0cmFuc2l0aW9uLiBP
bmUgZWRnZSBjYXNlIHRvIGNoZWNrIGlzIHdoZW4gdGhlIDx0cmFuc2l0aW9uPiBpcyBwbGFjZWRc
biAgLy8gYXMgdGhlIHJvb3Qgbm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhhdCBjYXNl
IHdlIG5lZWQgdG8gY2hlY2tcbiAgLy8gPHRyYW5zaXRpb24+J3MgcGFyZW50IGZvciBhcHBlYXIg
Y2hlY2suXG4gIHZhciBjb250ZXh0ID0gYWN0aXZlSW5zdGFuY2U7XG4gIHZhciB0cmFuc2l0aW9u
Tm9kZSA9IGFjdGl2ZUluc3RhbmNlLiR2bm9kZTtcbiAgd2hpbGUgKHRyYW5zaXRpb25Ob2RlICYm
IHRyYW5zaXRpb25Ob2RlLnBhcmVudCkge1xuICAgIHRyYW5zaXRpb25Ob2RlID0gdHJhbnNpdGlv
bk5vZGUucGFyZW50O1xuICAgIGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZS5jb250ZXh0O1xuICB9
XG5cbiAgdmFyIGlzQXBwZWFyID0gIWNvbnRleHQuX2lzTW91bnRlZCB8fCAhdm5vZGUuaXNSb290
SW5zZXJ0O1xuXG4gIGlmIChpc0FwcGVhciAmJiAhYXBwZWFyICYmIGFwcGVhciAhPT0gJycpIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdGFydENsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFy
Q2xhc3NcbiAgICA/IGFwcGVhckNsYXNzXG4gICAgOiBlbnRlckNsYXNzO1xuICB2YXIgYWN0aXZl
Q2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJBY3RpdmVDbGFzc1xuICAgID8gYXBwZWFyQWN0aXZl
Q2xhc3NcbiAgICA6IGVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciB0b0NsYXNzID0gaXNBcHBlYXIg
JiYgYXBwZWFyVG9DbGFzc1xuICAgID8gYXBwZWFyVG9DbGFzc1xuICAgIDogZW50ZXJUb0NsYXNz
O1xuXG4gIHZhciBiZWZvcmVFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGJlZm9yZUFwcGVh
ciB8fCBiZWZvcmVFbnRlcilcbiAgICA6IGJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXJIb29rID0g
aXNBcHBlYXJcbiAgICA/ICh0eXBlb2YgYXBwZWFyID09PSAnZnVuY3Rpb24nID8gYXBwZWFyIDog
ZW50ZXIpXG4gICAgOiBlbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBlYXJcbiAg
ICA/IChhZnRlckFwcGVhciB8fCBhZnRlckVudGVyKVxuICAgIDogYWZ0ZXJFbnRlcjtcbiAgdmFy
IGVudGVyQ2FuY2VsbGVkSG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYXBwZWFyQ2FuY2VsbGVkIHx8
IGVudGVyQ2FuY2VsbGVkKVxuICAgIDogZW50ZXJDYW5jZWxsZWQ7XG5cbiAgdmFyIGV4cGxpY2l0
RW50ZXJEdXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAg
PyBkdXJhdGlvbi5lbnRlclxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChmYWxzZSkg
e1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGljaXRFbnRlckR1cmF0aW9uLCAnZW50ZXInLCB2bm9k
ZSk7XG4gIH1cblxuICB2YXIgZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xu
ICB2YXIgdXNlcldhbnRzQ29udHJvbCA9IGdldEhvb2tBcmd1bWVudHNMZW5ndGgoZW50ZXJIb29r
KTtcblxuICB2YXIgY2IgPSBlbC5fZW50ZXJDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlm
IChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHRvQ2xhc3Mp
O1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgfVxu
ICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICAg
IHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICB9XG4gICAgICBl
bnRlckNhbmNlbGxlZEhvb2sgJiYgZW50ZXJDYW5jZWxsZWRIb29rKGVsKTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgYWZ0ZXJFbnRlckhvb2sgJiYgYWZ0ZXJFbnRlckhvb2soZWwpO1xuICAgIH1cbiAg
ICBlbC5fZW50ZXJDYiA9IG51bGw7XG4gIH0pO1xuXG4gIGlmICghdm5vZGUuZGF0YS5zaG93KSB7
XG4gICAgLy8gcmVtb3ZlIHBlbmRpbmcgbGVhdmUgZWxlbWVudCBvbiBlbnRlciBieSBpbmplY3Rp
bmcgYW4gaW5zZXJ0IGhvb2tcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwg
KHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2luc2VydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZh
ciBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xuICAgICAgdmFyIHBlbmRpbmdOb2RlID0gcGFyZW50
ICYmIHBhcmVudC5fcGVuZGluZyAmJiBwYXJlbnQuX3BlbmRpbmdbdm5vZGUua2V5XTtcbiAgICAg
IGlmIChwZW5kaW5nTm9kZSAmJlxuICAgICAgICBwZW5kaW5nTm9kZS50YWcgPT09IHZub2RlLnRh
ZyAmJlxuICAgICAgICBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2JcbiAgICAgICkge1xuICAgICAg
ICBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2IoKTtcbiAgICAgIH1cbiAgICAgIGVudGVySG9vayAm
JiBlbnRlckhvb2soZWwsIGNiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGVudGVyIHRy
YW5zaXRpb25cbiAgYmVmb3JlRW50ZXJIb29rICYmIGJlZm9yZUVudGVySG9vayhlbCk7XG4gIGlm
IChleHBlY3RzQ1NTKSB7XG4gICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtc
biAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICBuZXh0RnJhbWUo
ZnVuY3Rpb24gKCkge1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAg
ICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICBpZiAoIWNi
LmNhbmNlbGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICBpZiAoaXNWYWxpZER1
cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlvbikpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGNi
LCBleHBsaWNpdEVudGVyRHVyYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdo
ZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgY2IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fSk7XG4gIH1cblxuICBpZiAodm5vZGUuZGF0YS5zaG93KSB7XG4gICAgdG9nZ2xlRGlzcGxheSAm
JiB0b2dnbGVEaXNwbGF5KCk7XG4gICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xu
ICB9XG5cbiAgaWYgKCFleHBlY3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgY2Io
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWF2ZSAodm5vZGUsIHJtKSB7XG4gIHZhciBlbCA9IHZu
b2RlLmVsbTtcblxuICAvLyBjYWxsIGVudGVyIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwu
X2VudGVyQ2IpKSB7XG4gICAgZWwuX2VudGVyQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5f
ZW50ZXJDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5k
YXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVybiBybSgp
XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9sZWF2
ZUNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNz
cyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGxlYXZlQ2xhc3Mg
PSBkYXRhLmxlYXZlQ2xhc3M7XG4gIHZhciBsZWF2ZVRvQ2xhc3MgPSBkYXRhLmxlYXZlVG9DbGFz
cztcbiAgdmFyIGxlYXZlQWN0aXZlQ2xhc3MgPSBkYXRhLmxlYXZlQWN0aXZlQ2xhc3M7XG4gIHZh
ciBiZWZvcmVMZWF2ZSA9IGRhdGEuYmVmb3JlTGVhdmU7XG4gIHZhciBsZWF2ZSA9IGRhdGEubGVh
dmU7XG4gIHZhciBhZnRlckxlYXZlID0gZGF0YS5hZnRlckxlYXZlO1xuICB2YXIgbGVhdmVDYW5j
ZWxsZWQgPSBkYXRhLmxlYXZlQ2FuY2VsbGVkO1xuICB2YXIgZGVsYXlMZWF2ZSA9IGRhdGEuZGVs
YXlMZWF2ZTtcbiAgdmFyIGR1cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICB2YXIgZXhwZWN0
c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9
IGdldEhvb2tBcmd1bWVudHNMZW5ndGgobGVhdmUpO1xuXG4gIHZhciBleHBsaWNpdExlYXZlRHVy
YXRpb24gPSB0b051bWJlcihcbiAgICBpc09iamVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRp
b24ubGVhdmVcbiAgICAgIDogZHVyYXRpb25cbiAgKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICBj
aGVja0R1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbiwgJ2xlYXZlJywgdm5vZGUpO1xuICB9
XG5cbiAgdmFyIGNiID0gZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAo
ZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAgICBlbC5wYXJl
bnROb2RlLl9wZW5kaW5nW3Zub2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZXhwZWN0
c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xu
ICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICB9
XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAg
ICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAg
IGxlYXZlQ2FuY2VsbGVkICYmIGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgcm0oKTtcbiAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4gICAgfVxuICAg
IGVsLl9sZWF2ZUNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUpIHtcbiAgICBk
ZWxheUxlYXZlKHBlcmZvcm1MZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9ybUxlYXZlKCk7
XG4gIH1cblxuICBmdW5jdGlvbiBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRoZSBkZWxheWVk
IGxlYXZlIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAoY2IuY2FuY2Vs
bGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZpbmcgZWxlbWVu
dFxuICAgIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgICAoZWwucGFyZW50Tm9kZS5fcGVu
ZGluZyB8fCAoZWwucGFyZW50Tm9kZS5fcGVuZGluZyA9IHt9KSlbKHZub2RlLmtleSldID0gdm5v
ZGU7XG4gICAgfVxuICAgIGJlZm9yZUxlYXZlICYmIGJlZm9yZUxlYXZlKGVsKTtcbiAgICBpZiAo
ZXhwZWN0c0NTUykge1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtc
biAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgICBu
ZXh0RnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxl
YXZlVG9DbGFzcyk7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFz
cyk7XG4gICAgICAgIGlmICghY2IuY2FuY2VsbGVkICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4g
ICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24pKSB7XG4g
ICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdExlYXZlRHVyYXRpb24pO1xuICAgICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNi
KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZWF2ZSAm
JiBsZWF2ZShlbCwgY2IpO1xuICAgIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJv
bCkge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gb25seSB1c2VkIGluIGRldiBt
b2RlXG5mdW5jdGlvbiBjaGVja0R1cmF0aW9uICh2YWwsIG5hbWUsIHZub2RlKSB7XG4gIGlmICh0
eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9u
PiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBudW1iZXIg
LSBcIiArXG4gICAgICBcImdvdCBcIiArIChKU09OLnN0cmluZ2lmeSh2YWwpKSArIFwiLlwiLFxu
ICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH0gZWxzZSBpZiAoaXNOYU4odmFsKSkge1xu
ICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBk
dXJhdGlvbiBpcyBOYU4gLSBcIiArXG4gICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Npb24gbWln
aHQgYmUgaW5jb3JyZWN0LicsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfVxufVxu
XG5mdW5jdGlvbiBpc1ZhbGlkRHVyYXRpb24gKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9
PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbClcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSB0cmFu
c2l0aW9uIGhvb2sncyBhcmd1bWVudCBsZW5ndGguIFRoZSBob29rIG1heSBiZTpcbiAqIC0gYSBt
ZXJnZWQgaG9vayAoaW52b2tlcikgd2l0aCB0aGUgb3JpZ2luYWwgaW4gLmZuc1xuICogLSBhIHdy
YXBwZWQgY29tcG9uZW50IG1ldGhvZCAoY2hlY2sgLl9sZW5ndGgpXG4gKiAtIGEgcGxhaW4gZnVu
Y3Rpb24gKC5sZW5ndGgpXG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tBcmd1bWVudHNMZW5ndGggKGZu
KSB7XG4gIGlmIChpc1VuZGVmKGZuKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBp
bnZva2VyRm5zID0gZm4uZm5zO1xuICBpZiAoaXNEZWYoaW52b2tlckZucykpIHtcbiAgICAvLyBp
bnZva2VyXG4gICAgcmV0dXJuIGdldEhvb2tBcmd1bWVudHNMZW5ndGgoXG4gICAgICBBcnJheS5p
c0FycmF5KGludm9rZXJGbnMpXG4gICAgICAgID8gaW52b2tlckZuc1swXVxuICAgICAgICA6IGlu
dm9rZXJGbnNcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChmbi5fbGVuZ3RoIHx8IGZu
Lmxlbmd0aCkgPiAxXG4gIH1cbn1cblxuZnVuY3Rpb24gX2VudGVyIChfLCB2bm9kZSkge1xuICBp
ZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgZW50ZXIodm5vZGUpO1xuICB9XG59
XG5cbnZhciB0cmFuc2l0aW9uID0gaW5Ccm93c2VyID8ge1xuICBjcmVhdGU6IF9lbnRlcixcbiAg
YWN0aXZhdGU6IF9lbnRlcixcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUkJDEgKHZub2RlLCBy
bSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZub2RlLmRhdGEu
c2hvdyAhPT0gdHJ1ZSkge1xuICAgICAgbGVhdmUodm5vZGUsIHJtKTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgcm0oKTtcbiAgICB9XG4gIH1cbn0gOiB7fTtcblxudmFyIHBsYXRmb3JtTW9kdWxlcyA9
IFtcbiAgYXR0cnMsXG4gIGtsYXNzLFxuICBldmVudHMsXG4gIGRvbVByb3BzLFxuICBzdHlsZSxc
biAgdHJhbnNpdGlvblxuXTtcblxuLyogICovXG5cbi8vIHRoZSBkaXJlY3RpdmUgbW9kdWxlIHNo
b3VsZCBiZSBhcHBsaWVkIGxhc3QsIGFmdGVyIGFsbFxuLy8gYnVpbHQtaW4gbW9kdWxlcyBoYXZl
IGJlZW4gYXBwbGllZC5cbnZhciBtb2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNvbmNhdChiYXNl
TW9kdWxlcyk7XG5cbnZhciBwYXRjaCA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBub2RlT3BzOiBu
b2RlT3BzLCBtb2R1bGVzOiBtb2R1bGVzIH0pO1xuXG4vKipcbiAqIE5vdCB0eXBlIGNoZWNraW5n
IHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xuICogcHJvcGVy
dGllcyB0byBFbGVtZW50cy5cbiAqL1xuXG52YXIgaXNUZXh0SW5wdXRUeXBlID0gbWFrZU1hcCgn
dGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwnKTtcblxuLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG5pZiAoaXNJRTkpIHtcbiAgLy8gaHR0cDovL3d3dy5tYXR0czQxMS5j
b20vcG9zdC9pbnRlcm5ldC1leHBsb3Jlci05LW9uaW5wdXQvXG4gIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWwgPSBk
b2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGlmIChlbCAmJiBlbC52bW9kZWwpIHtcbiAgICAg
IHRyaWdnZXIoZWwsICdpbnB1dCcpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBtb2RlbCQxID0g
e1xuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xu
ICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICB2YXIgY2IgPSBmdW5jdGlv
biAoKSB7XG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtc
biAgICAgIH07XG4gICAgICBjYigpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
ICAgICBpZiAoaXNJRSB8fCBpc0VkZ2UpIHtcbiAgICAgICAgc2V0VGltZW91dChjYiwgMCk7XG4g
ICAgICB9XG4gICAgICBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRW
YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09ICd0ZXh0YXJlYScgfHwgaXNUZXh0
SW5wdXRUeXBlKGVsLnR5cGUpKSB7XG4gICAgICBlbC5fdk1vZGlmaWVycyA9IGJpbmRpbmcubW9k
aWZpZXJzO1xuICAgICAgaWYgKCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5KSB7XG4gICAgICAgIC8v
IFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdo
ZW5cbiAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0
aW9uIGNob2ljZVxuICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNv
bWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXG4gICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIg
aW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxuICAgICAgICBlbC5hZGRFdmVu
dExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgaWYgKCFpc0Fu
ZHJvaWQpIHtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0
Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdj
b21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXNJRTkpIHtcbiAgICAgICAgICBl
bC52bW9kZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21w
b25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5v
ZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0
ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0
aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3Np
YmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlv
bnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhh
dCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxu
ICAgICAgdmFyIHByZXZPcHRpb25zID0gZWwuX3ZPcHRpb25zO1xuICAgICAgdmFyIGN1ck9wdGlv
bnMgPSBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRWYWx1ZSk7XG4g
ICAgICBpZiAoY3VyT3B0aW9ucy5zb21lKGZ1bmN0aW9uIChvLCBpKSB7IHJldHVybiAhbG9vc2VF
cXVhbChvLCBwcmV2T3B0aW9uc1tpXSk7IH0pKSB7XG4gICAgICAgIHRyaWdnZXIoZWwsICdjaGFu
Z2UnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHNldFNlbGVjdGVkIChl
bCwgYmluZGluZywgdm0pIHtcbiAgdmFyIHZhbHVlID0gYmluZGluZy52YWx1ZTtcbiAgdmFyIGlz
TXVsdGlwbGUgPSBlbC5tdWx0aXBsZTtcbiAgaWYgKGlzTXVsdGlwbGUgJiYgIUFycmF5LmlzQXJy
YXkodmFsdWUpKSB7XG4gICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJu
KFxuICAgICAgXCI8c2VsZWN0IG11bHRpcGxlIHYtbW9kZWw9XFxcIlwiICsgKGJpbmRpbmcuZXhw
cmVzc2lvbikgKyBcIlxcXCI+IFwiICtcbiAgICAgIFwiZXhwZWN0cyBhbiBBcnJheSB2YWx1ZSBm
b3IgaXRzIGJpbmRpbmcsIGJ1dCBnb3QgXCIgKyAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKHZhbHVlKS5zbGljZSg4LCAtMSkpLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxu
ICB9XG4gIHZhciBzZWxlY3RlZCwgb3B0aW9uO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGVsLm9w
dGlvbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb3B0aW9uID0gZWwub3B0aW9uc1tpXTtc
biAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgc2VsZWN0ZWQgPSBsb29zZUluZGV4T2YodmFs
dWUsIGdldFZhbHVlKG9wdGlvbikpID4gLTE7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdGVkICE9
PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uKSwg
dmFsdWUpKSB7XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZEluZGV4ICE9PSBpKSB7XG4gICAgICAg
ICAgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAg
ICB9XG4gICAgfVxuICB9XG4gIGlmICghaXNNdWx0aXBsZSkge1xuICAgIGVsLnNlbGVjdGVkSW5k
ZXggPSAtMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSAob3B0aW9uKSB7XG4gIHJldHVy
biAnX3ZhbHVlJyBpbiBvcHRpb25cbiAgICA/IG9wdGlvbi5fdmFsdWVcbiAgICA6IG9wdGlvbi52
YWx1ZVxufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQgKGUpIHtcbiAgZS50YXJnZXQu
Y29tcG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZCAoZSkge1xu
ICAvLyBwcmV2ZW50IHRyaWdnZXJpbmcgYW4gaW5wdXQgZXZlbnQgZm9yIG5vIHJlYXNvblxuICBp
ZiAoIWUudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm4gfVxuICBlLnRhcmdldC5jb21wb3Npbmcg
PSBmYWxzZTtcbiAgdHJpZ2dlcihlLnRhcmdldCwgJ2lucHV0Jyk7XG59XG5cbmZ1bmN0aW9uIHRy
aWdnZXIgKGVsLCB0eXBlKSB7XG4gIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxF
dmVudHMnKTtcbiAgZS5pbml0RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIGVsLmRpc3BhdGNo
RXZlbnQoZSk7XG59XG5cbi8qICAqL1xuXG4vLyByZWN1cnNpdmVseSBzZWFyY2ggZm9yIHBvc3Np
YmxlIHRyYW5zaXRpb24gZGVmaW5lZCBpbnNpZGUgdGhlIGNvbXBvbmVudCByb290XG5mdW5jdGlv
biBsb2NhdGVOb2RlICh2bm9kZSkge1xuICByZXR1cm4gdm5vZGUuY29tcG9uZW50SW5zdGFuY2Ug
JiYgKCF2bm9kZS5kYXRhIHx8ICF2bm9kZS5kYXRhLnRyYW5zaXRpb24pXG4gICAgPyBsb2NhdGVO
b2RlKHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSlcbiAgICA6IHZub2RlXG59XG5cbnZh
ciBzaG93ID0ge1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kIChlbCwgcmVmLCB2bm9kZSkge1xuICAg
IHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcblxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7
XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNp
dGlvbjtcbiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5ID1c
biAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxh
eTtcbiAgICBpZiAodmFsdWUgJiYgdHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5z
aG93ID0gdHJ1ZTtcbiAgICAgIGVudGVyKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVs
LnN0eWxlLmRpc3BsYXkgPSBvcmlnaW5hbERpc3BsYXk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gb3JpZ2luYWxEaXNwbGF5IDogJ25v
bmUnO1xuICAgIH1cbiAgfSxcblxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAoZWwsIHJlZiwg
dm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG4gICAgdmFyIG9sZFZhbHVlID0g
cmVmLm9sZFZhbHVlO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHZh
bHVlID09PSBvbGRWYWx1ZSkgeyByZXR1cm4gfVxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9k
ZSk7XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJh
bnNpdGlvbjtcbiAgICBpZiAodHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93
ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rp
b24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3Bs
YXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1
bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAg
ICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZh
bHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1
bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9k
ZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ry
b3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4g
ICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogbW9k
ZWwkMSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRp
b24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4vLyBzdXBwb3J0cyB0
cmFuc2l0aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9
IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixc
biAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxc
biAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVU
b0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3Rp
dmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVD
bGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVt
YmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28g
YW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byBy
ZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1
bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUg
JiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRp
b25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0
Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4g
ICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRh
IChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9u
cztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4g
ICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFj
dCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRo
b2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAo
dmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxp
c3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vo
b2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0No
aWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiBy
YXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVu
Y3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZu
b2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICBy
ZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQs
IG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRD
aGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG5mdW5jdGlvbiBpc0FzeW5jUGxhY2Vob2xkZXIg
KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuaXNDb21tZW50ICYmIG5vZGUuYXN5bmNGYWN0b3J5XG59
XG5cbnZhciBUcmFuc2l0aW9uID0ge1xuICBuYW1lOiAndHJhbnNpdGlvbicsXG4gIHByb3BzOiB0
cmFuc2l0aW9uUHJvcHMsXG4gIGFic3RyYWN0OiB0cnVlLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24g
cmVuZGVyIChoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgY2hpbGRyZW4g
PSB0aGlzLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbjtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4g
ICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRleHQgbm9kZXMgKHBvc3Np
YmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9u
IChjKSB7IHJldHVybiBjLnRhZyB8fCBpc0FzeW5jUGxhY2Vob2xkZXIoYyk7IH0pO1xuICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAg
ICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB3YXJuIG11bHRpcGxlIGVsZW1lbnRzXG4gICAgaWYg
KGZhbHNlKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJl
IHVzZWQgb24gYSBzaW5nbGUgZWxlbWVudC4gVXNlICcgK1xuICAgICAgICAnPHRyYW5zaXRpb24t
Z3JvdXA+IGZvciBsaXN0cy4nLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAg
fVxuXG4gICAgdmFyIG1vZGUgPSB0aGlzLm1vZGU7XG5cbiAgICAvLyB3YXJuIGludmFsaWQgbW9k
ZVxuICAgIGlmIChmYWxzZVxuICAgICkge1xuICAgICAgd2FybihcbiAgICAgICAgJ2ludmFsaWQg
PHRyYW5zaXRpb24+IG1vZGU6ICcgKyBtb2RlLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAg
ICk7XG4gICAgfVxuXG4gICAgdmFyIHJhd0NoaWxkID0gY2hpbGRyZW5bMF07XG5cbiAgICAvLyBp
ZiB0aGlzIGlzIGEgY29tcG9uZW50IHJvb3Qgbm9kZSBhbmQgdGhlIGNvbXBvbmVudCdzXG4gICAg
Ly8gcGFyZW50IGNvbnRhaW5lciBub2RlIGFsc28gaGFzIHRyYW5zaXRpb24sIHNraXAuXG4gICAg
aWYgKGhhc1BhcmVudFRyYW5zaXRpb24odGhpcy4kdm5vZGUpKSB7XG4gICAgICByZXR1cm4gcmF3
Q2hpbGRcbiAgICB9XG5cbiAgICAvLyBhcHBseSB0cmFuc2l0aW9uIGRhdGEgdG8gY2hpbGRcbiAg
ICAvLyB1c2UgZ2V0UmVhbENoaWxkKCkgdG8gaWdub3JlIGFic3RyYWN0IGNvbXBvbmVudHMgZS5n
LiBrZWVwLWFsaXZlXG4gICAgdmFyIGNoaWxkID0gZ2V0UmVhbENoaWxkKHJhd0NoaWxkKTtcbiAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICByZXR1
cm4gcmF3Q2hpbGRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGVhdmluZykge1xuICAgICAgcmV0
dXJuIHBsYWNlaG9sZGVyKGgsIHJhd0NoaWxkKVxuICAgIH1cblxuICAgIC8vIGVuc3VyZSBhIGtl
eSB0aGF0IGlzIHVuaXF1ZSB0byB0aGUgdm5vZGUgdHlwZSBhbmQgdG8gdGhpcyB0cmFuc2l0aW9u
XG4gICAgLy8gY29tcG9uZW50IGluc3RhbmNlLiBUaGlzIGtleSB3aWxsIGJlIHVzZWQgdG8gcmVt
b3ZlIHBlbmRpbmcgbGVhdmluZyBub2Rlc1xuICAgIC8vIGR1cmluZyBlbnRlcmluZy5cbiAgICB2
YXIgaWQgPSBcIl9fdHJhbnNpdGlvbi1cIiArICh0aGlzLl91aWQpICsgXCItXCI7XG4gICAgY2hp
bGQua2V5ID0gY2hpbGQua2V5ID09IG51bGxcbiAgICAgID8gY2hpbGQuaXNDb21tZW50XG4gICAg
ICAgID8gaWQgKyAnY29tbWVudCdcbiAgICAgICAgOiBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBp
c1ByaW1pdGl2ZShjaGlsZC5rZXkpXG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4
T2YoaWQpID09PSAwID8gY2hpbGQua2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hp
bGQua2V5O1xuXG4gICAgdmFyIGRhdGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9
KSkudHJhbnNpdGlvbiA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xk
UmF3Q2hpbGQgPSB0aGlzLl92bm9kZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQo
b2xkUmF3Q2hpbGQpO1xuXG4gICAgLy8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0
cmFuc2l0aW9uIG1vZHVsZSBjYW4gaGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3Rp
dmVcbiAgICBpZiAoY2hpbGQuZGF0YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZl
cy5zb21lKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfSkpIHtcbiAg
ICAgIGNoaWxkLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb2xk
Q2hpbGQgJiZcbiAgICAgIG9sZENoaWxkLmRhdGEgJiZcbiAgICAgICFpc1NhbWVDaGlsZChjaGls
ZCwgb2xkQ2hpbGQpICYmXG4gICAgICAhaXNBc3luY1BsYWNlaG9sZGVyKG9sZENoaWxkKVxuICAg
ICkge1xuICAgICAgLy8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJl
c2ggb25lXG4gICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAg
ICB2YXIgb2xkRGF0YSA9IG9sZENoaWxkICYmIChvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBl
eHRlbmQoe30sIGRhdGEpKTtcbiAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAg
IGlmIChtb2RlID09PSAnb3V0LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIg
bm9kZSBhbmQgcXVldWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5f
bGVhdmluZyA9IHRydWU7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxl
YXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xu
ICAgICAgICAgIHRoaXMkMS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJl
dHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0g
J2luLW91dCcpIHtcbiAgICAgICAgaWYgKGlzQXN5bmNQbGFjZWhvbGRlcihjaGlsZCkpIHtcbiAg
ICAgICAgICByZXR1cm4gb2xkUmF3Q2hpbGRcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVsYXll
ZExlYXZlO1xuICAgICAgICB2YXIgcGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKCkgeyBkZWxheWVk
TGVhdmUoKTsgfTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2FmdGVyRW50ZXInLCBw
ZXJmb3JtTGVhdmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnZW50ZXJDYW5jZWxs
ZWQnLCBwZXJmb3JtTGVhdmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnZGVs
YXlMZWF2ZScsIGZ1bmN0aW9uIChsZWF2ZSkgeyBkZWxheWVkTGVhdmUgPSBsZWF2ZTsgfSk7XG4g
ICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJhd0NoaWxkXG4gIH1cbn07XG5cbi8qICAqL1xu
XG4vLyBQcm92aWRlcyB0cmFuc2l0aW9uIHN1cHBvcnQgZm9yIGxpc3QgaXRlbXMuXG4vLyBzdXBw
b3J0cyBtb3ZlIHRyYW5zaXRpb25zIHVzaW5nIHRoZSBGTElQIHRlY2huaXF1ZS5cblxuLy8gQmVj
YXVzZSB0aGUgdmRvbSdzIGNoaWxkcmVuIHVwZGF0ZSBhbGdvcml0aG0gaXMgXCJ1bnN0YWJsZVwi
IC0gaS5lLlxuLy8gaXQgZG9lc24ndCBndWFyYW50ZWUgdGhlIHJlbGF0aXZlIHBvc2l0aW9uaW5n
IG9mIHJlbW92ZWQgZWxlbWVudHMsXG4vLyB3ZSBmb3JjZSB0cmFuc2l0aW9uLWdyb3VwIHRvIHVw
ZGF0ZSBpdHMgY2hpbGRyZW4gaW50byB0d28gcGFzc2VzOlxuLy8gaW4gdGhlIGZpcnN0IHBhc3Ms
IHdlIHJlbW92ZSBhbGwgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQsXG4vLyB0cmlnZ2Vy
aW5nIHRoZWlyIGxlYXZpbmcgdHJhbnNpdGlvbjsgaW4gdGhlIHNlY29uZCBwYXNzLCB3ZSBpbnNl
cnQvbW92ZVxuLy8gaW50byB0aGUgZmluYWwgZGVzaXJlZCBzdGF0ZS4gVGhpcyB3YXkgaW4gdGhl
IHNlY29uZCBwYXNzIHJlbW92ZWRcbi8vIG5vZGVzIHdpbGwgcmVtYWluIHdoZXJlIHRoZXkgc2hv
dWxkIGJlLlxuXG52YXIgcHJvcHMgPSBleHRlbmQoe1xuICB0YWc6IFN0cmluZyxcbiAgbW92ZUNs
YXNzOiBTdHJpbmdcbn0sIHRyYW5zaXRpb25Qcm9wcyk7XG5cbmRlbGV0ZSBwcm9wcy5tb2RlO1xu
XG52YXIgVHJhbnNpdGlvbkdyb3VwID0ge1xuICBwcm9wczogcHJvcHMsXG5cbiAgcmVuZGVyOiBm
dW5jdGlvbiByZW5kZXIgKGgpIHtcbiAgICB2YXIgdGFnID0gdGhpcy50YWcgfHwgdGhpcy4kdm5v
ZGUuZGF0YS50YWcgfHwgJ3NwYW4nO1xuICAgIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwp
O1xuICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbiA9IHRoaXMuY2hpbGRy
ZW47XG4gICAgdmFyIHJhd0NoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXTtcbiAg
ICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdmFyIHRyYW5zaXRpb25E
YXRhID0gZXh0cmFjdFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByYXdDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSByYXdDaGlsZHJl
bltpXTtcbiAgICAgIGlmIChjLnRhZykge1xuICAgICAgICBpZiAoYy5rZXkgIT0gbnVsbCAmJiBT
dHJpbmcoYy5rZXkpLmluZGV4T2YoJ19fdmxpc3QnKSAhPT0gMCkge1xuICAgICAgICAgIGNoaWxk
cmVuLnB1c2goYyk7XG4gICAgICAgICAgbWFwW2Mua2V5XSA9IGNcbiAgICAgICAgICA7KGMuZGF0
YSB8fCAoYy5kYXRhID0ge30pKS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAg
IH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0
aW9ucztcbiAgICAgICAgICB2YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFt
ZSB8fCBvcHRzLnRhZyB8fCAnJykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0
aW9uLWdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAg
ICAgIHZhciBrZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2
YXIgaSQxID0gMDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAg
dmFyIGMkMSA9IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9u
ID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAg
ICBrZXB0LnB1c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1
c2goYyQxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51
bGwsIGtlcHQpO1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICBy
ZXR1cm4gaCh0YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIGJlZm9yZVVwZGF0ZTogZnVu
Y3Rpb24gYmVmb3JlVXBkYXRlICgpIHtcbiAgICAvLyBmb3JjZSByZW1vdmluZyBwYXNzXG4gICAg
dGhpcy5fX3BhdGNoX18oXG4gICAgICB0aGlzLl92bm9kZSxcbiAgICAgIHRoaXMua2VwdCxcbiAg
ICAgIGZhbHNlLCAvLyBoeWRyYXRpbmdcbiAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9y
dGFudCwgYXZvaWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICk7XG4gICAgdGhpcy5fdm5vZGUg
PSB0aGlzLmtlcHQ7XG4gIH0sXG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4g
ICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9
IHRoaXMubW92ZUNsYXNzIHx8ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBp
ZiAoIWNoaWxkcmVuLmxlbmd0aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92
ZUNsYXNzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3
b3JrIGludG8gdGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVz
XG4gICAgLy8gaW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0
aHJhc2hpbmcuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hp
bGRyZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBs
eVRyYW5zbGF0aW9uKTtcblxuICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBp
biBwb3NpdGlvblxuICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgZiA9IGJv
ZHkub2Zmc2V0SGVpZ2h0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBjaGlsZHJlbi5m
b3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG4gICAgICAg
IHZhciBlbCA9IGMuZWxtO1xuICAgICAgICB2YXIgcyA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRU
cmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgIHMudHJhbnNmb3JtID0gcy5X
ZWJraXRUcmFuc2Zvcm0gPSBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xuICAgICAgICBlbC5h
ZGRFdmVudExpc3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgZWwuX21vdmVDYiA9IGZ1bmN0aW9u
IGNiIChlKSB7XG4gICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVy
dHlOYW1lKSkge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9u
RW5kRXZlbnQsIGNiKTtcbiAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xuICAgICAgICAg
ICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAg
ICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhh
c01vdmU6IGZ1bmN0aW9uIGhhc01vdmUgKGVsLCBtb3ZlQ2xhc3MpIHtcbiAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCFoYXNUcmFuc2l0aW9uKSB7XG4gICAgICAgIHJl
dHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAg
ICBpZiAodGhpcy5faGFzTW92ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTW92ZVxuICAg
ICAgfVxuICAgICAgLy8gRGV0ZWN0IHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNs
YXNzIGFwcGxpZWQgaGFzXG4gICAgICAvLyBDU1MgdHJhbnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVt
ZW50IG1heSBiZSBpbnNpZGUgYW4gZW50ZXJpbmdcbiAgICAgIC8vIHRyYW5zaXRpb24gYXQgdGhp
cyB2ZXJ5IG1vbWVudCwgd2UgbWFrZSBhIGNsb25lIG9mIGl0IGFuZCByZW1vdmVcbiAgICAgIC8v
IGFsbCBvdGhlciB0cmFuc2l0aW9uIGNsYXNzZXMgYXBwbGllZCB0byBlbnN1cmUgb25seSB0aGUg
bW92ZSBjbGFzc1xuICAgICAgLy8gaXMgYXBwbGllZC5cbiAgICAgIHZhciBjbG9uZSA9IGVsLmNs
b25lTm9kZSgpO1xuICAgICAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgICAgICBl
bC5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJlbW92ZUNsYXNz
KGNsb25lLCBjbHMpOyB9KTtcbiAgICAgIH1cbiAgICAgIGFkZENsYXNzKGNsb25lLCBtb3ZlQ2xh
c3MpO1xuICAgICAgY2xvbmUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIHRoaXMuJGVs
LmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIHZhciBpbmZvID0gZ2V0VHJhbnNpdGlvbkluZm8o
Y2xvbmUpO1xuICAgICAgdGhpcy4kZWwucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgcmV0dXJu
ICh0aGlzLl9oYXNNb3ZlID0gaW5mby5oYXNUcmFuc2Zvcm0pXG4gICAgfVxuICB9XG59O1xuXG5m
dW5jdGlvbiBjYWxsUGVuZGluZ0NicyAoYykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgaWYgKGMuZWxtLl9tb3ZlQ2IpIHtcbiAgICBjLmVsbS5fbW92ZUNiKCk7XG4gIH1cbiAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fZW50ZXJDYikge1xuICAgIGMuZWxt
Ll9lbnRlckNiKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVjb3JkUG9zaXRpb24gKGMpIHtcbiAg
Yy5kYXRhLm5ld1BvcyA9IGMuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5mdW5j
dGlvbiBhcHBseVRyYW5zbGF0aW9uIChjKSB7XG4gIHZhciBvbGRQb3MgPSBjLmRhdGEucG9zO1xu
ICB2YXIgbmV3UG9zID0gYy5kYXRhLm5ld1BvcztcbiAgdmFyIGR4ID0gb2xkUG9zLmxlZnQgLSBu
ZXdQb3MubGVmdDtcbiAgdmFyIGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XG4gIGlmIChk
eCB8fCBkeSkge1xuICAgIGMuZGF0YS5tb3ZlZCA9IHRydWU7XG4gICAgdmFyIHMgPSBjLmVsbS5z
dHlsZTtcbiAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUo
XCIgKyBkeCArIFwicHgsXCIgKyBkeSArIFwicHgpXCI7XG4gICAgcy50cmFuc2l0aW9uRHVyYXRp
b24gPSAnMHMnO1xuICB9XG59XG5cbnZhciBwbGF0Zm9ybUNvbXBvbmVudHMgPSB7XG4gIFRyYW5z
aXRpb246IFRyYW5zaXRpb24sXG4gIFRyYW5zaXRpb25Hcm91cDogVHJhbnNpdGlvbkdyb3VwXG59
O1xuXG4vKiAgKi9cblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBzcGVjaWZpYyB1dGlsc1xuVnVlJDMu
Y29uZmlnLm11c3RVc2VQcm9wID0gbXVzdFVzZVByb3A7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZl
ZFRhZyA9IGlzUmVzZXJ2ZWRUYWc7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZEF0dHIgPSBpc1Jl
c2VydmVkQXR0cjtcblZ1ZSQzLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2UgPSBnZXRUYWdOYW1lc3Bh
Y2U7XG5WdWUkMy5jb25maWcuaXNVbmtub3duRWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5c
bi8vIGluc3RhbGwgcGxhdGZvcm0gcnVudGltZSBkaXJlY3RpdmVzICYgY29tcG9uZW50c1xuZXh0
ZW5kKFZ1ZSQzLm9wdGlvbnMuZGlyZWN0aXZlcywgcGxhdGZvcm1EaXJlY3RpdmVzKTtcbmV4dGVu
ZChWdWUkMy5vcHRpb25zLmNvbXBvbmVudHMsIHBsYXRmb3JtQ29tcG9uZW50cyk7XG5cbi8vIGlu
c3RhbGwgcGxhdGZvcm0gcGF0Y2ggZnVuY3Rpb25cblZ1ZSQzLnByb3RvdHlwZS5fX3BhdGNoX18g
PSBpbkJyb3dzZXIgPyBwYXRjaCA6IG5vb3A7XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1
ZSQzLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikg
e1xuICBlbCA9IGVsICYmIGluQnJvd3NlciA/IHF1ZXJ5KGVsKSA6IHVuZGVmaW5lZDtcbiAgcmV0
dXJuIG1vdW50Q29tcG9uZW50KHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xuXG4vLyBkZXZ0b29s
cyBnbG9iYWwgaG9va1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkge1xuICBpZiAoY29uZmlnLmRldnRvb2xzKSB7XG4gICAgaWYgKGRldnRvb2xzKSB7
XG4gICAgICBkZXZ0b29scy5lbWl0KCdpbml0JywgVnVlJDMpO1xuICAgIH0gZWxzZSBpZiAoZmFs
c2UpIHtcbiAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAg
ICAgICAnRG93bmxvYWQgdGhlIFZ1ZSBEZXZ0b29scyBleHRlbnNpb24gZm9yIGEgYmV0dGVyIGRl
dmVsb3BtZW50IGV4cGVyaWVuY2U6XFxuJyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20v
dnVlanMvdnVlLWRldnRvb2xzJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKGZhbHNlXG4g
ICkge1xuICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAg
XCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAg
XCJNYWtlIHN1cmUgdG8gdHVybiBvbiBwcm9kdWN0aW9uIG1vZGUgd2hlbiBkZXBsb3lpbmcgZm9y
IHByb2R1Y3Rpb24uXFxuXCIgK1xuICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVl
anMub3JnL2d1aWRlL2RlcGxveW1lbnQuaHRtbFwiXG4gICAgKTtcbiAgfVxufSwgMCk7XG5cbi8q
ICAqL1xuXG4vLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hhciBp
bnNpZGUgYXR0cmlidXRlIHZhbHVlc1xuZnVuY3Rpb24gc2hvdWxkRGVjb2RlIChjb250ZW50LCBl
bmNvZGVkKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAg
ZGl2LmlubmVySFRNTCA9IFwiPGRpdiBhPVxcXCJcIiArIGNvbnRlbnQgKyBcIlxcXCIvPlwiO1xu
ICByZXR1cm4gZGl2LmlubmVySFRNTC5pbmRleE9mKGVuY29kZWQpID4gMFxufVxuXG4vLyAjMzY2
M1xuLy8gSUUgZW5jb2RlcyBuZXdsaW5lcyBpbnNpZGUgYXR0cmlidXRlIHZhbHVlcyB3aGlsZSBv
dGhlciBicm93c2VycyBkb24ndFxudmFyIHNob3VsZERlY29kZU5ld2xpbmVzID0gaW5Ccm93c2Vy
ID8gc2hvdWxkRGVjb2RlKCdcXG4nLCAnJiMxMDsnKSA6IGZhbHNlO1xuXG4vKiAgKi9cblxudmFy
IGRlZmF1bHRUYWdSRSA9IC9cXHtcXHsoKD86LnxcXG4pKz8pXFx9XFx9L2c7XG52YXIgcmVnZXhF
c2NhcGVSRSA9IC9bLS4qKz9eJHt9KCl8W1xcXVxcL1xcXFxdL2c7XG5cbnZhciBidWlsZFJlZ2V4
ID0gY2FjaGVkKGZ1bmN0aW9uIChkZWxpbWl0ZXJzKSB7XG4gIHZhciBvcGVuID0gZGVsaW1pdGVy
c1swXS5yZXBsYWNlKHJlZ2V4RXNjYXBlUkUsICdcXFxcJCYnKTtcbiAgdmFyIGNsb3NlID0gZGVs
aW1pdGVyc1sxXS5yZXBsYWNlKHJlZ2V4RXNjYXBlUkUsICdcXFxcJCYnKTtcbiAgcmV0dXJuIG5l
dyBSZWdFeHAob3BlbiArICcoKD86LnxcXFxcbikrPyknICsgY2xvc2UsICdnJylcbn0pO1xuXG5m
dW5jdGlvbiBwYXJzZVRleHQgKFxuICB0ZXh0LFxuICBkZWxpbWl0ZXJzXG4pIHtcbiAgdmFyIHRh
Z1JFID0gZGVsaW1pdGVycyA/IGJ1aWxkUmVnZXgoZGVsaW1pdGVycykgOiBkZWZhdWx0VGFnUkU7
XG4gIGlmICghdGFnUkUudGVzdCh0ZXh0KSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0b2tl
bnMgPSBbXTtcbiAgdmFyIGxhc3RJbmRleCA9IHRhZ1JFLmxhc3RJbmRleCA9IDA7XG4gIHZhciBt
YXRjaCwgaW5kZXg7XG4gIHdoaWxlICgobWF0Y2ggPSB0YWdSRS5leGVjKHRleHQpKSkge1xuICAg
IGluZGV4ID0gbWF0Y2guaW5kZXg7XG4gICAgLy8gcHVzaCB0ZXh0IHRva2VuXG4gICAgaWYgKGlu
ZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICB0b2tlbnMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0
LnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpKSk7XG4gICAgfVxuICAgIC8vIHRhZyB0b2tlblxuICAg
IHZhciBleHAgPSBwYXJzZUZpbHRlcnMobWF0Y2hbMV0udHJpbSgpKTtcbiAgICB0b2tlbnMucHVz
aCgoXCJfcyhcIiArIGV4cCArIFwiKVwiKSk7XG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyBtYXRj
aFswXS5sZW5ndGg7XG4gIH1cbiAgaWYgKGxhc3RJbmRleCA8IHRleHQubGVuZ3RoKSB7XG4gICAg
dG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgpKSk7XG4gIH1c
biAgcmV0dXJuIHRva2Vucy5qb2luKCcrJylcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHRyYW5z
Zm9ybU5vZGUgKGVsLCBvcHRpb25zKSB7XG4gIHZhciB3YXJuID0gb3B0aW9ucy53YXJuIHx8IGJh
c2VXYXJuO1xuICB2YXIgc3RhdGljQ2xhc3MgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnY2xhc3Mn
KTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGlj
Q2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAg
IHdhcm4oXG4gICAgICAgIFwiY2xhc3M9XFxcIlwiICsgc3RhdGljQ2xhc3MgKyBcIlxcXCI6IFwi
ICtcbiAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVt
b3ZlZC4gJyArXG4gICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5z
dGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNsYXNzPVwi
e3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6Y2xhc3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtcbiAgICB9
XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0
cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRp
bmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NC
aW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5c
bmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0
aWNDbGFzcykge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFz
cykgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBc
ImNsYXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0
YVxufVxuXG52YXIga2xhc3MkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxu
ICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhXG59O1xu
XG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChlbCwgb3B0aW9ucykge1xuICB2
YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY1N0eWxlID0g
Z2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChzdGF0aWNTdHlsZSkge1xuICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIGV4
cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljU3R5bGUsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4g
ICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwic3R5bGU9
XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAnSW50ZXJwb2xh
dGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgICAn
VXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAn
ICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19XCI+LCB1c2Ug
PGRpdiA6c3R5bGU9XCJ2YWxcIj4uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBl
bC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0YXRpY1N0eWxl
KSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzdHls
ZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcpIHtcbiAgICBl
bC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0
YSQxIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5bGUpIHtcbiAg
ICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG4g
IH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAo
ZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIg
c3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0cmFuc2Zvcm1O
b2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxudmFyIG1v
ZHVsZXMkMSA9IFtcbiAga2xhc3MkMSxcbiAgc3R5bGUkMVxuXTtcblxuLyogICovXG5cbmZ1bmN0
aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWws
ICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikpO1xuICB9XG59
XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlmIChkaXIudmFsdWUp
IHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSAr
IFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVs
LFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxudmFyIGlzVW5h
cnlUYWcgPSBtYWtlTWFwKFxuICAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxocixpbWcs
aW5wdXQsaXNpbmRleCxrZXlnZW4sJyArXG4gICdsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNr
LHdicidcbik7XG5cbi8vIEVsZW1lbnRzIHRoYXQgeW91IGNhbiwgaW50ZW50aW9uYWxseSwgbGVh
dmUgb3BlblxuLy8gKGFuZCB3aGljaCBjbG9zZSB0aGVtc2VsdmVzKVxudmFyIGNhbkJlTGVmdE9w
ZW5UYWcgPSBtYWtlTWFwKFxuICAnY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290
LHRoLHRoZWFkLHRyLHNvdXJjZSdcbik7XG5cbi8vIEhUTUw1IHRhZ3MgaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sI2VsZW1lbnRzLTNcbi8vIFBocmFz
aW5nIENvbnRlbnQgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0
bWwjcGhyYXNpbmctY29udGVudFxudmFyIGlzTm9uUGhyYXNpbmdUYWcgPSBtYWtlTWFwKFxuICAn
YWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNv
bGdyb3VwLGRkLCcgK1xuICAnZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2Nh
cHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLCcgK1xuICAnaDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxo
ZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsJyArXG4gICdvcHRn
cm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZv
b3QsdGgsdGhlYWQsJyArXG4gICd0aXRsZSx0cix0cmFjaydcbik7XG5cbi8qICAqL1xuXG52YXIg
YmFzZU9wdGlvbnMgPSB7XG4gIGV4cGVjdEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6IG1vZHVsZXMk
MSxcbiAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyQxLFxuICBpc1ByZVRhZzogaXNQcmVUYWcsXG4g
IGlzVW5hcnlUYWc6IGlzVW5hcnlUYWcsXG4gIG11c3RVc2VQcm9wOiBtdXN0VXNlUHJvcCxcbiAg
Y2FuQmVMZWZ0T3BlblRhZzogY2FuQmVMZWZ0T3BlblRhZyxcbiAgaXNSZXNlcnZlZFRhZzogaXNS
ZXNlcnZlZFRhZyxcbiAgZ2V0VGFnTmFtZXNwYWNlOiBnZXRUYWdOYW1lc3BhY2UsXG4gIHN0YXRp
Y0tleXM6IGdlblN0YXRpY0tleXMobW9kdWxlcyQxKVxufTtcblxuLyogICovXG5cbnZhciBkZWNv
ZGVyO1xuXG52YXIgaGUgPSB7XG4gIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlIChodG1sKSB7XG4g
ICAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4g
ICAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiBkZWNvZGVyLnRleHRDb250
ZW50XG4gIH1cbn07XG5cbi8qKlxuICogTm90IHR5cGUtY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1
c2UgaXQncyBtb3N0bHkgdmVuZG9yIGNvZGUuXG4gKi9cblxuLyohXG4gKiBIVE1MIFBhcnNlciBC
eSBKb2huIFJlc2lnIChlam9obi5vcmcpXG4gKiBNb2RpZmllZCBieSBKdXJpeSBcImthbmdheFwi
IFpheXRzZXZcbiAqIE9yaWdpbmFsIGNvZGUgYnkgRXJpayBBcnZpZHNzb24sIE1vemlsbGEgUHVi
bGljIExpY2Vuc2VcbiAqIGh0dHA6Ly9lcmlrLmVhZS5uZXQvc2ltcGxlaHRtbHBhcnNlci9zaW1w
bGVodG1scGFyc2VyLmpzXG4gKi9cblxuLy8gUmVndWxhciBFeHByZXNzaW9ucyBmb3IgcGFyc2lu
ZyB0YWdzIGFuZCBhdHRyaWJ1dGVzXG52YXIgc2luZ2xlQXR0cklkZW50aWZpZXIgPSAvKFteXFxz
XCInPD4vPV0rKS87XG52YXIgc2luZ2xlQXR0ckFzc2lnbiA9IC8oPzo9KS87XG52YXIgc2luZ2xl
QXR0clZhbHVlcyA9IFtcbiAgLy8gYXR0ciB2YWx1ZSBkb3VibGUgcXVvdGVzXG4gIC9cIihbXlwi
XSopXCIrLy5zb3VyY2UsXG4gIC8vIGF0dHIgdmFsdWUsIHNpbmdsZSBxdW90ZXNcbiAgLycoW14n
XSopJysvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1ZSwgbm8gcXVvdGVzXG4gIC8oW15cXHNcIic9
PD5gXSspLy5zb3VyY2Vcbl07XG52YXIgYXR0cmlidXRlID0gbmV3IFJlZ0V4cChcbiAgJ15cXFxc
cyonICsgc2luZ2xlQXR0cklkZW50aWZpZXIuc291cmNlICtcbiAgJyg/OlxcXFxzKignICsgc2lu
Z2xlQXR0ckFzc2lnbi5zb3VyY2UgKyAnKScgK1xuICAnXFxcXHMqKD86JyArIHNpbmdsZUF0dHJW
YWx1ZXMuam9pbignfCcpICsgJykpPydcbik7XG5cbi8vIGNvdWxkIHVzZSBodHRwczovL3d3dy53
My5vcmcvVFIvMTk5OS9SRUMteG1sLW5hbWVzLTE5OTkwMTE0LyNOVC1RTmFtZVxuLy8gYnV0IGZv
ciBWdWUgdGVtcGxhdGVzIHdlIGNhbiBlbmZvcmNlIGEgc2ltcGxlIGNoYXJzZXRcbnZhciBuY25h
bWUgPSAnW2EtekEtWl9dW1xcXFx3XFxcXC1cXFxcLl0qJztcbnZhciBxbmFtZUNhcHR1cmUgPSAn
KCg/OicgKyBuY25hbWUgKyAnXFxcXDopPycgKyBuY25hbWUgKyAnKSc7XG52YXIgc3RhcnRUYWdP
cGVuID0gbmV3IFJlZ0V4cCgnXjwnICsgcW5hbWVDYXB0dXJlKTtcbnZhciBzdGFydFRhZ0Nsb3Nl
ID0gL15cXHMqKFxcLz8pPi87XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4cCgnXjxcXFxcLycgKyBx
bmFtZUNhcHR1cmUgKyAnW14+XSo+Jyk7XG52YXIgZG9jdHlwZSA9IC9ePCFET0NUWVBFIFtePl0r
Pi9pO1xudmFyIGNvbW1lbnQgPSAvXjwhLS0vO1xudmFyIGNvbmRpdGlvbmFsQ29tbWVudCA9IC9e
PCFcXFsvO1xuXG52YXIgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGZhbHNlO1xuJ3gnLnJl
cGxhY2UoL3goLik/L2csIGZ1bmN0aW9uIChtLCBnKSB7XG4gIElTX1JFR0VYX0NBUFRVUklOR19C
Uk9LRU4gPSBnID09PSAnJztcbn0pO1xuXG4vLyBTcGVjaWFsIEVsZW1lbnRzIChjYW4gY29udGFp
biBhbnl0aGluZylcbnZhciBpc1BsYWluVGV4dEVsZW1lbnQgPSBtYWtlTWFwKCdzY3JpcHQsc3R5
bGUsdGV4dGFyZWEnLCB0cnVlKTtcbnZhciByZUNhY2hlID0ge307XG5cbnZhciBkZWNvZGluZ01h
cCA9IHtcbiAgJyZsdDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7JzogJ1wiJyxc
biAgJyZhbXA7JzogJyYnLFxuICAnJiMxMDsnOiAnXFxuJ1xufTtcbnZhciBlbmNvZGVkQXR0ciA9
IC8mKD86bHR8Z3R8cXVvdHxhbXApOy9nO1xudmFyIGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzID0g
LyYoPzpsdHxndHxxdW90fGFtcHwjMTApOy9nO1xuXG4vLyAjNTk5MlxudmFyIGlzSWdub3JlTmV3
bGluZVRhZyA9IG1ha2VNYXAoJ3ByZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHNob3VsZElnbm9y
ZUZpcnN0TmV3bGluZSA9IGZ1bmN0aW9uICh0YWcsIGh0bWwpIHsgcmV0dXJuIHRhZyAmJiBpc0ln
bm9yZU5ld2xpbmVUYWcodGFnKSAmJiBodG1sWzBdID09PSAnXFxuJzsgfTtcblxuZnVuY3Rpb24g
ZGVjb2RlQXR0ciAodmFsdWUsIHNob3VsZERlY29kZU5ld2xpbmVzKSB7XG4gIHZhciByZSA9IHNo
b3VsZERlY29kZU5ld2xpbmVzID8gZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgOiBlbmNvZGVkQXR0
cjtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4g
ZGVjb2RpbmdNYXBbbWF0Y2hdOyB9KVxufVxuXG5mdW5jdGlvbiBwYXJzZUhUTUwgKGh0bWwsIG9w
dGlvbnMpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBleHBlY3RIVE1MID0gb3B0aW9ucy5l
eHBlY3RIVE1MO1xuICB2YXIgaXNVbmFyeVRhZyQkMSA9IG9wdGlvbnMuaXNVbmFyeVRhZyB8fCBu
bztcbiAgdmFyIGNhbkJlTGVmdE9wZW5UYWckJDEgPSBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcg
fHwgbm87XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsYXN0LCBsYXN0VGFnO1xuICB3aGlsZSAo
aHRtbCkge1xuICAgIGxhc3QgPSBodG1sO1xuICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgaW4g
YSBwbGFpbnRleHQgY29udGVudCBlbGVtZW50IGxpa2Ugc2NyaXB0L3N0eWxlXG4gICAgaWYgKCFs
YXN0VGFnIHx8ICFpc1BsYWluVGV4dEVsZW1lbnQobGFzdFRhZykpIHtcbiAgICAgIHZhciB0ZXh0
RW5kID0gaHRtbC5pbmRleE9mKCc8Jyk7XG4gICAgICBpZiAodGV4dEVuZCA9PT0gMCkge1xuICAg
ICAgICAvLyBDb21tZW50OlxuICAgICAgICBpZiAoY29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAg
ICAgICAgdmFyIGNvbW1lbnRFbmQgPSBodG1sLmluZGV4T2YoJy0tPicpO1xuXG4gICAgICAgICAg
aWYgKGNvbW1lbnRFbmQgPj0gMCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkS2Vl
cENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5jb21tZW50KGh0bWwuc3Vic3RyaW5n
KDQsIGNvbW1lbnRFbmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkdmFuY2UoY29t
bWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAg
IH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFs
X2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAg
aWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRp
dGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlv
bmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtc
biAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAg
Ly8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlw
ZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5
cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAg
ICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVu
ZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRl
eCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAg
ICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAg
ICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAg
ICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0
YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtc
biAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKGxhc3RUYWcsIGh0bWwpKSB7
XG4gICAgICAgICAgICBhZHZhbmNlKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51
ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3Qg
PSAodm9pZCAwKSwgbmV4dCA9ICh2b2lkIDApO1xuICAgICAgaWYgKHRleHRFbmQgPj0gMCkge1xu
ICAgICAgICByZXN0ID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgd2hpbGUgKFxuICAg
ICAgICAgICFlbmRUYWcudGVzdChyZXN0KSAmJlxuICAgICAgICAgICFzdGFydFRhZ09wZW4udGVz
dChyZXN0KSAmJlxuICAgICAgICAgICFjb21tZW50LnRlc3QocmVzdCkgJiZcbiAgICAgICAgICAh
Y29uZGl0aW9uYWxDb21tZW50LnRlc3QocmVzdClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8g
PCBpbiBwbGFpbiB0ZXh0LCBiZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRleHRcbiAgICAg
ICAgICBuZXh0ID0gcmVzdC5pbmRleE9mKCc8JywgMSk7XG4gICAgICAgICAgaWYgKG5leHQgPCAw
KSB7IGJyZWFrIH1cbiAgICAgICAgICB0ZXh0RW5kICs9IG5leHQ7XG4gICAgICAgICAgcmVzdCA9
IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9IGh0bWwuc3Vi
c3RyaW5nKDAsIHRleHRFbmQpO1xuICAgICAgICBhZHZhbmNlKHRleHRFbmQpO1xuICAgICAgfVxu
XG4gICAgICBpZiAodGV4dEVuZCA8IDApIHtcbiAgICAgICAgdGV4dCA9IGh0bWw7XG4gICAgICAg
IGh0bWwgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2hhcnMgJiYgdGV4dCkg
e1xuICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4g
ICAgICB2YXIgZW5kVGFnTGVuZ3RoID0gMDtcbiAgICAgIHZhciBzdGFja2VkVGFnID0gbGFzdFRh
Zy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHJlU3RhY2tlZFRhZyA9IHJlQ2FjaGVbc3RhY2tl
ZFRhZ10gfHwgKHJlQ2FjaGVbc3RhY2tlZFRhZ10gPSBuZXcgUmVnRXhwKCcoW1xcXFxzXFxcXFNd
Kj8pKDwvJyArIHN0YWNrZWRUYWcgKyAnW14+XSo+KScsICdpJykpO1xuICAgICAgdmFyIHJlc3Qk
MSA9IGh0bWwucmVwbGFjZShyZVN0YWNrZWRUYWcsIGZ1bmN0aW9uIChhbGwsIHRleHQsIGVuZFRh
Zykge1xuICAgICAgICBlbmRUYWdMZW5ndGggPSBlbmRUYWcubGVuZ3RoO1xuICAgICAgICBpZiAo
IWlzUGxhaW5UZXh0RWxlbWVudChzdGFja2VkVGFnKSAmJiBzdGFja2VkVGFnICE9PSAnbm9zY3Jp
cHQnKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHRcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IS0t
KFtcXHNcXFNdKj8pLS0+L2csICckMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvPCFcXFtDREFU
QVxcWyhbXFxzXFxTXSo/KV1dPi9nLCAnJDEnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hv
dWxkSWdub3JlRmlyc3ROZXdsaW5lKHN0YWNrZWRUYWcsIHRleHQpKSB7XG4gICAgICAgICAgdGV4
dCA9IHRleHQuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2hhcnMp
IHtcbiAgICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJl
dHVybiAnJ1xuICAgICAgfSk7XG4gICAgICBpbmRleCArPSBodG1sLmxlbmd0aCAtIHJlc3QkMS5s
ZW5ndGg7XG4gICAgICBodG1sID0gcmVzdCQxO1xuICAgICAgcGFyc2VFbmRUYWcoc3RhY2tlZFRh
ZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9
PT0gbGFzdCkge1xuICAgICAgb3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNoYXJzKGh0bWwpO1xu
ICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG9wdGlvbnMud2FybigoXCJNYWwtZm9ybWF0dGVk
IHRhZyBhdCBlbmQgb2YgdGVtcGxhdGU6IFxcXCJcIiArIGh0bWwgKyBcIlxcXCJcIikpO1xuICAg
ICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBDbGVhbiB1cCBhbnkgcmVtYWlu
aW5nIHRhZ3NcbiAgcGFyc2VFbmRUYWcoKTtcblxuICBmdW5jdGlvbiBhZHZhbmNlIChuKSB7XG4g
ICAgaW5kZXggKz0gbjtcbiAgICBodG1sID0gaHRtbC5zdWJzdHJpbmcobik7XG4gIH1cblxuICBm
dW5jdGlvbiBwYXJzZVN0YXJ0VGFnICgpIHtcbiAgICB2YXIgc3RhcnQgPSBodG1sLm1hdGNoKHN0
YXJ0VGFnT3Blbik7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICB2YXIgbWF0Y2ggPSB7XG4gICAg
ICAgIHRhZ05hbWU6IHN0YXJ0WzFdLFxuICAgICAgICBhdHRyczogW10sXG4gICAgICAgIHN0YXJ0
OiBpbmRleFxuICAgICAgfTtcbiAgICAgIGFkdmFuY2Uoc3RhcnRbMF0ubGVuZ3RoKTtcbiAgICAg
IHZhciBlbmQsIGF0dHI7XG4gICAgICB3aGlsZSAoIShlbmQgPSBodG1sLm1hdGNoKHN0YXJ0VGFn
Q2xvc2UpKSAmJiAoYXR0ciA9IGh0bWwubWF0Y2goYXR0cmlidXRlKSkpIHtcbiAgICAgICAgYWR2
YW5jZShhdHRyWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmF0dHJzLnB1c2goYXR0cik7XG4g
ICAgICB9XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIG1hdGNoLnVuYXJ5U2xhc2ggPSBlbmRb
MV07XG4gICAgICAgIGFkdmFuY2UoZW5kWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmVuZCA9
IGluZGV4O1xuICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBm
dW5jdGlvbiBoYW5kbGVTdGFydFRhZyAobWF0Y2gpIHtcbiAgICB2YXIgdGFnTmFtZSA9IG1hdGNo
LnRhZ05hbWU7XG4gICAgdmFyIHVuYXJ5U2xhc2ggPSBtYXRjaC51bmFyeVNsYXNoO1xuXG4gICAg
aWYgKGV4cGVjdEhUTUwpIHtcbiAgICAgIGlmIChsYXN0VGFnID09PSAncCcgJiYgaXNOb25QaHJh
c2luZ1RhZyh0YWdOYW1lKSkge1xuICAgICAgICBwYXJzZUVuZFRhZyhsYXN0VGFnKTtcbiAgICAg
IH1cbiAgICAgIGlmIChjYW5CZUxlZnRPcGVuVGFnJCQxKHRhZ05hbWUpICYmIGxhc3RUYWcgPT09
IHRhZ05hbWUpIHtcbiAgICAgICAgcGFyc2VFbmRUYWcodGFnTmFtZSk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdmFyIHVuYXJ5ID0gaXNVbmFyeVRhZyQkMSh0YWdOYW1lKSB8fCAhIXVuYXJ5U2xh
c2g7XG5cbiAgICB2YXIgbCA9IG1hdGNoLmF0dHJzLmxlbmd0aDtcbiAgICB2YXIgYXR0cnMgPSBu
ZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZh
ciBhcmdzID0gbWF0Y2guYXR0cnNbaV07XG4gICAgICAvLyBoYWNraXNoIHdvcmsgYXJvdW5kIEZG
IGJ1ZyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk3Nzhc
biAgICAgIGlmIChJU19SRUdFWF9DQVBUVVJJTkdfQlJPS0VOICYmIGFyZ3NbMF0uaW5kZXhPZign
XCJcIicpID09PSAtMSkge1xuICAgICAgICBpZiAoYXJnc1szXSA9PT0gJycpIHsgZGVsZXRlIGFy
Z3NbM107IH1cbiAgICAgICAgaWYgKGFyZ3NbNF0gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzRdOyB9
XG4gICAgICAgIGlmIChhcmdzWzVdID09PSAnJykgeyBkZWxldGUgYXJnc1s1XTsgfVxuICAgICAg
fVxuICAgICAgdmFyIHZhbHVlID0gYXJnc1szXSB8fCBhcmdzWzRdIHx8IGFyZ3NbNV0gfHwgJyc7
XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogYXJnc1sxXSxcbiAgICAgICAgdmFs
dWU6IGRlY29kZUF0dHIoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgb3B0aW9ucy5zaG91
bGREZWNvZGVOZXdsaW5lc1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgh
dW5hcnkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB0YWc6IHRhZ05hbWUsIGxvd2VyQ2FzZWRUYWc6
IHRhZ05hbWUudG9Mb3dlckNhc2UoKSwgYXR0cnM6IGF0dHJzIH0pO1xuICAgICAgbGFzdFRhZyA9
IHRhZ05hbWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgIG9wdGlv
bnMuc3RhcnQodGFnTmFtZSwgYXR0cnMsIHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0Y2guZW5kKTtc
biAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUVuZFRhZyAodGFnTmFtZSwgc3RhcnQsIGVu
ZCkge1xuICAgIHZhciBwb3MsIGxvd2VyQ2FzZWRUYWdOYW1lO1xuICAgIGlmIChzdGFydCA9PSBu
dWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1cbiAgICBpZiAoZW5kID09IG51bGwpIHsgZW5kID0gaW5k
ZXg7IH1cblxuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICBsb3dlckNhc2VkVGFnTmFtZSA9IHRh
Z05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IG9w
ZW5lZCB0YWcgb2YgdGhlIHNhbWUgdHlwZVxuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICBmb3Ig
KHBvcyA9IHN0YWNrLmxlbmd0aCAtIDE7IHBvcyA+PSAwOyBwb3MtLSkge1xuICAgICAgICBpZiAo
c3RhY2tbcG9zXS5sb3dlckNhc2VkVGFnID09PSBsb3dlckNhc2VkVGFnTmFtZSkge1xuICAgICAg
ICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYg
bm8gdGFnIG5hbWUgaXMgcHJvdmlkZWQsIGNsZWFuIHNob3BcbiAgICAgIHBvcyA9IDA7XG4gICAg
fVxuXG4gICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAvLyBDbG9zZSBhbGwgdGhlIG9wZW4gZWxl
bWVudHMsIHVwIHRoZSBzdGFja1xuICAgICAgZm9yICh2YXIgaSA9IHN0YWNrLmxlbmd0aCAtIDE7
IGkgPj0gcG9zOyBpLS0pIHtcbiAgICAgICAgaWYgKGZhbHNlXG4gICAgICAgICkge1xuICAgICAg
ICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFn
KSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5cIilcbiAgICAgICAgICApO1xuICAgICAg
ICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICAgIG9wdGlvbnMuZW5kKHN0
YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8g
UmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRzIGZyb20gdGhlIHN0YWNrXG4gICAgICBzdGFjay5sZW5n
dGggPSBwb3M7XG4gICAgICBsYXN0VGFnID0gcG9zICYmIHN0YWNrW3BvcyAtIDFdLnRhZztcbiAg
ICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAnYnInKSB7XG4gICAgICBpZiAob3B0
aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCB0cnVlLCBz
dGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09
PSAncCcpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3Rh
cnQodGFnTmFtZSwgW10sIGZhbHNlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIGlmIChv
cHRpb25zLmVuZCkge1xuICAgICAgICBvcHRpb25zLmVuZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtc
biAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBvblJFID0gL15AfF52LW9u
Oi87XG52YXIgZGlyUkUgPSAvXnYtfF5AfF46LztcbnZhciBmb3JBbGlhc1JFID0gLyguKj8pXFxz
Kyg/OmlufG9mKVxccysoLiopLztcbnZhciBmb3JJdGVyYXRvclJFID0gL1xcKChcXHtbXn1dKlxc
fXxbXixdKiksKFteLF0qKSg/OiwoW14sXSopKT9cXCkvO1xuXG52YXIgYXJnUkUgPSAvOiguKikk
LztcbnZhciBiaW5kUkUgPSAvXjp8XnYtYmluZDovO1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14u
XSsvZztcblxudmFyIGRlY29kZUhUTUxDYWNoZWQgPSBjYWNoZWQoaGUuZGVjb2RlKTtcblxuLy8g
Y29uZmlndXJhYmxlIHN0YXRlXG52YXIgd2FybiQyO1xudmFyIGRlbGltaXRlcnM7XG52YXIgdHJh
bnNmb3JtcztcbnZhciBwcmVUcmFuc2Zvcm1zO1xudmFyIHBvc3RUcmFuc2Zvcm1zO1xudmFyIHBs
YXRmb3JtSXNQcmVUYWc7XG52YXIgcGxhdGZvcm1NdXN0VXNlUHJvcDtcbnZhciBwbGF0Zm9ybUdl
dFRhZ05hbWVzcGFjZTtcblxuLyoqXG4gKiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAq
L1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4k
MiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcblxuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0
aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVz
dFVzZVByb3AgfHwgbm87XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRU
YWdOYW1lc3BhY2UgfHwgbm87XG5cbiAgdHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24o
b3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtTm9kZScpO1xuICBwcmVUcmFuc2Zvcm1zID0gcGx1
Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwcmVUcmFuc2Zvcm1Ob2RlJyk7XG4g
IHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdw
b3N0VHJhbnNmb3JtTm9kZScpO1xuXG4gIGRlbGltaXRlcnMgPSBvcHRpb25zLmRlbGltaXRlcnM7
XG5cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBwcmVzZXJ2ZVdoaXRlc3BhY2UgPSBvcHRpb25z
LnByZXNlcnZlV2hpdGVzcGFjZSAhPT0gZmFsc2U7XG4gIHZhciByb290O1xuICB2YXIgY3VycmVu
dFBhcmVudDtcbiAgdmFyIGluVlByZSA9IGZhbHNlO1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAg
dmFyIHdhcm5lZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHdhcm5PbmNlIChtc2cpIHtcbiAgICBp
ZiAoIXdhcm5lZCkge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIHdhcm4kMihtc2cpO1xu
ICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZFByZSAoZWxlbWVudCkge1xuICAgIC8vIGNoZWNr
IHByZSBzdGF0ZVxuICAgIGlmIChlbGVtZW50LnByZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7
XG4gICAgfVxuICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAg
aW5QcmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAg
ICB3YXJuOiB3YXJuJDIsXG4gICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAg
IGlzVW5hcnlUYWc6IG9wdGlvbnMuaXNVbmFyeVRhZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBv
cHRpb25zLmNhbkJlTGVmdE9wZW5UYWcsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlv
bnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgc2hvdWxkS2VlcENvbW1lbnQ6IG9wdGlvbnMu
Y29tbWVudHMsXG4gICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0ICh0YWcsIGF0dHJzLCB1bmFyeSkg
e1xuICAgICAgLy8gY2hlY2sgbmFtZXNwYWNlLlxuICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMg
aWYgdGhlcmUgaXMgb25lXG4gICAgICB2YXIgbnMgPSAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50
UGFyZW50Lm5zKSB8fCBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZSh0YWcpO1xuXG4gICAgICAvLyBo
YW5kbGUgSUUgc3ZnIGJ1Z1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBp
ZiAoaXNJRSAmJiBucyA9PT0gJ3N2ZycpIHtcbiAgICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVn
KGF0dHJzKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6
IDEsXG4gICAgICAgIHRhZzogdGFnLFxuICAgICAgICBhdHRyc0xpc3Q6IGF0dHJzLFxuICAgICAg
ICBhdHRyc01hcDogbWFrZUF0dHJzTWFwKGF0dHJzKSxcbiAgICAgICAgcGFyZW50OiBjdXJyZW50
UGFyZW50LFxuICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgIH07XG4gICAgICBpZiAobnMpIHtc
biAgICAgICAgZWxlbWVudC5ucyA9IG5zO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGb3JiaWRk
ZW5UYWcoZWxlbWVudCkgJiYgIWlzU2VydmVyUmVuZGVyaW5nKCkpIHtcbiAgICAgICAgZWxlbWVu
dC5mb3JiaWRkZW4gPSB0cnVlO1xuICAgICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHdhcm4kMihcbiAgICAgICAgICAnVGVtcGxhdGVzIHNob3VsZCBvbmx5IGJlIHJlc3Bv
bnNpYmxlIGZvciBtYXBwaW5nIHRoZSBzdGF0ZSB0byB0aGUgJyArXG4gICAgICAgICAgJ1VJLiBB
dm9pZCBwbGFjaW5nIHRhZ3Mgd2l0aCBzaWRlLWVmZmVjdHMgaW4geW91ciB0ZW1wbGF0ZXMsIHN1
Y2ggYXMgJyArXG4gICAgICAgICAgXCI8XCIgKyB0YWcgKyBcIj5cIiArICcsIGFzIHRoZXkgd2ls
bCBub3QgYmUgcGFyc2VkLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXBwbHkg
cHJlLXRyYW5zZm9ybXNcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlVHJhbnNmb3Jtcy5s
ZW5ndGg7IGkrKykge1xuICAgICAgICBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMp
O1xuICAgICAgfVxuXG4gICAgICBpZiAoIWluVlByZSkge1xuICAgICAgICBwcm9jZXNzUHJlKGVs
ZW1lbnQpO1xuICAgICAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgICAgICBpblZQcmUgPSB0
cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVt
ZW50LnRhZykpIHtcbiAgICAgICAgaW5QcmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlu
VlByZSkge1xuICAgICAgICBwcm9jZXNzUmF3QXR0cnMoZWxlbWVudCk7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBwcm9jZXNzRm9yKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVu
dCk7XG4gICAgICAgIHByb2Nlc3NPbmNlKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzS2V5KGVs
ZW1lbnQpO1xuXG4gICAgICAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBwbGFpbiBl
bGVtZW50IGFmdGVyXG4gICAgICAgIC8vIHJlbW92aW5nIHN0cnVjdHVyYWwgYXR0cmlidXRlc1xu
ICAgICAgICBlbGVtZW50LnBsYWluID0gIWVsZW1lbnQua2V5ICYmICFhdHRycy5sZW5ndGg7XG5c
biAgICAgICAgcHJvY2Vzc1JlZihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc1Nsb3QoZWxlbWVu
dCk7XG4gICAgICAgIHByb2Nlc3NDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIGZvciAodmFy
IGkkMSA9IDA7IGkkMSA8IHRyYW5zZm9ybXMubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgIHRy
YW5zZm9ybXNbaSQxXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9j
ZXNzQXR0cnMoZWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoZWNrUm9vdENv
bnN0cmFpbnRzIChlbCkge1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBpZiAoZWwu
dGFnID09PSAnc2xvdCcgfHwgZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3
YXJuT25jZShcbiAgICAgICAgICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+
IGFzIGNvbXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAg
ICAgICAnY29udGFpbiBtdWx0aXBsZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBpZiAoZWwuYXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtc
biAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBv
biBzdGF0ZWZ1bCBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAg
ICAgICdpdCByZW5kZXJzIG11bHRpcGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAg
ICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxu
ICAgICAgaWYgKCFyb290KSB7XG4gICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVj
a1Jvb3RDb25zdHJhaW50cyhyb290KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkg
e1xuICAgICAgICAvLyBhbGxvdyByb290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFu
ZCB2LWVsc2VcbiAgICAgICAgaWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1l
bnQuZWxzZSkpIHtcbiAgICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAg
ICAgICAgICBhZGRJZkNvbmRpdGlvbihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQu
ZWxzZWlmLFxuICAgICAgICAgICAgYmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAg
ICAgfSBlbHNlIGlmIChmYWxzZSkge1xuICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAg
XCJDb21wb25lbnQgdGVtcGxhdGUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgcm9vdCBlbGVt
ZW50LiBcIiArXG4gICAgICAgICAgICBcIklmIHlvdSBhcmUgdXNpbmcgdi1pZiBvbiBtdWx0aXBs
ZSBlbGVtZW50cywgXCIgK1xuICAgICAgICAgICAgXCJ1c2Ugdi1lbHNlLWlmIHRvIGNoYWluIHRo
ZW0gaW5zdGVhZC5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlm
IChjdXJyZW50UGFyZW50ICYmICFlbGVtZW50LmZvcmJpZGRlbikge1xuICAgICAgICBpZiAoZWxl
bWVudC5lbHNlaWYgfHwgZWxlbWVudC5lbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzc0lmQ29uZGl0
aW9ucyhlbGVtZW50LCBjdXJyZW50UGFyZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50
LnNsb3RTY29wZSkgeyAvLyBzY29wZWQgc2xvdFxuICAgICAgICAgIGN1cnJlbnRQYXJlbnQucGxh
aW4gPSBmYWxzZTtcbiAgICAgICAgICB2YXIgbmFtZSA9IGVsZW1lbnQuc2xvdFRhcmdldCB8fCAn
XCJkZWZhdWx0XCInOyhjdXJyZW50UGFyZW50LnNjb3BlZFNsb3RzIHx8IChjdXJyZW50UGFyZW50
LnNjb3BlZFNsb3RzID0ge30pKVtuYW1lXSA9IGVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgY3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAg
IGVsZW1lbnQucGFyZW50ID0gY3VycmVudFBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgaWYgKCF1bmFyeSkge1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcbiAgICAg
ICAgc3RhY2sucHVzaChlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZFByZShl
bGVtZW50KTtcbiAgICAgIH1cbiAgICAgIC8vIGFwcGx5IHBvc3QtdHJhbnNmb3Jtc1xuICAgICAg
Zm9yICh2YXIgaSQyID0gMDsgaSQyIDwgcG9zdFRyYW5zZm9ybXMubGVuZ3RoOyBpJDIrKykge1xu
ICAgICAgICBwb3N0VHJhbnNmb3Jtc1tpJDJdKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgfVxu
ICAgIH0sXG5cbiAgICBlbmQ6IGZ1bmN0aW9uIGVuZCAoKSB7XG4gICAgICAvLyByZW1vdmUgdHJh
aWxpbmcgd2hpdGVzcGFjZVxuICAgICAgdmFyIGVsZW1lbnQgPSBzdGFja1tzdGFjay5sZW5ndGgg
LSAxXTtcbiAgICAgIHZhciBsYXN0Tm9kZSA9IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGls
ZHJlbi5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChsYXN0Tm9kZSAmJiBsYXN0Tm9kZS50eXBlID09
PSAzICYmIGxhc3ROb2RlLnRleHQgPT09ICcgJyAmJiAhaW5QcmUpIHtcbiAgICAgICAgZWxlbWVu
dC5jaGlsZHJlbi5wb3AoKTtcbiAgICAgIH1cbiAgICAgIC8vIHBvcCBzdGFja1xuICAgICAgc3Rh
Y2subGVuZ3RoIC09IDE7XG4gICAgICBjdXJyZW50UGFyZW50ID0gc3RhY2tbc3RhY2subGVuZ3Ro
IC0gMV07XG4gICAgICBlbmRQcmUoZWxlbWVudCk7XG4gICAgfSxcblxuICAgIGNoYXJzOiBmdW5j
dGlvbiBjaGFycyAodGV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50UGFyZW50KSB7XG4gICAgICAg
IGlmIChmYWxzZSkge1xuICAgICAgICAgIGlmICh0ZXh0ID09PSB0ZW1wbGF0ZSkge1xuICAgICAg
ICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgICdDb21wb25lbnQgdGVtcGxhdGUgcmVxdWly
ZXMgYSByb290IGVsZW1lbnQsIHJhdGhlciB0aGFuIGp1c3QgdGV4dC4nXG4gICAgICAgICAgICAp
O1xuICAgICAgICAgIH0gZWxzZSBpZiAoKHRleHQgPSB0ZXh0LnRyaW0oKSkpIHtcbiAgICAgICAg
ICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAoXCJ0ZXh0IFxcXCJcIiArIHRleHQgKyBcIlxc
XCIgb3V0c2lkZSByb290IGVsZW1lbnQgd2lsbCBiZSBpZ25vcmVkLlwiKVxuICAgICAgICAgICAg
KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAg
ICAvLyBJRSB0ZXh0YXJlYSBwbGFjZWhvbGRlciBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC50YWcgPT09
ICd0ZXh0YXJlYScgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC5hdHRyc01hcC5wbGFjZWhvbGRl
ciA9PT0gdGV4dFxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdmFy
IGNoaWxkcmVuID0gY3VycmVudFBhcmVudC5jaGlsZHJlbjtcbiAgICAgIHRleHQgPSBpblByZSB8
fCB0ZXh0LnRyaW0oKVxuICAgICAgICA/IGlzVGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQg
OiBkZWNvZGVIVE1MQ2FjaGVkKHRleHQpXG4gICAgICAgIC8vIG9ubHkgcHJlc2VydmUgd2hpdGVz
cGFjZSBpZiBpdHMgbm90IHJpZ2h0IGFmdGVyIGEgc3RhcnRpbmcgdGFnXG4gICAgICAgIDogcHJl
c2VydmVXaGl0ZXNwYWNlICYmIGNoaWxkcmVuLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgICAgaWYg
KHRleHQpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb247XG4gICAgICAgIGlmICghaW5WUHJlICYm
IHRleHQgIT09ICcgJyAmJiAoZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh0ZXh0LCBkZWxpbWl0ZXJz
KSkpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4g
ICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgICAgICAgICAgdGV4dDogdGV4
dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRleHQgIT09ICcgJyB8fCAhY2hp
bGRyZW4ubGVuZ3RoIHx8IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnRleHQgIT09ICcg
Jykge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogMyxcbiAg
ICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxu
ICAgIH0sXG4gICAgY29tbWVudDogZnVuY3Rpb24gY29tbWVudCAodGV4dCkge1xuICAgICAgY3Vy
cmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgdHlwZTogMyxcbiAgICAgICAgdGV4
dDogdGV4dCxcbiAgICAgICAgaXNDb21tZW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0p
O1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAo
Z2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRy
dWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbCA9
IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0
cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAg
ICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0ubmFtZSxcbiAg
ICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1ZSlcbiAgICAg
IH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2Rl
IGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5k
aW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAg
ICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhlIGtleSBvbiBy
ZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBleHA7XG4gIH1c
bn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdldEJpbmRpbmdB
dHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7XG4gICAgZWwu
cmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRm9y
IChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2
LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICAg
IGlmICghaW5NYXRjaCkge1xuICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAm
JiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIgKyBleHAp
XG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVsLmZvciA9IGluTWF0Y2hbMl0u
dHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpO1xuICAgIHZhciBpdGVy
YXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgaWYgKGl0ZXJhdG9y
TWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAg
ICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIGlmIChpdGVy
YXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0Y2hbM10u
dHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbC5hbGlhcyA9IGFsaWFzO1xu
ICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBn
ZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBl
eHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxv
Y2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWws
ICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAg
dmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAo
ZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1
bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBm
aW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikg
e1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAg
ICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICB3YXJuJDIo
XG4gICAgICBcInYtXCIgKyAoZWwuZWxzZWlmID8gKCdlbHNlLWlmPVwiJyArIGVsLmVsc2VpZiAr
ICdcIicpIDogJ2Vsc2UnKSArIFwiIFwiICtcbiAgICAgIFwidXNlZCBvbiBlbGVtZW50IDxcIiAr
IChlbC50YWcpICsgXCI+IHdpdGhvdXQgY29ycmVzcG9uZGluZyB2LWlmLlwiXG4gICAgKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBmaW5kUHJldkVsZW1lbnQgKGNoaWxkcmVuKSB7XG4gIHZhciBpID0g
Y2hpbGRyZW4ubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKGNoaWxkcmVuW2ldLnR5
cGUgPT09IDEpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbltpXVxuICAgIH0gZWxzZSB7XG4gICAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgICAgd2FybiQyKFxuICAgICAgICAgIFwidGV4dCBcXFwiXCIg
KyAoY2hpbGRyZW5baV0udGV4dC50cmltKCkpICsgXCJcXFwiIGJldHdlZW4gdi1pZiBhbmQgdi1l
bHNlKC1pZikgXCIgK1xuICAgICAgICAgIFwid2lsbCBiZSBpZ25vcmVkLlwiXG4gICAgICAgICk7
XG4gICAgICB9XG4gICAgICBjaGlsZHJlbi5wb3AoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rp
b24gYWRkSWZDb25kaXRpb24gKGVsLCBjb25kaXRpb24pIHtcbiAgaWYgKCFlbC5pZkNvbmRpdGlv
bnMpIHtcbiAgICBlbC5pZkNvbmRpdGlvbnMgPSBbXTtcbiAgfVxuICBlbC5pZkNvbmRpdGlvbnMu
cHVzaChjb25kaXRpb24pO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzT25jZSAoZWwpIHtcbiAgdmFy
IG9uY2UkJDEgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1vbmNlJyk7XG4gIGlmIChvbmNlJCQx
ICE9IG51bGwpIHtcbiAgICBlbC5vbmNlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9j
ZXNzU2xvdCAoZWwpIHtcbiAgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgZWwuc2xvdE5h
bWUgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ25hbWUnKTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAg
IHdhcm4kMihcbiAgICAgICAgXCJga2V5YCBkb2VzIG5vdCB3b3JrIG9uIDxzbG90PiBiZWNhdXNl
IHNsb3RzIGFyZSBhYnN0cmFjdCBvdXRsZXRzIFwiICtcbiAgICAgICAgXCJhbmQgY2FuIHBvc3Np
Ymx5IGV4cGFuZCBpbnRvIG11bHRpcGxlIGVsZW1lbnRzLiBcIiArXG4gICAgICAgIFwiVXNlIHRo
ZSBrZXkgb24gYSB3cmFwcGluZyBlbGVtZW50IGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxu
ICB9IGVsc2Uge1xuICAgIHZhciBzbG90VGFyZ2V0ID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzbG90
Jyk7XG4gICAgaWYgKHNsb3RUYXJnZXQpIHtcbiAgICAgIGVsLnNsb3RUYXJnZXQgPSBzbG90VGFy
Z2V0ID09PSAnXCJcIicgPyAnXCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtcbiAgICB9XG4gICAg
aWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgZWwuc2xvdFNjb3BlID0gZ2V0QW5k
UmVtb3ZlQXR0cihlbCwgJ3Njb3BlJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nl
c3NDb21wb25lbnQgKGVsKSB7XG4gIHZhciBiaW5kaW5nO1xuICBpZiAoKGJpbmRpbmcgPSBnZXRC
aW5kaW5nQXR0cihlbCwgJ2lzJykpKSB7XG4gICAgZWwuY29tcG9uZW50ID0gYmluZGluZztcbiAg
fVxuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2lubGluZS10ZW1wbGF0ZScpICE9IG51bGwp
IHtcbiAgICBlbC5pbmxpbmVUZW1wbGF0ZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJv
Y2Vzc0F0dHJzIChlbCkge1xuICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgdmFyIGksIGws
IG5hbWUsIHJhd05hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGlzUHJvcDtcbiAgZm9yIChpID0gMCwg
bCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbmFtZSA9IHJhd05hbWUgPSBsaXN0
W2ldLm5hbWU7XG4gICAgdmFsdWUgPSBsaXN0W2ldLnZhbHVlO1xuICAgIGlmIChkaXJSRS50ZXN0
KG5hbWUpKSB7XG4gICAgICAvLyBtYXJrIGVsZW1lbnQgYXMgZHluYW1pY1xuICAgICAgZWwuaGFz
QmluZGluZ3MgPSB0cnVlO1xuICAgICAgLy8gbW9kaWZpZXJzXG4gICAgICBtb2RpZmllcnMgPSBw
YXJzZU1vZGlmaWVycyhuYW1lKTtcbiAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgbmFt
ZSA9IG5hbWUucmVwbGFjZShtb2RpZmllclJFLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoYmlu
ZFJFLnRlc3QobmFtZSkpIHsgLy8gdi1iaW5kXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2Uo
YmluZFJFLCAnJyk7XG4gICAgICAgIHZhbHVlID0gcGFyc2VGaWx0ZXJzKHZhbHVlKTtcbiAgICAg
ICAgaXNQcm9wID0gZmFsc2U7XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgICBp
ZiAobW9kaWZpZXJzLnByb3ApIHtcbiAgICAgICAgICAgIGlzUHJvcCA9IHRydWU7XG4gICAgICAg
ICAgICBuYW1lID0gY2FtZWxpemUobmFtZSk7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2lu
bmVySHRtbCcpIHsgbmFtZSA9ICdpbm5lckhUTUwnOyB9XG4gICAgICAgICAgfVxuICAgICAgICAg
IGlmIChtb2RpZmllcnMuY2FtZWwpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1l
KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5jKSB7XG4gICAgICAg
ICAgICBhZGRIYW5kbGVyKFxuICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgKFwidXBk
YXRlOlwiICsgKGNhbWVsaXplKG5hbWUpKSksXG4gICAgICAgICAgICAgIGdlbkFzc2lnbm1lbnRD
b2RlKHZhbHVlLCBcIiRldmVudFwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAg
ICAgIH1cbiAgICAgICAgaWYgKGlzUHJvcCB8fCAoXG4gICAgICAgICAgIWVsLmNvbXBvbmVudCAm
JiBwbGF0Zm9ybU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwgbmFtZSlcbiAg
ICAgICAgKSkge1xuICAgICAgICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1c
biAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAgbmFt
ZSA9IG5hbWUucmVwbGFjZShvblJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5hbWUs
IHZhbHVlLCBtb2RpZmllcnMsIGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBlbHNlIHsgLy8gbm9y
bWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShkaXJSRSwgJycpO1xu
ICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRjaChh
cmdSRSk7XG4gICAgICAgIHZhciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRjaFsxXTtcbiAgICAg
ICAgaWYgKGFyZykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0oYXJnLmxlbmd0
aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGREaXJlY3RpdmUoZWwsIG5hbWUsIHJhd05h
bWUsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAg
ICAgIGNoZWNrRm9yQWxpYXNNb2RlbChlbCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIGxpdGVyYWwgYXR0cmlidXRlXG4gICAgICBpZiAoZmFsc2Up
IHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQodmFsdWUsIGRlbGltaXRlcnMp
O1xuICAgICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAg
ICAgIG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICAg
J0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4g
ICAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZv
ciBleGFtcGxlLCAnICtcbiAgICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgaWQ9XCJ7eyB2YWwg
fX1cIj4sIHVzZSA8ZGl2IDppZD1cInZhbFwiPi4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgYWRkQXR0cihlbCwgbmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtc
biAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVu
dCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVm
aW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBh
cmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMg
KG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1h
dGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0p
IHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5c
bmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3Ig
KHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAg
ICAgIGZhbHNlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcg
KyBhdHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0gYXR0cnNb
aV0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChlLmcuIHR5
cGU9XCJ4L3RlbXBsYXRlXCIpIG9yIHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRcbmZ1bmN0
aW9uIGlzVGV4dFRhZyAoZWwpIHtcbiAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcgfHwgZWwu
dGFnID09PSAnc3R5bGUnXG59XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkge1xuICBy
ZXR1cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09ICdzY3Jp
cHQnICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRyc01hcC50
eXBlID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGllTlNCdWcg
PSAvXnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5cbi8qIGlz
dGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRycykge1xu
ICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKysp
IHtcbiAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0KGF0dHIu
bmFtZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgs
ICcnKTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59
XG5cbmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZhciBfZWwg
PSBlbDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlhcyA9PT0g
dmFsdWUpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYt
bW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91IGFyZSBi
aW5kaW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMuIFwiICtc
biAgICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZvciBzb3Vy
Y2UgYXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxpYXMgaXMg
bGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAgICAgICBc
IkNvbnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVsIG9uIGFu
IG9iamVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBfZWwgPSBf
ZWwucGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQ
bGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChn
ZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0
aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0
aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2
ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVl
cywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQg
d2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBv
biBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRj
aGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xu
ICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2Fj
aGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9
IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwg
bm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFz
czogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59
XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChc
biAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixh
dHRycycgK1xuICAgIChrZXlzID8gJywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9u
IG1hcmtTdGF0aWMkMSAobm9kZSkge1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5vZGUpO1xu
ICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9uZW50IHNs
b3QgY29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50cyBub3Qg
YWJsZSB0byBtdXRhdGUgc2xvdCBub2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNvbnRlbnQg
ZmFpbHMgZm9yIGhvdC1yZWxvYWRpbmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9ybVJlc2Vy
dmVkVGFnKG5vZGUudGFnKSAmJlxuICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxuICAgICAg
bm9kZS5hdHRyc01hcFsnaW5saW5lLXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xuICAgICAg
cmV0dXJuXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4g
ICAgICBtYXJrU3RhdGljJDEoY2hpbGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcbiAg
ICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUu
aWZDb25kaXRpb25zKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAxLCBsJDEgPSBub2RlLmlmQ29u
ZGl0aW9ucy5sZW5ndGg7IGkkMSA8IGwkMTsgaSQxKyspIHtcbiAgICAgICAgdmFyIGJsb2NrID0g
bm9kZS5pZkNvbmRpdGlvbnNbaSQxXS5ibG9jaztcbiAgICAgICAgbWFya1N0YXRpYyQxKGJsb2Nr
KTtcbiAgICAgICAgaWYgKCFibG9jay5zdGF0aWMpIHtcbiAgICAgICAgICBub2RlLnN0YXRpYyA9
IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1h
cmtTdGF0aWNSb290cyAobm9kZSwgaXNJbkZvcikge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7
XG4gICAgaWYgKG5vZGUuc3RhdGljIHx8IG5vZGUub25jZSkge1xuICAgICAgbm9kZS5zdGF0aWNJ
bkZvciA9IGlzSW5Gb3I7XG4gICAgfVxuICAgIC8vIEZvciBhIG5vZGUgdG8gcXVhbGlmeSBhcyBh
IHN0YXRpYyByb290LCBpdCBzaG91bGQgaGF2ZSBjaGlsZHJlbiB0aGF0XG4gICAgLy8gYXJlIG5v
dCBqdXN0IHN0YXRpYyB0ZXh0LiBPdGhlcndpc2UgdGhlIGNvc3Qgb2YgaG9pc3Rpbmcgb3V0IHdp
bGxcbiAgICAvLyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgYW5kIGl0J3MgYmV0dGVyIG9mZiB0byBq
dXN0IGFsd2F5cyByZW5kZXIgaXQgZnJlc2guXG4gICAgaWYgKG5vZGUuc3RhdGljICYmIG5vZGUu
Y2hpbGRyZW4ubGVuZ3RoICYmICEoXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAm
JlxuICAgICAgbm9kZS5jaGlsZHJlblswXS50eXBlID09PSAzXG4gICAgKSkge1xuICAgICAgbm9k
ZS5zdGF0aWNSb290ID0gdHJ1ZTtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICBu
b2RlLnN0YXRpY1Jvb3QgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtc
biAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcbiAgICAgICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlzSW5Gb3Ig
fHwgISFub2RlLmZvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29uZGl0aW9u
cykge1xuICAgICAgZm9yICh2YXIgaSQxID0gMSwgbCQxID0gbm9kZS5pZkNvbmRpdGlvbnMubGVu
Z3RoOyBpJDEgPCBsJDE7IGkkMSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290cyhub2RlLmlm
Q29uZGl0aW9uc1tpJDFdLmJsb2NrLCBpc0luRm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1c
blxuZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMikgeyAv
LyBleHByZXNzaW9uXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0g
MykgeyAvLyB0ZXh0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9kZS5wcmUg
fHwgKFxuICAgICFub2RlLmhhc0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGluZ3NcbiAg
ICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNl
XG4gICAgIWlzQnVpbHRJblRhZyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5cbiAgICBp
c1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVudFxuICAg
ICFpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5rZXlzKG5v
ZGUpLmV2ZXJ5KGlzU3RhdGljS2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdENoaWxk
T2ZUZW1wbGF0ZUZvciAobm9kZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAgICBub2Rl
ID0gbm9kZS5wYXJlbnQ7XG4gICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7XG4gICAg
ICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICByZXR1cm4g
dHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBmbkV4
cFJFID0gL15cXHMqKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKlxc
KC87XG52YXIgc2ltcGxlUGF0aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpcXC5bQS1a
YS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8k
XVtcXHckXSpdKSpcXHMqJC87XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0g
e1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1
cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRl
JzogWzgsIDQ2XVxufTtcblxuLy8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQgdGhlIGV4
ZWN1dGlvbiBvZiB0aGUgbGlzdGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1cm4gbnVs
bCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRoZSBsaXN0
ZW5lciBmb3IgLm9uY2VcbnZhciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHsgcmV0
dXJuIChcImlmKFwiICsgY29uZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xuXG52YXIg
bW9kaWZpZXJDb2RlID0ge1xuICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOycsXG4g
IHByZXZlbnQ6ICckZXZlbnQucHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFyZChc
IiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBnZW5H
dWFyZChcIiEkZXZlbnQuY3RybEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRldmVudC5z
aGlmdEtleVwiKSxcbiAgYWx0OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxuICBtZXRh
OiBnZW5HdWFyZChcIiEkZXZlbnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQoXCInYnV0
dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxlOiBnZW5H
dWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxuICBy
aWdodDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0g
MlwiKVxufTtcblxuZnVuY3Rpb24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlzTmF0aXZl
LFxuICB3YXJuXG4pIHtcbiAgdmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29u
OnsnO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyID0gZXZl
bnRzW25hbWVdO1xuICAgIC8vICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdodCBj
bGlja3MgZG8gbm90IGFjdHVhbGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChmYWxzZVxu
ICAgICkge1xuICAgICAgd2FybihcbiAgICAgICAgXCJVc2UgXFxcImNvbnRleHRtZW51XFxcIiBp
bnN0ZWFkIG9mIFxcXCJjbGljay5yaWdodFxcXCIgc2luY2UgcmlnaHQgY2xpY2tzIFwiICtcbiAg
ICAgICAgXCJkbyBub3QgYWN0dWFsbHkgZmlyZSBcXFwiY2xpY2tcXFwiIGV2ZW50cy5cIlxuICAg
ICAgKTtcbiAgICB9XG4gICAgcmVzICs9IFwiXFxcIlwiICsgbmFtZSArIFwiXFxcIjpcIiArIChn
ZW5IYW5kbGVyKG5hbWUsIGhhbmRsZXIpKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiByZXMuc2xp
Y2UoMCwgLTEpICsgJ30nXG59XG5cbmZ1bmN0aW9uIGdlbkhhbmRsZXIgKFxuICBuYW1lLFxuICBo
YW5kbGVyXG4pIHtcbiAgaWYgKCFoYW5kbGVyKSB7XG4gICAgcmV0dXJuICdmdW5jdGlvbigpe30n
XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgIHJldHVybiAoXCJb
XCIgKyAoaGFuZGxlci5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGdlbkhhbmRsZXIo
bmFtZSwgaGFuZGxlcik7IH0pLmpvaW4oJywnKSkgKyBcIl1cIilcbiAgfVxuXG4gIHZhciBpc01l
dGhvZFBhdGggPSBzaW1wbGVQYXRoUkUudGVzdChoYW5kbGVyLnZhbHVlKTtcbiAgdmFyIGlzRnVu
Y3Rpb25FeHByZXNzaW9uID0gZm5FeHBSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuXG4gIGlmICgh
aGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICByZXR1cm4gaXNNZXRob2RQYXRoIHx8IGlzRnVuY3Rp
b25FeHByZXNzaW9uXG4gICAgICA/IGhhbmRsZXIudmFsdWVcbiAgICAgIDogKFwiZnVuY3Rpb24o
JGV2ZW50KXtcIiArIChoYW5kbGVyLnZhbHVlKSArIFwifVwiKSAvLyBpbmxpbmUgc3RhdGVtZW50
XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvZGUgPSAnJztcbiAgICB2YXIgZ2VuTW9kaWZpZXJDb2Rl
ID0gJyc7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5t
b2RpZmllcnMpIHtcbiAgICAgIGlmIChtb2RpZmllckNvZGVba2V5XSkge1xuICAgICAgICBnZW5N
b2RpZmllckNvZGUgKz0gbW9kaWZpZXJDb2RlW2tleV07XG4gICAgICAgIC8vIGxlZnQvcmlnaHRc
biAgICAgICAgaWYgKGtleUNvZGVzW2tleV0pIHtcbiAgICAgICAgICBrZXlzLnB1c2goa2V5KTtc
biAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAg
ICB9XG4gICAgfVxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgY29kZSArPSBnZW5LZXlG
aWx0ZXIoa2V5cyk7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBtb2RpZmllcnMgbGlrZSBwcmV2
ZW50IGFuZCBzdG9wIGdldCBleGVjdXRlZCBhZnRlciBrZXkgZmlsdGVyaW5nXG4gICAgaWYgKGdl
bk1vZGlmaWVyQ29kZSkge1xuICAgICAgY29kZSArPSBnZW5Nb2RpZmllckNvZGU7XG4gICAgfVxu
ICAgIHZhciBoYW5kbGVyQ29kZSA9IGlzTWV0aG9kUGF0aFxuICAgICAgPyBoYW5kbGVyLnZhbHVl
ICsgJygkZXZlbnQpJ1xuICAgICAgOiBpc0Z1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgICA/IChc
IihcIiArIChoYW5kbGVyLnZhbHVlKSArIFwiKSgkZXZlbnQpXCIpXG4gICAgICAgIDogaGFuZGxl
ci52YWx1ZTtcbiAgICByZXR1cm4gKFwiZnVuY3Rpb24oJGV2ZW50KXtcIiArIGNvZGUgKyBoYW5k
bGVyQ29kZSArIFwifVwiKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbktleUZpbHRlciAoa2V5cykg
e1xuICByZXR1cm4gKFwiaWYoISgnYnV0dG9uJyBpbiAkZXZlbnQpJiZcIiArIChrZXlzLm1hcChn
ZW5GaWx0ZXJDb2RlKS5qb2luKCcmJicpKSArIFwiKXJldHVybiBudWxsO1wiKVxufVxuXG5mdW5j
dGlvbiBnZW5GaWx0ZXJDb2RlIChrZXkpIHtcbiAgdmFyIGtleVZhbCA9IHBhcnNlSW50KGtleSwg
MTApO1xuICBpZiAoa2V5VmFsKSB7XG4gICAgcmV0dXJuIChcIiRldmVudC5rZXlDb2RlIT09XCIg
KyBrZXlWYWwpXG4gIH1cbiAgdmFyIGFsaWFzID0ga2V5Q29kZXNba2V5XTtcbiAgcmV0dXJuIChc
Il9rKCRldmVudC5rZXlDb2RlLFwiICsgKEpTT04uc3RyaW5naWZ5KGtleSkpICsgKGFsaWFzID8g
JywnICsgSlNPTi5zdHJpbmdpZnkoYWxpYXMpIDogJycpICsgXCIpXCIpXG59XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiBvbiAoZWwsIGRpcikge1xuICBpZiAoZmFsc2UpIHtcbiAgICB3YXJuKFwidi1v
biB3aXRob3V0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgbW9kaWZpZXJzLlwiKTtcbiAgfVxu
ICBlbC53cmFwTGlzdGVuZXJzID0gZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChcIl9nKFwiICsg
Y29kZSArIFwiLFwiICsgKGRpci52YWx1ZSkgKyBcIilcIik7IH07XG59XG5cbi8qICAqL1xuXG5m
dW5jdGlvbiBiaW5kJDEgKGVsLCBkaXIpIHtcbiAgZWwud3JhcERhdGEgPSBmdW5jdGlvbiAoY29k
ZSkge1xuICAgIHJldHVybiAoXCJfYihcIiArIGNvZGUgKyBcIiwnXCIgKyAoZWwudGFnKSArIFwi
JyxcIiArIChkaXIudmFsdWUpICsgXCIsXCIgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZp
ZXJzLnByb3AgPyAndHJ1ZScgOiAnZmFsc2UnKSArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2Rp
ZmllcnMuc3luYyA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbiAgfTtcbn1cblxuLyogICovXG5c
bnZhciBiYXNlRGlyZWN0aXZlcyA9IHtcbiAgb246IG9uLFxuICBiaW5kOiBiaW5kJDEsXG4gIGNs
b2FrOiBub29wXG59O1xuXG4vKiAgKi9cblxudmFyIENvZGVnZW5TdGF0ZSA9IGZ1bmN0aW9uIENv
ZGVnZW5TdGF0ZSAob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlz
Lndhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRoaXMudHJhbnNmb3JtcyA9IHBs
dWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICB0
aGlzLmRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ2dl
bkRhdGEnKTtcbiAgdGhpcy5kaXJlY3RpdmVzID0gZXh0ZW5kKGV4dGVuZCh7fSwgYmFzZURpcmVj
dGl2ZXMpLCBvcHRpb25zLmRpcmVjdGl2ZXMpO1xuICB2YXIgaXNSZXNlcnZlZFRhZyA9IG9wdGlv
bnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdGhpcy5tYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9u
IChlbCkgeyByZXR1cm4gIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcbiAgdGhpcy5vbmNlSWQg
PSAwO1xuICB0aGlzLnN0YXRpY1JlbmRlckZucyA9IFtdO1xufTtcblxuXG5cbmZ1bmN0aW9uIGdl
bmVyYXRlIChcbiAgYXN0LFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIHN0YXRlID0gbmV3IENvZGVn
ZW5TdGF0ZShvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCwgc3Rh
dGUpIDogJ19jKFwiZGl2XCIpJztcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndpdGgodGhp
cyl7cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRl
LnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsLCBzdGF0
ZSkge1xuICBpZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAg
cmV0dXJuIGdlblN0YXRpYyhlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwu
b25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsLCBzdGF0ZSlcbiAgfSBlbHNl
IGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWws
IHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJl
dHVybiBnZW5JZihlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUn
ICYmICFlbC5zbG90VGFyZ2V0KSB7XG4gICAgcmV0dXJuIGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSkg
fHwgJ3ZvaWQgMCdcbiAgfSBlbHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIHJldHVy
biBnZW5TbG90KGVsLCBzdGF0ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyBjb21wb25lbnQgb3IgZWxl
bWVudFxuICAgIHZhciBjb2RlO1xuICAgIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICAgIGNvZGUg
PSBnZW5Db21wb25lbnQoZWwuY29tcG9uZW50LCBlbCwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICB2YXIgZGF0YSA9IGVsLnBsYWluID8gdW5kZWZpbmVkIDogZ2VuRGF0YSQyKGVsLCBzdGF0
ZSk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdl
bkNoaWxkcmVuKGVsLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICBjb2RlID0gXCJfYygnXCIgKyAoZWwu
dGFnKSArIFwiJ1wiICsgKGRhdGEgPyAoXCIsXCIgKyBkYXRhKSA6ICcnKSArIChjaGlsZHJlbiA/
IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiO1xuICAgIH1cbiAgICAvLyBtb2R1bGUg
dHJhbnNmb3Jtc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUudHJhbnNmb3Jtcy5sZW5n
dGg7IGkrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnRyYW5zZm9ybXNbaV0oZWwsIGNvZGUpO1xu
ICAgIH1cbiAgICByZXR1cm4gY29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRpYyBzdWItdHJl
ZXMgb3V0XG5mdW5jdGlvbiBnZW5TdGF0aWMgKGVsLCBzdGF0ZSkge1xuICBlbC5zdGF0aWNQcm9j
ZXNzZWQgPSB0cnVlO1xuICBzdGF0ZS5zdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMp
e3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCIpKTtcbiAgcmV0dXJu
IChcIl9tKFwiICsgKHN0YXRlLnN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSArIChlbC5zdGF0
aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNlXG5mdW5jdGlv
biBnZW5PbmNlIChlbCwgc3RhdGUpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRydWU7XG4gIGlm
IChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwsIHN0YXRl
KVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAg
IHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYg
KHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtc
biAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgh
a2V5KSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRlLndh
cm4oXG4gICAgICAgIFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQg
aXMga2V5ZWQuIFwiXG4gICAgICApO1xuICAgICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwsIHN0YXRl
KVxuICAgIH1cbiAgICByZXR1cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVudChlbCwgc3RhdGUpKSAr
IFwiLFwiICsgKHN0YXRlLm9uY2VJZCsrKSArIChrZXkgPyAoXCIsXCIgKyBrZXkpIDogXCJcIikg
KyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsLCBzdGF0ZSlcbiAg
fVxufVxuXG5mdW5jdGlvbiBnZW5JZiAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBh
bHRFbXB0eVxuKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9u
XG4gIHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25zLnNsaWNlKCksIHN0YXRl
LCBhbHRHZW4sIGFsdEVtcHR5KVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMgKFxuICBj
b25kaXRpb25zLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGlmICgh
Y29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYWx0RW1wdHkgfHwgJ19lKCknXG4gIH1c
blxuICB2YXIgY29uZGl0aW9uID0gY29uZGl0aW9ucy5zaGlmdCgpO1xuICBpZiAoY29uZGl0aW9u
LmV4cCkge1xuICAgIHJldHVybiAoXCIoXCIgKyAoY29uZGl0aW9uLmV4cCkgKyBcIik/XCIgKyAo
Z2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSArIFwiOlwiICsgKGdlbklmQ29uZGl0aW9u
cyhjb25kaXRpb25zLCBzdGF0ZSwgYWx0R2VuLCBhbHRFbXB0eSkpKVxuICB9IGVsc2Uge1xuICAg
IHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpKVxuICB9XG5c
biAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQgZ2VuZXJhdGUgY29kZSBsaWtlIChhKT9fbSgw
KTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5RXhwIChlbCkge1xuICAgIHJldHVybiBhbHRH
ZW5cbiAgICAgID8gYWx0R2VuKGVsLCBzdGF0ZSlcbiAgICAgIDogZWwub25jZVxuICAgICAgICA/
IGdlbk9uY2UoZWwsIHN0YXRlKVxuICAgICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKVxuICB9
XG59XG5cbmZ1bmN0aW9uIGdlbkZvciAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBh
bHRIZWxwZXJcbikge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlh
cztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRv
cjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVs
Lml0ZXJhdG9yMikpIDogJyc7XG5cbiAgaWYgKGZhbHNlXG4gICkge1xuICAgIHN0YXRlLndhcm4o
XG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBp
biBcIiArIGV4cCArIFwiXFxcIj46IGNvbXBvbmVudCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtc
biAgICAgIFwidi1mb3Igc2hvdWxkIGhhdmUgZXhwbGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJT
ZWUgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvbGlzdC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwi
LFxuICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICApO1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2Vk
ID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiAoYWx0SGVscGVyIHx8ICdfbCcp
ICsgXCIoKFwiICsgZXhwICsgXCIpLFwiICtcbiAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMgKyBp
dGVyYXRvcjEgKyBpdGVyYXRvcjIgKyBcIil7XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAoKGFs
dEdlbiB8fCBnZW5FbGVtZW50KShlbCwgc3RhdGUpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlv
biBnZW5EYXRhJDIgKGVsLCBzdGF0ZSkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJl
Y3RpdmVzIGZpcnN0LlxuICAvLyBkaXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIg
cHJvcGVydGllcyBiZWZvcmUgdGhleSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRp
cmVjdGl2ZXMoZWwsIHN0YXRlKTtcbiAgaWYgKGRpcnMpIHsgZGF0YSArPSBkaXJzICsgJywnOyB9
XG5cbiAgLy8ga2V5XG4gIGlmIChlbC5rZXkpIHtcbiAgICBkYXRhICs9IFwia2V5OlwiICsgKGVs
LmtleSkgKyBcIixcIjtcbiAgfVxuICAvLyByZWZcbiAgaWYgKGVsLnJlZikge1xuICAgIGRhdGEg
Kz0gXCJyZWY6XCIgKyAoZWwucmVmKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5yZWZJbkZvcikg
e1xuICAgIGRhdGEgKz0gXCJyZWZJbkZvcjp0cnVlLFwiO1xuICB9XG4gIC8vIHByZVxuICBpZiAo
ZWwucHJlKSB7XG4gICAgZGF0YSArPSBcInByZTp0cnVlLFwiO1xuICB9XG4gIC8vIHJlY29yZCBv
cmlnaW5hbCB0YWcgbmFtZSBmb3IgY29tcG9uZW50cyB1c2luZyBcImlzXCIgYXR0cmlidXRlXG4g
IGlmIChlbC5jb21wb25lbnQpIHtcbiAgICBkYXRhICs9IFwidGFnOlxcXCJcIiArIChlbC50YWcp
ICsgXCJcXFwiLFwiO1xuICB9XG4gIC8vIG1vZHVsZSBkYXRhIGdlbmVyYXRpb24gZnVuY3Rpb25z
XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUuZGF0YUdlbkZucy5sZW5ndGg7IGkrKykge1xu
ICAgIGRhdGEgKz0gc3RhdGUuZGF0YUdlbkZuc1tpXShlbCk7XG4gIH1cbiAgLy8gYXR0cmlidXRl
c1xuICBpZiAoZWwuYXR0cnMpIHtcbiAgICBkYXRhICs9IFwiYXR0cnM6e1wiICsgKGdlblByb3Bz
KGVsLmF0dHJzKSkgKyBcIn0sXCI7XG4gIH1cbiAgLy8gRE9NIHByb3BzXG4gIGlmIChlbC5wcm9w
cykge1xuICAgIGRhdGEgKz0gXCJkb21Qcm9wczp7XCIgKyAoZ2VuUHJvcHMoZWwucHJvcHMpKSAr
IFwifSxcIjtcbiAgfVxuICAvLyBldmVudCBoYW5kbGVyc1xuICBpZiAoZWwuZXZlbnRzKSB7XG4g
ICAgZGF0YSArPSAoZ2VuSGFuZGxlcnMoZWwuZXZlbnRzLCBmYWxzZSwgc3RhdGUud2FybikpICsg
XCIsXCI7XG4gIH1cbiAgaWYgKGVsLm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhh
bmRsZXJzKGVsLm5hdGl2ZUV2ZW50cywgdHJ1ZSwgc3RhdGUud2FybikpICsgXCIsXCI7XG4gIH1c
biAgLy8gc2xvdCB0YXJnZXRcbiAgaWYgKGVsLnNsb3RUYXJnZXQpIHtcbiAgICBkYXRhICs9IFwi
c2xvdDpcIiArIChlbC5zbG90VGFyZ2V0KSArIFwiLFwiO1xuICB9XG4gIC8vIHNjb3BlZCBzbG90
c1xuICBpZiAoZWwuc2NvcGVkU2xvdHMpIHtcbiAgICBkYXRhICs9IChnZW5TY29wZWRTbG90cyhl
bC5zY29wZWRTbG90cywgc3RhdGUpKSArIFwiLFwiO1xuICB9XG4gIC8vIGNvbXBvbmVudCB2LW1v
ZGVsXG4gIGlmIChlbC5tb2RlbCkge1xuICAgIGRhdGEgKz0gXCJtb2RlbDp7dmFsdWU6XCIgKyAo
ZWwubW9kZWwudmFsdWUpICsgXCIsY2FsbGJhY2s6XCIgKyAoZWwubW9kZWwuY2FsbGJhY2spICsg
XCIsZXhwcmVzc2lvbjpcIiArIChlbC5tb2RlbC5leHByZXNzaW9uKSArIFwifSxcIjtcbiAgfVxu
ICAvLyBpbmxpbmUtdGVtcGxhdGVcbiAgaWYgKGVsLmlubGluZVRlbXBsYXRlKSB7XG4gICAgdmFy
IGlubGluZVRlbXBsYXRlID0gZ2VuSW5saW5lVGVtcGxhdGUoZWwsIHN0YXRlKTtcbiAgICBpZiAo
aW5saW5lVGVtcGxhdGUpIHtcbiAgICAgIGRhdGEgKz0gaW5saW5lVGVtcGxhdGUgKyBcIixcIjtc
biAgICB9XG4gIH1cbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLCQvLCAnJykgKyAnfSc7XG4gIC8v
IHYtYmluZCBkYXRhIHdyYXBcbiAgaWYgKGVsLndyYXBEYXRhKSB7XG4gICAgZGF0YSA9IGVsLndy
YXBEYXRhKGRhdGEpO1xuICB9XG4gIC8vIHYtb24gZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwTGlz
dGVuZXJzKSB7XG4gICAgZGF0YSA9IGVsLndyYXBMaXN0ZW5lcnMoZGF0YSk7XG4gIH1cbiAgcmV0
dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gZ2VuRGlyZWN0aXZlcyAoZWwsIHN0YXRlKSB7XG4gIHZh
ciBkaXJzID0gZWwuZGlyZWN0aXZlcztcbiAgaWYgKCFkaXJzKSB7IHJldHVybiB9XG4gIHZhciBy
ZXMgPSAnZGlyZWN0aXZlczpbJztcbiAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcbiAgdmFyIGks
IGwsIGRpciwgbmVlZFJ1bnRpbWU7XG4gIGZvciAoaSA9IDAsIGwgPSBkaXJzLmxlbmd0aDsgaSA8
IGw7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgbmVlZFJ1bnRpbWUgPSB0cnVlO1xu
ICAgIHZhciBnZW4gPSBzdGF0ZS5kaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7
XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxu
ICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJw
YXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCBzdGF0ZS53YXJuKTtcbiAg
ICB9XG4gICAgaWYgKG5lZWRSdW50aW1lKSB7XG4gICAgICBoYXNSdW50aW1lID0gdHJ1ZTtcbiAg
ICAgIHJlcyArPSBcIntuYW1lOlxcXCJcIiArIChkaXIubmFtZSkgKyBcIlxcXCIscmF3TmFtZTpc
XFwiXCIgKyAoZGlyLnJhd05hbWUpICsgXCJcXFwiXCIgKyAoZGlyLnZhbHVlID8gKFwiLHZhbHVl
OihcIiArIChkaXIudmFsdWUpICsgXCIpLGV4cHJlc3Npb246XCIgKyAoSlNPTi5zdHJpbmdpZnko
ZGlyLnZhbHVlKSkpIDogJycpICsgKGRpci5hcmcgPyAoXCIsYXJnOlxcXCJcIiArIChkaXIuYXJn
KSArIFwiXFxcIlwiKSA6ICcnKSArIChkaXIubW9kaWZpZXJzID8gKFwiLG1vZGlmaWVyczpcIiAr
IChKU09OLnN0cmluZ2lmeShkaXIubW9kaWZpZXJzKSkpIDogJycpICsgXCJ9LFwiO1xuICAgIH1c
biAgfVxuICBpZiAoaGFzUnVudGltZSkge1xuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpICsg
J10nXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuSW5saW5lVGVtcGxhdGUgKGVsLCBzdGF0ZSkge1xu
ICB2YXIgYXN0ID0gZWwuY2hpbGRyZW5bMF07XG4gIGlmIChmYWxzZSkge1xuICAgIHN0YXRlLndh
cm4oJ0lubGluZS10ZW1wbGF0ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBjaGls
ZCBlbGVtZW50LicpO1xuICB9XG4gIGlmIChhc3QudHlwZSA9PT0gMSkge1xuICAgIHZhciBpbmxp
bmVSZW5kZXJGbnMgPSBnZW5lcmF0ZShhc3QsIHN0YXRlLm9wdGlvbnMpO1xuICAgIHJldHVybiAo
XCJpbmxpbmVUZW1wbGF0ZTp7cmVuZGVyOmZ1bmN0aW9uKCl7XCIgKyAoaW5saW5lUmVuZGVyRm5z
LnJlbmRlcikgKyBcIn0sc3RhdGljUmVuZGVyRm5zOltcIiArIChpbmxpbmVSZW5kZXJGbnMuc3Rh
dGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbiAoY29kZSkgeyByZXR1cm4gKFwiZnVuY3Rpb24oKXtc
IiArIGNvZGUgKyBcIn1cIik7IH0pLmpvaW4oJywnKSkgKyBcIl19XCIpXG4gIH1cbn1cblxuZnVu
Y3Rpb24gZ2VuU2NvcGVkU2xvdHMgKFxuICBzbG90cyxcbiAgc3RhdGVcbikge1xuICByZXR1cm4g
KFwic2NvcGVkU2xvdHM6X3UoW1wiICsgKE9iamVjdC5rZXlzKHNsb3RzKS5tYXAoZnVuY3Rpb24g
KGtleSkge1xuICAgICAgcmV0dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90c1trZXldLCBzdGF0
ZSlcbiAgICB9KS5qb2luKCcsJykpICsgXCJdKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRT
bG90IChcbiAga2V5LFxuICBlbCxcbiAgc3RhdGVcbikge1xuICBpZiAoZWwuZm9yICYmICFlbC5m
b3JQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuRm9yU2NvcGVkU2xvdChrZXksIGVsLCBzdGF0
ZSlcbiAgfVxuICByZXR1cm4gXCJ7a2V5OlwiICsga2V5ICsgXCIsZm46ZnVuY3Rpb24oXCIgKyAo
U3RyaW5nKGVsLmF0dHJzTWFwLnNjb3BlKSkgKyBcIil7XCIgK1xuICAgIFwicmV0dXJuIFwiICsg
KGVsLnRhZyA9PT0gJ3RlbXBsYXRlJ1xuICAgICAgPyBnZW5DaGlsZHJlbihlbCwgc3RhdGUpIHx8
ICd2b2lkIDAnXG4gICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKSkgKyBcIn19XCJcbn1cblxu
ZnVuY3Rpb24gZ2VuRm9yU2NvcGVkU2xvdCAoXG4gIGtleSxcbiAgZWwsXG4gIHN0YXRlXG4pIHtc
biAgdmFyIGV4cCA9IGVsLmZvcjtcbiAgdmFyIGFsaWFzID0gZWwuYWxpYXM7XG4gIHZhciBpdGVy
YXRvcjEgPSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IxKSkgOiAnJztcbiAg
dmFyIGl0ZXJhdG9yMiA9IGVsLml0ZXJhdG9yMiA/IChcIixcIiArIChlbC5pdGVyYXRvcjIpKSA6
ICcnO1xuICBlbC5mb3JQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0
dXJuIFwiX2woKFwiICsgZXhwICsgXCIpLFwiICtcbiAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMg
KyBpdGVyYXRvcjEgKyBpdGVyYXRvcjIgKyBcIil7XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAo
Z2VuU2NvcGVkU2xvdChrZXksIGVsLCBzdGF0ZSkpICtcbiAgICAnfSknXG59XG5cbmZ1bmN0aW9u
IGdlbkNoaWxkcmVuIChcbiAgZWwsXG4gIHN0YXRlLFxuICBjaGVja1NraXAsXG4gIGFsdEdlbkVs
ZW1lbnQsXG4gIGFsdEdlbk5vZGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtc
biAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hpbGRyZW5bMF07XG4g
ICAgLy8gb3B0aW1pemUgc2luZ2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0g
MSAmJlxuICAgICAgZWwkMS5mb3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAndGVtcGxhdGUnICYm
XG4gICAgICBlbCQxLnRhZyAhPT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICByZXR1cm4gKGFsdEdl
bkVsZW1lbnQgfHwgZ2VuRWxlbWVudCkoZWwkMSwgc3RhdGUpXG4gICAgfVxuICAgIHZhciBub3Jt
YWxpemF0aW9uVHlwZSA9IGNoZWNrU2tpcFxuICAgICAgPyBnZXROb3JtYWxpemF0aW9uVHlwZShj
aGlsZHJlbiwgc3RhdGUubWF5YmVDb21wb25lbnQpXG4gICAgICA6IDA7XG4gICAgdmFyIGdlbiA9
IGFsdEdlbk5vZGUgfHwgZ2VuTm9kZTtcbiAgICByZXR1cm4gKFwiW1wiICsgKGNoaWxkcmVuLm1h
cChmdW5jdGlvbiAoYykgeyByZXR1cm4gZ2VuKGMsIHN0YXRlKTsgfSkuam9pbignLCcpKSArIFwi
XVwiICsgKG5vcm1hbGl6YXRpb25UeXBlID8gKFwiLFwiICsgbm9ybWFsaXphdGlvblR5cGUpIDog
JycpKVxuICB9XG59XG5cbi8vIGRldGVybWluZSB0aGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgZm9y
IHRoZSBjaGlsZHJlbiBhcnJheS5cbi8vIDA6IG5vIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4vLyAx
OiBzaW1wbGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgKHBvc3NpYmxlIDEtbGV2ZWwgZGVlcCBuZXN0
ZWQgYXJyYXkpXG4vLyAyOiBmdWxsIG5vcm1hbGl6YXRpb24gbmVlZGVkXG5mdW5jdGlvbiBnZXRO
b3JtYWxpemF0aW9uVHlwZSAoXG4gIGNoaWxkcmVuLFxuICBtYXliZUNvbXBvbmVudFxuKSB7XG4g
IHZhciByZXMgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsr
KSB7XG4gICAgdmFyIGVsID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGVsLnR5cGUgIT09IDEpIHtc
biAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChuZWVkc05vcm1hbGl6YXRpb24oZWwpIHx8
XG4gICAgICAgIChlbC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rp
b24gKGMpIHsgcmV0dXJuIG5lZWRzTm9ybWFsaXphdGlvbihjLmJsb2NrKTsgfSkpKSB7XG4gICAg
ICByZXMgPSAyO1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKG1heWJlQ29tcG9uZW50KGVs
KSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1
bmN0aW9uIChjKSB7IHJldHVybiBtYXliZUNvbXBvbmVudChjLmJsb2NrKTsgfSkpKSB7XG4gICAg
ICByZXMgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5lZWRz
Tm9ybWFsaXphdGlvbiAoZWwpIHtcbiAgcmV0dXJuIGVsLmZvciAhPT0gdW5kZWZpbmVkIHx8IGVs
LnRhZyA9PT0gJ3RlbXBsYXRlJyB8fCBlbC50YWcgPT09ICdzbG90J1xufVxuXG5mdW5jdGlvbiBn
ZW5Ob2RlIChub2RlLCBzdGF0ZSkge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgcmV0
dXJuIGdlbkVsZW1lbnQobm9kZSwgc3RhdGUpXG4gIH0gaWYgKG5vZGUudHlwZSA9PT0gMyAmJiBu
b2RlLmlzQ29tbWVudCkge1xuICAgIHJldHVybiBnZW5Db21tZW50KG5vZGUpXG4gIH0gZWxzZSB7
XG4gICAgcmV0dXJuIGdlblRleHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0
ZXh0KSB7XG4gIHJldHVybiAoXCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQu
ZXhwcmVzc2lvbiAvLyBubyBuZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBf
cygpXG4gICAgOiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50
ZXh0KSkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlbkNvbW1lbnQgKGNvbW1lbnQpIHtcbiAg
cmV0dXJuIChcIl9lKFwiICsgKEpTT04uc3RyaW5naWZ5KGNvbW1lbnQudGV4dCkpICsgXCIpXCIp
XG59XG5cbmZ1bmN0aW9uIGdlblNsb3QgKGVsLCBzdGF0ZSkge1xuICB2YXIgc2xvdE5hbWUgPSBl
bC5zbG90TmFtZSB8fCAnXCJkZWZhdWx0XCInO1xuICB2YXIgY2hpbGRyZW4gPSBnZW5DaGlsZHJl
bihlbCwgc3RhdGUpO1xuICB2YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVu
ID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBlbC5hdHRycyAmJiAo
XCJ7XCIgKyAoZWwuYXR0cnMubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiAoKGNhbWVsaXplKGEu
bmFtZSkpICsgXCI6XCIgKyAoYS52YWx1ZSkpOyB9KS5qb2luKCcsJykpICsgXCJ9XCIpO1xuICB2
YXIgYmluZCQkMSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQnXTtcbiAgaWYgKChhdHRycyB8fCBiaW5k
JCQxKSAmJiAhY2hpbGRyZW4pIHtcbiAgICByZXMgKz0gXCIsbnVsbFwiO1xuICB9XG4gIGlmIChh
dHRycykge1xuICAgIHJlcyArPSBcIixcIiArIGF0dHJzO1xuICB9XG4gIGlmIChiaW5kJCQxKSB7
XG4gICAgcmVzICs9IChhdHRycyA/ICcnIDogJyxudWxsJykgKyBcIixcIiArIGJpbmQkJDE7XG4g
IH1cbiAgcmV0dXJuIHJlcyArICcpJ1xufVxuXG4vLyBjb21wb25lbnROYW1lIGlzIGVsLmNvbXBv
bmVudCwgdGFrZSBpdCBhcyBhcmd1bWVudCB0byBzaHVuIGZsb3cncyBwZXNzaW1pc3RpYyByZWZp
bmVtZW50XG5mdW5jdGlvbiBnZW5Db21wb25lbnQgKFxuICBjb21wb25lbnROYW1lLFxuICBlbCxc
biAgc3RhdGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwg
OiBnZW5DaGlsZHJlbihlbCwgc3RhdGUsIHRydWUpO1xuICByZXR1cm4gKFwiX2MoXCIgKyBjb21w
b25lbnROYW1lICsgXCIsXCIgKyAoZ2VuRGF0YSQyKGVsLCBzdGF0ZSkpICsgKGNoaWxkcmVuID8g
KFwiLFwiICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblByb3Bz
IChwcm9wcykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMu
bGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgIHJlcyArPSBcIlxc
XCJcIiArIChwcm9wLm5hbWUpICsgXCJcXFwiOlwiICsgKHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5l
cyhwcm9wLnZhbHVlKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKVxu
fVxuXG4vLyAjMzg5NSwgIzQyNjhcbmZ1bmN0aW9uIHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyAo
dGV4dCkge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIw
MjgnKVxuICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKVxufVxuXG4vKiAgKi9c
blxuLy8gdGhlc2Uga2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25z
LCBidXQgb3BlcmF0b3JzIGxpa2Vcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFs
bG93ZWRcbnZhciBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxu
ICAnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxj
YXRjaCxjbGFzcyxjb25zdCwnICtcbiAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxl
eHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcbiAgJ2V4dGVuZHMsZmluYWxs
eSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMnXG4pLnNwbGl0KCcsJykuam9p
bignXFxcXGJ8XFxcXGInKSArICdcXFxcYicpO1xuXG4vLyB0aGVzZSB1bmFyeSBvcGVyYXRvcnMg
c2hvdWxkIG5vdCBiZSB1c2VkIGFzIHByb3BlcnR5L21ldGhvZCBuYW1lc1xudmFyIHVuYXJ5T3Bl
cmF0b3JzUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkZWxldGUsdHlwZW9mLHZvaWQn
XG4pLnNwbGl0KCcsJykuam9pbignXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKXxcXFxcYicpICsg
J1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCknKTtcblxuLy8gY2hlY2sgdmFsaWQgaWRlbnRpZmll
ciBmb3Igdi1mb3JcbnZhciBpZGVudFJFID0gL1tBLVphLXpfJF1bXFx3JF0qLztcblxuLy8gc3Ry
aXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xudmFyIHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xc
XFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4p
KlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztc
blxuLy8gZGV0ZWN0IHByb2JsZW1hdGljIGV4cHJlc3Npb25zIGluIGEgdGVtcGxhdGVcbmZ1bmN0
aW9uIGRldGVjdEVycm9ycyAoYXN0KSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgaWYgKGFzdCkg
e1xuICAgIGNoZWNrTm9kZShhc3QsIGVycm9ycyk7XG4gIH1cbiAgcmV0dXJuIGVycm9yc1xufVxu
XG5mdW5jdGlvbiBjaGVja05vZGUgKG5vZGUsIGVycm9ycykge1xuICBpZiAobm9kZS50eXBlID09
PSAxKSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiBub2RlLmF0dHJzTWFwKSB7XG4gICAgICBpZiAo
ZGlyUkUudGVzdChuYW1lKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBub2RlLmF0dHJzTWFwW25h
bWVdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ3YtZm9y
Jykge1xuICAgICAgICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxcIlwiICsgdmFsdWUg
KyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvblJFLnRlc3QobmFt
ZSkpIHtcbiAgICAgICAgICAgIGNoZWNrRXZlbnQodmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsg
dmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICAgIGNoZWNrRXhwcmVzc2lvbih2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwi
XFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9
XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9k
ZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGVja05vZGUobm9kZS5jaGlsZHJl
bltpXSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAobm9kZS50eXBlID09
PSAyKSB7XG4gICAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbiwgbm9kZS50ZXh0LCBl
cnJvcnMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXZlbnQgKGV4cCwgdGV4dCwgZXJyb3Jz
KSB7XG4gIHZhciBzdGlwcGVkID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpO1xuICB2
YXIga2V5d29yZE1hdGNoID0gc3RpcHBlZC5tYXRjaCh1bmFyeU9wZXJhdG9yc1JFKTtcbiAgaWYg
KGtleXdvcmRNYXRjaCAmJiBzdGlwcGVkLmNoYXJBdChrZXl3b3JkTWF0Y2guaW5kZXggLSAxKSAh
PT0gJyQnKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3Jp
cHQgdW5hcnkgb3BlcmF0b3IgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgXCJcXFwiXCIg
KyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQudHJp
bSgpKVxuICAgICk7XG4gIH1cbiAgY2hlY2tFeHByZXNzaW9uKGV4cCwgdGV4dCwgZXJyb3JzKTtc
bn1cblxuZnVuY3Rpb24gY2hlY2tGb3IgKG5vZGUsIHRleHQsIGVycm9ycykge1xuICBjaGVja0V4
cHJlc3Npb24obm9kZS5mb3IgfHwgJycsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmll
cihub2RlLmFsaWFzLCAndi1mb3IgYWxpYXMnLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50
aWZpZXIobm9kZS5pdGVyYXRvcjEsICd2LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG4g
IGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJhdG9yMiwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwg
ZXJyb3JzKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tJZGVudGlmaWVyIChpZGVudCwgdHlwZSwgdGV4
dCwgZXJyb3JzKSB7XG4gIGlmICh0eXBlb2YgaWRlbnQgPT09ICdzdHJpbmcnICYmICFpZGVudFJF
LnRlc3QoaWRlbnQpKSB7XG4gICAgZXJyb3JzLnB1c2goKFwiaW52YWxpZCBcIiArIHR5cGUgKyBc
IiBcXFwiXCIgKyBpZGVudCArIFwiXFxcIiBpbiBleHByZXNzaW9uOiBcIiArICh0ZXh0LnRyaW0o
KSkpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V4cHJlc3Npb24gKGV4cCwgdGV4dCwgZXJy
b3JzKSB7XG4gIHRyeSB7XG4gICAgbmV3IEZ1bmN0aW9uKChcInJldHVybiBcIiArIGV4cCkpO1xu
ICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIGtleXdvcmRNYXRjaCA9IGV4cC5yZXBsYWNlKHN0cmlw
U3RyaW5nUkUsICcnKS5tYXRjaChwcm9oaWJpdGVkS2V5d29yZFJFKTtcbiAgICBpZiAoa2V5d29y
ZE1hdGNoKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgXCJhdm9pZCB1c2luZyBKYXZh
U2NyaXB0IGtleXdvcmQgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgICBcIlxcXCJcIiAr
IChrZXl3b3JkTWF0Y2hbMF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIgKyAodGV4dC50cmlt
KCkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlk
IGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSkpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb24gKGNvZGUsIGVycm9ycykge1xuICB0cnkge1xu
ICAgIHJldHVybiBuZXcgRnVuY3Rpb24oY29kZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJy
b3JzLnB1c2goeyBlcnI6IGVyciwgY29kZTogY29kZSB9KTtcbiAgICByZXR1cm4gbm9vcFxuICB9
XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVUb0Z1bmN0aW9uRm4gKGNvbXBpbGUpIHtcbiAg
dmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICByZXR1cm4gZnVuY3Rpb24gY29t
cGlsZVRvRnVuY3Rpb25zIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIHZtXG4g
ICkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLyBkZXRlY3QgcG9zc2libGUgQ1NQ
IHJlc3RyaWN0aW9uXG4gICAgICB0cnkge1xuICAgICAgICBuZXcgRnVuY3Rpb24oJ3JldHVybiAx
Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLnRvU3RyaW5nKCkubWF0Y2go
L3Vuc2FmZS1ldmFsfENTUC8pKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdJdCBz
ZWVtcyB5b3UgYXJlIHVzaW5nIHRoZSBzdGFuZGFsb25lIGJ1aWxkIG9mIFZ1ZS5qcyBpbiBhbiAn
ICtcbiAgICAgICAgICAgICdlbnZpcm9ubWVudCB3aXRoIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IHRoYXQgcHJvaGliaXRzIHVuc2FmZS1ldmFsLiAnICtcbiAgICAgICAgICAgICdUaGUgdGVtcGxh
dGUgY29tcGlsZXIgY2Fubm90IHdvcmsgaW4gdGhpcyBlbnZpcm9ubWVudC4gQ29uc2lkZXIgJyAr
XG4gICAgICAgICAgICAncmVsYXhpbmcgdGhlIHBvbGljeSB0byBhbGxvdyB1bnNhZmUtZXZhbCBv
ciBwcmUtY29tcGlsaW5nIHlvdXIgJyArXG4gICAgICAgICAgICAndGVtcGxhdGVzIGludG8gcmVu
ZGVyIGZ1bmN0aW9ucy4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1c
blxuICAgIC8vIGNoZWNrIGNhY2hlXG4gICAgdmFyIGtleSA9IG9wdGlvbnMuZGVsaW1pdGVyc1xu
ICAgICAgPyBTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXJzKSArIHRlbXBsYXRlXG4gICAgICA6IHRl
bXBsYXRlO1xuICAgIGlmIChjYWNoZVtrZXldKSB7XG4gICAgICByZXR1cm4gY2FjaGVba2V5XVxu
ICAgIH1cblxuICAgIC8vIGNvbXBpbGVcbiAgICB2YXIgY29tcGlsZWQgPSBjb21waWxlKHRlbXBs
YXRlLCBvcHRpb25zKTtcblxuICAgIC8vIGNoZWNrIGNvbXBpbGF0aW9uIGVycm9ycy90aXBzXG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICBpZiAoY29tcGlsZWQuZXJyb3JzICYmIGNvbXBpbGVkLmVy
cm9ycy5sZW5ndGgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIkVycm9yIGNvbXBpbGlu
ZyB0ZW1wbGF0ZTpcXG5cXG5cIiArIHRlbXBsYXRlICsgXCJcXG5cXG5cIiArXG4gICAgICAgICAg
Y29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9
KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9
XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAg
ICAgICBjb21waWxlZC50aXBzLmZvckVhY2goZnVuY3Rpb24gKG1zZykgeyByZXR1cm4gdGlwKG1z
Zywgdm0pOyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0dXJuIGNvZGUgaW50byBmdW5j
dGlvbnNcbiAgICB2YXIgcmVzID0ge307XG4gICAgdmFyIGZuR2VuRXJyb3JzID0gW107XG4gICAg
cmVzLnJlbmRlciA9IGNyZWF0ZUZ1bmN0aW9uKGNvbXBpbGVkLnJlbmRlciwgZm5HZW5FcnJvcnMp
O1xuICAgIHJlcy5zdGF0aWNSZW5kZXJGbnMgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubWFw
KGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb24oY29kZSwgZm5H
ZW5FcnJvcnMpXG4gICAgfSk7XG5cbiAgICAvLyBjaGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVy
cm9ycy5cbiAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBp
biB0aGUgY29tcGlsZXIgaXRzZWxmLlxuICAgIC8vIG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9w
bWVudCB1c2VcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtc
biAgICAgIGlmICgoIWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkg
JiYgZm5HZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWls
ZWQgdG8gZ2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdl
bkVycm9ycy5tYXAoZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5l
cnI7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1
cm4gKChlcnIudG9TdHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xu
ICAgICAgICB9KS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAg
fVxuICAgIH1cblxuICAgIHJldHVybiAoY2FjaGVba2V5XSA9IHJlcylcbiAgfVxufVxuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJDcmVhdG9yIChiYXNlQ29tcGlsZSkge1xuICBy
ZXR1cm4gZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gICAgZnVuY3Rp
b24gY29tcGlsZSAoXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApIHtcbiAg
ICAgIHZhciBmaW5hbE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zKTtcbiAgICAg
IHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciB0aXBzID0gW107XG4gICAgICBmaW5hbE9wdGlv
bnMud2FybiA9IGZ1bmN0aW9uIChtc2csIHRpcCkge1xuICAgICAgICAodGlwID8gdGlwcyA6IGVy
cm9ycykucHVzaChtc2cpO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAg
ICAgLy8gbWVyZ2UgY3VzdG9tIG1vZHVsZXNcbiAgICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykg
e1xuICAgICAgICAgIGZpbmFsT3B0aW9ucy5tb2R1bGVzID1cbiAgICAgICAgICAgIChiYXNlT3B0
aW9ucy5tb2R1bGVzIHx8IFtdKS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAgICAgfVxu
ICAgICAgICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgICBpZiAob3B0aW9ucy5k
aXJlY3RpdmVzKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25zLmRpcmVjdGl2ZXMgPSBleHRlbmQo
XG4gICAgICAgICAgICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMpLFxuICAg
ICAgICAgICAgb3B0aW9ucy5kaXJlY3RpdmVzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAg
ICAgICAvLyBjb3B5IG90aGVyIG9wdGlvbnNcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9wdGlv
bnMpIHtcbiAgICAgICAgICBpZiAoa2V5ICE9PSAnbW9kdWxlcycgJiYga2V5ICE9PSAnZGlyZWN0
aXZlcycpIHtcbiAgICAgICAgICAgIGZpbmFsT3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcGlsZWQgPSBi
YXNlQ29tcGlsZSh0ZW1wbGF0ZSwgZmluYWxPcHRpb25zKTtcbiAgICAgIGlmIChmYWxzZSkge1xu
ICAgICAgICBlcnJvcnMucHVzaC5hcHBseShlcnJvcnMsIGRldGVjdEVycm9ycyhjb21waWxlZC5h
c3QpKTtcbiAgICAgIH1cbiAgICAgIGNvbXBpbGVkLmVycm9ycyA9IGVycm9ycztcbiAgICAgIGNv
bXBpbGVkLnRpcHMgPSB0aXBzO1xuICAgICAgcmV0dXJuIGNvbXBpbGVkXG4gICAgfVxuXG4gICAg
cmV0dXJuIHtcbiAgICAgIGNvbXBpbGU6IGNvbXBpbGUsXG4gICAgICBjb21waWxlVG9GdW5jdGlv
bnM6IGNyZWF0ZUNvbXBpbGVUb0Z1bmN0aW9uRm4oY29tcGlsZSlcbiAgICB9XG4gIH1cbn1cblxu
LyogICovXG5cbi8vIGBjcmVhdGVDb21waWxlckNyZWF0b3JgIGFsbG93cyBjcmVhdGluZyBjb21w
aWxlcnMgdGhhdCB1c2UgYWx0ZXJuYXRpdmVcbi8vIHBhcnNlci9vcHRpbWl6ZXIvY29kZWdlbiwg
ZS5nIHRoZSBTU1Igb3B0aW1pemluZyBjb21waWxlci5cbi8vIEhlcmUgd2UganVzdCBleHBvcnQg
YSBkZWZhdWx0IGNvbXBpbGVyIHVzaW5nIHRoZSBkZWZhdWx0IHBhcnRzLlxudmFyIGNyZWF0ZUNv
bXBpbGVyID0gY3JlYXRlQ29tcGlsZXJDcmVhdG9yKGZ1bmN0aW9uIGJhc2VDb21waWxlIChcbiAg
dGVtcGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB2YXIgYXN0ID0gcGFyc2UodGVtcGxhdGUudHJp
bSgpLCBvcHRpb25zKTtcbiAgb3B0aW1pemUoYXN0LCBvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBn
ZW5lcmF0ZShhc3QsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIGFzdDogYXN0LFxuICAgIHJl
bmRlcjogY29kZS5yZW5kZXIsXG4gICAgc3RhdGljUmVuZGVyRm5zOiBjb2RlLnN0YXRpY1JlbmRl
ckZuc1xuICB9XG59KTtcblxuLyogICovXG5cbnZhciByZWYkMSA9IGNyZWF0ZUNvbXBpbGVyKGJh
c2VPcHRpb25zKTtcbnZhciBjb21waWxlVG9GdW5jdGlvbnMgPSByZWYkMS5jb21waWxlVG9GdW5j
dGlvbnM7XG5cbi8qICAqL1xuXG52YXIgaWRUb1RlbXBsYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChp
ZCkge1xuICB2YXIgZWwgPSBxdWVyeShpZCk7XG4gIHJldHVybiBlbCAmJiBlbC5pbm5lckhUTUxc
bn0pO1xuXG52YXIgbW91bnQgPSBWdWUkMy5wcm90b3R5cGUuJG1vdW50O1xuVnVlJDMucHJvdG90
eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGVsID0g
ZWwgJiYgcXVlcnkoZWwpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZWwg
PT09IGRvY3VtZW50LmJvZHkgfHwgZWwgPT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xu
ICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiRG8g
bm90IG1vdW50IFZ1ZSB0byA8aHRtbD4gb3IgPGJvZHk+IC0gbW91bnQgdG8gbm9ybWFsIGVsZW1l
bnRzIGluc3RlYWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB2YXIgb3B0
aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gIC8vIHJlc29sdmUgdGVtcGxhdGUvZWwgYW5kIGNvbnZl
cnQgdG8gcmVuZGVyIGZ1bmN0aW9uXG4gIGlmICghb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2YXIg
dGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlO1xuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAg
aWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRlbXBsYXRl
LmNoYXJBdCgwKSA9PT0gJyMnKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpZFRvVGVtcGxhdGUo
dGVtcGxhdGUpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAg
IGlmIChmYWxzZSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgKFwiVGVtcGxh
dGUgZWxlbWVudCBub3QgZm91bmQgb3IgaXMgZW1wdHk6IFwiICsgKG9wdGlvbnMudGVtcGxhdGUp
KSxcbiAgICAgICAgICAgICAgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAg
ICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcbiAgICAgICAgdGVt
cGxhdGUgPSB0ZW1wbGF0ZS5pbm5lckhUTUw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgICAgICB3YXJuKCdpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjonICsgdGVt
cGxhdGUsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG4g
ICAgfSBlbHNlIGlmIChlbCkge1xuICAgICAgdGVtcGxhdGUgPSBnZXRPdXRlckhUTUwoZWwpO1xu
ICAgIH1cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUnKTtcbiAgICAgIH1c
blxuICAgICAgdmFyIHJlZiA9IGNvbXBpbGVUb0Z1bmN0aW9ucyh0ZW1wbGF0ZSwge1xuICAgICAg
ICBzaG91bGREZWNvZGVOZXdsaW5lczogc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgICAgIGRl
bGltaXRlcnM6IG9wdGlvbnMuZGVsaW1pdGVycyxcbiAgICAgICAgY29tbWVudHM6IG9wdGlvbnMu
Y29tbWVudHNcbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7
XG4gICAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICAg
IG9wdGlvbnMucmVuZGVyID0gcmVuZGVyO1xuICAgICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMg
PSBzdGF0aWNSZW5kZXJGbnM7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAg
ICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUgZW5kJyk7XG4gICAgICAgIG1l
YXN1cmUoKCh0aGlzLl9uYW1lKSArIFwiIGNvbXBpbGVcIiksICdjb21waWxlJywgJ2NvbXBpbGUg
ZW5kJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtb3VudC5jYWxsKHRoaXMsIGVs
LCBoeWRyYXRpbmcpXG59O1xuXG4vKipcbiAqIEdldCBvdXRlckhUTUwgb2YgZWxlbWVudHMsIHRh
a2luZyBjYXJlXG4gKiBvZiBTVkcgZWxlbWVudHMgaW4gSUUgYXMgd2VsbC5cbiAqL1xuZnVuY3Rp
b24gZ2V0T3V0ZXJIVE1MIChlbCkge1xuICBpZiAoZWwub3V0ZXJIVE1MKSB7XG4gICAgcmV0dXJu
IGVsLm91dGVySFRNTFxuICB9IGVsc2Uge1xuICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwuY2xvbmVO
b2RlKHRydWUpKTtcbiAgICByZXR1cm4gY29udGFpbmVyLmlubmVySFRNTFxuICB9XG59XG5cblZ1
ZSQzLmNvbXBpbGUgPSBjb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBl
eHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoVnVlJDMpO1xuXG4v
KiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoX193ZWJwYWNrX2V4cG9ydHNfXywgX193
ZWJwYWNrX3JlcXVpcmVfXygxMikpKVxuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9f
ICovXG5cbi8vIHRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNv
bXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmlu
YWwgd2VicGFjayB1c2VyIGJ1bmRsZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1h
bGl6ZUNvbXBvbmVudCAoXG4gIHJhd1NjcmlwdEV4cG9ydHMsXG4gIGNvbXBpbGVkVGVtcGxhdGUs
XG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciAvKiBzZXJ2
ZXIgb25seSAqL1xuKSB7XG4gIHZhciBlc01vZHVsZVxuICB2YXIgc2NyaXB0RXhwb3J0cyA9IHJh
d1NjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzIHx8IHt9XG5cbiAgLy8gRVM2IG1vZHVs
ZXMgaW50ZXJvcFxuICB2YXIgdHlwZSA9IHR5cGVvZiByYXdTY3JpcHRFeHBvcnRzLmRlZmF1bHRc
biAgaWYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBl
c01vZHVsZSA9IHJhd1NjcmlwdEV4cG9ydHNcbiAgICBzY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0
RXhwb3J0cy5kZWZhdWx0XG4gIH1cblxuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9y
dCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5j
dGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xu
XG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKGNvbXBpbGVkVGVtcGxhdGUpIHtcbiAgICBv
cHRpb25zLnJlbmRlciA9IGNvbXBpbGVkVGVtcGxhdGUucmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0
aWNSZW5kZXJGbnMgPSBjb21waWxlZFRlbXBsYXRlLnN0YXRpY1JlbmRlckZuc1xuICB9XG5cbiAg
Ly8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gc2Nv
cGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2Vy
dmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMg
aW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQg
Y2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwg
Ly8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAm
JiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8g
Mi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlw
ZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRl
eHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9u
ZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHls
ZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9u
ZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBp
ZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBj
b250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAg
IH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVk
IGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMu
X3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhv
b2sgPSBpbmplY3RTdHlsZXNcbiAgfVxuXG4gIGlmIChob29rKSB7XG4gICAgdmFyIGZ1bmN0aW9u
YWwgPSBvcHRpb25zLmZ1bmN0aW9uYWxcbiAgICB2YXIgZXhpc3RpbmcgPSBmdW5jdGlvbmFsXG4g
ICAgICA/IG9wdGlvbnMucmVuZGVyXG4gICAgICA6IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAg
aWYgKCFmdW5jdGlvbmFsKSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlv
biBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlz
dGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9v
a11cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25l
bnQgaW4gdnVlIGZpbGVcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0
aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0
KVxuICAgICAgICByZXR1cm4gZXhpc3RpbmcoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9XG4g
IH1cblxuICByZXR1cm4ge1xuICAgIGVzTW9kdWxlOiBlc01vZHVsZSxcbiAgICBleHBvcnRzOiBz
Y3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuXG5cbi8qKiovIH0p
LFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cblxuLy9cbi8vIEdlbmVyYXRlZCBvbiBUdWUgRGVjIDE2IDIwMTQgMTI6
MTM6NDcgR01UKzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmkg
JiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3VyZ2VvbikuXG4vLyBWZXJzaW9uIDEuMi42
XG4vL1xuXG4oZnVuY3Rpb24gKGV4cG9ydHMpIHtcblxuLypcbiAqIGJyb3dzZXIuanM6IEJyb3dz
ZXIgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBmb3IgZGlyZWN0b3IuXG4gKlxuICogKEMpIDIwMTEs
IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMuXG4g
KiBNSVQgTElDRU5TRVxuICpcbiAqL1xuXG52YXIgZGxvYyA9IGRvY3VtZW50LmxvY2F0aW9uO1xu
XG5mdW5jdGlvbiBkbG9jSGFzaEVtcHR5KCkge1xuICAvLyBOb24tSUUgYnJvd3NlcnMgcmV0dXJu
ICcnIHdoZW4gdGhlIGFkZHJlc3MgYmFyIHNob3dzICcjJzsgRGlyZWN0b3IncyBsb2dpY1xuICAv
LyBhc3N1bWVzIGJvdGggbWVhbiBlbXB0eS5cbiAgcmV0dXJuIGRsb2MuaGFzaCA9PT0gJycgfHwg
ZGxvYy5oYXNoID09PSAnIyc7XG59XG5cbnZhciBsaXN0ZW5lciA9IHtcbiAgbW9kZTogJ21vZGVy
bicsXG4gIGhhc2g6IGRsb2MuaGFzaCxcbiAgaGlzdG9yeTogZmFsc2UsXG5cbiAgY2hlY2s6IGZ1
bmN0aW9uICgpIHtcbiAgICB2YXIgaCA9IGRsb2MuaGFzaDtcbiAgICBpZiAoaCAhPSB0aGlzLmhh
c2gpIHtcbiAgICAgIHRoaXMuaGFzaCA9IGg7XG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtc
biAgICB9XG4gIH0sXG5cbiAgZmlyZTogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm1vZGUg
PT09ICdtb2Rlcm4nKSB7XG4gICAgICB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB3aW5kb3cub25w
b3BzdGF0ZSgpIDogd2luZG93Lm9uaGFzaGNoYW5nZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAg
ICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpO1xuICAgIH1cbiAgfSxcblxuICBpbml0OiBmdW5jdGlv
biAoZm4sIGhpc3RvcnkpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5oaXN0b3J5
ID0gaGlzdG9yeTtcblxuICAgIGlmICghUm91dGVyLmxpc3RlbmVycykge1xuICAgICAgUm91dGVy
Lmxpc3RlbmVycyA9IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uY2hhbmdlKG9uQ2hhbmdl
RXZlbnQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gUm91dGVyLmxpc3RlbmVycy5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgUm91dGVyLmxpc3RlbmVyc1tpXShvbkNoYW5nZUV2
ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL25vdGUgSUU4IGlzIGJlaW5nIGNvdW50ZWQg
YXMgJ21vZGVybicgYmVjYXVzZSBpdCBoYXMgdGhlIGhhc2hjaGFuZ2UgZXZlbnRcbiAgICBpZiAo
J29uaGFzaGNoYW5nZScgaW4gd2luZG93ICYmIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09IHVu
ZGVmaW5lZFxuICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gNykpIHtcbiAgICAgIC8v
IEF0IGxlYXN0IGZvciBub3cgSFRNTDUgaGlzdG9yeSBpcyBhdmFpbGFibGUgZm9yICdtb2Rlcm4n
IGJyb3dzZXJzIG9ubHlcbiAgICAgIGlmICh0aGlzLmhpc3RvcnkgPT09IHRydWUpIHtcbiAgICAg
ICAgLy8gVGhlcmUgaXMgYW4gb2xkIGJ1ZyBpbiBDaHJvbWUgdGhhdCBjYXVzZXMgb25wb3BzdGF0
ZSB0byBmaXJlIGV2ZW5cbiAgICAgICAgLy8gdXBvbiBpbml0aWFsIHBhZ2UgbG9hZC4gU2luY2Ug
dGhlIGhhbmRsZXIgaXMgcnVuIG1hbnVhbGx5IGluIGluaXQoKSxcbiAgICAgICAgLy8gdGhpcyB3
b3VsZCBjYXVzZSBDaHJvbWUgdG8gcnVuIGl0IHR3aXNlLiBDdXJyZW50bHkgdGhlIG9ubHlcbiAg
ICAgICAgLy8gd29ya2Fyb3VuZCBzZWVtcyB0byBiZSB0byBzZXQgdGhlIGhhbmRsZXIgYWZ0ZXIg
dGhlIGluaXRpYWwgcGFnZSBsb2FkXG4gICAgICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMDQwXG4gICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7XG4gICAgICAgICAgd2luZG93Lm9ucG9wc3RhdGUgPSBvbmNoYW5nZTtcbiAgICAg
ICAgfSwgNTAwKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB3aW5kb3cub25oYXNo
Y2hhbmdlID0gb25jaGFuZ2U7XG4gICAgICB9XG4gICAgICB0aGlzLm1vZGUgPSAnbW9kZXJuJztc
biAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvL1xuICAgICAgLy8gSUUgc3VwcG9ydCwgYmFzZWQg
b24gYSBjb25jZXB0IGJ5IEVyaWsgQXJ2aWRzb24gLi4uXG4gICAgICAvL1xuICAgICAgdmFyIGZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICBmcmFtZS5pZCA9
ICdzdGF0ZS1mcmFtZSc7XG4gICAgICBmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7XG4gICAgICB0aGlzLndyaXRlRnJh
bWUoJycpO1xuXG4gICAgICBpZiAoJ29ucHJvcGVydHljaGFuZ2UnIGluIGRvY3VtZW50ICYmICdh
dHRhY2hFdmVudCcgaW4gZG9jdW1lbnQpIHtcbiAgICAgICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQo
J29ucHJvcGVydHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnBy
b3BlcnR5TmFtZSA9PT0gJ2xvY2F0aW9uJykge1xuICAgICAgICAgICAgc2VsZi5jaGVjaygpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5zZXRJbnRl
cnZhbChmdW5jdGlvbiAoKSB7IHNlbGYuY2hlY2soKTsgfSwgNTApO1xuXG4gICAgICB0aGlzLm9u
SGFzaENoYW5nZWQgPSBvbmNoYW5nZTtcbiAgICAgIHRoaXMubW9kZSA9ICdsZWdhY3knO1xuICAg
IH1cblxuICAgIFJvdXRlci5saXN0ZW5lcnMucHVzaChmbik7XG5cbiAgICByZXR1cm4gdGhpcy5t
b2RlO1xuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIChmbikge1xuICAgIGlmICghUm91dGVy
IHx8ICFSb3V0ZXIubGlzdGVuZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFy
IGxpc3RlbmVycyA9IFJvdXRlci5saXN0ZW5lcnM7XG5cbiAgICBmb3IgKHZhciBpID0gbGlzdGVu
ZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAobGlzdGVuZXJzW2ldID09
PSBmbikge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1c
biAgfSxcblxuICBzZXRIYXNoOiBmdW5jdGlvbiAocykge1xuICAgIC8vIE1vemlsbGEgYWx3YXlz
IGFkZHMgYW4gZW50cnkgdG8gdGhlIGhpc3RvcnlcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbGVn
YWN5Jykge1xuICAgICAgdGhpcy53cml0ZUZyYW1lKHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlz
Lmhpc3RvcnkgPT09IHRydWUpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwg
ZG9jdW1lbnQudGl0bGUsIHMpO1xuICAgICAgLy8gRmlyZSBhbiBvbnBvcHN0YXRlIGV2ZW50IG1h
bnVhbGx5IHNpbmNlIHB1c2hpbmcgZG9lcyBub3Qgb2J2aW91c2x5XG4gICAgICAvLyB0cmlnZ2Vy
IHRoZSBwb3AgZXZlbnQuXG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
ZGxvYy5oYXNoID0gKHNbMF0gPT09ICcvJykgPyBzIDogJy8nICsgcztcbiAgICB9XG4gICAgcmV0
dXJuIHRoaXM7XG4gIH0sXG5cbiAgd3JpdGVGcmFtZTogZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBJ
RSBzdXBwb3J0Li4uXG4gICAgdmFyIGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGUt
ZnJhbWUnKTtcbiAgICB2YXIgZCA9IGYuY29udGVudERvY3VtZW50IHx8IGYuY29udGVudFdpbmRv
dy5kb2N1bWVudDtcbiAgICBkLm9wZW4oKTtcbiAgICBkLndyaXRlKFwiPHNjcmlwdD5faGFzaCA9
ICdcIiArIHMgKyBcIic7IG9ubG9hZCA9IHBhcmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2NyaXB0
PlwiKTtcbiAgICBkLmNsb3NlKCk7XG4gIH0sXG5cbiAgc3luY0hhc2g6IGZ1bmN0aW9uICgpIHtc
biAgICAvLyBJRSBzdXBwb3J0Li4uXG4gICAgdmFyIHMgPSB0aGlzLl9oYXNoO1xuICAgIGlmIChz
ICE9IGRsb2MuaGFzaCkge1xuICAgICAgZGxvYy5oYXNoID0gcztcbiAgICB9XG4gICAgcmV0dXJu
IHRoaXM7XG4gIH0sXG5cbiAgb25IYXNoQ2hhbmdlZDogZnVuY3Rpb24gKCkge31cbn07XG5cbnZh
ciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0ZXMpIHtcbiAgaWYgKCEo
dGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcgUm91dGVyKHJvdXRlcyk7XG5cbiAg
dGhpcy5wYXJhbXMgICA9IHt9O1xuICB0aGlzLnJvdXRlcyAgID0ge307XG4gIHRoaXMubWV0aG9k
cyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107XG4gIHRoaXMuc2NvcGUgICAg
PSBbXTtcbiAgdGhpcy5fbWV0aG9kcyA9IHt9O1xuXG4gIHRoaXMuX2luc2VydCA9IHRoaXMuaW5z
ZXJ0O1xuICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7XG5cbiAgdGhpcy5oaXN0b3J5U3Vw
cG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2luZG93Lmhpc3RvcnkucHVzaFN0YXRl
IDogbnVsbCkgIT0gbnVsbFxuXG4gIHRoaXMuY29uZmlndXJlKCk7XG4gIHRoaXMubW91bnQocm91
dGVzIHx8IHt9KTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChyKSB7
XG4gIHZhciBzZWxmID0gdGhpc1xuICAgICwgcm91dGVUbztcbiAgdGhpcy5oYW5kbGVyID0gZnVu
Y3Rpb24ob25DaGFuZ2VFdmVudCkge1xuICAgIHZhciBuZXdVUkwgPSBvbkNoYW5nZUV2ZW50ICYm
IG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuICAgIHZhciB1
cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VSTC5yZXBs
YWNlKC8uKiMvLCAnJyk7XG4gICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1cmwuY2hhckF0KDApID09
PSAnLycgPyB1cmwgOiAnLycgKyB1cmwpO1xuICB9O1xuXG4gIGxpc3RlbmVyLmluaXQodGhpcy5o
YW5kbGVyLCB0aGlzLmhpc3RvcnkpO1xuXG4gIGlmICh0aGlzLmhpc3RvcnkgPT09IGZhbHNlKSB7
XG4gICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7XG4gICAgICBkbG9jLmhhc2ggPSByO1xu
ICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkge1xuICAgICAgc2VsZi5kaXNwYXRjaCgn
b24nLCAnLycgKyBkbG9jLmhhc2gucmVwbGFjZSgvXigjXFwvfCN8XFwvKS8sICcnKSk7XG4gICAg
fVxuICB9XG4gIGVsc2Uge1xuICAgIGlmICh0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0KSB7XG4g
ICAgICAvLyBVc2UgaGFzaCBhcyByb3V0ZVxuICAgICAgcm91dGVUbyA9IGRsb2NIYXNoRW1wdHko
KSAmJiByID8gciA6ICFkbG9jSGFzaEVtcHR5KCkgPyBkbG9jLmhhc2gucmVwbGFjZSgvXiMvLCAn
JykgOiBudWxsO1xuICAgICAgaWYgKHJvdXRlVG8pIHtcbiAgICAgICAgd2luZG93Lmhpc3Rvcnku
cmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcm91dGVUbyk7XG4gICAgICB9XG4gICAg
fVxuICAgIGVsc2Uge1xuICAgICAgLy8gVXNlIGNhbm9uaWNhbCB1cmxcbiAgICAgIHJvdXRlVG8g
PSB0aGlzLmdldFBhdGgoKTtcbiAgICB9XG5cbiAgICAvLyBSb3V0ZXIgaGFzIGJlZW4gaW5pdGlh
bGl6ZWQsIGJ1dCBkdWUgdG8gdGhlIGNocm9tZSBidWcgaXQgd2lsbCBub3RcbiAgICAvLyB5ZXQg
YWN0dWFsbHkgcm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0ZSBjaGFuZ2VzLiBUaHVzLCBkZWNpZGUg
aWYgc2hvdWxkIHJvdXRlLlxuICAgIGlmIChyb3V0ZVRvIHx8IHRoaXMucnVuX2luX2luaXQgPT09
IHRydWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0
aGlzO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24gKCkge1xuICB2
YXIgdiA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHRoaXMuZ2V0UGF0aCgpIDogZGxvYy5oYXNo
O1xuICBpZiAodi5jaGFyQXQoMSkgPT09ICcvJykgeyB2PXYuc2xpY2UoMSkgfVxuICByZXR1cm4g
di5zbGljZSgxLCB2Lmxlbmd0aCkuc3BsaXQoXCIvXCIpO1xufTtcblxuUm91dGVyLnByb3RvdHlw
ZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwpIHtcbiAgdmFyIHVybCA9IHRoaXMuZXhw
bG9kZSgpO1xuXG4gIGlmICh0eXBlb2YgaSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHYgPT09ICdz
dHJpbmcnKSB7XG4gICAgdXJsW2ldID0gdjtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgdmFsID09
PSAnc3RyaW5nJykge1xuICAgIHVybC5zcGxpY2UoaSwgdiwgcyk7XG4gIH1cbiAgZWxzZSB7XG4g
ICAgdXJsID0gW2ldO1xuICB9XG5cbiAgbGlzdGVuZXIuc2V0SGFzaCh1cmwuam9pbignLycpKTtc
biAgcmV0dXJuIHVybDtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gaW5zZXJ0RXgobWV0aG9k
LCBwYXRoLCByb3V0ZSwgcGFyZW50KVxuLy8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhvZCB0
byBpbnNlcnQgdGhlIHNwZWNpZmljIGByb3V0ZWAuXG4vLyAjIyMjIEBwYXRoIHtBcnJheX0gUGFy
c2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBgcm91dGVgIGF0LlxuLy8gIyMjIyBAcm91dGUge0FycmF5
fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBpbnNlcnQuXG4vLyAjIyMjIEBwYXJlbnQge09i
amVjdH0gKipPcHRpb25hbCoqIFBhcmVudCBcInJvdXRlc1wiIHRvIGluc2VydCBpbnRvLlxuLy8g
aW5zZXJ0IGEgY2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkgb2NjdXIgb25jZSBwZXIgdGhlIG1hdGNo
ZWQgcm91dGUuXG4vL1xuUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCA9IGZ1bmN0aW9uKG1ldGhv
ZCwgcGF0aCwgcm91dGUsIHBhcmVudCkge1xuICBpZiAobWV0aG9kID09PSBcIm9uY2VcIikge1xu
ICAgIG1ldGhvZCA9IFwib25cIjtcbiAgICByb3V0ZSA9IGZ1bmN0aW9uKHJvdXRlKSB7XG4gICAg
ICB2YXIgb25jZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBp
ZiAob25jZSkgcmV0dXJuO1xuICAgICAgICBvbmNlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHJv
dXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0ocm91dGUpO1xuICB9
XG4gIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KTtcbn07
XG5cblJvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUgPSBmdW5jdGlvbiAodikge1xuICB2YXIgcmV0
ID0gdjtcblxuICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXQgPSB0aGlz
LmV4cGxvZGUoKVt2XTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIil7
XG4gICAgdmFyIGggPSB0aGlzLmV4cGxvZGUoKTtcbiAgICByZXQgPSBoLmluZGV4T2Yodik7XG4g
IH1cbiAgZWxzZSB7XG4gICAgcmV0ID0gdGhpcy5leHBsb2RlKCk7XG4gIH1cblxuICByZXR1cm4g
cmV0O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICBs
aXN0ZW5lci5kZXN0cm95KHRoaXMuaGFuZGxlcik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUm91
dGVyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGF0aCA9IHdpbmRv
dy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgaWYgKHBhdGguc3Vic3RyKDAsIDEpICE9PSAnLycpIHtc
biAgICBwYXRoID0gJy8nICsgcGF0aDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG5mdW5jdGlv
biBfZXZlcnkoYXJyLCBpdGVyYXRvcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5n
dGg7IGkgKz0gMSkge1xuICAgIGlmIChpdGVyYXRvcihhcnJbaV0sIGksIGFycikgPT09IGZhbHNl
KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIF9mbGF0dGVuKGFy
cikge1xuICB2YXIgZmxhdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyci5sZW5ndGg7
IGkgPCBuOyBpKyspIHtcbiAgICBmbGF0ID0gZmxhdC5jb25jYXQoYXJyW2ldKTtcbiAgfVxuICBy
ZXR1cm4gZmxhdDtcbn1cblxuZnVuY3Rpb24gX2FzeW5jRXZlcnlTZXJpZXMoYXJyLCBpdGVyYXRv
ciwgY2FsbGJhY2spIHtcbiAgaWYgKCFhcnIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNr
KCk7XG4gIH1cbiAgdmFyIGNvbXBsZXRlZCA9IDA7XG4gIChmdW5jdGlvbiBpdGVyYXRlKCkge1xu
ICAgIGl0ZXJhdG9yKGFycltjb21wbGV0ZWRdLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlmIChl
cnIgfHwgZXJyID09PSBmYWxzZSkge1xuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICBj
YWxsYmFjayA9IGZ1bmN0aW9uKCkge307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wbGV0
ZWQgKz0gMTtcbiAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gYXJyLmxlbmd0aCkge1xuICAgICAg
ICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlcmF0ZSgpO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pKCk7XG59XG5cbmZ1bmN0aW9uIHBhcmFt
aWZ5U3RyaW5nKHN0ciwgcGFyYW1zLCBtb2QpIHtcbiAgbW9kID0gc3RyO1xuICBmb3IgKHZhciBw
YXJhbSBpbiBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkg
e1xuICAgICAgbW9kID0gcGFyYW1zW3BhcmFtXShzdHIpO1xuICAgICAgaWYgKG1vZCAhPT0gc3Ry
KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kID09
PSBzdHIgPyBcIihbLl9hLXpBLVowLTktJSgpXSspXCIgOiBtb2Q7XG59XG5cbmZ1bmN0aW9uIHJl
Z2lmeVN0cmluZyhzdHIsIHBhcmFtcykge1xuICB2YXIgbWF0Y2hlcywgbGFzdCA9IDAsIG91dCA9
IFwiXCI7XG4gIHdoaWxlIChtYXRjaGVzID0gc3RyLnN1YnN0cihsYXN0KS5tYXRjaCgvW15cXHdc
XGRcXC0gJUAmXSpcXCpbXlxcd1xcZFxcLSAlQCZdKi8pKSB7XG4gICAgbGFzdCA9IG1hdGNoZXMu
aW5kZXggKyBtYXRjaGVzWzBdLmxlbmd0aDtcbiAgICBtYXRjaGVzWzBdID0gbWF0Y2hlc1swXS5y
ZXBsYWNlKC9eXFwqLywgXCIoW18uKCkhXFxcXCAlQCZhLXpBLVowLTktXSspXCIpO1xuICAgIG91
dCArPSBzdHIuc3Vic3RyKDAsIG1hdGNoZXMuaW5kZXgpICsgbWF0Y2hlc1swXTtcbiAgfVxuICBz
dHIgPSBvdXQgKz0gc3RyLnN1YnN0cihsYXN0KTtcbiAgdmFyIGNhcHR1cmVzID0gc3RyLm1hdGNo
KC86KFteXFwvXSspL2lnKSwgY2FwdHVyZSwgbGVuZ3RoO1xuICBpZiAoY2FwdHVyZXMpIHtcbiAg
ICBsZW5ndGggPSBjYXB0dXJlcy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykge1xuICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldO1xuICAgICAgaWYgKGNhcHR1
cmUuc2xpY2UoMCwgMikgPT09IFwiOjpcIikge1xuICAgICAgICBzdHIgPSBjYXB0dXJlLnNsaWNl
KDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoY2FwdHVyZSwg
cGFyYW1pZnlTdHJpbmcoY2FwdHVyZSwgcGFyYW1zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4g
IHJldHVybiBzdHI7XG59XG5cbmZ1bmN0aW9uIHRlcm1pbmF0b3Iocm91dGVzLCBkZWxpbWl0ZXIs
IHN0YXJ0LCBzdG9wKSB7XG4gIHZhciBsYXN0ID0gMCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwgc3Rh
cnQgPSAoc3RhcnQgfHwgXCIoXCIpLnRvU3RyaW5nKCksIHN0b3AgPSAoc3RvcCB8fCBcIilcIiku
dG9TdHJpbmcoKSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykge1xu
ICAgIHZhciBjaHVuayA9IHJvdXRlc1tpXTtcbiAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFydCwg
bGFzdCkgPiBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0YXJ0
LCBsYXN0KSAmJiAhfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRleE9m
KHN0YXJ0LCBsYXN0KSAmJiB+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkge1xuICAgICAgbGVm
dCA9IGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpO1xuICAgICAgcmlnaHQgPSBjaHVuay5pbmRl
eE9mKHN0b3AsIGxhc3QpO1xuICAgICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0ICYm
IH5yaWdodCkge1xuICAgICAgICB2YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEpICsg
MSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICByb3V0ZXMgPSBbIHRtcCBdLmNvbmNhdChyb3V0
ZXMuc2xpY2UoKGkgfHwgMSkgKyAxKSk7XG4gICAgICB9XG4gICAgICBsYXN0ID0gKHJpZ2h0ID4g
bGVmdCA/IHJpZ2h0IDogbGVmdCkgKyAxO1xuICAgICAgaSA9IDA7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGxhc3QgPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcm91dGVzO1xufVxuXG52YXIgUVVF
UllfU0VQQVJBVE9SID0gL1xcPy4qLztcblxuUm91dGVyLnByb3RvdHlwZS5jb25maWd1cmUgPSBm
dW5jdGlvbihvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMubWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuX21ldGhv
ZHNbdGhpcy5tZXRob2RzW2ldXSA9IHRydWU7XG4gIH1cbiAgdGhpcy5yZWN1cnNlID0gb3B0aW9u
cy5yZWN1cnNlIHx8IHRoaXMucmVjdXJzZSB8fCBmYWxzZTtcbiAgdGhpcy5hc3luYyA9IG9wdGlv
bnMuYXN5bmMgfHwgZmFsc2U7XG4gIHRoaXMuZGVsaW1pdGVyID0gb3B0aW9ucy5kZWxpbWl0ZXIg
fHwgXCIvXCI7XG4gIHRoaXMuc3RyaWN0ID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0ID09PSBcInVu
ZGVmaW5lZFwiID8gdHJ1ZSA6IG9wdGlvbnMuc3RyaWN0O1xuICB0aGlzLm5vdGZvdW5kID0gb3B0
aW9ucy5ub3Rmb3VuZDtcbiAgdGhpcy5yZXNvdXJjZSA9IG9wdGlvbnMucmVzb3VyY2U7XG4gIHRo
aXMuaGlzdG9yeSA9IG9wdGlvbnMuaHRtbDVoaXN0b3J5ICYmIHRoaXMuaGlzdG9yeVN1cHBvcnQg
fHwgZmFsc2U7XG4gIHRoaXMucnVuX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYg
b3B0aW9ucy5ydW5faGFuZGxlcl9pbl9pbml0ICE9PSBmYWxzZTtcbiAgdGhpcy5jb252ZXJ0X2hh
c2hfaW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRpb25zLmNvbnZlcnRfaGFz
aF9pbl9pbml0ICE9PSBmYWxzZTtcbiAgdGhpcy5ldmVyeSA9IHtcbiAgICBhZnRlcjogb3B0aW9u
cy5hZnRlciB8fCBudWxsLFxuICAgIGJlZm9yZTogb3B0aW9ucy5iZWZvcmUgfHwgbnVsbCxcbiAg
ICBvbjogb3B0aW9ucy5vbiB8fCBudWxsXG4gIH07XG4gIHJldHVybiB0aGlzO1xufTtcblxuUm91
dGVyLnByb3RvdHlwZS5wYXJhbSA9IGZ1bmN0aW9uKHRva2VuLCBtYXRjaGVyKSB7XG4gIGlmICh0
b2tlblswXSAhPT0gXCI6XCIpIHtcbiAgICB0b2tlbiA9IFwiOlwiICsgdG9rZW47XG4gIH1cbiAg
dmFyIGNvbXBpbGVkID0gbmV3IFJlZ0V4cCh0b2tlbiwgXCJnXCIpO1xuICB0aGlzLnBhcmFtc1t0
b2tlbl0gPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY29tcGlsZWQs
IG1hdGNoZXIuc291cmNlIHx8IG1hdGNoZXIpO1xuICB9O1xuICByZXR1cm4gdGhpcztcbn07XG5c
blJvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0gZnVuY3Rpb24o
bWV0aG9kLCBwYXRoLCByb3V0ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmICghcm91dGUg
JiYgdHlwZW9mIHBhdGggPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcm91dGUgPSBwYXRoO1xuICAg
IHBhdGggPSBtZXRob2Q7XG4gICAgbWV0aG9kID0gXCJvblwiO1xuICB9XG4gIGlmIChBcnJheS5p
c0FycmF5KHBhdGgpKSB7XG4gICAgcmV0dXJuIHBhdGguZm9yRWFjaChmdW5jdGlvbihwKSB7XG4g
ICAgICBzZWxmLm9uKG1ldGhvZCwgcCwgcm91dGUpO1xuICAgIH0pO1xuICB9XG4gIGlmIChwYXRo
LnNvdXJjZSkge1xuICAgIHBhdGggPSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFxcXFwvL2lnLCBc
Ii9cIik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kKSkge1xuICAgIHJldHVybiBt
ZXRob2QuZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAgICBzZWxmLm9uKG0udG9Mb3dlckNhc2Uo
KSwgcGF0aCwgcm91dGUpO1xuICAgIH0pO1xuICB9XG4gIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBS
ZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5k
ZWxpbWl0ZXIpO1xuICB0aGlzLmluc2VydChtZXRob2QsIHRoaXMuc2NvcGUuY29uY2F0KHBhdGgp
LCByb3V0ZSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbihwYXRoLCBy
b3V0ZXNGbikge1xuICB2YXIgc2VsZiA9IHRoaXMsIGxlbmd0aCA9IHRoaXMuc2NvcGUubGVuZ3Ro
O1xuICBpZiAocGF0aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgv
XFxcXFxcLy9pZywgXCIvXCIpO1xuICB9XG4gIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdFeHAo
dGhpcy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxpbWl0
ZXIpO1xuICB0aGlzLnNjb3BlID0gdGhpcy5zY29wZS5jb25jYXQocGF0aCk7XG4gIHJvdXRlc0Zu
LmNhbGwodGhpcywgdGhpcyk7XG4gIHRoaXMuc2NvcGUuc3BsaWNlKGxlbmd0aCwgcGF0aC5sZW5n
dGgpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1ldGhvZCwg
cGF0aCwgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBmbnMgPSB0aGlzLnRyYXZlcnNl
KG1ldGhvZCwgcGF0aC5yZXBsYWNlKFFVRVJZX1NFUEFSQVRPUiwgXCJcIiksIHRoaXMucm91dGVz
LCBcIlwiKSwgaW52b2tlZCA9IHRoaXMuX2ludm9rZWQsIGFmdGVyO1xuICB0aGlzLl9pbnZva2Vk
ID0gdHJ1ZTtcbiAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMubGFz
dCA9IFtdO1xuICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gXCJmdW5jdGlvblwiKSB7
XG4gICAgICB0aGlzLmludm9rZShbIHRoaXMubm90Zm91bmQgXSwge1xuICAgICAgICBtZXRob2Q6
IG1ldGhvZCxcbiAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfSwgY2FsbGJhY2spO1xuICAgIH1c
biAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMucmVjdXJzZSA9PT0gXCJmb3J3YXJk
XCIpIHtcbiAgICBmbnMgPSBmbnMucmV2ZXJzZSgpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUFu
ZEludm9rZSgpIHtcbiAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7XG4gICAgc2VsZi5pbnZva2Uo
c2VsZi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNrKTtcbiAgfVxuICBhZnRlciA9IHRoaXMu
ZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVyeS5hZnRlciBdLmNvbmNhdCh0
aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTtcbiAgaWYgKGFmdGVyICYmIGFmdGVyLmxlbmd0aCA+
IDAgJiYgaW52b2tlZCkge1xuICAgIGlmICh0aGlzLmFzeW5jKSB7XG4gICAgICB0aGlzLmludm9r
ZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhp
cy5pbnZva2UoYWZ0ZXIsIHRoaXMpO1xuICAgICAgdXBkYXRlQW5kSW52b2tlKCk7XG4gICAgfVxu
ICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHVwZGF0ZUFuZEludm9rZSgpO1xuICByZXR1cm4gdHJ1
ZTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24oZm5zLCB0aGlzQXJn
LCBjYWxsYmFjaykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcHBseTtcbiAgaWYgKHRo
aXMuYXN5bmMpIHtcbiAgICBhcHBseSA9IGZ1bmN0aW9uKGZuLCBuZXh0KSB7XG4gICAgICBpZiAo
QXJyYXkuaXNBcnJheShmbikpIHtcbiAgICAgICAgcmV0dXJuIF9hc3luY0V2ZXJ5U2VyaWVzKGZu
LCBhcHBseSwgbmV4dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PSBcImZ1bmN0aW9u
XCIpIHtcbiAgICAgICAgZm4uYXBwbHkodGhpc0FyZywgKGZucy5jYXB0dXJlcyB8fCBbXSkuY29u
Y2F0KG5leHQpKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF9hc3luY0V2ZXJ5U2VyaWVzKGZucywg
YXBwbHksIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxi
YWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxz
ZSB7XG4gICAgYXBwbHkgPSBmdW5jdGlvbihmbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXko
Zm4pKSB7XG4gICAgICAgIHJldHVybiBfZXZlcnkoZm4sIGFwcGx5KTtcbiAgICAgIH0gZWxzZSBp
ZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5
KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBm
biA9PT0gXCJzdHJpbmdcIiAmJiBzZWxmLnJlc291cmNlKSB7XG4gICAgICAgIHNlbGYucmVzb3Vy
Y2VbZm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7XG4gICAgICB9XG4gICAg
fTtcbiAgICBfZXZlcnkoZm5zLCBhcHBseSk7XG4gIH1cbn07XG5cblJvdXRlci5wcm90b3R5cGUu
dHJhdmVyc2UgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlcywgcmVnZXhwLCBmaWx0ZXIp
IHtcbiAgdmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0Y2gsIG5leHQsIHRoYXQ7XG4g
IGZ1bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHtcbiAgICBpZiAoIWZpbHRlcikge1xuICAg
ICAgcmV0dXJuIHJvdXRlcztcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVlcENvcHkoc291cmNlKSB7
XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJj
ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHRbaV0gPSBBcnJheS5pc0FycmF5KHNvdXJj
ZVtpXSkgPyBkZWVwQ29weShzb3VyY2VbaV0pIDogc291cmNlW2ldO1xuICAgICAgfVxuICAgICAg
cmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZm5zKSB7XG4g
ICAgICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAg
IGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgICAgICBhcHBseUZpbHRlcihmbnNb
aV0pO1xuICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBm
bnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICBpZiAoIWZpbHRlcihmbnNbaV0pKSB7XG4gICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbmV3Um91dGVz
ID0gZGVlcENvcHkocm91dGVzKTtcbiAgICBuZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRlcy5tYXRj
aGVkO1xuICAgIG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJvdXRlcy5jYXB0dXJlcztcbiAgICBuZXdS
b3V0ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVyKGZpbHRlcik7XG4gICAgYXBwbHlGaWx0
ZXIobmV3Um91dGVzKTtcbiAgICByZXR1cm4gbmV3Um91dGVzO1xuICB9XG4gIGlmIChwYXRoID09
PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkge1xuICAgIG5leHQgPSBbIFsgcm91
dGVzLmJlZm9yZSwgcm91dGVzW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTtcbiAgICBuZXh0
LmFmdGVyID0gWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgbmV4dC5tYXRj
aGVkID0gdHJ1ZTtcbiAgICBuZXh0LmNhcHR1cmVzID0gW107XG4gICAgcmV0dXJuIGZpbHRlclJv
dXRlcyhuZXh0KTtcbiAgfVxuICBmb3IgKHZhciByIGluIHJvdXRlcykge1xuICAgIGlmIChyb3V0
ZXMuaGFzT3duUHJvcGVydHkocikgJiYgKCF0aGlzLl9tZXRob2RzW3JdIHx8IHRoaXMuX21ldGhv
ZHNbcl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJh
eShyb3V0ZXNbcl0pKSkge1xuICAgICAgY3VycmVudCA9IGV4YWN0ID0gcmVnZXhwICsgdGhpcy5k
ZWxpbWl0ZXIgKyByO1xuICAgICAgaWYgKCF0aGlzLnN0cmljdCkge1xuICAgICAgICBleGFjdCAr
PSBcIltcIiArIHRoaXMuZGVsaW1pdGVyICsgXCJdP1wiO1xuICAgICAgfVxuICAgICAgbWF0Y2gg
PSBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoXCJeXCIgKyBleGFjdCkpO1xuICAgICAgaWYgKCFtYXRj
aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaFswXSAmJiBt
YXRjaFswXSA9PSBwYXRoICYmIHJvdXRlc1tyXVttZXRob2RdKSB7XG4gICAgICAgIG5leHQgPSBb
IFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVzW3JdW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikg
XTtcbiAgICAgICAgbmV4dC5hZnRlciA9IFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xl
YW4pO1xuICAgICAgICBuZXh0Lm1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBuZXh0LmNhcHR1cmVz
ID0gbWF0Y2guc2xpY2UoMSk7XG4gICAgICAgIGlmICh0aGlzLnJlY3Vyc2UgJiYgcm91dGVzID09
PSB0aGlzLnJvdXRlcykge1xuICAgICAgICAgIG5leHQucHVzaChbIHJvdXRlcy5iZWZvcmUsIHJv
dXRlcy5vbiBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQu
YWZ0ZXIuY29uY2F0KFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAg
fVxuICAgICAgICByZXR1cm4gZmlsdGVyUm91dGVzKG5leHQpO1xuICAgICAgfVxuICAgICAgbmV4
dCA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLCByb3V0ZXNbcl0sIGN1cnJlbnQpO1xuICAg
ICAgaWYgKG5leHQubWF0Y2hlZCkge1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPiAwKSB7XG4g
ICAgICAgICAgZm5zID0gZm5zLmNvbmNhdChuZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAo
dGhpcy5yZWN1cnNlKSB7XG4gICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbcl0uYmVmb3JlLCBy
b3V0ZXNbcl0ub24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIgPSBu
ZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7XG4g
ICAgICAgICAgaWYgKHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICAgIGZucy5w
dXNoKFsgcm91dGVzW1wiYmVmb3JlXCJdLCByb3V0ZXNbXCJvblwiXSBdLmZpbHRlcihCb29sZWFu
KSk7XG4gICAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNb
XCJhZnRlclwiXSBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4g
ICAgICAgIGZucy5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgZm5zLmNhcHR1cmVzID0gbmV4dC5j
YXB0dXJlcztcbiAgICAgICAgZm5zLmFmdGVyID0gbmV4dC5hZnRlcjtcbiAgICAgICAgcmV0dXJu
IGZpbHRlclJvdXRlcyhmbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7
XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwg
cm91dGUsIHBhcmVudCkge1xuICB2YXIgbWV0aG9kVHlwZSwgcGFyZW50VHlwZSwgaXNBcnJheSwg
bmVzdGVkLCBwYXJ0O1xuICBwYXRoID0gcGF0aC5maWx0ZXIoZnVuY3Rpb24ocCkge1xuICAgIHJl
dHVybiBwICYmIHAubGVuZ3RoID4gMDtcbiAgfSk7XG4gIHBhcmVudCA9IHBhcmVudCB8fCB0aGlz
LnJvdXRlcztcbiAgcGFydCA9IHBhdGguc2hpZnQoKTtcbiAgaWYgKC9cXDp8XFwqLy50ZXN0KHBh
cnQpICYmICEvXFxcXGR8XFxcXHcvLnRlc3QocGFydCkpIHtcbiAgICBwYXJ0ID0gcmVnaWZ5U3Ry
aW5nKHBhcnQsIHRoaXMucGFyYW1zKTtcbiAgfVxuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4g
ICAgcGFyZW50W3BhcnRdID0gcGFyZW50W3BhcnRdIHx8IHt9O1xuICAgIHJldHVybiB0aGlzLmlu
c2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRbcGFydF0pO1xuICB9XG4gIGlmICghcGFy
dCAmJiAhcGF0aC5sZW5ndGggJiYgcGFyZW50ID09PSB0aGlzLnJvdXRlcykge1xuICAgIG1ldGhv
ZFR5cGUgPSB0eXBlb2YgcGFyZW50W21ldGhvZF07XG4gICAgc3dpdGNoIChtZXRob2RUeXBlKSB7
XG4gICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgcGFyZW50W21ldGhvZF0gPSBbIHBhcmVu
dFttZXRob2RdLCByb3V0ZSBdO1xuICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwib2JqZWN0XCI6
XG4gICAgICBwYXJlbnRbbWV0aG9kXS5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybjtcbiAgICAg
Y2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcGFyZW50W21ldGhvZF0gPSByb3V0ZTtcbiAgICAg
IHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIHBhcmVudFR5cGUgPSB0eXBlb2Yg
cGFyZW50W3BhcnRdO1xuICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJlbnRbcGFydF0pO1xu
ICBpZiAocGFyZW50W3BhcnRdICYmICFpc0FycmF5ICYmIHBhcmVudFR5cGUgPT0gXCJvYmplY3Rc
Iikge1xuICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdW21ldGhvZF07XG4gICAg
c3dpdGNoIChtZXRob2RUeXBlKSB7XG4gICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgcGFy
ZW50W3BhcnRdW21ldGhvZF0gPSBbIHBhcmVudFtwYXJ0XVttZXRob2RdLCByb3V0ZSBdO1xuICAg
ICAgcmV0dXJuO1xuICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBwYXJlbnRbcGFydF1bbWV0
aG9kXS5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcInVuZGVmaW5lZFwi
OlxuICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSByb3V0ZTtcbiAgICAgIHJldHVybjtcbiAg
ICB9XG4gIH0gZWxzZSBpZiAocGFyZW50VHlwZSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgbmVz
dGVkID0ge307XG4gICAgbmVzdGVkW21ldGhvZF0gPSByb3V0ZTtcbiAgICBwYXJlbnRbcGFydF0g
PSBuZXN0ZWQ7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQg
cm91dGUgY29udGV4dDogXCIgKyBwYXJlbnRUeXBlKTtcbn07XG5cblxuXG5Sb3V0ZXIucHJvdG90
eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKG1ldGhvZHMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBsZW4g
PSBtZXRob2RzLmxlbmd0aCwgaTtcbiAgZnVuY3Rpb24gZXh0ZW5kKG1ldGhvZCkge1xuICAgIHNl
bGYuX21ldGhvZHNbbWV0aG9kXSA9IHRydWU7XG4gICAgc2VsZlttZXRob2RdID0gZnVuY3Rpb24o
KSB7XG4gICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gWyBtZXRob2Qs
IFwiXCIgXSA6IFsgbWV0aG9kIF07XG4gICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIGV4dHJhLmNv
bmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgfTtcbiAg
fVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBleHRlbmQobWV0aG9kc1tpXSk7
XG4gIH1cbn07XG5cblJvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1bmN0aW9uKGZucykge1xu
ICB2YXIgcnVubGlzdCA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5iZWZvcmUgPyBbIHRoaXMu
ZXZlcnkuYmVmb3JlIF0uY29uY2F0KF9mbGF0dGVuKGZucykpIDogX2ZsYXR0ZW4oZm5zKTtcbiAg
aWYgKHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5vbikge1xuICAgIHJ1bmxpc3QucHVzaCh0aGlz
LmV2ZXJ5Lm9uKTtcbiAgfVxuICBydW5saXN0LmNhcHR1cmVzID0gZm5zLmNhcHR1cmVzO1xuICBy
dW5saXN0LnNvdXJjZSA9IGZucy5zb3VyY2U7XG4gIHJldHVybiBydW5saXN0O1xufTtcblxuUm91
dGVyLnByb3RvdHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRlcywgcGF0aCkge1xuICBpZiAoIXJv
dXRlcyB8fCB0eXBlb2Ygcm91dGVzICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkocm91
dGVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHBhdGggPSBw
YXRoIHx8IFtdO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aCkpIHtcbiAgICBwYXRoID0gcGF0
aC5zcGxpdChzZWxmLmRlbGltaXRlcik7XG4gIH1cbiAgZnVuY3Rpb24gaW5zZXJ0T3JNb3VudChy
b3V0ZSwgbG9jYWwpIHtcbiAgICB2YXIgcmVuYW1lID0gcm91dGUsIHBhcnRzID0gcm91dGUuc3Bs
aXQoc2VsZi5kZWxpbWl0ZXIpLCByb3V0ZVR5cGUgPSB0eXBlb2Ygcm91dGVzW3JvdXRlXSwgaXNS
b3V0ZSA9IHBhcnRzWzBdID09PSBcIlwiIHx8ICFzZWxmLl9tZXRob2RzW3BhcnRzWzBdXSwgZXZl
bnQgPSBpc1JvdXRlID8gXCJvblwiIDogcmVuYW1lO1xuICAgIGlmIChpc1JvdXRlKSB7XG4gICAg
ICByZW5hbWUgPSByZW5hbWUuc2xpY2UoKHJlbmFtZS5tYXRjaChuZXcgUmVnRXhwKFwiXlwiICsg
c2VsZi5kZWxpbWl0ZXIpKSB8fCBbIFwiXCIgXSlbMF0ubGVuZ3RoKTtcbiAgICAgIHBhcnRzLnNo
aWZ0KCk7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlICYmIHJvdXRlVHlwZSA9PT0gXCJvYmplY3Rc
IiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcm91dGVdKSkge1xuICAgICAgbG9jYWwgPSBsb2Nh
bC5jb25jYXQocGFydHMpO1xuICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91dGVdLCBsb2NhbCk7
XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1JvdXRlKSB7XG4gICAgICBsb2NhbCA9
IGxvY2FsLmNvbmNhdChyZW5hbWUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpKTtcbiAgICAgIGxvY2Fs
ID0gdGVybWluYXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0ZXIpO1xuICAgIH1cbiAgICBzZWxmLmlu
c2VydChldmVudCwgbG9jYWwsIHJvdXRlc1tyb3V0ZV0pO1xuICB9XG4gIGZvciAodmFyIHJvdXRl
IGluIHJvdXRlcykge1xuICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocm91dGUpKSB7XG4g
ICAgICBpbnNlcnRPck1vdW50KHJvdXRlLCBwYXRoLnNsaWNlKDApKTtcbiAgICB9XG4gIH1cbn07
XG5cblxuXG59KCB0cnVlID8gZXhwb3J0cyA6IHdpbmRvdykpO1xuXG4vKioqLyB9KSxcbi8qIDMg
Ki8sXG4vKiA0ICovLFxuLyogNSAqLyxcbi8qIDYgKi8sXG4vKiA3ICovLFxuLyogOCAqLyxcbi8q
IDkgKi8sXG4vKiAxMCAqLyxcbi8qIDExICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7XG5cbi8qKlxuICogVHJhbnNsYXRlcyB0aGUgbGlzdCBmb3JtYXQgcHJvZHVjZWQgYnkg
Y3NzLWxvYWRlciBpbnRvIHNvbWV0aGluZ1xuICogZWFzaWVyIHRvIG1hbmlwdWxhdGUuXG4gKi9c
bm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbGlzdFRvU3R5bGVzIChwYXJlbnRJZCwgbGlzdCkg
e1xuICB2YXIgc3R5bGVzID0gW11cbiAgdmFyIG5ld1N0eWxlcyA9IHt9XG4gIGZvciAodmFyIGkg
PSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXVxuICAg
IHZhciBpZCA9IGl0ZW1bMF1cbiAgICB2YXIgY3NzID0gaXRlbVsxXVxuICAgIHZhciBtZWRpYSA9
IGl0ZW1bMl1cbiAgICB2YXIgc291cmNlTWFwID0gaXRlbVszXVxuICAgIHZhciBwYXJ0ID0ge1xu
ICAgICAgaWQ6IHBhcmVudElkICsgJzonICsgaSxcbiAgICAgIGNzczogY3NzLFxuICAgICAgbWVk
aWE6IG1lZGlhLFxuICAgICAgc291cmNlTWFwOiBzb3VyY2VNYXBcbiAgICB9XG4gICAgaWYgKCFu
ZXdTdHlsZXNbaWRdKSB7XG4gICAgICBzdHlsZXMucHVzaChuZXdTdHlsZXNbaWRdID0geyBpZDog
aWQsIHBhcnRzOiBbcGFydF0gfSlcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U3R5bGVzW2lkXS5w
YXJ0cy5wdXNoKHBhcnQpXG4gICAgfVxuICB9XG4gIHJldHVybiBzdHlsZXNcbn1cblxuXG4vKioq
LyB9KSxcbi8qIDEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZh
ciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5j
dGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8g
VGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVu
Y3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgxLGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRj
aChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFp
bGFibGVcclxuXHRpZih0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKVxyXG5cdFx0ZyA9IHdp
bmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGlu
ZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9m
IG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4g
aWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGc7XHJcblxuXG4vKioq
LyB9KSxcbi8qIDEzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8q
XG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxp
Y2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFz
ZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5j
dGlvbih1c2VTb3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhl
IGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlv
biB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0
XHRcdHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VN
YXApO1xuXHRcdFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBp
dGVtWzJdICsgXCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0
XHRyZXR1cm4gY29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5c
dC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1
bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0g
XCJzdHJpbmdcIilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0
XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkg
PCB0aGlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0
aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1
bGVzW2lkXSA9IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3Ro
OyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxy
ZWFkeSBpbXBvcnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90
IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQv
LyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVu
dCBtZWRpYSBxdWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIg
KEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBp
dGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1d
KSB7XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVt
WzJdID0gbWVkaWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRc
dFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5
ICsgXCIpXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxu
XHRcdH1cblx0fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGlu
Z1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0g
fHwgJyc7XG5cdHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7
XG5cdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVv
ZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1l
bnQoY3NzTWFwcGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMu
bWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsg
Y3NzTWFwcGluZy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJl
dHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10p
LmpvaW4oJ1xcbicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1c
blxuLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9D
b21tZW50KHNvdXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5k
ZWZcblx0dmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04u
c3RyaW5naWZ5KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9
ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5c
blx0cmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cblxuXG4vKioqLyB9KSxcbi8qIDE0
ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5z
ZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiAgTW9k
aWZpZWQgYnkgRXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxudmFyIGhhc0RvY3VtZW50ID0gdHlw
ZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuXG5pZiAodHlwZW9mIERFQlVHICE9PSAndW5k
ZWZpbmVkJyAmJiBERUJVRykge1xuICBpZiAoIWhhc0RvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3
IEVycm9yKFxuICAgICd2dWUtc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJy
b3dzZXIgZW52aXJvbm1lbnQuICcgK1xuICAgIFwiVXNlIHsgdGFyZ2V0OiAnbm9kZScgfSBpbiB5
b3VyIFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2VydmVyLXJlbmRlcmluZyBlbnZpcm9u
bWVudC5cIlxuICApIH1cbn1cblxudmFyIGxpc3RUb1N0eWxlcyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTEpXG5cbi8qXG50eXBlIFN0eWxlT2JqZWN0ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0
czogQXJyYXk8U3R5bGVPYmplY3RQYXJ0PlxufVxuXG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtc
biAgY3NzOiBzdHJpbmc7XG4gIG1lZGlhOiBzdHJpbmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xu
fVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0gey8qXG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlk
OiBudW1iZXIsXG4gICAgcmVmczogbnVtYmVyLFxuICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5
bGVPYmplY3RQYXJ0KSA9PiB2b2lkPlxuICB9XG4qL31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVu
dCAmJiAoZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVh
ZCcpWzBdKVxudmFyIHNpbmdsZXRvbkVsZW1lbnQgPSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRl
ciA9IDBcbnZhciBpc1Byb2R1Y3Rpb24gPSBmYWxzZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7
fVxuXG4vLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBo
YXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBh
IHBhZ2VcbnZhciBpc09sZElFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYg
L21zaWUgWzYtOV1cXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxu
XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXJlbnRJZCwgbGlzdCwgX2lzUHJvZHVjdGlv
bikge1xuICBpc1Byb2R1Y3Rpb24gPSBfaXNQcm9kdWN0aW9uXG5cbiAgdmFyIHN0eWxlcyA9IGxp
c3RUb1N0eWxlcyhwYXJlbnRJZCwgbGlzdClcbiAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuXG4g
IHJldHVybiBmdW5jdGlvbiB1cGRhdGUgKG5ld0xpc3QpIHtcbiAgICB2YXIgbWF5UmVtb3ZlID0g
W11cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAg
dmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0
ZW0uaWRdXG4gICAgICBkb21TdHlsZS5yZWZzLS1cbiAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0
eWxlKVxuICAgIH1cbiAgICBpZiAobmV3TGlzdCkge1xuICAgICAgc3R5bGVzID0gbGlzdFRvU3R5
bGVzKHBhcmVudElkLCBuZXdMaXN0KVxuICAgICAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuICAg
IH0gZWxzZSB7XG4gICAgICBzdHlsZXMgPSBbXVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRvbVN0eWxlID0gbWF5UmVt
b3ZlW2ldXG4gICAgICBpZiAoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuICAgICAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZG9t
U3R5bGUucGFydHNbal0oKVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtk
b21TdHlsZS5pZF1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVz
VG9Eb20gKHN0eWxlcyAvKiBBcnJheTxTdHlsZU9iamVjdD4gKi8pIHtcbiAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxu
ICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgaWYgKGRvbVN0eWxl
KSB7XG4gICAgICBkb21TdHlsZS5yZWZzKytcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9t
U3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHNbal0oaXRl
bS5wYXJ0c1tqXSlcbiAgICAgIH1cbiAgICAgIGZvciAoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7
IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNb
al0pKVxuICAgICAgfVxuICAgICAgaWYgKGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA+IGl0ZW0ucGFy
dHMubGVuZ3RoKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA9IGl0ZW0ucGFydHMu
bGVuZ3RoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJ0cyA9IFtdXG4gICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAg
cGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIHN0eWxl
c0luRG9tW2l0ZW0uaWRdID0geyBpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzIH1c
biAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50ICgpIHtcbiAgdmFy
IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgc3R5bGVF
bGVtZW50LnR5cGUgPSAndGV4dC9jc3MnXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50
KVxuICByZXR1cm4gc3R5bGVFbGVtZW50XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlIChvYmogLyog
U3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gIHZhciB1cGRhdGUsIHJlbW92ZVxuICB2YXIgc3R5bGVF
bGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGVbZGF0YS12dWUtc3NyLWlkfj1c
IicgKyBvYmouaWQgKyAnXCJdJylcblxuICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlz
UHJvZHVjdGlvbikge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24g
bW9kZS5cbiAgICAgIC8vIHNpbXBseSBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAg
ICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAg
ICAgLy8gZm9yIHNvbWUgcmVhc29uIENocm9tZSBjYW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBz
ZXJ2ZXItcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlIHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5
bGU+IG9ubHkgd29ya3MgaWYgdGhlIHN0eWxlIHRhZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQg
aW5zZXJ0ZWQgZHluYW1pY2FsbHkuIFNvIHdlIHJlbW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4g
ICAgICAvLyBzdHlsZXMgYW5kIGluamVjdCBuZXcgb25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBpZiAo
aXNPbGRJRSkge1xuICAgIC8vIHVzZSBzaW5nbGV0b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBz
dHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrXG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xl
dG9uRWxlbWVudCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxu
ICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQs
IHN0eWxlSW5kZXgsIGZhbHNlKVxuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmlu
ZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAg
Ly8gdXNlIG11bHRpLXN0eWxlLXRhZyBtb2RlIGluIGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxl
RWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpXG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5i
aW5kKG51bGwsIHN0eWxlRWxlbWVudClcbiAgICByZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAg
ICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAg
fVxuICB9XG5cbiAgdXBkYXRlKG9iailcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUg
KG5ld09iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAg
ICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9
PT0gb2JqLm1lZGlhICYmXG4gICAgICAgICAgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJj
ZU1hcCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdP
YmopXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciBy
ZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJl
dHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4
XSA9IHJlcGxhY2VtZW50XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9p
bignXFxuJylcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHls
ZUVsZW1lbnQsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycg
OiBvYmouY3NzXG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVF
bGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0g
ZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4g
ICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGls
ZE5vZGVzW2luZGV4XSkgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhd
KVxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2Vy
dEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAg
c3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05vZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0
aW9uIGFwcGx5VG9UYWcgKHN0eWxlRWxlbWVudCwgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3Nz
XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1h
cFxuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlh
JywgbWVkaWEpXG4gIH1cblxuICBpZiAoc291cmNlTWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZl
bG9wZXIuY2hyb21lLmNvbS9kZXZ0b29scy9kb2NzL2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAg
Ly8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5
IGluIENocm9tZVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNv
dXJjZXNbMF0gKyAnICovJ1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAz
ODc1XG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9u
L2pzb247YmFzZTY0LCcgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0
cmluZ2lmeShzb3VyY2VNYXApKSkpICsgJyAqLydcbiAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQu
c3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3Nc
biAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAg
IHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9
XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNz
cykpXG4gIH1cbn1cblxuXG4vKioqLyB9KVxuXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9c
bi8vIHN0YXRpYy9qcy92ZW5kb3IuMmU0ZTllNTI4NjY0ZmE3OTZkM2EuanMiLCIvKiFcbiAqIFZ1
ZS5qcyB2Mi40LjJcbiAqIChjKSAyMDE0LTIwMTcgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVuZGVy
IHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuLyogICovXG5cbi8vIHRoZXNlIGhlbHBlcnMgcHJvZHVj
ZXMgYmV0dGVyIHZtIGNvZGUgaW4gSlMgZW5naW5lcyBkdWUgdG8gdGhlaXJcbi8vIGV4cGxpY2l0
bmVzcyBhbmQgZnVuY3Rpb24gaW5saW5pbmdcbmZ1bmN0aW9uIGlzVW5kZWYgKHYpIHtcbiAgcmV0
dXJuIHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzRGVmICh2
KSB7XG4gIHJldHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbFxufVxuXG5mdW5jdGlv
biBpc1RydWUgKHYpIHtcbiAgcmV0dXJuIHYgPT09IHRydWVcbn1cblxuZnVuY3Rpb24gaXNGYWxz
ZSAodikge1xuICByZXR1cm4gdiA9PT0gZmFsc2Vcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWx1
ZSBpcyBwcmltaXRpdmVcbiAqL1xuZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG4gIHJl
dHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgIHR5cGVvZiB2YWx1
ZSA9PT0gJ251bWJlcicgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJ1xuICApXG59
XG5cbi8qKlxuICogUXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0
byB0ZWxsXG4gKiBPYmplY3RzIGZyb20gcHJpbWl0aXZlIHZhbHVlcyB3aGVuIHdlIGtub3cgdGhl
IHZhbHVlXG4gKiBpcyBhIEpTT04tY29tcGxpYW50IHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzT2Jq
ZWN0IChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2Jq
ZWN0J1xufVxuXG52YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxu
LyoqXG4gKiBTdHJpY3Qgb2JqZWN0IHR5cGUgY2hlY2suIE9ubHkgcmV0dXJucyB0cnVlXG4gKiBm
b3IgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0
IChvYmopIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVj
dF0nXG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwICh2KSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2Fs
bCh2KSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWwgaXMg
YSB2YWxpZCBhcnJheSBpbmRleC5cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEFycmF5SW5kZXggKHZh
bCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQodmFsKTtcbiAgcmV0dXJuIG4gPj0gMCAmJiBNYXRo
LmZsb29yKG4pID09PSBuICYmIGlzRmluaXRlKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEg
dmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rp
b24gdG9TdHJpbmcgKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAg
OiB0eXBlb2YgdmFsID09PSAnb2JqZWN0J1xuICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51
bGwsIDIpXG4gICAgICA6IFN0cmluZyh2YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhIGlucHV0
IHZhbHVlIHRvIGEgbnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9u
IGZhaWxzLCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAo
dmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2
YWwgOiBuXG59XG5cbi8qKlxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9y
IGNoZWNraW5nIGlmIGEga2V5XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFr
ZU1hcCAoXG4gIHN0cixcbiAgZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVl
O1xuICB9XG4gIHJldHVybiBleHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7
IHJldHVybiBtYXBbdmFsLnRvTG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7
IHJldHVybiBtYXBbdmFsXTsgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVp
bHQtaW4gdGFnLlxuICovXG52YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25l
bnQnLCB0cnVlKTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIGF0dHJpYnV0ZSBpcyBhIHJlc2VydmVk
IGF0dHJpYnV0ZS5cbiAqL1xudmFyIGlzUmVzZXJ2ZWRBdHRyaWJ1dGUgPSBtYWtlTWFwKCdrZXks
cmVmLHNsb3QsaXMnKTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaXRlbSBmcm9tIGFuIGFycmF5XG4g
Ki9cbmZ1bmN0aW9uIHJlbW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4g
ICAgdmFyIGluZGV4ID0gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtc
biAgICAgIHJldHVybiBhcnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG4vKipc
biAqIENoZWNrIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LlxuICovXG52YXIg
aGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rp
b24gaGFzT3duIChvYmosIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmos
IGtleSlcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVu
Y3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhY2hlZCAoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0
LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIChmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XG4gICAg
dmFyIGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZu
KHN0cikpXG4gIH0pXG59XG5cbi8qKlxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0
cmluZy5cbiAqL1xudmFyIGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBj
YWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwg
ZnVuY3Rpb24gKF8sIGMpIHsgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJzsgfSlcbn0p
O1xuXG4vKipcbiAqIENhcGl0YWxpemUgYSBzdHJpbmcuXG4gKi9cbnZhciBjYXBpdGFsaXplID0g
Y2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNh
c2UoKSArIHN0ci5zbGljZSgxKVxufSk7XG5cbi8qKlxuICogSHlwaGVuYXRlIGEgY2FtZWxDYXNl
IHN0cmluZy5cbiAqL1xudmFyIGh5cGhlbmF0ZVJFID0gLyhbXi1dKShbQS1aXSkvZztcbnZhciBo
eXBoZW5hdGUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyXG4gICAgLnJl
cGxhY2UoaHlwaGVuYXRlUkUsICckMS0kMicpXG4gICAgLnJlcGxhY2UoaHlwaGVuYXRlUkUsICck
MS0kMicpXG4gICAgLnRvTG93ZXJDYXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kLCBm
YXN0ZXIgdGhhbiBuYXRpdmVcbiAqL1xuZnVuY3Rpb24gYmluZCAoZm4sIGN0eCkge1xuICBmdW5j
dGlvbiBib3VuZEZuIChhKSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJl
dHVybiBsXG4gICAgICA/IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMp
XG4gICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG4g
IC8vIHJlY29yZCBvcmlnaW5hbCBmbiBsZW5ndGhcbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVu
Z3RoO1xuICByZXR1cm4gYm91bmRGblxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXktbGlr
ZSBvYmplY3QgdG8gYSByZWFsIEFycmF5LlxuICovXG5mdW5jdGlvbiB0b0FycmF5IChsaXN0LCBz
dGFydCkge1xuICBzdGFydCA9IHN0YXJ0IHx8IDA7XG4gIHZhciBpID0gbGlzdC5sZW5ndGggLSBz
dGFydDtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkge1xuICAgIHJl
dFtpXSA9IGxpc3RbaSArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICog
TWl4IHByb3BlcnRpZXMgaW50byB0YXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBleHRlbmQg
KHRvLCBfZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0g
X2Zyb21ba2V5XTtcbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBNZXJnZSBhbiBBcnJh
eSBvZiBPYmplY3RzIGludG8gYSBzaW5nbGUgT2JqZWN0LlxuICovXG5mdW5jdGlvbiB0b09iamVj
dCAoYXJyKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVu
Z3RoOyBpKyspIHtcbiAgICBpZiAoYXJyW2ldKSB7XG4gICAgICBleHRlbmQocmVzLCBhcnJbaV0p
O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qKlxuICogUGVyZm9ybSBubyBvcGVy
YXRpb24uXG4gKiBTdHViYmluZyBhcmdzIHRvIG1ha2UgRmxvdyBoYXBweSB3aXRob3V0IGxlYXZp
bmcgdXNlbGVzcyB0cmFuc3BpbGVkIGNvZGVcbiAqIHdpdGggLi4ucmVzdCAoaHR0cHM6Ly9mbG93
Lm9yZy9ibG9nLzIwMTcvMDUvMDcvU3RyaWN0LUZ1bmN0aW9uLUNhbGwtQXJpdHkvKVxuICovXG5m
dW5jdGlvbiBub29wIChhLCBiLCBjKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2Uu
XG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7IHJldHVybiBmYWxzZTsgfTtcblxu
LyoqXG4gKiBSZXR1cm4gc2FtZSB2YWx1ZVxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAo
XykgeyByZXR1cm4gXzsgfTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHN0YXRpYyBrZXlzIHN0cmlu
ZyBmcm9tIGNvbXBpbGVyIG1vZHVsZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1v
ZHVsZXMpIHtcbiAgcmV0dXJuIG1vZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4g
ICAgcmV0dXJuIGtleXMuY29uY2F0KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4o
JywnKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwg
LSB0aGF0IGlzLFxuICogaWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRo
ZSBzYW1lIHNoYXBlP1xuICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIGlmIChh
ID09PSBiKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xu
ICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmpl
Y3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBpc0FycmF5QSA9IEFycmF5LmlzQXJyYXkoYSk7
XG4gICAgICB2YXIgaXNBcnJheUIgPSBBcnJheS5pc0FycmF5KGIpO1xuICAgICAgaWYgKGlzQXJy
YXlBICYmIGlzQXJyYXlCKSB7XG4gICAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGgg
JiYgYS5ldmVyeShmdW5jdGlvbiAoZSwgaSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFs
KGUsIGJbaV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFpc0FycmF5QSAmJiAhaXNB
cnJheUIpIHtcbiAgICAgICAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgICAgIHZh
ciBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICByZXR1cm4ga2V5c0EubGVuZ3RoID09
PSBrZXlzQi5sZW5ndGggJiYga2V5c0EuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAg
IHJldHVybiBsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKVxuICAgICAgICB9KVxuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJu
IGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdu
b3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSBlbHNlIGlmICghaXNP
YmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmco
YilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBsb29z
ZUluZGV4T2YgKGFyciwgdmFsKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsg
aSsrKSB7XG4gICAgaWYgKGxvb3NlRXF1YWwoYXJyW2ldLCB2YWwpKSB7IHJldHVybiBpIH1cbiAg
fVxuICByZXR1cm4gLTFcbn1cblxuLyoqXG4gKiBFbnN1cmUgYSBmdW5jdGlvbiBpcyBjYWxsZWQg
b25seSBvbmNlLlxuICovXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgY2FsbGVkID0gZmFs
c2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgIGNh
bGxlZCA9IHRydWU7XG4gICAgICBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAg
fVxufVxuXG52YXIgU1NSX0FUVFIgPSAnZGF0YS1zZXJ2ZXItcmVuZGVyZWQnO1xuXG52YXIgQVNT
RVRfVFlQRVMgPSBbXG4gICdjb21wb25lbnQnLFxuICAnZGlyZWN0aXZlJyxcbiAgJ2ZpbHRlcidc
bl07XG5cbnZhciBMSUZFQ1lDTEVfSE9PS1MgPSBbXG4gICdiZWZvcmVDcmVhdGUnLFxuICAnY3Jl
YXRlZCcsXG4gICdiZWZvcmVNb3VudCcsXG4gICdtb3VudGVkJyxcbiAgJ2JlZm9yZVVwZGF0ZScs
XG4gICd1cGRhdGVkJyxcbiAgJ2JlZm9yZURlc3Ryb3knLFxuICAnZGVzdHJveWVkJyxcbiAgJ2Fj
dGl2YXRlZCcsXG4gICdkZWFjdGl2YXRlZCdcbl07XG5cbi8qICAqL1xuXG52YXIgY29uZmlnID0g
KHtcbiAgLyoqXG4gICAqIE9wdGlvbiBtZXJnZSBzdHJhdGVnaWVzICh1c2VkIGluIGNvcmUvdXRp
bC9vcHRpb25zKVxuICAgKi9cbiAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOiBPYmplY3QuY3JlYXRl
KG51bGwpLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHN1cHByZXNzIHdhcm5pbmdzLlxuICAg
Ki9cbiAgc2lsZW50OiBmYWxzZSxcblxuICAvKipcbiAgICogU2hvdyBwcm9kdWN0aW9uIG1vZGUg
dGlwIG1lc3NhZ2Ugb24gYm9vdD9cbiAgICovXG4gIHByb2R1Y3Rpb25UaXA6IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5h
YmxlIGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWNvcmQgcGVyZlxuICAg
Ki9cbiAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBFcnJvciBoYW5kbGVyIGZv
ciB3YXRjaGVyIGVycm9yc1xuICAgKi9cbiAgZXJyb3JIYW5kbGVyOiBudWxsLFxuXG4gIC8qKlxu
ICAgKiBXYXJuIGhhbmRsZXIgZm9yIHdhdGNoZXIgd2FybnNcbiAgICovXG4gIHdhcm5IYW5kbGVy
OiBudWxsLFxuXG4gIC8qKlxuICAgKiBJZ25vcmUgY2VydGFpbiBjdXN0b20gZWxlbWVudHNcbiAg
ICovXG4gIGlnbm9yZWRFbGVtZW50czogW10sXG5cbiAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtl
eSBhbGlhc2VzIGZvciB2LW9uXG4gICAqL1xuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxs
KSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBj
YW5ub3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9y
bS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRU
YWc6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQg
c28gdGhhdCBpdCBjYW5ub3QgYmUgdXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlz
IGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAg
aXNSZXNlcnZlZEF0dHI6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1
bmtub3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5r
bm93bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBl
bGVtZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBh
cnNlIHRoZSByZWFsIHRhZyBuYW1lIGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xu
ICBwYXJzZVBsYXRmb3JtVGFnTmFtZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlm
IGFuIGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4g
ICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAv
KipcbiAgICogRXhwb3NlZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVI
b29rczogTElGRUNZQ0xFX0hPT0tTXG59KTtcblxuLyogICovXG5cbnZhciBlbXB0eU9iamVjdCA9
IE9iamVjdC5mcmVlemUoe30pO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0cyB3
aXRoICQgb3IgX1xuICovXG5mdW5jdGlvbiBpc1Jlc2VydmVkIChzdHIpIHtcbiAgdmFyIGMgPSAo
c3RyICsgJycpLmNoYXJDb2RlQXQoMCk7XG4gIHJldHVybiBjID09PSAweDI0IHx8IGMgPT09IDB4
NUZcbn1cblxuLyoqXG4gKiBEZWZpbmUgYSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZGVmIChv
YmosIGtleSwgdmFsLCBlbnVtZXJhYmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
IGtleSwge1xuICAgIHZhbHVlOiB2YWwsXG4gICAgZW51bWVyYWJsZTogISFlbnVtZXJhYmxlLFxu
ICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxu
LyoqXG4gKiBQYXJzZSBzaW1wbGUgcGF0aC5cbiAqL1xudmFyIGJhaWxSRSA9IC9bXlxcdy4kXS87
XG5mdW5jdGlvbiBwYXJzZVBhdGggKHBhdGgpIHtcbiAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7
XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICBy
ZXR1cm4gZnVuY3Rpb24gKG9iaikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghb2JqKSB7IHJldHVybiB9XG4gICAgICBvYmogPSBv
Ympbc2VnbWVudHNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqXG4gIH1cbn1cblxuLyogICov
XG5cbnZhciB3YXJuID0gbm9vcDtcbnZhciB0aXAgPSBub29wO1xudmFyIGZvcm1hdENvbXBvbmVu
dE5hbWUgPSAobnVsbCk7IC8vIHdvcmsgYXJvdW5kIGZsb3cgY2hlY2tcblxuaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGhhc0NvbnNvbGUgPSB0eXBl
b2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFzc2lmeVJFID0gLyg/Ol58Wy1f
XSkoXFx3KS9nO1xuICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHJc
biAgICAucmVwbGFjZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50b1VwcGVy
Q2FzZSgpOyB9KVxuICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsgfTtcblxuICB3YXJuID0gZnVu
Y3Rpb24gKG1zZywgdm0pIHtcbiAgICB2YXIgdHJhY2UgPSB2bSA/IGdlbmVyYXRlQ29tcG9uZW50
VHJhY2Uodm0pIDogJyc7XG5cbiAgICBpZiAoY29uZmlnLndhcm5IYW5kbGVyKSB7XG4gICAgICBj
b25maWcud2FybkhhbmRsZXIuY2FsbChudWxsLCBtc2csIHZtLCB0cmFjZSk7XG4gICAgfSBlbHNl
IGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJy
b3IoKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyB0cmFjZSkpO1xuICAgIH1cbiAgfTtcblxuICB0
aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmln
LnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAo
XG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7
XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGlu
Y2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkge1xuICAgICAgcmV0dXJuICc8
Um9vdD4nXG4gICAgfVxuICAgIHZhciBuYW1lID0gdHlwZW9mIHZtID09PSAnc3RyaW5nJ1xuICAg
ICAgPyB2bVxuICAgICAgOiB0eXBlb2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0ub3B0aW9uc1xu
ICAgICAgICA/IHZtLm9wdGlvbnMubmFtZVxuICAgICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICAg
ID8gdm0uJG9wdGlvbnMubmFtZSB8fCB2bS4kb3B0aW9ucy5fY29tcG9uZW50VGFnXG4gICAgICAg
ICAgOiB2bS5uYW1lO1xuXG4gICAgdmFyIGZpbGUgPSB2bS5faXNWdWUgJiYgdm0uJG9wdGlvbnMu
X19maWxlO1xuICAgIGlmICghbmFtZSAmJiBmaWxlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBmaWxl
Lm1hdGNoKC8oW14vXFxcXF0rKVxcLnZ1ZSQvKTtcbiAgICAgIG5hbWUgPSBtYXRjaCAmJiBtYXRj
aFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG5hbWUgPyAoXCI8XCIgKyAoY2xh
c3NpZnkobmFtZSkpICsgXCI+XCIpIDogXCI8QW5vbnltb3VzPlwiKSArXG4gICAgICAoZmlsZSAm
JiBpbmNsdWRlRmlsZSAhPT0gZmFsc2UgPyAoXCIgYXQgXCIgKyBmaWxlKSA6ICcnKVxuICAgIClc
biAgfTtcblxuICB2YXIgcmVwZWF0ID0gZnVuY3Rpb24gKHN0ciwgbikge1xuICAgIHZhciByZXMg
PSAnJztcbiAgICB3aGlsZSAobikge1xuICAgICAgaWYgKG4gJSAyID09PSAxKSB7IHJlcyArPSBz
dHI7IH1cbiAgICAgIGlmIChuID4gMSkgeyBzdHIgKz0gc3RyOyB9XG4gICAgICBuID4+PSAxO1xu
ICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH07XG5cbiAgdmFyIGdlbmVyYXRlQ29tcG9uZW50VHJh
Y2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtc
biAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNl
ID0gMDtcbiAgICAgIHdoaWxlICh2bSkge1xuICAgICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7
XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAg
aWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBj
dXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtc
biAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJz
aXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBb
bGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1
cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyZWUu
cHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVy
biAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2
bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1
ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZtKVxuICAgICAgICAgICAgPyAoKGZvcm1hdENv
bXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUg
Y2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4g
ICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxu
KGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1c
biAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZv
KSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAgY29uZmlnLmVycm9ySGFuZGxl
ci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKChcIkVycm9yIGlu
IFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2
bSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGluQnJv
d3NlciAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUu
ZXJyb3IoZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59
XG5cbi8qICAqL1xuLyogZ2xvYmFscyBNdXRhdGlvbk9ic2VydmVyICovXG5cbi8vIGNhbiB3ZSB1
c2UgX19wcm90b19fP1xudmFyIGhhc1Byb3RvID0gJ19fcHJvdG9fXycgaW4ge307XG5cbi8vIEJy
b3dzZXIgZW52aXJvbm1lbnQgc25pZmZpbmdcbnZhciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93
ICE9PSAndW5kZWZpbmVkJztcbnZhciBVQSA9IGluQnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9y
LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xudmFyIGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50
Ly50ZXN0KFVBKTtcbnZhciBpc0lFOSA9IFVBICYmIFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAw
O1xudmFyIGlzRWRnZSA9IFVBICYmIFVBLmluZGV4T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5k
cm9pZCA9IFVBICYmIFVBLmluZGV4T2YoJ2FuZHJvaWQnKSA+IDA7XG52YXIgaXNJT1MgPSBVQSAm
JiAvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRlc3QoVUEpO1xudmFyIGlzQ2hyb21lID0gVUEgJiYg
L2Nocm9tZVxcL1xcZCsvLnRlc3QoVUEpICYmICFpc0VkZ2U7XG5cbi8vIEZpcmVmaXggaGFzIGEg
XCJ3YXRjaFwiIGZ1bmN0aW9uIG9uIE9iamVjdC5wcm90b3R5cGUuLi5cbnZhciBuYXRpdmVXYXRj
aCA9ICh7fSkud2F0Y2g7XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbmlmIChpbkJy
b3dzZXIpIHtcbiAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShvcHRzLCAncGFzc2l2ZScsICh7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7
XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN1cHBvcnRzUGFz
c2l2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSkpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3Qt
cGFzc2l2ZScsIG51bGwsIG9wdHMpO1xuICB9IGNhdGNoIChlKSB7fVxufVxuXG4vLyB0aGlzIG5l
ZWRzIHRvIGJlIGxhenktZXZhbGVkIGJlY2F1c2UgdnVlIG1heSBiZSByZXF1aXJlZCBiZWZvcmVc
bi8vIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgY2FuIHNldCBWVUVfRU5WXG52YXIgX2lzU2VydmVyO1xu
dmFyIGlzU2VydmVyUmVuZGVyaW5nID0gZnVuY3Rpb24gKCkge1xuICBpZiAoX2lzU2VydmVyID09
PSB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWlu
QnJvd3NlciAmJiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZGV0
ZWN0IHByZXNlbmNlIG9mIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgYW5kIGF2b2lkXG4gICAgICAvLyBX
ZWJwYWNrIHNoaW1taW5nIHRoZSBwcm9jZXNzXG4gICAgICBfaXNTZXJ2ZXIgPSBnbG9iYWxbJ3By
b2Nlc3MnXS5lbnYuVlVFX0VOViA9PT0gJ3NlcnZlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9p
c1NlcnZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gX2lzU2VydmVyXG59O1xuXG4v
LyBkZXRlY3QgZGV2dG9vbHNcbnZhciBkZXZ0b29scyA9IGluQnJvd3NlciAmJiB3aW5kb3cuX19W
VUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9c
bmZ1bmN0aW9uIGlzTmF0aXZlIChDdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PT0gJ2Z1
bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoQ3Rvci50b1N0cmluZygpKVxufVxuXG52YXIg
aGFzU3ltYm9sID1cbiAgdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUo
U3ltYm9sKSAmJlxuICB0eXBlb2YgUmVmbGVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUo
UmVmbGVjdC5vd25LZXlzKTtcblxuLyoqXG4gKiBEZWZlciBhIHRhc2sgdG8gZXhlY3V0ZSBpdCBh
c3luY2hyb25vdXNseS5cbiAqL1xudmFyIG5leHRUaWNrID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFy
IGNhbGxiYWNrcyA9IFtdO1xuICB2YXIgcGVuZGluZyA9IGZhbHNlO1xuICB2YXIgdGltZXJGdW5j
O1xuXG4gIGZ1bmN0aW9uIG5leHRUaWNrSGFuZGxlciAoKSB7XG4gICAgcGVuZGluZyA9IGZhbHNl
O1xuICAgIHZhciBjb3BpZXMgPSBjYWxsYmFja3Muc2xpY2UoMCk7XG4gICAgY2FsbGJhY2tzLmxl
bmd0aCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtc
biAgICAgIGNvcGllc1tpXSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRoZSBuZXh0VGljayBiZWhh
dmlvciBsZXZlcmFnZXMgdGhlIG1pY3JvdGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2Vk
XG4gIC8vIHZpYSBlaXRoZXIgbmF0aXZlIFByb21pc2UudGhlbiBvciBNdXRhdGlvbk9ic2VydmVy
LlxuICAvLyBNdXRhdGlvbk9ic2VydmVyIGhhcyB3aWRlciBzdXBwb3J0LCBob3dldmVyIGl0IGlz
IHNlcmlvdXNseSBidWdnZWQgaW5cbiAgLy8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3aGVu
IHRyaWdnZXJlZCBpbiB0b3VjaCBldmVudCBoYW5kbGVycy4gSXRcbiAgLy8gY29tcGxldGVseSBz
dG9wcyB3b3JraW5nIGFmdGVyIHRyaWdnZXJpbmcgYSBmZXcgdGltZXMuLi4gc28sIGlmIG5hdGl2
ZVxuICAvLyBQcm9taXNlIGlzIGF2YWlsYWJsZSwgd2Ugd2lsbCB1c2UgaXQ6XG4gIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYm
IGlzTmF0aXZlKFByb21pc2UpKSB7XG4gICAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAg
ICB2YXIgbG9nRXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7IGNvbnNvbGUuZXJyb3IoZXJyKTsgfTtc
biAgICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwLnRoZW4obmV4dFRpY2tIYW5k
bGVyKS5jYXRjaChsb2dFcnJvcik7XG4gICAgICAvLyBpbiBwcm9ibGVtYXRpYyBVSVdlYlZpZXdz
LCBQcm9taXNlLnRoZW4gZG9lc24ndCBjb21wbGV0ZWx5IGJyZWFrLCBidXRcbiAgICAgIC8vIGl0
IGNhbiBnZXQgc3R1Y2sgaW4gYSB3ZWlyZCBzdGF0ZSB3aGVyZSBjYWxsYmFja3MgYXJlIHB1c2hl
ZCBpbnRvIHRoZVxuICAgICAgLy8gbWljcm90YXNrIHF1ZXVlIGJ1dCB0aGUgcXVldWUgaXNuJ3Qg
YmVpbmcgZmx1c2hlZCwgdW50aWwgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG5lZWRzIHRvIGRvIHNv
bWUgb3RoZXIgd29yaywgZS5nLiBoYW5kbGUgYSB0aW1lci4gVGhlcmVmb3JlIHdlIGNhblxuICAg
ICAgLy8gXCJmb3JjZVwiIHRoZSBtaWNyb3Rhc2sgcXVldWUgdG8gYmUgZmx1c2hlZCBieSBhZGRp
bmcgYW4gZW1wdHkgdGltZXIuXG4gICAgICBpZiAoaXNJT1MpIHsgc2V0VGltZW91dChub29wKTsg
fVxuICAgIH07XG4gIH0gZWxzZSBpZiAodHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRl
ZmluZWQnICYmIChcbiAgICBpc05hdGl2ZShNdXRhdGlvbk9ic2VydmVyKSB8fFxuICAgIC8vIFBo
YW50b21KUyBhbmQgaU9TIDcueFxuICAgIE11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSA9PT0g
J1tvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yXSdcbiAgKSkge1xuICAgIC8vIHVz
ZSBNdXRhdGlvbk9ic2VydmVyIHdoZXJlIG5hdGl2ZSBQcm9taXNlIGlzIG5vdCBhdmFpbGFibGUs
XG4gICAgLy8gZS5nLiBQaGFudG9tSlMgSUUxMSwgaU9TNywgQW5kcm9pZCA0LjRcbiAgICB2YXIg
Y291bnRlciA9IDE7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobmV4
dFRpY2tIYW5kbGVyKTtcbiAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShTdHJpbmcoY291bnRlcikpO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGV4dE5vZGUsIHtcbiAg
ICAgIGNoYXJhY3RlckRhdGE6IHRydWVcbiAgICB9KTtcbiAgICB0aW1lckZ1bmMgPSBmdW5jdGlv
biAoKSB7XG4gICAgICBjb3VudGVyID0gKGNvdW50ZXIgKyAxKSAlIDI7XG4gICAgICB0ZXh0Tm9k
ZS5kYXRhID0gU3RyaW5nKGNvdW50ZXIpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gZmFs
bGJhY2sgdG8gc2V0VGltZW91dFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAg
dGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgc2V0VGltZW91dChuZXh0VGlja0hhbmRs
ZXIsIDApO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcXVldWVOZXh0VGljayAo
Y2IsIGN0eCkge1xuICAgIHZhciBfcmVzb2x2ZTtcbiAgICBjYWxsYmFja3MucHVzaChmdW5jdGlv
biAoKSB7XG4gICAgICBpZiAoY2IpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYi5jYWxs
KGN0eCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCBj
dHgsICduZXh0VGljaycpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF9yZXNvbHZlKSB7
XG4gICAgICAgIF9yZXNvbHZlKGN0eCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFwZW5k
aW5nKSB7XG4gICAgICBwZW5kaW5nID0gdHJ1ZTtcbiAgICAgIHRpbWVyRnVuYygpO1xuICAgIH1c
biAgICBpZiAoIWNiICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAg
X3Jlc29sdmUgPSByZXNvbHZlO1xuICAgICAgfSlcbiAgICB9XG4gIH1cbn0pKCk7XG5cbnZhciBf
U2V0O1xuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAodHlwZW9mIFNldCAhPT0gJ3VuZGVm
aW5lZCcgJiYgaXNOYXRpdmUoU2V0KSkge1xuICAvLyB1c2UgbmF0aXZlIFNldCB3aGVuIGF2YWls
YWJsZS5cbiAgX1NldCA9IFNldDtcbn0gZWxzZSB7XG4gIC8vIGEgbm9uLXN0YW5kYXJkIFNldCBw
b2x5ZmlsbCB0aGF0IG9ubHkgd29ya3Mgd2l0aCBwcmltaXRpdmUga2V5cy5cbiAgX1NldCA9IChm
dW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2V0ICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2Jq
ZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9XG4gICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlv
biBoYXMgKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0W2tleV0gPT09IHRydWVcbiAgICB9
O1xuICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChrZXkpIHtcbiAgICAgIHRo
aXMuc2V0W2tleV0gPSB0cnVlO1xuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1
bmN0aW9uIGNsZWFyICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtc
biAgICB9O1xuXG4gICAgcmV0dXJuIFNldDtcbiAgfSgpKTtcbn1cblxuLyogICovXG5cblxudmFy
IHVpZCA9IDA7XG5cbi8qKlxuICogQSBkZXAgaXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBoYXZl
IG11bHRpcGxlXG4gKiBkaXJlY3RpdmVzIHN1YnNjcmliaW5nIHRvIGl0LlxuICovXG52YXIgRGVw
ID0gZnVuY3Rpb24gRGVwICgpIHtcbiAgdGhpcy5pZCA9IHVpZCsrO1xuICB0aGlzLnN1YnMgPSBb
XTtcbn07XG5cbkRlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtc
biAgdGhpcy5zdWJzLnB1c2goc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0g
ZnVuY3Rpb24gcmVtb3ZlU3ViIChzdWIpIHtcbiAgcmVtb3ZlKHRoaXMuc3Vicywgc3ViKTtcbn07
XG5cbkRlcC5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgaWYgKERl
cC50YXJnZXQpIHtcbiAgICBEZXAudGFyZ2V0LmFkZERlcCh0aGlzKTtcbiAgfVxufTtcblxuRGVw
LnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkgKCkge1xuICAvLyBzdGFiaWxpemUg
dGhlIHN1YnNjcmliZXIgbGlzdCBmaXJzdFxuICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgp
O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHN1YnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAg
c3Vic1tpXS51cGRhdGUoKTtcbiAgfVxufTtcblxuLy8gdGhlIGN1cnJlbnQgdGFyZ2V0IHdhdGNo
ZXIgYmVpbmcgZXZhbHVhdGVkLlxuLy8gdGhpcyBpcyBnbG9iYWxseSB1bmlxdWUgYmVjYXVzZSB0
aGVyZSBjb3VsZCBiZSBvbmx5IG9uZVxuLy8gd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQgYXQgYW55
IHRpbWUuXG5EZXAudGFyZ2V0ID0gbnVsbDtcbnZhciB0YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5j
dGlvbiBwdXNoVGFyZ2V0IChfdGFyZ2V0KSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7IHRhcmdldFN0
YWNrLnB1c2goRGVwLnRhcmdldCk7IH1cbiAgRGVwLnRhcmdldCA9IF90YXJnZXQ7XG59XG5cbmZ1
bmN0aW9uIHBvcFRhcmdldCAoKSB7XG4gIERlcC50YXJnZXQgPSB0YXJnZXRTdGFjay5wb3AoKTtc
bn1cblxuLypcbiAqIG5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9l
c24ndCBwbGF5IHdlbGwgd2l0aFxuICogZHluYW1pY2FsbHkgYWNjZXNzaW5nIG1ldGhvZHMgb24g
QXJyYXkgcHJvdG90eXBlXG4gKi9cblxudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7
XG52YXIgYXJyYXlNZXRob2RzID0gT2JqZWN0LmNyZWF0ZShhcnJheVByb3RvKTtbXG4gICdwdXNo
JyxcbiAgJ3BvcCcsXG4gICdzaGlmdCcsXG4gICd1bnNoaWZ0JyxcbiAgJ3NwbGljZScsXG4gICdz
b3J0JyxcbiAgJ3JldmVyc2UnXG5dXG4uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gIC8v
IGNhY2hlIG9yaWdpbmFsIG1ldGhvZFxuICB2YXIgb3JpZ2luYWwgPSBhcnJheVByb3RvW21ldGhv
ZF07XG4gIGRlZihhcnJheU1ldGhvZHMsIG1ldGhvZCwgZnVuY3Rpb24gbXV0YXRvciAoKSB7XG4g
ICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB3aGlsZSAoIGxl
bi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgdmFyIHJlc3VsdCA9
IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIHZhciBvYiA9IHRoaXMuX19vYl9fO1xu
ICAgIHZhciBpbnNlcnRlZDtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAncHVz
aCc6XG4gICAgICBjYXNlICd1bnNoaWZ0JzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdzO1xuICAg
ICAgICBicmVha1xuICAgICAgY2FzZSAnc3BsaWNlJzpcbiAgICAgICAgaW5zZXJ0ZWQgPSBhcmdz
LnNsaWNlKDIpO1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBpZiAoaW5zZXJ0ZWQpIHsgb2Iu
b2JzZXJ2ZUFycmF5KGluc2VydGVkKTsgfVxuICAgIC8vIG5vdGlmeSBjaGFuZ2VcbiAgICBvYi5k
ZXAubm90aWZ5KCk7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KTtcbn0pO1xuXG4vKiAgKi9cblxu
dmFyIGFycmF5S2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFycmF5TWV0aG9kcyk7
XG5cbi8qKlxuICogQnkgZGVmYXVsdCwgd2hlbiBhIHJlYWN0aXZlIHByb3BlcnR5IGlzIHNldCwg
dGhlIG5ldyB2YWx1ZSBpc1xuICogYWxzbyBjb252ZXJ0ZWQgdG8gYmVjb21lIHJlYWN0aXZlLiBI
b3dldmVyIHdoZW4gcGFzc2luZyBkb3duIHByb3BzLFxuICogd2UgZG9uJ3Qgd2FudCB0byBmb3Jj
ZSBjb252ZXJzaW9uIGJlY2F1c2UgdGhlIHZhbHVlIG1heSBiZSBhIG5lc3RlZCB2YWx1ZVxuICog
dW5kZXIgYSBmcm96ZW4gZGF0YSBzdHJ1Y3R1cmUuIENvbnZlcnRpbmcgaXQgd291bGQgZGVmZWF0
IHRoZSBvcHRpbWl6YXRpb24uXG4gKi9cbnZhciBvYnNlcnZlclN0YXRlID0ge1xuICBzaG91bGRD
b252ZXJ0OiB0cnVlXG59O1xuXG4vKipcbiAqIE9ic2VydmVyIGNsYXNzIHRoYXQgYXJlIGF0dGFj
aGVkIHRvIGVhY2ggb2JzZXJ2ZWRcbiAqIG9iamVjdC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2Vy
dmVyIGNvbnZlcnRzIHRhcmdldFxuICogb2JqZWN0J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRl
ci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVwZW5kZW5jaWVzIGFuZCBkaXNwYXRjaGVzIHVw
ZGF0ZXMuXG4gKi9cbnZhciBPYnNlcnZlciA9IGZ1bmN0aW9uIE9ic2VydmVyICh2YWx1ZSkge1xu
ICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIHRoaXMuZGVwID0gbmV3IERlcCgpO1xuICB0aGlzLnZt
Q291bnQgPSAwO1xuICBkZWYodmFsdWUsICdfX29iX18nLCB0aGlzKTtcbiAgaWYgKEFycmF5Lmlz
QXJyYXkodmFsdWUpKSB7XG4gICAgdmFyIGF1Z21lbnQgPSBoYXNQcm90b1xuICAgICAgPyBwcm90
b0F1Z21lbnRcbiAgICAgIDogY29weUF1Z21lbnQ7XG4gICAgYXVnbWVudCh2YWx1ZSwgYXJyYXlN
ZXRob2RzLCBhcnJheUtleXMpO1xuICAgIHRoaXMub2JzZXJ2ZUFycmF5KHZhbHVlKTtcbiAgfSBl
bHNlIHtcbiAgICB0aGlzLndhbGsodmFsdWUpO1xuICB9XG59O1xuXG4vKipcbiAqIFdhbGsgdGhy
b3VnaCBlYWNoIHByb3BlcnR5IGFuZCBjb252ZXJ0IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRl
cnMuIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBl
IGlzIE9iamVjdC5cbiAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxr
IChvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0g
MDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtl
eXNbaV0sIG9ialtrZXlzW2ldXSk7XG4gIH1cbn07XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qg
b2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBm
dW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRl
bXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07
XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdtZW50IGFuIHRhcmdldCBPYmplY3Qgb3IgQXJy
YXkgYnkgaW50ZXJjZXB0aW5nXG4gKiB0aGUgcHJvdG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9f
X1xuICovXG5mdW5jdGlvbiBwcm90b0F1Z21lbnQgKHRhcmdldCwgc3JjLCBrZXlzKSB7XG4gIC8q
IGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG4gIHRhcmdldC5fX3Byb3RvX18gPSBzcmM7XG4g
IC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cbn1cblxuLyoqXG4gKiBBdWdtZW50IGFuIHRh
cmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgZGVmaW5pbmdcbiAqIGhpZGRlbiBwcm9wZXJ0aWVzLlxu
ICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gY29weUF1Z21lbnQgKHRh
cmdldCwgc3JjLCBrZXlzKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkg
PCBsOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBkZWYodGFyZ2V0LCBrZXks
IHNyY1trZXldKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dGVtcHQgdG8gY3JlYXRlIGFuIG9ic2Vy
dmVyIGluc3RhbmNlIGZvciBhIHZhbHVlLFxuICogcmV0dXJucyB0aGUgbmV3IG9ic2VydmVyIGlm
IHN1Y2Nlc3NmdWxseSBvYnNlcnZlZCxcbiAqIG9yIHRoZSBleGlzdGluZyBvYnNlcnZlciBpZiB0
aGUgdmFsdWUgYWxyZWFkeSBoYXMgb25lLlxuICovXG5mdW5jdGlvbiBvYnNlcnZlICh2YWx1ZSwg
YXNSb290RGF0YSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVyblxuICB9
XG4gIHZhciBvYjtcbiAgaWYgKGhhc093bih2YWx1ZSwgJ19fb2JfXycpICYmIHZhbHVlLl9fb2Jf
XyBpbnN0YW5jZW9mIE9ic2VydmVyKSB7XG4gICAgb2IgPSB2YWx1ZS5fX29iX187XG4gIH0gZWxz
ZSBpZiAoXG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ICYmXG4gICAgIWlzU2VydmVy
UmVuZGVyaW5nKCkgJiZcbiAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgaXNQbGFpbk9iamVj
dCh2YWx1ZSkpICYmXG4gICAgT2JqZWN0LmlzRXh0ZW5zaWJsZSh2YWx1ZSkgJiZcbiAgICAhdmFs
dWUuX2lzVnVlXG4gICkge1xuICAgIG9iID0gbmV3IE9ic2VydmVyKHZhbHVlKTtcbiAgfVxuICBp
ZiAoYXNSb290RGF0YSAmJiBvYikge1xuICAgIG9iLnZtQ291bnQrKztcbiAgfVxuICByZXR1cm4g
b2Jcbn1cblxuLyoqXG4gKiBEZWZpbmUgYSByZWFjdGl2ZSBwcm9wZXJ0eSBvbiBhbiBPYmplY3Qu
XG4gKi9cbmZ1bmN0aW9uIGRlZmluZVJlYWN0aXZlJCQxIChcbiAgb2JqLFxuICBrZXksXG4gIHZh
bCxcbiAgY3VzdG9tU2V0dGVyLFxuICBzaGFsbG93XG4pIHtcbiAgdmFyIGRlcCA9IG5ldyBEZXAo
KTtcblxuICB2YXIgcHJvcGVydHkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
aiwga2V5KTtcbiAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmNvbmZpZ3VyYWJsZSA9PT0gZmFs
c2UpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGNhdGVyIGZvciBwcmUtZGVmaW5lZCBnZXR0
ZXIvc2V0dGVyc1xuICB2YXIgZ2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHkuZ2V0O1xuICB2
YXIgc2V0dGVyID0gcHJvcGVydHkgJiYgcHJvcGVydHkuc2V0O1xuXG4gIHZhciBjaGlsZE9iID0g
IXNoYWxsb3cgJiYgb2JzZXJ2ZSh2YWwpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBr
ZXksIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAg
ICBnZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdl
dHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xu
ICAgICAgICBkZXAuZGVwZW5kKCk7XG4gICAgICAgIGlmIChjaGlsZE9iKSB7XG4gICAgICAgICAg
Y2hpbGRPYi5kZXAuZGVwZW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJy
YXkodmFsdWUpKSB7XG4gICAgICAgICAgZGVwZW5kQXJyYXkodmFsdWUpO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gcmVh
Y3RpdmVTZXR0ZXIgKG5ld1ZhbCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVy
LmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFy
ZSAqL1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdmFsdWUgfHwgKG5ld1ZhbCAhPT0gbmV3VmFsICYm
IHZhbHVlICE9PSB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvKiBl
c2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY3VzdG9tU2V0dGVyKSB7XG4gICAgICAgIGN1c3Rv
bVNldHRlcigpO1xuICAgICAgfVxuICAgICAgaWYgKHNldHRlcikge1xuICAgICAgICBzZXR0ZXIu
Y2FsbChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBuZXdWYWw7
XG4gICAgICB9XG4gICAgICBjaGlsZE9iID0gIXNoYWxsb3cgJiYgb2JzZXJ2ZShuZXdWYWwpO1xu
ICAgICAgZGVwLm5vdGlmeSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEgcHJv
cGVydHkgb24gYW4gb2JqZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmlnZ2Vy
cyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJlYWR5
IGV4aXN0LlxuICovXG5mdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKEFy
cmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFy
Z2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSk7XG4gICAgdGFyZ2V0LnNw
bGljZShrZXksIDEsIHZhbCk7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmIChoYXNPd24odGFy
Z2V0LCBrZXkpKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9
XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9i
ICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGluZyByZWFjdGl2ZSBwcm9wZXJ0aWVzIHRv
IGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJ2F0IHJ1bnRpbWUg
LSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEgb3B0aW9uLidcbiAgICApO1xuICAgIHJl
dHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAg
cmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7
XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZhbFxufVxuXG4vKipcbiAqIERlbGV0ZSBh
IHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9u
IGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1Zh
bGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xuICAgIHJl
dHVyblxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNW
dWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMg
b24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnLSBqdXN0IHNl
dCBpdCB0byBudWxsLidcbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICghaGFzT3duKHRh
cmdldCwga2V5KSkge1xuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAg
aWYgKCFvYikge1xuICAgIHJldHVyblxuICB9XG4gIG9iLmRlcC5ub3RpZnkoKTtcbn1cblxuLyoq
XG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBvbiBhcnJheSBlbGVtZW50cyB3aGVuIHRoZSBhcnJh
eSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2UgY2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50
IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRlcnMuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZEFycmF5
ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0gKHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVu
Z3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9IHZhbHVlW2ldO1xuICAgIGUgJiYgZS5fX29iX18g
JiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4g
ICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICog
T3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxu
ICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9wdGlvbiB2YWx1ZSBhbmQgYSBjaGlsZCBvcHRpb25c
biAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZhbHVlLlxuICovXG52YXIgc3RyYXRzID0gY29uZmln
Lm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggcmVzdHJpY3Rp
b25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
IHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwg
dm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9u
IFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBc
IiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7
XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1c
blxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0
cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAo
IWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWwsIGZyb21WYWw7XG4gIHZhciBr
ZXlzID0gT2JqZWN0LmtleXMoZnJvbSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5n
dGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgdG9WYWwgPSB0b1trZXldO1xuICAg
IGZyb21WYWwgPSBmcm9tW2tleV07XG4gICAgaWYgKCFoYXNPd24odG8sIGtleSkpIHtcbiAgICAg
IHNldCh0bywga2V5LCBmcm9tVmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodG9W
YWwpICYmIGlzUGxhaW5PYmplY3QoZnJvbVZhbCkpIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwg
ZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAq
L1xuZnVuY3Rpb24gbWVyZ2VEYXRhT3JGbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4g
IHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90
aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJu
IHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNo
aWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGgg
cHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQg
dG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2Vc
biAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5c
biAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJn
ZURhdGEoXG4gICAgICAgIHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkVmFs
LmNhbGwodGhpcykgOiBjaGlsZFZhbCxcbiAgICAgICAgdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1
bmN0aW9uJyA/IHBhcmVudFZhbC5jYWxsKHRoaXMpIDogcGFyZW50VmFsXG4gICAgICApXG4gICAg
fVxuICB9IGVsc2UgaWYgKHBhcmVudFZhbCB8fCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBmdW5j
dGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxu
ICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xu
ICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0pXG4gICAgICAgIDogY2hpbGRWYWw7XG4gICAgICB2
YXIgZGVmYXVsdERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAg
ID8gcGFyZW50VmFsLmNhbGwodm0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGlu
c3RhbmNlRGF0YSkge1xuICAgICAgICByZXR1cm4gbWVyZ2VEYXRhKGluc3RhbmNlRGF0YSwgZGVm
YXVsdERhdGEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdERhdGFcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn1cblxuc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAoXG4gIHBhcmVu
dFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIGlmIChjaGls
ZFZhbCAmJiB0eXBlb2YgY2hpbGRWYWwgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ1RoZSBcImRh
dGFcIiBvcHRpb24gc2hvdWxkIGJlIGEgZnVuY3Rpb24gJyArXG4gICAgICAgICd0aGF0IHJldHVy
bnMgYSBwZXItaW5zdGFuY2UgdmFsdWUgaW4gY29tcG9uZW50ICcgK1xuICAgICAgICAnZGVmaW5p
dGlvbnMuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBwYXJlbnRWYWxc
biAgICB9XG4gICAgcmV0dXJuIG1lcmdlRGF0YU9yRm4uY2FsbCh0aGlzLCBwYXJlbnRWYWwsIGNo
aWxkVmFsKVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlRGF0YU9yRm4ocGFyZW50VmFsLCBjaGlsZFZh
bCwgdm0pXG59O1xuXG4vKipcbiAqIEhvb2tzIGFuZCBwcm9wcyBhcmUgbWVyZ2VkIGFzIGFycmF5
cy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VIb29rIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbFxu
KSB7XG4gIHJldHVybiBjaGlsZFZhbFxuICAgID8gcGFyZW50VmFsXG4gICAgICA/IHBhcmVudFZh
bC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRWYWwpXG4gICAg
ICAgID8gY2hpbGRWYWxcbiAgICAgICAgOiBbY2hpbGRWYWxdXG4gICAgOiBwYXJlbnRWYWxcbn1c
blxuTElGRUNZQ0xFX0hPT0tTLmZvckVhY2goZnVuY3Rpb24gKGhvb2spIHtcbiAgc3RyYXRzW2hv
b2tdID0gbWVyZ2VIb29rO1xufSk7XG5cbi8qKlxuICogQXNzZXRzXG4gKlxuICogV2hlbiBhIHZt
IGlzIHByZXNlbnQgKGluc3RhbmNlIGNyZWF0aW9uKSwgd2UgbmVlZCB0byBkb1xuICogYSB0aHJl
ZS13YXkgbWVyZ2UgYmV0d2VlbiBjb25zdHJ1Y3RvciBvcHRpb25zLCBpbnN0YW5jZVxuICogb3B0
aW9ucyBhbmQgcGFyZW50IG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQXNzZXRzIChwYXJl
bnRWYWwsIGNoaWxkVmFsKSB7XG4gIHZhciByZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8
fCBudWxsKTtcbiAgcmV0dXJuIGNoaWxkVmFsXG4gICAgPyBleHRlbmQocmVzLCBjaGlsZFZhbClc
biAgICA6IHJlc1xufVxuXG5BU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4g
IHN0cmF0c1t0eXBlICsgJ3MnXSA9IG1lcmdlQXNzZXRzO1xufSk7XG5cbi8qKlxuICogV2F0Y2hl
cnMuXG4gKlxuICogV2F0Y2hlcnMgaGFzaGVzIHNob3VsZCBub3Qgb3ZlcndyaXRlIG9uZVxuICog
YW5vdGhlciwgc28gd2UgbWVyZ2UgdGhlbSBhcyBhcnJheXMuXG4gKi9cbnN0cmF0cy53YXRjaCA9
IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gIC8vIHdvcmsgYXJvdW5kIEZpcmVm
b3gncyBPYmplY3QucHJvdG90eXBlLndhdGNoLi4uXG4gIGlmIChwYXJlbnRWYWwgPT09IG5hdGl2
ZVdhdGNoKSB7IHBhcmVudFZhbCA9IHVuZGVmaW5lZDsgfVxuICBpZiAoY2hpbGRWYWwgPT09IG5h
dGl2ZVdhdGNoKSB7IGNoaWxkVmFsID0gdW5kZWZpbmVkOyB9XG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICBpZiAoIWNoaWxkVmFsKSB7IHJldHVybiBPYmplY3QuY3JlYXRlKHBhcmVudFZh
bCB8fCBudWxsKSB9XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZh
ciByZXQgPSB7fTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgZm9yICh2YXIga2V5IGlu
IGNoaWxkVmFsKSB7XG4gICAgdmFyIHBhcmVudCA9IHJldFtrZXldO1xuICAgIHZhciBjaGlsZCA9
IGNoaWxkVmFsW2tleV07XG4gICAgaWYgKHBhcmVudCAmJiAhQXJyYXkuaXNBcnJheShwYXJlbnQp
KSB7XG4gICAgICBwYXJlbnQgPSBbcGFyZW50XTtcbiAgICB9XG4gICAgcmV0W2tleV0gPSBwYXJl
bnRcbiAgICAgID8gcGFyZW50LmNvbmNhdChjaGlsZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShj
aGlsZCkgPyBjaGlsZCA6IFtjaGlsZF07XG4gIH1cbiAgcmV0dXJuIHJldFxufTtcblxuLyoqXG4g
KiBPdGhlciBvYmplY3QgaGFzaGVzLlxuICovXG5zdHJhdHMucHJvcHMgPVxuc3RyYXRzLm1ldGhv
ZHMgPVxuc3RyYXRzLmluamVjdCA9XG5zdHJhdHMuY29tcHV0ZWQgPSBmdW5jdGlvbiAocGFyZW50
VmFsLCBjaGlsZFZhbCkge1xuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxu
ICB2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFs
KTtcbiAgaWYgKGNoaWxkVmFsKSB7IGV4dGVuZChyZXQsIGNoaWxkVmFsKTsgfVxuICByZXR1cm4g
cmV0XG59O1xuc3RyYXRzLnByb3ZpZGUgPSBtZXJnZURhdGFPckZuO1xuXG4vKipcbiAqIERlZmF1
bHQgc3RyYXRlZ3kuXG4gKi9cbnZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFs
LCBjaGlsZFZhbCkge1xuICByZXR1cm4gY2hpbGRWYWwgPT09IHVuZGVmaW5lZFxuICAgID8gcGFy
ZW50VmFsXG4gICAgOiBjaGlsZFZhbFxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBjb21wb25lbnQg
bmFtZXNcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21wb25lbnRzIChvcHRpb25zKSB7XG4gIGZvciAo
dmFyIGtleSBpbiBvcHRpb25zLmNvbXBvbmVudHMpIHtcbiAgICB2YXIgbG93ZXIgPSBrZXkudG9M
b3dlckNhc2UoKTtcbiAgICBpZiAoaXNCdWlsdEluVGFnKGxvd2VyKSB8fCBjb25maWcuaXNSZXNl
cnZlZFRhZyhsb3dlcikpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgdXNlIGJ1aWx0
LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgICAn
aWQ6ICcgKyBrZXlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW5zdXJlIGFs
bCBwcm9wcyBvcHRpb24gc3ludGF4IGFyZSBub3JtYWxpemVkIGludG8gdGhlXG4gKiBPYmplY3Qt
YmFzZWQgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQcm9wcyAob3B0aW9ucykge1xu
ICB2YXIgcHJvcHMgPSBvcHRpb25zLnByb3BzO1xuICBpZiAoIXByb3BzKSB7IHJldHVybiB9XG4g
IHZhciByZXMgPSB7fTtcbiAgdmFyIGksIHZhbCwgbmFtZTtcbiAgaWYgKEFycmF5LmlzQXJyYXko
cHJvcHMpKSB7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAg
ICB2YWwgPSBwcm9wc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xu
ICAgICAgICBuYW1lID0gY2FtZWxpemUodmFsKTtcbiAgICAgICAgcmVzW25hbWVdID0geyB0eXBl
OiBudWxsIH07XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgICAgd2FybigncHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNp
bmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWlu
T2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgdmFs
ID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgcmVzW25h
bWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gdmFsXG4gICAgICAgIDogeyB0eXBl
OiB2YWwgfTtcbiAgICB9XG4gIH1cbiAgb3B0aW9ucy5wcm9wcyA9IHJlcztcbn1cblxuLyoqXG4g
KiBOb3JtYWxpemUgYWxsIGluamVjdGlvbnMgaW50byBPYmplY3QtYmFzZWQgZm9ybWF0XG4gKi9c
bmZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdCAob3B0aW9ucykge1xuICB2YXIgaW5qZWN0ID0gb3B0
aW9ucy5pbmplY3Q7XG4gIGlmIChBcnJheS5pc0FycmF5KGluamVjdCkpIHtcbiAgICB2YXIgbm9y
bWFsaXplZCA9IG9wdGlvbnMuaW5qZWN0ID0ge307XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBp
bmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vcm1hbGl6ZWRbaW5qZWN0W2ldXSA9IGluamVj
dFtpXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgcmF3IGZ1bmN0aW9uIGRp
cmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJl
Y3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJzID0gb3B0aW9ucy5kaXJlY3RpdmVzO1xuICBp
ZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBpbiBkaXJzKSB7XG4gICAgICB2YXIgZGVmID0g
ZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAg
ICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYsIHVwZGF0ZTogZGVmIH07XG4gICAgICB9XG4gICAg
fVxuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgdHdvIG9wdGlvbiBvYmplY3RzIGludG8gYSBuZXcg
b25lLlxuICogQ29yZSB1dGlsaXR5IHVzZWQgaW4gYm90aCBpbnN0YW50aWF0aW9uIGFuZCBpbmhl
cml0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VPcHRpb25zIChcbiAgcGFyZW50LFxuICBjaGls
ZCxcbiAgdm1cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgIGNoZWNrQ29tcG9uZW50cyhjaGlsZCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGNo
aWxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2hpbGQgPSBjaGlsZC5vcHRpb25zO1xuICB9XG5c
biAgbm9ybWFsaXplUHJvcHMoY2hpbGQpO1xuICBub3JtYWxpemVJbmplY3QoY2hpbGQpO1xuICBu
b3JtYWxpemVEaXJlY3RpdmVzKGNoaWxkKTtcbiAgdmFyIGV4dGVuZHNGcm9tID0gY2hpbGQuZXh0
ZW5kcztcbiAgaWYgKGV4dGVuZHNGcm9tKSB7XG4gICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBh
cmVudCwgZXh0ZW5kc0Zyb20sIHZtKTtcbiAgfVxuICBpZiAoY2hpbGQubWl4aW5zKSB7XG4gICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4g
ICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5taXhpbnNbaV0sIHZtKTtc
biAgICB9XG4gIH1cbiAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkg
aW4gcGFyZW50KSB7XG4gICAgbWVyZ2VGaWVsZChrZXkpO1xuICB9XG4gIGZvciAoa2V5IGluIGNo
aWxkKSB7XG4gICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkpKSB7XG4gICAgICBtZXJnZUZpZWxk
KGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1lcmdlRmllbGQgKGtleSkge1xuICAgIHZh
ciBzdHJhdCA9IHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJhdDtcbiAgICBvcHRpb25zW2tleV0g
PSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0sIGtleSk7XG4gIH1cbiAgcmV0dXJu
IG9wdGlvbnNcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFzc2V0LlxuICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIGJlY2F1c2UgY2hpbGQgaW5zdGFuY2VzIG5lZWQgYWNjZXNzXG4gKiB0byBhc3Nl
dHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0b3IgY2hhaW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVB
c3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5cGUsXG4gIGlkLFxuICB3YXJuTWlzc2luZ1xuKSB7XG4g
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJykg
e1xuICAgIHJldHVyblxuICB9XG4gIHZhciBhc3NldHMgPSBvcHRpb25zW3R5cGVdO1xuICAvLyBj
aGVjayBsb2NhbCByZWdpc3RyYXRpb24gdmFyaWF0aW9ucyBmaXJzdFxuICBpZiAoaGFzT3duKGFz
c2V0cywgaWQpKSB7IHJldHVybiBhc3NldHNbaWRdIH1cbiAgdmFyIGNhbWVsaXplZElkID0gY2Ft
ZWxpemUoaWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgY2FtZWxpemVkSWQpKSB7IHJldHVybiBh
c3NldHNbY2FtZWxpemVkSWRdIH1cbiAgdmFyIFBhc2NhbENhc2VJZCA9IGNhcGl0YWxpemUoY2Ft
ZWxpemVkSWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgUGFzY2FsQ2FzZUlkKSkgeyByZXR1cm4g
YXNzZXRzW1Bhc2NhbENhc2VJZF0gfVxuICAvLyBmYWxsYmFjayB0byBwcm90b3R5cGUgY2hhaW5c
biAgdmFyIHJlcyA9IGFzc2V0c1tpZF0gfHwgYXNzZXRzW2NhbWVsaXplZElkXSB8fCBhc3NldHNb
UGFzY2FsQ2FzZUlkXTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xuICAgIHdhcm4oXG4gICAgICAnRmFpbGVkIHRv
IHJlc29sdmUgJyArIHR5cGUuc2xpY2UoMCwgLTEpICsgJzogJyArIGlkLFxuICAgICAgb3B0aW9u
c1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdmFs
aWRhdGVQcm9wIChcbiAga2V5LFxuICBwcm9wT3B0aW9ucyxcbiAgcHJvcHNEYXRhLFxuICB2bVxu
KSB7XG4gIHZhciBwcm9wID0gcHJvcE9wdGlvbnNba2V5XTtcbiAgdmFyIGFic2VudCA9ICFoYXNP
d24ocHJvcHNEYXRhLCBrZXkpO1xuICB2YXIgdmFsdWUgPSBwcm9wc0RhdGFba2V5XTtcbiAgLy8g
aGFuZGxlIGJvb2xlYW4gcHJvcHNcbiAgaWYgKGlzVHlwZShCb29sZWFuLCBwcm9wLnR5cGUpKSB7
XG4gICAgaWYgKGFic2VudCAmJiAhaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICAgIHZh
bHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNUeXBlKFN0cmluZywgcHJvcC50eXBlKSAm
JiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcbiAgICAgIHZh
bHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gY2hlY2sgZGVmYXVsdCB2YWx1ZVxuICBpZiAo
dmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gZ2V0UHJvcERlZmF1bHRWYWx1ZSh2
bSwgcHJvcCwga2V5KTtcbiAgICAvLyBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGZyZXNo
IGNvcHksXG4gICAgLy8gbWFrZSBzdXJlIHRvIG9ic2VydmUgaXQuXG4gICAgdmFyIHByZXZTaG91
bGRDb252ZXJ0ID0gb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0O1xuICAgIG9ic2VydmVyU3Rh
dGUuc2hvdWxkQ29udmVydCA9IHRydWU7XG4gICAgb2JzZXJ2ZSh2YWx1ZSk7XG4gICAgb2JzZXJ2
ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gcHJldlNob3VsZENvbnZlcnQ7XG4gIH1cbiAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBhc3NlcnRQcm9wKHBy
b3AsIGtleSwgdmFsdWUsIHZtLCBhYnNlbnQpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4v
KipcbiAqIEdldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIHByb3AuXG4gKi9cbmZ1bmN0aW9uIGdl
dFByb3BEZWZhdWx0VmFsdWUgKHZtLCBwcm9wLCBrZXkpIHtcbiAgLy8gbm8gZGVmYXVsdCwgcmV0
dXJuIHVuZGVmaW5lZFxuICBpZiAoIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgcmV0
dXJuIHVuZGVmaW5lZFxuICB9XG4gIHZhciBkZWYgPSBwcm9wLmRlZmF1bHQ7XG4gIC8vIHdhcm4g
YWdhaW5zdCBub24tZmFjdG9yeSBkZWZhdWx0cyBmb3IgT2JqZWN0ICYgQXJyYXlcbiAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNPYmplY3QoZGVmKSkge1xu
ICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBwcm9wIFwiJyArIGtl
eSArICdcIjogJyArXG4gICAgICAnUHJvcHMgd2l0aCB0eXBlIE9iamVjdC9BcnJheSBtdXN0IHVz
ZSBhIGZhY3RvcnkgZnVuY3Rpb24gJyArXG4gICAgICAndG8gcmV0dXJuIHRoZSBkZWZhdWx0IHZh
bHVlLicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gdGhlIHJhdyBwcm9wIHZhbHVlIHdh
cyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZpb3VzIHJlbmRlcixcbiAgLy8gcmV0dXJuIHByZXZp
b3VzIGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2F0Y2hlciB0cmlnZ2VyXG4g
IGlmICh2bSAmJiB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgJiZcbiAgICB2bS4kb3B0aW9ucy5wcm9w
c0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYmXG4gICAgdm0uX3Byb3BzW2tleV0gIT09IHVuZGVm
aW5lZFxuICApIHtcbiAgICByZXR1cm4gdm0uX3Byb3BzW2tleV1cbiAgfVxuICAvLyBjYWxsIGZh
Y3RvcnkgZnVuY3Rpb24gZm9yIG5vbi1GdW5jdGlvbiB0eXBlc1xuICAvLyBhIHZhbHVlIGlzIEZ1
bmN0aW9uIGlmIGl0cyBwcm90b3R5cGUgaXMgZnVuY3Rpb24gZXZlbiBhY3Jvc3MgZGlmZmVyZW50
IGV4ZWN1dGlvbiBjb250ZXh0XG4gIHJldHVybiB0eXBlb2YgZGVmID09PSAnZnVuY3Rpb24nICYm
IGdldFR5cGUocHJvcC50eXBlKSAhPT0gJ0Z1bmN0aW9uJ1xuICAgID8gZGVmLmNhbGwodm0pXG4g
ICAgOiBkZWZcbn1cblxuLyoqXG4gKiBBc3NlcnQgd2hldGhlciBhIHByb3AgaXMgdmFsaWQuXG4g
Ki9cbmZ1bmN0aW9uIGFzc2VydFByb3AgKFxuICBwcm9wLFxuICBuYW1lLFxuICB2YWx1ZSxcbiAg
dm0sXG4gIGFic2VudFxuKSB7XG4gIGlmIChwcm9wLnJlcXVpcmVkICYmIGFic2VudCkge1xuICAg
IHdhcm4oXG4gICAgICAnTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyxc
biAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCAm
JiAhcHJvcC5yZXF1aXJlZCkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0eXBlID0gcHJvcC50
eXBlO1xuICB2YXIgdmFsaWQgPSAhdHlwZSB8fCB0eXBlID09PSB0cnVlO1xuICB2YXIgZXhwZWN0
ZWRUeXBlcyA9IFtdO1xuICBpZiAodHlwZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBl
KSkge1xuICAgICAgdHlwZSA9IFt0eXBlXTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0eXBlLmxlbmd0aCAmJiAhdmFsaWQ7IGkrKykge1xuICAgICAgdmFyIGFzc2VydGVkVHlwZSA9
IGFzc2VydFR5cGUodmFsdWUsIHR5cGVbaV0pO1xuICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGFz
c2VydGVkVHlwZS5leHBlY3RlZFR5cGUgfHwgJycpO1xuICAgICAgdmFsaWQgPSBhc3NlcnRlZFR5
cGUudmFsaWQ7XG4gICAgfVxuICB9XG4gIGlmICghdmFsaWQpIHtcbiAgICB3YXJuKFxuICAgICAg
J0ludmFsaWQgcHJvcDogdHlwZSBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdc
Ii4nICtcbiAgICAgICcgRXhwZWN0ZWQgJyArIGV4cGVjdGVkVHlwZXMubWFwKGNhcGl0YWxpemUp
LmpvaW4oJywgJykgK1xuICAgICAgJywgZ290ICcgKyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSArICcuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICBy
ZXR1cm5cbiAgfVxuICB2YXIgdmFsaWRhdG9yID0gcHJvcC52YWxpZGF0b3I7XG4gIGlmICh2YWxp
ZGF0b3IpIHtcbiAgICBpZiAoIXZhbGlkYXRvcih2YWx1ZSkpIHtcbiAgICAgIHdhcm4oXG4gICAg
ICAgICdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFpbGVkIGZvciBwcm9w
IFwiJyArIG5hbWUgKyAnXCIuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG59
XG5cbnZhciBzaW1wbGVDaGVja1JFID0gL14oU3RyaW5nfE51bWJlcnxCb29sZWFufEZ1bmN0aW9u
fFN5bWJvbCkkLztcblxuZnVuY3Rpb24gYXNzZXJ0VHlwZSAodmFsdWUsIHR5cGUpIHtcbiAgdmFy
IHZhbGlkO1xuICB2YXIgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtcbiAgaWYgKHNpbXBs
ZUNoZWNrUkUudGVzdChleHBlY3RlZFR5cGUpKSB7XG4gICAgdmFsaWQgPSB0eXBlb2YgdmFsdWUg
PT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlw
ZSA9PT0gJ09iamVjdCcpIHtcbiAgICB2YWxpZCA9IGlzUGxhaW5PYmplY3QodmFsdWUpO1xuICB9
IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xuICAgIHZhbGlkID0gQXJyYXku
aXNBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFsaWQgPSB2YWx1ZSBpbnN0YW5jZW9m
IHR5cGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWxpZDogdmFsaWQsXG4gICAgZXhwZWN0ZWRU
eXBlOiBleHBlY3RlZFR5cGVcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBmdW5jdGlvbiBzdHJpbmcg
bmFtZSB0byBjaGVjayBidWlsdC1pbiB0eXBlcyxcbiAqIGJlY2F1c2UgYSBzaW1wbGUgZXF1YWxp
dHkgY2hlY2sgd2lsbCBmYWlsIHdoZW4gcnVubmluZ1xuICogYWNyb3NzIGRpZmZlcmVudCB2bXMg
LyBpZnJhbWVzLlxuICovXG5mdW5jdGlvbiBnZXRUeXBlIChmbikge1xuICB2YXIgbWF0Y2ggPSBm
biAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcrKS8pO1xuICByZXR1
cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnXG59XG5cbmZ1bmN0aW9uIGlzVHlwZSAodHlwZSwgZm4p
IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZuKSkge1xuICAgIHJldHVybiBnZXRUeXBlKGZuKSA9
PT0gZ2V0VHlwZSh0eXBlKVxuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBmbi5sZW5ndGg7
IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChnZXRUeXBlKGZuW2ldKSA9PT0gZ2V0VHlwZSh0eXBl
KSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIgbWFyaztcbnZhciBt
ZWFzdXJlO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICB2YXIgcGVyZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcGVyZiAmJlxuICAgIHBlcmYubWFyayAmJlxu
ICAgIHBlcmYubWVhc3VyZSAmJlxuICAgIHBlcmYuY2xlYXJNYXJrcyAmJlxuICAgIHBlcmYuY2xl
YXJNZWFzdXJlc1xuICApIHtcbiAgICBtYXJrID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gcGVy
Zi5tYXJrKHRhZyk7IH07XG4gICAgbWVhc3VyZSA9IGZ1bmN0aW9uIChuYW1lLCBzdGFydFRhZywg
ZW5kVGFnKSB7XG4gICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4g
ICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKGVu
ZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWVhc3VyZXMobmFtZSk7XG4gICAgfTtcbiAgfVxufVxu
XG4vKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxh
eSB3ZWxsIHdpdGggUHJveHkgKi9cblxudmFyIGluaXRQcm94eTtcblxuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGFsbG93ZWRHbG9iYWxzID0gbWFr
ZU1hcChcbiAgICAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTiwnICtcbiAg
ICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29k
ZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4gICAgJ01hdGgsTnVtYmVyLERhdGUsQXJyYXks
T2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCwnICtcbiAgICAn
cmVxdWlyZScgLy8gZm9yIFdlYnBhY2svQnJvd3NlcmlmeVxuICApO1xuXG4gIHZhciB3YXJuTm9u
UHJlc2VudCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlBy
b3BlcnR5IG9yIG1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgbm90IGRlZmluZWQgb24g
dGhlIGluc3RhbmNlIGJ1dCBcIiArXG4gICAgICBcInJlZmVyZW5jZWQgZHVyaW5nIHJlbmRlci4g
TWFrZSBzdXJlIHRvIGRlY2xhcmUgcmVhY3RpdmUgZGF0YSBcIiArXG4gICAgICBcInByb3BlcnRp
ZXMgaW4gdGhlIGRhdGEgb3B0aW9uLlwiLFxuICAgICAgdGFyZ2V0XG4gICAgKTtcbiAgfTtcblxu
ICB2YXIgaGFzUHJveHkgPVxuICAgIHR5cGVvZiBQcm94eSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAg
ICBQcm94eS50b1N0cmluZygpLm1hdGNoKC9uYXRpdmUgY29kZS8pO1xuXG4gIGlmIChoYXNQcm94
eSkge1xuICAgIHZhciBpc0J1aWx0SW5Nb2RpZmllciA9IG1ha2VNYXAoJ3N0b3AscHJldmVudCxz
ZWxmLGN0cmwsc2hpZnQsYWx0LG1ldGEnKTtcbiAgICBjb25maWcua2V5Q29kZXMgPSBuZXcgUHJv
eHkoY29uZmlnLmtleUNvZGVzLCB7XG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCAodGFyZ2V0LCBr
ZXksIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0J1aWx0SW5Nb2RpZmllcihrZXkpKSB7XG4gICAg
ICAgICAgd2FybigoXCJBdm9pZCBvdmVyd3JpdGluZyBidWlsdC1pbiBtb2RpZmllciBpbiBjb25m
aWcua2V5Q29kZXM6IC5cIiArIGtleSkpO1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAg
ICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgcmV0
dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdmFyIGhhc0hh
bmRsZXIgPSB7XG4gICAgaGFzOiBmdW5jdGlvbiBoYXMgKHRhcmdldCwga2V5KSB7XG4gICAgICB2
YXIgaGFzID0ga2V5IGluIHRhcmdldDtcbiAgICAgIHZhciBpc0FsbG93ZWQgPSBhbGxvd2VkR2xv
YmFscyhrZXkpIHx8IGtleS5jaGFyQXQoMCkgPT09ICdfJztcbiAgICAgIGlmICghaGFzICYmICFp
c0FsbG93ZWQpIHtcbiAgICAgICAgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpO1xuICAgICAg
fVxuICAgICAgcmV0dXJuIGhhcyB8fCAhaXNBbGxvd2VkXG4gICAgfVxuICB9O1xuXG4gIHZhciBn
ZXRIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0ICh0YXJnZXQsIGtleSkge1xuICAg
ICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmICEoa2V5IGluIHRhcmdldCkpIHtcbiAg
ICAgICAgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJu
IHRhcmdldFtrZXldXG4gICAgfVxuICB9O1xuXG4gIGluaXRQcm94eSA9IGZ1bmN0aW9uIGluaXRQ
cm94eSAodm0pIHtcbiAgICBpZiAoaGFzUHJveHkpIHtcbiAgICAgIC8vIGRldGVybWluZSB3aGlj
aCBwcm94eSBoYW5kbGVyIHRvIHVzZVxuICAgICAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztc
biAgICAgIHZhciBoYW5kbGVycyA9IG9wdGlvbnMucmVuZGVyICYmIG9wdGlvbnMucmVuZGVyLl93
aXRoU3RyaXBwZWRcbiAgICAgICAgPyBnZXRIYW5kbGVyXG4gICAgICAgIDogaGFzSGFuZGxlcjtc
biAgICAgIHZtLl9yZW5kZXJQcm94eSA9IG5ldyBQcm94eSh2bSwgaGFuZGxlcnMpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gIH07XG59XG5cbi8q
ICAqL1xuXG52YXIgVk5vZGUgPSBmdW5jdGlvbiBWTm9kZSAoXG4gIHRhZyxcbiAgZGF0YSxcbiAg
Y2hpbGRyZW4sXG4gIHRleHQsXG4gIGVsbSxcbiAgY29udGV4dCxcbiAgY29tcG9uZW50T3B0aW9u
cyxcbiAgYXN5bmNGYWN0b3J5XG4pIHtcbiAgdGhpcy50YWcgPSB0YWc7XG4gIHRoaXMuZGF0YSA9
IGRhdGE7XG4gIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgdGhpcy50ZXh0ID0gdGV4dDtc
biAgdGhpcy5lbG0gPSBlbG07XG4gIHRoaXMubnMgPSB1bmRlZmluZWQ7XG4gIHRoaXMuY29udGV4
dCA9IGNvbnRleHQ7XG4gIHRoaXMuZnVuY3Rpb25hbENvbnRleHQgPSB1bmRlZmluZWQ7XG4gIHRo
aXMua2V5ID0gZGF0YSAmJiBkYXRhLmtleTtcbiAgdGhpcy5jb21wb25lbnRPcHRpb25zID0gY29t
cG9uZW50T3B0aW9ucztcbiAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAg
dGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gIHRoaXMucmF3ID0gZmFsc2U7XG4gIHRoaXMuaXNT
dGF0aWMgPSBmYWxzZTtcbiAgdGhpcy5pc1Jvb3RJbnNlcnQgPSB0cnVlO1xuICB0aGlzLmlzQ29t
bWVudCA9IGZhbHNlO1xuICB0aGlzLmlzQ2xvbmVkID0gZmFsc2U7XG4gIHRoaXMuaXNPbmNlID0g
ZmFsc2U7XG4gIHRoaXMuYXN5bmNGYWN0b3J5ID0gYXN5bmNGYWN0b3J5O1xuICB0aGlzLmFzeW5j
TWV0YSA9IHVuZGVmaW5lZDtcbiAgdGhpcy5pc0FzeW5jUGxhY2Vob2xkZXIgPSBmYWxzZTtcbn07
XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGNoaWxkOiB7fSB9O1xuXG4vLyBERVBSRUNB
VEVEOiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4v
KiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9
IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9i
amVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29y
cyApO1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIGlmICgg
dGV4dCA9PT0gdm9pZCAwICkgdGV4dCA9ICcnO1xuXG4gIHZhciBub2RlID0gbmV3IFZOb2RlKCk7
XG4gIG5vZGUudGV4dCA9IHRleHQ7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJu
IG5vZGVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBu
ZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59
XG5cbi8vIG9wdGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMg
YW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0
aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVs
YXRpb25zIHJlbHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZO
b2RlICh2bm9kZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxc
biAgICB2bm9kZS5kYXRhLFxuICAgIHZub2RlLmNoaWxkcmVuLFxuICAgIHZub2RlLnRleHQsXG4g
ICAgdm5vZGUuZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0
aW9ucyxcbiAgICB2bm9kZS5hc3luY0ZhY3RvcnlcbiAgKTtcbiAgY2xvbmVkLm5zID0gdm5vZGUu
bnM7XG4gIGNsb25lZC5pc1N0YXRpYyA9IHZub2RlLmlzU3RhdGljO1xuICBjbG9uZWQua2V5ID0g
dm5vZGUua2V5O1xuICBjbG9uZWQuaXNDb21tZW50ID0gdm5vZGUuaXNDb21tZW50O1xuICBjbG9u
ZWQuaXNDbG9uZWQgPSB0cnVlO1xuICByZXR1cm4gY2xvbmVkXG59XG5cbmZ1bmN0aW9uIGNsb25l
Vk5vZGVzICh2bm9kZXMpIHtcbiAgdmFyIGxlbiA9IHZub2Rlcy5sZW5ndGg7XG4gIHZhciByZXMg
PSBuZXcgQXJyYXkobGVuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAg
IHJlc1tpXSA9IGNsb25lVk5vZGUodm5vZGVzW2ldKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5c
bi8qICAqL1xuXG52YXIgbm9ybWFsaXplRXZlbnQgPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtc
biAgdmFyIHBhc3NpdmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyYnO1xuICBuYW1lID0gcGFzc2l2
ZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgb25jZSQkMSA9IG5hbWUuY2hhckF0KDAp
ID09PSAnfic7IC8vIFByZWZpeGVkIGxhc3QsIGNoZWNrZWQgZmlyc3RcbiAgbmFtZSA9IG9uY2Uk
JDEgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgdmFyIGNhcHR1cmUgPSBuYW1lLmNoYXJBdCgw
KSA9PT0gJyEnO1xuICBuYW1lID0gY2FwdHVyZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICBy
ZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgb25jZTogb25jZSQkMSxcbiAgICBjYXB0dXJl
OiBjYXB0dXJlLFxuICAgIHBhc3NpdmU6IHBhc3NpdmVcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNy
ZWF0ZUZuSW52b2tlciAoZm5zKSB7XG4gIGZ1bmN0aW9uIGludm9rZXIgKCkge1xuICAgIHZhciBh
cmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIHZhciBmbnMgPSBpbnZva2VyLmZucztcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShmbnMpKSB7XG4gICAgICB2YXIgY2xvbmVkID0gZm5zLnNsaWNl
KCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsb25lZC5sZW5ndGg7IGkrKykge1xuICAg
ICAgICBjbG9uZWRbaV0uYXBwbHkobnVsbCwgYXJndW1lbnRzJDEpO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICAvLyByZXR1cm4gaGFuZGxlciByZXR1cm4gdmFsdWUgZm9yIHNpbmdsZSBo
YW5kbGVyc1xuICAgICAgcmV0dXJuIGZucy5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgfVxu
ICB9XG4gIGludm9rZXIuZm5zID0gZm5zO1xuICByZXR1cm4gaW52b2tlclxufVxuXG5mdW5jdGlv
biB1cGRhdGVMaXN0ZW5lcnMgKFxuICBvbixcbiAgb2xkT24sXG4gIGFkZCxcbiAgcmVtb3ZlJCQx
LFxuICB2bVxuKSB7XG4gIHZhciBuYW1lLCBjdXIsIG9sZCwgZXZlbnQ7XG4gIGZvciAobmFtZSBp
biBvbikge1xuICAgIGN1ciA9IG9uW25hbWVdO1xuICAgIG9sZCA9IG9sZE9uW25hbWVdO1xuICAg
IGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgaWYgKGlzVW5kZWYoY3VyKSkge1xu
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAg
ICAgICBcIkludmFsaWQgaGFuZGxlciBmb3IgZXZlbnQgXFxcIlwiICsgKGV2ZW50Lm5hbWUpICsg
XCJcXFwiOiBnb3QgXCIgKyBTdHJpbmcoY3VyKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAg
fSBlbHNlIGlmIChpc1VuZGVmKG9sZCkpIHtcbiAgICAgIGlmIChpc1VuZGVmKGN1ci5mbnMpKSB7
XG4gICAgICAgIGN1ciA9IG9uW25hbWVdID0gY3JlYXRlRm5JbnZva2VyKGN1cik7XG4gICAgICB9
XG4gICAgICBhZGQoZXZlbnQubmFtZSwgY3VyLCBldmVudC5vbmNlLCBldmVudC5jYXB0dXJlLCBl
dmVudC5wYXNzaXZlKTtcbiAgICB9IGVsc2UgaWYgKGN1ciAhPT0gb2xkKSB7XG4gICAgICBvbGQu
Zm5zID0gY3VyO1xuICAgICAgb25bbmFtZV0gPSBvbGQ7XG4gICAgfVxuICB9XG4gIGZvciAobmFt
ZSBpbiBvbGRPbikge1xuICAgIGlmIChpc1VuZGVmKG9uW25hbWVdKSkge1xuICAgICAgZXZlbnQg
PSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICAgIHJlbW92ZSQkMShldmVudC5uYW1lLCBvbGRP
bltuYW1lXSwgZXZlbnQuY2FwdHVyZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiBtZXJnZVZOb2RlSG9vayAoZGVmLCBob29rS2V5LCBob29rKSB7XG4gIHZhciBpbnZva2Vy
O1xuICB2YXIgb2xkSG9vayA9IGRlZltob29rS2V5XTtcblxuICBmdW5jdGlvbiB3cmFwcGVkSG9v
ayAoKSB7XG4gICAgaG9vay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIC8vIGltcG9ydGFu
dDogcmVtb3ZlIG1lcmdlZCBob29rIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBvbmx5IG9uY2VcbiAg
ICAvLyBhbmQgcHJldmVudCBtZW1vcnkgbGVha1xuICAgIHJlbW92ZShpbnZva2VyLmZucywgd3Jh
cHBlZEhvb2spO1xuICB9XG5cbiAgaWYgKGlzVW5kZWYob2xkSG9vaykpIHtcbiAgICAvLyBubyBl
eGlzdGluZyBob29rXG4gICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbd3JhcHBlZEhvb2td
KTtcbiAgfSBlbHNlIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXNE
ZWYob2xkSG9vay5mbnMpICYmIGlzVHJ1ZShvbGRIb29rLm1lcmdlZCkpIHtcbiAgICAgIC8vIGFs
cmVhZHkgYSBtZXJnZWQgaW52b2tlclxuICAgICAgaW52b2tlciA9IG9sZEhvb2s7XG4gICAgICBp
bnZva2VyLmZucy5wdXNoKHdyYXBwZWRIb29rKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhp
c3RpbmcgcGxhaW4gaG9va1xuICAgICAgaW52b2tlciA9IGNyZWF0ZUZuSW52b2tlcihbb2xkSG9v
aywgd3JhcHBlZEhvb2tdKTtcbiAgICB9XG4gIH1cblxuICBpbnZva2VyLm1lcmdlZCA9IHRydWU7
XG4gIGRlZltob29rS2V5XSA9IGludm9rZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBleHRy
YWN0UHJvcHNGcm9tVk5vZGVEYXRhIChcbiAgZGF0YSxcbiAgQ3RvcixcbiAgdGFnXG4pIHtcbiAg
Ly8gd2UgYXJlIG9ubHkgZXh0cmFjdGluZyByYXcgdmFsdWVzIGhlcmUuXG4gIC8vIHZhbGlkYXRp
b24gYW5kIGRlZmF1bHQgdmFsdWVzIGFyZSBoYW5kbGVkIGluIHRoZSBjaGlsZFxuICAvLyBjb21w
b25lbnQgaXRzZWxmLlxuICB2YXIgcHJvcE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJvcHM7XG4g
IGlmIChpc1VuZGVmKHByb3BPcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciByZXMg
PSB7fTtcbiAgdmFyIGF0dHJzID0gZGF0YS5hdHRycztcbiAgdmFyIHByb3BzID0gZGF0YS5wcm9w
cztcbiAgaWYgKGlzRGVmKGF0dHJzKSB8fCBpc0RlZihwcm9wcykpIHtcbiAgICBmb3IgKHZhciBr
ZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHZhciBhbHRLZXkgPSBoeXBoZW5hdGUoa2V5KTtc
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAo
XG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0dHJzICYm
IGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIHRp
cChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwiXFxcIiBp
cyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21wb25lbnRO
YW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUgaXNcIiAr
XG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICAg
IFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgY2Ft
ZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWlyIGtlYmFi
LWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAgICAgXCJ0
ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSArIFwiXFxc
IiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtleSwg
dHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFsc2Up
O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcCAoXG4g
IHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtcbiAgaWYg
KGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICByZXNb
a2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRl
IGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmICho
YXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07XG4g
ICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4gICAg
ICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxu
LyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5pbWl6ZSB0
aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXppbmcgdGhl
IHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBtYXJrdXAs
IG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRoZVxuLy8g
Z2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBBcnJheTxW
Tm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6YXRpb24g
aXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21wb25lbnRz
IC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFuIEFycmF5
IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2ltcGxlXG4v
LyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJheSwgd2Ug
ZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNvbmNhdC4g
SXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVzZSBmdW5j
dGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxkcmVuLlxu
ZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJh
eShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFw
cGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59XG5cbi8v
IDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdheXMgZ2Vu
ZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwgdi1mb3Is
IG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGggaGFuZC13
cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxsIG5vcm1h
bGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlwZXMgb2Yg
Y2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7
XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0Vk5vZGUo
Y2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8gbm9ybWFs
aXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0
aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlzRGVmKG5v
ZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24gbm9ybWFs
aXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciByZXMgPSBb
XTtcbiAgdmFyIGksIGMsIGxhc3Q7XG4gIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7
IGkrKykge1xuICAgIGMgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoaXNVbmRlZihjKSB8fCB0eXBl
b2YgYyA9PT0gJ2Jvb2xlYW4nKSB7IGNvbnRpbnVlIH1cbiAgICBsYXN0ID0gcmVzW3Jlcy5sZW5n
dGggLSAxXTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtcbiAg
ICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5lc3Rl
ZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZl
KGMpKSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBh
ZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIC8vIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBTU1Ig
aHlkcmF0aW9uIGJlY2F1c2UgdGV4dCBub2RlcyBhcmVcbiAgICAgICAgLy8gZXNzZW50aWFsbHkg
bWVyZ2VkIHdoZW4gcmVuZGVyZWQgdG8gSFRNTCBzdHJpbmdzXG4gICAgICAgIChsYXN0KS50ZXh0
ICs9IFN0cmluZyhjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAgLy8g
Y29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4dFZO
b2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUoYykg
JiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5v
ZGVzXG4gICAgICAgIHJlc1tyZXMubGVuZ3RoIC0gMV0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50
ZXh0ICsgYy50ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQga2V5IGZv
ciBuZXN0ZWQgYXJyYXkgY2hpbGRyZW4gKGxpa2VseSBnZW5lcmF0ZWQgYnkgdi1mb3IpXG4gICAg
ICAgIGlmIChpc1RydWUoY2hpbGRyZW4uX2lzVkxpc3QpICYmXG4gICAgICAgICAgaXNEZWYoYy50
YWcpICYmXG4gICAgICAgICAgaXNVbmRlZihjLmtleSkgJiZcbiAgICAgICAgICBpc0RlZihuZXN0
ZWRJbmRleCkpIHtcbiAgICAgICAgICBjLmtleSA9IFwiX192bGlzdFwiICsgbmVzdGVkSW5kZXgg
KyBcIl9cIiArIGkgKyBcIl9fXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2goYyk7XG4g
ICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9u
IGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgaWYgKGNvbXAuX19lc01vZHVsZSAmJiBjb21w
LmRlZmF1bHQpIHtcbiAgICBjb21wID0gY29tcC5kZWZhdWx0O1xuICB9XG4gIHJldHVybiBpc09i
amVjdChjb21wKVxuICAgID8gYmFzZS5leHRlbmQoY29tcClcbiAgICA6IGNvbXBcbn1cblxuZnVu
Y3Rpb24gY3JlYXRlQXN5bmNQbGFjZWhvbGRlciAoXG4gIGZhY3RvcnksXG4gIGRhdGEsXG4gIGNv
bnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICB2YXIgbm9kZSA9IGNyZWF0ZUVtcHR5
Vk5vZGUoKTtcbiAgbm9kZS5hc3luY0ZhY3RvcnkgPSBmYWN0b3J5O1xuICBub2RlLmFzeW5jTWV0
YSA9IHsgZGF0YTogZGF0YSwgY29udGV4dDogY29udGV4dCwgY2hpbGRyZW46IGNoaWxkcmVuLCB0
YWc6IHRhZyB9O1xuICByZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQXN5bmNDb21w
b25lbnQgKFxuICBmYWN0b3J5LFxuICBiYXNlQ3RvcixcbiAgY29udGV4dFxuKSB7XG4gIGlmIChp
c1RydWUoZmFjdG9yeS5lcnJvcikgJiYgaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAg
cmV0dXJuIGZhY3RvcnkuZXJyb3JDb21wXG4gIH1cblxuICBpZiAoaXNEZWYoZmFjdG9yeS5yZXNv
bHZlZCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5yZXNvbHZlZFxuICB9XG5cbiAgaWYgKGlzVHJ1
ZShmYWN0b3J5LmxvYWRpbmcpICYmIGlzRGVmKGZhY3RvcnkubG9hZGluZ0NvbXApKSB7XG4gICAg
cmV0dXJuIGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LmNv
bnRleHRzKSkge1xuICAgIC8vIGFscmVhZHkgcGVuZGluZ1xuICAgIGZhY3RvcnkuY29udGV4dHMu
cHVzaChjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29udGV4dHMgPSBmYWN0b3J5LmNv
bnRleHRzID0gW2NvbnRleHRdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcblxuICAgIHZhciBmb3Jj
ZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY29udGV4
dHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnRleHRzW2ldLiRmb3JjZVVwZGF0
ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzb2x2ZSA9IG9uY2UoZnVuY3Rpb24g
KHJlcykge1xuICAgICAgLy8gY2FjaGUgcmVzb2x2ZWRcbiAgICAgIGZhY3RvcnkucmVzb2x2ZWQg
PSBlbnN1cmVDdG9yKHJlcywgYmFzZUN0b3IpO1xuICAgICAgLy8gaW52b2tlIGNhbGxiYWNrcyBv
bmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMgcmVzb2x2ZVxuICAgICAgLy8gKGFzeW5j
IHJlc29sdmVzIGFyZSBzaGltbWVkIGFzIHN5bmNocm9ub3VzIGR1cmluZyBTU1IpXG4gICAgICBp
ZiAoIXN5bmMpIHtcbiAgICAgICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxu
ICAgIHZhciByZWplY3QgPSBvbmNlKGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQg
dG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0cmluZyhmYWN0b3J5KSkgK1xuICAg
ICAgICAocmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJlYXNvbikgOiAnJylcbiAgICAgICk7
XG4gICAgICBpZiAoaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7XG4gICAgICAgIGZhY3Rvcnku
ZXJyb3IgPSB0cnVlO1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xuICAgICAgfVxuICAgIH0pO1xu
XG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgIGlmIChpc09i
amVjdChyZXMpKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcy50aGVuID09PSAnZnVuY3Rpb24nKSB7
XG4gICAgICAgIC8vICgpID0+IFByb21pc2VcbiAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5y
ZXNvbHZlZCkpIHtcbiAgICAgICAgICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAg
ICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKHJlcy5jb21wb25lbnQpICYmIHR5cGVvZiByZXMu
Y29tcG9uZW50LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVudC50
aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikpIHtc
biAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBiYXNl
Q3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7XG4g
ICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcsIGJh
c2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICBm
YWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9y
eS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAgICAg
IGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIoKTtc
biAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRlbGF5IHx8IDIwMCk7XG4gICAg
ICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy50aW1lb3V0KSkge1xu
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGlzVW5k
ZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAg
ICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgICAg
ICAgICAgID8gKFwidGltZW91dCAoXCIgKyAocmVzLnRpbWVvdXQpICsgXCJtcylcIilcbiAgICAg
ICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAg
ICAgICAgIH0sIHJlcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAg
IHN5bmMgPSBmYWxzZTtcbiAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZlZCBzeW5jaHJvbm91
c2x5XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ1xuICAgICAgPyBmYWN0b3J5LmxvYWRpbmdD
b21wXG4gICAgICA6IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCAoY2hpbGRyZW4pIHtcbiAgaWYgKEFycmF5LmlzQXJy
YXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7
IGkrKykge1xuICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjKSAm
JiBpc0RlZihjLmNvbXBvbmVudE9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBjXG4gICAgICB9
XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV2ZW50
cyAodm0pIHtcbiAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZtLl9oYXNI
b29rRXZlbnQgPSBmYWxzZTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQgZXZlbnRzXG4gIHZh
ciBsaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBpZiAobGlzdGVu
ZXJzKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMpO1xuICB9
XG59XG5cbnZhciB0YXJnZXQ7XG5cbmZ1bmN0aW9uIGFkZCAoZXZlbnQsIGZuLCBvbmNlJCQxKSB7
XG4gIGlmIChvbmNlJCQxKSB7XG4gICAgdGFyZ2V0LiRvbmNlKGV2ZW50LCBmbik7XG4gIH0gZWxz
ZSB7XG4gICAgdGFyZ2V0LiRvbihldmVudCwgZm4pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92
ZSQxIChldmVudCwgZm4pIHtcbiAgdGFyZ2V0LiRvZmYoZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rp
b24gdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIChcbiAgdm0sXG4gIGxpc3RlbmVycyxcbiAgb2xk
TGlzdGVuZXJzXG4pIHtcbiAgdGFyZ2V0ID0gdm07XG4gIHVwZGF0ZUxpc3RlbmVycyhsaXN0ZW5l
cnMsIG9sZExpc3RlbmVycyB8fCB7fSwgYWRkLCByZW1vdmUkMSwgdm0pO1xufVxuXG5mdW5jdGlv
biBldmVudHNNaXhpbiAoVnVlKSB7XG4gIHZhciBob29rUkUgPSAvXmhvb2s6LztcbiAgVnVlLnBy
b3RvdHlwZS4kb24gPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRo
aXM7XG5cbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkg
e1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkgPCBsOyBpKyspIHtc
biAgICAgICAgdGhpcyQxLiRvbihldmVudFtpXSwgZm4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7
XG4gICAgICAodm0uX2V2ZW50c1tldmVudF0gfHwgKHZtLl9ldmVudHNbZXZlbnRdID0gW10pKS5w
dXNoKGZuKTtcbiAgICAgIC8vIG9wdGltaXplIGhvb2s6ZXZlbnQgY29zdCBieSB1c2luZyBhIGJv
b2xlYW4gZmxhZyBtYXJrZWQgYXQgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBpbnN0ZWFkIG9mIGEg
aGFzaCBsb29rdXBcbiAgICAgIGlmIChob29rUkUudGVzdChldmVudCkpIHtcbiAgICAgICAgdm0u
X2hhc0hvb2tFdmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9
O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9uY2UgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAg
dmFyIHZtID0gdGhpcztcbiAgICBmdW5jdGlvbiBvbiAoKSB7XG4gICAgICB2bS4kb2ZmKGV2ZW50
LCBvbik7XG4gICAgICBmbi5hcHBseSh2bSwgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgb24uZm4g
PSBmbjtcbiAgICB2bS4kb24oZXZlbnQsIG9uKTtcbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBW
dWUucHJvdG90eXBlLiRvZmYgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHRoaXMk
MSA9IHRoaXM7XG5cbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGFsbFxuICAgIGlmICghYXJn
dW1lbnRzLmxlbmd0aCkge1xuICAgICAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7
XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gYXJyYXkgb2YgZXZlbnRzXG4gICAgaWYg
KEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwLCBsID0gZXZl
bnQubGVuZ3RoOyBpJDEgPCBsOyBpJDErKykge1xuICAgICAgICB0aGlzJDEuJG9mZihldmVudFtp
JDFdLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lm
aWMgZXZlbnRcbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKCFjYnMp
IHtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0g
MSkge1xuICAgICAgdm0uX2V2ZW50c1tldmVudF0gPSBudWxsO1xuICAgICAgcmV0dXJuIHZtXG4g
ICAgfVxuICAgIC8vIHNwZWNpZmljIGhhbmRsZXJcbiAgICB2YXIgY2I7XG4gICAgdmFyIGkgPSBj
YnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGNiID0gY2JzW2ldO1xuICAgICAg
aWYgKGNiID09PSBmbiB8fCBjYi5mbiA9PT0gZm4pIHtcbiAgICAgICAgY2JzLnNwbGljZShpLCAx
KTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5c
biAgVnVlLnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciB2bSA9
IHRoaXM7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHZhciBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgICBp
ZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHZtLl9ldmVudHNbbG93ZXJDYXNlRXZlbnRd
KSB7XG4gICAgICAgIHRpcChcbiAgICAgICAgICBcIkV2ZW50IFxcXCJcIiArIGxvd2VyQ2FzZUV2
ZW50ICsgXCJcXFwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAoZm9y
bWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIgYnV0IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQg
Zm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAgXCJOb3RlIHRoYXQg
SFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3UgY2Fubm90IHVzZSBc
IiArXG4gICAgICAgICAgXCJ2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2UgZXZlbnRzIHdoZW4g
dXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gXCIgK1xuICAgICAgICAgIFwiWW91IHNob3VsZCBwcm9i
YWJseSB1c2UgXFxcIlwiICsgKGh5cGhlbmF0ZShldmVudCkpICsgXCJcXFwiIGluc3RlYWQgb2Yg
XFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmIChjYnMpIHtcbiAgICAgIGNi
cyA9IGNicy5sZW5ndGggPiAxID8gdG9BcnJheShjYnMpIDogY2JzO1xuICAgICAgdmFyIGFyZ3Mg
PSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYnNbaV0uYXBw
bHkodm0sIGFyZ3MpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJy
b3IoZSwgdm0sIChcImV2ZW50IGhhbmRsZXIgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiXCIp
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcbn1cblxu
LyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyByYXcgY2hpbGRy
ZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNsb3Rz
IChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xuICB2YXIgc2xvdHMgPSB7fTtcbiAgaWYg
KCFjaGlsZHJlbikge1xuICAgIHJldHVybiBzbG90c1xuICB9XG4gIHZhciBkZWZhdWx0U2xvdCA9
IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykg
e1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIC8vIG5hbWVkIHNsb3RzIHNob3Vs
ZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJlbmRlcmVkIGluIHRoZVxuICAg
IC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwg
Y2hpbGQuZnVuY3Rpb25hbENvbnRleHQgPT09IGNvbnRleHQpICYmXG4gICAgICBjaGlsZC5kYXRh
ICYmIGNoaWxkLmRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7XG4gICAgICB2YXIgbmFtZSA9IGNo
aWxkLmRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNsb3RzW25hbWVdIHx8IChzbG90c1tu
YW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAg
ICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJlbik7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICBkZWZhdWx0U2xvdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH1cbiAgLy8gaWdub3JlIHdoaXRl
c3BhY2VcbiAgaWYgKCFkZWZhdWx0U2xvdC5ldmVyeShpc1doaXRlc3BhY2UpKSB7XG4gICAgc2xv
dHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xuICB9XG4gIHJldHVybiBzbG90c1xufVxuXG5mdW5j
dGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuaXNDb21tZW50IHx8IG5v
ZGUudGV4dCA9PT0gJyAnXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTY29wZWRTbG90cyAoXG4gIGZu
cywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzXG4pIHtcbiAgcmVzID0gcmVzIHx8IHt9O1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0Fy
cmF5KGZuc1tpXSkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRTbG90cyhmbnNbaV0sIHJlcyk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHJlc1tmbnNbaV0ua2V5XSA9IGZuc1tpXS5mbjtcbiAgICB9XG4g
IH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGFjdGl2ZUluc3RhbmNlID0gbnVs
bDtcbnZhciBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcblxuZnVuY3Rpb24gaW5p
dExpZmVjeWNsZSAodm0pIHtcbiAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBs
b2NhdGUgZmlyc3Qgbm9uLWFic3RyYWN0IHBhcmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5w
YXJlbnQ7XG4gIGlmIChwYXJlbnQgJiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAo
cGFyZW50LiRvcHRpb25zLmFic3RyYWN0ICYmIHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJl
bnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZt
KTtcbiAgfVxuXG4gIHZtLiRwYXJlbnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8g
cGFyZW50LiRyb290IDogdm07XG5cbiAgdm0uJGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0g
e307XG5cbiAgdm0uX3dhdGNoZXIgPSBudWxsO1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2
bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2
bS5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtc
bn1cblxuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91
cGRhdGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7
XG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBk
YXRlJyk7XG4gICAgfVxuICAgIHZhciBwcmV2RWwgPSB2bS4kZWw7XG4gICAgdmFyIHByZXZWbm9k
ZSA9IHZtLl92bm9kZTtcbiAgICB2YXIgcHJldkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFu
Y2U7XG4gICAgYWN0aXZlSW5zdGFuY2UgPSB2bTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAg
ICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNc
biAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXBy
ZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9f
cGF0Y2hfXyhcbiAgICAgICAgdm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1v
dmVPbmx5ICovLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcGFyZW50RWxtLFxuICAgICAgICB2bS4k
b3B0aW9ucy5fcmVmRWxtXG4gICAgICApO1xuICAgICAgLy8gbm8gbmVlZCBmb3IgdGhlIHJlZiBu
b2RlcyBhZnRlciBpbml0aWFsIHBhdGNoXG4gICAgICAvLyB0aGlzIHByZXZlbnRzIGtlZXBpbmcg
YSBkZXRhY2hlZCBET00gdHJlZSBpbiBtZW1vcnkgKCM1ODUxKVxuICAgICAgdm0uJG9wdGlvbnMu
X3BhcmVudEVsbSA9IHZtLiRvcHRpb25zLl9yZWZFbG0gPSBudWxsO1xuICAgIH0gZWxzZSB7XG4g
ICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2
bm9kZSk7XG4gICAgfVxuICAgIGFjdGl2ZUluc3RhbmNlID0gcHJldkFjdGl2ZUluc3RhbmNlO1xu
ICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAg
IHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAg
dm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8gaWYgcGFyZW50IGlzIGFuIEhPQywg
dXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAm
JiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7XG4gICAgICB2bS4kcGFyZW50LiRl
bCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBob29rIGlzIGNhbGxlZCBieSB0aGUg
c2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4g
YSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VV
cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dh
dGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBW
dWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7
XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4g
ICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95
ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVu
dCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJv
eWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgICAgcmVtb3ZlKHBhcmVudC4kY2hp
bGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24gd2F0Y2hlcnNcbiAgICBpZiAodm0u
X3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIHZh
ciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2bS5f
d2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBm
cm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1heSBub3QgaGF2ZSBvYnNlcnZlci5c
biAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2bS5fZGF0YS5fX29iX18udm1Db3Vu
dC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhvb2suLi5cbiAgICB2bS5faXNEZXN0
cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVu
ZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwpO1xuICAgIC8vIGZp
cmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8v
IHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4gICAgdm0uJG9mZigpO1xuICAgIC8v
IHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRl
bC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIG1vdW50Q29tcG9u
ZW50IChcbiAgdm0sXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICB2bS4kZWwgPSBlbDtcbiAg
aWYgKCF2bS4kb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2bS4kb3B0aW9ucy5yZW5kZXIgPSBjcmVh
dGVFbXB0eVZOb2RlO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICgodm0uJG9w
dGlvbnMudGVtcGxhdGUgJiYgdm0uJG9wdGlvbnMudGVtcGxhdGUuY2hhckF0KDApICE9PSAnIycp
IHx8XG4gICAgICAgIHZtLiRvcHRpb25zLmVsIHx8IGVsKSB7XG4gICAgICAgIHdhcm4oXG4gICAg
ICAgICAgJ1lvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUtb25seSBidWlsZCBvZiBWdWUgd2hlcmUg
dGhlIHRlbXBsYXRlICcgK1xuICAgICAgICAgICdjb21waWxlciBpcyBub3QgYXZhaWxhYmxlLiBF
aXRoZXIgcHJlLWNvbXBpbGUgdGhlIHRlbXBsYXRlcyBpbnRvICcgK1xuICAgICAgICAgICdyZW5k
ZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1aWxkLicsXG4gICAg
ICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4oXG4gICAg
ICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb21wb25lbnQ6IHRlbXBsYXRlIG9yIHJlbmRlciBmdW5j
dGlvbiBub3QgZGVmaW5lZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4g
ICAgfVxuICB9XG4gIGNhbGxIb29rKHZtLCAnYmVmb3JlTW91bnQnKTtcblxuICB2YXIgdXBkYXRl
Q29tcG9uZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmsp
IHtcbiAgICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbmFtZSA9
IHZtLl9uYW1lO1xuICAgICAgdmFyIGlkID0gdm0uX3VpZDtcbiAgICAgIHZhciBzdGFydFRhZyA9
IFwidnVlLXBlcmYtc3RhcnQ6XCIgKyBpZDtcbiAgICAgIHZhciBlbmRUYWcgPSBcInZ1ZS1wZXJm
LWVuZDpcIiArIGlkO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICAgIHZhciB2bm9kZSA9
IHZtLl9yZW5kZXIoKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKG5hbWUg
KyBcIiByZW5kZXJcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuXG4gICAgICBtYXJrKHN0YXJ0VGFn
KTtcbiAgICAgIHZtLl91cGRhdGUodm5vZGUsIGh5ZHJhdGluZyk7XG4gICAgICBtYXJrKGVuZFRh
Zyk7XG4gICAgICBtZWFzdXJlKChuYW1lICsgXCIgcGF0Y2hcIiksIHN0YXJ0VGFnLCBlbmRUYWcp
O1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgdm0uX3VwZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4gICAgfTtcbiAg
fVxuXG4gIHZtLl93YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIHVwZGF0ZUNvbXBvbmVudCwgbm9v
cCk7XG4gIGh5ZHJhdGluZyA9IGZhbHNlO1xuXG4gIC8vIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFu
Y2UsIGNhbGwgbW91bnRlZCBvbiBzZWxmXG4gIC8vIG1vdW50ZWQgaXMgY2FsbGVkIGZvciByZW5k
ZXItY3JlYXRlZCBjaGlsZCBjb21wb25lbnRzIGluIGl0cyBpbnNlcnRlZCBob29rXG4gIGlmICh2
bS4kdm5vZGUgPT0gbnVsbCkge1xuICAgIHZtLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgIGNhbGxI
b29rKHZtLCAnbW91bnRlZCcpO1xuICB9XG4gIHJldHVybiB2bVxufVxuXG5mdW5jdGlvbiB1cGRh
dGVDaGlsZENvbXBvbmVudCAoXG4gIHZtLFxuICBwcm9wc0RhdGEsXG4gIGxpc3RlbmVycyxcbiAg
cGFyZW50Vm5vZGUsXG4gIHJlbmRlckNoaWxkcmVuXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQg
PSB0cnVlO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IGhhcyBzbG90
IGNoaWxkcmVuXG4gIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgb3ZlcndyaXRpbmcgJG9w
dGlvbnMuX3JlbmRlckNoaWxkcmVuXG4gIHZhciBoYXNDaGlsZHJlbiA9ICEhKFxuICAgIHJlbmRl
ckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNcbiAgICB2
bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNsb3RzXG4g
ICAgcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyB8fCAvLyBoYXMgbmV3IHNjb3BlZCBzbG90
c1xuICAgIHZtLiRzY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgLy8gaGFzIG9sZCBzY29wZWQg
c2xvdHNcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtc
biAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5v
ZGUgd2l0aG91dCByZS1yZW5kZXJcblxuICBpZiAodm0uX3Zub2RlKSB7IC8vIHVwZGF0ZSBjaGls
ZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xuICB9
XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNoaWxkcmVuO1xuXG4gIC8v
IHVwZGF0ZSAkYXR0cnMgYW5kICRsaXN0ZW5zZXJzIGhhc2hcbiAgLy8gdGhlc2UgYXJlIGFsc28g
cmVhY3RpdmUgc28gdGhleSBtYXkgdHJpZ2dlciBjaGlsZCB1cGRhdGUgaWYgdGhlIGNoaWxkXG4g
IC8vIHVzZWQgdGhlbSBkdXJpbmcgcmVuZGVyXG4gIHZtLiRhdHRycyA9IHBhcmVudFZub2RlLmRh
dGEgJiYgcGFyZW50Vm5vZGUuZGF0YS5hdHRycztcbiAgdm0uJGxpc3RlbmVycyA9IGxpc3RlbmVy
cztcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5w
cm9wcykge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGZhbHNlO1xuICAgIHZh
ciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2bS4kb3B0aW9ucy5fcHJv
cEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wS2V5cy5sZW5ndGg7IGkr
Kykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAgcHJvcHNba2V5XSA9IHZh
bGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9wc0RhdGEsIHZtKTtcbiAgICB9
XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICAvLyBrZWVwIGEg
Y29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhID0gcHJvcHNE
YXRhO1xuICB9XG5cbiAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICBpZiAobGlzdGVuZXJzKSB7XG4g
ICAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gICAg
dm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICB1cGRhdGVDb21w
b25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKTtcbiAgfVxuICAvLyBy
ZXNvbHZlIHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGlsZHJlblxuICBpZiAoaGFzQ2hp
bGRyZW4pIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBh
cmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5n
Q2hpbGRDb21wb25lbnQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0luSW5hY3RpdmVU
cmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0uJHBhcmVudCkpIHtcbiAgICBpZiAo
dm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxu
ZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGly
ZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGlzSW5JbmFj
dGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodm0uX2Rp
cmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZtLl9pbmFjdGl2ZSB8fCB2
bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgYWN0
aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9v
ayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVDaGlsZENv
bXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdElu
YWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJl
dHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2ZSkge1xuICAgIHZtLl9pbmFjdGl2
ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xu
ICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rp
b24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIHZhciBoYW5kbGVycyA9IHZtLiRvcHRpb25zW2hv
b2tdO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJz
Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaGFuZGxlcnNbaV0u
Y2FsbCh2bSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGUsIHZt
LCAoaG9vayArIFwiIGhvb2tcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAodm0uX2hh
c0hvb2tFdmVudCkge1xuICAgIHZtLiRlbWl0KCdob29rOicgKyBob29rKTtcbiAgfVxufVxuXG4v
KiAgKi9cblxuXG52YXIgTUFYX1VQREFURV9DT1VOVCA9IDEwMDtcblxudmFyIHF1ZXVlID0gW107
XG52YXIgYWN0aXZhdGVkQ2hpbGRyZW4gPSBbXTtcbnZhciBoYXMgPSB7fTtcbnZhciBjaXJjdWxh
ciA9IHt9O1xudmFyIHdhaXRpbmcgPSBmYWxzZTtcbnZhciBmbHVzaGluZyA9IGZhbHNlO1xudmFy
IGluZGV4ID0gMDtcblxuLyoqXG4gKiBSZXNldCB0aGUgc2NoZWR1bGVyJ3Mgc3RhdGUuXG4gKi9c
bmZ1bmN0aW9uIHJlc2V0U2NoZWR1bGVyU3RhdGUgKCkge1xuICBpbmRleCA9IHF1ZXVlLmxlbmd0
aCA9IGFjdGl2YXRlZENoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIGhhcyA9IHt9O1xuICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNpcmN1bGFyID0ge307
XG4gIH1cbiAgd2FpdGluZyA9IGZsdXNoaW5nID0gZmFsc2U7XG59XG5cbi8qKlxuICogRmx1c2gg
Ym90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2No
ZWR1bGVyUXVldWUgKCkge1xuICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtc
blxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6
XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChi
ZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxk
KVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRz
IHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0
ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMg
ZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8g
ICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChh
LCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0
aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBl
eGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7
IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlkID0gd2F0Y2hl
ci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRjaGVyLnJ1bigpO1xuICAgIC8vIGlu
IGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIgdXBkYXRlcy5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBoYXNbaWRdICE9IG51bGwpIHtc
biAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxhcltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYg
KGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09VTlQpIHtcbiAgICAgICAgd2FybihcbiAgICAg
ICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRlIHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAg
ICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhw
cmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAg
ICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAg
KSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAg
ICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3Jl
IHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJl
bi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNl
dFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0
aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNh
bGxVcGRhdGVkSG9va3ModXBkYXRlZFF1ZXVlKTtcblxuICAvLyBkZXZ0b29sIGhvb2tcbiAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChkZXZ0b29scyAmJiBjb25maWcuZGV2dG9vbHMp
IHtcbiAgICBkZXZ0b29scy5lbWl0KCdmbHVzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxV
cGRhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIHZhciBpID0gcXVldWUubGVuZ3RoO1xuICB3aGlsZSAo
aS0tKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpXTtcbiAgICB2YXIgdm0gPSB3YXRjaGVy
LnZtO1xuICAgIGlmICh2bS5fd2F0Y2hlciA9PT0gd2F0Y2hlciAmJiB2bS5faXNNb3VudGVkKSB7
XG4gICAgICBjYWxsSG9vayh2bSwgJ3VwZGF0ZWQnKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4g
KiBRdWV1ZSBhIGtlcHQtYWxpdmUgY29tcG9uZW50IHRoYXQgd2FzIGFjdGl2YXRlZCBkdXJpbmcg
cGF0Y2guXG4gKiBUaGUgcXVldWUgd2lsbCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIGVudGlyZSB0
cmVlIGhhcyBiZWVuIHBhdGNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlQWN0aXZhdGVkQ29tcG9u
ZW50ICh2bSkge1xuICAvLyBzZXR0aW5nIF9pbmFjdGl2ZSB0byBmYWxzZSBoZXJlIHNvIHRoYXQg
YSByZW5kZXIgZnVuY3Rpb24gY2FuXG4gIC8vIHJlbHkgb24gY2hlY2tpbmcgd2hldGhlciBpdCdz
IGluIGFuIGluYWN0aXZlIHRyZWUgKGUuZy4gcm91dGVyLXZpZXcpXG4gIHZtLl9pbmFjdGl2ZSA9
IGZhbHNlO1xuICBhY3RpdmF0ZWRDaGlsZHJlbi5wdXNoKHZtKTtcbn1cblxuZnVuY3Rpb24gY2Fs
bEFjdGl2YXRlZEhvb2tzIChxdWV1ZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxl
bmd0aDsgaSsrKSB7XG4gICAgcXVldWVbaV0uX2luYWN0aXZlID0gdHJ1ZTtcbiAgICBhY3RpdmF0
ZUNoaWxkQ29tcG9uZW50KHF1ZXVlW2ldLCB0cnVlIC8qIHRydWUgKi8pO1xuICB9XG59XG5cbi8q
KlxuICogUHVzaCBhIHdhdGNoZXIgaW50byB0aGUgd2F0Y2hlciBxdWV1ZS5cbiAqIEpvYnMgd2l0
aCBkdXBsaWNhdGUgSURzIHdpbGwgYmUgc2tpcHBlZCB1bmxlc3MgaXQnc1xuICogcHVzaGVkIHdo
ZW4gdGhlIHF1ZXVlIGlzIGJlaW5nIGZsdXNoZWQuXG4gKi9cbmZ1bmN0aW9uIHF1ZXVlV2F0Y2hl
ciAod2F0Y2hlcikge1xuICB2YXIgaWQgPSB3YXRjaGVyLmlkO1xuICBpZiAoaGFzW2lkXSA9PSBu
dWxsKSB7XG4gICAgaGFzW2lkXSA9IHRydWU7XG4gICAgaWYgKCFmbHVzaGluZykge1xuICAgICAg
cXVldWUucHVzaCh3YXRjaGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgYWxyZWFkeSBm
bHVzaGluZywgc3BsaWNlIHRoZSB3YXRjaGVyIGJhc2VkIG9uIGl0cyBpZFxuICAgICAgLy8gaWYg
YWxyZWFkeSBwYXN0IGl0cyBpZCwgaXQgd2lsbCBiZSBydW4gbmV4dCBpbW1lZGlhdGVseS5cbiAg
ICAgIHZhciBpID0gcXVldWUubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpID4gaW5kZXggJiYg
cXVldWVbaV0uaWQgPiB3YXRjaGVyLmlkKSB7XG4gICAgICAgIGktLTtcbiAgICAgIH1cbiAgICAg
IHF1ZXVlLnNwbGljZShpICsgMSwgMCwgd2F0Y2hlcik7XG4gICAgfVxuICAgIC8vIHF1ZXVlIHRo
ZSBmbHVzaFxuICAgIGlmICghd2FpdGluZykge1xuICAgICAgd2FpdGluZyA9IHRydWU7XG4gICAg
ICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICov
XG5cbnZhciB1aWQkMiA9IDA7XG5cbi8qKlxuICogQSB3YXRjaGVyIHBhcnNlcyBhbiBleHByZXNz
aW9uLCBjb2xsZWN0cyBkZXBlbmRlbmNpZXMsXG4gKiBhbmQgZmlyZXMgY2FsbGJhY2sgd2hlbiB0
aGUgZXhwcmVzc2lvbiB2YWx1ZSBjaGFuZ2VzLlxuICogVGhpcyBpcyB1c2VkIGZvciBib3RoIHRo
ZSAkd2F0Y2goKSBhcGkgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbnZhciBXYXRjaGVyID0gZnVuY3Rp
b24gV2F0Y2hlciAoXG4gIHZtLFxuICBleHBPckZuLFxuICBjYixcbiAgb3B0aW9uc1xuKSB7XG4g
IHRoaXMudm0gPSB2bTtcbiAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8vIG9wdGlvbnNc
biAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlZXAgPSAhIW9wdGlvbnMuZGVlcDtcbiAgICB0
aGlzLnVzZXIgPSAhIW9wdGlvbnMudXNlcjtcbiAgICB0aGlzLmxhenkgPSAhIW9wdGlvbnMubGF6
eTtcbiAgICB0aGlzLnN5bmMgPSAhIW9wdGlvbnMuc3luYztcbiAgfSBlbHNlIHtcbiAgICB0aGlz
LmRlZXAgPSB0aGlzLnVzZXIgPSB0aGlzLmxhenkgPSB0aGlzLnN5bmMgPSBmYWxzZTtcbiAgfVxu
ICB0aGlzLmNiID0gY2I7XG4gIHRoaXMuaWQgPSArK3VpZCQyOyAvLyB1aWQgZm9yIGJhdGNoaW5n
XG4gIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgdGhpcy5kaXJ0eSA9IHRoaXMubGF6eTsgLy8gZm9y
IGxhenkgd2F0Y2hlcnNcbiAgdGhpcy5kZXBzID0gW107XG4gIHRoaXMubmV3RGVwcyA9IFtdO1xu
ICB0aGlzLmRlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMubmV3RGVwSWRzID0gbmV3IF9TZXQo
KTtcbiAgdGhpcy5leHByZXNzaW9uID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJ1xuICAgID8gZXhwT3JGbi50b1N0cmluZygpXG4gICAgOiAnJztcbiAgLy8gcGFyc2UgZXhw
cmVzc2lvbiBmb3IgZ2V0dGVyXG4gIGlmICh0eXBlb2YgZXhwT3JGbiA9PT0gJ2Z1bmN0aW9uJykg
e1xuICAgIHRoaXMuZ2V0dGVyID0gZXhwT3JGbjtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmdldHRl
ciA9IHBhcnNlUGF0aChleHBPckZuKTtcbiAgICBpZiAoIXRoaXMuZ2V0dGVyKSB7XG4gICAgICB0
aGlzLmdldHRlciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRo
OiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBh
Y2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxs
IGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7
XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxu
ICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5k
IHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBm
dW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZh
ciB2bSA9IHRoaXMudm07XG4gIHRyeSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZt
LCB2bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICBoYW5k
bGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJl
c3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZVxuICAgIH1c
biAgfSBmaW5hbGx5IHtcbiAgICAvLyBcInRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBh
cmUgYWxsIHRyYWNrZWQgYXNcbiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdc
biAgICBpZiAodGhpcy5kZWVwKSB7XG4gICAgICB0cmF2ZXJzZSh2YWx1ZSk7XG4gICAgfVxuICAg
IHBvcFRhcmdldCgpO1xuICAgIHRoaXMuY2xlYW51cERlcHMoKTtcbiAgfVxuICByZXR1cm4gdmFs
dWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAq
L1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAg
dmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0
aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAg
aWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAg
IH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9u
LlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBE
ZXBzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRoaXMuZGVwcy5s
ZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgZGVwID0gdGhpcyQxLmRlcHNbaV07XG4g
ICAgaWYgKCF0aGlzJDEubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3Zl
U3ViKHRoaXMkMSk7XG4gICAgfVxuICB9XG4gIHZhciB0bXAgPSB0aGlzLmRlcElkcztcbiAgdGhp
cy5kZXBJZHMgPSB0aGlzLm5ld0RlcElkcztcbiAgdGhpcy5uZXdEZXBJZHMgPSB0bXA7XG4gIHRo
aXMubmV3RGVwSWRzLmNsZWFyKCk7XG4gIHRtcCA9IHRoaXMuZGVwcztcbiAgdGhpcy5kZXBzID0g
dGhpcy5uZXdEZXBzO1xuICB0aGlzLm5ld0RlcHMgPSB0bXA7XG4gIHRoaXMubmV3RGVwcy5sZW5n
dGggPSAwO1xufTtcblxuLyoqXG4gKiBTdWJzY3JpYmVyIGludGVyZmFjZS5cbiAqIFdpbGwgYmUg
Y2FsbGVkIHdoZW4gYSBkZXBlbmRlbmN5IGNoYW5nZXMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBl
LnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNl
ICovXG4gIGlmICh0aGlzLmxhenkpIHtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfSBlbHNl
IGlmICh0aGlzLnN5bmMpIHtcbiAgICB0aGlzLnJ1bigpO1xuICB9IGVsc2Uge1xuICAgIHF1ZXVl
V2F0Y2hlcih0aGlzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTY2hlZHVsZXIgam9iIGludGVyZmFj
ZS5cbiAqIFdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIuXG4gKi9cbldhdGNoZXIucHJv
dG90eXBlLnJ1biA9IGZ1bmN0aW9uIHJ1biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAg
IHZhciB2YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRoaXMu
dmFsdWUgfHxcbiAgICAgIC8vIERlZXAgd2F0Y2hlcnMgYW5kIHdhdGNoZXJzIG9uIE9iamVjdC9B
cnJheXMgc2hvdWxkIGZpcmUgZXZlblxuICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgaXMgdGhlIHNh
bWUsIGJlY2F1c2UgdGhlIHZhbHVlIG1heVxuICAgICAgLy8gaGF2ZSBtdXRhdGVkLlxuICAgICAg
aXNPYmplY3QodmFsdWUpIHx8XG4gICAgICB0aGlzLmRlZXBcbiAgICApIHtcbiAgICAgIC8vIHNl
dCBuZXcgdmFsdWVcbiAgICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlz
LnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgIHRyeSB7XG4g
ICAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICAg
IH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCB0aGlzLnZtLCAoXCJjYWxs
YmFjayBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7
XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZt
LCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBF
dmFsdWF0ZSB0aGUgdmFsdWUgb2YgdGhlIHdhdGNoZXIuXG4gKiBUaGlzIG9ubHkgZ2V0cyBjYWxs
ZWQgZm9yIGxhenkgd2F0Y2hlcnMuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmV2YWx1YXRlID0g
ZnVuY3Rpb24gZXZhbHVhdGUgKCkge1xuICB0aGlzLnZhbHVlID0gdGhpcy5nZXQoKTtcbiAgdGhp
cy5kaXJ0eSA9IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXBlbmQgb24gYWxsIGRlcHMgY29sbGVj
dGVkIGJ5IHRoaXMgd2F0Y2hlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZGVwZW5kID0gZnVu
Y3Rpb24gZGVwZW5kICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgaSA9IHRo
aXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzJDEuZGVwc1tpXS5kZXBl
bmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNp
ZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBm
dW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKHRo
aXMuYWN0aXZlKSB7XG4gICAgLy8gcmVtb3ZlIHNlbGYgZnJvbSB2bSdzIHdhdGNoZXIgbGlzdFxu
ICAgIC8vIHRoaXMgaXMgYSBzb21ld2hhdCBleHBlbnNpdmUgb3BlcmF0aW9uIHNvIHdlIHNraXAg
aXRcbiAgICAvLyBpZiB0aGUgdm0gaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgIGlmICghdGhpcy52
bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmVtb3ZlKHRoaXMudm0uX3dhdGNoZXJzLCB0
aGlzKTtcbiAgICB9XG4gICAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICAgIHdoaWxlIChp
LS0pIHtcbiAgICAgIHRoaXMkMS5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAg
ICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRy
YXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0
aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29sbGVj
dGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAqL1xudmFyIHNlZW5PYmplY3RzID0gbmV3
IF9TZXQoKTtcbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgc2Vlbk9iamVjdHMuY2xlYXIo
KTtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVy
c2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJy
YXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCAhT2JqZWN0LmlzRXh0
ZW5zaWJsZSh2YWwpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtcbiAg
ICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVwSWQp
KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4gIGlm
IChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJz
ZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZh
bCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZh
bFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3Bl
cnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0
cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRh
cmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9
IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tl
eV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5
U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRp
b24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtd
O1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJv
cHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHMo
dm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZt
KTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290
RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBv
cHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCAmJiBvcHRzLndhdGNoICE9PSBuYXRp
dmVXYXRjaCkge1xuICAgIGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gY2hlY2tPcHRpb25UeXBlICh2bSwgbmFtZSkge1xuICB2YXIgb3B0aW9uID0gdm0uJG9w
dGlvbnNbbmFtZV07XG4gIGlmICghaXNQbGFpbk9iamVjdChvcHRpb24pKSB7XG4gICAgd2Fybihc
biAgICAgIChcImNvbXBvbmVudCBvcHRpb24gXFxcIlwiICsgbmFtZSArIFwiXFxcIiBzaG91bGQg
YmUgYW4gb2JqZWN0LlwiKSxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBp
bml0UHJvcHMgKHZtLCBwcm9wc09wdGlvbnMpIHtcbiAgdmFyIHByb3BzRGF0YSA9IHZtLiRvcHRp
b25zLnByb3BzRGF0YSB8fCB7fTtcbiAgdmFyIHByb3BzID0gdm0uX3Byb3BzID0ge307XG4gIC8v
IGNhY2hlIHByb3Aga2V5cyBzbyB0aGF0IGZ1dHVyZSBwcm9wcyB1cGRhdGVzIGNhbiBpdGVyYXRl
IHVzaW5nIEFycmF5XG4gIC8vIGluc3RlYWQgb2YgZHluYW1pYyBvYmplY3Qga2V5IGVudW1lcmF0
aW9uLlxuICB2YXIga2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyA9IFtdO1xuICB2YXIgaXNS
b290ID0gIXZtLiRwYXJlbnQ7XG4gIC8vIHJvb3QgaW5zdGFuY2UgcHJvcHMgc2hvdWxkIGJlIGNv
bnZlcnRlZFxuICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSBpc1Jvb3Q7XG4gIHZhciBs
b29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gICAgdmFyIHZh
bHVlID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcHNPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaXNSZXNlcnZlZEF0dHJpYnV0ZShrZXkp
IHx8IGNvbmZpZy5pc1Jlc2VydmVkQXR0cihrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAg
ICAgKFwiXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIGFuZCBj
YW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAg
ICAgKTtcbiAgICAgIH1cbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVl
LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh2bS4kcGFyZW50ICYmICFpc1VwZGF0aW5nQ2hp
bGRDb21wb25lbnQpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRh
dGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZhbHVlIHdpbGwgYmUgXCIgK1xuICAgICAg
ICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcGFyZW50IGNvbXBvbmVudCByZS1yZW5k
ZXJzLiBcIiArXG4gICAgICAgICAgICBcIkluc3RlYWQsIHVzZSBhIGRhdGEgb3IgY29tcHV0ZWQg
cHJvcGVydHkgYmFzZWQgb24gdGhlIHByb3AncyBcIiArXG4gICAgICAgICAgICBcInZhbHVlLiBQ
cm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAg
dm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgICAvLyBz
dGF0aWMgcHJvcHMgYXJlIGFscmVhZHkgcHJveGllZCBvbiB0aGUgY29tcG9uZW50J3MgcHJvdG90
eXBlXG4gICAgLy8gZHVyaW5nIFZ1ZS5leHRlbmQoKS4gV2Ugb25seSBuZWVkIHRvIHByb3h5IHBy
b3BzIGRlZmluZWQgYXRcbiAgICAvLyBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5
IGluIHZtKSkge1xuICAgICAgcHJveHkodm0sIFwiX3Byb3BzXCIsIGtleSk7XG4gICAgfVxuICB9
O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wc09wdGlvbnMpIGxvb3AoIGtleSApO1xuICBvYnNl
cnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBpbml0RGF0YSAo
dm0pIHtcbiAgdmFyIGRhdGEgPSB2bS4kb3B0aW9ucy5kYXRhO1xuICBkYXRhID0gdm0uX2RhdGEg
PSB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gZ2V0RGF0YShkYXRhLCB2bSlcbiAg
ICA6IGRhdGEgfHwge307XG4gIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgIGRhdGEg
PSB7fTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4o
XG4gICAgICAnZGF0YSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBhbiBvYmplY3Q6XFxuJyArXG4g
ICAgICAnaHR0cHM6Ly92dWVqcy5vcmcvdjIvZ3VpZGUvY29tcG9uZW50cy5odG1sI2RhdGEtTXVz
dC1CZS1hLUZ1bmN0aW9uJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyBwcm94eSBkYXRh
IG9uIGluc3RhbmNlXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gIHZhciBwcm9w
cyA9IHZtLiRvcHRpb25zLnByb3BzO1xuICB2YXIgbWV0aG9kcyA9IHZtLiRvcHRpb25zLm1ldGhv
ZHM7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIga2V5
ID0ga2V5c1tpXTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgaWYgKG1ldGhvZHMgJiYgaGFzT3duKG1ldGhvZHMsIGtleSkpIHtcbiAgICAg
ICAgd2FybihcbiAgICAgICAgICAoXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBh
bHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIGRhdGEgcHJvcGVydHkuXCIpLFxuICAgICAgICAgIHZt
XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJv
cHMsIGtleSkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
JiYgd2FybihcbiAgICAgICAgXCJUaGUgZGF0YSBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxc
XCIgaXMgYWxyZWFkeSBkZWNsYXJlZCBhcyBhIHByb3AuIFwiICtcbiAgICAgICAgXCJVc2UgcHJv
cCBkZWZhdWx0IHZhbHVlIGluc3RlYWQuXCIsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0g
ZWxzZSBpZiAoIWlzUmVzZXJ2ZWQoa2V5KSkge1xuICAgICAgcHJveHkodm0sIFwiX2RhdGFcIiwg
a2V5KTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBkYXRhXG4gIG9ic2VydmUoZGF0YSwgdHJ1
ZSAvKiBhc1Jvb3REYXRhICovKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YSAoZGF0YSwgdm0pIHtc
biAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtKVxuICB9IGNhdGNoIChlKSB7XG4gICAg
aGFuZGxlRXJyb3IoZSwgdm0sIFwiZGF0YSgpXCIpO1xuICAgIHJldHVybiB7fVxuICB9XG59XG5c
bnZhciBjb21wdXRlZFdhdGNoZXJPcHRpb25zID0geyBsYXp5OiB0cnVlIH07XG5cbmZ1bmN0aW9u
IGluaXRDb21wdXRlZCAodm0sIGNvbXB1dGVkKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgY2hlY2tPcHRpb25UeXBlKHZtLCAnY29tcHV0ZWQnKTtcbiAgdmFy
IHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xu
XG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0
ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicg
PyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgZ2V0dGVyID09IG51bGwpIHtcbiAgICAgIHdhcm4oXG4gICAgICAg
IChcIkdldHRlciBpcyBtaXNzaW5nIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkg
KyBcIlxcXCIuXCIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gY3JlYXRl
IGludGVybmFsIHdhdGNoZXIgZm9yIHRoZSBjb21wdXRlZCBwcm9wZXJ0eS5cbiAgICB3YXRjaGVy
c1trZXldID0gbmV3IFdhdGNoZXIodm0sIGdldHRlciB8fCBub29wLCBub29wLCBjb21wdXRlZFdh
dGNoZXJPcHRpb25zKTtcblxuICAgIC8vIGNvbXBvbmVudC1kZWZpbmVkIGNvbXB1dGVkIHByb3Bl
cnRpZXMgYXJlIGFscmVhZHkgZGVmaW5lZCBvbiB0aGVcbiAgICAvLyBjb21wb25lbnQgcHJvdG90
eXBlLiBXZSBvbmx5IG5lZWQgdG8gZGVmaW5lIGNvbXB1dGVkIHByb3BlcnRpZXMgZGVmaW5lZFxu
ICAgIC8vIGF0IGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4g
ICAgICBkZWZpbmVDb21wdXRlZCh2bSwga2V5LCB1c2VyRGVmKTtcbiAgICB9IGVsc2UgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChrZXkgaW4g
dm0uJGRhdGEpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwi
ICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBkYXRhLlwiKSwgdm0pO1xuICAg
ICAgfSBlbHNlIGlmICh2bS4kb3B0aW9ucy5wcm9wcyAmJiBrZXkgaW4gdm0uJG9wdGlvbnMucHJv
cHMpIHtcbiAgICAgICAgd2FybigoXCJUaGUgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5
ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVmaW5lZCBhcyBhIHByb3AuXCIpLCB2bSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZUNvbXB1dGVkICh0YXJnZXQsIGtleSwg
dXNlckRlZikge1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBz
aGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KTtc
biAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gbm9vcDtcbiAgfSBlbHNlIHtcbiAg
ICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gdXNlckRlZi5nZXRcbiAgICAgID8gdXNl
ckRlZi5jYWNoZSAhPT0gZmFsc2VcbiAgICAgICAgPyBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkp
XG4gICAgICAgIDogdXNlckRlZi5nZXRcbiAgICAgIDogbm9vcDtcbiAgICBzaGFyZWRQcm9wZXJ0
eURlZmluaXRpb24uc2V0ID0gdXNlckRlZi5zZXRcbiAgICAgID8gdXNlckRlZi5zZXRcbiAgICAg
IDogbm9vcDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyAmJlxuICAgICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9PT0gbm9vcCkge1xuICAg
IHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJu
KFxuICAgICAgICAoXCJDb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2Fz
IGFzc2lnbmVkIHRvIGJ1dCBpdCBoYXMgbm8gc2V0dGVyLlwiKSxcbiAgICAgICAgdGhpc1xuICAg
ICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwg
c2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZWRH
ZXR0ZXIgKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24gY29tcHV0ZWRHZXR0ZXIgKCkge1xuICAg
IHZhciB3YXRjaGVyID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVycyAmJiB0aGlzLl9jb21wdXRlZFdh
dGNoZXJzW2tleV07XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAgICAgIGlmICh3YXRjaGVyLmRpcnR5
KSB7XG4gICAgICAgIHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChEZXAu
dGFyZ2V0KSB7XG4gICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAgICByZXR1
cm4gd2F0Y2hlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9kcyAo
dm0sIG1ldGhvZHMpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAm
JiBjaGVja09wdGlvblR5cGUodm0sICdtZXRob2RzJyk7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRp
b25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgIHZtW2tleV0gPSBt
ZXRob2RzW2tleV0gPT0gbnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAo
bWV0aG9kc1trZXldID09IG51bGwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIm1ldGhv
ZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFuIHVuZGVmaW5lZCB2YWx1ZSBpbiB0aGUgY29t
cG9uZW50IGRlZmluaXRpb24uIFwiICtcbiAgICAgICAgICBcIkRpZCB5b3UgcmVmZXJlbmNlIHRo
ZSBmdW5jdGlvbiBjb3JyZWN0bHk/XCIsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAg
IH1cbiAgICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgICAgd2Fy
bihcbiAgICAgICAgICAoXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5
IGJlZW4gZGVmaW5lZCBhcyBhIHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4g
ICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7
XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY2hlY2tPcHRpb25U
eXBlKHZtLCAnd2F0Y2gnKTtcbiAgZm9yICh2YXIga2V5IGluIHdhdGNoKSB7XG4gICAgdmFyIGhh
bmRsZXIgPSB3YXRjaFtrZXldO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4g
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAg
Y3JlYXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVyW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Ug
e1xuICAgICAgY3JlYXRlV2F0Y2hlcih2bSwga2V5LCBoYW5kbGVyKTtcbiAgICB9XG4gIH1cbn1c
blxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hlciAoXG4gIHZtLFxuICBrZXlPckZuLFxuICBoYW5kbGVy
LFxuICBvcHRpb25zXG4pIHtcbiAgaWYgKGlzUGxhaW5PYmplY3QoaGFuZGxlcikpIHtcbiAgICBv
cHRpb25zID0gaGFuZGxlcjtcbiAgICBoYW5kbGVyID0gaGFuZGxlci5oYW5kbGVyO1xuICB9XG4g
IGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ3N0cmluZycpIHtcbiAgICBoYW5kbGVyID0gdm1baGFu
ZGxlcl07XG4gIH1cbiAgcmV0dXJuIHZtLiR3YXRjaChrZXlPckZuLCBoYW5kbGVyLCBvcHRpb25z
KVxufVxuXG5mdW5jdGlvbiBzdGF0ZU1peGluIChWdWUpIHtcbiAgLy8gZmxvdyBzb21laG93IGhh
cyBwcm9ibGVtcyB3aXRoIGRpcmVjdGx5IGRlY2xhcmVkIGRlZmluaXRpb24gb2JqZWN0XG4gIC8v
IHdoZW4gdXNpbmcgT2JqZWN0LmRlZmluZVByb3BlcnR5LCBzbyB3ZSBoYXZlIHRvIHByb2NlZHVy
YWxseSBidWlsZCB1cFxuICAvLyB0aGUgb2JqZWN0IGhlcmUuXG4gIHZhciBkYXRhRGVmID0ge307
XG4gIGRhdGFEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fZGF0YSB9O1xuICB2
YXIgcHJvcHNEZWYgPSB7fTtcbiAgcHJvcHNEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
dGhpcy5fcHJvcHMgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICBkYXRhRGVmLnNldCA9IGZ1bmN0aW9uIChuZXdEYXRhKSB7XG4gICAgICB3YXJu
KFxuICAgICAgICAnQXZvaWQgcmVwbGFjaW5nIGluc3RhbmNlIHJvb3QgJGRhdGEuICcgK1xuICAg
ICAgICAnVXNlIG5lc3RlZCBkYXRhIHByb3BlcnRpZXMgaW5zdGVhZC4nLFxuICAgICAgICB0aGlz
XG4gICAgICApO1xuICAgIH07XG4gICAgcHJvcHNEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAg
ICAgd2FybihcIiRwcm9wcyBpcyByZWFkb25seS5cIiwgdGhpcyk7XG4gICAgfTtcbiAgfVxuICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG4g
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHByb3BzJywgcHJvcHNEZWYp
O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHNldCA9IHNldDtcbiAgVnVlLnByb3RvdHlwZS4kZGVsZXRl
ID0gZGVsO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHdhdGNoID0gZnVuY3Rpb24gKFxuICAgIGV4cE9y
Rm4sXG4gICAgY2IsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAg
IGlmIChpc1BsYWluT2JqZWN0KGNiKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdhdGNoZXIodm0s
IGV4cE9yRm4sIGNiLCBvcHRpb25zKVxuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7
fTtcbiAgICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNo
ZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlhdGUp
IHtcbiAgICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4g
ZnVuY3Rpb24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9
XG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UHJvdmlkZSAodm0pIHtcbiAgdmFy
IHByb3ZpZGUgPSB2bS4kb3B0aW9ucy5wcm92aWRlO1xuICBpZiAocHJvdmlkZSkge1xuICAgIHZt
Ll9wcm92aWRlZCA9IHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHByb3Zp
ZGUuY2FsbCh2bSlcbiAgICAgIDogcHJvdmlkZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0SW5q
ZWN0aW9ucyAodm0pIHtcbiAgdmFyIHJlc3VsdCA9IHJlc29sdmVJbmplY3Qodm0uJG9wdGlvbnMu
aW5qZWN0LCB2bSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENv
bnZlcnQgPSBmYWxzZTtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goZnVuY3Rpb24g
KGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRlZmluZVJlYWN0
aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2Fy
bihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYW4gaW5qZWN0ZWQgdmFsdWUgZGlyZWN0
bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0
dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAg
ICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwi
XCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0pO1xu
ICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRydWU7
XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUluamVjdCAoaW5qZWN0LCB2bSkge1xuICBpZiAo
aW5qZWN0KSB7XG4gICAgLy8gaW5qZWN0IGlzIDphbnkgYmVjYXVzZSBmbG93IGlzIG5vdCBzbWFy
dCBlbm91Z2ggdG8gZmlndXJlIG91dCBjYWNoZWRcbiAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNy
ZWF0ZShudWxsKTtcbiAgICB2YXIga2V5cyA9IGhhc1N5bWJvbFxuICAgICAgICA/IFJlZmxlY3Qu
b3duS2V5cyhpbmplY3QpXG4gICAgICAgIDogT2JqZWN0LmtleXMoaW5qZWN0KTtcblxuICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtl
eXNbaV07XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGluamVjdFtrZXldO1xuICAgICAgdmFyIHNv
dXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLl9w
cm92aWRlZCAmJiBwcm92aWRlS2V5IGluIHNvdXJjZS5fcHJvdmlkZWQpIHtcbiAgICAgICAgICBy
ZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAgICAgICAgYnJl
YWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1c
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFzb3Vy
Y2UpIHtcbiAgICAgICAgd2FybigoXCJJbmplY3Rpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIG5v
dCBmb3VuZFwiKSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1c
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQgKFxuICBD
dG9yLFxuICBwcm9wc0RhdGEsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuXG4pIHtc
biAgdmFyIHByb3BzID0ge307XG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9w
cztcbiAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9w
T3B0aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRp
b25zLCBwcm9wc0RhdGEgfHwge30pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYo
ZGF0YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAo
aXNEZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAg
fVxuICAvLyBlbnN1cmUgdGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24gaW4gZnVuY3Rpb25hbCBj
b21wb25lbnRzXG4gIC8vIGdldHMgYSB1bmlxdWUgY29udGV4dCAtIHRoaXMgaXMgbmVjZXNzYXJ5
IGZvciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcbiAgdmFyIF9jb250ZXh0ID0gT2JqZWN0LmNy
ZWF0ZShjb250ZXh0KTtcbiAgdmFyIGggPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4g
Y3JlYXRlRWxlbWVudChfY29udGV4dCwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG4gIHZhciB2bm9k
ZSA9IEN0b3Iub3B0aW9ucy5yZW5kZXIuY2FsbChudWxsLCBoLCB7XG4gICAgZGF0YTogZGF0YSxc
biAgICBwcm9wczogcHJvcHMsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIHBhcmVudDog
Y29udGV4dCxcbiAgICBsaXN0ZW5lcnM6IGRhdGEub24gfHwge30sXG4gICAgaW5qZWN0aW9uczog
cmVzb2x2ZUluamVjdChDdG9yLm9wdGlvbnMuaW5qZWN0LCBjb250ZXh0KSxcbiAgICBzbG90czog
ZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzb2x2ZVNsb3RzKGNoaWxkcmVuLCBjb250ZXh0KTsgfVxu
ICB9KTtcbiAgaWYgKHZub2RlIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICB2bm9kZS5mdW5jdGlv
bmFsQ29udGV4dCA9IGNvbnRleHQ7XG4gICAgdm5vZGUuZnVuY3Rpb25hbE9wdGlvbnMgPSBDdG9y
Lm9wdGlvbnM7XG4gICAgaWYgKGRhdGEuc2xvdCkge1xuICAgICAgKHZub2RlLmRhdGEgfHwgKHZu
b2RlLmRhdGEgPSB7fSkpLnNsb3QgPSBkYXRhLnNsb3Q7XG4gICAgfVxuICB9XG4gIHJldHVybiB2
bm9kZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBr
ZXkgaW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59
XG5cbi8qICAqL1xuXG4vLyBob29rcyB0byBiZSBpbnZva2VkIG9uIGNvbXBvbmVudCBWTm9kZXMg
ZHVyaW5nIHBhdGNoXG52YXIgY29tcG9uZW50Vk5vZGVIb29rcyA9IHtcbiAgaW5pdDogZnVuY3Rp
b24gaW5pdCAoXG4gICAgdm5vZGUsXG4gICAgaHlkcmF0aW5nLFxuICAgIHBhcmVudEVsbSxcbiAg
ICByZWZFbG1cbiAgKSB7XG4gICAgaWYgKCF2bm9kZS5jb21wb25lbnRJbnN0YW5jZSB8fCB2bm9k
ZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIHZhciBjaGlsZCA9IHZu
b2RlLmNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZShc
biAgICAgICAgdm5vZGUsXG4gICAgICAgIGFjdGl2ZUluc3RhbmNlLFxuICAgICAgICBwYXJlbnRF
bG0sXG4gICAgICAgIHJlZkVsbVxuICAgICAgKTtcbiAgICAgIGNoaWxkLiRtb3VudChoeWRyYXRp
bmcgPyB2bm9kZS5lbG0gOiB1bmRlZmluZWQsIGh5ZHJhdGluZyk7XG4gICAgfSBlbHNlIGlmICh2
bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgLy8ga2VwdC1hbGl2ZSBjb21wb25lbnRzLCB0
cmVhdCBhcyBhIHBhdGNoXG4gICAgICB2YXIgbW91bnRlZE5vZGUgPSB2bm9kZTsgLy8gd29yayBh
cm91bmQgZmxvd1xuICAgICAgY29tcG9uZW50Vk5vZGVIb29rcy5wcmVwYXRjaChtb3VudGVkTm9k
ZSwgbW91bnRlZE5vZGUpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJl
cGF0Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9u
ZW50T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9s
ZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAg
ICAgY2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAg
ICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwg
Ly8gbmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRy
ZW5cbiAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xu
ICAgIHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFu
Y2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNl
Ll9pc01vdW50ZWQpIHtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVl
O1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxu
ICAgIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91
bnRlZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVw
ZGF0ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAg
ICAgICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2Fs
bCBhY3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0
ZWFkIHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBw
cm9jZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1
ZXVlQWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUg
LyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rp
b24gZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5j
b21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3ll
ZCkge1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25l
bnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0
ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4g
ICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMo
Y29tcG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0
b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAo
aXNVbmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29u
dGV4dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBp
dCBpbnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9
IGJhc2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQn
cyBub3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8g
cmVqZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZh
bGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7
XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIHZhciBh
c3luY0ZhY3Rvcnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFzeW5jRmFjdG9y
eSA9IEN0b3I7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3luY0ZhY3Rvcnks
IGJhc2VDdG9yLCBjb250ZXh0KTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAg
ICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25lbnQsIHdoaWNo
IGlzIHJlbmRlcmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJlc2VydmVzIGFs
bCB0aGUgcmF3IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRoZSBpbmZvcm1h
dGlvbiB3aWxsIGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5kIGh5ZHJhdGlv
bi5cbiAgICAgIHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAgICBhc3luY0Zh
Y3RvcnksXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVu
LFxuICAgICAgICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCB7
fTtcblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4
aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlv
blxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRyYW5zZm9ybSBj
b21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlzRGVmKGRh
dGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRhKTtcbiAg
fVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zy
b21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVu
dFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJldHVybiBj
cmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwg
Y2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVl
ZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3Rl
YWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVw
bGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8gc28gaXQgZ2V0
cyBwcm9jZXNzZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRhdGEub24gPSBk
YXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xu
ICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBv
dGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29yayBhcm91bmQg
Zmxvd1xuICAgIHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtcbiAgICBpZiAo
c2xvdCkge1xuICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxuICAvLyBtZXJn
ZSBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRlciBub2RlXG4g
IG1lcmdlSG9va3MoZGF0YSk7XG5cbiAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIgdm5vZGVcbiAg
dmFyIG5hbWUgPSBDdG9yLm9wdGlvbnMubmFtZSB8fCB0YWc7XG4gIHZhciB2bm9kZSA9IG5ldyBW
Tm9kZShcbiAgICAoXCJ2dWUtY29tcG9uZW50LVwiICsgKEN0b3IuY2lkKSArIChuYW1lID8gKFwi
LVwiICsgbmFtZSkgOiAnJykpLFxuICAgIGRhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRl
ZmluZWQsIGNvbnRleHQsXG4gICAgeyBDdG9yOiBDdG9yLCBwcm9wc0RhdGE6IHByb3BzRGF0YSwg
bGlzdGVuZXJzOiBsaXN0ZW5lcnMsIHRhZzogdGFnLCBjaGlsZHJlbjogY2hpbGRyZW4gfSxcbiAg
ICBhc3luY0ZhY3RvcnlcbiAgKTtcbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0
ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1v
dW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCwgLy8gYWN0aXZl
SW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0YXRlXG4gIHBhcmVudEVsbSxcbiAgcmVmRWxtXG4pIHtc
biAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4g
IHZhciBvcHRpb25zID0ge1xuICAgIF9pc0NvbXBvbmVudDogdHJ1ZSxcbiAgICBwYXJlbnQ6IHBh
cmVudCxcbiAgICBwcm9wc0RhdGE6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGEsXG4g
ICAgX2NvbXBvbmVudFRhZzogdm5vZGVDb21wb25lbnRPcHRpb25zLnRhZyxcbiAgICBfcGFyZW50
Vm5vZGU6IHZub2RlLFxuICAgIF9wYXJlbnRMaXN0ZW5lcnM6IHZub2RlQ29tcG9uZW50T3B0aW9u
cy5saXN0ZW5lcnMsXG4gICAgX3JlbmRlckNoaWxkcmVuOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMu
Y2hpbGRyZW4sXG4gICAgX3BhcmVudEVsbTogcGFyZW50RWxtIHx8IG51bGwsXG4gICAgX3JlZkVs
bTogcmVmRWxtIHx8IG51bGxcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRl
ciBmdW5jdGlvbnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1w
bGF0ZTtcbiAgaWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVy
ID0gaW5saW5lVGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0g
aW5saW5lVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGVD
b21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rcyAo
ZGF0YSkge1xuICBpZiAoIWRhdGEuaG9vaykge1xuICAgIGRhdGEuaG9vayA9IHt9O1xuICB9XG4g
IGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3NUb01lcmdlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFy
IGtleSA9IGhvb2tzVG9NZXJnZVtpXTtcbiAgICB2YXIgZnJvbVBhcmVudCA9IGRhdGEuaG9va1tr
ZXldO1xuICAgIHZhciBvdXJzID0gY29tcG9uZW50Vk5vZGVIb29rc1trZXldO1xuICAgIGRhdGEu
aG9va1trZXldID0gZnJvbVBhcmVudCA/IG1lcmdlSG9vayQxKG91cnMsIGZyb21QYXJlbnQpIDog
b3VycztcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUhvb2skMSAob25lLCB0d28pIHtcbiAgcmV0
dXJuIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgb25lKGEsIGIsIGMsIGQpO1xuICAgIHR3
byhhLCBiLCBjLCBkKTtcbiAgfVxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwg
aW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVy
IHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7
XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAn
dmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2
ZW50KSB8fCAnaW5wdXQnOyhkYXRhLnByb3BzIHx8IChkYXRhLnByb3BzID0ge30pKVtwcm9wXSA9
IGRhdGEubW9kZWwudmFsdWU7XG4gIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7
XG4gIGlmIChpc0RlZihvbltldmVudF0pKSB7XG4gICAgb25bZXZlbnRdID0gW2RhdGEubW9kZWwu
Y2FsbGJhY2tdLmNvbmNhdChvbltldmVudF0pO1xuICB9IGVsc2Uge1xuICAgIG9uW2V2ZW50XSA9
IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9S
TUFMSVpFID0gMTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5j
dGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQg
Z2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNv
bnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBl
LFxuICBhbHdheXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBp
c1ByaW1pdGl2ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4g
ICAgY2hpbGRyZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlz
VHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNf
Tk9STUFMSVpFO1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRh
dGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVs
ZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3Jt
YWxpemF0aW9uVHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19v
Yl9fKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fy
bihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0
YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlz
IGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAg
IGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAv
LyBvYmplY3Qgc3ludGF4IGluIHYtYmluZFxuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0
YS5pcykpIHtcbiAgICB0YWcgPSBkYXRhLmlzO1xuICB9XG4gIGlmICghdGFnKSB7XG4gICAgLy8g
aW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAgIHJldHVybiBj
cmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyB3YXJuIGFnYWluc3Qgbm9uLXByaW1pdGl2ZSBr
ZXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBp
c0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmtleSkgJiYgIWlzUHJpbWl0aXZlKGRhdGEua2V5KVxu
ICApIHtcbiAgICB3YXJuKFxuICAgICAgJ0F2b2lkIHVzaW5nIG5vbi1wcmltaXRpdmUgdmFsdWUg
YXMga2V5LCAnICtcbiAgICAgICd1c2Ugc3RyaW5nL251bWJlciB2YWx1ZSBpbnN0ZWFkLicsXG4g
ICAgICBjb250ZXh0XG4gICAgKTtcbiAgfVxuICAvLyBzdXBwb3J0IHNpbmdsZSBmdW5jdGlvbiBj
aGlsZHJlbiBhcyBkZWZhdWx0IHNjb3BlZCBzbG90XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxk
cmVuKSAmJlxuICAgIHR5cGVvZiBjaGlsZHJlblswXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAg
ICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICBkYXRhLnNjb3BlZFNsb3RzID0geyBkZWZhdWx0OiBj
aGlsZHJlblswXSB9O1xuICAgIGNoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIH1cbiAgaWYgKG5vcm1h
bGl6YXRpb25UeXBlID09PSBBTFdBWVNfTk9STUFMSVpFKSB7XG4gICAgY2hpbGRyZW4gPSBub3Jt
YWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH0gZWxzZSBpZiAobm9ybWFsaXphdGlvblR5cGUg
PT09IFNJTVBMRV9OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IHNpbXBsZU5vcm1hbGl6ZUNo
aWxkcmVuKGNoaWxkcmVuKTtcbiAgfVxuICB2YXIgdm5vZGUsIG5zO1xuICBpZiAodHlwZW9mIHRh
ZyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgQ3RvcjtcbiAgICBucyA9IGNvbmZpZy5nZXRUYWdO
YW1lc3BhY2UodGFnKTtcbiAgICBpZiAoY29uZmlnLmlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAg
ICAgLy8gcGxhdGZvcm0gYnVpbHQtaW4gZWxlbWVudHNcbiAgICAgIHZub2RlID0gbmV3IFZOb2Rl
KFxuICAgICAgICBjb25maWcucGFyc2VQbGF0Zm9ybVRhZ05hbWUodGFnKSwgZGF0YSwgY2hpbGRy
ZW4sXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0XG4gICAgICApO1xuICAg
IH0gZWxzZSBpZiAoaXNEZWYoQ3RvciA9IHJlc29sdmVBc3NldChjb250ZXh0LiRvcHRpb25zLCAn
Y29tcG9uZW50cycsIHRhZykpKSB7XG4gICAgICAvLyBjb21wb25lbnRcbiAgICAgIHZub2RlID0g
Y3JlYXRlQ29tcG9uZW50KEN0b3IsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuLCB0YWcpO1xuICAg
IH0gZWxzZSB7XG4gICAgICAvLyB1bmtub3duIG9yIHVubGlzdGVkIG5hbWVzcGFjZWQgZWxlbWVu
dHNcbiAgICAgIC8vIGNoZWNrIGF0IHJ1bnRpbWUgYmVjYXVzZSBpdCBtYXkgZ2V0IGFzc2lnbmVk
IGEgbmFtZXNwYWNlIHdoZW4gaXRzXG4gICAgICAvLyBwYXJlbnQgbm9ybWFsaXplcyBjaGlsZHJl
blxuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIHRhZywgZGF0YSwgY2hpbGRyZW4s
XG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0XG4gICAgICApO1xuICAgIH1c
biAgfSBlbHNlIHtcbiAgICAvLyBkaXJlY3QgY29tcG9uZW50IG9wdGlvbnMgLyBjb25zdHJ1Y3Rv
clxuICAgIHZub2RlID0gY3JlYXRlQ29tcG9uZW50KHRhZywgZGF0YSwgY29udGV4dCwgY2hpbGRy
ZW4pO1xuICB9XG4gIGlmIChpc0RlZih2bm9kZSkpIHtcbiAgICBpZiAobnMpIHsgYXBwbHlOUyh2
bm9kZSwgbnMpOyB9XG4gICAgcmV0dXJuIHZub2RlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNy
ZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5TlMgKHZub2RlLCBucykg
e1xuICB2bm9kZS5ucyA9IG5zO1xuICBpZiAodm5vZGUudGFnID09PSAnZm9yZWlnbk9iamVjdCcp
IHtcbiAgICAvLyB1c2UgZGVmYXVsdCBuYW1lc3BhY2UgaW5zaWRlIGZvcmVpZ25PYmplY3RcbiAg
ICByZXR1cm5cbiAgfVxuICBpZiAoaXNEZWYodm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2
YXIgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAg
IHZhciBjaGlsZCA9IHZub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGNoaWxkLnRh
ZykgJiYgaXNVbmRlZihjaGlsZC5ucykpIHtcbiAgICAgICAgYXBwbHlOUyhjaGlsZCwgbnMpO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBl
ciBmb3IgcmVuZGVyaW5nIHYtZm9yIGxpc3RzLlxuICovXG5mdW5jdGlvbiByZW5kZXJMaXN0IChc
biAgdmFsLFxuICByZW5kZXJcbikge1xuICB2YXIgcmV0LCBpLCBsLCBrZXlzLCBrZXk7XG4gIGlm
IChBcnJheS5pc0FycmF5KHZhbCkgfHwgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBy
ZXQgPSBuZXcgQXJyYXkodmFsLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9IHZhbC5sZW5n
dGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxbaV0sIGkpO1xuICAg
IH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldCA9IG5l
dyBBcnJheSh2YWwpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB2YWw7IGkrKykge1xuICAgICAgcmV0
W2ldID0gcmVuZGVyKGkgKyAxLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QodmFs
KSkge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIHJldCA9IG5ldyBBcnJheShr
ZXlzLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtrZXld
LCBrZXksIGkpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNEZWYocmV0KSkge1xuICAgIChyZXQpLl9p
c1ZMaXN0ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qICAqL1xuXG4vKipcbiAq
IFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNsb3Q+XG4gKi9cbmZ1bmN0aW9uIHJlbmRl
clNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAgcHJvcHMsXG4gIGJpbmRPYmplY3Rcbikg
e1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2NvcGVkU2xvdHNbbmFtZV07XG4gIGlmIChz
Y29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAgICBwcm9wcyA9IHByb3BzIHx8IHt9O1xu
ICAgIGlmIChiaW5kT2JqZWN0KSB7XG4gICAgICBwcm9wcyA9IGV4dGVuZChleHRlbmQoe30sIGJp
bmRPYmplY3QpLCBwcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZWRTbG90Rm4ocHJvcHMp
IHx8IGZhbGxiYWNrXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsb3ROb2RlcyA9IHRoaXMuJHNsb3Rz
W25hbWVdO1xuICAgIC8vIHdhcm4gZHVwbGljYXRlIHNsb3QgdXNhZ2VcbiAgICBpZiAoc2xvdE5v
ZGVzICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNs
b3ROb2Rlcy5fcmVuZGVyZWQgJiYgd2FybihcbiAgICAgICAgXCJEdXBsaWNhdGUgcHJlc2VuY2Ug
b2Ygc2xvdCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiIGZvdW5kIGluIHRoZSBzYW1lIHJlbmRlciB0
cmVlIFwiICtcbiAgICAgICAgXCItIHRoaXMgd2lsbCBsaWtlbHkgY2F1c2UgcmVuZGVyIGVycm9y
cy5cIixcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICAgIHNsb3ROb2Rlcy5fcmVuZGVyZWQg
PSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc2xvdE5vZGVzIHx8IGZhbGxiYWNrXG4gIH1cbn1c
blxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJz
XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIgKGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNz
ZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBpZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxu
LyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZy
b20gY29uZmlnLlxuICovXG5mdW5jdGlvbiBjaGVja0tleUNvZGVzIChcbiAgZXZlbnRLZXlDb2Rl
LFxuICBrZXksXG4gIGJ1aWx0SW5BbGlhc1xuKSB7XG4gIHZhciBrZXlDb2RlcyA9IGNvbmZpZy5r
ZXlDb2Rlc1trZXldIHx8IGJ1aWx0SW5BbGlhcztcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29k
ZXMpKSB7XG4gICAgcmV0dXJuIGtleUNvZGVzLmluZGV4T2YoZXZlbnRLZXlDb2RlKSA9PT0gLTFc
biAgfSBlbHNlIHtcbiAgICByZXR1cm4ga2V5Q29kZXMgIT09IGV2ZW50S2V5Q29kZVxuICB9XG59
XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1c
Im9iamVjdFwiIGludG8gYSBWTm9kZSdzIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQ
cm9wcyAoXG4gIGRhdGEsXG4gIHRhZyxcbiAgdmFsdWUsXG4gIGFzUHJvcCxcbiAgaXNTeW5jXG4p
IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ3Yt
YmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IG9yIEFycmF5IHZhbHVlJyxc
biAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdG9PYmplY3QodmFsdWUpO1xuICAgICAg
fVxuICAgICAgdmFyIGhhc2g7XG4gICAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xu
ICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ID09PSAnY2xhc3MnIHx8XG4gICAgICAgICAga2V5
ID09PSAnc3R5bGUnIHx8XG4gICAgICAgICAgaXNSZXNlcnZlZEF0dHJpYnV0ZShrZXkpXG4gICAg
ICAgICkge1xuICAgICAgICAgIGhhc2ggPSBkYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIHZhciB0eXBlID0gZGF0YS5hdHRycyAmJiBkYXRhLmF0dHJzLnR5cGU7XG4gICAgICAgICAg
aGFzaCA9IGFzUHJvcCB8fCBjb25maWcubXVzdFVzZVByb3AodGFnLCB0eXBlLCBrZXkpXG4gICAg
ICAgICAgICA/IGRhdGEuZG9tUHJvcHMgfHwgKGRhdGEuZG9tUHJvcHMgPSB7fSlcbiAgICAgICAg
ICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KTtcbiAgICAgICAgfVxuICAgICAg
ICBpZiAoIShrZXkgaW4gaGFzaCkpIHtcbiAgICAgICAgICBoYXNoW2tleV0gPSB2YWx1ZVtrZXld
O1xuXG4gICAgICAgICAgaWYgKGlzU3luYykge1xuICAgICAgICAgICAgdmFyIG9uID0gZGF0YS5v
biB8fCAoZGF0YS5vbiA9IHt9KTtcbiAgICAgICAgICAgIG9uWyhcInVwZGF0ZTpcIiArIGtleSld
ID0gZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gJGV2ZW50
O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAg
ICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkgbG9vcCgga2V5ICk7XG4gICAgfVxuICB9XG4gIHJl
dHVybiBkYXRhXG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5k
ZXJpbmcgc3RhdGljIHRyZWVzLlxuICovXG5mdW5jdGlvbiByZW5kZXJTdGF0aWMgKFxuICBpbmRl
eCxcbiAgaXNJbkZvclxuKSB7XG4gIHZhciB0cmVlID0gdGhpcy5fc3RhdGljVHJlZXNbaW5kZXhd
O1xuICAvLyBpZiBoYXMgYWxyZWFkeS1yZW5kZXJlZCBzdGF0aWMgdHJlZSBhbmQgbm90IGluc2lk
ZSB2LWZvcixcbiAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUgYnkgZG9pbmcgYSBzaGFs
bG93IGNsb25lLlxuICBpZiAodHJlZSAmJiAhaXNJbkZvcikge1xuICAgIHJldHVybiBBcnJheS5p
c0FycmF5KHRyZWUpXG4gICAgICA/IGNsb25lVk5vZGVzKHRyZWUpXG4gICAgICA6IGNsb25lVk5v
ZGUodHJlZSlcbiAgfVxuICAvLyBvdGhlcndpc2UsIHJlbmRlciBhIGZyZXNoIHRyZWUuXG4gIHRy
ZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF0gPVxuICAgIHRoaXMuJG9wdGlvbnMuc3RhdGlj
UmVuZGVyRm5zW2luZGV4XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KTtcbiAgbWFya1N0YXRpYyh0
cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0dXJuIHRyZWVcbn1c
blxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZmZWN0aXZlbHkgaXQg
bWVhbnMgbWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1ZSBrZXkuXG4gKi9c
bmZ1bmN0aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtleVxuKSB7XG4gIG1h
cmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiArIGtl
eSkgOiBcIlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5jdGlvbiBtYXJrU3Rh
dGljIChcbiAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAoQXJyYXkuaXNBcnJh
eSh0cmVlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xu
ICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAg
ICAgIG1hcmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkpLCBpc09uY2UpO1xu
ICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXks
IGlzT25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUsIGtleSwg
aXNPbmNlKSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtleSA9IGtleTtcbiAg
bm9kZS5pc09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kT2JqZWN0
TGlzdGVuZXJzIChkYXRhLCB2YWx1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzUGxh
aW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LW9uIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBh
biBPYmplY3QgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4g
ICAgICB2YXIgb24gPSBkYXRhLm9uID0gZGF0YS5vbiA/IGV4dGVuZCh7fSwgZGF0YS5vbikgOiB7
fTtcbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICB2YXIgZXhpc3Rpbmcg
PSBvbltrZXldO1xuICAgICAgICB2YXIgb3VycyA9IHZhbHVlW2tleV07XG4gICAgICAgIG9uW2tl
eV0gPSBleGlzdGluZyA/IFtdLmNvbmNhdChvdXJzLCBleGlzdGluZykgOiBvdXJzO1xuICAgICAg
fVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5p
dFJlbmRlciAodm0pIHtcbiAgdm0uX3Zub2RlID0gbnVsbDsgLy8gdGhlIHJvb3Qgb2YgdGhlIGNo
aWxkIHRyZWVcbiAgdm0uX3N0YXRpY1RyZWVzID0gbnVsbDtcbiAgdmFyIHBhcmVudFZub2RlID0g
dm0uJHZub2RlID0gdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlOyAvLyB0aGUgcGxhY2Vob2xkZXIg
bm9kZSBpbiBwYXJlbnQgdHJlZVxuICB2YXIgcmVuZGVyQ29udGV4dCA9IHBhcmVudFZub2RlICYm
IHBhcmVudFZub2RlLmNvbnRleHQ7XG4gIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyh2bS4kb3B0
aW9ucy5fcmVuZGVyQ2hpbGRyZW4sIHJlbmRlckNvbnRleHQpO1xuICB2bS4kc2NvcGVkU2xvdHMg
PSBlbXB0eU9iamVjdDtcbiAgLy8gYmluZCB0aGUgY3JlYXRlRWxlbWVudCBmbiB0byB0aGlzIGlu
c3RhbmNlXG4gIC8vIHNvIHRoYXQgd2UgZ2V0IHByb3BlciByZW5kZXIgY29udGV4dCBpbnNpZGUg
aXQuXG4gIC8vIGFyZ3Mgb3JkZXI6IHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25U
eXBlLCBhbHdheXNOb3JtYWxpemVcbiAgLy8gaW50ZXJuYWwgdmVyc2lvbiBpcyB1c2VkIGJ5IHJl
bmRlciBmdW5jdGlvbnMgY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZXNcbiAgdm0uX2MgPSBmdW5jdGlv
biAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgZmFs
c2UpOyB9O1xuICAvLyBub3JtYWxpemF0aW9uIGlzIGFsd2F5cyBhcHBsaWVkIGZvciB0aGUgcHVi
bGljIHZlcnNpb24sIHVzZWQgaW5cbiAgLy8gdXNlci13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMu
XG4gIHZtLiRjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNy
ZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIHRydWUpOyB9O1xuXG4gIC8vICRhdHRycyAmICRs
aXN0ZW5lcnMgYXJlIGV4cG9zZWQgZm9yIGVhc2llciBIT0MgY3JlYXRpb24uXG4gIC8vIHRoZXkg
bmVlZCB0byBiZSByZWFjdGl2ZSBzbyB0aGF0IEhPQ3MgdXNpbmcgdGhlbSBhcmUgYWx3YXlzIHVw
ZGF0ZWRcbiAgdmFyIHBhcmVudERhdGEgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5kYXRh
O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGF0dHJz
JywgcGFyZW50RGF0YSAmJiBwYXJlbnREYXRhLmF0dHJzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAh
aXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkYXR0cnMgaXMgcmVhZG9ubHkuXCIs
IHZtKTtcbiAgICB9LCB0cnVlKTtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRsaXN0ZW5l
cnMnLCB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAh
aXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkbGlzdGVuZXJzIGlzIHJlYWRvbmx5
LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGVmaW5lUmVhY3RpdmUk
JDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMsIG51bGwsIHRy
dWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIHZtLiRvcHRpb25z
Ll9wYXJlbnRMaXN0ZW5lcnMsIG51bGwsIHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRl
ck1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4p
IHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlw
ZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHJl
ZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgIHZhciBz
dGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgIHZhciBfcGFyZW50Vm5v
ZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtcbiAgICAg
IC8vIGNsb25lIHNsb3Qgbm9kZXMgb24gcmUtcmVuZGVyc1xuICAgICAgZm9yICh2YXIga2V5IGlu
IHZtLiRzbG90cykge1xuICAgICAgICB2bS4kc2xvdHNba2V5XSA9IGNsb25lVk5vZGVzKHZtLiRz
bG90c1trZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2bS4kc2NvcGVkU2xvdHMgPSAoX3Bh
cmVudFZub2RlICYmIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzKSB8fCBlbXB0eU9iamVj
dDtcblxuICAgIGlmIChzdGF0aWNSZW5kZXJGbnMgJiYgIXZtLl9zdGF0aWNUcmVlcykge1xuICAg
ICAgdm0uX3N0YXRpY1RyZWVzID0gW107XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnQgdm5vZGUu
IHRoaXMgYWxsb3dzIHJlbmRlciBmdW5jdGlvbnMgdG8gaGF2ZSBhY2Nlc3NcbiAgICAvLyB0byB0
aGUgZGF0YSBvbiB0aGUgcGxhY2Vob2xkZXIgbm9kZS5cbiAgICB2bS4kdm5vZGUgPSBfcGFyZW50
Vm5vZGU7XG4gICAgLy8gcmVuZGVyIHNlbGZcbiAgICB2YXIgdm5vZGU7XG4gICAgdHJ5IHtcbiAg
ICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVu
dCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVy
IGZ1bmN0aW9uXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAg
ICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJs
YW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZub2Rl
ID0gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3JcbiAgICAgICAgICA/IHZtLiRvcHRpb25zLnJlbmRl
ckVycm9yLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCwgZSlcbiAgICAg
ICAgICA6IHZtLl92bm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zu
b2RlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0
aGUgcmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5zdGFuY2Vv
ZiBWTm9kZSkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nICYmIEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAg
J011bHRpcGxlIHJvb3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJlbmRl
ciBmdW5jdGlvbiAnICtcbiAgICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSByb290IG5v
ZGUuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBj
cmVhdGVFbXB0eVZOb2RlKCk7XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2bm9kZS5w
YXJlbnQgPSBfcGFyZW50Vm5vZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG5cbiAgLy8gaW50
ZXJuYWwgcmVuZGVyIGhlbHBlcnMuXG4gIC8vIHRoZXNlIGFyZSBleHBvc2VkIG9uIHRoZSBpbnN0
YW5jZSBwcm90b3R5cGUgdG8gcmVkdWNlIGdlbmVyYXRlZCByZW5kZXJcbiAgLy8gY29kZSBzaXpl
LlxuICBWdWUucHJvdG90eXBlLl9vID0gbWFya09uY2U7XG4gIFZ1ZS5wcm90b3R5cGUuX24gPSB0
b051bWJlcjtcbiAgVnVlLnByb3RvdHlwZS5fcyA9IHRvU3RyaW5nO1xuICBWdWUucHJvdG90eXBl
Ll9sID0gcmVuZGVyTGlzdDtcbiAgVnVlLnByb3RvdHlwZS5fdCA9IHJlbmRlclNsb3Q7XG4gIFZ1
ZS5wcm90b3R5cGUuX3EgPSBsb29zZUVxdWFsO1xuICBWdWUucHJvdG90eXBlLl9pID0gbG9vc2VJ
bmRleE9mO1xuICBWdWUucHJvdG90eXBlLl9tID0gcmVuZGVyU3RhdGljO1xuICBWdWUucHJvdG90
eXBlLl9mID0gcmVzb2x2ZUZpbHRlcjtcbiAgVnVlLnByb3RvdHlwZS5fayA9IGNoZWNrS2V5Q29k
ZXM7XG4gIFZ1ZS5wcm90b3R5cGUuX2IgPSBiaW5kT2JqZWN0UHJvcHM7XG4gIFZ1ZS5wcm90b3R5
cGUuX3YgPSBjcmVhdGVUZXh0Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5cGUuX2UgPSBjcmVhdGVFbXB0
eVZOb2RlO1xuICBWdWUucHJvdG90eXBlLl91ID0gcmVzb2x2ZVNjb3BlZFNsb3RzO1xuICBWdWUu
cHJvdG90eXBlLl9nID0gYmluZE9iamVjdExpc3RlbmVycztcbn1cblxuLyogICovXG5cbnZhciB1
aWQkMSA9IDA7XG5cbmZ1bmN0aW9uIGluaXRNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUu
X2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8g
YSB1aWRcbiAgICB2bS5fdWlkID0gdWlkJDErKztcblxuICAgIHZhciBzdGFydFRhZywgZW5kVGFn
O1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4g
ICAgICBzdGFydFRhZyA9IFwidnVlLXBlcmYtaW5pdDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVu
ZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRh
Zyk7XG4gICAgfVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRc
biAgICB2bS5faXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0
aW9ucyAmJiBvcHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJu
YWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9u
cyBtZXJnaW5nIGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVy
bmFsIGNvbXBvbmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5p
dEludGVybmFsQ29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0u
JG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlv
bnModm0uY29uc3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxu
ICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW5pdFByb3h5
KHZtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxu
ICAgIC8vIGV4cG9zZSByZWFsIHNlbGZcbiAgICB2bS5fc2VsZiA9IHZtO1xuICAgIGluaXRMaWZl
Y3ljbGUodm0pO1xuICAgIGluaXRFdmVudHModm0pO1xuICAgIGluaXRSZW5kZXIodm0pO1xuICAg
IGNhbGxIb29rKHZtLCAnYmVmb3JlQ3JlYXRlJyk7XG4gICAgaW5pdEluamVjdGlvbnModm0pOyAv
LyByZXNvbHZlIGluamVjdGlvbnMgYmVmb3JlIGRhdGEvcHJvcHNcbiAgICBpbml0U3RhdGUodm0p
O1xuICAgIGluaXRQcm92aWRlKHZtKTsgLy8gcmVzb2x2ZSBwcm92aWRlIGFmdGVyIGRhdGEvcHJv
cHNcbiAgICBjYWxsSG9vayh2bSwgJ2NyZWF0ZWQnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYm
IGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENv
bXBvbmVudE5hbWUodm0sIGZhbHNlKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1
cmUoKCh2bS5fbmFtZSkgKyBcIiBpbml0XCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9XG5c
biAgICBpZiAodm0uJG9wdGlvbnMuZWwpIHtcbiAgICAgIHZtLiRtb3VudCh2bS4kb3B0aW9ucy5l
bCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0SW50ZXJuYWxDb21wb25lbnQgKHZt
LCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gdm0uJG9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKHZt
LmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuICAvLyBkb2luZyB0aGlzIGJlY2F1c2UgaXQncyBmYXN0
ZXIgdGhhbiBkeW5hbWljIGVudW1lcmF0aW9uLlxuICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFy
ZW50O1xuICBvcHRzLnByb3BzRGF0YSA9IG9wdGlvbnMucHJvcHNEYXRhO1xuICBvcHRzLl9wYXJl
bnRWbm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICBvcHRzLl9wYXJlbnRMaXN0ZW5lcnMg
PSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIG9wdHMuX3JlbmRlckNoaWxkcmVuID0gb3B0
aW9ucy5fcmVuZGVyQ2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IG9wdGlvbnMuX2Nv
bXBvbmVudFRhZztcbiAgb3B0cy5fcGFyZW50RWxtID0gb3B0aW9ucy5fcGFyZW50RWxtO1xuICBv
cHRzLl9yZWZFbG0gPSBvcHRpb25zLl9yZWZFbG07XG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xu
ICAgIG9wdHMucmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJG
bnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZl
Q29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25z
O1xuICBpZiAoQ3Rvci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29u
c3RydWN0b3JPcHRpb25zKEN0b3Iuc3VwZXIpO1xuICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMg
PSBDdG9yLnN1cGVyT3B0aW9ucztcbiAgICBpZiAoc3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBl
ck9wdGlvbnMpIHtcbiAgICAgIC8vIHN1cGVyIG9wdGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVl
ZCB0byByZXNvbHZlIG5ldyBvcHRpb25zLlxuICAgICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBl
ck9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQv
YXR0YWNoZWQgb3B0aW9ucyAoIzQ5NzYpXG4gICAgICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVz
b2x2ZU1vZGlmaWVkT3B0aW9ucyhDdG9yKTtcbiAgICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBv
cHRpb25zXG4gICAgICBpZiAobW9kaWZpZWRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9y
LmV4dGVuZE9wdGlvbnMsIG1vZGlmaWVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBvcHRpb25z
ID0gQ3Rvci5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRP
cHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21w
b25lbnRzW29wdGlvbnMubmFtZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1
cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7
XG4gIHZhciBtb2RpZmllZDtcbiAgdmFyIGxhdGVzdCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIGV4
dGVuZGVkID0gQ3Rvci5leHRlbmRPcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRP
cHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXld
ICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9
OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gZGVkdXBlKGxhdGVzdFtrZXldLCBleHRlbmRlZFtr
ZXldLCBzZWFsZWRba2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5m
dW5jdGlvbiBkZWR1cGUgKGxhdGVzdCwgZXh0ZW5kZWQsIHNlYWxlZCkge1xuICAvLyBjb21wYXJl
IGxhdGVzdCBhbmQgc2VhbGVkIHRvIGVuc3VyZSBsaWZlY3ljbGUgaG9va3Mgd29uJ3QgYmUgZHVw
bGljYXRlZFxuICAvLyBiZXR3ZWVuIG1lcmdlc1xuICBpZiAoQXJyYXkuaXNBcnJheShsYXRlc3Qp
KSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHNlYWxlZCA9IEFycmF5LmlzQXJyYXkoc2VhbGVk
KSA/IHNlYWxlZCA6IFtzZWFsZWRdO1xuICAgIGV4dGVuZGVkID0gQXJyYXkuaXNBcnJheShleHRl
bmRlZCkgPyBleHRlbmRlZCA6IFtleHRlbmRlZF07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
YXRlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIHB1c2ggb3JpZ2luYWwgb3B0aW9ucyBhbmQg
bm90IHNlYWxlZCBvcHRpb25zIHRvIGV4Y2x1ZGUgZHVwbGljYXRlZCBvcHRpb25zXG4gICAgICBp
ZiAoZXh0ZW5kZWQuaW5kZXhPZihsYXRlc3RbaV0pID49IDAgfHwgc2VhbGVkLmluZGV4T2YobGF0
ZXN0W2ldKSA8IDApIHtcbiAgICAgICAgcmVzLnB1c2gobGF0ZXN0W2ldKTtcbiAgICAgIH1cbiAg
ICB9XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsYXRlc3RcbiAgfVxu
fVxuXG5mdW5jdGlvbiBWdWUkMyAob3B0aW9ucykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICEodGhpcyBpbnN0YW5jZW9mIFZ1ZSQzKVxuICAp
IHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3
aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtcbn1c
blxuaW5pdE1peGluKFZ1ZSQzKTtcbnN0YXRlTWl4aW4oVnVlJDMpO1xuZXZlbnRzTWl4aW4oVnVl
JDMpO1xubGlmZWN5Y2xlTWl4aW4oVnVlJDMpO1xucmVuZGVyTWl4aW4oVnVlJDMpO1xuXG4vKiAg
Ki9cblxuZnVuY3Rpb24gaW5pdFVzZSAoVnVlKSB7XG4gIFZ1ZS51c2UgPSBmdW5jdGlvbiAocGx1
Z2luKSB7XG4gICAgdmFyIGluc3RhbGxlZFBsdWdpbnMgPSAodGhpcy5faW5zdGFsbGVkUGx1Z2lu
cyB8fCAodGhpcy5faW5zdGFsbGVkUGx1Z2lucyA9IFtdKSk7XG4gICAgaWYgKGluc3RhbGxlZFBs
dWdpbnMuaW5kZXhPZihwbHVnaW4pID4gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxu
XG4gICAgLy8gYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFy
Z3VtZW50cywgMSk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIGlmICh0eXBlb2YgcGx1
Z2luLmluc3RhbGwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5pbnN0YWxsLmFwcGx5
KHBsdWdpbiwgYXJncyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGx1Z2luID09PSAnZnVuY3Rp
b24nKSB7XG4gICAgICBwbHVnaW4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICAgIGluc3Rh
bGxlZFBsdWdpbnMucHVzaChwbHVnaW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiBpbml0TWl4aW4kMSAoVnVlKSB7XG4gIFZ1ZS5taXhpbiA9IGZ1bmN0
aW9uIChtaXhpbikge1xuICAgIHRoaXMub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLm9wdGlv
bnMsIG1peGluKTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdEV4dGVuZCAoVnVlKSB7XG4gIC8qKlxuICAgKiBFYWNoIGluc3RhbmNlIGNvbnN0cnVj
dG9yLCBpbmNsdWRpbmcgVnVlLCBoYXMgYSB1bmlxdWVcbiAgICogY2lkLiBUaGlzIGVuYWJsZXMg
dXMgdG8gY3JlYXRlIHdyYXBwZWQgXCJjaGlsZFxuICAgKiBjb25zdHJ1Y3RvcnNcIiBmb3IgcHJv
dG90eXBhbCBpbmhlcml0YW5jZSBhbmQgY2FjaGUgdGhlbS5cbiAgICovXG4gIFZ1ZS5jaWQgPSAw
O1xuICB2YXIgY2lkID0gMTtcblxuICAvKipcbiAgICogQ2xhc3MgaW5oZXJpdGFuY2VcbiAgICov
XG4gIFZ1ZS5leHRlbmQgPSBmdW5jdGlvbiAoZXh0ZW5kT3B0aW9ucykge1xuICAgIGV4dGVuZE9w
dGlvbnMgPSBleHRlbmRPcHRpb25zIHx8IHt9O1xuICAgIHZhciBTdXBlciA9IHRoaXM7XG4gICAg
dmFyIFN1cGVySWQgPSBTdXBlci5jaWQ7XG4gICAgdmFyIGNhY2hlZEN0b3JzID0gZXh0ZW5kT3B0
aW9ucy5fQ3RvciB8fCAoZXh0ZW5kT3B0aW9ucy5fQ3RvciA9IHt9KTtcbiAgICBpZiAoY2FjaGVk
Q3RvcnNbU3VwZXJJZF0pIHtcbiAgICAgIHJldHVybiBjYWNoZWRDdG9yc1tTdXBlcklkXVxuICAg
IH1cblxuICAgIHZhciBuYW1lID0gZXh0ZW5kT3B0aW9ucy5uYW1lIHx8IFN1cGVyLm9wdGlvbnMu
bmFtZTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgaWYgKCEvXlthLXpBLVpdW1xcdy1dKiQvLnRlc3QobmFtZSkpIHtcbiAgICAgICAgd2Fy
bihcbiAgICAgICAgICAnSW52YWxpZCBjb21wb25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4g
Q29tcG9uZW50IG5hbWVzICcgK1xuICAgICAgICAgICdjYW4gb25seSBjb250YWluIGFscGhhbnVt
ZXJpYyBjaGFyYWN0ZXJzIGFuZCB0aGUgaHlwaGVuLCAnICtcbiAgICAgICAgICAnYW5kIG11c3Qg
c3RhcnQgd2l0aCBhIGxldHRlci4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAg
dmFyIFN1YiA9IGZ1bmN0aW9uIFZ1ZUNvbXBvbmVudCAob3B0aW9ucykge1xuICAgICAgdGhpcy5f
aW5pdChvcHRpb25zKTtcbiAgICB9O1xuICAgIFN1Yi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KFN1cGVyLnByb3RvdHlwZSk7XG4gICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1Yjtc
biAgICBTdWIuY2lkID0gY2lkKys7XG4gICAgU3ViLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4g
ICAgICBTdXBlci5vcHRpb25zLFxuICAgICAgZXh0ZW5kT3B0aW9uc1xuICAgICk7XG4gICAgU3Vi
WydzdXBlciddID0gU3VwZXI7XG5cbiAgICAvLyBGb3IgcHJvcHMgYW5kIGNvbXB1dGVkIHByb3Bl
cnRpZXMsIHdlIGRlZmluZSB0aGUgcHJveHkgZ2V0dGVycyBvblxuICAgIC8vIHRoZSBWdWUgaW5z
dGFuY2VzIGF0IGV4dGVuc2lvbiB0aW1lLCBvbiB0aGUgZXh0ZW5kZWQgcHJvdG90eXBlLiBUaGlz
XG4gICAgLy8gYXZvaWRzIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxscyBmb3IgZWFjaCBpbnN0
YW5jZSBjcmVhdGVkLlxuICAgIGlmIChTdWIub3B0aW9ucy5wcm9wcykge1xuICAgICAgaW5pdFBy
b3BzJDEoU3ViKTtcbiAgICB9XG4gICAgaWYgKFN1Yi5vcHRpb25zLmNvbXB1dGVkKSB7XG4gICAg
ICBpbml0Q29tcHV0ZWQkMShTdWIpO1xuICAgIH1cblxuICAgIC8vIGFsbG93IGZ1cnRoZXIgZXh0
ZW5zaW9uL21peGluL3BsdWdpbiB1c2FnZVxuICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7
XG4gICAgU3ViLm1peGluID0gU3VwZXIubWl4aW47XG4gICAgU3ViLnVzZSA9IFN1cGVyLnVzZTtc
blxuICAgIC8vIGNyZWF0ZSBhc3NldCByZWdpc3RlcnMsIHNvIGV4dGVuZGVkIGNsYXNzZXNcbiAg
ICAvLyBjYW4gaGF2ZSB0aGVpciBwcml2YXRlIGFzc2V0cyB0b28uXG4gICAgQVNTRVRfVFlQRVMu
Zm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgICAgU3ViW3R5cGVdID0gU3VwZXJbdHlwZV07
XG4gICAgfSk7XG4gICAgLy8gZW5hYmxlIHJlY3Vyc2l2ZSBzZWxmLWxvb2t1cFxuICAgIGlmIChu
YW1lKSB7XG4gICAgICBTdWIub3B0aW9ucy5jb21wb25lbnRzW25hbWVdID0gU3ViO1xuICAgIH1c
blxuICAgIC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHN1cGVyIG9wdGlvbnMgYXQgZXh0ZW5z
aW9uIHRpbWUuXG4gICAgLy8gbGF0ZXIgYXQgaW5zdGFudGlhdGlvbiB3ZSBjYW4gY2hlY2sgaWYg
U3VwZXIncyBvcHRpb25zIGhhdmVcbiAgICAvLyBiZWVuIHVwZGF0ZWQuXG4gICAgU3ViLnN1cGVy
T3B0aW9ucyA9IFN1cGVyLm9wdGlvbnM7XG4gICAgU3ViLmV4dGVuZE9wdGlvbnMgPSBleHRlbmRP
cHRpb25zO1xuICAgIFN1Yi5zZWFsZWRPcHRpb25zID0gZXh0ZW5kKHt9LCBTdWIub3B0aW9ucyk7
XG5cbiAgICAvLyBjYWNoZSBjb25zdHJ1Y3RvclxuICAgIGNhY2hlZEN0b3JzW1N1cGVySWRdID0g
U3ViO1xuICAgIHJldHVybiBTdWJcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzJDEgKENv
bXApIHtcbiAgdmFyIHByb3BzID0gQ29tcC5vcHRpb25zLnByb3BzO1xuICBmb3IgKHZhciBrZXkg
aW4gcHJvcHMpIHtcbiAgICBwcm94eShDb21wLnByb3RvdHlwZSwgXCJfcHJvcHNcIiwga2V5KTtc
biAgfVxufVxuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQkMSAoQ29tcCkge1xuICB2YXIgY29tcHV0
ZWQgPSBDb21wLm9wdGlvbnMuY29tcHV0ZWQ7XG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkg
e1xuICAgIGRlZmluZUNvbXB1dGVkKENvbXAucHJvdG90eXBlLCBrZXksIGNvbXB1dGVkW2tleV0p
O1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0QXNzZXRSZWdpc3RlcnMgKFZ1ZSkg
e1xuICAvKipcbiAgICogQ3JlYXRlIGFzc2V0IHJlZ2lzdHJhdGlvbiBtZXRob2RzLlxuICAgKi9c
biAgQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIFZ1ZVt0eXBlXSA9
IGZ1bmN0aW9uIChcbiAgICAgIGlkLFxuICAgICAgZGVmaW5pdGlvblxuICAgICkge1xuICAgICAg
aWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdHlwZSArICdz
J11baWRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgY29uZmlnLmlzUmVzZXJ2ZWRUYWco
aWQpKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgICAnRG8gbm90IHVzZSBidWls
dC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRzIGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAg
ICAgICAgJ2lkOiAnICsgaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9
XG4gICAgICAgIGlmICh0eXBlID09PSAnY29tcG9uZW50JyAmJiBpc1BsYWluT2JqZWN0KGRlZmlu
aXRpb24pKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbi5uYW1lID0gZGVmaW5pdGlvbi5uYW1lIHx8
IGlkO1xuICAgICAgICAgIGRlZmluaXRpb24gPSB0aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKGRl
ZmluaXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnZGlyZWN0aXZlJyAm
JiB0eXBlb2YgZGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGRlZmluaXRp
b24gPSB7IGJpbmQ6IGRlZmluaXRpb24sIHVwZGF0ZTogZGVmaW5pdGlvbiB9O1xuICAgICAgICB9
XG4gICAgICAgIHRoaXMub3B0aW9uc1t0eXBlICsgJ3MnXVtpZF0gPSBkZWZpbml0aW9uO1xuICAg
ICAgICByZXR1cm4gZGVmaW5pdGlvblxuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG4vKiAg
Ki9cblxudmFyIHBhdHRlcm5UeXBlcyA9IFtTdHJpbmcsIFJlZ0V4cCwgQXJyYXldO1xuXG5mdW5j
dGlvbiBnZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0
b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0
ZXJuLCBuYW1lKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhdHRlcm4pKSB7XG4gICAgcmV0dXJu
IHBhdHRlcm4uaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAodHlwZW9mIHBhdHRlcm4g
PT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmRleE9mKG5h
bWUpID4gLTFcbiAgfSBlbHNlIGlmIChpc1JlZ0V4cChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBw
YXR0ZXJuLnRlc3QobmFtZSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBy
ZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZSAoY2FjaGUsIGN1cnJlbnQsIGZp
bHRlcikge1xuICBmb3IgKHZhciBrZXkgaW4gY2FjaGUpIHtcbiAgICB2YXIgY2FjaGVkTm9kZSA9
IGNhY2hlW2tleV07XG4gICAgaWYgKGNhY2hlZE5vZGUpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0
Q29tcG9uZW50TmFtZShjYWNoZWROb2RlLmNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgaWYgKG5h
bWUgJiYgIWZpbHRlcihuYW1lKSkge1xuICAgICAgICBpZiAoY2FjaGVkTm9kZSAhPT0gY3VycmVu
dCkge1xuICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShjYWNoZWROb2RlKTtcbiAgICAgICAgfVxu
ICAgICAgICBjYWNoZVtrZXldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVu
Y3Rpb24gcHJ1bmVDYWNoZUVudHJ5ICh2bm9kZSkge1xuICBpZiAodm5vZGUpIHtcbiAgICB2bm9k
ZS5jb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICB9XG59XG5cbnZhciBLZWVwQWxpdmUg
PSB7XG4gIG5hbWU6ICdrZWVwLWFsaXZlJyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcHJvcHM6
IHtcbiAgICBpbmNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgZXhjbHVkZTogcGF0dGVyblR5cGVz
XG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgdGhpcy5jYWNo
ZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBk
ZXN0cm95ZWQgKCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIga2V5
IGluIHRoaXMkMS5jYWNoZSkge1xuICAgICAgcHJ1bmVDYWNoZUVudHJ5KHRoaXMkMS5jYWNoZVtr
ZXldKTtcbiAgICB9XG4gIH0sXG5cbiAgd2F0Y2g6IHtcbiAgICBpbmNsdWRlOiBmdW5jdGlvbiBp
bmNsdWRlICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5vZGUs
IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH0s
XG4gICAgZXhjbHVkZTogZnVuY3Rpb24gZXhjbHVkZSAodmFsKSB7XG4gICAgICBwcnVuZUNhY2hl
KHRoaXMuY2FjaGUsIHRoaXMuX3Zub2RlLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gIW1hdGNo
ZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfVxuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVu
ZGVyICgpIHtcbiAgICB2YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHRoaXMuJHNs
b3RzLmRlZmF1bHQpO1xuICAgIHZhciBjb21wb25lbnRPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUu
Y29tcG9uZW50T3B0aW9ucztcbiAgICBpZiAoY29tcG9uZW50T3B0aW9ucykge1xuICAgICAgLy8g
Y2hlY2sgcGF0dGVyblxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVu
dE9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgJiYgKFxuICAgICAgICAodGhpcy5pbmNsdWRlICYm
ICFtYXRjaGVzKHRoaXMuaW5jbHVkZSwgbmFtZSkpIHx8XG4gICAgICAgICh0aGlzLmV4Y2x1ZGUg
JiYgbWF0Y2hlcyh0aGlzLmV4Y2x1ZGUsIG5hbWUpKVxuICAgICAgKSkge1xuICAgICAgICByZXR1
cm4gdm5vZGVcbiAgICAgIH1cbiAgICAgIHZhciBrZXkgPSB2bm9kZS5rZXkgPT0gbnVsbFxuICAg
ICAgICAvLyBzYW1lIGNvbnN0cnVjdG9yIG1heSBnZXQgcmVnaXN0ZXJlZCBhcyBkaWZmZXJlbnQg
bG9jYWwgY29tcG9uZW50c1xuICAgICAgICAvLyBzbyBjaWQgYWxvbmUgaXMgbm90IGVub3VnaCAo
IzMyNjkpXG4gICAgICAgID8gY29tcG9uZW50T3B0aW9ucy5DdG9yLmNpZCArIChjb21wb25lbnRP
cHRpb25zLnRhZyA/IChcIjo6XCIgKyAoY29tcG9uZW50T3B0aW9ucy50YWcpKSA6ICcnKVxuICAg
ICAgICA6IHZub2RlLmtleTtcbiAgICAgIGlmICh0aGlzLmNhY2hlW2tleV0pIHtcbiAgICAgICAg
dm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLmNhY2hlW2tleV0uY29tcG9uZW50SW5zdGFu
Y2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhY2hlW2tleV0gPSB2bm9kZTtcbiAg
ICAgIH1cbiAgICAgIHZub2RlLmRhdGEua2VlcEFsaXZlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0
dXJuIHZub2RlXG4gIH1cbn07XG5cbnZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcbiAgS2VlcEFs
aXZlOiBLZWVwQWxpdmVcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0R2xvYmFsQVBJIChW
dWUpIHtcbiAgLy8gY29uZmlnXG4gIHZhciBjb25maWdEZWYgPSB7fTtcbiAgY29uZmlnRGVmLmdl
dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmZpZzsgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24g
KCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmln
IG9iamVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9
O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYp
O1xuXG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90
IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAg
Ly8gdGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7
XG4gICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6
IG1lcmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAg
fTtcblxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRp
Y2sgPSBuZXh0VGljaztcblxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4g
IEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0
eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMg
dXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBw
bGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5j
ZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUu
b3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUp
O1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJl
Z2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSQzKTtcblxuT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1NlcnZl
clJlbmRlcmluZ1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUs
ICckc3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2Rl
LnNzckNvbnRleHRcbiAgfVxufSk7XG5cblZ1ZSQzLnZlcnNpb24gPSAnMi40LjInO1xuXG4vKiAg
Ki9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZvciB3ZWIgYmVjYXVzZSB0aGV5IGFyZSBkaXJl
Y3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcgdGVtcGxhdGUgY29tcGlsYXRpb25cbnZhciBp
c1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxlLGNsYXNzJyk7XG5cbi8vIGF0dHJpYnV0ZXMg
dGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9yIGJpbmRpbmdcbnZhciBhY2NlcHRWYWx1ZSA9
IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QnKTtcbnZhciBtdXN0VXNlUHJv
cCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIpIHtcbiAgcmV0dXJuIChcbiAgICAoYXR0ciA9
PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcpKSAmJiB0eXBlICE9PSAnYnV0dG9uJyB8fFxu
ICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRhZyA9PT0gJ29wdGlvbicpIHx8XG4gICAgKGF0
dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcpIHx8XG4gICAgKGF0dHIgPT09ICdt
dXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICApXG59O1xuXG52YXIgaXNFbnVtZXJhdGVkQXR0
ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjaycpO1xuXG52
YXIgaXNCb29sZWFuQXR0ciA9IG1ha2VNYXAoXG4gICdhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0
b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLCcgK1xuICAn
ZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVy
LGRpc2FibGVkLCcgK1xuICAnZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1p
bmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSwnICtcbiAgJ211dGVkLG5v
aHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93cmFwLG9wZW4scGF1c2VvbmV4aXQs
cmVhZG9ubHksJyArXG4gICdyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0
ZWQsc29ydGFibGUsdHJhbnNsYXRlLCcgK1xuICAndHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlz
aWJsZSdcbik7XG5cbnZhciB4bGlua05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsn
O1xuXG52YXIgaXNYbGluayA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBuYW1lLmNoYXJB
dCg1KSA9PT0gJzonICYmIG5hbWUuc2xpY2UoMCwgNSkgPT09ICd4bGluaydcbn07XG5cbnZhciBn
ZXRYbGlua1Byb3AgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gaXNYbGluayhuYW1lKSA/
IG5hbWUuc2xpY2UoNiwgbmFtZS5sZW5ndGgpIDogJydcbn07XG5cbnZhciBpc0ZhbHN5QXR0clZh
bHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGwgfHwgdmFsID09PSBm
YWxzZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGdlbkNsYXNzRm9yVm5vZGUgKHZub2RlKSB7
XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAg
dmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICB3aGlsZSAoaXNEZWYoY2hpbGROb2RlLmNvbXBvbmVu
dEluc3RhbmNlKSkge1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5j
ZS5fdm5vZGU7XG4gICAgaWYgKGNoaWxkTm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VD
bGFzc0RhdGEoY2hpbGROb2RlLmRhdGEsIGRhdGEpO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoaXNE
ZWYocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2Rl
LmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShkYXRhLCBwYXJlbnROb2RlLmRh
dGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVuZGVyQ2xhc3MoZGF0YS5zdGF0aWNDbGFzcywg
ZGF0YS5jbGFzcylcbn1cblxuZnVuY3Rpb24gbWVyZ2VDbGFzc0RhdGEgKGNoaWxkLCBwYXJlbnQp
IHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0aWNDbGFzczogY29uY2F0KGNoaWxkLnN0YXRpY0NsYXNz
LCBwYXJlbnQuc3RhdGljQ2xhc3MpLFxuICAgIGNsYXNzOiBpc0RlZihjaGlsZC5jbGFzcylcbiAg
ICAgID8gW2NoaWxkLmNsYXNzLCBwYXJlbnQuY2xhc3NdXG4gICAgICA6IHBhcmVudC5jbGFzc1xu
ICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNsYXNzIChcbiAgc3RhdGljQ2xhc3MsXG4gIGR5bmFt
aWNDbGFzc1xuKSB7XG4gIGlmIChpc0RlZihzdGF0aWNDbGFzcykgfHwgaXNEZWYoZHluYW1pY0Ns
YXNzKSkge1xuICAgIHJldHVybiBjb25jYXQoc3RhdGljQ2xhc3MsIHN0cmluZ2lmeUNsYXNzKGR5
bmFtaWNDbGFzcykpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJu
ICcnXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYSwgYikge1xuICByZXR1cm4gYSA/IGIgPyAoYSAr
ICcgJyArIGIpIDogYSA6IChiIHx8ICcnKVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlDbGFzcyAo
dmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmlu
Z2lmeUFycmF5KHZhbHVlKVxuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1
cm4gc3RyaW5naWZ5T2JqZWN0KHZhbHVlKVxuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdz
dHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUFycmF5ICh2YWx1ZSkg
e1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBzdHJpbmdpZmllZDtcbiAgZm9yICh2YXIgaSA9IDAs
IGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoaXNEZWYoc3RyaW5naWZp
ZWQgPSBzdHJpbmdpZnlDbGFzcyh2YWx1ZVtpXSkpICYmIHN0cmluZ2lmaWVkICE9PSAnJykge1xu
ICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0gc3RyaW5naWZpZWQ7
XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5T2JqZWN0
ICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xu
ICAgIGlmICh2YWx1ZVtrZXldKSB7XG4gICAgICBpZiAocmVzKSB7IHJlcyArPSAnICc7IH1cbiAg
ICAgIHJlcyArPSBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5c
bnZhciBuYW1lc3BhY2VNYXAgPSB7XG4gIHN2ZzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
JyxcbiAgbWF0aDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnXG59O1xuXG52
YXIgaXNIVE1MVGFnID0gbWFrZU1hcChcbiAgJ2h0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRh
LHN0eWxlLHRpdGxlLCcgK1xuICAnYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIs
aDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLCcgK1xuICAnZGl2LGRkLGRsLGR0
LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsJyAr
XG4gICdhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJr
LHEscnAscnQscnRjLHJ1YnksJyArXG4gICdzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1
cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbywnICtcbiAgJ2VtYmVk
LG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLCcgK1xu
ICAnY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsJyArXG4g
ICdidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIs
b3B0Z3JvdXAsb3B0aW9uLCcgK1xuICAnb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSwn
ICtcbiAgJ2RldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSwnICtcbiAgJ2NvbnRl
bnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QnXG4pO1xu
XG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNlbGVjdGl2ZSwgb25seSBjb3ZlcmluZyBT
VkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4gY2hpbGQgZWxlbWVudHMuXG52YXIgaXNT
VkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZz
LGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLCcgK1xuICAnZm9yZWlnbk9iamVjdCxnLGds
eXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4sJyAr
XG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRz
cGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxudmFyIGlzUHJlVGFnID0gZnVuY3Rpb24gKHRh
ZykgeyByZXR1cm4gdGFnID09PSAncHJlJzsgfTtcblxudmFyIGlzUmVzZXJ2ZWRUYWcgPSBmdW5j
dGlvbiAodGFnKSB7XG4gIHJldHVybiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWRyh0YWcpXG59O1xu
XG5mdW5jdGlvbiBnZXRUYWdOYW1lc3BhY2UgKHRhZykge1xuICBpZiAoaXNTVkcodGFnKSkge1xu
ICAgIHJldHVybiAnc3ZnJ1xuICB9XG4gIC8vIGJhc2ljIHN1cHBvcnQgZm9yIE1hdGhNTFxuICAv
LyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBNYXRoTUwgZWxlbWVudHMgYmVpbmcgY29t
cG9uZW50IHJvb3RzXG4gIGlmICh0YWcgPT09ICdtYXRoJykge1xuICAgIHJldHVybiAnbWF0aCdc
biAgfVxufVxuXG52YXIgdW5rbm93bkVsZW1lbnRDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7
XG5mdW5jdGlvbiBpc1Vua25vd25FbGVtZW50ICh0YWcpIHtcbiAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gIGlmICghaW5Ccm93c2VyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAo
aXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdGFnID0gdGFn
LnRvTG93ZXJDYXNlKCk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodW5rbm93
bkVsZW1lbnRDYWNoZVt0YWddICE9IG51bGwpIHtcbiAgICByZXR1cm4gdW5rbm93bkVsZW1lbnRD
YWNoZVt0YWddXG4gIH1cbiAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xu
ICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZs
b3cuY29tL2EvMjgyMTAzNjQvMTA3MDI0NFxuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRDYWNo
ZVt0YWddID0gKFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MVW5rbm93bkVs
ZW1lbnQgfHxcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTEVsZW1lbnRcbiAg
ICApKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWddID0g
L0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlbC50b1N0cmluZygpKSlcbiAgfVxufVxuXG4vKiAg
Ki9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNlbGVjdG9yIGlmIGl0J3Mgbm90IGFuIGVs
ZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnkgKGVsKSB7XG4gIGlmICh0eXBlb2Yg
ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVjdGVkID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcihlbCk7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnQ2Fubm90IGZpbmQgZWxlbWVu
dDogJyArIGVsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpXG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFxuICB9IGVsc2Uge1xuICAgIHJldHVy
biBlbFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEgKHRhZ05h
bWUsIHZub2RlKSB7XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUp
O1xuICBpZiAodGFnTmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICByZXR1cm4gZWxtXG4gIH1cbiAg
Ly8gZmFsc2Ugb3IgbnVsbCB3aWxsIHJlbW92ZSB0aGUgYXR0cmlidXRlIGJ1dCB1bmRlZmluZWQg
d2lsbCBub3RcbiAgaWYgKHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS5hdHRycyAmJiB2bm9kZS5k
YXRhLmF0dHJzLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbG0uc2V0QXR0cmlidXRl
KCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4gIHJldHVybiBlbG1cbn1cblxuZnVuY3Rp
b24gY3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgcmV0dXJuIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSwgdGFnTmFtZSlcbn1c
blxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQgKHRleHQpIHtc
biAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dClcbn1cblxuZnVuY3Rpb24gaW5z
ZXJ0QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gIHBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpO1xufVxuXG5mdW5jdGlv
biByZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7
XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLmFwcGVu
ZENoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFyZW50Tm9kZSAobm9kZSkge1xuICByZXR1
cm4gbm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIG5leHRTaWJsaW5nIChub2RlKSB7XG4g
IHJldHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1bmN0aW9uIHRhZ05hbWUgKG5vZGUpIHtc
biAgcmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5jdGlvbiBzZXRUZXh0Q29udGVudCAobm9k
ZSwgdGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcbn1cblxuZnVuY3Rpb24gc2V0
QXR0cmlidXRlIChub2RlLCBrZXksIHZhbCkge1xuICBub2RlLnNldEF0dHJpYnV0ZShrZXksIHZh
bCk7XG59XG5cblxudmFyIG5vZGVPcHMgPSBPYmplY3QuZnJlZXplKHtcblx0Y3JlYXRlRWxlbWVu
dDogY3JlYXRlRWxlbWVudCQxLFxuXHRjcmVhdGVFbGVtZW50TlM6IGNyZWF0ZUVsZW1lbnROUyxc
blx0Y3JlYXRlVGV4dE5vZGU6IGNyZWF0ZVRleHROb2RlLFxuXHRjcmVhdGVDb21tZW50OiBjcmVh
dGVDb21tZW50LFxuXHRpbnNlcnRCZWZvcmU6IGluc2VydEJlZm9yZSxcblx0cmVtb3ZlQ2hpbGQ6
IHJlbW92ZUNoaWxkLFxuXHRhcHBlbmRDaGlsZDogYXBwZW5kQ2hpbGQsXG5cdHBhcmVudE5vZGU6
IHBhcmVudE5vZGUsXG5cdG5leHRTaWJsaW5nOiBuZXh0U2libGluZyxcblx0dGFnTmFtZTogdGFn
TmFtZSxcblx0c2V0VGV4dENvbnRlbnQ6IHNldFRleHRDb250ZW50LFxuXHRzZXRBdHRyaWJ1dGU6
IHNldEF0dHJpYnV0ZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmID0ge1xuICBjcmVhdGU6IGZ1
bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gIH0s
XG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICBpZiAo
b2xkVm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7XG4gICAgICByZWdpc3RlclJl
ZihvbGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgfVxuICB9
LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVm
KHZub2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJSZWYgKHZub2RlLCBp
c1JlbW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xuICBpZiAoIWtleSkgeyBy
ZXR1cm4gfVxuXG4gIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4gIHZhciByZWYgPSB2bm9kZS5j
b21wb25lbnRJbnN0YW5jZSB8fCB2bm9kZS5lbG07XG4gIHZhciByZWZzID0gdm0uJHJlZnM7XG4g
IGlmIChpc1JlbW92YWwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzW2tleV0pKSB7XG4g
ICAgICByZW1vdmUocmVmc1trZXldLCByZWYpO1xuICAgIH0gZWxzZSBpZiAocmVmc1trZXldID09
PSByZWYpIHtcbiAgICAgIHJlZnNba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gZWxzZSB7
XG4gICAgaWYgKHZub2RlLmRhdGEucmVmSW5Gb3IpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJh
eShyZWZzW2tleV0pKSB7XG4gICAgICAgIHJlZnNba2V5XSA9IFtyZWZdO1xuICAgICAgfSBlbHNl
IGlmIChyZWZzW2tleV0uaW5kZXhPZihyZWYpIDwgMCkge1xuICAgICAgICAvLyAkZmxvdy1kaXNh
YmxlLWxpbmVcbiAgICAgICAgcmVmc1trZXldLnB1c2gocmVmKTtcbiAgICAgIH1cbiAgICB9IGVs
c2Uge1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZp
cnR1YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBTbmFiYmRvbSBieVxuICogU2lt
b24gRnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBM
aWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5kL3NuYWJiZG9tL2Jsb2IvbWFz
dGVyL0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlvdSAoQHl5eDk5MDgwMylcbiAq
XG5cbi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1c2UgdGhpcyBmaWxlIGlzIHBl
cmYtY3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcgZmxvdyB1bmRlcnN0YW5kIGl0
IGlzIG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2RlID0gbmV3IFZOb2RlKCcnLCB7
fSwgW10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3RpdmF0ZScsICd1cGRhdGUnLCAn
cmVtb3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZub2RlIChhLCBiKSB7XG4gIHJl
dHVybiAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmIChcbiAgICAgIChcbiAgICAgICAgYS50YWcg
PT09IGIudGFnICYmXG4gICAgICAgIGEuaXNDb21tZW50ID09PSBiLmlzQ29tbWVudCAmJlxuICAg
ICAgICBpc0RlZihhLmRhdGEpID09PSBpc0RlZihiLmRhdGEpICYmXG4gICAgICAgIHNhbWVJbnB1
dFR5cGUoYSwgYilcbiAgICAgICkgfHwgKFxuICAgICAgICBpc1RydWUoYS5pc0FzeW5jUGxhY2Vo
b2xkZXIpICYmXG4gICAgICAgIGEuYXN5bmNGYWN0b3J5ID09PSBiLmFzeW5jRmFjdG9yeSAmJlxu
ICAgICAgICBpc1VuZGVmKGIuYXN5bmNGYWN0b3J5LmVycm9yKVxuICAgICAgKVxuICAgIClcbiAg
KVxufVxuXG4vLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGNoYW5n
aW5nIHR5cGUgZm9yIDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBiZSB0cmVhdGVkIGFzIGRp
ZmZlcmVudCBub2Rlc1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50
YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0g
aXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFy
IHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlw
ZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlUb09s
ZElkeCAoY2hpbGRyZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFyIGksIGtleTtcbiAgdmFy
IG1hcCA9IHt9O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkge1xuICAg
IGtleSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgeyBtYXBba2V5XSA9
IGk7IH1cbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNoRnVuY3Rp
b24gKGJhY2tlbmQpIHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7fTtcblxuICB2YXIgbW9k
dWxlcyA9IGJhY2tlbmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBiYWNrZW5kLm5vZGVPcHM7
XG5cbiAgZm9yIChpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7XG4gICAgY2JzW2hvb2tz
W2ldXSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxlbmd0aDsgKytqKSB7XG4g
ICAgICBpZiAoaXNEZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4gICAgICAgIGNic1tob29r
c1tpXV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5c
biAgZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBuZXcgVk5vZGUobm9k
ZU9wcy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQsIGVsbSlc
biAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0ZW5lcnMpIHtcbiAg
ICBmdW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3ZlJCQxLmxpc3RlbmVy
cyA9PT0gMCkge1xuICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtcbiAgICAgIH1cbiAgICB9
XG4gICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICByZXR1cm4gcmVtb3Zl
JCQxXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xuICAgIHZhciBwYXJlbnQg
PSBub2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQgbWF5IGhhdmUgYWxyZWFk
eSBiZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAgIGlmIChpc0RlZihwYXJl
bnQpKSB7XG4gICAgICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwgZWwpO1xuICAgIH1cbiAg
fVxuXG4gIHZhciBpblByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUsIGluc2Vy
dGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkge1xuICAgIHZub2RlLmlz
Um9vdEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNrXG4gICAg
aWYgKGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0s
IHJlZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0gdm5vZGUu
ZGF0YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0g
dm5vZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnBy
ZSkge1xuICAgICAgICAgIGluUHJlKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAg
ICAgICFpblByZSAmJlxuICAgICAgICAgICF2bm9kZS5ucyAmJlxuICAgICAgICAgICEoY29uZmln
Lmlnbm9yZWRFbGVtZW50cy5sZW5ndGggJiYgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5pbmRleE9m
KHRhZykgPiAtMSkgJiZcbiAgICAgICAgICBjb25maWcuaXNVbmtub3duRWxlbWVudCh0YWcpXG4g
ICAgICAgICkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAnVW5rbm93biBjdXN0b20g
ZWxlbWVudDogPCcgKyB0YWcgKyAnPiAtIGRpZCB5b3UgJyArXG4gICAgICAgICAgICAncmVnaXN0
ZXIgdGhlIGNvbXBvbmVudCBjb3JyZWN0bHk/IEZvciByZWN1cnNpdmUgY29tcG9uZW50cywgJyAr
XG4gICAgICAgICAgICAnbWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlIFwibmFtZVwiIG9wdGlvbi4n
LFxuICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICAgIHZub2RlLmVsbSA9IHZub2RlLm5zXG4gICAgICAgID8gbm9kZU9wcy5jcmVh
dGVFbGVtZW50TlModm5vZGUubnMsIHRhZylcbiAgICAgICAgOiBub2RlT3BzLmNyZWF0ZUVsZW1l
bnQodGFnLCB2bm9kZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG5cbiAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICAgICAge1xuICAgICAgICBjcmVhdGVDaGlsZHJlbih2bm9kZSwg
Y2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc0RlZihkYXRhKSkg
e1xuICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUp
O1xuICAgICAgICB9XG4gICAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxt
KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiYgZGF0YSAmJiBkYXRhLnByZSkge1xuICAgICAgICBpblByZS0tO1xuICAgICAgfVxu
ICAgIH0gZWxzZSBpZiAoaXNUcnVlKHZub2RlLmlzQ29tbWVudCkpIHtcbiAgICAgIHZub2RlLmVs
bSA9IG5vZGVPcHMuY3JlYXRlQ29tbWVudCh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJl
bnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm5vZGUuZWxt
ID0gbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJl
bnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVh
dGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxt
KSB7XG4gICAgdmFyIGkgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAg
dmFyIGlzUmVhY3RpdmF0ZWQgPSBpc0RlZih2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaS5r
ZWVwQWxpdmU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGkuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5p
dCkpIHtcbiAgICAgICAgaSh2bm9kZSwgZmFsc2UgLyogaHlkcmF0aW5nICovLCBwYXJlbnRFbG0s
IHJlZkVsbSk7XG4gICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ss
IGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3Zl
IGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAg
ICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5c
biAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5k
IGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4g
ICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAg
IGlmIChpc1RydWUoaXNSZWFjdGl2YXRlZCkpIHtcbiAgICAgICAgICByZWFjdGl2YXRlQ29tcG9u
ZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAg
ICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0
aW9uIGluaXRDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAo
aXNEZWYodm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1
ZXVlLnB1c2guYXBwbHkoaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNl
cnQpO1xuICAgICAgdm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0ID0gbnVsbDtcbiAgICB9XG4gICAg
dm5vZGUuZWxtID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGVsO1xuICAgIGlmIChpc1BhdGNo
YWJsZSh2bm9kZSkpIHtcbiAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBlbXB0eSBjb21wb25lbnQgcm9vdC5cbiAgICAgIC8vIHNraXAgYWxsIGVsZW1lbnQtcmVsYXRl
ZCBtb2R1bGVzIGV4Y2VwdCBmb3IgcmVmICgjMzQ1NSlcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2Rl
KTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGluc2VydCBob29rXG4gICAgICBp
bnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24g
cmVhY3RpdmF0ZUNvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxt
LCByZWZFbG0pIHtcbiAgICB2YXIgaTtcbiAgICAvLyBoYWNrIGZvciAjNDMzOTogYSByZWFjdGl2
YXRlZCBjb21wb25lbnQgd2l0aCBpbm5lciB0cmFuc2l0aW9uXG4gICAgLy8gZG9lcyBub3QgdHJp
Z2dlciBiZWNhdXNlIHRoZSBpbm5lciBub2RlJ3MgY3JlYXRlZCBob29rcyBhcmUgbm90IGNhbGxl
ZFxuICAgIC8vIGFnYWluLiBJdCdzIG5vdCBpZGVhbCB0byBpbnZvbHZlIG1vZHVsZS1zcGVjaWZp
YyBsb2dpYyBpbiBoZXJlIGJ1dFxuICAgIC8vIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJl
dHRlciB3YXkgdG8gZG8gaXQuXG4gICAgdmFyIGlubmVyTm9kZSA9IHZub2RlO1xuICAgIHdoaWxl
IChpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGlubmVyTm9kZSA9IGlubmVy
Tm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoaXNEZWYoaSA9IGlubmVy
Tm9kZS5kYXRhKSAmJiBpc0RlZihpID0gaS50cmFuc2l0aW9uKSkge1xuICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgY2JzLmFjdGl2YXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY2JzLmFjdGl2
YXRlW2ldKGVtcHR5Tm9kZSwgaW5uZXJOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRl
ZFZub2RlUXVldWUucHVzaChpbm5lck5vZGUpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAg
IH1cbiAgICAvLyB1bmxpa2UgYSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCxcbiAgICAvLyBhIHJl
YWN0aXZhdGVkIGtlZXAtYWxpdmUgY29tcG9uZW50IGRvZXNuJ3QgaW5zZXJ0IGl0c2VsZlxuICAg
IGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgfVxuXG4gIGZ1bmN0aW9u
IGluc2VydCAocGFyZW50LCBlbG0sIHJlZiQkMSkge1xuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7
XG4gICAgICBpZiAoaXNEZWYocmVmJCQxKSkge1xuICAgICAgICBpZiAocmVmJCQxLnBhcmVudE5v
ZGUgPT09IHBhcmVudCkge1xuICAgICAgICAgIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudCwg
ZWxtLCByZWYkJDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlT3Bz
LmFwcGVuZENoaWxkKHBhcmVudCwgZWxtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5j
dGlvbiBjcmVhdGVDaGlsZHJlbiAodm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUp
IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY3JlYXRlRWxtKGNoaWxk
cmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmVsbSwgbnVsbCwgdHJ1ZSk7XG4gICAg
ICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZSh2bm9kZS50ZXh0KSkge1xuICAgICAgbm9k
ZU9wcy5hcHBlbmRDaGlsZCh2bm9kZS5lbG0sIG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUu
dGV4dCkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xu
ICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgdm5vZGUgPSB2bm9k
ZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiBpc0RlZih2bm9k
ZS50YWcpXG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VDcmVhdGVIb29rcyAodm5vZGUsIGluc2Vy
dGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUu
bGVuZ3RoOyArK2kkMSkge1xuICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUp
O1xuICAgIH1cbiAgICBpID0gdm5vZGUuZGF0YS5ob29rOyAvLyBSZXVzZSB2YXJpYWJsZVxuICAg
IGlmIChpc0RlZihpKSkge1xuICAgICAgaWYgKGlzRGVmKGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShl
bXB0eU5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRl
ZFZub2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUg
aWQgYXR0cmlidXRlIGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFz
IGEgc3BlY2lhbCBjYXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJv
dWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNl
dFNjb3BlICh2bm9kZSkge1xuICAgIHZhciBpO1xuICAgIHZhciBhbmNlc3RvciA9IHZub2RlO1xu
ICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgaWYgKGlzRGVmKGkgPSBhbmNlc3Rvci5jb250
ZXh0KSAmJiBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZCkpIHtcbiAgICAgICAgbm9kZU9w
cy5zZXRBdHRyaWJ1dGUodm5vZGUuZWxtLCBpLCAnJyk7XG4gICAgICB9XG4gICAgICBhbmNlc3Rv
ciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICB9XG4gICAgLy8gZm9yIHNsb3QgY29udGVudCB0aGV5
IHNob3VsZCBhbHNvIGdldCB0aGUgc2NvcGVJZCBmcm9tIHRoZSBob3N0IGluc3RhbmNlLlxuICAg
IGlmIChpc0RlZihpID0gYWN0aXZlSW5zdGFuY2UpICYmXG4gICAgICBpICE9PSB2bm9kZS5jb250
ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAg
ICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwgJycpO1xuICAgIH1cbiAgfVxu
XG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJ
ZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9
IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0s
IGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4g
IGZ1bmN0aW9uIGludm9rZURlc3Ryb3lIb29rICh2bm9kZSkge1xuICAgIHZhciBpLCBqO1xuICAg
IHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlm
IChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5kZXN0cm95KSkgeyBpKHZub2Rl
KTsgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7IGNi
cy5kZXN0cm95W2ldKHZub2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNo
aWxkcmVuKSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsg
KytqKSB7XG4gICAgICAgIGludm9rZURlc3Ryb3lIb29rKHZub2RlLmNoaWxkcmVuW2pdKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVWbm9kZXMgKHBhcmVudEVsbSwg
dm5vZGVzLCBzdGFydElkeCwgZW5kSWR4KSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElk
eDsgKytzdGFydElkeCkge1xuICAgICAgdmFyIGNoID0gdm5vZGVzW3N0YXJ0SWR4XTtcbiAgICAg
IGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKGNoLnRhZykpIHtcbiAgICAgICAg
ICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGNoKTtcbiAgICAgICAgICBpbnZva2VEZXN0cm95
SG9vayhjaCk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRleHQgbm9kZVxuICAgICAgICAgIHJlbW92
ZU5vZGUoY2guZWxtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0
aW9uIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2sgKHZub2RlLCBybSkge1xuICAgIGlmIChpc0Rl
ZihybSkgfHwgaXNEZWYodm5vZGUuZGF0YSkpIHtcbiAgICAgIHZhciBpO1xuICAgICAgdmFyIGxp
c3RlbmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgIGlmIChpc0RlZihybSkpIHtc
biAgICAgICAgLy8gd2UgaGF2ZSBhIHJlY3Vyc2l2ZWx5IHBhc3NlZCBkb3duIHJtIGNhbGxiYWNr
XG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBsaXN0ZW5lcnMgY291bnRcbiAgICAgICAgcm0ubGlz
dGVuZXJzICs9IGxpc3RlbmVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRpcmVjdGx5
IHJlbW92aW5nXG4gICAgICAgIHJtID0gY3JlYXRlUm1DYih2bm9kZS5lbG0sIGxpc3RlbmVycyk7
XG4gICAgICB9XG4gICAgICAvLyByZWN1cnNpdmVseSBpbnZva2UgaG9va3Mgb24gY2hpbGQgY29t
cG9uZW50IHJvb3Qgbm9kZVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0
YW5jZSkgJiYgaXNEZWYoaSA9IGkuX3Zub2RlKSAmJiBpc0RlZihpLmRhdGEpKSB7XG4gICAgICAg
IHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soaSwgcm0pO1xuICAgICAgfVxuICAgICAgZm9yIChp
ID0gMDsgaSA8IGNicy5yZW1vdmUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY2JzLnJlbW92ZVtp
XSh2bm9kZSwgcm0pO1xuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhv
b2spICYmIGlzRGVmKGkgPSBpLnJlbW92ZSkpIHtcbiAgICAgICAgaSh2bm9kZSwgcm0pO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAg
cmVtb3ZlTm9kZSh2bm9kZS5lbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNo
aWxkcmVuIChwYXJlbnRFbG0sIG9sZENoLCBuZXdDaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1v
dmVPbmx5KSB7XG4gICAgdmFyIG9sZFN0YXJ0SWR4ID0gMDtcbiAgICB2YXIgbmV3U3RhcnRJZHgg
PSAwO1xuICAgIHZhciBvbGRFbmRJZHggPSBvbGRDaC5sZW5ndGggLSAxO1xuICAgIHZhciBvbGRT
dGFydFZub2RlID0gb2xkQ2hbMF07XG4gICAgdmFyIG9sZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5k
SWR4XTtcbiAgICB2YXIgbmV3RW5kSWR4ID0gbmV3Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3
U3RhcnRWbm9kZSA9IG5ld0NoWzBdO1xuICAgIHZhciBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0Vu
ZElkeF07XG4gICAgdmFyIG9sZEtleVRvSWR4LCBpZHhJbk9sZCwgZWxtVG9Nb3ZlLCByZWZFbG07
XG5cbiAgICAvLyByZW1vdmVPbmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJh
bnNpdGlvbi1ncm91cD5cbiAgICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGlu
IGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNp
dGlvbnNcbiAgICB2YXIgY2FuTW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgd2hpbGUgKG9sZFN0
YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAg
IGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBv
bGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAg
fSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9
IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0
Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9k
ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRW
bm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3
Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9k
ZSwgbmV3RW5kVm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0Vu
ZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENo
Wy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07
XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkp
IHsgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2Rl
LCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBu
b2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3Bz
Lm5leHRTaWJsaW5nKG9sZEVuZFZub2RlLmVsbSkpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0g
b2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdF
bmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0
Vm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIGxlZnRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRW
bm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92
ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZEVuZFZub2RlLmVsbSwgb2xk
U3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4
XTtcbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgaWYgKGlzVW5kZWYob2xkS2V5VG9JZHgpKSB7IG9sZEtleVRvSWR4
ID0gY3JlYXRlS2V5VG9PbGRJZHgob2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpOyB9XG4g
ICAgICAgIGlkeEluT2xkID0gaXNEZWYobmV3U3RhcnRWbm9kZS5rZXkpID8gb2xkS2V5VG9JZHhb
bmV3U3RhcnRWbm9kZS5rZXldIDogbnVsbDtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQp
KSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAgY3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAg
ICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICB9IGVsc2Ug
e1xuICAgICAgICAgIGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyAmJiAhZWxtVG9Nb3ZlKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAg
ICAgICAgICAgICAnSXQgc2VlbXMgdGhlcmUgYXJlIGR1cGxpY2F0ZSBrZXlzIHRoYXQgaXMgY2F1
c2luZyBhbiB1cGRhdGUgZXJyb3IuICcgK1xuICAgICAgICAgICAgICAnTWFrZSBzdXJlIGVhY2gg
di1mb3IgaXRlbSBoYXMgYSB1bmlxdWUga2V5LidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAg
fVxuICAgICAgICAgIGlmIChzYW1lVm5vZGUoZWxtVG9Nb3ZlLCBuZXdTdGFydFZub2RlKSkge1xu
ICAgICAgICAgICAgcGF0Y2hWbm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVk
Vm5vZGVRdWV1ZSk7XG4gICAgICAgICAgICBvbGRDaFtpZHhJbk9sZF0gPSB1bmRlZmluZWQ7XG4g
ICAgICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgZWxt
VG9Nb3ZlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9k
ZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
ICAvLyBzYW1lIGtleSBidXQgZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50
XG4gICAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
LCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5v
ZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9XG4gICAgaWYgKG9sZFN0YXJ0SWR4ID4gb2xkRW5kSWR4KSB7XG4gICAgICByZWZF
bG0gPSBpc1VuZGVmKG5ld0NoW25ld0VuZElkeCArIDFdKSA/IG51bGwgOiBuZXdDaFtuZXdFbmRJ
ZHggKyAxXS5lbG07XG4gICAgICBhZGRWbm9kZXMocGFyZW50RWxtLCByZWZFbG0sIG5ld0NoLCBu
ZXdTdGFydElkeCwgbmV3RW5kSWR4LCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgIH0gZWxzZSBp
ZiAobmV3U3RhcnRJZHggPiBuZXdFbmRJZHgpIHtcbiAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRF
bG0sIG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5j
dGlvbiBwYXRjaFZub2RlIChvbGRWbm9kZSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVt
b3ZlT25seSkge1xuICAgIGlmIChvbGRWbm9kZSA9PT0gdm5vZGUpIHtcbiAgICAgIHJldHVyblxu
ICAgIH1cblxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG07XG5cbiAgICBp
ZiAoaXNUcnVlKG9sZFZub2RlLmlzQXN5bmNQbGFjZWhvbGRlcikpIHtcbiAgICAgIGlmIChpc0Rl
Zih2bm9kZS5hc3luY0ZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgIGh5ZHJhdGUob2xkVm5v
ZGUuZWxtLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIHZub2RlLmlzQXN5bmNQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1
cm5cbiAgICB9XG5cbiAgICAvLyByZXVzZSBlbGVtZW50IGZvciBzdGF0aWMgdHJlZXMuXG4gICAg
Ly8gbm90ZSB3ZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHZub2RlIGlzIGNsb25lZCAtXG4gICAgLy8g
aWYgdGhlIG5ldyBub2RlIGlzIG5vdCBjbG9uZWQgaXQgbWVhbnMgdGhlIHJlbmRlciBmdW5jdGlv
bnMgaGF2ZSBiZWVuXG4gICAgLy8gcmVzZXQgYnkgdGhlIGhvdC1yZWxvYWQtYXBpIGFuZCB3ZSBu
ZWVkIHRvIGRvIGEgcHJvcGVyIHJlLXJlbmRlci5cbiAgICBpZiAoaXNUcnVlKHZub2RlLmlzU3Rh
dGljKSAmJlxuICAgICAgaXNUcnVlKG9sZFZub2RlLmlzU3RhdGljKSAmJlxuICAgICAgdm5vZGUu
a2V5ID09PSBvbGRWbm9kZS5rZXkgJiZcbiAgICAgIChpc1RydWUodm5vZGUuaXNDbG9uZWQpIHx8
IGlzVHJ1ZSh2bm9kZS5pc09uY2UpKVxuICAgICkge1xuICAgICAgdm5vZGUuY29tcG9uZW50SW5z
dGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIHJldHVyblxuICAgIH1c
blxuICAgIHZhciBpO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYo
ZGF0YSkgJiYgaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkucHJlcGF0Y2gpKSB7
XG4gICAgICBpKG9sZFZub2RlLCB2bm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIG9sZENoID0gb2xk
Vm5vZGUuY2hpbGRyZW47XG4gICAgdmFyIGNoID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYgKGlz
RGVmKGRhdGEpICYmIGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8
IGNicy51cGRhdGUubGVuZ3RoOyArK2kpIHsgY2JzLnVwZGF0ZVtpXShvbGRWbm9kZSwgdm5vZGUp
OyB9XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkudXBkYXRl
KSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzVW5kZWYodm5vZGUu
dGV4dCkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRDaCkgJiYgaXNEZWYoY2gpKSB7XG4gICAgICAg
IGlmIChvbGRDaCAhPT0gY2gpIHsgdXBkYXRlQ2hpbGRyZW4oZWxtLCBvbGRDaCwgY2gsIGluc2Vy
dGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSk7IH1cbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYoY2gp
KSB7XG4gICAgICAgIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkgeyBub2RlT3BzLnNldFRleHRD
b250ZW50KGVsbSwgJycpOyB9XG4gICAgICAgIGFkZFZub2RlcyhlbG0sIG51bGwsIGNoLCAwLCBj
aC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChpc0Rl
ZihvbGRDaCkpIHtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKGVsbSwgb2xkQ2gsIDAsIG9sZENoLmxl
bmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkge1xuICAg
ICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgJycpO1xuICAgICAgfVxuICAgIH0gZWxz
ZSBpZiAob2xkVm5vZGUudGV4dCAhPT0gdm5vZGUudGV4dCkge1xuICAgICAgbm9kZU9wcy5zZXRU
ZXh0Q29udGVudChlbG0sIHZub2RlLnRleHQpO1xuICAgIH1cbiAgICBpZiAoaXNEZWYoZGF0YSkp
IHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wb3N0cGF0
Y2gpKSB7IGkob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlu
dm9rZUluc2VydEhvb2sgKHZub2RlLCBxdWV1ZSwgaW5pdGlhbCkge1xuICAgIC8vIGRlbGF5IGlu
c2VydCBob29rcyBmb3IgY29tcG9uZW50IHJvb3Qgbm9kZXMsIGludm9rZSB0aGVtIGFmdGVyIHRo
ZVxuICAgIC8vIGVsZW1lbnQgaXMgcmVhbGx5IGluc2VydGVkXG4gICAgaWYgKGlzVHJ1ZShpbml0
aWFsKSAmJiBpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICB2bm9kZS5wYXJlbnQuZGF0YS5w
ZW5kaW5nSW5zZXJ0ID0gcXVldWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgcXVldWVbaV0uZGF0YS5ob29rLmlu
c2VydChxdWV1ZVtpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhaWxlZCA9IGZh
bHNlO1xuICAvLyBsaXN0IG9mIG1vZHVsZXMgdGhhdCBjYW4gc2tpcCBjcmVhdGUgaG9vayBkdXJp
bmcgaHlkcmF0aW9uIGJlY2F1c2UgdGhleVxuICAvLyBhcmUgYWxyZWFkeSByZW5kZXJlZCBvbiB0
aGUgY2xpZW50IG9yIGhhcyBubyBuZWVkIGZvciBpbml0aWFsaXphdGlvblxuICB2YXIgaXNSZW5k
ZXJlZE1vZHVsZSA9IG1ha2VNYXAoJ2F0dHJzLHN0eWxlLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRp
Y1N0eWxlLGtleScpO1xuXG4gIC8vIE5vdGU6IHRoaXMgaXMgYSBicm93c2VyLW9ubHkgZnVuY3Rp
b24gc28gd2UgY2FuIGFzc3VtZSBlbG1zIGFyZSBET00gbm9kZXMuXG4gIGZ1bmN0aW9uIGh5ZHJh
dGUgKGVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChpc1RydWUodm5v
ZGUuaXNDb21tZW50KSAmJiBpc0RlZih2bm9kZS5hc3luY0ZhY3RvcnkpKSB7XG4gICAgICB2bm9k
ZS5lbG0gPSBlbG07XG4gICAgICB2bm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIgPSB0cnVlO1xuICAg
ICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghYXNzZXJ0Tm9kZU1hdGNoKGVsbSwgdm5vZGUpKSB7
XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICB2bm9kZS5lbG0gPSBl
bG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7
XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYgKGlzRGVmKGRhdGEp
KSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkp
IHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pOyB9XG4gICAgICBpZiAoaXNEZWYoaSA9
IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICAvLyBjaGlsZCBjb21wb25lbnQu
IGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24gdHJlZS5cbiAgICAgICAgaW5pdENvbXBv
bmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAg
ICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChpc0RlZihjaGls
ZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVudCwgYWxsb3cgY2xpZW50IHRvIHBpY2sg
dXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAgIGlmICghZWxtLmhhc0NoaWxkTm9kZXMo
KSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbiwgaW5zZXJ0ZWRW
bm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgY2hpbGRyZW5NYXRj
aCA9IHRydWU7XG4gICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGVsbS5maXJzdENoaWxkO1xuICAg
ICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtc
biAgICAgICAgICAgIGlmICghY2hpbGROb2RlIHx8ICFoeWRyYXRlKGNoaWxkTm9kZSwgY2hpbGRy
ZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBjaGlsZHJlbk1h
dGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgfVxuICAg
ICAgICAgIC8vIGlmIGNoaWxkTm9kZSBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhlIGFjdHVhbCBj
aGlsZE5vZGVzIGxpc3QgaXNcbiAgICAgICAgICAvLyBsb25nZXIgdGhhbiB0aGUgdmlydHVhbCBj
aGlsZHJlbiBsaXN0LlxuICAgICAgICAgIGlmICghY2hpbGRyZW5NYXRjaCB8fCBjaGlsZE5vZGUp
IHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAg
ICAgICAgICAgICAhYmFpbGVkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgYmFpbGVk
ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJlbnQ6ICcsIGVsbSk7XG4g
ICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWlzbWF0Y2hpbmcgY2hpbGROb2RlcyB2cy4gVk5v
ZGVzOiAnLCBlbG0uY2hpbGROb2RlcywgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
ICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAg
ICAgICAgICBpZiAoIWlzUmVuZGVyZWRNb2R1bGUoa2V5KSkge1xuICAgICAgICAgICAgaW52b2tl
Q3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgICAgICBicmVh
a1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxtLmRh
dGEgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIGVsbS5kYXRhID0gdm5vZGUudGV4dDtcbiAgICB9
XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFzc2VydE5vZGVNYXRjaCAobm9k
ZSwgdm5vZGUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUudGFnKSkge1xuICAgICAgcmV0dXJuIChc
biAgICAgICAgdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1jb21wb25lbnQnKSA9PT0gMCB8fFxuICAg
ICAgICB2bm9kZS50YWcudG9Mb3dlckNhc2UoKSA9PT0gKG5vZGUudGFnTmFtZSAmJiBub2RlLnRh
Z05hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJu
IG5vZGUubm9kZVR5cGUgPT09ICh2bm9kZS5pc0NvbW1lbnQgPyA4IDogMylcbiAgICB9XG4gIH1c
blxuICByZXR1cm4gZnVuY3Rpb24gcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSwgaHlkcmF0aW5nLCBy
ZW1vdmVPbmx5LCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIGlmIChpc1VuZGVmKHZub2RlKSkg
e1xuICAgICAgaWYgKGlzRGVmKG9sZFZub2RlKSkgeyBpbnZva2VEZXN0cm95SG9vayhvbGRWbm9k
ZSk7IH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpc0luaXRpYWxQYXRjaCA9IGZh
bHNlO1xuICAgIHZhciBpbnNlcnRlZFZub2RlUXVldWUgPSBbXTtcblxuICAgIGlmIChpc1VuZGVm
KG9sZFZub2RlKSkge1xuICAgICAgLy8gZW1wdHkgbW91bnQgKGxpa2VseSBhcyBjb21wb25lbnQp
LCBjcmVhdGUgbmV3IHJvb3QgZWxlbWVudFxuICAgICAgaXNJbml0aWFsUGF0Y2ggPSB0cnVlO1xu
ICAgICAgY3JlYXRlRWxtKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVm
RWxtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGlzUmVhbEVsZW1lbnQgPSBpc0RlZihvbGRW
bm9kZS5ub2RlVHlwZSk7XG4gICAgICBpZiAoIWlzUmVhbEVsZW1lbnQgJiYgc2FtZVZub2RlKG9s
ZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgICAgLy8gcGF0Y2ggZXhpc3Rpbmcgcm9vdCBub2RlXG4g
ICAgICAgIHBhdGNoVm5vZGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHJl
bW92ZU9ubHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzUmVhbEVsZW1lbnQpIHtc
biAgICAgICAgICAvLyBtb3VudGluZyB0byBhIHJlYWwgZWxlbWVudFxuICAgICAgICAgIC8vIGNo
ZWNrIGlmIHRoaXMgaXMgc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQgYW5kIGlmIHdlIGNhbiBwZXJm
b3JtXG4gICAgICAgICAgLy8gYSBzdWNjZXNzZnVsIGh5ZHJhdGlvbi5cbiAgICAgICAgICBpZiAo
b2xkVm5vZGUubm9kZVR5cGUgPT09IDEgJiYgb2xkVm5vZGUuaGFzQXR0cmlidXRlKFNTUl9BVFRS
KSkge1xuICAgICAgICAgICAgb2xkVm5vZGUucmVtb3ZlQXR0cmlidXRlKFNTUl9BVFRSKTtcbiAg
ICAgICAgICAgIGh5ZHJhdGluZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChp
c1RydWUoaHlkcmF0aW5nKSkge1xuICAgICAgICAgICAgaWYgKGh5ZHJhdGUob2xkVm5vZGUsIHZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgIGludm9rZUluc2VydEhv
b2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHJldHVy
biBvbGRWbm9kZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAg
J1RoZSBjbGllbnQtc2lkZSByZW5kZXJlZCB2aXJ0dWFsIERPTSB0cmVlIGlzIG5vdCBtYXRjaGlu
ZyAnICtcbiAgICAgICAgICAgICAgICAnc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFRoaXMgaXMg
bGlrZWx5IGNhdXNlZCBieSBpbmNvcnJlY3QgJyArXG4gICAgICAgICAgICAgICAgJ0hUTUwgbWFy
a3VwLCBmb3IgZXhhbXBsZSBuZXN0aW5nIGJsb2NrLWxldmVsIGVsZW1lbnRzIGluc2lkZSAnICtc
biAgICAgICAgICAgICAgICAnPHA+LCBvciBtaXNzaW5nIDx0Ym9keT4uIEJhaWxpbmcgaHlkcmF0
aW9uIGFuZCBwZXJmb3JtaW5nICcgK1xuICAgICAgICAgICAgICAgICdmdWxsIGNsaWVudC1zaWRl
IHJlbmRlci4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxu
ICAgICAgICAgIC8vIGVpdGhlciBub3Qgc2VydmVyLXJlbmRlcmVkLCBvciBoeWRyYXRpb24gZmFp
bGVkLlxuICAgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBub2RlIGFuZCByZXBsYWNlIGl0XG4g
ICAgICAgICAgb2xkVm5vZGUgPSBlbXB0eU5vZGVBdChvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAg
ICAgICAgLy8gcmVwbGFjaW5nIGV4aXN0aW5nIGVsZW1lbnRcbiAgICAgICAgdmFyIG9sZEVsbSA9
IG9sZFZub2RlLmVsbTtcbiAgICAgICAgdmFyIHBhcmVudEVsbSQxID0gbm9kZU9wcy5wYXJlbnRO
b2RlKG9sZEVsbSk7XG4gICAgICAgIGNyZWF0ZUVsbShcbiAgICAgICAgICB2bm9kZSxcbiAgICAg
ICAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgICAgICAgLy8gZXh0cmVtZWx5IHJhcmUgZWRn
ZSBjYXNlOiBkbyBub3QgaW5zZXJ0IGlmIG9sZCBlbGVtZW50IGlzIGluIGFcbiAgICAgICAgICAv
LyBsZWF2aW5nIHRyYW5zaXRpb24uIE9ubHkgaGFwcGVucyB3aGVuIGNvbWJpbmluZyB0cmFuc2l0
aW9uICtcbiAgICAgICAgICAvLyBrZWVwLWFsaXZlICsgSE9Dcy4gKCM0NTkwKVxuICAgICAgICAg
IG9sZEVsbS5fbGVhdmVDYiA/IG51bGwgOiBwYXJlbnRFbG0kMSxcbiAgICAgICAgICBub2RlT3Bz
Lm5leHRTaWJsaW5nKG9sZEVsbSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaXNEZWYodm5v
ZGUucGFyZW50KSkge1xuICAgICAgICAgIC8vIGNvbXBvbmVudCByb290IGVsZW1lbnQgcmVwbGFj
ZWQuXG4gICAgICAgICAgLy8gdXBkYXRlIHBhcmVudCBwbGFjZWhvbGRlciBub2RlIGVsZW1lbnQs
IHJlY3Vyc2l2ZWx5XG4gICAgICAgICAgdmFyIGFuY2VzdG9yID0gdm5vZGUucGFyZW50O1xuICAg
ICAgICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgICAgICAgYW5jZXN0b3IuZWxtID0gdm5v
ZGUuZWxtO1xuICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgICAg
ICAgfVxuICAgICAgICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAg
ICBjYnMuY3JlYXRlW2ldKGVtcHR5Tm9kZSwgdm5vZGUucGFyZW50KTtcbiAgICAgICAgICAgIH1c
biAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocGFyZW50RWxtJDEp
KSB7XG4gICAgICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSQxLCBbb2xkVm5vZGVdLCAwLCAw
KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcpKSB7XG4gICAgICAgICAg
aW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxu
XG4gICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBpc0luaXRp
YWxQYXRjaCk7XG4gICAgcmV0dXJuIHZub2RlLmVsbVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIg
ZGlyZWN0aXZlcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICB1cGRhdGU6IHVw
ZGF0ZURpcmVjdGl2ZXMsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIHVuYmluZERpcmVjdGl2ZXMgKHZu
b2RlKSB7XG4gICAgdXBkYXRlRGlyZWN0aXZlcyh2bm9kZSwgZW1wdHlOb2RlKTtcbiAgfVxufTtc
blxuZnVuY3Rpb24gdXBkYXRlRGlyZWN0aXZlcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChv
bGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMgfHwgdm5vZGUuZGF0YS5kaXJlY3RpdmVzKSB7XG4gICAg
X3VwZGF0ZShvbGRWbm9kZSwgdm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF91cGRhdGUgKG9s
ZFZub2RlLCB2bm9kZSkge1xuICB2YXIgaXNDcmVhdGUgPSBvbGRWbm9kZSA9PT0gZW1wdHlOb2Rl
O1xuICB2YXIgaXNEZXN0cm95ID0gdm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIG9sZERpcnMg
PSBub3JtYWxpemVEaXJlY3RpdmVzJDEob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzLCBvbGRWbm9k
ZS5jb250ZXh0KTtcbiAgdmFyIG5ld0RpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEodm5vZGUu
ZGF0YS5kaXJlY3RpdmVzLCB2bm9kZS5jb250ZXh0KTtcblxuICB2YXIgZGlyc1dpdGhJbnNlcnQg
PSBbXTtcbiAgdmFyIGRpcnNXaXRoUG9zdHBhdGNoID0gW107XG5cbiAgdmFyIGtleSwgb2xkRGly
LCBkaXI7XG4gIGZvciAoa2V5IGluIG5ld0RpcnMpIHtcbiAgICBvbGREaXIgPSBvbGREaXJzW2tl
eV07XG4gICAgZGlyID0gbmV3RGlyc1trZXldO1xuICAgIGlmICghb2xkRGlyKSB7XG4gICAgICAv
LyBuZXcgZGlyZWN0aXZlLCBiaW5kXG4gICAgICBjYWxsSG9vayQxKGRpciwgJ2JpbmQnLCB2bm9k
ZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5pbnNlcnRlZCkge1xu
ICAgICAgICBkaXJzV2l0aEluc2VydC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtc
biAgICAgIC8vIGV4aXN0aW5nIGRpcmVjdGl2ZSwgdXBkYXRlXG4gICAgICBkaXIub2xkVmFsdWUg
PSBvbGREaXIudmFsdWU7XG4gICAgICBjYWxsSG9vayQxKGRpciwgJ3VwZGF0ZScsIHZub2RlLCBv
bGRWbm9kZSk7XG4gICAgICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmNvbXBvbmVudFVwZGF0ZWQp
IHtcbiAgICAgICAgZGlyc1dpdGhQb3N0cGF0Y2gucHVzaChkaXIpO1xuICAgICAgfVxuICAgIH1c
biAgfVxuXG4gIGlmIChkaXJzV2l0aEluc2VydC5sZW5ndGgpIHtcbiAgICB2YXIgY2FsbEluc2Vy
dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhJbnNl
cnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2FsbEhvb2skMShkaXJzV2l0aEluc2VydFtpXSwg
J2luc2VydGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChp
c0NyZWF0ZSkge1xuICAgICAgbWVyZ2VWTm9kZUhvb2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9k
ZS5kYXRhLmhvb2sgPSB7fSksICdpbnNlcnQnLCBjYWxsSW5zZXJ0KTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgY2FsbEluc2VydCgpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkaXJzV2l0aFBvc3RwYXRj
aC5sZW5ndGgpIHtcbiAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2Rl
LmRhdGEuaG9vayA9IHt9KSwgJ3Bvc3RwYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAg
Y2FsbEhvb2skMShkaXJzV2l0aFBvc3RwYXRjaFtpXSwgJ2NvbXBvbmVudFVwZGF0ZWQnLCB2bm9k
ZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFpc0NyZWF0ZSkg
e1xuICAgIGZvciAoa2V5IGluIG9sZERpcnMpIHtcbiAgICAgIGlmICghbmV3RGlyc1trZXldKSB7
XG4gICAgICAgIC8vIG5vIGxvbmdlciBwcmVzZW50LCB1bmJpbmRcbiAgICAgICAgY2FsbEhvb2sk
MShvbGREaXJzW2tleV0sICd1bmJpbmQnLCBvbGRWbm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSk7
XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBlbXB0eU1vZGlmaWVycyA9IE9iamVjdC5j
cmVhdGUobnVsbCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSAoXG4gIGRpcnMs
XG4gIHZtXG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGlmICghZGly
cykge1xuICAgIHJldHVybiByZXNcbiAgfVxuICB2YXIgaSwgZGlyO1xuICBmb3IgKGkgPSAwOyBp
IDwgZGlycy5sZW5ndGg7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgaWYgKCFkaXIu
bW9kaWZpZXJzKSB7XG4gICAgICBkaXIubW9kaWZpZXJzID0gZW1wdHlNb2RpZmllcnM7XG4gICAg
fVxuICAgIHJlc1tnZXRSYXdEaXJOYW1lKGRpcildID0gZGlyO1xuICAgIGRpci5kZWYgPSByZXNv
bHZlQXNzZXQodm0uJG9wdGlvbnMsICdkaXJlY3RpdmVzJywgZGlyLm5hbWUsIHRydWUpO1xuICB9
XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZ2V0UmF3RGlyTmFtZSAoZGlyKSB7XG4gIHJl
dHVybiBkaXIucmF3TmFtZSB8fCAoKGRpci5uYW1lKSArIFwiLlwiICsgKE9iamVjdC5rZXlzKGRp
ci5tb2RpZmllcnMgfHwge30pLmpvaW4oJy4nKSkpXG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rJDEg
KGRpciwgaG9vaywgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpIHtcbiAgdmFyIGZuID0gZGly
LmRlZiAmJiBkaXIuZGVmW2hvb2tdO1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgZm4o
dm5vZGUuZWxtLCBkaXIsIHZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICB9IGNhdGNo
IChlKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bm9kZS5jb250ZXh0LCAoXCJkaXJlY3RpdmUg
XCIgKyAoZGlyLm5hbWUpICsgXCIgXCIgKyBob29rICsgXCIgaG9va1wiKSk7XG4gICAgfVxuICB9
XG59XG5cbnZhciBiYXNlTW9kdWxlcyA9IFtcbiAgcmVmLFxuICBkaXJlY3RpdmVzXG5dO1xuXG4v
KiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQXR0cnMgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIg
b3B0cyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIGlmIChpc0RlZihvcHRzKSAmJiBvcHRz
LkN0b3Iub3B0aW9ucy5pbmhlcml0QXR0cnMgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1c
biAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5hdHRycykgJiYgaXNVbmRlZih2bm9kZS5kYXRh
LmF0dHJzKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBrZXksIGN1ciwgb2xkO1xuICB2YXIg
ZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkQXR0cnMgPSBvbGRWbm9kZS5kYXRhLmF0dHJzIHx8
IHt9O1xuICB2YXIgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzIHx8IHt9O1xuICAvLyBjbG9uZSBv
YnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRc
biAgaWYgKGlzRGVmKGF0dHJzLl9fb2JfXykpIHtcbiAgICBhdHRycyA9IHZub2RlLmRhdGEuYXR0
cnMgPSBleHRlbmQoe30sIGF0dHJzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIGF0dHJzKSB7XG4g
ICAgY3VyID0gYXR0cnNba2V5XTtcbiAgICBvbGQgPSBvbGRBdHRyc1trZXldO1xuICAgIGlmIChv
bGQgIT09IGN1cikge1xuICAgICAgc2V0QXR0cihlbG0sIGtleSwgY3VyKTtcbiAgICB9XG4gIH1c
biAgLy8gIzQzOTE6IGluIElFOSwgc2V0dGluZyB0eXBlIGNhbiByZXNldCB2YWx1ZSBmb3IgaW5w
dXRbdHlwZT1yYWRpb11cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0lFOSAm
JiBhdHRycy52YWx1ZSAhPT0gb2xkQXR0cnMudmFsdWUpIHtcbiAgICBzZXRBdHRyKGVsbSwgJ3Zh
bHVlJywgYXR0cnMudmFsdWUpO1xuICB9XG4gIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7XG4gICAg
aWYgKGlzVW5kZWYoYXR0cnNba2V5XSkpIHtcbiAgICAgIGlmIChpc1hsaW5rKGtleSkpIHtcbiAg
ICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtc
biAgICAgIH0gZWxzZSBpZiAoIWlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgICAgICBlbG0u
cmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9u
IHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG4gIGlmIChpc0Jvb2xlYW5BdHRyKGtleSkpIHtc
biAgICAvLyBzZXQgYXR0cmlidXRlIGZvciBibGFuayB2YWx1ZVxuICAgIC8vIGUuZy4gPG9wdGlv
biBkaXNhYmxlZD5TZWxlY3Qgb25lPC9vcHRpb24+XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUo
dmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgZWwuc2V0QXR0cmlidXRlKGtleSwga2V5KTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNF
bnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKGtleSwgaXNGYWxzeUF0
dHJWYWx1ZSh2YWx1ZSkgfHwgdmFsdWUgPT09ICdmYWxzZScgPyAnZmFsc2UnIDogJ3RydWUnKTtc
biAgfSBlbHNlIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2
YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJv
cChrZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywg
a2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVl
KHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtc
biAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxudmFy
IGF0dHJzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUF0dHJzLFxuICB1cGRhdGU6IHVwZGF0ZUF0dHJz
XG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQ2xhc3MgKG9sZFZub2RlLCB2bm9kZSkg
e1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFy
IG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuICBpZiAoXG4gICAgaXNVbmRlZihkYXRhLnN0YXRp
Y0NsYXNzKSAmJlxuICAgIGlzVW5kZWYoZGF0YS5jbGFzcykgJiYgKFxuICAgICAgaXNVbmRlZihv
bGREYXRhKSB8fCAoXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNDbGFzcykgJiZcbiAg
ICAgICAgaXNVbmRlZihvbGREYXRhLmNsYXNzKVxuICAgICAgKVxuICAgIClcbiAgKSB7XG4gICAg
cmV0dXJuXG4gIH1cblxuICB2YXIgY2xzID0gZ2VuQ2xhc3NGb3JWbm9kZSh2bm9kZSk7XG5cbiAg
Ly8gaGFuZGxlIHRyYW5zaXRpb24gY2xhc3Nlc1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzID0gZWwu
X3RyYW5zaXRpb25DbGFzc2VzO1xuICBpZiAoaXNEZWYodHJhbnNpdGlvbkNsYXNzKSkge1xuICAg
IGNscyA9IGNvbmNhdChjbHMsIHN0cmluZ2lmeUNsYXNzKHRyYW5zaXRpb25DbGFzcykpO1xuICB9
XG5cbiAgLy8gc2V0IHRoZSBjbGFzc1xuICBpZiAoY2xzICE9PSBlbC5fcHJldkNsYXNzKSB7XG4g
ICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNscyk7XG4gICAgZWwuX3ByZXZDbGFzcyA9IGNs
cztcbiAgfVxufVxuXG52YXIga2xhc3MgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQ2xhc3MsXG4gIHVw
ZGF0ZTogdXBkYXRlQ2xhc3Ncbn07XG5cbi8qICAqL1xuXG52YXIgdmFsaWREaXZpc2lvbkNoYXJS
RSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcblxuZnVuY3Rpb24gcGFyc2VGaWx0ZXJzIChleHApIHtc
biAgdmFyIGluU2luZ2xlID0gZmFsc2U7XG4gIHZhciBpbkRvdWJsZSA9IGZhbHNlO1xuICB2YXIg
aW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuICB2YXIgaW5SZWdleCA9IGZhbHNlO1xuICB2YXIg
Y3VybHkgPSAwO1xuICB2YXIgc3F1YXJlID0gMDtcbiAgdmFyIHBhcmVuID0gMDtcbiAgdmFyIGxh
c3RGaWx0ZXJJbmRleCA9IDA7XG4gIHZhciBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJz
O1xuXG4gIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3RoOyBpKyspIHtcbiAgICBwcmV2ID0gYztc
biAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGluU2luZ2xlKSB7XG4gICAgICBp
ZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7IGluU2luZ2xlID0gZmFsc2U7IH1cbiAg
ICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9
PSAweDVDKSB7IGluRG91YmxlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluVGVtcGxhdGVT
dHJpbmcpIHtcbiAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NUMpIHsgaW5UZW1w
bGF0ZVN0cmluZyA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblJlZ2V4KSB7XG4gICAgICBp
ZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVDKSB7IGluUmVnZXggPSBmYWxzZTsgfVxuICAg
IH0gZWxzZSBpZiAoXG4gICAgICBjID09PSAweDdDICYmIC8vIHBpcGVcbiAgICAgIGV4cC5jaGFy
Q29kZUF0KGkgKyAxKSAhPT0gMHg3QyAmJlxuICAgICAgZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9
PSAweDdDICYmXG4gICAgICAhY3VybHkgJiYgIXNxdWFyZSAmJiAhcGFyZW5cbiAgICApIHtcbiAg
ICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZmlyc3QgZmls
dGVyLCBlbmQgb2YgZXhwcmVzc2lvblxuICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtc
biAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICBwdXNoRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlIDB4MjI6IGluRG91YmxlID0gdHJ1ZTsgYnJlYWsg
ICAgICAgICAvLyBcIlxuICAgICAgICBjYXNlIDB4Mjc6IGluU2luZ2xlID0gdHJ1ZTsgYnJlYWsg
ICAgICAgICAvLyAnXG4gICAgICAgIGNhc2UgMHg2MDogaW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7
IGJyZWFrIC8vIGBcbiAgICAgICAgY2FzZSAweDI4OiBwYXJlbisrOyBicmVhayAgICAgICAgICAg
ICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBhcmVuLS07IGJyZWFrICAgICAgICAgICAg
ICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1YXJlKys7IGJyZWFrICAgICAgICAgICAg
ICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVhcmUtLTsgYnJlYWsgICAgICAgICAgICAg
ICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5Kys7IGJyZWFrICAgICAgICAgICAgICAg
ICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHktLTsgYnJlYWsgICAgICAgICAgICAgICAg
IC8vIH1cbiAgICAgIH1cbiAgICAgIGlmIChjID09PSAweDJmKSB7IC8vIC9cbiAgICAgICAgdmFy
IGogPSBpIC0gMTtcbiAgICAgICAgdmFyIHAgPSAodm9pZCAwKTtcbiAgICAgICAgLy8gZmluZCBm
aXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcbiAgICAgICAgZm9yICg7IGogPj0gMDsgai0t
KSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XG4gICAgICAgICAgaWYgKHAgIT09ICcg
JykgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9u
Q2hhclJFLnRlc3QocCkpIHtcbiAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtc
biAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgfSBlbHNlIGlmIChs
YXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNoRmlsdGVyKCk7XG4gIH1cblxuICBmdW5j
dGlvbiBwdXNoRmlsdGVyICgpIHtcbiAgICAoZmlsdGVycyB8fCAoZmlsdGVycyA9IFtdKSkucHVz
aChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xuICAgIGxhc3RGaWx0ZXJJ
bmRleCA9IGkgKyAxO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMpIHtcbiAgICBmb3IgKGkgPSAwOyBp
IDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIo
ZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Np
b25cbn1cblxuZnVuY3Rpb24gd3JhcEZpbHRlciAoZXhwLCBmaWx0ZXIpIHtcbiAgdmFyIGkgPSBm
aWx0ZXIuaW5kZXhPZignKCcpO1xuICBpZiAoaSA8IDApIHtcbiAgICAvLyBfZjogcmVzb2x2ZUZp
bHRlclxuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBmaWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhw
ICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7
XG4gICAgdmFyIGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xuICAgIHJldHVybiAoXCJfZihc
XFwiXCIgKyBuYW1lICsgXCJcXFwiKShcIiArIGV4cCArIFwiLFwiICsgYXJncylcbiAgfVxufVxu
XG4vKiAgKi9cblxuZnVuY3Rpb24gYmFzZVdhcm4gKG1zZykge1xuICBjb25zb2xlLmVycm9yKChc
IltWdWUgY29tcGlsZXJdOiBcIiArIG1zZykpO1xufVxuXG5mdW5jdGlvbiBwbHVja01vZHVsZUZ1
bmN0aW9uIChcbiAgbW9kdWxlcyxcbiAga2V5XG4pIHtcbiAgcmV0dXJuIG1vZHVsZXNcbiAgICA/
IG1vZHVsZXMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiBtW2tleV07IH0pLmZpbHRlcihmdW5j
dGlvbiAoXykgeyByZXR1cm4gXzsgfSlcbiAgICA6IFtdXG59XG5cbmZ1bmN0aW9uIGFkZFByb3Ag
KGVsLCBuYW1lLCB2YWx1ZSkge1xuICAoZWwucHJvcHMgfHwgKGVsLnByb3BzID0gW10pKS5wdXNo
KHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRBdHRyIChl
bCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLmF0dHJzIHx8IChlbC5hdHRycyA9IFtdKSkucHVzaCh7
IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRGlyZWN0aXZl
IChcbiAgZWwsXG4gIG5hbWUsXG4gIHJhd05hbWUsXG4gIHZhbHVlLFxuICBhcmcsXG4gIG1vZGlm
aWVyc1xuKSB7XG4gIChlbC5kaXJlY3RpdmVzIHx8IChlbC5kaXJlY3RpdmVzID0gW10pKS5wdXNo
KHsgbmFtZTogbmFtZSwgcmF3TmFtZTogcmF3TmFtZSwgdmFsdWU6IHZhbHVlLCBhcmc6IGFyZywg
bW9kaWZpZXJzOiBtb2RpZmllcnMgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXIgKFxuICBl
bCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIG1vZGlmaWVycyxcbiAgaW1wb3J0YW50LFxuICB3YXJu
XG4pIHtcbiAgLy8gd2FybiBwcmV2ZW50IGFuZCBwYXNzaXZlIG1vZGlmaWVyXG4gIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuICYmXG4gICAgbW9kaWZpZXJzICYmIG1vZGlmaWVycy5wcmV2ZW50
ICYmIG1vZGlmaWVycy5wYXNzaXZlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAncGFzc2l2ZSBh
bmQgcHJldmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUg
aGFuZGxlciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBldmVudC4nXG4gICAgKTtcbiAgfVxuICAv
LyBjaGVjayBjYXB0dXJlIG1vZGlmaWVyXG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLmNh
cHR1cmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLmNhcHR1cmU7XG4gICAgbmFtZSA9ICchJyAr
IG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIGNhcHR1cmVkXG4gIH1cbiAgaWYgKG1vZGlmaWVy
cyAmJiBtb2RpZmllcnMub25jZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMub25jZTtcbiAgICBu
YW1lID0gJ34nICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgb25jZVxuICB9XG4gIC8qIGlz
dGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5wYXNzaXZl
KSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5wYXNzaXZlO1xuICAgIG5hbWUgPSAnJicgKyBuYW1l
OyAvLyBtYXJrIHRoZSBldmVudCBhcyBwYXNzaXZlXG4gIH1cbiAgdmFyIGV2ZW50cztcbiAgaWYg
KG1vZGlmaWVycyAmJiBtb2RpZmllcnMubmF0aXZlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5u
YXRpdmU7XG4gICAgZXZlbnRzID0gZWwubmF0aXZlRXZlbnRzIHx8IChlbC5uYXRpdmVFdmVudHMg
PSB7fSk7XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzID0gZWwuZXZlbnRzIHx8IChlbC5ldmVudHMg
PSB7fSk7XG4gIH1cbiAgdmFyIG5ld0hhbmRsZXIgPSB7IHZhbHVlOiB2YWx1ZSwgbW9kaWZpZXJz
OiBtb2RpZmllcnMgfTtcbiAgdmFyIGhhbmRsZXJzID0gZXZlbnRzW25hbWVdO1xuICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcnMpKSB7XG4gICAg
aW1wb3J0YW50ID8gaGFuZGxlcnMudW5zaGlmdChuZXdIYW5kbGVyKSA6IGhhbmRsZXJzLnB1c2go
bmV3SGFuZGxlcik7XG4gIH0gZWxzZSBpZiAoaGFuZGxlcnMpIHtcbiAgICBldmVudHNbbmFtZV0g
PSBpbXBvcnRhbnQgPyBbbmV3SGFuZGxlciwgaGFuZGxlcnNdIDogW2hhbmRsZXJzLCBuZXdIYW5k
bGVyXTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbbmFtZV0gPSBuZXdIYW5kbGVyO1xuICB9XG59
XG5cbmZ1bmN0aW9uIGdldEJpbmRpbmdBdHRyIChcbiAgZWwsXG4gIG5hbWUsXG4gIGdldFN0YXRp
Y1xuKSB7XG4gIHZhciBkeW5hbWljVmFsdWUgPVxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICc6
JyArIG5hbWUpIHx8XG4gICAgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtYmluZDonICsgbmFtZSk7
XG4gIGlmIChkeW5hbWljVmFsdWUgIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZpbHRlcnMo
ZHluYW1pY1ZhbHVlKVxuICB9IGVsc2UgaWYgKGdldFN0YXRpYyAhPT0gZmFsc2UpIHtcbiAgICB2
YXIgc3RhdGljVmFsdWUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCBuYW1lKTtcbiAgICBpZiAoc3Rh
dGljVmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0YXRpY1Zh
bHVlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbmRSZW1vdmVBdHRyIChlbCwgbmFt
ZSkge1xuICB2YXIgdmFsO1xuICBpZiAoKHZhbCA9IGVsLmF0dHJzTWFwW25hbWVdKSAhPSBudWxs
KSB7XG4gICAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwg
PSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGxpc3RbaV0ubmFtZSA9PT0g
bmFtZSkge1xuICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWtcbiAgICAg
IH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBDcm9z
cy1wbGF0Zm9ybSBjb2RlIGdlbmVyYXRpb24gZm9yIGNvbXBvbmVudCB2LW1vZGVsXG4gKi9cbmZ1
bmN0aW9uIGdlbkNvbXBvbmVudE1vZGVsIChcbiAgZWwsXG4gIHZhbHVlLFxuICBtb2RpZmllcnNc
bikge1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xuICB2YXIgbnVtYmVyID0gcmVmLm51
bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJpbTtcblxuICB2YXIgYmFzZVZhbHVlRXhwcmVzc2lv
biA9ICckJHYnO1xuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gYmFzZVZhbHVlRXhwcmVzc2lvbjtc
biAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPVxuICAgICAgXCIodHlwZW9mIFwi
ICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiID09PSAnc3RyaW5nJ1wiICtcbiAgICAgICAgXCI/
IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAgICAgICAgXCI6IFwi
ICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIGlmIChudW1iZXIpIHtcbiAg
ICB2YWx1ZUV4cHJlc3Npb24gPSBcIl9uKFwiICsgdmFsdWVFeHByZXNzaW9uICsgXCIpXCI7XG4g
IH1cbiAgdmFyIGFzc2lnbm1lbnQgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHBy
ZXNzaW9uKTtcblxuICBlbC5tb2RlbCA9IHtcbiAgICB2YWx1ZTogKFwiKFwiICsgdmFsdWUgKyBc
IilcIiksXG4gICAgZXhwcmVzc2lvbjogKFwiXFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksXG4g
ICAgY2FsbGJhY2s6IChcImZ1bmN0aW9uIChcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIikg
e1wiICsgYXNzaWdubWVudCArIFwifVwiKVxuICB9O1xufVxuXG4vKipcbiAqIENyb3NzLXBsYXRm
b3JtIGNvZGVnZW4gaGVscGVyIGZvciBnZW5lcmF0aW5nIHYtbW9kZWwgdmFsdWUgYXNzaWdubWVu
dCBjb2RlLlxuICovXG5mdW5jdGlvbiBnZW5Bc3NpZ25tZW50Q29kZSAoXG4gIHZhbHVlLFxuICBh
c3NpZ25tZW50XG4pIHtcbiAgdmFyIG1vZGVsUnMgPSBwYXJzZU1vZGVsKHZhbHVlKTtcbiAgaWYg
KG1vZGVsUnMuaWR4ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSArIFwiPVwiICsgYXNz
aWdubWVudClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiJHNldChcIiArIChtb2RlbFJzLmV4
cCkgKyBcIiwgXCIgKyAobW9kZWxScy5pZHgpICsgXCIsIFwiICsgYXNzaWdubWVudCArIFwiKVwi
KVxuICB9XG59XG5cbi8qKlxuICogcGFyc2UgZGlyZWN0aXZlIG1vZGVsIHRvIGRvIHRoZSBhcnJh
eSB1cGRhdGUgdHJhbnNmb3JtLiBhW2lkeF0gPSB2YWwgPT4gJCRhLnNwbGljZSgkJGlkeCwgMSwg
dmFsKVxuICpcbiAqIGZvciBsb29wIHBvc3NpYmxlIGNhc2VzOlxuICpcbiAqIC0gdGVzdFxuICog
LSB0ZXN0W2lkeF1cbiAqIC0gdGVzdFt0ZXN0MVtpZHhdXVxuICogLSB0ZXN0W1wiYVwiXVtpZHhd
XG4gKiAtIHh4eC50ZXN0W2FbYV0udGVzdDFbaWR4XV1cbiAqIC0gdGVzdC54eHguYVtcImFzYVwi
XVt0ZXN0MVtpZHhdXVxuICpcbiAqL1xuXG52YXIgbGVuO1xudmFyIHN0cjtcbnZhciBjaHI7XG52
YXIgaW5kZXgkMTtcbnZhciBleHByZXNzaW9uUG9zO1xudmFyIGV4cHJlc3Npb25FbmRQb3M7XG5c
bmZ1bmN0aW9uIHBhcnNlTW9kZWwgKHZhbCkge1xuICBzdHIgPSB2YWw7XG4gIGxlbiA9IHN0ci5s
ZW5ndGg7XG4gIGluZGV4JDEgPSBleHByZXNzaW9uUG9zID0gZXhwcmVzc2lvbkVuZFBvcyA9IDA7
XG5cbiAgaWYgKHZhbC5pbmRleE9mKCdbJykgPCAwIHx8IHZhbC5sYXN0SW5kZXhPZignXScpIDwg
bGVuIC0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBleHA6IHZhbCxcbiAgICAgIGlkeDogbnVs
bFxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkg
e1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICB9IGVsc2UgaWYgKGNociA9PT0gMHg1Qikg
e1xuICAgICAgcGFyc2VCcmFja2V0KGNocik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAg
ICBleHA6IHZhbC5zdWJzdHJpbmcoMCwgZXhwcmVzc2lvblBvcyksXG4gICAgaWR4OiB2YWwuc3Vi
c3RyaW5nKGV4cHJlc3Npb25Qb3MgKyAxLCBleHByZXNzaW9uRW5kUG9zKVxuICB9XG59XG5cbmZ1
bmN0aW9uIG5leHQgKCkge1xuICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCQxKVxufVxu
XG5mdW5jdGlvbiBlb2YgKCkge1xuICByZXR1cm4gaW5kZXgkMSA+PSBsZW5cbn1cblxuZnVuY3Rp
b24gaXNTdHJpbmdTdGFydCAoY2hyKSB7XG4gIHJldHVybiBjaHIgPT09IDB4MjIgfHwgY2hyID09
PSAweDI3XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnJhY2tldCAoY2hyKSB7XG4gIHZhciBpbkJyYWNr
ZXQgPSAxO1xuICBleHByZXNzaW9uUG9zID0gaW5kZXgkMTtcbiAgd2hpbGUgKCFlb2YoKSkge1xu
ICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4gICAgICBw
YXJzZVN0cmluZyhjaHIpO1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGNociA9PT0g
MHg1QikgeyBpbkJyYWNrZXQrKzsgfVxuICAgIGlmIChjaHIgPT09IDB4NUQpIHsgaW5CcmFja2V0
LS07IH1cbiAgICBpZiAoaW5CcmFja2V0ID09PSAwKSB7XG4gICAgICBleHByZXNzaW9uRW5kUG9z
ID0gaW5kZXgkMTtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNl
U3RyaW5nIChjaHIpIHtcbiAgdmFyIHN0cmluZ1F1b3RlID0gY2hyO1xuICB3aGlsZSAoIWVvZigp
KSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIGlmIChjaHIgPT09IHN0cmluZ1F1b3RlKSB7XG4g
ICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4kMTtcblxuLy8g
aW4gc29tZSBjYXNlcywgdGhlIGV2ZW50IHVzZWQgaGFzIHRvIGJlIGRldGVybWluZWQgYXQgcnVu
dGltZVxuLy8gc28gd2UgdXNlZCBzb21lIHJlc2VydmVkIHRva2VucyBkdXJpbmcgY29tcGlsZS5c
bnZhciBSQU5HRV9UT0tFTiA9ICdfX3InO1xudmFyIENIRUNLQk9YX1JBRElPX1RPS0VOID0gJ19f
Yyc7XG5cbmZ1bmN0aW9uIG1vZGVsIChcbiAgZWwsXG4gIGRpcixcbiAgX3dhcm5cbikge1xuICB3
YXJuJDEgPSBfd2FybjtcbiAgdmFyIHZhbHVlID0gZGlyLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJz
ID0gZGlyLm1vZGlmaWVycztcbiAgdmFyIHRhZyA9IGVsLnRhZztcbiAgdmFyIHR5cGUgPSBlbC5h
dHRyc01hcC50eXBlO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgdmFyIGR5bmFtaWNUeXBlID0gZWwuYXR0cnNNYXBbJ3YtYmluZDp0eXBlJ10g
fHwgZWwuYXR0cnNNYXBbJzp0eXBlJ107XG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiBkeW5h
bWljVHlwZSkge1xuICAgICAgd2FybiQxKFxuICAgICAgICBcIjxpbnB1dCA6dHlwZT1cXFwiXCIg
KyBkeW5hbWljVHlwZSArIFwiXFxcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjpc
XG5cIiArXG4gICAgICAgIFwidi1tb2RlbCBkb2VzIG5vdCBzdXBwb3J0IGR5bmFtaWMgaW5wdXQg
dHlwZXMuIFVzZSB2LWlmIGJyYW5jaGVzIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAg
IC8vIGlucHV0cyB3aXRoIHR5cGU9XCJmaWxlXCIgYXJlIHJlYWQgb25seSBhbmQgc2V0dGluZyB0
aGUgaW5wdXQnc1xuICAgIC8vIHZhbHVlIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAgaWYgKHRh
ZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnZmlsZScpIHtcbiAgICAgIHdhcm4kMShcbiAgICAg
ICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCIg
dHlwZT1cXFwiZmlsZVxcXCI+OlxcblwiICtcbiAgICAgICAgXCJGaWxlIGlucHV0cyBhcmUgcmVh
ZCBvbmx5LiBVc2UgYSB2LW9uOmNoYW5nZSBsaXN0ZW5lciBpbnN0ZWFkLlwiXG4gICAgICApO1xu
ICAgIH1cbiAgfVxuXG4gIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICBnZW5Db21wb25lbnRNb2Rl
bChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gICAgLy8gY29tcG9uZW50IHYtbW9kZWwgZG9lc24n
dCBuZWVkIGV4dHJhIHJ1bnRpbWVcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmICh0YWcg
PT09ICdzZWxlY3QnKSB7XG4gICAgZ2VuU2VsZWN0KGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAg
fSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAg
IGdlbkNoZWNrYm94TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRh
ZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgZ2VuUmFkaW9Nb2RlbChl
bCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnIHx8IHRh
ZyA9PT0gJ3RleHRhcmVhJykge1xuICAgIGdlbkRlZmF1bHRNb2RlbChlbCwgdmFsdWUsIG1vZGlm
aWVycyk7XG4gIH0gZWxzZSBpZiAoIWNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICBn
ZW5Db21wb25lbnRNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gICAgLy8gY29tcG9uZW50
IHYtbW9kZWwgZG9lc24ndCBuZWVkIGV4dHJhIHJ1bnRpbWVcbiAgICByZXR1cm4gZmFsc2VcbiAg
fSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
d2FybiQxKFxuICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFs
dWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIGVsZW1lbnQgdHlwZS4gXCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGNv
bnRlbnRlZGl0YWJsZSwgaXRcXCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dyYXAgYSBs
aWJyYXJ5IGRlZGljYXRlZCBmb3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBjb21wb25l
bnQuJ1xuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRh
dGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVs
LFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAm
JiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIo
ZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5k
aW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmlu
ZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBh
ZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBc
IilcIiArXG4gICAgICBcIj9faShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBc
Iik+LTFcIiArIChcbiAgICAgICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4gICAgICAg
ICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShcIiArIHZh
bHVlICsgXCIsXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4gICk7XG4g
IGFkZEhhbmRsZXIoZWwsIENIRUNLQk9YX1JBRElPX1RPS0VOLFxuICAgIFwidmFyICQkYT1cIiAr
IHZhbHVlICsgXCIsXCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuICAgICAg
ICBcIiQkYz0kJGVsLmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKTooXCIgKyBm
YWxzZVZhbHVlQmluZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7
JyArXG4gICAgICBcInZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRpbmcg
KyAnKScgOiB2YWx1ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2koJCRhLCQk
dik7JyArXG4gICAgICBcImlmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihcIiArIHZhbHVlICsgXCI9
JCRhLmNvbmNhdCgkJHYpKX1cIiArXG4gICAgICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2YWx1ZSAr
IFwiPSQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1cIiArXG4gICAg
XCJ9ZWxzZXtcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgJyQkYycpKSArIFwifVwiLFxu
ICAgIG51bGwsIHRydWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG4gICAg
ZWwsXG4gICAgdmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlm
aWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGlu
Z0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFsdWVCaW5kaW5nID0gbnVtYmVyID8g
KFwiX24oXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIilcIikgOiB2YWx1ZUJpbmRpbmc7XG4gIGFkZFBy
b3AoZWwsICdjaGVja2VkJywgKFwiX3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5n
ICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgQ0hFQ0tCT1hfUkFESU9fVE9LRU4sIGdlbkFz
c2lnbm1lbnRDb2RlKHZhbHVlLCB2YWx1ZUJpbmRpbmcpLCBudWxsLCB0cnVlKTtcbn1cblxuZnVu
Y3Rpb24gZ2VuU2VsZWN0IChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikg
e1xuICB2YXIgbnVtYmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciBz
ZWxlY3RlZFZhbCA9IFwiQXJyYXkucHJvdG90eXBlLmZpbHRlclwiICtcbiAgICBcIi5jYWxsKCRl
dmVudC50YXJnZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pXCIgK1xu
ICAgIFwiLm1hcChmdW5jdGlvbihvKXt2YXIgdmFsID0gXFxcIl92YWx1ZVxcXCIgaW4gbyA/IG8u
X3ZhbHVlIDogby52YWx1ZTtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAobnVtYmVyID8gJ19uKHZh
bCknIDogJ3ZhbCcpICsgXCJ9KVwiO1xuXG4gIHZhciBhc3NpZ25tZW50ID0gJyRldmVudC50YXJn
ZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSc7XG4gIHZhciBj
b2RlID0gXCJ2YXIgJCRzZWxlY3RlZFZhbCA9IFwiICsgc2VsZWN0ZWRWYWwgKyBcIjtcIjtcbiAg
Y29kZSA9IGNvZGUgKyBcIiBcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgYXNzaWdubWVu
dCkpO1xuICBhZGRIYW5kbGVyKGVsLCAnY2hhbmdlJywgY29kZSwgbnVsbCwgdHJ1ZSk7XG59XG5c
bmZ1bmN0aW9uIGdlbkRlZmF1bHRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJz
XG4pIHtcbiAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuICB2YXIgcmVmID0gbW9kaWZp
ZXJzIHx8IHt9O1xuICB2YXIgbGF6eSA9IHJlZi5sYXp5O1xuICB2YXIgbnVtYmVyID0gcmVmLm51
bWJlcjtcbiAgdmFyIHRyaW0gPSByZWYudHJpbTtcbiAgdmFyIG5lZWRDb21wb3NpdGlvbkd1YXJk
ID0gIWxhenkgJiYgdHlwZSAhPT0gJ3JhbmdlJztcbiAgdmFyIGV2ZW50ID0gbGF6eVxuICAgID8g
J2NoYW5nZSdcbiAgICA6IHR5cGUgPT09ICdyYW5nZSdcbiAgICAgID8gUkFOR0VfVE9LRU5cbiAg
ICAgIDogJ2lucHV0JztcblxuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gJyRldmVudC50YXJnZXQu
dmFsdWUnO1xuICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiJGV2ZW50LnRh
cmdldC52YWx1ZS50cmltKClcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHBy
ZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG5cbiAgdmFy
IGNvZGUgPSBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcbiAgaWYg
KG5lZWRDb21wb3NpdGlvbkd1YXJkKSB7XG4gICAgY29kZSA9IFwiaWYoJGV2ZW50LnRhcmdldC5j
b21wb3NpbmcpcmV0dXJuO1wiICsgY29kZTtcbiAgfVxuXG4gIGFkZFByb3AoZWwsICd2YWx1ZScs
IChcIihcIiArIHZhbHVlICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgZXZlbnQsIGNvZGUs
IG51bGwsIHRydWUpO1xuICBpZiAodHJpbSB8fCBudW1iZXIpIHtcbiAgICBhZGRIYW5kbGVyKGVs
LCAnYmx1cicsICckZm9yY2VVcGRhdGUoKScpO1xuICB9XG59XG5cbi8qICAqL1xuXG4vLyBub3Jt
YWxpemUgdi1tb2RlbCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBiZSBkZXRlcm1pbmVkIGF0
IHJ1bnRpbWUuXG4vLyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUgZXZlbnQgYXMgdGhlIGZp
cnN0IGluIHRoZSBhcnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9pbnQgaXMgZW5zdXJpbmcg
dGhlIHYtbW9kZWwgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4vLyB1c2VyLWF0dGFjaGVk
IGhhbmRsZXJzLlxuZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikge1xuICB2YXIgZXZlbnQ7
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25bUkFOR0VfVE9LRU5d
KSkge1xuICAgIC8vIElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3VwcG9ydHMgYGNoYW5nZWAg
ZXZlbnRcbiAgICBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gICAgb25bZXZl
bnRdID0gW10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBk
ZWxldGUgb25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIGlmIChpc0RlZihvbltDSEVDS0JPWF9SQURJ
T19UT0tFTl0pKSB7XG4gICAgLy8gQ2hyb21lIGZpcmVzIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBj
bGljay9jaGFuZ2UsIGxlYWRzIHRvICM0NTIxXG4gICAgZXZlbnQgPSBpc0Nocm9tZSA/ICdjbGlj
aycgOiAnY2hhbmdlJztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25bQ0hFQ0tCT1hfUkFE
SU9fVE9LRU5dLCBvbltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltDSEVDS0JPWF9SQURJ
T19UT0tFTl07XG4gIH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5jdGlvbiBhZGQkMSAoXG4g
IGV2ZW50LFxuICBoYW5kbGVyLFxuICBvbmNlJCQxLFxuICBjYXB0dXJlLFxuICBwYXNzaXZlXG4p
IHtcbiAgaWYgKG9uY2UkJDEpIHtcbiAgICB2YXIgb2xkSGFuZGxlciA9IGhhbmRsZXI7XG4gICAg
dmFyIF90YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdldCBlbGVtZW50IGlu
IGNsb3N1cmVcbiAgICBoYW5kbGVyID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgcmVzID0g
YXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IG9sZEhhbmRsZXIoZXYpXG4gICAgICAg
IDogb2xkSGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKHJlcyAhPT0g
bnVsbCkge1xuICAgICAgICByZW1vdmUkMihldmVudCwgaGFuZGxlciwgY2FwdHVyZSwgX3Rhcmdl
dCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICB0YXJnZXQkMS5hZGRFdmVudExpc3RlbmVyKFxu
ICAgIGV2ZW50LFxuICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNzaXZlXG4gICAgICA/IHsg
Y2FwdHVyZTogY2FwdHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAgICA6IGNhcHR1cmVcbiAg
KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDIgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgY2Fw
dHVyZSxcbiAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQxKS5yZW1vdmVFdmVu
dExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRl
RE9NTGlzdGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUu
ZGF0YS5vbikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJldHVyblxuICB9XG4g
IHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9IG9sZFZub2RlLmRh
dGEub24gfHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3JtYWxpemVFdmVudHMo
b24pO1xuICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVtb3ZlJDIsIHZub2Rl
LmNvbnRleHQpO1xufVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTUxpc3Rl
bmVycyxcbiAgdXBkYXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiB1cGRhdGVET01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9s
ZFZub2RlLmRhdGEuZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5kb21Qcm9wcykpIHtc
biAgICByZXR1cm5cbiAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07
XG4gIHZhciBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIHZhciBw
cm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9i
amVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNE
ZWYocHJvcHMuX19vYl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0YS5kb21Qcm9wcyA9IGV4
dGVuZCh7fSwgcHJvcHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xkUHJvcHMpIHtcbiAgICBp
ZiAoaXNVbmRlZihwcm9wc1trZXldKSkge1xuICAgICAgZWxtW2tleV0gPSAnJztcbiAgICB9XG4g
IH1cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9wc1trZXldO1xuICAgIC8v
IGlnbm9yZSBjaGlsZHJlbiBpZiB0aGUgbm9kZSBoYXMgdGV4dENvbnRlbnQgb3IgaW5uZXJIVE1M
LFxuICAgIC8vIGFzIHRoZXNlIHdpbGwgdGhyb3cgYXdheSBleGlzdGluZyBET00gbm9kZXMgYW5k
IGNhdXNlIHJlbW92YWwgZXJyb3JzXG4gICAgLy8gb24gc3Vic2VxdWVudCBwYXRjaGVzICgjMzM2
MClcbiAgICBpZiAoa2V5ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9PT0gJ2lubmVySFRNTCcp
IHtcbiAgICAgIGlmICh2bm9kZS5jaGlsZHJlbikgeyB2bm9kZS5jaGlsZHJlbi5sZW5ndGggPSAw
OyB9XG4gICAgICBpZiAoY3VyID09PSBvbGRQcm9wc1trZXldKSB7IGNvbnRpbnVlIH1cbiAgICB9
XG5cbiAgICBpZiAoa2V5ID09PSAndmFsdWUnKSB7XG4gICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBf
dmFsdWUgYXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBz
dHJpbmdpZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8vIGF2b2lkIHJlc2V0
dGluZyBjdXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxuICAgICAgdmFyIHN0
ckN1ciA9IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAgICBpZiAoc2hvdWxk
VXBkYXRlVmFsdWUoZWxtLCB2bm9kZSwgc3RyQ3VyKSkge1xuICAgICAgICBlbG0udmFsdWUgPSBz
dHJDdXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsbVtrZXldID0gY3VyO1xuICAg
IH1cbiAgfVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0cnMuanMgYWNjZXB0
VmFsdWVcblxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoXG4gIGVsbSxcbiAgdm5vZGUs
XG4gIGNoZWNrVmFsXG4pIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2luZyAmJiAoXG4gICAgdm5v
ZGUudGFnID09PSAnb3B0aW9uJyB8fFxuICAgIGlzRGlydHkoZWxtLCBjaGVja1ZhbCkgfHxcbiAg
ICBpc0lucHV0Q2hhbmdlZChlbG0sIGNoZWNrVmFsKVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0Rp
cnR5IChlbG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4gdGV4dGJveCAoLm51
bWJlciBhbmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXNcbiAgLy8gbm90IGVx
dWFsIHRvIHRoZSB1cGRhdGVkIHZhbHVlXG4gIHZhciBub3RJbkZvY3VzID0gdHJ1ZTtcbiAgLy8g
IzYxNTdcbiAgLy8gd29yayBhcm91bmQgSUUgYnVnIHdoZW4gYWNjZXNzaW5nIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgaW4gYW4gaWZyYW1lXG4gIHRyeSB7IG5vdEluRm9jdXMgPSBkb2N1bWVudC5h
Y3RpdmVFbGVtZW50ICE9PSBlbG07IH0gY2F0Y2ggKGUpIHt9XG4gIHJldHVybiBub3RJbkZvY3Vz
ICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENoYW5nZWQg
KGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVy
cyA9IGVsbS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlm
IChpc0RlZihtb2RpZmllcnMpICYmIG1vZGlmaWVycy5udW1iZXIpIHtcbiAgICByZXR1cm4gdG9O
dW1iZXIodmFsdWUpICE9PSB0b051bWJlcihuZXdWYWwpXG4gIH1cbiAgaWYgKGlzRGVmKG1vZGlm
aWVycykgJiYgbW9kaWZpZXJzLnRyaW0pIHtcbiAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9PSBu
ZXdWYWwudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxudmFyIGRv
bVByb3BzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0ZURP
TVByb3BzXG59O1xuXG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1bmN0
aW9uIChjc3NUZXh0KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0ZXIgPSAv
Oyg/IVteKF0qXFwpKS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykvO1xuICBj
c3NUZXh0LnNwbGl0KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAg
ICBpZiAoaXRlbSkge1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0
ZXIpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRtcFsx
XS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJnZSBz
dGF0aWMgYW5kIGR5bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rpb24g
bm9ybWFsaXplU3R5bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxl
QmluZGluZyhkYXRhLnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNzZWQg
aW50byBhbiBvYmplY3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMgYSBm
cmVzaCBvYmplY3QsIHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBkYXRh
LnN0YXRpY1N0eWxlXG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4gICAg
OiBzdHlsZVxufVxuXG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVz
IGludG8gT2JqZWN0XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdTdHls
ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJuIHRv
T2JqZWN0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9PT0g
J3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuICB9
XG4gIHJldHVybiBiaW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50IHN0
eWxlIHNob3VsZCBiZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25lbnQn
cyBzdHlsZSBjb3VsZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5vZGUs
IGNoZWNrQ2hpbGQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4gIGlm
IChjaGVja0NoaWxkKSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChj
aGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9k
ZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoY2hpbGROb2RlLmRhdGEgJiYg
KHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpKSB7XG4gICAg
ICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYg
KChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURhdGEodm5vZGUuZGF0YSkpKSB7XG4gICAgZXh0
ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4g
IHdoaWxlICgocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJl
bnROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShwYXJlbnROb2Rl
LmRhdGEpKSkge1xuICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICB9XG4gIH1cbiAg
cmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGNzc1ZhclJFID0gL14tLS87XG52YXIgaW1w
b3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbnZhciBzZXRQcm9wID0gZnVuY3Rpb24gKGVs
LCBuYW1lLCB2YWwpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjc3NWYXJS
RS50ZXN0KG5hbWUpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcbiAg
fSBlbHNlIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9w
ZXJ0eShuYW1lLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XG4g
IH0gZWxzZSB7XG4gICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUpO1xuICAg
IGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVzIGFycmF5
IGNyZWF0ZWQgYnkgYXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTogW1wiLXdl
YmtpdC1ib3hcIiwgXCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBTZXQgdGhl
bSBvbmUgYnkgb25lLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBpdCBjYW4g
cmVjb2duaXplXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsgaSA8IGxl
bjsgaSsrKSB7XG4gICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtpXTtcbiAg
ICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFs
O1xuICAgIH1cbiAgfVxufTtcblxudmFyIHZlbmRvck5hbWVzID0gWydXZWJraXQnLCAnTW96Jywg
J21zJ107XG5cbnZhciBlbXB0eVN0eWxlO1xudmFyIG5vcm1hbGl6ZSA9IGNhY2hlZChmdW5jdGlv
biAocHJvcCkge1xuICBlbXB0eVN0eWxlID0gZW1wdHlTdHlsZSB8fCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKS5zdHlsZTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJv
cCAhPT0gJ2ZpbHRlcicgJiYgKHByb3AgaW4gZW1wdHlTdHlsZSkpIHtcbiAgICByZXR1cm4gcHJv
cFxuICB9XG4gIHZhciBjYXBOYW1lID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBy
b3Auc2xpY2UoMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmVuZG9yTmFtZXMubGVuZ3RoOyBp
KyspIHtcbiAgICB2YXIgbmFtZSA9IHZlbmRvck5hbWVzW2ldICsgY2FwTmFtZTtcbiAgICBpZiAo
bmFtZSBpbiBlbXB0eVN0eWxlKSB7XG4gICAgICByZXR1cm4gbmFtZVxuICAgIH1cbiAgfVxufSk7
XG5cbmZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGRhdGEg
PSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAgaWYgKGlz
VW5kZWYoZGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxuICAgIGlz
VW5kZWYob2xkRGF0YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxlKVxuICAp
IHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9IHZub2Rl
LmVsbTtcbiAgdmFyIG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtcbiAgdmFy
IG9sZFN0eWxlQmluZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERhdGEuc3R5
bGUgfHwge307XG5cbiAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5kaW5nIGFs
cmVhZHkgbWVyZ2VkIGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFcbiAgdmFy
IG9sZFN0eWxlID0gb2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4gIHZhciBz
dHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7fTtcblxu
ICAvLyBzdG9yZSBub3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBmb3IgbmV4
dCBkaWZmXG4gIC8vIG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZlLCBzaW5j
ZSB0aGUgdXNlciBsaWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9kZS5kYXRh
Lm5vcm1hbGl6ZWRTdHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVuZCh7fSwg
c3R5bGUpXG4gICAgOiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2bm9kZSwg
dHJ1ZSk7XG5cbiAgZm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5kZWYobmV3
U3R5bGVbbmFtZV0pKSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAgfVxuICB9
XG4gIGZvciAobmFtZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25hbWVdO1xu
ICAgIGlmIChjdXIgIT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0dGluZyB0
byBudWxsIGhhcyBubyBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgc2V0UHJv
cChlbCwgbmFtZSwgY3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59XG5cbnZh
ciBzdHlsZSA9IHtcbiAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRhdGVTdHls
ZVxufTtcblxuLyogICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBm
b3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVu
dHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAg
ICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5j
bGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMu
c3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3Qu
YWRkKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xu
ICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRl
KCdjbGFzcycpIHx8ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcgKyBjbHMg
KyAnICcpIDwgMCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIgKyBjbHMp
LnRyaW0oKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdpdGggY29t
cGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4g
KiBTVkcgZWxlbWVudHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVsLCBjbHMp
IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xz
LnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNl
ICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0x
KSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVy
biBlbC5jbGFzc0xpc3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xh
c3NMaXN0LnJlbW92ZShjbHMpO1xuICAgIH1cbiAgICBpZiAoIWVsLmNsYXNzTGlzdC5sZW5ndGgp
IHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4gIH0gZWxzZSB7
XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykg
KyBcIiBcIjtcbiAgICB2YXIgdGFyID0gJyAnICsgY2xzICsgJyAnO1xuICAgIHdoaWxlIChjdXIu
aW5kZXhPZih0YXIpID49IDApIHtcbiAgICAgIGN1ciA9IGN1ci5yZXBsYWNlKHRhciwgJyAnKTtc
biAgICB9XG4gICAgY3VyID0gY3VyLnRyaW0oKTtcbiAgICBpZiAoY3VyKSB7XG4gICAgICBlbC5z
ZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY3VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwucmVtb3Zl
QXR0cmlidXRlKCdjbGFzcycpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24g
cmVzb2x2ZVRyYW5zaXRpb24gKGRlZiQkMSkge1xuICBpZiAoIWRlZiQkMSkge1xuICAgIHJldHVy
blxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0eXBlb2YgZGVmJCQx
ID09PSAnb2JqZWN0Jykge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICBpZiAoZGVmJCQxLmNzcyAh
PT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuZChyZXMsIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMS5u
YW1lIHx8ICd2JykpO1xuICAgIH1cbiAgICBleHRlbmQocmVzLCBkZWYkJDEpO1xuICAgIHJldHVy
biByZXNcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmJCQxID09PSAnc3RyaW5nJykge1xuICAgIHJl
dHVybiBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEpXG4gIH1cbn1cblxudmFyIGF1dG9Dc3NUcmFu
c2l0aW9uID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiB7XG4gICAgZW50ZXJD
bGFzczogKG5hbWUgKyBcIi1lbnRlclwiKSxcbiAgICBlbnRlclRvQ2xhc3M6IChuYW1lICsgXCIt
ZW50ZXItdG9cIiksXG4gICAgZW50ZXJBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3Rp
dmVcIiksXG4gICAgbGVhdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZVwiKSxcbiAgICBsZWF2ZVRv
Q2xhc3M6IChuYW1lICsgXCItbGVhdmUtdG9cIiksXG4gICAgbGVhdmVBY3RpdmVDbGFzczogKG5h
bWUgKyBcIi1sZWF2ZS1hY3RpdmVcIilcbiAgfVxufSk7XG5cbnZhciBoYXNUcmFuc2l0aW9uID0g
aW5Ccm93c2VyICYmICFpc0lFOTtcbnZhciBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xudmFy
IEFOSU1BVElPTiA9ICdhbmltYXRpb24nO1xuXG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50
IHNuaWZmaW5nXG52YXIgdHJhbnNpdGlvblByb3AgPSAndHJhbnNpdGlvbic7XG52YXIgdHJhbnNp
dGlvbkVuZEV2ZW50ID0gJ3RyYW5zaXRpb25lbmQnO1xudmFyIGFuaW1hdGlvblByb3AgPSAnYW5p
bWF0aW9uJztcbnZhciBhbmltYXRpb25FbmRFdmVudCA9ICdhbmltYXRpb25lbmQnO1xuaWYgKGhh
c1RyYW5zaXRpb24pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh3aW5kb3cu
b250cmFuc2l0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXR0cmFu
c2l0aW9uZW5kICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgdHJhbnNpdGlvblByb3AgPSAnV2Vi
a2l0VHJhbnNpdGlvbic7XG4gICAgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3dlYmtpdFRyYW5zaXRp
b25FbmQnO1xuICB9XG4gIGlmICh3aW5kb3cub25hbmltYXRpb25lbmQgPT09IHVuZGVmaW5lZCAm
JlxuICAgIHdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xu
ICAgIGFuaW1hdGlvblByb3AgPSAnV2Via2l0QW5pbWF0aW9uJztcbiAgICBhbmltYXRpb25FbmRF
dmVudCA9ICd3ZWJraXRBbmltYXRpb25FbmQnO1xuICB9XG59XG5cbi8vIGJpbmRpbmcgdG8gd2lu
ZG93IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGhvdCByZWxvYWQgd29yayBpbiBJRSBpbiBzdHJpY3Qg
bW9kZVxudmFyIHJhZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1l
XG4gID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdylcbiAgOiBzZXRU
aW1lb3V0O1xuXG5mdW5jdGlvbiBuZXh0RnJhbWUgKGZuKSB7XG4gIHJhZihmdW5jdGlvbiAoKSB7
XG4gICAgcmFmKGZuKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyAo
ZWwsIGNscykge1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzZXMgPSBlbC5fdHJhbnNpdGlvbkNsYXNz
ZXMgfHwgKGVsLl90cmFuc2l0aW9uQ2xhc3NlcyA9IFtdKTtcbiAgaWYgKHRyYW5zaXRpb25DbGFz
c2VzLmluZGV4T2YoY2xzKSA8IDApIHtcbiAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5wdXNoKGNscyk7
XG4gICAgYWRkQ2xhc3MoZWwsIGNscyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlVHJhbnNp
dGlvbkNsYXNzIChlbCwgY2xzKSB7XG4gIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAg
ICByZW1vdmUoZWwuX3RyYW5zaXRpb25DbGFzc2VzLCBjbHMpO1xuICB9XG4gIHJlbW92ZUNsYXNz
KGVsLCBjbHMpO1xufVxuXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMgKFxuICBlbCxcbiAg
ZXhwZWN0ZWRUeXBlLFxuICBjYlxuKSB7XG4gIHZhciByZWYgPSBnZXRUcmFuc2l0aW9uSW5mbyhl
bCwgZXhwZWN0ZWRUeXBlKTtcbiAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgdmFyIHRpbWVvdXQg
PSByZWYudGltZW91dDtcbiAgdmFyIHByb3BDb3VudCA9IHJlZi5wcm9wQ291bnQ7XG4gIGlmICgh
dHlwZSkgeyByZXR1cm4gY2IoKSB9XG4gIHZhciBldmVudCA9IHR5cGUgPT09IFRSQU5TSVRJT04g
PyB0cmFuc2l0aW9uRW5kRXZlbnQgOiBhbmltYXRpb25FbmRFdmVudDtcbiAgdmFyIGVuZGVkID0g
MDtcbiAgdmFyIGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50LCBvbkVuZCk7XG4gICAgY2IoKTtcbiAgfTtcbiAgdmFyIG9uRW5kID0gZnVuY3Rpb24g
KGUpIHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGVsKSB7XG4gICAgICBpZiAoKytlbmRlZCA+PSBw
cm9wQ291bnQpIHtcbiAgICAgICAgZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZW5kZWQgPCBwcm9wQ291bnQpIHtcbiAgICAg
IGVuZCgpO1xuICAgIH1cbiAgfSwgdGltZW91dCArIDEpO1xuICBlbC5hZGRFdmVudExpc3RlbmVy
KGV2ZW50LCBvbkVuZCk7XG59XG5cbnZhciB0cmFuc2Zvcm1SRSA9IC9cXGIodHJhbnNmb3JtfGFs
bCkoLHwkKS87XG5cbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25JbmZvIChlbCwgZXhwZWN0ZWRUeXBl
KSB7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIHZhciB0
cmFuc2l0aW9uRGVsYXlzID0gc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0RlbGF5J10uc3BsaXQo
JywgJyk7XG4gIHZhciB0cmFuc2l0aW9uRHVyYXRpb25zID0gc3R5bGVzW3RyYW5zaXRpb25Qcm9w
ICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9uVGltZW91dCA9IGdl
dFRpbWVvdXQodHJhbnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9ucyk7XG4gIHZhciBh
bmltYXRpb25EZWxheXMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcs
ICcpO1xuICB2YXIgYW5pbWF0aW9uRHVyYXRpb25zID0gc3R5bGVzW2FuaW1hdGlvblByb3AgKyAn
RHVyYXRpb24nXS5zcGxpdCgnLCAnKTtcbiAgdmFyIGFuaW1hdGlvblRpbWVvdXQgPSBnZXRUaW1l
b3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcblxuICB2YXIgdHlwZTtc
biAgdmFyIHRpbWVvdXQgPSAwO1xuICB2YXIgcHJvcENvdW50ID0gMDtcbiAgLyogaXN0YW5idWwg
aWdub3JlIGlmICovXG4gIGlmIChleHBlY3RlZFR5cGUgPT09IFRSQU5TSVRJT04pIHtcbiAgICBp
ZiAodHJhbnNpdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gVFJBTlNJVElPTjtcbiAg
ICAgIHRpbWVvdXQgPSB0cmFuc2l0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9IHRyYW5z
aXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUg
PT09IEFOSU1BVElPTikge1xuICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4gMCkge1xuICAgICAg
dHlwZSA9IEFOSU1BVElPTjtcbiAgICAgIHRpbWVvdXQgPSBhbmltYXRpb25UaW1lb3V0O1xuICAg
ICAgcHJvcENvdW50ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxz
ZSB7XG4gICAgdGltZW91dCA9IE1hdGgubWF4KHRyYW5zaXRpb25UaW1lb3V0LCBhbmltYXRpb25U
aW1lb3V0KTtcbiAgICB0eXBlID0gdGltZW91dCA+IDBcbiAgICAgID8gdHJhbnNpdGlvblRpbWVv
dXQgPiBhbmltYXRpb25UaW1lb3V0XG4gICAgICAgID8gVFJBTlNJVElPTlxuICAgICAgICA6IEFO
SU1BVElPTlxuICAgICAgOiBudWxsO1xuICAgIHByb3BDb3VudCA9IHR5cGVcbiAgICAgID8gdHlw
ZSA9PT0gVFJBTlNJVElPTlxuICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoXG4g
ICAgICAgIDogYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgOiAwO1xuICB9XG4gIHZh
ciBoYXNUcmFuc2Zvcm0gPVxuICAgIHR5cGUgPT09IFRSQU5TSVRJT04gJiZcbiAgICB0cmFuc2Zv
cm1SRS50ZXN0KHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdQcm9wZXJ0eSddKTtcbiAgcmV0dXJu
IHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgcHJvcENvdW50
OiBwcm9wQ291bnQsXG4gICAgaGFzVHJhbnNmb3JtOiBoYXNUcmFuc2Zvcm1cbiAgfVxufVxuXG5m
dW5jdGlvbiBnZXRUaW1lb3V0IChkZWxheXMsIGR1cmF0aW9ucykge1xuICAvKiBpc3RhbmJ1bCBp
Z25vcmUgbmV4dCAqL1xuICB3aGlsZSAoZGVsYXlzLmxlbmd0aCA8IGR1cmF0aW9ucy5sZW5ndGgp
IHtcbiAgICBkZWxheXMgPSBkZWxheXMuY29uY2F0KGRlbGF5cyk7XG4gIH1cblxuICByZXR1cm4g
TWF0aC5tYXguYXBwbHkobnVsbCwgZHVyYXRpb25zLm1hcChmdW5jdGlvbiAoZCwgaSkge1xuICAg
IHJldHVybiB0b01zKGQpICsgdG9NcyhkZWxheXNbaV0pXG4gIH0pKVxufVxuXG5mdW5jdGlvbiB0
b01zIChzKSB7XG4gIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkpICogMTAwMFxufVxuXG4v
KiAgKi9cblxuZnVuY3Rpb24gZW50ZXIgKHZub2RlLCB0b2dnbGVEaXNwbGF5KSB7XG4gIHZhciBl
bCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNE
ZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgZWwuX2xlYXZlQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAg
ICBlbC5fbGVhdmVDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2
bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVy
blxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fZW50
ZXJDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBj
c3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBlbnRlckNsYXNz
ID0gZGF0YS5lbnRlckNsYXNzO1xuICB2YXIgZW50ZXJUb0NsYXNzID0gZGF0YS5lbnRlclRvQ2xh
c3M7XG4gIHZhciBlbnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNzO1xuICB2
YXIgYXBwZWFyQ2xhc3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBwZWFyVG9DbGFzcyA9
IGRhdGEuYXBwZWFyVG9DbGFzcztcbiAgdmFyIGFwcGVhckFjdGl2ZUNsYXNzID0gZGF0YS5hcHBl
YXJBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUVudGVyID0gZGF0YS5iZWZvcmVFbnRlcjtcbiAg
dmFyIGVudGVyID0gZGF0YS5lbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXIgPSBkYXRhLmFmdGVyRW50
ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZCA9IGRhdGEuZW50ZXJDYW5jZWxsZWQ7XG4gIHZhciBi
ZWZvcmVBcHBlYXIgPSBkYXRhLmJlZm9yZUFwcGVhcjtcbiAgdmFyIGFwcGVhciA9IGRhdGEuYXBw
ZWFyO1xuICB2YXIgYWZ0ZXJBcHBlYXIgPSBkYXRhLmFmdGVyQXBwZWFyO1xuICB2YXIgYXBwZWFy
Q2FuY2VsbGVkID0gZGF0YS5hcHBlYXJDYW5jZWxsZWQ7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEu
ZHVyYXRpb247XG5cbiAgLy8gYWN0aXZlSW5zdGFuY2Ugd2lsbCBhbHdheXMgYmUgdGhlIDx0cmFu
c2l0aW9uPiBjb21wb25lbnQgbWFuYWdpbmcgdGhpc1xuICAvLyB0cmFuc2l0aW9uLiBPbmUgZWRn
ZSBjYXNlIHRvIGNoZWNrIGlzIHdoZW4gdGhlIDx0cmFuc2l0aW9uPiBpcyBwbGFjZWRcbiAgLy8g
YXMgdGhlIHJvb3Qgbm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhhdCBjYXNlIHdlIG5l
ZWQgdG8gY2hlY2tcbiAgLy8gPHRyYW5zaXRpb24+J3MgcGFyZW50IGZvciBhcHBlYXIgY2hlY2su
XG4gIHZhciBjb250ZXh0ID0gYWN0aXZlSW5zdGFuY2U7XG4gIHZhciB0cmFuc2l0aW9uTm9kZSA9
IGFjdGl2ZUluc3RhbmNlLiR2bm9kZTtcbiAgd2hpbGUgKHRyYW5zaXRpb25Ob2RlICYmIHRyYW5z
aXRpb25Ob2RlLnBhcmVudCkge1xuICAgIHRyYW5zaXRpb25Ob2RlID0gdHJhbnNpdGlvbk5vZGUu
cGFyZW50O1xuICAgIGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZS5jb250ZXh0O1xuICB9XG5cbiAg
dmFyIGlzQXBwZWFyID0gIWNvbnRleHQuX2lzTW91bnRlZCB8fCAhdm5vZGUuaXNSb290SW5zZXJ0
O1xuXG4gIGlmIChpc0FwcGVhciAmJiAhYXBwZWFyICYmIGFwcGVhciAhPT0gJycpIHtcbiAgICBy
ZXR1cm5cbiAgfVxuXG4gIHZhciBzdGFydENsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyQ2xhc3Nc
biAgICA/IGFwcGVhckNsYXNzXG4gICAgOiBlbnRlckNsYXNzO1xuICB2YXIgYWN0aXZlQ2xhc3Mg
PSBpc0FwcGVhciAmJiBhcHBlYXJBY3RpdmVDbGFzc1xuICAgID8gYXBwZWFyQWN0aXZlQ2xhc3Nc
biAgICA6IGVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciB0b0NsYXNzID0gaXNBcHBlYXIgJiYgYXBw
ZWFyVG9DbGFzc1xuICAgID8gYXBwZWFyVG9DbGFzc1xuICAgIDogZW50ZXJUb0NsYXNzO1xuXG4g
IHZhciBiZWZvcmVFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGJlZm9yZUFwcGVhciB8fCBi
ZWZvcmVFbnRlcilcbiAgICA6IGJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXJIb29rID0gaXNBcHBl
YXJcbiAgICA/ICh0eXBlb2YgYXBwZWFyID09PSAnZnVuY3Rpb24nID8gYXBwZWFyIDogZW50ZXIp
XG4gICAgOiBlbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/IChh
ZnRlckFwcGVhciB8fCBhZnRlckVudGVyKVxuICAgIDogYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVy
Q2FuY2VsbGVkSG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYXBwZWFyQ2FuY2VsbGVkIHx8IGVudGVy
Q2FuY2VsbGVkKVxuICAgIDogZW50ZXJDYW5jZWxsZWQ7XG5cbiAgdmFyIGV4cGxpY2l0RW50ZXJE
dXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJh
dGlvbi5lbnRlclxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGV4cGxpY2l0RW50ZXJEdXJhdGlvbiAhPSBudWxs
KSB7XG4gICAgY2hlY2tEdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24sICdlbnRlcicsIHZu
b2RlKTtcbiAgfVxuXG4gIHZhciBleHBlY3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7
XG4gIHZhciB1c2VyV2FudHNDb250cm9sID0gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChlbnRlckhv
b2spO1xuXG4gIHZhciBjYiA9IGVsLl9lbnRlckNiID0gb25jZShmdW5jdGlvbiAoKSB7XG4gICAg
aWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFz
cyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICB9
XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAg
ICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICAgIH1cbiAgICAg
IGVudGVyQ2FuY2VsbGVkSG9vayAmJiBlbnRlckNhbmNlbGxlZEhvb2soZWwpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBhZnRlckVudGVySG9vayAmJiBhZnRlckVudGVySG9vayhlbCk7XG4gICAgfVxu
ICAgIGVsLl9lbnRlckNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKCF2bm9kZS5kYXRhLnNob3cp
IHtcbiAgICAvLyByZW1vdmUgcGVuZGluZyBsZWF2ZSBlbGVtZW50IG9uIGVudGVyIGJ5IGluamVj
dGluZyBhbiBpbnNlcnQgaG9va1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8
fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAnaW5zZXJ0JywgZnVuY3Rpb24gKCkge1xuICAgICAg
dmFyIHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XG4gICAgICB2YXIgcGVuZGluZ05vZGUgPSBwYXJl
bnQgJiYgcGFyZW50Ll9wZW5kaW5nICYmIHBhcmVudC5fcGVuZGluZ1t2bm9kZS5rZXldO1xuICAg
ICAgaWYgKHBlbmRpbmdOb2RlICYmXG4gICAgICAgIHBlbmRpbmdOb2RlLnRhZyA9PT0gdm5vZGUu
dGFnICYmXG4gICAgICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYlxuICAgICAgKSB7XG4gICAg
ICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYigpO1xuICAgICAgfVxuICAgICAgZW50ZXJIb29r
ICYmIGVudGVySG9vayhlbCwgY2IpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc3RhcnQgZW50ZXIg
dHJhbnNpdGlvblxuICBiZWZvcmVFbnRlckhvb2sgJiYgYmVmb3JlRW50ZXJIb29rKGVsKTtcbiAg
aWYgKGV4cGVjdHNDU1MpIHtcbiAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3Mp
O1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIG5leHRGcmFt
ZShmdW5jdGlvbiAoKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIHRvQ2xhc3MpO1xu
ICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICAgIGlmICgh
Y2IuY2FuY2VsbGVkICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICAgIGlmIChpc1ZhbGlk
RHVyYXRpb24oZXhwbGljaXRFbnRlckR1cmF0aW9uKSkge1xuICAgICAgICAgIHNldFRpbWVvdXQo
Y2IsIGV4cGxpY2l0RW50ZXJEdXJhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
d2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBjYik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9KTtcbiAgfVxuXG4gIGlmICh2bm9kZS5kYXRhLnNob3cpIHtcbiAgICB0b2dnbGVEaXNwbGF5
ICYmIHRvZ2dsZURpc3BsYXkoKTtcbiAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7
XG4gIH1cblxuICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICBj
YigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxlYXZlICh2bm9kZSwgcm0pIHtcbiAgdmFyIGVsID0g
dm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgZW50ZXIgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihl
bC5fZW50ZXJDYikpIHtcbiAgICBlbC5fZW50ZXJDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVs
Ll9lbnRlckNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2Rl
LmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpKSB7XG4gICAgcmV0dXJuIHJt
KClcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2xl
YXZlQ2IpIHx8IGVsLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIg
Y3NzID0gZGF0YS5jc3M7XG4gIHZhciB0eXBlID0gZGF0YS50eXBlO1xuICB2YXIgbGVhdmVDbGFz
cyA9IGRhdGEubGVhdmVDbGFzcztcbiAgdmFyIGxlYXZlVG9DbGFzcyA9IGRhdGEubGVhdmVUb0Ns
YXNzO1xuICB2YXIgbGVhdmVBY3RpdmVDbGFzcyA9IGRhdGEubGVhdmVBY3RpdmVDbGFzcztcbiAg
dmFyIGJlZm9yZUxlYXZlID0gZGF0YS5iZWZvcmVMZWF2ZTtcbiAgdmFyIGxlYXZlID0gZGF0YS5s
ZWF2ZTtcbiAgdmFyIGFmdGVyTGVhdmUgPSBkYXRhLmFmdGVyTGVhdmU7XG4gIHZhciBsZWF2ZUNh
bmNlbGxlZCA9IGRhdGEubGVhdmVDYW5jZWxsZWQ7XG4gIHZhciBkZWxheUxlYXZlID0gZGF0YS5k
ZWxheUxlYXZlO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9uO1xuXG4gIHZhciBleHBl
Y3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7XG4gIHZhciB1c2VyV2FudHNDb250cm9s
ID0gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChsZWF2ZSk7XG5cbiAgdmFyIGV4cGxpY2l0TGVhdmVE
dXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJh
dGlvbi5sZWF2ZVxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzRGVmKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikp
IHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbiwgJ2xlYXZlJywgdm5v
ZGUpO1xuICB9XG5cbiAgdmFyIGNiID0gZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtc
biAgICBpZiAoZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAg
ICBlbC5wYXJlbnROb2RlLl9wZW5kaW5nW3Zub2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBp
ZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRv
Q2xhc3MpO1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNz
KTtcbiAgICB9XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1Mp
IHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAg
IH1cbiAgICAgIGxlYXZlQ2FuY2VsbGVkICYmIGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVs
c2Uge1xuICAgICAgcm0oKTtcbiAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4g
ICAgfVxuICAgIGVsLl9sZWF2ZUNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUp
IHtcbiAgICBkZWxheUxlYXZlKHBlcmZvcm1MZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9y
bUxlYXZlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRo
ZSBkZWxheWVkIGxlYXZlIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAo
Y2IuY2FuY2VsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZp
bmcgZWxlbWVudFxuICAgIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgICAoZWwucGFyZW50
Tm9kZS5fcGVuZGluZyB8fCAoZWwucGFyZW50Tm9kZS5fcGVuZGluZyA9IHt9KSlbKHZub2RlLmtl
eSldID0gdm5vZGU7XG4gICAgfVxuICAgIGJlZm9yZUxlYXZlICYmIGJlZm9yZUxlYXZlKGVsKTtc
biAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2
ZUNsYXNzKTtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7
XG4gICAgICBuZXh0RnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xh
c3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwg
bGVhdmVDbGFzcyk7XG4gICAgICAgIGlmICghY2IuY2FuY2VsbGVkICYmICF1c2VyV2FudHNDb250
cm9sKSB7XG4gICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRp
b24pKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdExlYXZlRHVyYXRpb24p
O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWws
IHR5cGUsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAg
ICBsZWF2ZSAmJiBsZWF2ZShlbCwgY2IpO1xuICAgIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldh
bnRzQ29udHJvbCkge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gb25seSB1c2Vk
IGluIGRldiBtb2RlXG5mdW5jdGlvbiBjaGVja0R1cmF0aW9uICh2YWwsIG5hbWUsIHZub2RlKSB7
XG4gIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgIHdhcm4oXG4gICAgICBcIjx0
cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBub3QgYSB2YWxp
ZCBudW1iZXIgLSBcIiArXG4gICAgICBcImdvdCBcIiArIChKU09OLnN0cmluZ2lmeSh2YWwpKSAr
IFwiLlwiLFxuICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH0gZWxzZSBpZiAoaXNOYU4o
dmFsKSkge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5h
bWUgKyBcIiBkdXJhdGlvbiBpcyBOYU4gLSBcIiArXG4gICAgICAndGhlIGR1cmF0aW9uIGV4cHJl
c3Npb24gbWlnaHQgYmUgaW5jb3JyZWN0LicsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtc
biAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRHVyYXRpb24gKHZhbCkge1xuICByZXR1cm4gdHlw
ZW9mIHZhbCA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbClcbn1cblxuLyoqXG4gKiBOb3JtYWxp
emUgYSB0cmFuc2l0aW9uIGhvb2sncyBhcmd1bWVudCBsZW5ndGguIFRoZSBob29rIG1heSBiZTpc
biAqIC0gYSBtZXJnZWQgaG9vayAoaW52b2tlcikgd2l0aCB0aGUgb3JpZ2luYWwgaW4gLmZuc1xu
ICogLSBhIHdyYXBwZWQgY29tcG9uZW50IG1ldGhvZCAoY2hlY2sgLl9sZW5ndGgpXG4gKiAtIGEg
cGxhaW4gZnVuY3Rpb24gKC5sZW5ndGgpXG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tBcmd1bWVudHNM
ZW5ndGggKGZuKSB7XG4gIGlmIChpc1VuZGVmKGZuKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9
XG4gIHZhciBpbnZva2VyRm5zID0gZm4uZm5zO1xuICBpZiAoaXNEZWYoaW52b2tlckZucykpIHtc
biAgICAvLyBpbnZva2VyXG4gICAgcmV0dXJuIGdldEhvb2tBcmd1bWVudHNMZW5ndGgoXG4gICAg
ICBBcnJheS5pc0FycmF5KGludm9rZXJGbnMpXG4gICAgICAgID8gaW52b2tlckZuc1swXVxuICAg
ICAgICA6IGludm9rZXJGbnNcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChmbi5fbGVu
Z3RoIHx8IGZuLmxlbmd0aCkgPiAxXG4gIH1cbn1cblxuZnVuY3Rpb24gX2VudGVyIChfLCB2bm9k
ZSkge1xuICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgZW50ZXIodm5vZGUp
O1xuICB9XG59XG5cbnZhciB0cmFuc2l0aW9uID0gaW5Ccm93c2VyID8ge1xuICBjcmVhdGU6IF9l
bnRlcixcbiAgYWN0aXZhdGU6IF9lbnRlcixcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUkJDEg
KHZub2RlLCBybSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZu
b2RlLmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xuICAgICAgbGVhdmUodm5vZGUsIHJtKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICB9XG4gIH1cbn0gOiB7fTtcblxudmFyIHBsYXRmb3Jt
TW9kdWxlcyA9IFtcbiAgYXR0cnMsXG4gIGtsYXNzLFxuICBldmVudHMsXG4gIGRvbVByb3BzLFxu
ICBzdHlsZSxcbiAgdHJhbnNpdGlvblxuXTtcblxuLyogICovXG5cbi8vIHRoZSBkaXJlY3RpdmUg
bW9kdWxlIHNob3VsZCBiZSBhcHBsaWVkIGxhc3QsIGFmdGVyIGFsbFxuLy8gYnVpbHQtaW4gbW9k
dWxlcyBoYXZlIGJlZW4gYXBwbGllZC5cbnZhciBtb2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNv
bmNhdChiYXNlTW9kdWxlcyk7XG5cbnZhciBwYXRjaCA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBu
b2RlT3BzOiBub2RlT3BzLCBtb2R1bGVzOiBtb2R1bGVzIH0pO1xuXG4vKipcbiAqIE5vdCB0eXBl
IGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xu
ICogcHJvcGVydGllcyB0byBFbGVtZW50cy5cbiAqL1xuXG52YXIgaXNUZXh0SW5wdXRUeXBlID0g
bWFrZU1hcCgndGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwnKTtcblxu
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoaXNJRTkpIHtcbiAgLy8gaHR0cDovL3d3dy5t
YXR0czQxMS5jb20vcG9zdC9pbnRlcm5ldC1leHBsb3Jlci05LW9uaW5wdXQvXG4gIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICB2
YXIgZWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGlmIChlbCAmJiBlbC52bW9kZWwp
IHtcbiAgICAgIHRyaWdnZXIoZWwsICdpbnB1dCcpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBt
b2RlbCQxID0ge1xuICBpbnNlcnRlZDogZnVuY3Rpb24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2
bm9kZSkge1xuICAgIGlmICh2bm9kZS50YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICB2YXIgY2Ig
PSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5j
b250ZXh0KTtcbiAgICAgIH07XG4gICAgICBjYigpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3Jl
IGlmICovXG4gICAgICBpZiAoaXNJRSB8fCBpc0VkZ2UpIHtcbiAgICAgICAgc2V0VGltZW91dChj
YiwgMCk7XG4gICAgICB9XG4gICAgICBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRp
b25zLCBnZXRWYWx1ZSk7XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09ICd0ZXh0YXJlYScg
fHwgaXNUZXh0SW5wdXRUeXBlKGVsLnR5cGUpKSB7XG4gICAgICBlbC5fdk1vZGlmaWVycyA9IGJp
bmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYgKCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5KSB7XG4g
ICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBVSVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0
aW9uZW5kIHdoZW5cbiAgICAgICAgLy8gc3dpdGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5n
IGNvbXBvc2l0aW9uIGNob2ljZVxuICAgICAgICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3Vl
IHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBpT1MgQ2hyb21lXG4gICAgICAgIC8vIGZpcmVzIFwi
Y2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0XCIgb24gYXV0b2NvbXBsZXRlLlxuICAgICAgICBl
bC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAg
aWYgKCFpc0FuZHJvaWQpIHtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3Np
dGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgICBlbC5hZGRFdmVudExp
c3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4g
ICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoaXNJRTkpIHtcbiAg
ICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
LFxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmlu
ZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAg
c2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2Fz
ZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBp
dCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRl
cmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2
YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0
aGUgRE9NLlxuICAgICAgdmFyIHByZXZPcHRpb25zID0gZWwuX3ZPcHRpb25zO1xuICAgICAgdmFy
IGN1ck9wdGlvbnMgPSBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRW
YWx1ZSk7XG4gICAgICBpZiAoY3VyT3B0aW9ucy5zb21lKGZ1bmN0aW9uIChvLCBpKSB7IHJldHVy
biAhbG9vc2VFcXVhbChvLCBwcmV2T3B0aW9uc1tpXSk7IH0pKSB7XG4gICAgICAgIHRyaWdnZXIo
ZWwsICdjaGFuZ2UnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHNldFNl
bGVjdGVkIChlbCwgYmluZGluZywgdm0pIHtcbiAgdmFyIHZhbHVlID0gYmluZGluZy52YWx1ZTtc
biAgdmFyIGlzTXVsdGlwbGUgPSBlbC5tdWx0aXBsZTtcbiAgaWYgKGlzTXVsdGlwbGUgJiYgIUFy
cmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCI8c2VsZWN0IG11bHRpcGxlIHYtbW9kZWw9XFxcIlwi
ICsgKGJpbmRpbmcuZXhwcmVzc2lvbikgKyBcIlxcXCI+IFwiICtcbiAgICAgIFwiZXhwZWN0cyBh
biBBcnJheSB2YWx1ZSBmb3IgaXRzIGJpbmRpbmcsIGJ1dCBnb3QgXCIgKyAoT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSkpLFxuICAgICAgdm1cbiAgICAp
O1xuICAgIHJldHVyblxuICB9XG4gIHZhciBzZWxlY3RlZCwgb3B0aW9uO1xuICBmb3IgKHZhciBp
ID0gMCwgbCA9IGVsLm9wdGlvbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb3B0aW9uID0g
ZWwub3B0aW9uc1tpXTtcbiAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgc2VsZWN0ZWQgPSBs
b29zZUluZGV4T2YodmFsdWUsIGdldFZhbHVlKG9wdGlvbikpID4gLTE7XG4gICAgICBpZiAob3B0
aW9uLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBz
ZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGxvb3NlRXF1YWwoZ2V0
VmFsdWUob3B0aW9uKSwgdmFsdWUpKSB7XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZEluZGV4ICE9
PSBpKSB7XG4gICAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAg
ICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghaXNNdWx0aXBsZSkge1xuICAg
IGVsLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSAob3B0
aW9uKSB7XG4gIHJldHVybiAnX3ZhbHVlJyBpbiBvcHRpb25cbiAgICA/IG9wdGlvbi5fdmFsdWVc
biAgICA6IG9wdGlvbi52YWx1ZVxufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQgKGUp
IHtcbiAgZS50YXJnZXQuY29tcG9zaW5nID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gb25Db21wb3Np
dGlvbkVuZCAoZSkge1xuICAvLyBwcmV2ZW50IHRyaWdnZXJpbmcgYW4gaW5wdXQgZXZlbnQgZm9y
IG5vIHJlYXNvblxuICBpZiAoIWUudGFyZ2V0LmNvbXBvc2luZykgeyByZXR1cm4gfVxuICBlLnRh
cmdldC5jb21wb3NpbmcgPSBmYWxzZTtcbiAgdHJpZ2dlcihlLnRhcmdldCwgJ2lucHV0Jyk7XG59
XG5cbmZ1bmN0aW9uIHRyaWdnZXIgKGVsLCB0eXBlKSB7XG4gIHZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgZS5pbml0RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7
XG4gIGVsLmRpc3BhdGNoRXZlbnQoZSk7XG59XG5cbi8qICAqL1xuXG4vLyByZWN1cnNpdmVseSBz
ZWFyY2ggZm9yIHBvc3NpYmxlIHRyYW5zaXRpb24gZGVmaW5lZCBpbnNpZGUgdGhlIGNvbXBvbmVu
dCByb290XG5mdW5jdGlvbiBsb2NhdGVOb2RlICh2bm9kZSkge1xuICByZXR1cm4gdm5vZGUuY29t
cG9uZW50SW5zdGFuY2UgJiYgKCF2bm9kZS5kYXRhIHx8ICF2bm9kZS5kYXRhLnRyYW5zaXRpb24p
XG4gICAgPyBsb2NhdGVOb2RlKHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSlcbiAgICA6
IHZub2RlXG59XG5cbnZhciBzaG93ID0ge1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kIChlbCwgcmVm
LCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcblxuICAgIHZub2RlID0gbG9j
YXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZu
b2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0gZWwuX192T3Jp
Z2luYWxEaXNwbGF5ID1cbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDog
ZWwuc3R5bGUuZGlzcGxheTtcbiAgICBpZiAodmFsdWUgJiYgdHJhbnNpdGlvbiQkMSkge1xuICAg
ICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGVudGVyKHZub2RlLCBmdW5jdGlvbiAo
KSB7XG4gICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBvcmlnaW5hbERpc3BsYXk7XG4gICAgICB9
KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gb3JpZ2lu
YWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1cGRhdGU6IGZ1bmN0aW9uIHVw
ZGF0ZSAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSByZWYudmFsdWU7XG4gICAg
dmFyIG9sZFZhbHVlID0gcmVmLm9sZFZhbHVlO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gICAgaWYgKHZhbHVlID09PSBvbGRWYWx1ZSkgeyByZXR1cm4gfVxuICAgIHZub2RlID0g
bG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRpb24kJDEgPSB2bm9kZS5kYXRhICYm
IHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICBpZiAodHJhbnNpdGlvbiQkMSkge1xuICAgICAg
dm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlbnRl
cih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5f
X3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
bGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0g
J25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5
bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAg
IH1cbiAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVuYmluZCAoXG4gICAgZWwsXG4gICAgYmlu
ZGluZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxcbiAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4g
ICAgaWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmln
aW5hbERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0g
e1xuICBtb2RlbDogbW9kZWwkMSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbi8vIFBy
b3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBzaW5nbGUgZWxlbWVudC9jb21wb25lbnQu
XG4vLyBzdXBwb3J0cyB0cmFuc2l0aW9uIG1vZGUgKG91dC1pbiAvIGluLW91dClcblxudmFyIHRy
YW5zaXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICBhcHBlYXI6IEJvb2xlYW4sXG4g
IGNzczogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGVudGVy
Q2xhc3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3RyaW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0
cmluZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4gIGVudGVyQWN0aXZlQ2xhc3M6IFN0cmlu
ZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJDbGFzczogU3RyaW5nLFxu
ICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBhcHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4g
IGR1cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVjdF1cbn07XG5cbi8vIGluIGNhc2UgdGhl
IGNoaWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9uZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxu
Ly8gd2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8g
YmUgcmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGlsZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBP
cHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRp
b25zICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHJldHVybiBn
ZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGlsZChjb21wT3B0aW9ucy5jaGlsZHJlbikp
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFj
dFRyYW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBkYXRhID0ge307XG4gIHZhciBvcHRpb25z
ID0gY29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMu
cHJvcHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29tcFtrZXldO1xuICB9XG4gIC8vIGV2ZW50
cy5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBhc3MgdGhlbSBkaXJlY3RseSB0byB0aGUg
dHJhbnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5lcnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0
ZW5lcnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3RlbmVycykge1xuICAgIGRhdGFbY2FtZWxp
emUoa2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxu
ZnVuY3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxkKSB7XG4gIGlmICgvXFxkLWtlZXAtYWxp
dmUkLy50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICByZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtc
biAgICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YVxuICAgIH0p
XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJhbnNpdGlvbiAodm5vZGUpIHtcbiAgd2hp
bGUgKCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAgICBpZiAodm5vZGUuZGF0YS50cmFuc2l0
aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1Nh
bWVDaGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJldHVybiBvbGRDaGlsZC5rZXkgPT09IGNo
aWxkLmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxkLnRhZ1xufVxuXG5mdW5jdGlvbiBpc0Fz
eW5jUGxhY2Vob2xkZXIgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuaXNDb21tZW50ICYmIG5vZGUu
YXN5bmNGYWN0b3J5XG59XG5cbnZhciBUcmFuc2l0aW9uID0ge1xuICBuYW1lOiAndHJhbnNpdGlv
bicsXG4gIHByb3BzOiB0cmFuc2l0aW9uUHJvcHMsXG4gIGFic3RyYWN0OiB0cnVlLFxuXG4gIHJl
bmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAg
ICB2YXIgY2hpbGRyZW4gPSB0aGlzLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbjtcbiAgICBpZiAo
IWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRl
eHQgbm9kZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxuICAgIGNoaWxkcmVuID0gY2hpbGRyZW4u
ZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRhZyB8fCBpc0FzeW5jUGxhY2Vob2xkZXIo
Yyk7IH0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY2hpbGRyZW4u
bGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB3YXJuIG11bHRpcGxlIGVs
ZW1lbnRzXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYg
Y2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgd2FybihcbiAgICAgICAgJzx0cmFuc2l0aW9u
PiBjYW4gb25seSBiZSB1c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQuIFVzZSAnICtcbiAgICAgICAg
Jzx0cmFuc2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMuJyxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4g
ICAgICApO1xuICAgIH1cblxuICAgIHZhciBtb2RlID0gdGhpcy5tb2RlO1xuXG4gICAgLy8gd2Fy
biBpbnZhbGlkIG1vZGVcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyAmJlxuICAgICAgbW9kZSAmJiBtb2RlICE9PSAnaW4tb3V0JyAmJiBtb2RlICE9PSAnb3V0
LWluJ1xuICAgICkge1xuICAgICAgd2FybihcbiAgICAgICAgJ2ludmFsaWQgPHRyYW5zaXRpb24+
IG1vZGU6ICcgKyBtb2RlLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxu
XG4gICAgdmFyIHJhd0NoaWxkID0gY2hpbGRyZW5bMF07XG5cbiAgICAvLyBpZiB0aGlzIGlzIGEg
Y29tcG9uZW50IHJvb3Qgbm9kZSBhbmQgdGhlIGNvbXBvbmVudCdzXG4gICAgLy8gcGFyZW50IGNv
bnRhaW5lciBub2RlIGFsc28gaGFzIHRyYW5zaXRpb24sIHNraXAuXG4gICAgaWYgKGhhc1BhcmVu
dFRyYW5zaXRpb24odGhpcy4kdm5vZGUpKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9
XG5cbiAgICAvLyBhcHBseSB0cmFuc2l0aW9uIGRhdGEgdG8gY2hpbGRcbiAgICAvLyB1c2UgZ2V0
UmVhbENoaWxkKCkgdG8gaWdub3JlIGFic3RyYWN0IGNvbXBvbmVudHMgZS5nLiBrZWVwLWFsaXZl
XG4gICAgdmFyIGNoaWxkID0gZ2V0UmVhbENoaWxkKHJhd0NoaWxkKTtcbiAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRc
biAgICB9XG5cbiAgICBpZiAodGhpcy5fbGVhdmluZykge1xuICAgICAgcmV0dXJuIHBsYWNlaG9s
ZGVyKGgsIHJhd0NoaWxkKVxuICAgIH1cblxuICAgIC8vIGVuc3VyZSBhIGtleSB0aGF0IGlzIHVu
aXF1ZSB0byB0aGUgdm5vZGUgdHlwZSBhbmQgdG8gdGhpcyB0cmFuc2l0aW9uXG4gICAgLy8gY29t
cG9uZW50IGluc3RhbmNlLiBUaGlzIGtleSB3aWxsIGJlIHVzZWQgdG8gcmVtb3ZlIHBlbmRpbmcg
bGVhdmluZyBub2Rlc1xuICAgIC8vIGR1cmluZyBlbnRlcmluZy5cbiAgICB2YXIgaWQgPSBcIl9f
dHJhbnNpdGlvbi1cIiArICh0aGlzLl91aWQpICsgXCItXCI7XG4gICAgY2hpbGQua2V5ID0gY2hp
bGQua2V5ID09IG51bGxcbiAgICAgID8gY2hpbGQuaXNDb21tZW50XG4gICAgICAgID8gaWQgKyAn
Y29tbWVudCdcbiAgICAgICAgOiBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShj
aGlsZC5rZXkpXG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAw
ID8gY2hpbGQua2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4g
ICAgdmFyIGRhdGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlv
biA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0
aGlzLl92bm9kZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQp
O1xuXG4gICAgLy8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1v
ZHVsZSBjYW4gaGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAo
Y2hpbGQuZGF0YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0
aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfSkpIHtcbiAgICAgIGNoaWxkLmRh
dGEuc2hvdyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb2xkQ2hpbGQgJiZcbiAg
ICAgIG9sZENoaWxkLmRhdGEgJiZcbiAgICAgICFpc1NhbWVDaGlsZChjaGlsZCwgb2xkQ2hpbGQp
ICYmXG4gICAgICAhaXNBc3luY1BsYWNlaG9sZGVyKG9sZENoaWxkKVxuICAgICkge1xuICAgICAg
Ly8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25lXG4gICAg
ICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIgb2xkRGF0
YSA9IG9sZENoaWxkICYmIChvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBleHRlbmQoe30sIGRh
dGEpKTtcbiAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmIChtb2RlID09
PSAnb3V0LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVl
dWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmluZyA9IHRy
dWU7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywgZnVuY3Rp
b24gKCkge1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRo
aXMkMS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwbGFjZWhv
bGRlcihoLCByYXdDaGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcpIHtc
biAgICAgICAgaWYgKGlzQXN5bmNQbGFjZWhvbGRlcihjaGlsZCkpIHtcbiAgICAgICAgICByZXR1
cm4gb2xkUmF3Q2hpbGRcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVsYXllZExlYXZlO1xuICAg
ICAgICB2YXIgcGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKCkgeyBkZWxheWVkTGVhdmUoKTsgfTtc
biAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2FmdGVyRW50ZXInLCBwZXJmb3JtTGVhdmUp
O1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnZW50ZXJDYW5jZWxsZWQnLCBwZXJmb3Jt
TGVhdmUpO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnZGVsYXlMZWF2ZScsIGZ1
bmN0aW9uIChsZWF2ZSkgeyBkZWxheWVkTGVhdmUgPSBsZWF2ZTsgfSk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgcmV0dXJuIHJhd0NoaWxkXG4gIH1cbn07XG5cbi8qICAqL1xuXG4vLyBQcm92aWRl
cyB0cmFuc2l0aW9uIHN1cHBvcnQgZm9yIGxpc3QgaXRlbXMuXG4vLyBzdXBwb3J0cyBtb3ZlIHRy
YW5zaXRpb25zIHVzaW5nIHRoZSBGTElQIHRlY2huaXF1ZS5cblxuLy8gQmVjYXVzZSB0aGUgdmRv
bSdzIGNoaWxkcmVuIHVwZGF0ZSBhbGdvcml0aG0gaXMgXCJ1bnN0YWJsZVwiIC0gaS5lLlxuLy8g
aXQgZG9lc24ndCBndWFyYW50ZWUgdGhlIHJlbGF0aXZlIHBvc2l0aW9uaW5nIG9mIHJlbW92ZWQg
ZWxlbWVudHMsXG4vLyB3ZSBmb3JjZSB0cmFuc2l0aW9uLWdyb3VwIHRvIHVwZGF0ZSBpdHMgY2hp
bGRyZW4gaW50byB0d28gcGFzc2VzOlxuLy8gaW4gdGhlIGZpcnN0IHBhc3MsIHdlIHJlbW92ZSBh
bGwgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQsXG4vLyB0cmlnZ2VyaW5nIHRoZWlyIGxl
YXZpbmcgdHJhbnNpdGlvbjsgaW4gdGhlIHNlY29uZCBwYXNzLCB3ZSBpbnNlcnQvbW92ZVxuLy8g
aW50byB0aGUgZmluYWwgZGVzaXJlZCBzdGF0ZS4gVGhpcyB3YXkgaW4gdGhlIHNlY29uZCBwYXNz
IHJlbW92ZWRcbi8vIG5vZGVzIHdpbGwgcmVtYWluIHdoZXJlIHRoZXkgc2hvdWxkIGJlLlxuXG52
YXIgcHJvcHMgPSBleHRlbmQoe1xuICB0YWc6IFN0cmluZyxcbiAgbW92ZUNsYXNzOiBTdHJpbmdc
bn0sIHRyYW5zaXRpb25Qcm9wcyk7XG5cbmRlbGV0ZSBwcm9wcy5tb2RlO1xuXG52YXIgVHJhbnNp
dGlvbkdyb3VwID0ge1xuICBwcm9wczogcHJvcHMsXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5k
ZXIgKGgpIHtcbiAgICB2YXIgdGFnID0gdGhpcy50YWcgfHwgdGhpcy4kdm5vZGUuZGF0YS50YWcg
fHwgJ3NwYW4nO1xuICAgIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBw
cmV2Q2hpbGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgdmFy
IHJhd0NoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXTtcbiAgICB2YXIgY2hpbGRy
ZW4gPSB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdmFyIHRyYW5zaXRpb25EYXRhID0gZXh0cmFj
dFRyYW5zaXRpb25EYXRhKHRoaXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdDaGls
ZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSByYXdDaGlsZHJlbltpXTtcbiAgICAg
IGlmIChjLnRhZykge1xuICAgICAgICBpZiAoYy5rZXkgIT0gbnVsbCAmJiBTdHJpbmcoYy5rZXkp
LmluZGV4T2YoJ19fdmxpc3QnKSAhPT0gMCkge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goYyk7
XG4gICAgICAgICAgbWFwW2Mua2V5XSA9IGNcbiAgICAgICAgICA7KGMuZGF0YSB8fCAoYy5kYXRh
ID0ge30pKS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHZhciBv
cHRzID0gYy5jb21wb25lbnRPcHRpb25zO1xuICAgICAgICAgIHZhciBuYW1lID0gb3B0cyA/IChv
cHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnIHx8ICcnKSA6IGMudGFnO1xuICAgICAg
ICAgIHdhcm4oKFwiPHRyYW5zaXRpb24tZ3JvdXA+IGNoaWxkcmVuIG11c3QgYmUga2V5ZWQ6IDxc
IiArIG5hbWUgKyBcIj5cIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYg
KHByZXZDaGlsZHJlbikge1xuICAgICAgdmFyIGtlcHQgPSBbXTtcbiAgICAgIHZhciByZW1vdmVk
ID0gW107XG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBwcmV2Q2hpbGRyZW4ubGVuZ3Ro
OyBpJDErKykge1xuICAgICAgICB2YXIgYyQxID0gcHJldkNoaWxkcmVuW2kkMV07XG4gICAgICAg
IGMkMS5kYXRhLnRyYW5zaXRpb24gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgYyQxLmRhdGEu
cG9zID0gYyQxLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKG1hcFtj
JDEua2V5XSkge1xuICAgICAgICAgIGtlcHQucHVzaChjJDEpO1xuICAgICAgICB9IGVsc2Uge1xu
ICAgICAgICAgIHJlbW92ZWQucHVzaChjJDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0
aGlzLmtlcHQgPSBoKHRhZywgbnVsbCwga2VwdCk7XG4gICAgICB0aGlzLnJlbW92ZWQgPSByZW1v
dmVkO1xuICAgIH1cblxuICAgIHJldHVybiBoKHRhZywgbnVsbCwgY2hpbGRyZW4pXG4gIH0sXG5c
biAgYmVmb3JlVXBkYXRlOiBmdW5jdGlvbiBiZWZvcmVVcGRhdGUgKCkge1xuICAgIC8vIGZvcmNl
IHJlbW92aW5nIHBhc3NcbiAgICB0aGlzLl9fcGF0Y2hfXyhcbiAgICAgIHRoaXMuX3Zub2RlLFxu
ICAgICAgdGhpcy5rZXB0LFxuICAgICAgZmFsc2UsIC8vIGh5ZHJhdGluZ1xuICAgICAgdHJ1ZSAv
LyByZW1vdmVPbmx5ICghaW1wb3J0YW50LCBhdm9pZHMgdW5uZWNlc3NhcnkgbW92ZXMpXG4gICAg
KTtcbiAgICB0aGlzLl92bm9kZSA9IHRoaXMua2VwdDtcbiAgfSxcblxuICB1cGRhdGVkOiBmdW5j
dGlvbiB1cGRhdGVkICgpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbjtc
biAgICB2YXIgbW92ZUNsYXNzID0gdGhpcy5tb3ZlQ2xhc3MgfHwgKCh0aGlzLm5hbWUgfHwgJ3Yn
KSArICctbW92ZScpO1xuICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoIHx8ICF0aGlzLmhhc01vdmUo
Y2hpbGRyZW5bMF0uZWxtLCBtb3ZlQ2xhc3MpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAg
ICAvLyB3ZSBkaXZpZGUgdGhlIHdvcmsgaW50byB0aHJlZSBsb29wcyB0byBhdm9pZCBtaXhpbmcg
RE9NIHJlYWRzIGFuZCB3cml0ZXNcbiAgICAvLyBpbiBlYWNoIGl0ZXJhdGlvbiAtIHdoaWNoIGhl
bHBzIHByZXZlbnQgbGF5b3V0IHRocmFzaGluZy5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNhbGxQ
ZW5kaW5nQ2JzKTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKHJlY29yZFBvc2l0aW9uKTtcbiAgICBj
aGlsZHJlbi5mb3JFYWNoKGFwcGx5VHJhbnNsYXRpb24pO1xuXG4gICAgLy8gZm9yY2UgcmVmbG93
IHRvIHB1dCBldmVyeXRoaW5nIGluIHBvc2l0aW9uXG4gICAgdmFyIGJvZHkgPSBkb2N1bWVudC5i
b2R5O1xuICAgIHZhciBmID0gYm9keS5vZmZzZXRIZWlnaHQ7IC8vIGVzbGludC1kaXNhYmxlLWxp
bmVcblxuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgIGlmIChjLmRh
dGEubW92ZWQpIHtcbiAgICAgICAgdmFyIGVsID0gYy5lbG07XG4gICAgICAgIHZhciBzID0gZWwu
c3R5bGU7XG4gICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAg
ICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IHMudHJhbnNpdGlvbkR1cmF0aW9u
ID0gJyc7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBl
bC5fbW92ZUNiID0gZnVuY3Rpb24gY2IgKGUpIHtcbiAgICAgICAgICBpZiAoIWUgfHwgL3RyYW5z
Zm9ybSQvLnRlc3QoZS5wcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVu
dExpc3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgY2IpO1xuICAgICAgICAgICAgZWwuX21vdmVD
YiA9IG51bGw7XG4gICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFz
cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxu
ICBtZXRob2RzOiB7XG4gICAgaGFzTW92ZTogZnVuY3Rpb24gaGFzTW92ZSAoZWwsIG1vdmVDbGFz
cykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIWhhc1RyYW5z
aXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICh0aGlzLl9oYXNNb3ZlKSB7XG4gICAgICAgIHJldHVy
biB0aGlzLl9oYXNNb3ZlXG4gICAgICB9XG4gICAgICAvLyBEZXRlY3Qgd2hldGhlciBhbiBlbGVt
ZW50IHdpdGggdGhlIG1vdmUgY2xhc3MgYXBwbGllZCBoYXNcbiAgICAgIC8vIENTUyB0cmFuc2l0
aW9ucy4gU2luY2UgdGhlIGVsZW1lbnQgbWF5IGJlIGluc2lkZSBhbiBlbnRlcmluZ1xuICAgICAg
Ly8gdHJhbnNpdGlvbiBhdCB0aGlzIHZlcnkgbW9tZW50LCB3ZSBtYWtlIGEgY2xvbmUgb2YgaXQg
YW5kIHJlbW92ZVxuICAgICAgLy8gYWxsIG90aGVyIHRyYW5zaXRpb24gY2xhc3NlcyBhcHBsaWVk
IHRvIGVuc3VyZSBvbmx5IHRoZSBtb3ZlIGNsYXNzXG4gICAgICAvLyBpcyBhcHBsaWVkLlxuICAg
ICAgdmFyIGNsb25lID0gZWwuY2xvbmVOb2RlKCk7XG4gICAgICBpZiAoZWwuX3RyYW5zaXRpb25D
bGFzc2VzKSB7XG4gICAgICAgIGVsLl90cmFuc2l0aW9uQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9u
IChjbHMpIHsgcmVtb3ZlQ2xhc3MoY2xvbmUsIGNscyk7IH0pO1xuICAgICAgfVxuICAgICAgYWRk
Q2xhc3MoY2xvbmUsIG1vdmVDbGFzcyk7XG4gICAgICBjbG9uZS5zdHlsZS5kaXNwbGF5ID0gJ25v
bmUnO1xuICAgICAgdGhpcy4kZWwuYXBwZW5kQ2hpbGQoY2xvbmUpO1xuICAgICAgdmFyIGluZm8g
PSBnZXRUcmFuc2l0aW9uSW5mbyhjbG9uZSk7XG4gICAgICB0aGlzLiRlbC5yZW1vdmVDaGlsZChj
bG9uZSk7XG4gICAgICByZXR1cm4gKHRoaXMuX2hhc01vdmUgPSBpbmZvLmhhc1RyYW5zZm9ybSlc
biAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNhbGxQZW5kaW5nQ2JzIChjKSB7XG4gIC8qIGlz
dGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX21vdmVDYikge1xuICAgIGMuZWxtLl9t
b3ZlQ2IoKTtcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGMuZWxtLl9l
bnRlckNiKSB7XG4gICAgYy5lbG0uX2VudGVyQ2IoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWNv
cmRQb3NpdGlvbiAoYykge1xuICBjLmRhdGEubmV3UG9zID0gYy5lbG0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5VHJhbnNsYXRpb24gKGMpIHtcbiAgdmFyIG9s
ZFBvcyA9IGMuZGF0YS5wb3M7XG4gIHZhciBuZXdQb3MgPSBjLmRhdGEubmV3UG9zO1xuICB2YXIg
ZHggPSBvbGRQb3MubGVmdCAtIG5ld1Bvcy5sZWZ0O1xuICB2YXIgZHkgPSBvbGRQb3MudG9wIC0g
bmV3UG9zLnRvcDtcbiAgaWYgKGR4IHx8IGR5KSB7XG4gICAgYy5kYXRhLm1vdmVkID0gdHJ1ZTtc
biAgICB2YXIgcyA9IGMuZWxtLnN0eWxlO1xuICAgIHMudHJhbnNmb3JtID0gcy5XZWJraXRUcmFu
c2Zvcm0gPSBcInRyYW5zbGF0ZShcIiArIGR4ICsgXCJweCxcIiArIGR5ICsgXCJweClcIjtcbiAg
ICBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XG4gIH1cbn1cblxudmFyIHBsYXRmb3JtQ29t
cG9uZW50cyA9IHtcbiAgVHJhbnNpdGlvbjogVHJhbnNpdGlvbixcbiAgVHJhbnNpdGlvbkdyb3Vw
OiBUcmFuc2l0aW9uR3JvdXBcbn07XG5cbi8qICAqL1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHNw
ZWNpZmljIHV0aWxzXG5WdWUkMy5jb25maWcubXVzdFVzZVByb3AgPSBtdXN0VXNlUHJvcDtcblZ1
ZSQzLmNvbmZpZy5pc1Jlc2VydmVkVGFnID0gaXNSZXNlcnZlZFRhZztcblZ1ZSQzLmNvbmZpZy5p
c1Jlc2VydmVkQXR0ciA9IGlzUmVzZXJ2ZWRBdHRyO1xuVnVlJDMuY29uZmlnLmdldFRhZ05hbWVz
cGFjZSA9IGdldFRhZ05hbWVzcGFjZTtcblZ1ZSQzLmNvbmZpZy5pc1Vua25vd25FbGVtZW50ID0g
aXNVbmtub3duRWxlbWVudDtcblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBydW50aW1lIGRpcmVjdGl2
ZXMgJiBjb21wb25lbnRzXG5leHRlbmQoVnVlJDMub3B0aW9ucy5kaXJlY3RpdmVzLCBwbGF0Zm9y
bURpcmVjdGl2ZXMpO1xuZXh0ZW5kKFZ1ZSQzLm9wdGlvbnMuY29tcG9uZW50cywgcGxhdGZvcm1D
b21wb25lbnRzKTtcblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBwYXRjaCBmdW5jdGlvblxuVnVlJDMu
cHJvdG90eXBlLl9fcGF0Y2hfXyA9IGluQnJvd3NlciA/IHBhdGNoIDogbm9vcDtcblxuLy8gcHVi
bGljIG1vdW50IG1ldGhvZFxuVnVlJDMucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uIChcbiAg
ZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGVsID0gZWwgJiYgaW5Ccm93c2VyID8gcXVlcnkoZWwp
IDogdW5kZWZpbmVkO1xuICByZXR1cm4gbW91bnRDb21wb25lbnQodGhpcywgZWwsIGh5ZHJhdGlu
Zylcbn07XG5cbi8vIGRldnRvb2xzIGdsb2JhbCBob29rXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqL1xuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gIGlmIChjb25maWcuZGV2dG9vbHMpIHtc
biAgICBpZiAoZGV2dG9vbHMpIHtcbiAgICAgIGRldnRvb2xzLmVtaXQoJ2luaXQnLCBWdWUkMyk7
XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYm
IGlzQ2hyb21lKSB7XG4gICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cn
XShcbiAgICAgICAgJ0Rvd25sb2FkIHRoZSBWdWUgRGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBhIGJl
dHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOlxcbicgK1xuICAgICAgICAnaHR0cHM6Ly9naXRo
dWIuY29tL3Z1ZWpzL3Z1ZS1kZXZ0b29scydcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgY29uZmlnLnByb2R1
Y3Rpb25UaXAgIT09IGZhbHNlICYmXG4gICAgaW5Ccm93c2VyICYmIHR5cGVvZiBjb25zb2xlICE9
PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6
ICdsb2cnXShcbiAgICAgIFwiWW91IGFyZSBydW5uaW5nIFZ1ZSBpbiBkZXZlbG9wbWVudCBtb2Rl
LlxcblwiICtcbiAgICAgIFwiTWFrZSBzdXJlIHRvIHR1cm4gb24gcHJvZHVjdGlvbiBtb2RlIHdo
ZW4gZGVwbG95aW5nIGZvciBwcm9kdWN0aW9uLlxcblwiICtcbiAgICAgIFwiU2VlIG1vcmUgdGlw
cyBhdCBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9kZXBsb3ltZW50Lmh0bWxcIlxuICAgICk7XG4g
IH1cbn0sIDApO1xuXG4vKiAgKi9cblxuLy8gY2hlY2sgd2hldGhlciBjdXJyZW50IGJyb3dzZXIg
ZW5jb2RlcyBhIGNoYXIgaW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXNcbmZ1bmN0aW9uIHNob3VsZERl
Y29kZSAoY29udGVudCwgZW5jb2RlZCkge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSBcIjxkaXYgYT1cXFwiXCIgKyBjb250ZW50
ICsgXCJcXFwiLz5cIjtcbiAgcmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZihlbmNvZGVkKSA+
IDBcbn1cblxuLy8gIzM2NjNcbi8vIElFIGVuY29kZXMgbmV3bGluZXMgaW5zaWRlIGF0dHJpYnV0
ZSB2YWx1ZXMgd2hpbGUgb3RoZXIgYnJvd3NlcnMgZG9uJ3RcbnZhciBzaG91bGREZWNvZGVOZXds
aW5lcyA9IGluQnJvd3NlciA/IHNob3VsZERlY29kZSgnXFxuJywgJyYjMTA7JykgOiBmYWxzZTtc
blxuLyogICovXG5cbnZhciBkZWZhdWx0VGFnUkUgPSAvXFx7XFx7KCg/Oi58XFxuKSs/KVxcfVxc
fS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xu
XG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIg
b3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4g
IHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQm
Jyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3Nl
LCAnZycpXG59KTtcblxuZnVuY3Rpb24gcGFyc2VUZXh0IChcbiAgdGV4dCxcbiAgZGVsaW1pdGVy
c1xuKSB7XG4gIHZhciB0YWdSRSA9IGRlbGltaXRlcnMgPyBidWlsZFJlZ2V4KGRlbGltaXRlcnMp
IDogZGVmYXVsdFRhZ1JFO1xuICBpZiAoIXRhZ1JFLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm5c
biAgfVxuICB2YXIgdG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5k
ZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4O1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhl
Yyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0
b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgdG9rZW5zLnB1c2goSlNP
Ti5zdHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSkpO1xuICAgIH1cbiAgICAv
LyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7
XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIGxhc3RJbmRl
eCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0
Lmxlbmd0aCkge1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFz
dEluZGV4KSkpO1xuICB9XG4gIHJldHVybiB0b2tlbnMuam9pbignKycpXG59XG5cbi8qICAqL1xu
XG5mdW5jdGlvbiB0cmFuc2Zvcm1Ob2RlIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9w
dGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY0NsYXNzID0gZ2V0QW5kUmVtb3Zl
QXR0cihlbCwgJ2NsYXNzJyk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIHN0YXRpY0NsYXNzKSB7XG4gICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQo
c3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKGV4cHJlc3Npb24pIHtc
biAgICAgIHdhcm4oXG4gICAgICAgIFwiY2xhc3M9XFxcIlwiICsgc3RhdGljQ2xhc3MgKyBcIlxc
XCI6IFwiICtcbiAgICAgICAgJ0ludGVycG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJl
ZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhh
bmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNs
YXNzPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6Y2xhc3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtc
biAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBK
U09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdl
dEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAo
Y2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChl
bC5zdGF0aWNDbGFzcykge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0
aWNDbGFzcykgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0
YSArPSBcImNsYXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1
cm4gZGF0YVxufVxuXG52YXIga2xhc3MkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFz
cyddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRh
XG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChlbCwgb3B0aW9ucykg
e1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY1N0
eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChzdGF0aWNTdHlsZSkg
e1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgZXhwcmVzc2lvbiA9IHBhcnNlVGV4
dChzdGF0aWNTdHlsZSwgb3B0aW9ucy5kZWxpbWl0ZXJzKTtcbiAgICAgIGlmIChleHByZXNzaW9u
KSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJzdHlsZT1cXFwiXCIgKyBzdGF0aWNTdHls
ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1
dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBj
b2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAgICdpbnN0
ZWFkIG9mIDxkaXYgc3R5bGU9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpzdHlsZT1cInZhbFwi
Pi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsLnN0YXRpY1N0eWxlID0gSlNP
Ti5zdHJpbmdpZnkocGFyc2VTdHlsZVRleHQoc3RhdGljU3R5bGUpKTtcbiAgfVxuXG4gIHZhciBz
dHlsZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3N0eWxlJywgZmFsc2UgLyogZ2V0U3Rh
dGljICovKTtcbiAgaWYgKHN0eWxlQmluZGluZykge1xuICAgIGVsLnN0eWxlQmluZGluZyA9IHN0
eWxlQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDEgKGVsKSB7XG4gIHZhciBk
YXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNTdHlsZSkge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNT
dHlsZTpcIiArIChlbC5zdGF0aWNTdHlsZSkgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuc3R5bGVC
aW5kaW5nKSB7XG4gICAgZGF0YSArPSBcInN0eWxlOihcIiArIChlbC5zdHlsZUJpbmRpbmcpICsg
XCIpLFwiO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbnZhciBzdHlsZSQxID0ge1xuICBzdGF0
aWNLZXlzOiBbJ3N0YXRpY1N0eWxlJ10sXG4gIHRyYW5zZm9ybU5vZGU6IHRyYW5zZm9ybU5vZGUk
MSxcbiAgZ2VuRGF0YTogZ2VuRGF0YSQxXG59O1xuXG52YXIgbW9kdWxlcyQxID0gW1xuICBrbGFz
cyQxLFxuICBzdHlsZSQxXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdGV4dCAoZWwsIGRpcikg
e1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ3RleHRDb250ZW50JywgKFwi
X3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0
aW9uIGh0bWwgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWws
ICdpbm5lckhUTUwnLCAoXCJfcyhcIiArIChkaXIudmFsdWUpICsgXCIpXCIpKTtcbiAgfVxufVxu
XG52YXIgZGlyZWN0aXZlcyQxID0ge1xuICBtb2RlbDogbW9kZWwsXG4gIHRleHQ6IHRleHQsXG4g
IGh0bWw6IGh0bWxcbn07XG5cbi8qICAqL1xuXG52YXIgaXNVbmFyeVRhZyA9IG1ha2VNYXAoXG4g
ICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdl
biwnICtcbiAgJ2xpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJ1xuKTtcblxuLy8gRWxl
bWVudHMgdGhhdCB5b3UgY2FuLCBpbnRlbnRpb25hbGx5LCBsZWF2ZSBvcGVuXG4vLyAoYW5kIHdo
aWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG52YXIgY2FuQmVMZWZ0T3BlblRhZyA9IG1ha2VNYXAoXG4g
ICdjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNl
J1xuKTtcblxuLy8gSFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9pbmRpY2VzLmh0bWwjZWxlbWVudHMtM1xuLy8gUGhyYXNpbmcgQ29udGVudCBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50
XG52YXIgaXNOb25QaHJhc2luZ1RhZyA9IG1ha2VNYXAoXG4gICdhZGRyZXNzLGFydGljbGUsYXNp
ZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsJyArXG4gICdk
ZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVy
LGZvcm0sJyArXG4gICdoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRt
bCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSwnICtcbiAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxy
cCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcbiAg
J3RpdGxlLHRyLHRyYWNrJ1xuKTtcblxuLyogICovXG5cbnZhciBiYXNlT3B0aW9ucyA9IHtcbiAg
ZXhwZWN0SFRNTDogdHJ1ZSxcbiAgbW9kdWxlczogbW9kdWxlcyQxLFxuICBkaXJlY3RpdmVzOiBk
aXJlY3RpdmVzJDEsXG4gIGlzUHJlVGFnOiBpc1ByZVRhZyxcbiAgaXNVbmFyeVRhZzogaXNVbmFy
eVRhZyxcbiAgbXVzdFVzZVByb3A6IG11c3RVc2VQcm9wLFxuICBjYW5CZUxlZnRPcGVuVGFnOiBj
YW5CZUxlZnRPcGVuVGFnLFxuICBpc1Jlc2VydmVkVGFnOiBpc1Jlc2VydmVkVGFnLFxuICBnZXRU
YWdOYW1lc3BhY2U6IGdldFRhZ05hbWVzcGFjZSxcbiAgc3RhdGljS2V5czogZ2VuU3RhdGljS2V5
cyhtb2R1bGVzJDEpXG59O1xuXG4vKiAgKi9cblxudmFyIGRlY29kZXI7XG5cbnZhciBoZSA9IHtc
biAgZGVjb2RlOiBmdW5jdGlvbiBkZWNvZGUgKGh0bWwpIHtcbiAgICBkZWNvZGVyID0gZGVjb2Rl
ciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkZWNvZGVyLmlubmVySFRN
TCA9IGh0bWw7XG4gICAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnRcbiAgfVxufTtcblxuLyoq
XG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5k
b3IgY29kZS5cbiAqL1xuXG4vKiFcbiAqIEhUTUwgUGFyc2VyIEJ5IEpvaG4gUmVzaWcgKGVqb2hu
Lm9yZylcbiAqIE1vZGlmaWVkIGJ5IEp1cml5IFwia2FuZ2F4XCIgWmF5dHNldlxuICogT3JpZ2lu
YWwgY29kZSBieSBFcmlrIEFydmlkc3NvbiwgTW96aWxsYSBQdWJsaWMgTGljZW5zZVxuICogaHR0
cDovL2VyaWsuZWFlLm5ldC9zaW1wbGVodG1scGFyc2VyL3NpbXBsZWh0bWxwYXJzZXIuanNcbiAq
L1xuXG4vLyBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0
ZXNcbnZhciBzaW5nbGVBdHRySWRlbnRpZmllciA9IC8oW15cXHNcIic8Pi89XSspLztcbnZhciBz
aW5nbGVBdHRyQXNzaWduID0gLyg/Oj0pLztcbnZhciBzaW5nbGVBdHRyVmFsdWVzID0gW1xuICAv
LyBhdHRyIHZhbHVlIGRvdWJsZSBxdW90ZXNcbiAgL1wiKFteXCJdKilcIisvLnNvdXJjZSxcbiAg
Ly8gYXR0ciB2YWx1ZSwgc2luZ2xlIHF1b3Rlc1xuICAvJyhbXiddKiknKy8uc291cmNlLFxuICAv
LyBhdHRyIHZhbHVlLCBubyBxdW90ZXNcbiAgLyhbXlxcc1wiJz08PmBdKykvLnNvdXJjZVxuXTtc
bnZhciBhdHRyaWJ1dGUgPSBuZXcgUmVnRXhwKFxuICAnXlxcXFxzKicgKyBzaW5nbGVBdHRySWRl
bnRpZmllci5zb3VyY2UgK1xuICAnKD86XFxcXHMqKCcgKyBzaW5nbGVBdHRyQXNzaWduLnNvdXJj
ZSArICcpJyArXG4gICdcXFxccyooPzonICsgc2luZ2xlQXR0clZhbHVlcy5qb2luKCd8JykgKyAn
KSk/J1xuKTtcblxuLy8gY291bGQgdXNlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14
bWwtbmFtZXMtMTk5OTAxMTQvI05ULVFOYW1lXG4vLyBidXQgZm9yIFZ1ZSB0ZW1wbGF0ZXMgd2Ug
Y2FuIGVuZm9yY2UgYSBzaW1wbGUgY2hhcnNldFxudmFyIG5jbmFtZSA9ICdbYS16QS1aX11bXFxc
XHdcXFxcLVxcXFwuXSonO1xudmFyIHFuYW1lQ2FwdHVyZSA9ICcoKD86JyArIG5jbmFtZSArICdc
XFxcOik/JyArIG5jbmFtZSArICcpJztcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKCde
PCcgKyBxbmFtZUNhcHR1cmUpO1xudmFyIHN0YXJ0VGFnQ2xvc2UgPSAvXlxccyooXFwvPyk+Lztc
bnZhciBlbmRUYWcgPSBuZXcgUmVnRXhwKCdePFxcXFwvJyArIHFuYW1lQ2FwdHVyZSArICdbXj5d
Kj4nKTtcbnZhciBkb2N0eXBlID0gL148IURPQ1RZUEUgW14+XSs+L2k7XG52YXIgY29tbWVudCA9
IC9ePCEtLS87XG52YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbnZhciBJU19S
RUdFWF9DQVBUVVJJTkdfQlJPS0VOID0gZmFsc2U7XG4neCcucmVwbGFjZSgveCguKT8vZywgZnVu
Y3Rpb24gKG0sIGcpIHtcbiAgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGcgPT09ICcnO1xu
fSk7XG5cbi8vIFNwZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlz
UGxhaW5UZXh0RWxlbWVudCA9IG1ha2VNYXAoJ3NjcmlwdCxzdHlsZSx0ZXh0YXJlYScsIHRydWUp
O1xudmFyIHJlQ2FjaGUgPSB7fTtcblxudmFyIGRlY29kaW5nTWFwID0ge1xuICAnJmx0Oyc6ICc8
JyxcbiAgJyZndDsnOiAnPicsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJmFtcDsnOiAnJicsXG4g
ICcmIzEwOyc6ICdcXG4nXG59O1xudmFyIGVuY29kZWRBdHRyID0gLyYoPzpsdHxndHxxdW90fGFt
cCk7L2c7XG52YXIgZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgPSAvJig/Omx0fGd0fHF1b3R8YW1w
fCMxMCk7L2c7XG5cbi8vICM1OTkyXG52YXIgaXNJZ25vcmVOZXdsaW5lVGFnID0gbWFrZU1hcCgn
cHJlLHRleHRhcmVhJywgdHJ1ZSk7XG52YXIgc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lID0gZnVu
Y3Rpb24gKHRhZywgaHRtbCkgeyByZXR1cm4gdGFnICYmIGlzSWdub3JlTmV3bGluZVRhZyh0YWcp
ICYmIGh0bWxbMF0gPT09ICdcXG4nOyB9O1xuXG5mdW5jdGlvbiBkZWNvZGVBdHRyICh2YWx1ZSwg
c2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcbiAgdmFyIHJlID0gc2hvdWxkRGVjb2RlTmV3bGluZXMg
PyBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA6IGVuY29kZWRBdHRyO1xuICByZXR1cm4gdmFsdWUu
cmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoKSB7IHJldHVybiBkZWNvZGluZ01hcFttYXRjaF07
IH0pXG59XG5cbmZ1bmN0aW9uIHBhcnNlSFRNTCAoaHRtbCwgb3B0aW9ucykge1xuICB2YXIgc3Rh
Y2sgPSBbXTtcbiAgdmFyIGV4cGVjdEhUTUwgPSBvcHRpb25zLmV4cGVjdEhUTUw7XG4gIHZhciBp
c1VuYXJ5VGFnJCQxID0gb3B0aW9ucy5pc1VuYXJ5VGFnIHx8IG5vO1xuICB2YXIgY2FuQmVMZWZ0
T3BlblRhZyQkMSA9IG9wdGlvbnMuY2FuQmVMZWZ0T3BlblRhZyB8fCBubztcbiAgdmFyIGluZGV4
ID0gMDtcbiAgdmFyIGxhc3QsIGxhc3RUYWc7XG4gIHdoaWxlIChodG1sKSB7XG4gICAgbGFzdCA9
IGh0bWw7XG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiBhIHBsYWludGV4dCBjb250ZW50
IGVsZW1lbnQgbGlrZSBzY3JpcHQvc3R5bGVcbiAgICBpZiAoIWxhc3RUYWcgfHwgIWlzUGxhaW5U
ZXh0RWxlbWVudChsYXN0VGFnKSkge1xuICAgICAgdmFyIHRleHRFbmQgPSBodG1sLmluZGV4T2Yo
JzwnKTtcbiAgICAgIGlmICh0ZXh0RW5kID09PSAwKSB7XG4gICAgICAgIC8vIENvbW1lbnQ6XG4g
ICAgICAgIGlmIChjb21tZW50LnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICB2YXIgY29tbWVudEVu
ZCA9IGh0bWwuaW5kZXhPZignLS0+Jyk7XG5cbiAgICAgICAgICBpZiAoY29tbWVudEVuZCA+PSAw
KSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaG91bGRLZWVwQ29tbWVudCkge1xuICAgICAg
ICAgICAgICBvcHRpb25zLmNvbW1lbnQoaHRtbC5zdWJzdHJpbmcoNCwgY29tbWVudEVuZCkpO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWR2YW5jZShjb21tZW50RW5kICsgMyk7XG4gICAg
ICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uZGl0aW9uYWxfY29tbWVudCNEb3dubGV2ZWwt
cmV2ZWFsZWRfY29uZGl0aW9uYWxfY29tbWVudFxuICAgICAgICBpZiAoY29uZGl0aW9uYWxDb21t
ZW50LnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICB2YXIgY29uZGl0aW9uYWxFbmQgPSBodG1sLmlu
ZGV4T2YoJ10+Jyk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uYWxFbmQgPj0gMCkge1xuICAg
ICAgICAgICAgYWR2YW5jZShjb25kaXRpb25hbEVuZCArIDIpO1xuICAgICAgICAgICAgY29udGlu
dWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb2N0eXBlOlxuICAgICAg
ICB2YXIgZG9jdHlwZU1hdGNoID0gaHRtbC5tYXRjaChkb2N0eXBlKTtcbiAgICAgICAgaWYgKGRv
Y3R5cGVNYXRjaCkge1xuICAgICAgICAgIGFkdmFuY2UoZG9jdHlwZU1hdGNoWzBdLmxlbmd0aCk7
XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuZCB0YWc6XG4g
ICAgICAgIHZhciBlbmRUYWdNYXRjaCA9IGh0bWwubWF0Y2goZW5kVGFnKTtcbiAgICAgICAgaWYg
KGVuZFRhZ01hdGNoKSB7XG4gICAgICAgICAgdmFyIGN1ckluZGV4ID0gaW5kZXg7XG4gICAgICAg
ICAgYWR2YW5jZShlbmRUYWdNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIHBhcnNlRW5kVGFn
KGVuZFRhZ01hdGNoWzFdLCBjdXJJbmRleCwgaW5kZXgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4g
ICAgICAgIH1cblxuICAgICAgICAvLyBTdGFydCB0YWc6XG4gICAgICAgIHZhciBzdGFydFRhZ01h
dGNoID0gcGFyc2VTdGFydFRhZygpO1xuICAgICAgICBpZiAoc3RhcnRUYWdNYXRjaCkge1xuICAg
ICAgICAgIGhhbmRsZVN0YXJ0VGFnKHN0YXJ0VGFnTWF0Y2gpO1xuICAgICAgICAgIGlmIChzaG91
bGRJZ25vcmVGaXJzdE5ld2xpbmUobGFzdFRhZywgaHRtbCkpIHtcbiAgICAgICAgICAgIGFkdmFu
Y2UoMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAg
IH1cblxuICAgICAgdmFyIHRleHQgPSAodm9pZCAwKSwgcmVzdCA9ICh2b2lkIDApLCBuZXh0ID0g
KHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVuZCA+PSAwKSB7XG4gICAgICAgIHJlc3QgPSBodG1s
LnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgIWVuZFRhZy50ZXN0
KHJlc3QpICYmXG4gICAgICAgICAgIXN0YXJ0VGFnT3Blbi50ZXN0KHJlc3QpICYmXG4gICAgICAg
ICAgIWNvbW1lbnQudGVzdChyZXN0KSAmJlxuICAgICAgICAgICFjb25kaXRpb25hbENvbW1lbnQu
dGVzdChyZXN0KVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyA8IGluIHBsYWluIHRleHQsIGJl
IGZvcmdpdmluZyBhbmQgdHJlYXQgaXQgYXMgdGV4dFxuICAgICAgICAgIG5leHQgPSByZXN0Lmlu
ZGV4T2YoJzwnLCAxKTtcbiAgICAgICAgICBpZiAobmV4dCA8IDApIHsgYnJlYWsgfVxuICAgICAg
ICAgIHRleHRFbmQgKz0gbmV4dDtcbiAgICAgICAgICByZXN0ID0gaHRtbC5zbGljZSh0ZXh0RW5k
KTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0ID0gaHRtbC5zdWJzdHJpbmcoMCwgdGV4dEVuZCk7
XG4gICAgICAgIGFkdmFuY2UodGV4dEVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0RW5k
IDwgMCkge1xuICAgICAgICB0ZXh0ID0gaHRtbDtcbiAgICAgICAgaHRtbCA9ICcnO1xuICAgICAg
fVxuXG4gICAgICBpZiAob3B0aW9ucy5jaGFycyAmJiB0ZXh0KSB7XG4gICAgICAgIG9wdGlvbnMu
Y2hhcnModGV4dCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlbmRUYWdMZW5n
dGggPSAwO1xuICAgICAgdmFyIHN0YWNrZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG4g
ICAgICB2YXIgcmVTdGFja2VkVGFnID0gcmVDYWNoZVtzdGFja2VkVGFnXSB8fCAocmVDYWNoZVtz
dGFja2VkVGFnXSA9IG5ldyBSZWdFeHAoJyhbXFxcXHNcXFxcU10qPykoPC8nICsgc3RhY2tlZFRh
ZyArICdbXj5dKj4pJywgJ2knKSk7XG4gICAgICB2YXIgcmVzdCQxID0gaHRtbC5yZXBsYWNlKHJl
U3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG4gICAgICAgIGVuZFRh
Z0xlbmd0aCA9IGVuZFRhZy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNQbGFpblRleHRFbGVtZW50
KHN0YWNrZWRUYWcpICYmIHN0YWNrZWRUYWcgIT09ICdub3NjcmlwdCcpIHtcbiAgICAgICAgICB0
ZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4vZywg
JyQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IVxcW0NEQVRBXFxbKFtcXHNcXFNdKj8pXV0+
L2csICckMScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRJZ25vcmVGaXJzdE5ld2xp
bmUoc3RhY2tlZFRhZywgdGV4dCkpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgxKTtc
biAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5jaGFycykge1xuICAgICAgICAgIG9wdGlv
bnMuY2hhcnModGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9KTtc
biAgICAgIGluZGV4ICs9IGh0bWwubGVuZ3RoIC0gcmVzdCQxLmxlbmd0aDtcbiAgICAgIGh0bWwg
PSByZXN0JDE7XG4gICAgICBwYXJzZUVuZFRhZyhzdGFja2VkVGFnLCBpbmRleCAtIGVuZFRhZ0xl
bmd0aCwgaW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChodG1sID09PSBsYXN0KSB7XG4gICAgICBv
cHRpb25zLmNoYXJzICYmIG9wdGlvbnMuY2hhcnMoaHRtbCk7XG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhc3RhY2subGVuZ3RoICYmIG9wdGlvbnMu
d2Fybikge1xuICAgICAgICBvcHRpb25zLndhcm4oKFwiTWFsLWZvcm1hdHRlZCB0YWcgYXQgZW5k
IG9mIHRlbXBsYXRlOiBcXFwiXCIgKyBodG1sICsgXCJcXFwiXCIpKTtcbiAgICAgIH1cbiAgICAg
IGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gQ2xlYW4gdXAgYW55IHJlbWFpbmluZyB0YWdzXG4g
IHBhcnNlRW5kVGFnKCk7XG5cbiAgZnVuY3Rpb24gYWR2YW5jZSAobikge1xuICAgIGluZGV4ICs9
IG47XG4gICAgaHRtbCA9IGh0bWwuc3Vic3RyaW5nKG4pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFy
c2VTdGFydFRhZyAoKSB7XG4gICAgdmFyIHN0YXJ0ID0gaHRtbC5tYXRjaChzdGFydFRhZ09wZW4p
O1xuICAgIGlmIChzdGFydCkge1xuICAgICAgdmFyIG1hdGNoID0ge1xuICAgICAgICB0YWdOYW1l
OiBzdGFydFsxXSxcbiAgICAgICAgYXR0cnM6IFtdLFxuICAgICAgICBzdGFydDogaW5kZXhcbiAg
ICAgIH07XG4gICAgICBhZHZhbmNlKHN0YXJ0WzBdLmxlbmd0aCk7XG4gICAgICB2YXIgZW5kLCBh
dHRyO1xuICAgICAgd2hpbGUgKCEoZW5kID0gaHRtbC5tYXRjaChzdGFydFRhZ0Nsb3NlKSkgJiYg
KGF0dHIgPSBodG1sLm1hdGNoKGF0dHJpYnV0ZSkpKSB7XG4gICAgICAgIGFkdmFuY2UoYXR0clsw
XS5sZW5ndGgpO1xuICAgICAgICBtYXRjaC5hdHRycy5wdXNoKGF0dHIpO1xuICAgICAgfVxuICAg
ICAgaWYgKGVuZCkge1xuICAgICAgICBtYXRjaC51bmFyeVNsYXNoID0gZW5kWzFdO1xuICAgICAg
ICBhZHZhbmNlKGVuZFswXS5sZW5ndGgpO1xuICAgICAgICBtYXRjaC5lbmQgPSBpbmRleDtcbiAg
ICAgICAgcmV0dXJuIG1hdGNoXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFu
ZGxlU3RhcnRUYWcgKG1hdGNoKSB7XG4gICAgdmFyIHRhZ05hbWUgPSBtYXRjaC50YWdOYW1lO1xu
ICAgIHZhciB1bmFyeVNsYXNoID0gbWF0Y2gudW5hcnlTbGFzaDtcblxuICAgIGlmIChleHBlY3RI
VE1MKSB7XG4gICAgICBpZiAobGFzdFRhZyA9PT0gJ3AnICYmIGlzTm9uUGhyYXNpbmdUYWcodGFn
TmFtZSkpIHtcbiAgICAgICAgcGFyc2VFbmRUYWcobGFzdFRhZyk7XG4gICAgICB9XG4gICAgICBp
ZiAoY2FuQmVMZWZ0T3BlblRhZyQkMSh0YWdOYW1lKSAmJiBsYXN0VGFnID09PSB0YWdOYW1lKSB7
XG4gICAgICAgIHBhcnNlRW5kVGFnKHRhZ05hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZh
ciB1bmFyeSA9IGlzVW5hcnlUYWckJDEodGFnTmFtZSkgfHwgISF1bmFyeVNsYXNoO1xuXG4gICAg
dmFyIGwgPSBtYXRjaC5hdHRycy5sZW5ndGg7XG4gICAgdmFyIGF0dHJzID0gbmV3IEFycmF5KGwp
O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgYXJncyA9IG1h
dGNoLmF0dHJzW2ldO1xuICAgICAgLy8gaGFja2lzaCB3b3JrIGFyb3VuZCBGRiBidWcgaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5Nzc4XG4gICAgICBpZiAo
SVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiAmJiBhcmdzWzBdLmluZGV4T2YoJ1wiXCInKSA9PT0g
LTEpIHtcbiAgICAgICAgaWYgKGFyZ3NbM10gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzNdOyB9XG4g
ICAgICAgIGlmIChhcmdzWzRdID09PSAnJykgeyBkZWxldGUgYXJnc1s0XTsgfVxuICAgICAgICBp
ZiAoYXJnc1s1XSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbNV07IH1cbiAgICAgIH1cbiAgICAgIHZh
ciB2YWx1ZSA9IGFyZ3NbM10gfHwgYXJnc1s0XSB8fCBhcmdzWzVdIHx8ICcnO1xuICAgICAgYXR0
cnNbaV0gPSB7XG4gICAgICAgIG5hbWU6IGFyZ3NbMV0sXG4gICAgICAgIHZhbHVlOiBkZWNvZGVB
dHRyKFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3
bGluZXNcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXVuYXJ5KSB7XG4g
ICAgICBzdGFjay5wdXNoKHsgdGFnOiB0YWdOYW1lLCBsb3dlckNhc2VkVGFnOiB0YWdOYW1lLnRv
TG93ZXJDYXNlKCksIGF0dHJzOiBhdHRycyB9KTtcbiAgICAgIGxhc3RUYWcgPSB0YWdOYW1lO1xu
ICAgIH1cblxuICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICBvcHRpb25zLnN0YXJ0KHRh
Z05hbWUsIGF0dHJzLCB1bmFyeSwgbWF0Y2guc3RhcnQsIG1hdGNoLmVuZCk7XG4gICAgfVxuICB9
XG5cbiAgZnVuY3Rpb24gcGFyc2VFbmRUYWcgKHRhZ05hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB2
YXIgcG9zLCBsb3dlckNhc2VkVGFnTmFtZTtcbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkgeyBzdGFy
dCA9IGluZGV4OyB9XG4gICAgaWYgKGVuZCA9PSBudWxsKSB7IGVuZCA9IGluZGV4OyB9XG5cbiAg
ICBpZiAodGFnTmFtZSkge1xuICAgICAgbG93ZXJDYXNlZFRhZ05hbWUgPSB0YWdOYW1lLnRvTG93
ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgY2xvc2VzdCBvcGVuZWQgdGFnIG9m
IHRoZSBzYW1lIHR5cGVcbiAgICBpZiAodGFnTmFtZSkge1xuICAgICAgZm9yIChwb3MgPSBzdGFj
ay5sZW5ndGggLSAxOyBwb3MgPj0gMDsgcG9zLS0pIHtcbiAgICAgICAgaWYgKHN0YWNrW3Bvc10u
bG93ZXJDYXNlZFRhZyA9PT0gbG93ZXJDYXNlZFRhZ05hbWUpIHtcbiAgICAgICAgICBicmVha1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHRhZyBuYW1l
IGlzIHByb3ZpZGVkLCBjbGVhbiBzaG9wXG4gICAgICBwb3MgPSAwO1xuICAgIH1cblxuICAgIGlm
IChwb3MgPj0gMCkge1xuICAgICAgLy8gQ2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0
aGUgc3RhY2tcbiAgICAgIGZvciAodmFyIGkgPSBzdGFjay5sZW5ndGggLSAxOyBpID49IHBvczsg
aS0tKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ICYmXG4gICAgICAgICAgKGkgPiBwb3MgfHwgIXRhZ05hbWUpICYmXG4gICAgICAgICAgb3B0aW9u
cy53YXJuXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAg
IChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRh
Zy5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZCkg
e1xuICAgICAgICAgIG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQsIGVuZCk7XG4gICAg
ICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVsZW1lbnRzIGZyb20g
dGhlIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggPSBwb3M7XG4gICAgICBsYXN0VGFnID0gcG9z
ICYmIHN0YWNrW3BvcyAtIDFdLnRhZztcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1l
ID09PSAnYnInKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25z
LnN0YXJ0KHRhZ05hbWUsIFtdLCB0cnVlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVs
c2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAncCcpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0
YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIGZhbHNlLCBzdGFydCwg
ZW5kKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAgICAgICBvcHRpb25z
LmVuZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyog
ICovXG5cbnZhciBvblJFID0gL15AfF52LW9uOi87XG52YXIgZGlyUkUgPSAvXnYtfF5AfF46Lztc
bnZhciBmb3JBbGlhc1JFID0gLyguKj8pXFxzKyg/OmlufG9mKVxccysoLiopLztcbnZhciBmb3JJ
dGVyYXRvclJFID0gL1xcKChcXHtbXn1dKlxcfXxbXixdKiksKFteLF0qKSg/OiwoW14sXSopKT9c
XCkvO1xuXG52YXIgYXJnUkUgPSAvOiguKikkLztcbnZhciBiaW5kUkUgPSAvXjp8XnYtYmluZDov
O1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXSsvZztcblxudmFyIGRlY29kZUhUTUxDYWNoZWQg
PSBjYWNoZWQoaGUuZGVjb2RlKTtcblxuLy8gY29uZmlndXJhYmxlIHN0YXRlXG52YXIgd2FybiQy
O1xudmFyIGRlbGltaXRlcnM7XG52YXIgdHJhbnNmb3JtcztcbnZhciBwcmVUcmFuc2Zvcm1zO1xu
dmFyIHBvc3RUcmFuc2Zvcm1zO1xudmFyIHBsYXRmb3JtSXNQcmVUYWc7XG52YXIgcGxhdGZvcm1N
dXN0VXNlUHJvcDtcbnZhciBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZTtcblxuLyoqXG4gKiBDb252
ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0ZW1wbGF0
ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2Fybjtc
blxuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcGxhdGZv
cm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwgbm87XG4gIHBsYXRmb3JtR2V0
VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG5cbiAgdHJhbnNm
b3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtTm9k
ZScpO1xuICBwcmVUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVs
ZXMsICdwcmVUcmFuc2Zvcm1Ob2RlJyk7XG4gIHBvc3RUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVG
dW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwb3N0VHJhbnNmb3JtTm9kZScpO1xuXG4gIGRlbGlt
aXRlcnMgPSBvcHRpb25zLmRlbGltaXRlcnM7XG5cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBw
cmVzZXJ2ZVdoaXRlc3BhY2UgPSBvcHRpb25zLnByZXNlcnZlV2hpdGVzcGFjZSAhPT0gZmFsc2U7
XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGluVlByZSA9IGZhbHNl
O1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXG4gIGZ1bmN0
aW9uIHdhcm5PbmNlIChtc2cpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgd2FybmVkID0g
dHJ1ZTtcbiAgICAgIHdhcm4kMihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZFBy
ZSAoZWxlbWVudCkge1xuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlmIChlbGVtZW50LnBy
ZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwbGF0Zm9ybUlzUHJl
VGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxu
ICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4gICAgZXhwZWN0SFRN
TDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlvbnMuaXNVbmFyeVRh
ZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcsXG4gICAg
c2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAg
c2hvdWxkS2VlcENvbW1lbnQ6IG9wdGlvbnMuY29tbWVudHMsXG4gICAgc3RhcnQ6IGZ1bmN0aW9u
IHN0YXJ0ICh0YWcsIGF0dHJzLCB1bmFyeSkge1xuICAgICAgLy8gY2hlY2sgbmFtZXNwYWNlLlxu
ICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMgaWYgdGhlcmUgaXMgb25lXG4gICAgICB2YXIgbnMg
PSAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50Lm5zKSB8fCBwbGF0Zm9ybUdldFRhZ05h
bWVzcGFjZSh0YWcpO1xuXG4gICAgICAvLyBoYW5kbGUgSUUgc3ZnIGJ1Z1xuICAgICAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSAmJiBucyA9PT0gJ3N2ZycpIHtcbiAg
ICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVnKGF0dHJzKTtcbiAgICAgIH1cblxuICAgICAgdmFy
IGVsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6IDEsXG4gICAgICAgIHRhZzogdGFnLFxuICAgICAg
ICBhdHRyc0xpc3Q6IGF0dHJzLFxuICAgICAgICBhdHRyc01hcDogbWFrZUF0dHJzTWFwKGF0dHJz
KSxcbiAgICAgICAgcGFyZW50OiBjdXJyZW50UGFyZW50LFxuICAgICAgICBjaGlsZHJlbjogW11c
biAgICAgIH07XG4gICAgICBpZiAobnMpIHtcbiAgICAgICAgZWxlbWVudC5ucyA9IG5zO1xuICAg
ICAgfVxuXG4gICAgICBpZiAoaXNGb3JiaWRkZW5UYWcoZWxlbWVudCkgJiYgIWlzU2VydmVyUmVu
ZGVyaW5nKCkpIHtcbiAgICAgICAgZWxlbWVudC5mb3JiaWRkZW4gPSB0cnVlO1xuICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4kMihcbiAgICAgICAg
ICAnVGVtcGxhdGVzIHNob3VsZCBvbmx5IGJlIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5nIHRoZSBz
dGF0ZSB0byB0aGUgJyArXG4gICAgICAgICAgJ1VJLiBBdm9pZCBwbGFjaW5nIHRhZ3Mgd2l0aCBz
aWRlLWVmZmVjdHMgaW4geW91ciB0ZW1wbGF0ZXMsIHN1Y2ggYXMgJyArXG4gICAgICAgICAgXCI8
XCIgKyB0YWcgKyBcIj5cIiArICcsIGFzIHRoZXkgd2lsbCBub3QgYmUgcGFyc2VkLidcbiAgICAg
ICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXBwbHkgcHJlLXRyYW5zZm9ybXNcbiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcHJlVHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBw
cmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAo
IWluVlByZSkge1xuICAgICAgICBwcm9jZXNzUHJlKGVsZW1lbnQpO1xuICAgICAgICBpZiAoZWxl
bWVudC5wcmUpIHtcbiAgICAgICAgICBpblZQcmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9
XG4gICAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAgICAgICAgaW5Q
cmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGluVlByZSkge1xuICAgICAgICBwcm9jZXNz
UmF3QXR0cnMoZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzRm9yKGVs
ZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NPbmNl
KGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzS2V5KGVsZW1lbnQpO1xuXG4gICAgICAgIC8vIGRl
dGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBwbGFpbiBlbGVtZW50IGFmdGVyXG4gICAgICAgIC8v
IHJlbW92aW5nIHN0cnVjdHVyYWwgYXR0cmlidXRlc1xuICAgICAgICBlbGVtZW50LnBsYWluID0g
IWVsZW1lbnQua2V5ICYmICFhdHRycy5sZW5ndGg7XG5cbiAgICAgICAgcHJvY2Vzc1JlZihlbGVt
ZW50KTtcbiAgICAgICAgcHJvY2Vzc1Nsb3QoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NDb21w
b25lbnQoZWxlbWVudCk7XG4gICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHRyYW5zZm9y
bXMubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgIHRyYW5zZm9ybXNbaSQxXShlbGVtZW50LCBv
cHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQXR0cnMoZWxlbWVudCk7XG4gICAg
ICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoZWNrUm9vdENvbnN0cmFpbnRzIChlbCkge1xuICAgICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAg
IGlmIChlbC50YWcgPT09ICdzbG90JyB8fCBlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAg
ICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICBcIkNhbm5vdCB1c2UgPFwiICsgKGVsLnRh
ZykgKyBcIj4gYXMgY29tcG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBcIiArXG4g
ICAgICAgICAgICAgICdjb250YWluIG11bHRpcGxlIG5vZGVzLidcbiAgICAgICAgICAgICk7XG4g
ICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbC5hdHRyc01hcC5oYXNPd25Qcm9wZXJ0eSgndi1m
b3InKSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgICdDYW5ub3QgdXNl
IHYtZm9yIG9uIHN0YXRlZnVsIGNvbXBvbmVudCByb290IGVsZW1lbnQgYmVjYXVzZSAnICtcbiAg
ICAgICAgICAgICAgJ2l0IHJlbmRlcnMgbXVsdGlwbGUgZWxlbWVudHMuJ1xuICAgICAgICAgICAg
KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gdHJlZSBtYW5h
Z2VtZW50XG4gICAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgcm9vdCA9IGVsZW1lbnQ7XG4gICAg
ICAgIGNoZWNrUm9vdENvbnN0cmFpbnRzKHJvb3QpO1xuICAgICAgfSBlbHNlIGlmICghc3RhY2su
bGVuZ3RoKSB7XG4gICAgICAgIC8vIGFsbG93IHJvb3QgZWxlbWVudHMgd2l0aCB2LWlmLCB2LWVs
c2UtaWYgYW5kIHYtZWxzZVxuICAgICAgICBpZiAocm9vdC5pZiAmJiAoZWxlbWVudC5lbHNlaWYg
fHwgZWxlbWVudC5lbHNlKSkge1xuICAgICAgICAgIGNoZWNrUm9vdENvbnN0cmFpbnRzKGVsZW1l
bnQpO1xuICAgICAgICAgIGFkZElmQ29uZGl0aW9uKHJvb3QsIHtcbiAgICAgICAgICAgIGV4cDog
ZWxlbWVudC5lbHNlaWYsXG4gICAgICAgICAgICBibG9jazogZWxlbWVudFxuICAgICAgICAgIH0p
O1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiQ29tcG9uZW50IHRlbXBs
YXRlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIHJvb3QgZWxlbWVudC4gXCIgK1xuICAgICAg
ICAgICAgXCJJZiB5b3UgYXJlIHVzaW5nIHYtaWYgb24gbXVsdGlwbGUgZWxlbWVudHMsIFwiICtc
biAgICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVtIGluc3RlYWQuXCJcbiAg
ICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFBhcmVudCAm
JiAhZWxlbWVudC5mb3JiaWRkZW4pIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZWxzZWlmIHx8IGVs
ZW1lbnQuZWxzZSkge1xuICAgICAgICAgIHByb2Nlc3NJZkNvbmRpdGlvbnMoZWxlbWVudCwgY3Vy
cmVudFBhcmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zbG90U2NvcGUpIHsgLy8g
c2NvcGVkIHNsb3RcbiAgICAgICAgICBjdXJyZW50UGFyZW50LnBsYWluID0gZmFsc2U7XG4gICAg
ICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ1wiZGVmYXVsdFwiJzsoY3Vy
cmVudFBhcmVudC5zY29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9
KSlbbmFtZV0gPSBlbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRQ
YXJlbnQuY2hpbGRyZW4ucHVzaChlbGVtZW50KTtcbiAgICAgICAgICBlbGVtZW50LnBhcmVudCA9
IGN1cnJlbnRQYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdW5hcnkpIHtc
biAgICAgICAgY3VycmVudFBhcmVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHN0YWNrLnB1c2goZWxl
bWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmRQcmUoZWxlbWVudCk7XG4gICAgICB9
XG4gICAgICAvLyBhcHBseSBwb3N0LXRyYW5zZm9ybXNcbiAgICAgIGZvciAodmFyIGkkMiA9IDA7
IGkkMiA8IHBvc3RUcmFuc2Zvcm1zLmxlbmd0aDsgaSQyKyspIHtcbiAgICAgICAgcG9zdFRyYW5z
Zm9ybXNbaSQyXShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5k
OiBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2Vc
biAgICAgIHZhciBlbGVtZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICB2YXIg
bGFzdE5vZGUgPSBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07
XG4gICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gMyAmJiBsYXN0Tm9kZS50
ZXh0ID09PSAnICcgJiYgIWluUHJlKSB7XG4gICAgICAgIGVsZW1lbnQuY2hpbGRyZW4ucG9wKCk7
XG4gICAgICB9XG4gICAgICAvLyBwb3Agc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0aCAtPSAxO1xu
ICAgICAgY3VycmVudFBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgZW5k
UHJlKGVsZW1lbnQpO1xuICAgIH0sXG5cbiAgICBjaGFyczogZnVuY3Rpb24gY2hhcnMgKHRleHQp
IHtcbiAgICAgIGlmICghY3VycmVudFBhcmVudCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmICh0ZXh0ID09PSB0ZW1w
bGF0ZSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICAgICdDb21wb25lbnQg
dGVtcGxhdGUgcmVxdWlyZXMgYSByb290IGVsZW1lbnQsIHJhdGhlciB0aGFuIGp1c3QgdGV4dC4n
XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoKHRleHQgPSB0ZXh0LnRyaW0o
KSkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAoXCJ0ZXh0IFxcXCJc
IiArIHRleHQgKyBcIlxcXCIgb3V0c2lkZSByb290IGVsZW1lbnQgd2lsbCBiZSBpZ25vcmVkLlwi
KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJu
XG4gICAgICB9XG4gICAgICAvLyBJRSB0ZXh0YXJlYSBwbGFjZWhvbGRlciBidWdcbiAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiZcbiAgICAgICAgY3VycmVu
dFBhcmVudC50YWcgPT09ICd0ZXh0YXJlYScgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC5hdHRy
c01hcC5wbGFjZWhvbGRlciA9PT0gdGV4dFxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAg
ICAgfVxuICAgICAgdmFyIGNoaWxkcmVuID0gY3VycmVudFBhcmVudC5jaGlsZHJlbjtcbiAgICAg
IHRleHQgPSBpblByZSB8fCB0ZXh0LnRyaW0oKVxuICAgICAgICA/IGlzVGV4dFRhZyhjdXJyZW50
UGFyZW50KSA/IHRleHQgOiBkZWNvZGVIVE1MQ2FjaGVkKHRleHQpXG4gICAgICAgIC8vIG9ubHkg
cHJlc2VydmUgd2hpdGVzcGFjZSBpZiBpdHMgbm90IHJpZ2h0IGFmdGVyIGEgc3RhcnRpbmcgdGFn
XG4gICAgICAgIDogcHJlc2VydmVXaGl0ZXNwYWNlICYmIGNoaWxkcmVuLmxlbmd0aCA/ICcgJyA6
ICcnO1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgdmFyIGV4cHJlc3Npb247XG4gICAgICAg
IGlmICghaW5WUHJlICYmIHRleHQgIT09ICcgJyAmJiAoZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh0
ZXh0LCBkZWxpbWl0ZXJzKSkpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAg
ICAgIHR5cGU6IDIsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgICAg
ICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRleHQg
IT09ICcgJyB8fCAhY2hpbGRyZW4ubGVuZ3RoIHx8IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAt
IDFdLnRleHQgIT09ICcgJykge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgICAg
ICAgdHlwZTogMyxcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9KTtcbiAgICAg
ICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY29tbWVudDogZnVuY3Rpb24gY29tbWVudCAodGV4
dCkge1xuICAgICAgY3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgdHlwZTog
MyxcbiAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgaXNDb21tZW50OiB0cnVlXG4gICAgICB9
KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJl
IChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xu
ICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChl
bCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5ndGg7XG4gIGlmIChsKSB7XG4gICAgdmFy
IGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBlbC5hdHRyc0xp
c3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtp
XS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAv
LyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwu
cGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZh
ciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwudGFnID09PSAndGVt
cGxhdGUnKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxhdGU+IGNhbm5vdCBiZSBrZXllZC4gUGxh
Y2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICBlbC5r
ZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJl
ZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4gIGlmIChyZWYpIHtcbiAgICBlbC5yZWYg
PSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0luRm9yKGVsKTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhwO1xuICBpZiAoKGV4cCA9IGdldEFuZFJl
bW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZv
ckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgIChcIkludmFsaWQgdi1mb3Ig
ZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAg
IGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0u
dHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JS
RSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVsLmFsaWFzID0gaXRlcmF0b3JN
YXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBpdGVyYXRvck1hdGNoWzJdLnRy
aW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4gICAgICAgIGVsLml0ZXJhdG9y
MiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYg
KGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAo
ZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAg
IGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYg
KGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNl
ID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2
LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJl
bnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAg
aWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAg
IGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihcbiAg
ICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wi
JykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVs
LnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCJcbiAgICApO1xuICB9XG59
XG5cbmZ1bmN0aW9uIGZpbmRQcmV2RWxlbWVudCAoY2hpbGRyZW4pIHtcbiAgdmFyIGkgPSBjaGls
ZHJlbi5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBpZiAoY2hpbGRyZW5baV0udHlwZSA9
PT0gMSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuW2ldLnRl
eHQgIT09ICcgJykge1xuICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgXCJ0ZXh0IFxcXCJcIiAr
IChjaGlsZHJlbltpXS50ZXh0LnRyaW0oKSkgKyBcIlxcXCIgYmV0d2VlbiB2LWlmIGFuZCB2LWVs
c2UoLWlmKSBcIiArXG4gICAgICAgICAgXCJ3aWxsIGJlIGlnbm9yZWQuXCJcbiAgICAgICAgKTtc
biAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnBvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlv
biBhZGRJZkNvbmRpdGlvbiAoZWwsIGNvbmRpdGlvbikge1xuICBpZiAoIWVsLmlmQ29uZGl0aW9u
cykge1xuICAgIGVsLmlmQ29uZGl0aW9ucyA9IFtdO1xuICB9XG4gIGVsLmlmQ29uZGl0aW9ucy5w
dXNoKGNvbmRpdGlvbik7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NPbmNlIChlbCkge1xuICB2YXIg
b25jZSQkMSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LW9uY2UnKTtcbiAgaWYgKG9uY2UkJDEg
IT0gbnVsbCkge1xuICAgIGVsLm9uY2UgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nl
c3NTbG90IChlbCkge1xuICBpZiAoZWwudGFnID09PSAnc2xvdCcpIHtcbiAgICBlbC5zbG90TmFt
ZSA9IGdldEJpbmRpbmdBdHRyKGVsLCAnbmFtZScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGVsLmtleSkge1xuICAgICAgd2FybiQyKFxuICAgICAg
ICBcImBrZXlgIGRvZXMgbm90IHdvcmsgb24gPHNsb3Q+IGJlY2F1c2Ugc2xvdHMgYXJlIGFic3Ry
YWN0IG91dGxldHMgXCIgK1xuICAgICAgICBcImFuZCBjYW4gcG9zc2libHkgZXhwYW5kIGludG8g
bXVsdGlwbGUgZWxlbWVudHMuIFwiICtcbiAgICAgICAgXCJVc2UgdGhlIGtleSBvbiBhIHdyYXBw
aW5nIGVsZW1lbnQgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAg
dmFyIHNsb3RUYXJnZXQgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3Nsb3QnKTtcbiAgICBpZiAoc2xv
dFRhcmdldCkge1xuICAgICAgZWwuc2xvdFRhcmdldCA9IHNsb3RUYXJnZXQgPT09ICdcIlwiJyA/
ICdcImRlZmF1bHRcIicgOiBzbG90VGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoZWwudGFnID09PSAn
dGVtcGxhdGUnKSB7XG4gICAgICBlbC5zbG90U2NvcGUgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAn
c2NvcGUnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0NvbXBvbmVudCAoZWwp
IHtcbiAgdmFyIGJpbmRpbmc7XG4gIGlmICgoYmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAn
aXMnKSkpIHtcbiAgICBlbC5jb21wb25lbnQgPSBiaW5kaW5nO1xuICB9XG4gIGlmIChnZXRBbmRS
ZW1vdmVBdHRyKGVsLCAnaW5saW5lLXRlbXBsYXRlJykgIT0gbnVsbCkge1xuICAgIGVsLmlubGlu
ZVRlbXBsYXRlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQXR0cnMgKGVsKSB7
XG4gIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICB2YXIgaSwgbCwgbmFtZSwgcmF3TmFtZSwg
dmFsdWUsIG1vZGlmaWVycywgaXNQcm9wO1xuICBmb3IgKGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcbiAgICBuYW1lID0gcmF3TmFtZSA9IGxpc3RbaV0ubmFtZTtcbiAgICB2
YWx1ZSA9IGxpc3RbaV0udmFsdWU7XG4gICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAg
IC8vIG1hcmsgZWxlbWVudCBhcyBkeW5hbWljXG4gICAgICBlbC5oYXNCaW5kaW5ncyA9IHRydWU7
XG4gICAgICAvLyBtb2RpZmllcnNcbiAgICAgIG1vZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJzKG5h
bWUpO1xuICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNl
KG1vZGlmaWVyUkUsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kUkUudGVzdChuYW1lKSkg
eyAvLyB2LWJpbmRcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShiaW5kUkUsICcnKTtcbiAg
ICAgICAgdmFsdWUgPSBwYXJzZUZpbHRlcnModmFsdWUpO1xuICAgICAgICBpc1Byb3AgPSBmYWxz
ZTtcbiAgICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICAgIGlmIChtb2RpZmllcnMucHJv
cCkge1xuICAgICAgICAgICAgaXNQcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1l
bGl6ZShuYW1lKTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaW5uZXJIdG1sJykgeyBuYW1l
ID0gJ2lubmVySFRNTCc7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5j
YW1lbCkge1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgIH1c
biAgICAgICAgICBpZiAobW9kaWZpZXJzLnN5bmMpIHtcbiAgICAgICAgICAgIGFkZEhhbmRsZXIo
XG4gICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoY2FtZWxp
emUobmFtZSkpKSxcbiAgICAgICAgICAgICAgZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIFwiJGV2
ZW50XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBp
ZiAoaXNQcm9wIHx8IChcbiAgICAgICAgICAhZWwuY29tcG9uZW50ICYmIHBsYXRmb3JtTXVzdFVz
ZVByb3AoZWwudGFnLCBlbC5hdHRyc01hcC50eXBlLCBuYW1lKVxuICAgICAgICApKSB7XG4gICAg
ICAgICAgYWRkUHJvcChlbCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIGFkZEF0dHIoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlm
IChvblJFLnRlc3QobmFtZSkpIHsgLy8gdi1vblxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNl
KG9uUkUsICcnKTtcbiAgICAgICAgYWRkSGFuZGxlcihlbCwgbmFtZSwgdmFsdWUsIG1vZGlmaWVy
cywgZmFsc2UsIHdhcm4kMik7XG4gICAgICB9IGVsc2UgeyAvLyBub3JtYWwgZGlyZWN0aXZlc1xu
ICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKGRpclJFLCAnJyk7XG4gICAgICAgIC8vIHBhcnNl
IGFyZ1xuICAgICAgICB2YXIgYXJnTWF0Y2ggPSBuYW1lLm1hdGNoKGFyZ1JFKTtcbiAgICAgICAg
dmFyIGFyZyA9IGFyZ01hdGNoICYmIGFyZ01hdGNoWzFdO1xuICAgICAgICBpZiAoYXJnKSB7XG4g
ICAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgLShhcmcubGVuZ3RoICsgMSkpO1xuICAgICAg
ICB9XG4gICAgICAgIGFkZERpcmVjdGl2ZShlbCwgbmFtZSwgcmF3TmFtZSwgdmFsdWUsIGFyZywg
bW9kaWZpZXJzKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiYgbmFtZSA9PT0gJ21vZGVsJykge1xuICAgICAgICAgIGNoZWNrRm9yQWxpYXNNb2Rl
bChlbCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8v
IGxpdGVyYWwgYXR0cmlidXRlXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh2YWx1ZSwg
ZGVsaW1pdGVycyk7XG4gICAgICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICAgICAgd2FybiQy
KFxuICAgICAgICAgICAgbmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiOiBcIiArXG4g
ICAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1v
dmVkLiAnICtcbiAgICAgICAgICAgICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQg
aW5zdGVhZC4gRm9yIGV4YW1wbGUsICcgK1xuICAgICAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBp
ZD1cInt7IHZhbCB9fVwiPiwgdXNlIDxkaXYgOmlkPVwidmFsXCI+LidcbiAgICAgICAgICApO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRBdHRyKGVsLCBuYW1lLCBKU09OLnN0cmluZ2lm
eSh2YWx1ZSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0luRm9yIChlbCkge1xu
ICB2YXIgcGFyZW50ID0gZWw7XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBpZiAocGFyZW50LmZv
ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBwYXJlbnQg
PSBwYXJlbnQucGFyZW50O1xuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBwYXJz
ZU1vZGlmaWVycyAobmFtZSkge1xuICB2YXIgbWF0Y2ggPSBuYW1lLm1hdGNoKG1vZGlmaWVyUkUp
O1xuICBpZiAobWF0Y2gpIHtcbiAgICB2YXIgcmV0ID0ge307XG4gICAgbWF0Y2guZm9yRWFjaChm
dW5jdGlvbiAobSkgeyByZXRbbS5zbGljZSgxKV0gPSB0cnVlOyB9KTtcbiAgICByZXR1cm4gcmV0
XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZUF0dHJzTWFwIChhdHRycykge1xuICB2YXIgbWFwID0g
e307XG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXR0cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4g
ICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxu
ICAgICAgbWFwW2F0dHJzW2ldLm5hbWVdICYmICFpc0lFICYmICFpc0VkZ2VcbiAgICApIHtcbiAg
ICAgIHdhcm4kMignZHVwbGljYXRlIGF0dHJpYnV0ZTogJyArIGF0dHJzW2ldLm5hbWUpO1xuICAg
IH1cbiAgICBtYXBbYXR0cnNbaV0ubmFtZV0gPSBhdHRyc1tpXS52YWx1ZTtcbiAgfVxuICByZXR1
cm4gbWFwXG59XG5cbi8vIGZvciBzY3JpcHQgKGUuZy4gdHlwZT1cIngvdGVtcGxhdGVcIikgb3Ig
c3R5bGUsIGRvIG5vdCBkZWNvZGUgY29udGVudFxuZnVuY3Rpb24gaXNUZXh0VGFnIChlbCkge1xu
ICByZXR1cm4gZWwudGFnID09PSAnc2NyaXB0JyB8fCBlbC50YWcgPT09ICdzdHlsZSdcbn1cblxu
ZnVuY3Rpb24gaXNGb3JiaWRkZW5UYWcgKGVsKSB7XG4gIHJldHVybiAoXG4gICAgZWwudGFnID09
PSAnc3R5bGUnIHx8XG4gICAgKGVsLnRhZyA9PT0gJ3NjcmlwdCcgJiYgKFxuICAgICAgIWVsLmF0
dHJzTWFwLnR5cGUgfHxcbiAgICAgIGVsLmF0dHJzTWFwLnR5cGUgPT09ICd0ZXh0L2phdmFzY3Jp
cHQnXG4gICAgKSlcbiAgKVxufVxuXG52YXIgaWVOU0J1ZyA9IC9eeG1sbnM6TlNcXGQrLztcbnZh
ciBpZU5TUHJlZml4ID0gL15OU1xcZCs6LztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9c
bmZ1bmN0aW9uIGd1YXJkSUVTVkdCdWcgKGF0dHJzKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBhdHRyID0gYXR0
cnNbaV07XG4gICAgaWYgKCFpZU5TQnVnLnRlc3QoYXR0ci5uYW1lKSkge1xuICAgICAgYXR0ci5u
YW1lID0gYXR0ci5uYW1lLnJlcGxhY2UoaWVOU1ByZWZpeCwgJycpO1xuICAgICAgcmVzLnB1c2go
YXR0cik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tGb3JB
bGlhc01vZGVsIChlbCwgdmFsdWUpIHtcbiAgdmFyIF9lbCA9IGVsO1xuICB3aGlsZSAoX2VsKSB7
XG4gICAgaWYgKF9lbC5mb3IgJiYgX2VsLmFsaWFzID09PSB2YWx1ZSkge1xuICAgICAgd2FybiQy
KFxuICAgICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSAr
IFwiXFxcIj46IFwiICtcbiAgICAgICAgXCJZb3UgYXJlIGJpbmRpbmcgdi1tb2RlbCBkaXJlY3Rs
eSB0byBhIHYtZm9yIGl0ZXJhdGlvbiBhbGlhcy4gXCIgK1xuICAgICAgICBcIlRoaXMgd2lsbCBu
b3QgYmUgYWJsZSB0byBtb2RpZnkgdGhlIHYtZm9yIHNvdXJjZSBhcnJheSBiZWNhdXNlIFwiICtc
biAgICAgICAgXCJ3cml0aW5nIHRvIHRoZSBhbGlhcyBpcyBsaWtlIG1vZGlmeWluZyBhIGZ1bmN0
aW9uIGxvY2FsIHZhcmlhYmxlLiBcIiArXG4gICAgICAgIFwiQ29uc2lkZXIgdXNpbmcgYW4gYXJy
YXkgb2Ygb2JqZWN0cyBhbmQgdXNlIHYtbW9kZWwgb24gYW4gb2JqZWN0IHByb3BlcnR5IGluc3Rl
YWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIF9lbCA9IF9lbC5wYXJlbnQ7XG4gIH1cbn1cblxu
LyogICovXG5cbnZhciBpc1N0YXRpY0tleTtcbnZhciBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWc7XG5c
bnZhciBnZW5TdGF0aWNLZXlzQ2FjaGVkID0gY2FjaGVkKGdlblN0YXRpY0tleXMkMSk7XG5cbi8q
KlxuICogR29hbCBvZiB0aGUgb3B0aW1pemVyOiB3YWxrIHRoZSBnZW5lcmF0ZWQgdGVtcGxhdGUg
QVNUIHRyZWVcbiAqIGFuZCBkZXRlY3Qgc3ViLXRyZWVzIHRoYXQgYXJlIHB1cmVseSBzdGF0aWMs
IGkuZS4gcGFydHMgb2ZcbiAqIHRoZSBET00gdGhhdCBuZXZlciBuZWVkcyB0byBjaGFuZ2UuXG4g
KlxuICogT25jZSB3ZSBkZXRlY3QgdGhlc2Ugc3ViLXRyZWVzLCB3ZSBjYW46XG4gKlxuICogMS4g
SG9pc3QgdGhlbSBpbnRvIGNvbnN0YW50cywgc28gdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0b1xu
ICogICAgY3JlYXRlIGZyZXNoIG5vZGVzIGZvciB0aGVtIG9uIGVhY2ggcmUtcmVuZGVyO1xuICog
Mi4gQ29tcGxldGVseSBza2lwIHRoZW0gaW4gdGhlIHBhdGNoaW5nIHByb2Nlc3MuXG4gKi9cbmZ1
bmN0aW9uIG9wdGltaXplIChyb290LCBvcHRpb25zKSB7XG4gIGlmICghcm9vdCkgeyByZXR1cm4g
fVxuICBpc1N0YXRpY0tleSA9IGdlblN0YXRpY0tleXNDYWNoZWQob3B0aW9ucy5zdGF0aWNLZXlz
IHx8ICcnKTtcbiAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnID0gb3B0aW9ucy5pc1Jlc2VydmVkVGFn
IHx8IG5vO1xuICAvLyBmaXJzdCBwYXNzOiBtYXJrIGFsbCBub24tc3RhdGljIG5vZGVzLlxuICBt
YXJrU3RhdGljJDEocm9vdCk7XG4gIC8vIHNlY29uZCBwYXNzOiBtYXJrIHN0YXRpYyByb290cy5c
biAgbWFya1N0YXRpY1Jvb3RzKHJvb3QsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gZ2VuU3RhdGlj
S2V5cyQxIChrZXlzKSB7XG4gIHJldHVybiBtYWtlTWFwKFxuICAgICd0eXBlLHRhZyxhdHRyc0xp
c3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzJyArXG4gICAgKGtleXMgPyAn
LCcgKyBrZXlzIDogJycpXG4gIClcbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpYyQxIChub2RlKSB7
XG4gIG5vZGUuc3RhdGljID0gaXNTdGF0aWMobm9kZSk7XG4gIGlmIChub2RlLnR5cGUgPT09IDEp
IHtcbiAgICAvLyBkbyBub3QgbWFrZSBjb21wb25lbnQgc2xvdCBjb250ZW50IHN0YXRpYy4gdGhp
cyBhdm9pZHNcbiAgICAvLyAxLiBjb21wb25lbnRzIG5vdCBhYmxlIHRvIG11dGF0ZSBzbG90IG5v
ZGVzXG4gICAgLy8gMi4gc3RhdGljIHNsb3QgY29udGVudCBmYWlscyBmb3IgaG90LXJlbG9hZGlu
Z1xuICAgIGlmIChcbiAgICAgICFpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmXG4g
ICAgICBub2RlLnRhZyAhPT0gJ3Nsb3QnICYmXG4gICAgICBub2RlLmF0dHJzTWFwWydpbmxpbmUt
dGVtcGxhdGUnXSA9PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
ICAgdmFyIGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIG1hcmtTdGF0aWMkMShjaGls
ZCk7XG4gICAgICBpZiAoIWNoaWxkLnN0YXRpYykge1xuICAgICAgICBub2RlLnN0YXRpYyA9IGZh
bHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5pZkNvbmRpdGlvbnMpIHtcbiAgICAg
IGZvciAodmFyIGkkMSA9IDEsIGwkMSA9IG5vZGUuaWZDb25kaXRpb25zLmxlbmd0aDsgaSQxIDwg
bCQxOyBpJDErKykge1xuICAgICAgICB2YXIgYmxvY2sgPSBub2RlLmlmQ29uZGl0aW9uc1tpJDFd
LmJsb2NrO1xuICAgICAgICBtYXJrU3RhdGljJDEoYmxvY2spO1xuICAgICAgICBpZiAoIWJsb2Nr
LnN0YXRpYykge1xuICAgICAgICAgIG5vZGUuc3RhdGljID0gZmFsc2U7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY1Jvb3RzIChub2RlLCBp
c0luRm9yKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBpZiAobm9kZS5zdGF0aWMg
fHwgbm9kZS5vbmNlKSB7XG4gICAgICBub2RlLnN0YXRpY0luRm9yID0gaXNJbkZvcjtcbiAgICB9
XG4gICAgLy8gRm9yIGEgbm9kZSB0byBxdWFsaWZ5IGFzIGEgc3RhdGljIHJvb3QsIGl0IHNob3Vs
ZCBoYXZlIGNoaWxkcmVuIHRoYXRcbiAgICAvLyBhcmUgbm90IGp1c3Qgc3RhdGljIHRleHQuIE90
aGVyd2lzZSB0aGUgY29zdCBvZiBob2lzdGluZyBvdXQgd2lsbFxuICAgIC8vIG91dHdlaWdoIHRo
ZSBiZW5lZml0cyBhbmQgaXQncyBiZXR0ZXIgb2ZmIHRvIGp1c3QgYWx3YXlzIHJlbmRlciBpdCBm
cmVzaC5cbiAgICBpZiAobm9kZS5zdGF0aWMgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgIShc
biAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4gICAgICBub2RlLmNoaWxkcmVu
WzBdLnR5cGUgPT09IDNcbiAgICApKSB7XG4gICAgICBub2RlLnN0YXRpY1Jvb3QgPSB0cnVlO1xu
ICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IGZhbHNl
O1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBtYXJrU3Rh
dGljUm9vdHMobm9kZS5jaGlsZHJlbltpXSwgaXNJbkZvciB8fCAhIW5vZGUuZm9yKTtcbiAgICAg
IH1cbiAgICB9XG4gICAgaWYgKG5vZGUuaWZDb25kaXRpb25zKSB7XG4gICAgICBmb3IgKHZhciBp
JDEgPSAxLCBsJDEgPSBub2RlLmlmQ29uZGl0aW9ucy5sZW5ndGg7IGkkMSA8IGwkMTsgaSQxKysp
IHtcbiAgICAgICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuaWZDb25kaXRpb25zW2kkMV0uYmxvY2ss
IGlzSW5Gb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N0YXRpYyAo
bm9kZSkge1xuICBpZiAobm9kZS50eXBlID09PSAyKSB7IC8vIGV4cHJlc3Npb25cbiAgICByZXR1
cm4gZmFsc2VcbiAgfVxuICBpZiAobm9kZS50eXBlID09PSAzKSB7IC8vIHRleHRcbiAgICByZXR1
cm4gdHJ1ZVxuICB9XG4gIHJldHVybiAhIShub2RlLnByZSB8fCAoXG4gICAgIW5vZGUuaGFzQmlu
ZGluZ3MgJiYgLy8gbm8gZHluYW1pYyBiaW5kaW5nc1xuICAgICFub2RlLmlmICYmICFub2RlLmZv
ciAmJiAvLyBub3Qgdi1pZiBvciB2LWZvciBvciB2LWVsc2VcbiAgICAhaXNCdWlsdEluVGFnKG5v
ZGUudGFnKSAmJiAvLyBub3QgYSBidWlsdC1pblxuICAgIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyhu
b2RlLnRhZykgJiYgLy8gbm90IGEgY29tcG9uZW50XG4gICAgIWlzRGlyZWN0Q2hpbGRPZlRlbXBs
YXRlRm9yKG5vZGUpICYmXG4gICAgT2JqZWN0LmtleXMobm9kZSkuZXZlcnkoaXNTdGF0aWNLZXkp
XG4gICkpXG59XG5cbmZ1bmN0aW9uIGlzRGlyZWN0Q2hpbGRPZlRlbXBsYXRlRm9yIChub2RlKSB7
XG4gIHdoaWxlIChub2RlLnBhcmVudCkge1xuICAgIG5vZGUgPSBub2RlLnBhcmVudDtcbiAgICBp
ZiAobm9kZS50YWcgIT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1c
biAgICBpZiAobm9kZS5mb3IpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJl
dHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxudmFyIGZuRXhwUkUgPSAvXlxccyooW1xcdyRfXSt8
XFwoW14pXSo/XFwpKVxccyo9PnxeZnVuY3Rpb25cXHMqXFwoLztcbnZhciBzaW1wbGVQYXRoUkUg
PSAvXlxccypbQS1aYS16XyRdW1xcdyRdKig/OlxcLltBLVphLXpfJF1bXFx3JF0qfFxcWycuKj8n
XXxcXFtcIi4qP1wiXXxcXFtcXGQrXXxcXFtbQS1aYS16XyRdW1xcdyRdKl0pKlxccyokLztcblxu
Ly8ga2V5Q29kZSBhbGlhc2VzXG52YXIga2V5Q29kZXMgPSB7XG4gIGVzYzogMjcsXG4gIHRhYjog
OSxcbiAgZW50ZXI6IDEzLFxuICBzcGFjZTogMzIsXG4gIHVwOiAzOCxcbiAgbGVmdDogMzcsXG4g
IHJpZ2h0OiAzOSxcbiAgZG93bjogNDAsXG4gICdkZWxldGUnOiBbOCwgNDZdXG59O1xuXG4vLyAj
NDg2ODogbW9kaWZpZXJzIHRoYXQgcHJldmVudCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBsaXN0ZW5l
clxuLy8gbmVlZCB0byBleHBsaWNpdGx5IHJldHVybiBudWxsIHNvIHRoYXQgd2UgY2FuIGRldGVy
bWluZSB3aGV0aGVyIHRvIHJlbW92ZVxuLy8gdGhlIGxpc3RlbmVyIGZvciAub25jZVxudmFyIGdl
bkd1YXJkID0gZnVuY3Rpb24gKGNvbmRpdGlvbikgeyByZXR1cm4gKFwiaWYoXCIgKyBjb25kaXRp
b24gKyBcIilyZXR1cm4gbnVsbDtcIik7IH07XG5cbnZhciBtb2RpZmllckNvZGUgPSB7XG4gIHN0
b3A6ICckZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JyxcbiAgcHJldmVudDogJyRldmVudC5wcmV2
ZW50RGVmYXVsdCgpOycsXG4gIHNlbGY6IGdlbkd1YXJkKFwiJGV2ZW50LnRhcmdldCAhPT0gJGV2
ZW50LmN1cnJlbnRUYXJnZXRcIiksXG4gIGN0cmw6IGdlbkd1YXJkKFwiISRldmVudC5jdHJsS2V5
XCIpLFxuICBzaGlmdDogZ2VuR3VhcmQoXCIhJGV2ZW50LnNoaWZ0S2V5XCIpLFxuICBhbHQ6IGdl
bkd1YXJkKFwiISRldmVudC5hbHRLZXlcIiksXG4gIG1ldGE6IGdlbkd1YXJkKFwiISRldmVudC5t
ZXRhS2V5XCIpLFxuICBsZWZ0OiBnZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZl
bnQuYnV0dG9uICE9PSAwXCIpLFxuICBtaWRkbGU6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2
ZW50ICYmICRldmVudC5idXR0b24gIT09IDFcIiksXG4gIHJpZ2h0OiBnZW5HdWFyZChcIididXR0
b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyXCIpXG59O1xuXG5mdW5jdGlvbiBn
ZW5IYW5kbGVycyAoXG4gIGV2ZW50cyxcbiAgaXNOYXRpdmUsXG4gIHdhcm5cbikge1xuICB2YXIg
cmVzID0gaXNOYXRpdmUgPyAnbmF0aXZlT246eycgOiAnb246eyc7XG4gIGZvciAodmFyIG5hbWUg
aW4gZXZlbnRzKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBldmVudHNbbmFtZV07XG4gICAgLy8gIzUz
MzA6IHdhcm4gY2xpY2sucmlnaHQsIHNpbmNlIHJpZ2h0IGNsaWNrcyBkbyBub3QgYWN0dWFsbHkg
ZmlyZSBjbGljayBldmVudHMuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgJiZcbiAgICAgIG5hbWUgPT09ICdjbGljaycgJiZcbiAgICAgIGhhbmRsZXIgJiYg
aGFuZGxlci5tb2RpZmllcnMgJiYgaGFuZGxlci5tb2RpZmllcnMucmlnaHRcbiAgICApIHtcbiAg
ICAgIHdhcm4oXG4gICAgICAgIFwiVXNlIFxcXCJjb250ZXh0bWVudVxcXCIgaW5zdGVhZCBvZiBc
XFwiY2xpY2sucmlnaHRcXFwiIHNpbmNlIHJpZ2h0IGNsaWNrcyBcIiArXG4gICAgICAgIFwiZG8g
bm90IGFjdHVhbGx5IGZpcmUgXFxcImNsaWNrXFxcIiBldmVudHMuXCJcbiAgICAgICk7XG4gICAg
fVxuICAgIHJlcyArPSBcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCI6XCIgKyAoZ2VuSGFuZGxlcihu
YW1lLCBoYW5kbGVyKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSAr
ICd9J1xufVxuXG5mdW5jdGlvbiBnZW5IYW5kbGVyIChcbiAgbmFtZSxcbiAgaGFuZGxlclxuKSB7
XG4gIGlmICghaGFuZGxlcikge1xuICAgIHJldHVybiAnZnVuY3Rpb24oKXt9J1xuICB9XG5cbiAg
aWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICByZXR1cm4gKFwiW1wiICsgKGhhbmRs
ZXIubWFwKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBnZW5IYW5kbGVyKG5hbWUsIGhhbmRs
ZXIpOyB9KS5qb2luKCcsJykpICsgXCJdXCIpXG4gIH1cblxuICB2YXIgaXNNZXRob2RQYXRoID0g
c2ltcGxlUGF0aFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG4gIHZhciBpc0Z1bmN0aW9uRXhwcmVz
c2lvbiA9IGZuRXhwUkUudGVzdChoYW5kbGVyLnZhbHVlKTtcblxuICBpZiAoIWhhbmRsZXIubW9k
aWZpZXJzKSB7XG4gICAgcmV0dXJuIGlzTWV0aG9kUGF0aCB8fCBpc0Z1bmN0aW9uRXhwcmVzc2lv
blxuICAgICAgPyBoYW5kbGVyLnZhbHVlXG4gICAgICA6IChcImZ1bmN0aW9uKCRldmVudCl7XCIg
KyAoaGFuZGxlci52YWx1ZSkgKyBcIn1cIikgLy8gaW5saW5lIHN0YXRlbWVudFxuICB9IGVsc2Ug
e1xuICAgIHZhciBjb2RlID0gJyc7XG4gICAgdmFyIGdlbk1vZGlmaWVyQ29kZSA9ICcnO1xuICAg
IHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIGhhbmRsZXIubW9kaWZpZXJzKSB7
XG4gICAgICBpZiAobW9kaWZpZXJDb2RlW2tleV0pIHtcbiAgICAgICAgZ2VuTW9kaWZpZXJDb2Rl
ICs9IG1vZGlmaWVyQ29kZVtrZXldO1xuICAgICAgICAvLyBsZWZ0L3JpZ2h0XG4gICAgICAgIGlm
IChrZXlDb2Rlc1trZXldKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1c
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1c
biAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgIGNvZGUgKz0gZ2VuS2V5RmlsdGVyKGtleXMp
O1xuICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgbW9kaWZpZXJzIGxpa2UgcHJldmVudCBhbmQgc3Rv
cCBnZXQgZXhlY3V0ZWQgYWZ0ZXIga2V5IGZpbHRlcmluZ1xuICAgIGlmIChnZW5Nb2RpZmllckNv
ZGUpIHtcbiAgICAgIGNvZGUgKz0gZ2VuTW9kaWZpZXJDb2RlO1xuICAgIH1cbiAgICB2YXIgaGFu
ZGxlckNvZGUgPSBpc01ldGhvZFBhdGhcbiAgICAgID8gaGFuZGxlci52YWx1ZSArICcoJGV2ZW50
KSdcbiAgICAgIDogaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgICAgPyAoXCIoXCIgKyAoaGFu
ZGxlci52YWx1ZSkgKyBcIikoJGV2ZW50KVwiKVxuICAgICAgICA6IGhhbmRsZXIudmFsdWU7XG4g
ICAgcmV0dXJuIChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyBjb2RlICsgaGFuZGxlckNvZGUgKyBc
In1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5LZXlGaWx0ZXIgKGtleXMpIHtcbiAgcmV0dXJu
IChcImlmKCEoJ2J1dHRvbicgaW4gJGV2ZW50KSYmXCIgKyAoa2V5cy5tYXAoZ2VuRmlsdGVyQ29k
ZSkuam9pbignJiYnKSkgKyBcIilyZXR1cm4gbnVsbDtcIilcbn1cblxuZnVuY3Rpb24gZ2VuRmls
dGVyQ29kZSAoa2V5KSB7XG4gIHZhciBrZXlWYWwgPSBwYXJzZUludChrZXksIDEwKTtcbiAgaWYg
KGtleVZhbCkge1xuICAgIHJldHVybiAoXCIkZXZlbnQua2V5Q29kZSE9PVwiICsga2V5VmFsKVxu
ICB9XG4gIHZhciBhbGlhcyA9IGtleUNvZGVzW2tleV07XG4gIHJldHVybiAoXCJfaygkZXZlbnQu
a2V5Q29kZSxcIiArIChKU09OLnN0cmluZ2lmeShrZXkpKSArIChhbGlhcyA/ICcsJyArIEpTT04u
c3RyaW5naWZ5KGFsaWFzKSA6ICcnKSArIFwiKVwiKVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24g
b24gKGVsLCBkaXIpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgJiYgZGlyLm1vZGlmaWVycykge1xuICAgIHdhcm4oXCJ2LW9uIHdpdGhvdXQgYXJndW1lbnQg
ZG9lcyBub3Qgc3VwcG9ydCBtb2RpZmllcnMuXCIpO1xuICB9XG4gIGVsLndyYXBMaXN0ZW5lcnMg
PSBmdW5jdGlvbiAoY29kZSkgeyByZXR1cm4gKFwiX2coXCIgKyBjb2RlICsgXCIsXCIgKyAoZGly
LnZhbHVlKSArIFwiKVwiKTsgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmQkMSAoZWws
IGRpcikge1xuICBlbC53cmFwRGF0YSA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIChc
Il9iKFwiICsgY29kZSArIFwiLCdcIiArIChlbC50YWcpICsgXCInLFwiICsgKGRpci52YWx1ZSkg
KyBcIixcIiArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2RpZmllcnMucHJvcCA/ICd0cnVlJyA6
ICdmYWxzZScpICsgKGRpci5tb2RpZmllcnMgJiYgZGlyLm1vZGlmaWVycy5zeW5jID8gJyx0cnVl
JyA6ICcnKSArIFwiKVwiKVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIGJhc2VEaXJlY3RpdmVz
ID0ge1xuICBvbjogb24sXG4gIGJpbmQ6IGJpbmQkMSxcbiAgY2xvYWs6IG5vb3Bcbn07XG5cbi8q
ICAqL1xuXG52YXIgQ29kZWdlblN0YXRlID0gZnVuY3Rpb24gQ29kZWdlblN0YXRlIChvcHRpb25z
KSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMud2FybiA9IG9wdGlvbnMud2Fy
biB8fCBiYXNlV2FybjtcbiAgdGhpcy50cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihv
cHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Db2RlJyk7XG4gIHRoaXMuZGF0YUdlbkZucyA9IHBs
dWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAnZ2VuRGF0YScpO1xuICB0aGlzLmRp
cmVjdGl2ZXMgPSBleHRlbmQoZXh0ZW5kKHt9LCBiYXNlRGlyZWN0aXZlcyksIG9wdGlvbnMuZGly
ZWN0aXZlcyk7XG4gIHZhciBpc1Jlc2VydmVkVGFnID0gb3B0aW9ucy5pc1Jlc2VydmVkVGFnIHx8
IG5vO1xuICB0aGlzLm1heWJlQ29tcG9uZW50ID0gZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaXNS
ZXNlcnZlZFRhZyhlbC50YWcpOyB9O1xuICB0aGlzLm9uY2VJZCA9IDA7XG4gIHRoaXMuc3RhdGlj
UmVuZGVyRm5zID0gW107XG59O1xuXG5cblxuZnVuY3Rpb24gZ2VuZXJhdGUgKFxuICBhc3QsXG4g
IG9wdGlvbnNcbikge1xuICB2YXIgc3RhdGUgPSBuZXcgQ29kZWdlblN0YXRlKG9wdGlvbnMpO1xu
ICB2YXIgY29kZSA9IGFzdCA/IGdlbkVsZW1lbnQoYXN0LCBzdGF0ZSkgOiAnX2MoXCJkaXZcIikn
O1xuICByZXR1cm4ge1xuICAgIHJlbmRlcjogKFwid2l0aCh0aGlzKXtyZXR1cm4gXCIgKyBjb2Rl
ICsgXCJ9XCIpLFxuICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGUuc3RhdGljUmVuZGVyRm5zXG4g
IH1cbn1cblxuZnVuY3Rpb24gZ2VuRWxlbWVudCAoZWwsIHN0YXRlKSB7XG4gIGlmIChlbC5zdGF0
aWNSb290ICYmICFlbC5zdGF0aWNQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVs
LCBzdGF0ZSlcbiAgfSBlbHNlIGlmIChlbC5vbmNlICYmICFlbC5vbmNlUHJvY2Vzc2VkKSB7XG4g
ICAgcmV0dXJuIGdlbk9uY2UoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLmZvciAmJiAhZWwu
Zm9yUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbkZvcihlbCwgc3RhdGUpXG4gIH0gZWxzZSBp
ZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlbklmKGVsLCBzdGF0
ZSlcbiAgfSBlbHNlIGlmIChlbC50YWcgPT09ICd0ZW1wbGF0ZScgJiYgIWVsLnNsb3RUYXJnZXQp
IHtcbiAgICByZXR1cm4gZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKSB8fCAndm9pZCAwJ1xuICB9IGVs
c2UgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgcmV0dXJuIGdlblNsb3QoZWwsIHN0YXRl
KVxuICB9IGVsc2Uge1xuICAgIC8vIGNvbXBvbmVudCBvciBlbGVtZW50XG4gICAgdmFyIGNvZGU7
XG4gICAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgICAgY29kZSA9IGdlbkNvbXBvbmVudChlbC5j
b21wb25lbnQsIGVsLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkYXRhID0gZWwu
cGxhaW4gPyB1bmRlZmluZWQgOiBnZW5EYXRhJDIoZWwsIHN0YXRlKTtcblxuICAgICAgdmFyIGNo
aWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2VuQ2hpbGRyZW4oZWwsIHN0YXRl
LCB0cnVlKTtcbiAgICAgIGNvZGUgPSBcIl9jKCdcIiArIChlbC50YWcpICsgXCInXCIgKyAoZGF0
YSA/IChcIixcIiArIGRhdGEpIDogJycpICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4p
IDogJycpICsgXCIpXCI7XG4gICAgfVxuICAgIC8vIG1vZHVsZSB0cmFuc2Zvcm1zXG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS50cmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBj
b2RlID0gc3RhdGUudHJhbnNmb3Jtc1tpXShlbCwgY29kZSk7XG4gICAgfVxuICAgIHJldHVybiBj
b2RlXG4gIH1cbn1cblxuLy8gaG9pc3Qgc3RhdGljIHN1Yi10cmVlcyBvdXRcbmZ1bmN0aW9uIGdl
blN0YXRpYyAoZWwsIHN0YXRlKSB7XG4gIGVsLnN0YXRpY1Byb2Nlc3NlZCA9IHRydWU7XG4gIHN0
YXRlLnN0YXRpY1JlbmRlckZucy5wdXNoKChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgKGdlbkVs
ZW1lbnQoZWwsIHN0YXRlKSkgKyBcIn1cIikpO1xuICByZXR1cm4gKFwiX20oXCIgKyAoc3RhdGUu
c3RhdGljUmVuZGVyRm5zLmxlbmd0aCAtIDEpICsgKGVsLnN0YXRpY0luRm9yID8gJyx0cnVlJyA6
ICcnKSArIFwiKVwiKVxufVxuXG4vLyB2LW9uY2VcbmZ1bmN0aW9uIGdlbk9uY2UgKGVsLCBzdGF0
ZSkge1xuICBlbC5vbmNlUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgaWYgKGVsLmlmICYmICFlbC5pZlBy
b2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwu
c3RhdGljSW5Gb3IpIHtcbiAgICB2YXIga2V5ID0gJyc7XG4gICAgdmFyIHBhcmVudCA9IGVsLnBh
cmVudDtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBpZiAocGFyZW50LmZvcikge1xuICAg
ICAgICBrZXkgPSBwYXJlbnQua2V5O1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgcGFy
ZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc3RhdGUud2FybihcbiAgICAgICAg
XCJ2LW9uY2UgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgdi1mb3IgdGhhdCBpcyBrZXllZC4gXCJc
biAgICAgICk7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbCwgc3RhdGUpXG4gICAgfVxuICAg
IHJldHVybiAoXCJfbyhcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCIsXCIgKyAoc3Rh
dGUub25jZUlkKyspICsgKGtleSA/IChcIixcIiArIGtleSkgOiBcIlwiKSArIFwiKVwiKVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiBnZW5TdGF0aWMoZWwsIHN0YXRlKVxuICB9XG59XG5cbmZ1bmN0
aW9uIGdlbklmIChcbiAgZWwsXG4gIHN0YXRlLFxuICBhbHRHZW4sXG4gIGFsdEVtcHR5XG4pIHtc
biAgZWwuaWZQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0dXJuIGdl
bklmQ29uZGl0aW9ucyhlbC5pZkNvbmRpdGlvbnMuc2xpY2UoKSwgc3RhdGUsIGFsdEdlbiwgYWx0
RW1wdHkpXG59XG5cbmZ1bmN0aW9uIGdlbklmQ29uZGl0aW9ucyAoXG4gIGNvbmRpdGlvbnMsXG4g
IHN0YXRlLFxuICBhbHRHZW4sXG4gIGFsdEVtcHR5XG4pIHtcbiAgaWYgKCFjb25kaXRpb25zLmxl
bmd0aCkge1xuICAgIHJldHVybiBhbHRFbXB0eSB8fCAnX2UoKSdcbiAgfVxuXG4gIHZhciBjb25k
aXRpb24gPSBjb25kaXRpb25zLnNoaWZ0KCk7XG4gIGlmIChjb25kaXRpb24uZXhwKSB7XG4gICAg
cmV0dXJuIChcIihcIiArIChjb25kaXRpb24uZXhwKSArIFwiKT9cIiArIChnZW5UZXJuYXJ5RXhw
KGNvbmRpdGlvbi5ibG9jaykpICsgXCI6XCIgKyAoZ2VuSWZDb25kaXRpb25zKGNvbmRpdGlvbnMs
IHN0YXRlLCBhbHRHZW4sIGFsdEVtcHR5KSkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcIlwi
ICsgKGdlblRlcm5hcnlFeHAoY29uZGl0aW9uLmJsb2NrKSkpXG4gIH1cblxuICAvLyB2LWlmIHdp
dGggdi1vbmNlIHNob3VsZCBnZW5lcmF0ZSBjb2RlIGxpa2UgKGEpP19tKDApOl9tKDEpXG4gIGZ1
bmN0aW9uIGdlblRlcm5hcnlFeHAgKGVsKSB7XG4gICAgcmV0dXJuIGFsdEdlblxuICAgICAgPyBh
bHRHZW4oZWwsIHN0YXRlKVxuICAgICAgOiBlbC5vbmNlXG4gICAgICAgID8gZ2VuT25jZShlbCwg
c3RhdGUpXG4gICAgICAgIDogZ2VuRWxlbWVudChlbCwgc3RhdGUpXG4gIH1cbn1cblxuZnVuY3Rp
b24gZ2VuRm9yIChcbiAgZWwsXG4gIHN0YXRlLFxuICBhbHRHZW4sXG4gIGFsdEhlbHBlclxuKSB7
XG4gIHZhciBleHAgPSBlbC5mb3I7XG4gIHZhciBhbGlhcyA9IGVsLmFsaWFzO1xuICB2YXIgaXRl
cmF0b3IxID0gZWwuaXRlcmF0b3IxID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMSkpIDogJyc7XG4g
IHZhciBpdGVyYXRvcjIgPSBlbC5pdGVyYXRvcjIgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IyKSkg
OiAnJztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxu
ICAgIHN0YXRlLm1heWJlQ29tcG9uZW50KGVsKSAmJlxuICAgIGVsLnRhZyAhPT0gJ3Nsb3QnICYm
XG4gICAgZWwudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgIWVsLmtleVxuICApIHtcbiAgICBz
dGF0ZS53YXJuKFxuICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtZm9yPVxcXCJcIiArIGFs
aWFzICsgXCIgaW4gXCIgKyBleHAgKyBcIlxcXCI+OiBjb21wb25lbnQgbGlzdHMgcmVuZGVyZWQg
d2l0aCBcIiArXG4gICAgICBcInYtZm9yIHNob3VsZCBoYXZlIGV4cGxpY2l0IGtleXMuIFwiICtc
biAgICAgIFwiU2VlIGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2xpc3QuaHRtbCNrZXkgZm9yIG1v
cmUgaW5mby5cIixcbiAgICAgIHRydWUgLyogdGlwICovXG4gICAgKTtcbiAgfVxuXG4gIGVsLmZv
clByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gKGFsdEhlbHBl
ciB8fCAnX2wnKSArIFwiKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiAr
IGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJu
IFwiICsgKChhbHRHZW4gfHwgZ2VuRWxlbWVudCkoZWwsIHN0YXRlKSkgK1xuICAgICd9KSdcbn1c
blxuZnVuY3Rpb24gZ2VuRGF0YSQyIChlbCwgc3RhdGUpIHtcbiAgdmFyIGRhdGEgPSAneyc7XG5c
biAgLy8gZGlyZWN0aXZlcyBmaXJzdC5cbiAgLy8gZGlyZWN0aXZlcyBtYXkgbXV0YXRlIHRoZSBl
bCdzIG90aGVyIHByb3BlcnRpZXMgYmVmb3JlIHRoZXkgYXJlIGdlbmVyYXRlZC5cbiAgdmFyIGRp
cnMgPSBnZW5EaXJlY3RpdmVzKGVsLCBzdGF0ZSk7XG4gIGlmIChkaXJzKSB7IGRhdGEgKz0gZGly
cyArICcsJzsgfVxuXG4gIC8vIGtleVxuICBpZiAoZWwua2V5KSB7XG4gICAgZGF0YSArPSBcImtl
eTpcIiArIChlbC5rZXkpICsgXCIsXCI7XG4gIH1cbiAgLy8gcmVmXG4gIGlmIChlbC5yZWYpIHtc
biAgICBkYXRhICs9IFwicmVmOlwiICsgKGVsLnJlZikgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwu
cmVmSW5Gb3IpIHtcbiAgICBkYXRhICs9IFwicmVmSW5Gb3I6dHJ1ZSxcIjtcbiAgfVxuICAvLyBw
cmVcbiAgaWYgKGVsLnByZSkge1xuICAgIGRhdGEgKz0gXCJwcmU6dHJ1ZSxcIjtcbiAgfVxuICAv
LyByZWNvcmQgb3JpZ2luYWwgdGFnIG5hbWUgZm9yIGNvbXBvbmVudHMgdXNpbmcgXCJpc1wiIGF0
dHJpYnV0ZVxuICBpZiAoZWwuY29tcG9uZW50KSB7XG4gICAgZGF0YSArPSBcInRhZzpcXFwiXCIg
KyAoZWwudGFnKSArIFwiXFxcIixcIjtcbiAgfVxuICAvLyBtb2R1bGUgZGF0YSBnZW5lcmF0aW9u
IGZ1bmN0aW9uc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmRhdGFHZW5GbnMubGVuZ3Ro
OyBpKyspIHtcbiAgICBkYXRhICs9IHN0YXRlLmRhdGFHZW5GbnNbaV0oZWwpO1xuICB9XG4gIC8v
IGF0dHJpYnV0ZXNcbiAgaWYgKGVsLmF0dHJzKSB7XG4gICAgZGF0YSArPSBcImF0dHJzOntcIiAr
IChnZW5Qcm9wcyhlbC5hdHRycykpICsgXCJ9LFwiO1xuICB9XG4gIC8vIERPTSBwcm9wc1xuICBp
ZiAoZWwucHJvcHMpIHtcbiAgICBkYXRhICs9IFwiZG9tUHJvcHM6e1wiICsgKGdlblByb3BzKGVs
LnByb3BzKSkgKyBcIn0sXCI7XG4gIH1cbiAgLy8gZXZlbnQgaGFuZGxlcnNcbiAgaWYgKGVsLmV2
ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLmV2ZW50cywgZmFsc2UsIHN0YXRl
Lndhcm4pKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5uYXRpdmVFdmVudHMpIHtcbiAgICBkYXRh
ICs9IChnZW5IYW5kbGVycyhlbC5uYXRpdmVFdmVudHMsIHRydWUsIHN0YXRlLndhcm4pKSArIFwi
LFwiO1xuICB9XG4gIC8vIHNsb3QgdGFyZ2V0XG4gIGlmIChlbC5zbG90VGFyZ2V0KSB7XG4gICAg
ZGF0YSArPSBcInNsb3Q6XCIgKyAoZWwuc2xvdFRhcmdldCkgKyBcIixcIjtcbiAgfVxuICAvLyBz
Y29wZWQgc2xvdHNcbiAgaWYgKGVsLnNjb3BlZFNsb3RzKSB7XG4gICAgZGF0YSArPSAoZ2VuU2Nv
cGVkU2xvdHMoZWwuc2NvcGVkU2xvdHMsIHN0YXRlKSkgKyBcIixcIjtcbiAgfVxuICAvLyBjb21w
b25lbnQgdi1tb2RlbFxuICBpZiAoZWwubW9kZWwpIHtcbiAgICBkYXRhICs9IFwibW9kZWw6e3Zh
bHVlOlwiICsgKGVsLm1vZGVsLnZhbHVlKSArIFwiLGNhbGxiYWNrOlwiICsgKGVsLm1vZGVsLmNh
bGxiYWNrKSArIFwiLGV4cHJlc3Npb246XCIgKyAoZWwubW9kZWwuZXhwcmVzc2lvbikgKyBcIn0s
XCI7XG4gIH1cbiAgLy8gaW5saW5lLXRlbXBsYXRlXG4gIGlmIChlbC5pbmxpbmVUZW1wbGF0ZSkg
e1xuICAgIHZhciBpbmxpbmVUZW1wbGF0ZSA9IGdlbklubGluZVRlbXBsYXRlKGVsLCBzdGF0ZSk7
XG4gICAgaWYgKGlubGluZVRlbXBsYXRlKSB7XG4gICAgICBkYXRhICs9IGlubGluZVRlbXBsYXRl
ICsgXCIsXCI7XG4gICAgfVxuICB9XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoLywkLywgJycpICsg
J30nO1xuICAvLyB2LWJpbmQgZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwRGF0YSkge1xuICAgIGRh
dGEgPSBlbC53cmFwRGF0YShkYXRhKTtcbiAgfVxuICAvLyB2LW9uIGRhdGEgd3JhcFxuICBpZiAo
ZWwud3JhcExpc3RlbmVycykge1xuICAgIGRhdGEgPSBlbC53cmFwTGlzdGVuZXJzKGRhdGEpO1xu
ICB9XG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIGdlbkRpcmVjdGl2ZXMgKGVsLCBzdGF0
ZSkge1xuICB2YXIgZGlycyA9IGVsLmRpcmVjdGl2ZXM7XG4gIGlmICghZGlycykgeyByZXR1cm4g
fVxuICB2YXIgcmVzID0gJ2RpcmVjdGl2ZXM6Wyc7XG4gIHZhciBoYXNSdW50aW1lID0gZmFsc2U7
XG4gIHZhciBpLCBsLCBkaXIsIG5lZWRSdW50aW1lO1xuICBmb3IgKGkgPSAwLCBsID0gZGlycy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBkaXIgPSBkaXJzW2ldO1xuICAgIG5lZWRSdW50aW1l
ID0gdHJ1ZTtcbiAgICB2YXIgZ2VuID0gc3RhdGUuZGlyZWN0aXZlc1tkaXIubmFtZV07XG4gICAg
aWYgKGdlbikge1xuICAgICAgLy8gY29tcGlsZS10aW1lIGRpcmVjdGl2ZSB0aGF0IG1hbmlwdWxh
dGVzIEFTVC5cbiAgICAgIC8vIHJldHVybnMgdHJ1ZSBpZiBpdCBhbHNvIG5lZWRzIGEgcnVudGlt
ZSBjb3VudGVycGFydC5cbiAgICAgIG5lZWRSdW50aW1lID0gISFnZW4oZWwsIGRpciwgc3RhdGUu
d2Fybik7XG4gICAgfVxuICAgIGlmIChuZWVkUnVudGltZSkge1xuICAgICAgaGFzUnVudGltZSA9
IHRydWU7XG4gICAgICByZXMgKz0gXCJ7bmFtZTpcXFwiXCIgKyAoZGlyLm5hbWUpICsgXCJcXFwi
LHJhd05hbWU6XFxcIlwiICsgKGRpci5yYXdOYW1lKSArIFwiXFxcIlwiICsgKGRpci52YWx1ZSA/
IChcIix2YWx1ZTooXCIgKyAoZGlyLnZhbHVlKSArIFwiKSxleHByZXNzaW9uOlwiICsgKEpTT04u
c3RyaW5naWZ5KGRpci52YWx1ZSkpKSA6ICcnKSArIChkaXIuYXJnID8gKFwiLGFyZzpcXFwiXCIg
KyAoZGlyLmFyZykgKyBcIlxcXCJcIikgOiAnJykgKyAoZGlyLm1vZGlmaWVycyA/IChcIixtb2Rp
ZmllcnM6XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLm1vZGlmaWVycykpKSA6ICcnKSArIFwifSxc
IjtcbiAgICB9XG4gIH1cbiAgaWYgKGhhc1J1bnRpbWUpIHtcbiAgICByZXR1cm4gcmVzLnNsaWNl
KDAsIC0xKSArICddJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklubGluZVRlbXBsYXRlIChlbCwg
c3RhdGUpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoID4g
MSB8fCBhc3QudHlwZSAhPT0gMVxuICApKSB7XG4gICAgc3RhdGUud2FybignSW5saW5lLXRlbXBs
YXRlIGNvbXBvbmVudHMgbXVzdCBoYXZlIGV4YWN0bHkgb25lIGNoaWxkIGVsZW1lbnQuJyk7XG4g
IH1cbiAgaWYgKGFzdC50eXBlID09PSAxKSB7XG4gICAgdmFyIGlubGluZVJlbmRlckZucyA9IGdl
bmVyYXRlKGFzdCwgc3RhdGUub3B0aW9ucyk7XG4gICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRl
OntyZW5kZXI6ZnVuY3Rpb24oKXtcIiArIChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxz
dGF0aWNSZW5kZXJGbnM6W1wiICsgKGlubGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFw
KGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwi
KTsgfSkuam9pbignLCcpKSArIFwiXX1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRT
bG90cyAoXG4gIHNsb3RzLFxuICBzdGF0ZVxuKSB7XG4gIHJldHVybiAoXCJzY29wZWRTbG90czpf
dShbXCIgKyAoT2JqZWN0LmtleXMoc2xvdHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBy
ZXR1cm4gZ2VuU2NvcGVkU2xvdChrZXksIHNsb3RzW2tleV0sIHN0YXRlKVxuICAgIH0pLmpvaW4o
JywnKSkgKyBcIl0pXCIpXG59XG5cbmZ1bmN0aW9uIGdlblNjb3BlZFNsb3QgKFxuICBrZXksXG4g
IGVsLFxuICBzdGF0ZVxuKSB7XG4gIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xu
ICAgIHJldHVybiBnZW5Gb3JTY29wZWRTbG90KGtleSwgZWwsIHN0YXRlKVxuICB9XG4gIHJldHVy
biBcIntrZXk6XCIgKyBrZXkgKyBcIixmbjpmdW5jdGlvbihcIiArIChTdHJpbmcoZWwuYXR0cnNN
YXAuc2NvcGUpKSArIFwiKXtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAoZWwudGFnID09PSAndGVt
cGxhdGUnXG4gICAgICA/IGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSkgfHwgJ3ZvaWQgMCdcbiAgICAg
IDogZ2VuRWxlbWVudChlbCwgc3RhdGUpKSArIFwifX1cIlxufVxuXG5mdW5jdGlvbiBnZW5Gb3JT
Y29wZWRTbG90IChcbiAga2V5LFxuICBlbCxcbiAgc3RhdGVcbikge1xuICB2YXIgZXhwID0gZWwu
Zm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJh
dG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0g
ZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG4gIGVsLmZvclBy
b2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gXCJfbCgoXCIgKyBl
eHAgKyBcIiksXCIgK1xuICAgIFwiZnVuY3Rpb24oXCIgKyBhbGlhcyArIGl0ZXJhdG9yMSArIGl0
ZXJhdG9yMiArIFwiKXtcIiArXG4gICAgICBcInJldHVybiBcIiArIChnZW5TY29wZWRTbG90KGtl
eSwgZWwsIHN0YXRlKSkgK1xuICAgICd9KSdcbn1cblxuZnVuY3Rpb24gZ2VuQ2hpbGRyZW4gKFxu
ICBlbCxcbiAgc3RhdGUsXG4gIGNoZWNrU2tpcCxcbiAgYWx0R2VuRWxlbWVudCxcbiAgYWx0R2Vu
Tm9kZVxuKSB7XG4gIHZhciBjaGlsZHJlbiA9IGVsLmNoaWxkcmVuO1xuICBpZiAoY2hpbGRyZW4u
bGVuZ3RoKSB7XG4gICAgdmFyIGVsJDEgPSBjaGlsZHJlblswXTtcbiAgICAvLyBvcHRpbWl6ZSBz
aW5nbGUgdi1mb3JcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXG4gICAgICBlbCQx
LmZvciAmJlxuICAgICAgZWwkMS50YWcgIT09ICd0ZW1wbGF0ZScgJiZcbiAgICAgIGVsJDEudGFn
ICE9PSAnc2xvdCdcbiAgICApIHtcbiAgICAgIHJldHVybiAoYWx0R2VuRWxlbWVudCB8fCBnZW5F
bGVtZW50KShlbCQxLCBzdGF0ZSlcbiAgICB9XG4gICAgdmFyIG5vcm1hbGl6YXRpb25UeXBlID0g
Y2hlY2tTa2lwXG4gICAgICA/IGdldE5vcm1hbGl6YXRpb25UeXBlKGNoaWxkcmVuLCBzdGF0ZS5t
YXliZUNvbXBvbmVudClcbiAgICAgIDogMDtcbiAgICB2YXIgZ2VuID0gYWx0R2VuTm9kZSB8fCBn
ZW5Ob2RlO1xuICAgIHJldHVybiAoXCJbXCIgKyAoY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjKSB7
IHJldHVybiBnZW4oYywgc3RhdGUpOyB9KS5qb2luKCcsJykpICsgXCJdXCIgKyAobm9ybWFsaXph
dGlvblR5cGUgPyAoXCIsXCIgKyBub3JtYWxpemF0aW9uVHlwZSkgOiAnJykpXG4gIH1cbn1cblxu
Ly8gZGV0ZXJtaW5lIHRoZSBub3JtYWxpemF0aW9uIG5lZWRlZCBmb3IgdGhlIGNoaWxkcmVuIGFy
cmF5LlxuLy8gMDogbm8gbm9ybWFsaXphdGlvbiBuZWVkZWRcbi8vIDE6IHNpbXBsZSBub3JtYWxp
emF0aW9uIG5lZWRlZCAocG9zc2libGUgMS1sZXZlbCBkZWVwIG5lc3RlZCBhcnJheSlcbi8vIDI6
IGZ1bGwgbm9ybWFsaXphdGlvbiBuZWVkZWRcbmZ1bmN0aW9uIGdldE5vcm1hbGl6YXRpb25UeXBl
IChcbiAgY2hpbGRyZW4sXG4gIG1heWJlQ29tcG9uZW50XG4pIHtcbiAgdmFyIHJlcyA9IDA7XG4g
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWwg
PSBjaGlsZHJlbltpXTtcbiAgICBpZiAoZWwudHlwZSAhPT0gMSkge1xuICAgICAgY29udGludWVc
biAgICB9XG4gICAgaWYgKG5lZWRzTm9ybWFsaXphdGlvbihlbCkgfHxcbiAgICAgICAgKGVsLmlm
Q29uZGl0aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyByZXR1cm4g
bmVlZHNOb3JtYWxpemF0aW9uKGMuYmxvY2spOyB9KSkpIHtcbiAgICAgIHJlcyA9IDI7XG4gICAg
ICBicmVha1xuICAgIH1cbiAgICBpZiAobWF5YmVDb21wb25lbnQoZWwpIHx8XG4gICAgICAgIChl
bC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0
dXJuIG1heWJlQ29tcG9uZW50KGMuYmxvY2spOyB9KSkpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAg
fVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gbmVlZHNOb3JtYWxpemF0aW9uIChl
bCkge1xuICByZXR1cm4gZWwuZm9yICE9PSB1bmRlZmluZWQgfHwgZWwudGFnID09PSAndGVtcGxh
dGUnIHx8IGVsLnRhZyA9PT0gJ3Nsb3QnXG59XG5cbmZ1bmN0aW9uIGdlbk5vZGUgKG5vZGUsIHN0
YXRlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICByZXR1cm4gZ2VuRWxlbWVudChu
b2RlLCBzdGF0ZSlcbiAgfSBpZiAobm9kZS50eXBlID09PSAzICYmIG5vZGUuaXNDb21tZW50KSB7
XG4gICAgcmV0dXJuIGdlbkNvbW1lbnQobm9kZSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2Vu
VGV4dChub2RlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlblRleHQgKHRleHQpIHtcbiAgcmV0dXJu
IChcIl92KFwiICsgKHRleHQudHlwZSA9PT0gMlxuICAgID8gdGV4dC5leHByZXNzaW9uIC8vIG5v
IG5lZWQgZm9yICgpIGJlY2F1c2UgYWxyZWFkeSB3cmFwcGVkIGluIF9zKClcbiAgICA6IHRyYW5z
Zm9ybVNwZWNpYWxOZXdsaW5lcyhKU09OLnN0cmluZ2lmeSh0ZXh0LnRleHQpKSkgKyBcIilcIilc
bn1cblxuZnVuY3Rpb24gZ2VuQ29tbWVudCAoY29tbWVudCkge1xuICByZXR1cm4gKFwiX2UoXCIg
KyAoSlNPTi5zdHJpbmdpZnkoY29tbWVudC50ZXh0KSkgKyBcIilcIilcbn1cblxuZnVuY3Rpb24g
Z2VuU2xvdCAoZWwsIHN0YXRlKSB7XG4gIHZhciBzbG90TmFtZSA9IGVsLnNsb3ROYW1lIHx8ICdc
ImRlZmF1bHRcIic7XG4gIHZhciBjaGlsZHJlbiA9IGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSk7XG4g
IHZhciByZXMgPSBcIl90KFwiICsgc2xvdE5hbWUgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGls
ZHJlbikgOiAnJyk7XG4gIHZhciBhdHRycyA9IGVsLmF0dHJzICYmIChcIntcIiArIChlbC5hdHRy
cy5tYXAoZnVuY3Rpb24gKGEpIHsgcmV0dXJuICgoY2FtZWxpemUoYS5uYW1lKSkgKyBcIjpcIiAr
IChhLnZhbHVlKSk7IH0pLmpvaW4oJywnKSkgKyBcIn1cIik7XG4gIHZhciBiaW5kJCQxID0gZWwu
YXR0cnNNYXBbJ3YtYmluZCddO1xuICBpZiAoKGF0dHJzIHx8IGJpbmQkJDEpICYmICFjaGlsZHJl
bikge1xuICAgIHJlcyArPSBcIixudWxsXCI7XG4gIH1cbiAgaWYgKGF0dHJzKSB7XG4gICAgcmVz
ICs9IFwiLFwiICsgYXR0cnM7XG4gIH1cbiAgaWYgKGJpbmQkJDEpIHtcbiAgICByZXMgKz0gKGF0
dHJzID8gJycgOiAnLG51bGwnKSArIFwiLFwiICsgYmluZCQkMTtcbiAgfVxuICByZXR1cm4gcmVz
ICsgJyknXG59XG5cbi8vIGNvbXBvbmVudE5hbWUgaXMgZWwuY29tcG9uZW50LCB0YWtlIGl0IGFz
IGFyZ3VtZW50IHRvIHNodW4gZmxvdydzIHBlc3NpbWlzdGljIHJlZmluZW1lbnRcbmZ1bmN0aW9u
IGdlbkNvbXBvbmVudCAoXG4gIGNvbXBvbmVudE5hbWUsXG4gIGVsLFxuICBzdGF0ZVxuKSB7XG4g
IHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdlbkNoaWxkcmVuKGVs
LCBzdGF0ZSwgdHJ1ZSk7XG4gIHJldHVybiAoXCJfYyhcIiArIGNvbXBvbmVudE5hbWUgKyBcIixc
IiArIChnZW5EYXRhJDIoZWwsIHN0YXRlKSkgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJl
bikgOiAnJykgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gZ2VuUHJvcHMgKHByb3BzKSB7XG4gIHZh
ciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xu
ICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgcmVzICs9IFwiXFxcIlwiICsgKHByb3AubmFt
ZSkgKyBcIlxcXCI6XCIgKyAodHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzKHByb3AudmFsdWUpKSAr
IFwiLFwiO1xuICB9XG4gIHJldHVybiByZXMuc2xpY2UoMCwgLTEpXG59XG5cbi8vICMzODk1LCAj
NDI2OFxuZnVuY3Rpb24gdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzICh0ZXh0KSB7XG4gIHJldHVy
biB0ZXh0XG4gICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpXG4gICAgLnJlcGxh
Y2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScpXG59XG5cbi8qICAqL1xuXG4vLyB0aGVzZSBrZXl3
b3JkcyBzaG91bGQgbm90IGFwcGVhciBpbnNpZGUgZXhwcmVzc2lvbnMsIGJ1dCBvcGVyYXRvcnMg
bGlrZVxuLy8gdHlwZW9mLCBpbnN0YW5jZW9mIGFuZCBpbiBhcmUgYWxsb3dlZFxudmFyIHByb2hp
Yml0ZWRLZXl3b3JkUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkbyxpZixmb3IsbGV0
LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0
LCcgK1xuICAnc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0
dXJuLHN3aXRjaCxkZWZhdWx0LCcgK1xuICAnZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVn
Z2VyLGZ1bmN0aW9uLGFyZ3VtZW50cydcbikuc3BsaXQoJywnKS5qb2luKCdcXFxcYnxcXFxcYicp
ICsgJ1xcXFxiJyk7XG5cbi8vIHRoZXNlIHVuYXJ5IG9wZXJhdG9ycyBzaG91bGQgbm90IGJlIHVz
ZWQgYXMgcHJvcGVydHkvbWV0aG9kIG5hbWVzXG52YXIgdW5hcnlPcGVyYXRvcnNSRSA9IG5ldyBS
ZWdFeHAoJ1xcXFxiJyArIChcbiAgJ2RlbGV0ZSx0eXBlb2Ysdm9pZCdcbikuc3BsaXQoJywnKS5q
b2luKCdcXFxccypcXFxcKFteXFxcXCldKlxcXFwpfFxcXFxiJykgKyAnXFxcXHMqXFxcXChbXlxc
XFwpXSpcXFxcKScpO1xuXG4vLyBjaGVjayB2YWxpZCBpZGVudGlmaWVyIGZvciB2LWZvclxudmFy
IGlkZW50UkUgPSAvW0EtWmEtel8kXVtcXHckXSovO1xuXG4vLyBzdHJpcCBzdHJpbmdzIGluIGV4
cHJlc3Npb25zXG52YXIgc3RyaXBTdHJpbmdSRSA9IC8nKD86W14nXFxcXF18XFxcXC4pKid8XCIo
PzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpbXmBcXFxcXXxcXFxcLikqXFwkXFx7fFxcfSg/Olte
YFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxcXXxcXFxcLikqYC9nO1xuXG4vLyBkZXRlY3QgcHJv
YmxlbWF0aWMgZXhwcmVzc2lvbnMgaW4gYSB0ZW1wbGF0ZVxuZnVuY3Rpb24gZGV0ZWN0RXJyb3Jz
IChhc3QpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICBpZiAoYXN0KSB7XG4gICAgY2hlY2tOb2Rl
KGFzdCwgZXJyb3JzKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzXG59XG5cbmZ1bmN0aW9uIGNoZWNr
Tm9kZSAobm9kZSwgZXJyb3JzKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBmb3Ig
KHZhciBuYW1lIGluIG5vZGUuYXR0cnNNYXApIHtcbiAgICAgIGlmIChkaXJSRS50ZXN0KG5hbWUp
KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG5vZGUuYXR0cnNNYXBbbmFtZV07XG4gICAgICAgIGlm
ICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChuYW1lID09PSAndi1mb3InKSB7XG4gICAgICAgICAg
ICBjaGVja0Zvcihub2RlLCAoXCJ2LWZvcj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJy
b3JzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG9uUkUudGVzdChuYW1lKSkge1xuICAgICAgICAg
ICAgY2hlY2tFdmVudCh2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwi
KSwgZXJyb3JzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hlY2tFeHByZXNz
aW9uKHZhbHVlLCAobmFtZSArIFwiPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLCBlcnJvcnMp
O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5j
aGlsZHJlbikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0
aDsgaSsrKSB7XG4gICAgICAgIGNoZWNrTm9kZShub2RlLmNoaWxkcmVuW2ldLCBlcnJvcnMpO1xu
ICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IDIpIHtcbiAgICBjaGVj
a0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9uLCBub2RlLnRleHQsIGVycm9ycyk7XG4gIH1cbn1c
blxuZnVuY3Rpb24gY2hlY2tFdmVudCAoZXhwLCB0ZXh0LCBlcnJvcnMpIHtcbiAgdmFyIHN0aXBw
ZWQgPSBleHAucmVwbGFjZShzdHJpcFN0cmluZ1JFLCAnJyk7XG4gIHZhciBrZXl3b3JkTWF0Y2gg
PSBzdGlwcGVkLm1hdGNoKHVuYXJ5T3BlcmF0b3JzUkUpO1xuICBpZiAoa2V5d29yZE1hdGNoICYm
IHN0aXBwZWQuY2hhckF0KGtleXdvcmRNYXRjaC5pbmRleCAtIDEpICE9PSAnJCcpIHtcbiAgICBl
cnJvcnMucHVzaChcbiAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCB1bmFyeSBvcGVyYXRv
ciBhcyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAgICBcIlxcXCJcIiArIChrZXl3b3JkTWF0Y2hb
MF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIgKyAodGV4dC50cmltKCkpXG4gICAgKTtcbiAg
fVxuICBjaGVja0V4cHJlc3Npb24oZXhwLCB0ZXh0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBj
aGVja0ZvciAobm9kZSwgdGV4dCwgZXJyb3JzKSB7XG4gIGNoZWNrRXhwcmVzc2lvbihub2RlLmZv
ciB8fCAnJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuYWxpYXMsICd2
LWZvciBhbGlhcycsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJh
dG9yMSwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgZXJyb3JzKTtcbiAgY2hlY2tJZGVudGlmaWVy
KG5vZGUuaXRlcmF0b3IyLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCBlcnJvcnMpO1xufVxuXG5m
dW5jdGlvbiBjaGVja0lkZW50aWZpZXIgKGlkZW50LCB0eXBlLCB0ZXh0LCBlcnJvcnMpIHtcbiAg
aWYgKHR5cGVvZiBpZGVudCA9PT0gJ3N0cmluZycgJiYgIWlkZW50UkUudGVzdChpZGVudCkpIHtc
biAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlkIFwiICsgdHlwZSArIFwiIFxcXCJcIiArIGlkZW50
ICsgXCJcXFwiIGluIGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSkpO1xuICB9XG59XG5c
bmZ1bmN0aW9uIGNoZWNrRXhwcmVzc2lvbiAoZXhwLCB0ZXh0LCBlcnJvcnMpIHtcbiAgdHJ5IHtc
biAgICBuZXcgRnVuY3Rpb24oKFwicmV0dXJuIFwiICsgZXhwKSk7XG4gIH0gY2F0Y2ggKGUpIHtc
biAgICB2YXIga2V5d29yZE1hdGNoID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpLm1h
dGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xuICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcbiAgICAg
IGVycm9ycy5wdXNoKFxuICAgICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3JpcHQga2V5d29yZCBh
cyBwcm9wZXJ0eSBuYW1lOiBcIiArXG4gICAgICAgIFwiXFxcIlwiICsgKGtleXdvcmRNYXRjaFsw
XSkgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbiBcIiArICh0ZXh0LnRyaW0oKSlcbiAgICAgICk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5wdXNoKChcImludmFsaWQgZXhwcmVzc2lvbjogXCIg
KyAodGV4dC50cmltKCkpKSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBj
cmVhdGVGdW5jdGlvbiAoY29kZSwgZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBG
dW5jdGlvbihjb2RlKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvcnMucHVzaCh7IGVycjog
ZXJyLCBjb2RlOiBjb2RlIH0pO1xuICAgIHJldHVybiBub29wXG4gIH1cbn1cblxuZnVuY3Rpb24g
Y3JlYXRlQ29tcGlsZVRvRnVuY3Rpb25GbiAoY29tcGlsZSkge1xuICB2YXIgY2FjaGUgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuXG4gIHJldHVybiBmdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbnMg
KFxuICAgIHRlbXBsYXRlLFxuICAgIG9wdGlvbnMsXG4gICAgdm1cbiAgKSB7XG4gICAgb3B0aW9u
cyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gZGV0
ZWN0IHBvc3NpYmxlIENTUCByZXN0cmljdGlvblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEZ1
bmN0aW9uKCdyZXR1cm4gMScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZS50
b1N0cmluZygpLm1hdGNoKC91bnNhZmUtZXZhbHxDU1AvKSkge1xuICAgICAgICAgIHdhcm4oXG4g
ICAgICAgICAgICAnSXQgc2VlbXMgeW91IGFyZSB1c2luZyB0aGUgc3RhbmRhbG9uZSBidWlsZCBv
ZiBWdWUuanMgaW4gYW4gJyArXG4gICAgICAgICAgICAnZW52aXJvbm1lbnQgd2l0aCBDb250ZW50
IFNlY3VyaXR5IFBvbGljeSB0aGF0IHByb2hpYml0cyB1bnNhZmUtZXZhbC4gJyArXG4gICAgICAg
ICAgICAnVGhlIHRlbXBsYXRlIGNvbXBpbGVyIGNhbm5vdCB3b3JrIGluIHRoaXMgZW52aXJvbm1l
bnQuIENvbnNpZGVyICcgK1xuICAgICAgICAgICAgJ3JlbGF4aW5nIHRoZSBwb2xpY3kgdG8gYWxs
b3cgdW5zYWZlLWV2YWwgb3IgcHJlLWNvbXBpbGluZyB5b3VyICcgK1xuICAgICAgICAgICAgJ3Rl
bXBsYXRlcyBpbnRvIHJlbmRlciBmdW5jdGlvbnMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjaGVjayBjYWNoZVxuICAgIHZhciBrZXkgPSBvcHRp
b25zLmRlbGltaXRlcnNcbiAgICAgID8gU3RyaW5nKG9wdGlvbnMuZGVsaW1pdGVycykgKyB0ZW1w
bGF0ZVxuICAgICAgOiB0ZW1wbGF0ZTtcbiAgICBpZiAoY2FjaGVba2V5XSkge1xuICAgICAgcmV0
dXJuIGNhY2hlW2tleV1cbiAgICB9XG5cbiAgICAvLyBjb21waWxlXG4gICAgdmFyIGNvbXBpbGVk
ID0gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAvLyBjaGVjayBjb21waWxhdGlv
biBlcnJvcnMvdGlwc1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICBpZiAoY29tcGlsZWQuZXJyb3JzICYmIGNvbXBpbGVkLmVycm9ycy5sZW5n
dGgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIkVycm9yIGNvbXBpbGluZyB0ZW1wbGF0
ZTpcXG5cXG5cIiArIHRlbXBsYXRlICsgXCJcXG5cXG5cIiArXG4gICAgICAgICAgY29tcGlsZWQu
ZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9KS5qb2luKCdc
XG4nKSArICdcXG4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBp
ZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAgICAgICBjb21w
aWxlZC50aXBzLmZvckVhY2goZnVuY3Rpb24gKG1zZykgeyByZXR1cm4gdGlwKG1zZywgdm0pOyB9
KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0dXJuIGNvZGUgaW50byBmdW5jdGlvbnNcbiAg
ICB2YXIgcmVzID0ge307XG4gICAgdmFyIGZuR2VuRXJyb3JzID0gW107XG4gICAgcmVzLnJlbmRl
ciA9IGNyZWF0ZUZ1bmN0aW9uKGNvbXBpbGVkLnJlbmRlciwgZm5HZW5FcnJvcnMpO1xuICAgIHJl
cy5zdGF0aWNSZW5kZXJGbnMgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9u
IChjb2RlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb24oY29kZSwgZm5HZW5FcnJvcnMp
XG4gICAgfSk7XG5cbiAgICAvLyBjaGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVycm9ycy5cbiAg
ICAvLyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgY29t
cGlsZXIgaXRzZWxmLlxuICAgIC8vIG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9wbWVudCB1c2Vc
biAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCghY29tcGlsZWQuZXJyb3JzIHx8ICFj
b21waWxlZC5lcnJvcnMubGVuZ3RoKSAmJiBmbkdlbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAg
d2FybihcbiAgICAgICAgICBcIkZhaWxlZCB0byBnZW5lcmF0ZSByZW5kZXIgZnVuY3Rpb246XFxu
XFxuXCIgK1xuICAgICAgICAgIGZuR2VuRXJyb3JzLm1hcChmdW5jdGlvbiAocmVmKSB7XG4gICAg
ICAgICAgICB2YXIgZXJyID0gcmVmLmVycjtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmVmLmNv
ZGU7XG5cbiAgICAgICAgICAgIHJldHVybiAoKGVyci50b1N0cmluZygpKSArIFwiIGluXFxuXFxu
XCIgKyBjb2RlICsgXCJcXG5cIik7XG4gICAgICAgIH0pLmpvaW4oJ1xcbicpLFxuICAgICAgICAg
IHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChjYWNoZVtrZXld
ID0gcmVzKVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVDb21waWxlckNyZWF0
b3IgKGJhc2VDb21waWxlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVDb21waWxlciAoYmFz
ZU9wdGlvbnMpIHtcbiAgICBmdW5jdGlvbiBjb21waWxlIChcbiAgICAgIHRlbXBsYXRlLFxuICAg
ICAgb3B0aW9uc1xuICAgICkge1xuICAgICAgdmFyIGZpbmFsT3B0aW9ucyA9IE9iamVjdC5jcmVh
dGUoYmFzZU9wdGlvbnMpO1xuICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgdmFyIHRpcHMg
PSBbXTtcbiAgICAgIGZpbmFsT3B0aW9ucy53YXJuID0gZnVuY3Rpb24gKG1zZywgdGlwKSB7XG4g
ICAgICAgICh0aXAgPyB0aXBzIDogZXJyb3JzKS5wdXNoKG1zZyk7XG4gICAgICB9O1xuXG4gICAg
ICBpZiAob3B0aW9ucykge1xuICAgICAgICAvLyBtZXJnZSBjdXN0b20gbW9kdWxlc1xuICAgICAg
ICBpZiAob3B0aW9ucy5tb2R1bGVzKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25zLm1vZHVsZXMg
PVxuICAgICAgICAgICAgKGJhc2VPcHRpb25zLm1vZHVsZXMgfHwgW10pLmNvbmNhdChvcHRpb25z
Lm1vZHVsZXMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1lcmdlIGN1c3RvbSBkaXJlY3RpdmVz
XG4gICAgICAgIGlmIChvcHRpb25zLmRpcmVjdGl2ZXMpIHtcbiAgICAgICAgICBmaW5hbE9wdGlv
bnMuZGlyZWN0aXZlcyA9IGV4dGVuZChcbiAgICAgICAgICAgIE9iamVjdC5jcmVhdGUoYmFzZU9w
dGlvbnMuZGlyZWN0aXZlcyksXG4gICAgICAgICAgICBvcHRpb25zLmRpcmVjdGl2ZXNcbiAgICAg
ICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvcHkgb3RoZXIgb3B0aW9uc1xuICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGlmIChrZXkgIT09ICdtb2R1
bGVzJyAmJiBrZXkgIT09ICdkaXJlY3RpdmVzJykge1xuICAgICAgICAgICAgZmluYWxPcHRpb25z
W2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5c
biAgICAgIHZhciBjb21waWxlZCA9IGJhc2VDb21waWxlKHRlbXBsYXRlLCBmaW5hbE9wdGlvbnMp
O1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgZXJyb3JzLnB1c2guYXBwbHkoZXJyb3JzLCBkZXRlY3RFcnJvcnMoY29tcGlsZWQuYXN0
KSk7XG4gICAgICB9XG4gICAgICBjb21waWxlZC5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICBjb21w
aWxlZC50aXBzID0gdGlwcztcbiAgICAgIHJldHVybiBjb21waWxlZFxuICAgIH1cblxuICAgIHJl
dHVybiB7XG4gICAgICBjb21waWxlOiBjb21waWxlLFxuICAgICAgY29tcGlsZVRvRnVuY3Rpb25z
OiBjcmVhdGVDb21waWxlVG9GdW5jdGlvbkZuKGNvbXBpbGUpXG4gICAgfVxuICB9XG59XG5cbi8q
ICAqL1xuXG4vLyBgY3JlYXRlQ29tcGlsZXJDcmVhdG9yYCBhbGxvd3MgY3JlYXRpbmcgY29tcGls
ZXJzIHRoYXQgdXNlIGFsdGVybmF0aXZlXG4vLyBwYXJzZXIvb3B0aW1pemVyL2NvZGVnZW4sIGUu
ZyB0aGUgU1NSIG9wdGltaXppbmcgY29tcGlsZXIuXG4vLyBIZXJlIHdlIGp1c3QgZXhwb3J0IGEg
ZGVmYXVsdCBjb21waWxlciB1c2luZyB0aGUgZGVmYXVsdCBwYXJ0cy5cbnZhciBjcmVhdGVDb21w
aWxlciA9IGNyZWF0ZUNvbXBpbGVyQ3JlYXRvcihmdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRl
bXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0o
KSwgb3B0aW9ucyk7XG4gIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIHZhciBjb2RlID0gZ2Vu
ZXJhdGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICBhc3Q6IGFzdCxcbiAgICByZW5k
ZXI6IGNvZGUucmVuZGVyLFxuICAgIHN0YXRpY1JlbmRlckZuczogY29kZS5zdGF0aWNSZW5kZXJG
bnNcbiAgfVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmJDEgPSBjcmVhdGVDb21waWxlcihiYXNl
T3B0aW9ucyk7XG52YXIgY29tcGlsZVRvRnVuY3Rpb25zID0gcmVmJDEuY29tcGlsZVRvRnVuY3Rp
b25zO1xuXG4vKiAgKi9cblxudmFyIGlkVG9UZW1wbGF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoaWQp
IHtcbiAgdmFyIGVsID0gcXVlcnkoaWQpO1xuICByZXR1cm4gZWwgJiYgZWwuaW5uZXJIVE1MXG59
KTtcblxudmFyIG1vdW50ID0gVnVlJDMucHJvdG90eXBlLiRtb3VudDtcblZ1ZSQzLnByb3RvdHlw
ZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVs
ICYmIHF1ZXJ5KGVsKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGVsID09
PSBkb2N1bWVudC5ib2R5IHx8IGVsID09PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBc
IkRvIG5vdCBtb3VudCBWdWUgdG8gPGh0bWw+IG9yIDxib2R5PiAtIG1vdW50IHRvIG5vcm1hbCBl
bGVtZW50cyBpbnN0ZWFkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdmFy
IG9wdGlvbnMgPSB0aGlzLiRvcHRpb25zO1xuICAvLyByZXNvbHZlIHRlbXBsYXRlL2VsIGFuZCBj
b252ZXJ0IHRvIHJlbmRlciBmdW5jdGlvblxuICBpZiAoIW9wdGlvbnMucmVuZGVyKSB7XG4gICAg
dmFyIHRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAg
ICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0ZW1w
bGF0ZS5jaGFyQXQoMCkgPT09ICcjJykge1xuICAgICAgICAgIHRlbXBsYXRlID0gaWRUb1RlbXBs
YXRlKHRlbXBsYXRlKTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAg
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGVtcGxh
dGUpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgIChcIlRlbXBsYXRlIGVsZW1l
bnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiBcIiArIChvcHRpb25zLnRlbXBsYXRlKSksXG4gICAg
ICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4g
ICAgICB9IGVsc2UgaWYgKHRlbXBsYXRlLm5vZGVUeXBlKSB7XG4gICAgICAgIHRlbXBsYXRlID0g
dGVtcGxhdGUuaW5uZXJIVE1MO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKCdpbnZhbGlk
IHRlbXBsYXRlIG9wdGlvbjonICsgdGVtcGxhdGUsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAg
IHJldHVybiB0aGlzXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbCkge1xuICAgICAgdGVtcGxh
dGUgPSBnZXRPdXRlckhUTUwoZWwpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAg
ICAgbWFyaygnY29tcGlsZScpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVmID0gY29tcGlsZVRv
RnVuY3Rpb25zKHRlbXBsYXRlLCB7XG4gICAgICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBzaG91
bGREZWNvZGVOZXdsaW5lcyxcbiAgICAgICAgZGVsaW1pdGVyczogb3B0aW9ucy5kZWxpbWl0ZXJz
LFxuICAgICAgICBjb21tZW50czogb3B0aW9ucy5jb21tZW50c1xuICAgICAgfSwgdGhpcyk7XG4g
ICAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICAgIHZhciBzdGF0aWNSZW5kZXJGbnMg
PSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXI7XG4g
ICAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZucztcblxuICAgICAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAg
ICBtYXJrKCdjb21waWxlIGVuZCcpO1xuICAgICAgICBtZWFzdXJlKCgodGhpcy5fbmFtZSkgKyBc
IiBjb21waWxlXCIpLCAnY29tcGlsZScsICdjb21waWxlIGVuZCcpO1xuICAgICAgfVxuICAgIH1c
biAgfVxuICByZXR1cm4gbW91bnQuY2FsbCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLyoq
XG4gKiBHZXQgb3V0ZXJIVE1MIG9mIGVsZW1lbnRzLCB0YWtpbmcgY2FyZVxuICogb2YgU1ZHIGVs
ZW1lbnRzIGluIElFIGFzIHdlbGwuXG4gKi9cbmZ1bmN0aW9uIGdldE91dGVySFRNTCAoZWwpIHtc
biAgaWYgKGVsLm91dGVySFRNTCkge1xuICAgIHJldHVybiBlbC5vdXRlckhUTUxcbiAgfSBlbHNl
IHtcbiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4g
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVsLmNsb25lTm9kZSh0cnVlKSk7XG4gICAgcmV0dXJu
IGNvbnRhaW5lci5pbm5lckhUTUxcbiAgfVxufVxuXG5WdWUkMy5jb21waWxlID0gY29tcGlsZVRv
RnVuY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBWdWUkMztcblxuXG5cbi8vLy8vLy8vLy8vLy8v
Ly8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUvZGlzdC92dWUuZXNtLmpzXG4vLyBt
b2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMSIsIi8qIGdsb2JhbHMgX19WVUVfU1NS
X0NPTlRFWFRfXyAqL1xuXG4vLyB0aGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3Ig
Y2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQg
aW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5j
dGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3JpcHRFeHBvcnRzLFxuICBjb21waWxl
ZFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZp
ZXIgLyogc2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIgZXNNb2R1bGVcbiAgdmFyIHNjcmlwdEV4
cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cyB8fCB7fVxuXG4gIC8v
IEVTNiBtb2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUgPSB0eXBlb2YgcmF3U2NyaXB0RXhwb3J0
cy5kZWZhdWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24n
KSB7XG4gICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBvcnRzXG4gICAgc2NyaXB0RXhwb3J0cyA9
IHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5cbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1
Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRz
ID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlw
dEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChjb21waWxlZFRlbXBsYXRl
KSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxlZFRlbXBsYXRlLnJlbmRlclxuICAgIG9w
dGlvbnMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnNc
biAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2Nv
cGVJZCA9IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVy
KSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAg
ICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwg
Ly8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNv
bnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVu
dC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxc
biAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250
ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAg
ICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5q
ZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAg
aW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lz
dGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5j
ZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtc
biAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZp
ZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50
IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAg
ICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMp
IHtcbiAgICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIHZh
ciBmdW5jdGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFsXG4gICAgdmFyIGV4aXN0aW5nID0gZnVu
Y3Rpb25hbFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxuICAgICAgOiBvcHRpb25zLmJlZm9yZUNy
ZWF0ZVxuICAgIGlmICghZnVuY3Rpb25hbCkge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBy
ZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3Jl
YXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAg
ICAgIDogW2hvb2tdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlv
YWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9u
IHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNh
bGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nKGgsIGNvbnRleHQpXG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlc01vZHVsZTogZXNNb2R1bGUsXG4gICAg
ZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxu
XG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtbG9h
ZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplci5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9k
dWxlIGNodW5rcyA9IDEiLCJcblxuLy9cbi8vIEdlbmVyYXRlZCBvbiBUdWUgRGVjIDE2IDIwMTQg
MTI6MTM6NDcgR01UKzAxMDAgKENFVCkgYnkgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21l
bmkgJiB0aGUgQ29udHJpYnV0b3JzIChVc2luZyBDb2Rlc3VyZ2VvbikuXG4vLyBWZXJzaW9uIDEu
Mi42XG4vL1xuXG4oZnVuY3Rpb24gKGV4cG9ydHMpIHtcblxuLypcbiAqIGJyb3dzZXIuanM6IEJy
b3dzZXIgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBmb3IgZGlyZWN0b3IuXG4gKlxuICogKEMpIDIw
MTEsIENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pLCAmIHRoZSBDb250cmlidXRvcnMu
XG4gKiBNSVQgTElDRU5TRVxuICpcbiAqL1xuXG52YXIgZGxvYyA9IGRvY3VtZW50LmxvY2F0aW9u
O1xuXG5mdW5jdGlvbiBkbG9jSGFzaEVtcHR5KCkge1xuICAvLyBOb24tSUUgYnJvd3NlcnMgcmV0
dXJuICcnIHdoZW4gdGhlIGFkZHJlc3MgYmFyIHNob3dzICcjJzsgRGlyZWN0b3IncyBsb2dpY1xu
ICAvLyBhc3N1bWVzIGJvdGggbWVhbiBlbXB0eS5cbiAgcmV0dXJuIGRsb2MuaGFzaCA9PT0gJycg
fHwgZGxvYy5oYXNoID09PSAnIyc7XG59XG5cbnZhciBsaXN0ZW5lciA9IHtcbiAgbW9kZTogJ21v
ZGVybicsXG4gIGhhc2g6IGRsb2MuaGFzaCxcbiAgaGlzdG9yeTogZmFsc2UsXG5cbiAgY2hlY2s6
IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaCA9IGRsb2MuaGFzaDtcbiAgICBpZiAoaCAhPSB0aGlz
Lmhhc2gpIHtcbiAgICAgIHRoaXMuaGFzaCA9IGg7XG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQo
KTtcbiAgICB9XG4gIH0sXG5cbiAgZmlyZTogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm1v
ZGUgPT09ICdtb2Rlcm4nKSB7XG4gICAgICB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB3aW5kb3cu
b25wb3BzdGF0ZSgpIDogd2luZG93Lm9uaGFzaGNoYW5nZSgpO1xuICAgIH1cbiAgICBlbHNlIHtc
biAgICAgIHRoaXMub25IYXNoQ2hhbmdlZCgpO1xuICAgIH1cbiAgfSxcblxuICBpbml0OiBmdW5j
dGlvbiAoZm4sIGhpc3RvcnkpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5oaXN0
b3J5ID0gaGlzdG9yeTtcblxuICAgIGlmICghUm91dGVyLmxpc3RlbmVycykge1xuICAgICAgUm91
dGVyLmxpc3RlbmVycyA9IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uY2hhbmdlKG9uQ2hh
bmdlRXZlbnQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gUm91dGVyLmxpc3RlbmVycy5s
ZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgUm91dGVyLmxpc3RlbmVyc1tpXShvbkNoYW5n
ZUV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL25vdGUgSUU4IGlzIGJlaW5nIGNvdW50
ZWQgYXMgJ21vZGVybicgYmVjYXVzZSBpdCBoYXMgdGhlIGhhc2hjaGFuZ2UgZXZlbnRcbiAgICBp
ZiAoJ29uaGFzaGNoYW5nZScgaW4gd2luZG93ICYmIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09
IHVuZGVmaW5lZFxuICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gNykpIHtcbiAgICAg
IC8vIEF0IGxlYXN0IGZvciBub3cgSFRNTDUgaGlzdG9yeSBpcyBhdmFpbGFibGUgZm9yICdtb2Rl
cm4nIGJyb3dzZXJzIG9ubHlcbiAgICAgIGlmICh0aGlzLmhpc3RvcnkgPT09IHRydWUpIHtcbiAg
ICAgICAgLy8gVGhlcmUgaXMgYW4gb2xkIGJ1ZyBpbiBDaHJvbWUgdGhhdCBjYXVzZXMgb25wb3Bz
dGF0ZSB0byBmaXJlIGV2ZW5cbiAgICAgICAgLy8gdXBvbiBpbml0aWFsIHBhZ2UgbG9hZC4gU2lu
Y2UgdGhlIGhhbmRsZXIgaXMgcnVuIG1hbnVhbGx5IGluIGluaXQoKSxcbiAgICAgICAgLy8gdGhp
cyB3b3VsZCBjYXVzZSBDaHJvbWUgdG8gcnVuIGl0IHR3aXNlLiBDdXJyZW50bHkgdGhlIG9ubHlc
biAgICAgICAgLy8gd29ya2Fyb3VuZCBzZWVtcyB0byBiZSB0byBzZXQgdGhlIGhhbmRsZXIgYWZ0
ZXIgdGhlIGluaXRpYWwgcGFnZSBsb2FkXG4gICAgICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMDQwXG4gICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7XG4gICAgICAgICAgd2luZG93Lm9ucG9wc3RhdGUgPSBvbmNoYW5nZTtcbiAg
ICAgICAgfSwgNTAwKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB3aW5kb3cub25o
YXNoY2hhbmdlID0gb25jaGFuZ2U7XG4gICAgICB9XG4gICAgICB0aGlzLm1vZGUgPSAnbW9kZXJu
JztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvL1xuICAgICAgLy8gSUUgc3VwcG9ydCwgYmFz
ZWQgb24gYSBjb25jZXB0IGJ5IEVyaWsgQXJ2aWRzb24gLi4uXG4gICAgICAvL1xuICAgICAgdmFy
IGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICBmcmFtZS5p
ZCA9ICdzdGF0ZS1mcmFtZSc7XG4gICAgICBmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xu
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7XG4gICAgICB0aGlzLndyaXRl
RnJhbWUoJycpO1xuXG4gICAgICBpZiAoJ29ucHJvcGVydHljaGFuZ2UnIGluIGRvY3VtZW50ICYm
ICdhdHRhY2hFdmVudCcgaW4gZG9jdW1lbnQpIHtcbiAgICAgICAgZG9jdW1lbnQuYXR0YWNoRXZl
bnQoJ29ucHJvcGVydHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGV2ZW50
LnByb3BlcnR5TmFtZSA9PT0gJ2xvY2F0aW9uJykge1xuICAgICAgICAgICAgc2VsZi5jaGVjaygp
O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5zZXRJ
bnRlcnZhbChmdW5jdGlvbiAoKSB7IHNlbGYuY2hlY2soKTsgfSwgNTApO1xuXG4gICAgICB0aGlz
Lm9uSGFzaENoYW5nZWQgPSBvbmNoYW5nZTtcbiAgICAgIHRoaXMubW9kZSA9ICdsZWdhY3knO1xu
ICAgIH1cblxuICAgIFJvdXRlci5saXN0ZW5lcnMucHVzaChmbik7XG5cbiAgICByZXR1cm4gdGhp
cy5tb2RlO1xuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIChmbikge1xuICAgIGlmICghUm91
dGVyIHx8ICFSb3V0ZXIubGlzdGVuZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAg
dmFyIGxpc3RlbmVycyA9IFJvdXRlci5saXN0ZW5lcnM7XG5cbiAgICBmb3IgKHZhciBpID0gbGlz
dGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAobGlzdGVuZXJzW2ld
ID09PSBmbikge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAg
IH1cbiAgfSxcblxuICBzZXRIYXNoOiBmdW5jdGlvbiAocykge1xuICAgIC8vIE1vemlsbGEgYWx3
YXlzIGFkZHMgYW4gZW50cnkgdG8gdGhlIGhpc3RvcnlcbiAgICBpZiAodGhpcy5tb2RlID09PSAn
bGVnYWN5Jykge1xuICAgICAgdGhpcy53cml0ZUZyYW1lKHMpO1xuICAgIH1cblxuICAgIGlmICh0
aGlzLmhpc3RvcnkgPT09IHRydWUpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7
fSwgZG9jdW1lbnQudGl0bGUsIHMpO1xuICAgICAgLy8gRmlyZSBhbiBvbnBvcHN0YXRlIGV2ZW50
IG1hbnVhbGx5IHNpbmNlIHB1c2hpbmcgZG9lcyBub3Qgb2J2aW91c2x5XG4gICAgICAvLyB0cmln
Z2VyIHRoZSBwb3AgZXZlbnQuXG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgZGxvYy5oYXNoID0gKHNbMF0gPT09ICcvJykgPyBzIDogJy8nICsgcztcbiAgICB9XG4gICAg
cmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgd3JpdGVGcmFtZTogZnVuY3Rpb24gKHMpIHtcbiAgICAv
LyBJRSBzdXBwb3J0Li4uXG4gICAgdmFyIGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Rh
dGUtZnJhbWUnKTtcbiAgICB2YXIgZCA9IGYuY29udGVudERvY3VtZW50IHx8IGYuY29udGVudFdp
bmRvdy5kb2N1bWVudDtcbiAgICBkLm9wZW4oKTtcbiAgICBkLndyaXRlKFwiPHNjcmlwdD5faGFz
aCA9ICdcIiArIHMgKyBcIic7IG9ubG9hZCA9IHBhcmVudC5saXN0ZW5lci5zeW5jSGFzaDs8c2Ny
aXB0PlwiKTtcbiAgICBkLmNsb3NlKCk7XG4gIH0sXG5cbiAgc3luY0hhc2g6IGZ1bmN0aW9uICgp
IHtcbiAgICAvLyBJRSBzdXBwb3J0Li4uXG4gICAgdmFyIHMgPSB0aGlzLl9oYXNoO1xuICAgIGlm
IChzICE9IGRsb2MuaGFzaCkge1xuICAgICAgZGxvYy5oYXNoID0gcztcbiAgICB9XG4gICAgcmV0
dXJuIHRoaXM7XG4gIH0sXG5cbiAgb25IYXNoQ2hhbmdlZDogZnVuY3Rpb24gKCkge31cbn07XG5c
bnZhciBSb3V0ZXIgPSBleHBvcnRzLlJvdXRlciA9IGZ1bmN0aW9uIChyb3V0ZXMpIHtcbiAgaWYg
KCEodGhpcyBpbnN0YW5jZW9mIFJvdXRlcikpIHJldHVybiBuZXcgUm91dGVyKHJvdXRlcyk7XG5c
biAgdGhpcy5wYXJhbXMgICA9IHt9O1xuICB0aGlzLnJvdXRlcyAgID0ge307XG4gIHRoaXMubWV0
aG9kcyAgPSBbJ29uJywgJ29uY2UnLCAnYWZ0ZXInLCAnYmVmb3JlJ107XG4gIHRoaXMuc2NvcGUg
ICAgPSBbXTtcbiAgdGhpcy5fbWV0aG9kcyA9IHt9O1xuXG4gIHRoaXMuX2luc2VydCA9IHRoaXMu
aW5zZXJ0O1xuICB0aGlzLmluc2VydCA9IHRoaXMuaW5zZXJ0RXg7XG5cbiAgdGhpcy5oaXN0b3J5
U3VwcG9ydCA9ICh3aW5kb3cuaGlzdG9yeSAhPSBudWxsID8gd2luZG93Lmhpc3RvcnkucHVzaFN0
YXRlIDogbnVsbCkgIT0gbnVsbFxuXG4gIHRoaXMuY29uZmlndXJlKCk7XG4gIHRoaXMubW91bnQo
cm91dGVzIHx8IHt9KTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChy
KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICAgICwgcm91dGVUbztcbiAgdGhpcy5oYW5kbGVyID0g
ZnVuY3Rpb24ob25DaGFuZ2VFdmVudCkge1xuICAgIHZhciBuZXdVUkwgPSBvbkNoYW5nZUV2ZW50
ICYmIG9uQ2hhbmdlRXZlbnQubmV3VVJMIHx8IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuICAgIHZh
ciB1cmwgPSBzZWxmLmhpc3RvcnkgPT09IHRydWUgPyBzZWxmLmdldFBhdGgoKSA6IG5ld1VSTC5y
ZXBsYWNlKC8uKiMvLCAnJyk7XG4gICAgc2VsZi5kaXNwYXRjaCgnb24nLCB1cmwuY2hhckF0KDAp
ID09PSAnLycgPyB1cmwgOiAnLycgKyB1cmwpO1xuICB9O1xuXG4gIGxpc3RlbmVyLmluaXQodGhp
cy5oYW5kbGVyLCB0aGlzLmhpc3RvcnkpO1xuXG4gIGlmICh0aGlzLmhpc3RvcnkgPT09IGZhbHNl
KSB7XG4gICAgaWYgKGRsb2NIYXNoRW1wdHkoKSAmJiByKSB7XG4gICAgICBkbG9jLmhhc2ggPSBy
O1xuICAgIH0gZWxzZSBpZiAoIWRsb2NIYXNoRW1wdHkoKSkge1xuICAgICAgc2VsZi5kaXNwYXRj
aCgnb24nLCAnLycgKyBkbG9jLmhhc2gucmVwbGFjZSgvXigjXFwvfCN8XFwvKS8sICcnKSk7XG4g
ICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIGlmICh0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0KSB7
XG4gICAgICAvLyBVc2UgaGFzaCBhcyByb3V0ZVxuICAgICAgcm91dGVUbyA9IGRsb2NIYXNoRW1w
dHkoKSAmJiByID8gciA6ICFkbG9jSGFzaEVtcHR5KCkgPyBkbG9jLmhhc2gucmVwbGFjZSgvXiMv
LCAnJykgOiBudWxsO1xuICAgICAgaWYgKHJvdXRlVG8pIHtcbiAgICAgICAgd2luZG93Lmhpc3Rv
cnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgcm91dGVUbyk7XG4gICAgICB9XG4g
ICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gVXNlIGNhbm9uaWNhbCB1cmxcbiAgICAgIHJvdXRl
VG8gPSB0aGlzLmdldFBhdGgoKTtcbiAgICB9XG5cbiAgICAvLyBSb3V0ZXIgaGFzIGJlZW4gaW5p
dGlhbGl6ZWQsIGJ1dCBkdWUgdG8gdGhlIGNocm9tZSBidWcgaXQgd2lsbCBub3RcbiAgICAvLyB5
ZXQgYWN0dWFsbHkgcm91dGUgSFRNTDUgaGlzdG9yeSBzdGF0ZSBjaGFuZ2VzLiBUaHVzLCBkZWNp
ZGUgaWYgc2hvdWxkIHJvdXRlLlxuICAgIGlmIChyb3V0ZVRvIHx8IHRoaXMucnVuX2luX2luaXQg
PT09IHRydWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVy
biB0aGlzO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5leHBsb2RlID0gZnVuY3Rpb24gKCkge1xu
ICB2YXIgdiA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHRoaXMuZ2V0UGF0aCgpIDogZGxvYy5o
YXNoO1xuICBpZiAodi5jaGFyQXQoMSkgPT09ICcvJykgeyB2PXYuc2xpY2UoMSkgfVxuICByZXR1
cm4gdi5zbGljZSgxLCB2Lmxlbmd0aCkuc3BsaXQoXCIvXCIpO1xufTtcblxuUm91dGVyLnByb3Rv
dHlwZS5zZXRSb3V0ZSA9IGZ1bmN0aW9uIChpLCB2LCB2YWwpIHtcbiAgdmFyIHVybCA9IHRoaXMu
ZXhwbG9kZSgpO1xuXG4gIGlmICh0eXBlb2YgaSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHYgPT09
ICdzdHJpbmcnKSB7XG4gICAgdXJsW2ldID0gdjtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgdmFs
ID09PSAnc3RyaW5nJykge1xuICAgIHVybC5zcGxpY2UoaSwgdiwgcyk7XG4gIH1cbiAgZWxzZSB7
XG4gICAgdXJsID0gW2ldO1xuICB9XG5cbiAgbGlzdGVuZXIuc2V0SGFzaCh1cmwuam9pbignLycp
KTtcbiAgcmV0dXJuIHVybDtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gaW5zZXJ0RXgobWV0
aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KVxuLy8gIyMjIyBAbWV0aG9kIHtzdHJpbmd9IE1ldGhv
ZCB0byBpbnNlcnQgdGhlIHNwZWNpZmljIGByb3V0ZWAuXG4vLyAjIyMjIEBwYXRoIHtBcnJheX0g
UGFyc2VkIHBhdGggdG8gaW5zZXJ0IHRoZSBgcm91dGVgIGF0LlxuLy8gIyMjIyBAcm91dGUge0Fy
cmF5fGZ1bmN0aW9ufSBSb3V0ZSBoYW5kbGVycyB0byBpbnNlcnQuXG4vLyAjIyMjIEBwYXJlbnQg
e09iamVjdH0gKipPcHRpb25hbCoqIFBhcmVudCBcInJvdXRlc1wiIHRvIGluc2VydCBpbnRvLlxu
Ly8gaW5zZXJ0IGEgY2FsbGJhY2sgdGhhdCB3aWxsIG9ubHkgb2NjdXIgb25jZSBwZXIgdGhlIG1h
dGNoZWQgcm91dGUuXG4vL1xuUm91dGVyLnByb3RvdHlwZS5pbnNlcnRFeCA9IGZ1bmN0aW9uKG1l
dGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCkge1xuICBpZiAobWV0aG9kID09PSBcIm9uY2VcIikg
e1xuICAgIG1ldGhvZCA9IFwib25cIjtcbiAgICByb3V0ZSA9IGZ1bmN0aW9uKHJvdXRlKSB7XG4g
ICAgICB2YXIgb25jZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAg
ICBpZiAob25jZSkgcmV0dXJuO1xuICAgICAgICBvbmNlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJu
IHJvdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0ocm91dGUpO1xu
ICB9XG4gIHJldHVybiB0aGlzLl9pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KTtc
bn07XG5cblJvdXRlci5wcm90b3R5cGUuZ2V0Um91dGUgPSBmdW5jdGlvbiAodikge1xuICB2YXIg
cmV0ID0gdjtcblxuICBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXQgPSB0
aGlzLmV4cGxvZGUoKVt2XTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdc
Iil7XG4gICAgdmFyIGggPSB0aGlzLmV4cGxvZGUoKTtcbiAgICByZXQgPSBoLmluZGV4T2Yodik7
XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0ID0gdGhpcy5leHBsb2RlKCk7XG4gIH1cblxuICByZXR1
cm4gcmV0O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xu
ICBsaXN0ZW5lci5kZXN0cm95KHRoaXMuaGFuZGxlcik7XG4gIHJldHVybiB0aGlzO1xufTtcblxu
Um91dGVyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGF0aCA9IHdp
bmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgaWYgKHBhdGguc3Vic3RyKDAsIDEpICE9PSAnLycp
IHtcbiAgICBwYXRoID0gJy8nICsgcGF0aDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG5mdW5j
dGlvbiBfZXZlcnkoYXJyLCBpdGVyYXRvcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5s
ZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChpdGVyYXRvcihhcnJbaV0sIGksIGFycikgPT09IGZh
bHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIF9mbGF0dGVu
KGFycikge1xuICB2YXIgZmxhdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyci5sZW5n
dGg7IGkgPCBuOyBpKyspIHtcbiAgICBmbGF0ID0gZmxhdC5jb25jYXQoYXJyW2ldKTtcbiAgfVxu
ICByZXR1cm4gZmxhdDtcbn1cblxuZnVuY3Rpb24gX2FzeW5jRXZlcnlTZXJpZXMoYXJyLCBpdGVy
YXRvciwgY2FsbGJhY2spIHtcbiAgaWYgKCFhcnIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNhbGxi
YWNrKCk7XG4gIH1cbiAgdmFyIGNvbXBsZXRlZCA9IDA7XG4gIChmdW5jdGlvbiBpdGVyYXRlKCkg
e1xuICAgIGl0ZXJhdG9yKGFycltjb21wbGV0ZWRdLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIGlm
IChlcnIgfHwgZXJyID09PSBmYWxzZSkge1xuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAg
ICBjYWxsYmFjayA9IGZ1bmN0aW9uKCkge307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21w
bGV0ZWQgKz0gMTtcbiAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gYXJyLmxlbmd0aCkge1xuICAg
ICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlcmF0ZSgp
O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pKCk7XG59XG5cbmZ1bmN0aW9uIHBh
cmFtaWZ5U3RyaW5nKHN0ciwgcGFyYW1zLCBtb2QpIHtcbiAgbW9kID0gc3RyO1xuICBmb3IgKHZh
ciBwYXJhbSBpbiBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFt
KSkge1xuICAgICAgbW9kID0gcGFyYW1zW3BhcmFtXShzdHIpO1xuICAgICAgaWYgKG1vZCAhPT0g
c3RyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbW9k
ID09PSBzdHIgPyBcIihbLl9hLXpBLVowLTktJSgpXSspXCIgOiBtb2Q7XG59XG5cbmZ1bmN0aW9u
IHJlZ2lmeVN0cmluZyhzdHIsIHBhcmFtcykge1xuICB2YXIgbWF0Y2hlcywgbGFzdCA9IDAsIG91
dCA9IFwiXCI7XG4gIHdoaWxlIChtYXRjaGVzID0gc3RyLnN1YnN0cihsYXN0KS5tYXRjaCgvW15c
XHdcXGRcXC0gJUAmXSpcXCpbXlxcd1xcZFxcLSAlQCZdKi8pKSB7XG4gICAgbGFzdCA9IG1hdGNo
ZXMuaW5kZXggKyBtYXRjaGVzWzBdLmxlbmd0aDtcbiAgICBtYXRjaGVzWzBdID0gbWF0Y2hlc1sw
XS5yZXBsYWNlKC9eXFwqLywgXCIoW18uKCkhXFxcXCAlQCZhLXpBLVowLTktXSspXCIpO1xuICAg
IG91dCArPSBzdHIuc3Vic3RyKDAsIG1hdGNoZXMuaW5kZXgpICsgbWF0Y2hlc1swXTtcbiAgfVxu
ICBzdHIgPSBvdXQgKz0gc3RyLnN1YnN0cihsYXN0KTtcbiAgdmFyIGNhcHR1cmVzID0gc3RyLm1h
dGNoKC86KFteXFwvXSspL2lnKSwgY2FwdHVyZSwgbGVuZ3RoO1xuICBpZiAoY2FwdHVyZXMpIHtc
biAgICBsZW5ndGggPSBjYXB0dXJlcy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykge1xuICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW2ldO1xuICAgICAgaWYgKGNh
cHR1cmUuc2xpY2UoMCwgMikgPT09IFwiOjpcIikge1xuICAgICAgICBzdHIgPSBjYXB0dXJlLnNs
aWNlKDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoY2FwdHVy
ZSwgcGFyYW1pZnlTdHJpbmcoY2FwdHVyZSwgcGFyYW1zKSk7XG4gICAgICB9XG4gICAgfVxuICB9
XG4gIHJldHVybiBzdHI7XG59XG5cbmZ1bmN0aW9uIHRlcm1pbmF0b3Iocm91dGVzLCBkZWxpbWl0
ZXIsIHN0YXJ0LCBzdG9wKSB7XG4gIHZhciBsYXN0ID0gMCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwg
c3RhcnQgPSAoc3RhcnQgfHwgXCIoXCIpLnRvU3RyaW5nKCksIHN0b3AgPSAoc3RvcCB8fCBcIilc
IikudG9TdHJpbmcoKSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHJvdXRlcy5sZW5ndGg7IGkrKykg
e1xuICAgIHZhciBjaHVuayA9IHJvdXRlc1tpXTtcbiAgICBpZiAoY2h1bmsuaW5kZXhPZihzdGFy
dCwgbGFzdCkgPiBjaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8IH5jaHVuay5pbmRleE9mKHN0
YXJ0LCBsYXN0KSAmJiAhfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwgIX5jaHVuay5pbmRl
eE9mKHN0YXJ0LCBsYXN0KSAmJiB+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSkge1xuICAgICAg
bGVmdCA9IGNodW5rLmluZGV4T2Yoc3RhcnQsIGxhc3QpO1xuICAgICAgcmlnaHQgPSBjaHVuay5p
bmRleE9mKHN0b3AsIGxhc3QpO1xuICAgICAgaWYgKH5sZWZ0ICYmICF+cmlnaHQgfHwgIX5sZWZ0
ICYmIH5yaWdodCkge1xuICAgICAgICB2YXIgdG1wID0gcm91dGVzLnNsaWNlKDAsIChpIHx8IDEp
ICsgMSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICByb3V0ZXMgPSBbIHRtcCBdLmNvbmNhdChy
b3V0ZXMuc2xpY2UoKGkgfHwgMSkgKyAxKSk7XG4gICAgICB9XG4gICAgICBsYXN0ID0gKHJpZ2h0
ID4gbGVmdCA/IHJpZ2h0IDogbGVmdCkgKyAxO1xuICAgICAgaSA9IDA7XG4gICAgfSBlbHNlIHtc
biAgICAgIGxhc3QgPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcm91dGVzO1xufVxuXG52YXIg
UVVFUllfU0VQQVJBVE9SID0gL1xcPy4qLztcblxuUm91dGVyLnByb3RvdHlwZS5jb25maWd1cmUg
PSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMubWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuX21l
dGhvZHNbdGhpcy5tZXRob2RzW2ldXSA9IHRydWU7XG4gIH1cbiAgdGhpcy5yZWN1cnNlID0gb3B0
aW9ucy5yZWN1cnNlIHx8IHRoaXMucmVjdXJzZSB8fCBmYWxzZTtcbiAgdGhpcy5hc3luYyA9IG9w
dGlvbnMuYXN5bmMgfHwgZmFsc2U7XG4gIHRoaXMuZGVsaW1pdGVyID0gb3B0aW9ucy5kZWxpbWl0
ZXIgfHwgXCIvXCI7XG4gIHRoaXMuc3RyaWN0ID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0ID09PSBc
InVuZGVmaW5lZFwiID8gdHJ1ZSA6IG9wdGlvbnMuc3RyaWN0O1xuICB0aGlzLm5vdGZvdW5kID0g
b3B0aW9ucy5ub3Rmb3VuZDtcbiAgdGhpcy5yZXNvdXJjZSA9IG9wdGlvbnMucmVzb3VyY2U7XG4g
IHRoaXMuaGlzdG9yeSA9IG9wdGlvbnMuaHRtbDVoaXN0b3J5ICYmIHRoaXMuaGlzdG9yeVN1cHBv
cnQgfHwgZmFsc2U7XG4gIHRoaXMucnVuX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUg
JiYgb3B0aW9ucy5ydW5faGFuZGxlcl9pbl9pbml0ICE9PSBmYWxzZTtcbiAgdGhpcy5jb252ZXJ0
X2hhc2hfaW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSAmJiBvcHRpb25zLmNvbnZlcnRf
aGFzaF9pbl9pbml0ICE9PSBmYWxzZTtcbiAgdGhpcy5ldmVyeSA9IHtcbiAgICBhZnRlcjogb3B0
aW9ucy5hZnRlciB8fCBudWxsLFxuICAgIGJlZm9yZTogb3B0aW9ucy5iZWZvcmUgfHwgbnVsbCxc
biAgICBvbjogb3B0aW9ucy5vbiB8fCBudWxsXG4gIH07XG4gIHJldHVybiB0aGlzO1xufTtcblxu
Um91dGVyLnByb3RvdHlwZS5wYXJhbSA9IGZ1bmN0aW9uKHRva2VuLCBtYXRjaGVyKSB7XG4gIGlm
ICh0b2tlblswXSAhPT0gXCI6XCIpIHtcbiAgICB0b2tlbiA9IFwiOlwiICsgdG9rZW47XG4gIH1c
biAgdmFyIGNvbXBpbGVkID0gbmV3IFJlZ0V4cCh0b2tlbiwgXCJnXCIpO1xuICB0aGlzLnBhcmFt
c1t0b2tlbl0gPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY29tcGls
ZWQsIG1hdGNoZXIuc291cmNlIHx8IG1hdGNoZXIpO1xuICB9O1xuICByZXR1cm4gdGhpcztcbn07
XG5cblJvdXRlci5wcm90b3R5cGUub24gPSBSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0gZnVuY3Rp
b24obWV0aG9kLCBwYXRoLCByb3V0ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmICghcm91
dGUgJiYgdHlwZW9mIHBhdGggPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcm91dGUgPSBwYXRoO1xu
ICAgIHBhdGggPSBtZXRob2Q7XG4gICAgbWV0aG9kID0gXCJvblwiO1xuICB9XG4gIGlmIChBcnJh
eS5pc0FycmF5KHBhdGgpKSB7XG4gICAgcmV0dXJuIHBhdGguZm9yRWFjaChmdW5jdGlvbihwKSB7
XG4gICAgICBzZWxmLm9uKG1ldGhvZCwgcCwgcm91dGUpO1xuICAgIH0pO1xuICB9XG4gIGlmIChw
YXRoLnNvdXJjZSkge1xuICAgIHBhdGggPSBwYXRoLnNvdXJjZS5yZXBsYWNlKC9cXFxcXFwvL2ln
LCBcIi9cIik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobWV0aG9kKSkge1xuICAgIHJldHVy
biBtZXRob2QuZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAgICBzZWxmLm9uKG0udG9Mb3dlckNh
c2UoKSwgcGF0aCwgcm91dGUpO1xuICAgIH0pO1xuICB9XG4gIHBhdGggPSBwYXRoLnNwbGl0KG5l
dyBSZWdFeHAodGhpcy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhp
cy5kZWxpbWl0ZXIpO1xuICB0aGlzLmluc2VydChtZXRob2QsIHRoaXMuc2NvcGUuY29uY2F0KHBh
dGgpLCByb3V0ZSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbihwYXRo
LCByb3V0ZXNGbikge1xuICB2YXIgc2VsZiA9IHRoaXMsIGxlbmd0aCA9IHRoaXMuc2NvcGUubGVu
Z3RoO1xuICBpZiAocGF0aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFj
ZSgvXFxcXFxcLy9pZywgXCIvXCIpO1xuICB9XG4gIHBhdGggPSBwYXRoLnNwbGl0KG5ldyBSZWdF
eHAodGhpcy5kZWxpbWl0ZXIpKTtcbiAgcGF0aCA9IHRlcm1pbmF0b3IocGF0aCwgdGhpcy5kZWxp
bWl0ZXIpO1xuICB0aGlzLnNjb3BlID0gdGhpcy5zY29wZS5jb25jYXQocGF0aCk7XG4gIHJvdXRl
c0ZuLmNhbGwodGhpcywgdGhpcyk7XG4gIHRoaXMuc2NvcGUuc3BsaWNlKGxlbmd0aCwgcGF0aC5s
ZW5ndGgpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1ldGhv
ZCwgcGF0aCwgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBmbnMgPSB0aGlzLnRyYXZl
cnNlKG1ldGhvZCwgcGF0aC5yZXBsYWNlKFFVRVJZX1NFUEFSQVRPUiwgXCJcIiksIHRoaXMucm91
dGVzLCBcIlwiKSwgaW52b2tlZCA9IHRoaXMuX2ludm9rZWQsIGFmdGVyO1xuICB0aGlzLl9pbnZv
a2VkID0gdHJ1ZTtcbiAgaWYgKCFmbnMgfHwgZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMu
bGFzdCA9IFtdO1xuICAgIGlmICh0eXBlb2YgdGhpcy5ub3Rmb3VuZCA9PT0gXCJmdW5jdGlvblwi
KSB7XG4gICAgICB0aGlzLmludm9rZShbIHRoaXMubm90Zm91bmQgXSwge1xuICAgICAgICBtZXRo
b2Q6IG1ldGhvZCxcbiAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfSwgY2FsbGJhY2spO1xuICAg
IH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMucmVjdXJzZSA9PT0gXCJmb3J3
YXJkXCIpIHtcbiAgICBmbnMgPSBmbnMucmV2ZXJzZSgpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0
ZUFuZEludm9rZSgpIHtcbiAgICBzZWxmLmxhc3QgPSBmbnMuYWZ0ZXI7XG4gICAgc2VsZi5pbnZv
a2Uoc2VsZi5ydW5saXN0KGZucyksIHNlbGYsIGNhbGxiYWNrKTtcbiAgfVxuICBhZnRlciA9IHRo
aXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5hZnRlciA/IFsgdGhpcy5ldmVyeS5hZnRlciBdLmNvbmNh
dCh0aGlzLmxhc3QpIDogWyB0aGlzLmxhc3QgXTtcbiAgaWYgKGFmdGVyICYmIGFmdGVyLmxlbmd0
aCA+IDAgJiYgaW52b2tlZCkge1xuICAgIGlmICh0aGlzLmFzeW5jKSB7XG4gICAgICB0aGlzLmlu
dm9rZShhZnRlciwgdGhpcywgdXBkYXRlQW5kSW52b2tlKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
dGhpcy5pbnZva2UoYWZ0ZXIsIHRoaXMpO1xuICAgICAgdXBkYXRlQW5kSW52b2tlKCk7XG4gICAg
fVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHVwZGF0ZUFuZEludm9rZSgpO1xuICByZXR1cm4g
dHJ1ZTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24oZm5zLCB0aGlz
QXJnLCBjYWxsYmFjaykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcHBseTtcbiAgaWYg
KHRoaXMuYXN5bmMpIHtcbiAgICBhcHBseSA9IGZ1bmN0aW9uKGZuLCBuZXh0KSB7XG4gICAgICBp
ZiAoQXJyYXkuaXNBcnJheShmbikpIHtcbiAgICAgICAgcmV0dXJuIF9hc3luY0V2ZXJ5U2VyaWVz
KGZuLCBhcHBseSwgbmV4dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbiA9PSBcImZ1bmN0
aW9uXCIpIHtcbiAgICAgICAgZm4uYXBwbHkodGhpc0FyZywgKGZucy5jYXB0dXJlcyB8fCBbXSku
Y29uY2F0KG5leHQpKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF9hc3luY0V2ZXJ5U2VyaWVzKGZu
cywgYXBwbHksIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNh
bGxiYWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0g
ZWxzZSB7XG4gICAgYXBwbHkgPSBmdW5jdGlvbihmbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJy
YXkoZm4pKSB7XG4gICAgICAgIHJldHVybiBfZXZlcnkoZm4sIGFwcGx5KTtcbiAgICAgIH0gZWxz
ZSBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGZuLmFw
cGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVv
ZiBmbiA9PT0gXCJzdHJpbmdcIiAmJiBzZWxmLnJlc291cmNlKSB7XG4gICAgICAgIHNlbGYucmVz
b3VyY2VbZm5dLmFwcGx5KHRoaXNBcmcsIGZucy5jYXB0dXJlcyB8fCBbXSk7XG4gICAgICB9XG4g
ICAgfTtcbiAgICBfZXZlcnkoZm5zLCBhcHBseSk7XG4gIH1cbn07XG5cblJvdXRlci5wcm90b3R5
cGUudHJhdmVyc2UgPSBmdW5jdGlvbihtZXRob2QsIHBhdGgsIHJvdXRlcywgcmVnZXhwLCBmaWx0
ZXIpIHtcbiAgdmFyIGZucyA9IFtdLCBjdXJyZW50LCBleGFjdCwgbWF0Y2gsIG5leHQsIHRoYXQ7
XG4gIGZ1bmN0aW9uIGZpbHRlclJvdXRlcyhyb3V0ZXMpIHtcbiAgICBpZiAoIWZpbHRlcikge1xu
ICAgICAgcmV0dXJuIHJvdXRlcztcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVlcENvcHkoc291cmNl
KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNv
dXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHRbaV0gPSBBcnJheS5pc0FycmF5KHNv
dXJjZVtpXSkgPyBkZWVwQ29weShzb3VyY2VbaV0pIDogc291cmNlW2ldO1xuICAgICAgfVxuICAg
ICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZm5zKSB7
XG4gICAgICBmb3IgKHZhciBpID0gZm5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAg
ICAgIGlmIChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgICAgICBhcHBseUZpbHRlcihm
bnNbaV0pO1xuICAgICAgICAgIGlmIChmbnNbaV0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAg
ICBmbnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgICBpZiAoIWZpbHRlcihmbnNbaV0pKSB7XG4gICAgICAgICAgICBmbnMuc3BsaWNlKGksIDEp
O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbmV3Um91
dGVzID0gZGVlcENvcHkocm91dGVzKTtcbiAgICBuZXdSb3V0ZXMubWF0Y2hlZCA9IHJvdXRlcy5t
YXRjaGVkO1xuICAgIG5ld1JvdXRlcy5jYXB0dXJlcyA9IHJvdXRlcy5jYXB0dXJlcztcbiAgICBu
ZXdSb3V0ZXMuYWZ0ZXIgPSByb3V0ZXMuYWZ0ZXIuZmlsdGVyKGZpbHRlcik7XG4gICAgYXBwbHlG
aWx0ZXIobmV3Um91dGVzKTtcbiAgICByZXR1cm4gbmV3Um91dGVzO1xuICB9XG4gIGlmIChwYXRo
ID09PSB0aGlzLmRlbGltaXRlciAmJiByb3V0ZXNbbWV0aG9kXSkge1xuICAgIG5leHQgPSBbIFsg
cm91dGVzLmJlZm9yZSwgcm91dGVzW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVhbikgXTtcbiAgICBu
ZXh0LmFmdGVyID0gWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgbmV4dC5t
YXRjaGVkID0gdHJ1ZTtcbiAgICBuZXh0LmNhcHR1cmVzID0gW107XG4gICAgcmV0dXJuIGZpbHRl
clJvdXRlcyhuZXh0KTtcbiAgfVxuICBmb3IgKHZhciByIGluIHJvdXRlcykge1xuICAgIGlmIChy
b3V0ZXMuaGFzT3duUHJvcGVydHkocikgJiYgKCF0aGlzLl9tZXRob2RzW3JdIHx8IHRoaXMuX21l
dGhvZHNbcl0gJiYgdHlwZW9mIHJvdXRlc1tyXSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNB
cnJheShyb3V0ZXNbcl0pKSkge1xuICAgICAgY3VycmVudCA9IGV4YWN0ID0gcmVnZXhwICsgdGhp
cy5kZWxpbWl0ZXIgKyByO1xuICAgICAgaWYgKCF0aGlzLnN0cmljdCkge1xuICAgICAgICBleGFj
dCArPSBcIltcIiArIHRoaXMuZGVsaW1pdGVyICsgXCJdP1wiO1xuICAgICAgfVxuICAgICAgbWF0
Y2ggPSBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoXCJeXCIgKyBleGFjdCkpO1xuICAgICAgaWYgKCFt
YXRjaCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaFswXSAm
JiBtYXRjaFswXSA9PSBwYXRoICYmIHJvdXRlc1tyXVttZXRob2RdKSB7XG4gICAgICAgIG5leHQg
PSBbIFsgcm91dGVzW3JdLmJlZm9yZSwgcm91dGVzW3JdW21ldGhvZF0gXS5maWx0ZXIoQm9vbGVh
bikgXTtcbiAgICAgICAgbmV4dC5hZnRlciA9IFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJv
b2xlYW4pO1xuICAgICAgICBuZXh0Lm1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBuZXh0LmNhcHR1
cmVzID0gbWF0Y2guc2xpY2UoMSk7XG4gICAgICAgIGlmICh0aGlzLnJlY3Vyc2UgJiYgcm91dGVz
ID09PSB0aGlzLnJvdXRlcykge1xuICAgICAgICAgIG5leHQucHVzaChbIHJvdXRlcy5iZWZvcmUs
IHJvdXRlcy5vbiBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgbmV4dC5hZnRlciA9IG5l
eHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAg
ICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyUm91dGVzKG5leHQpO1xuICAgICAgfVxuICAgICAg
bmV4dCA9IHRoaXMudHJhdmVyc2UobWV0aG9kLCBwYXRoLCByb3V0ZXNbcl0sIGN1cnJlbnQpO1xu
ICAgICAgaWYgKG5leHQubWF0Y2hlZCkge1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPiAwKSB7
XG4gICAgICAgICAgZm5zID0gZm5zLmNvbmNhdChuZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBp
ZiAodGhpcy5yZWN1cnNlKSB7XG4gICAgICAgICAgZm5zLnB1c2goWyByb3V0ZXNbcl0uYmVmb3Jl
LCByb3V0ZXNbcl0ub24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIg
PSBuZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7
XG4gICAgICAgICAgaWYgKHJvdXRlcyA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICAgIGZu
cy5wdXNoKFsgcm91dGVzW1wiYmVmb3JlXCJdLCByb3V0ZXNbXCJvblwiXSBdLmZpbHRlcihCb29s
ZWFuKSk7XG4gICAgICAgICAgICBuZXh0LmFmdGVyID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0
ZXNbXCJhZnRlclwiXSBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9
XG4gICAgICAgIGZucy5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgZm5zLmNhcHR1cmVzID0gbmV4
dC5jYXB0dXJlcztcbiAgICAgICAgZm5zLmFmdGVyID0gbmV4dC5hZnRlcjtcbiAgICAgICAgcmV0
dXJuIGZpbHRlclJvdXRlcyhmbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFs
c2U7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0
aCwgcm91dGUsIHBhcmVudCkge1xuICB2YXIgbWV0aG9kVHlwZSwgcGFyZW50VHlwZSwgaXNBcnJh
eSwgbmVzdGVkLCBwYXJ0O1xuICBwYXRoID0gcGF0aC5maWx0ZXIoZnVuY3Rpb24ocCkge1xuICAg
IHJldHVybiBwICYmIHAubGVuZ3RoID4gMDtcbiAgfSk7XG4gIHBhcmVudCA9IHBhcmVudCB8fCB0
aGlzLnJvdXRlcztcbiAgcGFydCA9IHBhdGguc2hpZnQoKTtcbiAgaWYgKC9cXDp8XFwqLy50ZXN0
KHBhcnQpICYmICEvXFxcXGR8XFxcXHcvLnRlc3QocGFydCkpIHtcbiAgICBwYXJ0ID0gcmVnaWZ5
U3RyaW5nKHBhcnQsIHRoaXMucGFyYW1zKTtcbiAgfVxuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7
XG4gICAgcGFyZW50W3BhcnRdID0gcGFyZW50W3BhcnRdIHx8IHt9O1xuICAgIHJldHVybiB0aGlz
Lmluc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnRbcGFydF0pO1xuICB9XG4gIGlmICgh
cGFydCAmJiAhcGF0aC5sZW5ndGggJiYgcGFyZW50ID09PSB0aGlzLnJvdXRlcykge1xuICAgIG1l
dGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W21ldGhvZF07XG4gICAgc3dpdGNoIChtZXRob2RUeXBl
KSB7XG4gICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgcGFyZW50W21ldGhvZF0gPSBbIHBh
cmVudFttZXRob2RdLCByb3V0ZSBdO1xuICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwib2JqZWN0
XCI6XG4gICAgICBwYXJlbnRbbWV0aG9kXS5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybjtcbiAg
ICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcGFyZW50W21ldGhvZF0gPSByb3V0ZTtcbiAg
ICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIHBhcmVudFR5cGUgPSB0eXBl
b2YgcGFyZW50W3BhcnRdO1xuICBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwYXJlbnRbcGFydF0p
O1xuICBpZiAocGFyZW50W3BhcnRdICYmICFpc0FycmF5ICYmIHBhcmVudFR5cGUgPT0gXCJvYmpl
Y3RcIikge1xuICAgIG1ldGhvZFR5cGUgPSB0eXBlb2YgcGFyZW50W3BhcnRdW21ldGhvZF07XG4g
ICAgc3dpdGNoIChtZXRob2RUeXBlKSB7XG4gICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAg
cGFyZW50W3BhcnRdW21ldGhvZF0gPSBbIHBhcmVudFtwYXJ0XVttZXRob2RdLCByb3V0ZSBdO1xu
ICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBwYXJlbnRbcGFydF1b
bWV0aG9kXS5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcInVuZGVmaW5l
ZFwiOlxuICAgICAgcGFyZW50W3BhcnRdW21ldGhvZF0gPSByb3V0ZTtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gIH0gZWxzZSBpZiAocGFyZW50VHlwZSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAg
bmVzdGVkID0ge307XG4gICAgbmVzdGVkW21ldGhvZF0gPSByb3V0ZTtcbiAgICBwYXJlbnRbcGFy
dF0gPSBuZXN0ZWQ7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIkludmFs
aWQgcm91dGUgY29udGV4dDogXCIgKyBwYXJlbnRUeXBlKTtcbn07XG5cblxuXG5Sb3V0ZXIucHJv
dG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKG1ldGhvZHMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBs
ZW4gPSBtZXRob2RzLmxlbmd0aCwgaTtcbiAgZnVuY3Rpb24gZXh0ZW5kKG1ldGhvZCkge1xuICAg
IHNlbGYuX21ldGhvZHNbbWV0aG9kXSA9IHRydWU7XG4gICAgc2VsZlttZXRob2RdID0gZnVuY3Rp
b24oKSB7XG4gICAgICB2YXIgZXh0cmEgPSBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gWyBtZXRo
b2QsIFwiXCIgXSA6IFsgbWV0aG9kIF07XG4gICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIGV4dHJh
LmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgfTtc
biAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBleHRlbmQobWV0aG9kc1tp
XSk7XG4gIH1cbn07XG5cblJvdXRlci5wcm90b3R5cGUucnVubGlzdCA9IGZ1bmN0aW9uKGZucykg
e1xuICB2YXIgcnVubGlzdCA9IHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5iZWZvcmUgPyBbIHRo
aXMuZXZlcnkuYmVmb3JlIF0uY29uY2F0KF9mbGF0dGVuKGZucykpIDogX2ZsYXR0ZW4oZm5zKTtc
biAgaWYgKHRoaXMuZXZlcnkgJiYgdGhpcy5ldmVyeS5vbikge1xuICAgIHJ1bmxpc3QucHVzaCh0
aGlzLmV2ZXJ5Lm9uKTtcbiAgfVxuICBydW5saXN0LmNhcHR1cmVzID0gZm5zLmNhcHR1cmVzO1xu
ICBydW5saXN0LnNvdXJjZSA9IGZucy5zb3VyY2U7XG4gIHJldHVybiBydW5saXN0O1xufTtcblxu
Um91dGVyLnByb3RvdHlwZS5tb3VudCA9IGZ1bmN0aW9uKHJvdXRlcywgcGF0aCkge1xuICBpZiAo
IXJvdXRlcyB8fCB0eXBlb2Ygcm91dGVzICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXko
cm91dGVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHBhdGgg
PSBwYXRoIHx8IFtdO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aCkpIHtcbiAgICBwYXRoID0g
cGF0aC5zcGxpdChzZWxmLmRlbGltaXRlcik7XG4gIH1cbiAgZnVuY3Rpb24gaW5zZXJ0T3JNb3Vu
dChyb3V0ZSwgbG9jYWwpIHtcbiAgICB2YXIgcmVuYW1lID0gcm91dGUsIHBhcnRzID0gcm91dGUu
c3BsaXQoc2VsZi5kZWxpbWl0ZXIpLCByb3V0ZVR5cGUgPSB0eXBlb2Ygcm91dGVzW3JvdXRlXSwg
aXNSb3V0ZSA9IHBhcnRzWzBdID09PSBcIlwiIHx8ICFzZWxmLl9tZXRob2RzW3BhcnRzWzBdXSwg
ZXZlbnQgPSBpc1JvdXRlID8gXCJvblwiIDogcmVuYW1lO1xuICAgIGlmIChpc1JvdXRlKSB7XG4g
ICAgICByZW5hbWUgPSByZW5hbWUuc2xpY2UoKHJlbmFtZS5tYXRjaChuZXcgUmVnRXhwKFwiXlwi
ICsgc2VsZi5kZWxpbWl0ZXIpKSB8fCBbIFwiXCIgXSlbMF0ubGVuZ3RoKTtcbiAgICAgIHBhcnRz
LnNoaWZ0KCk7XG4gICAgfVxuICAgIGlmIChpc1JvdXRlICYmIHJvdXRlVHlwZSA9PT0gXCJvYmpl
Y3RcIiAmJiAhQXJyYXkuaXNBcnJheShyb3V0ZXNbcm91dGVdKSkge1xuICAgICAgbG9jYWwgPSBs
b2NhbC5jb25jYXQocGFydHMpO1xuICAgICAgc2VsZi5tb3VudChyb3V0ZXNbcm91dGVdLCBsb2Nh
bCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1JvdXRlKSB7XG4gICAgICBsb2Nh
bCA9IGxvY2FsLmNvbmNhdChyZW5hbWUuc3BsaXQoc2VsZi5kZWxpbWl0ZXIpKTtcbiAgICAgIGxv
Y2FsID0gdGVybWluYXRvcihsb2NhbCwgc2VsZi5kZWxpbWl0ZXIpO1xuICAgIH1cbiAgICBzZWxm
Lmluc2VydChldmVudCwgbG9jYWwsIHJvdXRlc1tyb3V0ZV0pO1xuICB9XG4gIGZvciAodmFyIHJv
dXRlIGluIHJvdXRlcykge1xuICAgIGlmIChyb3V0ZXMuaGFzT3duUHJvcGVydHkocm91dGUpKSB7
XG4gICAgICBpbnNlcnRPck1vdW50KHJvdXRlLCBwYXRoLnNsaWNlKDApKTtcbiAgICB9XG4gIH1c
bn07XG5cblxuXG59KHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiID8gZXhwb3J0cyA6IHdp
bmRvdykpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
fi9kaXJlY3Rvci9idWlsZC9kaXJlY3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxl
IGNodW5rcyA9IDEiLCIvKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGxpc3QgZm9ybWF0IHByb2R1Y2Vk
IGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVhc2llciB0byBtYW5pcHVsYXRlLlxu
ICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAocGFyZW50SWQsIGxp
c3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdTdHlsZXMgPSB7fVxuICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV1c
biAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9IGl0ZW1bMV1cbiAgICB2YXIgbWVk
aWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM11cbiAgICB2YXIgcGFydCA9
IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4gICAgICBjc3M6IGNzcyxcbiAgICAg
IG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfVxuICAgIGlm
ICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHsg
aWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxlc1tp
ZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzXG59XG5cblxu
XG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vdnVlLXN0eWxl
LWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxl
IGNodW5rcyA9IDEiLCJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBt
b2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxy
XG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxy
XG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRo
aXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyBy
ZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3Rc
IilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVm
aW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVm
aW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhh
bmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMg
PSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAo
d2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUg
Y2h1bmtzID0gMSIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcv
bGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFc
biovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxu
XHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9T
dHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp
b24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhp
dGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4g
XCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9
IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwi
XCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0
XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBl
b2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVs
ZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZv
cih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlz
W2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJl
YWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8
IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0
XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVt
ZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmlu
YXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1l
cyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdp
bGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0
XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRN
b2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtc
blx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlh
UXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAo
XCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0
ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlv
biBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29u
dGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYg
KCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291
cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1h
cHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NN
YXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyoj
IHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0
XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChb
c291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5q
b2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlU
KVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1u
ZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJ
Q29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3Nv
dXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0
LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cblxuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jc3MtbG9hZGVy
L2xpYi9jc3MtYmFzZS5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAx
IiwiLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9t
aXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuICBNb2RpZmll
ZCBieSBFdmFuIFlvdSBAeXl4OTkwODAzXG4qL1xuXG52YXIgaGFzRG9jdW1lbnQgPSB0eXBlb2Yg
ZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG5cbmlmICh0eXBlb2YgREVCVUcgIT09ICd1bmRlZmlu
ZWQnICYmIERFQlVHKSB7XG4gIGlmICghaGFzRG9jdW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJy
b3IoXG4gICAgJ3Z1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3Nl
ciBlbnZpcm9ubWVudC4gJyArXG4gICAgXCJVc2UgeyB0YXJnZXQ6ICdub2RlJyB9IGluIHlvdXIg
V2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXItcmVuZGVyaW5nIGVudmlyb25tZW50
LlwiXG4gICkgfVxufVxuXG52YXIgbGlzdFRvU3R5bGVzID0gcmVxdWlyZSgnLi9saXN0VG9TdHls
ZXMnKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAgaWQ6IG51bWJlcjtcbiAgcGFydHM6
IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBTdHlsZU9iamVjdFBhcnQgPSB7XG4g
IGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBzb3VyY2VNYXA6ID9zdHJpbmdcbn1c
biovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6IG51bWJlcl06IHtcbiAgICBpZDog
bnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0czogQXJyYXk8KG9iaj86IFN0eWxl
T2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZhciBoZWFkID0gaGFzRG9jdW1lbnQg
JiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQn
KVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxudmFyIHNpbmdsZXRvbkNvdW50ZXIg
PSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBub29wID0gZnVuY3Rpb24gKCkge31c
blxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFy
ZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBw
YWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9t
c2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSlcblxu
bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50SWQsIGxpc3QsIF9pc1Byb2R1Y3Rpb24p
IHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVjdGlvblxuXG4gIHZhciBzdHlsZXMgPSBsaXN0
VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcblxuICBy
ZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG4gICAgdmFyIG1heVJlbW92ZSA9IFtd
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZh
ciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVt
LmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4gICAgICBtYXlSZW1vdmUucHVzaChkb21TdHls
ZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAgIHN0eWxlcyA9IGxpc3RUb1N0eWxl
cyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcbiAgICB9
IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkb21TdHlsZSA9IG1heVJlbW92
ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcbiAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGRvbVN0
eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgc3R5bGVzSW5Eb21bZG9t
U3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1Rv
RG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmplY3Q+ICovKSB7XG4gIGZvciAodmFyIGkgPSAw
OyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAg
ICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgIGlmIChkb21TdHlsZSkg
e1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0
eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0u
cGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBq
KyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pd
KSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHlsZS5wYXJ0cy5sZW5ndGggPiBpdGVtLnBhcnRz
Lmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5sZW5ndGggPSBpdGVtLnBhcnRzLmxl
bmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFydHMgPSBbXVxuICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHBh
cnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBzdHlsZXNJ
bkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0cyB9XG4g
ICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAoKSB7XG4gIHZhciBz
dHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gIHN0eWxlRWxl
bWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudClc
biAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAob2JqIC8qIFN0
eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBkYXRlLCByZW1vdmVcbiAgdmFyIHN0eWxlRWxl
bWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtdnVlLXNzci1pZH49XCIn
ICsgb2JqLmlkICsgJ1wiXScpXG5cbiAgaWYgKHN0eWxlRWxlbWVudCkge1xuICAgIGlmIChpc1By
b2R1Y3Rpb24pIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGFuZCBpbiBwcm9kdWN0aW9uIG1v
ZGUuXG4gICAgICAvLyBzaW1wbHkgZG8gbm90aGluZy5cbiAgICAgIHJldHVybiBub29wXG4gICAg
fSBlbHNlIHtcbiAgICAgIC8vIGhhcyBTU1Igc3R5bGVzIGJ1dCBpbiBkZXYgbW9kZS5cbiAgICAg
IC8vIGZvciBzb21lIHJlYXNvbiBDaHJvbWUgY2FuJ3QgaGFuZGxlIHNvdXJjZSBtYXAgaW4gc2Vy
dmVyLXJlbmRlcmVkXG4gICAgICAvLyBzdHlsZSB0YWdzIC0gc291cmNlIG1hcHMgaW4gPHN0eWxl
PiBvbmx5IHdvcmtzIGlmIHRoZSBzdHlsZSB0YWcgaXNcbiAgICAgIC8vIGNyZWF0ZWQgYW5kIGlu
c2VydGVkIGR5bmFtaWNhbGx5LiBTbyB3ZSByZW1vdmUgdGhlIHNlcnZlciByZW5kZXJlZFxuICAg
ICAgLy8gc3R5bGVzIGFuZCBpbmplY3QgbmV3IG9uZXMuXG4gICAgICBzdHlsZUVsZW1lbnQucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlz
T2xkSUUpIHtcbiAgICAvLyB1c2Ugc2luZ2xldG9uIG1vZGUgZm9yIElFOS5cbiAgICB2YXIgc3R5
bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrK1xuICAgIHN0eWxlRWxlbWVudCA9IHNpbmdsZXRv
bkVsZW1lbnQgfHwgKHNpbmdsZXRvbkVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKSlcbiAg
ICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBz
dHlsZUluZGV4LCBmYWxzZSlcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQo
bnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCB0cnVlKVxuICB9IGVsc2Uge1xuICAgIC8v
IHVzZSBtdWx0aS1zdHlsZS10YWcgbW9kZSBpbiBhbGwgb3RoZXIgY2FzZXNcbiAgICBzdHlsZUVs
ZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQoKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmlu
ZChudWxsLCBzdHlsZUVsZW1lbnQpXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAg
c3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1c
biAgfVxuXG4gIHVwZGF0ZShvYmopXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlIChu
ZXdPYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAg
aWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiZcbiAgICAgICAgICBuZXdPYmoubWVkaWEgPT09
IG9iai5tZWRpYSAmJlxuICAgICAgICAgIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VN
YXApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUob2JqID0gbmV3T2Jq
KVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKVxuICAgIH1cbiAgfVxufVxuXG52YXIgcmVw
bGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4dFN0b3JlID0gW11cblxuICByZXR1
cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0g
PSByZXBsYWNlbWVudFxuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4o
J1xcbicpXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGVF
bGVtZW50LCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDog
b2JqLmNzc1xuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxl
bWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKVxuICB9IGVs
c2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKVxuICAg
IHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNcbiAgICBpZiAoY2hpbGRO
b2Rlc1tpbmRleF0pIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSlc
biAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5pbnNlcnRC
ZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0
eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlv
biBhcHBseVRvVGFnIChzdHlsZUVsZW1lbnQsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzc1xu
ICB2YXIgbWVkaWEgPSBvYmoubWVkaWFcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXBc
blxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdtZWRpYScs
IG1lZGlhKVxuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxv
cGVyLmNocm9tZS5jb20vZGV2dG9vbHMvZG9jcy9qYXZhc2NyaXB0LWRlYnVnZ2luZ1xuICAgIC8v
IHRoaXMgbWFrZXMgc291cmNlIG1hcHMgaW5zaWRlIHN0eWxlIHRhZ3Mgd29yayBwcm9wZXJseSBp
biBDaHJvbWVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VVUkw9JyArIHNvdXJjZU1hcC5zb3Vy
Y2VzWzBdICsgJyAqLydcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3
NVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9q
c29uO2Jhc2U2NCwnICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJp
bmdpZnkoc291cmNlTWFwKSkpKSArICcgKi8nXG4gIH1cblxuICBpZiAoc3R5bGVFbGVtZW50LnN0
eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4g
IH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBz
dHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpXG4gICAgfVxu
ICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3Mp
KVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4v
LyAuL34vdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXG4vLyBtb2R1bGUg
aWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDEiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL2Rp
c3Qvc3RhdGljL2pzL3ZlbmRvci5lNzAwODAwMWE4YmVkMDA5YmJmMS5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuZTcwMDgwMDFhOGJlZDAwOWJiZjEuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjQ2YzdlMzk5NWNhY2UwMjMzZjVhOGE3NTM3NmU5YzlhOTk3M2E4MQotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5k
b3IuZTcwMDgwMDFhOGJlZDAwOWJiZjEuanMKQEAgLTAsMCArMSw3IEBACit3ZWJwYWNrSnNvbnAo
WzFdLHsiNyt1VyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJv
cGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZnVuY3Rpb24odCl7LyohCisgKiBWdWUu
anMgdjIuNC4yCisgKiAoYykgMjAxNC0yMDE3IEV2YW4gWW91CisgKiBSZWxlYXNlZCB1bmRlciB0
aGUgTUlUIExpY2Vuc2UuCisgKi8KK2Z1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PXR8fG51
bGw9PT10fWZ1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQmJm51bGwhPT10fWZ1bmN0aW9u
IGkodCl7cmV0dXJuITA9PT10fWZ1bmN0aW9uIG8odCl7cmV0dXJuITE9PT10fWZ1bmN0aW9uIGEo
dCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHR8fCJib29sZWFu
Ij09dHlwZW9mIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBl
b2YgdH1mdW5jdGlvbiBjKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09UmkuY2FsbCh0KX1m
dW5jdGlvbiB1KHQpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09UmkuY2FsbCh0KX1mdW5jdGlv
biBsKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIGU+PTAmJk1hdGguZmxvb3IoZSk9PT1l
JiZpc0Zpbml0ZSh0KX1mdW5jdGlvbiBmKHQpe3JldHVybiBudWxsPT10PyIiOiJvYmplY3QiPT10
eXBlb2YgdD9KU09OLnN0cmluZ2lmeSh0LG51bGwsMik6U3RyaW5nKHQpfWZ1bmN0aW9uIHAodCl7
dmFyIGU9cGFyc2VGbG9hdCh0KTtyZXR1cm4gaXNOYU4oZSk/dDplfWZ1bmN0aW9uIGQodCxlKXtm
b3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXQuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0
aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gZT9mdW5jdGlvbih0KXtyZXR1cm4gblt0LnRvTG93ZXJD
YXNlKCldfTpmdW5jdGlvbih0KXtyZXR1cm4gblt0XX19ZnVuY3Rpb24gaCh0LGUpe2lmKHQubGVu
Z3RoKXt2YXIgbj10LmluZGV4T2YoZSk7aWYobj4tMSlyZXR1cm4gdC5zcGxpY2UobiwxKX19ZnVu
Y3Rpb24gdih0LGUpe3JldHVybiBCaS5jYWxsKHQsZSl9ZnVuY3Rpb24gbSh0KXt2YXIgZT1PYmpl
Y3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZVtuXXx8KGVbbl09dChu
KSl9fWZ1bmN0aW9uIHkodCxlKXtmdW5jdGlvbiBuKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7
cmV0dXJuIHI/cj4xP3QuYXBwbHkoZSxhcmd1bWVudHMpOnQuY2FsbChlLG4pOnQuY2FsbChlKX1y
ZXR1cm4gbi5fbGVuZ3RoPXQubGVuZ3RoLG59ZnVuY3Rpb24gZyh0LGUpe2U9ZXx8MDtmb3IodmFy
IG49dC5sZW5ndGgtZSxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09dFtuK2VdO3JldHVybiByfWZ1
bmN0aW9uIF8odCxlKXtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24g
Yih0KXtmb3IodmFyIGU9e30sbj0wO248dC5sZW5ndGg7bisrKXRbbl0mJl8oZSx0W25dKTtyZXR1
cm4gZX1mdW5jdGlvbiB3KHQsZSxuKXt9ZnVuY3Rpb24gJCh0LGUpe2lmKHQ9PT1lKXJldHVybiEw
O3ZhciBuPXModCkscj1zKGUpO2lmKCFufHwhcilyZXR1cm4hbiYmIXImJlN0cmluZyh0KT09PVN0
cmluZyhlKTt0cnl7dmFyIGk9QXJyYXkuaXNBcnJheSh0KSxvPUFycmF5LmlzQXJyYXkoZSk7aWYo
aSYmbylyZXR1cm4gdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeShmdW5jdGlvbih0LG4pe3Jl
dHVybiAkKHQsZVtuXSl9KTtpZihpfHxvKXJldHVybiExO3ZhciBhPU9iamVjdC5rZXlzKHQpLGM9
T2JqZWN0LmtleXMoZSk7cmV0dXJuIGEubGVuZ3RoPT09Yy5sZW5ndGgmJmEuZXZlcnkoZnVuY3Rp
b24obil7cmV0dXJuICQodFtuXSxlW25dKX0pfWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBD
KHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoJCh0W25dLGUpKXJldHVybiBuO3Jl
dHVybi0xfWZ1bmN0aW9uIHgodCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7ZXx8KGU9ITAs
dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBBKHQpe3ZhciBlPSh0KyIiKS5jaGFy
Q29kZUF0KDApO3JldHVybiAzNj09PWV8fDk1PT09ZX1mdW5jdGlvbiBrKHQsZSxuLHIpe09iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gTyh0KXtpZighUWkudGVzdCh0KSl7dmFyIGU9dC5z
cGxpdCgiLiIpO3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7
aWYoIXQpcmV0dXJuO3Q9dFtlW25dXX1yZXR1cm4gdH19fWZ1bmN0aW9uIFModCxlLG4pe2lmKFhp
LmVycm9ySGFuZGxlcilYaS5lcnJvckhhbmRsZXIuY2FsbChudWxsLHQsZSxuKTtlbHNle2lmKCFu
b3x8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlKXRocm93IHQ7Y29uc29sZS5lcnJvcih0KX19
ZnVuY3Rpb24gVCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmL25hdGl2ZSBjb2RlLy50
ZXN0KHQudG9TdHJpbmcoKSl9ZnVuY3Rpb24gRSh0KXt3by50YXJnZXQmJiRvLnB1c2god28udGFy
Z2V0KSx3by50YXJnZXQ9dH1mdW5jdGlvbiBqKCl7d28udGFyZ2V0PSRvLnBvcCgpfWZ1bmN0aW9u
IE4odCxlLG4pe3QuX19wcm90b19fPWV9ZnVuY3Rpb24gTCh0LGUsbil7Zm9yKHZhciByPTAsaT1u
Lmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2sodCxvLGVbb10pfX1mdW5jdGlvbiBNKHQsZSl7
aWYocyh0KSl7dmFyIG47cmV0dXJuIHYodCwiX19vYl9fIikmJnQuX19vYl9fIGluc3RhbmNlb2Yg
T28/bj10Ll9fb2JfXzprby5zaG91bGRDb252ZXJ0JiYhbW8oKSYmKEFycmF5LmlzQXJyYXkodCl8
fGModCkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiYhdC5faXNWdWUmJihuPW5ldyBPbyh0KSks
ZSYmbiYmbi52bUNvdW50Kyssbn19ZnVuY3Rpb24gSSh0LGUsbixyLGkpe3ZhciBvPW5ldyB3byxh
PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKTtpZighYXx8ITEhPT1hLmNvbmZp
Z3VyYWJsZSl7dmFyIHM9YSYmYS5nZXQsYz1hJiZhLnNldCx1PSFpJiZNKG4pO09iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlv
bigpe3ZhciBlPXM/cy5jYWxsKHQpOm47cmV0dXJuIHdvLnRhcmdldCYmKG8uZGVwZW5kKCksdSYm
dS5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShlKSYmRChlKSksZX0sc2V0OmZ1bmN0aW9uKGUp
e3ZhciByPXM/cy5jYWxsKHQpOm47ZT09PXJ8fGUhPT1lJiZyIT09cnx8KGM/Yy5jYWxsKHQsZSk6
bj1lLHU9IWkmJk0oZSksby5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uIFAodCxlLG4pe2lmKEFycmF5
LmlzQXJyYXkodCkmJmwoZSkpcmV0dXJuIHQubGVuZ3RoPU1hdGgubWF4KHQubGVuZ3RoLGUpLHQu
c3BsaWNlKGUsMSxuKSxuO2lmKHYodCxlKSlyZXR1cm4gdFtlXT1uLG47dmFyIHI9dC5fX29iX187
cmV0dXJuIHQuX2lzVnVlfHxyJiZyLnZtQ291bnQ/bjpyPyhJKHIudmFsdWUsZSxuKSxyLmRlcC5u
b3RpZnkoKSxuKToodFtlXT1uLG4pfWZ1bmN0aW9uIFIodCxlKXtpZihBcnJheS5pc0FycmF5KHQp
JiZsKGUpKXJldHVybiB2b2lkIHQuc3BsaWNlKGUsMSk7dmFyIG49dC5fX29iX187dC5faXNWdWV8
fG4mJm4udm1Db3VudHx8dih0LGUpJiYoZGVsZXRlIHRbZV0sbiYmbi5kZXAubm90aWZ5KCkpfWZ1
bmN0aW9uIEQodCl7Zm9yKHZhciBlPXZvaWQgMCxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWU9dFtu
XSxlJiZlLl9fb2JfXyYmZS5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkoZSkmJkQo
ZSl9ZnVuY3Rpb24gRih0LGUpe2lmKCFlKXJldHVybiB0O2Zvcih2YXIgbixyLGksbz1PYmplY3Qu
a2V5cyhlKSxhPTA7YTxvLmxlbmd0aDthKyspbj1vW2FdLHI9dFtuXSxpPWVbbl0sdih0LG4pP2Mo
cikmJmMoaSkmJkYocixpKTpQKHQsbixpKTtyZXR1cm4gdH1mdW5jdGlvbiBCKHQsZSxuKXtyZXR1
cm4gbj90fHxlP2Z1bmN0aW9uKCl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5jYWxsKG4p
OmUsaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwobik6dm9pZCAwO3JldHVybiByP0Yocixp
KTppfTp2b2lkIDA6ZT90P2Z1bmN0aW9uKCl7cmV0dXJuIEYoImZ1bmN0aW9uIj09dHlwZW9mIGU/
ZS5jYWxsKHRoaXMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIHQ/dC5jYWxsKHRoaXMpOnQpfTplOnR9
ZnVuY3Rpb24gVSh0LGUpe3JldHVybiBlP3Q/dC5jb25jYXQoZSk6QXJyYXkuaXNBcnJheShlKT9l
OltlXTp0fWZ1bmN0aW9uIEgodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHR8fG51bGwpO3JldHVy
biBlP18obixlKTpufWZ1bmN0aW9uIFYodCl7dmFyIGU9dC5wcm9wcztpZihlKXt2YXIgbixyLGks
bz17fTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihuPWUubGVuZ3RoO24tLTspInN0cmluZyI9PXR5
cGVvZihyPWVbbl0pJiYoaT1IaShyKSxvW2ldPXt0eXBlOm51bGx9KTtlbHNlIGlmKGMoZSkpZm9y
KHZhciBhIGluIGUpcj1lW2FdLGk9SGkoYSksb1tpXT1jKHIpP3I6e3R5cGU6cn07dC5wcm9wcz1v
fX1mdW5jdGlvbiB6KHQpe3ZhciBlPXQuaW5qZWN0O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZh
ciBuPXQuaW5qZWN0PXt9LHI9MDtyPGUubGVuZ3RoO3IrKyluW2Vbcl1dPWVbcl19ZnVuY3Rpb24g
Sih0KXt2YXIgZT10LmRpcmVjdGl2ZXM7aWYoZSlmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTsi
ZnVuY3Rpb24iPT10eXBlb2YgciYmKGVbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX1mdW5jdGlvbiBL
KHQsZSxuKXtmdW5jdGlvbiByKHIpe3ZhciBpPVNvW3JdfHxUbztjW3JdPWkodFtyXSxlW3JdLG4s
cil9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUub3B0aW9ucyksVihlKSx6KGUpLEooZSk7dmFy
IGk9ZS5leHRlbmRzO2lmKGkmJih0PUsodCxpLG4pKSxlLm1peGlucylmb3IodmFyIG89MCxhPWUu
bWl4aW5zLmxlbmd0aDtvPGE7bysrKXQ9Syh0LGUubWl4aW5zW29dLG4pO3ZhciBzLGM9e307Zm9y
KHMgaW4gdClyKHMpO2ZvcihzIGluIGUpdih0LHMpfHxyKHMpO3JldHVybiBjfWZ1bmN0aW9uIHEo
dCxlLG4scil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIgaT10W2VdO2lmKHYoaSxuKSlyZXR1
cm4gaVtuXTt2YXIgbz1IaShuKTtpZih2KGksbykpcmV0dXJuIGlbb107dmFyIGE9Vmkobyk7aWYo
dihpLGEpKXJldHVybiBpW2FdO3JldHVybiBpW25dfHxpW29dfHxpW2FdfX1mdW5jdGlvbiBXKHQs
ZSxuLHIpe3ZhciBpPWVbdF0sbz0hdihuLHQpLGE9blt0XTtpZihYKEJvb2xlYW4saS50eXBlKSYm
KG8mJiF2KGksImRlZmF1bHQiKT9hPSExOlgoU3RyaW5nLGkudHlwZSl8fCIiIT09YSYmYSE9PUpp
KHQpfHwoYT0hMCkpLHZvaWQgMD09PWEpe2E9WihyLGksdCk7dmFyIHM9a28uc2hvdWxkQ29udmVy
dDtrby5zaG91bGRDb252ZXJ0PSEwLE0oYSksa28uc2hvdWxkQ29udmVydD1zfXJldHVybiBhfWZ1
bmN0aW9uIFoodCxlLG4pe2lmKHYoZSwiZGVmYXVsdCIpKXt2YXIgcj1lLmRlZmF1bHQ7cmV0dXJu
IHQmJnQuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT10LiRvcHRpb25zLnByb3BzRGF0YVtu
XSYmdm9pZCAwIT09dC5fcHJvcHNbbl0/dC5fcHJvcHNbbl06ImZ1bmN0aW9uIj09dHlwZW9mIHIm
JiJGdW5jdGlvbiIhPT1HKGUudHlwZSk/ci5jYWxsKHQpOnJ9fWZ1bmN0aW9uIEcodCl7dmFyIGU9
dCYmdC50b1N0cmluZygpLm1hdGNoKC9eXHMqZnVuY3Rpb24gKFx3KykvKTtyZXR1cm4gZT9lWzFd
OiIifWZ1bmN0aW9uIFgodCxlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gRyhlKT09PUco
dCk7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKEcoZVtuXSk9PT1HKHQpKXJldHVy
biEwO3JldHVybiExfWZ1bmN0aW9uIFkodCl7cmV0dXJuIG5ldyBFbyh2b2lkIDAsdm9pZCAwLHZv
aWQgMCxTdHJpbmcodCkpfWZ1bmN0aW9uIFEodCl7dmFyIGU9bmV3IEVvKHQudGFnLHQuZGF0YSx0
LmNoaWxkcmVuLHQudGV4dCx0LmVsbSx0LmNvbnRleHQsdC5jb21wb25lbnRPcHRpb25zLHQuYXN5
bmNGYWN0b3J5KTtyZXR1cm4gZS5ucz10Lm5zLGUuaXNTdGF0aWM9dC5pc1N0YXRpYyxlLmtleT10
LmtleSxlLmlzQ29tbWVudD10LmlzQ29tbWVudCxlLmlzQ2xvbmVkPSEwLGV9ZnVuY3Rpb24gdHQo
dCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09USh0
W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBldCh0KXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRz
LG49ZS5mbnM7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG4uYXBwbHkobnVsbCxhcmd1bWVu
dHMpO2Zvcih2YXIgcj1uLnNsaWNlKCksaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV0uYXBwbHkobnVs
bCx0KX1yZXR1cm4gZS5mbnM9dCxlfWZ1bmN0aW9uIG50KHQsZSxyLGksbyl7dmFyIGEscyxjLHU7
Zm9yKGEgaW4gdClzPXRbYV0sYz1lW2FdLHU9TW8oYSksbihzKXx8KG4oYyk/KG4ocy5mbnMpJiYo
cz10W2FdPWV0KHMpKSxyKHUubmFtZSxzLHUub25jZSx1LmNhcHR1cmUsdS5wYXNzaXZlKSk6cyE9
PWMmJihjLmZucz1zLHRbYV09YykpO2ZvcihhIGluIGUpbih0W2FdKSYmKHU9TW8oYSksaSh1Lm5h
bWUsZVthXSx1LmNhcHR1cmUpKX1mdW5jdGlvbiBydCh0LGUsbyl7ZnVuY3Rpb24gYSgpe28uYXBw
bHkodGhpcyxhcmd1bWVudHMpLGgocy5mbnMsYSl9dmFyIHMsYz10W2VdO24oYyk/cz1ldChbYV0p
OnIoYy5mbnMpJiZpKGMubWVyZ2VkKT8ocz1jLHMuZm5zLnB1c2goYSkpOnM9ZXQoW2MsYV0pLHMu
bWVyZ2VkPSEwLHRbZV09c31mdW5jdGlvbiBpdCh0LGUsaSl7dmFyIG89ZS5vcHRpb25zLnByb3Bz
O2lmKCFuKG8pKXt2YXIgYT17fSxzPXQuYXR0cnMsYz10LnByb3BzO2lmKHIocyl8fHIoYykpZm9y
KHZhciB1IGluIG8pe3ZhciBsPUppKHUpO290KGEsYyx1LGwsITApfHxvdChhLHMsdSxsLCExKX1y
ZXR1cm4gYX19ZnVuY3Rpb24gb3QodCxlLG4saSxvKXtpZihyKGUpKXtpZih2KGUsbikpcmV0dXJu
IHRbbl09ZVtuXSxvfHxkZWxldGUgZVtuXSwhMDtpZih2KGUsaSkpcmV0dXJuIHRbbl09ZVtpXSxv
fHxkZWxldGUgZVtpXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhdCh0KXtmb3IodmFyIGU9MDtlPHQu
bGVuZ3RoO2UrKylpZihBcnJheS5pc0FycmF5KHRbZV0pKXJldHVybiBBcnJheS5wcm90b3R5cGUu
Y29uY2F0LmFwcGx5KFtdLHQpO3JldHVybiB0fWZ1bmN0aW9uIHN0KHQpe3JldHVybiBhKHQpP1tZ
KHQpXTpBcnJheS5pc0FycmF5KHQpP3V0KHQpOnZvaWQgMH1mdW5jdGlvbiBjdCh0KXtyZXR1cm4g
cih0KSYmcih0LnRleHQpJiZvKHQuaXNDb21tZW50KX1mdW5jdGlvbiB1dCh0LGUpe3ZhciBvLHMs
Yyx1PVtdO2ZvcihvPTA7bzx0Lmxlbmd0aDtvKyspcz10W29dLG4ocyl8fCJib29sZWFuIj09dHlw
ZW9mIHN8fChjPXVbdS5sZW5ndGgtMV0sQXJyYXkuaXNBcnJheShzKT91LnB1c2guYXBwbHkodSx1
dChzLChlfHwiIikrIl8iK28pKTphKHMpP2N0KGMpP2MudGV4dCs9U3RyaW5nKHMpOiIiIT09cyYm
dS5wdXNoKFkocykpOmN0KHMpJiZjdChjKT91W3UubGVuZ3RoLTFdPVkoYy50ZXh0K3MudGV4dCk6
KGkodC5faXNWTGlzdCkmJnIocy50YWcpJiZuKHMua2V5KSYmcihlKSYmKHMua2V5PSJfX3ZsaXN0
IitlKyJfIitvKyJfXyIpLHUucHVzaChzKSkpO3JldHVybiB1fWZ1bmN0aW9uIGx0KHQsZSl7cmV0
dXJuIHQuX19lc01vZHVsZSYmdC5kZWZhdWx0JiYodD10LmRlZmF1bHQpLHModCk/ZS5leHRlbmQo
dCk6dH1mdW5jdGlvbiBmdCh0LGUsbixyLGkpe3ZhciBvPUxvKCk7cmV0dXJuIG8uYXN5bmNGYWN0
b3J5PXQsby5hc3luY01ldGE9e2RhdGE6ZSxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0sb31m
dW5jdGlvbiBwdCh0LGUsbyl7aWYoaSh0LmVycm9yKSYmcih0LmVycm9yQ29tcCkpcmV0dXJuIHQu
ZXJyb3JDb21wO2lmKHIodC5yZXNvbHZlZCkpcmV0dXJuIHQucmVzb2x2ZWQ7aWYoaSh0LmxvYWRp
bmcpJiZyKHQubG9hZGluZ0NvbXApKXJldHVybiB0LmxvYWRpbmdDb21wO2lmKCFyKHQuY29udGV4
dHMpKXt2YXIgYT10LmNvbnRleHRzPVtvXSxjPSEwLHU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxl
PWEubGVuZ3RoO3Q8ZTt0KyspYVt0XS4kZm9yY2VVcGRhdGUoKX0sbD14KGZ1bmN0aW9uKG4pe3Qu
cmVzb2x2ZWQ9bHQobixlKSxjfHx1KCl9KSxmPXgoZnVuY3Rpb24oZSl7cih0LmVycm9yQ29tcCkm
Jih0LmVycm9yPSEwLHUoKSl9KSxwPXQobCxmKTtyZXR1cm4gcyhwKSYmKCJmdW5jdGlvbiI9PXR5
cGVvZiBwLnRoZW4/bih0LnJlc29sdmVkKSYmcC50aGVuKGwsZik6cihwLmNvbXBvbmVudCkmJiJm
dW5jdGlvbiI9PXR5cGVvZiBwLmNvbXBvbmVudC50aGVuJiYocC5jb21wb25lbnQudGhlbihsLGYp
LHIocC5lcnJvcikmJih0LmVycm9yQ29tcD1sdChwLmVycm9yLGUpKSxyKHAubG9hZGluZykmJih0
LmxvYWRpbmdDb21wPWx0KHAubG9hZGluZyxlKSwwPT09cC5kZWxheT90LmxvYWRpbmc9ITA6c2V0
VGltZW91dChmdW5jdGlvbigpe24odC5yZXNvbHZlZCkmJm4odC5lcnJvcikmJih0LmxvYWRpbmc9
ITAsdSgpKX0scC5kZWxheXx8MjAwKSkscihwLnRpbWVvdXQpJiZzZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7bih0LnJlc29sdmVkKSYmZihudWxsKX0scC50aW1lb3V0KSkpLGM9ITEsdC5sb2FkaW5nP3Qu
bG9hZGluZ0NvbXA6dC5yZXNvbHZlZH10LmNvbnRleHRzLnB1c2gobyl9ZnVuY3Rpb24gZHQodCl7
aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtl
XTtpZihyKG4pJiZyKG4uY29tcG9uZW50T3B0aW9ucykpcmV0dXJuIG59fWZ1bmN0aW9uIGh0KHQp
e3QuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHQuX2hhc0hvb2tFdmVudD0hMTt2YXIgZT10
LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7ZSYmeXQodCxlKX1mdW5jdGlvbiB2dCh0LGUsbil7
bj9Oby4kb25jZSh0LGUpOk5vLiRvbih0LGUpfWZ1bmN0aW9uIG10KHQsZSl7Tm8uJG9mZih0LGUp
fWZ1bmN0aW9uIHl0KHQsZSxuKXtObz10LG50KGUsbnx8e30sdnQsbXQsdCl9ZnVuY3Rpb24gZ3Qo
dCxlKXt2YXIgbj17fTtpZighdClyZXR1cm4gbjtmb3IodmFyIHI9W10saT0wLG89dC5sZW5ndGg7
aTxvO2krKyl7dmFyIGE9dFtpXTtpZihhLmNvbnRleHQhPT1lJiZhLmZ1bmN0aW9uYWxDb250ZXh0
IT09ZXx8IWEuZGF0YXx8bnVsbD09YS5kYXRhLnNsb3Qpci5wdXNoKGEpO2Vsc2V7dmFyIHM9YS5k
YXRhLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PWEudGFnP2MucHVzaC5hcHBs
eShjLGEuY2hpbGRyZW4pOmMucHVzaChhKX19cmV0dXJuIHIuZXZlcnkoX3QpfHwobi5kZWZhdWx0
PXIpLG59ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHQuaXNDb21tZW50fHwiICI9PT10LnRleHR9ZnVu
Y3Rpb24gYnQodCxlKXtlPWV8fHt9O2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKUFycmF5Lmlz
QXJyYXkodFtuXSk/YnQodFtuXSxlKTplW3Rbbl0ua2V5XT10W25dLmZuO3JldHVybiBlfWZ1bmN0
aW9uIHd0KHQpe3ZhciBlPXQuJG9wdGlvbnMsbj1lLnBhcmVudDtpZihuJiYhZS5hYnN0cmFjdCl7
Zm9yKDtuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNoaWxk
cmVuLnB1c2godCl9dC4kcGFyZW50PW4sdC4kcm9vdD1uP24uJHJvb3Q6dCx0LiRjaGlsZHJlbj1b
XSx0LiRyZWZzPXt9LHQuX3dhdGNoZXI9bnVsbCx0Ll9pbmFjdGl2ZT1udWxsLHQuX2RpcmVjdElu
YWN0aXZlPSExLHQuX2lzTW91bnRlZD0hMSx0Ll9pc0Rlc3Ryb3llZD0hMSx0Ll9pc0JlaW5nRGVz
dHJveWVkPSExfWZ1bmN0aW9uICR0KHQsZSxuKXt0LiRlbD1lLHQuJG9wdGlvbnMucmVuZGVyfHwo
dC4kb3B0aW9ucy5yZW5kZXI9TG8pLE90KHQsImJlZm9yZU1vdW50Iik7dmFyIHI7cmV0dXJuIHI9
ZnVuY3Rpb24oKXt0Ll91cGRhdGUodC5fcmVuZGVyKCksbil9LHQuX3dhdGNoZXI9bmV3IFZvKHQs
cix3KSxuPSExLG51bGw9PXQuJHZub2RlJiYodC5faXNNb3VudGVkPSEwLE90KHQsIm1vdW50ZWQi
KSksdH1mdW5jdGlvbiBDdCh0LGUsbixyLGkpe3ZhciBvPSEhKGl8fHQuJG9wdGlvbnMuX3JlbmRl
ckNoaWxkcmVufHxyLmRhdGEuc2NvcGVkU2xvdHN8fHQuJHNjb3BlZFNsb3RzIT09WWkpO2lmKHQu
JG9wdGlvbnMuX3BhcmVudFZub2RlPXIsdC4kdm5vZGU9cix0Ll92bm9kZSYmKHQuX3Zub2RlLnBh
cmVudD1yKSx0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbj1pLHQuJGF0dHJzPXIuZGF0YSYmci5k
YXRhLmF0dHJzLHQuJGxpc3RlbmVycz1uLGUmJnQuJG9wdGlvbnMucHJvcHMpe2tvLnNob3VsZENv
bnZlcnQ9ITE7Zm9yKHZhciBhPXQuX3Byb3BzLHM9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLGM9
MDtjPHMubGVuZ3RoO2MrKyl7dmFyIHU9c1tjXTthW3VdPVcodSx0LiRvcHRpb25zLnByb3BzLGUs
dCl9a28uc2hvdWxkQ29udmVydD0hMCx0LiRvcHRpb25zLnByb3BzRGF0YT1lfWlmKG4pe3ZhciBs
PXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9
bix5dCh0LG4sbCl9byYmKHQuJHNsb3RzPWd0KGksci5jb250ZXh0KSx0LiRmb3JjZVVwZGF0ZSgp
KX1mdW5jdGlvbiB4dCh0KXtmb3IoO3QmJih0PXQuJHBhcmVudCk7KWlmKHQuX2luYWN0aXZlKXJl
dHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEF0KHQsZSl7aWYoZSl7aWYodC5fZGlyZWN0SW5hY3Rp
dmU9ITEseHQodCkpcmV0dXJufWVsc2UgaWYodC5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKHQu
X2luYWN0aXZlfHxudWxsPT09dC5faW5hY3RpdmUpe3QuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0w
O248dC4kY2hpbGRyZW4ubGVuZ3RoO24rKylBdCh0LiRjaGlsZHJlbltuXSk7T3QodCwiYWN0aXZh
dGVkIil9fWZ1bmN0aW9uIGt0KHQsZSl7aWYoIShlJiYodC5fZGlyZWN0SW5hY3RpdmU9ITAseHQo
dCkpfHx0Ll9pbmFjdGl2ZSkpe3QuX2luYWN0aXZlPSEwO2Zvcih2YXIgbj0wO248dC4kY2hpbGRy
ZW4ubGVuZ3RoO24rKylrdCh0LiRjaGlsZHJlbltuXSk7T3QodCwiZGVhY3RpdmF0ZWQiKX19ZnVu
Y3Rpb24gT3QodCxlKXt2YXIgbj10LiRvcHRpb25zW2VdO2lmKG4pZm9yKHZhciByPTAsaT1uLmxl
bmd0aDtyPGk7cisrKXRyeXtuW3JdLmNhbGwodCl9Y2F0Y2gobil7UyhuLHQsZSsiIGhvb2siKX10
Ll9oYXNIb29rRXZlbnQmJnQuJGVtaXQoImhvb2s6IitlKX1mdW5jdGlvbiBTdCgpe1VvPVBvLmxl
bmd0aD1Sby5sZW5ndGg9MCxEbz17fSxGbz1Cbz0hMX1mdW5jdGlvbiBUdCgpe0JvPSEwO3ZhciB0
LGU7Zm9yKFBvLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pZC1lLmlkfSksVW89MDtVbzxQ
by5sZW5ndGg7VW8rKyl0PVBvW1VvXSxlPXQuaWQsRG9bZV09bnVsbCx0LnJ1bigpO3ZhciBuPVJv
LnNsaWNlKCkscj1Qby5zbGljZSgpO1N0KCksTnQobiksRXQocikseW8mJlhpLmRldnRvb2xzJiZ5
by5lbWl0KCJmbHVzaCIpfWZ1bmN0aW9uIEV0KHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS07KXt2
YXIgbj10W2VdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiZPdChyLCJ1cGRh
dGVkIil9fWZ1bmN0aW9uIGp0KHQpe3QuX2luYWN0aXZlPSExLFJvLnB1c2godCl9ZnVuY3Rpb24g
TnQodCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5faW5hY3RpdmU9ITAsQXQodFtl
XSwhMCl9ZnVuY3Rpb24gTHQodCl7dmFyIGU9dC5pZDtpZihudWxsPT1Eb1tlXSl7aWYoRG9bZV09
ITAsQm8pe2Zvcih2YXIgbj1Qby5sZW5ndGgtMTtuPlVvJiZQb1tuXS5pZD50LmlkOyluLS07UG8u
c3BsaWNlKG4rMSwwLHQpfWVsc2UgUG8ucHVzaCh0KTtGb3x8KEZvPSEwLF9vKFR0KSl9fWZ1bmN0
aW9uIE10KHQpe3pvLmNsZWFyKCksSXQodCx6byl9ZnVuY3Rpb24gSXQodCxlKXt2YXIgbixyLGk9
QXJyYXkuaXNBcnJheSh0KTtpZigoaXx8cyh0KSkmJk9iamVjdC5pc0V4dGVuc2libGUodCkpe2lm
KHQuX19vYl9fKXt2YXIgbz10Ll9fb2JfXy5kZXAuaWQ7aWYoZS5oYXMobykpcmV0dXJuO2UuYWRk
KG8pfWlmKGkpZm9yKG49dC5sZW5ndGg7bi0tOylJdCh0W25dLGUpO2Vsc2UgZm9yKHI9T2JqZWN0
LmtleXModCksbj1yLmxlbmd0aDtuLS07KUl0KHRbcltuXV0sZSl9fWZ1bmN0aW9uIFB0KHQsZSxu
KXtKby5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tlXVtuXX0sSm8uc2V0PWZ1bmN0aW9uKHQp
e3RoaXNbZV1bbl09dH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixKbyl9ZnVuY3Rpb24gUnQo
dCl7dC5fd2F0Y2hlcnM9W107dmFyIGU9dC4kb3B0aW9ucztlLnByb3BzJiZEdCh0LGUucHJvcHMp
LGUubWV0aG9kcyYmenQodCxlLm1ldGhvZHMpLGUuZGF0YT9GdCh0KTpNKHQuX2RhdGE9e30sITAp
LGUuY29tcHV0ZWQmJlV0KHQsZS5jb21wdXRlZCksZS53YXRjaCYmZS53YXRjaCE9PWxvJiZKdCh0
LGUud2F0Y2gpfWZ1bmN0aW9uIER0KHQsZSl7dmFyIG49dC4kb3B0aW9ucy5wcm9wc0RhdGF8fHt9
LHI9dC5fcHJvcHM9e30saT10LiRvcHRpb25zLl9wcm9wS2V5cz1bXSxvPSF0LiRwYXJlbnQ7a28u
c2hvdWxkQ29udmVydD1vO2Zvcih2YXIgYSBpbiBlKSFmdW5jdGlvbihvKXtpLnB1c2gobyk7dmFy
IGE9VyhvLGUsbix0KTtJKHIsbyxhKSxvIGluIHR8fFB0KHQsIl9wcm9wcyIsbyl9KGEpO2tvLnNo
b3VsZENvbnZlcnQ9ITB9ZnVuY3Rpb24gRnQodCl7dmFyIGU9dC4kb3B0aW9ucy5kYXRhO2U9dC5f
ZGF0YT0iZnVuY3Rpb24iPT10eXBlb2YgZT9CdChlLHQpOmV8fHt9LGMoZSl8fChlPXt9KTtmb3Io
dmFyIG49T2JqZWN0LmtleXMoZSkscj10LiRvcHRpb25zLnByb3BzLGk9KHQuJG9wdGlvbnMubWV0
aG9kcyxuLmxlbmd0aCk7aS0tOyl7dmFyIG89bltpXTtyJiZ2KHIsbyl8fEEobyl8fFB0KHQsIl9k
YXRhIixvKX1NKGUsITApfWZ1bmN0aW9uIEJ0KHQsZSl7dHJ5e3JldHVybiB0LmNhbGwoZSl9Y2F0
Y2godCl7cmV0dXJuIFModCxlLCJkYXRhKCkiKSx7fX19ZnVuY3Rpb24gVXQodCxlKXt2YXIgbj10
Ll9jb21wdXRlZFdhdGNoZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciByIGluIGUpe3Zh
ciBpPWVbcl0sbz0iZnVuY3Rpb24iPT10eXBlb2YgaT9pOmkuZ2V0O25bcl09bmV3IFZvKHQsb3x8
dyx3LEtvKSxyIGluIHR8fEh0KHQscixpKX19ZnVuY3Rpb24gSHQodCxlLG4peyJmdW5jdGlvbiI9
PXR5cGVvZiBuPyhKby5nZXQ9VnQoZSksSm8uc2V0PXcpOihKby5nZXQ9bi5nZXQ/ITEhPT1uLmNh
Y2hlP1Z0KGUpOm4uZ2V0OncsSm8uc2V0PW4uc2V0P24uc2V0OncpLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LGUsSm8pfWZ1bmN0aW9uIFZ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMu
X2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbdF07aWYoZSlyZXR1cm4g
ZS5kaXJ0eSYmZS5ldmFsdWF0ZSgpLHdvLnRhcmdldCYmZS5kZXBlbmQoKSxlLnZhbHVlfX1mdW5j
dGlvbiB6dCh0LGUpe3QuJG9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIGUpdFtuXT1udWxsPT1l
W25dP3c6eShlW25dLHQpfWZ1bmN0aW9uIEp0KHQsZSl7Zm9yKHZhciBuIGluIGUpe3ZhciByPWVb
bl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylLdCh0LG4s
cltpXSk7ZWxzZSBLdCh0LG4scil9fWZ1bmN0aW9uIEt0KHQsZSxuLHIpe3JldHVybiBjKG4pJiYo
cj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9mIG4mJihuPXRbbl0pLHQuJHdhdGNoKGUs
bixyKX1mdW5jdGlvbiBxdCh0KXt2YXIgZT10LiRvcHRpb25zLnByb3ZpZGU7ZSYmKHQuX3Byb3Zp
ZGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbCh0KTplKX1mdW5jdGlvbiBXdCh0KXt2YXIg
ZT1adCh0LiRvcHRpb25zLmluamVjdCx0KTtlJiYoa28uc2hvdWxkQ29udmVydD0hMSxPYmplY3Qu
a2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe0kodCxuLGVbbl0pfSksa28uc2hvdWxkQ29udmVy
dD0hMCl9ZnVuY3Rpb24gWnQodCxlKXtpZih0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxs
KSxyPWdvP1JlZmxlY3Qub3duS2V5cyh0KTpPYmplY3Qua2V5cyh0KSxpPTA7aTxyLmxlbmd0aDtp
KyspZm9yKHZhciBvPXJbaV0sYT10W29dLHM9ZTtzOyl7aWYocy5fcHJvdmlkZWQmJmEgaW4gcy5f
cHJvdmlkZWQpe25bb109cy5fcHJvdmlkZWRbYV07YnJlYWt9cz1zLiRwYXJlbnR9cmV0dXJuIG59
fWZ1bmN0aW9uIEd0KHQsZSxuLGksbyl7dmFyIGE9e30scz10Lm9wdGlvbnMucHJvcHM7aWYocihz
KSlmb3IodmFyIGMgaW4gcylhW2NdPVcoYyxzLGV8fHt9KTtlbHNlIHIobi5hdHRycykmJlh0KGEs
bi5hdHRycykscihuLnByb3BzKSYmWHQoYSxuLnByb3BzKTt2YXIgdT1PYmplY3QuY3JlYXRlKGkp
LGw9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIHJlKHUsdCxlLG4sciwhMCl9LGY9dC5vcHRpb25z
LnJlbmRlci5jYWxsKG51bGwsbCx7ZGF0YTpuLHByb3BzOmEsY2hpbGRyZW46byxwYXJlbnQ6aSxs
aXN0ZW5lcnM6bi5vbnx8e30saW5qZWN0aW9uczpadCh0Lm9wdGlvbnMuaW5qZWN0LGkpLHNsb3Rz
OmZ1bmN0aW9uKCl7cmV0dXJuIGd0KG8saSl9fSk7cmV0dXJuIGYgaW5zdGFuY2VvZiBFbyYmKGYu
ZnVuY3Rpb25hbENvbnRleHQ9aSxmLmZ1bmN0aW9uYWxPcHRpb25zPXQub3B0aW9ucyxuLnNsb3Qm
JigoZi5kYXRhfHwoZi5kYXRhPXt9KSkuc2xvdD1uLnNsb3QpKSxmfWZ1bmN0aW9uIFh0KHQsZSl7
Zm9yKHZhciBuIGluIGUpdFtIaShuKV09ZVtuXX1mdW5jdGlvbiBZdCh0LGUsbyxhLGMpe2lmKCFu
KHQpKXt2YXIgdT1vLiRvcHRpb25zLl9iYXNlO2lmKHModCkmJih0PXUuZXh0ZW5kKHQpKSwiZnVu
Y3Rpb24iPT10eXBlb2YgdCl7dmFyIGw7aWYobih0LmNpZCkmJihsPXQsdm9pZCAwPT09KHQ9cHQo
bCx1LG8pKSkpcmV0dXJuIGZ0KGwsZSxvLGEsYyk7ZT1lfHx7fSxnZSh0KSxyKGUubW9kZWwpJiZu
ZSh0Lm9wdGlvbnMsZSk7dmFyIGY9aXQoZSx0LGMpO2lmKGkodC5vcHRpb25zLmZ1bmN0aW9uYWwp
KXJldHVybiBHdCh0LGYsZSxvLGEpO3ZhciBwPWUub247aWYoZS5vbj1lLm5hdGl2ZU9uLGkodC5v
cHRpb25zLmFic3RyYWN0KSl7dmFyIGQ9ZS5zbG90O2U9e30sZCYmKGUuc2xvdD1kKX10ZShlKTt2
YXIgaD10Lm9wdGlvbnMubmFtZXx8YztyZXR1cm4gbmV3IEVvKCJ2dWUtY29tcG9uZW50LSIrdC5j
aWQrKGg/Ii0iK2g6IiIpLGUsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbyx7Q3Rvcjp0LHByb3BzRGF0
YTpmLGxpc3RlbmVyczpwLHRhZzpjLGNoaWxkcmVuOmF9LGwpfX19ZnVuY3Rpb24gUXQodCxlLG4s
aSl7dmFyIG89dC5jb21wb25lbnRPcHRpb25zLGE9e19pc0NvbXBvbmVudDohMCxwYXJlbnQ6ZSxw
cm9wc0RhdGE6by5wcm9wc0RhdGEsX2NvbXBvbmVudFRhZzpvLnRhZyxfcGFyZW50Vm5vZGU6dCxf
cGFyZW50TGlzdGVuZXJzOm8ubGlzdGVuZXJzLF9yZW5kZXJDaGlsZHJlbjpvLmNoaWxkcmVuLF9w
YXJlbnRFbG06bnx8bnVsbCxfcmVmRWxtOml8fG51bGx9LHM9dC5kYXRhLmlubGluZVRlbXBsYXRl
O3JldHVybiByKHMpJiYoYS5yZW5kZXI9cy5yZW5kZXIsYS5zdGF0aWNSZW5kZXJGbnM9cy5zdGF0
aWNSZW5kZXJGbnMpLG5ldyBvLkN0b3IoYSl9ZnVuY3Rpb24gdGUodCl7dC5ob29rfHwodC5ob29r
PXt9KTtmb3IodmFyIGU9MDtlPFdvLmxlbmd0aDtlKyspe3ZhciBuPVdvW2VdLHI9dC5ob29rW25d
LGk9cW9bbl07dC5ob29rW25dPXI/ZWUoaSxyKTppfX1mdW5jdGlvbiBlZSh0LGUpe3JldHVybiBm
dW5jdGlvbihuLHIsaSxvKXt0KG4scixpLG8pLGUobixyLGksbyl9fWZ1bmN0aW9uIG5lKHQsZSl7
dmFyIG49dC5tb2RlbCYmdC5tb2RlbC5wcm9wfHwidmFsdWUiLGk9dC5tb2RlbCYmdC5tb2RlbC5l
dmVudHx8ImlucHV0IjsoZS5wcm9wc3x8KGUucHJvcHM9e30pKVtuXT1lLm1vZGVsLnZhbHVlO3Zh
ciBvPWUub258fChlLm9uPXt9KTtyKG9baV0pP29baV09W2UubW9kZWwuY2FsbGJhY2tdLmNvbmNh
dChvW2ldKTpvW2ldPWUubW9kZWwuY2FsbGJhY2t9ZnVuY3Rpb24gcmUodCxlLG4scixvLHMpe3Jl
dHVybihBcnJheS5pc0FycmF5KG4pfHxhKG4pKSYmKG89cixyPW4sbj12b2lkIDApLGkocykmJihv
PUdvKSxpZSh0LGUsbixyLG8pfWZ1bmN0aW9uIGllKHQsZSxuLGksbyl7aWYocihuKSYmcihuLl9f
b2JfXykpcmV0dXJuIExvKCk7aWYocihuKSYmcihuLmlzKSYmKGU9bi5pcyksIWUpcmV0dXJuIExv
KCk7QXJyYXkuaXNBcnJheShpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGlbMF0mJihuPW58fHt9LG4u
c2NvcGVkU2xvdHM9e2RlZmF1bHQ6aVswXX0saS5sZW5ndGg9MCksbz09PUdvP2k9c3QoaSk6bz09
PVpvJiYoaT1hdChpKSk7dmFyIGEscztpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBjO3M9WGku
Z2V0VGFnTmFtZXNwYWNlKGUpLGE9WGkuaXNSZXNlcnZlZFRhZyhlKT9uZXcgRW8oWGkucGFyc2VQ
bGF0Zm9ybVRhZ05hbWUoZSksbixpLHZvaWQgMCx2b2lkIDAsdCk6cihjPXEodC4kb3B0aW9ucywi
Y29tcG9uZW50cyIsZSkpP1l0KGMsbix0LGksZSk6bmV3IEVvKGUsbixpLHZvaWQgMCx2b2lkIDAs
dCl9ZWxzZSBhPVl0KGUsbix0LGkpO3JldHVybiByKGEpPyhzJiZvZShhLHMpLGEpOkxvKCl9ZnVu
Y3Rpb24gb2UodCxlKXtpZih0Lm5zPWUsImZvcmVpZ25PYmplY3QiIT09dC50YWcmJnIodC5jaGls
ZHJlbikpZm9yKHZhciBpPTAsbz10LmNoaWxkcmVuLmxlbmd0aDtpPG87aSsrKXt2YXIgYT10LmNo
aWxkcmVuW2ldO3IoYS50YWcpJiZuKGEubnMpJiZvZShhLGUpfX1mdW5jdGlvbiBhZSh0LGUpe3Zh
ciBuLGksbyxhLGM7aWYoQXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyI9PXR5cGVvZiB0KWZvcihu
PW5ldyBBcnJheSh0Lmxlbmd0aCksaT0wLG89dC5sZW5ndGg7aTxvO2krKyluW2ldPWUodFtpXSxp
KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdClmb3Iobj1uZXcgQXJyYXkodCksaT0wO2k8dDtp
KyspbltpXT1lKGkrMSxpKTtlbHNlIGlmKHModCkpZm9yKGE9T2JqZWN0LmtleXModCksbj1uZXcg
QXJyYXkoYS5sZW5ndGgpLGk9MCxvPWEubGVuZ3RoO2k8bztpKyspYz1hW2ldLG5baV09ZSh0W2Nd
LGMsaSk7cmV0dXJuIHIobikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIHNlKHQsZSxuLHIp
e3ZhciBpPXRoaXMuJHNjb3BlZFNsb3RzW3RdO2lmKGkpcmV0dXJuIG49bnx8e30sciYmKG49Xyhf
KHt9LHIpLG4pKSxpKG4pfHxlO3ZhciBvPXRoaXMuJHNsb3RzW3RdO3JldHVybiBvfHxlfWZ1bmN0
aW9uIGNlKHQpe3JldHVybiBxKHRoaXMuJG9wdGlvbnMsImZpbHRlcnMiLHQsITApfHxxaX1mdW5j
dGlvbiB1ZSh0LGUsbil7dmFyIHI9WGkua2V5Q29kZXNbZV18fG47cmV0dXJuIEFycmF5LmlzQXJy
YXkocik/LTE9PT1yLmluZGV4T2YodCk6ciE9PXR9ZnVuY3Rpb24gbGUodCxlLG4scixpKXtpZihu
KWlmKHMobikpe0FycmF5LmlzQXJyYXkobikmJihuPWIobikpO3ZhciBvO2Zvcih2YXIgYSBpbiBu
KSFmdW5jdGlvbihhKXtpZigiY2xhc3MiPT09YXx8InN0eWxlIj09PWF8fEZpKGEpKW89dDtlbHNl
e3ZhciBzPXQuYXR0cnMmJnQuYXR0cnMudHlwZTtvPXJ8fFhpLm11c3RVc2VQcm9wKGUscyxhKT90
LmRvbVByb3BzfHwodC5kb21Qcm9wcz17fSk6dC5hdHRyc3x8KHQuYXR0cnM9e30pfWlmKCEoYSBp
biBvKSYmKG9bYV09blthXSxpKSl7KHQub258fCh0Lm9uPXt9KSlbInVwZGF0ZToiK2FdPWZ1bmN0
aW9uKHQpe25bYV09dH19fShhKX1lbHNlO3JldHVybiB0fWZ1bmN0aW9uIGZlKHQsZSl7dmFyIG49
dGhpcy5fc3RhdGljVHJlZXNbdF07cmV0dXJuIG4mJiFlP0FycmF5LmlzQXJyYXkobik/dHQobik6
UShuKToobj10aGlzLl9zdGF0aWNUcmVlc1t0XT10aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZu
c1t0XS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KSxkZShuLCJfX3N0YXRpY19fIit0LCExKSxuKX1m
dW5jdGlvbiBwZSh0LGUsbil7cmV0dXJuIGRlKHQsIl9fb25jZV9fIitlKyhuPyJfIituOiIiKSwh
MCksdH1mdW5jdGlvbiBkZSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDty
PHQubGVuZ3RoO3IrKyl0W3JdJiYic3RyaW5nIiE9dHlwZW9mIHRbcl0mJmhlKHRbcl0sZSsiXyIr
cixuKTtlbHNlIGhlKHQsZSxuKX1mdW5jdGlvbiBoZSh0LGUsbil7dC5pc1N0YXRpYz0hMCx0Lmtl
eT1lLHQuaXNPbmNlPW59ZnVuY3Rpb24gdmUodCxlKXtpZihlKWlmKGMoZSkpe3ZhciBuPXQub249
dC5vbj9fKHt9LHQub24pOnt9O2Zvcih2YXIgciBpbiBlKXt2YXIgaT1uW3JdLG89ZVtyXTtuW3Jd
PWk/W10uY29uY2F0KG8saSk6b319ZWxzZTtyZXR1cm4gdH1mdW5jdGlvbiBtZSh0KXt0Ll92bm9k
ZT1udWxsLHQuX3N0YXRpY1RyZWVzPW51bGw7dmFyIGU9dC4kdm5vZGU9dC4kb3B0aW9ucy5fcGFy
ZW50Vm5vZGUsbj1lJiZlLmNvbnRleHQ7dC4kc2xvdHM9Z3QodC4kb3B0aW9ucy5fcmVuZGVyQ2hp
bGRyZW4sbiksdC4kc2NvcGVkU2xvdHM9WWksdC5fYz1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4g
cmUodCxlLG4scixpLCExKX0sdC4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4scixpKXtyZXR1
cm4gcmUodCxlLG4scixpLCEwKX07dmFyIHI9ZSYmZS5kYXRhO0kodCwiJGF0dHJzIixyJiZyLmF0
dHJzLG51bGwsITApLEkodCwiJGxpc3RlbmVycyIsdC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJz
LG51bGwsITApfWZ1bmN0aW9uIHllKHQsZSl7dmFyIG49dC4kb3B0aW9ucz1PYmplY3QuY3JlYXRl
KHQuY29uc3RydWN0b3Iub3B0aW9ucyk7bi5wYXJlbnQ9ZS5wYXJlbnQsbi5wcm9wc0RhdGE9ZS5w
cm9wc0RhdGEsbi5fcGFyZW50Vm5vZGU9ZS5fcGFyZW50Vm5vZGUsbi5fcGFyZW50TGlzdGVuZXJz
PWUuX3BhcmVudExpc3RlbmVycyxuLl9yZW5kZXJDaGlsZHJlbj1lLl9yZW5kZXJDaGlsZHJlbixu
Ll9jb21wb25lbnRUYWc9ZS5fY29tcG9uZW50VGFnLG4uX3BhcmVudEVsbT1lLl9wYXJlbnRFbG0s
bi5fcmVmRWxtPWUuX3JlZkVsbSxlLnJlbmRlciYmKG4ucmVuZGVyPWUucmVuZGVyLG4uc3RhdGlj
UmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5zKX1mdW5jdGlvbiBnZSh0KXt2YXIgZT10Lm9wdGlv
bnM7aWYodC5zdXBlcil7dmFyIG49Z2UodC5zdXBlcik7aWYobiE9PXQuc3VwZXJPcHRpb25zKXt0
LnN1cGVyT3B0aW9ucz1uO3ZhciByPV9lKHQpO3ImJl8odC5leHRlbmRPcHRpb25zLHIpLGU9dC5v
cHRpb25zPUsobix0LmV4dGVuZE9wdGlvbnMpLGUubmFtZSYmKGUuY29tcG9uZW50c1tlLm5hbWVd
PXQpfX1yZXR1cm4gZX1mdW5jdGlvbiBfZSh0KXt2YXIgZSxuPXQub3B0aW9ucyxyPXQuZXh0ZW5k
T3B0aW9ucyxpPXQuc2VhbGVkT3B0aW9ucztmb3IodmFyIG8gaW4gbiluW29dIT09aVtvXSYmKGV8
fChlPXt9KSxlW29dPWJlKG5bb10scltvXSxpW29dKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYmUodCxl
LG4pe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciByPVtdO249QXJyYXkuaXNBcnJheShuKT9uOltu
XSxlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspKGUu
aW5kZXhPZih0W2ldKT49MHx8bi5pbmRleE9mKHRbaV0pPDApJiZyLnB1c2godFtpXSk7cmV0dXJu
IHJ9cmV0dXJuIHR9ZnVuY3Rpb24gd2UodCl7dGhpcy5faW5pdCh0KX1mdW5jdGlvbiAkZSh0KXt0
LnVzZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pbnN0YWxsZWRQbHVnaW5zfHwodGhpcy5faW5z
dGFsbGVkUGx1Z2lucz1bXSk7aWYoZS5pbmRleE9mKHQpPi0xKXJldHVybiB0aGlzO3ZhciBuPWco
YXJndW1lbnRzLDEpO3JldHVybiBuLnVuc2hpZnQodGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIHQu
aW5zdGFsbD90Lmluc3RhbGwuYXBwbHkodCxuKToiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5hcHBs
eShudWxsLG4pLGUucHVzaCh0KSx0aGlzfX1mdW5jdGlvbiBDZSh0KXt0Lm1peGluPWZ1bmN0aW9u
KHQpe3JldHVybiB0aGlzLm9wdGlvbnM9Syh0aGlzLm9wdGlvbnMsdCksdGhpc319ZnVuY3Rpb24g
eGUodCl7dC5jaWQ9MDt2YXIgZT0xO3QuZXh0ZW5kPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIG49
dGhpcyxyPW4uY2lkLGk9dC5fQ3Rvcnx8KHQuX0N0b3I9e30pO2lmKGlbcl0pcmV0dXJuIGlbcl07
dmFyIG89dC5uYW1lfHxuLm9wdGlvbnMubmFtZSxhPWZ1bmN0aW9uKHQpe3RoaXMuX2luaXQodCl9
O3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSxhLnByb3RvdHlw
ZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPWUrKyxhLm9wdGlvbnM9SyhuLm9wdGlvbnMsdCksYS5zdXBl
cj1uLGEub3B0aW9ucy5wcm9wcyYmQWUoYSksYS5vcHRpb25zLmNvbXB1dGVkJiZrZShhKSxhLmV4
dGVuZD1uLmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsWmkuZm9yRWFjaChmdW5j
dGlvbih0KXthW3RdPW5bdF19KSxvJiYoYS5vcHRpb25zLmNvbXBvbmVudHNbb109YSksYS5zdXBl
ck9wdGlvbnM9bi5vcHRpb25zLGEuZXh0ZW5kT3B0aW9ucz10LGEuc2VhbGVkT3B0aW9ucz1fKHt9
LGEub3B0aW9ucyksaVtyXT1hLGF9fWZ1bmN0aW9uIEFlKHQpe3ZhciBlPXQub3B0aW9ucy5wcm9w
cztmb3IodmFyIG4gaW4gZSlQdCh0LnByb3RvdHlwZSwiX3Byb3BzIixuKX1mdW5jdGlvbiBrZSh0
KXt2YXIgZT10Lm9wdGlvbnMuY29tcHV0ZWQ7Zm9yKHZhciBuIGluIGUpSHQodC5wcm90b3R5cGUs
bixlW25dKX1mdW5jdGlvbiBPZSh0KXtaaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZnVuY3Rp
b24odCxuKXtyZXR1cm4gbj8oImNvbXBvbmVudCI9PT1lJiZjKG4pJiYobi5uYW1lPW4ubmFtZXx8
dCxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLCJkaXJlY3RpdmUiPT09ZSYmImZ1bmN0
aW9uIj09dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9wdGlvbnNbZSsicyJd
W3RdPW4sbik6dGhpcy5vcHRpb25zW2UrInMiXVt0XX19KX1mdW5jdGlvbiBTZSh0KXtyZXR1cm4g
dCYmKHQuQ3Rvci5vcHRpb25zLm5hbWV8fHQudGFnKX1mdW5jdGlvbiBUZSh0LGUpe3JldHVybiBB
cnJheS5pc0FycmF5KHQpP3QuaW5kZXhPZihlKT4tMToic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxp
dCgiLCIpLmluZGV4T2YoZSk+LTE6ISF1KHQpJiZ0LnRlc3QoZSl9ZnVuY3Rpb24gRWUodCxlLG4p
e2Zvcih2YXIgciBpbiB0KXt2YXIgaT10W3JdO2lmKGkpe3ZhciBvPVNlKGkuY29tcG9uZW50T3B0
aW9ucyk7byYmIW4obykmJihpIT09ZSYmamUoaSksdFtyXT1udWxsKX19fWZ1bmN0aW9uIGplKHQp
e3QmJnQuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKX1mdW5jdGlvbiBOZSh0KXtmb3IodmFy
IGU9dC5kYXRhLG49dCxpPXQ7cihpLmNvbXBvbmVudEluc3RhbmNlKTspaT1pLmNvbXBvbmVudElu
c3RhbmNlLl92bm9kZSxpLmRhdGEmJihlPUxlKGkuZGF0YSxlKSk7Zm9yKDtyKG49bi5wYXJlbnQp
OyluLmRhdGEmJihlPUxlKGUsbi5kYXRhKSk7cmV0dXJuIE1lKGUuc3RhdGljQ2xhc3MsZS5jbGFz
cyl9ZnVuY3Rpb24gTGUodCxlKXtyZXR1cm57c3RhdGljQ2xhc3M6SWUodC5zdGF0aWNDbGFzcyxl
LnN0YXRpY0NsYXNzKSxjbGFzczpyKHQuY2xhc3MpP1t0LmNsYXNzLGUuY2xhc3NdOmUuY2xhc3N9
fWZ1bmN0aW9uIE1lKHQsZSl7cmV0dXJuIHIodCl8fHIoZSk/SWUodCxQZShlKSk6IiJ9ZnVuY3Rp
b24gSWUodCxlKXtyZXR1cm4gdD9lP3QrIiAiK2U6dDplfHwiIn1mdW5jdGlvbiBQZSh0KXtyZXR1
cm4gQXJyYXkuaXNBcnJheSh0KT9SZSh0KTpzKHQpP0RlKHQpOiJzdHJpbmciPT10eXBlb2YgdD90
OiIifWZ1bmN0aW9uIFJlKHQpe2Zvcih2YXIgZSxuPSIiLGk9MCxvPXQubGVuZ3RoO2k8bztpKysp
cihlPVBlKHRbaV0pKSYmIiIhPT1lJiYobiYmKG4rPSIgIiksbis9ZSk7cmV0dXJuIG59ZnVuY3Rp
b24gRGUodCl7dmFyIGU9IiI7Zm9yKHZhciBuIGluIHQpdFtuXSYmKGUmJihlKz0iICIpLGUrPW4p
O3JldHVybiBlfWZ1bmN0aW9uIEZlKHQpe3JldHVybiB3YSh0KT8ic3ZnIjoibWF0aCI9PT10PyJt
YXRoIjp2b2lkIDB9ZnVuY3Rpb24gQmUodCl7aWYoIW5vKXJldHVybiEwO2lmKENhKHQpKXJldHVy
biExO2lmKHQ9dC50b0xvd2VyQ2FzZSgpLG51bGwhPXhhW3RdKXJldHVybiB4YVt0XTt2YXIgZT1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO3JldHVybiB0LmluZGV4T2YoIi0iKT4tMT94YVt0XT1l
LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxVbmtub3duRWxlbWVudHx8ZS5jb25zdHJ1Y3Rvcj09
PXdpbmRvdy5IVE1MRWxlbWVudDp4YVt0XT0vSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KGUudG9T
dHJpbmcoKSl9ZnVuY3Rpb24gVWUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT1kb2N1
bWVudC5xdWVyeVNlbGVjdG9yKHQpO3JldHVybiBlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKX1yZXR1cm4gdH1mdW5jdGlvbiBIZSh0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQodCk7cmV0dXJuInNlbGVjdCIhPT10P246KGUuZGF0YSYmZS5kYXRhLmF0dHJzJiZ2b2lkIDAh
PT1lLmRhdGEuYXR0cnMubXVsdGlwbGUmJm4uc2V0QXR0cmlidXRlKCJtdWx0aXBsZSIsIm11bHRp
cGxlIiksbil9ZnVuY3Rpb24gVmUodCxlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KF9hW3RdLGUpfWZ1bmN0aW9uIHplKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
KX1mdW5jdGlvbiBKZSh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX1mdW5jdGlv
biBLZSh0LGUsbil7dC5pbnNlcnRCZWZvcmUoZSxuKX1mdW5jdGlvbiBxZSh0LGUpe3QucmVtb3Zl
Q2hpbGQoZSl9ZnVuY3Rpb24gV2UodCxlKXt0LmFwcGVuZENoaWxkKGUpfWZ1bmN0aW9uIFplKHQp
e3JldHVybiB0LnBhcmVudE5vZGV9ZnVuY3Rpb24gR2UodCl7cmV0dXJuIHQubmV4dFNpYmxpbmd9
ZnVuY3Rpb24gWGUodCl7cmV0dXJuIHQudGFnTmFtZX1mdW5jdGlvbiBZZSh0LGUpe3QudGV4dENv
bnRlbnQ9ZX1mdW5jdGlvbiBRZSh0LGUsbil7dC5zZXRBdHRyaWJ1dGUoZSxuKX1mdW5jdGlvbiB0
bih0LGUpe3ZhciBuPXQuZGF0YS5yZWY7aWYobil7dmFyIHI9dC5jb250ZXh0LGk9dC5jb21wb25l
bnRJbnN0YW5jZXx8dC5lbG0sbz1yLiRyZWZzO2U/QXJyYXkuaXNBcnJheShvW25dKT9oKG9bbl0s
aSk6b1tuXT09PWkmJihvW25dPXZvaWQgMCk6dC5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXko
b1tuXSk/b1tuXS5pbmRleE9mKGkpPDAmJm9bbl0ucHVzaChpKTpvW25dPVtpXTpvW25dPWl9fWZ1
bmN0aW9uIGVuKHQsZSl7cmV0dXJuIHQua2V5PT09ZS5rZXkmJih0LnRhZz09PWUudGFnJiZ0Lmlz
Q29tbWVudD09PWUuaXNDb21tZW50JiZyKHQuZGF0YSk9PT1yKGUuZGF0YSkmJm5uKHQsZSl8fGko
dC5pc0FzeW5jUGxhY2Vob2xkZXIpJiZ0LmFzeW5jRmFjdG9yeT09PWUuYXN5bmNGYWN0b3J5JiZu
KGUuYXN5bmNGYWN0b3J5LmVycm9yKSl9ZnVuY3Rpb24gbm4odCxlKXtpZigiaW5wdXQiIT09dC50
YWcpcmV0dXJuITA7dmFyIG47cmV0dXJuKHIobj10LmRhdGEpJiZyKG49bi5hdHRycykmJm4udHlw
ZSk9PT0ocihuPWUuZGF0YSkmJnIobj1uLmF0dHJzKSYmbi50eXBlKX1mdW5jdGlvbiBybih0LGUs
bil7dmFyIGksbyxhPXt9O2ZvcihpPWU7aTw9bjsrK2kpbz10W2ldLmtleSxyKG8pJiYoYVtvXT1p
KTtyZXR1cm4gYX1mdW5jdGlvbiBvbih0LGUpeyh0LmRhdGEuZGlyZWN0aXZlc3x8ZS5kYXRhLmRp
cmVjdGl2ZXMpJiZhbih0LGUpfWZ1bmN0aW9uIGFuKHQsZSl7dmFyIG4scixpLG89dD09PU9hLGE9
ZT09PU9hLHM9c24odC5kYXRhLmRpcmVjdGl2ZXMsdC5jb250ZXh0KSxjPXNuKGUuZGF0YS5kaXJl
Y3RpdmVzLGUuY29udGV4dCksdT1bXSxsPVtdO2ZvcihuIGluIGMpcj1zW25dLGk9Y1tuXSxyPyhp
Lm9sZFZhbHVlPXIudmFsdWUsdW4oaSwidXBkYXRlIixlLHQpLGkuZGVmJiZpLmRlZi5jb21wb25l
bnRVcGRhdGVkJiZsLnB1c2goaSkpOih1bihpLCJiaW5kIixlLHQpLGkuZGVmJiZpLmRlZi5pbnNl
cnRlZCYmdS5wdXNoKGkpKTtpZih1Lmxlbmd0aCl7dmFyIGY9ZnVuY3Rpb24oKXtmb3IodmFyIG49
MDtuPHUubGVuZ3RoO24rKyl1bih1W25dLCJpbnNlcnRlZCIsZSx0KX07bz9ydChlLmRhdGEuaG9v
a3x8KGUuZGF0YS5ob29rPXt9KSwiaW5zZXJ0IixmKTpmKCl9aWYobC5sZW5ndGgmJnJ0KGUuZGF0
YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7Zm9yKHZhciBu
PTA7bjxsLmxlbmd0aDtuKyspdW4obFtuXSwiY29tcG9uZW50VXBkYXRlZCIsZSx0KX0pLCFvKWZv
cihuIGluIHMpY1tuXXx8dW4oc1tuXSwidW5iaW5kIix0LHQsYSl9ZnVuY3Rpb24gc24odCxlKXt2
YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCF0KXJldHVybiBuO3ZhciByLGk7Zm9yKHI9MDty
PHQubGVuZ3RoO3IrKylpPXRbcl0saS5tb2RpZmllcnN8fChpLm1vZGlmaWVycz1FYSksbltjbihp
KV09aSxpLmRlZj1xKGUuJG9wdGlvbnMsImRpcmVjdGl2ZXMiLGkubmFtZSwhMCk7cmV0dXJuIG59
ZnVuY3Rpb24gY24odCl7cmV0dXJuIHQucmF3TmFtZXx8dC5uYW1lKyIuIitPYmplY3Qua2V5cyh0
Lm1vZGlmaWVyc3x8e30pLmpvaW4oIi4iKX1mdW5jdGlvbiB1bih0LGUsbixyLGkpe3ZhciBvPXQu
ZGVmJiZ0LmRlZltlXTtpZihvKXRyeXtvKG4uZWxtLHQsbixyLGkpfWNhdGNoKHIpe1MocixuLmNv
bnRleHQsImRpcmVjdGl2ZSAiK3QubmFtZSsiICIrZSsiIGhvb2siKX19ZnVuY3Rpb24gbG4odCxl
KXt2YXIgaT1lLmNvbXBvbmVudE9wdGlvbnM7aWYoIShyKGkpJiYhMT09PWkuQ3Rvci5vcHRpb25z
LmluaGVyaXRBdHRyc3x8bih0LmRhdGEuYXR0cnMpJiZuKGUuZGF0YS5hdHRycykpKXt2YXIgbyxh
LHM9ZS5lbG0sYz10LmRhdGEuYXR0cnN8fHt9LHU9ZS5kYXRhLmF0dHJzfHx7fTtyKHUuX19vYl9f
KSYmKHU9ZS5kYXRhLmF0dHJzPV8oe30sdSkpO2ZvcihvIGluIHUpYT11W29dLGNbb10hPT1hJiZm
bihzLG8sYSk7b28mJnUudmFsdWUhPT1jLnZhbHVlJiZmbihzLCJ2YWx1ZSIsdS52YWx1ZSk7Zm9y
KG8gaW4gYyluKHVbb10pJiYobWEobyk/cy5yZW1vdmVBdHRyaWJ1dGVOUyh2YSx5YShvKSk6ZGEo
byl8fHMucmVtb3ZlQXR0cmlidXRlKG8pKX19ZnVuY3Rpb24gZm4odCxlLG4pe2hhKGUpP2dhKG4p
P3QucmVtb3ZlQXR0cmlidXRlKGUpOnQuc2V0QXR0cmlidXRlKGUsZSk6ZGEoZSk/dC5zZXRBdHRy
aWJ1dGUoZSxnYShuKXx8ImZhbHNlIj09PW4/ImZhbHNlIjoidHJ1ZSIpOm1hKGUpP2dhKG4pP3Qu
cmVtb3ZlQXR0cmlidXRlTlModmEseWEoZSkpOnQuc2V0QXR0cmlidXRlTlModmEsZSxuKTpnYShu
KT90LnJlbW92ZUF0dHJpYnV0ZShlKTp0LnNldEF0dHJpYnV0ZShlLG4pfWZ1bmN0aW9uIHBuKHQs
ZSl7dmFyIGk9ZS5lbG0sbz1lLmRhdGEsYT10LmRhdGE7aWYoIShuKG8uc3RhdGljQ2xhc3MpJiZu
KG8uY2xhc3MpJiYobihhKXx8bihhLnN0YXRpY0NsYXNzKSYmbihhLmNsYXNzKSkpKXt2YXIgcz1O
ZShlKSxjPWkuX3RyYW5zaXRpb25DbGFzc2VzO3IoYykmJihzPUllKHMsUGUoYykpKSxzIT09aS5f
cHJldkNsYXNzJiYoaS5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKSxpLl9wcmV2Q2xhc3M9cyl9fWZ1
bmN0aW9uIGRuKHQpe2Z1bmN0aW9uIGUoKXsoYXx8KGE9W10pKS5wdXNoKHQuc2xpY2UoaCxpKS50
cmltKCkpLGg9aSsxfXZhciBuLHIsaSxvLGEscz0hMSxjPSExLHU9ITEsbD0hMSxmPTAscD0wLGQ9
MCxoPTA7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylpZihyPW4sbj10LmNoYXJDb2RlQXQoaSkscykz
OT09PW4mJjkyIT09ciYmKHM9ITEpO2Vsc2UgaWYoYykzND09PW4mJjkyIT09ciYmKGM9ITEpO2Vs
c2UgaWYodSk5Nj09PW4mJjkyIT09ciYmKHU9ITEpO2Vsc2UgaWYobCk0Nz09PW4mJjkyIT09ciYm
KGw9ITEpO2Vsc2UgaWYoMTI0IT09bnx8MTI0PT09dC5jaGFyQ29kZUF0KGkrMSl8fDEyND09PXQu
Y2hhckNvZGVBdChpLTEpfHxmfHxwfHxkKXtzd2l0Y2gobil7Y2FzZSAzNDpjPSEwO2JyZWFrO2Nh
c2UgMzk6cz0hMDticmVhaztjYXNlIDk2OnU9ITA7YnJlYWs7Y2FzZSA0MDpkKys7YnJlYWs7Y2Fz
ZSA0MTpkLS07YnJlYWs7Y2FzZSA5MTpwKys7YnJlYWs7Y2FzZSA5MzpwLS07YnJlYWs7Y2FzZSAx
MjM6ZisrO2JyZWFrO2Nhc2UgMTI1OmYtLX1pZig0Nz09PW4pe2Zvcih2YXIgdj1pLTEsbT12b2lk
IDA7dj49MCYmIiAiPT09KG09dC5jaGFyQXQodikpO3YtLSk7bSYmTWEudGVzdChtKXx8KGw9ITAp
fX1lbHNlIHZvaWQgMD09PW8/KGg9aSsxLG89dC5zbGljZSgwLGkpLnRyaW0oKSk6ZSgpO2lmKHZv
aWQgMD09PW8/bz10LnNsaWNlKDAsaSkudHJpbSgpOjAhPT1oJiZlKCksYSlmb3IoaT0wO2k8YS5s
ZW5ndGg7aSsrKW89aG4obyxhW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBobih0LGUpe3ZhciBuPWUu
aW5kZXhPZigiKCIpO3JldHVybiBuPDA/J19mKCInK2UrJyIpKCcrdCsiKSI6J19mKCInK2Uuc2xp
Y2UoMCxuKSsnIikoJyt0KyIsIitlLnNsaWNlKG4rMSl9ZnVuY3Rpb24gdm4odCl7Y29uc29sZS5l
cnJvcigiW1Z1ZSBjb21waWxlcl06ICIrdCl9ZnVuY3Rpb24gbW4odCxlKXtyZXR1cm4gdD90Lm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gdFtlXX0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdH0p
OltdfWZ1bmN0aW9uIHluKHQsZSxuKXsodC5wcm9wc3x8KHQucHJvcHM9W10pKS5wdXNoKHtuYW1l
OmUsdmFsdWU6bn0pfWZ1bmN0aW9uIGduKHQsZSxuKXsodC5hdHRyc3x8KHQuYXR0cnM9W10pKS5w
dXNoKHtuYW1lOmUsdmFsdWU6bn0pfWZ1bmN0aW9uIF9uKHQsZSxuLHIsaSxvKXsodC5kaXJlY3Rp
dmVzfHwodC5kaXJlY3RpdmVzPVtdKSkucHVzaCh7bmFtZTplLHJhd05hbWU6bix2YWx1ZTpyLGFy
ZzppLG1vZGlmaWVyczpvfSl9ZnVuY3Rpb24gYm4odCxlLG4scixpLG8pe3ImJnIuY2FwdHVyZSYm
KGRlbGV0ZSByLmNhcHR1cmUsZT0iISIrZSksciYmci5vbmNlJiYoZGVsZXRlIHIub25jZSxlPSJ+
IitlKSxyJiZyLnBhc3NpdmUmJihkZWxldGUgci5wYXNzaXZlLGU9IiYiK2UpO3ZhciBhO3ImJnIu
bmF0aXZlPyhkZWxldGUgci5uYXRpdmUsYT10Lm5hdGl2ZUV2ZW50c3x8KHQubmF0aXZlRXZlbnRz
PXt9KSk6YT10LmV2ZW50c3x8KHQuZXZlbnRzPXt9KTt2YXIgcz17dmFsdWU6bixtb2RpZmllcnM6
cn0sYz1hW2VdO0FycmF5LmlzQXJyYXkoYyk/aT9jLnVuc2hpZnQocyk6Yy5wdXNoKHMpOmFbZV09
Yz9pP1tzLGNdOltjLHNdOnN9ZnVuY3Rpb24gd24odCxlLG4pe3ZhciByPSRuKHQsIjoiK2UpfHwk
bih0LCJ2LWJpbmQ6IitlKTtpZihudWxsIT1yKXJldHVybiBkbihyKTtpZighMSE9PW4pe3ZhciBp
PSRuKHQsZSk7aWYobnVsbCE9aSlyZXR1cm4gSlNPTi5zdHJpbmdpZnkoaSl9fWZ1bmN0aW9uICRu
KHQsZSl7dmFyIG47aWYobnVsbCE9KG49dC5hdHRyc01hcFtlXSkpZm9yKHZhciByPXQuYXR0cnNM
aXN0LGk9MCxvPXIubGVuZ3RoO2k8bztpKyspaWYocltpXS5uYW1lPT09ZSl7ci5zcGxpY2UoaSwx
KTticmVha31yZXR1cm4gbn1mdW5jdGlvbiBDbih0LGUsbil7dmFyIHI9bnx8e30saT1yLm51bWJl
cixvPXIudHJpbSxhPSIkJHYiO28mJihhPSIodHlwZW9mICQkdiA9PT0gJ3N0cmluZyc/ICQkdi50
cmltKCk6ICQkdikiKSxpJiYoYT0iX24oIithKyIpIik7dmFyIHM9eG4oZSxhKTt0Lm1vZGVsPXt2
YWx1ZToiKCIrZSsiKSIsZXhwcmVzc2lvbjonIicrZSsnIicsY2FsbGJhY2s6ImZ1bmN0aW9uICgk
JHYpIHsiK3MrIn0ifX1mdW5jdGlvbiB4bih0LGUpe3ZhciBuPUFuKHQpO3JldHVybiBudWxsPT09
bi5pZHg/dCsiPSIrZToiJHNldCgiK24uZXhwKyIsICIrbi5pZHgrIiwgIitlKyIpIn1mdW5jdGlv
biBBbih0KXtpZihuYT10LGVhPW5hLmxlbmd0aCxpYT1vYT1hYT0wLHQuaW5kZXhPZigiWyIpPDB8
fHQubGFzdEluZGV4T2YoIl0iKTxlYS0xKXJldHVybntleHA6dCxpZHg6bnVsbH07Zm9yKDshT24o
KTspcmE9a24oKSxTbihyYSk/RW4ocmEpOjkxPT09cmEmJlRuKHJhKTtyZXR1cm57ZXhwOnQuc3Vi
c3RyaW5nKDAsb2EpLGlkeDp0LnN1YnN0cmluZyhvYSsxLGFhKX19ZnVuY3Rpb24ga24oKXtyZXR1
cm4gbmEuY2hhckNvZGVBdCgrK2lhKX1mdW5jdGlvbiBPbigpe3JldHVybiBpYT49ZWF9ZnVuY3Rp
b24gU24odCl7cmV0dXJuIDM0PT09dHx8Mzk9PT10fWZ1bmN0aW9uIFRuKHQpe3ZhciBlPTE7Zm9y
KG9hPWlhOyFPbigpOylpZih0PWtuKCksU24odCkpRW4odCk7ZWxzZSBpZig5MT09PXQmJmUrKyw5
Mz09PXQmJmUtLSwwPT09ZSl7YWE9aWE7YnJlYWt9fWZ1bmN0aW9uIEVuKHQpe2Zvcih2YXIgZT10
OyFPbigpJiYodD1rbigpKSE9PWU7KTt9ZnVuY3Rpb24gam4odCxlLG4pe3NhPW47dmFyIHI9ZS52
YWx1ZSxpPWUubW9kaWZpZXJzLG89dC50YWcsYT10LmF0dHJzTWFwLnR5cGU7aWYodC5jb21wb25l
bnQpcmV0dXJuIENuKHQscixpKSwhMTtpZigic2VsZWN0Ij09PW8pTW4odCxyLGkpO2Vsc2UgaWYo
ImlucHV0Ij09PW8mJiJjaGVja2JveCI9PT1hKU5uKHQscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1v
JiYicmFkaW8iPT09YSlMbih0LHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09b3x8InRleHRhcmVhIj09
PW8pSW4odCxyLGkpO2Vsc2UgaWYoIVhpLmlzUmVzZXJ2ZWRUYWcobykpcmV0dXJuIENuKHQscixp
KSwhMTtyZXR1cm4hMH1mdW5jdGlvbiBObih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT13bih0
LCJ2YWx1ZSIpfHwibnVsbCIsbz13bih0LCJ0cnVlLXZhbHVlIil8fCJ0cnVlIixhPXduKHQsImZh
bHNlLXZhbHVlIil8fCJmYWxzZSI7eW4odCwiY2hlY2tlZCIsIkFycmF5LmlzQXJyYXkoIitlKyIp
P19pKCIrZSsiLCIraSsiKT4tMSIrKCJ0cnVlIj09PW8/IjooIitlKyIpIjoiOl9xKCIrZSsiLCIr
bysiKSIpKSxibih0LFBhLCJ2YXIgJCRhPSIrZSsiLCQkZWw9JGV2ZW50LnRhcmdldCwkJGM9JCRl
bC5jaGVja2VkPygiK28rIik6KCIrYSsiKTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAkJHY9
Iisocj8iX24oIitpKyIpIjppKSsiLCQkaT1faSgkJGEsJCR2KTtpZigkJGVsLmNoZWNrZWQpeyQk
aTwwJiYoIitlKyI9JCRhLmNvbmNhdCgkJHYpKX1lbHNleyQkaT4tMSYmKCIrZSsiPSQkYS5zbGlj
ZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX19ZWxzZXsiK3huKGUsIiQkYyIpKyJ9
IixudWxsLCEwKX1mdW5jdGlvbiBMbih0LGUsbil7dmFyIHI9biYmbi5udW1iZXIsaT13bih0LCJ2
YWx1ZSIpfHwibnVsbCI7aT1yPyJfbigiK2krIikiOmkseW4odCwiY2hlY2tlZCIsIl9xKCIrZSsi
LCIraSsiKSIpLGJuKHQsUGEseG4oZSxpKSxudWxsLCEwKX1mdW5jdGlvbiBNbih0LGUsbil7dmFy
IHI9biYmbi5udW1iZXIsaT0nQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKCRldmVudC50YXJn
ZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pLm1hcChmdW5jdGlvbihv
KXt2YXIgdmFsID0gIl92YWx1ZSIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gJyso
cj8iX24odmFsKSI6InZhbCIpKyJ9KSIsbz0idmFyICQkc2VsZWN0ZWRWYWwgPSAiK2krIjsiO289
bysiICIreG4oZSwiJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA/ICQkc2VsZWN0ZWRWYWwgOiAkJHNl
bGVjdGVkVmFsWzBdIiksYm4odCwiY2hhbmdlIixvLG51bGwsITApfWZ1bmN0aW9uIEluKHQsZSxu
KXt2YXIgcj10LmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50
cmltLGM9IW8mJiJyYW5nZSIhPT1yLHU9bz8iY2hhbmdlIjoicmFuZ2UiPT09cj9JYToiaW5wdXQi
LGw9IiRldmVudC50YXJnZXQudmFsdWUiO3MmJihsPSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0o
KSIpLGEmJihsPSJfbigiK2wrIikiKTt2YXIgZj14bihlLGwpO2MmJihmPSJpZigkZXZlbnQudGFy
Z2V0LmNvbXBvc2luZylyZXR1cm47IitmKSx5bih0LCJ2YWx1ZSIsIigiK2UrIikiKSxibih0LHUs
ZixudWxsLCEwKSwoc3x8YSkmJmJuKHQsImJsdXIiLCIkZm9yY2VVcGRhdGUoKSIpfWZ1bmN0aW9u
IFBuKHQpe3ZhciBlO3IodFtJYV0pJiYoZT1pbz8iY2hhbmdlIjoiaW5wdXQiLHRbZV09W10uY29u
Y2F0KHRbSWFdLHRbZV18fFtdKSxkZWxldGUgdFtJYV0pLHIodFtQYV0pJiYoZT11bz8iY2xpY2si
OiJjaGFuZ2UiLHRbZV09W10uY29uY2F0KHRbUGFdLHRbZV18fFtdKSxkZWxldGUgdFtQYV0pfWZ1
bmN0aW9uIFJuKHQsZSxuLHIsaSl7aWYobil7dmFyIG89ZSxhPWNhO2U9ZnVuY3Rpb24obil7bnVs
bCE9PSgxPT09YXJndW1lbnRzLmxlbmd0aD9vKG4pOm8uYXBwbHkobnVsbCxhcmd1bWVudHMpKSYm
RG4odCxlLHIsYSl9fWNhLmFkZEV2ZW50TGlzdGVuZXIodCxlLGZvP3tjYXB0dXJlOnIscGFzc2l2
ZTppfTpyKX1mdW5jdGlvbiBEbih0LGUsbixyKXsocnx8Y2EpLnJlbW92ZUV2ZW50TGlzdGVuZXIo
dCxlLG4pfWZ1bmN0aW9uIEZuKHQsZSl7aWYoIW4odC5kYXRhLm9uKXx8IW4oZS5kYXRhLm9uKSl7
dmFyIHI9ZS5kYXRhLm9ufHx7fSxpPXQuZGF0YS5vbnx8e307Y2E9ZS5lbG0sUG4ociksbnQocixp
LFJuLERuLGUuY29udGV4dCl9fWZ1bmN0aW9uIEJuKHQsZSl7aWYoIW4odC5kYXRhLmRvbVByb3Bz
KXx8IW4oZS5kYXRhLmRvbVByb3BzKSl7dmFyIGksbyxhPWUuZWxtLHM9dC5kYXRhLmRvbVByb3Bz
fHx7fSxjPWUuZGF0YS5kb21Qcm9wc3x8e307cihjLl9fb2JfXykmJihjPWUuZGF0YS5kb21Qcm9w
cz1fKHt9LGMpKTtmb3IoaSBpbiBzKW4oY1tpXSkmJihhW2ldPSIiKTtmb3IoaSBpbiBjKWlmKG89
Y1tpXSwidGV4dENvbnRlbnQiIT09aSYmImlubmVySFRNTCIhPT1pfHwoZS5jaGlsZHJlbiYmKGUu
Y2hpbGRyZW4ubGVuZ3RoPTApLG8hPT1zW2ldKSlpZigidmFsdWUiPT09aSl7YS5fdmFsdWU9bzt2
YXIgdT1uKG8pPyIiOlN0cmluZyhvKTtVbihhLGUsdSkmJihhLnZhbHVlPXUpfWVsc2UgYVtpXT1v
fX1mdW5jdGlvbiBVbih0LGUsbil7cmV0dXJuIXQuY29tcG9zaW5nJiYoIm9wdGlvbiI9PT1lLnRh
Z3x8SG4odCxuKXx8Vm4odCxuKSl9ZnVuY3Rpb24gSG4odCxlKXt2YXIgbj0hMDt0cnl7bj1kb2N1
bWVudC5hY3RpdmVFbGVtZW50IT09dH1jYXRjaCh0KXt9cmV0dXJuIG4mJnQudmFsdWUhPT1lfWZ1
bmN0aW9uIFZuKHQsZSl7dmFyIG49dC52YWx1ZSxpPXQuX3ZNb2RpZmllcnM7cmV0dXJuIHIoaSkm
JmkubnVtYmVyP3AobikhPT1wKGUpOnIoaSkmJmkudHJpbT9uLnRyaW0oKSE9PWUudHJpbSgpOm4h
PT1lfWZ1bmN0aW9uIHpuKHQpe3ZhciBlPUpuKHQuc3R5bGUpO3JldHVybiB0LnN0YXRpY1N0eWxl
P18odC5zdGF0aWNTdHlsZSxlKTplfWZ1bmN0aW9uIEpuKHQpe3JldHVybiBBcnJheS5pc0FycmF5
KHQpP2IodCk6InN0cmluZyI9PXR5cGVvZiB0P0ZhKHQpOnR9ZnVuY3Rpb24gS24odCxlKXt2YXIg
bixyPXt9O2lmKGUpZm9yKHZhciBpPXQ7aS5jb21wb25lbnRJbnN0YW5jZTspaT1pLmNvbXBvbmVu
dEluc3RhbmNlLl92bm9kZSxpLmRhdGEmJihuPXpuKGkuZGF0YSkpJiZfKHIsbik7KG49em4odC5k
YXRhKSkmJl8ocixuKTtmb3IodmFyIG89dDtvPW8ucGFyZW50OylvLmRhdGEmJihuPXpuKG8uZGF0
YSkpJiZfKHIsbik7cmV0dXJuIHJ9ZnVuY3Rpb24gcW4odCxlKXt2YXIgaT1lLmRhdGEsbz10LmRh
dGE7aWYoIShuKGkuc3RhdGljU3R5bGUpJiZuKGkuc3R5bGUpJiZuKG8uc3RhdGljU3R5bGUpJiZu
KG8uc3R5bGUpKSl7dmFyIGEscyxjPWUuZWxtLHU9by5zdGF0aWNTdHlsZSxsPW8ubm9ybWFsaXpl
ZFN0eWxlfHxvLnN0eWxlfHx7fSxmPXV8fGwscD1KbihlLmRhdGEuc3R5bGUpfHx7fTtlLmRhdGEu
bm9ybWFsaXplZFN0eWxlPXIocC5fX29iX18pP18oe30scCk6cDt2YXIgZD1LbihlLCEwKTtmb3Io
cyBpbiBmKW4oZFtzXSkmJkhhKGMscywiIik7Zm9yKHMgaW4gZCkoYT1kW3NdKSE9PWZbc10mJkhh
KGMscyxudWxsPT1hPyIiOmEpfX1mdW5jdGlvbiBXbih0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlp
Zih0LmNsYXNzTGlzdCllLmluZGV4T2YoIiAiKT4tMT9lLnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1
bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlzdC5hZGQoZSl9KTp0LmNsYXNzTGlzdC5hZGQoZSk7
ZWxzZXt2YXIgbj0iICIrKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5kZXhP
ZigiICIrZSsiICIpPDAmJnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rZSkudHJpbSgpKX19ZnVu
Y3Rpb24gWm4odCxlKXtpZihlJiYoZT1lLnRyaW0oKSkpaWYodC5jbGFzc0xpc3QpZS5pbmRleE9m
KCIgIik+LTE/ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFz
c0xpc3QucmVtb3ZlKGUpfSk6dC5jbGFzc0xpc3QucmVtb3ZlKGUpLHQuY2xhc3NMaXN0Lmxlbmd0
aHx8dC5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyh0LmdldEF0
dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjtuLmluZGV4T2Yocik+PTA7KW49
bi5yZXBsYWNlKHIsIiAiKTtuPW4udHJpbSgpLG4/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKTp0
LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gR24odCl7aWYodCl7aWYoIm9iamVj
dCI9PXR5cGVvZiB0KXt2YXIgZT17fTtyZXR1cm4hMSE9PXQuY3NzJiZfKGUsS2EodC5uYW1lfHwi
diIpKSxfKGUsdCksZX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/S2EodCk6dm9pZCAwfX1mdW5j
dGlvbiBYbih0KXt0cyhmdW5jdGlvbigpe3RzKHQpfSl9ZnVuY3Rpb24gWW4odCxlKXt2YXIgbj10
Ll90cmFuc2l0aW9uQ2xhc3Nlc3x8KHQuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2Yo
ZSk8MCYmKG4ucHVzaChlKSxXbih0LGUpKX1mdW5jdGlvbiBRbih0LGUpe3QuX3RyYW5zaXRpb25D
bGFzc2VzJiZoKHQuX3RyYW5zaXRpb25DbGFzc2VzLGUpLFpuKHQsZSl9ZnVuY3Rpb24gdHIodCxl
LG4pe3ZhciByPWVyKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZigh
aSlyZXR1cm4gbigpO3ZhciBzPWk9PT1XYT9YYTpRYSxjPTAsdT1mdW5jdGlvbigpe3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisrYz49
YSYmdSgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksdC5hZGRFdmVudExp
c3RlbmVyKHMsbCl9ZnVuY3Rpb24gZXIodCxlKXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKHQpLGk9cltHYSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxvPXJbR2ErIkR1cmF0aW9uIl0uc3Bs
aXQoIiwgIiksYT1ucihpLG8pLHM9cltZYSsiRGVsYXkiXS5zcGxpdCgiLCAiKSxjPXJbWWErIkR1
cmF0aW9uIl0uc3BsaXQoIiwgIiksdT1ucihzLGMpLGw9MCxmPTA7cmV0dXJuIGU9PT1XYT9hPjAm
JihuPVdhLGw9YSxmPW8ubGVuZ3RoKTplPT09WmE/dT4wJiYobj1aYSxsPXUsZj1jLmxlbmd0aCk6
KGw9TWF0aC5tYXgoYSx1KSxuPWw+MD9hPnU/V2E6WmE6bnVsbCxmPW4/bj09PVdhP28ubGVuZ3Ro
OmMubGVuZ3RoOjApLHt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpu
PT09V2EmJmVzLnRlc3QocltHYSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIG5yKHQsZSl7Zm9yKDt0
Lmxlbmd0aDxlLmxlbmd0aDspdD10LmNvbmNhdCh0KTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVs
bCxlLm1hcChmdW5jdGlvbihlLG4pe3JldHVybiBycihlKStycih0W25dKX0pKX1mdW5jdGlvbiBy
cih0KXtyZXR1cm4gMWUzKk51bWJlcih0LnNsaWNlKDAsLTEpKX1mdW5jdGlvbiBpcih0LGUpe3Zh
ciBpPXQuZWxtO3IoaS5fbGVhdmVDYikmJihpLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxpLl9sZWF2
ZUNiKCkpO3ZhciBvPUduKHQuZGF0YS50cmFuc2l0aW9uKTtpZighbihvKSYmIXIoaS5fZW50ZXJD
YikmJjE9PT1pLm5vZGVUeXBlKXtmb3IodmFyIGE9by5jc3MsYz1vLnR5cGUsdT1vLmVudGVyQ2xh
c3MsbD1vLmVudGVyVG9DbGFzcyxmPW8uZW50ZXJBY3RpdmVDbGFzcyxkPW8uYXBwZWFyQ2xhc3Ms
aD1vLmFwcGVhclRvQ2xhc3Msdj1vLmFwcGVhckFjdGl2ZUNsYXNzLG09by5iZWZvcmVFbnRlcix5
PW8uZW50ZXIsZz1vLmFmdGVyRW50ZXIsXz1vLmVudGVyQ2FuY2VsbGVkLGI9by5iZWZvcmVBcHBl
YXIsdz1vLmFwcGVhciwkPW8uYWZ0ZXJBcHBlYXIsQz1vLmFwcGVhckNhbmNlbGxlZCxBPW8uZHVy
YXRpb24saz1JbyxPPUlvLiR2bm9kZTtPJiZPLnBhcmVudDspTz1PLnBhcmVudCxrPU8uY29udGV4
dDt2YXIgUz0hay5faXNNb3VudGVkfHwhdC5pc1Jvb3RJbnNlcnQ7aWYoIVN8fHd8fCIiPT09dyl7
dmFyIFQ9UyYmZD9kOnUsRT1TJiZ2P3Y6ZixqPVMmJmg/aDpsLE49Uz9ifHxtOm0sTD1TJiYiZnVu
Y3Rpb24iPT10eXBlb2Ygdz93OnksTT1TPyR8fGc6ZyxJPVM/Q3x8XzpfLFA9cChzKEEpP0EuZW50
ZXI6QSksUj0hMSE9PWEmJiFvbyxEPXNyKEwpLEY9aS5fZW50ZXJDYj14KGZ1bmN0aW9uKCl7UiYm
KFFuKGksaiksUW4oaSxFKSksRi5jYW5jZWxsZWQ/KFImJlFuKGksVCksSSYmSShpKSk6TSYmTShp
KSxpLl9lbnRlckNiPW51bGx9KTt0LmRhdGEuc2hvd3x8cnQodC5kYXRhLmhvb2t8fCh0LmRhdGEu
aG9vaz17fSksImluc2VydCIsZnVuY3Rpb24oKXt2YXIgZT1pLnBhcmVudE5vZGUsbj1lJiZlLl9w
ZW5kaW5nJiZlLl9wZW5kaW5nW3Qua2V5XTtuJiZuLnRhZz09PXQudGFnJiZuLmVsbS5fbGVhdmVD
YiYmbi5lbG0uX2xlYXZlQ2IoKSxMJiZMKGksRil9KSxOJiZOKGkpLFImJihZbihpLFQpLFluKGks
RSksWG4oZnVuY3Rpb24oKXtZbihpLGopLFFuKGksVCksRi5jYW5jZWxsZWR8fER8fChhcihQKT9z
ZXRUaW1lb3V0KEYsUCk6dHIoaSxjLEYpKX0pKSx0LmRhdGEuc2hvdyYmKGUmJmUoKSxMJiZMKGks
RikpLFJ8fER8fEYoKX19fWZ1bmN0aW9uIG9yKHQsZSl7ZnVuY3Rpb24gaSgpe0MuY2FuY2VsbGVk
fHwodC5kYXRhLnNob3d8fCgoby5wYXJlbnROb2RlLl9wZW5kaW5nfHwoby5wYXJlbnROb2RlLl9w
ZW5kaW5nPXt9KSlbdC5rZXldPXQpLGgmJmgobyksYiYmKFluKG8sbCksWW4obyxkKSxYbihmdW5j
dGlvbigpe1luKG8sZiksUW4obyxsKSxDLmNhbmNlbGxlZHx8d3x8KGFyKCQpP3NldFRpbWVvdXQo
QywkKTp0cihvLHUsQykpfSkpLHYmJnYobyxDKSxifHx3fHxDKCkpfXZhciBvPXQuZWxtO3Ioby5f
ZW50ZXJDYikmJihvLl9lbnRlckNiLmNhbmNlbGxlZD0hMCxvLl9lbnRlckNiKCkpO3ZhciBhPUdu
KHQuZGF0YS50cmFuc2l0aW9uKTtpZihuKGEpKXJldHVybiBlKCk7aWYoIXIoby5fbGVhdmVDYikm
JjE9PT1vLm5vZGVUeXBlKXt2YXIgYz1hLmNzcyx1PWEudHlwZSxsPWEubGVhdmVDbGFzcyxmPWEu
bGVhdmVUb0NsYXNzLGQ9YS5sZWF2ZUFjdGl2ZUNsYXNzLGg9YS5iZWZvcmVMZWF2ZSx2PWEubGVh
dmUsbT1hLmFmdGVyTGVhdmUseT1hLmxlYXZlQ2FuY2VsbGVkLGc9YS5kZWxheUxlYXZlLF89YS5k
dXJhdGlvbixiPSExIT09YyYmIW9vLHc9c3IodiksJD1wKHMoXyk/Xy5sZWF2ZTpfKSxDPW8uX2xl
YXZlQ2I9eChmdW5jdGlvbigpe28ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLl9wZW5kaW5nJiYo
by5wYXJlbnROb2RlLl9wZW5kaW5nW3Qua2V5XT1udWxsKSxiJiYoUW4obyxmKSxRbihvLGQpKSxD
LmNhbmNlbGxlZD8oYiYmUW4obyxsKSx5JiZ5KG8pKTooZSgpLG0mJm0obykpLG8uX2xlYXZlQ2I9
bnVsbH0pO2c/ZyhpKTppKCl9fWZ1bmN0aW9uIGFyKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2Yg
dCYmIWlzTmFOKHQpfWZ1bmN0aW9uIHNyKHQpe2lmKG4odCkpcmV0dXJuITE7dmFyIGU9dC5mbnM7
cmV0dXJuIHIoZSk/c3IoQXJyYXkuaXNBcnJheShlKT9lWzBdOmUpOih0Ll9sZW5ndGh8fHQubGVu
Z3RoKT4xfWZ1bmN0aW9uIGNyKHQsZSl7ITAhPT1lLmRhdGEuc2hvdyYmaXIoZSl9ZnVuY3Rpb24g
dXIodCxlLG4pe3ZhciByPWUudmFsdWUsaT10Lm11bHRpcGxlO2lmKCFpfHxBcnJheS5pc0FycmF5
KHIpKXtmb3IodmFyIG8sYSxzPTAsYz10Lm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYoYT10Lm9w
dGlvbnNbc10saSlvPUMocixscihhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVkPW8p
O2Vsc2UgaWYoJChscihhKSxyKSlyZXR1cm4gdm9pZCh0LnNlbGVjdGVkSW5kZXghPT1zJiYodC5z
ZWxlY3RlZEluZGV4PXMpKTtpfHwodC5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gbHIodCl7
cmV0dXJuIl92YWx1ZSJpbiB0P3QuX3ZhbHVlOnQudmFsdWV9ZnVuY3Rpb24gZnIodCl7dC50YXJn
ZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIHByKHQpe3QudGFyZ2V0LmNvbXBvc2luZyYmKHQudGFy
Z2V0LmNvbXBvc2luZz0hMSxkcih0LnRhcmdldCwiaW5wdXQiKSl9ZnVuY3Rpb24gZHIodCxlKXt2
YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpO24uaW5pdEV2ZW50KGUsITAs
ITApLHQuZGlzcGF0Y2hFdmVudChuKX1mdW5jdGlvbiBocih0KXtyZXR1cm4hdC5jb21wb25lbnRJ
bnN0YW5jZXx8dC5kYXRhJiZ0LmRhdGEudHJhbnNpdGlvbj90OmhyKHQuY29tcG9uZW50SW5zdGFu
Y2UuX3Zub2RlKX1mdW5jdGlvbiB2cih0KXt2YXIgZT10JiZ0LmNvbXBvbmVudE9wdGlvbnM7cmV0
dXJuIGUmJmUuQ3Rvci5vcHRpb25zLmFic3RyYWN0P3ZyKGR0KGUuY2hpbGRyZW4pKTp0fWZ1bmN0
aW9uIG1yKHQpe3ZhciBlPXt9LG49dC4kb3B0aW9ucztmb3IodmFyIHIgaW4gbi5wcm9wc0RhdGEp
ZVtyXT10W3JdO3ZhciBpPW4uX3BhcmVudExpc3RlbmVycztmb3IodmFyIG8gaW4gaSllW0hpKG8p
XT1pW29dO3JldHVybiBlfWZ1bmN0aW9uIHlyKHQsZSl7aWYoL1xkLWtlZXAtYWxpdmUkLy50ZXN0
KGUudGFnKSlyZXR1cm4gdCgia2VlcC1hbGl2ZSIse3Byb3BzOmUuY29tcG9uZW50T3B0aW9ucy5w
cm9wc0RhdGF9KX1mdW5jdGlvbiBncih0KXtmb3IoO3Q9dC5wYXJlbnQ7KWlmKHQuZGF0YS50cmFu
c2l0aW9uKXJldHVybiEwfWZ1bmN0aW9uIF9yKHQsZSl7cmV0dXJuIGUua2V5PT09dC5rZXkmJmUu
dGFnPT09dC50YWd9ZnVuY3Rpb24gYnIodCl7cmV0dXJuIHQuaXNDb21tZW50JiZ0LmFzeW5jRmFj
dG9yeX1mdW5jdGlvbiB3cih0KXt0LmVsbS5fbW92ZUNiJiZ0LmVsbS5fbW92ZUNiKCksdC5lbG0u
X2VudGVyQ2ImJnQuZWxtLl9lbnRlckNiKCl9ZnVuY3Rpb24gJHIodCl7dC5kYXRhLm5ld1Bvcz10
LmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlvbiBDcih0KXt2YXIgZT10LmRhdGEu
cG9zLG49dC5kYXRhLm5ld1BvcyxyPWUubGVmdC1uLmxlZnQsaT1lLnRvcC1uLnRvcDtpZihyfHxp
KXt0LmRhdGEubW92ZWQ9ITA7dmFyIG89dC5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJraXRU
cmFuc2Zvcm09InRyYW5zbGF0ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJhdGlv
bj0iMHMifX1mdW5jdGlvbiB4cih0LGUpe3ZhciBuPWU/X3MoZSk6eXM7aWYobi50ZXN0KHQpKXtm
b3IodmFyIHIsaSxvPVtdLGE9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyh0KTspe2k9ci5pbmRleCxp
PmEmJm8ucHVzaChKU09OLnN0cmluZ2lmeSh0LnNsaWNlKGEsaSkpKTt2YXIgcz1kbihyWzFdLnRy
aW0oKSk7by5wdXNoKCJfcygiK3MrIikiKSxhPWkrclswXS5sZW5ndGh9cmV0dXJuIGE8dC5sZW5n
dGgmJm8ucHVzaChKU09OLnN0cmluZ2lmeSh0LnNsaWNlKGEpKSksby5qb2luKCIrIil9fWZ1bmN0
aW9uIEFyKHQsZSl7dmFyIG49KGUud2Fybiwkbih0LCJjbGFzcyIpKTtuJiYodC5zdGF0aWNDbGFz
cz1KU09OLnN0cmluZ2lmeShuKSk7dmFyIHI9d24odCwiY2xhc3MiLCExKTtyJiYodC5jbGFzc0Jp
bmRpbmc9cil9ZnVuY3Rpb24ga3IodCl7dmFyIGU9IiI7cmV0dXJuIHQuc3RhdGljQ2xhc3MmJihl
Kz0ic3RhdGljQ2xhc3M6Iit0LnN0YXRpY0NsYXNzKyIsIiksdC5jbGFzc0JpbmRpbmcmJihlKz0i
Y2xhc3M6Iit0LmNsYXNzQmluZGluZysiLCIpLGV9ZnVuY3Rpb24gT3IodCxlKXt2YXIgbj0oZS53
YXJuLCRuKHQsInN0eWxlIikpO2lmKG4pe3Quc3RhdGljU3R5bGU9SlNPTi5zdHJpbmdpZnkoRmEo
bikpfXZhciByPXduKHQsInN0eWxlIiwhMSk7ciYmKHQuc3R5bGVCaW5kaW5nPXIpfWZ1bmN0aW9u
IFNyKHQpe3ZhciBlPSIiO3JldHVybiB0LnN0YXRpY1N0eWxlJiYoZSs9InN0YXRpY1N0eWxlOiIr
dC5zdGF0aWNTdHlsZSsiLCIpLHQuc3R5bGVCaW5kaW5nJiYoZSs9InN0eWxlOigiK3Quc3R5bGVC
aW5kaW5nKyIpLCIpLGV9ZnVuY3Rpb24gVHIodCxlKXtlLnZhbHVlJiZ5bih0LCJ0ZXh0Q29udGVu
dCIsIl9zKCIrZS52YWx1ZSsiKSIpfWZ1bmN0aW9uIEVyKHQsZSl7ZS52YWx1ZSYmeW4odCwiaW5u
ZXJIVE1MIiwiX3MoIitlLnZhbHVlKyIpIil9ZnVuY3Rpb24ganIodCxlKXt2YXIgbj1lP25jOmVj
O3JldHVybiB0LnJlcGxhY2UobixmdW5jdGlvbih0KXtyZXR1cm4gdGNbdF19KX1mdW5jdGlvbiBO
cih0LGUpe2Z1bmN0aW9uIG4oZSl7bCs9ZSx0PXQuc3Vic3RyaW5nKGUpfWZ1bmN0aW9uIHIodCxu
LHIpe3ZhciBpLHM7aWYobnVsbD09biYmKG49bCksbnVsbD09ciYmKHI9bCksdCYmKHM9dC50b0xv
d2VyQ2FzZSgpKSx0KWZvcihpPWEubGVuZ3RoLTE7aT49MCYmYVtpXS5sb3dlckNhc2VkVGFnIT09
cztpLS0pO2Vsc2UgaT0wO2lmKGk+PTApe2Zvcih2YXIgYz1hLmxlbmd0aC0xO2M+PWk7Yy0tKWUu
ZW5kJiZlLmVuZChhW2NdLnRhZyxuLHIpO2EubGVuZ3RoPWksbz1pJiZhW2ktMV0udGFnfWVsc2Ui
YnIiPT09cz9lLnN0YXJ0JiZlLnN0YXJ0KHQsW10sITAsbixyKToicCI9PT1zJiYoZS5zdGFydCYm
ZS5zdGFydCh0LFtdLCExLG4sciksZS5lbmQmJmUuZW5kKHQsbixyKSl9Zm9yKHZhciBpLG8sYT1b
XSxzPWUuZXhwZWN0SFRNTCxjPWUuaXNVbmFyeVRhZ3x8S2ksdT1lLmNhbkJlTGVmdE9wZW5UYWd8
fEtpLGw9MDt0Oyl7aWYoaT10LG8mJllzKG8pKXt2YXIgZj0wLHA9by50b0xvd2VyQ2FzZSgpLGQ9
UXNbcF18fChRc1twXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPykoPC8iK3ArIltePl0qPikiLCJp
IikpLGg9dC5yZXBsYWNlKGQsZnVuY3Rpb24odCxuLHIpe3JldHVybiBmPXIubGVuZ3RoLFlzKHAp
fHwibm9zY3JpcHQiPT09cHx8KG49bi5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nLCIkMSIp
LnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo/KV1dPi9nLCIkMSIpKSxpYyhwLG4pJiYobj1u
LnNsaWNlKDEpKSxlLmNoYXJzJiZlLmNoYXJzKG4pLCIifSk7bCs9dC5sZW5ndGgtaC5sZW5ndGgs
dD1oLHIocCxsLWYsbCl9ZWxzZXt2YXIgdj10LmluZGV4T2YoIjwiKTtpZigwPT09dil7aWYoRnMu
dGVzdCh0KSl7dmFyIG09dC5pbmRleE9mKCItLVx4M2UiKTtpZihtPj0wKXtlLnNob3VsZEtlZXBD
b21tZW50JiZlLmNvbW1lbnQodC5zdWJzdHJpbmcoNCxtKSksbihtKzMpO2NvbnRpbnVlfX1pZihC
cy50ZXN0KHQpKXt2YXIgeT10LmluZGV4T2YoIl0+Iik7aWYoeT49MCl7bih5KzIpO2NvbnRpbnVl
fX12YXIgZz10Lm1hdGNoKERzKTtpZihnKXtuKGdbMF0ubGVuZ3RoKTtjb250aW51ZX12YXIgXz10
Lm1hdGNoKFJzKTtpZihfKXt2YXIgYj1sO24oX1swXS5sZW5ndGgpLHIoX1sxXSxiLGwpO2NvbnRp
bnVlfXZhciB3PWZ1bmN0aW9uKCl7dmFyIGU9dC5tYXRjaChJcyk7aWYoZSl7dmFyIHI9e3RhZ05h
bWU6ZVsxXSxhdHRyczpbXSxzdGFydDpsfTtuKGVbMF0ubGVuZ3RoKTtmb3IodmFyIGksbzshKGk9
dC5tYXRjaChQcykpJiYobz10Lm1hdGNoKE5zKSk7KW4ob1swXS5sZW5ndGgpLHIuYXR0cnMucHVz
aChvKTtpZihpKXJldHVybiByLnVuYXJ5U2xhc2g9aVsxXSxuKGlbMF0ubGVuZ3RoKSxyLmVuZD1s
LHJ9fSgpO2lmKHcpeyFmdW5jdGlvbih0KXt2YXIgbj10LnRhZ05hbWUsaT10LnVuYXJ5U2xhc2g7
cyYmKCJwIj09PW8mJmtzKG4pJiZyKG8pLHUobikmJm89PT1uJiZyKG4pKTtmb3IodmFyIGw9Yyhu
KXx8ISFpLGY9dC5hdHRycy5sZW5ndGgscD1uZXcgQXJyYXkoZiksZD0wO2Q8ZjtkKyspe3ZhciBo
PXQuYXR0cnNbZF07VXMmJi0xPT09aFswXS5pbmRleE9mKCciIicpJiYoIiI9PT1oWzNdJiZkZWxl
dGUgaFszXSwiIj09PWhbNF0mJmRlbGV0ZSBoWzRdLCIiPT09aFs1XSYmZGVsZXRlIGhbNV0pO3Zh
ciB2PWhbM118fGhbNF18fGhbNV18fCIiO3BbZF09e25hbWU6aFsxXSx2YWx1ZTpqcih2LGUuc2hv
dWxkRGVjb2RlTmV3bGluZXMpfX1sfHwoYS5wdXNoKHt0YWc6bixsb3dlckNhc2VkVGFnOm4udG9M
b3dlckNhc2UoKSxhdHRyczpwfSksbz1uKSxlLnN0YXJ0JiZlLnN0YXJ0KG4scCxsLHQuc3RhcnQs
dC5lbmQpfSh3KSxpYyhvLHQpJiZuKDEpO2NvbnRpbnVlfX12YXIgJD12b2lkIDAsQz12b2lkIDAs
eD12b2lkIDA7aWYodj49MCl7Zm9yKEM9dC5zbGljZSh2KTshKFJzLnRlc3QoQyl8fElzLnRlc3Qo
Qyl8fEZzLnRlc3QoQyl8fEJzLnRlc3QoQyl8fCh4PUMuaW5kZXhPZigiPCIsMSkpPDApOyl2Kz14
LEM9dC5zbGljZSh2KTskPXQuc3Vic3RyaW5nKDAsdiksbih2KX12PDAmJigkPXQsdD0iIiksZS5j
aGFycyYmJCYmZS5jaGFycygkKX1pZih0PT09aSl7ZS5jaGFycyYmZS5jaGFycyh0KTticmVha319
cigpfWZ1bmN0aW9uIExyKHQsZSl7ZnVuY3Rpb24gbih0KXt0LnByZSYmKHM9ITEpLHFzKHQudGFn
KSYmKGM9ITEpfUhzPWUud2Fybnx8dm4scXM9ZS5pc1ByZVRhZ3x8S2ksV3M9ZS5tdXN0VXNlUHJv
cHx8S2ksWnM9ZS5nZXRUYWdOYW1lc3BhY2V8fEtpLHpzPW1uKGUubW9kdWxlcywidHJhbnNmb3Jt
Tm9kZSIpLEpzPW1uKGUubW9kdWxlcywicHJlVHJhbnNmb3JtTm9kZSIpLEtzPW1uKGUubW9kdWxl
cywicG9zdFRyYW5zZm9ybU5vZGUiKSxWcz1lLmRlbGltaXRlcnM7dmFyIHIsaSxvPVtdLGE9ITEh
PT1lLnByZXNlcnZlV2hpdGVzcGFjZSxzPSExLGM9ITE7cmV0dXJuIE5yKHQse3dhcm46SHMsZXhw
ZWN0SFRNTDplLmV4cGVjdEhUTUwsaXNVbmFyeVRhZzplLmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3Bl
blRhZzplLmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6ZS5zaG91bGREZWNv
ZGVOZXdsaW5lcyxzaG91bGRLZWVwQ29tbWVudDplLmNvbW1lbnRzLHN0YXJ0OmZ1bmN0aW9uKHQs
YSx1KXt2YXIgbD1pJiZpLm5zfHxacyh0KTtpbyYmInN2ZyI9PT1sJiYoYT1ZcihhKSk7dmFyIGY9
e3R5cGU6MSx0YWc6dCxhdHRyc0xpc3Q6YSxhdHRyc01hcDpacihhKSxwYXJlbnQ6aSxjaGlsZHJl
bjpbXX07bCYmKGYubnM9bCksWHIoZikmJiFtbygpJiYoZi5mb3JiaWRkZW49ITApO2Zvcih2YXIg
cD0wO3A8SnMubGVuZ3RoO3ArKylKc1twXShmLGUpO2lmKHN8fChNcihmKSxmLnByZSYmKHM9ITAp
KSxxcyhmLnRhZykmJihjPSEwKSxzKUlyKGYpO2Vsc2V7RHIoZiksRnIoZiksVnIoZiksUHIoZiks
Zi5wbGFpbj0hZi5rZXkmJiFhLmxlbmd0aCxScihmKSx6cihmKSxKcihmKTtmb3IodmFyIGQ9MDtk
PHpzLmxlbmd0aDtkKyspenNbZF0oZixlKTtLcihmKX1pZihyP28ubGVuZ3RofHxyLmlmJiYoZi5l
bHNlaWZ8fGYuZWxzZSkmJkhyKHIse2V4cDpmLmVsc2VpZixibG9jazpmfSk6cj1mLGkmJiFmLmZv
cmJpZGRlbilpZihmLmVsc2VpZnx8Zi5lbHNlKUJyKGYsaSk7ZWxzZSBpZihmLnNsb3RTY29wZSl7
aS5wbGFpbj0hMTt2YXIgaD1mLnNsb3RUYXJnZXR8fCciZGVmYXVsdCInOyhpLnNjb3BlZFNsb3Rz
fHwoaS5zY29wZWRTbG90cz17fSkpW2hdPWZ9ZWxzZSBpLmNoaWxkcmVuLnB1c2goZiksZi5wYXJl
bnQ9aTt1P24oZik6KGk9ZixvLnB1c2goZikpO2Zvcih2YXIgdj0wO3Y8S3MubGVuZ3RoO3YrKylL
c1t2XShmLGUpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIgdD1vW28ubGVuZ3RoLTFdLGU9dC5jaGlsZHJl
blt0LmNoaWxkcmVuLmxlbmd0aC0xXTtlJiYzPT09ZS50eXBlJiYiICI9PT1lLnRleHQmJiFjJiZ0
LmNoaWxkcmVuLnBvcCgpLG8ubGVuZ3RoLT0xLGk9b1tvLmxlbmd0aC0xXSxuKHQpfSxjaGFyczpm
dW5jdGlvbih0KXtpZihpJiYoIWlvfHwidGV4dGFyZWEiIT09aS50YWd8fGkuYXR0cnNNYXAucGxh
Y2Vob2xkZXIhPT10KSl7dmFyIGU9aS5jaGlsZHJlbjtpZih0PWN8fHQudHJpbSgpP0dyKGkpP3Q6
cGModCk6YSYmZS5sZW5ndGg/IiAiOiIiKXt2YXIgbjshcyYmIiAiIT09dCYmKG49eHIodCxWcykp
P2UucHVzaCh7dHlwZToyLGV4cHJlc3Npb246bix0ZXh0OnR9KToiICI9PT10JiZlLmxlbmd0aCYm
IiAiPT09ZVtlLmxlbmd0aC0xXS50ZXh0fHxlLnB1c2goe3R5cGU6Myx0ZXh0OnR9KX19fSxjb21t
ZW50OmZ1bmN0aW9uKHQpe2kuY2hpbGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6dCxpc0NvbW1lbnQ6
ITB9KX19KSxyfWZ1bmN0aW9uIE1yKHQpe251bGwhPSRuKHQsInYtcHJlIikmJih0LnByZT0hMCl9
ZnVuY3Rpb24gSXIodCl7dmFyIGU9dC5hdHRyc0xpc3QubGVuZ3RoO2lmKGUpZm9yKHZhciBuPXQu
YXR0cnM9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09e25hbWU6dC5hdHRyc0xpc3Rbcl0u
bmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lmeSh0LmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgdC5w
cmV8fCh0LnBsYWluPSEwKX1mdW5jdGlvbiBQcih0KXt2YXIgZT13bih0LCJrZXkiKTtlJiYodC5r
ZXk9ZSl9ZnVuY3Rpb24gUnIodCl7dmFyIGU9d24odCwicmVmIik7ZSYmKHQucmVmPWUsdC5yZWZJ
bkZvcj1xcih0KSl9ZnVuY3Rpb24gRHIodCl7dmFyIGU7aWYoZT0kbih0LCJ2LWZvciIpKXt2YXIg
bj1lLm1hdGNoKHNjKTtpZighbilyZXR1cm47dC5mb3I9blsyXS50cmltKCk7dmFyIHI9blsxXS50
cmltKCksaT1yLm1hdGNoKGNjKTtpPyh0LmFsaWFzPWlbMV0udHJpbSgpLHQuaXRlcmF0b3IxPWlb
Ml0udHJpbSgpLGlbM10mJih0Lml0ZXJhdG9yMj1pWzNdLnRyaW0oKSkpOnQuYWxpYXM9cn19ZnVu
Y3Rpb24gRnIodCl7dmFyIGU9JG4odCwidi1pZiIpO2lmKGUpdC5pZj1lLEhyKHQse2V4cDplLGJs
b2NrOnR9KTtlbHNle251bGwhPSRuKHQsInYtZWxzZSIpJiYodC5lbHNlPSEwKTt2YXIgbj0kbih0
LCJ2LWVsc2UtaWYiKTtuJiYodC5lbHNlaWY9bil9fWZ1bmN0aW9uIEJyKHQsZSl7dmFyIG49VXIo
ZS5jaGlsZHJlbik7biYmbi5pZiYmSHIobix7ZXhwOnQuZWxzZWlmLGJsb2NrOnR9KX1mdW5jdGlv
biBVcih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tOyl7aWYoMT09PXRbZV0udHlwZSlyZXR1cm4g
dFtlXTt0LnBvcCgpfX1mdW5jdGlvbiBIcih0LGUpe3QuaWZDb25kaXRpb25zfHwodC5pZkNvbmRp
dGlvbnM9W10pLHQuaWZDb25kaXRpb25zLnB1c2goZSl9ZnVuY3Rpb24gVnIodCl7bnVsbCE9JG4o
dCwidi1vbmNlIikmJih0Lm9uY2U9ITApfWZ1bmN0aW9uIHpyKHQpe2lmKCJzbG90Ij09PXQudGFn
KXQuc2xvdE5hbWU9d24odCwibmFtZSIpO2Vsc2V7dmFyIGU9d24odCwic2xvdCIpO2UmJih0LnNs
b3RUYXJnZXQ9JyIiJz09PWU/JyJkZWZhdWx0Iic6ZSksInRlbXBsYXRlIj09PXQudGFnJiYodC5z
bG90U2NvcGU9JG4odCwic2NvcGUiKSl9fWZ1bmN0aW9uIEpyKHQpe3ZhciBlOyhlPXduKHQsImlz
IikpJiYodC5jb21wb25lbnQ9ZSksbnVsbCE9JG4odCwiaW5saW5lLXRlbXBsYXRlIikmJih0Lmlu
bGluZVRlbXBsYXRlPSEwKX1mdW5jdGlvbiBLcih0KXt2YXIgZSxuLHIsaSxvLGEscyxjPXQuYXR0
cnNMaXN0O2ZvcihlPTAsbj1jLmxlbmd0aDtlPG47ZSsrKWlmKHI9aT1jW2VdLm5hbWUsbz1jW2Vd
LnZhbHVlLGFjLnRlc3QocikpaWYodC5oYXNCaW5kaW5ncz0hMCxhPVdyKHIpLGEmJihyPXIucmVw
bGFjZShmYywiIikpLGxjLnRlc3Qocikpcj1yLnJlcGxhY2UobGMsIiIpLG89ZG4obykscz0hMSxh
JiYoYS5wcm9wJiYocz0hMCwiaW5uZXJIdG1sIj09PShyPUhpKHIpKSYmKHI9ImlubmVySFRNTCIp
KSxhLmNhbWVsJiYocj1IaShyKSksYS5zeW5jJiZibih0LCJ1cGRhdGU6IitIaShyKSx4bihvLCIk
ZXZlbnQiKSkpLHN8fCF0LmNvbXBvbmVudCYmV3ModC50YWcsdC5hdHRyc01hcC50eXBlLHIpP3lu
KHQscixvKTpnbih0LHIsbyk7ZWxzZSBpZihvYy50ZXN0KHIpKXI9ci5yZXBsYWNlKG9jLCIiKSxi
bih0LHIsbyxhLCExLEhzKTtlbHNle3I9ci5yZXBsYWNlKGFjLCIiKTt2YXIgdT1yLm1hdGNoKHVj
KSxsPXUmJnVbMV07bCYmKHI9ci5zbGljZSgwLC0obC5sZW5ndGgrMSkpKSxfbih0LHIsaSxvLGws
YSl9ZWxzZXtnbih0LHIsSlNPTi5zdHJpbmdpZnkobykpfX1mdW5jdGlvbiBxcih0KXtmb3IodmFy
IGU9dDtlOyl7aWYodm9pZCAwIT09ZS5mb3IpcmV0dXJuITA7ZT1lLnBhcmVudH1yZXR1cm4hMX1m
dW5jdGlvbiBXcih0KXt2YXIgZT10Lm1hdGNoKGZjKTtpZihlKXt2YXIgbj17fTtyZXR1cm4gZS5m
b3JFYWNoKGZ1bmN0aW9uKHQpe25bdC5zbGljZSgxKV09ITB9KSxufX1mdW5jdGlvbiBacih0KXtm
b3IodmFyIGU9e30sbj0wLHI9dC5sZW5ndGg7bjxyO24rKyllW3Rbbl0ubmFtZV09dFtuXS52YWx1
ZTtyZXR1cm4gZX1mdW5jdGlvbiBHcih0KXtyZXR1cm4ic2NyaXB0Ij09PXQudGFnfHwic3R5bGUi
PT09dC50YWd9ZnVuY3Rpb24gWHIodCl7cmV0dXJuInN0eWxlIj09PXQudGFnfHwic2NyaXB0Ij09
PXQudGFnJiYoIXQuYXR0cnNNYXAudHlwZXx8InRleHQvamF2YXNjcmlwdCI9PT10LmF0dHJzTWFw
LnR5cGUpfWZ1bmN0aW9uIFlyKHQpe2Zvcih2YXIgZT1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3Zh
ciByPXRbbl07ZGMudGVzdChyLm5hbWUpfHwoci5uYW1lPXIubmFtZS5yZXBsYWNlKGhjLCIiKSxl
LnB1c2gocikpfXJldHVybiBlfWZ1bmN0aW9uIFFyKHQsZSl7dCYmKEdzPXZjKGUuc3RhdGljS2V5
c3x8IiIpLFhzPWUuaXNSZXNlcnZlZFRhZ3x8S2ksZWkodCksbmkodCwhMSkpfWZ1bmN0aW9uIHRp
KHQpe3JldHVybiBkKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNo
aWxkcmVuLGF0dHJzIisodD8iLCIrdDoiIikpfWZ1bmN0aW9uIGVpKHQpe2lmKHQuc3RhdGljPXJp
KHQpLDE9PT10LnR5cGUpe2lmKCFYcyh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10LmF0
dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBlPTAsbj10LmNoaWxkcmVu
Lmxlbmd0aDtlPG47ZSsrKXt2YXIgcj10LmNoaWxkcmVuW2VdO2VpKHIpLHIuc3RhdGljfHwodC5z
dGF0aWM9ITEpfWlmKHQuaWZDb25kaXRpb25zKWZvcih2YXIgaT0xLG89dC5pZkNvbmRpdGlvbnMu
bGVuZ3RoO2k8bztpKyspe3ZhciBhPXQuaWZDb25kaXRpb25zW2ldLmJsb2NrO2VpKGEpLGEuc3Rh
dGljfHwodC5zdGF0aWM9ITEpfX19ZnVuY3Rpb24gbmkodCxlKXtpZigxPT09dC50eXBlKXtpZigo
dC5zdGF0aWN8fHQub25jZSkmJih0LnN0YXRpY0luRm9yPWUpLHQuc3RhdGljJiZ0LmNoaWxkcmVu
Lmxlbmd0aCYmKDEhPT10LmNoaWxkcmVuLmxlbmd0aHx8MyE9PXQuY2hpbGRyZW5bMF0udHlwZSkp
cmV0dXJuIHZvaWQodC5zdGF0aWNSb290PSEwKTtpZih0LnN0YXRpY1Jvb3Q9ITEsdC5jaGlsZHJl
bilmb3IodmFyIG49MCxyPXQuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspbmkodC5jaGlsZHJlbltu
XSxlfHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIGk9MSxvPXQuaWZDb25kaXRp
b25zLmxlbmd0aDtpPG87aSsrKW5pKHQuaWZDb25kaXRpb25zW2ldLmJsb2NrLGUpfX1mdW5jdGlv
biByaSh0KXtyZXR1cm4gMiE9PXQudHlwZSYmKDM9PT10LnR5cGV8fCEoIXQucHJlJiYodC5oYXNC
aW5kaW5nc3x8dC5pZnx8dC5mb3J8fERpKHQudGFnKXx8IVhzKHQudGFnKXx8aWkodCl8fCFPYmpl
Y3Qua2V5cyh0KS5ldmVyeShHcykpKSl9ZnVuY3Rpb24gaWkodCl7Zm9yKDt0LnBhcmVudDspe2lm
KHQ9dC5wYXJlbnQsInRlbXBsYXRlIiE9PXQudGFnKXJldHVybiExO2lmKHQuZm9yKXJldHVybiEw
fXJldHVybiExfWZ1bmN0aW9uIG9pKHQsZSxuKXt2YXIgcj1lPyJuYXRpdmVPbjp7Ijoib246eyI7
Zm9yKHZhciBpIGluIHQpe3IrPSciJytpKyciOicrYWkoaSx0W2ldKSsiLCJ9cmV0dXJuIHIuc2xp
Y2UoMCwtMSkrIn0ifWZ1bmN0aW9uIGFpKHQsZSl7aWYoIWUpcmV0dXJuImZ1bmN0aW9uKCl7fSI7
aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iWyIrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGFp
KHQsZSl9KS5qb2luKCIsIikrIl0iO3ZhciBuPXljLnRlc3QoZS52YWx1ZSkscj1tYy50ZXN0KGUu
dmFsdWUpO2lmKGUubW9kaWZpZXJzKXt2YXIgaT0iIixvPSIiLGE9W107Zm9yKHZhciBzIGluIGUu
bW9kaWZpZXJzKWJjW3NdPyhvKz1iY1tzXSxnY1tzXSYmYS5wdXNoKHMpKTphLnB1c2gocyk7YS5s
ZW5ndGgmJihpKz1zaShhKSksbyYmKGkrPW8pO3JldHVybiJmdW5jdGlvbigkZXZlbnQpeyIraSso
bj9lLnZhbHVlKyIoJGV2ZW50KSI6cj8iKCIrZS52YWx1ZSsiKSgkZXZlbnQpIjplLnZhbHVlKSsi
fSJ9cmV0dXJuIG58fHI/ZS52YWx1ZToiZnVuY3Rpb24oJGV2ZW50KXsiK2UudmFsdWUrIn0ifWZ1
bmN0aW9uIHNpKHQpe3JldHVybiJpZighKCdidXR0b24nIGluICRldmVudCkmJiIrdC5tYXAoY2kp
LmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsifWZ1bmN0aW9uIGNpKHQpe3ZhciBlPXBhcnNlSW50
KHQsMTApO2lmKGUpcmV0dXJuIiRldmVudC5rZXlDb2RlIT09IitlO3ZhciBuPWdjW3RdO3JldHVy
biJfaygkZXZlbnQua2V5Q29kZSwiK0pTT04uc3RyaW5naWZ5KHQpKyhuPyIsIitKU09OLnN0cmlu
Z2lmeShuKToiIikrIikifWZ1bmN0aW9uIHVpKHQsZSl7dC53cmFwTGlzdGVuZXJzPWZ1bmN0aW9u
KHQpe3JldHVybiJfZygiK3QrIiwiK2UudmFsdWUrIikifX1mdW5jdGlvbiBsaSh0LGUpe3Qud3Jh
cERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCciK3QudGFnKyInLCIrZS52YWx1ZSsi
LCIrKGUubW9kaWZpZXJzJiZlLm1vZGlmaWVycy5wcm9wPyJ0cnVlIjoiZmFsc2UiKSsoZS5tb2Rp
ZmllcnMmJmUubW9kaWZpZXJzLnN5bmM/Iix0cnVlIjoiIikrIikifX1mdW5jdGlvbiBmaSh0LGUp
e3ZhciBuPW5ldyAkYyhlKTtyZXR1cm57cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiKyh0P3Bp
KHQsbik6J19jKCJkaXYiKScpKyJ9IixzdGF0aWNSZW5kZXJGbnM6bi5zdGF0aWNSZW5kZXJGbnN9
fWZ1bmN0aW9uIHBpKHQsZSl7aWYodC5zdGF0aWNSb290JiYhdC5zdGF0aWNQcm9jZXNzZWQpcmV0
dXJuIGRpKHQsZSk7aWYodC5vbmNlJiYhdC5vbmNlUHJvY2Vzc2VkKXJldHVybiBoaSh0LGUpO2lm
KHQuZm9yJiYhdC5mb3JQcm9jZXNzZWQpcmV0dXJuIHlpKHQsZSk7aWYodC5pZiYmIXQuaWZQcm9j
ZXNzZWQpcmV0dXJuIHZpKHQsZSk7aWYoInRlbXBsYXRlIiE9PXQudGFnfHx0LnNsb3RUYXJnZXQp
e2lmKCJzbG90Ij09PXQudGFnKXJldHVybiBFaSh0LGUpO3ZhciBuO2lmKHQuY29tcG9uZW50KW49
amkodC5jb21wb25lbnQsdCxlKTtlbHNle3ZhciByPXQucGxhaW4/dm9pZCAwOmdpKHQsZSksaT10
LmlubGluZVRlbXBsYXRlP251bGw6eGkodCxlLCEwKTtuPSJfYygnIit0LnRhZysiJyIrKHI/Iiwi
K3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzxlLnRyYW5zZm9ybXMubGVuZ3Ro
O28rKyluPWUudHJhbnNmb3Jtc1tvXSh0LG4pO3JldHVybiBufXJldHVybiB4aSh0LGUpfHwidm9p
ZCAwIn1mdW5jdGlvbiBkaSh0LGUpe3JldHVybiB0LnN0YXRpY1Byb2Nlc3NlZD0hMCxlLnN0YXRp
Y1JlbmRlckZucy5wdXNoKCJ3aXRoKHRoaXMpe3JldHVybiAiK3BpKHQsZSkrIn0iKSwiX20oIiso
ZS5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoLTEpKyh0LnN0YXRpY0luRm9yPyIsdHJ1ZSI6IiIpKyIp
In1mdW5jdGlvbiBoaSh0LGUpe2lmKHQub25jZVByb2Nlc3NlZD0hMCx0LmlmJiYhdC5pZlByb2Nl
c3NlZClyZXR1cm4gdmkodCxlKTtpZih0LnN0YXRpY0luRm9yKXtmb3IodmFyIG49IiIscj10LnBh
cmVudDtyOyl7aWYoci5mb3Ipe249ci5rZXk7YnJlYWt9cj1yLnBhcmVudH1yZXR1cm4gbj8iX28o
IitwaSh0LGUpKyIsIitlLm9uY2VJZCsrKyhuPyIsIituOiIiKSsiKSI6cGkodCxlKX1yZXR1cm4g
ZGkodCxlKX1mdW5jdGlvbiB2aSh0LGUsbixyKXtyZXR1cm4gdC5pZlByb2Nlc3NlZD0hMCxtaSh0
LmlmQ29uZGl0aW9ucy5zbGljZSgpLGUsbixyKX1mdW5jdGlvbiBtaSh0LGUsbixyKXtmdW5jdGlv
biBpKHQpe3JldHVybiBuP24odCxlKTp0Lm9uY2U/aGkodCxlKTpwaSh0LGUpfWlmKCF0Lmxlbmd0
aClyZXR1cm4gcnx8Il9lKCkiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/IigiK28uZXhw
KyIpPyIraShvLmJsb2NrKSsiOiIrbWkodCxlLG4scik6IiIraShvLmJsb2NrKX1mdW5jdGlvbiB5
aSh0LGUsbixyKXt2YXIgaT10LmZvcixvPXQuYWxpYXMsYT10Lml0ZXJhdG9yMT8iLCIrdC5pdGVy
YXRvcjE6IiIscz10Lml0ZXJhdG9yMj8iLCIrdC5pdGVyYXRvcjI6IiI7cmV0dXJuIHQuZm9yUHJv
Y2Vzc2VkPSEwLChyfHwiX2wiKSsiKCgiK2krIiksZnVuY3Rpb24oIitvK2ErcysiKXtyZXR1cm4g
Iisobnx8cGkpKHQsZSkrIn0pIn1mdW5jdGlvbiBnaSh0LGUpe3ZhciBuPSJ7IixyPV9pKHQsZSk7
ciYmKG4rPXIrIiwiKSx0LmtleSYmKG4rPSJrZXk6Iit0LmtleSsiLCIpLHQucmVmJiYobis9InJl
ZjoiK3QucmVmKyIsIiksdC5yZWZJbkZvciYmKG4rPSJyZWZJbkZvcjp0cnVlLCIpLHQucHJlJiYo
bis9InByZTp0cnVlLCIpLHQuY29tcG9uZW50JiYobis9J3RhZzoiJyt0LnRhZysnIiwnKTtmb3Io
dmFyIGk9MDtpPGUuZGF0YUdlbkZucy5sZW5ndGg7aSsrKW4rPWUuZGF0YUdlbkZuc1tpXSh0KTtp
Zih0LmF0dHJzJiYobis9ImF0dHJzOnsiK05pKHQuYXR0cnMpKyJ9LCIpLHQucHJvcHMmJihuKz0i
ZG9tUHJvcHM6eyIrTmkodC5wcm9wcykrIn0sIiksdC5ldmVudHMmJihuKz1vaSh0LmV2ZW50cywh
MSxlLndhcm4pKyIsIiksdC5uYXRpdmVFdmVudHMmJihuKz1vaSh0Lm5hdGl2ZUV2ZW50cywhMCxl
Lndhcm4pKyIsIiksdC5zbG90VGFyZ2V0JiYobis9InNsb3Q6Iit0LnNsb3RUYXJnZXQrIiwiKSx0
LnNjb3BlZFNsb3RzJiYobis9d2kodC5zY29wZWRTbG90cyxlKSsiLCIpLHQubW9kZWwmJihuKz0i
bW9kZWw6e3ZhbHVlOiIrdC5tb2RlbC52YWx1ZSsiLGNhbGxiYWNrOiIrdC5tb2RlbC5jYWxsYmFj
aysiLGV4cHJlc3Npb246Iit0Lm1vZGVsLmV4cHJlc3Npb24rIn0sIiksdC5pbmxpbmVUZW1wbGF0
ZSl7dmFyIG89YmkodCxlKTtvJiYobis9bysiLCIpfXJldHVybiBuPW4ucmVwbGFjZSgvLCQvLCIi
KSsifSIsdC53cmFwRGF0YSYmKG49dC53cmFwRGF0YShuKSksdC53cmFwTGlzdGVuZXJzJiYobj10
LndyYXBMaXN0ZW5lcnMobikpLG59ZnVuY3Rpb24gX2kodCxlKXt2YXIgbj10LmRpcmVjdGl2ZXM7
aWYobil7dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxlbmd0
aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgdT1lLmRpcmVjdGl2ZXNbby5uYW1lXTt1JiYoYT0h
IXUodCxvLGUud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFtZToi
JytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNzaW9u
OiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8nLGFyZzoiJytvLmFyZysnIic6
IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZpZXJz
KToiIikrIn0sIil9cmV0dXJuIGM/cy5zbGljZSgwLC0xKSsiXSI6dm9pZCAwfX1mdW5jdGlvbiBi
aSh0LGUpe3ZhciBuPXQuY2hpbGRyZW5bMF07aWYoMT09PW4udHlwZSl7dmFyIHI9ZmkobixlLm9w
dGlvbnMpO3JldHVybiJpbmxpbmVUZW1wbGF0ZTp7cmVuZGVyOmZ1bmN0aW9uKCl7IityLnJlbmRl
cisifSxzdGF0aWNSZW5kZXJGbnM6WyIrci5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKHQp
e3JldHVybiJmdW5jdGlvbigpeyIrdCsifSJ9KS5qb2luKCIsIikrIl19In19ZnVuY3Rpb24gd2ko
dCxlKXtyZXR1cm4ic2NvcGVkU2xvdHM6X3UoWyIrT2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9u
KG4pe3JldHVybiAkaShuLHRbbl0sZSl9KS5qb2luKCIsIikrIl0pIn1mdW5jdGlvbiAkaSh0LGUs
bil7cmV0dXJuIGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQ/Q2kodCxlLG4pOiJ7a2V5OiIrdCsiLGZu
OmZ1bmN0aW9uKCIrU3RyaW5nKGUuYXR0cnNNYXAuc2NvcGUpKyIpe3JldHVybiAiKygidGVtcGxh
dGUiPT09ZS50YWc/eGkoZSxuKXx8InZvaWQgMCI6cGkoZSxuKSkrIn19In1mdW5jdGlvbiBDaSh0
LGUsbil7dmFyIHI9ZS5mb3IsaT1lLmFsaWFzLG89ZS5pdGVyYXRvcjE/IiwiK2UuaXRlcmF0b3Ix
OiIiLGE9ZS5pdGVyYXRvcjI/IiwiK2UuaXRlcmF0b3IyOiIiO3JldHVybiBlLmZvclByb2Nlc3Nl
ZD0hMCwiX2woKCIrcisiKSxmdW5jdGlvbigiK2krbythKyIpe3JldHVybiAiKyRpKHQsZSxuKSsi
fSkifWZ1bmN0aW9uIHhpKHQsZSxuLHIsaSl7dmFyIG89dC5jaGlsZHJlbjtpZihvLmxlbmd0aCl7
dmFyIGE9b1swXTtpZigxPT09by5sZW5ndGgmJmEuZm9yJiYidGVtcGxhdGUiIT09YS50YWcmJiJz
bG90IiE9PWEudGFnKXJldHVybihyfHxwaSkoYSxlKTt2YXIgcz1uP0FpKG8sZS5tYXliZUNvbXBv
bmVudCk6MCxjPWl8fE9pO3JldHVybiJbIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYyh0LGUp
fSkuam9pbigiLCIpKyJdIisocz8iLCIrczoiIil9fWZ1bmN0aW9uIEFpKHQsZSl7Zm9yKHZhciBu
PTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaT10W3JdO2lmKDE9PT1pLnR5cGUpe2lmKGtpKGkp
fHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4g
a2kodC5ibG9jayl9KSl7bj0yO2JyZWFrfShlKGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRp
dGlvbnMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LmJsb2NrKX0pKSYmKG49MSl9fXJldHVy
biBufWZ1bmN0aW9uIGtpKHQpe3JldHVybiB2b2lkIDAhPT10LmZvcnx8InRlbXBsYXRlIj09PXQu
dGFnfHwic2xvdCI9PT10LnRhZ31mdW5jdGlvbiBPaSh0LGUpe3JldHVybiAxPT09dC50eXBlP3Bp
KHQsZSk6Mz09PXQudHlwZSYmdC5pc0NvbW1lbnQ/VGkodCk6U2kodCl9ZnVuY3Rpb24gU2kodCl7
cmV0dXJuIl92KCIrKDI9PT10LnR5cGU/dC5leHByZXNzaW9uOkxpKEpTT04uc3RyaW5naWZ5KHQu
dGV4dCkpKSsiKSJ9ZnVuY3Rpb24gVGkodCl7cmV0dXJuIl9lKCIrSlNPTi5zdHJpbmdpZnkodC50
ZXh0KSsiKSJ9ZnVuY3Rpb24gRWkodCxlKXt2YXIgbj10LnNsb3ROYW1lfHwnImRlZmF1bHQiJyxy
PXhpKHQsZSksaT0iX3QoIituKyhyPyIsIityOiIiKSxvPXQuYXR0cnMmJiJ7Iit0LmF0dHJzLm1h
cChmdW5jdGlvbih0KXtyZXR1cm4gSGkodC5uYW1lKSsiOiIrdC52YWx1ZX0pLmpvaW4oIiwiKSsi
fSIsYT10LmF0dHJzTWFwWyJ2LWJpbmQiXTtyZXR1cm4hbyYmIWF8fHJ8fChpKz0iLG51bGwiKSxv
JiYoaSs9IiwiK28pLGEmJihpKz0obz8iIjoiLG51bGwiKSsiLCIrYSksaSsiKSJ9ZnVuY3Rpb24g
amkodCxlLG4pe3ZhciByPWUuaW5saW5lVGVtcGxhdGU/bnVsbDp4aShlLG4sITApO3JldHVybiJf
YygiK3QrIiwiK2dpKGUsbikrKHI/IiwiK3I6IiIpKyIpIn1mdW5jdGlvbiBOaSh0KXtmb3IodmFy
IGU9IiIsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2UrPSciJytyLm5hbWUrJyI6JytM
aShyLnZhbHVlKSsiLCJ9cmV0dXJuIGUuc2xpY2UoMCwtMSl9ZnVuY3Rpb24gTGkodCl7cmV0dXJu
IHQucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAy
OSIpfWZ1bmN0aW9uIE1pKHQsZSl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24odCl9Y2F0Y2gobil7
cmV0dXJuIGUucHVzaCh7ZXJyOm4sY29kZTp0fSksd319ZnVuY3Rpb24gSWkodCl7dmFyIGU9T2Jq
ZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obixyLGkpe3I9cnx8e307dmFyIG89ci5k
ZWxpbWl0ZXJzP1N0cmluZyhyLmRlbGltaXRlcnMpK246bjtpZihlW29dKXJldHVybiBlW29dO3Zh
ciBhPXQobixyKSxzPXt9LGM9W107cmV0dXJuIHMucmVuZGVyPU1pKGEucmVuZGVyLGMpLHMuc3Rh
dGljUmVuZGVyRm5zPWEuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gTWko
dCxjKX0pLGVbb109c319ZnVuY3Rpb24gUGkodCl7aWYodC5vdXRlckhUTUwpcmV0dXJuIHQub3V0
ZXJIVE1MO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmFwcGVu
ZENoaWxkKHQuY2xvbmVOb2RlKCEwKSksZS5pbm5lckhUTUx9dmFyIFJpPU9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcsRGk9ZCgic2xvdCxjb21wb25lbnQiLCEwKSxGaT1kKCJrZXkscmVmLHNsb3Qs
aXMiKSxCaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFVpPS8tKFx3KS9nLEhpPW0o
ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShVaSxmdW5jdGlvbih0LGUpe3JldHVybiBlP2Uu
dG9VcHBlckNhc2UoKToiIn0pfSksVmk9bShmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQoMCku
dG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfSksemk9LyhbXi1dKShbQS1aXSkvZyxKaT1tKGZ1bmN0
aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoemksIiQxLSQyIikucmVwbGFjZSh6aSwiJDEtJDIiKS50
b0xvd2VyQ2FzZSgpfSksS2k9ZnVuY3Rpb24odCxlLG4pe3JldHVybiExfSxxaT1mdW5jdGlvbih0
KXtyZXR1cm4gdH0sV2k9ImRhdGEtc2VydmVyLXJlbmRlcmVkIixaaT1bImNvbXBvbmVudCIsImRp
cmVjdGl2ZSIsImZpbHRlciJdLEdpPVsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1v
dW50IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95Iiwi
ZGVzdHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiXSxYaT17b3B0aW9uTWVyZ2VTdHJh
dGVnaWVzOk9iamVjdC5jcmVhdGUobnVsbCksc2lsZW50OiExLHByb2R1Y3Rpb25UaXA6ITEsZGV2
dG9vbHM6ITEscGVyZm9ybWFuY2U6ITEsZXJyb3JIYW5kbGVyOm51bGwsd2FybkhhbmRsZXI6bnVs
bCxpZ25vcmVkRWxlbWVudHM6W10sa2V5Q29kZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxpc1Jlc2Vy
dmVkVGFnOktpLGlzUmVzZXJ2ZWRBdHRyOktpLGlzVW5rbm93bkVsZW1lbnQ6S2ksZ2V0VGFnTmFt
ZXNwYWNlOncscGFyc2VQbGF0Zm9ybVRhZ05hbWU6cWksbXVzdFVzZVByb3A6S2ksX2xpZmVjeWNs
ZUhvb2tzOkdpfSxZaT1PYmplY3QuZnJlZXplKHt9KSxRaT0vW15cdy4kXS8sdG89dyxlbz0iX19w
cm90b19fImlue30sbm89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cscm89bm8mJndpbmRvdy5u
YXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksaW89cm8mJi9tc2llfHRyaWRlbnQvLnRl
c3Qocm8pLG9vPXJvJiZyby5pbmRleE9mKCJtc2llIDkuMCIpPjAsYW89cm8mJnJvLmluZGV4T2Yo
ImVkZ2UvIik+MCxzbz1ybyYmcm8uaW5kZXhPZigiYW5kcm9pZCIpPjAsY289cm8mJi9pcGhvbmV8
aXBhZHxpcG9kfGlvcy8udGVzdChybyksdW89cm8mJi9jaHJvbWVcL1xkKy8udGVzdChybykmJiFh
byxsbz17fS53YXRjaCxmbz0hMTtpZihubyl0cnl7dmFyIHBvPXt9O09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShwbywicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe2ZvPSEwfX0pLHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJ0ZXN0LXBhc3NpdmUiLG51bGwscG8pfWNhdGNoKHQpe312YXIgaG8sdm8sbW89
ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09aG8mJihobz0hbm8mJnZvaWQgMCE9PXQmJiJzZXJ2
ZXIiPT09dC5wcm9jZXNzLmVudi5WVUVfRU5WKSxob30seW89bm8mJndpbmRvdy5fX1ZVRV9ERVZU
T09MU19HTE9CQUxfSE9PS19fLGdvPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZUKFN5bWJv
bCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmVChSZWZsZWN0Lm93bktleXMpLF9vPWZ1
bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3I9ITE7dmFyIHQ9bi5zbGljZSgwKTtuLmxlbmd0aD0wO2Zv
cih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0oKX12YXIgZSxuPVtdLHI9ITE7aWYoInVuZGVm
aW5lZCIhPXR5cGVvZiBQcm9taXNlJiZUKFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29sdmUo
KSxvPWZ1bmN0aW9uKHQpe2NvbnNvbGUuZXJyb3IodCl9O2U9ZnVuY3Rpb24oKXtpLnRoZW4odCku
Y2F0Y2gobyksY28mJnNldFRpbWVvdXQodyl9fWVsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBN
dXRhdGlvbk9ic2VydmVyfHwhVChNdXRhdGlvbk9ic2VydmVyKSYmIltvYmplY3QgTXV0YXRpb25P
YnNlcnZlckNvbnN0cnVjdG9yXSIhPT1NdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkpZT1mdW5j
dGlvbigpe3NldFRpbWVvdXQodCwwKX07ZWxzZXt2YXIgYT0xLHM9bmV3IE11dGF0aW9uT2JzZXJ2
ZXIodCksYz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSkpO3Mub2JzZXJ2ZShjLHtj
aGFyYWN0ZXJEYXRhOiEwfSksZT1mdW5jdGlvbigpe2E9KGErMSklMixjLmRhdGE9U3RyaW5nKGEp
fX1yZXR1cm4gZnVuY3Rpb24odCxpKXt2YXIgbztpZihuLnB1c2goZnVuY3Rpb24oKXtpZih0KXRy
eXt0LmNhbGwoaSl9Y2F0Y2godCl7Uyh0LGksIm5leHRUaWNrIil9ZWxzZSBvJiZvKGkpfSkscnx8
KHI9ITAsZSgpKSwhdCYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJv
bWlzZShmdW5jdGlvbih0LGUpe289dH0pfX0oKTt2bz0idW5kZWZpbmVkIiE9dHlwZW9mIFNldCYm
VChTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnNldD1PYmplY3QuY3JlYXRl
KG51bGwpfXJldHVybiB0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuITA9PT10aGlz
LnNldFt0XX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3RoaXMuc2V0W3RdPSEwfSx0LnBy
b3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9LHR9
KCk7dmFyIGJvPTAsd289ZnVuY3Rpb24oKXt0aGlzLmlkPWJvKyssdGhpcy5zdWJzPVtdfTt3by5w
cm90b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKHQpe3RoaXMuc3Vicy5wdXNoKHQpfSx3by5wcm90b3R5
cGUucmVtb3ZlU3ViPWZ1bmN0aW9uKHQpe2godGhpcy5zdWJzLHQpfSx3by5wcm90b3R5cGUuZGVw
ZW5kPWZ1bmN0aW9uKCl7d28udGFyZ2V0JiZ3by50YXJnZXQuYWRkRGVwKHRoaXMpfSx3by5wcm90
b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3Vicy5zbGljZSgpLGU9MCxu
PXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGUoKX0sd28udGFyZ2V0PW51bGw7dmFyICRvPVtd
LENvPUFycmF5LnByb3RvdHlwZSx4bz1PYmplY3QuY3JlYXRlKENvKTtbInB1c2giLCJwb3AiLCJz
aGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rp
b24odCl7dmFyIGU9Q29bdF07ayh4byx0LGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHI9YXJndW1l
bnRzLmxlbmd0aDtyLS07KW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89ZS5hcHBseSh0aGlzLG4p
LGE9dGhpcy5fX29iX187c3dpdGNoKHQpe2Nhc2UicHVzaCI6Y2FzZSJ1bnNoaWZ0IjppPW47YnJl
YWs7Y2FzZSJzcGxpY2UiOmk9bi5zbGljZSgyKX1yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSks
YS5kZXAubm90aWZ5KCksb30pfSk7dmFyIEFvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHhv
KSxrbz17c2hvdWxkQ29udmVydDohMH0sT289ZnVuY3Rpb24odCl7aWYodGhpcy52YWx1ZT10LHRo
aXMuZGVwPW5ldyB3byx0aGlzLnZtQ291bnQ9MCxrKHQsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNB
cnJheSh0KSl7KGVvP046TCkodCx4byxBbyksdGhpcy5vYnNlcnZlQXJyYXkodCl9ZWxzZSB0aGlz
LndhbGsodCl9O09vLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3Qu
a2V5cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspSSh0LGVbbl0sdFtlW25dXSl9LE9vLnByb3RvdHlw
ZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47ZSsr
KU0odFtlXSl9O3ZhciBTbz1YaS5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7U28uZGF0YT1mdW5jdGlv
bih0LGUsbil7cmV0dXJuIG4/Qih0LGUsbik6ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/dDpCLmNh
bGwodGhpcyx0LGUpfSxHaS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1NvW3RdPVV9KSxaaS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe1NvW3QrInMiXT1IfSksU28ud2F0Y2g9ZnVuY3Rpb24odCxlKXtpZih0PT09
bG8mJih0PXZvaWQgMCksZT09PWxvJiYoZT12b2lkIDApLCFlKXJldHVybiBPYmplY3QuY3JlYXRl
KHR8fG51bGwpO2lmKCF0KXJldHVybiBlO3ZhciBuPXt9O18obix0KTtmb3IodmFyIHIgaW4gZSl7
dmFyIGk9bltyXSxvPWVbcl07aSYmIUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSksbltyXT1pP2ku
Y29uY2F0KG8pOkFycmF5LmlzQXJyYXkobyk/bzpbb119cmV0dXJuIG59LFNvLnByb3BzPVNvLm1l
dGhvZHM9U28uaW5qZWN0PVNvLmNvbXB1dGVkPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIGU7
dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gXyhuLHQpLGUmJl8obixlKSxufSxTby5w
cm92aWRlPUI7dmFyIFRvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dDplfSxFbz1m
dW5jdGlvbih0LGUsbixyLGksbyxhLHMpe3RoaXMudGFnPXQsdGhpcy5kYXRhPWUsdGhpcy5jaGls
ZHJlbj1uLHRoaXMudGV4dD1yLHRoaXMuZWxtPWksdGhpcy5ucz12b2lkIDAsdGhpcy5jb250ZXh0
PW8sdGhpcy5mdW5jdGlvbmFsQ29udGV4dD12b2lkIDAsdGhpcy5rZXk9ZSYmZS5rZXksdGhpcy5j
b21wb25lbnRPcHRpb25zPWEsdGhpcy5jb21wb25lbnRJbnN0YW5jZT12b2lkIDAsdGhpcy5wYXJl
bnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9
ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMSx0aGlz
LmFzeW5jRmFjdG9yeT1zLHRoaXMuYXN5bmNNZXRhPXZvaWQgMCx0aGlzLmlzQXN5bmNQbGFjZWhv
bGRlcj0hMX0sam89e2NoaWxkOnt9fTtqby5jaGlsZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5jb21wb25lbnRJbnN0YW5jZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRW8ucHJvdG90eXBl
LGpvKTt2YXIgTm8sTG89ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9IiIpO3ZhciBlPW5ldyBF
bztyZXR1cm4gZS50ZXh0PXQsZS5pc0NvbW1lbnQ9ITAsZX0sTW89bShmdW5jdGlvbih0KXt2YXIg
ZT0iJiI9PT10LmNoYXJBdCgwKTt0PWU/dC5zbGljZSgxKTp0O3ZhciBuPSJ+Ij09PXQuY2hhckF0
KDApO3Q9bj90LnNsaWNlKDEpOnQ7dmFyIHI9IiEiPT09dC5jaGFyQXQoMCk7cmV0dXJuIHQ9cj90
LnNsaWNlKDEpOnQse25hbWU6dCxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6ZX19KSxJbz1udWxs
LFBvPVtdLFJvPVtdLERvPXt9LEZvPSExLEJvPSExLFVvPTAsSG89MCxWbz1mdW5jdGlvbih0LGUs
bixyKXt0aGlzLnZtPXQsdC5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRl
ZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5
bmMpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4s
dGhpcy5pZD0rK0hvLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVw
cz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IHZvLHRoaXMubmV3RGVwSWRzPW5l
dyB2byx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5nZXR0ZXI9
ZToodGhpcy5nZXR0ZXI9TyhlKSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKCl7
fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtWby5wcm90b3R5cGUu
Z2V0PWZ1bmN0aW9uKCl7RSh0aGlzKTt2YXIgdCxlPXRoaXMudm07dHJ5e3Q9dGhpcy5nZXR0ZXIu
Y2FsbChlLGUpfWNhdGNoKHQpe2lmKCF0aGlzLnVzZXIpdGhyb3cgdDtTKHQsZSwnZ2V0dGVyIGZv
ciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZNdCh0
KSxqKCksdGhpcy5jbGVhbnVwRGVwcygpfXJldHVybiB0fSxWby5wcm90b3R5cGUuYWRkRGVwPWZ1
bmN0aW9uKHQpe3ZhciBlPXQuaWQ7dGhpcy5uZXdEZXBJZHMuaGFzKGUpfHwodGhpcy5uZXdEZXBJ
ZHMuYWRkKGUpLHRoaXMubmV3RGVwcy5wdXNoKHQpLHRoaXMuZGVwSWRzLmhhcyhlKXx8dC5hZGRT
dWIodGhpcykpfSxWby5wcm90b3R5cGUuY2xlYW51cERlcHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9
dGhpcyxlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIG49dC5kZXBzW2VdO3QubmV3RGVwSWRz
LmhhcyhuLmlkKXx8bi5yZW1vdmVTdWIodCl9dmFyIHI9dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9
dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9cix0aGlzLm5ld0RlcElkcy5jbGVhcigpLHI9
dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPXIsdGhpcy5uZXdE
ZXBzLmxlbmd0aD0wfSxWby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3Ro
aXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6THQodGhpcyl9LFZvLnByb3RvdHlwZS5y
dW49ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dmFyIHQ9dGhpcy5nZXQoKTtpZih0IT09dGhp
cy52YWx1ZXx8cyh0KXx8dGhpcy5kZWVwKXt2YXIgZT10aGlzLnZhbHVlO2lmKHRoaXMudmFsdWU9
dCx0aGlzLnVzZXIpdHJ5e3RoaXMuY2IuY2FsbCh0aGlzLnZtLHQsZSl9Y2F0Y2godCl7Uyh0LHRo
aXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2Ug
dGhpcy5jYi5jYWxsKHRoaXMudm0sdCxlKX19fSxWby5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rp
b24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sVm8ucHJvdG90eXBlLmRl
cGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXQu
ZGVwc1tlXS5kZXBlbmQoKX0sVm8ucHJvdG90eXBlLnRlYXJkb3duPWZ1bmN0aW9uKCl7dmFyIHQ9
dGhpcztpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8aCh0aGlzLnZt
Ll93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXQuZGVwc1tl
XS5yZW1vdmVTdWIodCk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgem89bmV3IHZvLEpvPXtlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6dyxzZXQ6d30sS289e2xhenk6ITB9LHFvPXtpbml0
OmZ1bmN0aW9uKHQsZSxuLHIpe2lmKCF0LmNvbXBvbmVudEluc3RhbmNlfHx0LmNvbXBvbmVudElu
c3RhbmNlLl9pc0Rlc3Ryb3llZCl7KHQuY29tcG9uZW50SW5zdGFuY2U9UXQodCxJbyxuLHIpKS4k
bW91bnQoZT90LmVsbTp2b2lkIDAsZSl9ZWxzZSBpZih0LmRhdGEua2VlcEFsaXZlKXt2YXIgaT10
O3FvLnByZXBhdGNoKGksaSl9fSxwcmVwYXRjaDpmdW5jdGlvbih0LGUpe3ZhciBuPWUuY29tcG9u
ZW50T3B0aW9ucztDdChlLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2Usbi5w
cm9wc0RhdGEsbi5saXN0ZW5lcnMsZSxuLmNoaWxkcmVuKX0saW5zZXJ0OmZ1bmN0aW9uKHQpe3Zh
ciBlPXQuY29udGV4dCxuPXQuY29tcG9uZW50SW5zdGFuY2U7bi5faXNNb3VudGVkfHwobi5faXNN
b3VudGVkPSEwLE90KG4sIm1vdW50ZWQiKSksdC5kYXRhLmtlZXBBbGl2ZSYmKGUuX2lzTW91bnRl
ZD9qdChuKTpBdChuLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb21wb25lbnRJ
bnN0YW5jZTtlLl9pc0Rlc3Ryb3llZHx8KHQuZGF0YS5rZWVwQWxpdmU/a3QoZSwhMCk6ZS4kZGVz
dHJveSgpKX19LFdvPU9iamVjdC5rZXlzKHFvKSxabz0xLEdvPTIsWG89MDshZnVuY3Rpb24odCl7
dC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLl91aWQ9WG8rKyxlLl9p
c1Z1ZT0hMCx0JiZ0Ll9pc0NvbXBvbmVudD95ZShlLHQpOmUuJG9wdGlvbnM9SyhnZShlLmNvbnN0
cnVjdG9yKSx0fHx7fSxlKSxlLl9yZW5kZXJQcm94eT1lLGUuX3NlbGY9ZSx3dChlKSxodChlKSxt
ZShlKSxPdChlLCJiZWZvcmVDcmVhdGUiKSxXdChlKSxSdChlKSxxdChlKSxPdChlLCJjcmVhdGVk
IiksZS4kb3B0aW9ucy5lbCYmZS4kbW91bnQoZS4kb3B0aW9ucy5lbCl9fSh3ZSksZnVuY3Rpb24o
dCl7dmFyIGU9e307ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YX07dmFyIG49e307
bi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LnByb3RvdHlwZSwiJGRhdGEiLGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlw
ZSwiJHByb3BzIixuKSx0LnByb3RvdHlwZS4kc2V0PVAsdC5wcm90b3R5cGUuJGRlbGV0ZT1SLHQu
cHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztpZihjKGUpKXJldHVy
biBLdChyLHQsZSxuKTtuPW58fHt9LG4udXNlcj0hMDt2YXIgaT1uZXcgVm8ocix0LGUsbik7cmV0
dXJuIG4uaW1tZWRpYXRlJiZlLmNhbGwocixpLnZhbHVlKSxmdW5jdGlvbigpe2kudGVhcmRvd24o
KX19fSh3ZSksZnVuY3Rpb24odCl7dmFyIGU9L15ob29rOi87dC5wcm90b3R5cGUuJG9uPWZ1bmN0
aW9uKHQsbil7dmFyIHI9dGhpcyxpPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89
MCxhPXQubGVuZ3RoO288YTtvKyspci4kb24odFtvXSxuKTtlbHNlKGkuX2V2ZW50c1t0XXx8KGku
X2V2ZW50c1t0XT1bXSkpLnB1c2gobiksZS50ZXN0KHQpJiYoaS5faGFzSG9va0V2ZW50PSEwKTty
ZXR1cm4gaX0sdC5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7ci4k
b2ZmKHQsbiksZS5hcHBseShyLGFyZ3VtZW50cyl9dmFyIHI9dGhpcztyZXR1cm4gbi5mbj1lLHIu
JG9uKHQsbikscn0sdC5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj10
aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiByLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShu
dWxsKSxyO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgaT0wLG89dC5sZW5ndGg7aTxvO2kr
KyluLiRvZmYodFtpXSxlKTtyZXR1cm4gcn12YXIgYT1yLl9ldmVudHNbdF07aWYoIWEpcmV0dXJu
IHI7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIuX2V2ZW50c1t0XT1udWxsLHI7Zm9y
KHZhciBzLGM9YS5sZW5ndGg7Yy0tOylpZigocz1hW2NdKT09PWV8fHMuZm49PT1lKXthLnNwbGlj
ZShjLDEpO2JyZWFrfXJldHVybiByfSx0LnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzLG49ZS5fZXZlbnRzW3RdO2lmKG4pe249bi5sZW5ndGg+MT9nKG4pOm47Zm9yKHZhciBy
PWcoYXJndW1lbnRzLDEpLGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspdHJ5e25baV0uYXBwbHkoZSxy
KX1jYXRjaChuKXtTKG4sZSwnZXZlbnQgaGFuZGxlciBmb3IgIicrdCsnIicpfX1yZXR1cm4gZX19
KHdlKSxmdW5jdGlvbih0KXt0LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG49
dGhpcztuLl9pc01vdW50ZWQmJk90KG4sImJlZm9yZVVwZGF0ZSIpO3ZhciByPW4uJGVsLGk9bi5f
dm5vZGUsbz1JbztJbz1uLG4uX3Zub2RlPXQsaT9uLiRlbD1uLl9fcGF0Y2hfXyhpLHQpOihuLiRl
bD1uLl9fcGF0Y2hfXyhuLiRlbCx0LGUsITEsbi4kb3B0aW9ucy5fcGFyZW50RWxtLG4uJG9wdGlv
bnMuX3JlZkVsbSksbi4kb3B0aW9ucy5fcGFyZW50RWxtPW4uJG9wdGlvbnMuX3JlZkVsbT1udWxs
KSxJbz1vLHImJihyLl9fdnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZu
b2RlJiZuLiRwYXJlbnQmJm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVudC4k
ZWw9bi4kZWwpfSx0LnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlz
O3QuX3dhdGNoZXImJnQuX3dhdGNoZXIudXBkYXRlKCl9LHQucHJvdG90eXBlLiRkZXN0cm95PWZ1
bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdC5faXNCZWluZ0Rlc3Ryb3llZCl7T3QodCwiYmVmb3Jl
RGVzdHJveSIpLHQuX2lzQmVpbmdEZXN0cm95ZWQ9ITA7dmFyIGU9dC4kcGFyZW50OyFlfHxlLl9p
c0JlaW5nRGVzdHJveWVkfHx0LiRvcHRpb25zLmFic3RyYWN0fHxoKGUuJGNoaWxkcmVuLHQpLHQu
X3dhdGNoZXImJnQuX3dhdGNoZXIudGVhcmRvd24oKTtmb3IodmFyIG49dC5fd2F0Y2hlcnMubGVu
Z3RoO24tLTspdC5fd2F0Y2hlcnNbbl0udGVhcmRvd24oKTt0Ll9kYXRhLl9fb2JfXyYmdC5fZGF0
YS5fX29iX18udm1Db3VudC0tLHQuX2lzRGVzdHJveWVkPSEwLHQuX19wYXRjaF9fKHQuX3Zub2Rl
LG51bGwpLE90KHQsImRlc3Ryb3llZCIpLHQuJG9mZigpLHQuJGVsJiYodC4kZWwuX192dWVfXz1u
dWxsKX19fSh3ZSksZnVuY3Rpb24odCl7dC5wcm90b3R5cGUuJG5leHRUaWNrPWZ1bmN0aW9uKHQp
e3JldHVybiBfbyh0LHRoaXMpfSx0LnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQ9
dGhpcyxlPXQuJG9wdGlvbnMsbj1lLnJlbmRlcixyPWUuc3RhdGljUmVuZGVyRm5zLGk9ZS5fcGFy
ZW50Vm5vZGU7aWYodC5faXNNb3VudGVkKWZvcih2YXIgbyBpbiB0LiRzbG90cyl0LiRzbG90c1tv
XT10dCh0LiRzbG90c1tvXSk7dC4kc2NvcGVkU2xvdHM9aSYmaS5kYXRhLnNjb3BlZFNsb3RzfHxZ
aSxyJiYhdC5fc3RhdGljVHJlZXMmJih0Ll9zdGF0aWNUcmVlcz1bXSksdC4kdm5vZGU9aTt2YXIg
YTt0cnl7YT1uLmNhbGwodC5fcmVuZGVyUHJveHksdC4kY3JlYXRlRWxlbWVudCl9Y2F0Y2goZSl7
UyhlLHQsInJlbmRlciBmdW5jdGlvbiIpLGE9dC5fdm5vZGV9cmV0dXJuIGEgaW5zdGFuY2VvZiBF
b3x8KGE9TG8oKSksYS5wYXJlbnQ9aSxhfSx0LnByb3RvdHlwZS5fbz1wZSx0LnByb3RvdHlwZS5f
bj1wLHQucHJvdG90eXBlLl9zPWYsdC5wcm90b3R5cGUuX2w9YWUsdC5wcm90b3R5cGUuX3Q9c2Us
dC5wcm90b3R5cGUuX3E9JCx0LnByb3RvdHlwZS5faT1DLHQucHJvdG90eXBlLl9tPWZlLHQucHJv
dG90eXBlLl9mPWNlLHQucHJvdG90eXBlLl9rPXVlLHQucHJvdG90eXBlLl9iPWxlLHQucHJvdG90
eXBlLl92PVksdC5wcm90b3R5cGUuX2U9TG8sdC5wcm90b3R5cGUuX3U9YnQsdC5wcm90b3R5cGUu
X2c9dmV9KHdlKTt2YXIgWW89W1N0cmluZyxSZWdFeHAsQXJyYXldLFFvPXtuYW1lOiJrZWVwLWFs
aXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTpZbyxleGNsdWRlOllvfSxjcmVhdGVkOmZ1
bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpfSxkZXN0cm95ZWQ6ZnVuY3Rp
b24oKXt2YXIgdD10aGlzO2Zvcih2YXIgZSBpbiB0LmNhY2hlKWplKHQuY2FjaGVbZV0pfSx3YXRj
aDp7aW5jbHVkZTpmdW5jdGlvbih0KXtFZSh0aGlzLmNhY2hlLHRoaXMuX3Zub2RlLGZ1bmN0aW9u
KGUpe3JldHVybiBUZSh0LGUpfSl9LGV4Y2x1ZGU6ZnVuY3Rpb24odCl7RWUodGhpcy5jYWNoZSx0
aGlzLl92bm9kZSxmdW5jdGlvbihlKXtyZXR1cm4hVGUodCxlKX0pfX0scmVuZGVyOmZ1bmN0aW9u
KCl7dmFyIHQ9ZHQodGhpcy4kc2xvdHMuZGVmYXVsdCksZT10JiZ0LmNvbXBvbmVudE9wdGlvbnM7
aWYoZSl7dmFyIG49U2UoZSk7aWYobiYmKHRoaXMuaW5jbHVkZSYmIVRlKHRoaXMuaW5jbHVkZSxu
KXx8dGhpcy5leGNsdWRlJiZUZSh0aGlzLmV4Y2x1ZGUsbikpKXJldHVybiB0O3ZhciByPW51bGw9
PXQua2V5P2UuQ3Rvci5jaWQrKGUudGFnPyI6OiIrZS50YWc6IiIpOnQua2V5O3RoaXMuY2FjaGVb
cl0/dC5jb21wb25lbnRJbnN0YW5jZT10aGlzLmNhY2hlW3JdLmNvbXBvbmVudEluc3RhbmNlOnRo
aXMuY2FjaGVbcl09dCx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fX0sdGE9e0tlZXBBbGl2
ZTpRb307IWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2UuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIFhpfSxP
YmplY3QuZGVmaW5lUHJvcGVydHkodCwiY29uZmlnIixlKSx0LnV0aWw9e3dhcm46dG8sZXh0ZW5k
Ol8sbWVyZ2VPcHRpb25zOkssZGVmaW5lUmVhY3RpdmU6SX0sdC5zZXQ9UCx0LmRlbGV0ZT1SLHQu
bmV4dFRpY2s9X28sdC5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksWmkuZm9yRWFjaChmdW5j
dGlvbihlKXt0Lm9wdGlvbnNbZSsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSx0Lm9wdGlvbnMu
X2Jhc2U9dCxfKHQub3B0aW9ucy5jb21wb25lbnRzLHRhKSwkZSh0KSxDZSh0KSx4ZSh0KSxPZSh0
KX0od2UpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3ZS5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dl
dDptb30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3ZS5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0
fX0pLHdlLnZlcnNpb249IjIuNC4yIjt2YXIgZWEsbmEscmEsaWEsb2EsYWEsc2EsY2EsdWEsbGE9
ZCgic3R5bGUsY2xhc3MiKSxmYT1kKCJpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0IikscGE9
ZnVuY3Rpb24odCxlLG4pe3JldHVybiJ2YWx1ZSI9PT1uJiZmYSh0KSYmImJ1dHRvbiIhPT1lfHwi
c2VsZWN0ZWQiPT09biYmIm9wdGlvbiI9PT10fHwiY2hlY2tlZCI9PT1uJiYiaW5wdXQiPT09dHx8
Im11dGVkIj09PW4mJiJ2aWRlbyI9PT10fSxkYT1kKCJjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxl
LHNwZWxsY2hlY2siKSxoYT1kKCJhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9w
bGF5LGNoZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLGRlZmF1bHQsZGVmYXVsdGNoZWNr
ZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCxlbmFibGVkLGZv
cm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxs
b29wLG11bHRpcGxlLG11dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93
cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHkscmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNl
YW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSx0cnVlc3BlZWQsdHlwZW11c3RtYXRj
aCx2aXNpYmxlIiksdmE9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLG1hPWZ1bmN0aW9u
KHQpe3JldHVybiI6Ij09PXQuY2hhckF0KDUpJiYieGxpbmsiPT09dC5zbGljZSgwLDUpfSx5YT1m
dW5jdGlvbih0KXtyZXR1cm4gbWEodCk/dC5zbGljZSg2LHQubGVuZ3RoKToiIn0sZ2E9ZnVuY3Rp
b24odCl7cmV0dXJuIG51bGw9PXR8fCExPT09dH0sX2E9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwifSxiYT1k
KCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGlj
bGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rp
b24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4s
b2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxr
YmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3Vw
LHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxw
YXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNv
bGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNl
dCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHBy
b2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1h
cnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9v
dCIpLHdhPWQoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVs
bGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxt
YXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJl
Y3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksJGE9ZnVu
Y3Rpb24odCl7cmV0dXJuInByZSI9PT10fSxDYT1mdW5jdGlvbih0KXtyZXR1cm4gYmEodCl8fHdh
KHQpfSx4YT1PYmplY3QuY3JlYXRlKG51bGwpLEFhPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1l
bnQ6SGUsY3JlYXRlRWxlbWVudE5TOlZlLGNyZWF0ZVRleHROb2RlOnplLGNyZWF0ZUNvbW1lbnQ6
SmUsaW5zZXJ0QmVmb3JlOktlLHJlbW92ZUNoaWxkOnFlLGFwcGVuZENoaWxkOldlLHBhcmVudE5v
ZGU6WmUsbmV4dFNpYmxpbmc6R2UsdGFnTmFtZTpYZSxzZXRUZXh0Q29udGVudDpZZSxzZXRBdHRy
aWJ1dGU6UWV9KSxrYT17Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dG4oZSl9LHVwZGF0ZTpmdW5jdGlv
bih0LGUpe3QuZGF0YS5yZWYhPT1lLmRhdGEucmVmJiYodG4odCwhMCksdG4oZSkpfSxkZXN0cm95
OmZ1bmN0aW9uKHQpe3RuKHQsITApfX0sT2E9bmV3IEVvKCIiLHt9LFtdKSxTYT1bImNyZWF0ZSIs
ImFjdGl2YXRlIiwidXBkYXRlIiwicmVtb3ZlIiwiZGVzdHJveSJdLFRhPXtjcmVhdGU6b24sdXBk
YXRlOm9uLGRlc3Ryb3k6ZnVuY3Rpb24odCl7b24odCxPYSl9fSxFYT1PYmplY3QuY3JlYXRlKG51
bGwpLGphPVtrYSxUYV0sTmE9e2NyZWF0ZTpsbix1cGRhdGU6bG59LExhPXtjcmVhdGU6cG4sdXBk
YXRlOnBufSxNYT0vW1x3KS4rXC1fJFxdXS8sSWE9Il9fciIsUGE9Il9fYyIsUmE9e2NyZWF0ZTpG
bix1cGRhdGU6Rm59LERhPXtjcmVhdGU6Qm4sdXBkYXRlOkJufSxGYT1tKGZ1bmN0aW9uKHQpe3Zh
ciBlPXt9LG49LzsoPyFbXihdKlwpKS9nLHI9LzooLispLztyZXR1cm4gdC5zcGxpdChuKS5mb3JF
YWNoKGZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBuPXQuc3BsaXQocik7bi5sZW5ndGg+MSYmKGVbblsw
XS50cmltKCldPW5bMV0udHJpbSgpKX19KSxlfSksQmE9L14tLS8sVWE9L1xzKiFpbXBvcnRhbnQk
LyxIYT1mdW5jdGlvbih0LGUsbil7aWYoQmEudGVzdChlKSl0LnN0eWxlLnNldFByb3BlcnR5KGUs
bik7ZWxzZSBpZihVYS50ZXN0KG4pKXQuc3R5bGUuc2V0UHJvcGVydHkoZSxuLnJlcGxhY2UoVWEs
IiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPXphKGUpO2lmKEFycmF5LmlzQXJyYXkobikpZm9y
KHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXQuc3R5bGVbcl09bltpXTtlbHNlIHQuc3R5bGVb
cl09bn19LFZhPVsiV2Via2l0IiwiTW96IiwibXMiXSx6YT1tKGZ1bmN0aW9uKHQpe2lmKHVhPXVh
fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiZmlsdGVyIiE9PSh0PUhpKHQp
KSYmdCBpbiB1YSlyZXR1cm4gdDtmb3IodmFyIGU9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0
LnNsaWNlKDEpLG49MDtuPFZhLmxlbmd0aDtuKyspe3ZhciByPVZhW25dK2U7aWYociBpbiB1YSly
ZXR1cm4gcn19KSxKYT17Y3JlYXRlOnFuLHVwZGF0ZTpxbn0sS2E9bShmdW5jdGlvbih0KXtyZXR1
cm57ZW50ZXJDbGFzczp0KyItZW50ZXIiLGVudGVyVG9DbGFzczp0KyItZW50ZXItdG8iLGVudGVy
QWN0aXZlQ2xhc3M6dCsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczp0KyItbGVhdmUiLGxlYXZl
VG9DbGFzczp0KyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6dCsiLWxlYXZlLWFjdGl2ZSJ9
fSkscWE9bm8mJiFvbyxXYT0idHJhbnNpdGlvbiIsWmE9ImFuaW1hdGlvbiIsR2E9InRyYW5zaXRp
b24iLFhhPSJ0cmFuc2l0aW9uZW5kIixZYT0iYW5pbWF0aW9uIixRYT0iYW5pbWF0aW9uZW5kIjtx
YSYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndl
YmtpdHRyYW5zaXRpb25lbmQmJihHYT0iV2Via2l0VHJhbnNpdGlvbiIsWGE9IndlYmtpdFRyYW5z
aXRpb25FbmQiKSx2b2lkIDA9PT13aW5kb3cub25hbmltYXRpb25lbmQmJnZvaWQgMCE9PXdpbmRv
dy5vbndlYmtpdGFuaW1hdGlvbmVuZCYmKFlhPSJXZWJraXRBbmltYXRpb24iLFFhPSJ3ZWJraXRB
bmltYXRpb25FbmQiKSk7dmFyIHRzPW5vJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dp
bmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQsZXM9L1xi
KHRyYW5zZm9ybXxhbGwpKCx8JCkvLG5zPW5vP3tjcmVhdGU6Y3IsYWN0aXZhdGU6Y3IscmVtb3Zl
OmZ1bmN0aW9uKHQsZSl7ITAhPT10LmRhdGEuc2hvdz9vcih0LGUpOmUoKX19Ont9LHJzPVtOYSxM
YSxSYSxEYSxKYSxuc10saXM9cnMuY29uY2F0KGphKSxvcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl
KHQpe3JldHVybiBuZXcgRW8oRS50YWdOYW1lKHQpLnRvTG93ZXJDYXNlKCkse30sW10sdm9pZCAw
LHQpfWZ1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmcyh0KX1y
ZXR1cm4gbi5saXN0ZW5lcnM9ZSxufWZ1bmN0aW9uIHModCl7dmFyIGU9RS5wYXJlbnROb2RlKHQp
O3IoZSkmJkUucmVtb3ZlQ2hpbGQoZSx0KX1mdW5jdGlvbiBjKHQsZSxuLG8sYSl7aWYodC5pc1Jv
b3RJbnNlcnQ9IWEsIXUodCxlLG4sbykpe3ZhciBzPXQuZGF0YSxjPXQuY2hpbGRyZW4sbD10LnRh
ZztyKGwpPyh0LmVsbT10Lm5zP0UuY3JlYXRlRWxlbWVudE5TKHQubnMsbCk6RS5jcmVhdGVFbGVt
ZW50KGwsdCkseSh0KSxoKHQsYyxlKSxyKHMpJiZtKHQsZSkscChuLHQuZWxtLG8pKTppKHQuaXND
b21tZW50KT8odC5lbG09RS5jcmVhdGVDb21tZW50KHQudGV4dCkscChuLHQuZWxtLG8pKToodC5l
bG09RS5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpLHAobix0LmVsbSxvKSl9fWZ1bmN0aW9uIHUodCxl
LG4sbyl7dmFyIGE9dC5kYXRhO2lmKHIoYSkpe3ZhciBzPXIodC5jb21wb25lbnRJbnN0YW5jZSkm
JmEua2VlcEFsaXZlO2lmKHIoYT1hLmhvb2spJiZyKGE9YS5pbml0KSYmYSh0LCExLG4sbykscih0
LmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gbCh0LGUpLGkocykmJmYodCxlLG4sbyksITB9fWZ1
bmN0aW9uIGwodCxlKXtyKHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKGUucHVzaC5hcHBseShlLHQu
ZGF0YS5wZW5kaW5nSW5zZXJ0KSx0LmRhdGEucGVuZGluZ0luc2VydD1udWxsKSx0LmVsbT10LmNv
bXBvbmVudEluc3RhbmNlLiRlbCx2KHQpPyhtKHQsZSkseSh0KSk6KHRuKHQpLGUucHVzaCh0KSl9
ZnVuY3Rpb24gZih0LGUsbixpKXtmb3IodmFyIG8sYT10O2EuY29tcG9uZW50SW5zdGFuY2U7KWlm
KGE9YS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUscihvPWEuZGF0YSkmJnIobz1vLnRyYW5zaXRp
b24pKXtmb3Iobz0wO288Uy5hY3RpdmF0ZS5sZW5ndGg7KytvKVMuYWN0aXZhdGVbb10oT2EsYSk7
ZS5wdXNoKGEpO2JyZWFrfXAobix0LmVsbSxpKX1mdW5jdGlvbiBwKHQsZSxuKXtyKHQpJiYocihu
KT9uLnBhcmVudE5vZGU9PT10JiZFLmluc2VydEJlZm9yZSh0LGUsbik6RS5hcHBlbmRDaGlsZCh0
LGUpKX1mdW5jdGlvbiBoKHQsZSxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcj0wO3I8
ZS5sZW5ndGg7KytyKWMoZVtyXSxuLHQuZWxtLG51bGwsITApO2Vsc2UgYSh0LnRleHQpJiZFLmFw
cGVuZENoaWxkKHQuZWxtLEUuY3JlYXRlVGV4dE5vZGUodC50ZXh0KSl9ZnVuY3Rpb24gdih0KXtm
b3IoO3QuY29tcG9uZW50SW5zdGFuY2U7KXQ9dC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7cmV0
dXJuIHIodC50YWcpfWZ1bmN0aW9uIG0odCxlKXtmb3IodmFyIG49MDtuPFMuY3JlYXRlLmxlbmd0
aDsrK24pUy5jcmVhdGVbbl0oT2EsdCk7az10LmRhdGEuaG9vayxyKGspJiYocihrLmNyZWF0ZSkm
JmsuY3JlYXRlKE9hLHQpLHIoay5pbnNlcnQpJiZlLnB1c2godCkpfWZ1bmN0aW9uIHkodCl7Zm9y
KHZhciBlLG49dDtuOylyKGU9bi5jb250ZXh0KSYmcihlPWUuJG9wdGlvbnMuX3Njb3BlSWQpJiZF
LnNldEF0dHJpYnV0ZSh0LmVsbSxlLCIiKSxuPW4ucGFyZW50O3IoZT1JbykmJmUhPT10LmNvbnRl
eHQmJnIoZT1lLiRvcHRpb25zLl9zY29wZUlkKSYmRS5zZXRBdHRyaWJ1dGUodC5lbG0sZSwiIil9
ZnVuY3Rpb24gZyh0LGUsbixyLGksbyl7Zm9yKDtyPD1pOysrciljKG5bcl0sbyx0LGUpfWZ1bmN0
aW9uIF8odCl7dmFyIGUsbixpPXQuZGF0YTtpZihyKGkpKWZvcihyKGU9aS5ob29rKSYmcihlPWUu
ZGVzdHJveSkmJmUodCksZT0wO2U8Uy5kZXN0cm95Lmxlbmd0aDsrK2UpUy5kZXN0cm95W2VdKHQp
O2lmKHIoZT10LmNoaWxkcmVuKSlmb3Iobj0wO248dC5jaGlsZHJlbi5sZW5ndGg7KytuKV8odC5j
aGlsZHJlbltuXSl9ZnVuY3Rpb24gYih0LGUsbixpKXtmb3IoO248PWk7KytuKXt2YXIgbz1lW25d
O3IobykmJihyKG8udGFnKT8odyhvKSxfKG8pKTpzKG8uZWxtKSl9fWZ1bmN0aW9uIHcodCxlKXtp
ZihyKGUpfHxyKHQuZGF0YSkpe3ZhciBuLGk9Uy5yZW1vdmUubGVuZ3RoKzE7Zm9yKHIoZSk/ZS5s
aXN0ZW5lcnMrPWk6ZT1vKHQuZWxtLGkpLHIobj10LmNvbXBvbmVudEluc3RhbmNlKSYmcihuPW4u
X3Zub2RlKSYmcihuLmRhdGEpJiZ3KG4sZSksbj0wO248Uy5yZW1vdmUubGVuZ3RoOysrbilTLnJl
bW92ZVtuXSh0LGUpO3Iobj10LmRhdGEuaG9vaykmJnIobj1uLnJlbW92ZSk/bih0LGUpOmUoKX1l
bHNlIHModC5lbG0pfWZ1bmN0aW9uICQodCxlLGksbyxhKXtmb3IodmFyIHMsdSxsLGYscD0wLGQ9
MCxoPWUubGVuZ3RoLTEsdj1lWzBdLG09ZVtoXSx5PWkubGVuZ3RoLTEsXz1pWzBdLHc9aVt5XSwk
PSFhO3A8PWgmJmQ8PXk7KW4odik/dj1lWysrcF06bihtKT9tPWVbLS1oXTplbih2LF8pPyhDKHYs
XyxvKSx2PWVbKytwXSxfPWlbKytkXSk6ZW4obSx3KT8oQyhtLHcsbyksbT1lWy0taF0sdz1pWy0t
eV0pOmVuKHYsdyk/KEModix3LG8pLCQmJkUuaW5zZXJ0QmVmb3JlKHQsdi5lbG0sRS5uZXh0U2li
bGluZyhtLmVsbSkpLHY9ZVsrK3BdLHc9aVstLXldKTplbihtLF8pPyhDKG0sXyxvKSwkJiZFLmlu
c2VydEJlZm9yZSh0LG0uZWxtLHYuZWxtKSxtPWVbLS1oXSxfPWlbKytkXSk6KG4ocykmJihzPXJu
KGUscCxoKSksdT1yKF8ua2V5KT9zW18ua2V5XTpudWxsLG4odSk/KGMoXyxvLHQsdi5lbG0pLF89
aVsrK2RdKToobD1lW3VdLGVuKGwsXyk/KEMobCxfLG8pLGVbdV09dm9pZCAwLCQmJkUuaW5zZXJ0
QmVmb3JlKHQsbC5lbG0sdi5lbG0pLF89aVsrK2RdKTooYyhfLG8sdCx2LmVsbSksXz1pWysrZF0p
KSk7cD5oPyhmPW4oaVt5KzFdKT9udWxsOmlbeSsxXS5lbG0sZyh0LGYsaSxkLHksbykpOmQ+eSYm
Yih0LGUscCxoKX1mdW5jdGlvbiBDKHQsZSxvLGEpe2lmKHQhPT1lKXt2YXIgcz1lLmVsbT10LmVs
bTtpZihpKHQuaXNBc3luY1BsYWNlaG9sZGVyKSlyZXR1cm4gdm9pZChyKGUuYXN5bmNGYWN0b3J5
LnJlc29sdmVkKT9BKHQuZWxtLGUsbyk6ZS5pc0FzeW5jUGxhY2Vob2xkZXI9ITApO2lmKGkoZS5p
c1N0YXRpYykmJmkodC5pc1N0YXRpYykmJmUua2V5PT09dC5rZXkmJihpKGUuaXNDbG9uZWQpfHxp
KGUuaXNPbmNlKSkpcmV0dXJuIHZvaWQoZS5jb21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVudElu
c3RhbmNlKTt2YXIgYyx1PWUuZGF0YTtyKHUpJiZyKGM9dS5ob29rKSYmcihjPWMucHJlcGF0Y2gp
JiZjKHQsZSk7dmFyIGw9dC5jaGlsZHJlbixmPWUuY2hpbGRyZW47aWYocih1KSYmdihlKSl7Zm9y
KGM9MDtjPFMudXBkYXRlLmxlbmd0aDsrK2MpUy51cGRhdGVbY10odCxlKTtyKGM9dS5ob29rKSYm
cihjPWMudXBkYXRlKSYmYyh0LGUpfW4oZS50ZXh0KT9yKGwpJiZyKGYpP2whPT1mJiYkKHMsbCxm
LG8sYSk6cihmKT8ocih0LnRleHQpJiZFLnNldFRleHRDb250ZW50KHMsIiIpLGcocyxudWxsLGYs
MCxmLmxlbmd0aC0xLG8pKTpyKGwpP2IocyxsLDAsbC5sZW5ndGgtMSk6cih0LnRleHQpJiZFLnNl
dFRleHRDb250ZW50KHMsIiIpOnQudGV4dCE9PWUudGV4dCYmRS5zZXRUZXh0Q29udGVudChzLGUu
dGV4dCkscih1KSYmcihjPXUuaG9vaykmJnIoYz1jLnBvc3RwYXRjaCkmJmModCxlKX19ZnVuY3Rp
b24geCh0LGUsbil7aWYoaShuKSYmcih0LnBhcmVudCkpdC5wYXJlbnQuZGF0YS5wZW5kaW5nSW5z
ZXJ0PWU7ZWxzZSBmb3IodmFyIG89MDtvPGUubGVuZ3RoOysrbyllW29dLmRhdGEuaG9vay5pbnNl
cnQoZVtvXSl9ZnVuY3Rpb24gQSh0LGUsbil7aWYoaShlLmlzQ29tbWVudCkmJnIoZS5hc3luY0Zh
Y3RvcnkpKXJldHVybiBlLmVsbT10LGUuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2UuZWxtPXQ7
dmFyIG89ZS50YWcsYT1lLmRhdGEscz1lLmNoaWxkcmVuO2lmKHIoYSkmJihyKGs9YS5ob29rKSYm
cihrPWsuaW5pdCkmJmsoZSwhMCkscihrPWUuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4gbChl
LG4pLCEwO2lmKHIobykpe2lmKHIocykpaWYodC5oYXNDaGlsZE5vZGVzKCkpe2Zvcih2YXIgYz0h
MCx1PXQuZmlyc3RDaGlsZCxmPTA7ZjxzLmxlbmd0aDtmKyspe2lmKCF1fHwhQSh1LHNbZl0sbikp
e2M9ITE7YnJlYWt9dT11Lm5leHRTaWJsaW5nfWlmKCFjfHx1KXJldHVybiExfWVsc2UgaChlLHMs
bik7aWYocihhKSlmb3IodmFyIHAgaW4gYSlpZighaihwKSl7bShlLG4pO2JyZWFrfX1lbHNlIHQu
ZGF0YSE9PWUudGV4dCYmKHQuZGF0YT1lLnRleHQpO3JldHVybiEwfXZhciBrLE8sUz17fSxUPXQu
bW9kdWxlcyxFPXQubm9kZU9wcztmb3Ioaz0wO2s8U2EubGVuZ3RoOysraylmb3IoU1tTYVtrXV09
W10sTz0wO088VC5sZW5ndGg7KytPKXIoVFtPXVtTYVtrXV0pJiZTW1NhW2tdXS5wdXNoKFRbT11b
U2Fba11dKTt2YXIgaj1kKCJhdHRycyxzdHlsZSxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHls
ZSxrZXkiKTtyZXR1cm4gZnVuY3Rpb24odCxvLGEscyx1LGwpe2lmKG4obykpcmV0dXJuIHZvaWQo
cih0KSYmXyh0KSk7dmFyIGY9ITEscD1bXTtpZihuKHQpKWY9ITAsYyhvLHAsdSxsKTtlbHNle3Zh
ciBkPXIodC5ub2RlVHlwZSk7aWYoIWQmJmVuKHQsbykpQyh0LG8scCxzKTtlbHNle2lmKGQpe2lm
KDE9PT10Lm5vZGVUeXBlJiZ0Lmhhc0F0dHJpYnV0ZShXaSkmJih0LnJlbW92ZUF0dHJpYnV0ZShX
aSksYT0hMCksaShhKSYmQSh0LG8scCkpcmV0dXJuIHgobyxwLCEwKSx0O3Q9ZSh0KX12YXIgaD10
LmVsbSxtPUUucGFyZW50Tm9kZShoKTtpZihjKG8scCxoLl9sZWF2ZUNiP251bGw6bSxFLm5leHRT
aWJsaW5nKGgpKSxyKG8ucGFyZW50KSl7Zm9yKHZhciB5PW8ucGFyZW50O3k7KXkuZWxtPW8uZWxt
LHk9eS5wYXJlbnQ7aWYodihvKSlmb3IodmFyIGc9MDtnPFMuY3JlYXRlLmxlbmd0aDsrK2cpUy5j
cmVhdGVbZ10oT2Esby5wYXJlbnQpfXIobSk/YihtLFt0XSwwLDApOnIodC50YWcpJiZfKHQpfX1y
ZXR1cm4geChvLHAsZiksby5lbG19fSh7bm9kZU9wczpBYSxtb2R1bGVzOmlzfSksYXM9ZCgidGV4
dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwiKTtvbyYmZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQ7dCYmdC52bW9kZWwmJmRyKHQsImlucHV0Iil9KTt2YXIgc3M9e2luc2Vy
dGVkOmZ1bmN0aW9uKHQsZSxuKXtpZigic2VsZWN0Ij09PW4udGFnKXt2YXIgcj1mdW5jdGlvbigp
e3VyKHQsZSxuLmNvbnRleHQpfTtyKCksKGlvfHxhbykmJnNldFRpbWVvdXQociwwKSx0Ll92T3B0
aW9ucz1bXS5tYXAuY2FsbCh0Lm9wdGlvbnMsbHIpfWVsc2UoInRleHRhcmVhIj09PW4udGFnfHxh
cyh0LnR5cGUpKSYmKHQuX3ZNb2RpZmllcnM9ZS5tb2RpZmllcnMsZS5tb2RpZmllcnMubGF6eXx8
KHQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixwciksc298fCh0LmFkZEV2ZW50TGlzdGVuZXIo
ImNvbXBvc2l0aW9uc3RhcnQiLGZyKSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5k
IixwcikpLG9vJiYodC52bW9kZWw9ITApKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24odCxl
LG4pe2lmKCJzZWxlY3QiPT09bi50YWcpe3VyKHQsZSxuLmNvbnRleHQpO3ZhciByPXQuX3ZPcHRp
b25zOyh0Ll92T3B0aW9ucz1bXS5tYXAuY2FsbCh0Lm9wdGlvbnMsbHIpKS5zb21lKGZ1bmN0aW9u
KHQsZSl7cmV0dXJuISQodCxyW2VdKX0pJiZkcih0LCJjaGFuZ2UiKX19fSxjcz17YmluZDpmdW5j
dGlvbih0LGUsbil7dmFyIHI9ZS52YWx1ZTtuPWhyKG4pO3ZhciBpPW4uZGF0YSYmbi5kYXRhLnRy
YW5zaXRpb24sbz10Ll9fdk9yaWdpbmFsRGlzcGxheT0ibm9uZSI9PT10LnN0eWxlLmRpc3BsYXk/
IiI6dC5zdHlsZS5kaXNwbGF5O3ImJmk/KG4uZGF0YS5zaG93PSEwLGlyKG4sZnVuY3Rpb24oKXt0
LnN0eWxlLmRpc3BsYXk9b30pKTp0LnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIn0sdXBkYXRlOmZ1
bmN0aW9uKHQsZSxuKXt2YXIgcj1lLnZhbHVlO3IhPT1lLm9sZFZhbHVlJiYobj1ocihuKSxuLmRh
dGEmJm4uZGF0YS50cmFuc2l0aW9uPyhuLmRhdGEuc2hvdz0hMCxyP2lyKG4sZnVuY3Rpb24oKXt0
LnN0eWxlLmRpc3BsYXk9dC5fX3ZPcmlnaW5hbERpc3BsYXl9KTpvcihuLGZ1bmN0aW9uKCl7dC5z
dHlsZS5kaXNwbGF5PSJub25lIn0pKTp0LnN0eWxlLmRpc3BsYXk9cj90Ll9fdk9yaWdpbmFsRGlz
cGxheToibm9uZSIpfSx1bmJpbmQ6ZnVuY3Rpb24odCxlLG4scixpKXtpfHwodC5zdHlsZS5kaXNw
bGF5PXQuX192T3JpZ2luYWxEaXNwbGF5KX19LHVzPXttb2RlbDpzcyxzaG93OmNzfSxscz17bmFt
ZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJp
bmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmlu
ZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZl
Q2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcs
YXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX0sZnM9
e25hbWU6InRyYW5zaXRpb24iLHByb3BzOmxzLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbih0
KXt2YXIgZT10aGlzLG49dGhpcy4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW47aWYobiYmKG49bi5m
aWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQudGFnfHxicih0KX0pLG4ubGVuZ3RoKSl7dmFyIHI9
dGhpcy5tb2RlLGk9blswXTtpZihncih0aGlzLiR2bm9kZSkpcmV0dXJuIGk7dmFyIG89dnIoaSk7
aWYoIW8pcmV0dXJuIGk7aWYodGhpcy5fbGVhdmluZylyZXR1cm4geXIodCxpKTt2YXIgcz0iX190
cmFuc2l0aW9uLSIrdGhpcy5fdWlkKyItIjtvLmtleT1udWxsPT1vLmtleT9vLmlzQ29tbWVudD9z
KyJjb21tZW50IjpzK28udGFnOmEoby5rZXkpPzA9PT1TdHJpbmcoby5rZXkpLmluZGV4T2Yocyk/
by5rZXk6cytvLmtleTpvLmtleTt2YXIgYz0oby5kYXRhfHwoby5kYXRhPXt9KSkudHJhbnNpdGlv
bj1tcih0aGlzKSx1PXRoaXMuX3Zub2RlLGw9dnIodSk7aWYoby5kYXRhLmRpcmVjdGl2ZXMmJm8u
ZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuInNob3ciPT09dC5uYW1lfSkm
JihvLmRhdGEuc2hvdz0hMCksbCYmbC5kYXRhJiYhX3IobyxsKSYmIWJyKGwpKXt2YXIgZj1sJiYo
bC5kYXRhLnRyYW5zaXRpb249Xyh7fSxjKSk7aWYoIm91dC1pbiI9PT1yKXJldHVybiB0aGlzLl9s
ZWF2aW5nPSEwLHJ0KGYsImFmdGVyTGVhdmUiLGZ1bmN0aW9uKCl7ZS5fbGVhdmluZz0hMSxlLiRm
b3JjZVVwZGF0ZSgpfSkseXIodCxpKTtpZigiaW4tb3V0Ij09PXIpe2lmKGJyKG8pKXJldHVybiB1
O3ZhciBwLGQ9ZnVuY3Rpb24oKXtwKCl9O3J0KGMsImFmdGVyRW50ZXIiLGQpLHJ0KGMsImVudGVy
Q2FuY2VsbGVkIixkKSxydChmLCJkZWxheUxlYXZlIixmdW5jdGlvbih0KXtwPXR9KX19cmV0dXJu
IGl9fX0scHM9Xyh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSxscyk7ZGVsZXRlIHBzLm1v
ZGU7dmFyIGRzPXtwcm9wczpwcyxyZW5kZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudGFn
fHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRo
aXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRzbG90cy5kZWZhdWx0fHxbXSxv
PXRoaXMuY2hpbGRyZW49W10sYT1tcih0aGlzKSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBjPWlb
c107aWYoYy50YWcpaWYobnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9f
dmxpc3QiKSlvLnB1c2goYyksbltjLmtleV09YywoYy5kYXRhfHwoYy5kYXRhPXt9KSkudHJhbnNp
dGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIgdT1bXSxsPVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7
dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCksbltwLmtleV0/dS5wdXNoKHApOmwucHVzaChwKX10aGlzLmtlcHQ9dChl
LG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIHQoZSxudWxsLG8pfSxiZWZvcmVVcGRhdGU6
ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0aGlzLmtlcHQsITEsITApLHRo
aXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucHJldkNo
aWxkcmVuLGU9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtpZih0Lmxl
bmd0aCYmdGhpcy5oYXNNb3ZlKHRbMF0uZWxtLGUpKXt0LmZvckVhY2god3IpLHQuZm9yRWFjaCgk
ciksdC5mb3JFYWNoKENyKTt2YXIgbj1kb2N1bWVudC5ib2R5O24ub2Zmc2V0SGVpZ2h0O3QuZm9y
RWFjaChmdW5jdGlvbih0KXtpZih0LmRhdGEubW92ZWQpe3ZhciBuPXQuZWxtLHI9bi5zdHlsZTtZ
bihuLGUpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9u
PSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihYYSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gdChyKXtyJiYhL3Ry
YW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKFhh
LHQpLG4uX21vdmVDYj1udWxsLFFuKG4sZSkpfSl9fSl9fSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0
aW9uKHQsZSl7aWYoIXFhKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hh
c01vdmU7dmFyIG49dC5jbG9uZU5vZGUoKTt0Ll90cmFuc2l0aW9uQ2xhc3NlcyYmdC5fdHJhbnNp
dGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbih0KXtabihuLHQpfSksV24obixlKSxuLnN0eWxl
LmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPWVyKG4pO3JldHVy
biB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19
LGhzPXtUcmFuc2l0aW9uOmZzLFRyYW5zaXRpb25Hcm91cDpkc307d2UuY29uZmlnLm11c3RVc2VQ
cm9wPXBhLHdlLmNvbmZpZy5pc1Jlc2VydmVkVGFnPUNhLHdlLmNvbmZpZy5pc1Jlc2VydmVkQXR0
cj1sYSx3ZS5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPUZlLHdlLmNvbmZpZy5pc1Vua25vd25FbGVt
ZW50PUJlLF8od2Uub3B0aW9ucy5kaXJlY3RpdmVzLHVzKSxfKHdlLm9wdGlvbnMuY29tcG9uZW50
cyxocyksd2UucHJvdG90eXBlLl9fcGF0Y2hfXz1ubz9vczp3LHdlLnByb3RvdHlwZS4kbW91bnQ9
ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10JiZubz9VZSh0KTp2b2lkIDAsJHQodGhpcyx0LGUpfSxz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WGkuZGV2dG9vbHMmJnlvJiZ5by5lbWl0KCJpbml0Iix3ZSl9
LDApO3ZhciB2cyxtcz0hIW5vJiZmdW5jdGlvbih0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpO3JldHVybiBuLmlubmVySFRNTD0nPGRpdiBhPSInK3QrJyIvPicsbi5pbm5l
ckhUTUwuaW5kZXhPZihlKT4wfSgiXG4iLCImIzEwOyIpLHlzPS9ce1x7KCg/Oi58XG4pKz8pXH1c
fS9nLGdzPS9bLS4qKz9eJHt9KCl8W1xdXC9cXF0vZyxfcz1tKGZ1bmN0aW9uKHQpe3ZhciBlPXRb
MF0ucmVwbGFjZShncywiXFwkJiIpLG49dFsxXS5yZXBsYWNlKGdzLCJcXCQmIik7cmV0dXJuIG5l
dyBSZWdFeHAoZSsiKCg/Oi58XFxuKSs/KSIrbiwiZyIpfSksYnM9e3N0YXRpY0tleXM6WyJzdGF0
aWNDbGFzcyJdLHRyYW5zZm9ybU5vZGU6QXIsZ2VuRGF0YTprcn0sd3M9e3N0YXRpY0tleXM6WyJz
dGF0aWNTdHlsZSJdLHRyYW5zZm9ybU5vZGU6T3IsZ2VuRGF0YTpTcn0sJHM9W2JzLHdzXSxDcz17
bW9kZWw6am4sdGV4dDpUcixodG1sOkVyfSx4cz1kKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZy
YW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRy
YWNrLHdiciIpLEFzPWQoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0
aGVhZCx0cixzb3VyY2UiKSxrcz1kKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1
b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0
LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2
LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9wdGdy
b3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9v
dCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLE9zPXtleHBlY3RIVE1MOiEwLG1vZHVsZXM6JHMs
ZGlyZWN0aXZlczpDcyxpc1ByZVRhZzokYSxpc1VuYXJ5VGFnOnhzLG11c3RVc2VQcm9wOnBhLGNh
bkJlTGVmdE9wZW5UYWc6QXMsaXNSZXNlcnZlZFRhZzpDYSxnZXRUYWdOYW1lc3BhY2U6RmUsc3Rh
dGljS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4g
dC5jb25jYXQoZS5zdGF0aWNLZXlzfHxbXSl9LFtdKS5qb2luKCIsIil9KCRzKX0sU3M9e2RlY29k
ZTpmdW5jdGlvbih0KXtyZXR1cm4gdnM9dnN8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
LHZzLmlubmVySFRNTD10LHZzLnRleHRDb250ZW50fX0sVHM9LyhbXlxzIic8PlwvPV0rKS8sRXM9
Lyg/Oj0pLyxqcz1bLyIoW14iXSopIisvLnNvdXJjZSwvJyhbXiddKiknKy8uc291cmNlLC8oW15c
cyInPTw+YF0rKS8uc291cmNlXSxOcz1uZXcgUmVnRXhwKCJeXFxzKiIrVHMuc291cmNlKyIoPzpc
XHMqKCIrRXMuc291cmNlKyIpXFxzKig/OiIranMuam9pbigifCIpKyIpKT8iKSxMcz0iW2EtekEt
Wl9dW1xcd1xcLVxcLl0qIixNcz0iKCg/OiIrTHMrIlxcOik/IitMcysiKSIsSXM9bmV3IFJlZ0V4
cCgiXjwiK01zKSxQcz0vXlxzKihcLz8pPi8sUnM9bmV3IFJlZ0V4cCgiXjxcXC8iK01zKyJbXj5d
Kj4iKSxEcz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxGcz0vXjwhLS0vLEJzPS9ePCFcWy8sVXM9ITE7
IngiLnJlcGxhY2UoL3goLik/L2csZnVuY3Rpb24odCxlKXtVcz0iIj09PWV9KTt2YXIgSHMsVnMs
enMsSnMsS3MscXMsV3MsWnMsR3MsWHMsWXM9ZCgic2NyaXB0LHN0eWxlLHRleHRhcmVhIiwhMCks
UXM9e30sdGM9eyImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiZhbXA7IjoiJiIs
IiYjMTA7IjoiXG4ifSxlYz0vJig/Omx0fGd0fHF1b3R8YW1wKTsvZyxuYz0vJig/Omx0fGd0fHF1
b3R8YW1wfCMxMCk7L2cscmM9ZCgicHJlLHRleHRhcmVhIiwhMCksaWM9ZnVuY3Rpb24odCxlKXty
ZXR1cm4gdCYmcmModCkmJiJcbiI9PT1lWzBdfSxvYz0vXkB8XnYtb246LyxhYz0vXnYtfF5AfF46
LyxzYz0vKC4qPylccysoPzppbnxvZilccysoLiopLyxjYz0vXCgoXHtbXn1dKlx9fFteLF0qKSwo
W14sXSopKD86LChbXixdKikpP1wpLyx1Yz0vOiguKikkLyxsYz0vXjp8XnYtYmluZDovLGZjPS9c
LlteLl0rL2cscGM9bShTcy5kZWNvZGUpLGRjPS9eeG1sbnM6TlNcZCsvLGhjPS9eTlNcZCs6Lyx2
Yz1tKHRpKSxtYz0vXlxzKihbXHckX10rfFwoW14pXSo/XCkpXHMqPT58XmZ1bmN0aW9uXHMqXCgv
LHljPS9eXHMqW0EtWmEtel8kXVtcdyRdKig/OlwuW0EtWmEtel8kXVtcdyRdKnxcWycuKj8nXXxc
WyIuKj8iXXxcW1xkK118XFtbQS1aYS16XyRdW1x3JF0qXSkqXHMqJC8sZ2M9e2VzYzoyNyx0YWI6
OSxlbnRlcjoxMyxzcGFjZTozMix1cDozOCxsZWZ0OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVsZXRl
Ols4LDQ2XX0sX2M9ZnVuY3Rpb24odCl7cmV0dXJuImlmKCIrdCsiKXJldHVybiBudWxsOyJ9LGJj
PXtzdG9wOiIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IixwcmV2ZW50OiIkZXZlbnQucHJldmVu
dERlZmF1bHQoKTsiLHNlbGY6X2MoIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFy
Z2V0IiksY3RybDpfYygiISRldmVudC5jdHJsS2V5Iiksc2hpZnQ6X2MoIiEkZXZlbnQuc2hpZnRL
ZXkiKSxhbHQ6X2MoIiEkZXZlbnQuYWx0S2V5IiksbWV0YTpfYygiISRldmVudC5tZXRhS2V5Iiks
bGVmdDpfYygiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDAiKSxtaWRk
bGU6X2MoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxIikscmlnaHQ6
X2MoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyIil9LHdjPXtvbjp1
aSxiaW5kOmxpLGNsb2FrOnd9LCRjPWZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz10LHRoaXMud2Fy
bj10Lndhcm58fHZuLHRoaXMudHJhbnNmb3Jtcz1tbih0Lm1vZHVsZXMsInRyYW5zZm9ybUNvZGUi
KSx0aGlzLmRhdGFHZW5GbnM9bW4odC5tb2R1bGVzLCJnZW5EYXRhIiksdGhpcy5kaXJlY3RpdmVz
PV8oXyh7fSx3YyksdC5kaXJlY3RpdmVzKTt2YXIgZT10LmlzUmVzZXJ2ZWRUYWd8fEtpO3RoaXMu
bWF5YmVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIWUodC50YWcpfSx0aGlzLm9uY2VJZD0w
LHRoaXMuc3RhdGljUmVuZGVyRm5zPVtdfSxDYz0obmV3IFJlZ0V4cCgiXFxiIisiZG8saWYsZm9y
LGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxj
b25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4s
c3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9u
LGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpLG5ldyBSZWdFeHAo
IlxcYiIrImRlbGV0ZSx0eXBlb2Ysdm9pZCIuc3BsaXQoIiwiKS5qb2luKCJcXHMqXFwoW15cXCld
KlxcKXxcXGIiKSsiXFxzKlxcKFteXFwpXSpcXCkiKSxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gbihuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZSksbz1bXSxhPVtdO2lm
KGkud2Fybj1mdW5jdGlvbih0LGUpeyhlP2E6bykucHVzaCh0KX0scil7ci5tb2R1bGVzJiYoaS5t
b2R1bGVzPShlLm1vZHVsZXN8fFtdKS5jb25jYXQoci5tb2R1bGVzKSksci5kaXJlY3RpdmVzJiYo
aS5kaXJlY3RpdmVzPV8oT2JqZWN0LmNyZWF0ZShlLmRpcmVjdGl2ZXMpLHIuZGlyZWN0aXZlcykp
O2Zvcih2YXIgcyBpbiByKSJtb2R1bGVzIiE9PXMmJiJkaXJlY3RpdmVzIiE9PXMmJihpW3NdPXJb
c10pfXZhciBjPXQobixpKTtyZXR1cm4gYy5lcnJvcnM9byxjLnRpcHM9YSxjfXJldHVybntjb21w
aWxlOm4sY29tcGlsZVRvRnVuY3Rpb25zOklpKG4pfX19KGZ1bmN0aW9uKHQsZSl7dmFyIG49THIo
dC50cmltKCksZSk7UXIobixlKTt2YXIgcj1maShuLGUpO3JldHVybnthc3Q6bixyZW5kZXI6ci5y
ZW5kZXIsc3RhdGljUmVuZGVyRm5zOnIuc3RhdGljUmVuZGVyRm5zfX0pKSx4Yz1DYyhPcyksQWM9
eGMuY29tcGlsZVRvRnVuY3Rpb25zLGtjPW0oZnVuY3Rpb24odCl7dmFyIGU9VWUodCk7cmV0dXJu
IGUmJmUuaW5uZXJIVE1MfSksT2M9d2UucHJvdG90eXBlLiRtb3VudDt3ZS5wcm90b3R5cGUuJG1v
dW50PWZ1bmN0aW9uKHQsZSl7aWYoKHQ9dCYmVWUodCkpPT09ZG9jdW1lbnQuYm9keXx8dD09PWRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25zO2lm
KCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKCJzdHJpbmciPT10eXBlb2Ygciki
IyI9PT1yLmNoYXJBdCgwKSYmKHI9a2MocikpO2Vsc2V7aWYoIXIubm9kZVR5cGUpcmV0dXJuIHRo
aXM7cj1yLmlubmVySFRNTH1lbHNlIHQmJihyPVBpKHQpKTtpZihyKXt2YXIgaT1BYyhyLHtzaG91
bGREZWNvZGVOZXdsaW5lczptcyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVycyxjb21tZW50czpuLmNv
bW1lbnRzfSx0aGlzKSxvPWkucmVuZGVyLGE9aS5zdGF0aWNSZW5kZXJGbnM7bi5yZW5kZXI9byxu
LnN0YXRpY1JlbmRlckZucz1hfX1yZXR1cm4gT2MuY2FsbCh0aGlzLHQsZSl9LHdlLmNvbXBpbGU9
QWMsZS5kZWZhdWx0PXdlfS5jYWxsKGUsbigiRHVSMiIpKX0sRHVSMjpmdW5jdGlvbih0LGUpe3Zh
ciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxGdW5jdGlvbigicmV0dXJu
IHRoaXMiKSgpfHwoMCxldmFsKSgidGhpcyIpfWNhdGNoKHQpeyJvYmplY3QiPT10eXBlb2Ygd2lu
ZG93JiYobj13aW5kb3cpfXQuZXhwb3J0cz1ufSwiRlorZiI6ZnVuY3Rpb24odCxlKXtmdW5jdGlv
biBuKHQsZSl7dmFyIG49dFsxXXx8IiIsaT10WzNdO2lmKCFpKXJldHVybiBuO2lmKGUmJiJmdW5j
dGlvbiI9PXR5cGVvZiBidG9hKXt2YXIgbz1yKGkpO3JldHVybltuXS5jb25jYXQoaS5zb3VyY2Vz
Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4iLyojIHNvdXJjZVVSTD0iK2kuc291cmNlUm9vdCt0KyIg
Ki8ifSkpLmNvbmNhdChbb10pLmpvaW4oIlxuIil9cmV0dXJuW25dLmpvaW4oIlxuIil9ZnVuY3Rp
b24gcih0KXtyZXR1cm4iLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29u
O2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCIrYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQo
SlNPTi5zdHJpbmdpZnkodCkpKSkrIiAqLyJ9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVtd
O3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKGUp
e3ZhciByPW4oZSx0KTtyZXR1cm4gZVsyXT8iQG1lZGlhICIrZVsyXSsieyIrcisifSI6cn0pLmpv
aW4oIiIpfSxlLmk9ZnVuY3Rpb24odCxuKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PVtbbnVsbCx0
LCIiXV0pO2Zvcih2YXIgcj17fSxpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBvPXRoaXNbaV1b
MF07Im51bWJlciI9PXR5cGVvZiBvJiYocltvXT0hMCl9Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7
dmFyIGE9dFtpXTsibnVtYmVyIj09dHlwZW9mIGFbMF0mJnJbYVswXV18fChuJiYhYVsyXT9hWzJd
PW46biYmKGFbMl09IigiK2FbMl0rIikgYW5kICgiK24rIikiKSxlLnB1c2goYSkpfX0sZX19LCJW
VS84IjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGE9
dD10fHx7fSxzPXR5cGVvZiB0LmRlZmF1bHQ7Im9iamVjdCIhPT1zJiYiZnVuY3Rpb24iIT09c3x8
KG89dCxhPXQuZGVmYXVsdCk7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIGE/YS5vcHRpb25zOmE7
ZSYmKGMucmVuZGVyPWUucmVuZGVyLGMuc3RhdGljUmVuZGVyRm5zPWUuc3RhdGljUmVuZGVyRm5z
KSxyJiYoYy5fc2NvcGVJZD1yKTt2YXIgdTtpZihpPyh1PWZ1bmN0aW9uKHQpe3Q9dHx8dGhpcy4k
dm5vZGUmJnRoaXMuJHZub2RlLnNzckNvbnRleHR8fHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC4k
dm5vZGUmJnRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0LHR8fCJ1bmRlZmluZWQiPT10eXBl
b2YgX19WVUVfU1NSX0NPTlRFWFRfX3x8KHQ9X19WVUVfU1NSX0NPTlRFWFRfXyksbiYmbi5jYWxs
KHRoaXMsdCksdCYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMmJnQuX3JlZ2lzdGVyZWRDb21wb25l
bnRzLmFkZChpKX0sYy5fc3NyUmVnaXN0ZXI9dSk6biYmKHU9biksdSl7dmFyIGw9Yy5mdW5jdGlv
bmFsLGY9bD9jLnJlbmRlcjpjLmJlZm9yZUNyZWF0ZTtsP2MucmVuZGVyPWZ1bmN0aW9uKHQsZSl7
cmV0dXJuIHUuY2FsbChlKSxmKHQsZSl9OmMuYmVmb3JlQ3JlYXRlPWY/W10uY29uY2F0KGYsdSk6
W3VdfXJldHVybntlc01vZHVsZTpvLGV4cG9ydHM6YSxvcHRpb25zOmN9fX0scmpqMDpmdW5jdGlv
bih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49
dFtlXSxyPWxbbi5pZF07aWYocil7ci5yZWZzKys7Zm9yKHZhciBpPTA7aTxyLnBhcnRzLmxlbmd0
aDtpKyspci5wYXJ0c1tpXShuLnBhcnRzW2ldKTtmb3IoO2k8bi5wYXJ0cy5sZW5ndGg7aSsrKXIu
cGFydHMucHVzaChvKG4ucGFydHNbaV0pKTtyLnBhcnRzLmxlbmd0aD5uLnBhcnRzLmxlbmd0aCYm
KHIucGFydHMubGVuZ3RoPW4ucGFydHMubGVuZ3RoKX1lbHNle2Zvcih2YXIgYT1bXSxpPTA7aTxu
LnBhcnRzLmxlbmd0aDtpKyspYS5wdXNoKG8obi5wYXJ0c1tpXSkpO2xbbi5pZF09e2lkOm4uaWQs
cmVmczoxLHBhcnRzOmF9fX19ZnVuY3Rpb24gaSgpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInN0eWxlIik7cmV0dXJuIHQudHlwZT0idGV4dC9jc3MiLGYuYXBwZW5kQ2hpbGQodCksdH1m
dW5jdGlvbiBvKHQpe3ZhciBlLG4scj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRh
LXZ1ZS1zc3ItaWR+PSInK3QuaWQrJyJdJyk7aWYocil7aWYoaClyZXR1cm4gdjtyLnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQocil9aWYobSl7dmFyIG89ZCsrO3I9cHx8KHA9aSgpKSxlPWEuYmluZChu
dWxsLHIsbywhMSksbj1hLmJpbmQobnVsbCxyLG8sITApfWVsc2Ugcj1pKCksZT1zLmJpbmQobnVs
bCxyKSxuPWZ1bmN0aW9uKCl7ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpfTtyZXR1cm4gZSh0
KSxmdW5jdGlvbihyKXtpZihyKXtpZihyLmNzcz09PXQuY3NzJiZyLm1lZGlhPT09dC5tZWRpYSYm
ci5zb3VyY2VNYXA9PT10LnNvdXJjZU1hcClyZXR1cm47ZSh0PXIpfWVsc2UgbigpfX1mdW5jdGlv
biBhKHQsZSxuLHIpe3ZhciBpPW4/IiI6ci5jc3M7aWYodC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVl
dC5jc3NUZXh0PXkoZSxpKTtlbHNle3ZhciBvPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkpLGE9
dC5jaGlsZE5vZGVzO2FbZV0mJnQucmVtb3ZlQ2hpbGQoYVtlXSksYS5sZW5ndGg/dC5pbnNlcnRC
ZWZvcmUobyxhW2VdKTp0LmFwcGVuZENoaWxkKG8pfX1mdW5jdGlvbiBzKHQsZSl7dmFyIG49ZS5j
c3Mscj1lLm1lZGlhLGk9ZS5zb3VyY2VNYXA7aWYociYmdC5zZXRBdHRyaWJ1dGUoIm1lZGlhIixy
KSxpJiYobis9IlxuLyojIHNvdXJjZVVSTD0iK2kuc291cmNlc1swXSsiICovIixuKz0iXG4vKiMg
c291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCIrYnRvYSh1bmVz
Y2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoaSkpKSkrIiAqLyIpLHQuc3R5
bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2V7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQu
cmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG4pKX19dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudDtpZigidW5kZWZp
bmVkIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmIWMpdGhyb3cgbmV3IEVycm9yKCJ2dWUtc3R5bGUt
bG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQuIFVzZSB7
IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBhIHNl
cnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuIik7dmFyIHU9bigidFRWayIpLGw9e30sZj1jJiYo
ZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSks
cD1udWxsLGQ9MCxoPSExLHY9ZnVuY3Rpb24oKXt9LG09InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZp
Z2F0b3ImJi9tc2llIFs2LTldXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2Fz
ZSgpKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2g9bjt2YXIgaT11KHQsZSk7cmV0dXJuIHIo
aSksZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLG89MDtvPGkubGVuZ3RoO28rKyl7dmFyIGE9aVtv
XSxzPWxbYS5pZF07cy5yZWZzLS0sbi5wdXNoKHMpfWU/KGk9dSh0LGUpLHIoaSkpOmk9W107Zm9y
KHZhciBvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBzPW5bb107aWYoMD09PXMucmVmcyl7Zm9yKHZh
ciBjPTA7YzxzLnBhcnRzLmxlbmd0aDtjKyspcy5wYXJ0c1tjXSgpO2RlbGV0ZSBsW3MuaWRdfX19
fTt2YXIgeT1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0
W2VdPW4sdC5maWx0ZXIoQm9vbGVhbikuam9pbigiXG4iKX19KCl9LHJtbmg6ZnVuY3Rpb24odCxl
LG4peyFmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIiI9PT11Lmhhc2h8fCIjIj09PXUu
aGFzaH1mdW5jdGlvbiBuKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0xKWlmKCExPT09
ZSh0W25dLG4sdCkpcmV0dXJufWZ1bmN0aW9uIHIodCl7Zm9yKHZhciBlPVtdLG49MCxyPXQubGVu
Z3RoO248cjtuKyspZT1lLmNvbmNhdCh0W25dKTtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSxuKXtp
ZighdC5sZW5ndGgpcmV0dXJuIG4oKTt2YXIgcj0wOyFmdW5jdGlvbiBpKCl7ZSh0W3JdLGZ1bmN0
aW9uKGUpe2V8fCExPT09ZT8obihlKSxuPWZ1bmN0aW9uKCl7fSk6KHIrPTEscj09PXQubGVuZ3Ro
P24oKTppKCkpfSl9KCl9ZnVuY3Rpb24gbyh0LGUsbil7bj10O2Zvcih2YXIgciBpbiBlKWlmKGUu
aGFzT3duUHJvcGVydHkocikmJihuPWVbcl0odCkpIT09dClicmVhaztyZXR1cm4gbj09PXQ/Iihb
Ll9hLXpBLVowLTktJSgpXSspIjpufWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG4scj0wLGk9IiI7
bj10LnN1YnN0cihyKS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlteXHdcZFwtICVAJl0qLyk7KXI9
bi5pbmRleCtuWzBdLmxlbmd0aCxuWzBdPW5bMF0ucmVwbGFjZSgvXlwqLywiKFtfLigpIVxcICVA
JmEtekEtWjAtOS1dKykiKSxpKz10LnN1YnN0cigwLG4uaW5kZXgpK25bMF07dD1pKz10LnN1YnN0
cihyKTt2YXIgYSxzLGM9dC5tYXRjaCgvOihbXlwvXSspL2dpKTtpZihjKXtzPWMubGVuZ3RoO2Zv
cih2YXIgdT0wO3U8czt1KyspYT1jW3VdLHQ9Ijo6Ij09PWEuc2xpY2UoMCwyKT9hLnNsaWNlKDEp
OnQucmVwbGFjZShhLG8oYSxlKSl9cmV0dXJuIHR9ZnVuY3Rpb24gYyh0LGUsbixyKXt2YXIgaSxv
PTAsYT0wLHM9MCxuPShufHwiKCIpLnRvU3RyaW5nKCkscj0ocnx8IikiKS50b1N0cmluZygpO2Zv
cihpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBjPXRbaV07aWYoYy5pbmRleE9mKG4sbyk+Yy5pbmRl
eE9mKHIsbyl8fH5jLmluZGV4T2YobixvKSYmIX5jLmluZGV4T2YocixvKXx8IX5jLmluZGV4T2Yo
bixvKSYmfmMuaW5kZXhPZihyLG8pKXtpZihhPWMuaW5kZXhPZihuLG8pLHM9Yy5pbmRleE9mKHIs
byksfmEmJiF+c3x8IX5hJiZ+cyl7dD1bdC5zbGljZSgwLChpfHwxKSsxKS5qb2luKGUpXS5jb25j
YXQodC5zbGljZSgoaXx8MSkrMSkpfW89KHM+YT9zOmEpKzEsaT0wfWVsc2Ugbz0wfXJldHVybiB0
fXZhciB1PWRvY3VtZW50LmxvY2F0aW9uLGw9e21vZGU6Im1vZGVybiIsaGFzaDp1Lmhhc2gsaGlz
dG9yeTohMSxjaGVjazpmdW5jdGlvbigpe3ZhciB0PXUuaGFzaDt0IT10aGlzLmhhc2gmJih0aGlz
Lmhhc2g9dCx0aGlzLm9uSGFzaENoYW5nZWQoKSl9LGZpcmU6ZnVuY3Rpb24oKXsibW9kZXJuIj09
PXRoaXMubW9kZT8hMD09PXRoaXMuaGlzdG9yeT93aW5kb3cub25wb3BzdGF0ZSgpOndpbmRvdy5v
bmhhc2hjaGFuZ2UoKTp0aGlzLm9uSGFzaENoYW5nZWQoKX0saW5pdDpmdW5jdGlvbih0LGUpe2Z1
bmN0aW9uIG4odCl7Zm9yKHZhciBlPTAsbj1mLmxpc3RlbmVycy5sZW5ndGg7ZTxuO2UrKylmLmxp
c3RlbmVyc1tlXSh0KX12YXIgcj10aGlzO2lmKHRoaXMuaGlzdG9yeT1lLGYubGlzdGVuZXJzfHwo
Zi5saXN0ZW5lcnM9W10pLCJvbmhhc2hjaGFuZ2UiaW4gd2luZG93JiYodm9pZCAwPT09ZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+NykpITA9PT10aGlzLmhpc3Rv
cnk/c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5vbnBvcHN0YXRlPW59LDUwMCk6d2luZG93
Lm9uaGFzaGNoYW5nZT1uLHRoaXMubW9kZT0ibW9kZXJuIjtlbHNle3ZhciBpPWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2kuaWQ9InN0YXRlLWZyYW1lIixpLnN0eWxlLmRpc3BsYXk9
Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSksdGhpcy53cml0ZUZyYW1lKCIiKSwi
b25wcm9wZXJ0eWNoYW5nZSJpbiBkb2N1bWVudCYmImF0dGFjaEV2ZW50ImluIGRvY3VtZW50JiZk
b2N1bWVudC5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZnVuY3Rpb24oKXsibG9jYXRp
b24iPT09ZXZlbnQucHJvcGVydHlOYW1lJiZyLmNoZWNrKCl9KSx3aW5kb3cuc2V0SW50ZXJ2YWwo
ZnVuY3Rpb24oKXtyLmNoZWNrKCl9LDUwKSx0aGlzLm9uSGFzaENoYW5nZWQ9bix0aGlzLm1vZGU9
ImxlZ2FjeSJ9cmV0dXJuIGYubGlzdGVuZXJzLnB1c2godCksdGhpcy5tb2RlfSxkZXN0cm95OmZ1
bmN0aW9uKHQpe2lmKGYmJmYubGlzdGVuZXJzKWZvcih2YXIgZT1mLmxpc3RlbmVycyxuPWUubGVu
Z3RoLTE7bj49MDtuLS0pZVtuXT09PXQmJmUuc3BsaWNlKG4sMSl9LHNldEhhc2g6ZnVuY3Rpb24o
dCl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLm1vZGUmJnRoaXMud3JpdGVGcmFtZSh0KSwhMD09PXRo
aXMuaGlzdG9yeT8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3VtZW50LnRpdGxlLHQp
LHRoaXMuZmlyZSgpKTp1Lmhhc2g9Ii8iPT09dFswXT90OiIvIit0LHRoaXN9LHdyaXRlRnJhbWU6
ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRlLWZyYW1lIiks
bj1lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93LmRvY3VtZW50O24ub3BlbigpLG4u
d3JpdGUoIjxzY3JpcHQ+X2hhc2ggPSAnIit0KyInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIu
c3luY0hhc2g7PHNjcmlwdD4iKSxuLmNsb3NlKCl9LHN5bmNIYXNoOmZ1bmN0aW9uKCl7dmFyIHQ9
dGhpcy5faGFzaDtyZXR1cm4gdCE9dS5oYXNoJiYodS5oYXNoPXQpLHRoaXN9LG9uSGFzaENoYW5n
ZWQ6ZnVuY3Rpb24oKXt9fSxmPXQuUm91dGVyPWZ1bmN0aW9uKHQpe2lmKCEodGhpcyBpbnN0YW5j
ZW9mIGYpKXJldHVybiBuZXcgZih0KTt0aGlzLnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlz
Lm1ldGhvZHM9WyJvbiIsIm9uY2UiLCJhZnRlciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhp
cy5fbWV0aG9kcz17fSx0aGlzLl9pbnNlcnQ9dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5p
bnNlcnRFeCx0aGlzLmhpc3RvcnlTdXBwb3J0PW51bGwhPShudWxsIT13aW5kb3cuaGlzdG9yeT93
aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU6bnVsbCksdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50
KHR8fHt9KX07Zi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0KXt2YXIgbixyPXRoaXM7cmV0dXJu
IHRoaXMuaGFuZGxlcj1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Lm5ld1VSTHx8d2luZG93LmxvY2F0
aW9uLmhhc2gsbj0hMD09PXIuaGlzdG9yeT9yLmdldFBhdGgoKTplLnJlcGxhY2UoLy4qIy8sIiIp
O3IuZGlzcGF0Y2goIm9uIiwiLyI9PT1uLmNoYXJBdCgwKT9uOiIvIituKX0sbC5pbml0KHRoaXMu
aGFuZGxlcix0aGlzLmhpc3RvcnkpLCExPT09dGhpcy5oaXN0b3J5P2UoKSYmdD91Lmhhc2g9dDpl
KCl8fHIuZGlzcGF0Y2goIm9uIiwiLyIrdS5oYXNoLnJlcGxhY2UoL14oI1wvfCN8XC8pLywiIikp
Oih0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0PyhuPWUoKSYmdD90OmUoKT9udWxsOnUuaGFzaC5y
ZXBsYWNlKC9eIy8sIiIpKSYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LGRvY3VtZW50
LnRpdGxlLG4pOm49dGhpcy5nZXRQYXRoKCksKG58fCEwPT09dGhpcy5ydW5faW5faW5pdCkmJnRo
aXMuaGFuZGxlcigpKSx0aGlzfSxmLnByb3RvdHlwZS5leHBsb2RlPWZ1bmN0aW9uKCl7dmFyIHQ9
ITA9PT10aGlzLmhpc3Rvcnk/dGhpcy5nZXRQYXRoKCk6dS5oYXNoO3JldHVybiIvIj09PXQuY2hh
ckF0KDEpJiYodD10LnNsaWNlKDEpKSx0LnNsaWNlKDEsdC5sZW5ndGgpLnNwbGl0KCIvIil9LGYu
cHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmV4cGxvZGUoKTty
ZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJiJzdHJpbmciPT10eXBlb2YgZT9yW3RdPWU6InN0cmlu
ZyI9PXR5cGVvZiBuP3Iuc3BsaWNlKHQsZSxzKTpyPVt0XSxsLnNldEhhc2goci5qb2luKCIvIikp
LHJ9LGYucHJvdG90eXBlLmluc2VydEV4PWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiJvbmNlIj09
PXQmJih0PSJvbiIsbj1mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZigh
ZSlyZXR1cm4gZT0hMCx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KG4pKSx0aGlzLl9pbnNlcnQo
dCxlLG4scil9LGYucHJvdG90eXBlLmdldFJvdXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQ7aWYoIm51
bWJlciI9PXR5cGVvZiB0KWU9dGhpcy5leHBsb2RlKClbdF07ZWxzZSBpZigic3RyaW5nIj09dHlw
ZW9mIHQpe3ZhciBuPXRoaXMuZXhwbG9kZSgpO2U9bi5pbmRleE9mKHQpfWVsc2UgZT10aGlzLmV4
cGxvZGUoKTtyZXR1cm4gZX0sZi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBs
LmRlc3Ryb3kodGhpcy5oYW5kbGVyKSx0aGlzfSxmLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9u
KCl7dmFyIHQ9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO3JldHVybiIvIiE9PXQuc3Vic3RyKDAs
MSkmJih0PSIvIit0KSx0fTt2YXIgcD0vXD8uKi87Zi5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0
aW9uKHQpe3Q9dHx8e307Zm9yKHZhciBlPTA7ZTx0aGlzLm1ldGhvZHMubGVuZ3RoO2UrKyl0aGlz
Ll9tZXRob2RzW3RoaXMubWV0aG9kc1tlXV09ITA7cmV0dXJuIHRoaXMucmVjdXJzZT10LnJlY3Vy
c2V8fHRoaXMucmVjdXJzZXx8ITEsdGhpcy5hc3luYz10LmFzeW5jfHwhMSx0aGlzLmRlbGltaXRl
cj10LmRlbGltaXRlcnx8Ii8iLHRoaXMuc3RyaWN0PXZvaWQgMD09PXQuc3RyaWN0fHx0LnN0cmlj
dCx0aGlzLm5vdGZvdW5kPXQubm90Zm91bmQsdGhpcy5yZXNvdXJjZT10LnJlc291cmNlLHRoaXMu
aGlzdG9yeT10Lmh0bWw1aGlzdG9yeSYmdGhpcy5oaXN0b3J5U3VwcG9ydHx8ITEsdGhpcy5ydW5f
aW5faW5pdD0hMD09PXRoaXMuaGlzdG9yeSYmITEhPT10LnJ1bl9oYW5kbGVyX2luX2luaXQsdGhp
cy5jb252ZXJ0X2hhc2hfaW5faW5pdD0hMD09PXRoaXMuaGlzdG9yeSYmITEhPT10LmNvbnZlcnRf
aGFzaF9pbl9pbml0LHRoaXMuZXZlcnk9e2FmdGVyOnQuYWZ0ZXJ8fG51bGwsYmVmb3JlOnQuYmVm
b3JlfHxudWxsLG9uOnQub258fG51bGx9LHRoaXN9LGYucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9u
KHQsZSl7IjoiIT09dFswXSYmKHQ9IjoiK3QpO3ZhciBuPW5ldyBSZWdFeHAodCwiZyIpO3JldHVy
biB0aGlzLnBhcmFtc1t0XT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKG4sZS5zb3VyY2V8
fGUpfSx0aGlzfSxmLnByb3RvdHlwZS5vbj1mLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbih0LGUs
bil7dmFyIHI9dGhpcztyZXR1cm4gbnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGV8fChuPWUsZT10LHQ9
Im9uIiksQXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2goZnVuY3Rpb24oZSl7ci5vbih0LGUsbil9
KTooZS5zb3VyY2UmJihlPWUuc291cmNlLnJlcGxhY2UoL1xcXC8vZ2ksIi8iKSksQXJyYXkuaXNB
cnJheSh0KT90LmZvckVhY2goZnVuY3Rpb24odCl7ci5vbih0LnRvTG93ZXJDYXNlKCksZSxuKX0p
OihlPWUuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLGU9YyhlLHRoaXMuZGVsaW1p
dGVyKSx2b2lkIHRoaXMuaW5zZXJ0KHQsdGhpcy5zY29wZS5jb25jYXQoZSksbikpKX0sZi5wcm90
b3R5cGUucGF0aD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc2NvcGUubGVuZ3RoO3Quc291cmNl
JiYodD10LnNvdXJjZS5yZXBsYWNlKC9cXFwvL2dpLCIvIikpLHQ9dC5zcGxpdChuZXcgUmVnRXhw
KHRoaXMuZGVsaW1pdGVyKSksdD1jKHQsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5z
Y29wZS5jb25jYXQodCksZS5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2Uobix0Lmxl
bmd0aCl9LGYucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7
by5sYXN0PWEuYWZ0ZXIsby5pbnZva2Uoby5ydW5saXN0KGEpLG8sbil9dmFyIGksbz10aGlzLGE9
dGhpcy50cmF2ZXJzZSh0LGUucmVwbGFjZShwLCIiKSx0aGlzLnJvdXRlcywiIikscz10aGlzLl9p
bnZva2VkO3JldHVybiB0aGlzLl9pbnZva2VkPSEwLGEmJjAhPT1hLmxlbmd0aD8oImZvcndhcmQi
PT09dGhpcy5yZWN1cnNlJiYoYT1hLnJldmVyc2UoKSksKGk9dGhpcy5ldmVyeSYmdGhpcy5ldmVy
eS5hZnRlcj9bdGhpcy5ldmVyeS5hZnRlcl0uY29uY2F0KHRoaXMubGFzdCk6W3RoaXMubGFzdF0p
JiZpLmxlbmd0aD4wJiZzPyh0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGksdGhpcyxyKToodGhpcy5p
bnZva2UoaSx0aGlzKSxyKCkpLCEwKToocigpLCEwKSk6KHRoaXMubGFzdD1bXSwiZnVuY3Rpb24i
PT10eXBlb2YgdGhpcy5ub3Rmb3VuZCYmdGhpcy5pbnZva2UoW3RoaXMubm90Zm91bmRdLHttZXRo
b2Q6dCxwYXRoOmV9LG4pLCExKX0sZi5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxyKXt2
YXIgbyxhPXRoaXM7dGhpcy5hc3luYz8obz1mdW5jdGlvbihuLHIpe2lmKEFycmF5LmlzQXJyYXko
bikpcmV0dXJuIGkobixvLHIpOyJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLmFwcGx5KGUsKHQuY2Fw
dHVyZXN8fFtdKS5jb25jYXQocikpfSxpKHQsbyxmdW5jdGlvbigpe3ImJnIuYXBwbHkoZSxhcmd1
bWVudHMpfSkpOihvPWZ1bmN0aW9uKHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpP24ocixvKToi
ZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KGUsdC5jYXB0dXJlc3x8W10pOnZvaWQoInN0cmlu
ZyI9PXR5cGVvZiByJiZhLnJlc291cmNlJiZhLnJlc291cmNlW3JdLmFwcGx5KGUsdC5jYXB0dXJl
c3x8W10pKX0sbih0LG8pKX0sZi5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24odCxlLG4scixp
KXtmdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7Zm9yKHZhciBuPVtdLHI9MDtyPHQubGVuZ3Ro
O3IrKyluW3JdPUFycmF5LmlzQXJyYXkodFtyXSk/ZSh0W3JdKTp0W3JdO3JldHVybiBufWZ1bmN0
aW9uIG4odCl7Zm9yKHZhciBlPXQubGVuZ3RoLTE7ZT49MDtlLS0pQXJyYXkuaXNBcnJheSh0W2Vd
KT8obih0W2VdKSwwPT09dFtlXS5sZW5ndGgmJnQuc3BsaWNlKGUsMSkpOmkodFtlXSl8fHQuc3Bs
aWNlKGUsMSl9aWYoIWkpcmV0dXJuIHQ7dmFyIHI9ZSh0KTtyZXR1cm4gci5tYXRjaGVkPXQubWF0
Y2hlZCxyLmNhcHR1cmVzPXQuY2FwdHVyZXMsci5hZnRlcj10LmFmdGVyLmZpbHRlcihpKSxuKHIp
LHJ9dmFyIGEscyxjLHUsbD1bXTtpZihlPT09dGhpcy5kZWxpbWl0ZXImJm5bdF0pcmV0dXJuIHU9
W1tuLmJlZm9yZSxuW3RdXS5maWx0ZXIoQm9vbGVhbildLHUuYWZ0ZXI9W24uYWZ0ZXJdLmZpbHRl
cihCb29sZWFuKSx1Lm1hdGNoZWQ9ITAsdS5jYXB0dXJlcz1bXSxvKHUpO2Zvcih2YXIgZiBpbiBu
KWlmKG4uaGFzT3duUHJvcGVydHkoZikmJighdGhpcy5fbWV0aG9kc1tmXXx8dGhpcy5fbWV0aG9k
c1tmXSYmIm9iamVjdCI9PXR5cGVvZiBuW2ZdJiYhQXJyYXkuaXNBcnJheShuW2ZdKSkpe2lmKGE9
cz1yK3RoaXMuZGVsaW1pdGVyK2YsdGhpcy5zdHJpY3R8fChzKz0iWyIrdGhpcy5kZWxpbWl0ZXIr
Il0/IiksIShjPWUubWF0Y2gobmV3IFJlZ0V4cCgiXiIrcykpKSljb250aW51ZTtpZihjWzBdJiZj
WzBdPT1lJiZuW2ZdW3RdKXJldHVybiB1PVtbbltmXS5iZWZvcmUsbltmXVt0XV0uZmlsdGVyKEJv
b2xlYW4pXSx1LmFmdGVyPVtuW2ZdLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksdS5tYXRjaGVkPSEw
LHUuY2FwdHVyZXM9Yy5zbGljZSgxKSx0aGlzLnJlY3Vyc2UmJm49PT10aGlzLnJvdXRlcyYmKHUu
cHVzaChbbi5iZWZvcmUsbi5vbl0uZmlsdGVyKEJvb2xlYW4pKSx1LmFmdGVyPXUuYWZ0ZXIuY29u
Y2F0KFtuLmFmdGVyXS5maWx0ZXIoQm9vbGVhbikpKSxvKHUpO2lmKHU9dGhpcy50cmF2ZXJzZSh0
LGUsbltmXSxhKSx1Lm1hdGNoZWQpcmV0dXJuIHUubGVuZ3RoPjAmJihsPWwuY29uY2F0KHUpKSx0
aGlzLnJlY3Vyc2UmJihsLnB1c2goW25bZl0uYmVmb3JlLG5bZl0ub25dLmZpbHRlcihCb29sZWFu
KSksdS5hZnRlcj11LmFmdGVyLmNvbmNhdChbbltmXS5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSxu
PT09dGhpcy5yb3V0ZXMmJihsLnB1c2goW24uYmVmb3JlLG4ub25dLmZpbHRlcihCb29sZWFuKSks
dS5hZnRlcj11LmFmdGVyLmNvbmNhdChbbi5hZnRlcl0uZmlsdGVyKEJvb2xlYW4pKSkpLGwubWF0
Y2hlZD0hMCxsLmNhcHR1cmVzPXUuY2FwdHVyZXMsbC5hZnRlcj11LmFmdGVyLG8obCl9cmV0dXJu
ITF9LGYucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUsbixyKXt2YXIgaSxvLHMsYztpZihl
PWUuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD4wfSkscj1yfHx0aGlzLnJv
dXRlcyxjPWUuc2hpZnQoKSwvXDp8XCovLnRlc3QoYykmJiEvXFxkfFxcdy8udGVzdChjKSYmKGM9
YShjLHRoaXMucGFyYW1zKSksZS5sZW5ndGg+MClyZXR1cm4gcltjXT1yW2NdfHx7fSx0aGlzLmlu
c2VydCh0LGUsbixyW2NdKTtpZihjfHxlLmxlbmd0aHx8ciE9PXRoaXMucm91dGVzKXtpZihpPXR5
cGVvZiByW2NdLG89QXJyYXkuaXNBcnJheShyW2NdKSxyW2NdJiYhbyYmIm9iamVjdCI9PWkpc3dp
dGNoKHR5cGVvZiByW2NdW3RdKXtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gdm9pZChyW2NdW3RdPVty
W2NdW3RdLG5dKTtjYXNlIm9iamVjdCI6cmV0dXJuIHZvaWQgcltjXVt0XS5wdXNoKG4pO2Nhc2Ui
dW5kZWZpbmVkIjpyZXR1cm4gdm9pZChyW2NdW3RdPW4pfWVsc2UgaWYoInVuZGVmaW5lZCI9PWkp
cmV0dXJuIHM9e30sc1t0XT1uLHZvaWQocltjXT1zKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQg
cm91dGUgY29udGV4dDogIitpKX1zd2l0Y2godHlwZW9mIHJbdF0pe2Nhc2UiZnVuY3Rpb24iOnJl
dHVybiB2b2lkKHJbdF09W3JbdF0sbl0pO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdm9pZCByW3RdLnB1
c2gobik7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiB2b2lkKHJbdF09bil9fSxmLnByb3RvdHlwZS5l
eHRlbmQ9ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLHI9dC5sZW5ndGg7Zm9yKGU9MDtlPHI7ZSsr
KSFmdW5jdGlvbih0KXtuLl9tZXRob2RzW3RdPSEwLG5bdF09ZnVuY3Rpb24oKXt2YXIgZT0xPT09
YXJndW1lbnRzLmxlbmd0aD9bdCwiIl06W3RdO24ub24uYXBwbHkobixlLmNvbmNhdChBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fSh0W2VdKX0sZi5wcm90b3R5cGUucnVu
bGlzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmJlZm9yZT9bdGhp
cy5ldmVyeS5iZWZvcmVdLmNvbmNhdChyKHQpKTpyKHQpO3JldHVybiB0aGlzLmV2ZXJ5JiZ0aGlz
LmV2ZXJ5Lm9uJiZlLnB1c2godGhpcy5ldmVyeS5vbiksZS5jYXB0dXJlcz10LmNhcHR1cmVzLGUu
c291cmNlPXQuc291cmNlLGV9LGYucHJvdG90eXBlLm1vdW50PWZ1bmN0aW9uKHQsZSl7aWYodCYm
Im9iamVjdCI9PXR5cGVvZiB0JiYhQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dGhpcztlPWV8fFtd
LEFycmF5LmlzQXJyYXkoZSl8fChlPWUuc3BsaXQobi5kZWxpbWl0ZXIpKTtmb3IodmFyIHIgaW4g
dCl0Lmhhc093blByb3BlcnR5KHIpJiZmdW5jdGlvbihlLHIpe3ZhciBpPWUsbz1lLnNwbGl0KG4u
ZGVsaW1pdGVyKSxhPXR5cGVvZiB0W2VdLHM9IiI9PT1vWzBdfHwhbi5fbWV0aG9kc1tvWzBdXSx1
PXM/Im9uIjppO2lmKHMmJihpPWkuc2xpY2UoKGkubWF0Y2gobmV3IFJlZ0V4cCgiXiIrbi5kZWxp
bWl0ZXIpKXx8WyIiXSlbMF0ubGVuZ3RoKSxvLnNoaWZ0KCkpLHMmJiJvYmplY3QiPT09YSYmIUFy
cmF5LmlzQXJyYXkodFtlXSkpcmV0dXJuIHI9ci5jb25jYXQobyksdm9pZCBuLm1vdW50KHRbZV0s
cik7cyYmKHI9ci5jb25jYXQoaS5zcGxpdChuLmRlbGltaXRlcikpLHI9YyhyLG4uZGVsaW1pdGVy
KSksbi5pbnNlcnQodSxyLHRbZV0pfShyLGUuc2xpY2UoMCkpfX19KGUpfSx0VFZrOmZ1bmN0aW9u
KHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLHI9e30saT0wO2k8ZS5s
ZW5ndGg7aSsrKXt2YXIgbz1lW2ldLGE9b1swXSxzPW9bMV0sYz1vWzJdLHU9b1szXSxsPXtpZDp0
KyI6IitpLGNzczpzLG1lZGlhOmMsc291cmNlTWFwOnV9O3JbYV0/clthXS5wYXJ0cy5wdXNoKGwp
Om4ucHVzaChyW2FdPXtpZDphLHBhcnRzOltsXX0pfXJldHVybiBufX19KTsKKy8vIyBzb3VyY2VN
YXBwaW5nVVJMPXZlbmRvci5lNzAwODAwMWE4YmVkMDA5YmJmMS5qcy5tYXAKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9z
dGF0aWMvanMvdmVuZG9yLmU3MDA4MDAxYThiZWQwMDliYmYxLmpzLm1hcCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3Z1ZWpzLWNsaS9kaXN0L3N0YXRpYy9qcy92ZW5kb3IuZTcwMDgwMDFhOGJlZDAwOWJiZjEuanMu
bWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQzMGNlZGRkZjlmNDZjOTI0MjFjMTIxODU4ZGIwY2Y1NGZhYmZiYTcK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvZGlzdC9zdGF0aWMvanMv
dmVuZG9yLmU3MDA4MDAxYThiZWQwMDliYmYxLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNp
b24iOjMsInNvdXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvdmVuZG9yLmU3MDA4MDAxYThi
ZWQwMDliYmYxLmpzIiwid2VicGFjazovLy8uL34vdnVlL2Rpc3QvdnVlLmVzbS5qcyIsIndlYnBh
Y2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL34vY3NzLWxv
YWRlci9saWIvY3NzLWJhc2UuanMiLCJ3ZWJwYWNrOi8vLy4vfi92dWUtbG9hZGVyL2xpYi9jb21w
b25lbnQtbm9ybWFsaXplci5qcyIsIndlYnBhY2s6Ly8vLi9+L3Z1ZS1zdHlsZS1sb2FkZXIvbGli
L2FkZFN0eWxlc0NsaWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2RpcmVjdG9yL2J1aWxkL2RpcmVj
dG9yLmpzIiwid2VicGFjazovLy8uL34vdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVz
LmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIjcrdVciLCJtb2R1bGUiLCJfX3dlYnBhY2tf
ZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5
IiwidmFsdWUiLCJnbG9iYWwiLCJpc1VuZGVmIiwidiIsInVuZGVmaW5lZCIsImlzRGVmIiwiaXNU
cnVlIiwiaXNGYWxzZSIsImlzUHJpbWl0aXZlIiwiaXNPYmplY3QiLCJvYmoiLCJpc1BsYWluT2Jq
ZWN0IiwiX3RvU3RyaW5nIiwiY2FsbCIsImlzUmVnRXhwIiwiaXNWYWxpZEFycmF5SW5kZXgiLCJ2
YWwiLCJuIiwicGFyc2VGbG9hdCIsIk1hdGgiLCJmbG9vciIsImlzRmluaXRlIiwidG9TdHJpbmci
LCJKU09OIiwic3RyaW5naWZ5IiwiU3RyaW5nIiwidG9OdW1iZXIiLCJpc05hTiIsIm1ha2VNYXAi
LCJzdHIiLCJleHBlY3RzTG93ZXJDYXNlIiwibWFwIiwiY3JlYXRlIiwibGlzdCIsInNwbGl0Iiwi
aSIsImxlbmd0aCIsInRvTG93ZXJDYXNlIiwicmVtb3ZlIiwiYXJyIiwiaXRlbSIsImluZGV4Iiwi
aW5kZXhPZiIsInNwbGljZSIsImhhc093biIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FjaGVk
IiwiZm4iLCJjYWNoZSIsImJpbmQiLCJjdHgiLCJib3VuZEZuIiwiYSIsImwiLCJhcmd1bWVudHMi
LCJhcHBseSIsIl9sZW5ndGgiLCJ0b0FycmF5Iiwic3RhcnQiLCJyZXQiLCJBcnJheSIsImV4dGVu
ZCIsInRvIiwiX2Zyb20iLCJ0b09iamVjdCIsInJlcyIsIm5vb3AiLCJiIiwiYyIsImxvb3NlRXF1
YWwiLCJpc09iamVjdEEiLCJpc09iamVjdEIiLCJpc0FycmF5QSIsImlzQXJyYXkiLCJpc0FycmF5
QiIsImV2ZXJ5IiwiZSIsImtleXNBIiwia2V5cyIsImtleXNCIiwibG9vc2VJbmRleE9mIiwib25j
ZSIsImNhbGxlZCIsInRoaXMiLCJpc1Jlc2VydmVkIiwiY2hhckNvZGVBdCIsImRlZiIsImVudW1l
cmFibGUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsInBhcnNlUGF0aCIsInBhdGgiLCJiYWls
UkUiLCJ0ZXN0Iiwic2VnbWVudHMiLCJoYW5kbGVFcnJvciIsImVyciIsInZtIiwiaW5mbyIsImNv
bmZpZyIsImVycm9ySGFuZGxlciIsImluQnJvd3NlciIsImNvbnNvbGUiLCJlcnJvciIsImlzTmF0
aXZlIiwiQ3RvciIsInB1c2hUYXJnZXQiLCJfdGFyZ2V0IiwiRGVwIiwidGFyZ2V0IiwidGFyZ2V0
U3RhY2siLCJwdXNoIiwicG9wVGFyZ2V0IiwicG9wIiwicHJvdG9BdWdtZW50Iiwic3JjIiwiX19w
cm90b19fIiwiY29weUF1Z21lbnQiLCJvYnNlcnZlIiwiYXNSb290RGF0YSIsIm9iIiwiX19vYl9f
IiwiT2JzZXJ2ZXIiLCJvYnNlcnZlclN0YXRlIiwic2hvdWxkQ29udmVydCIsImlzU2VydmVyUmVu
ZGVyaW5nIiwiaXNFeHRlbnNpYmxlIiwiX2lzVnVlIiwidm1Db3VudCIsImRlZmluZVJlYWN0aXZl
JCQxIiwiY3VzdG9tU2V0dGVyIiwic2hhbGxvdyIsImRlcCIsInByb3BlcnR5IiwiZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yIiwiZ2V0dGVyIiwiZ2V0Iiwic2V0dGVyIiwic2V0IiwiY2hpbGRPYiIs
ImRlcGVuZCIsImRlcGVuZEFycmF5IiwibmV3VmFsIiwibm90aWZ5IiwibWF4IiwiZGVsIiwibWVy
Z2VEYXRhIiwiZnJvbSIsInRvVmFsIiwiZnJvbVZhbCIsIm1lcmdlRGF0YU9yRm4iLCJwYXJlbnRW
YWwiLCJjaGlsZFZhbCIsImluc3RhbmNlRGF0YSIsImRlZmF1bHREYXRhIiwibWVyZ2VIb29rIiwi
Y29uY2F0IiwibWVyZ2VBc3NldHMiLCJub3JtYWxpemVQcm9wcyIsIm9wdGlvbnMiLCJwcm9wcyIs
Im5hbWUiLCJjYW1lbGl6ZSIsInR5cGUiLCJub3JtYWxpemVJbmplY3QiLCJpbmplY3QiLCJub3Jt
YWxpemVkIiwibm9ybWFsaXplRGlyZWN0aXZlcyIsImRpcnMiLCJkaXJlY3RpdmVzIiwidXBkYXRl
IiwibWVyZ2VPcHRpb25zIiwicGFyZW50IiwiY2hpbGQiLCJtZXJnZUZpZWxkIiwic3RyYXQiLCJz
dHJhdHMiLCJkZWZhdWx0U3RyYXQiLCJleHRlbmRzRnJvbSIsImV4dGVuZHMiLCJtaXhpbnMiLCJy
ZXNvbHZlQXNzZXQiLCJpZCIsIndhcm5NaXNzaW5nIiwiYXNzZXRzIiwiY2FtZWxpemVkSWQiLCJQ
YXNjYWxDYXNlSWQiLCJjYXBpdGFsaXplIiwidmFsaWRhdGVQcm9wIiwicHJvcE9wdGlvbnMiLCJw
cm9wc0RhdGEiLCJwcm9wIiwiYWJzZW50IiwiaXNUeXBlIiwiQm9vbGVhbiIsImh5cGhlbmF0ZSIs
ImdldFByb3BEZWZhdWx0VmFsdWUiLCJwcmV2U2hvdWxkQ29udmVydCIsImRlZmF1bHQiLCIkb3B0
aW9ucyIsIl9wcm9wcyIsImdldFR5cGUiLCJtYXRjaCIsImxlbiIsImNyZWF0ZVRleHRWTm9kZSIs
IlZOb2RlIiwiY2xvbmVWTm9kZSIsInZub2RlIiwiY2xvbmVkIiwidGFnIiwiZGF0YSIsImNoaWxk
cmVuIiwidGV4dCIsImVsbSIsImNvbnRleHQiLCJjb21wb25lbnRPcHRpb25zIiwiYXN5bmNGYWN0
b3J5IiwibnMiLCJpc1N0YXRpYyIsImlzQ29tbWVudCIsImlzQ2xvbmVkIiwiY2xvbmVWTm9kZXMi
LCJ2bm9kZXMiLCJjcmVhdGVGbkludm9rZXIiLCJmbnMiLCJpbnZva2VyIiwiYXJndW1lbnRzJDEi
LCJzbGljZSIsInVwZGF0ZUxpc3RlbmVycyIsIm9uIiwib2xkT24iLCJhZGQiLCJyZW1vdmUkJDEi
LCJjdXIiLCJvbGQiLCJldmVudCIsIm5vcm1hbGl6ZUV2ZW50IiwiY2FwdHVyZSIsInBhc3NpdmUi
LCJtZXJnZVZOb2RlSG9vayIsImhvb2tLZXkiLCJob29rIiwid3JhcHBlZEhvb2siLCJvbGRIb29r
IiwibWVyZ2VkIiwiZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YSIsImF0dHJzIiwiYWx0S2V5Iiwi
Y2hlY2tQcm9wIiwiaGFzaCIsInByZXNlcnZlIiwic2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4iLCJw
cm90b3R5cGUiLCJub3JtYWxpemVDaGlsZHJlbiIsIm5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4iLCJp
c1RleHROb2RlIiwibm9kZSIsIm5lc3RlZEluZGV4IiwibGFzdCIsIl9pc1ZMaXN0IiwiZW5zdXJl
Q3RvciIsImNvbXAiLCJiYXNlIiwiX19lc01vZHVsZSIsImNyZWF0ZUFzeW5jUGxhY2Vob2xkZXIi
LCJmYWN0b3J5IiwiY3JlYXRlRW1wdHlWTm9kZSIsImFzeW5jTWV0YSIsInJlc29sdmVBc3luY0Nv
bXBvbmVudCIsImJhc2VDdG9yIiwiZXJyb3JDb21wIiwicmVzb2x2ZWQiLCJsb2FkaW5nIiwibG9h
ZGluZ0NvbXAiLCJjb250ZXh0cyIsInN5bmMiLCJmb3JjZVJlbmRlciIsIiRmb3JjZVVwZGF0ZSIs
InJlc29sdmUiLCJyZWplY3QiLCJyZWFzb24iLCJ0aGVuIiwiY29tcG9uZW50IiwiZGVsYXkiLCJz
ZXRUaW1lb3V0IiwidGltZW91dCIsImdldEZpcnN0Q29tcG9uZW50Q2hpbGQiLCJpbml0RXZlbnRz
IiwiX2V2ZW50cyIsIl9oYXNIb29rRXZlbnQiLCJsaXN0ZW5lcnMiLCJfcGFyZW50TGlzdGVuZXJz
IiwidXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIiwib25jZSQkMSIsIiRvbmNlIiwiJG9uIiwicmVt
b3ZlJDEiLCIkb2ZmIiwib2xkTGlzdGVuZXJzIiwicmVzb2x2ZVNsb3RzIiwic2xvdHMiLCJkZWZh
dWx0U2xvdCIsImZ1bmN0aW9uYWxDb250ZXh0Iiwic2xvdCIsImlzV2hpdGVzcGFjZSIsInJlc29s
dmVTY29wZWRTbG90cyIsImluaXRMaWZlY3ljbGUiLCJhYnN0cmFjdCIsIiRwYXJlbnQiLCIkY2hp
bGRyZW4iLCIkcm9vdCIsIiRyZWZzIiwiX3dhdGNoZXIiLCJfaW5hY3RpdmUiLCJfZGlyZWN0SW5h
Y3RpdmUiLCJfaXNNb3VudGVkIiwiX2lzRGVzdHJveWVkIiwiX2lzQmVpbmdEZXN0cm95ZWQiLCJt
b3VudENvbXBvbmVudCIsImVsIiwiaHlkcmF0aW5nIiwiJGVsIiwicmVuZGVyIiwiY2FsbEhvb2si
LCJ1cGRhdGVDb21wb25lbnQiLCJfdXBkYXRlIiwiX3JlbmRlciIsIldhdGNoZXIiLCIkdm5vZGUi
LCJ1cGRhdGVDaGlsZENvbXBvbmVudCIsInBhcmVudFZub2RlIiwicmVuZGVyQ2hpbGRyZW4iLCJo
YXNDaGlsZHJlbiIsIl9yZW5kZXJDaGlsZHJlbiIsInNjb3BlZFNsb3RzIiwiJHNjb3BlZFNsb3Rz
IiwiZW1wdHlPYmplY3QiLCJfcGFyZW50Vm5vZGUiLCJfdm5vZGUiLCIkYXR0cnMiLCIkbGlzdGVu
ZXJzIiwicHJvcEtleXMiLCJfcHJvcEtleXMiLCIkc2xvdHMiLCJpc0luSW5hY3RpdmVUcmVlIiwi
YWN0aXZhdGVDaGlsZENvbXBvbmVudCIsImRpcmVjdCIsImRlYWN0aXZhdGVDaGlsZENvbXBvbmVu
dCIsImhhbmRsZXJzIiwiaiIsIiRlbWl0IiwicmVzZXRTY2hlZHVsZXJTdGF0ZSIsInF1ZXVlIiwi
YWN0aXZhdGVkQ2hpbGRyZW4iLCJoYXMiLCJ3YWl0aW5nIiwiZmx1c2hpbmciLCJmbHVzaFNjaGVk
dWxlclF1ZXVlIiwid2F0Y2hlciIsInNvcnQiLCJydW4iLCJhY3RpdmF0ZWRRdWV1ZSIsInVwZGF0
ZWRRdWV1ZSIsImNhbGxBY3RpdmF0ZWRIb29rcyIsImNhbGxVcGRhdGVkSG9va3MiLCJkZXZ0b29s
cyIsImVtaXQiLCJxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCIsInF1ZXVlV2F0Y2hlciIsIm5leHRU
aWNrIiwidHJhdmVyc2UiLCJzZWVuT2JqZWN0cyIsImNsZWFyIiwiX3RyYXZlcnNlIiwic2VlbiIs
ImlzQSIsImRlcElkIiwicHJveHkiLCJzb3VyY2VLZXkiLCJzaGFyZWRQcm9wZXJ0eURlZmluaXRp
b24iLCJpbml0U3RhdGUiLCJfd2F0Y2hlcnMiLCJvcHRzIiwiaW5pdFByb3BzIiwibWV0aG9kcyIs
ImluaXRNZXRob2RzIiwiaW5pdERhdGEiLCJfZGF0YSIsImNvbXB1dGVkIiwiaW5pdENvbXB1dGVk
Iiwid2F0Y2giLCJuYXRpdmVXYXRjaCIsImluaXRXYXRjaCIsInByb3BzT3B0aW9ucyIsImlzUm9v
dCIsImdldERhdGEiLCJ3YXRjaGVycyIsIl9jb21wdXRlZFdhdGNoZXJzIiwidXNlckRlZiIsImNv
bXB1dGVkV2F0Y2hlck9wdGlvbnMiLCJkZWZpbmVDb21wdXRlZCIsImNyZWF0ZUNvbXB1dGVkR2V0
dGVyIiwiZGlydHkiLCJldmFsdWF0ZSIsImhhbmRsZXIiLCJjcmVhdGVXYXRjaGVyIiwia2V5T3JG
biIsIiR3YXRjaCIsImluaXRQcm92aWRlIiwicHJvdmlkZSIsIl9wcm92aWRlZCIsImluaXRJbmpl
Y3Rpb25zIiwicmVzdWx0IiwicmVzb2x2ZUluamVjdCIsImZvckVhY2giLCJoYXNTeW1ib2wiLCJS
ZWZsZWN0Iiwib3duS2V5cyIsInByb3ZpZGVLZXkiLCJzb3VyY2UiLCJjcmVhdGVGdW5jdGlvbmFs
Q29tcG9uZW50IiwibWVyZ2VQcm9wcyIsIl9jb250ZXh0IiwiaCIsImQiLCJjcmVhdGVFbGVtZW50
IiwiaW5qZWN0aW9ucyIsImZ1bmN0aW9uYWxPcHRpb25zIiwiY3JlYXRlQ29tcG9uZW50IiwiX2Jh
c2UiLCJjaWQiLCJyZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIiwibW9kZWwiLCJ0cmFuc2Zvcm1N
b2RlbCIsImZ1bmN0aW9uYWwiLCJuYXRpdmVPbiIsIm1lcmdlSG9va3MiLCJjcmVhdGVDb21wb25l
bnRJbnN0YW5jZUZvclZub2RlIiwicGFyZW50RWxtIiwicmVmRWxtIiwidm5vZGVDb21wb25lbnRP
cHRpb25zIiwiX2lzQ29tcG9uZW50IiwiX2NvbXBvbmVudFRhZyIsIl9wYXJlbnRFbG0iLCJfcmVm
RWxtIiwiaW5saW5lVGVtcGxhdGUiLCJzdGF0aWNSZW5kZXJGbnMiLCJob29rc1RvTWVyZ2UiLCJm
cm9tUGFyZW50Iiwib3VycyIsImNvbXBvbmVudFZOb2RlSG9va3MiLCJtZXJnZUhvb2skMSIsIm9u
ZSIsInR3byIsImNhbGxiYWNrIiwibm9ybWFsaXphdGlvblR5cGUiLCJhbHdheXNOb3JtYWxpemUi
LCJBTFdBWVNfTk9STUFMSVpFIiwiX2NyZWF0ZUVsZW1lbnQiLCJpcyIsIlNJTVBMRV9OT1JNQUxJ
WkUiLCJnZXRUYWdOYW1lc3BhY2UiLCJpc1Jlc2VydmVkVGFnIiwicGFyc2VQbGF0Zm9ybVRhZ05h
bWUiLCJhcHBseU5TIiwicmVuZGVyTGlzdCIsInJlbmRlclNsb3QiLCJmYWxsYmFjayIsImJpbmRP
YmplY3QiLCJzY29wZWRTbG90Rm4iLCJzbG90Tm9kZXMiLCJyZXNvbHZlRmlsdGVyIiwiaWRlbnRp
dHkiLCJjaGVja0tleUNvZGVzIiwiZXZlbnRLZXlDb2RlIiwiYnVpbHRJbkFsaWFzIiwia2V5Q29k
ZXMiLCJiaW5kT2JqZWN0UHJvcHMiLCJhc1Byb3AiLCJpc1N5bmMiLCJpc1Jlc2VydmVkQXR0cmli
dXRlIiwibXVzdFVzZVByb3AiLCJkb21Qcm9wcyIsIiRldmVudCIsInJlbmRlclN0YXRpYyIsImlz
SW5Gb3IiLCJ0cmVlIiwiX3N0YXRpY1RyZWVzIiwiX3JlbmRlclByb3h5IiwibWFya1N0YXRpYyIs
Im1hcmtPbmNlIiwiaXNPbmNlIiwibWFya1N0YXRpY05vZGUiLCJiaW5kT2JqZWN0TGlzdGVuZXJz
IiwiZXhpc3RpbmciLCJpbml0UmVuZGVyIiwicmVuZGVyQ29udGV4dCIsIl9jIiwiJGNyZWF0ZUVs
ZW1lbnQiLCJwYXJlbnREYXRhIiwiaW5pdEludGVybmFsQ29tcG9uZW50IiwiY29uc3RydWN0b3Ii
LCJzdXBlciIsInN1cGVyT3B0aW9ucyIsIm1vZGlmaWVkT3B0aW9ucyIsInJlc29sdmVNb2RpZmll
ZE9wdGlvbnMiLCJleHRlbmRPcHRpb25zIiwiY29tcG9uZW50cyIsIm1vZGlmaWVkIiwibGF0ZXN0
IiwiZXh0ZW5kZWQiLCJzZWFsZWQiLCJzZWFsZWRPcHRpb25zIiwiZGVkdXBlIiwiVnVlJDMiLCJf
aW5pdCIsImluaXRVc2UiLCJWdWUiLCJ1c2UiLCJwbHVnaW4iLCJpbnN0YWxsZWRQbHVnaW5zIiwi
X2luc3RhbGxlZFBsdWdpbnMiLCJhcmdzIiwidW5zaGlmdCIsImluc3RhbGwiLCJpbml0TWl4aW4k
MSIsIm1peGluIiwiaW5pdEV4dGVuZCIsIlN1cGVyIiwiU3VwZXJJZCIsImNhY2hlZEN0b3JzIiwi
X0N0b3IiLCJTdWIiLCJpbml0UHJvcHMkMSIsImluaXRDb21wdXRlZCQxIiwiQVNTRVRfVFlQRVMi
LCJDb21wIiwiaW5pdEFzc2V0UmVnaXN0ZXJzIiwiZGVmaW5pdGlvbiIsImdldENvbXBvbmVudE5h
bWUiLCJtYXRjaGVzIiwicGF0dGVybiIsInBydW5lQ2FjaGUiLCJjdXJyZW50IiwiZmlsdGVyIiwi
Y2FjaGVkTm9kZSIsInBydW5lQ2FjaGVFbnRyeSIsImNvbXBvbmVudEluc3RhbmNlIiwiJGRlc3Ry
b3kiLCJnZW5DbGFzc0ZvclZub2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZSIsIm1lcmdlQ2xh
c3NEYXRhIiwicmVuZGVyQ2xhc3MiLCJzdGF0aWNDbGFzcyIsImNsYXNzIiwiZHluYW1pY0NsYXNz
Iiwic3RyaW5naWZ5Q2xhc3MiLCJzdHJpbmdpZnlBcnJheSIsInN0cmluZ2lmeU9iamVjdCIsInN0
cmluZ2lmaWVkIiwiaXNTVkciLCJpc1Vua25vd25FbGVtZW50IiwidW5rbm93bkVsZW1lbnRDYWNo
ZSIsImRvY3VtZW50Iiwid2luZG93IiwiSFRNTFVua25vd25FbGVtZW50IiwiSFRNTEVsZW1lbnQi
LCJxdWVyeSIsInNlbGVjdGVkIiwicXVlcnlTZWxlY3RvciIsImNyZWF0ZUVsZW1lbnQkMSIsInRh
Z05hbWUiLCJtdWx0aXBsZSIsInNldEF0dHJpYnV0ZSIsImNyZWF0ZUVsZW1lbnROUyIsIm5hbWVz
cGFjZSIsIm5hbWVzcGFjZU1hcCIsImNyZWF0ZVRleHROb2RlIiwiY3JlYXRlQ29tbWVudCIsImlu
c2VydEJlZm9yZSIsIm5ld05vZGUiLCJyZWZlcmVuY2VOb2RlIiwicmVtb3ZlQ2hpbGQiLCJhcHBl
bmRDaGlsZCIsIm5leHRTaWJsaW5nIiwic2V0VGV4dENvbnRlbnQiLCJ0ZXh0Q29udGVudCIsInJl
Z2lzdGVyUmVmIiwiaXNSZW1vdmFsIiwicmVmIiwicmVmcyIsInJlZkluRm9yIiwic2FtZVZub2Rl
Iiwic2FtZUlucHV0VHlwZSIsImlzQXN5bmNQbGFjZWhvbGRlciIsImNyZWF0ZUtleVRvT2xkSWR4
IiwiYmVnaW5JZHgiLCJlbmRJZHgiLCJ1cGRhdGVEaXJlY3RpdmVzIiwib2xkVm5vZGUiLCJvbGRE
aXIiLCJkaXIiLCJpc0NyZWF0ZSIsImVtcHR5Tm9kZSIsImlzRGVzdHJveSIsIm9sZERpcnMiLCJu
b3JtYWxpemVEaXJlY3RpdmVzJDEiLCJuZXdEaXJzIiwiZGlyc1dpdGhJbnNlcnQiLCJkaXJzV2l0
aFBvc3RwYXRjaCIsIm9sZFZhbHVlIiwiY2FsbEhvb2skMSIsImNvbXBvbmVudFVwZGF0ZWQiLCJp
bnNlcnRlZCIsImNhbGxJbnNlcnQiLCJtb2RpZmllcnMiLCJlbXB0eU1vZGlmaWVycyIsImdldFJh
d0Rpck5hbWUiLCJyYXdOYW1lIiwiam9pbiIsInVwZGF0ZUF0dHJzIiwiaW5oZXJpdEF0dHJzIiwi
b2xkQXR0cnMiLCJzZXRBdHRyIiwiaXNJRTkiLCJpc1hsaW5rIiwicmVtb3ZlQXR0cmlidXRlTlMi
LCJ4bGlua05TIiwiZ2V0WGxpbmtQcm9wIiwiaXNFbnVtZXJhdGVkQXR0ciIsInJlbW92ZUF0dHJp
YnV0ZSIsImlzQm9vbGVhbkF0dHIiLCJpc0ZhbHN5QXR0clZhbHVlIiwic2V0QXR0cmlidXRlTlMi
LCJ1cGRhdGVDbGFzcyIsIm9sZERhdGEiLCJjbHMiLCJ0cmFuc2l0aW9uQ2xhc3MiLCJfdHJhbnNp
dGlvbkNsYXNzZXMiLCJfcHJldkNsYXNzIiwicGFyc2VGaWx0ZXJzIiwiZXhwIiwicHVzaEZpbHRl
ciIsImZpbHRlcnMiLCJsYXN0RmlsdGVySW5kZXgiLCJ0cmltIiwicHJldiIsImV4cHJlc3Npb24i
LCJpblNpbmdsZSIsImluRG91YmxlIiwiaW5UZW1wbGF0ZVN0cmluZyIsImluUmVnZXgiLCJjdXJs
eSIsInNxdWFyZSIsInBhcmVuIiwicCIsImNoYXJBdCIsInZhbGlkRGl2aXNpb25DaGFyUkUiLCJ3
cmFwRmlsdGVyIiwiYmFzZVdhcm4iLCJtc2ciLCJwbHVja01vZHVsZUZ1bmN0aW9uIiwibW9kdWxl
cyIsIm0iLCJfIiwiYWRkUHJvcCIsImFkZEF0dHIiLCJhZGREaXJlY3RpdmUiLCJhcmciLCJhZGRI
YW5kbGVyIiwiaW1wb3J0YW50Iiwid2FybiIsImV2ZW50cyIsIm5hdGl2ZSIsIm5hdGl2ZUV2ZW50
cyIsIm5ld0hhbmRsZXIiLCJnZXRCaW5kaW5nQXR0ciIsImdldFN0YXRpYyIsImR5bmFtaWNWYWx1
ZSIsImdldEFuZFJlbW92ZUF0dHIiLCJzdGF0aWNWYWx1ZSIsImF0dHJzTWFwIiwiYXR0cnNMaXN0
IiwiZ2VuQ29tcG9uZW50TW9kZWwiLCJudW1iZXIiLCJ2YWx1ZUV4cHJlc3Npb24iLCJhc3NpZ25t
ZW50IiwiZ2VuQXNzaWdubWVudENvZGUiLCJtb2RlbFJzIiwicGFyc2VNb2RlbCIsImlkeCIsImlu
ZGV4JDEiLCJleHByZXNzaW9uUG9zIiwiZXhwcmVzc2lvbkVuZFBvcyIsImxhc3RJbmRleE9mIiwi
ZW9mIiwiY2hyIiwibmV4dCIsImlzU3RyaW5nU3RhcnQiLCJwYXJzZVN0cmluZyIsInBhcnNlQnJh
Y2tldCIsInN1YnN0cmluZyIsImluQnJhY2tldCIsInN0cmluZ1F1b3RlIiwiX3dhcm4iLCJ3YXJu
JDEiLCJnZW5TZWxlY3QiLCJnZW5DaGVja2JveE1vZGVsIiwiZ2VuUmFkaW9Nb2RlbCIsImdlbkRl
ZmF1bHRNb2RlbCIsInZhbHVlQmluZGluZyIsInRydWVWYWx1ZUJpbmRpbmciLCJmYWxzZVZhbHVl
QmluZGluZyIsIkNIRUNLQk9YX1JBRElPX1RPS0VOIiwic2VsZWN0ZWRWYWwiLCJjb2RlIiwibGF6
eSIsIm5lZWRDb21wb3NpdGlvbkd1YXJkIiwiUkFOR0VfVE9LRU4iLCJub3JtYWxpemVFdmVudHMi
LCJpc0lFIiwiaXNDaHJvbWUiLCJhZGQkMSIsIm9sZEhhbmRsZXIiLCJ0YXJnZXQkMSIsImV2Iiwi
cmVtb3ZlJDIiLCJhZGRFdmVudExpc3RlbmVyIiwic3VwcG9ydHNQYXNzaXZlIiwicmVtb3ZlRXZl
bnRMaXN0ZW5lciIsInVwZGF0ZURPTUxpc3RlbmVycyIsInVwZGF0ZURPTVByb3BzIiwib2xkUHJv
cHMiLCJfdmFsdWUiLCJzdHJDdXIiLCJzaG91bGRVcGRhdGVWYWx1ZSIsImNoZWNrVmFsIiwiY29t
cG9zaW5nIiwiaXNEaXJ0eSIsImlzSW5wdXRDaGFuZ2VkIiwibm90SW5Gb2N1cyIsImFjdGl2ZUVs
ZW1lbnQiLCJfdk1vZGlmaWVycyIsIm5vcm1hbGl6ZVN0eWxlRGF0YSIsInN0eWxlIiwibm9ybWFs
aXplU3R5bGVCaW5kaW5nIiwic3RhdGljU3R5bGUiLCJiaW5kaW5nU3R5bGUiLCJwYXJzZVN0eWxl
VGV4dCIsImdldFN0eWxlIiwiY2hlY2tDaGlsZCIsInN0eWxlRGF0YSIsInVwZGF0ZVN0eWxlIiwi
b2xkU3RhdGljU3R5bGUiLCJvbGRTdHlsZUJpbmRpbmciLCJub3JtYWxpemVkU3R5bGUiLCJvbGRT
dHlsZSIsIm5ld1N0eWxlIiwic2V0UHJvcCIsImFkZENsYXNzIiwiY2xhc3NMaXN0IiwiZ2V0QXR0
cmlidXRlIiwicmVtb3ZlQ2xhc3MiLCJ0YXIiLCJyZXBsYWNlIiwicmVzb2x2ZVRyYW5zaXRpb24i
LCJkZWYkJDEiLCJjc3MiLCJhdXRvQ3NzVHJhbnNpdGlvbiIsIm5leHRGcmFtZSIsInJhZiIsImFk
ZFRyYW5zaXRpb25DbGFzcyIsInRyYW5zaXRpb25DbGFzc2VzIiwicmVtb3ZlVHJhbnNpdGlvbkNs
YXNzIiwid2hlblRyYW5zaXRpb25FbmRzIiwiZXhwZWN0ZWRUeXBlIiwiY2IiLCJnZXRUcmFuc2l0
aW9uSW5mbyIsInByb3BDb3VudCIsIlRSQU5TSVRJT04iLCJ0cmFuc2l0aW9uRW5kRXZlbnQiLCJh
bmltYXRpb25FbmRFdmVudCIsImVuZGVkIiwiZW5kIiwib25FbmQiLCJzdHlsZXMiLCJnZXRDb21w
dXRlZFN0eWxlIiwidHJhbnNpdGlvbkRlbGF5cyIsInRyYW5zaXRpb25Qcm9wIiwidHJhbnNpdGlv
bkR1cmF0aW9ucyIsInRyYW5zaXRpb25UaW1lb3V0IiwiZ2V0VGltZW91dCIsImFuaW1hdGlvbkRl
bGF5cyIsImFuaW1hdGlvblByb3AiLCJhbmltYXRpb25EdXJhdGlvbnMiLCJhbmltYXRpb25UaW1l
b3V0IiwiQU5JTUFUSU9OIiwiaGFzVHJhbnNmb3JtIiwidHJhbnNmb3JtUkUiLCJkZWxheXMiLCJk
dXJhdGlvbnMiLCJ0b01zIiwicyIsIk51bWJlciIsImVudGVyIiwidG9nZ2xlRGlzcGxheSIsIl9s
ZWF2ZUNiIiwiY2FuY2VsbGVkIiwidHJhbnNpdGlvbiIsIl9lbnRlckNiIiwibm9kZVR5cGUiLCJl
bnRlckNsYXNzIiwiZW50ZXJUb0NsYXNzIiwiZW50ZXJBY3RpdmVDbGFzcyIsImFwcGVhckNsYXNz
IiwiYXBwZWFyVG9DbGFzcyIsImFwcGVhckFjdGl2ZUNsYXNzIiwiYmVmb3JlRW50ZXIiLCJhZnRl
ckVudGVyIiwiZW50ZXJDYW5jZWxsZWQiLCJiZWZvcmVBcHBlYXIiLCJhcHBlYXIiLCJhZnRlckFw
cGVhciIsImFwcGVhckNhbmNlbGxlZCIsImR1cmF0aW9uIiwiYWN0aXZlSW5zdGFuY2UiLCJ0cmFu
c2l0aW9uTm9kZSIsImlzQXBwZWFyIiwiaXNSb290SW5zZXJ0Iiwic3RhcnRDbGFzcyIsImFjdGl2
ZUNsYXNzIiwidG9DbGFzcyIsImJlZm9yZUVudGVySG9vayIsImVudGVySG9vayIsImFmdGVyRW50
ZXJIb29rIiwiZW50ZXJDYW5jZWxsZWRIb29rIiwiZXhwbGljaXRFbnRlckR1cmF0aW9uIiwiZXhw
ZWN0c0NTUyIsInVzZXJXYW50c0NvbnRyb2wiLCJnZXRIb29rQXJndW1lbnRzTGVuZ3RoIiwic2hv
dyIsInBlbmRpbmdOb2RlIiwiX3BlbmRpbmciLCJpc1ZhbGlkRHVyYXRpb24iLCJsZWF2ZSIsInJt
IiwicGVyZm9ybUxlYXZlIiwiYmVmb3JlTGVhdmUiLCJsZWF2ZUNsYXNzIiwibGVhdmVBY3RpdmVD
bGFzcyIsImxlYXZlVG9DbGFzcyIsImV4cGxpY2l0TGVhdmVEdXJhdGlvbiIsImFmdGVyTGVhdmUi
LCJsZWF2ZUNhbmNlbGxlZCIsImRlbGF5TGVhdmUiLCJpbnZva2VyRm5zIiwiX2VudGVyIiwic2V0
U2VsZWN0ZWQiLCJiaW5kaW5nIiwiaXNNdWx0aXBsZSIsIm9wdGlvbiIsImdldFZhbHVlIiwic2Vs
ZWN0ZWRJbmRleCIsIm9uQ29tcG9zaXRpb25TdGFydCIsIm9uQ29tcG9zaXRpb25FbmQiLCJ0cmln
Z2VyIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwibG9jYXRlTm9k
ZSIsImdldFJlYWxDaGlsZCIsImNvbXBPcHRpb25zIiwiZXh0cmFjdFRyYW5zaXRpb25EYXRhIiwi
a2V5JDEiLCJwbGFjZWhvbGRlciIsInJhd0NoaWxkIiwiaGFzUGFyZW50VHJhbnNpdGlvbiIsImlz
U2FtZUNoaWxkIiwib2xkQ2hpbGQiLCJjYWxsUGVuZGluZ0NicyIsIl9tb3ZlQ2IiLCJyZWNvcmRQ
b3NpdGlvbiIsIm5ld1BvcyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImFwcGx5VHJhbnNsYXRp
b24iLCJvbGRQb3MiLCJwb3MiLCJkeCIsImxlZnQiLCJkeSIsInRvcCIsIm1vdmVkIiwidHJhbnNm
b3JtIiwiV2Via2l0VHJhbnNmb3JtIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwicGFyc2VUZXh0Iiwi
ZGVsaW1pdGVycyIsInRhZ1JFIiwiYnVpbGRSZWdleCIsImRlZmF1bHRUYWdSRSIsInRva2VucyIs
Imxhc3RJbmRleCIsImV4ZWMiLCJ0cmFuc2Zvcm1Ob2RlIiwiY2xhc3NCaW5kaW5nIiwiZ2VuRGF0
YSIsInRyYW5zZm9ybU5vZGUkMSIsInN0eWxlQmluZGluZyIsImdlbkRhdGEkMSIsImh0bWwiLCJk
ZWNvZGVBdHRyIiwic2hvdWxkRGVjb2RlTmV3bGluZXMiLCJyZSIsImVuY29kZWRBdHRyV2l0aE5l
d0xpbmVzIiwiZW5jb2RlZEF0dHIiLCJkZWNvZGluZ01hcCIsInBhcnNlSFRNTCIsImFkdmFuY2Ui
LCJwYXJzZUVuZFRhZyIsImxvd2VyQ2FzZWRUYWdOYW1lIiwic3RhY2siLCJsb3dlckNhc2VkVGFn
IiwibGFzdFRhZyIsImV4cGVjdEhUTUwiLCJpc1VuYXJ5VGFnJCQxIiwiaXNVbmFyeVRhZyIsIm5v
IiwiY2FuQmVMZWZ0T3BlblRhZyQkMSIsImNhbkJlTGVmdE9wZW5UYWciLCJpc1BsYWluVGV4dEVs
ZW1lbnQiLCJlbmRUYWdMZW5ndGgiLCJzdGFja2VkVGFnIiwicmVTdGFja2VkVGFnIiwicmVDYWNo
ZSIsIlJlZ0V4cCIsInJlc3QkMSIsImFsbCIsImVuZFRhZyIsInNob3VsZElnbm9yZUZpcnN0TmV3
bGluZSIsImNoYXJzIiwidGV4dEVuZCIsImNvbW1lbnQiLCJjb21tZW50RW5kIiwic2hvdWxkS2Vl
cENvbW1lbnQiLCJjb25kaXRpb25hbENvbW1lbnQiLCJjb25kaXRpb25hbEVuZCIsImRvY3R5cGVN
YXRjaCIsImRvY3R5cGUiLCJlbmRUYWdNYXRjaCIsImN1ckluZGV4Iiwic3RhcnRUYWdNYXRjaCIs
InN0YXJ0VGFnT3BlbiIsImF0dHIiLCJzdGFydFRhZ0Nsb3NlIiwiYXR0cmlidXRlIiwidW5hcnlT
bGFzaCIsImlzTm9uUGhyYXNpbmdUYWciLCJ1bmFyeSIsIklTX1JFR0VYX0NBUFRVUklOR19CUk9L
RU4iLCJyZXN0IiwicGFyc2UiLCJ0ZW1wbGF0ZSIsImVuZFByZSIsImVsZW1lbnQiLCJwcmUiLCJp
blZQcmUiLCJwbGF0Zm9ybUlzUHJlVGFnIiwiaW5QcmUiLCJ3YXJuJDIiLCJpc1ByZVRhZyIsInBs
YXRmb3JtTXVzdFVzZVByb3AiLCJwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZSIsInRyYW5zZm9ybXMi
LCJwcmVUcmFuc2Zvcm1zIiwicG9zdFRyYW5zZm9ybXMiLCJyb290IiwiY3VycmVudFBhcmVudCIs
InByZXNlcnZlV2hpdGVzcGFjZSIsImNvbW1lbnRzIiwiZ3VhcmRJRVNWR0J1ZyIsIm1ha2VBdHRy
c01hcCIsImlzRm9yYmlkZGVuVGFnIiwiZm9yYmlkZGVuIiwicHJvY2Vzc1ByZSIsInByb2Nlc3NS
YXdBdHRycyIsInByb2Nlc3NGb3IiLCJwcm9jZXNzSWYiLCJwcm9jZXNzT25jZSIsInByb2Nlc3NL
ZXkiLCJwbGFpbiIsInByb2Nlc3NSZWYiLCJwcm9jZXNzU2xvdCIsInByb2Nlc3NDb21wb25lbnQi
LCJpJDEiLCJwcm9jZXNzQXR0cnMiLCJpZiIsImVsc2VpZiIsImVsc2UiLCJhZGRJZkNvbmRpdGlv
biIsImJsb2NrIiwicHJvY2Vzc0lmQ29uZGl0aW9ucyIsInNsb3RTY29wZSIsInNsb3RUYXJnZXQi
LCJpJDIiLCJsYXN0Tm9kZSIsImlzVGV4dFRhZyIsImRlY29kZUhUTUxDYWNoZWQiLCJjaGVja0lu
Rm9yIiwiaW5NYXRjaCIsImZvckFsaWFzUkUiLCJmb3IiLCJhbGlhcyIsIml0ZXJhdG9yTWF0Y2gi
LCJmb3JJdGVyYXRvclJFIiwiaXRlcmF0b3IxIiwiaXRlcmF0b3IyIiwiZmluZFByZXZFbGVtZW50
IiwiY29uZGl0aW9uIiwiaWZDb25kaXRpb25zIiwic2xvdE5hbWUiLCJpc1Byb3AiLCJkaXJSRSIs
Imhhc0JpbmRpbmdzIiwicGFyc2VNb2RpZmllcnMiLCJtb2RpZmllclJFIiwiYmluZFJFIiwiY2Ft
ZWwiLCJvblJFIiwiYXJnTWF0Y2giLCJhcmdSRSIsImllTlNCdWciLCJpZU5TUHJlZml4Iiwib3B0
aW1pemUiLCJpc1N0YXRpY0tleSIsImdlblN0YXRpY0tleXNDYWNoZWQiLCJzdGF0aWNLZXlzIiwi
aXNQbGF0Zm9ybVJlc2VydmVkVGFnIiwibWFya1N0YXRpYyQxIiwibWFya1N0YXRpY1Jvb3RzIiwi
Z2VuU3RhdGljS2V5cyQxIiwic3RhdGljIiwibCQxIiwic3RhdGljSW5Gb3IiLCJzdGF0aWNSb290
IiwiaXNCdWlsdEluVGFnIiwiaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3IiLCJnZW5IYW5kbGVy
cyIsImdlbkhhbmRsZXIiLCJpc01ldGhvZFBhdGgiLCJzaW1wbGVQYXRoUkUiLCJpc0Z1bmN0aW9u
RXhwcmVzc2lvbiIsImZuRXhwUkUiLCJnZW5Nb2RpZmllckNvZGUiLCJtb2RpZmllckNvZGUiLCJn
ZW5LZXlGaWx0ZXIiLCJnZW5GaWx0ZXJDb2RlIiwia2V5VmFsIiwicGFyc2VJbnQiLCJ3cmFwTGlz
dGVuZXJzIiwiYmluZCQxIiwid3JhcERhdGEiLCJnZW5lcmF0ZSIsImFzdCIsInN0YXRlIiwiQ29k
ZWdlblN0YXRlIiwiZ2VuRWxlbWVudCIsInN0YXRpY1Byb2Nlc3NlZCIsImdlblN0YXRpYyIsIm9u
Y2VQcm9jZXNzZWQiLCJnZW5PbmNlIiwiZm9yUHJvY2Vzc2VkIiwiZ2VuRm9yIiwiaWZQcm9jZXNz
ZWQiLCJnZW5JZiIsImdlblNsb3QiLCJnZW5Db21wb25lbnQiLCJnZW5EYXRhJDIiLCJnZW5DaGls
ZHJlbiIsIm9uY2VJZCIsImFsdEdlbiIsImFsdEVtcHR5IiwiZ2VuSWZDb25kaXRpb25zIiwiY29u
ZGl0aW9ucyIsImdlblRlcm5hcnlFeHAiLCJzaGlmdCIsImFsdEhlbHBlciIsImdlbkRpcmVjdGl2
ZXMiLCJkYXRhR2VuRm5zIiwiZ2VuUHJvcHMiLCJnZW5TY29wZWRTbG90cyIsImdlbklubGluZVRl
bXBsYXRlIiwibmVlZFJ1bnRpbWUiLCJoYXNSdW50aW1lIiwiZ2VuIiwiaW5saW5lUmVuZGVyRm5z
IiwiZ2VuU2NvcGVkU2xvdCIsImdlbkZvclNjb3BlZFNsb3QiLCJzY29wZSIsImNoZWNrU2tpcCIs
ImFsdEdlbkVsZW1lbnQiLCJhbHRHZW5Ob2RlIiwiZWwkMSIsImdldE5vcm1hbGl6YXRpb25UeXBl
IiwibWF5YmVDb21wb25lbnQiLCJnZW5Ob2RlIiwibmVlZHNOb3JtYWxpemF0aW9uIiwic29tZSIs
ImdlbkNvbW1lbnQiLCJnZW5UZXh0IiwidHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzIiwiYmluZCQk
MSIsImNvbXBvbmVudE5hbWUiLCJjcmVhdGVGdW5jdGlvbiIsImVycm9ycyIsIkZ1bmN0aW9uIiwi
Y3JlYXRlQ29tcGlsZVRvRnVuY3Rpb25GbiIsImNvbXBpbGUiLCJjb21waWxlZCIsImZuR2VuRXJy
b3JzIiwiZ2V0T3V0ZXJIVE1MIiwib3V0ZXJIVE1MIiwiY29udGFpbmVyIiwiY2xvbmVOb2RlIiwi
aW5uZXJIVE1MIiwiY2FtZWxpemVSRSIsInRvVXBwZXJDYXNlIiwiaHlwaGVuYXRlUkUiLCJTU1Jf
QVRUUiIsIkxJRkVDWUNMRV9IT09LUyIsIm9wdGlvbk1lcmdlU3RyYXRlZ2llcyIsInNpbGVudCIs
InByb2R1Y3Rpb25UaXAiLCJwZXJmb3JtYW5jZSIsIndhcm5IYW5kbGVyIiwiaWdub3JlZEVsZW1l
bnRzIiwiaXNSZXNlcnZlZEF0dHIiLCJfbGlmZWN5Y2xlSG9va3MiLCJmcmVlemUiLCJoYXNQcm90
byIsIlVBIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiaXNFZGdlIiwiaXNBbmRyb2lkIiwiaXNJ
T1MiLCJfaXNTZXJ2ZXIiLCJfU2V0IiwiZW52IiwiVlVFX0VOViIsIl9fVlVFX0RFVlRPT0xTX0dM
T0JBTF9IT09LX18iLCJTeW1ib2wiLCJuZXh0VGlja0hhbmRsZXIiLCJwZW5kaW5nIiwiY29waWVz
IiwiY2FsbGJhY2tzIiwidGltZXJGdW5jIiwiUHJvbWlzZSIsImxvZ0Vycm9yIiwiY2F0Y2giLCJN
dXRhdGlvbk9ic2VydmVyIiwiY291bnRlciIsIm9ic2VydmVyIiwidGV4dE5vZGUiLCJjaGFyYWN0
ZXJEYXRhIiwiX3Jlc29sdmUiLCJTZXQiLCJ1aWQiLCJzdWJzIiwiYWRkU3ViIiwic3ViIiwicmVt
b3ZlU3ViIiwiYWRkRGVwIiwiYXJyYXlQcm90byIsImFycmF5TWV0aG9kcyIsIm1ldGhvZCIsIm9y
aWdpbmFsIiwib2JzZXJ2ZUFycmF5IiwiYXJyYXlLZXlzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIs
IndhbGsiLCJpdGVtcyIsInJhdyIsInByb3RvdHlwZUFjY2Vzc29ycyIsImRlZmluZVByb3BlcnRp
ZXMiLCJ1aWQkMiIsImV4cE9yRm4iLCJkZWVwIiwidXNlciIsImFjdGl2ZSIsImRlcHMiLCJuZXdE
ZXBzIiwiZGVwSWRzIiwibmV3RGVwSWRzIiwiY2xlYW51cERlcHMiLCJ0aGlzJDEiLCJ0bXAiLCJ0
ZWFyZG93biIsImluaXQiLCIkbW91bnQiLCJrZWVwQWxpdmUiLCJtb3VudGVkTm9kZSIsInByZXBh
dGNoIiwiaW5zZXJ0IiwiZGVzdHJveSIsInVpZCQxIiwiX3VpZCIsIl9zZWxmIiwiZGF0YURlZiIs
InByb3BzRGVmIiwiJHNldCIsIiRkZWxldGUiLCJpbW1lZGlhdGUiLCJob29rUkUiLCJjYnMiLCJw
cmV2RWwiLCJwcmV2Vm5vZGUiLCJwcmV2QWN0aXZlSW5zdGFuY2UiLCJfX3BhdGNoX18iLCJfX3Z1
ZV9fIiwiJG5leHRUaWNrIiwiX28iLCJfbiIsIl9zIiwiX2wiLCJfdCIsIl9xIiwiX2kiLCJfbSIs
Il9mIiwiX2siLCJfYiIsIl92IiwiX2UiLCJfdSIsIl9nIiwicGF0dGVyblR5cGVzIiwiS2VlcEFs
aXZlIiwiaW5jbHVkZSIsImV4Y2x1ZGUiLCJjcmVhdGVkIiwiZGVzdHJveWVkIiwiYnVpbHRJbkNv
bXBvbmVudHMiLCJjb25maWdEZWYiLCJ1dGlsIiwiZGVmaW5lUmVhY3RpdmUiLCJkZWxldGUiLCJz
c3JDb250ZXh0IiwidmVyc2lvbiIsImVtcHR5U3R5bGUiLCJhY2NlcHRWYWx1ZSIsInN2ZyIsIm1h
dGgiLCJpc0hUTUxUYWciLCJub2RlT3BzIiwiaG9va3MiLCJiYXNlTW9kdWxlcyIsImtsYXNzIiwi
Y3NzVGV4dCIsImxpc3REZWxpbWl0ZXIiLCJwcm9wZXJ0eURlbGltaXRlciIsImNzc1ZhclJFIiwi
aW1wb3J0YW50UkUiLCJzZXRQcm9wZXJ0eSIsIm5vcm1hbGl6ZWROYW1lIiwibm9ybWFsaXplIiwi
dmVuZG9yTmFtZXMiLCJjYXBOYW1lIiwiaGFzVHJhbnNpdGlvbiIsIm9udHJhbnNpdGlvbmVuZCIs
Im9ud2Via2l0dHJhbnNpdGlvbmVuZCIsIm9uYW5pbWF0aW9uZW5kIiwib253ZWJraXRhbmltYXRp
b25lbmQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJhY3RpdmF0ZSIsInBsYXRmb3JtTW9kdWxl
cyIsInBhdGNoIiwiYmFja2VuZCIsImVtcHR5Tm9kZUF0IiwiY3JlYXRlUm1DYiIsImNoaWxkRWxt
IiwicmVtb3ZlTm9kZSIsImNyZWF0ZUVsbSIsImluc2VydGVkVm5vZGVRdWV1ZSIsIm5lc3RlZCIs
InNldFNjb3BlIiwiY3JlYXRlQ2hpbGRyZW4iLCJpbnZva2VDcmVhdGVIb29rcyIsImlzUmVhY3Rp
dmF0ZWQiLCJpbml0Q29tcG9uZW50IiwicmVhY3RpdmF0ZUNvbXBvbmVudCIsInBlbmRpbmdJbnNl
cnQiLCJpc1BhdGNoYWJsZSIsImlubmVyTm9kZSIsInJlZiQkMSIsImFuY2VzdG9yIiwiX3Njb3Bl
SWQiLCJhZGRWbm9kZXMiLCJzdGFydElkeCIsImludm9rZURlc3Ryb3lIb29rIiwicmVtb3ZlVm5v
ZGVzIiwiY2giLCJyZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rIiwidXBkYXRlQ2hpbGRyZW4iLCJv
bGRDaCIsIm5ld0NoIiwicmVtb3ZlT25seSIsIm9sZEtleVRvSWR4IiwiaWR4SW5PbGQiLCJlbG1U
b01vdmUiLCJvbGRTdGFydElkeCIsIm5ld1N0YXJ0SWR4Iiwib2xkRW5kSWR4Iiwib2xkU3RhcnRW
bm9kZSIsIm9sZEVuZFZub2RlIiwibmV3RW5kSWR4IiwibmV3U3RhcnRWbm9kZSIsIm5ld0VuZFZu
b2RlIiwiY2FuTW92ZSIsInBhdGNoVm5vZGUiLCJoeWRyYXRlIiwicG9zdHBhdGNoIiwiaW52b2tl
SW5zZXJ0SG9vayIsImluaXRpYWwiLCJoYXNDaGlsZE5vZGVzIiwiY2hpbGRyZW5NYXRjaCIsImZp
cnN0Q2hpbGQiLCJpc1JlbmRlcmVkTW9kdWxlIiwiaXNJbml0aWFsUGF0Y2giLCJpc1JlYWxFbGVt
ZW50IiwiaGFzQXR0cmlidXRlIiwib2xkRWxtIiwicGFyZW50RWxtJDEiLCJpc1RleHRJbnB1dFR5
cGUiLCJ2bW9kZWwiLCJtb2RlbCQxIiwiX3ZPcHRpb25zIiwicHJldk9wdGlvbnMiLCJvIiwidHJh
bnNpdGlvbiQkMSIsIm9yaWdpbmFsRGlzcGxheSIsIl9fdk9yaWdpbmFsRGlzcGxheSIsImRpc3Bs
YXkiLCJ1bmJpbmQiLCJwbGF0Zm9ybURpcmVjdGl2ZXMiLCJ0cmFuc2l0aW9uUHJvcHMiLCJtb2Rl
IiwiVHJhbnNpdGlvbiIsIl9sZWF2aW5nIiwib2xkUmF3Q2hpbGQiLCJkZWxheWVkTGVhdmUiLCJt
b3ZlQ2xhc3MiLCJUcmFuc2l0aW9uR3JvdXAiLCJwcmV2Q2hpbGRyZW4iLCJyYXdDaGlsZHJlbiIs
InRyYW5zaXRpb25EYXRhIiwia2VwdCIsInJlbW92ZWQiLCJjJDEiLCJiZWZvcmVVcGRhdGUiLCJ1
cGRhdGVkIiwiaGFzTW92ZSIsImJvZHkiLCJvZmZzZXRIZWlnaHQiLCJwcm9wZXJ0eU5hbWUiLCJf
aGFzTW92ZSIsImNsb25lIiwicGxhdGZvcm1Db21wb25lbnRzIiwiZGVjb2RlciIsImNvbnRlbnQi
LCJlbmNvZGVkIiwiZGl2IiwicmVnZXhFc2NhcGVSRSIsIm9wZW4iLCJjbG9zZSIsImtsYXNzJDEi
LCJzdHlsZSQxIiwibW9kdWxlcyQxIiwiZGlyZWN0aXZlcyQxIiwiYmFzZU9wdGlvbnMiLCJyZWR1
Y2UiLCJoZSIsImRlY29kZSIsInNpbmdsZUF0dHJJZGVudGlmaWVyIiwic2luZ2xlQXR0ckFzc2ln
biIsInNpbmdsZUF0dHJWYWx1ZXMiLCJuY25hbWUiLCJxbmFtZUNhcHR1cmUiLCJnIiwiJmx0OyIs
IiZndDsiLCImcXVvdDsiLCImYW1wOyIsIiYjMTA7IiwiaXNJZ25vcmVOZXdsaW5lVGFnIiwiZXNj
IiwidGFiIiwic3BhY2UiLCJ1cCIsInJpZ2h0IiwiZG93biIsImdlbkd1YXJkIiwic3RvcCIsInBy
ZXZlbnQiLCJzZWxmIiwiY3RybCIsImFsdCIsIm1ldGEiLCJtaWRkbGUiLCJiYXNlRGlyZWN0aXZl
cyIsImNsb2FrIiwiY3JlYXRlQ29tcGlsZXIiLCJiYXNlQ29tcGlsZSIsImZpbmFsT3B0aW9ucyIs
InRpcHMiLCJ0aXAiLCJjb21waWxlVG9GdW5jdGlvbnMiLCJyZWYkMSIsImlkVG9UZW1wbGF0ZSIs
Im1vdW50IiwiZG9jdW1lbnRFbGVtZW50IiwiRHVSMiIsImV4cG9ydHMiLCJldmFsIiwiRlorZiIs
ImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJ1c2VTb3VyY2VNYXAiLCJjc3NNYXBwaW5nIiwiYnRv
YSIsInNvdXJjZU1hcHBpbmciLCJ0b0NvbW1lbnQiLCJzb3VyY2VzIiwic291cmNlUm9vdCIsInNv
dXJjZU1hcCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWVkaWFRdWVyeSIsImFs
cmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJWVS84IiwicmF3U2NyaXB0RXhwb3J0cyIsImNvbXBpbGVk
VGVtcGxhdGUiLCJpbmplY3RTdHlsZXMiLCJzY29wZUlkIiwibW9kdWxlSWRlbnRpZmllciIsImVz
TW9kdWxlIiwic2NyaXB0RXhwb3J0cyIsIl9fVlVFX1NTUl9DT05URVhUX18iLCJfcmVnaXN0ZXJl
ZENvbXBvbmVudHMiLCJfc3NyUmVnaXN0ZXIiLCJiZWZvcmVDcmVhdGUiLCJyamowIiwiYWRkU3R5
bGVzVG9Eb20iLCJkb21TdHlsZSIsInN0eWxlc0luRG9tIiwicGFydHMiLCJhZGRTdHlsZSIsImNy
ZWF0ZVN0eWxlRWxlbWVudCIsInN0eWxlRWxlbWVudCIsImhlYWQiLCJpc1Byb2R1Y3Rpb24iLCJp
c09sZElFIiwic3R5bGVJbmRleCIsInNpbmdsZXRvbkNvdW50ZXIiLCJzaW5nbGV0b25FbGVtZW50
IiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsImFwcGx5VG9UYWciLCJuZXdPYmoiLCJtZWRpYSIsInN0
eWxlU2hlZXQiLCJyZXBsYWNlVGV4dCIsImNzc05vZGUiLCJjaGlsZE5vZGVzIiwiaGFzRG9jdW1l
bnQiLCJERUJVRyIsIkVycm9yIiwibGlzdFRvU3R5bGVzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUi
LCJwYXJlbnRJZCIsIl9pc1Byb2R1Y3Rpb24iLCJuZXdMaXN0IiwibWF5UmVtb3ZlIiwidGV4dFN0
b3JlIiwicmVwbGFjZW1lbnQiLCJybW5oIiwiZGxvY0hhc2hFbXB0eSIsImRsb2MiLCJfZXZlcnki
LCJpdGVyYXRvciIsIl9mbGF0dGVuIiwiZmxhdCIsIl9hc3luY0V2ZXJ5U2VyaWVzIiwiY29tcGxl
dGVkIiwiaXRlcmF0ZSIsInBhcmFtaWZ5U3RyaW5nIiwicGFyYW1zIiwibW9kIiwicGFyYW0iLCJy
ZWdpZnlTdHJpbmciLCJvdXQiLCJzdWJzdHIiLCJjYXB0dXJlcyIsInRlcm1pbmF0b3IiLCJyb3V0
ZXMiLCJkZWxpbWl0ZXIiLCJjaHVuayIsImxvY2F0aW9uIiwibGlzdGVuZXIiLCJoaXN0b3J5Iiwi
Y2hlY2siLCJvbkhhc2hDaGFuZ2VkIiwiZmlyZSIsIm9ucG9wc3RhdGUiLCJvbmhhc2hjaGFuZ2Ui
LCJvbmNoYW5nZSIsIm9uQ2hhbmdlRXZlbnQiLCJSb3V0ZXIiLCJkb2N1bWVudE1vZGUiLCJmcmFt
ZSIsIndyaXRlRnJhbWUiLCJhdHRhY2hFdmVudCIsInNldEludGVydmFsIiwic2V0SGFzaCIsInB1
c2hTdGF0ZSIsInRpdGxlIiwiZiIsImdldEVsZW1lbnRCeUlkIiwiY29udGVudERvY3VtZW50Iiwi
Y29udGVudFdpbmRvdyIsIndyaXRlIiwic3luY0hhc2giLCJfaGFzaCIsIl9tZXRob2RzIiwiX2lu
c2VydCIsImluc2VydEV4IiwiaGlzdG9yeVN1cHBvcnQiLCJjb25maWd1cmUiLCJyIiwicm91dGVU
byIsIm5ld1VSTCIsInVybCIsImdldFBhdGgiLCJkaXNwYXRjaCIsImNvbnZlcnRfaGFzaF9pbl9p
bml0IiwicmVwbGFjZVN0YXRlIiwicnVuX2luX2luaXQiLCJleHBsb2RlIiwic2V0Um91dGUiLCJy
b3V0ZSIsImdldFJvdXRlIiwicGF0aG5hbWUiLCJRVUVSWV9TRVBBUkFUT1IiLCJyZWN1cnNlIiwi
YXN5bmMiLCJzdHJpY3QiLCJub3Rmb3VuZCIsInJlc291cmNlIiwiaHRtbDVoaXN0b3J5IiwicnVu
X2hhbmRsZXJfaW5faW5pdCIsImFmdGVyIiwiYmVmb3JlIiwidG9rZW4iLCJtYXRjaGVyIiwicm91
dGVzRm4iLCJ1cGRhdGVBbmRJbnZva2UiLCJpbnZva2UiLCJydW5saXN0IiwiaW52b2tlZCIsIl9p
bnZva2VkIiwicmV2ZXJzZSIsInRoaXNBcmciLCJyZWdleHAiLCJmaWx0ZXJSb3V0ZXMiLCJkZWVw
Q29weSIsImFwcGx5RmlsdGVyIiwibmV3Um91dGVzIiwibWF0Y2hlZCIsImV4YWN0IiwicGFyZW50
VHlwZSIsInBhcnQiLCJleHRyYSIsImxvY2FsIiwicmVuYW1lIiwicm91dGVUeXBlIiwiaXNSb3V0
ZSIsInRUVmsiLCJuZXdTdHlsZXMiXSwibWFwcGluZ3MiOiJBQUFBQSxjQUFjLElBRVJDLE9BQ0Es
U0FBVUMsRUFBUUMsRUFBcUJDLEdBRTdDLFlBQ0FDLFFBQU9DLGVBQWVILEVBQXFCLGNBQWdCSSxP
QUFPLElDTmxFLFNBQUFDOzs7OztBQVNBLFFBQUFDLEdBQUFDLEdBQ0EsV0FBQUMsS0FBQUQsR0FB
QSxPQUFBQSxFQUdBLFFBQUFFLEdBQUFGLEdBQ0EsV0FBQUMsS0FBQUQsR0FBQSxPQUFBQSxFQUdB
LFFBQUFHLEdBQUFILEdBQ0EsV0FBQUEsRUFHQSxRQUFBSSxHQUFBSixHQUNBLFdBQUFBLEVBTUEs
UUFBQUssR0FBQVIsR0FDQSxNQUNBLGdCQUFBQSxJQUNBLGdCQUFBQSxJQUNBLGlCQUFBQSxHQVNB
LFFBQUFTLEdBQUFDLEdBQ0EsY0FBQUEsR0FBQSxnQkFBQUEsR0FTQSxRQUFBQyxHQUFBRCxHQUNB
LDBCQUFBRSxHQUFBQyxLQUFBSCxHQUdBLFFBQUFJLEdBQUFYLEdBQ0EsMEJBQUFTLEdBQUFDLEtB
QUFWLEdBTUEsUUFBQVksR0FBQUMsR0FDQSxHQUFBQyxHQUFBQyxXQUFBRixFQUNBLE9BQUFDLElB
QUEsR0FBQUUsS0FBQUMsTUFBQUgsUUFBQUksU0FBQUwsR0FNQSxRQUFBTSxHQUFBTixHQUNBLGFB
QUFBLEVBQ0EsR0FDQSxnQkFBQUEsR0FDQU8sS0FBQUMsVUFBQVIsRUFBQSxRQUNBUyxPQUFBVCxH
QU9BLFFBQUFVLEdBQUFWLEdBQ0EsR0FBQUMsR0FBQUMsV0FBQUYsRUFDQSxPQUFBVyxPQUFBVixH
QUFBRCxFQUFBQyxFQU9BLFFBQUFXLEdBQ0FDLEVBQ0FDLEdBSUEsT0FGQUMsR0FBQWpDLE9BQUFr
QyxPQUFBLE1BQ0FDLEVBQUFKLEVBQUFLLE1BQUEsS0FDQUMsRUFBQSxFQUFpQkEsRUFBQUYsRUFB
QUcsT0FBaUJELElBQ2xDSixFQUFBRSxFQUFBRSxLQUFBLENBRUEsT0FBQUwsR0FDQSxTQUFBZCxH
QUFzQixNQUFBZSxHQUFBZixFQUFBcUIsZ0JBQ3RCLFNBQUFyQixHQUFzQixNQUFBZSxHQUFBZixJ
QWdCdEIsUUFBQXNCLEdBQUFDLEVBQUFDLEdBQ0EsR0FBQUQsRUFBQUgsT0FBQSxDQUNBLEdBQUFL
LEdBQUFGLEVBQUFHLFFBQUFGLEVBQ0EsSUFBQUMsR0FBQSxFQUNBLE1BQUFGLEdBQUFJLE9BQUFG
LEVBQUEsSUFTQSxRQUFBRyxHQUFBbEMsRUFBQW1DLEdBQ0EsTUFBQUMsSUFBQWpDLEtBQUFILEVB
QUFtQyxHQU1BLFFBQUFFLEdBQUFDLEdBQ0EsR0FBQUMsR0FBQW5ELE9BQUFrQyxPQUFBLEtBQ0Es
aUJBQUFILEdBRUEsTUFEQW9CLEdBQUFwQixLQUNBb0IsRUFBQXBCLEdBQUFtQixFQUFBbkIsS0Fp
Q0EsUUFBQXFCLEdBQUFGLEVBQUFHLEdBQ0EsUUFBQUMsR0FBQUMsR0FDQSxHQUFBQyxHQUFBQyxV
QUFBbkIsTUFDQSxPQUFBa0IsR0FDQUEsRUFBQSxFQUNBTixFQUFBUSxNQUFBTCxFQUFBSSxXQUNB
UCxFQUFBbkMsS0FBQXNDLEVBQUFFLEdBQ0FMLEVBQUFuQyxLQUFBc0MsR0FJQSxNQURBQyxHQUFB
SyxRQUFBVCxFQUFBWixPQUNBZ0IsRUFNQSxRQUFBTSxHQUFBekIsRUFBQTBCLEdBQ0FBLEtBQUEs
Q0FHQSxLQUZBLEdBQUF4QixHQUFBRixFQUFBRyxPQUFBdUIsRUFDQUMsRUFBQSxHQUFBQyxPQUFB
MUIsR0FDQUEsS0FDQXlCLEVBQUF6QixHQUFBRixFQUFBRSxFQUFBd0IsRUFFQSxPQUFBQyxHQU1B
LFFBQUFFLEdBQUFDLEVBQUFDLEdBQ0EsT0FBQW5CLEtBQUFtQixHQUNBRCxFQUFBbEIsR0FBQW1C
LEVBQUFuQixFQUVBLE9BQUFrQixHQU1BLFFBQUFFLEdBQUExQixHQUVBLE9BREEyQixNQUNBL0Is
RUFBQSxFQUFpQkEsRUFBQUksRUFBQUgsT0FBZ0JELElBQ2pDSSxFQUFBSixJQUNBMkIsRUFBQUks
RUFBQTNCLEVBQUFKLEdBR0EsT0FBQStCLEdBUUEsUUFBQUMsR0FBQWQsRUFBQWUsRUFBQUMsSUF5
QkEsUUFBQUMsR0FBQWpCLEVBQUFlLEdBQ0EsR0FBQWYsSUFBQWUsRUFBZ0IsUUFDaEIsSUFBQUcs
R0FBQTlELEVBQUE0QyxHQUNBbUIsRUFBQS9ELEVBQUEyRCxFQUNBLEtBQUFHLElBQUFDLEVBc0JH
LE9BQUFELElBQUFDLEdBQ0gvQyxPQUFBNEIsS0FBQTVCLE9BQUEyQyxFQXRCQSxLQUNBLEdBQUFL
LEdBQUFaLE1BQUFhLFFBQUFyQixHQUNBc0IsRUFBQWQsTUFBQWEsUUFBQU4sRUFDQSxJQUFBSyxH
QUFBRSxFQUNBLE1BQUF0QixHQUFBakIsU0FBQWdDLEVBQUFoQyxRQUFBaUIsRUFBQXVCLE1BQUEs
U0FBQUMsRUFBQTFDLEdBQ0EsTUFBQW1DLEdBQUFPLEVBQUFULEVBQUFqQyxLQUVPLElBQUFzQyxH
QUFBRSxFQVFQLFFBUEEsSUFBQUcsR0FBQWhGLE9BQUFpRixLQUFBMUIsR0FDQTJCLEVBQUFsRixP
QUFBaUYsS0FBQVgsRUFDQSxPQUFBVSxHQUFBMUMsU0FBQTRDLEVBQUE1QyxRQUFBMEMsRUFBQUYs
TUFBQSxTQUFBL0IsR0FDQSxNQUFBeUIsR0FBQWpCLEVBQUFSLEdBQUF1QixFQUFBdkIsTUFNSyxN
QUFBZ0MsR0FFTCxVQVNBLFFBQUFJLEdBQUExQyxFQUFBdkIsR0FDQSxPQUFBbUIsR0FBQSxFQUFp
QkEsRUFBQUksRUFBQUgsT0FBZ0JELElBQ2pDLEdBQUFtQyxFQUFBL0IsRUFBQUosR0FBQW5CLEdB
QWtDLE1BQUFtQixFQUVsQyxVQU1BLFFBQUErQyxHQUFBbEMsR0FDQSxHQUFBbUMsSUFBQSxDQUNB
LG1CQUNBQSxJQUNBQSxHQUFBLEVBQ0FuQyxFQUFBUSxNQUFBNEIsS0FBQTdCLGFBeUhBLFFBQUE4
QixHQUFBeEQsR0FDQSxHQUFBd0MsSUFBQXhDLEVBQUEsSUFBQXlELFdBQUEsRUFDQSxhQUFBakIs
R0FBQSxLQUFBQSxFQU1BLFFBQUFrQixHQUFBN0UsRUFBQW1DLEVBQUE3QixFQUFBd0UsR0FDQTFG
LE9BQUFDLGVBQUFXLEVBQUFtQyxHQUNBN0MsTUFBQWdCLEVBQ0F3RSxlQUNBQyxVQUFBLEVBQ0FD
LGNBQUEsSUFRQSxRQUFBQyxHQUFBQyxHQUNBLElBQUFDLEdBQUFDLEtBQUFGLEdBQUEsQ0FHQSxH
QUFBRyxHQUFBSCxFQUFBMUQsTUFBQSxJQUNBLGlCQUFBeEIsR0FDQSxPQUFBeUIsR0FBQSxFQUFt
QkEsRUFBQTRELEVBQUEzRCxPQUFxQkQsSUFBQSxDQUN4QyxJQUFBekIsRUFBaUIsTUFDakJBLEtB
QUFxRixFQUFBNUQsSUFFQSxNQUFBekIsS0FxR0EsUUFBQXNGLEdBQUFDLEVBQUFDLEVBQUFDLEdB
Q0EsR0FBQUMsR0FBQUMsYUFDQUQsR0FBQUMsYUFBQXhGLEtBQUEsS0FBQW9GLEVBQUFDLEVBQUFD
LE9BQ0csQ0FLSCxJQUFBRyxJQUFBLG1CQUFBQyxTQUdBLEtBQUFOLEVBRkFNLFNBQUFDLE1BQUFQ
LElBNkRBLFFBQUFRLEdBQUFDLEdBQ0Esd0JBQUFBLElBQUEsY0FBQVosS0FBQVksRUFBQXBGLFlB
Z0tBLFFBQUFxRixHQUFBQyxHQUNBQyxHQUFBQyxRQUFtQkMsR0FBQUMsS0FBQUgsR0FBQUMsUUFD
bkJELEdBQUFDLE9BQUFGLEVBR0EsUUFBQUssS0FDQUosR0FBQUMsT0FBQUMsR0FBQUcsTUEyR0Es
UUFBQUMsR0FBQUwsRUFBQU0sRUFBQXJDLEdBRUErQixFQUFBTyxVQUFBRCxFQVNBLFFBQUFFLEdB
QUFSLEVBQUFNLEVBQUFyQyxHQUNBLE9BQUE1QyxHQUFBLEVBQUFtQixFQUFBeUIsRUFBQTNDLE9B
QWtDRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FDekMsR0FBQVUsR0FBQWtDLEVBQUE1QyxFQUNBb0Qs
R0FBQXVCLEVBQUFqRSxFQUFBdUUsRUFBQXZFLEtBU0EsUUFBQTBFLEdBQUF2SCxFQUFBd0gsR0FD
QSxHQUFBL0csRUFBQVQsR0FBQSxDQUdBLEdBQUF5SCxFQWVBLE9BZEE3RSxHQUFBNUMsRUFBQSxX
QUFBQSxFQUFBMEgsaUJBQUFDLElBQ0FGLEVBQUF6SCxFQUFBMEgsT0FFQUUsR0FBQUMsZ0JBQ0FD
LE9BQ0FqRSxNQUFBYSxRQUFBMUUsSUFBQVcsRUFBQVgsS0FDQUYsT0FBQWlJLGFBQUEvSCxLQUNB
QSxFQUFBZ0ksU0FFQVAsRUFBQSxHQUFBRSxJQUFBM0gsSUFFQXdILEdBQUFDLEdBQ0FBLEVBQUFR
LFVBRUFSLEdBTUEsUUFBQVMsR0FDQXhILEVBQ0FtQyxFQUNBN0IsRUFDQW1ILEVBQ0FDLEdBRUEs
R0FBQUMsR0FBQSxHQUFBeEIsSUFFQXlCLEVBQUF4SSxPQUFBeUkseUJBQUE3SCxFQUFBbUMsRUFD
QSxLQUFBeUYsSUFBQSxJQUFBQSxFQUFBNUMsYUFBQSxDQUtBLEdBQUE4QyxHQUFBRixLQUFBRyxJ
QUNBQyxFQUFBSixLQUFBSyxJQUVBQyxHQUFBUixHQUFBYixFQUFBdkcsRUFDQWxCLFFBQUFDLGVB
QUFXLEVBQUFtQyxHQUNBMkMsWUFBQSxFQUNBRSxjQUFBLEVBQ0ErQyxJQUFBLFdBQ0EsR0FBQXpJ
LEdBQUF3SSxJQUFBM0gsS0FBQUgsR0FBQU0sQ0FVQSxPQVRBNkYsSUFBQUMsU0FDQXVCLEVBQUFR
LFNBQ0FELEdBQ0FBLEVBQUFQLElBQUFRLFNBRUFoRixNQUFBYSxRQUFBMUUsSUFDQThJLEVBQUE5
SSxJQUdBQSxHQUVBMkksSUFBQSxTQUFBSSxHQUNBLEdBQUEvSSxHQUFBd0ksSUFBQTNILEtBQUFI
LEdBQUFNLENBRUErSCxLQUFBL0ksR0FBQStJLE9BQUEvSSxRQU9BMEksRUFDQUEsRUFBQTdILEtB
QUFILEVBQUFxSSxHQUVBL0gsRUFBQStILEVBRUFILEdBQUFSLEdBQUFiLEVBQUF3QixHQUNBVixF
QUFBVyxjQVVBLFFBQUFMLEdBQUE3QixFQUFBakUsRUFBQTdCLEdBQ0EsR0FBQTZDLE1BQUFhLFFB
QUFvQyxJQUFBL0YsRUFBQThCLEdBR0EsTUFGQWlFLEdBQUExRSxPQUFBakIsS0FBQThILElBQUFu
QyxFQUFBMUUsT0FBQVMsR0FDQWlFLEVBQUFuRSxPQUFBRSxFQUFBLEVBQUE3QixHQUNBQSxDQUVB
LElBQUE0QixFQUFBa0UsRUFBQWpFLEdBRUEsTUFEQWlFLEdBQUFqRSxHQUFBN0IsRUFDQUEsQ0FF
QSxJQUFBeUcsR0FBQSxFQUFBQyxNQUNBLE9BQUFaLEdBQUFrQixRQUFBUCxLQUFBUSxRQUtBakgs
RUFFQXlHLEdBSUFTLEVBQUFULEVBQUF6SCxNQUFBNkMsRUFBQTdCLEdBQ0F5RyxFQUFBWSxJQUFB
VyxTQUNBaEksSUFMQThGLEVBQUFqRSxHQUFBN0IsRUFDQUEsR0FVQSxRQUFBa0ksR0FBQXBDLEVB
QUFqRSxHQUNBLEdBQUFnQixNQUFBYSxRQUFBb0MsSUFBQS9GLEVBQUE4QixHQUVBLFdBREFpRSxH
QUFBbkUsT0FBQUUsRUFBQSxFQUdBLElBQUE0RSxHQUFBLEVBQUFDLE1BQ0FaLEdBQUFrQixRQUFB
UCxLQUFBUSxTQU9BckYsRUFBQWtFLEVBQUFqRSxXQUdBaUUsR0FBQWpFLEdBQ0E0RSxHQUdBQSxF
QUFBWSxJQUFBVyxVQU9BLFFBQUFGLEdBQUE5SSxHQUNBLE9BQUE2RSxPQUFBLEdBQUExQyxFQUFB
LEVBQUFtQixFQUFBdEQsRUFBQW9DLE9BQWlERCxFQUFBbUIsRUFBT25CLElBQ3hEMEMsRUFBQTdF
LEVBQUFtQyxHQUNBMEMsS0FBQTZDLFFBQUE3QyxFQUFBNkMsT0FBQVcsSUFBQVEsU0FDQWhGLE1B
QUFhLFFBQUFHLElBQ0FpRSxFQUFBakUsR0FnQ0EsUUFBQXNFLEdBQUFwRixFQUFBcUYsR0FDQSxJ
QUFBQSxFQUFjLE1BQUFyRixFQUdkLFFBRkFsQixHQUFBd0csRUFBQUMsRUFDQXZFLEVBQUFqRixP
QUFBaUYsS0FBQXFFLEdBQ0FqSCxFQUFBLEVBQWlCQSxFQUFBNEMsRUFBQTNDLE9BQWlCRCxJQUNs
Q1UsRUFBQWtDLEVBQUE1QyxHQUNBa0gsRUFBQXRGLEVBQUFsQixHQUNBeUcsRUFBQUYsRUFBQXZH
LEdBQ0FELEVBQUFtQixFQUFBbEIsR0FFS2xDLEVBQUEwSSxJQUFBMUksRUFBQTJJLElBQ0xILEVB
QUFFLEVBQUFDLEdBRkFYLEVBQUE1RSxFQUFBbEIsRUFBQXlHLEVBS0EsT0FBQXZGLEdBTUEsUUFB
QXdGLEdBQ0FDLEVBQ0FDLEVBQ0F2RCxHQUVBLE1BQUFBLEdBbUJHc0QsR0FBQUMsRUFDSCxXQUVB
LEdBQUFDLEdBQUEsa0JBQUFELEdBQ0FBLEVBQUE1SSxLQUFBcUYsR0FDQXVELEVBQ0FFLEVBQUEs
a0JBQUFILEdBQ0FBLEVBQUEzSSxLQUFBcUYsT0FDQTlGLEVBQ0EsT0FBQXNKLEdBQ0FQLEVBQUFP
LEVBQUFDLEdBRUFBLE9BWkcsR0FqQkhGLEVBR0FELEVBUUEsV0FDQSxNQUFBTCxHQUNBLGtCQUFB
TSxLQUFBNUksS0FBQXVFLE1BQUFxRSxFQUNBLGtCQUFBRCxLQUFBM0ksS0FBQXVFLE1BQUFvRSxJ
QVZBQyxFQUhBRCxFQTJEQSxRQUFBSSxHQUNBSixFQUNBQyxHQUVBLE1BQUFBLEdBQ0FELEVBQ0FB
LEVBQUFLLE9BQUFKLEdBQ0E1RixNQUFBYSxRQUFBK0UsR0FDQUEsR0FDQUEsR0FDQUQsRUFjQSxR
QUFBTSxHQUFBTixFQUFBQyxHQUNBLEdBQUF2RixHQUFBcEUsT0FBQWtDLE9BQUF3SCxHQUFBLEtB
Q0EsT0FBQUMsR0FDQTNGLEVBQUFJLEVBQUF1RixHQUNBdkYsRUE4RUEsUUFBQTZGLEdBQUFDLEdB
Q0EsR0FBQUMsR0FBQUQsRUFBQUMsS0FDQSxJQUFBQSxFQUFBLENBQ0EsR0FDQTlILEdBQUFuQixF
QUFBa0osRUFEQWhHLElBRUEsSUFBQUwsTUFBQWEsUUFBQXVGLEdBRUEsSUFEQTlILEVBQUE4SCxF
QUFBN0gsT0FDQUQsS0FFQSxpQkFEQW5CLEVBQUFpSixFQUFBOUgsTUFFQStILEVBQUFDLEdBQUFu
SixHQUNBa0QsRUFBQWdHLElBQXFCRSxLQUFBLFdBS2xCLElBQUF6SixFQUFBc0osR0FDSCxPQUFB
cEgsS0FBQW9ILEdBQ0FqSixFQUFBaUosRUFBQXBILEdBQ0FxSCxFQUFBQyxHQUFBdEgsR0FDQXFC
LEVBQUFnRyxHQUFBdkosRUFBQUssR0FDQUEsR0FDV29KLEtBQUFwSixFQUdYZ0osR0FBQUMsTUFB
QS9GLEdBTUEsUUFBQW1HLEdBQUFMLEdBQ0EsR0FBQU0sR0FBQU4sRUFBQU0sTUFDQSxJQUFBekcs
TUFBQWEsUUFBQTRGLEdBRUEsT0FEQUMsR0FBQVAsRUFBQU0sVUFDQW5JLEVBQUEsRUFBbUJBLEVB
QUFtSSxFQUFBbEksT0FBbUJELElBQ3RDb0ksRUFBQUQsRUFBQW5JLElBQUFtSSxFQUFBbkksR0FR
QSxRQUFBcUksR0FBQVIsR0FDQSxHQUFBUyxHQUFBVCxFQUFBVSxVQUNBLElBQUFELEVBQ0EsT0FB
QTVILEtBQUE0SCxHQUFBLENBQ0EsR0FBQWxGLEdBQUFrRixFQUFBNUgsRUFDQSxtQkFBQTBDLEtB
Q0FrRixFQUFBNUgsSUFBcUJLLEtBQUFxQyxFQUFBb0YsT0FBQXBGLEtBVXJCLFFBQUFxRixHQUNB
QyxFQUNBQyxFQUNBNUUsR0FnQ0EsUUFBQTZFLEdBQUFsSSxHQUNBLEdBQUFtSSxHQUFBQyxHQUFB
cEksSUFBQXFJLEVBQ0FsQixHQUFBbkgsR0FBQW1JLEVBQUFILEVBQUFoSSxHQUFBaUksRUFBQWpJ
LEdBQUFxRCxFQUFBckQsR0E1QkEsa0JBQUFpSSxLQUNBQSxJQUFBZCxTQUdBRCxFQUFBZSxHQUNB
VCxFQUFBUyxHQUNBTixFQUFBTSxFQUNBLElBQUFLLEdBQUFMLEVBQUFNLE9BSUEsSUFIQUQsSUFD
QU4sRUFBQUQsRUFBQUMsRUFBQU0sRUFBQWpGLElBRUE0RSxFQUFBTyxPQUNBLE9BQUFsSixHQUFB
LEVBQUFtQixFQUFBd0gsRUFBQU8sT0FBQWpKLE9BQTRDRCxFQUFBbUIsRUFBT25CLElBQ25EMEks
RUFBQUQsRUFBQUMsRUFBQUMsRUFBQU8sT0FBQWxKLEdBQUErRCxFQUdBLElBQ0FyRCxHQURBbUgs
SUFFQSxLQUFBbkgsSUFBQWdJLEdBQ0FFLEVBQUFsSSxFQUVBLEtBQUFBLElBQUFpSSxHQUNBbEks
RUFBQWlJLEVBQUFoSSxJQUNBa0ksRUFBQWxJLEVBT0EsT0FBQW1ILEdBUUEsUUFBQXNCLEdBQ0F0
QixFQUNBSSxFQUNBbUIsRUFDQUMsR0FHQSxtQkFBQUQsR0FBQSxDQUdBLEdBQUFFLEdBQUF6QixF
QUFBSSxFQUVBLElBQUF4SCxFQUFBNkksRUFBQUYsR0FBMkIsTUFBQUUsR0FBQUYsRUFDM0IsSUFB
QUcsR0FBQXZCLEdBQUFvQixFQUNBLElBQUEzSSxFQUFBNkksRUFBQUMsR0FBb0MsTUFBQUQsR0FB
QUMsRUFDcEMsSUFBQUMsR0FBQUMsR0FBQUYsRUFDQSxJQUFBOUksRUFBQTZJLEVBQUFFLEdBQXFD
LE1BQUFGLEdBQUFFLEVBU3JDLE9BUEFGLEdBQUFGLElBQUFFLEVBQUFDLElBQUFELEVBQUFFLElB
WUEsUUFBQUUsR0FDQWhKLEVBQ0FpSixFQUNBQyxFQUNBN0YsR0FFQSxHQUFBOEYsR0FBQUYsRUFB
QWpKLEdBQ0FvSixHQUFBckosRUFBQW1KLEVBQUFsSixHQUNBN0MsRUFBQStMLEVBQUFsSixFQVVB
LElBUkFxSixFQUFBQyxRQUFBSCxFQUFBNUIsUUFDQTZCLElBQUFySixFQUFBb0osRUFBQSxXQUNB
aE0sR0FBQSxFQUNLa00sRUFBQXpLLE9BQUF1SyxFQUFBNUIsT0FBQSxLQUFBcEssT0FBQW9NLEdB
QUF2SixLQUNMN0MsR0FBQSxRQUlBSSxLQUFBSixFQUFBLENBQ0FBLEVBQUFxTSxFQUFBbkcsRUFB
QThGLEVBQUFuSixFQUdBLElBQUF5SixHQUFBMUUsR0FBQUMsYUFDQUQsSUFBQUMsZUFBQSxFQUNB
TixFQUFBdkgsR0FDQTRILEdBQUFDLGNBQUF5RSxFQUtBLE1BQUF0TSxHQU1BLFFBQUFxTSxHQUFB
bkcsRUFBQThGLEVBQUFuSixHQUVBLEdBQUFELEVBQUFvSixFQUFBLFlBR0EsR0FBQXpHLEdBQUF5
RyxFQUFBTyxPQVlBLE9BQUFyRyxNQUFBc0csU0FBQVQsZUFDQTNMLEtBQUE4RixFQUFBc0csU0FB
QVQsVUFBQWxKLFFBQ0F6QyxLQUFBOEYsRUFBQXVHLE9BQUE1SixHQUVBcUQsRUFBQXVHLE9BQUE1
SixHQUlBLGtCQUFBMEMsSUFBQSxhQUFBbUgsRUFBQVYsRUFBQTVCLE1BQ0E3RSxFQUFBMUUsS0FB
QXFGLEdBQ0FYLEdBaUZBLFFBQUFtSCxHQUFBMUosR0FDQSxHQUFBMkosR0FBQTNKLEtBQUExQixX
QUFBcUwsTUFBQSxxQkFDQSxPQUFBQSxLQUFBLE1BR0EsUUFBQVQsR0FBQTlCLEVBQUFwSCxHQUNB
LElBQUFhLE1BQUFhLFFBQUExQixHQUNBLE1BQUEwSixHQUFBMUosS0FBQTBKLEVBQUF0QyxFQUVB
LFFBQUFqSSxHQUFBLEVBQUF5SyxFQUFBNUosRUFBQVosT0FBa0NELEVBQUF5SyxFQUFTekssSUFD
M0MsR0FBQXVLLEVBQUExSixFQUFBYixNQUFBdUssRUFBQXRDLEdBQ0EsUUFJQSxVQTRKQSxRQUFB
eUMsR0FBQTdMLEdBQ0EsVUFBQThMLFFBQUExTSxpQkFBQXFCLE9BQUFULElBT0EsUUFBQStMLEdB
QUFDLEdBQ0EsR0FBQUMsR0FBQSxHQUFBSCxJQUNBRSxFQUFBRSxJQUNBRixFQUFBRyxLQUNBSCxF
QUFBSSxTQUNBSixFQUFBSyxLQUNBTCxFQUFBTSxJQUNBTixFQUFBTyxRQUNBUCxFQUFBUSxpQkFD
QVIsRUFBQVMsYUFPQSxPQUxBUixHQUFBUyxHQUFBVixFQUFBVSxHQUNBVCxFQUFBVSxTQUFBWCxF
QUFBVyxTQUNBVixFQUFBcEssSUFBQW1LLEVBQUFuSyxJQUNBb0ssRUFBQVcsVUFBQVosRUFBQVks
VUFDQVgsRUFBQVksVUFBQSxFQUNBWixFQUdBLFFBQUFhLElBQUFDLEdBR0EsT0FGQW5CLEdBQUFt
QixFQUFBM0wsT0FDQThCLEVBQUEsR0FBQUwsT0FBQStJLEdBQ0F6SyxFQUFBLEVBQWlCQSxFQUFB
eUssRUFBU3pLLElBQzFCK0IsRUFBQS9CLEdBQUE0SyxFQUFBZ0IsRUFBQTVMLEdBRUEsT0FBQStC
LEdBb0JBLFFBQUE4SixJQUFBQyxHQUNBLFFBQUFDLEtBQ0EsR0FBQUMsR0FBQTVLLFVBRUEwSyxF
QUFBQyxFQUFBRCxHQUNBLEtBQUFwSyxNQUFBYSxRQUFBdUosR0FPQSxNQUFBQSxHQUFBekssTUFB
QSxLQUFBRCxVQUxBLFFBREEwSixHQUFBZ0IsRUFBQUcsUUFDQWpNLEVBQUEsRUFBcUJBLEVBQUE4
SyxFQUFBN0ssT0FBbUJELElBQ3hDOEssRUFBQTlLLEdBQUFxQixNQUFBLEtBQUEySyxHQVFBLE1B
REFELEdBQUFELE1BQ0FDLEVBR0EsUUFBQUcsSUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQXZJ
LEdBRUEsR0FBQWdFLEdBQUF3RSxFQUFBQyxFQUFBQyxDQUNBLEtBQUExRSxJQUFBb0UsR0FDQUks
RUFBQUosRUFBQXBFLEdBQ0F5RSxFQUFBSixFQUFBckUsR0FDQTBFLEVBQUFDLEdBQUEzRSxHQUNB
aEssRUFBQXdPLEtBS0t4TyxFQUFBeU8sSUFDTHpPLEVBQUF3TyxFQUFBVCxPQUNBUyxFQUFBSixF
QUFBcEUsR0FBQThELEdBQUFVLElBRUFGLEVBQUFJLEVBQUExRSxLQUFBd0UsRUFBQUUsRUFBQTFK
LEtBQUEwSixFQUFBRSxRQUFBRixFQUFBRyxVQUNLTCxJQUFBQyxJQUNMQSxFQUFBVixJQUFBUyxF
QUNBSixFQUFBcEUsR0FBQXlFLEdBR0EsS0FBQXpFLElBQUFxRSxHQUNBck8sRUFBQW9PLEVBQUFw
RSxNQUNBMEUsRUFBQUMsR0FBQTNFLEdBQ0F1RSxFQUFBRyxFQUFBMUUsS0FBQXFFLEVBQUFyRSxH
QUFBMEUsRUFBQUUsVUFPQSxRQUFBRSxJQUFBekosRUFBQTBKLEVBQUFDLEdBSUEsUUFBQUMsS0FD
QUQsRUFBQTFMLE1BQUE0QixLQUFBN0IsV0FHQWpCLEVBQUE0TCxFQUFBRCxJQUFBa0IsR0FQQSxH
QUFBakIsR0FDQWtCLEVBQUE3SixFQUFBMEosRUFTQS9PLEdBQUFrUCxHQUVBbEIsRUFBQUYsSUFB
QW1CLElBR0E5TyxFQUFBK08sRUFBQW5CLE1BQUEzTixFQUFBOE8sRUFBQUMsU0FFQW5CLEVBQUFr
QixFQUNBbEIsRUFBQUQsSUFBQWpILEtBQUFtSSxJQUdBakIsRUFBQUYsSUFBQW9CLEVBQUFELElB
SUFqQixFQUFBbUIsUUFBQSxFQUNBOUosRUFBQTBKLEdBQUFmLEVBS0EsUUFBQW9CLElBQ0FuQyxF
QUNBekcsRUFDQXdHLEdBS0EsR0FBQXBCLEdBQUFwRixFQUFBc0QsUUFBQUMsS0FDQSxLQUFBL0os
RUFBQTRMLEdBQUEsQ0FHQSxHQUFBNUgsTUFDQXFMLEVBQUFwQyxFQUFBb0MsTUFDQXRGLEVBQUFr
RCxFQUFBbEQsS0FDQSxJQUFBNUosRUFBQWtQLElBQUFsUCxFQUFBNEosR0FDQSxPQUFBcEgsS0FB
QWlKLEdBQUEsQ0FDQSxHQUFBMEQsR0FBQXBELEdBQUF2SixFQWlCQTRNLElBQUF2TCxFQUFBK0Ys
RUFBQXBILEVBQUEyTSxHQUFBLElBQ0FDLEdBQUF2TCxFQUFBcUwsRUFBQTFNLEVBQUEyTSxHQUFB
LEdBR0EsTUFBQXRMLElBR0EsUUFBQXVMLElBQ0F2TCxFQUNBd0wsRUFDQTdNLEVBQ0EyTSxFQUNB
RyxHQUVBLEdBQUF0UCxFQUFBcVAsR0FBQSxDQUNBLEdBQUE5TSxFQUFBOE0sRUFBQTdNLEdBS0Es
TUFKQXFCLEdBQUFyQixHQUFBNk0sRUFBQTdNLEdBQ0E4TSxTQUNBRCxHQUFBN00sSUFFQSxDQUNL
LElBQUFELEVBQUE4TSxFQUFBRixHQUtMLE1BSkF0TCxHQUFBckIsR0FBQTZNLEVBQUFGLEdBQ0FH
LFNBQ0FELEdBQUFGLElBRUEsRUFHQSxTQWlCQSxRQUFBSSxJQUFBeEMsR0FDQSxPQUFBakwsR0FB
QSxFQUFpQkEsRUFBQWlMLEVBQUFoTCxPQUFxQkQsSUFDdEMsR0FBQTBCLE1BQUFhLFFBQUEwSSxF
QUFBakwsSUFDQSxNQUFBMEIsT0FBQWdNLFVBQUFoRyxPQUFBckcsU0FBQTRKLEVBR0EsT0FBQUEs
R0FPQSxRQUFBMEMsSUFBQTFDLEdBQ0EsTUFBQTVNLEdBQUE0TSxJQUNBUCxFQUFBTyxJQUNBdkos
TUFBQWEsUUFBQTBJLEdBQ0EyQyxHQUFBM0MsT0FDQWhOLEdBR0EsUUFBQTRQLElBQUFDLEdBQ0Es
TUFBQTVQLEdBQUE0UCxJQUFBNVAsRUFBQTRQLEVBQUE1QyxPQUFBOU0sRUFBQTBQLEVBQUFyQyxX
QUdBLFFBQUFtQyxJQUFBM0MsRUFBQThDLEdBQ0EsR0FDQS9OLEdBQUFrQyxFQUFBOEwsRUFEQWpN
LElBRUEsS0FBQS9CLEVBQUEsRUFBYUEsRUFBQWlMLEVBQUFoTCxPQUFxQkQsSUFDbENrQyxFQUFB
K0ksRUFBQWpMLEdBQ0FqQyxFQUFBbUUsSUFBQSxpQkFBQUEsS0FDQThMLEVBQUFqTSxJQUFBOUIs
T0FBQSxHQUVBeUIsTUFBQWEsUUFBQUwsR0FDQUgsRUFBQThDLEtBQUF4RCxNQUFBVSxFQUFBNkws
R0FBQTFMLEdBQUE2TCxHQUFBLFFBQUEvTixJQUNLM0IsRUFBQTZELEdBQ0wyTCxHQUFBRyxHQUlB
LEVBQUE5QyxNQUFBNUwsT0FBQTRDLEdBQ08sS0FBQUEsR0FFUEgsRUFBQThDLEtBQUE2RixFQUFB
eEksSUFHQTJMLEdBQUEzTCxJQUFBMkwsR0FBQUcsR0FFQWpNLElBQUE5QixPQUFBLEdBQUF5SyxF
QUFBc0QsRUFBQTlDLEtBQUFoSixFQUFBZ0osT0FHQS9NLEVBQUE4TSxFQUFBZ0QsV0FDQS9QLEVB
QUFnRSxFQUFBNkksTUFDQWhOLEVBQUFtRSxFQUFBeEIsTUFDQXhDLEVBQUE2UCxLQUNBN0wsRUFB
QXhCLElBQUEsVUFBQXFOLEVBQUEsSUFBQS9OLEVBQUEsTUFFQStCLEVBQUE4QyxLQUFBM0MsSUFJ
QSxPQUFBSCxHQUtBLFFBQUFtTSxJQUFBQyxFQUFBQyxHQUlBLE1BSEFELEdBQUFFLFlBQUFGLEVB
QUEvRCxVQUNBK0QsSUFBQS9ELFNBRUE5TCxFQUFBNlAsR0FDQUMsRUFBQXpNLE9BQUF3TSxHQUNB
QSxFQUdBLFFBQUFHLElBQ0FDLEVBQ0F2RCxFQUNBSSxFQUNBSCxFQUNBRixHQUVBLEdBQUErQyxH
QUFBVSxJQUdBLE9BRkFWLEdBQUF4QyxhQUFBaUQsRUFDQVQsRUFBQVcsV0FBb0J6RCxPQUFBSSxV
QUFBSCxXQUFBRixPQUNwQitDLEVBR0EsUUFBQVksSUFDQUgsRUFDQUksRUFDQXZELEdBRUEsR0FB
QWpOLEVBQUFvUSxFQUFBbEssUUFBQW5HLEVBQUFxUSxFQUFBSyxXQUNBLE1BQUFMLEdBQUFLLFNB
R0EsSUFBQTFRLEVBQUFxUSxFQUFBTSxVQUNBLE1BQUFOLEdBQUFNLFFBR0EsSUFBQTFRLEVBQUFv
USxFQUFBTyxVQUFBNVEsRUFBQXFRLEVBQUFRLGFBQ0EsTUFBQVIsR0FBQVEsV0FHQSxLQUFBN1Es
RUFBQXFRLEVBQUFTLFVBR0csQ0FDSCxHQUFBQSxHQUFBVCxFQUFBUyxVQUFBNUQsR0FDQTZELEdB
QUEsRUFFQUMsRUFBQSxXQUNBLE9BQUFsUCxHQUFBLEVBQUFtQixFQUFBNk4sRUFBQS9PLE9BQTBD
RCxFQUFBbUIsRUFBT25CLElBQ2pEZ1AsRUFBQWhQLEdBQUFtUCxnQkFJQUMsRUFBQXJNLEVBQUEs
U0FBQWhCLEdBRUF3TSxFQUFBTSxTQUFBWCxHQUFBbk0sRUFBQTRNLEdBR0FNLEdBQ0FDLE1BSUFH
LEVBQUF0TSxFQUFBLFNBQUF1TSxHQUtBcFIsRUFBQXFRLEVBQUFLLGFBQ0FMLEVBQUFsSyxPQUFB
LEVBQ0E2SyxPQUlBbk4sRUFBQXdNLEVBQUFhLEVBQUFDLEVBNkNBLE9BM0NBL1EsR0FBQXlELEtB
Q0Esa0JBQUFBLEdBQUF3TixLQUVBeFIsRUFBQXdRLEVBQUFNLFdBQ0E5TSxFQUFBd04sS0FBQUgs
RUFBQUMsR0FFT25SLEVBQUE2RCxFQUFBeU4sWUFBQSxrQkFBQXpOLEdBQUF5TixVQUFBRCxPQUNQ
eE4sRUFBQXlOLFVBQUFELEtBQUFILEVBQUFDLEdBRUFuUixFQUFBNkQsRUFBQXNDLFNBQ0FrSyxF
QUFBSyxVQUFBVixHQUFBbk0sRUFBQXNDLE1BQUFzSyxJQUdBelEsRUFBQTZELEVBQUErTSxXQUNB
UCxFQUFBUSxZQUFBYixHQUFBbk0sRUFBQStNLFFBQUFILEdBQ0EsSUFBQTVNLEVBQUEwTixNQUNB
bEIsRUFBQU8sU0FBQSxFQUVBWSxXQUFBLFdBQ0EzUixFQUFBd1EsRUFBQU0sV0FBQTlRLEVBQUF3
USxFQUFBbEssU0FDQWtLLEVBQUFPLFNBQUEsRUFDQUksTUFFYW5OLEVBQUEwTixPQUFBLE1BSWJ2
UixFQUFBNkQsRUFBQTROLFVBQ0FELFdBQUEsV0FDQTNSLEVBQUF3USxFQUFBTSxXQUNBUSxFQUdB
LE9BR1d0TixFQUFBNE4sV0FLWFYsR0FBQSxFQUVBVixFQUFBTyxRQUNBUCxFQUFBUSxZQUNBUixF
QUFBTSxTQS9FQU4sRUFBQVMsU0FBQW5LLEtBQUF1RyxHQXFGQSxRQUFBd0UsSUFBQTNFLEdBQ0Es
R0FBQXZKLE1BQUFhLFFBQUEwSSxHQUNBLE9BQUFqTCxHQUFBLEVBQW1CQSxFQUFBaUwsRUFBQWhM
LE9BQXFCRCxJQUFBLENBQ3hDLEdBQUFrQyxHQUFBK0ksRUFBQWpMLEVBQ0EsSUFBQTlCLEVBQUFn
RSxJQUFBaEUsRUFBQWdFLEVBQUFtSixrQkFDQSxNQUFBbkosSUFVQSxRQUFBMk4sSUFBQTlMLEdB
Q0FBLEVBQUErTCxRQUFBblMsT0FBQWtDLE9BQUEsTUFDQWtFLEVBQUFnTSxlQUFBLENBRUEsSUFB
QUMsR0FBQWpNLEVBQUFzRyxTQUFBNEYsZ0JBQ0FELElBQ0FFLEdBQUFuTSxFQUFBaU0sR0FNQSxR
QUFBM0QsSUFBQUksRUFBQTVMLEVBQUFzUCxHQUNBQSxFQUNBeEwsR0FBQXlMLE1BQUEzRCxFQUFB
NUwsR0FFQThELEdBQUEwTCxJQUFBNUQsRUFBQTVMLEdBSUEsUUFBQXlQLElBQUE3RCxFQUFBNUws
R0FDQThELEdBQUE0TCxLQUFBOUQsRUFBQTVMLEdBR0EsUUFBQXFQLElBQ0FuTSxFQUNBaU0sRUFD
QVEsR0FFQTdMLEdBQUFaLEVBQ0FtSSxHQUFBOEQsRUFBQVEsTUFBK0NuRSxHQUFBaUUsR0FBQXZN
LEdBNEcvQyxRQUFBME0sSUFDQXhGLEVBQ0FHLEdBRUEsR0FBQXNGLEtBQ0EsS0FBQXpGLEVBQ0Es
TUFBQXlGLEVBR0EsUUFEQUMsTUFDQTNRLEVBQUEsRUFBQW1CLEVBQUE4SixFQUFBaEwsT0FBc0NE
LEVBQUFtQixFQUFPbkIsSUFBQSxDQUM3QyxHQUFBMkksR0FBQXNDLEVBQUFqTCxFQUdBLElBQUEy
SSxFQUFBeUMsYUFBQXpDLEVBQUFpSSxvQkFBQXhGLElBQ0F6QyxFQUFBcUMsTUFBQSxNQUFBckMs
RUFBQXFDLEtBQUE2RixLQVVBRixFQUFBOUwsS0FBQThELE9BVEEsQ0FDQSxHQUFBWixHQUFBWSxF
QUFBcUMsS0FBQTZGLEtBQ0FBLEVBQUFILEVBQUEzSSxLQUFBMkksRUFBQTNJLE1BQ0EsY0FBQVks
RUFBQW9DLElBQ0E4RixFQUFBaE0sS0FBQXhELE1BQUF3UCxFQUFBbEksRUFBQXNDLFVBRUE0RixF
QUFBaE0sS0FBQThELElBVUEsTUFIQWdJLEdBQUFsTyxNQUFBcU8sTUFDQUosRUFBQXRHLFFBQUF1
RyxHQUVBRCxFQUdBLFFBQUFJLElBQUFoRCxHQUNBLE1BQUFBLEdBQUFyQyxXQUFBLE1BQUFxQyxF
QUFBNUMsS0FHQSxRQUFBNkYsSUFDQWpGLEVBQ0EvSixHQUVBQSxPQUNBLFFBQUEvQixHQUFBLEVB
QWlCQSxFQUFBOEwsRUFBQTdMLE9BQWdCRCxJQUNqQzBCLE1BQUFhLFFBQUF1SixFQUFBOUwsSUFD
QStRLEdBQUFqRixFQUFBOUwsR0FBQStCLEdBRUFBLEVBQUErSixFQUFBOUwsR0FBQVUsS0FBQW9M
LEVBQUE5TCxHQUFBYSxFQUdBLE9BQUFrQixHQVFBLFFBQUFpUCxJQUFBak4sR0FDQSxHQUFBOEQs
R0FBQTlELEVBQUFzRyxTQUdBM0IsRUFBQWIsRUFBQWEsTUFDQSxJQUFBQSxJQUFBYixFQUFBb0os
U0FBQSxDQUNBLEtBQUF2SSxFQUFBMkIsU0FBQTRHLFVBQUF2SSxFQUFBd0ksU0FDQXhJLElBQUF3
SSxPQUVBeEksR0FBQXlJLFVBQUF0TSxLQUFBZCxHQUdBQSxFQUFBbU4sUUFBQXhJLEVBQ0EzRSxF
QUFBcU4sTUFBQTFJLElBQUEwSSxNQUFBck4sRUFFQUEsRUFBQW9OLGFBQ0FwTixFQUFBc04sU0FF
QXROLEVBQUF1TixTQUFBLEtBQ0F2TixFQUFBd04sVUFBQSxLQUNBeE4sRUFBQXlOLGlCQUFBLEVB
Q0F6TixFQUFBME4sWUFBQSxFQUNBMU4sRUFBQTJOLGNBQUEsRUFDQTNOLEVBQUE0TixtQkFBQSxF
QTZGQSxRQUFBQyxJQUNBN04sRUFDQThOLEVBQ0FDLEdBRUEvTixFQUFBZ08sSUFBQUYsRUFDQTlO
LEVBQUFzRyxTQUFBMkgsU0FDQWpPLEVBQUFzRyxTQUFBMkgsT0FBQXhELElBbUJBeUQsR0FBQWxP
LEVBQUEsY0FFQSxJQUFBbU8sRUFrQ0EsT0FkQUEsR0FBQSxXQUNBbk8sRUFBQW9PLFFBQUFwTyxF
QUFBcU8sVUFBQU4sSUFJQS9OLEVBQUF1TixTQUFBLEdBQUFlLElBQUF0TyxFQUFBbU8sRUFBQWxR
LEdBQ0E4UCxHQUFBLEVBSUEsTUFBQS9OLEVBQUF1TyxTQUNBdk8sRUFBQTBOLFlBQUEsRUFDQVEs
R0FBQWxPLEVBQUEsWUFFQUEsRUFHQSxRQUFBd08sSUFDQXhPLEVBQ0E2RixFQUNBb0csRUFDQXdD
LEVBQ0FDLEdBUUEsR0FBQUMsTUFDQUQsR0FDQTFPLEVBQUFzRyxTQUFBc0ksaUJBQ0FILEVBQUF4
SCxLQUFBNEgsYUFDQTdPLEVBQUE4TyxlQUFBQyxHQWtCQSxJQWZBL08sRUFBQXNHLFNBQUEwSSxh
QUFBUCxFQUNBek8sRUFBQXVPLE9BQUFFLEVBRUF6TyxFQUFBaVAsU0FDQWpQLEVBQUFpUCxPQUFB
dEssT0FBQThKLEdBRUF6TyxFQUFBc0csU0FBQXNJLGdCQUFBRixFQUtBMU8sRUFBQWtQLE9BQUFU
LEVBQUF4SCxNQUFBd0gsRUFBQXhILEtBQUFvQyxNQUNBckosRUFBQW1QLFdBQUFsRCxFQUdBcEcs
R0FBQTdGLEVBQUFzRyxTQUFBdkMsTUFBQSxDQUNBckMsR0FBQUMsZUFBQSxDQUdBLFFBRkFvQyxH
QUFBL0QsRUFBQXVHLE9BQ0E2SSxFQUFBcFAsRUFBQXNHLFNBQUErSSxjQUNBcFQsRUFBQSxFQUFt
QkEsRUFBQW1ULEVBQUFsVCxPQUFxQkQsSUFBQSxDQUN4QyxHQUFBVSxHQUFBeVMsRUFBQW5ULEVB
Q0E4SCxHQUFBcEgsR0FBQWdKLEVBQUFoSixFQUFBcUQsRUFBQXNHLFNBQUF2QyxNQUFBOEIsRUFB
QTdGLEdBRUEwQixHQUFBQyxlQUFBLEVBRUEzQixFQUFBc0csU0FBQVQsWUFJQSxHQUFBb0csRUFB
QSxDQUNBLEdBQUFRLEdBQUF6TSxFQUFBc0csU0FBQTRGLGdCQUNBbE0sR0FBQXNHLFNBQUE0Rixp
QkFBQUQsRUFDQUUsR0FBQW5NLEVBQUFpTSxFQUFBUSxHQUdBa0MsSUFDQTNPLEVBQUFzUCxPQUFB
NUMsR0FBQWdDLEVBQUFELEVBQUFwSCxTQUNBckgsRUFBQW9MLGdCQVFBLFFBQUFtRSxJQUFBdlAs
R0FDQSxLQUFBQSxRQUFBbU4sVUFDQSxHQUFBbk4sRUFBQXdOLFVBQXVCLFFBRXZCLFVBR0EsUUFB
QWdDLElBQUF4UCxFQUFBeVAsR0FDQSxHQUFBQSxHQUVBLEdBREF6UCxFQUFBeU4saUJBQUEsRUFD
QThCLEdBQUF2UCxHQUNBLFdBRUcsSUFBQUEsRUFBQXlOLGdCQUNILE1BRUEsSUFBQXpOLEVBQUF3
TixXQUFBLE9BQUF4TixFQUFBd04sVUFBQSxDQUNBeE4sRUFBQXdOLFdBQUEsQ0FDQSxRQUFBdlIs
R0FBQSxFQUFtQkEsRUFBQStELEVBQUFvTixVQUFBbFIsT0FBeUJELElBQzVDdVQsR0FBQXhQLEVB
QUFvTixVQUFBblIsR0FFQWlTLElBQUFsTyxFQUFBLGNBSUEsUUFBQTBQLElBQUExUCxFQUFBeVAs
R0FDQSxLQUFBQSxJQUNBelAsRUFBQXlOLGlCQUFBLEVBQ0E4QixHQUFBdlAsS0FJQUEsRUFBQXdO
LFdBQUEsQ0FDQXhOLEVBQUF3TixXQUFBLENBQ0EsUUFBQXZSLEdBQUEsRUFBbUJBLEVBQUErRCxF
QUFBb04sVUFBQWxSLE9BQXlCRCxJQUM1Q3lULEdBQUExUCxFQUFBb04sVUFBQW5SLEdBRUFpUyxJ
QUFBbE8sRUFBQSxnQkFJQSxRQUFBa08sSUFBQWxPLEVBQUFnSixHQUNBLEdBQUEyRyxHQUFBM1As
RUFBQXNHLFNBQUEwQyxFQUNBLElBQUEyRyxFQUNBLE9BQUExVCxHQUFBLEVBQUEyVCxFQUFBRCxF
QUFBelQsT0FBd0NELEVBQUEyVCxFQUFPM1QsSUFDL0MsSUFDQTBULEVBQUExVCxHQUFBdEIsS0FB
QXFGLEdBQ08sTUFBQXJCLEdBQ1BtQixFQUFBbkIsRUFBQXFCLEVBQUFnSixFQUFBLFNBSUFoSixF
QUFBZ00sZUFDQWhNLEVBQUE2UCxNQUFBLFFBQUE3RyxHQW9CQSxRQUFBOEcsTUFDQXZULEdBQUF3
VCxHQUFBN1QsT0FBQThULEdBQUE5VCxPQUFBLEVBQ0ErVCxNQUlBQyxHQUFBQyxJQUFBLEVBTUEs
UUFBQUMsTUFDQUQsSUFBQSxDQUNBLElBQUFFLEdBQUFoTCxDQWNBLEtBSkEwSyxHQUFBTyxLQUFB
LFNBQUFuVCxFQUFBZSxHQUE4QixNQUFBZixHQUFBa0ksR0FBQW5ILEVBQUFtSCxLQUk5QjlJLEdB
QUEsRUFBaUJBLEdBQUF3VCxHQUFBN1QsT0FBc0JLLEtBQ3ZDOFQsRUFBQU4sR0FBQXhULElBQ0E4
SSxFQUFBZ0wsRUFBQWhMLEdBQ0E0SyxHQUFBNUssR0FBQSxLQUNBZ0wsRUFBQUUsS0FtQkEsSUFB
QUMsR0FBQVIsR0FBQTlILFFBQ0F1SSxFQUFBVixHQUFBN0gsT0FFQTRILE1BR0FZLEdBQUFGLEdB
Q0FHLEdBQUFGLEdBSUFHLElBQUExUSxHQUFBMFEsVUFDQUEsR0FBQUMsS0FBQSxTQUlBLFFBQUFG
LElBQUFaLEdBRUEsSUFEQSxHQUFBOVQsR0FBQThULEVBQUE3VCxPQUNBRCxLQUFBLENBQ0EsR0FB
QW9VLEdBQUFOLEVBQUE5VCxHQUNBK0QsRUFBQXFRLEVBQUFyUSxFQUNBQSxHQUFBdU4sV0FBQThD
LEdBQUFyUSxFQUFBME4sWUFDQVEsR0FBQWxPLEVBQUEsWUFTQSxRQUFBOFEsSUFBQTlRLEdBR0FB
LEVBQUF3TixXQUFBLEVBQ0F3QyxHQUFBbFAsS0FBQWQsR0FHQSxRQUFBMFEsSUFBQVgsR0FDQSxP
QUFBOVQsR0FBQSxFQUFpQkEsRUFBQThULEVBQUE3VCxPQUFrQkQsSUFDbkM4VCxFQUFBOVQsR0FB
QXVSLFdBQUEsRUFDQWdDLEdBQUFPLEVBQUE5VCxJQUFBLEdBU0EsUUFBQThVLElBQUFWLEdBQ0Es
R0FBQWhMLEdBQUFnTCxFQUFBaEwsRUFDQSxVQUFBNEssR0FBQTVLLEdBQUEsQ0FFQSxHQURBNEss
R0FBQTVLLElBQUEsRUFDQThLLEdBRUssQ0FJTCxJQURBLEdBQUFsVSxHQUFBOFQsR0FBQTdULE9B
QUEsRUFDQUQsRUFBQU0sSUFBQXdULEdBQUE5VCxHQUFBb0osR0FBQWdMLEVBQUFoTCxJQUNBcEos
R0FFQThULElBQUF0VCxPQUFBUixFQUFBLElBQUFvVSxPQVJBTixJQUFBalAsS0FBQXVQLEVBV0FI
LE1BQ0FBLElBQUEsRUFDQWMsR0FBQVosTUE0TkEsUUFBQWEsSUFBQW5XLEdBQ0FvVyxHQUFBQyxR
QUNBQyxHQUFBdFcsRUFBQW9XLElBR0EsUUFBQUUsSUFBQXRXLEVBQUF1VyxHQUNBLEdBQUFwVixH
QUFBNEMsRUFDQXlTLEVBQUEzVCxNQUFBYSxRQUFBMUQsRUFDQSxLQUFBd1csR0FBQS9XLEVBQUFP
LEtBQUFsQixPQUFBaUksYUFBQS9HLEdBQUEsQ0FHQSxHQUFBQSxFQUFBMEcsT0FBQSxDQUNBLEdB
QUErUCxHQUFBelcsRUFBQTBHLE9BQUFXLElBQUFrRCxFQUNBLElBQUFnTSxFQUFBcEIsSUFBQXNC
LEdBQ0EsTUFFQUYsR0FBQS9JLElBQUFpSixHQUVBLEdBQUFELEVBRUEsSUFEQXJWLEVBQUFuQixF
QUFBb0IsT0FDQUQsS0FBaUJtVixHQUFBdFcsRUFBQW1CLEdBQUFvVixPQUlqQixLQUZBeFMsRUFB
QWpGLE9BQUFpRixLQUFBL0QsR0FDQW1CLEVBQUE0QyxFQUFBM0MsT0FDQUQsS0FBaUJtVixHQUFB
dFcsRUFBQStELEVBQUE1QyxJQUFBb1YsSUFhakIsUUFBQUcsSUFBQTVRLEVBQUE2USxFQUFBOVUs
R0FDQStVLEdBQUFuUCxJQUFBLFdBQ0EsTUFBQXJELE1BQUF1UyxHQUFBOVUsSUFFQStVLEdBQUFq
UCxJQUFBLFNBQUEzSCxHQUNBb0UsS0FBQXVTLEdBQUE5VSxHQUFBN0IsR0FFQWxCLE9BQUFDLGVB
QUErRyxFQUFBakUsRUFBQStVLElBR0EsUUFBQUMsSUFBQTNSLEdBQ0FBLEVBQUE0UixZQUNBLElB
QUFDLEdBQUE3UixFQUFBc0csUUFDQXVMLEdBQUE5TixPQUFtQitOLEdBQUE5UixFQUFBNlIsRUFB
QTlOLE9BQ25COE4sRUFBQUUsU0FBcUJDLEdBQUFoUyxFQUFBNlIsRUFBQUUsU0FDckJGLEVBQUE1
SyxLQUNBZ0wsR0FBQWpTLEdBRUFxQixFQUFBckIsRUFBQWtTLFVBQXlCLEdBRXpCTCxFQUFBTSxV
QUFzQkMsR0FBQXBTLEVBQUE2UixFQUFBTSxVQUN0Qk4sRUFBQVEsT0FBQVIsRUFBQVEsUUFBQUMs
SUFDQUMsR0FBQXZTLEVBQUE2UixFQUFBUSxPQWNBLFFBQUFQLElBQUE5UixFQUFBd1MsR0FDQSxH
QUFBM00sR0FBQTdGLEVBQUFzRyxTQUFBVCxjQUNBOUIsRUFBQS9ELEVBQUF1RyxVQUdBMUgsRUFB
QW1CLEVBQUFzRyxTQUFBK0ksYUFDQW9ELEdBQUF6UyxFQUFBbU4sT0FFQXpMLElBQUFDLGNBQUE4
USxDQWtDQSxRQUFBOVYsS0FBQTZWLElBakNBLFNBQUE3VixHQUNBa0MsRUFBQWlDLEtBQUFuRSxF
QUNBLElBQUE3QyxHQUFBNkwsRUFBQWhKLEVBQUE2VixFQUFBM00sRUFBQTdGLEVBcUJBZ0MsR0FB
QStCLEVBQUFwSCxFQUFBN0MsR0FLQTZDLElBQUFxRCxJQUNBd1IsR0FBQXhSLEVBQUEsU0FBQXJE
LElBSUFBLEVBQ0ErRSxJQUFBQyxlQUFBLEVBR0EsUUFBQXNRLElBQUFqUyxHQUNBLEdBQUFpSCxH
QUFBakgsRUFBQXNHLFNBQUFXLElBQ0FBLEdBQUFqSCxFQUFBa1MsTUFBQSxrQkFBQWpMLEdBQ0F5
TCxHQUFBekwsRUFBQWpILEdBQ0FpSCxNQUNBeE0sRUFBQXdNLEtBQ0FBLEtBWUEsS0FKQSxHQUFB
cEksR0FBQWpGLE9BQUFpRixLQUFBb0ksR0FDQWxELEVBQUEvRCxFQUFBc0csU0FBQXZDLE1BRUE5
SCxHQURBK0QsRUFBQXNHLFNBQUF5TCxRQUNBbFQsRUFBQTNDLFFBQ0FELEtBQUEsQ0FDQSxHQUFB
VSxHQUFBa0MsRUFBQTVDLEVBU0E4SCxJQUFBckgsRUFBQXFILEVBQUFwSCxJQU1Ld0MsRUFBQXhD
LElBQ0w2VSxHQUFBeFIsRUFBQSxRQUFBckQsR0FJQTBFLEVBQUE0RixHQUFBLEdBR0EsUUFBQXlM
LElBQUF6TCxFQUFBakgsR0FDQSxJQUNBLE1BQUFpSCxHQUFBdE0sS0FBQXFGLEdBQ0csTUFBQXJC
LEdBRUgsTUFEQW1CLEdBQUFuQixFQUFBcUIsRUFBQSxjQU9BLFFBQUFvUyxJQUFBcFMsRUFBQW1T
LEdBRUEsR0FBQVEsR0FBQTNTLEVBQUE0UyxrQkFBQWhaLE9BQUFrQyxPQUFBLEtBRUEsUUFBQWEs
S0FBQXdWLEdBQUEsQ0FDQSxHQUFBVSxHQUFBVixFQUFBeFYsR0FDQTJGLEVBQUEsa0JBQUF1USxP
QUFBdFEsR0FRQW9RLEdBQUFoVyxHQUFBLEdBQUEyUixJQUFBdE8sRUFBQXNDLEdBQUFyRSxJQUFB
NlUsSUFLQW5XLElBQUFxRCxJQUNBK1MsR0FBQS9TLEVBQUFyRCxFQUFBa1csSUFXQSxRQUFBRSxJ
QUFBblMsRUFBQWpFLEVBQUFrVyxHQUNBLGtCQUFBQSxJQUNBbkIsR0FBQW5QLElBQUF5USxHQUFB
clcsR0FDQStVLEdBQUFqUCxJQUFBeEUsSUFFQXlULEdBQUFuUCxJQUFBc1EsRUFBQXRRLEtBQ0Es
SUFBQXNRLEVBQUE5VixNQUNBaVcsR0FBQXJXLEdBQ0FrVyxFQUFBdFEsSUFDQXRFLEVBQ0F5VCxH
QUFBalAsSUFBQW9RLEVBQUFwUSxJQUNBb1EsRUFBQXBRLElBQ0F4RSxHQVdBckUsT0FBQUMsZUFB
QStHLEVBQUFqRSxFQUFBK1UsSUFHQSxRQUFBc0IsSUFBQXJXLEdBQ0Esa0JBQ0EsR0FBQTBULEdB
QUFuUixLQUFBMFQsbUJBQUExVCxLQUFBMFQsa0JBQUFqVyxFQUNBLElBQUEwVCxFQU9BLE1BTkFB
LEdBQUE0QyxPQUNBNUMsRUFBQTZDLFdBRUF2UyxHQUFBQyxRQUNBeVAsRUFBQTFOLFNBRUEwTixF
QUFBdlcsT0FLQSxRQUFBa1ksSUFBQWhTLEVBQUErUixHQUVBL1IsRUFBQXNHLFNBQUF2QyxLQUNB
LFFBQUFwSCxLQUFBb1YsR0FDQS9SLEVBQUFyRCxHQUFBLE1BQUFvVixFQUFBcFYsR0FBQXNCLEVB
QUFqQixFQUFBK1UsRUFBQXBWLEdBQUFxRCxHQW1CQSxRQUFBdVMsSUFBQXZTLEVBQUFxUyxHQUVB
LE9BQUExVixLQUFBMFYsR0FBQSxDQUNBLEdBQUFjLEdBQUFkLEVBQUExVixFQUNBLElBQUFnQixN
QUFBYSxRQUFBMlUsR0FDQSxPQUFBbFgsR0FBQSxFQUFxQkEsRUFBQWtYLEVBQUFqWCxPQUFvQkQs
SUFDekNtWCxHQUFBcFQsRUFBQXJELEVBQUF3VyxFQUFBbFgsUUFHQW1YLElBQUFwVCxFQUFBckQs
RUFBQXdXLElBS0EsUUFBQUMsSUFDQXBULEVBQ0FxVCxFQUNBRixFQUNBclAsR0FTQSxNQVBBckos
R0FBQTBZLEtBQ0FyUCxFQUFBcVAsRUFDQUEsYUFFQSxnQkFBQUEsS0FDQUEsRUFBQW5ULEVBQUFt
VCxJQUVBblQsRUFBQXNULE9BQUFELEVBQUFGLEVBQUFyUCxHQW9EQSxRQUFBeVAsSUFBQXZULEdB
Q0EsR0FBQXdULEdBQUF4VCxFQUFBc0csU0FBQWtOLE9BQ0FBLEtBQ0F4VCxFQUFBeVQsVUFBQSxr
QkFBQUQsR0FDQUEsRUFBQTdZLEtBQUFxRixHQUNBd1QsR0FJQSxRQUFBRSxJQUFBMVQsR0FDQSxH
QUFBMlQsR0FBQUMsR0FBQTVULEVBQUFzRyxTQUFBbEMsT0FBQXBFLEVBQ0EyVCxLQUNBalMsR0FB
QUMsZUFBQSxFQUNBL0gsT0FBQWlGLEtBQUE4VSxHQUFBRSxRQUFBLFNBQUFsWCxHQVlBcUYsRUFB
QWhDLEVBQUFyRCxFQUFBZ1gsRUFBQWhYLE1BR0ErRSxHQUFBQyxlQUFBLEdBSUEsUUFBQWlTLElB
QUF4UCxFQUFBcEUsR0FDQSxHQUFBb0UsRUFBQSxDQU9BLE9BTEF1UCxHQUFBL1osT0FBQWtDLE9B
QUEsTUFDQStDLEVBQUFpVixHQUNBQyxRQUFBQyxRQUFBNVAsR0FDQXhLLE9BQUFpRixLQUFBdUYs
R0FFQW5JLEVBQUEsRUFBbUJBLEVBQUE0QyxFQUFBM0MsT0FBaUJELElBSXBDLElBSEEsR0FBQVUs
R0FBQWtDLEVBQUE1QyxHQUNBZ1ksRUFBQTdQLEVBQUF6SCxHQUNBdVgsRUFBQWxVLEVBQ0FrVSxH
QUFBLENBQ0EsR0FBQUEsRUFBQVQsV0FBQVEsSUFBQUMsR0FBQVQsVUFBQSxDQUNBRSxFQUFBaFgs
R0FBQXVYLEVBQUFULFVBQUFRLEVBQ0EsT0FFQUMsSUFBQS9HLFFBTUEsTUFBQXdHLElBTUEsUUFB
QVEsSUFDQTNULEVBQ0FxRixFQUNBb0IsRUFDQUksRUFDQUgsR0FFQSxHQUFBbkQsTUFDQTZCLEVB
QUFwRixFQUFBc0QsUUFBQUMsS0FDQSxJQUFBNUosRUFBQXlMLEdBQ0EsT0FBQWpKLEtBQUFpSixH
QUNBN0IsRUFBQXBILEdBQUFnSixFQUFBaEosRUFBQWlKLEVBQUFDLFdBR0ExTCxHQUFBOE0sRUFB
QW9DLFFBQTRCK0ssR0FBQXJRLEVBQUFrRCxFQUFBb0MsT0FDNUJsUCxFQUFBOE0sRUFBQWxELFFB
QTRCcVEsR0FBQXJRLEVBQUFrRCxFQUFBbEQsTUFJNUIsSUFBQXNRLEdBQUF6YSxPQUFBa0MsT0FB
QXVMLEdBQ0FpTixFQUFBLFNBQUFuWCxFQUFBZSxFQUFBQyxFQUFBb1csR0FBaUMsTUFBQUMsSUFB
QUgsRUFBQWxYLEVBQUFlLEVBQUFDLEVBQUFvVyxHQUFBLElBQ2pDek4sRUFBQXRHLEVBQUFzRCxR
QUFBbUssT0FBQXRULEtBQUEsS0FBQTJaLEdBQ0FyTixPQUNBbEQsUUFDQW1ELFdBQ0F2QyxPQUFB
MEMsRUFDQTRFLFVBQUFoRixFQUFBbUIsT0FDQXFNLFdBQUFiLEdBQUFwVCxFQUFBc0QsUUFBQU0s
T0FBQWlELEdBQ0FzRixNQUFBLFdBQXdCLE1BQUFELElBQUF4RixFQUFBRyxLQVN4QixPQVBBUCxh
QUFBRixNQUNBRSxFQUFBK0Ysa0JBQUF4RixFQUNBUCxFQUFBNE4sa0JBQUFsVSxFQUFBc0QsUUFD
QW1ELEVBQUE2RixRQUNBaEcsRUFBQUcsT0FBQUgsRUFBQUcsVUFBcUM2RixLQUFBN0YsRUFBQTZG
LE9BR3JDaEcsRUFHQSxRQUFBc04sSUFBQXZXLEVBQUFxRixHQUNBLE9BQUF2RyxLQUFBdUcsR0FD
QXJGLEVBQUFvRyxHQUFBdEgsSUFBQXVHLEVBQUF2RyxHQTRFQSxRQUFBZ1ksSUFDQW5VLEVBQ0F5
RyxFQUNBSSxFQUNBSCxFQUNBRixHQUVBLElBQUFoTixFQUFBd0csR0FBQSxDQUlBLEdBQUFvSyxH
QUFBdkQsRUFBQWYsU0FBQXNPLEtBU0EsSUFOQXJhLEVBQUFpRyxLQUNBQSxFQUFBb0ssRUFBQWhO
LE9BQUE0QyxJQUtBLGtCQUFBQSxHQUFBLENBUUEsR0FBQStHLEVBQ0EsSUFBQXZOLEVBQUF3RyxF
QUFBcVUsT0FDQXROLEVBQUEvRyxNQUVBdEcsTUFEQXNHLEVBQUFtSyxHQUFBcEQsRUFBQXFELEVB
QUF2RCxLQUtBLE1BQUFrRCxJQUNBaEQsRUFDQU4sRUFDQUksRUFDQUgsRUFDQUYsRUFLQUMsU0FJ
QTZOLEdBQUF0VSxHQUdBckcsRUFBQThNLEVBQUE4TixRQUNBQyxHQUFBeFUsRUFBQXNELFFBQUFt
RCxFQUlBLElBQUFwQixHQUFBdUQsR0FBQW5DLEVBQUF6RyxFQUFBd0csRUFHQSxJQUFBNU0sRUFB
QW9HLEVBQUFzRCxRQUFBbVIsWUFDQSxNQUFBZCxJQUFBM1QsRUFBQXFGLEVBQUFvQixFQUFBSSxF
QUFBSCxFQUtBLElBQUErRSxHQUFBaEYsRUFBQW1CLEVBS0EsSUFGQW5CLEVBQUFtQixHQUFBbkIs
RUFBQWlPLFNBRUE5YSxFQUFBb0csRUFBQXNELFFBQUFvSixVQUFBLENBS0EsR0FBQUosR0FBQTdG
LEVBQUE2RixJQUNBN0YsTUFDQTZGLElBQ0E3RixFQUFBNkYsUUFLQXFJLEdBQUFsTyxFQUdBLElB
QUFqRCxHQUFBeEQsRUFBQXNELFFBQUFFLE1BQUFnRCxDQU9BLE9BTkEsSUFBQUosSUFDQSxpQkFB
QXBHLEVBQUEsS0FBQXdELEVBQUEsSUFBQUEsRUFBQSxJQUNBaUQsTUFBQS9NLGlCQUFBbU4sR0FD
SzdHLE9BQUFxRixZQUFBb0csWUFBQWpGLE1BQUFFLFlBQ0xLLEtBS0EsUUFBQTZOLElBQ0F0TyxF
QUNBbkMsRUFDQTBRLEVBQ0FDLEdBRUEsR0FBQUMsR0FBQXpPLEVBQUFRLGlCQUNBeEQsR0FDQTBS
LGNBQUEsRUFDQTdRLFNBQ0FrQixVQUFBMFAsRUFBQTFQLFVBQ0E0UCxjQUFBRixFQUFBdk8sSUFD
QWdJLGFBQUFsSSxFQUNBb0YsaUJBQUFxSixFQUFBdEosVUFDQTJDLGdCQUFBMkcsRUFBQXJPLFNB
Q0F3TyxXQUFBTCxHQUFBLEtBQ0FNLFFBQUFMLEdBQUEsTUFHQU0sRUFBQTlPLEVBQUFHLEtBQUEy
TyxjQUtBLE9BSkF6YixHQUFBeWIsS0FDQTlSLEVBQUFtSyxPQUFBMkgsRUFBQTNILE9BQ0FuSyxF
QUFBK1IsZ0JBQUFELEVBQUFDLGlCQUVBLEdBQUFOLEdBQUEvVSxLQUFBc0QsR0FHQSxRQUFBcVIs
SUFBQWxPLEdBQ0FBLEVBQUErQixPQUNBL0IsRUFBQStCLFFBRUEsUUFBQS9NLEdBQUEsRUFBaUJB
LEVBQUE2WixHQUFBNVosT0FBeUJELElBQUEsQ0FDMUMsR0FBQVUsR0FBQW1aLEdBQUE3WixHQUNB
OFosRUFBQTlPLEVBQUErQixLQUFBck0sR0FDQXFaLEVBQUFDLEdBQUF0WixFQUNBc0ssR0FBQStC
LEtBQUFyTSxHQUFBb1osRUFBQUcsR0FBQUYsRUFBQUQsR0FBQUMsR0FJQSxRQUFBRSxJQUFBQyxF
QUFBQyxHQUNBLGdCQUFBalosRUFBQWUsRUFBQUMsRUFBQW9XLEdBQ0E0QixFQUFBaFosRUFBQWUs
RUFBQUMsRUFBQW9XLEdBQ0E2QixFQUFBalosRUFBQWUsRUFBQUMsRUFBQW9XLElBTUEsUUFBQVMs
SUFBQWxSLEVBQUFtRCxHQUNBLEdBQUFuQixHQUFBaEMsRUFBQWlSLE9BQUFqUixFQUFBaVIsTUFB
QWpQLE1BQUEsUUFDQTRDLEVBQUE1RSxFQUFBaVIsT0FBQWpSLEVBQUFpUixNQUFBck0sT0FBQSxT
QUFnRXpCLEVBQUFsRCxRQUFBa0QsRUFBQWxELFdBQStCK0IsR0FBQW1CLEVBQUE4TixNQUFBamIs
S0FDL0YsSUFBQXNPLEdBQUFuQixFQUFBbUIsS0FBQW5CLEVBQUFtQixNQUNBak8sR0FBQWlPLEVB
QUFNLElBQ0FOLEVBQUFNLElBQUF6QixFQUFBOE4sTUFBQXNCLFVBQUExUyxPQUFBeUUsRUFBQU0s
SUFFQU4sRUFBQU0sR0FBQXpCLEVBQUE4TixNQUFBc0IsU0FXQSxRQUFBN0IsSUFDQW5OLEVBQ0FM
LEVBQ0FDLEVBQ0FDLEVBQ0FvUCxFQUNBQyxHQVVBLE9BUkE1WSxNQUFBYSxRQUFBeUksSUFBQTNN
LEVBQUEyTSxNQUNBcVAsRUFBQXBQLEVBQ0FBLEVBQUFELEVBQ0FBLE1BQUEvTSxJQUVBRSxFQUFB
bWMsS0FDQUQsRUFBQUUsSUFFQUMsR0FBQXBQLEVBQUFMLEVBQUFDLEVBQUFDLEVBQUFvUCxHQUdB
LFFBQUFHLElBQ0FwUCxFQUNBTCxFQUNBQyxFQUNBQyxFQUNBb1AsR0FFQSxHQUFBbmMsRUFBQThN
LElBQUE5TSxFQUFBLEVBQUFxSCxRQU1BLE1BQUFpSixLQU1BLElBSEF0USxFQUFBOE0sSUFBQTlN
LEVBQUE4TSxFQUFBeVAsTUFDQTFQLEVBQUFDLEVBQUF5UCxLQUVBMVAsRUFFQSxNQUFBeUQsS0Fh
QTlNLE9BQUFhLFFBQUEwSSxJQUNBLGtCQUFBQSxHQUFBLEtBRUFELFFBQ0FBLEVBQUE0SCxhQUF3
QnhJLFFBQUFhLEVBQUEsSUFDeEJBLEVBQUFoTCxPQUFBLEdBRUFvYSxJQUFBRSxHQUNBdFAsRUFB
QTBDLEdBQUExQyxHQUNHb1AsSUFBQUssS0FDSHpQLEVBQUF3QyxHQUFBeEMsR0FFQSxJQUFBSixH
QUFBVSxDQUNBLG9CQUFBUixHQUFBLENBQ0EsR0FBQXhHLEVBQ0FnSCxHQUFBdEgsR0FBQTBXLGdC
QUFBNVAsR0FHQUYsRUFGQTVHLEdBQUEyVyxjQUFBN1AsR0FFQSxHQUFBSixJQUNBMUcsR0FBQTRX
LHFCQUFBOVAsR0FBQUMsRUFBQUMsTUFDQWhOLFVBQUFtTixHQUVLbE4sRUFBQXFHLEVBQUE0RSxF
QUFBaUMsRUFBQWYsU0FBQSxhQUFBVSxJQUVMMk4sR0FBQW5VLEVBQUF5RyxFQUFBSSxFQUFBSCxF
QUFBRixHQUtBLEdBQUFKLElBQ0FJLEVBQUFDLEVBQUFDLE1BQ0FoTixVQUFBbU4sT0FLQVAsR0FB
QTZOLEdBQUEzTixFQUFBQyxFQUFBSSxFQUFBSCxFQUVBLE9BQUEvTSxHQUFBMk0sSUFDQVUsR0FB
YXVQLEdBQUFqUSxFQUFBVSxHQUNiVixHQUVBMkQsS0FJQSxRQUFBc00sSUFBQWpRLEVBQUFVLEdB
RUEsR0FEQVYsRUFBQVUsS0FDQSxrQkFBQVYsRUFBQUUsS0FJQTdNLEVBQUEyTSxFQUFBSSxVQUNB
LE9BQUFqTCxHQUFBLEVBQUFtQixFQUFBMEosRUFBQUksU0FBQWhMLE9BQThDRCxFQUFBbUIsRUFB
T25CLElBQUEsQ0FDckQsR0FBQTJJLEdBQUFrQyxFQUFBSSxTQUFBakwsRUFDQTlCLEdBQUF5SyxF
QUFBb0MsTUFBQWhOLEVBQUE0SyxFQUFBNEMsS0FDQXVQLEdBQUFuUyxFQUFBNEMsSUFXQSxRQUFB
d1AsSUFDQWxjLEVBQ0FtVCxHQUVBLEdBQUF2USxHQUFBekIsRUFBQW1CLEVBQUF5QixFQUFBbEMs
Q0FDQSxJQUFBZ0IsTUFBQWEsUUFBQTFELElBQUEsZ0JBQUFBLEdBRUEsSUFEQTRDLEVBQUEsR0FB
QUMsT0FBQTdDLEVBQUFvQixRQUNBRCxFQUFBLEVBQUFtQixFQUFBdEMsRUFBQW9CLE9BQStCRCxF
QUFBbUIsRUFBT25CLElBQ3RDeUIsRUFBQXpCLEdBQUFnUyxFQUFBblQsRUFBQW1CLFVBRUcsb0JB
QUFuQixHQUVILElBREE0QyxFQUFBLEdBQUFDLE9BQUE3QyxHQUNBbUIsRUFBQSxFQUFlQSxFQUFB
bkIsRUFBU21CLElBQ3hCeUIsRUFBQXpCLEdBQUFnUyxFQUFBaFMsRUFBQSxFQUFBQSxPQUVHLElB
QUExQixFQUFBTyxHQUdILElBRkErRCxFQUFBakYsT0FBQWlGLEtBQUEvRCxHQUNBNEMsRUFBQSxH
QUFBQyxPQUFBa0IsRUFBQTNDLFFBQ0FELEVBQUEsRUFBQW1CLEVBQUF5QixFQUFBM0MsT0FBZ0NE
LEVBQUFtQixFQUFPbkIsSUFDdkNVLEVBQUFrQyxFQUFBNUMsR0FDQXlCLEVBQUF6QixHQUFBZ1Ms
RUFBQW5ULEVBQUE2QixLQUFBVixFQU1BLE9BSEE5QixHQUFBdUQsS0FDQSxFQUFBd00sVUFBQSxH
QUVBeE0sRUFRQSxRQUFBdVosSUFDQWpULEVBQ0FrVCxFQUNBblQsRUFDQW9ULEdBRUEsR0FBQUMs
R0FBQWxZLEtBQUE0UCxhQUFBOUssRUFDQSxJQUFBb1QsRUFLQSxNQUpBclQsU0FDQW9ULElBQ0Fw
VCxFQUFBbkcsT0FBOEJ1WixHQUFBcFQsSUFFOUJxVCxFQUFBclQsSUFBQW1ULENBRUEsSUFBQUcs
R0FBQW5ZLEtBQUFvUSxPQUFBdEwsRUFVQSxPQUFBcVQsSUFBQUgsRUFTQSxRQUFBSSxJQUFBalMs
R0FDQSxNQUFBRCxHQUFBbEcsS0FBQW9ILFNBQUEsVUFBQWpCLEdBQUEsSUFBQWtTLEdBUUEsUUFB
QUMsSUFDQUMsRUFDQTlhLEVBQ0ErYSxHQUVBLEdBQUFDLEdBQUF6WCxHQUFBeVgsU0FBQWhiLElB
QUErYSxDQUNBLE9BQUEvWixPQUFBYSxRQUFBbVosSUFDQSxJQUFBQSxFQUFBbmIsUUFBQWliLEdB
RUFFLElBQUFGLEVBU0EsUUFBQUcsSUFDQTNRLEVBQ0FELEVBQ0FsTixFQUNBK2QsRUFDQUMsR0FF
QSxHQUFBaGUsRUFDQSxHQUFBUyxFQUFBVCxHQUtLLENBQ0w2RCxNQUFBYSxRQUFBMUUsS0FDQUEs
RUFBQWlFLEVBQUFqRSxHQUVBLElBQUEwUCxFQTBCQSxRQUFBN00sS0FBQTdDLElBekJBLFNBQUE2
QyxHQUNBLEdBQ0EsVUFBQUEsR0FDQSxVQUFBQSxHQUNBb2IsR0FBQXBiLEdBRUE2TSxFQUFBdkMs
TUFDUyxDQUNULEdBQUEvQyxHQUFBK0MsRUFBQW9DLE9BQUFwQyxFQUFBb0MsTUFBQW5GLElBQ0Fz
RixHQUFBcU8sR0FBQTNYLEdBQUE4WCxZQUFBaFIsRUFBQTlDLEVBQUF2SCxHQUNBc0ssRUFBQWdS
LFdBQUFoUixFQUFBZ1IsYUFDQWhSLEVBQUFvQyxRQUFBcEMsRUFBQW9DLFVBRUEsS0FBQTFNLElB
QUE2TSxNQUNBQSxFQUFBN00sR0FBQTdDLEVBQUE2QyxHQUVBbWIsR0FBQSxFQUNBN1EsRUFBQW1C
LEtBQUFuQixFQUFBbUIsUUFDQSxVQUFBekwsR0FBQSxTQUFBdWIsR0FDQXBlLEVBQUE2QyxHQUFB
dWIsS0FNQXZiLFFBR0EsTUFBQXNLLEdBUUEsUUFBQWtSLElBQ0E1YixFQUNBNmIsR0FFQSxHQUFB
QyxHQUFBblosS0FBQW9aLGFBQUEvYixFQUdBLE9BQUE4YixLQUFBRCxFQUNBemEsTUFBQWEsUUFB
QTZaLEdBQ0F6USxHQUFBeVEsR0FDQXhSLEVBQUF3UixJQUdBQSxFQUFBblosS0FBQW9aLGFBQUEv
YixHQUNBMkMsS0FBQW9ILFNBQUF1UCxnQkFBQXRaLEdBQUE1QixLQUFBdUUsS0FBQXFaLGNBQ0FD
LEdBQUFILEVBQUEsYUFBQTliLEdBQUEsR0FDQThiLEdBT0EsUUFBQUksSUFDQUosRUFDQTliLEVB
Q0FJLEdBR0EsTUFEQTZiLElBQUFILEVBQUEsV0FBQTliLEdBQUFJLEVBQUEsSUFBQUEsRUFBQSxR
QUNBMGIsRUFHQSxRQUFBRyxJQUNBSCxFQUNBMWIsRUFDQStiLEdBRUEsR0FBQS9hLE1BQUFhLFFB
QUE2WixHQUNBLE9BQUFwYyxHQUFBLEVBQW1CQSxFQUFBb2MsRUFBQW5jLE9BQWlCRCxJQUNwQ29j
LEVBQUFwYyxJQUFBLGdCQUFBb2MsR0FBQXBjLElBQ0EwYyxHQUFBTixFQUFBcGMsR0FBQVUsRUFB
QSxJQUFBVixFQUFBeWMsT0FJQUMsSUFBQU4sRUFBQTFiLEVBQUErYixHQUlBLFFBQUFDLElBQUE1
TyxFQUFBcE4sRUFBQStiLEdBQ0EzTyxFQUFBdEMsVUFBQSxFQUNBc0MsRUFBQXBOLE1BQ0FvTixF
QUFBMk8sU0FLQSxRQUFBRSxJQUFBM1IsRUFBQW5OLEdBQ0EsR0FBQUEsRUFDQSxHQUFBVyxFQUFB
WCxHQUtLLENBQ0wsR0FBQXNPLEdBQUFuQixFQUFBbUIsR0FBQW5CLEVBQUFtQixHQUFBeEssS0FB
NENxSixFQUFBbUIsTUFDNUMsUUFBQXpMLEtBQUE3QyxHQUFBLENBQ0EsR0FBQStlLEdBQUF6USxF
QUFBekwsR0FDQXFaLEVBQUFsYyxFQUFBNkMsRUFDQXlMLEdBQUF6TCxHQUFBa2MsS0FBQWxWLE9B
QUFxUyxFQUFBNkMsR0FBQTdDLFFBSUEsTUFBQS9PLEdBS0EsUUFBQTZSLElBQUE5WSxHQUNBQSxF
QUFBaVAsT0FBQSxLQUNBalAsRUFBQXNZLGFBQUEsSUFDQSxJQUFBN0osR0FBQXpPLEVBQUF1TyxP
QUFBdk8sRUFBQXNHLFNBQUEwSSxhQUNBK0osRUFBQXRLLEtBQUFwSCxPQUNBckgsR0FBQXNQLE9B
QUE1QyxHQUFBMU0sRUFBQXNHLFNBQUFzSSxnQkFBQW1LLEdBQ0EvWSxFQUFBOE8sYUFBQUMsR0FL
QS9PLEVBQUFnWixHQUFBLFNBQUE3YixFQUFBZSxFQUFBQyxFQUFBb1csR0FBaUMsTUFBQUMsSUFB
QXhVLEVBQUE3QyxFQUFBZSxFQUFBQyxFQUFBb1csR0FBQSxJQUdqQ3ZVLEVBQUFpWixlQUFBLFNB
QUE5YixFQUFBZSxFQUFBQyxFQUFBb1csR0FBNkMsTUFBQUMsSUFBQXhVLEVBQUE3QyxFQUFBZSxF
QUFBQyxFQUFBb1csR0FBQSxHQUk3QyxJQUFBMkUsR0FBQXpLLEtBQUF4SCxJQVVBakYsR0FBQWhD
LEVBQUEsU0FBQWtaLEtBQUE3UCxNQUFBLFNBQ0FySCxFQUFBaEMsRUFBQSxhQUFBQSxFQUFBc0cs
U0FBQTRGLGlCQUFBLFNBbUpBLFFBQUFpTixJQUFBblosRUFBQThELEdBQ0EsR0FBQStOLEdBQUE3
UixFQUFBc0csU0FBQTFNLE9BQUFrQyxPQUFBa0UsRUFBQW9aLFlBQUF0VixRQUVBK04sR0FBQWxO
LE9BQUFiLEVBQUFhLE9BQ0FrTixFQUFBaE0sVUFBQS9CLEVBQUErQixVQUNBZ00sRUFBQTdDLGFB
QUFsTCxFQUFBa0wsYUFDQTZDLEVBQUEzRixpQkFBQXBJLEVBQUFvSSxpQkFDQTJGLEVBQUFqRCxn
QkFBQTlLLEVBQUE4SyxnQkFDQWlELEVBQUE0RCxjQUFBM1IsRUFBQTJSLGNBQ0E1RCxFQUFBNkQs
V0FBQTVSLEVBQUE0UixXQUNBN0QsRUFBQThELFFBQUE3UixFQUFBNlIsUUFDQTdSLEVBQUFtSyxT
QUNBNEQsRUFBQTVELE9BQUFuSyxFQUFBbUssT0FDQTRELEVBQUFnRSxnQkFBQS9SLEVBQUErUixp
QkFJQSxRQUFBZixJQUFBdFUsR0FDQSxHQUFBc0QsR0FBQXRELEVBQUFzRCxPQUNBLElBQUF0RCxF
QUFBNlksTUFBQSxDQUNBLEdBQUFDLEdBQUF4RSxHQUFBdFUsRUFBQTZZLE1BRUEsSUFBQUMsSUFE
QTlZLEVBQUE4WSxhQUNBLENBR0E5WSxFQUFBOFksY0FFQSxJQUFBQyxHQUFBQyxHQUFBaFosRUFF
QStZLElBQ0EzYixFQUFBNEMsRUFBQWlaLGNBQUFGLEdBRUF6VixFQUFBdEQsRUFBQXNELFFBQUFZ
LEVBQUE0VSxFQUFBOVksRUFBQWlaLGVBQ0EzVixFQUFBRSxPQUNBRixFQUFBNFYsV0FBQTVWLEVB
QUFFLE1BQUF4RCxJQUlBLE1BQUFzRCxHQUdBLFFBQUEwVixJQUFBaFosR0FDQSxHQUFBbVosR0FD
QUMsRUFBQXBaLEVBQUFzRCxRQUNBK1YsRUFBQXJaLEVBQUFpWixjQUNBSyxFQUFBdFosRUFBQXVa
LGFBQ0EsUUFBQXBkLEtBQUFpZCxHQUNBQSxFQUFBamQsS0FBQW1kLEVBQUFuZCxLQUNBZ2QsSUFB
c0JBLE1BQ3RCQSxFQUFBaGQsR0FBQXFkLEdBQUFKLEVBQUFqZCxHQUFBa2QsRUFBQWxkLEdBQUFt
ZCxFQUFBbmQsSUFHQSxPQUFBZ2QsR0FHQSxRQUFBSyxJQUFBSixFQUFBQyxFQUFBQyxHQUdBLEdB
QUFuYyxNQUFBYSxRQUFBb2IsR0FBQSxDQUNBLEdBQUE1YixLQUNBOGIsR0FBQW5jLE1BQUFhLFFB
QUFzYixTQUNBRCxFQUFBbGMsTUFBQWEsUUFBQXFiLFFBQ0EsUUFBQTVkLEdBQUEsRUFBbUJBLEVB
QUEyZCxFQUFBMWQsT0FBbUJELEtBRXRDNGQsRUFBQXJkLFFBQUFvZCxFQUFBM2QsS0FBQSxHQUFB
NmQsRUFBQXRkLFFBQUFvZCxFQUFBM2QsSUFBQSxJQUNBK0IsRUFBQThDLEtBQUE4WSxFQUFBM2Qs
R0FHQSxPQUFBK0IsR0FFQSxNQUFBNGIsR0FJQSxRQUFBSyxJQUFBblcsR0FNQTVFLEtBQUFnYixN
QUFBcFcsR0FXQSxRQUFBcVcsSUFBQUMsR0FDQUEsRUFBQUMsSUFBQSxTQUFBQyxHQUNBLEdBQUFD
LEdBQUFyYixLQUFBc2Isb0JBQUF0YixLQUFBc2IscUJBQ0EsSUFBQUQsRUFBQS9kLFFBQUE4ZCxJ
QUFBLEVBQ0EsTUFBQXBiLEtBSUEsSUFBQXViLEdBQUFqZCxFQUFBSCxVQUFBLEVBUUEsT0FQQW9k
LEdBQUFDLFFBQUF4YixNQUNBLGtCQUFBb2IsR0FBQUssUUFDQUwsRUFBQUssUUFBQXJkLE1BQUFn
ZCxFQUFBRyxHQUNLLGtCQUFBSCxJQUNMQSxFQUFBaGQsTUFBQSxLQUFBbWQsR0FFQUYsRUFBQXpa
LEtBQUF3WixHQUNBcGIsTUFNQSxRQUFBMGIsSUFBQVIsR0FDQUEsRUFBQVMsTUFBQSxTQUFBQSxH
QUVBLE1BREEzYixNQUFBNEUsUUFBQVksRUFBQXhGLEtBQUE0RSxRQUFBK1csR0FDQTNiLE1BTUEs
UUFBQTRiLElBQUFWLEdBTUFBLEVBQUF2RixJQUFBLENBQ0EsSUFBQUEsR0FBQSxDQUtBdUYsR0FB
QXhjLE9BQUEsU0FBQTZiLEdBQ0FBLE9BQ0EsSUFBQXNCLEdBQUE3YixLQUNBOGIsRUFBQUQsRUFB
QWxHLElBQ0FvRyxFQUFBeEIsRUFBQXlCLFFBQUF6QixFQUFBeUIsU0FDQSxJQUFBRCxFQUFBRCxH
QUNBLE1BQUFDLEdBQUFELEVBR0EsSUFBQWhYLEdBQUF5VixFQUFBelYsTUFBQStXLEVBQUFqWCxR
QUFBRSxLQVdBbVgsRUFBQSxTQUFBclgsR0FDQTVFLEtBQUFnYixNQUFBcFcsR0E2Q0EsT0EzQ0Fx
WCxHQUFBeFIsVUFBQS9QLE9BQUFrQyxPQUFBaWYsRUFBQXBSLFdBQ0F3UixFQUFBeFIsVUFBQXlQ
LFlBQUErQixFQUNBQSxFQUFBdEcsUUFDQXNHLEVBQUFyWCxRQUFBWSxFQUNBcVcsRUFBQWpYLFFB
Q0EyVixHQUVBMEIsRUFBQSxNQUFBSixFQUtBSSxFQUFBclgsUUFBQUMsT0FDQXFYLEdBQUFELEdB
RUFBLEVBQUFyWCxRQUFBcU8sVUFDQWtKLEdBQUFGLEdBSUFBLEVBQUF2ZCxPQUFBbWQsRUFBQW5k
LE9BQ0F1ZCxFQUFBTixNQUFBRSxFQUFBRixNQUNBTSxFQUFBZCxJQUFBVSxFQUFBVixJQUlBaUIs
R0FBQXpILFFBQUEsU0FBQTNQLEdBQ0FpWCxFQUFBalgsR0FBQTZXLEVBQUE3VyxLQUdBRixJQUNB
bVgsRUFBQXJYLFFBQUE0VixXQUFBMVYsR0FBQW1YLEdBTUFBLEVBQUE3QixhQUFBeUIsRUFBQWpY
LFFBQ0FxWCxFQUFBMUIsZ0JBQ0EwQixFQUFBcEIsY0FBQW5jLEtBQWlDdWQsRUFBQXJYLFNBR2pD
bVgsRUFBQUQsR0FBQUcsRUFDQUEsR0FJQSxRQUFBQyxJQUFBRyxHQUNBLEdBQUF4WCxHQUFBd1gs
RUFBQXpYLFFBQUFDLEtBQ0EsUUFBQXBILEtBQUFvSCxHQUNBeU4sR0FBQStKLEVBQUE1UixVQUFB
LFNBQUFoTixHQUlBLFFBQUEwZSxJQUFBRSxHQUNBLEdBQUFwSixHQUFBb0osRUFBQXpYLFFBQUFx
TyxRQUNBLFFBQUF4VixLQUFBd1YsR0FDQVksR0FBQXdJLEVBQUE1UixVQUFBaE4sRUFBQXdWLEVB
QUF4VixJQU1BLFFBQUE2ZSxJQUFBcEIsR0FJQWtCLEdBQUF6SCxRQUFBLFNBQUEzUCxHQUNBa1cs
RUFBQWxXLEdBQUEsU0FDQW1CLEVBQ0FvVyxHQUVBLE1BQUFBLElBWUEsY0FBQXZYLEdBQUF6SixF
QUFBZ2hCLEtBQ0FBLEVBQUF6WCxLQUFBeVgsRUFBQXpYLE1BQUFxQixFQUNBb1csRUFBQXZjLEtB
QUE0RSxRQUFBOFEsTUFBQWhYLE9BQUE2ZCxJQUVBLGNBQUF2WCxHQUFBLGtCQUFBdVgsS0FDQUEs
R0FBd0J6ZSxLQUFBeWUsRUFBQWhYLE9BQUFnWCxJQUV4QnZjLEtBQUE0RSxRQUFBSSxFQUFBLEtB
QUFtQixHQUFBb1csRUFDQUEsR0FuQkF2YyxLQUFBNEUsUUFBQUksRUFBQSxLQUFBbUIsTUE2QkEs
UUFBQXFXLElBQUE3SixHQUNBLE1BQUFBLE9BQUFyUixLQUFBc0QsUUFBQUUsTUFBQTZOLEVBQUE3
SyxLQUdBLFFBQUEyVSxJQUFBQyxFQUFBNVgsR0FDQSxNQUFBckcsT0FBQWEsUUFBQW9kLEdBQ0FB
LEVBQUFwZixRQUFBd0gsSUFBQSxFQUNHLGdCQUFBNFgsR0FDSEEsRUFBQTVmLE1BQUEsS0FBQVEs
UUFBQXdILElBQUEsSUFDR3BKLEVBQUFnaEIsSUFDSEEsRUFBQWhjLEtBQUFvRSxHQU1BLFFBQUE2
WCxJQUFBOWUsRUFBQStlLEVBQUFDLEdBQ0EsT0FBQXBmLEtBQUFJLEdBQUEsQ0FDQSxHQUFBaWYs
R0FBQWpmLEVBQUFKLEVBQ0EsSUFBQXFmLEVBQUEsQ0FDQSxHQUFBaFksR0FBQTBYLEdBQUFNLEVB
QUExVSxpQkFDQXRELEtBQUErWCxFQUFBL1gsS0FDQWdZLElBQUFGLEdBQ0FHLEdBQUFELEdBRUFq
ZixFQUFBSixHQUFBLFFBTUEsUUFBQXNmLElBQUFuVixHQUNBQSxHQUNBQSxFQUFBb1Ysa0JBQUFD
LFdBMktBLFFBQUFDLElBQUF0VixHQUlBLElBSEEsR0FBQUcsR0FBQUgsRUFBQUcsS0FDQW9WLEVB
QUF2VixFQUNBd1YsRUFBQXhWLEVBQ0EzTSxFQUFBbWlCLEVBQUFKLG9CQUNBSSxJQUFBSixrQkFB
QWpOLE9BQ0FxTixFQUFBclYsT0FDQUEsRUFBQXNWLEdBQUFELEVBQUFyVixRQUdBLE1BQUE5TSxF
QUFBa2lCLElBQUExWCxTQUNBMFgsRUFBQXBWLE9BQ0FBLEVBQUFzVixHQUFBdFYsRUFBQW9WLEVB
QUFwVixNQUdBLE9BQUF1VixJQUFBdlYsRUFBQXdWLFlBQUF4VixFQUFBeVYsT0FHQSxRQUFBSCxJ
QUFBM1gsRUFBQUQsR0FDQSxPQUNBOFgsWUFBQTlZLEdBQUFpQixFQUFBNlgsWUFBQTlYLEVBQUE4
WCxhQUNBQyxNQUFBdmlCLEVBQUF5SyxFQUFBOFgsUUFDQTlYLEVBQUE4WCxNQUFBL1gsRUFBQStY
LE9BQ0EvWCxFQUFBK1gsT0FJQSxRQUFBRixJQUNBQyxFQUNBRSxHQUVBLE1BQUF4aUIsR0FBQXNp
QixJQUFBdGlCLEVBQUF3aUIsR0FDQWhaLEdBQUE4WSxFQUFBRyxHQUFBRCxJQUdBLEdBR0EsUUFB
QWhaLElBQUF4RyxFQUFBZSxHQUNBLE1BQUFmLEdBQUFlLEVBQUFmLEVBQUEsSUFBQWUsRUFBQWYs
RUFBQWUsR0FBQSxHQUdBLFFBQUEwZSxJQUFBOWlCLEdBQ0EsTUFBQTZELE9BQUFhLFFBQUExRSxH
QUNBK2lCLEdBQUEvaUIsR0FFQVMsRUFBQVQsR0FDQWdqQixHQUFBaGpCLEdBRUEsZ0JBQUFBLEdB
Q0FBLEVBR0EsR0FHQSxRQUFBK2lCLElBQUEvaUIsR0FHQSxPQURBaWpCLEdBREEvZSxFQUFBLEdB
RUEvQixFQUFBLEVBQUFtQixFQUFBdEQsRUFBQW9DLE9BQW1DRCxFQUFBbUIsRUFBT25CLElBQzFD
OUIsRUFBQTRpQixFQUFBSCxHQUFBOWlCLEVBQUFtQyxNQUFBLEtBQUE4Z0IsSUFDQS9lLElBQWdC
QSxHQUFBLEtBQ2hCQSxHQUFBK2UsRUFHQSxPQUFBL2UsR0FHQSxRQUFBOGUsSUFBQWhqQixHQUNB
LEdBQUFrRSxHQUFBLEVBQ0EsUUFBQXJCLEtBQUE3QyxHQUNBQSxFQUFBNkMsS0FDQXFCLElBQWdC
QSxHQUFBLEtBQ2hCQSxHQUFBckIsRUFHQSxPQUFBcUIsR0F1Q0EsUUFBQTRZLElBQUE1UCxHQUNB
LE1BQUFnVyxJQUFBaFcsR0FDQSxNQUlBLFNBQUFBLEVBQ0EsV0FEQSxHQU1BLFFBQUFpVyxJQUFB
alcsR0FFQSxJQUFBNUcsR0FDQSxRQUVBLElBQUF5VyxHQUFBN1AsR0FDQSxRQUlBLElBRkFBLElB
QUE3SyxjQUVBLE1BQUErZ0IsR0FBQWxXLEdBQ0EsTUFBQWtXLElBQUFsVyxFQUVBLElBQUE4RyxH
QUFBcVAsU0FBQTNJLGNBQUF4TixFQUNBLE9BQUFBLEdBQUF4SyxRQUFBLFFBRUEwZ0IsR0FBQWxX
LEdBQ0E4RyxFQUFBc0wsY0FBQWdFLE9BQUFDLG9CQUNBdlAsRUFBQXNMLGNBQUFnRSxPQUFBRSxZ
QUdBSixHQUFBbFcsR0FBQSxxQkFBQXBILEtBQUFrTyxFQUFBMVMsWUFTQSxRQUFBbWlCLElBQUF6
UCxHQUNBLG1CQUFBQSxHQUFBLENBQ0EsR0FBQTBQLEdBQUFMLFNBQUFNLGNBQUEzUCxFQUNBLE9B
QUEwUCxJQUlBTCxTQUFBM0ksY0FBQSxPQUlBLE1BQUExRyxHQU1BLFFBQUE0UCxJQUFBQyxFQUFB
N1csR0FDQSxHQUFBTSxHQUFBK1YsU0FBQTNJLGNBQUFtSixFQUNBLGtCQUFBQSxFQUNBdlcsR0FH
QU4sRUFBQUcsTUFBQUgsRUFBQUcsS0FBQW9DLFdBQUFuUCxLQUFBNE0sRUFBQUcsS0FBQW9DLE1B
QUF1VSxVQUNBeFcsRUFBQXlXLGFBQUEsdUJBRUF6VyxHQUdBLFFBQUEwVyxJQUFBQyxFQUFBSixH
QUNBLE1BQUFSLFVBQUFXLGdCQUFBRSxHQUFBRCxHQUFBSixHQUdBLFFBQUFNLElBQUE5VyxHQUNB
LE1BQUFnVyxVQUFBYyxlQUFBOVcsR0FHQSxRQUFBK1csSUFBQS9XLEdBQ0EsTUFBQWdXLFVBQUFl
LGNBQUEvVyxHQUdBLFFBQUFnWCxJQUFBOUIsRUFBQStCLEVBQUFDLEdBQ0FoQyxFQUFBOEIsYUFB
QUMsRUFBQUMsR0FHQSxRQUFBQyxJQUFBdlUsRUFBQW5GLEdBQ0FtRixFQUFBdVUsWUFBQTFaLEdB
R0EsUUFBQTJaLElBQUF4VSxFQUFBbkYsR0FDQW1GLEVBQUF3VSxZQUFBM1osR0FHQSxRQUFBeVgs
SUFBQXRTLEdBQ0EsTUFBQUEsR0FBQXNTLFdBR0EsUUFBQW1DLElBQUF6VSxHQUNBLE1BQUFBLEdB
QUF5VSxZQUdBLFFBQUFiLElBQUE1VCxHQUNBLE1BQUFBLEdBQUE0VCxRQUdBLFFBQUFjLElBQUEx
VSxFQUFBNUMsR0FDQTRDLEVBQUEyVSxZQUFBdlgsRUFHQSxRQUFBMFcsSUFBQTlULEVBQUFwTixF
QUFBN0IsR0FDQWlQLEVBQUE4VCxhQUFBbGhCLEVBQUE3QixHQW9DQSxRQUFBNmpCLElBQUE3WCxF
QUFBOFgsR0FDQSxHQUFBamlCLEdBQUFtSyxFQUFBRyxLQUFBNFgsR0FDQSxJQUFBbGlCLEVBQUEs
Q0FFQSxHQUFBcUQsR0FBQThHLEVBQUFPLFFBQ0F3WCxFQUFBL1gsRUFBQW9WLG1CQUFBcFYsRUFB
QU0sSUFDQTBYLEVBQUE5ZSxFQUFBc04sS0FDQXNSLEdBQ0FqaEIsTUFBQWEsUUFBQXNnQixFQUFB
bmlCLElBQ0FQLEVBQUEwaUIsRUFBQW5pQixHQUFBa2lCLEdBQ0tDLEVBQUFuaUIsS0FBQWtpQixJ
QUNMQyxFQUFBbmlCLE9BQUF6QyxJQUdBNE0sRUFBQUcsS0FBQThYLFNBQ0FwaEIsTUFBQWEsUUFB
QXNnQixFQUFBbmlCLElBRU9taUIsRUFBQW5pQixHQUFBSCxRQUFBcWlCLEdBQUEsR0FFUEMsRUFB
QW5pQixHQUFBbUUsS0FBQStkLEdBSEFDLEVBQUFuaUIsSUFBQWtpQixHQU1BQyxFQUFBbmlCLEdB
QUFraUIsR0F1QkEsUUFBQUcsSUFBQTdoQixFQUFBZSxHQUNBLE1BQ0FmLEdBQUFSLE1BQUF1QixF
QUFBdkIsTUFFQVEsRUFBQTZKLE1BQUE5SSxFQUFBOEksS0FDQTdKLEVBQUF1SyxZQUFBeEosRUFB
QXdKLFdBQ0F2TixFQUFBZ0QsRUFBQThKLFFBQUE5TSxFQUFBK0QsRUFBQStJLE9BQ0FnWSxHQUFB
OWhCLEVBQUFlLElBRUE5RCxFQUFBK0MsRUFBQStoQixxQkFDQS9oQixFQUFBb0ssZUFBQXJKLEVB
QUFxSixjQUNBdk4sRUFBQWtFLEVBQUFxSixhQUFBakgsUUFRQSxRQUFBMmUsSUFBQTloQixFQUFB
ZSxHQUNBLGFBQUFmLEVBQUE2SixJQUEwQixRQUMxQixJQUFBL0ssRUFHQSxRQUZBOUIsRUFBQThC
LEVBQUFrQixFQUFBOEosT0FBQTlNLEVBQUE4QixJQUFBb04sUUFBQXBOLEVBQUFpSSxTQUNBL0os
RUFBQThCLEVBQUFpQyxFQUFBK0ksT0FBQTlNLEVBQUE4QixJQUFBb04sUUFBQXBOLEVBQUFpSSxN
QUlBLFFBQUFpYixJQUFBalksRUFBQWtZLEVBQUFDLEdBQ0EsR0FBQXBqQixHQUFBVSxFQUNBZCxJ
QUNBLEtBQUFJLEVBQUFtakIsRUFBb0JuakIsR0FBQW9qQixJQUFhcGpCLEVBQ2pDVSxFQUFBdUss
RUFBQWpMLEdBQUFVLElBQ0F4QyxFQUFBd0MsS0FBcUJkLEVBQUFjLEdBQUFWLEVBRXJCLE9BQUFK
LEdBZ21CQSxRQUFBeWpCLElBQUFDLEVBQUF6WSxJQUNBeVksRUFBQXRZLEtBQUF6QyxZQUFBc0Ms
RUFBQUcsS0FBQXpDLGFBQ0E0SixHQUFBbVIsRUFBQXpZLEdBSUEsUUFBQXNILElBQUFtUixFQUFB
elksR0FDQSxHQVFBbkssR0FBQTZpQixFQUFBQyxFQVJBQyxFQUFBSCxJQUFBSSxHQUNBQyxFQUFB
OVksSUFBQTZZLEdBQ0FFLEVBQUFDLEdBQUFQLEVBQUF0WSxLQUFBekMsV0FBQSthLEVBQUFsWSxT
QUNBMFksRUFBQUQsR0FBQWhaLEVBQUFHLEtBQUF6QyxXQUFBc0MsRUFBQU8sU0FFQTJZLEtBQ0FD
LElBR0EsS0FBQXRqQixJQUFBb2pCLEdBQ0FQLEVBQUFLLEVBQUFsakIsR0FDQThpQixFQUFBTSxF
QUFBcGpCLEdBQ0E2aUIsR0FRQUMsRUFBQVMsU0FBQVYsRUFBQTFsQixNQUNBcW1CLEdBQUFWLEVB
QUEsU0FBQTNZLEVBQUF5WSxHQUNBRSxFQUFBcGdCLEtBQUFvZ0IsRUFBQXBnQixJQUFBK2dCLGtC
QUNBSCxFQUFBbmYsS0FBQTJlLEtBVEFVLEdBQUFWLEVBQUEsT0FBQTNZLEVBQUF5WSxHQUNBRSxF
QUFBcGdCLEtBQUFvZ0IsRUFBQXBnQixJQUFBZ2hCLFVBQ0FMLEVBQUFsZixLQUFBMmUsR0FZQSxJ
QUFBTyxFQUFBOWpCLE9BQUEsQ0FDQSxHQUFBb2tCLEdBQUEsV0FDQSxPQUFBcmtCLEdBQUEsRUFB
cUJBLEVBQUErakIsRUFBQTlqQixPQUEyQkQsSUFDaERra0IsR0FBQUgsRUFBQS9qQixHQUFBLFdB
QUE2SyxFQUFBeVksR0FHQUcsR0FDQTVXLEdBQUFoQyxFQUFBRyxLQUFBK0IsT0FBQWxDLEVBQUFH
LEtBQUErQixTQUE2RCxTQUFBc1gsR0FFN0RBLElBWUEsR0FSQUwsRUFBQS9qQixRQUNBNE0sR0FB
QWhDLEVBQUFHLEtBQUErQixPQUFBbEMsRUFBQUcsS0FBQStCLFNBQTJELHVCQUMzRCxPQUFBL00s
R0FBQSxFQUFxQkEsRUFBQWdrQixFQUFBL2pCLE9BQThCRCxJQUNuRGtrQixHQUFBRixFQUFBaGtC
LEdBQUEsbUJBQUE2SyxFQUFBeVksTUFLQUcsRUFDQSxJQUFBL2lCLElBQUFrakIsR0FDQUUsRUFB
QXBqQixJQUVBd2pCLEdBQUFOLEVBQUFsakIsR0FBQSxTQUFBNGlCLElBQUFLLEdBUUEsUUFBQUUs
SUFDQXZiLEVBQ0F2RSxHQUVBLEdBQUFoQyxHQUFBcEUsT0FBQWtDLE9BQUEsS0FDQSxLQUFBeUks
RUFDQSxNQUFBdkcsRUFFQSxJQUFBL0IsR0FBQXdqQixDQUNBLEtBQUF4akIsRUFBQSxFQUFhQSxF
QUFBc0ksRUFBQXJJLE9BQWlCRCxJQUM5QndqQixFQUFBbGIsRUFBQXRJLEdBQ0F3akIsRUFBQWMs
WUFDQWQsRUFBQWMsVUFBQUMsSUFFQXhpQixFQUFBeWlCLEdBQUFoQixNQUNBQSxFQUFBcGdCLElB
QUErRixFQUFBcEYsRUFBQXNHLFNBQUEsYUFBQW1aLEVBQUF6YixNQUFBLEVBRUEsT0FBQWhHLEdB
R0EsUUFBQXlpQixJQUFBaEIsR0FDQSxNQUFBQSxHQUFBaUIsU0FBQWpCLEVBQUEsU0FBQTdsQixP
QUFBaUYsS0FBQTRnQixFQUFBYyxlQUE0RUksS0FBQSxLQUc1RSxRQUFBUixJQUFBVixFQUFBelcs
RUFBQWxDLEVBQUF5WSxFQUFBSyxHQUNBLEdBQUE5aUIsR0FBQTJpQixFQUFBcGdCLEtBQUFvZ0Is
RUFBQXBnQixJQUFBMkosRUFDQSxJQUFBbE0sRUFDQSxJQUNBQSxFQUFBZ0ssRUFBQU0sSUFBQXFZ
LEVBQUEzWSxFQUFBeVksRUFBQUssR0FDSyxNQUFBamhCLEdBQ0xtQixFQUFBbkIsRUFBQW1JLEVB
QUFPLFFBQUEsYUFBQW9ZLEVBQUEsU0FBQXpXLEVBQUEsVUFZQSxRQUFBNFgsSUFBQXJCLEVBQUF6
WSxHQUNBLEdBQUErSyxHQUFBL0ssRUFBQVEsZ0JBQ0EsTUFBQW5OLEVBQUEwWCxLQUFBLElBQUFB
LEVBQUFyUixLQUFBc0QsUUFBQStjLGNBR0E3bUIsRUFBQXVsQixFQUFBdFksS0FBQW9DLFFBQUFy
UCxFQUFBOE0sRUFBQUcsS0FBQW9DLFFBQUEsQ0FHQSxHQUFBMU0sR0FBQTZMLEVBQ0FwQixFQUFB
TixFQUFBTSxJQUNBMFosRUFBQXZCLEVBQUF0WSxLQUFBb0MsVUFDQUEsRUFBQXZDLEVBQUFHLEtB
QUFvQyxTQUVBbFAsR0FBQWtQLEVBQUE3SCxVQUNBNkgsRUFBQXZDLEVBQUFHLEtBQUFvQyxNQUFB
ekwsS0FBd0N5TCxHQUd4QyxLQUFBMU0sSUFBQTBNLEdBQ0FiLEVBQUFhLEVBQUExTSxHQUNBbWtC
LEVBQUFua0IsS0FDQTZMLEdBQ0F1WSxHQUFBM1osRUFBQXpLLEVBQUE2TCxFQUtBd1ksS0FBQTNY
LEVBQUF2UCxRQUFBZ25CLEVBQUFobkIsT0FDQWluQixHQUFBM1osRUFBQSxRQUFBaUMsRUFBQXZQ
LE1BRUEsS0FBQTZDLElBQUFta0IsR0FDQTltQixFQUFBcVAsRUFBQTFNLE1BQ0Fza0IsR0FBQXRr
QixHQUNBeUssRUFBQThaLGtCQUFBQyxHQUFBQyxHQUFBemtCLElBQ08wa0IsR0FBQTFrQixJQUNQ
eUssRUFBQWthLGdCQUFBM2tCLEtBTUEsUUFBQW9rQixJQUFBalQsRUFBQW5SLEVBQUE3QyxHQUNB
eW5CLEdBQUE1a0IsR0FHQTZrQixHQUFBMW5CLEdBQ0FnVSxFQUFBd1QsZ0JBQUEza0IsR0FFQW1S
LEVBQUErUCxhQUFBbGhCLEtBRUcwa0IsR0FBQTFrQixHQUNIbVIsRUFBQStQLGFBQUFsaEIsRUFB
QTZrQixHQUFBMW5CLElBQUEsVUFBQUEsRUFBQSxnQkFDR21uQixHQUFBdGtCLEdBQ0g2a0IsR0FB
QTFuQixHQUNBZ1UsRUFBQW9ULGtCQUFBQyxHQUFBQyxHQUFBemtCLElBRUFtUixFQUFBMlQsZUFB
QU4sR0FBQXhrQixFQUFBN0MsR0FHQTBuQixHQUFBMW5CLEdBQ0FnVSxFQUFBd1QsZ0JBQUEza0Is
R0FFQW1SLEVBQUErUCxhQUFBbGhCLEVBQUE3QyxHQVlBLFFBQUE0bkIsSUFBQW5DLEVBQUF6WSxH
QUNBLEdBQUFnSCxHQUFBaEgsRUFBQU0sSUFDQUgsRUFBQUgsRUFBQUcsS0FDQTBhLEVBQUFwQyxF
QUFBdFksSUFDQSxNQUNBak4sRUFBQWlOLEVBQUF3VixjQUNBemlCLEVBQUFpTixFQUFBeVYsU0FD
QTFpQixFQUFBMm5CLElBQ0EzbkIsRUFBQTJuQixFQUFBbEYsY0FDQXppQixFQUFBMm5CLEVBQUFq
RixTQUxBLENBWUEsR0FBQWtGLEdBQUF4RixHQUFBdFYsR0FHQSthLEVBQUEvVCxFQUFBZ1Usa0JB
Q0EzbkIsR0FBQTBuQixLQUNBRCxFQUFBamUsR0FBQWllLEVBQUFoRixHQUFBaUYsS0FJQUQsSUFB
QTlULEVBQUFpVSxhQUNBalUsRUFBQStQLGFBQUEsUUFBQStELEdBQ0E5VCxFQUFBaVUsV0FBQUgs
SUFhQSxRQUFBSSxJQUFBQyxHQW9FQSxRQUFBQyxNQUNBQyxXQUFBcmhCLEtBQUFtaEIsRUFBQS9a
LE1BQUFrYSxFQUFBbm1CLEdBQUFvbUIsUUFDQUQsRUFBQW5tQixFQUFBLEVBckVBLEdBUUFrQyxH
QUFBbWtCLEVBQUFybUIsRUFBQXNtQixFQUFBSixFQVJBSyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMs
R0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxFQUNBQyxFQUFBLEVBQ0FWLEVB
QUEsQ0FHQSxLQUFBbm1CLEVBQUEsRUFBYUEsRUFBQWdtQixFQUFBL2xCLE9BQWdCRCxJQUc3QixH
QUZBcW1CLEVBQUFua0IsRUFDQUEsRUFBQThqQixFQUFBN2lCLFdBQUFuRCxHQUNBdW1CLEVBQ0Es
S0FBQXJrQixHQUFBLEtBQUFta0IsSUFBd0NFLEdBQUEsT0FDbkMsSUFBQUMsRUFDTCxLQUFBdGtC
LEdBQUEsS0FBQW1rQixJQUF3Q0csR0FBQSxPQUNuQyxJQUFBQyxFQUNMLEtBQUF2a0IsR0FBQSxL
QUFBbWtCLElBQXdDSSxHQUFBLE9BQ25DLElBQUFDLEVBQ0wsS0FBQXhrQixHQUFBLEtBQUFta0Is
SUFBd0NLLEdBQUEsT0FDbkMsSUFDTCxNQUFBeGtCLEdBQ0EsTUFBQThqQixFQUFBN2lCLFdBQUFu
RCxFQUFBLElBQ0EsTUFBQWdtQixFQUFBN2lCLFdBQUFuRCxFQUFBLElBQ0EybUIsR0FBQUMsR0FB
QUMsRUFTSyxDQUNMLE9BQUEza0IsR0FDQSxRQUFBc2tCLEdBQUEsQ0FBbUMsTUFDbkMsU0FBQUQs
R0FBQSxDQUFtQyxNQUNuQyxTQUFBRSxHQUFBLENBQTJDLE1BQzNDLFNBQUFJLEdBQTJCLE1BQzNC
LFNBQUFBLEdBQTJCLE1BQzNCLFNBQUFELEdBQTRCLE1BQzVCLFNBQUFBLEdBQTRCLE1BQzVCLFVB
QUFELEdBQTJCLE1BQzNCLFVBQUFBLElBRUEsUUFBQXprQixFQUFBLENBSUEsSUFIQSxHQUFBeVIs
R0FBQTNULEVBQUEsRUFDQThtQixNQUFBLEdBRWNuVCxHQUFBLEdBRWQsT0FEQW1ULEVBQUFkLEVB
QUFlLE9BQUFwVCxJQURzQkEsS0FJdEJtVCxHQUFBRSxHQUFBcmpCLEtBQUFtakIsS0FDQUosR0FB
QSxhQTVCQXpvQixLQUFBcW9CLEdBRUFILEVBQUFubUIsRUFBQSxFQUNBc21CLEVBQUFOLEVBQUEv
WixNQUFBLEVBQUFqTSxHQUFBb21CLFFBRUFILEdBd0NBLFFBWEFob0IsS0FBQXFvQixFQUNBQSxF
QUFBTixFQUFBL1osTUFBQSxFQUFBak0sR0FBQW9tQixPQUNHLElBQUFELEdBQ0hGLElBUUFDLEVB
Q0EsSUFBQWxtQixFQUFBLEVBQWVBLEVBQUFrbUIsRUFBQWptQixPQUFvQkQsSUFDbkNzbUIsRUFB
QVcsR0FBQVgsRUFBQUosRUFBQWxtQixHQUlBLE9BQUFzbUIsR0FHQSxRQUFBVyxJQUFBakIsRUFB
QWxHLEdBQ0EsR0FBQTlmLEdBQUE4ZixFQUFBdmYsUUFBQSxJQUNBLE9BQUFQLEdBQUEsRUFFQSxP
QUFBOGYsRUFBQSxNQUFBa0csRUFBQSxJQUlBLE9BRkFsRyxFQUFBN1QsTUFBQSxFQUFBak0sR0FF
QSxNQUFBZ21CLEVBQUEsSUFEQWxHLEVBQUE3VCxNQUFBak0sRUFBQSxHQU9BLFFBQUFrbkIsSUFB
QUMsR0FDQS9pQixRQUFBQyxNQUFBLG1CQUFBOGlCLEdBR0EsUUFBQUMsSUFDQUMsRUFDQTNtQixH
QUVBLE1BQUEybUIsR0FDQUEsRUFBQXpuQixJQUFBLFNBQUEwbkIsR0FBZ0MsTUFBQUEsR0FBQTVt
QixLQUFpQm9mLE9BQUEsU0FBQXlILEdBQXVCLE1BQUFBLFFBSXhFLFFBQUFDLElBQUEzVixFQUFB
OUosRUFBQWxLLElBQ0FnVSxFQUFBL0osUUFBQStKLEVBQUEvSixXQUFBakQsTUFBc0NrRCxPQUFB
bEssVUFHdEMsUUFBQTRwQixJQUFBNVYsRUFBQTlKLEVBQUFsSyxJQUNBZ1UsRUFBQXpFLFFBQUF5
RSxFQUFBekUsV0FBQXZJLE1BQXNDa0QsT0FBQWxLLFVBR3RDLFFBQUE2cEIsSUFDQTdWLEVBQ0E5
SixFQUNBMGMsRUFDQTVtQixFQUNBOHBCLEVBQ0FyRCxJQUVBelMsRUFBQXRKLGFBQUFzSixFQUFB
dEosZ0JBQUExRCxNQUFnRGtELE9BQUEwYyxVQUFBNW1CLFFBQUE4cEIsTUFBQXJELGNBR2hELFFB
QUFzRCxJQUNBL1YsRUFDQTlKLEVBQ0FsSyxFQUNBeW1CLEVBQ0F1RCxFQUNBQyxHQWNBeEQsS0FB
QTNYLGdCQUNBMlgsR0FBQTNYLFFBQ0E1RSxFQUFBLElBQUFBLEdBRUF1YyxLQUFBdmhCLGFBQ0F1
aEIsR0FBQXZoQixLQUNBZ0YsRUFBQSxJQUFBQSxHQUdBdWMsS0FBQTFYLGdCQUNBMFgsR0FBQTFY
LFFBQ0E3RSxFQUFBLElBQUFBLEVBRUEsSUFBQWdnQixFQUNBekQsTUFBQTBELGNBQ0ExRCxHQUFB
MEQsT0FDQUQsRUFBQWxXLEVBQUFvVyxlQUFBcFcsRUFBQW9XLGtCQUVBRixFQUFBbFcsRUFBQWtX
LFNBQUFsVyxFQUFBa1csVUFFQSxJQUFBRyxJQUFvQnJxQixRQUFBeW1CLGFBQ3BCNVEsRUFBQXFV
LEVBQUFoZ0IsRUFFQXJHLE9BQUFhLFFBQUFtUixHQUNBbVUsRUFBQW5VLEVBQUErSyxRQUFBeUos
R0FBQXhVLEVBQUE3TyxLQUFBcWpCLEdBRUFILEVBQUFoZ0IsR0FERzJMLEVBQ0htVSxHQUFBSyxF
QUFBeFUsTUFBQXdVLEdBRUFBLEVBSUEsUUFBQUMsSUFDQXRXLEVBQ0E5SixFQUNBcWdCLEdBRUEs
R0FBQUMsR0FDQUMsR0FBQXpXLEVBQUEsSUFBQTlKLElBQ0F1Z0IsR0FBQXpXLEVBQUEsVUFBQTlK
LEVBQ0EsVUFBQXNnQixFQUNBLE1BQUF0QyxJQUFBc0MsRUFDRyxTQUFBRCxFQUFBLENBQ0gsR0FB
QUcsR0FBQUQsR0FBQXpXLEVBQUE5SixFQUNBLFVBQUF3Z0IsRUFDQSxNQUFBbnBCLE1BQUFDLFVB
QUFrcEIsSUFLQSxRQUFBRCxJQUFBelcsRUFBQTlKLEdBQ0EsR0FBQWxKLEVBQ0EsV0FBQUEsRUFB
QWdULEVBQUEyVyxTQUFBemdCLElBRUEsT0FEQWpJLEdBQUErUixFQUFBNFcsVUFDQXpvQixFQUFB
LEVBQUFtQixFQUFBckIsRUFBQUcsT0FBb0NELEVBQUFtQixFQUFPbkIsSUFDM0MsR0FBQUYsRUFB
QUUsR0FBQStILFNBQUEsQ0FDQWpJLEVBQUFVLE9BQUFSLEVBQUEsRUFDQSxPQUlBLE1BQUFuQixH
QVFBLFFBQUE2cEIsSUFDQTdXLEVBQ0FoVSxFQUNBeW1CLEdBRUEsR0FBQTFCLEdBQUEwQixNQUNB
cUUsRUFBQS9GLEVBQUErRixPQUNBdkMsRUFBQXhELEVBQUF3RCxLQUdBd0MsRUFEQSxLQUVBeEMs
S0FDQXdDLEVBQ0EsOENBSUFELElBQ0FDLEVBQUEsTUFBQUEsRUFBQSxJQUVBLElBQUFDLEdBQUFD
LEdBQUFqckIsRUFBQStxQixFQUVBL1csR0FBQWlILE9BQ0FqYixNQUFBLElBQUFBLEVBQUEsSUFD
QXlvQixXQUFBLElBQUF6b0IsRUFBQSxJQUNBdWMsU0FBQSxtQkFBd0R5TyxFQUFBLEtBT3hELFFB
QUFDLElBQ0FqckIsRUFDQWdyQixHQUVBLEdBQUFFLEdBQUFDLEdBQUFuckIsRUFDQSxlQUFBa3JC
LEVBQUFFLElBQ0FwckIsRUFBQSxJQUFBZ3JCLEVBRUEsUUFBQUUsRUFBQSxTQUFBQSxFQUFBLFNB
QUFGLEVBQUEsSUF5QkEsUUFBQUcsSUFBQW5xQixHQUtBLEdBSkFhLEdBQUFiLEVBQ0E0TCxHQUFB
L0ssR0FBQU8sT0FDQWlwQixHQUFBQyxHQUFBQyxHQUFBLEVBRUF2cUIsRUFBQTBCLFFBQUEsUUFB
QTFCLEVBQUF3cUIsWUFBQSxLQUFBNWUsR0FBQSxFQUNBLE9BQ0F1YixJQUFBbm5CLEVBQ0FvcUIs
SUFBQSxLQUlBLE9BQUFLLE1BQ0FDLEdBQUFDLEtBRUFDLEdBQUFGLElBQ0FHLEdBQUFILElBQ0ss
S0FBQUEsSUFDTEksR0FBQUosR0FJQSxRQUNBdkQsSUFBQW5uQixFQUFBK3FCLFVBQUEsRUFBQVQs
SUFDQUYsSUFBQXBxQixFQUFBK3FCLFVBQUFULEdBQUEsRUFBQUMsS0FJQSxRQUFBSSxNQUNBLE1B
QUE5cEIsSUFBQXlELGFBQUErbEIsSUFHQSxRQUFBSSxNQUNBLE1BQUFKLEtBQUF6ZSxHQUdBLFFB
QUFnZixJQUFBRixHQUNBLFlBQUFBLEdBQUEsS0FBQUEsRUFHQSxRQUFBSSxJQUFBSixHQUNBLEdB
QUFNLEdBQUEsQ0FFQSxLQURBVixHQUFBRCxJQUNBSSxNQUVBLEdBREFDLEVBQUFDLEtBQ0FDLEdB
QUFGLEdBQ0FHLEdBQUFILE9BS0EsSUFGQSxLQUFBQSxHQUF1Qk0sSUFDdkIsS0FBQU4sR0FBdUJN
LElBQ3ZCLElBQUFBLEVBQUEsQ0FDQVQsR0FBQUYsRUFDQSxRQUtBLFFBQUFRLElBQUFILEdBRUEs
SUFEQSxHQUFBTyxHQUFBUCxHQUNBRCxPQUNBQyxFQUFBQyxRQUNBTSxLQWVBLFFBQUFoUixJQUNB
akgsRUFDQTJSLEVBQ0F1RyxHQUVBQyxHQUFBRCxDQUNBLElBQUFsc0IsR0FBQTJsQixFQUFBM2xC
LE1BQ0F5bUIsRUFBQWQsRUFBQWMsVUFDQXZaLEVBQUE4RyxFQUFBOUcsSUFDQTlDLEVBQUE0SixF
QUFBMlcsU0FBQXZnQixJQW9CQSxJQUFBNEosRUFBQXJDLFVBR0EsTUFGQWtaLElBQUE3VyxFQUFB
aFUsRUFBQXltQixJQUVBLENBQ0csZUFBQXZaLEVBQ0hrZixHQUFBcFksRUFBQWhVLEVBQUF5bUIs
T0FDRyxjQUFBdlosR0FBQSxhQUFBOUMsRUFDSGlpQixHQUFBclksRUFBQWhVLEVBQUF5bUIsT0FD
RyxjQUFBdlosR0FBQSxVQUFBOUMsRUFDSGtpQixHQUFBdFksRUFBQWhVLEVBQUF5bUIsT0FDRyxj
QUFBdlosR0FBQSxhQUFBQSxFQUNIcWYsR0FBQXZZLEVBQUFoVSxFQUFBeW1CLE9BQ0csS0FBQXJn
QixHQUFBMlcsY0FBQTdQLEdBR0gsTUFGQTJkLElBQUE3VyxFQUFBaFUsRUFBQXltQixJQUVBLENB
V0EsVUFHQSxRQUFBNEYsSUFDQXJZLEVBQ0FoVSxFQUNBeW1CLEdBRUEsR0FBQXFFLEdBQUFyRSxL
QUFBcUUsT0FDQTBCLEVBQUFsQyxHQUFBdFcsRUFBQSxpQkFDQXlZLEVBQUFuQyxHQUFBdFcsRUFB
QSxzQkFDQTBZLEVBQUFwQyxHQUFBdFcsRUFBQSx1QkFDQTJWLElBQUEzVixFQUFBLFVBQ0EsaUJB
QUFoVSxFQUFBLFFBQ0FBLEVBQUEsSUFBQXdzQixFQUFBLFFBQ0EsU0FBQUMsRUFDQSxLQUFBenNC
LEVBQUEsSUFDQSxPQUFBQSxFQUFBLElBQUF5c0IsRUFBQSxNQUdBMUMsR0FBQS9WLEVBQUEyWSxH
QUNBLFdBQUEzc0IsRUFBQSx5Q0FFQXlzQixFQUFBLE1BQUFDLEVBQUEscUNBRUE1QixFQUFBLE1B
QUEwQixFQUFBLElBQUFBLEdBQUEsNkNBRXdCeHNCLEVBQUEsbUNBQ1pBLEVBQUEscURBQ0RpckIs
R0FBQWpyQixFQUFBLFdBQ1gsU0FJQSxRQUFBc3NCLElBQ0F0WSxFQUNBaFUsRUFDQXltQixHQUVB
LEdBQUFxRSxHQUFBckUsS0FBQXFFLE9BQ0EwQixFQUFBbEMsR0FBQXRXLEVBQUEsZ0JBQ0F3WSxH
QUFBMUIsRUFBQSxNQUFBMEIsRUFBQSxJQUFBQSxFQUNBN0MsR0FBQTNWLEVBQUEsZ0JBQUFoVSxF
QUFBLElBQUF3c0IsRUFBQSxLQUNBekMsR0FBQS9WLEVBQUEyWSxHQUFBMUIsR0FBQWpyQixFQUFB
d3NCLEdBQUEsU0FHQSxRQUFBSixJQUNBcFksRUFDQWhVLEVBQ0F5bUIsR0FFQSxHQUFBcUUsR0FB
QXJFLEtBQUFxRSxPQUNBOEIsRUFBQSwwSkFHQTlCLEVBQUEsc0JBR0ErQixFQUFBLHVCQUFBRCxF
QUFBLEdBQ0FDLEtBQUEsSUFBQTVCLEdBQUFqckIsRUFGQSw2REFHQStwQixHQUFBL1YsRUFBQSxT
QUFBNlksRUFBQSxTQUdBLFFBQUFOLElBQ0F2WSxFQUNBaFUsRUFDQXltQixHQUVBLEdBQUFyYyxH
QUFBNEosRUFBQTJXLFNBQUF2Z0IsS0FDQTJhLEVBQUEwQixNQUNBcUcsRUFBQS9ILEVBQUErSCxL
QUNBaEMsRUFBQS9GLEVBQUErRixPQUNBdkMsRUFBQXhELEVBQUF3RCxLQUNBd0UsR0FBQUQsR0FB
QSxVQUFBMWlCLEVBQ0F3RSxFQUFBa2UsRUFDQSxTQUNBLFVBQUExaUIsRUFDQTRpQixHQUNBLFFB
RUFqQyxFQUFBLHFCQUNBeEMsS0FDQXdDLEVBQUEsOEJBRUFELElBQ0FDLEVBQUEsTUFBQUEsRUFB
QSxJQUdBLElBQUE4QixHQUFBNUIsR0FBQWpyQixFQUFBK3FCLEVBQ0FnQyxLQUNBRixFQUFBLHFD
QUE4Q0EsR0FHOUNsRCxHQUFBM1YsRUFBQSxZQUFBaFUsRUFBQSxLQUNBK3BCLEdBQUEvVixFQUFB
cEYsRUFBQWllLEVBQUEsVUFDQXRFLEdBQUF1QyxJQUNBZixHQUFBL1YsRUFBQSx5QkFVQSxRQUFB
aVosSUFBQTNlLEdBQ0EsR0FBQU0sRUFFQXZPLEdBQUFpTyxFQUFBMGUsT0FFQXBlLEVBQUFzZSxH
QUFBLGlCQUNBNWUsRUFBQU0sTUFBQS9FLE9BQUF5RSxFQUFBMGUsSUFBQTFlLEVBQUFNLGNBQ0FO
LEdBQUEwZSxLQUVBM3NCLEVBQUFpTyxFQUFBcWUsT0FFQS9kLEVBQUF1ZSxHQUFBLGlCQUNBN2Us
RUFBQU0sTUFBQS9FLE9BQUF5RSxFQUFBcWUsSUFBQXJlLEVBQUFNLGNBQ0FOLEdBQUFxZSxLQU1B
LFFBQUFTLElBQ0F4ZSxFQUNBeUssRUFDQS9HLEVBQ0F4RCxFQUNBQyxHQUVBLEdBQUF1RCxFQUFB
LENBQ0EsR0FBQSthLEdBQUFoVSxFQUNBelMsRUFBQTBtQixFQUNBalUsR0FBQSxTQUFBa1UsR0FJ
QSxRQUhBLElBQUFocUIsVUFBQW5CLE9BQ0FpckIsRUFBQUUsR0FDQUYsRUFBQTdwQixNQUFBLEtB
QUFELGFBRUFpcUIsR0FBQTVlLEVBQUF5SyxFQUFBdkssRUFBQWxJLElBSUEwbUIsR0FBQUcsaUJB
Q0E3ZSxFQUNBeUssRUFDQXFVLElBQ1M1ZSxVQUFBQyxXQUNURCxHQUlBLFFBQUEwZSxJQUNBNWUs
RUFDQXlLLEVBQ0F2SyxFQUNBbEksSUFFQUEsR0FBQTBtQixJQUFBSyxvQkFBQS9lLEVBQUF5SyxF
QUFBdkssR0FHQSxRQUFBOGUsSUFBQW5JLEVBQUF6WSxHQUNBLElBQUE5TSxFQUFBdWxCLEVBQUF0
WSxLQUFBbUIsTUFBQXBPLEVBQUE4TSxFQUFBRyxLQUFBbUIsSUFBQSxDQUdBLEdBQUFBLEdBQUF0
QixFQUFBRyxLQUFBbUIsT0FDQUMsRUFBQWtYLEVBQUF0WSxLQUFBbUIsTUFDQWdmLElBQUF0Z0Is
RUFBQU0sSUFDQTJmLEdBQUEzZSxHQUNBRCxHQUFBQyxFQUFBQyxFQUFBNmUsR0FBQUksR0FBQXhn
QixFQUFBTyxVQVVBLFFBQUFzZ0IsSUFBQXBJLEVBQUF6WSxHQUNBLElBQUE5TSxFQUFBdWxCLEVB
QUF0WSxLQUFBZ1IsWUFBQWplLEVBQUE4TSxFQUFBRyxLQUFBZ1IsVUFBQSxDQUdBLEdBQUF0YixH
QUFBNkwsRUFDQXBCLEVBQUFOLEVBQUFNLElBQ0F3Z0IsRUFBQXJJLEVBQUF0WSxLQUFBZ1IsYUFD
QWxVLEVBQUErQyxFQUFBRyxLQUFBZ1IsWUFFQTlkLEdBQUE0SixFQUFBdkMsVUFDQXVDLEVBQUEr
QyxFQUFBRyxLQUFBZ1IsU0FBQXJhLEtBQTJDbUcsR0FHM0MsS0FBQXBILElBQUFpckIsR0FDQTV0
QixFQUFBK0osRUFBQXBILE1BQ0F5SyxFQUFBekssR0FBQSxHQUdBLEtBQUFBLElBQUFvSCxHQUtB
LEdBSkF5RSxFQUFBekUsRUFBQXBILEdBSUEsZ0JBQUFBLEdBQUEsY0FBQUEsSUFDQW1LLEVBQUFJ
LFdBQTJCSixFQUFBSSxTQUFBaEwsT0FBQSxHQUMzQnNNLElBQUFvZixFQUFBanJCLElBR0EsYUFB
QUEsRUFBQSxDQUdBeUssRUFBQXlnQixPQUFBcmYsQ0FFQSxJQUFBc2YsR0FBQTl0QixFQUFBd08s
R0FBQSxHQUFBak4sT0FBQWlOLEVBQ0F1ZixJQUFBM2dCLEVBQUFOLEVBQUFnaEIsS0FDQTFnQixF
QUFBdE4sTUFBQWd1QixPQUdBMWdCLEdBQUF6SyxHQUFBNkwsR0FRQSxRQUFBdWYsSUFDQTNnQixF
QUNBTixFQUNBa2hCLEdBRUEsT0FBQTVnQixFQUFBNmdCLFlBQ0EsV0FBQW5oQixFQUFBRSxLQUNB
a2hCLEdBQUE5Z0IsRUFBQTRnQixJQUNBRyxHQUFBL2dCLEVBQUE0Z0IsSUFJQSxRQUFBRSxJQUFB
OWdCLEVBQUE0Z0IsR0FHQSxHQUFBSSxJQUFBLENBR0EsS0FBT0EsRUFBQWpMLFNBQUFrTCxnQkFB
QWpoQixFQUErQyxNQUFBekksSUFDdEQsTUFBQXlwQixJQUFBaGhCLEVBQUF0TixRQUFBa3VCLEVB
R0EsUUFBQUcsSUFBQS9nQixFQUFBdkUsR0FDQSxHQUFBL0ksR0FBQXNOLEVBQUF0TixNQUNBeW1C
LEVBQUFuWixFQUFBa2hCLFdBQ0EsT0FBQW51QixHQUFBb21CLE1BQUFxRSxPQUNBcHBCLEVBQUEx
QixLQUFBMEIsRUFBQXFILEdBRUExSSxFQUFBb21CLE1BQUE4QixLQUNBdm9CLEVBQUF1b0IsU0FB
QXhmLEVBQUF3ZixPQUVBdm9CLElBQUErSSxFQXdCQSxRQUFBMGxCLElBQUF0aEIsR0FDQSxHQUFB
dWhCLEdBQUFDLEdBQUF4aEIsRUFBQXVoQixNQUdBLE9BQUF2aEIsR0FBQXloQixZQUNBOXFCLEVB
QUFxSixFQUFBeWhCLFlBQUFGLEdBQ0FBLEVBSUEsUUFBQUMsSUFBQUUsR0FDQSxNQUFBaHJCLE9B
QUFhLFFBQUFtcUIsR0FDQTVxQixFQUFBNHFCLEdBRUEsZ0JBQUFBLEdBQ0FDLEdBQUFELEdBRUFB
LEVBT0EsUUFBQUUsSUFBQS9oQixFQUFBZ2lCLEdBQ0EsR0FDQUMsR0FEQS9xQixJQUdBLElBQUE4
cUIsRUFFQSxJQURBLEdBQUF4TSxHQUFBeFYsRUFDQXdWLEVBQUFKLG1CQUNBSSxJQUFBSixrQkFB
QWpOLE9BQ0FxTixFQUFBclYsT0FBQThoQixFQUFBUixHQUFBak0sRUFBQXJWLFFBQ0FySixFQUFB
SSxFQUFBK3FCLElBS0FBLEVBQUFSLEdBQUF6aEIsRUFBQUcsUUFDQXJKLEVBQUFJLEVBQUErcUIs
RUFJQSxLQURBLEdBQUExTSxHQUFBdlYsRUFDQXVWLElBQUExWCxRQUNBMFgsRUFBQXBWLE9BQUE4
aEIsRUFBQVIsR0FBQWxNLEVBQUFwVixRQUNBckosRUFBQUksRUFBQStxQixFQUdBLE9BQUEvcUIs
R0E4Q0EsUUFBQWdyQixJQUFBekosRUFBQXpZLEdBQ0EsR0FBQUcsR0FBQUgsRUFBQUcsS0FDQTBh
LEVBQUFwQyxFQUFBdFksSUFFQSxNQUFBak4sRUFBQWlOLEVBQUF5aEIsY0FBQTF1QixFQUFBaU4s
RUFBQXVoQixRQUNBeHVCLEVBQUEybkIsRUFBQStHLGNBQUExdUIsRUFBQTJuQixFQUFBNkcsUUFE
QSxDQU1BLEdBQUFoZ0IsR0FBQXhFLEVBQ0E4SixFQUFBaEgsRUFBQU0sSUFDQTZoQixFQUFBdEgs
RUFBQStHLFlBQ0FRLEVBQUF2SCxFQUFBd0gsaUJBQUF4SCxFQUFBNkcsVUFHQVksRUFBQUgsR0FB
QUMsRUFFQVYsRUFBQUMsR0FBQTNoQixFQUFBRyxLQUFBdWhCLFVBS0ExaEIsR0FBQUcsS0FBQWtp
QixnQkFBQWh2QixFQUFBcXVCLEVBQUFobkIsUUFDQTVELEtBQWU0cUIsR0FDZkEsQ0FFQSxJQUFB
YSxHQUFBUixHQUFBL2hCLEdBQUEsRUFFQSxLQUFBOUMsSUFBQW9sQixHQUNBcHZCLEVBQUFxdkIs
RUFBQXJsQixLQUNBc2xCLEdBQUF4YixFQUFBOUosRUFBQSxHQUdBLEtBQUFBLElBQUFxbEIsSUFD
QTdnQixFQUFBNmdCLEVBQUFybEIsTUFDQW9sQixFQUFBcGxCLElBRUFzbEIsR0FBQXhiLEVBQUE5
SixFQUFBLE1BQUF3RSxFQUFBLEdBQUFBLElBZ0JBLFFBQUErZ0IsSUFBQXpiLEVBQUE4VCxHQUVB
LEdBQUFBLFFBQUFTLFFBS0EsR0FBQXZVLEVBQUEwYixVQUNBNUgsRUFBQXBsQixRQUFBLFFBQ0Fv
bEIsRUFBQTVsQixNQUFBLE9BQUE2WCxRQUFBLFNBQUExVixHQUE2QyxNQUFBMlAsR0FBQTBiLFVB
QUFsaEIsSUFBQW5LLEtBRTdDMlAsRUFBQTBiLFVBQUFsaEIsSUFBQXNaLE9BRUcsQ0FDSCxHQUFB
cFosR0FBQSxLQUFBc0YsRUFBQTJiLGFBQUEsaUJBQ0FqaEIsR0FBQWhNLFFBQUEsSUFBQW9sQixF
QUFBLFFBQ0E5VCxFQUFBK1AsYUFBQSxTQUFBclYsRUFBQW9aLEdBQUFTLFNBU0EsUUFBQXFILElB
QUE1YixFQUFBOFQsR0FFQSxHQUFBQSxRQUFBUyxRQUtBLEdBQUF2VSxFQUFBMGIsVUFDQTVILEVB
QUFwbEIsUUFBQSxRQUNBb2xCLEVBQUE1bEIsTUFBQSxPQUFBNlgsUUFBQSxTQUFBMVYsR0FBNkMs
TUFBQTJQLEdBQUEwYixVQUFBcHRCLE9BQUErQixLQUU3QzJQLEVBQUEwYixVQUFBcHRCLE9BQUF3
bEIsR0FFQTlULEVBQUEwYixVQUFBdHRCLFFBQ0E0UixFQUFBd1QsZ0JBQUEsYUFFRyxDQUdILElB
RkEsR0FBQTlZLEdBQUEsS0FBQXNGLEVBQUEyYixhQUFBLGtCQUNBRSxFQUFBLElBQUEvSCxFQUFB
LElBQ0FwWixFQUFBaE0sUUFBQW10QixJQUFBLEdBQ0FuaEIsSUFBQW9oQixRQUFBRCxFQUFBLElB
RUFuaEIsS0FBQTZaLE9BQ0E3WixFQUNBc0YsRUFBQStQLGFBQUEsUUFBQXJWLEdBRUFzRixFQUFB
d1QsZ0JBQUEsVUFPQSxRQUFBdUksSUFBQUMsR0FDQSxHQUFBQSxFQUFBLENBSUEsbUJBQUFBLEdB
QUEsQ0FDQSxHQUFBOXJCLEtBS0EsUUFKQSxJQUFBOHJCLEVBQUFDLEtBQ0Fuc0IsRUFBQUksRUFB
QWdzQixHQUFBRixFQUFBOWxCLE1BQUEsTUFFQXBHLEVBQUFJLEVBQUE4ckIsR0FDQTlyQixFQUNH
LHNCQUFBOHJCLEdBQ0hFLEdBQUFGLE9BREcsSUE4Q0gsUUFBQUcsSUFBQW50QixHQUNBb3RCLEdB
QUEsV0FDQUEsR0FBQXB0QixLQUlBLFFBQUFxdEIsSUFBQXJjLEVBQUE4VCxHQUNBLEdBQUF3SSxH
QUFBdGMsRUFBQWdVLHFCQUFBaFUsRUFBQWdVLHNCQUNBc0ksR0FBQTV0QixRQUFBb2xCLEdBQUEs
SUFDQXdJLEVBQUF0cEIsS0FBQThnQixHQUNBMkgsR0FBQXpiLEVBQUE4VCxJQUlBLFFBQUF5SSxJ
QUFBdmMsRUFBQThULEdBQ0E5VCxFQUFBZ1Usb0JBQ0ExbEIsRUFBQTBSLEVBQUFnVSxtQkFBQUYs
R0FFQThILEdBQUE1YixFQUFBOFQsR0FHQSxRQUFBMEksSUFDQXhjLEVBQ0F5YyxFQUNBQyxHQUVB
LEdBQUEzTCxHQUFBNEwsR0FBQTNjLEVBQUF5YyxHQUNBcm1CLEVBQUEyYSxFQUFBM2EsS0FDQTBI
LEVBQUFpVCxFQUFBalQsUUFDQThlLEVBQUE3TCxFQUFBNkwsU0FDQSxLQUFBeG1CLEVBQWMsTUFB
QXNtQixJQUNkLElBQUE5aEIsR0FBQXhFLElBQUF5bUIsR0FBQUMsR0FBQUMsR0FDQUMsRUFBQSxF
QUNBQyxFQUFBLFdBQ0FqZCxFQUFBMlosb0JBQUEvZSxFQUFBc2lCLEdBQ0FSLEtBRUFRLEVBQUEs
U0FBQXJzQixHQUNBQSxFQUFBaUMsU0FBQWtOLEtBQ0FnZCxHQUFBSixHQUNBSyxJQUlBcGYsWUFB
QSxXQUNBbWYsRUFBQUosR0FDQUssS0FFR25mLEVBQUEsR0FDSGtDLEVBQUF5WixpQkFBQTdlLEVB
QUFzaUIsR0FLQSxRQUFBUCxJQUFBM2MsRUFBQXljLEdBQ0EsR0FRQXJtQixHQVJBK21CLEVBQUE3
TixPQUFBOE4saUJBQUFwZCxHQUNBcWQsRUFBQUYsRUFBQUcsR0FBQSxTQUFBcHZCLE1BQUEsTUFD
QXF2QixFQUFBSixFQUFBRyxHQUFBLFlBQUFwdkIsTUFBQSxNQUNBc3ZCLEVBQUFDLEdBQUFKLEVB
QUFFLEdBQ0FHLEVBQUFQLEVBQUFRLEdBQUEsU0FBQXp2QixNQUFBLE1BQ0EwdkIsRUFBQVQsRUFB
QVEsR0FBQSxZQUFBenZCLE1BQUEsTUFDQTJ2QixFQUFBSixHQUFBQyxFQUFBRSxHQUdBOWYsRUFB
QSxFQUNBOGUsRUFBQSxDQThCQSxPQTVCQUgsS0FBQUksR0FDQVcsRUFBQSxJQUNBcG5CLEVBQUF5
bUIsR0FDQS9lLEVBQUEwZixFQUNBWixFQUFBVyxFQUFBbnZCLFFBRUdxdUIsSUFBQXFCLEdBQ0hE
LEVBQUEsSUFDQXpuQixFQUFBMG5CLEdBQ0FoZ0IsRUFBQStmLEVBQ0FqQixFQUFBZ0IsRUFBQXh2
QixTQUdBMFAsRUFBQTNRLEtBQUE4SCxJQUFBdW9CLEVBQUFLLEdBQ0F6bkIsRUFBQTBILEVBQUEs
RUFDQTBmLEVBQUFLLEVBQ0FoQixHQUNBaUIsR0FDQSxLQUNBbEIsRUFBQXhtQixFQUNBQSxJQUFB
eW1CLEdBQ0FVLEVBQUFudkIsT0FDQXd2QixFQUFBeHZCLE9BQ0EsSUFNQWdJLE9BQ0EwSCxVQUNB
OGUsWUFDQW1CLGFBTkEzbkIsSUFBQXltQixJQUNBbUIsR0FBQWxzQixLQUFBcXJCLEVBQUFHLEdB
QUEsY0FTQSxRQUFBRyxJQUFBUSxFQUFBQyxHQUVBLEtBQUFELEVBQUE3dkIsT0FBQTh2QixFQUFB
OXZCLFFBQ0E2dkIsSUFBQXBvQixPQUFBb29CLEVBR0EsT0FBQTl3QixNQUFBOEgsSUFBQXpGLE1B
QUEsS0FBQTB1QixFQUFBbndCLElBQUEsU0FBQTBZLEVBQUF0WSxHQUNBLE1BQUFnd0IsSUFBQTFY
LEdBQUEwWCxHQUFBRixFQUFBOXZCLE9BSUEsUUFBQWd3QixJQUFBQyxHQUNBLFdBQUFDLE9BQUFE
LEVBQUFoa0IsTUFBQSxPQUtBLFFBQUFra0IsSUFBQXRsQixFQUFBdWxCLEdBQ0EsR0FBQXZlLEdB
QUFoSCxFQUFBTSxHQUdBak4sR0FBQTJULEVBQUF3ZSxZQUNBeGUsRUFBQXdlLFNBQUFDLFdBQUEs
RUFDQXplLEVBQUF3ZSxXQUdBLElBQUFybEIsR0FBQTRpQixHQUFBL2lCLEVBQUFHLEtBQUF1bEIs
V0FDQSxLQUFBeHlCLEVBQUFpTixLQUtBOU0sRUFBQTJULEVBQUEyZSxXQUFBLElBQUEzZSxFQUFB
NGUsU0FBQSxDQTRCQSxJQXhCQSxHQUFBM0MsR0FBQTlpQixFQUFBOGlCLElBQ0E3bEIsRUFBQStD
LEVBQUEvQyxLQUNBeW9CLEVBQUExbEIsRUFBQTBsQixXQUNBQyxFQUFBM2xCLEVBQUEybEIsYUFD
QUMsRUFBQTVsQixFQUFBNGxCLGlCQUNBQyxFQUFBN2xCLEVBQUE2bEIsWUFDQUMsRUFBQTlsQixF
QUFBOGxCLGNBQ0FDLEVBQUEvbEIsRUFBQStsQixrQkFDQUMsRUFBQWhtQixFQUFBZ21CLFlBQ0Fi
LEVBQUFubEIsRUFBQW1sQixNQUNBYyxFQUFBam1CLEVBQUFpbUIsV0FDQUMsRUFBQWxtQixFQUFB
a21CLGVBQ0FDLEVBQUFubUIsRUFBQW1tQixhQUNBQyxFQUFBcG1CLEVBQUFvbUIsT0FDQUMsRUFB
QXJtQixFQUFBcW1CLFlBQ0FDLEVBQUF0bUIsRUFBQXNtQixnQkFDQUMsRUFBQXZtQixFQUFBdW1C
LFNBTUFubUIsRUFBQW9tQixHQUNBQyxFQUFBRCxHQUFBbGYsT0FDQW1mLEtBQUEvb0IsUUFDQStv
QixJQUFBL29CLE9BQ0EwQyxFQUFBcW1CLEVBQUFybUIsT0FHQSxJQUFBc21CLElBQUF0bUIsRUFB
QXFHLGFBQUE1RyxFQUFBOG1CLFlBRUEsS0FBQUQsR0FBQU4sR0FBQSxLQUFBQSxFQUFBLENBSUEs
R0FBQVEsR0FBQUYsR0FBQWIsRUFDQUEsRUFDQUgsRUFDQW1CLEVBQUFILEdBQUFYLEVBQ0FBLEVB
Q0FILEVBQ0FrQixFQUFBSixHQUFBWixFQUNBQSxFQUNBSCxFQUVBb0IsRUFBQUwsRUFDQVAsR0FB
QUgsRUFDQUEsRUFDQWdCLEVBQUFOLEdBQ0Esa0JBQUFOLEtBQ0FqQixFQUNBOEIsRUFBQVAsRUFD
QUwsR0FBQUosRUFDQUEsRUFDQWlCLEVBQUFSLEVBQ0FKLEdBQUFKLEVBQ0FBLEVBRUFpQixFQUFB
NXlCLEVBQ0FqQixFQUFBaXpCLEdBQ0FBLEVBQUFwQixNQUNBb0IsR0FPQWEsR0FBQSxJQUFBdEUs
SUFBQS9JLEdBQ0FzTixFQUFBQyxHQUFBTixHQUVBekQsRUFBQTFjLEVBQUEyZSxTQUFBenRCLEVB
QUEsV0FDQXF2QixJQUNBaEUsR0FBQXZjLEVBQUFpZ0IsR0FDQTFELEdBQUF2YyxFQUFBZ2dCLElB
RUF0RCxFQUFBK0IsV0FDQThCLEdBQ0FoRSxHQUFBdmMsRUFBQStmLEdBRUFNLEtBQUFyZ0IsSUFF
QW9nQixLQUFBcGdCLEdBRUFBLEVBQUEyZSxTQUFBLE1BR0EzbEIsR0FBQUcsS0FBQXVuQixNQUVB
MWxCLEdBQUFoQyxFQUFBRyxLQUFBK0IsT0FBQWxDLEVBQUFHLEtBQUErQixTQUEyRCxvQkFDM0Qs
R0FBQXJFLEdBQUFtSixFQUFBdU8sV0FDQW9TLEVBQUE5cEIsS0FBQStwQixVQUFBL3BCLEVBQUEr
cEIsU0FBQTVuQixFQUFBbkssSUFDQTh4QixJQUNBQSxFQUFBem5CLE1BQUFGLEVBQUFFLEtBQ0F5
bkIsRUFBQXJuQixJQUFBa2xCLFVBRUFtQyxFQUFBcm5CLElBQUFrbEIsV0FFQTJCLEtBQUFuZ0Is
RUFBQTBjLEtBS0F3RCxLQUFBbGdCLEdBQ0F1Z0IsSUFDQWxFLEdBQUFyYyxFQUFBK2YsR0FDQTFE
LEdBQUFyYyxFQUFBZ2dCLEdBQ0E3RCxHQUFBLFdBQ0FFLEdBQUFyYyxFQUFBaWdCLEdBQ0ExRCxH
QUFBdmMsRUFBQStmLEdBQ0FyRCxFQUFBK0IsV0FBQStCLElBQ0FLLEdBQUFQLEdBQ0F6aUIsV0FB
QTZlLEVBQUE0RCxHQUVBOUQsR0FBQXhjLEVBQUE1SixFQUFBc21CLE9BTUExakIsRUFBQUcsS0FB
QXVuQixPQUNBbkMsT0FDQTRCLEtBQUFuZ0IsRUFBQTBjLElBR0E2RCxHQUFBQyxHQUNBOUQsTUFJ
QSxRQUFBb0UsSUFBQTluQixFQUFBK25CLEdBc0VBLFFBQUFDLEtBRUF0RSxFQUFBK0IsWUFJQXps
QixFQUFBRyxLQUFBdW5CLFFBQ0ExZ0IsRUFBQXVPLFdBQUFxUyxXQUFBNWdCLEVBQUF1TyxXQUFB
cVMsY0FBNkQ1bkIsRUFBQSxLQUFBQSxHQUU3RGlvQixLQUFBamhCLEdBQ0F1Z0IsSUFDQWxFLEdB
QUFyYyxFQUFBa2hCLEdBQ0E3RSxHQUFBcmMsRUFBQW1oQixHQUNBaEYsR0FBQSxXQUNBRSxHQUFB
cmMsRUFBQW9oQixHQUNBN0UsR0FBQXZjLEVBQUFraEIsR0FDQXhFLEVBQUErQixXQUFBK0IsSUFD
QUssR0FBQVEsR0FDQXhqQixXQUFBNmUsRUFBQTJFLEdBRUE3RSxHQUFBeGMsRUFBQTVKLEVBQUFz
bUIsT0FLQW9FLEtBQUE5Z0IsRUFBQTBjLEdBQ0E2RCxHQUFBQyxHQUNBOUQsS0FoR0EsR0FBQTFj
LEdBQUFoSCxFQUFBTSxHQUdBak4sR0FBQTJULEVBQUEyZSxZQUNBM2UsRUFBQTJlLFNBQUFGLFdB
QUEsRUFDQXplLEVBQUEyZSxXQUdBLElBQUF4bEIsR0FBQTRpQixHQUFBL2lCLEVBQUFHLEtBQUF1
bEIsV0FDQSxJQUFBeHlCLEVBQUFpTixHQUNBLE1BQUE0bkIsSUFJQSxLQUFBMTBCLEVBQUEyVCxF
QUFBd2UsV0FBQSxJQUFBeGUsRUFBQTRlLFNBQUEsQ0FJQSxHQUFBM0MsR0FBQTlpQixFQUFBOGlC
LElBQ0E3bEIsRUFBQStDLEVBQUEvQyxLQUNBOHFCLEVBQUEvbkIsRUFBQStuQixXQUNBRSxFQUFB
am9CLEVBQUFpb0IsYUFDQUQsRUFBQWhvQixFQUFBZ29CLGlCQUNBRixFQUFBOW5CLEVBQUE4bkIs
WUFDQUgsRUFBQTNuQixFQUFBMm5CLE1BQ0FRLEVBQUFub0IsRUFBQW1vQixXQUNBQyxFQUFBcG9C
LEVBQUFvb0IsZUFDQUMsRUFBQXJvQixFQUFBcW9CLFdBQ0E5QixFQUFBdm1CLEVBQUF1bUIsU0FF
QWEsR0FBQSxJQUFBdEUsSUFBQS9JLEdBQ0FzTixFQUFBQyxHQUFBSyxHQUVBTyxFQUFBM3pCLEVB
Q0FqQixFQUFBaXpCLEdBQ0FBLEVBQUFvQixNQUNBcEIsR0FPQWhELEVBQUExYyxFQUFBd2UsU0FB
QXR0QixFQUFBLFdBQ0E4TyxFQUFBdU8sWUFBQXZPLEVBQUF1TyxXQUFBcVMsV0FDQTVnQixFQUFB
dU8sV0FBQXFTLFNBQUE1bkIsRUFBQW5LLEtBQUEsTUFFQTB4QixJQUNBaEUsR0FBQXZjLEVBQUFv
aEIsR0FDQTdFLEdBQUF2YyxFQUFBbWhCLElBRUF6RSxFQUFBK0IsV0FDQThCLEdBQ0FoRSxHQUFB
dmMsRUFBQWtoQixHQUVBSyxLQUFBdmhCLEtBRUErZ0IsSUFDQU8sS0FBQXRoQixJQUVBQSxFQUFB
d2UsU0FBQSxNQUdBZ0QsR0FDQUEsRUFBQVIsR0FFQUEsS0FvREEsUUFBQUgsSUFBQTd6QixHQUNB
LHNCQUFBQSxLQUFBVyxNQUFBWCxHQVNBLFFBQUF5ekIsSUFBQXp4QixHQUNBLEdBQUE5QyxFQUFB
OEMsR0FDQSxRQUVBLElBQUF5eUIsR0FBQXp5QixFQUFBaUwsR0FDQSxPQUFBNU4sR0FBQW8xQixH
QUVBaEIsR0FDQTV3QixNQUFBYSxRQUFBK3dCLEdBQ0FBLEVBQUEsR0FDQUEsSUFHQXp5QixFQUFB
UyxTQUFBVCxFQUFBWixRQUFBLEVBSUEsUUFBQXN6QixJQUFBaE0sRUFBQTFjLElBQ0EsSUFBQUEs
RUFBQUcsS0FBQXVuQixNQUNBcEMsR0FBQXRsQixHQW1HQSxRQUFBMm9CLElBQUEzaEIsRUFBQTRo
QixFQUFBMXZCLEdBQ0EsR0FBQWxHLEdBQUE0MUIsRUFBQTUxQixNQUNBNjFCLEVBQUE3aEIsRUFB
QThQLFFBQ0EsS0FBQStSLEdBQUFoeUIsTUFBQWEsUUFBQTFFLEdBQUEsQ0FTQSxPQURBMGpCLEdB
QUFvUyxFQUNBM3pCLEVBQUEsRUFBQW1CLEVBQUEwUSxFQUFBaEssUUFBQTVILE9BQXdDRCxFQUFB
bUIsRUFBT25CLElBRS9DLEdBREEyekIsRUFBQTloQixFQUFBaEssUUFBQTdILEdBQ0EwekIsRUFD
QW5TLEVBQUF6ZSxFQUFBakYsRUFBQSsxQixHQUFBRCxLQUFBLEVBQ0FBLEVBQUFwUyxlQUNBb1Ms
RUFBQXBTLGdCQUdBLElBQUFwZixFQUFBeXhCLEdBQUFELEdBQUE5MUIsR0FJQSxZQUhBZ1UsRUFB
QWdpQixnQkFBQTd6QixJQUNBNlIsRUFBQWdpQixjQUFBN3pCLEdBTUEwekIsS0FDQTdoQixFQUFB
Z2lCLGVBQUEsSUFJQSxRQUFBRCxJQUFBRCxHQUNBLGdCQUFBQSxHQUNBQSxFQUFBL0gsT0FDQStI
LEVBQUE5MUIsTUFHQSxRQUFBaTJCLElBQUFweEIsR0FDQUEsRUFBQWlDLE9BQUFxbkIsV0FBQSxF
QUdBLFFBQUErSCxJQUFBcnhCLEdBRUFBLEVBQUFpQyxPQUFBcW5CLFlBQ0F0cEIsRUFBQWlDLE9B
QUFxbkIsV0FBQSxFQUNBZ0ksR0FBQXR4QixFQUFBaUMsT0FBQSxVQUdBLFFBQUFxdkIsSUFBQW5p
QixFQUFBNUosR0FDQSxHQUFBdkYsR0FBQXdlLFNBQUErUyxZQUFBLGFBQ0F2eEIsR0FBQXd4QixV
QUFBanNCLEdBQUEsTUFDQTRKLEVBQUFzaUIsY0FBQXp4QixHQU1BLFFBQUEweEIsSUFBQXZwQixH
QUNBLE9BQUFBLEVBQUFvVixtQkFBQXBWLEVBQUFHLE1BQUFILEVBQUFHLEtBQUF1bEIsV0FFQTFs
QixFQURBdXBCLEdBQUF2cEIsRUFBQW9WLGtCQUFBak4sUUF5RkEsUUFBQXFoQixJQUFBeHBCLEdB
Q0EsR0FBQXlwQixHQUFBenBCLEtBQUFRLGdCQUNBLE9BQUFpcEIsTUFBQS92QixLQUFBc0QsUUFB
QW9KLFNBQ0FvakIsR0FBQXprQixHQUFBMGtCLEVBQUFycEIsV0FFQUosRUFJQSxRQUFBMHBCLElB
QUFwbUIsR0FDQSxHQUFBbkQsTUFDQW5ELEVBQUFzRyxFQUFBOUQsUUFFQSxRQUFBM0osS0FBQW1I
LEdBQUErQixVQUNBb0IsRUFBQXRLLEdBQUF5TixFQUFBek4sRUFJQSxJQUFBc1AsR0FBQW5JLEVB
QUFvSSxnQkFDQSxRQUFBdWtCLEtBQUF4a0IsR0FDQWhGLEVBQUFoRCxHQUFBd3NCLElBQUF4a0Is
RUFBQXdrQixFQUVBLE9BQUF4cEIsR0FHQSxRQUFBeXBCLElBQUFwYyxFQUFBcWMsR0FDQSxvQkFB
QS93QixLQUFBK3dCLEVBQUEzcEIsS0FDQSxNQUFBc04sR0FBQSxjQUNBdlEsTUFBQTRzQixFQUFB
cnBCLGlCQUFBekIsWUFLQSxRQUFBK3FCLElBQUE5cEIsR0FDQSxLQUFBQSxJQUFBbkMsUUFDQSxH
QUFBbUMsRUFBQUcsS0FBQXVsQixXQUNBLFNBS0EsUUFBQXFFLElBQUFqc0IsRUFBQWtzQixHQUNB
LE1BQUFBLEdBQUFuMEIsTUFBQWlJLEVBQUFqSSxLQUFBbTBCLEVBQUE5cEIsTUFBQXBDLEVBQUFv
QyxJQUdBLFFBQUFrWSxJQUFBblYsR0FDQSxNQUFBQSxHQUFBckMsV0FBQXFDLEVBQUF4QyxhQW9R
QSxRQUFBd3BCLElBQUE1eUIsR0FFQUEsRUFBQWlKLElBQUE0cEIsU0FDQTd5QixFQUFBaUosSUFB
QTRwQixVQUdBN3lCLEVBQUFpSixJQUFBcWxCLFVBQ0F0dUIsRUFBQWlKLElBQUFxbEIsV0FJQSxR
QUFBd0UsSUFBQTl5QixHQUNBQSxFQUFBOEksS0FBQWlxQixPQUFBL3lCLEVBQUFpSixJQUFBK3BC
LHdCQUdBLFFBQUFDLElBQUFqekIsR0FDQSxHQUFBa3pCLEdBQUFsekIsRUFBQThJLEtBQUFxcUIs
SUFDQUosRUFBQS95QixFQUFBOEksS0FBQWlxQixPQUNBSyxFQUFBRixFQUFBRyxLQUFBTixFQUFB
TSxLQUNBQyxFQUFBSixFQUFBSyxJQUFBUixFQUFBUSxHQUNBLElBQUFILEdBQUFFLEVBQUEsQ0FD
QXR6QixFQUFBOEksS0FBQTBxQixPQUFBLENBQ0EsSUFBQXpGLEdBQUEvdEIsRUFBQWlKLElBQUFv
aEIsS0FDQTBELEdBQUEwRixVQUFBMUYsRUFBQTJGLGdCQUFBLGFBQUFOLEVBQUEsTUFBQUUsRUFB
QSxNQUNBdkYsRUFBQTRGLG1CQUFBLE1BbUZBLFFBQUFDLElBQ0E1cUIsRUFDQTZxQixHQUVBLEdB
QUFDLEdBQUFELEVBQUFFLEdBQUFGLEdBQUFHLEVBQ0EsSUFBQUYsRUFBQXJ5QixLQUFBdUgsR0FB
QSxDQU1BLElBSEEsR0FFQVYsR0FBQWxLLEVBRkE2MUIsS0FDQUMsRUFBQUosRUFBQUksVUFBQSxF
QUVBNXJCLEVBQUF3ckIsRUFBQUssS0FBQW5yQixJQUFBLENBQ0E1SyxFQUFBa0ssRUFBQWxLLE1B
RUFBLEVBQUE4MUIsR0FDQUQsRUFBQXR4QixLQUFBekYsS0FBQUMsVUFBQTZMLEVBQUFlLE1BQUFt
cUIsRUFBQTkxQixJQUdBLElBQUEwbEIsR0FBQUQsR0FBQXZiLEVBQUEsR0FBQTRiLE9BQ0ErUCxH
QUFBdHhCLEtBQUEsTUFBQW1oQixFQUFBLEtBQ0FvUSxFQUFBOTFCLEVBQUFrSyxFQUFBLEdBQUF2
SyxPQUtBLE1BSEFtMkIsR0FBQWxyQixFQUFBakwsUUFDQWsyQixFQUFBdHhCLEtBQUF6RixLQUFB
QyxVQUFBNkwsRUFBQWUsTUFBQW1xQixLQUVBRCxFQUFBelIsS0FBQSxNQUtBLFFBQUE0UixJQUFB
emtCLEVBQUFoSyxHQUNBLEdBQ0EyWSxJQURBM1ksRUFBQWlnQixLQUNBUSxHQUFBelcsRUFBQSxT
QVlBMk8sS0FDQTNPLEVBQUEyTyxZQUFBcGhCLEtBQUFDLFVBQUFtaEIsR0FFQSxJQUFBK1YsR0FB
QXBPLEdBQUF0VyxFQUFBLFdBQ0Ewa0IsS0FDQTFrQixFQUFBMGtCLGdCQUlBLFFBQUFDLElBQUEz
a0IsR0FDQSxHQUFBN0csR0FBQSxFQU9BLE9BTkE2RyxHQUFBMk8sY0FDQXhWLEdBQUEsZUFBQTZH
LEVBQUEsaUJBRUFBLEVBQUEwa0IsZUFDQXZyQixHQUFBLFNBQUE2RyxFQUFBLGtCQUVBN0csRUFX
QSxRQUFBeXJCLElBQUE1a0IsRUFBQWhLLEdBQ0EsR0FDQTRrQixJQURBNWtCLEVBQUFpZ0IsS0FD
QVEsR0FBQXpXLEVBQUEsU0FDQSxJQUFBNGEsRUFBQSxDQWFBNWEsRUFBQTRhLFlBQUFydEIsS0FB
QUMsVUFBQXN0QixHQUFBRixJQUdBLEdBQUFpSyxHQUFBdk8sR0FBQXRXLEVBQUEsV0FDQTZrQixL
QUNBN2tCLEVBQUE2a0IsZ0JBSUEsUUFBQUMsSUFBQTlrQixHQUNBLEdBQUE3RyxHQUFBLEVBT0Es
T0FOQTZHLEdBQUE0YSxjQUNBemhCLEdBQUEsZUFBQTZHLEVBQUEsaUJBRUFBLEVBQUE2a0IsZUFD
QTFyQixHQUFBLFVBQUE2RyxFQUFBLG1CQUVBN0csRUFnQkEsUUFBQUUsSUFBQTJHLEVBQUEyUixH
QUNBQSxFQUFBM2xCLE9BQ0EycEIsR0FBQTNWLEVBQUEsb0JBQUEyUixFQUFBLFdBTUEsUUFBQW9U
LElBQUEva0IsRUFBQTJSLEdBQ0FBLEVBQUEzbEIsT0FDQTJwQixHQUFBM1YsRUFBQSxrQkFBQTJS
LEVBQUEsV0EwSEEsUUFBQXFULElBQUFoNUIsRUFBQWk1QixHQUNBLEdBQUFDLEdBQUFELEVBQUFF
LEdBQUFDLEVBQ0EsT0FBQXA1QixHQUFBOHZCLFFBQUFvSixFQUFBLFNBQUF2c0IsR0FBNkMsTUFB
QTBzQixJQUFBMXNCLEtBRzdDLFFBQUEyc0IsSUFBQVAsRUFBQS91QixHQThIQSxRQUFBdXZCLEdB
QUF0NEIsR0FDQXdCLEdBQUF4QixFQUNBODNCLElBQUFoTixVQUFBOXFCLEdBdUVBLFFBQUF1NEIs
R0FBQTNWLEVBQUFsZ0IsRUFBQXN0QixHQUNBLEdBQUF1RyxHQUFBaUMsQ0FTQSxJQVJBLE1BQUE5
MUIsSUFBd0JBLEVBQUFsQixHQUN4QixNQUFBd3VCLElBQXNCQSxFQUFBeHVCLEdBRXRCb2hCLElB
Q0E0VixFQUFBNVYsRUFBQXhoQixlQUlBd2hCLEVBQ0EsSUFBQTJULEVBQUFrQyxFQUFBdDNCLE9B
QUEsRUFBa0NvMUIsR0FBQSxHQUNsQ2tDLEVBQUFsQyxHQUFBbUMsZ0JBQUFGLEVBRDRDakMsU0FP
NUNBLEdBQUEsQ0FHQSxJQUFBQSxHQUFBLEdBRUEsT0FBQXIxQixHQUFBdTNCLEVBQUF0M0IsT0FB
QSxFQUFvQ0QsR0FBQXExQixFQUFVcjFCLElBUzlDNkgsRUFBQWluQixLQUNBam5CLEVBQUFpbkIs
SUFBQXlJLEVBQUF2M0IsR0FBQStLLElBQUF2SixFQUFBc3RCLEVBS0F5SSxHQUFBdDNCLE9BQUFv
MUIsRUFDQW9DLEVBQUFwQyxHQUFBa0MsRUFBQWxDLEVBQUEsR0FBQXRxQixRQUNLLE9BQUF1c0Is
RUFDTHp2QixFQUFBckcsT0FDQXFHLEVBQUFyRyxNQUFBa2dCLE1BQUEsRUFBQWxnQixFQUFBc3RC
LEdBRUssTUFBQXdJLElBQ0x6dkIsRUFBQXJHLE9BQ0FxRyxFQUFBckcsTUFBQWtnQixNQUFBLEVB
QUFsZ0IsRUFBQXN0QixHQUVBam5CLEVBQUFpbkIsS0FDQWpuQixFQUFBaW5CLElBQUFwTixFQUFB
bGdCLEVBQUFzdEIsSUFqUEEsSUFOQSxHQUtBOWdCLEdBQUF5cEIsRUFMQUYsS0FDQUcsRUFBQTd2
QixFQUFBNnZCLFdBQ0FDLEVBQUE5dkIsRUFBQSt2QixZQUFBQyxHQUNBQyxFQUFBandCLEVBQUFr
d0Isa0JBQUFGLEdBQ0F2M0IsRUFBQSxFQUVBczJCLEdBQUEsQ0FHQSxHQUZBNW9CLEVBQUE0b0Is
RUFFQWEsR0FBQU8sR0FBQVAsR0FnRkssQ0FDTCxHQUFBUSxHQUFBLEVBQ0FDLEVBQUFULEVBQUF2
M0IsY0FDQWk0QixFQUFBQyxHQUFBRixLQUFBRSxHQUFBRixHQUFBLEdBQUFHLFFBQUEsa0JBQUFI
LEVBQUEsZ0JBQ0FJLEVBQUExQixFQUFBakosUUFBQXdLLEVBQUEsU0FBQUksRUFBQXJ0QixFQUFB
c3RCLEdBYUEsTUFaQVAsR0FBQU8sRUFBQXY0QixPQUNBKzNCLEdBQUFFLElBQUEsYUFBQUEsSUFD
QWh0QixJQUNBeWlCLFFBQUEsMkJBQ0FBLFFBQUEsbUNBRUE4SyxHQUFBUCxFQUFBaHRCLEtBQ0FB
LElBQUFlLE1BQUEsSUFFQXBFLEVBQUE2d0IsT0FDQTd3QixFQUFBNndCLE1BQUF4dEIsR0FFQSxJ
QUVBNUssSUFBQXMyQixFQUFBMzJCLE9BQUFxNEIsRUFBQXI0QixPQUNBMjJCLEVBQUEwQixFQUNB
akIsRUFBQWEsRUFBQTUzQixFQUFBMjNCLEVBQUEzM0IsT0FyR0EsQ0FDQSxHQUFBcTRCLEdBQUEv
QixFQUFBcjJCLFFBQUEsSUFDQSxRQUFBbzRCLEVBQUEsQ0FFQSxHQUFBQyxHQUFBajFCLEtBQUFp
ekIsR0FBQSxDQUNBLEdBQUFpQyxHQUFBakMsRUFBQXIyQixRQUFBLFNBRUEsSUFBQXM0QixHQUFB
LEdBQ0FoeEIsRUFBQWl4QixtQkFDQWp4QixFQUFBK3dCLFFBQUFoQyxFQUFBaE4sVUFBQSxFQUFB
aVAsSUFFQXpCLEVBQUF5QixFQUFBLEVBQ0EsV0FLQSxHQUFBRSxHQUFBcDFCLEtBQUFpekIsR0FB
QSxDQUNBLEdBQUFvQyxHQUFBcEMsRUFBQXIyQixRQUFBLEtBRUEsSUFBQXk0QixHQUFBLEdBQ0E1
QixFQUFBNEIsRUFBQSxFQUNBLFdBS0EsR0FBQUMsR0FBQXJDLEVBQUFwc0IsTUFBQTB1QixHQUNB
LElBQUFELEVBQUEsQ0FDQTdCLEVBQUE2QixFQUFBLEdBQUFoNUIsT0FDQSxVQUlBLEdBQUFrNUIs
R0FBQXZDLEVBQUFwc0IsTUFBQWd1QixHQUNBLElBQUFXLEVBQUEsQ0FDQSxHQUFBQyxHQUFBOTRC
LENBQ0E4MkIsR0FBQStCLEVBQUEsR0FBQWw1QixRQUNBbzNCLEVBQUE4QixFQUFBLEdBQUFDLEVB
QUE5NEIsRUFDQSxVQUlBLEdBQUErNEIsR0E4RUEsV0FDQSxHQUFBNzNCLEdBQUFvMUIsRUFBQXBz
QixNQUFBOHVCLEdBQ0EsSUFBQTkzQixFQUFBLENBQ0EsR0FBQWdKLElBQ0FrWCxRQUFBbGdCLEVB
QUEsR0FDQTRMLFNBQ0E1TCxNQUFBbEIsRUFFQTgyQixHQUFBNTFCLEVBQUEsR0FBQXZCLE9BRUEs
S0FEQSxHQUFBNnVCLEdBQUF5SyxJQUNBekssRUFBQThILEVBQUFwc0IsTUFBQWd2QixPQUFBRCxF
QUFBM0MsRUFBQXBzQixNQUFBaXZCLE1BQ0FyQyxFQUFBbUMsRUFBQSxHQUFBdDVCLFFBQ0F1SyxF
QUFBNEMsTUFBQXZJLEtBQUEwMEIsRUFFQSxJQUFBekssRUFJQSxNQUhBdGtCLEdBQUFrdkIsV0FB
QTVLLEVBQUEsR0FDQXNJLEVBQUF0SSxFQUFBLEdBQUE3dUIsUUFDQXVLLEVBQUFza0IsSUFBQXh1
QixFQUNBa0ssS0EvRkEsSUFBQTZ1QixFQUFBLEVBb0dBLFNBQUE3dUIsR0FDQSxHQUFBa1gsR0FB
QWxYLEVBQUFrWCxRQUNBZ1ksRUFBQWx2QixFQUFBa3ZCLFVBRUFoQyxLQUNBLE1BQUFELEdBQUFr
QyxHQUFBalksSUFDQTJWLEVBQUFJLEdBRUFLLEVBQUFwVyxJQUFBK1YsSUFBQS9WLEdBQ0EyVixF
QUFBM1YsR0FRQSxRQUpBa1ksR0FBQWpDLEVBQUFqVyxNQUFBZ1ksRUFFQXY0QixFQUFBcUosRUFB
QTRDLE1BQUFuTixPQUNBbU4sRUFBQSxHQUFBMUwsT0FBQVAsR0FDQW5CLEVBQUEsRUFBbUJBLEVB
QUFtQixFQUFPbkIsSUFBQSxDQUMxQixHQUFBd2UsR0FBQWhVLEVBQUE0QyxNQUFBcE4sRUFFQTY1
QixNQUFBLElBQUFyYixFQUFBLEdBQUFqZSxRQUFBLFFBQ0EsS0FBQWllLEVBQUEsVUFBNkJBLEdB
QUEsR0FDN0IsS0FBQUEsRUFBQSxVQUE2QkEsR0FBQSxHQUM3QixLQUFBQSxFQUFBLFVBQTZCQSxH
QUFBLEdBRTdCLElBQUEzZ0IsR0FBQTJnQixFQUFBLElBQUFBLEVBQUEsSUFBQUEsRUFBQSxNQUNB
cFIsR0FBQXBOLElBQ0ErSCxLQUFBeVcsRUFBQSxHQUNBM2dCLE1BQUFnNUIsR0FDQWg1QixFQUNB
Z0ssRUFBQWl2Qix1QkFLQThDLElBQ0FyQyxFQUFBMXlCLE1BQWtCa0csSUFBQTJXLEVBQUE4Vixj
QUFBOVYsRUFBQXhoQixjQUFBa04sVUFDbEJxcUIsRUFBQS9WLEdBR0E3WixFQUFBckcsT0FDQXFH
LEVBQUFyRyxNQUFBa2dCLEVBQUF0VSxFQUFBd3NCLEVBQUFwdkIsRUFBQWhKLE1BQUFnSixFQUFB
c2tCLE1BNUlBdUssR0FDQVosR0FBQWhCLEVBQUFiLElBQ0FRLEVBQUEsRUFFQSxXQUlBLEdBQUFs
c0IsT0FBQSxHQUFBNHVCLE1BQUEsR0FBQXRRLE1BQUEsRUFDQSxJQUFBbVAsR0FBQSxHQUVBLElB
REFtQixFQUFBbEQsRUFBQTNxQixNQUFBMHNCLEtBRUFILEdBQUE3MEIsS0FBQW0yQixJQUNBUixH
QUFBMzFCLEtBQUFtMkIsSUFDQWxCLEdBQUFqMUIsS0FBQW0yQixJQUNBZixHQUFBcDFCLEtBQUFt
MkIsS0FHQXRRLEVBQUFzUSxFQUFBdjVCLFFBQUEsUUFDQSxJQUNBbzRCLEdBQUFuUCxFQUNBc1Es
RUFBQWxELEVBQUEzcUIsTUFBQTBzQixFQUVBenRCLEdBQUEwckIsRUFBQWhOLFVBQUEsRUFBQStP
LEdBQ0F2QixFQUFBdUIsR0FHQUEsRUFBQSxJQUNBenRCLEVBQUEwckIsRUFDQUEsRUFBQSxJQUdB
L3VCLEVBQUE2d0IsT0FBQXh0QixHQUNBckQsRUFBQTZ3QixNQUFBeHRCLEdBMEJBLEdBQUEwckIs
SUFBQTVvQixFQUFBLENBQ0FuRyxFQUFBNndCLE9BQUE3d0IsRUFBQTZ3QixNQUFBOUIsRUFJQSxR
QUtBUyxJQTRKQSxRQUFBMEMsSUFDQUMsRUFDQW55QixHQTZCQSxRQUFBb3lCLEdBQUFDLEdBRUFB
LEVBQUFDLE1BQ0FDLEdBQUEsR0FFQUMsR0FBQUgsRUFBQW52QixPQUNBdXZCLEdBQUEsR0FqQ0FD
LEdBQUExeUIsRUFBQWlnQixNQUFBWixHQUVBbVQsR0FBQXh5QixFQUFBMnlCLFVBQUEzQyxHQUNB
NEMsR0FBQTV5QixFQUFBa1UsYUFBQThiLEdBQ0E2QyxHQUFBN3lCLEVBQUE4UyxpQkFBQWtkLEdB
RUE4QyxHQUFBdlQsR0FBQXZmLEVBQUF3ZixRQUFBLGlCQUNBdVQsR0FBQXhULEdBQUF2ZixFQUFB
d2YsUUFBQSxvQkFDQXdULEdBQUF6VCxHQUFBdmYsRUFBQXdmLFFBQUEscUJBRUEwTyxHQUFBbHVC
LEVBQUFrdUIsVUFFQSxJQUVBK0UsR0FDQUMsRUFIQXhELEtBQ0F5RCxHQUFBLElBQUFuekIsRUFB
QW16QixtQkFHQVosR0FBQSxFQUNBRSxHQUFBLENBMk5BLE9Bdk1BbkQsSUFBQTZDLEdBQ0FsUyxL
QUFBeVMsR0FDQTdDLFdBQUE3dkIsRUFBQTZ2QixXQUNBRSxXQUFBL3ZCLEVBQUErdkIsV0FDQUcs
aUJBQUFsd0IsRUFBQWt3QixpQkFDQWpCLHFCQUFBanZCLEVBQUFpdkIscUJBQ0FnQyxrQkFBQWp4
QixFQUFBb3pCLFNBQ0F6NUIsTUFBQSxTQUFBdUosRUFBQXFDLEVBQUF3c0IsR0FHQSxHQUFBcnVC
LEdBQUF3dkIsS0FBQXh2QixJQUFBbXZCLEdBQUEzdkIsRUFJQWdnQixLQUFBLFFBQUF4ZixJQUNB
NkIsRUFBQTh0QixHQUFBOXRCLEdBR0EsSUFBQThzQixJQUNBanlCLEtBQUEsRUFDQThDLE1BQ0Ew
ZCxVQUFBcmIsRUFDQW9iLFNBQUEyUyxHQUFBL3RCLEdBQ0ExRSxPQUFBcXlCLEVBQ0E5dkIsWUFF
QU0sS0FDQTJ1QixFQUFBM3VCLE1BR0E2dkIsR0FBQWxCLEtBQUF2MEIsT0FDQXUwQixFQUFBbUIs
V0FBQSxFQVNBLFFBQUFyN0IsR0FBQSxFQUFxQkEsRUFBQTQ2QixHQUFBMzZCLE9BQTBCRCxJQUMv
QzQ2QixHQUFBNTZCLEdBQUFrNkIsRUFBQXJ5QixFQVlBLElBVEF1eUIsSUFDQWtCLEdBQUFwQixH
QUNBQSxFQUFBQyxNQUNBQyxHQUFBLElBR0FDLEdBQUFILEVBQUFudkIsT0FDQXV2QixHQUFBLEdB
RUFGLEVBQ0FtQixHQUFBckIsT0FDTyxDQUNQc0IsR0FBQXRCLEdBQ0F1QixHQUFBdkIsR0FDQXdC
LEdBQUF4QixHQUNBeUIsR0FBQXpCLEdBSUFBLEVBQUEwQixPQUFBMUIsRUFBQXg1QixNQUFBME0s
RUFBQW5OLE9BRUE0N0IsR0FBQTNCLEdBQ0E0QixHQUFBNUIsR0FDQTZCLEdBQUE3QixFQUNBLFFB
QUE4QixHQUFBLEVBQXlCQSxFQUFBckIsR0FBQTE2QixPQUF5Qis3QixJQUNsRHJCLEdBQUFxQixH
QUFBOUIsRUFBQXJ5QixFQUVBbzBCLElBQUEvQixHQXdDQSxHQW5CQVksRUFHT3ZELEVBQUF0M0Is
UUFFUDY2QixFQUFBb0IsS0FBQWhDLEVBQUFpQyxRQUFBakMsRUFBQWtDLE9BRUFDLEdBQUF2QixH
QUNBOVUsSUFBQWtVLEVBQUFpQyxPQUNBRyxNQUFBcEMsSUFSQVksRUFBQVosRUFrQkFhLElBQUFi
LEVBQUFtQixVQUNBLEdBQUFuQixFQUFBaUMsUUFBQWpDLEVBQUFrQyxLQUNBRyxHQUFBckMsRUFB
QWEsT0FDUyxJQUFBYixFQUFBc0MsVUFBQSxDQUNUekIsRUFBQWEsT0FBQSxDQUNBLElBQUE3ekIs
R0FBQW15QixFQUFBdUMsWUFBQSxhQUF1RDFCLEVBQUFub0IsY0FBQW1vQixFQUFBbm9CLGlCQUE2
RDdLLEdBQUFteUIsTUFFcEhhLEdBQUE5dkIsU0FBQXBHLEtBQUFxMUIsR0FDQUEsRUFBQXh4QixP
QUFBcXlCLENBR0FuQixHQUlBSyxFQUFBQyxJQUhBYSxFQUFBYixFQUNBM0MsRUFBQTF5QixLQUFB
cTFCLEdBS0EsUUFBQXdDLEdBQUEsRUFBdUJBLEVBQUE3QixHQUFBNTZCLE9BQTZCeThCLElBQ3BE
N0IsR0FBQTZCLEdBQUF4QyxFQUFBcnlCLElBSUFpbkIsSUFBQSxXQUVBLEdBQUFvTCxHQUFBM0Ms
SUFBQXQzQixPQUFBLEdBQ0EwOEIsRUFBQXpDLEVBQUFqdkIsU0FBQWl2QixFQUFBanZCLFNBQUFo
TCxPQUFBLEVBQ0EwOEIsSUFBQSxJQUFBQSxFQUFBMTBCLE1BQUEsTUFBQTAwQixFQUFBenhCLE9B
QUFvdkIsR0FDQUosRUFBQWp2QixTQUFBbEcsTUFHQXd5QixFQUFBdDNCLFFBQUEsRUFDQTg2QixF
QUFBeEQsSUFBQXQzQixPQUFBLEdBQ0FnNkIsRUFBQUMsSUFHQXhCLE1BQUEsU0FBQXh0QixHQUNB
LEdBQUE2dkIsS0FnQkFoUSxJQUNBLGFBQUFnUSxFQUFBaHdCLEtBQ0Fnd0IsRUFBQXZTLFNBQUFp
TSxjQUFBdnBCLEdBRkEsQ0FNQSxHQUFBRCxHQUFBOHZCLEVBQUE5dkIsUUFLQSxJQUpBQyxFQUFB
b3ZCLEdBQUFwdkIsRUFBQWtiLE9BQ0F3VyxHQUFBN0IsR0FBQTd2QixFQUFBMnhCLEdBQUEzeEIs
R0FFQTh2QixHQUFBL3ZCLEVBQUFoTCxPQUFBLE9BQ0EsQ0FDQSxHQUFBcW1CLElBQ0E4VCxHQUFB
LE1BQUFsdkIsSUFBQW9iLEVBQUF3UCxHQUFBNXFCLEVBQUE2cUIsS0FDQTlxQixFQUFBcEcsTUFD
QW9ELEtBQUEsRUFDQXFlLGFBQ0FwYixTQUVTLE1BQUFBLEdBQUFELEVBQUFoTCxRQUFBLE1BQUFn
TCxJQUFBaEwsT0FBQSxHQUFBaUwsTUFDVEQsRUFBQXBHLE1BQ0FvRCxLQUFBLEVBQ0FpRCxZQUtB
MHRCLFFBQUEsU0FBQTF0QixHQUNBNnZCLEVBQUE5dkIsU0FBQXBHLE1BQ0FvRCxLQUFBLEVBQ0Fp
RCxPQUNBTyxXQUFBLE9BSUFxdkIsRUFHQSxRQUFBUSxJQUFBenBCLEdBQ0EsTUFBQXlXLEdBQUF6
VyxFQUFBLFdBQ0FBLEVBQUFzb0IsS0FBQSxHQUlBLFFBQUFvQixJQUFBMXBCLEdBQ0EsR0FBQTFR
LEdBQUEwUSxFQUFBNFcsVUFBQXhvQixNQUNBLElBQUFrQixFQUVBLE9BREFpTSxHQUFBeUUsRUFB
QXpFLE1BQUEsR0FBQTFMLE9BQUFQLEdBQ0FuQixFQUFBLEVBQW1CQSxFQUFBbUIsRUFBT25CLElB
QzFCb04sRUFBQXBOLElBQ0ErSCxLQUFBOEosRUFBQTRXLFVBQUF6b0IsR0FBQStILEtBQ0FsSyxN
QUFBdUIsS0FBQUMsVUFBQXdTLEVBQUE0VyxVQUFBem9CLEdBQUFuQyxZQUdHZ1UsR0FBQXNvQixN
QUVIdG9CLEVBQUErcEIsT0FBQSxHQUlBLFFBQUFELElBQUE5cEIsR0FDQSxHQUFBbVUsR0FBQW1D
LEdBQUF0VyxFQUFBLE1BQ0FtVSxLQUlBblUsRUFBQW5SLElBQUFzbEIsR0FJQSxRQUFBNlYsSUFB
QWhxQixHQUNBLEdBQUErUSxHQUFBdUYsR0FBQXRXLEVBQUEsTUFDQStRLEtBQ0EvUSxFQUFBK1Es
TUFDQS9RLEVBQUFpUixTQUFBZ2EsR0FBQWpyQixJQUlBLFFBQUEycEIsSUFBQTNwQixHQUNBLEdB
QUFtVSxFQUNBLElBQUFBLEVBQUFzQyxHQUFBelcsRUFBQSxVQUNBLEdBQUFrckIsR0FBQS9XLEVB
QUF4YixNQUFBd3lCLEdBQ0EsS0FBQUQsRUFJQSxNQUVBbHJCLEdBQUFvckIsSUFBQUYsRUFBQSxH
QUFBM1csTUFDQSxJQUFBOFcsR0FBQUgsRUFBQSxHQUFBM1csT0FDQStXLEVBQUFELEVBQUExeUIs
TUFBQTR5QixHQUNBRCxJQUNBdHJCLEVBQUFxckIsTUFBQUMsRUFBQSxHQUFBL1csT0FDQXZVLEVB
QUF3ckIsVUFBQUYsRUFBQSxHQUFBL1csT0FDQStXLEVBQUEsS0FDQXRyQixFQUFBeXJCLFVBQUFI
LEVBQUEsR0FBQS9XLFNBR0F2VSxFQUFBcXJCLFNBS0EsUUFBQXpCLElBQUE1cEIsR0FDQSxHQUFB
bVUsR0FBQXNDLEdBQUF6VyxFQUFBLE9BQ0EsSUFBQW1VLEVBQ0FuVSxFQUFBcXFCLEdBQUFsVyxF
QUNBcVcsR0FBQXhxQixHQUNBbVUsTUFDQXNXLE1BQUF6cUIsUUFFRyxDQUNILE1BQUF5VyxHQUFB
elcsRUFBQSxZQUNBQSxFQUFBdXFCLE1BQUEsRUFFQSxJQUFBRCxHQUFBN1QsR0FBQXpXLEVBQUEs
WUFDQXNxQixLQUNBdHFCLEVBQUFzcUIsV0FLQSxRQUFBSSxJQUFBMXFCLEVBQUFuSixHQUNBLEdB
QUEyZCxHQUFBa1gsR0FBQTcwQixFQUFBdUMsU0FDQW9iLE1BQUE2VixJQUNBRyxHQUFBaFcsR0FD
QUwsSUFBQW5VLEVBQUFzcUIsT0FDQUcsTUFBQXpxQixJQVVBLFFBQUEwckIsSUFBQXR5QixHQUVB
LElBREEsR0FBQWpMLEdBQUFpTCxFQUFBaEwsT0FDQUQsS0FBQSxDQUNBLE9BQUFpTCxFQUFBakws
R0FBQWlJLEtBQ0EsTUFBQWdELEdBQUFqTCxFQVFBaUwsR0FBQWxHLE9BS0EsUUFBQXMzQixJQUFB
eHFCLEVBQUEyckIsR0FDQTNyQixFQUFBNHJCLGVBQ0E1ckIsRUFBQTRyQixpQkFFQTVyQixFQUFB
NHJCLGFBQUE1NEIsS0FBQTI0QixHQUdBLFFBQUE5QixJQUFBN3BCLEdBRUEsTUFEQXlXLEdBQUF6
VyxFQUFBLFlBRUFBLEVBQUE5TyxNQUFBLEdBSUEsUUFBQSs0QixJQUFBanFCLEdBQ0EsWUFBQUEs
RUFBQTlHLElBQ0E4RyxFQUFBNnJCLFNBQUF2VixHQUFBdFcsRUFBQSxZQVFHLENBQ0gsR0FBQTRx
QixHQUFBdFUsR0FBQXRXLEVBQUEsT0FDQTRxQixLQUNBNXFCLEVBQUE0cUIsV0FBQSxPQUFBQSxF
QUFBLFlBQUFBLEdBRUEsYUFBQTVxQixFQUFBOUcsTUFDQThHLEVBQUEycUIsVUFBQWxVLEdBQUF6
VyxFQUFBLFdBS0EsUUFBQWtxQixJQUFBbHFCLEdBQ0EsR0FBQTRoQixJQUNBQSxFQUFBdEwsR0FB
QXRXLEVBQUEsU0FDQUEsRUFBQXJDLFVBQUFpa0IsR0FFQSxNQUFBbkwsR0FBQXpXLEVBQUEscUJB
Q0FBLEVBQUE4SCxnQkFBQSxHQUlBLFFBQUFzaUIsSUFBQXBxQixHQUNBLEdBQ0E3UixHQUFBbUIs
RUFBQTRHLEVBQUEwYyxFQUFBNW1CLEVBQUF5bUIsRUFBQXFaLEVBREE3OUIsRUFBQStSLEVBQUE0
VyxTQUVBLEtBQUF6b0IsRUFBQSxFQUFBbUIsRUFBQXJCLEVBQUFHLE9BQThCRCxFQUFBbUIsRUFB
T25CLElBR3JDLEdBRkErSCxFQUFBMGMsRUFBQTNrQixFQUFBRSxHQUFBK0gsS0FDQWxLLEVBQUFp
QyxFQUFBRSxHQUFBbkMsTUFDQSsvQixHQUFBajZCLEtBQUFvRSxHQVFBLEdBTkE4SixFQUFBZ3NC
LGFBQUEsRUFFQXZaLEVBQUF3WixHQUFBLzFCLEdBQ0F1YyxJQUNBdmMsSUFBQTRsQixRQUFBb1Es
R0FBQSxLQUVBQyxHQUFBcjZCLEtBQUFvRSxHQUNBQSxJQUFBNGxCLFFBQUFxUSxHQUFBLElBQ0Fu
Z0MsRUFBQWtvQixHQUFBbG9CLEdBQ0E4L0IsR0FBQSxFQUNBclosSUFDQUEsRUFBQXphLE9BQ0E4
ekIsR0FBQSxFQUVBLGVBREE1MUIsRUFBQUMsR0FBQUQsTUFDdUNBLEVBQUEsY0FFdkN1YyxFQUFB
MlosUUFDQWwyQixFQUFBQyxHQUFBRCxJQUVBdWMsRUFBQXJWLE1BQ0EyWSxHQUNBL1YsRUFDQSxV
QUFBN0osR0FBQUQsR0FDQStnQixHQUFBanJCLEVBQUEsWUFJQTgvQixJQUNBOXJCLEVBQUFyQyxX
QUFBaXJCLEdBQUE1b0IsRUFBQTlHLElBQUE4RyxFQUFBMlcsU0FBQXZnQixLQUFBRixHQUVBeWYs
R0FBQTNWLEVBQUE5SixFQUFBbEssR0FFQTRwQixHQUFBNVYsRUFBQTlKLEVBQUFsSyxPQUVPLElB
QUFxZ0MsR0FBQXY2QixLQUFBb0UsR0FDUEEsSUFBQTRsQixRQUFBdVEsR0FBQSxJQUNBdFcsR0FB
QS9WLEVBQUE5SixFQUFBbEssRUFBQXltQixHQUFBLEVBQUFpVyxRQUNPLENBQ1B4eUIsSUFBQTRs
QixRQUFBaVEsR0FBQSxHQUVBLElBQUFPLEdBQUFwMkIsRUFBQXlDLE1BQUE0ekIsSUFDQXpXLEVB
QUF3VyxLQUFBLEVBQ0F4VyxLQUNBNWYsSUFBQWtFLE1BQUEsSUFBQTBiLEVBQUExbkIsT0FBQSxL
QUVBeW5CLEdBQUE3VixFQUFBOUosRUFBQTBjLEVBQUE1bUIsRUFBQThwQixFQUFBckQsT0FLSyxD
QWFMbUQsR0FBQTVWLEVBQUE5SixFQUFBM0ksS0FBQUMsVUFBQXhCLEtBS0EsUUFBQWkvQixJQUFB
anJCLEdBRUEsSUFEQSxHQUFBbkosR0FBQW1KLEVBQ0FuSixHQUFBLENBQ0EsT0FBQXpLLEtBQUF5
SyxFQUFBdTBCLElBQ0EsUUFFQXYwQixZQUVBLFNBR0EsUUFBQW8xQixJQUFBLzFCLEdBQ0EsR0FB
QXlDLEdBQUF6QyxFQUFBeUMsTUFBQXV6QixHQUNBLElBQUF2ekIsRUFBQSxDQUNBLEdBQUEvSSxL
QUVBLE9BREErSSxHQUFBb04sUUFBQSxTQUFBMFAsR0FBZ0M3bEIsRUFBQTZsQixFQUFBcmIsTUFB
QSxTQUNoQ3hLLEdBSUEsUUFBQTA1QixJQUFBL3RCLEdBRUEsT0FEQXhOLE1BQ0FJLEVBQUEsRUFB
QW1CLEVBQUFpTSxFQUFBbk4sT0FBbUNELEVBQUFtQixFQUFPbkIsSUFPMUNKLEVBQUF3TixFQUFB
cE4sR0FBQStILE1BQUFxRixFQUFBcE4sR0FBQW5DLEtBRUEsT0FBQStCLEdBSUEsUUFBQWc5QixJ
QUFBL3FCLEdBQ0EsaUJBQUFBLEVBQUE5RyxLQUFBLFVBQUE4RyxFQUFBOUcsSUFHQSxRQUFBcXdC
LElBQUF2cEIsR0FDQSxNQUNBLFVBQUFBLEVBQUE5RyxLQUNBLFdBQUE4RyxFQUFBOUcsT0FDQThH
LEVBQUEyVyxTQUFBdmdCLE1BQ0Esb0JBQUE0SixFQUFBMlcsU0FBQXZnQixNQVNBLFFBQUFpekIs
SUFBQTl0QixHQUVBLE9BREFyTCxNQUNBL0IsRUFBQSxFQUFpQkEsRUFBQW9OLEVBQUFuTixPQUFr
QkQsSUFBQSxDQUNuQyxHQUFBdTVCLEdBQUFuc0IsRUFBQXBOLEVBQ0FxK0IsSUFBQTE2QixLQUFB
NDFCLEVBQUF4eEIsUUFDQXd4QixFQUFBeHhCLEtBQUF3eEIsRUFBQXh4QixLQUFBNGxCLFFBQUEy
USxHQUFBLElBQ0F2OEIsRUFBQThDLEtBQUEwMEIsSUFHQSxNQUFBeDNCLEdBcUNBLFFBQUF3OEIs
SUFBQXpELEVBQUFqekIsR0FDQWl6QixJQUNBMEQsR0FBQUMsR0FBQTUyQixFQUFBNjJCLFlBQUEs
SUFDQUMsR0FBQTkyQixFQUFBK1MsZUFBQWlkLEdBRUErRyxHQUFBOUQsR0FFQStELEdBQUEvRCxH
QUFBLElBR0EsUUFBQWdFLElBQUFsOEIsR0FDQSxNQUFBbkQsR0FDQSwyREFDQW1ELEVBQUEsSUFB
QUEsRUFBQSxLQUlBLFFBQUFnOEIsSUFBQTl3QixHQUVBLEdBREFBLEVBQUFpeEIsT0FBQXZ6QixH
QUFBc0MsR0FDQSxJQUFBQSxFQUFBN0YsS0FBQSxDQUlBLElBQ0EwMkIsR0FBQTd3QixFQUFBL0Ms
TUFDQSxTQUFBK0MsRUFBQS9DLEtBQ0EsTUFBQStDLEVBQUEwYSxTQUFBLG1CQUVBLE1BRUEsUUFB
QXhvQixHQUFBLEVBQUFtQixFQUFBMk0sRUFBQTdDLFNBQUFoTCxPQUE2Q0QsRUFBQW1CLEVBQU9u
QixJQUFBLENBQ3BELEdBQUEySSxHQUFBbUYsRUFBQTdDLFNBQUFqTCxFQUNBNCtCLElBQUFqMkIs
R0FDQUEsRUFBQW8yQixTQUNBanhCLEVBQUFpeEIsUUFBQSxHQUdBLEdBQUFqeEIsRUFBQTJ2Qixh
QUNBLE9BQUF6QixHQUFBLEVBQUFnRCxFQUFBbHhCLEVBQUEydkIsYUFBQXg5QixPQUF1RCs3QixF
QUFBZ0QsRUFBV2hELElBQUEsQ0FDbEUsR0FBQU0sR0FBQXh1QixFQUFBMnZCLGFBQUF6QixHQUFB
TSxLQUNBc0MsSUFBQXRDLEdBQ0FBLEVBQUF5QyxTQUNBanhCLEVBQUFpeEIsUUFBQSxLQU9BLFFB
QUFGLElBQUEvd0IsRUFBQXFPLEdBQ0EsT0FBQXJPLEVBQUE3RixLQUFBLENBT0EsSUFOQTZGLEVB
QUFpeEIsUUFBQWp4QixFQUFBL0ssUUFDQStLLEVBQUFteEIsWUFBQTlpQixHQUtBck8sRUFBQWl4
QixRQUFBanhCLEVBQUE3QyxTQUFBaEwsU0FDQSxJQUFBNk4sRUFBQTdDLFNBQUFoTCxRQUNBLElB
QUE2TixFQUFBN0MsU0FBQSxHQUFBaEQsTUFHQSxZQURBNkYsRUFBQW94QixZQUFBLEVBS0EsSUFG
QXB4QixFQUFBb3hCLFlBQUEsRUFFQXB4QixFQUFBN0MsU0FDQSxPQUFBakwsR0FBQSxFQUFBbUIs
RUFBQTJNLEVBQUE3QyxTQUFBaEwsT0FBK0NELEVBQUFtQixFQUFPbkIsSUFDdEQ2K0IsR0FBQS93
QixFQUFBN0MsU0FBQWpMLEdBQUFtYyxLQUFBck8sRUFBQW12QixJQUdBLElBQUFudkIsRUFBQTJ2
QixhQUNBLE9BQUF6QixHQUFBLEVBQUFnRCxFQUFBbHhCLEVBQUEydkIsYUFBQXg5QixPQUF1RCs3
QixFQUFBZ0QsRUFBV2hELElBQ2xFNkMsR0FBQS93QixFQUFBMnZCLGFBQUF6QixHQUFBTSxNQUFB
bmdCLElBTUEsUUFBQTNRLElBQUFzQyxHQUNBLFdBQUFBLEVBQUE3RixPQUdBLElBQUE2RixFQUFB
N0YsU0FHQTZGLEVBQUFxc0IsTUFDQXJzQixFQUFBK3ZCLGFBQ0EvdkIsRUFBQW91QixJQUFBcHVC
LEVBQUFtdkIsS0FDQWtDLEdBQUFyeEIsRUFBQS9DLE9BQ0E0ekIsR0FBQTd3QixFQUFBL0MsTUFD
QXEwQixHQUFBdHhCLEtBQ0FuUSxPQUFBaUYsS0FBQWtMLEdBQUFyTCxNQUFBKzdCLE9BSUEsUUFB
QVksSUFBQXR4QixHQUNBLEtBQUFBLEVBQUFwRixRQUFBLENBRUEsR0FEQW9GLElBQUFwRixPQUNB
LGFBQUFvRixFQUFBL0MsSUFDQSxRQUVBLElBQUErQyxFQUFBbXZCLElBQ0EsU0FHQSxTQXVDQSxR
QUFBb0MsSUFDQXRYLEVBQ0F6akIsRUFDQXdqQixHQUVBLEdBQUEvbEIsR0FBQXVDLEVBQUEsYUFB
a0MsTUFDbEMsUUFBQXlELEtBQUFnZ0IsR0FBQSxDQVlBaG1CLEdBQUEsSUFBQWdHLEVBQUEsS0FB
QXUzQixHQUFBdjNCLEVBWEFnZ0IsRUFBQWhnQixJQVdBLElBRUEsTUFBQWhHLEdBQUFrSyxNQUFB
LFVBR0EsUUFBQXF6QixJQUNBdjNCLEVBQ0FtUCxHQUVBLElBQUFBLEVBQ0Esb0JBR0EsSUFBQXhW
LE1BQUFhLFFBQUEyVSxHQUNBLFVBQUFBLEVBQUF0WCxJQUFBLFNBQUFzWCxHQUFtRCxNQUFBb29C
LElBQUF2M0IsRUFBQW1QLEtBQW9Dd04sS0FBQSxRQUd2RixJQUFBNmEsR0FBQUMsR0FBQTc3QixL
QUFBdVQsRUFBQXJaLE9BQ0E0aEMsRUFBQUMsR0FBQS83QixLQUFBdVQsRUFBQXJaLE1BRUEsSUFB
QXFaLEVBQUFvTixVQUlHLENBQ0gsR0FBQW9HLEdBQUEsR0FDQWlWLEVBQUEsR0FDQS84QixJQUNB
LFFBQUFsQyxLQUFBd1csR0FBQW9OLFVBQ0FzYixHQUFBbC9CLElBQ0FpL0IsR0FBQUMsR0FBQWwv
QixHQUVBZ2IsR0FBQWhiLElBQ0FrQyxFQUFBaUMsS0FBQW5FLElBR0FrQyxFQUFBaUMsS0FBQW5F
LEVBR0FrQyxHQUFBM0MsU0FDQXlxQixHQUFBbVYsR0FBQWo5QixJQUdBKzhCLElBQ0FqVixHQUFB
aVYsRUFPQSwyQkFBOEJqVixHQUw5QjZVLEVBQ0Fyb0IsRUFBQXJaLE1BQUEsV0FDQTRoQyxFQUNB
LElBQUF2b0IsRUFBQSxrQkFDQUEsRUFBQXJaLE9BQzhCLElBOUI5QixNQUFBMGhDLElBQUFFLEVB
Q0F2b0IsRUFBQXJaLE1BQ0Esb0JBQTJCcVosRUFBQSxVQWdDM0IsUUFBQTJvQixJQUFBajlCLEdB
Q0EsbUNBQUFBLEVBQUFoRCxJQUFBa2dDLElBQUFwYixLQUFBLHNCQUdBLFFBQUFvYixJQUFBcC9C
LEdBQ0EsR0FBQXEvQixHQUFBQyxTQUFBdC9CLEVBQUEsR0FDQSxJQUFBcS9CLEVBQ0EsMEJBQUFB
LENBRUEsSUFBQTdDLEdBQUF4aEIsR0FBQWhiLEVBQ0EsNEJBQUF0QixLQUFBQyxVQUFBcUIsSUFB
QXc4QixFQUFBLElBQUE5OUIsS0FBQUMsVUFBQTY5QixHQUFBLFFBS0EsUUFBQS93QixJQUFBMEYs
RUFBQTJSLEdBSUEzUixFQUFBb3VCLGNBQUEsU0FBQXZWLEdBQXNDLFlBQUFBLEVBQUEsSUFBQWxI
LEVBQUEsV0FLdEMsUUFBQTBjLElBQUFydUIsRUFBQTJSLEdBQ0EzUixFQUFBc3VCLFNBQUEsU0FB
QXpWLEdBQ0EsWUFBQUEsRUFBQSxLQUFBN1ksRUFBQSxTQUFBMlIsRUFBQSxXQUFBQSxFQUFBYyxX
QUFBZCxFQUFBYyxVQUFBemEsS0FBQSxpQkFBQTJaLEVBQUFjLFdBQUFkLEVBQUFjLFVBQUFyVixL
QUFBLGlCQTRCQSxRQUFBbXhCLElBQ0FDLEVBQ0F4NEIsR0FFQSxHQUFBeTRCLEdBQUEsR0FBQUMs
SUFBQTE0QixFQUVBLFFBQ0FtSyxPQUFBLHNCQUZBcXVCLEVBQUFHLEdBQUFILEVBQUFDLEdBQUEs
YUFFeUIsSUFDekIxbUIsZ0JBQUEwbUIsRUFBQTFtQixpQkFJQSxRQUFBNG1CLElBQUEzdUIsRUFB
QXl1QixHQUNBLEdBQUF6dUIsRUFBQXF0QixhQUFBcnRCLEVBQUE0dUIsZ0JBQ0EsTUFBQUMsSUFB
QTd1QixFQUFBeXVCLEVBQ0csSUFBQXp1QixFQUFBOU8sT0FBQThPLEVBQUE4dUIsY0FDSCxNQUFB
QyxJQUFBL3VCLEVBQUF5dUIsRUFDRyxJQUFBenVCLEVBQUFvckIsTUFBQXByQixFQUFBZ3ZCLGFB
Q0gsTUFBQUMsSUFBQWp2QixFQUFBeXVCLEVBQ0csSUFBQXp1QixFQUFBcXFCLEtBQUFycUIsRUFB
QWt2QixZQUNILE1BQUFDLElBQUFudkIsRUFBQXl1QixFQUNHLGlCQUFBenVCLEVBQUE5RyxLQUFB
OEcsRUFBQTRxQixXQUVBLGFBQUE1cUIsRUFBQTlHLElBQ0gsTUFBQWsyQixJQUFBcHZCLEVBQUF5
dUIsRUFHQSxJQUFBNVYsRUFDQSxJQUFBN1ksRUFBQXJDLFVBQ0FrYixFQUFBd1csR0FBQXJ2QixF
QUFBckMsVUFBQXFDLEVBQUF5dUIsT0FDSyxDQUNMLEdBQUF0MUIsR0FBQTZHLEVBQUErcEIsVUFB
QTM5QixHQUFBa2pDLEdBQUF0dkIsRUFBQXl1QixHQUVBcjFCLEVBQUE0RyxFQUFBOEgsZUFBQSxL
QUFBeW5CLEdBQUF2dkIsRUFBQXl1QixHQUFBLEVBQ0E1VixHQUFBLE9BQUE3WSxFQUFBLFNBQUE3
RyxFQUFBLElBQUFBLEVBQUEsS0FBQUMsRUFBQSxJQUFBQSxFQUFBLFFBR0EsT0FBQWpMLEdBQUEs
RUFBbUJBLEVBQUFzZ0MsRUFBQTNGLFdBQUExNkIsT0FBNkJELElBQ2hEMHFCLEVBQUE0VixFQUFB
M0YsV0FBQTM2QixHQUFBNlIsRUFBQTZZLEVBRUEsT0FBQUEsR0FsQkEsTUFBQTBXLElBQUF2dkIs
RUFBQXl1QixJQUFBLFNBdUJBLFFBQUFJLElBQUE3dUIsRUFBQXl1QixHQUdBLE1BRkF6dUIsR0FB
QTR1QixpQkFBQSxFQUNBSCxFQUFBMW1CLGdCQUFBL1UsS0FBQSxxQkFBMEMyN0IsR0FBQTN1QixF
QUFBeXVCLEdBQUEsS0FDMUMsT0FBQUEsRUFBQTFtQixnQkFBQTNaLE9BQUEsSUFBQTRSLEVBQUFv
dEIsWUFBQSxnQkFJQSxRQUFBMkIsSUFBQS91QixFQUFBeXVCLEdBRUEsR0FEQXp1QixFQUFBOHVC
LGVBQUEsRUFDQTl1QixFQUFBcXFCLEtBQUFycUIsRUFBQWt2QixZQUNBLE1BQUFDLElBQUFudkIs
RUFBQXl1QixFQUNHLElBQUF6dUIsRUFBQW90QixZQUFBLENBR0gsSUFGQSxHQUFBditCLEdBQUEs
R0FDQWdJLEVBQUFtSixFQUFBbkosT0FDQUEsR0FBQSxDQUNBLEdBQUFBLEVBQUF1MEIsSUFBQSxD
QUNBdjhCLEVBQUFnSSxFQUFBaEksR0FDQSxPQUVBZ0ksV0FFQSxNQUFBaEksR0FNQSxNQUFBOC9C
LEdBQUEzdUIsRUFBQXl1QixHQUFBLElBQUFBLEVBQUFlLFVBQUEzZ0MsRUFBQSxJQUFBQSxFQUFB
LFFBRkE4L0IsR0FBQTN1QixFQUFBeXVCLEdBSUEsTUFBQUksSUFBQTd1QixFQUFBeXVCLEdBSUEs
UUFBQVUsSUFDQW52QixFQUNBeXVCLEVBQ0FnQixFQUNBQyxHQUdBLE1BREExdkIsR0FBQWt2Qixh
QUFBLEVBQ0FTLEdBQUEzdkIsRUFBQTRyQixhQUFBeHhCLFFBQUFxMEIsRUFBQWdCLEVBQUFDLEdB
R0EsUUFBQUMsSUFDQUMsRUFDQW5CLEVBQ0FnQixFQUNBQyxHQWNBLFFBQUFHLEdBQUE3dkIsR0FD
QSxNQUFBeXZCLEdBQ0FBLEVBQUF6dkIsRUFBQXl1QixHQUNBenVCLEVBQUE5TyxLQUNBNjlCLEdB
QUEvdUIsRUFBQXl1QixHQUNBRSxHQUFBM3VCLEVBQUF5dUIsR0FqQkEsSUFBQW1CLEVBQUF4aEMs
T0FDQSxNQUFBc2hDLElBQUEsTUFHQSxJQUFBL0QsR0FBQWlFLEVBQUFFLE9BQ0EsT0FBQW5FLEdB
QUF4WCxJQUNBLElBQUF3WCxFQUFBLFNBQUFrRSxFQUFBbEUsRUFBQWxCLE9BQUEsSUFBQWtGLEdB
QUFDLEVBQUFuQixFQUFBZ0IsRUFBQUMsR0FFQSxHQUFBRyxFQUFBbEUsRUFBQWxCLE9BYUEsUUFB
QXdFLElBQ0FqdkIsRUFDQXl1QixFQUNBZ0IsRUFDQU0sR0FFQSxHQUFBNWIsR0FBQW5VLEVBQUFv
ckIsSUFDQUMsRUFBQXJyQixFQUFBcXJCLE1BQ0FHLEVBQUF4ckIsRUFBQXdyQixVQUFBLElBQUF4
ckIsRUFBQSxhQUNBeXJCLEVBQUF6ckIsRUFBQXlyQixVQUFBLElBQUF6ckIsRUFBQSxZQWlCQSxP
QURBQSxHQUFBZ3ZCLGNBQUEsR0FDQWUsR0FBQSxXQUFBNWIsRUFBQSxjQUNBa1gsRUFBQUcsRUFB
QUMsRUFBQSxhQUNBZ0UsR0FBQWQsSUFBQTN1QixFQUFBeXVCLEdBQ0EsS0FHQSxRQUFBYSxJQUFB
dHZCLEVBQUF5dUIsR0FDQSxHQUFBdDFCLEdBQUEsSUFJQTFDLEVBQUF1NUIsR0FBQWh3QixFQUFB
eXVCLEVBQ0FoNEIsS0FBYTBDLEdBQUExQyxFQUFBLEtBR2J1SixFQUFBblIsTUFDQXNLLEdBQUEs
T0FBQTZHLEVBQUEsU0FHQUEsRUFBQStRLE1BQ0E1WCxHQUFBLE9BQUE2RyxFQUFBLFNBRUFBLEVB
QUFpUixXQUNBOVgsR0FBQSxrQkFHQTZHLEVBQUFzb0IsTUFDQW52QixHQUFBLGFBR0E2RyxFQUFB
ckMsWUFDQXhFLEdBQUEsUUFBQTZHLEVBQUEsU0FHQSxRQUFBN1IsR0FBQSxFQUFpQkEsRUFBQXNn
QyxFQUFBd0IsV0FBQTdoQyxPQUE2QkQsSUFDOUNnTCxHQUFBczFCLEVBQUF3QixXQUFBOWhDLEdB
QUE2UixFQThCQSxJQTNCQUEsRUFBQXpFLFFBQ0FwQyxHQUFBLFVBQW9CKzJCLEdBQUFsd0IsRUFB
QXpFLE9BQUEsTUFHcEJ5RSxFQUFBL0osUUFDQWtELEdBQUEsYUFBdUIrMkIsR0FBQWx3QixFQUFB
L0osT0FBQSxNQUd2QitKLEVBQUFrVyxTQUNBL2MsR0FBQXEwQixHQUFBeHRCLEVBQUFrVyxRQUFB
LEVBQUF1WSxFQUFBeFksTUFBQSxLQUVBalcsRUFBQW9XLGVBQ0FqZCxHQUFBcTBCLEdBQUF4dEIs
RUFBQW9XLGNBQUEsRUFBQXFZLEVBQUF4WSxNQUFBLEtBR0FqVyxFQUFBNHFCLGFBQ0F6eEIsR0FB
QSxRQUFBNkcsRUFBQSxnQkFHQUEsRUFBQWUsY0FDQTVILEdBQUFnM0IsR0FBQW53QixFQUFBZSxZ
QUFBMHRCLEdBQUEsS0FHQXp1QixFQUFBaUgsUUFDQTlOLEdBQUEsZ0JBQW9CNkcsRUFBQWlILE1B
QUEsbUJBQUFqSCxFQUFBaUgsTUFBQSx3QkFBQWpILEVBQUFpSCxNQUFBLGlCQUdwQmpILEVBQUE4
SCxlQUFBLENBQ0EsR0FBQUEsR0FBQXNvQixHQUFBcHdCLEVBQUF5dUIsRUFDQTNtQixLQUNBM08s
R0FBQTJPLEVBQUEsS0FZQSxNQVRBM08sS0FBQTJpQixRQUFBLGFBRUE5YixFQUFBc3VCLFdBQ0Fu
MUIsRUFBQTZHLEVBQUFzdUIsU0FBQW4xQixJQUdBNkcsRUFBQW91QixnQkFDQWoxQixFQUFBNkcs
RUFBQW91QixjQUFBajFCLElBRUFBLEVBR0EsUUFBQTYyQixJQUFBaHdCLEVBQUF5dUIsR0FDQSxH
QUFBaDRCLEdBQUF1SixFQUFBdEosVUFDQSxJQUFBRCxFQUFBLENBQ0EsR0FFQXRJLEdBQUFtQixF
QUFBcWlCLEVBQUEwZSxFQUZBbmdDLEVBQUEsZUFDQW9nQyxHQUFBLENBRUEsS0FBQW5pQyxFQUFB
LEVBQUFtQixFQUFBbUgsRUFBQXJJLE9BQThCRCxFQUFBbUIsRUFBT25CLElBQUEsQ0FDckN3akIs
RUFBQWxiLEVBQUF0SSxHQUNBa2lDLEdBQUEsQ0FDQSxJQUFBRSxHQUFBOUIsRUFBQS8zQixXQUFB
aWIsRUFBQXpiLEtBQ0FxNkIsS0FHQUYsSUFBQUUsRUFBQXZ3QixFQUFBMlIsRUFBQThjLEVBQUF4
WSxPQUVBb2EsSUFDQUMsR0FBQSxFQUNBcGdDLEdBQUEsVUFBZXloQixFQUFBLG1CQUFBQSxFQUFB
LGFBQUFBLEVBQUEzbEIsTUFBQSxXQUFBMmxCLEVBQUEsc0JBQUFwa0IsS0FBQUMsVUFBQW1rQixF
QUFBM2xCLE9BQUEsS0FBQTJsQixFQUFBbUUsSUFBQSxTQUFBbkUsRUFBQSxhQUFBQSxFQUFBYyxV
QUFBLGNBQUFsbEIsS0FBQUMsVUFBQW1rQixFQUFBYyxXQUFBLFVBR2YsTUFBQTZkLEdBQ0FwZ0Ms
RUFBQWtLLE1BQUEsY0FEQSxJQUtBLFFBQUFnMkIsSUFBQXB3QixFQUFBeXVCLEdBQ0EsR0FBQUQs
R0FBQXh1QixFQUFBNUcsU0FBQSxFQU1BLFFBQUFvMUIsRUFBQXA0QixLQUFBLENBQ0EsR0FBQW82
QixHQUFBakMsR0FBQUMsRUFBQUMsRUFBQXo0QixRQUNBLDRDQUErQ3c2QixFQUFBLDZCQUFpQ0Es
RUFBQXpvQixnQkFBQWhhLElBQUEsU0FBQThxQixHQUE0RSxvQkFBcUJBLEVBQUEsTUFBa0JoRyxL
QUFBLFdBSW5NLFFBQUFzZCxJQUNBdHhCLEVBQ0E0dkIsR0FFQSx5QkFBQTNpQyxPQUFBaUYsS0FB
QThOLEdBQUE5USxJQUFBLFNBQUFjLEdBQ0EsTUFBQTRoQyxJQUFBNWhDLEVBQUFnUSxFQUFBaFEs
R0FBQTQvQixLQUNLNWIsS0FBQSxVQUdMLFFBQUE0ZCxJQUNBNWhDLEVBQ0FtUixFQUNBeXVCLEdB
RUEsTUFBQXp1QixHQUFBb3JCLE1BQUFwckIsRUFBQWd2QixhQUNBMEIsR0FBQTdoQyxFQUFBbVIs
RUFBQXl1QixHQUVBLFFBQVc1L0IsRUFBQSxnQkFBQXBCLE9BQUF1UyxFQUFBMlcsU0FBQWdhLE9B
QUEsYUFDWCxhQUFBM3dCLEVBQUE5RyxJQUNBcTJCLEdBQUF2dkIsRUFBQXl1QixJQUFBLFNBQ0FF
LEdBQUEzdUIsRUFBQXl1QixJQUFBLEtBR0EsUUFBQWlDLElBQ0E3aEMsRUFDQW1SLEVBQ0F5dUIs
R0FFQSxHQUFBdGEsR0FBQW5VLEVBQUFvckIsSUFDQUMsRUFBQXJyQixFQUFBcXJCLE1BQ0FHLEVB
QUF4ckIsRUFBQXdyQixVQUFBLElBQUF4ckIsRUFBQSxhQUNBeXJCLEVBQUF6ckIsRUFBQXlyQixV
QUFBLElBQUF6ckIsRUFBQSxZQUVBLE9BREFBLEdBQUFndkIsY0FBQSxFQUNBLE9BQUE3YSxFQUFB
LGNBQ0FrWCxFQUFBRyxFQUFBQyxFQUFBLFlBQ0FnRixHQUFBNWhDLEVBQUFtUixFQUFBeXVCLEdB
Q0EsS0FHQSxRQUFBYyxJQUNBdnZCLEVBQ0F5dUIsRUFDQW1DLEVBQ0FDLEVBQ0FDLEdBRUEsR0FB
QTEzQixHQUFBNEcsRUFBQTVHLFFBQ0EsSUFBQUEsRUFBQWhMLE9BQUEsQ0FDQSxHQUFBMmlDLEdB
QUEzM0IsRUFBQSxFQUVBLFFBQUFBLEVBQUFoTCxRQUNBMmlDLEVBQUEzRixLQUNBLGFBQUEyRixF
QUFBNzNCLEtBQ0EsU0FBQTYzQixFQUFBNzNCLElBRUEsT0FBQTIzQixHQUFBbEMsSUFBQW9DLEVB
QUF0QyxFQUVBLElBQUFqbUIsR0FBQW9vQixFQUNBSSxHQUFBNTNCLEVBQUFxMUIsRUFBQXdDLGdC
QUNBLEVBQ0FWLEVBQUFPLEdBQUFJLEVBQ0EsV0FBQTkzQixFQUFBckwsSUFBQSxTQUFBc0MsR0FB
OEMsTUFBQWtnQyxHQUFBbGdDLEVBQUFvK0IsS0FBd0I1YixLQUFBLFVBQUFySyxFQUFBLElBQUFB
LEVBQUEsS0FRdEUsUUFBQXdvQixJQUNBNTNCLEVBQ0E2M0IsR0FHQSxPQURBL2dDLEdBQUEsRUFD
QS9CLEVBQUEsRUFBaUJBLEVBQUFpTCxFQUFBaEwsT0FBcUJELElBQUEsQ0FDdEMsR0FBQTZSLEdB
QUE1RyxFQUFBakwsRUFDQSxRQUFBNlIsRUFBQTVKLEtBQUEsQ0FHQSxHQUFBKzZCLEdBQUFueEIs
SUFDQUEsRUFBQTRyQixjQUFBNXJCLEVBQUE0ckIsYUFBQXdGLEtBQUEsU0FBQS9nQyxHQUErRCxN
QUFBOGdDLElBQUE5Z0MsRUFBQW82QixTQUFzQyxDQUNyR3Y2QixFQUFBLENBQ0EsUUFFQStnQyxF
QUFBanhCLElBQ0FBLEVBQUE0ckIsY0FBQTVyQixFQUFBNHJCLGFBQUF3RixLQUFBLFNBQUEvZ0Ms
R0FBK0QsTUFBQTRnQyxHQUFBNWdDLEVBQUFvNkIsWUFDL0R2NkIsRUFBQSxJQUdBLE1BQUFBLEdB
R0EsUUFBQWloQyxJQUFBbnhCLEdBQ0EsV0FBQTVULEtBQUE0VCxFQUFBb3JCLEtBQUEsYUFBQXBy
QixFQUFBOUcsS0FBQSxTQUFBOEcsRUFBQTlHLElBR0EsUUFBQWc0QixJQUFBajFCLEVBQUF3eUIs
R0FDQSxXQUFBeHlCLEVBQUE3RixLQUNBdTRCLEdBQUExeUIsRUFBQXd5QixHQUNHLElBQUF4eUIs
RUFBQTdGLE1BQUE2RixFQUFBckMsVUFDSHkzQixHQUFBcDFCLEdBRUFxMUIsR0FBQXIxQixHQUlB
LFFBQUFxMUIsSUFBQWo0QixHQUNBLGlCQUFBQSxFQUFBakQsS0FDQWlELEVBQUFvYixXQUNBOGMs
R0FBQWhrQyxLQUFBQyxVQUFBNkwsVUFBQSxJQUdBLFFBQUFnNEIsSUFBQXRLLEdBQ0EsWUFBQXg1
QixLQUFBQyxVQUFBdTVCLEVBQUExdEIsTUFBQSxJQUdBLFFBQUErMUIsSUFBQXB2QixFQUFBeXVC
LEdBQ0EsR0FBQTVDLEdBQUE3ckIsRUFBQTZyQixVQUFBLFlBQ0F6eUIsRUFBQW0yQixHQUFBdnZC
LEVBQUF5dUIsR0FDQXYrQixFQUFBLE1BQUEyN0IsR0FBQXp5QixFQUFBLElBQUFBLEVBQUEsSUFD
QW1DLEVBQUF5RSxFQUFBekUsT0FBQSxJQUE2QnlFLEVBQUF6RSxNQUFBeE4sSUFBQSxTQUFBc0Is
R0FBZ0MsTUFBQThHLElBQUE5RyxFQUFBNkcsTUFBQSxJQUFBN0csRUFBQSxRQUFpRHdqQixLQUFB
LFNBQzlHMmUsRUFBQXh4QixFQUFBMlcsU0FBQSxTQVVBLFFBVEFwYixJQUFBaTJCLEdBQUFwNEIs
SUFDQWxKLEdBQUEsU0FFQXFMLElBQ0FyTCxHQUFBLElBQUFxTCxHQUVBaTJCLElBQ0F0aEMsSUFB
QXFMLEVBQUEsZ0JBQUFpMkIsR0FFQXRoQyxFQUFBLElBSUEsUUFBQW0vQixJQUNBb0MsRUFDQXp4
QixFQUNBeXVCLEdBRUEsR0FBQXIxQixHQUFBNEcsRUFBQThILGVBQUEsS0FBQXluQixHQUFBdnZC
LEVBQUF5dUIsR0FBQSxFQUNBLGFBQUFnRCxFQUFBLElBQUFuQyxHQUFBdHZCLEVBQUF5dUIsSUFB
QXIxQixFQUFBLElBQUFBLEVBQUEsUUFHQSxRQUFBODJCLElBQUFqNkIsR0FFQSxPQURBL0YsR0FB
QSxHQUNBL0IsRUFBQSxFQUFpQkEsRUFBQThILEVBQUE3SCxPQUFrQkQsSUFBQSxDQUNuQyxHQUFB
NkosR0FBQS9CLEVBQUE5SCxFQUNBK0IsSUFBQSxJQUFBOEgsRUFBQSxVQUFBdTVCLEdBQUF2NUIs
RUFBQWhNLE9BQUEsSUFFQSxNQUFBa0UsR0FBQWtLLE1BQUEsTUFJQSxRQUFBbTNCLElBQUFsNEIs
R0FDQSxNQUFBQSxHQUNBeWlCLFFBQUEscUJBQ0FBLFFBQUEscUJBc0dBLFFBQUE0VixJQUFBN1ks
RUFBQThZLEdBQ0EsSUFDQSxVQUFBQyxVQUFBL1ksR0FDRyxNQUFBNW1CLEdBRUgsTUFEQTAvQixH
QUFBMytCLE1BQWlCZixNQUFBNG1CLFNBQ2pCMW9CLEdBSUEsUUFBQTBoQyxJQUFBQyxHQUNBLEdB
QUE3aUMsR0FBQW5ELE9BQUFrQyxPQUFBLEtBRUEsaUJBQ0FtNkIsRUFDQW55QixFQUNBOUQsR0FF
QThELE9BcUJBLElBQUFuSCxHQUFBbUgsRUFBQWt1QixXQUNBejJCLE9BQUF1SSxFQUFBa3VCLFlB
QUFpRSxFQUNBQSxDQUNBLElBQUFsNUIsRUFBQUosR0FDQSxNQUFBSSxHQUFBSixFQUlBLElBQUFr
akMsR0FBQUQsRUFBQTNKLEVBQUFueUIsR0FpQkE5RixLQUNBOGhDLElBeUJBLE9BeEJBOWhDLEdB
QUFpUSxPQUFBdXhCLEdBQUFLLEVBQUE1eEIsT0FBQTZ4QixHQUNBOWhDLEVBQUE2WCxnQkFBQWdx
QixFQUFBaHFCLGdCQUFBaGEsSUFBQSxTQUFBOHFCLEdBQ0EsTUFBQTZZLElBQUE3WSxFQUFBbVos
S0FzQkEvaUMsRUFBQUosR0FBQXFCLEdBK0pBLFFBQUEraEMsSUFBQWp5QixHQUNBLEdBQUFBLEVB
QUFreUIsVUFDQSxNQUFBbHlCLEdBQUFreUIsU0FFQSxJQUFBQyxHQUFBOWlCLFNBQUEzSSxjQUFB
LE1BRUEsT0FEQXlyQixHQUFBMWhCLFlBQUF6USxFQUFBb3lCLFdBQUEsSUFDQUQsRUFBQUUsVUFq
elRBLEdBQUF6bEMsSUFBQWQsT0FBQStQLFVBQUF2TyxTQStEQWdnQyxHQUFBMS9CLEVBQUEscUJB
S0FxYyxHQUFBcmMsRUFBQSxtQkFpQkFrQixHQUFBaEQsT0FBQStQLFVBQUEvTSxlQW1CQXdqQyxH
QUFBLFNBQ0FuOEIsR0FBQXBILEVBQUEsU0FBQWxCLEdBQ0EsTUFBQUEsR0FBQWl1QixRQUFBd1cs
R0FBQSxTQUFBNWMsRUFBQXJsQixHQUFrRCxNQUFBQSxLQUFBa2lDLGNBQUEsT0FNbEQzNkIsR0FB
QTdJLEVBQUEsU0FBQWxCLEdBQ0EsTUFBQUEsR0FBQXFuQixPQUFBLEdBQUFxZCxjQUFBMWtDLEVB
QUF1TSxNQUFBLEtBTUFvNEIsR0FBQSxpQkFDQXA2QixHQUFBckosRUFBQSxTQUFBbEIsR0FDQSxN
QUFBQSxHQUNBaXVCLFFBQUEwVyxHQUFBLFNBQ0ExVyxRQUFBMFcsR0FBQSxTQUNBbmtDLGdCQWtF
QTIzQixHQUFBLFNBQUEzMkIsRUFBQWUsRUFBQUMsR0FBNkIsVUFLN0JvWixHQUFBLFNBQUFpTSxH
QUE2QixNQUFBQSxJQW9FN0IrYyxHQUFBLHVCQUVBamxCLElBQ0EsWUFDQSxZQUNBLFVBR0FrbEIs
SUFDQSxlQUNBLFVBQ0EsY0FDQSxVQUNBLGVBQ0EsVUFDQSxnQkFDQSxZQUNBLFlBQ0EsZUFLQXRn
QyxJQUlBdWdDLHNCQUFBN21DLE9BQUFrQyxPQUFBLE1BS0E0a0MsUUFBQSxFQUtBQyxlQUFBLEVB
S0EvdkIsVUFBQSxFQUtBZ3dCLGFBQUEsRUFLQXpnQyxhQUFBLEtBS0EwZ0MsWUFBQSxLQUtBQyxt
QkFLQW5wQixTQUFBL2QsT0FBQWtDLE9BQUEsTUFNQSthLGNBQUFpZCxHQU1BaU4sZUFBQWpOLEdB
TUE3VyxpQkFBQTZXLEdBS0FsZCxnQkFBQTNZLEVBS0E2WSxxQkFBQVMsR0FNQVMsWUFBQThiLEdB
S0FrTixnQkFBQVIsSUFLQXp4QixHQUFBblYsT0FBQXFuQyxXQXlCQXRoQyxHQUFBLFVBaUJBb2tC
LEdBQUE5bEIsRUFtSEFpakMsR0FBQSxnQkFHQTlnQyxHQUFBLG1CQUFBZ2QsUUFDQStqQixHQUFB
L2dDLElBQUFnZCxPQUFBZ2tCLFVBQUFDLFVBQUFsbEMsY0FDQTZxQixHQUFBbWEsSUFBQSxlQUFB
dmhDLEtBQUF1aEMsSUFDQW5nQixHQUFBbWdCLE9BQUEza0MsUUFBQSxjQUNBOGtDLEdBQUFILE9B
QUEza0MsUUFBQSxXQUNBK2tDLEdBQUFKLE9BQUEza0MsUUFBQSxhQUNBZ2xDLEdBQUFMLElBQUEs
dUJBQUF2aEMsS0FBQXVoQyxJQUNBbGEsR0FBQWthLElBQUEsY0FBQXZoQyxLQUFBdWhDLE1BQUFH
LEdBR0FodkIsTUFBcUJELE1BRXJCbVYsSUFBQSxDQUNBLElBQUFwbkIsR0FDQSxJQUNBLEdBQUF5
UixNQUNBalksUUFBQUMsZUFBQWdZLEdBQUEsV0FDQXRQLElBQUEsV0FFQWlsQixJQUFBLEtBR0Fw
SyxPQUFBbUssaUJBQUEsb0JBQUExVixJQUNHLE1BQUFsVCxJQUtILEdBQUE4aUMsSUFpSEFDLEdB
aEhBOS9CLEdBQUEsV0FXQSxXQVZBMUgsS0FBQXVuQyxLQU9BQSxJQUxBcmhDLFFBQUEsS0FBQXJH
LEdBR0EsV0FBQUEsRUFBQSxRQUFBNG5DLElBQUFDLFNBS0FILElBSUE3d0IsR0FBQXhRLElBQUFn
ZCxPQUFBeWtCLDZCQU9BL3RCLEdBQ0EsbUJBQUFndUIsU0FBQXZoQyxFQUFBdWhDLFNBQ0EsbUJB
QUEvdEIsVUFBQXhULEVBQUF3VCxRQUFBQyxTQUtBaEQsR0FBQSxXQUtBLFFBQUErd0IsS0FDQUMs
R0FBQSxDQUNBLElBQUFDLEdBQUFDLEVBQUFoNkIsTUFBQSxFQUNBZzZCLEdBQUFobUMsT0FBQSxD
QUNBLFFBQUFELEdBQUEsRUFBbUJBLEVBQUFnbUMsRUFBQS9sQyxPQUFtQkQsSUFDdENnbUMsRUFB
QWhtQyxLQVRBLEdBRUFrbUMsR0FGQUQsS0FDQUYsR0FBQSxDQW1CQSx1QkFBQUksVUFBQTdoQyxF
QUFBNmhDLFNBQUEsQ0FDQSxHQUFBcmYsR0FBQXFmLFFBQUEvMkIsVUFDQWczQixFQUFBLFNBQUF0
aUMsR0FBbUNNLFFBQUFDLE1BQUFQLEdBQ25Db2lDLEdBQUEsV0FDQXBmLEVBQUF2WCxLQUFBdTJC
LEdBQUFPLE1BQUFELEdBTUFiLElBQWtCNzFCLFdBQUExTixRQUVmLHVCQUFBc2tDLG9CQUNIaGlD
LEVBQUFnaUMsbUJBRUEseUNBQUFBLGlCQUFBbm5DLFdBaUJBK21DLEVBQUEsV0FDQXgyQixXQUFB
bzJCLEVBQUEsUUFqQkEsQ0FHQSxHQUFBUyxHQUFBLEVBQ0FDLEVBQUEsR0FBQUYsa0JBQUFSLEdB
Q0FXLEVBQUF2bEIsU0FBQWMsZUFBQTFpQixPQUFBaW5DLEdBQ0FDLEdBQUFwaEMsUUFBQXFoQyxH
QUNBQyxlQUFBLElBRUFSLEVBQUEsV0FDQUssS0FBQSxLQUNBRSxFQUFBejdCLEtBQUExTCxPQUFB
aW5DLElBVUEsZ0JBQUFoWSxFQUFBdnRCLEdBQ0EsR0FBQTJsQyxFQWdCQSxJQWZBVixFQUFBcGhD
LEtBQUEsV0FDQSxHQUFBMHBCLEVBQ0EsSUFDQUEsRUFBQTd2QixLQUFBc0MsR0FDUyxNQUFBMEIs
R0FDVG1CLEVBQUFuQixFQUFBMUIsRUFBQSxnQkFFTzJsQyxJQUNQQSxFQUFBM2xDLEtBR0Era0Ms
SUFDQUEsR0FBQSxFQUNBRyxNQUVBM1gsR0FBQSxtQkFBQTRYLFNBQ0EsVUFBQUEsU0FBQSxTQUFB
LzJCLEVBQUFDLEdBQ0FzM0IsRUFBQXYzQixPQVVBcTJCLElBRkEsbUJBQUFtQixNQUFBdGlDLEVB
QUFzaUMsS0FFQUEsSUFHQSxXQUNBLFFBQUFBLEtBQ0EzakMsS0FBQXVELElBQUE3SSxPQUFBa0Ms
T0FBQSxNQVlBLE1BVkErbUMsR0FBQWw1QixVQUFBc0csSUFBQSxTQUFBdFQsR0FDQSxXQUFBdUMs
S0FBQXVELElBQUE5RixJQUVBa21DLEVBQUFsNUIsVUFBQXJCLElBQUEsU0FBQTNMLEdBQ0F1QyxL
QUFBdUQsSUFBQTlGLElBQUEsR0FFQWttQyxFQUFBbDVCLFVBQUF3SCxNQUFBLFdBQ0FqUyxLQUFB
dUQsSUFBQTdJLE9BQUFrQyxPQUFBLE9BR0ErbUMsSUFPQSxJQUFBQyxJQUFBLEVBTUFuaUMsR0FB
QSxXQUNBekIsS0FBQW1HLEdBQUF5OUIsS0FDQTVqQyxLQUFBNmpDLFFBR0FwaUMsSUFBQWdKLFVB
QUFxNUIsT0FBQSxTQUFBQyxHQUNBL2pDLEtBQUE2akMsS0FBQWppQyxLQUFBbWlDLElBR0F0aUMs
R0FBQWdKLFVBQUF1NUIsVUFBQSxTQUFBRCxHQUNBN21DLEVBQUE4QyxLQUFBNmpDLEtBQUFFLElB
R0F0aUMsR0FBQWdKLFVBQUFoSCxPQUFBLFdBQ0FoQyxHQUFBQyxRQUNBRCxHQUFBQyxPQUFBdWlD
LE9BQUFqa0MsT0FJQXlCLEdBQUFnSixVQUFBN0csT0FBQSxXQUdBLE9BREFpZ0MsR0FBQTdqQyxL
QUFBNmpDLEtBQUE3NkIsUUFDQWpNLEVBQUEsRUFBQW1CLEVBQUEybEMsRUFBQTdtQyxPQUFrQ0Qs
RUFBQW1CLEVBQU9uQixJQUN6QzhtQyxFQUFBOW1DLEdBQUF3SSxVQU9BOUQsR0FBQUMsT0FBQSxJ
QUNBLElBQUFDLE9BZ0JBdWlDLEdBQUF6bEMsTUFBQWdNLFVBQ0EwNUIsR0FBQXpwQyxPQUFBa0Ms
T0FBQXNuQyxLQUNBLE9BQ0EsTUFDQSxRQUNBLFVBQ0EsU0FDQSxPQUNBLFdBRUF2dkIsUUFBQSxT
QUFBeXZCLEdBRUEsR0FBQUMsR0FBQUgsR0FBQUUsRUFDQWprQyxHQUFBZ2tDLEdBQUFDLEVBQUEs
V0FFQSxJQURBLEdBQUE3b0IsTUFBQS9ULEVBQUFySixVQUFBbkIsT0FDQXdLLEtBQUErVCxFQUFB
L1QsR0FBQXJKLFVBQUFxSixFQUVBLElBRUEyWixHQUZBMU0sRUFBQTR2QixFQUFBam1DLE1BQUE0
QixLQUFBdWIsR0FDQWxaLEVBQUFyQyxLQUFBc0MsTUFFQSxRQUFBOGhDLEdBQ0EsV0FDQSxjQUNB
ampCLEVBQUE1RixDQUNBLE1BQ0EsY0FDQTRGLEVBQUE1RixFQUFBdlMsTUFBQSxHQU1BLE1BSEFt
WSxJQUFtQjllLEVBQUFpaUMsYUFBQW5qQixHQUVuQjllLEVBQUFZLElBQUFXLFNBQ0E2USxLQU1B
LElBQUE4dkIsSUFBQTdwQyxPQUFBOHBDLG9CQUFBTCxJQVFBM2hDLElBQ0FDLGVBQUEsR0FTQUYs
R0FBQSxTQUFBM0gsR0FLQSxHQUpBb0YsS0FBQXBGLFFBQ0FvRixLQUFBaUQsSUFBQSxHQUFBeEIs
SUFDQXpCLEtBQUE2QyxRQUFBLEVBQ0ExQyxFQUFBdkYsRUFBQSxTQUFBb0YsTUFDQXZCLE1BQUFh
LFFBQUExRSxHQUFBLEVBQ0FvbkMsR0FDQWpnQyxFQUNBRyxHQUNBdEgsRUFBQXVwQyxHQUFBSSxJ
QUNBdmtDLEtBQUFza0MsYUFBQTFwQyxPQUVBb0YsTUFBQXlrQyxLQUFBN3BDLEdBU0EySCxJQUFB
a0ksVUFBQWc2QixLQUFBLFNBQUFucEMsR0FFQSxPQURBcUUsR0FBQWpGLE9BQUFpRixLQUFBckUs
R0FDQXlCLEVBQUEsRUFBaUJBLEVBQUE0QyxFQUFBM0MsT0FBaUJELElBQ2xDK0YsRUFBQXhILEVB
QUFxRSxFQUFBNUMsR0FBQXpCLEVBQUFxRSxFQUFBNUMsTUFPQXdGLEdBQUFrSSxVQUFBNjVCLGFB
QUEsU0FBQUksR0FDQSxPQUFBM25DLEdBQUEsRUFBQW1CLEVBQUF3bUMsRUFBQTFuQyxPQUFtQ0Qs
RUFBQW1CLEVBQU9uQixJQUMxQ29GLEVBQUF1aUMsRUFBQTNuQyxJQWlNQSxJQUFBOEksSUFBQTdF
LEdBQUF1Z0MscUJBa0ZBMTdCLElBQUFrQyxLQUFBLFNBQ0EzRCxFQUNBQyxFQUNBdkQsR0FFQSxN
QUFBQSxHQWNBcUQsRUFBQUMsRUFBQUMsRUFBQXZELEdBYkF1RCxHQUFBLGtCQUFBQSxHQVFBRCxF
QUVBRCxFQUFBMUksS0FBQXVFLEtBQUFvRSxFQUFBQyxJQXNCQWk5QixHQUFBM3NCLFFBQUEsU0FB
QTdLLEdBQ0FqRSxHQUFBaUUsR0FBQXRGLElBaUJBNFgsR0FBQXpILFFBQUEsU0FBQTNQLEdBQ0Fh
LEdBQUFiLEVBQUEsS0FBQU4sSUFTQW1CLEdBQUFzTixNQUFBLFNBQUEvTyxFQUFBQyxHQUtBLEdB
SEFELElBQUFnUCxLQUFrQ2hQLE1BQUFwSixJQUNsQ3FKLElBQUErTyxLQUFpQy9PLE1BQUFySixL
QUVqQ3FKLEVBQWtCLE1BQUEzSixRQUFBa0MsT0FBQXdILEdBQUEsS0FDbEIsS0FBQUEsRUFBbUIs
TUFBQUMsRUFDbkIsSUFBQTdGLEtBQ0FFLEdBQUFGLEVBQUE0RixFQUNBLFFBQUEzRyxLQUFBNEcs
R0FBQSxDQUNBLEdBQUFvQixHQUFBakgsRUFBQWYsR0FDQWlJLEVBQUFyQixFQUFBNUcsRUFDQWdJ
LEtBQUFoSCxNQUFBYSxRQUFBbUcsS0FDQUEsT0FFQWpILEVBQUFmLEdBQUFnSSxFQUNBQSxFQUFB
aEIsT0FBQWlCLEdBQ0FqSCxNQUFBYSxRQUFBb0csU0FFQSxNQUFBbEgsSUFNQXFILEdBQUFoQixN
QUNBZ0IsR0FBQWdOLFFBQ0FoTixHQUFBWCxPQUNBVyxHQUFBb04sU0FBQSxTQUFBN08sRUFBQUMs
R0FDQSxJQUFBRCxFQUFtQixNQUFBQyxFQUNuQixJQUFBN0YsR0FBQTlELE9BQUFrQyxPQUFBLEtB
R0EsT0FGQThCLEdBQUFGLEVBQUE0RixHQUNBQyxHQUFpQjNGLEVBQUFGLEVBQUE2RixHQUNqQjdG
LEdBRUFxSCxHQUFBeU8sUUFBQW5RLENBS0EsSUFBQTJCLElBQUEsU0FBQTFCLEVBQUFDLEdBQ0Es
V0FBQXJKLEtBQUFxSixFQUNBRCxFQUNBQyxHQXNhQXFELEdBQUEsU0FDQUksRUFDQUMsRUFDQUMs
RUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FFQXJJLEtBQUE4SCxNQUNBOUgsS0FBQStI
LE9BQ0EvSCxLQUFBZ0ksV0FDQWhJLEtBQUFpSSxPQUNBakksS0FBQWtJLE1BQ0FsSSxLQUFBc0ks
T0FBQXROLEdBQ0FnRixLQUFBbUksVUFDQW5JLEtBQUEyTixzQkFBQTNTLEdBQ0FnRixLQUFBdkMs
SUFBQXNLLEtBQUF0SyxJQUNBdUMsS0FBQW9JLG1CQUNBcEksS0FBQWdkLHNCQUFBaGlCLEdBQ0Fn
RixLQUFBeUYsV0FBQXpLLEdBQ0FnRixLQUFBMmtDLEtBQUEsRUFDQTNrQyxLQUFBdUksVUFBQSxF
QUNBdkksS0FBQTB1QixjQUFBLEVBQ0ExdUIsS0FBQXdJLFdBQUEsRUFDQXhJLEtBQUF5SSxVQUFB
LEVBQ0F6SSxLQUFBd1osUUFBQSxFQUNBeFosS0FBQXFJLGVBQ0FySSxLQUFBd0wsY0FBQXhRLEdB
Q0FnRixLQUFBZ2dCLG9CQUFBLEdBR0E0a0IsSUFBMEJsL0IsU0FJMUJrL0IsSUFBQWwvQixNQUFB
ckMsSUFBQSxXQUNBLE1BQUFyRCxNQUFBZ2QsbUJBR0F0aUIsT0FBQW1xQyxpQkFBQW45QixHQUFB
K0MsVUFBQW02QixHQUVBLElBK2JBbGpDLElBL2JBNkosR0FBQSxTQUFBdEQsT0FDQSxLQUFBQSxN
QUFBLEdBRUEsSUFBQTRDLEdBQUEsR0FBQW5ELEdBR0EsT0FGQW1ELEdBQUE1QyxPQUNBNEMsRUFB
QXJDLFdBQUEsRUFDQXFDLEdBeUNBcEIsR0FBQTlMLEVBQUEsU0FBQW1ILEdBQ0EsR0FBQTZFLEdB
QUEsTUFBQTdFLEVBQUFnZixPQUFBLEVBQ0FoZixHQUFBNkUsRUFBQTdFLEVBQUFrRSxNQUFBLEdB
QUFsRSxDQUNBLElBQUFvSSxHQUFBLE1BQUFwSSxFQUFBZ2YsT0FBQSxFQUNBaGYsR0FBQW9JLEVB
QUFwSSxFQUFBa0UsTUFBQSxHQUFBbEUsQ0FDQSxJQUFBNEUsR0FBQSxNQUFBNUUsRUFBQWdmLE9B
QUEsRUFFQSxPQURBaGYsR0FBQTRFLEVBQUE1RSxFQUFBa0UsTUFBQSxHQUFBbEUsR0FFQUEsT0FD
QWhGLEtBQUFvTixFQUNBeEQsVUFDQUMsYUE0akJBNGtCLEdBQUEsS0F1VEExZCxNQUNBQyxNQUNB
QyxNQUVBQyxJQUFBLEVBQ0FDLElBQUEsRUFDQTVULEdBQUEsRUFtSUF5bkMsR0FBQSxFQU9BMTFC
LEdBQUEsU0FDQXRPLEVBQ0Fpa0MsRUFDQXpaLEVBQ0ExbUIsR0FFQTVFLEtBQUFjLEtBQ0FBLEVB
QUE0UixVQUFBOVEsS0FBQTVCLE1BRUE0RSxHQUNBNUUsS0FBQWdsQyxPQUFBcGdDLEVBQUFvZ0Ms
S0FDQWhsQyxLQUFBaWxDLE9BQUFyZ0MsRUFBQXFnQyxLQUNBamxDLEtBQUEwbkIsT0FBQTlpQixF
QUFBOGlCLEtBQ0ExbkIsS0FBQWdNLE9BQUFwSCxFQUFBb0gsTUFFQWhNLEtBQUFnbEMsS0FBQWhs
QyxLQUFBaWxDLEtBQUFqbEMsS0FBQTBuQixLQUFBMW5CLEtBQUFnTSxNQUFBLEVBRUFoTSxLQUFB
c3JCLEtBQ0F0ckIsS0FBQW1HLEtBQUEyK0IsR0FDQTlrQyxLQUFBa2xDLFFBQUEsRUFDQWxsQyxL
QUFBK1QsTUFBQS9ULEtBQUEwbkIsS0FDQTFuQixLQUFBbWxDLFFBQ0FubEMsS0FBQW9sQyxXQUNB
cGxDLEtBQUFxbEMsT0FBQSxHQUFBN0MsSUFDQXhpQyxLQUFBc2xDLFVBQUEsR0FBQTlDLElBQ0F4
aUMsS0FBQXFqQixXQUVBLEdBRUEsa0JBQUEwaEIsR0FDQS9rQyxLQUFBb0QsT0FBQTJoQyxHQUVB
L2tDLEtBQUFvRCxPQUFBN0MsRUFBQXdrQyxHQUNBL2tDLEtBQUFvRCxTQUNBcEQsS0FBQW9ELE9B
QUEsZUFTQXBELEtBQUFwRixNQUFBb0YsS0FBQTBuQixTQUNBMXNCLEdBQ0FnRixLQUFBcUQsTUFN
QStMLElBQUEzRSxVQUFBcEgsSUFBQSxXQUNBOUIsRUFBQXZCLEtBQ0EsSUFBQXBGLEdBQ0FrRyxF
QUFBZCxLQUFBYyxFQUNBLEtBQ0FsRyxFQUFBb0YsS0FBQW9ELE9BQUEzSCxLQUFBcUYsS0FDRyxN
QUFBckIsR0FDSCxJQUFBTyxLQUFBaWxDLEtBR0EsS0FBQXhsQyxFQUZBbUIsR0FBQW5CLEVBQUFx
QixFQUFBLHVCQUFBZCxLQUFBLGdCQUlHLFFBR0hBLEtBQUFnbEMsTUFDQWp6QixHQUFBblgsR0FF
QWlILElBQ0E3QixLQUFBdWxDLGNBRUEsTUFBQTNxQyxJQU1Bd1UsR0FBQTNFLFVBQUF3NUIsT0FB
QSxTQUFBaGhDLEdBQ0EsR0FBQWtELEdBQUFsRCxFQUFBa0QsRUFDQW5HLE1BQUFzbEMsVUFBQXYw
QixJQUFBNUssS0FDQW5HLEtBQUFzbEMsVUFBQWw4QixJQUFBakQsR0FDQW5HLEtBQUFvbEMsUUFB
QXhqQyxLQUFBcUIsR0FDQWpELEtBQUFxbEMsT0FBQXQwQixJQUFBNUssSUFDQWxELEVBQUE2Z0Ms
T0FBQTlqQyxRQVFBb1AsR0FBQTNFLFVBQUE4NkIsWUFBQSxXQUlBLElBSEEsR0FBQUMsR0FBQXhs
QyxLQUVBakQsRUFBQWlELEtBQUFtbEMsS0FBQW5vQyxPQUNBRCxLQUFBLENBQ0EsR0FBQWtHLEdB
QUF1aUMsRUFBQUwsS0FBQXBvQyxFQUNBeW9DLEdBQUFGLFVBQUF2MEIsSUFBQTlOLEVBQUFrRCxL
QUNBbEQsRUFBQStnQyxVQUFBd0IsR0FHQSxHQUFBQyxHQUFBemxDLEtBQUFxbEMsTUFDQXJsQyxN
QUFBcWxDLE9BQUFybEMsS0FBQXNsQyxVQUNBdGxDLEtBQUFzbEMsVUFBQUcsRUFDQXpsQyxLQUFB
c2xDLFVBQUFyekIsUUFDQXd6QixFQUFBemxDLEtBQUFtbEMsS0FDQW5sQyxLQUFBbWxDLEtBQUFu
bEMsS0FBQW9sQyxRQUNBcGxDLEtBQUFvbEMsUUFBQUssRUFDQXpsQyxLQUFBb2xDLFFBQUFwb0Ms
T0FBQSxHQU9Bb1MsR0FBQTNFLFVBQUFsRixPQUFBLFdBRUF2RixLQUFBMG5CLEtBQ0ExbkIsS0FB
QStULE9BQUEsRUFDRy9ULEtBQUFnTSxLQUNIaE0sS0FBQXFSLE1BRUFRLEdBQUE3UixPQVFBb1As
R0FBQTNFLFVBQUE0RyxJQUFBLFdBQ0EsR0FBQXJSLEtBQUFrbEMsT0FBQSxDQUNBLEdBQUF0cUMs
R0FBQW9GLEtBQUFxRCxLQUNBLElBQ0F6SSxJQUFBb0YsS0FBQXBGLE9BSUFTLEVBQUFULElBQ0Fv
RixLQUFBZ2xDLEtBQ0EsQ0FFQSxHQUFBaGtCLEdBQUFoaEIsS0FBQXBGLEtBRUEsSUFEQW9GLEtB
QUFwRixRQUNBb0YsS0FBQWlsQyxLQUNBLElBQ0FqbEMsS0FBQXNyQixHQUFBN3ZCLEtBQUF1RSxL
QUFBYyxHQUFBbEcsRUFBQW9tQixHQUNTLE1BQUF2aEIsR0FDVG1CLEVBQUFuQixFQUFBTyxLQUFB
YyxHQUFBLHlCQUFBZCxLQUFBLG9CQUdBQSxNQUFBc3JCLEdBQUE3dkIsS0FBQXVFLEtBQUFjLEdB
QUFsRyxFQUFBb21CLE1BVUE1UixHQUFBM0UsVUFBQXVKLFNBQUEsV0FDQWhVLEtBQUFwRixNQUFB
b0YsS0FBQXFELE1BQ0FyRCxLQUFBK1QsT0FBQSxHQU1BM0UsR0FBQTNFLFVBQUFoSCxPQUFBLFdB
SUEsSUFIQSxHQUFBK2hDLEdBQUF4bEMsS0FFQWpELEVBQUFpRCxLQUFBbWxDLEtBQUFub0MsT0FD
QUQsS0FDQXlvQyxFQUFBTCxLQUFBcG9DLEdBQUEwRyxVQU9BMkwsR0FBQTNFLFVBQUFpN0IsU0FB
QSxXQUNBLEdBQUFGLEdBQUF4bEMsSUFFQSxJQUFBQSxLQUFBa2xDLE9BQUEsQ0FJQWxsQyxLQUFB
YyxHQUFBNE4sbUJBQ0F4UixFQUFBOEMsS0FBQWMsR0FBQTRSLFVBQUExUyxLQUdBLEtBREEsR0FB
QWpELEdBQUFpRCxLQUFBbWxDLEtBQUFub0MsT0FDQUQsS0FDQXlvQyxFQUFBTCxLQUFBcG9DLEdB
QUFpbkMsVUFBQXdCLEVBRUF4bEMsTUFBQWtsQyxRQUFBLEdBU0EsSUFBQWx6QixJQUFBLEdBQUF3
d0IsSUErQkFod0IsSUFDQXBTLFlBQUEsRUFDQUUsY0FBQSxFQUNBK0MsSUFBQXRFLEVBQ0F3RSxJ
QUFBeEUsR0F3SUE2VSxJQUE4QjhULE1BQUEsR0E4UjlCM1EsSUFDQTR1QixLQUFBLFNBQ0EvOUIs
RUFDQWlILEVBQ0FzSCxFQUNBQyxHQUVBLElBQUF4TyxFQUFBb1YsbUJBQUFwVixFQUFBb1Ysa0JB
QUF2TyxhQUFBLEVBQ0E3RyxFQUFBb1Ysa0JBQUE5RyxHQUNBdE8sRUFDQTJtQixHQUNBcFksRUFD
QUMsSUFFQXd2QixPQUFBLzJCLEVBQUFqSCxFQUFBTSxRQUFBbE4sR0FBQTZULE9BQ0ssSUFBQWpI
LEVBQUFHLEtBQUE4OUIsVUFBQSxDQUVMLEdBQUFDLEdBQUFsK0IsQ0FDQW1QLElBQUFndkIsU0FB
QUQsT0FJQUMsU0FBQSxTQUFBMWxCLEVBQUF6WSxHQUNBLEdBQUFoRCxHQUFBZ0QsRUFBQVEsZ0JB
RUFrSCxJQURBMUgsRUFBQW9WLGtCQUFBcUQsRUFBQXJELGtCQUdBcFksRUFBQStCLFVBQ0EvQixF
QUFBbUksVUFDQW5GLEVBQ0FoRCxFQUFBb0QsV0FJQWcrQixPQUFBLFNBQUFwK0IsR0FDQSxHQUFB
TyxHQUFBUCxFQUFBTyxRQUNBNlUsRUFBQXBWLEVBQUFvVixpQkFDQUEsR0FBQXhPLGFBQ0F3TyxF
QUFBeE8sWUFBQSxFQUNBUSxHQUFBZ08sRUFBQSxZQUVBcFYsRUFBQUcsS0FBQTg5QixZQUNBMTlC
LEVBQUFxRyxXQU1Bb0QsR0FBQW9MLEdBRUExTSxHQUFBME0sR0FBQSxLQUtBaXBCLFFBQUEsU0FB
QXIrQixHQUNBLEdBQUFvVixHQUFBcFYsRUFBQW9WLGlCQUNBQSxHQUFBdk8sZUFDQTdHLEVBQUFH
LEtBQUE4OUIsVUFHQXIxQixHQUFBd00sR0FBQSxHQUZBQSxFQUFBQyxjQVFBckcsR0FBQWxjLE9B
QUFpRixLQUFBb1gsSUFpS0FVLEdBQUEsRUFDQUgsR0FBQSxFQWdkQTR1QixHQUFBLEdBRUEsU0FB
QWhyQixHQUNBQSxFQUFBelEsVUFBQXVRLE1BQUEsU0FBQXBXLEdBQ0EsR0FBQTlELEdBQUFkLElB
RUFjLEdBQUFxbEMsS0FBQUQsS0FXQXBsQyxFQUFBOEIsUUFBQSxFQUVBZ0MsS0FBQTBSLGFBSUEy
RCxHQUFBblosRUFBQThELEdBRUE5RCxFQUFBc0csU0FBQTVCLEVBQ0FvUSxHQUFBOVUsRUFBQW9a
LGFBQ0F0VixNQUNBOUQsR0FPQUEsRUFBQXVZLGFBQUF2WSxFQUdBQSxFQUFBc2xDLE1BQUF0bEMs
RUFDQWlOLEdBQUFqTixHQUNBOEwsR0FBQTlMLEdBQ0E4WSxHQUFBOVksR0FDQWtPLEdBQUFsTyxF
QUFBLGdCQUNBMFQsR0FBQTFULEdBQ0EyUixHQUFBM1IsR0FDQXVULEdBQUF2VCxHQUNBa08sR0FB
QWxPLEVBQUEsV0FTQUEsRUFBQXNHLFNBQUF3SCxJQUNBOU4sRUFBQThrQyxPQUFBOWtDLEVBQUFz
RyxTQUFBd0gsTUF3RkFtTSxJQXArQkEsU0FBQUcsR0FJQSxHQUFBbXJCLEtBQ0FBLEdBQUFoakMs
SUFBQSxXQUE2QixNQUFBckQsTUFBQWdULE1BQzdCLElBQUFzekIsS0FDQUEsR0FBQWpqQyxJQUFB
LFdBQThCLE1BQUFyRCxNQUFBcUgsUUFhOUIzTSxPQUFBQyxlQUFBdWdCLEVBQUF6USxVQUFBLFFB
QUE0N0IsR0FDQTNyQyxPQUFBQyxlQUFBdWdCLEVBQUF6USxVQUFBLFNBQUE2N0IsR0FFQXByQixF
QUFBelEsVUFBQTg3QixLQUFBaGpDLEVBQ0EyWCxFQUFBelEsVUFBQSs3QixRQUFBMWlDLEVBRUFv
WCxFQUFBelEsVUFBQTJKLE9BQUEsU0FDQTJ3QixFQUNBelosRUFDQTFtQixHQUVBLEdBQUE5RCxH
QUFBZCxJQUNBLElBQUF6RSxFQUFBK3ZCLEdBQ0EsTUFBQXBYLElBQUFwVCxFQUFBaWtDLEVBQUF6
WixFQUFBMW1CLEVBRUFBLFNBQ0FBLEVBQUFxZ0MsTUFBQSxDQUNBLElBQUE5ekIsR0FBQSxHQUFB
L0IsSUFBQXRPLEVBQUFpa0MsRUFBQXpaLEVBQUExbUIsRUFJQSxPQUhBQSxHQUFBNmhDLFdBQ0Fu
YixFQUFBN3ZCLEtBQUFxRixFQUFBcVEsRUFBQXZXLE9BRUEsV0FDQXVXLEVBQUF1MEIsY0EyN0JB
M3FCLElBbmtFQSxTQUFBRyxHQUNBLEdBQUF3ckIsR0FBQSxRQUNBeHJCLEdBQUF6USxVQUFBMkMs
SUFBQSxTQUFBNUQsRUFBQTVMLEdBQ0EsR0FBQTRuQyxHQUFBeGxDLEtBRUFjLEVBQUFkLElBQ0Es
SUFBQXZCLE1BQUFhLFFBQUFrSyxHQUNBLE9BQUF6TSxHQUFBLEVBQUFtQixFQUFBc0wsRUFBQXhN
LE9BQXVDRCxFQUFBbUIsRUFBT25CLElBQzlDeW9DLEVBQUFwNEIsSUFBQTVELEVBQUF6TSxHQUFB
YSxRQUdBa0QsRUFBQStMLFFBQUFyRCxLQUFBMUksRUFBQStMLFFBQUFyRCxRQUFBNUgsS0FBQWhF
LEdBR0E4b0MsRUFBQWhtQyxLQUFBOEksS0FDQTFJLEVBQUFnTSxlQUFBLEVBR0EsT0FBQWhNLElB
R0FvYSxFQUFBelEsVUFBQTBDLE1BQUEsU0FBQTNELEVBQUE1TCxHQUVBLFFBQUFzTCxLQUNBcEks
RUFBQXdNLEtBQUE5RCxFQUFBTixHQUNBdEwsRUFBQVEsTUFBQTBDLEVBQUEzQyxXQUhBLEdBQUEy
QyxHQUFBZCxJQU9BLE9BRkFrSixHQUFBdEwsS0FDQWtELEVBQUFzTSxJQUFBNUQsRUFBQU4sR0FD
QXBJLEdBR0FvYSxFQUFBelEsVUFBQTZDLEtBQUEsU0FBQTlELEVBQUE1TCxHQUNBLEdBQUE0bkMs
R0FBQXhsQyxLQUVBYyxFQUFBZCxJQUVBLEtBQUE3QixVQUFBbkIsT0FFQSxNQURBOEQsR0FBQStM
LFFBQUFuUyxPQUFBa0MsT0FBQSxNQUNBa0UsQ0FHQSxJQUFBckMsTUFBQWEsUUFBQWtLLEdBQUEs
Q0FDQSxPQUFBdXZCLEdBQUEsRUFBQTc2QixFQUFBc0wsRUFBQXhNLE9BQXlDKzdCLEVBQUE3NkIs
RUFBUzY2QixJQUNsRHlNLEVBQUFsNEIsS0FBQTlELEVBQUF1dkIsR0FBQW43QixFQUVBLE9BQUFr
RCxHQUdBLEdBQUE2bEMsR0FBQTdsQyxFQUFBK0wsUUFBQXJELEVBQ0EsS0FBQW05QixFQUNBLE1B
QUE3bEMsRUFFQSxRQUFBM0MsVUFBQW5CLE9BRUEsTUFEQThELEdBQUErTCxRQUFBckQsR0FBQSxL
QUNBMUksQ0FLQSxLQUZBLEdBQUF3cUIsR0FDQXZ1QixFQUFBNHBDLEVBQUEzcEMsT0FDQUQsS0FF
QSxJQURBdXVCLEVBQUFxYixFQUFBNXBDLE1BQ0FhLEdBQUEwdEIsRUFBQTF0QixPQUFBLENBQ0Er
b0MsRUFBQXBwQyxPQUFBUixFQUFBLEVBQ0EsT0FHQSxNQUFBK0QsSUFHQW9hLEVBQUF6USxVQUFB
a0csTUFBQSxTQUFBbkgsR0FDQSxHQUFBMUksR0FBQWQsS0FhQTJtQyxFQUFBN2xDLEVBQUErTCxR
QUFBckQsRUFDQSxJQUFBbTlCLEVBQUEsQ0FDQUEsSUFBQTNwQyxPQUFBLEVBQUFzQixFQUFBcW9D
LElBRUEsUUFEQXByQixHQUFBamQsRUFBQUgsVUFBQSxHQUNBcEIsRUFBQSxFQUFBbUIsRUFBQXlv
QyxFQUFBM3BDLE9BQXFDRCxFQUFBbUIsRUFBT25CLElBQzVDLElBQ0E0cEMsRUFBQTVwQyxHQUFB
cUIsTUFBQTBDLEVBQUF5YSxHQUNTLE1BQUE5YixHQUNUbUIsRUFBQW5CLEVBQUFxQixFQUFBLHNC
QUFBMEksRUFBQSxNQUlBLE1BQUExSSxLQW8rREFpYSxJQXY0REEsU0FBQUcsR0FDQUEsRUFBQXpR
LFVBQUF5RSxRQUFBLFNBQUF0SCxFQUFBaUgsR0FDQSxHQUFBL04sR0FBQWQsSUFDQWMsR0FBQTBO
LFlBQ0FRLEdBQUFsTyxFQUFBLGVBRUEsSUFBQThsQyxHQUFBOWxDLEVBQUFnTyxJQUNBKzNCLEVB
QUEvbEMsRUFBQWlQLE9BQ0ErMkIsRUFBQXZZLEVBQ0FBLElBQUF6dEIsRUFDQUEsRUFBQWlQLE9B
QUFuSSxFQUdBaS9CLEVBWUEvbEMsRUFBQWdPLElBQUFoTyxFQUFBaW1DLFVBQUFGLEVBQUFqL0Is
SUFWQTlHLEVBQUFnTyxJQUFBaE8sRUFBQWltQyxVQUNBam1DLEVBQUFnTyxJQUFBbEgsRUFBQWlI
LEdBQUEsRUFDQS9OLEVBQUFzRyxTQUFBb1AsV0FDQTFWLEVBQUFzRyxTQUFBcVAsU0FJQTNWLEVB
QUFzRyxTQUFBb1AsV0FBQTFWLEVBQUFzRyxTQUFBcVAsUUFBQSxNQUtBOFgsR0FBQXVZLEVBRUFG
LElBQ0FBLEVBQUFJLFFBQUEsTUFFQWxtQyxFQUFBZ08sTUFDQWhPLEVBQUFnTyxJQUFBazRCLFFB
QUFsbUMsR0FHQUEsRUFBQXVPLFFBQUF2TyxFQUFBbU4sU0FBQW5OLEVBQUF1TyxTQUFBdk8sRUFB
QW1OLFFBQUE4QixTQUNBalAsRUFBQW1OLFFBQUFhLElBQUFoTyxFQUFBZ08sTUFNQW9NLEVBQUF6
USxVQUFBeUIsYUFBQSxXQUNBLEdBQUFwTCxHQUFBZCxJQUNBYyxHQUFBdU4sVUFDQXZOLEVBQUF1
TixTQUFBOUksVUFJQTJWLEVBQUF6USxVQUFBd1MsU0FBQSxXQUNBLEdBQUFuYyxHQUFBZCxJQUNB
LEtBQUFjLEVBQUE0TixrQkFBQSxDQUdBTSxHQUFBbE8sRUFBQSxpQkFDQUEsRUFBQTROLG1CQUFB
LENBRUEsSUFBQWpKLEdBQUEzRSxFQUFBbU4sU0FDQXhJLEtBQUFpSixtQkFBQTVOLEVBQUFzRyxT
QUFBNEcsVUFDQTlRLEVBQUF1SSxFQUFBeUksVUFBQXBOLEdBR0FBLEVBQUF1TixVQUNBdk4sRUFB
QXVOLFNBQUFxM0IsVUFHQSxLQURBLEdBQUEzb0MsR0FBQStELEVBQUE0UixVQUFBMVYsT0FDQUQs
S0FDQStELEVBQUE0UixVQUFBM1YsR0FBQTJvQyxVQUlBNWtDLEdBQUFrUyxNQUFBMVEsUUFDQXhC
LEVBQUFrUyxNQUFBMVEsT0FBQU8sVUFHQS9CLEVBQUEyTixjQUFBLEVBRUEzTixFQUFBaW1DLFVB
QUFqbUMsRUFBQWlQLE9BQUEsTUFFQWYsR0FBQWxPLEVBQUEsYUFFQUEsRUFBQXdNLE9BRUF4TSxF
QUFBZ08sTUFDQWhPLEVBQUFnTyxJQUFBazRCLFFBQUEsU0FtekRBanNCLElBck9BLFNBQUFHLEdB
Q0FBLEVBQUF6USxVQUFBdzhCLFVBQUEsU0FBQXJwQyxHQUNBLE1BQUFrVSxJQUFBbFUsRUFBQW9D
LE9BR0FrYixFQUFBelEsVUFBQTBFLFFBQUEsV0FDQSxHQUFBck8sR0FBQWQsS0FDQTJmLEVBQUE3
ZSxFQUFBc0csU0FDQTJILEVBQUE0USxFQUFBNVEsT0FDQTRILEVBQUFnSixFQUFBaEosZ0JBQ0E3
RyxFQUFBNlAsRUFBQTdQLFlBRUEsSUFBQWhQLEVBQUEwTixXQUVBLE9BQUEvUSxLQUFBcUQsR0FB
QXNQLE9BQ0F0UCxFQUFBc1AsT0FBQTNTLEdBQUFpTCxHQUFBNUgsRUFBQXNQLE9BQUEzUyxHQUlB
cUQsR0FBQThPLGFBQUFFLEtBQUEvSCxLQUFBNEgsYUFBQUUsR0FFQThHLElBQUE3VixFQUFBc1ks
ZUFDQXRZLEVBQUFzWSxpQkFJQXRZLEVBQUF1TyxPQUFBUyxDQUVBLElBQUFsSSxFQUNBLEtBQ0FB
LEVBQUFtSCxFQUFBdFQsS0FBQXFGLEVBQUF1WSxhQUFBdlksRUFBQWlaLGdCQUNLLE1BQUF0YSxH
QUNMbUIsRUFBQW5CLEVBQUFxQixFQUFBLG1CQVNBOEcsRUFBQTlHLEVBQUFpUCxPQWdCQSxNQVpB
bkksYUFBQUYsTUFRQUUsRUFBQTJELE1BR0EzRCxFQUFBbkMsT0FBQXFLLEVBQ0FsSSxHQU1Bc1Qs
RUFBQXpRLFVBQUF5OEIsR0FBQTN0QixHQUNBMkIsRUFBQXpRLFVBQUEwOEIsR0FBQTdxQyxFQUNB
NGUsRUFBQXpRLFVBQUEyOEIsR0FBQWxyQyxFQUNBZ2YsRUFBQXpRLFVBQUE0OEIsR0FBQXZ2QixH
QUNBb0QsRUFBQXpRLFVBQUE2OEIsR0FBQXZ2QixHQUNBbUQsRUFBQXpRLFVBQUE4OEIsR0FBQXJv
QyxFQUNBZ2MsRUFBQXpRLFVBQUErOEIsR0FBQTNuQyxFQUNBcWIsRUFBQXpRLFVBQUFnOUIsR0FB
QXh1QixHQUNBaUMsRUFBQXpRLFVBQUFpOUIsR0FBQXR2QixHQUNBOEMsRUFBQXpRLFVBQUFrOUIs
R0FBQXJ2QixHQUNBNEMsRUFBQXpRLFVBQUFtOUIsR0FBQWx2QixHQUNBd0MsRUFBQXpRLFVBQUFv
OUIsR0FBQXBnQyxFQUNBeVQsRUFBQXpRLFVBQUFxOUIsR0FBQXY4QixHQUNBMlAsRUFBQXpRLFVB
QUFzOUIsR0FBQWo2QixHQUNBb04sRUFBQXpRLFVBQUF1OUIsR0FBQXR1QixJQXlKQXFCLEdBMEtB
LElBQUFrdEIsS0FBQTVyQyxPQUFBKzRCLE9BQUEzMkIsT0F1Q0F5cEMsSUFDQXBqQyxLQUFBLGFB
Q0FrSixVQUFBLEVBRUFuSixPQUNBc2pDLFFBQUFGLEdBQ0FHLFFBQUFILElBR0FJLFFBQUEsV0FD
QXJvQyxLQUFBbkMsTUFBQW5ELE9BQUFrQyxPQUFBLE9BR0EwckMsVUFBQSxXQUNBLEdBQUE5QyxH
QUFBeGxDLElBRUEsUUFBQXZDLEtBQUErbkMsR0FBQTNuQyxNQUNBa2YsR0FBQXlvQixFQUFBM25D
LE1BQUFKLEtBSUEwVixPQUNBZzFCLFFBQUEsU0FBQXZzQyxHQUNBK2dCLEdBQUEzYyxLQUFBbkMs
TUFBQW1DLEtBQUErUCxPQUFBLFNBQUFqTCxHQUEyRCxNQUFBMlgsSUFBQTdnQixFQUFBa0osTUFF
M0RzakMsUUFBQSxTQUFBeHNDLEdBQ0ErZ0IsR0FBQTNjLEtBQUFuQyxNQUFBbUMsS0FBQStQLE9B
QUEsU0FBQWpMLEdBQTJELE9BQUEyWCxHQUFBN2dCLEVBQUFrSixPQUkzRGlLLE9BQUEsV0FDQSxH
QUFBbkgsR0FBQStFLEdBQUEzTSxLQUFBb1EsT0FBQWpKLFNBQ0FpQixFQUFBUixLQUFBUSxnQkFD
QSxJQUFBQSxFQUFBLENBRUEsR0FBQXRELEdBQUEwWCxHQUFBcFUsRUFDQSxJQUFBdEQsSUFDQTlF
LEtBQUFtb0MsVUFBQTFyQixHQUFBemMsS0FBQW1vQyxRQUFBcmpDLElBQ0E5RSxLQUFBb29DLFNB
QUEzckIsR0FBQXpjLEtBQUFvb0MsUUFBQXRqQyxJQUVBLE1BQUE4QyxFQUVBLElBQUFuSyxHQUFB
LE1BQUFtSyxFQUFBbkssSUFHQTJLLEVBQUE5RyxLQUFBcVUsS0FBQXZOLEVBQUFOLElBQUEsS0FB
QU0sRUFBQSxRQUNBUixFQUFBbkssR0FDQXVDLE1BQUFuQyxNQUFBSixHQUNBbUssRUFBQW9WLGtC
QUFBaGQsS0FBQW5DLE1BQUFKLEdBQUF1ZixrQkFFQWhkLEtBQUFuQyxNQUFBSixHQUFBbUssRUFF
QUEsRUFBQUcsS0FBQTg5QixXQUFBLEVBRUEsTUFBQWorQixLQUlBMmdDLElBQ0FMLGVBS0EsU0FB
QWh0QixHQUVBLEdBQUFzdEIsS0FDQUEsR0FBQW5sQyxJQUFBLFdBQStCLE1BQUFyQyxLQVEvQnRH
LE9BQUFDLGVBQUF1Z0IsRUFBQSxTQUFBc3RCLEdBS0F0dEIsRUFBQXV0QixNQUNBNWpCLFFBQ0Fu
bUIsU0FDQThHLGVBQ0FrakMsZUFBQTVsQyxHQUdBb1ksRUFBQTNYLE1BQ0EyWCxFQUFBeXRCLE9B
QUE3a0MsRUFDQW9YLEVBQUFwSixZQUVBb0osRUFBQXRXLFFBQUFsSyxPQUFBa0MsT0FBQSxNQUNB
d2YsR0FBQXpILFFBQUEsU0FBQTNQLEdBQ0FrVyxFQUFBdFcsUUFBQUksRUFBQSxLQUFBdEssT0FB
QWtDLE9BQUEsUUFLQXNlLEVBQUF0VyxRQUFBOFEsTUFBQXdGLEVBRUF4YyxFQUFBd2MsRUFBQXRX
LFFBQUE0VixXQUFBK3RCLElBRUF0dEIsR0FBQUMsR0FDQVEsR0FBQVIsR0FDQVUsR0FBQVYsR0FD
QW9CLEdBQUFwQixJQUdBSCxJQUVBcmdCLE9BQUFDLGVBQUFvZ0IsR0FBQXRRLFVBQUEsYUFDQXBI
LElBQUFYLEtBR0FoSSxPQUFBQyxlQUFBb2dCLEdBQUF0USxVQUFBLGVBQ0FwSCxJQUFBLFdBRUEs
TUFBQXJELE1BQUFxUCxRQUFBclAsS0FBQXFQLE9BQUF1NUIsY0FJQTd0QixHQUFBOHRCLFFBQUEs
T0FNQSxJQWc5Q0FyaEMsSUFDQS9LLEdBQ0E2cEIsR0FDQUwsR0FDQUMsR0FDQUMsR0F3RUFZLEdB
eUxBbUIsR0E0T0E0Z0IsR0FsOERBakgsR0FBQXJsQyxFQUFBLGVBR0F1c0MsR0FBQXZzQyxFQUFB
LGdDQUNBc2MsR0FBQSxTQUFBaFIsRUFBQTlDLEVBQUFzeEIsR0FDQSxNQUNBLFVBQUFBLEdBQUF5
UyxHQUFBamhDLElBQUEsV0FBQTlDLEdBQ0EsYUFBQXN4QixHQUFBLFdBQUF4dUIsR0FDQSxZQUFB
d3VCLEdBQUEsVUFBQXh1QixHQUNBLFVBQUF3dUIsR0FBQSxVQUFBeHVCLEdBSUFxYSxHQUFBM2xC
LEVBQUEsd0NBRUE2bEIsR0FBQTdsQixFQUNBLHdZQVFBeWxCLEdBQUEsK0JBRUFGLEdBQUEsU0FB
QWpkLEdBQ0EsWUFBQUEsRUFBQWdmLE9BQUEsY0FBQWhmLEVBQUFrRSxNQUFBLE1BR0FrWixHQUFB
LFNBQUFwZCxHQUNBLE1BQUFpZCxJQUFBamQsS0FBQWtFLE1BQUEsRUFBQWxFLEVBQUE5SCxRQUFB
LElBR0FzbEIsR0FBQSxTQUFBMW1CLEdBQ0EsYUFBQUEsSUFBQSxJQUFBQSxHQXNGQWtqQixJQUNB
a3FCLElBQUEsNkJBQ0FDLEtBQUEsc0NBR0FDLEdBQUExc0MsRUFDQSxzbkJBZUFzaEIsR0FBQXRo
QixFQUNBLGtOQUdBLEdBR0ErNkIsR0FBQSxTQUFBenZCLEdBQStCLGNBQUFBLEdBRS9CNlAsR0FB
QSxTQUFBN1AsR0FDQSxNQUFBb2hDLElBQUFwaEMsSUFBQWdXLEdBQUFoVyxJQWNBa1csR0FBQXRq
QixPQUFBa0MsT0FBQSxNQXlHQXVzQyxHQUFBenVDLE9BQUFxbkMsUUFDQXpzQixjQUFBa0osR0FD
QUksbUJBQ0FHLGtCQUNBQyxpQkFDQUMsZ0JBQ0FHLGVBQ0FDLGVBQ0FsQyxjQUNBbUMsZUFDQWIs
V0FDQWMsa0JBQ0FaLGtCQUtBZ0IsSUFDQS9pQixPQUFBLFNBQUEwbkIsRUFBQTFjLEdBQ0E2WCxH
QUFBN1gsSUFFQXJDLE9BQUEsU0FBQThhLEVBQUF6WSxHQUNBeVksRUFBQXRZLEtBQUE0WCxNQUFB
L1gsRUFBQUcsS0FBQTRYLE1BQ0FGLEdBQUFZLEdBQUEsR0FDQVosR0FBQTdYLEtBR0FxK0IsUUFB
QSxTQUFBcitCLEdBQ0E2WCxHQUFBN1gsR0FBQSxLQTZDQTZZLEdBQUEsR0FBQS9ZLElBQUEsVUFF
QTBoQyxJQUFBLGlEQTRuQkE5akMsSUFDQTFJLE9BQUF3akIsR0FDQTdhLE9BQUE2YSxHQUNBNmxC
LFFBQUEsU0FBQXIrQixHQUNBd1ksR0FBQXhZLEVBQUE2WSxNQXNFQWEsR0FBQTVtQixPQUFBa0Ms
T0FBQSxNQXFDQXlzQyxJQUNBMXBCLEdBQ0FyYSxJQXVFQTZFLElBQ0F2TixPQUFBOGtCLEdBQ0Fu
YyxPQUFBbWMsSUFvQ0E0bkIsSUFDQTFzQyxPQUFBNGxCLEdBQ0FqZCxPQUFBaWQsSUFLQXVCLEdB
QUEsZ0JBc1dBNkQsR0FBQSxNQUNBTCxHQUFBLE1Bc09BekMsSUFDQWxvQixPQUFBNHJCLEdBQ0Fq
akIsT0FBQWlqQixJQXFGQXpQLElBQ0FuYyxPQUFBNnJCLEdBQ0FsakIsT0FBQWtqQixJQUtBaUIs
R0FBQS9yQixFQUFBLFNBQUE0ckMsR0FDQSxHQUFBenFDLE1BQ0EwcUMsRUFBQSxnQkFDQUMsRUFB
QSxPQU9BLE9BTkFGLEdBQUF6c0MsTUFBQTBzQyxHQUFBNzBCLFFBQUEsU0FBQXZYLEdBQ0EsR0FB
QUEsRUFBQSxDQUNBLEdBQUFxb0MsR0FBQXJvQyxFQUFBTixNQUFBMnNDLEVBQ0FoRSxHQUFBem9D
LE9BQUEsSUFBQThCLEVBQUEybUMsRUFBQSxHQUFBdGlCLFFBQUFzaUIsRUFBQSxHQUFBdGlCLFdB
R0Fya0IsSUF5REE0cUMsR0FBQSxNQUNBQyxHQUFBLGlCQUNBdmYsR0FBQSxTQUFBeGIsRUFBQTlK
LEVBQUFsSixHQUVBLEdBQUE4dEMsR0FBQWhwQyxLQUFBb0UsR0FDQThKLEVBQUEwYSxNQUFBc2dC
LFlBQUE5a0MsRUFBQWxKLE9BQ0csSUFBQSt0QyxHQUFBanBDLEtBQUE5RSxHQUNIZ1QsRUFBQTBh
LE1BQUFzZ0IsWUFBQTlrQyxFQUFBbEosRUFBQTh1QixRQUFBaWYsR0FBQSxxQkFDRyxDQUNILEdB
QUFFLEdBQUFDLEdBQUFobEMsRUFDQSxJQUFBckcsTUFBQWEsUUFBQTFELEdBSUEsT0FBQW1CLEdB
QUEsRUFBQXlLLEVBQUE1TCxFQUFBb0IsT0FBdUNELEVBQUF5SyxFQUFTekssSUFDaEQ2UixFQUFB
MGEsTUFBQXVnQixHQUFBanVDLEVBQUFtQixPQUdBNlIsR0FBQTBhLE1BQUF1Z0IsR0FBQWp1QyxJ
QUtBbXVDLElBQUEscUJBR0FELEdBQUFuc0MsRUFBQSxTQUFBaUosR0FHQSxHQUZBa2lDLE9BQUE3
cUIsU0FBQTNJLGNBQUEsT0FBQWdVLE1BRUEsWUFEQTFpQixFQUFBN0IsR0FBQTZCLEtBQ0FBLElB
QUFraUMsSUFDQSxNQUFBbGlDLEVBR0EsUUFEQW9qQyxHQUFBcGpDLEVBQUFrZCxPQUFBLEdBQUFx
ZCxjQUFBdjZCLEVBQUFvQyxNQUFBLEdBQ0FqTSxFQUFBLEVBQWlCQSxFQUFBZ3RDLEdBQUEvc0Ms
T0FBd0JELElBQUEsQ0FDekMsR0FBQStILEdBQUFpbEMsR0FBQWh0QyxHQUFBaXRDLENBQ0EsSUFB
QWxsQyxJQUFBZ2tDLElBQ0EsTUFBQWhrQyxNQWdEQXdrQixJQUNBMXNCLE9BQUFrdEIsR0FDQXZr
QixPQUFBdWtCLElBb0ZBZ0IsR0FBQW50QixFQUFBLFNBQUFtSCxHQUNBLE9BQ0Eyb0IsV0FBQTNv
QixFQUFBLFNBQ0E0b0IsYUFBQTVvQixFQUFBLFlBQ0E2b0IsaUJBQUE3b0IsRUFBQSxnQkFDQWdy
QixXQUFBaHJCLEVBQUEsU0FDQWtyQixhQUFBbHJCLEVBQUEsWUFDQWlyQixpQkFBQWpyQixFQUFB
LG1CQUlBbWxDLEdBQUEvb0MsS0FBQTRnQixHQUNBMkosR0FBQSxhQUNBaUIsR0FBQSxZQUdBUixH
QUFBLGFBQ0FSLEdBQUEsZ0JBQ0FhLEdBQUEsWUFDQVosR0FBQSxjQUNBc2UsVUFFQWp2QyxLQUFB
a2pCLE9BQUFnc0IscUJBQ0FsdkMsS0FBQWtqQixPQUFBaXNCLHdCQUVBamUsR0FBQSxtQkFDQVIs
R0FBQSwyQkFFQTF3QixLQUFBa2pCLE9BQUFrc0Isb0JBQ0FwdkMsS0FBQWtqQixPQUFBbXNCLHVC
QUVBOWQsR0FBQSxrQkFDQVosR0FBQSxzQkFLQSxJQUFBWCxJQUFBOXBCLElBQUFnZCxPQUFBb3NC
LHNCQUNBcHNCLE9BQUFvc0Isc0JBQUF4c0MsS0FBQW9nQixRQUNBelIsV0FzREFtZ0IsR0FBQSx5
QkFpWEFVLEdBQUFwc0IsSUFDQXRFLE9BQUEwekIsR0FDQWlhLFNBQUFqYSxHQUNBcHpCLE9BQUEs
U0FBQTBLLEVBQUErbkIsSUFFQSxJQUFBL25CLEVBQUFHLEtBQUF1bkIsS0FDQUksR0FBQTluQixF
QUFBK25CLEdBRUFBLFNBS0E2YSxJQUNBcmdDLEdBQ0FtL0IsR0FDQXhrQixHQUNBL0wsR0FDQXVR
LEdBQ0FnRSxJQU9BbEosR0FBQW9tQixHQUFBL2xDLE9BQUE0a0MsSUFFQW9CLEdBNXJFQSxTQUFB
QyxHQWdCQSxRQUFBQyxHQUFBemlDLEdBQ0EsVUFBQVIsSUFBQXloQyxFQUFBMXFCLFFBQUF2VyxH
QUFBakwsd0JBQTJEakMsR0FBQWtOLEdBRzNELFFBQUEwaUMsR0FBQUMsRUFBQTk5QixHQUNBLFFB
QUExRCxLQUNBLEtBQUFBLEVBQUEwRCxXQUNBKzlCLEVBQUFELEdBSUEsTUFEQXhoQyxHQUFBMEQs
WUFDQTFELEVBR0EsUUFBQXloQyxHQUFBbDhCLEdBQ0EsR0FBQW5KLEdBQUEwakMsRUFBQWhzQixX
QUFBdk8sRUFFQTNULEdBQUF3SyxJQUNBMGpDLEVBQUEvcEIsWUFBQTNaLEVBQUFtSixHQUtBLFFB
QUFtOEIsR0FBQW5qQyxFQUFBb2pDLEVBQUE3MEIsRUFBQUMsRUFBQTYwQixHQUVBLEdBREFyakMs
RUFBQThtQixjQUFBdWMsR0FDQXgxQixFQUFBN04sRUFBQW9qQyxFQUFBNzBCLEVBQUFDLEdBQUEs
Q0FJQSxHQUFBck8sR0FBQUgsRUFBQUcsS0FDQUMsRUFBQUosRUFBQUksU0FDQUYsRUFBQUYsRUFB
QUUsR0FDQTdNLEdBQUE2TSxJQW1CQUYsRUFBQU0sSUFBQU4sRUFBQVUsR0FDQTZnQyxFQUFBdnFC
LGdCQUFBaFgsRUFBQVUsR0FBQVIsR0FDQXFoQyxFQUFBN3pCLGNBQUF4TixFQUFBRixHQUNBc2pD
LEVBQUF0akMsR0FJQXVqQyxFQUFBdmpDLEVBQUFJLEVBQUFnakMsR0FDQS92QyxFQUFBOE0sSUFD
QXFqQyxFQUFBeGpDLEVBQUFvakMsR0FFQWhGLEVBQUE3dkIsRUFBQXZPLEVBQUFNLElBQUFrTyxJ
QU1LbGIsRUFBQTBNLEVBQUFZLFlBQ0xaLEVBQUFNLElBQUFpaEMsRUFBQW5xQixjQUFBcFgsRUFB
QUssTUFDQSs5QixFQUFBN3ZCLEVBQUF2TyxFQUFBTSxJQUFBa08sS0FFQXhPLEVBQUFNLElBQUFp
aEMsRUFBQXBxQixlQUFBblgsRUFBQUssTUFDQSs5QixFQUFBN3ZCLEVBQUF2TyxFQUFBTSxJQUFB
a08sS0FJQSxRQUFBWCxHQUFBN04sRUFBQW9qQyxFQUFBNzBCLEVBQUFDLEdBQ0EsR0FBQXJaLEdB
QUE2SyxFQUFBRyxJQUNBLElBQUE5TSxFQUFBOEIsR0FBQSxDQUNBLEdBQUFzdUMsR0FBQXB3QyxF
QUFBMk0sRUFBQW9WLG9CQUFBamdCLEVBQUE4b0MsU0FRQSxJQVBBNXFDLEVBQUE4QixJQUFBK00s
T0FBQTdPLEVBQUE4QixJQUFBNG9DLE9BQ0E1b0MsRUFBQTZLLEdBQUEsRUFBQXVPLEVBQUFDLEdB
TUFuYixFQUFBMk0sRUFBQW9WLG1CQUtBLE1BSkFzdUIsR0FBQTFqQyxFQUFBb2pDLEdBQ0E5dkMs
RUFBQW13QyxJQUNBRSxFQUFBM2pDLEVBQUFvakMsRUFBQTcwQixFQUFBQyxJQUVBLEdBS0EsUUFB
QWsxQixHQUFBMWpDLEVBQUFvakMsR0FDQS92QyxFQUFBMk0sRUFBQUcsS0FBQXlqQyxpQkFDQVIs
RUFBQXBwQyxLQUFBeEQsTUFBQTRzQyxFQUFBcGpDLEVBQUFHLEtBQUF5akMsZUFDQTVqQyxFQUFB
RyxLQUFBeWpDLGNBQUEsTUFFQTVqQyxFQUFBTSxJQUFBTixFQUFBb1Ysa0JBQUFsTyxJQUNBMjhC
LEVBQUE3akMsSUFDQXdqQyxFQUFBeGpDLEVBQUFvakMsR0FDQUUsRUFBQXRqQyxLQUlBNlgsR0FB
QTdYLEdBRUFvakMsRUFBQXBwQyxLQUFBZ0csSUFJQSxRQUFBMmpDLEdBQUEzakMsRUFBQW9qQyxF
QUFBNzBCLEVBQUFDLEdBT0EsSUFOQSxHQUFBclosR0FLQTJ1QyxFQUFBOWpDLEVBQ0E4akMsRUFB
QTF1QixtQkFFQSxHQURBMHVCLElBQUExdUIsa0JBQUFqTixPQUNBOVUsRUFBQThCLEVBQUEydUMs
RUFBQTNqQyxPQUFBOU0sRUFBQThCLElBQUF1d0IsWUFBQSxDQUNBLElBQUF2d0IsRUFBQSxFQUFt
QkEsRUFBQTRwQyxFQUFBNEQsU0FBQXZ0QyxTQUF5QkQsRUFDNUM0cEMsRUFBQTRELFNBQUF4dEMs
R0FBQTBqQixHQUFBaXJCLEVBRUFWLEdBQUFwcEMsS0FBQThwQyxFQUNBLE9BS0ExRixFQUFBN3ZC
LEVBQUF2TyxFQUFBTSxJQUFBa08sR0FHQSxRQUFBNHZCLEdBQUF2Z0MsRUFBQXlDLEVBQUF5akMs
R0FDQTF3QyxFQUFBd0ssS0FDQXhLLEVBQUEwd0MsR0FDQUEsRUFBQXh1QixhQUFBMVgsR0FDQTBq
QyxFQUFBbHFCLGFBQUF4WixFQUFBeUMsRUFBQXlqQyxHQUdBeEMsRUFBQTlwQixZQUFBNVosRUFB
QXlDLElBS0EsUUFBQWlqQyxHQUFBdmpDLEVBQUFJLEVBQUFnakMsR0FDQSxHQUFBdnNDLE1BQUFh
LFFBQUEwSSxHQUNBLE9BQUFqTCxHQUFBLEVBQXFCQSxFQUFBaUwsRUFBQWhMLFNBQXFCRCxFQUMx
Q2d1QyxFQUFBL2lDLEVBQUFqTCxHQUFBaXVDLEVBQUFwakMsRUFBQU0sSUFBQSxhQUVLOU0sR0FB
QXdNLEVBQUFLLE9BQ0xraEMsRUFBQTlwQixZQUFBelgsRUFBQU0sSUFBQWloQyxFQUFBcHFCLGVB
QUFuWCxFQUFBSyxPQUlBLFFBQUF3akMsR0FBQTdqQyxHQUNBLEtBQUFBLEVBQUFvVixtQkFDQXBW
LElBQUFvVixrQkFBQWpOLE1BRUEsT0FBQTlVLEdBQUEyTSxFQUFBRSxLQUdBLFFBQUFzakMsR0FB
QXhqQyxFQUFBb2pDLEdBQ0EsT0FBQWpTLEdBQUEsRUFBcUJBLEVBQUE0TixFQUFBL3BDLE9BQUFJ
LFNBQXlCKzdCLEVBQzlDNE4sRUFBQS9wQyxPQUFBbThCLEdBQUF0WSxHQUFBN1ksRUFFQTdLLEdB
QUE2SyxFQUFBRyxLQUFBK0IsS0FDQTdPLEVBQUE4QixLQUNBOUIsRUFBQThCLEVBQUFILFNBQTRC
RyxFQUFBSCxPQUFBNmpCLEdBQUE3WSxHQUM1QjNNLEVBQUE4QixFQUFBaXBDLFNBQTRCZ0YsRUFB
QXBwQyxLQUFBZ0csSUFPNUIsUUFBQXNqQyxHQUFBdGpDLEdBR0EsSUFGQSxHQUFBN0ssR0FDQTZ1
QyxFQUFBaGtDLEVBQ0Fna0MsR0FDQTN3QyxFQUFBOEIsRUFBQTZ1QyxFQUFBempDLFVBQUFsTixF
QUFBOEIsSUFBQXFLLFNBQUF5a0MsV0FDQTFDLEVBQUF4cUIsYUFBQS9XLEVBQUFNLElBQUFuTCxF
QUFBLElBRUE2dUMsSUFBQW5tQyxNQUdBeEssR0FBQThCLEVBQUF3eEIsS0FDQXh4QixJQUFBNkss
RUFBQU8sU0FDQWxOLEVBQUE4QixJQUFBcUssU0FBQXlrQyxXQUVBMUMsRUFBQXhxQixhQUFBL1cs
RUFBQU0sSUFBQW5MLEVBQUEsSUFJQSxRQUFBK3VDLEdBQUEzMUIsRUFBQUMsRUFBQXpOLEVBQUFv
akMsRUFBQTVyQixFQUFBNnFCLEdBQ0EsS0FBVWUsR0FBQTVyQixJQUFvQjRyQixFQUM5QmhCLEVB
QUFwaUMsRUFBQW9qQyxHQUFBZixFQUFBNzBCLEVBQUFDLEdBSUEsUUFBQTQxQixHQUFBcGtDLEdB
Q0EsR0FBQTdLLEdBQUEyVCxFQUNBM0ksRUFBQUgsRUFBQUcsSUFDQSxJQUFBOU0sRUFBQThNLEdB
RUEsSUFEQTlNLEVBQUE4QixFQUFBZ0wsRUFBQStCLE9BQUE3TyxFQUFBOEIsSUFBQWtwQyxVQUF5
RGxwQyxFQUFBNkssR0FDekQ3SyxFQUFBLEVBQWlCQSxFQUFBNHBDLEVBQUFWLFFBQUFqcEMsU0FB
d0JELEVBQU80cEMsRUFBQVYsUUFBQWxwQyxHQUFBNkssRUFFaEQsSUFBQTNNLEVBQUE4QixFQUFB
NkssRUFBQUksVUFDQSxJQUFBMEksRUFBQSxFQUFpQkEsRUFBQTlJLEVBQUFJLFNBQUFoTCxTQUEy
QjBULEVBQzVDczdCLEVBQUFwa0MsRUFBQUksU0FBQTBJLElBS0EsUUFBQXU3QixHQUFBOTFCLEVB
QUF4TixFQUFBb2pDLEVBQUE1ckIsR0FDQSxLQUFVNHJCLEdBQUE1ckIsSUFBb0I0ckIsRUFBQSxD
QUM5QixHQUFBRyxHQUFBdmpDLEVBQUFvakMsRUFDQTl3QyxHQUFBaXhDLEtBQ0FqeEMsRUFBQWl4
QyxFQUFBcGtDLE1BQ0Fxa0MsRUFBQUQsR0FDQUYsRUFBQUUsSUFFQXBCLEVBQUFvQixFQUFBaGtD
LE9BTUEsUUFBQWlrQyxHQUFBdmtDLEVBQUErbkIsR0FDQSxHQUFBMTBCLEVBQUEwMEIsSUFBQTEw
QixFQUFBMk0sRUFBQUcsTUFBQSxDQUNBLEdBQUFoTCxHQUNBZ1EsRUFBQTQ1QixFQUFBenBDLE9B
QUFGLE9BQUEsQ0FhQSxLQVpBL0IsRUFBQTAwQixHQUdBQSxFQUFBNWlCLGFBR0E0aUIsRUFBQWli
LEVBQUFoakMsRUFBQU0sSUFBQTZFLEdBR0E5UixFQUFBOEIsRUFBQTZLLEVBQUFvVixvQkFBQS9o
QixFQUFBOEIsSUFBQWdULFNBQUE5VSxFQUFBOEIsRUFBQWdMLE9BQ0Fva0MsRUFBQXB2QyxFQUFB
NHlCLEdBRUE1eUIsRUFBQSxFQUFpQkEsRUFBQTRwQyxFQUFBenBDLE9BQUFGLFNBQXVCRCxFQUN4
QzRwQyxFQUFBenBDLE9BQUFILEdBQUE2SyxFQUFBK25CLEVBRUExMEIsR0FBQThCLEVBQUE2SyxF
QUFBRyxLQUFBK0IsT0FBQTdPLEVBQUE4QixJQUFBRyxRQUNBSCxFQUFBNkssRUFBQStuQixHQUVB
QSxRQUdBbWIsR0FBQWxqQyxFQUFBTSxLQUlBLFFBQUFra0MsR0FBQWoyQixFQUFBazJCLEVBQUFD
LEVBQUF0QixFQUFBdUIsR0FnQkEsSUFmQSxHQVFBQyxHQUFBQyxFQUFBQyxFQUFBdDJCLEVBUkF1
MkIsRUFBQSxFQUNBQyxFQUFBLEVBQ0FDLEVBQUFSLEVBQUFydkMsT0FBQSxFQUNBOHZDLEVBQUFU
LEVBQUEsR0FDQVUsRUFBQVYsRUFBQVEsR0FDQUcsRUFBQVYsRUFBQXR2QyxPQUFBLEVBQ0Fpd0Ms
RUFBQVgsRUFBQSxHQUNBWSxFQUFBWixFQUFBVSxHQU1BRyxHQUFBWixFQUVBSSxHQUFBRSxHQUFB
RCxHQUFBSSxHQUNBbHlDLEVBQUFneUMsR0FDQUEsRUFBQVQsSUFBQU0sR0FDTzd4QyxFQUFBaXlD
LEdBQ1BBLEVBQUFWLElBQUFRLEdBQ08vc0IsR0FBQWd0QixFQUFBRyxJQUNQRyxFQUFBTixFQUFB
RyxFQUFBakMsR0FDQThCLEVBQUFULElBQUFNLEdBQ0FNLEVBQUFYLElBQUFNLElBQ085c0IsR0FB
QWl0QixFQUFBRyxJQUNQRSxFQUFBTCxFQUFBRyxFQUFBbEMsR0FDQStCLEVBQUFWLElBQUFRLEdB
Q0FLLEVBQUFaLElBQUFVLElBQ09sdEIsR0FBQWd0QixFQUFBSSxJQUNQRSxFQUFBTixFQUFBSSxF
QUFBbEMsR0FDQW1DLEdBQUFoRSxFQUFBbHFCLGFBQUE5SSxFQUFBMjJCLEVBQUE1a0MsSUFBQWlo
QyxFQUFBN3BCLFlBQUF5dEIsRUFBQTdrQyxNQUNBNGtDLEVBQUFULElBQUFNLEdBQ0FPLEVBQUFa
LElBQUFVLElBQ09sdEIsR0FBQWl0QixFQUFBRSxJQUNQRyxFQUFBTCxFQUFBRSxFQUFBakMsR0FD
QW1DLEdBQUFoRSxFQUFBbHFCLGFBQUE5SSxFQUFBNDJCLEVBQUE3a0MsSUFBQTRrQyxFQUFBNWtD
LEtBQ0E2a0MsRUFBQVYsSUFBQVEsR0FDQUksRUFBQVgsSUFBQU0sS0FFQTl4QyxFQUFBMHhDLEtB
QW1DQSxFQUFBdnNCLEdBQUFvc0IsRUFBQU0sRUFBQUUsSUFDbkNKLEVBQUF4eEMsRUFBQWd5QyxF
QUFBeHZDLEtBQUErdUMsRUFBQVMsRUFBQXh2QyxLQUFBLEtBQ0EzQyxFQUFBMnhDLElBQ0ExQixF
QUFBa0MsRUFBQWpDLEVBQUE3MEIsRUFBQTIyQixFQUFBNWtDLEtBQ0Era0MsRUFBQVgsSUFBQU0s
S0FFQUYsRUFBQUwsRUFBQUksR0FRQTNzQixHQUFBNHNCLEVBQUFPLElBQ0FHLEVBQUFWLEVBQUFP
LEVBQUFqQyxHQUNBcUIsRUFBQUksT0FBQXp4QyxHQUNBbXlDLEdBQUFoRSxFQUFBbHFCLGFBQUE5
SSxFQUFBdTJCLEVBQUF4a0MsSUFBQTRrQyxFQUFBNWtDLEtBQ0Era0MsRUFBQVgsSUFBQU0sS0FH
QTdCLEVBQUFrQyxFQUFBakMsRUFBQTcwQixFQUFBMjJCLEVBQUE1a0MsS0FDQStrQyxFQUFBWCxJ
QUFBTSxLQUtBRCxHQUFBRSxHQUNBejJCLEVBQUF0YixFQUFBd3hDLEVBQUFVLEVBQUEsU0FBQVYs
RUFBQVUsRUFBQSxHQUFBOWtDLElBQ0E0akMsRUFBQTMxQixFQUFBQyxFQUFBazJCLEVBQUFNLEVB
QUFJLEVBQUFoQyxJQUNLNEIsRUFBQUksR0FDTGYsRUFBQTkxQixFQUFBazJCLEVBQUFNLEVBQUFF
LEdBSUEsUUFBQU8sR0FBQS9zQixFQUFBelksRUFBQW9qQyxFQUFBdUIsR0FDQSxHQUFBbHNCLElB
QUF6WSxFQUFBLENBSUEsR0FBQU0sR0FBQU4sRUFBQU0sSUFBQW1ZLEVBQUFuWSxHQUVBLElBQUFo
TixFQUFBbWxCLEVBQUFMLG9CQU1BLFlBTEEva0IsRUFBQTJNLEVBQUFTLGFBQUF1RCxVQUNBeWhD
LEVBQUFodEIsRUFBQW5ZLElBQUFOLEVBQUFvakMsR0FFQXBqQyxFQUFBb1ksb0JBQUEsRUFTQSxJ
QUFBOWtCLEVBQUEwTSxFQUFBVyxXQUNBck4sRUFBQW1sQixFQUFBOVgsV0FDQVgsRUFBQW5LLE1B
QUE0aUIsRUFBQTVpQixNQUNBdkMsRUFBQTBNLEVBQUFhLFdBQUF2TixFQUFBME0sRUFBQTRSLFNB
R0EsWUFEQTVSLEVBQUFvVixrQkFBQXFELEVBQUFyRCxrQkFJQSxJQUFBamdCLEdBQ0FnTCxFQUFB
SCxFQUFBRyxJQUNBOU0sR0FBQThNLElBQUE5TSxFQUFBOEIsRUFBQWdMLEVBQUErQixPQUFBN08s
RUFBQThCLElBQUFncEMsV0FDQWhwQyxFQUFBc2pCLEVBQUF6WSxFQUdBLElBQUF5a0MsR0FBQWhz
QixFQUFBclksU0FDQWtrQyxFQUFBdGtDLEVBQUFJLFFBQ0EsSUFBQS9NLEVBQUE4TSxJQUFBMGpD
LEVBQUE3akMsR0FBQSxDQUNBLElBQUE3SyxFQUFBLEVBQWlCQSxFQUFBNHBDLEVBQUFwaEMsT0FB
QXZJLFNBQXVCRCxFQUFPNHBDLEVBQUFwaEMsT0FBQXhJLEdBQUFzakIsRUFBQXpZLEVBQy9DM00s
R0FBQThCLEVBQUFnTCxFQUFBK0IsT0FBQTdPLEVBQUE4QixJQUFBd0ksU0FBd0R4SSxFQUFBc2pC
LEVBQUF6WSxHQUV4RDlNLEVBQUE4TSxFQUFBSyxNQUNBaE4sRUFBQW94QyxJQUFBcHhDLEVBQUFp
eEMsR0FDQUcsSUFBQUgsR0FBMkJFLEVBQUFsa0MsRUFBQW1rQyxFQUFBSCxFQUFBbEIsRUFBQXVC
LEdBQ3BCdHhDLEVBQUFpeEMsSUFDUGp4QyxFQUFBb2xCLEVBQUFwWSxPQUFtQ2toQyxFQUFBNXBC
LGVBQUFyWCxFQUFBLElBQ25DNGpDLEVBQUE1akMsRUFBQSxLQUFBZ2tDLEVBQUEsRUFBQUEsRUFB
QWx2QyxPQUFBLEVBQUFndUMsSUFDTy92QyxFQUFBb3hDLEdBQ1BKLEVBQUEvakMsRUFBQW1rQyxF
QUFBLEVBQUFBLEVBQUFydkMsT0FBQSxHQUNPL0IsRUFBQW9sQixFQUFBcFksT0FDUGtoQyxFQUFB
NXBCLGVBQUFyWCxFQUFBLElBRUttWSxFQUFBcFksT0FBQUwsRUFBQUssTUFDTGtoQyxFQUFBNXBC
LGVBQUFyWCxFQUFBTixFQUFBSyxNQUVBaE4sRUFBQThNLElBQ0E5TSxFQUFBOEIsRUFBQWdMLEVB
QUErQixPQUFBN08sRUFBQThCLElBQUF1d0MsWUFBMkR2d0MsRUFBQXNqQixFQUFBelksSUFJM0Qs
UUFBQTJsQyxHQUFBM2xDLEVBQUFpSixFQUFBMjhCLEdBR0EsR0FBQXR5QyxFQUFBc3lDLElBQUF2
eUMsRUFBQTJNLEVBQUFuQyxRQUNBbUMsRUFBQW5DLE9BQUFzQyxLQUFBeWpDLGNBQUEzNkIsTUFF
QSxRQUFBOVQsR0FBQSxFQUFxQkEsRUFBQThULEVBQUE3VCxTQUFrQkQsRUFDdkM4VCxFQUFBOVQs
R0FBQWdMLEtBQUErQixLQUFBazhCLE9BQUFuMUIsRUFBQTlULElBV0EsUUFBQXN3QyxHQUFBbmxD
LEVBQUFOLEVBQUFvakMsR0FDQSxHQUFBOXZDLEVBQUEwTSxFQUFBWSxZQUFBdk4sRUFBQTJNLEVB
QUFTLGNBR0EsTUFGQVQsR0FBQU0sTUFDQU4sRUFBQW9ZLG9CQUFBLEdBQ0EsQ0FPQXBZLEdBQUFN
LEtBQ0EsSUFBQUosR0FBQUYsRUFBQUUsSUFDQUMsRUFBQUgsRUFBQUcsS0FDQUMsRUFBQUosRUFB
QUksUUFDQSxJQUFBL00sRUFBQThNLEtBQ0E5TSxFQUFBOEIsRUFBQWdMLEVBQUErQixPQUFBN08s
RUFBQThCLElBQUE0b0MsT0FBc0Q1b0MsRUFBQTZLLEdBQUEsR0FDdEQzTSxFQUFBOEIsRUFBQTZL
LEVBQUFvVixvQkFHQSxNQURBc3VCLEdBQUExakMsRUFBQW9qQyxJQUNBLENBR0EsSUFBQS92QyxF
QUFBNk0sR0FBQSxDQUNBLEdBQUE3TSxFQUFBK00sR0FFQSxHQUFBRSxFQUFBdWxDLGdCQUVTLENB
R1QsT0FGQUMsSUFBQSxFQUNBdHdCLEVBQUFsVixFQUFBeWxDLFdBQ0E1VSxFQUFBLEVBQTJCQSxF
QUFBL3dCLEVBQUFoTCxPQUF1Qis3QixJQUFBLENBQ2xELElBQUEzYixJQUFBaXdCLEVBQUFqd0Is
RUFBQXBWLEVBQUErd0IsR0FBQWlTLEdBQUEsQ0FDQTBDLEdBQUEsQ0FDQSxPQUVBdHdCLElBQUFr
QyxZQUlBLElBQUFvdUIsR0FBQXR3QixFQVNBLGFBdEJBK3RCLEdBQUF2akMsRUFBQUksRUFBQWdq
QyxFQTBCQSxJQUFBL3ZDLEVBQUE4TSxHQUNBLE9BQUF0SyxLQUFBc0ssR0FDQSxJQUFBNmxDLEVB
QUFud0MsR0FBQSxDQUNBMnRDLEVBQUF4akMsRUFBQW9qQyxFQUNBLFlBSUs5aUMsR0FBQUgsT0FB
QUgsRUFBQUssT0FDTEMsRUFBQUgsS0FBQUgsRUFBQUssS0FFQSxVQTllQSxHQUFBbEwsR0FBQTJU
LEVBQ0FpMkIsS0FFQXZpQixFQUFBc21CLEVBQUF0bUIsUUFDQStrQixFQUFBdUIsRUFBQXZCLE9B
RUEsS0FBQXBzQyxFQUFBLEVBQWFBLEVBQUFxc0MsR0FBQXBzQyxTQUFrQkQsRUFFL0IsSUFEQTRw
QyxFQUFBeUMsR0FBQXJzQyxPQUNBMlQsRUFBQSxFQUFlQSxFQUFBMFQsRUFBQXBuQixTQUFvQjBU
LEVBQ25DelYsRUFBQW1wQixFQUFBMVQsR0FBQTA0QixHQUFBcnNDLE1BQ0E0cEMsRUFBQXlDLEdB
QUFyc0MsSUFBQTZFLEtBQUF3aUIsRUFBQTFULEdBQUEwNEIsR0FBQXJzQyxJQTJCQSxJQXNZQTZ3
QyxHQUFBcHhDLEVBQUEsZ0RBaUZBLGlCQUFBNmpCLEVBQUF6WSxFQUFBaUgsRUFBQTA5QixFQUFB
cDJCLEVBQUFDLEdBQ0EsR0FBQXRiLEVBQUE4TSxHQUVBLFlBREEzTSxFQUFBb2xCLElBQTRCMnJC
LEVBQUEzckIsR0FJNUIsSUFBQXd0QixJQUFBLEVBQ0E3QyxJQUVBLElBQUFsd0MsRUFBQXVsQixH
QUVBd3RCLEdBQUEsRUFDQTlDLEVBQUFuakMsRUFBQW9qQyxFQUFBNzBCLEVBQUFDLE9BQ0ssQ0FD
TCxHQUFBMDNCLEdBQUE3eUMsRUFBQW9sQixFQUFBbU4sU0FDQSxLQUFBc2dCLEdBQUFodUIsR0FB
QU8sRUFBQXpZLEdBRUF3bEMsRUFBQS9zQixFQUFBelksRUFBQW9qQyxFQUFBdUIsT0FDTyxDQUNQ
LEdBQUF1QixFQUFBLENBUUEsR0FKQSxJQUFBenRCLEVBQUFtTixVQUFBbk4sRUFBQTB0QixhQUFB
MU0sTUFDQWhoQixFQUFBK0IsZ0JBQUFpZixJQUNBeHlCLEdBQUEsR0FFQTNULEVBQUEyVCxJQUNB
dytCLEVBQUFodEIsRUFBQXpZLEVBQUFvakMsR0FFQSxNQURBdUMsR0FBQTNsQyxFQUFBb2pDLEdB
QUEsR0FDQTNxQixDQWFBQSxHQUFBc3FCLEVBQUF0cUIsR0FHQSxHQUFBMnRCLEdBQUEzdEIsRUFB
QW5ZLElBQ0ErbEMsRUFBQTlFLEVBQUFoc0IsV0FBQTZ3QixFQVdBLElBVkFqRCxFQUNBbmpDLEVB
Q0FvakMsRUFJQWdELEVBQUE1Z0IsU0FBQSxLQUFBNmdCLEVBQ0E5RSxFQUFBN3BCLFlBQUEwdUIs
SUFHQS95QyxFQUFBMk0sRUFBQW5DLFFBQUEsQ0FJQSxJQURBLEdBQUFtbUMsR0FBQWhrQyxFQUFB
bkMsT0FDQW1tQyxHQUNBQSxFQUFBMWpDLElBQUFOLEVBQUFNLElBQ0EwakMsSUFBQW5tQyxNQUVB
LElBQUFnbUMsRUFBQTdqQyxHQUNBLE9BQUE3SyxHQUFBLEVBQTJCQSxFQUFBNHBDLEVBQUEvcEMs
T0FBQUksU0FBdUJELEVBQ2xENHBDLEVBQUEvcEMsT0FBQUcsR0FBQTBqQixHQUFBN1ksRUFBQW5D
LFFBS0F4SyxFQUFBZ3pDLEdBQ0FoQyxFQUFBZ0MsR0FBQTV0QixHQUFBLEtBQ1NwbEIsRUFBQW9s
QixFQUFBdlksTUFDVGtrQyxFQUFBM3JCLElBTUEsTUFEQWt0QixHQUFBM2xDLEVBQUFvakMsRUFB
QTZDLEdBQ0FqbUMsRUFBQU0sT0E2bURpQ2loQyxXQUFBL2tCLGFBT2pDOHBCLEdBQUExeEMsRUFB
QSw0Q0FHQXNsQixLQUVBN0QsU0FBQW9LLGlCQUFBLDZCQUNBLEdBQUF6WixHQUFBcVAsU0FBQWtM
LGFBQ0F2YSxNQUFBdS9CLFFBQ0FwZCxHQUFBbmlCLEVBQUEsVUFLQSxJQUFBdy9CLEtBQ0FqdEIs
U0FBQSxTQUFBdlMsRUFBQTRoQixFQUFBNW9CLEdBQ0EsY0FBQUEsRUFBQUUsSUFBQSxDQUNBLEdB
QUF3akIsR0FBQSxXQUNBaUYsR0FBQTNoQixFQUFBNGhCLEVBQUE1b0IsRUFBQU8sU0FFQW1qQixN
QUVBeEQsSUFBQXNhLEtBQ0EzMUIsV0FBQTZlLEVBQUEsR0FFQTFjLEVBQUF5L0IsYUFBQTF4QyxJ
QUFBbEIsS0FBQW1ULEVBQUFoSyxRQUFBK3JCLFNBQ0ssYUFBQS9vQixFQUFBRSxLQUFBb21DLEdB
QUF0L0IsRUFBQTVKLFNBQ0w0SixFQUFBd2EsWUFBQW9ILEVBQUFuUCxVQUNBbVAsRUFBQW5QLFVB
QUFxRyxPQUtBOVksRUFBQXlaLGlCQUFBLFNBQUF5SSxJQUNBdVIsS0FDQXp6QixFQUFBeVosaUJB
QUEsbUJBQUF3SSxJQUNBamlCLEVBQUF5WixpQkFBQSxpQkFBQXlJLEtBR0FoUCxLQUNBbFQsRUFB
QXUvQixRQUFBLE1BS0FqdEIsaUJBQUEsU0FBQXRTLEVBQUE0aEIsRUFBQTVvQixHQUNBLGNBQUFB
LEVBQUFFLElBQUEsQ0FDQXlvQixHQUFBM2hCLEVBQUE0aEIsRUFBQTVvQixFQUFBTyxRQUtBLElB
QUFtbUMsR0FBQTEvQixFQUFBeS9CLFdBQ0F6L0IsRUFBQXkvQixhQUFBMXhDLElBQUFsQixLQUFB
bVQsRUFBQWhLLFFBQUErckIsS0FDQXFQLEtBQUEsU0FBQXVPLEVBQUF4eEMsR0FBMkMsT0FBQW1D
LEVBQUFxdkMsRUFBQUQsRUFBQXZ4QyxPQUMzQ2cwQixHQUFBbmlCLEVBQUEsYUF1RUEwZ0IsSUFD
QXh4QixLQUFBLFNBQUE4USxFQUFBK1EsRUFBQS9YLEdBQ0EsR0FBQWhOLEdBQUEra0IsRUFBQS9r
QixLQUVBZ04sR0FBQXVwQixHQUFBdnBCLEVBQ0EsSUFBQTRtQyxHQUFBNW1DLEVBQUFHLE1BQUFI
LEVBQUFHLEtBQUF1bEIsV0FDQW1oQixFQUFBNy9CLEVBQUE4L0IsbUJBQ0EsU0FBQTkvQixFQUFB
MGEsTUFBQXFsQixRQUFBLEdBQUEvL0IsRUFBQTBhLE1BQUFxbEIsT0FDQS96QyxJQUFBNHpDLEdB
Q0E1bUMsRUFBQUcsS0FBQXVuQixNQUFBLEVBQ0FwQyxHQUFBdGxCLEVBQUEsV0FDQWdILEVBQUEw
YSxNQUFBcWxCLFFBQUFGLEtBR0E3L0IsRUFBQTBhLE1BQUFxbEIsUUFBQS96QyxFQUFBNnpDLEVB
QUEsUUFJQWxwQyxPQUFBLFNBQUFxSixFQUFBK1EsRUFBQS9YLEdBQ0EsR0FBQWhOLEdBQUEra0Is
RUFBQS9rQixLQUlBQSxLQUhBK2tCLEVBQUFxQixXQUlBcFosRUFBQXVwQixHQUFBdnBCLEdBQ0FB
LEVBQUFHLE1BQUFILEVBQUFHLEtBQUF1bEIsWUFFQTFsQixFQUFBRyxLQUFBdW5CLE1BQUEsRUFD
QTEwQixFQUNBc3lCLEdBQUF0bEIsRUFBQSxXQUNBZ0gsRUFBQTBhLE1BQUFxbEIsUUFBQS8vQixF
QUFBOC9CLHFCQUdBaGYsR0FBQTluQixFQUFBLFdBQ0FnSCxFQUFBMGEsTUFBQXFsQixRQUFBLFVB
SUEvL0IsRUFBQTBhLE1BQUFxbEIsUUFBQS96QyxFQUFBZ1UsRUFBQTgvQixtQkFBQSxTQUlBRSxP
QUFBLFNBQ0FoZ0MsRUFDQTRoQixFQUNBNW9CLEVBQ0F5WSxFQUNBSyxHQUVBQSxJQUNBOVIsRUFB
QTBhLE1BQUFxbEIsUUFBQS8vQixFQUFBOC9CLHNCQUtBRyxJQUNBaDVCLE1BQUF1NEIsR0FDQTll
LFNBUUF3ZixJQUNBaHFDLEtBQUF6SSxPQUNBOHhCLE9BQUFwbkIsUUFDQThqQixJQUFBOWpCLFFB
Q0Fnb0MsS0FBQTF5QyxPQUNBMkksS0FBQTNJLE9BQ0FveEIsV0FBQXB4QixPQUNBeXpCLFdBQUF6
ekIsT0FDQXF4QixhQUFBcnhCLE9BQ0EyekIsYUFBQTN6QixPQUNBc3hCLGlCQUFBdHhCLE9BQ0Ew
ekIsaUJBQUExekIsT0FDQXV4QixZQUFBdnhCLE9BQ0F5eEIsa0JBQUF6eEIsT0FDQXd4QixjQUFB
eHhCLE9BQ0FpeUIsVUFBQXJCLE9BQUE1d0IsT0FBQTNCLFNBc0RBczBDLElBQ0FscUMsS0FBQSxh
QUNBRCxNQUFBaXFDLEdBQ0E5Z0MsVUFBQSxFQUVBZSxPQUFBLFNBQUFxRyxHQUNBLEdBQUFvd0Is
R0FBQXhsQyxLQUVBZ0ksRUFBQWhJLEtBQUFvSCxTQUFBc0ksZUFDQSxJQUFBMUgsSUFLQUEsSUFB
QTZVLE9BQUEsU0FBQTVkLEdBQTZDLE1BQUFBLEdBQUE2SSxLQUFBa1ksR0FBQS9nQixLQUU3QytJ
LEVBQUFoTCxRQUFBLENBYUEsR0FBQSt4QyxHQUFBL3VDLEtBQUErdUMsS0FZQXRkLEVBQUF6cEIs
RUFBQSxFQUlBLElBQUEwcEIsR0FBQTF4QixLQUFBcVAsUUFDQSxNQUFBb2lCLEVBS0EsSUFBQS9y
QixHQUFBMHJCLEdBQUFLLEVBRUEsS0FBQS9yQixFQUNBLE1BQUErckIsRUFHQSxJQUFBenhCLEtB
QUFpdkMsU0FDQSxNQUFBemQsSUFBQXBjLEVBQUFxYyxFQU1BLElBQUF0ckIsR0FBQSxnQkFBQW5H
LEtBQUEsUUFDQTBGLEdBQUFqSSxJQUFBLE1BQUFpSSxFQUFBakksSUFDQWlJLEVBQUE4QyxVQUNB
ckMsRUFBQSxVQUNBQSxFQUFBVCxFQUFBb0MsSUFDQTFNLEVBQUFzSyxFQUFBakksS0FDQSxJQUFB
cEIsT0FBQXFKLEVBQUFqSSxLQUFBSCxRQUFBNkksR0FBQVQsRUFBQWpJLElBQUEwSSxFQUFBVCxF
QUFBakksSUFDQWlJLEVBQUFqSSxHQUVBLElBQUFzSyxJQUFBckMsRUFBQXFDLE9BQUFyQyxFQUFB
cUMsVUFBOEN1bEIsV0FBQWdFLEdBQUF0eEIsTUFDOUNrdkMsRUFBQWx2QyxLQUFBK1AsT0FDQTZo
QixFQUFBUixHQUFBOGQsRUFRQSxJQUpBeHBDLEVBQUFxQyxLQUFBekMsWUFBQUksRUFBQXFDLEtB
QUF6QyxXQUFBMDZCLEtBQUEsU0FBQTNxQixHQUEwRSxlQUFBQSxFQUFBdlEsU0FDMUVZLEVBQUFx
QyxLQUFBdW5CLE1BQUEsR0FJQXNDLEdBQ0FBLEVBQUE3cEIsT0FDQTRwQixHQUFBanNCLEVBQUFr
c0IsS0FDQTVSLEdBQUE0UixHQUNBLENBR0EsR0FBQW5QLEdBQUFtUCxNQUFBN3BCLEtBQUF1bEIs
V0FBQTV1QixLQUFxRXFKLEdBRXJFLGVBQUFnbkMsRUFPQSxNQUxBL3VDLE1BQUFpdkMsVUFBQSxF
QUNBcmxDLEdBQUE2WSxFQUFBLHdCQUNBK2lCLEVBQUF5SixVQUFBLEVBQ0F6SixFQUFBdDVCLGlC
QUVBc2xCLEdBQUFwYyxFQUFBcWMsRUFDTyxlQUFBc2QsRUFBQSxDQUNQLEdBQUEvdUIsR0FBQXRh
LEdBQ0EsTUFBQXdwQyxFQUVBLElBQUFDLEdBQ0F2ZixFQUFBLFdBQXdDdWYsSUFDeEN2bEMsSUFB
QTdCLEVBQUEsYUFBQTZuQixHQUNBaG1CLEdBQUE3QixFQUFBLGlCQUFBNm5CLEdBQ0FobUIsR0FB
QTZZLEVBQUEsc0JBQUFpTixHQUFnRXlmLEVBQUF6ZixLQUloRSxNQUFBK0IsTUFpQkE1c0IsR0FB
QW5HLEdBQ0FvSixJQUFBekwsT0FDQSt5QyxVQUFBL3lDLFFBQ0N5eUMsVUFFRGpxQyxJQUFBa3FD
LElBRUEsSUFBQU0sS0FDQXhxQyxTQUVBa0ssT0FBQSxTQUFBcUcsR0FRQSxPQVBBdE4sR0FBQTlI
LEtBQUE4SCxLQUFBOUgsS0FBQXFQLE9BQUF0SCxLQUFBRCxLQUFBLE9BQ0FuTCxFQUFBakMsT0FB
QWtDLE9BQUEsTUFDQTB5QyxFQUFBdHZDLEtBQUFzdkMsYUFBQXR2QyxLQUFBZ0ksU0FDQXVuQyxF
QUFBdnZDLEtBQUFvUSxPQUFBakosWUFDQWEsRUFBQWhJLEtBQUFnSSxZQUNBd25DLEVBQUFsZSxH
QUFBdHhCLE1BRUFqRCxFQUFBLEVBQW1CQSxFQUFBd3lDLEVBQUF2eUMsT0FBd0JELElBQUEsQ0FD
M0MsR0FBQWtDLEdBQUFzd0MsRUFBQXh5QyxFQUNBLElBQUFrQyxFQUFBNkksSUFDQSxTQUFBN0ks
RUFBQXhCLEtBQUEsSUFBQXBCLE9BQUE0QyxFQUFBeEIsS0FBQUgsUUFBQSxXQUNBMEssRUFBQXBH
LEtBQUEzQyxHQUNBdEMsRUFBQXNDLEVBQUF4QixLQUFBd0IsR0FDV0EsRUFBQThJLE9BQUE5SSxF
QUFBOEksVUFBdUJ1bEIsV0FBQWtpQixRQVNsQyxHQUFBRixFQUFBLENBR0EsT0FGQUcsTUFDQUMs
S0FDQTNXLEVBQUEsRUFBdUJBLEVBQUF1VyxFQUFBdHlDLE9BQTJCKzdCLElBQUEsQ0FDbEQsR0FB
QTRXLEdBQUFMLEVBQUF2VyxFQUNBNFcsR0FBQTVuQyxLQUFBdWxCLFdBQUFraUIsRUFDQUcsRUFB
QTVuQyxLQUFBcXFCLElBQUF1ZCxFQUFBem5DLElBQUErcEIsd0JBQ0F0MUIsRUFBQWd6QyxFQUFB
bHlDLEtBQ0FneUMsRUFBQTd0QyxLQUFBK3RDLEdBRUFELEVBQUE5dEMsS0FBQSt0QyxHQUdBM3ZD
LEtBQUF5dkMsS0FBQXI2QixFQUFBdE4sRUFBQSxLQUFBMm5DLEdBQ0F6dkMsS0FBQTB2QyxVQUdB
LE1BQUF0NkIsR0FBQXROLEVBQUEsS0FBQUUsSUFHQTRuQyxhQUFBLFdBRUE1dkMsS0FBQSttQyxV
QUNBL21DLEtBQUErUCxPQUNBL1AsS0FBQXl2QyxNQUNBLEdBQ0EsR0FFQXp2QyxLQUFBK1AsT0FB
QS9QLEtBQUF5dkMsTUFHQUksUUFBQSxXQUNBLEdBQUE3bkMsR0FBQWhJLEtBQUFzdkMsYUFDQUYs
RUFBQXB2QyxLQUFBb3ZDLFlBQUFwdkMsS0FBQThFLE1BQUEsWUFDQSxJQUFBa0QsRUFBQWhMLFFB
QUFnRCxLQUFBOHZDLFFBQUE5bkMsRUFBQSxHQUFBRSxJQUFBa25DLEdBQUEsQ0FNQXBuQyxFQUFB
Mk0sUUFBQWtkLElBQ0E3cEIsRUFBQTJNLFFBQUFvZCxJQUNBL3BCLEVBQUEyTSxRQUFBdWQsR0FH
QSxJQUFBNmQsR0FBQTl4QixTQUFBOHhCLElBQ0FBLEdBQUFDLFlBRUFob0MsR0FBQTJNLFFBQUEs
U0FBQTFWLEdBQ0EsR0FBQUEsRUFBQThJLEtBQUEwcUIsTUFBQSxDQUNBLEdBQUE3akIsR0FBQTNQ
LEVBQUFpSixJQUNBOGtCLEVBQUFwZSxFQUFBMGEsS0FDQTJCLElBQUFyYyxFQUFBd2dDLEdBQ0Fw
aUIsRUFBQTBGLFVBQUExRixFQUFBMkYsZ0JBQUEzRixFQUFBNEYsbUJBQUEsR0FDQWhrQixFQUFB
eVosaUJBQUFxRCxHQUFBOWMsRUFBQWtqQixRQUFBLFFBQUF4RyxHQUFBN3JCLEdBQ0FBLElBQUEs
YUFBQWlCLEtBQUFqQixFQUFBd3dDLGdCQUNBcmhDLEVBQUEyWixvQkFBQW1ELEdBQUFKLEdBQ0Ex
YyxFQUFBa2pCLFFBQUEsS0FDQTNHLEdBQUF2YyxFQUFBd2dDLFdBT0F2OEIsU0FDQWk5QixRQUFB
LFNBQUFsaEMsRUFBQXdnQyxHQUVBLElBQUFuRixHQUNBLFFBR0EsSUFBQWpxQyxLQUFBa3dDLFNB
Q0EsTUFBQWx3QyxNQUFBa3dDLFFBT0EsSUFBQUMsR0FBQXZoQyxFQUFBb3lCLFdBQ0FweUIsR0FB
QWdVLG9CQUNBaFUsRUFBQWdVLG1CQUFBak8sUUFBQSxTQUFBK04sR0FBc0Q4SCxHQUFBMmxCLEVB
QUF6dEIsS0FFdEQySCxHQUFBOGxCLEVBQUFmLEdBQ0FlLEVBQUE3bUIsTUFBQXFsQixRQUFBLE9B
Q0EzdUMsS0FBQThPLElBQUF1USxZQUFBOHdCLEVBQ0EsSUFBQXB2QyxHQUFBd3FCLEdBQUE0a0Is
RUFFQSxPQURBbndDLE1BQUE4TyxJQUFBc1EsWUFBQSt3QixHQUNBbndDLEtBQUFrd0MsU0FBQW52
QyxFQUFBNHJCLGdCQWlDQXlqQixJQUNBcEIsY0FDQUssbUJBTUF0MEIsSUFBQS9aLE9BQUE4WCxl
QUNBaUMsR0FBQS9aLE9BQUEyVyxpQkFDQW9ELEdBQUEvWixPQUFBNmdDLGtCQUNBOW1CLEdBQUEv
WixPQUFBMFcsbUJBQ0FxRCxHQUFBL1osT0FBQStjLG9CQUdBcmYsRUFBQXFjLEdBQUFuVyxRQUFB
VSxXQUFBdXBDLElBQ0Fud0MsRUFBQXFjLEdBQUFuVyxRQUFBNFYsV0FBQTQxQixJQUdBcjFCLEdB
QUF0USxVQUFBczhCLFVBQUE3bEMsR0FBQXVwQyxHQUFBMXJDLEVBR0FnYyxHQUFBdFEsVUFBQW03
QixPQUFBLFNBQ0FoM0IsRUFDQUMsR0FHQSxNQURBRCxNQUFBMU4sR0FBQW1kLEdBQUF6UCxPQUFB
NVQsR0FDQTJULEdBQUEzTyxLQUFBNE8sRUFBQUMsSUFLQXBDLFdBQUEsV0FDQXpMLEdBQUEwUSxV
QUNBQSxJQUNBQSxHQUFBQyxLQUFBLE9BQUFvSixLQWtCQyxFQWFELElBa01BczFCLElBbE1BeGMs
S0FBQTN5QixJQVJBLFNBQUFvdkMsRUFBQUMsR0FDQSxHQUFBQyxHQUFBdnlCLFNBQUEzSSxjQUFB
LE1BRUEsT0FEQWs3QixHQUFBdlAsVUFBQSxXQUFBcVAsRUFBQSxNQUNBRSxFQUFBdlAsVUFBQTNq
QyxRQUFBaXpDLEdBQUEsR0FLQSxjQUlBdGQsR0FBQSx3QkFDQXdkLEdBQUEseUJBRUF6ZCxHQUFB
cjFCLEVBQUEsU0FBQW0xQixHQUNBLEdBQUE0ZCxHQUFBNWQsRUFBQSxHQUFBcEksUUFBQStsQixH
QUFBLFFBQ0FFLEVBQUE3ZCxFQUFBLEdBQUFwSSxRQUFBK2xCLEdBQUEsT0FDQSxXQUFBcmIsUUFB
QXNiLEVBQUEsZ0JBQUFDLEVBQUEsT0FtRUFDLElBQ0FuVixZQUFBLGVBQ0FwSSxpQkFDQUUsWUF5
Q0FzZCxJQUNBcFYsWUFBQSxlQUNBcEksY0FBQUcsR0FDQUQsUUFBQUcsSUFHQW9kLElBQ0FGLEdB
Q0FDLElBbUJBRSxJQUNBbDdCLFNBQ0E1TixRQUNBMHJCLFNBS0FnQixHQUFBbjRCLEVBQ0EsNkZB
TUFzNEIsR0FBQXQ0QixFQUNBLDJEQUtBazZCLEdBQUFsNkIsRUFDQSxtU0FTQXcwQyxJQUNBdmMs
WUFBQSxFQUNBclEsUUFBQTBzQixHQUNBeHJDLFdBQUF5ckMsR0FDQXhaLFlBQ0E1QyxjQUNBN2Is
ZUFDQWdjLG9CQUNBbmQsaUJBQ0FELG1CQUNBK2pCLFdBcnFQQSxTQUFBclgsR0FDQSxNQUFBQSxH
QUFBNnNCLE9BQUEsU0FBQXR4QyxFQUFBMGtCLEdBQ0EsTUFBQTFrQixHQUFBOEUsT0FBQTRmLEVB
QUFvWCxxQkFDR2hhLEtBQUEsTUFrcVBIcXZCLEtBT0FJLElBQ0FDLE9BQUEsU0FBQXhkLEdBR0Es
TUFGQTBjLFFBQUFweUIsU0FBQTNJLGNBQUEsT0FDQSs2QixHQUFBcFAsVUFBQXROLEVBQ0EwYyxH
QUFBN3dCLGNBZ0JBNHhCLEdBQUEsa0JBQ0FDLEdBQUEsUUFDQUMsSUFFQSxhQUFBdDhCLE9BRUEs
YUFBQUEsT0FFQSxpQkFBQUEsUUFFQXdoQixHQUFBLEdBQUFwQixRQUNBLFFBQUFnYyxHQUFBcDhC
LE9BQ0EsV0FBQXE4QixHQUFBcjhCLE9BQUEsV0FDQXM4QixHQUFBN3ZCLEtBQUEsWUFLQTh2QixH
QUFBLHdCQUNBQyxHQUFBLE9BQUFELEdBQUEsUUFBQUEsR0FBQSxJQUNBbGIsR0FBQSxHQUFBakIs
UUFBQSxLQUFBb2MsSUFDQWpiLEdBQUEsYUFDQWhCLEdBQUEsR0FBQUgsUUFBQSxRQUFBb2MsR0FB
QSxVQUNBdmIsR0FBQSxxQkFDQU4sR0FBQSxRQUNBRyxHQUFBLFFBRUFjLElBQUEsQ0FDQSxLQUFB
bE0sUUFBQSxrQkFBQXJHLEVBQUFvdEIsR0FDQTdhLEdBQUEsS0FBQTZhLEdBSUEsSUFrU0FuYSxJ
QUNBeEUsR0FDQTRFLEdBQ0FDLEdBQ0FDLEdBQ0FSLEdBQ0FJLEdBQ0FDLEdBd2pCQThELEdBQ0FH
LEdBbDJCQTNHLEdBQUF2NEIsRUFBQSw0QkFDQTI0QixNQUVBbEIsSUFDQXlkLE9BQU8sSUFDUEMs
T0FBTyxJQUNQQyxTQUFTLElBQ1RDLFFBQVEsSUFDUkMsUUFBUSxNQUVSOWQsR0FBQSx3QkFDQUQs
R0FBQSw0QkFHQWdlLEdBQUF2MUMsRUFBQSxtQkFDQWc1QixHQUFBLFNBQUExdEIsRUFBQTZyQixH
QUFxRCxNQUFBN3JCLElBQUFpcUMsR0FBQWpxQyxJQUFBLE9BQUE2ckIsRUFBQSxJQXVRckRzSCxH
QUFBLFlBQ0FOLEdBQUEsWUFDQVosR0FBQSwyQkFDQUksR0FBQSw2Q0FFQWdCLEdBQUEsU0FDQUos
R0FBQSxjQUNBRCxHQUFBLFdBRUFsQixHQUFBajhCLEVBQUF1ekMsR0FBQUMsUUFnaUJBL1YsR0FB
QSxlQUNBQyxHQUFBLFVBb0NBRyxHQUFBNzlCLEVBQUFrK0IsSUE0SEFZLEdBQUEsK0NBQ0FGLEdB
QUEsK0ZBR0E5akIsSUFDQXU1QixJQUFBLEdBQ0FDLElBQUEsRUFDQS9rQixNQUFBLEdBQ0FnbEIs
TUFBQSxHQUNBQyxHQUFBLEdBQ0E3ZixLQUFBLEdBQ0E4ZixNQUFBLEdBQ0FDLEtBQUEsR0FDQTFK
LFFBQUEsT0FNQTJKLEdBQUEsU0FBQS9YLEdBQXFDLFlBQUFBLEVBQUEsaUJBRXJDb0MsSUFDQTRW
LEtBQUEsNEJBQ0FDLFFBQUEsMkJBQ0FDLEtBQUFILEdBQUEsMENBQ0FJLEtBQUFKLEdBQUEsbUJB
Q0E1VCxNQUFBNFQsR0FBQSxvQkFDQUssSUFBQUwsR0FBQSxrQkFDQU0sS0FBQU4sR0FBQSxtQkFD
QWhnQixLQUFBZ2dCLEdBQUEsNkNBQ0FPLE9BQUFQLEdBQUEsNkNBQ0FGLE1BQUFFLEdBQUEsOENB
NEdBUSxJQUNBNXBDLE1BQ0FwTCxLQUFBbS9CLEdBQ0E4VixNQUFBaDBDLEdBS0F1K0IsR0FBQSxT
QUFBMTRCLEdBQ0E1RSxLQUFBNEUsVUFDQTVFLEtBQUE2a0IsS0FBQWpnQixFQUFBaWdCLE1BQUFa
LEdBQ0Fqa0IsS0FBQTAzQixXQUFBdlQsR0FBQXZmLEVBQUF3ZixRQUFBLGlCQUNBcGtCLEtBQUE2
K0IsV0FBQTFhLEdBQUF2ZixFQUFBd2YsUUFBQSxXQUNBcGtCLEtBQUFzRixXQUFBNUcsT0FBb0Nv
MEMsSUFBQWx1QyxFQUFBVSxXQUNwQyxJQUFBcVMsR0FBQS9TLEVBQUErUyxlQUFBaWQsRUFDQTUw
QixNQUFBNi9CLGVBQUEsU0FBQWp4QixHQUF1QyxPQUFBK0ksRUFBQS9JLEVBQUE5RyxNQUN2QzlI
LEtBQUFvK0IsT0FBQSxFQUNBcCtCLEtBQUEyVyxvQkFvcUJBcThCLElBclBBLEdBQUE1ZCxRQUFB
LHVNQUlBdDRCLE1BQUEsS0FBQTJrQixLQUFBLGtCQUdBLEdBQUEyVCxRQUFBLDJCQUVBdDRCLE1B
QUEsS0FBQTJrQixLQUFBLDhDQXFMQSxTQUFBd3hCLEdBQ0EsZ0JBQUFqQyxHQUNBLFFBQUF0USxH
QUNBM0osRUFDQW55QixHQUVBLEdBQUFzdUMsR0FBQXg0QyxPQUFBa0MsT0FBQW8wQyxHQUNBelEs
S0FDQTRTLElBS0EsSUFKQUQsRUFBQXJ1QixLQUFBLFNBQUFYLEVBQUFrdkIsSUFDQUEsRUFBQUQs
RUFBQTVTLEdBQUEzK0IsS0FBQXNpQixJQUdBdGYsRUFBQSxDQUVBQSxFQUFBd2YsVUFDQTh1QixF
QUFBOXVCLFNBQ0E0c0IsRUFBQTVzQixhQUFBM2YsT0FBQUcsRUFBQXdmLFVBR0F4ZixFQUFBVSxh
QUNBNHRDLEVBQUE1dEMsV0FBQTVHLEVBQ0FoRSxPQUFBa0MsT0FBQW8wQyxFQUFBMXJDLFlBQ0FW
LEVBQUFVLFlBSUEsUUFBQTdILEtBQUFtSCxHQUNBLFlBQUFuSCxHQUFBLGVBQUFBLElBQ0F5MUMs
RUFBQXoxQyxHQUFBbUgsRUFBQW5ILElBS0EsR0FBQWtqQyxHQUFBc1MsRUFBQWxjLEVBQUFtYyxF
QU1BLE9BRkF2UyxHQUFBSixTQUNBSSxFQUFBd1MsT0FDQXhTLEVBR0EsT0FDQUQsVUFDQTJTLG1C
QUFBNVMsR0FBQUMsTUFVQSxTQUNBM0osRUFDQW55QixHQUVBLEdBQUF3NEIsR0FBQXRHLEdBQUFD
LEVBQUE1VCxPQUFBdmUsRUFDQTAyQixJQUFBOEIsRUFBQXg0QixFQUNBLElBQUE2aUIsR0FBQTBW
LEdBQUFDLEVBQUF4NEIsRUFDQSxRQUNBdzRCLE1BQ0FydUIsT0FBQTBZLEVBQUExWSxPQUNBNEgs
Z0JBQUE4USxFQUFBOVEsb0JBTUEyOEIsR0FBQU4sR0FBQWhDLElBQ0FxQyxHQUFBQyxHQUFBRCxt
QkFJQUUsR0FBQTUxQyxFQUFBLFNBQUF3SSxHQUNBLEdBQUF5SSxHQUFBeVAsR0FBQWxZLEVBQ0Es
T0FBQXlJLE1BQUFxeUIsWUFHQXVTLEdBQUF6NEIsR0FBQXRRLFVBQUFtN0IsTUFDQTdxQixJQUFB
dFEsVUFBQW03QixPQUFBLFNBQ0FoM0IsRUFDQUMsR0FLQSxJQUhBRCxLQUFBeVAsR0FBQXpQLE1B
R0FxUCxTQUFBOHhCLE1BQUFuaEMsSUFBQXFQLFNBQUF3MUIsZ0JBSUEsTUFBQXp6QyxLQUdBLElB
QUE0RSxHQUFBNUUsS0FBQW9ILFFBRUEsS0FBQXhDLEVBQUFtSyxPQUFBLENBQ0EsR0FBQWdvQixH
QUFBbnlCLEVBQUFteUIsUUFDQSxJQUFBQSxFQUNBLG1CQUFBQSxHQUNBLE1BQUFBLEVBQUFqVCxP
QUFBLEtBQ0FpVCxFQUFBd2MsR0FBQXhjLFFBU08sS0FBQUEsRUFBQXZKLFNBTVAsTUFBQXh0QixL
QUxBKzJCLEtBQUFrSyxjQU9LcnlCLEtBQ0xtb0IsRUFBQThKLEdBQUFqeUIsR0FFQSxJQUFBbW9C
LEVBQUEsQ0FNQSxHQUFBcFgsR0FBQTB6QixHQUFBdGMsR0FDQWxELHdCQUNBZixXQUFBbHVCLEVB
QUFrdUIsV0FDQWtGLFNBQUFwekIsRUFBQW96QixVQUNPaDRCLE1BQ1ArTyxFQUFBNFEsRUFBQTVR
LE9BQ0E0SCxFQUFBZ0osRUFBQWhKLGVBQ0EvUixHQUFBbUssU0FDQW5LLEVBQUErUixtQkFTQSxN
QUFBNjhCLElBQUEvM0MsS0FBQXVFLEtBQUE0TyxFQUFBQyxJQWlCQWtNLEdBQUEybEIsUUFBQTJT
LEdBRUE3NEMsRUFBQSxZRFg2QmlCLEtBQUtqQixFQUFxQkMsRUFBb0IsVUFJckVpNUMsS0FDQSxT
QUFVbjVDLEVBQVFvNUMsR0U5MVR4QixHQUFBbEMsRUFHQUEsR0FBQSxXQUNBLE1BQUF6eEMsUUFH
QSxLQUVBeXhDLEtBQUFqUixTQUFBLHFCQUFBb1QsTUFBQSxRQUNDLE1BQUFuMEMsR0FFRCxnQkFB
QXllLFVBQ0F1ekIsRUFBQXZ6QixRQU9BM2pCLEVBQUFvNUMsUUFBQWxDLEdGcTJUTW9DLE9BQ0Es
U0FBVXQ1QyxFQUFRbzVDLEdHejBUeEIsUUFBQUcsR0FBQTEyQyxFQUFBMjJDLEdBQ0EsR0FBQXpE
LEdBQUFsekMsRUFBQSxPQUNBNDJDLEVBQUE1MkMsRUFBQSxFQUNBLEtBQUE0MkMsRUFDQSxNQUFB
MUQsRUFHQSxJQUFBeUQsR0FBQSxrQkFBQUUsTUFBQSxDQUNBLEdBQUFDLEdBQUFDLEVBQUFILEVB
S0EsUUFBQTFELEdBQUE3ckMsT0FKQXV2QyxFQUFBSSxRQUFBejNDLElBQUEsU0FBQXFZLEdBQ0Es
dUJBQUFnL0IsRUFBQUssV0FBQXIvQixFQUFBLFNBR0F2USxRQUFBeXZDLElBQUF6eUIsS0FBQSxN
QUdBLE9BQUE2dUIsR0FBQTd1QixLQUFBLE1BSUEsUUFBQTB5QixHQUFBRyxHQUtBLHlFQUhBTCxL
QUFBTSxTQUFBQyxtQkFBQXI0QyxLQUFBQyxVQUFBazRDLE1BR0EsTUFyRUEvNUMsRUFBQW81QyxR
QUFBLFNBQUFJLEdBQ0EsR0FBQWwzQyxLQXdDQSxPQXJDQUEsR0FBQVgsU0FBQSxXQUNBLE1BQUE4
RCxNQUFBckQsSUFBQSxTQUFBUyxHQUNBLEdBQUFrekMsR0FBQXdELEVBQUExMkMsRUFBQTIyQyxF
QUNBLE9BQUEzMkMsR0FBQSxHQUNBLFVBQUFBLEVBQUEsT0FBbUNrekMsRUFBQSxJQUVuQ0EsSUFF
Rzd1QixLQUFBLEtBSUg1a0IsRUFBQUUsRUFBQSxTQUFBcW5CLEVBQUFxd0IsR0FDQSxnQkFBQXJ3
QixLQUNBQSxJQUFBLEtBQUFBLEVBQUEsS0FFQSxRQURBc3dCLE1BQ0EzM0MsRUFBQSxFQUFnQkEs
RUFBQWlELEtBQUFoRCxPQUFpQkQsSUFBQSxDQUNqQyxHQUFBb0osR0FBQW5HLEtBQUFqRCxHQUFB
LEVBQ0EsaUJBQUFvSixLQUNBdXVDLEVBQUF2dUMsSUFBQSxHQUVBLElBQUFwSixFQUFBLEVBQVlB
LEVBQUFxbkIsRUFBQXBuQixPQUFvQkQsSUFBQSxDQUNoQyxHQUFBSyxHQUFBZ25CLEVBQUFybkIs
RUFLQSxpQkFBQUssR0FBQSxJQUFBczNDLEVBQUF0M0MsRUFBQSxNQUNBcTNDLElBQUFyM0MsRUFB
QSxHQUNBQSxFQUFBLEdBQUFxM0MsRUFDS0EsSUFDTHIzQyxFQUFBLE9BQUFBLEVBQUEsYUFBQXEz
QyxFQUFBLEtBRUE1M0MsRUFBQStFLEtBQUF4RSxNQUlBUCxJSDg1VE04M0MsT0FDQSxTQUFVcDZD
LEVBQVFvNUMsR0l4OFR4QnA1QyxFQUFBbzVDLFFBQUEsU0FDQWlCLEVBQ0FDLEVBQ0FDLEVBQ0FD
LEVBQ0FDLEdBRUEsR0FBQUMsR0FDQUMsRUFBQU4sUUFHQTV2QyxRQUFBNHZDLEdBQUF6dEMsT0FD
QSxZQUFBbkMsR0FBQSxhQUFBQSxJQUNBaXdDLEVBQUFMLEVBQ0FNLEVBQUFOLEVBQUF6dEMsUUFJ
QSxJQUFBdkMsR0FBQSxrQkFBQXN3QyxHQUNBQSxFQUFBdHdDLFFBQ0Fzd0MsQ0FHQUwsS0FDQWp3
QyxFQUFBbUssT0FBQThsQyxFQUFBOWxDLE9BQ0FuSyxFQUFBK1IsZ0JBQUFrK0IsRUFBQWwrQixp
QkFJQW8rQixJQUNBbndDLEVBQUFpbkMsU0FBQWtKLEVBR0EsSUFBQWpyQyxFQTRCQSxJQTNCQWty
QyxHQUNBbHJDLEVBQUEsU0FBQTNCLEdBRUFBLEVBQ0FBLEdBQ0FuSSxLQUFBcVAsUUFBQXJQLEtB
QUFxUCxPQUFBdTVCLFlBQ0E1b0MsS0FBQXlGLFFBQUF6RixLQUFBeUYsT0FBQTRKLFFBQUFyUCxL
QUFBeUYsT0FBQTRKLE9BQUF1NUIsV0FFQXpnQyxHQUFBLG1CQUFBZ3RDLHVCQUNBaHRDLEVBQUFn
dEMscUJBR0FMLEdBQ0FBLEVBQUFyNUMsS0FBQXVFLEtBQUFtSSxHQUdBQSxLQUFBaXRDLHVCQUNB
anRDLEVBQUFpdEMsc0JBQUFoc0MsSUFBQTRyQyxJQUtBcHdDLEVBQUF5d0MsYUFBQXZyQyxHQUNH
Z3JDLElBQ0hockMsRUFBQWdyQyxHQUdBaHJDLEVBQUEsQ0FDQSxHQUFBaU0sR0FBQW5SLEVBQUFt
UixXQUNBNEQsRUFBQTVELEVBQ0FuUixFQUFBbUssT0FDQW5LLEVBQUEwd0MsWUFDQXYvQixHQU9B
blIsRUFBQW1LLE9BQUEsU0FBQXFHLEVBQUFqTixHQUVBLE1BREEyQixHQUFBck8sS0FBQTBNLEdB
Q0F3UixFQUFBdkUsRUFBQWpOLElBUEF2RCxFQUFBMHdDLGFBQUEzN0IsS0FDQWxWLE9BQUFrVixF
QUFBN1AsSUFDQUEsR0FVQSxPQUNBbXJDLFdBQ0F0QixRQUFBdUIsRUFDQXR3QyxhSnM5VE0yd0Ms
S0FDQSxTQUFVaDdDLEVBQVFvNUMsRUFBU2w1QyxHSzk5VGpDLFFBQUErNkMsR0FBQXpwQixHQUNB
LE9BQUFodkIsR0FBQSxFQUFpQkEsRUFBQWd2QixFQUFBL3VCLE9BQW1CRCxJQUFBLENBQ3BDLEdB
QUFLLEdBQUEydUIsRUFBQWh2QixHQUNBMDRDLEVBQUFDLEVBQUF0NEMsRUFBQStJLEdBQ0EsSUFB
QXN2QyxFQUFBLENBQ0FBLEVBQUE3MUIsTUFDQSxRQUFBbFAsR0FBQSxFQUFxQkEsRUFBQStrQyxF
QUFBRSxNQUFBMzRDLE9BQTJCMFQsSUFDaEQra0MsRUFBQUUsTUFBQWpsQyxHQUFBdFQsRUFBQXU0
QyxNQUFBamxDLEdBRUEsTUFBWUEsRUFBQXRULEVBQUF1NEMsTUFBQTM0QyxPQUF1QjBULElBQ25D
K2tDLEVBQUFFLE1BQUEvekMsS0FBQWcwQyxFQUFBeDRDLEVBQUF1NEMsTUFBQWpsQyxJQUVBK2tD
LEdBQUFFLE1BQUEzNEMsT0FBQUksRUFBQXU0QyxNQUFBMzRDLFNBQ0F5NEMsRUFBQUUsTUFBQTM0
QyxPQUFBSSxFQUFBdTRDLE1BQUEzNEMsWUFFSyxDQUVMLE9BREEyNEMsTUFDQWpsQyxFQUFBLEVB
QXFCQSxFQUFBdFQsRUFBQXU0QyxNQUFBMzRDLE9BQXVCMFQsSUFDNUNpbEMsRUFBQS96QyxLQUFB
ZzBDLEVBQUF4NEMsRUFBQXU0QyxNQUFBamxDLElBRUFnbEMsR0FBQXQ0QyxFQUFBK0ksS0FBOEJB
LEdBQUEvSSxFQUFBK0ksR0FBQXlaLEtBQUEsRUFBQSsxQixXQUs5QixRQUFBRSxLQUNBLEdBQUFD
LEdBQUE3M0IsU0FBQTNJLGNBQUEsUUFHQSxPQUZBd2dDLEdBQUE5d0MsS0FBQSxXQUNBK3dDLEVB
QUExMkIsWUFBQXkyQixHQUNBQSxFQUdBLFFBQUFGLEdBQUF0NkMsR0FDQSxHQUFBaUssR0FBQXJJ
LEVBQ0E0NEMsRUFBQTczQixTQUFBTSxjQUFBLDJCQUFBampCLEVBQUE2SyxHQUFBLEtBRUEsSUFB
QTJ2QyxFQUFBLENBQ0EsR0FBQUUsRUFHQSxNQUFBajNDLEVBT0ErMkMsR0FBQTM0QixXQUFBaUMs
WUFBQTAyQixHQUlBLEdBQUFHLEVBQUEsQ0FFQSxHQUFBQyxHQUFBQyxHQUNBTCxHQUFBTSxNQUFB
UCxLQUNBdHdDLEVBQUE4d0MsRUFBQXY0QyxLQUFBLEtBQUFnNEMsRUFBQUksR0FBQSxHQUNBaDVD
LEVBQUFtNUMsRUFBQXY0QyxLQUFBLEtBQUFnNEMsRUFBQUksR0FBQSxPQUdBSixHQUFBRCxJQUNB
dHdDLEVBQUErd0MsRUFBQXg0QyxLQUFBLEtBQUFnNEMsR0FDQTU0QyxFQUFBLFdBQ0E0NEMsRUFB
QTM0QixXQUFBaUMsWUFBQTAyQixHQU1BLE9BRkF2d0MsR0FBQWpLLEdBRUEsU0FBQWk3QyxHQUNB
LEdBQUFBLEVBQUEsQ0FDQSxHQUFBQSxFQUFBMXJCLE1BQUF2dkIsRUFBQXV2QixLQUNBMHJCLEVB
QUFDLFFBQUFsN0MsRUFBQWs3QyxPQUNBRCxFQUFBakMsWUFBQWg1QyxFQUFBZzVDLFVBQ0EsTUFF
QS91QyxHQUFBakssRUFBQWk3QyxPQUVBcjVDLE1BY0EsUUFBQW01QyxHQUFBUCxFQUFBejRDLEVB
QUFILEVBQUE1QixHQUNBLEdBQUF1dkIsR0FBQTN0QixFQUFBLEdBQUE1QixFQUFBdXZCLEdBRUEs
SUFBQWlyQixFQUFBVyxXQUNBWCxFQUFBVyxXQUFBbE4sUUFBQW1OLEVBQUFyNUMsRUFBQXd0QixP
QUNHLENBQ0gsR0FBQThyQixHQUFBMTRCLFNBQUFjLGVBQUE4TCxHQUNBK3JCLEVBQUFkLEVBQUFj
LFVBQ0FBLEdBQUF2NUMsSUFBQXk0QyxFQUFBMTJCLFlBQUF3M0IsRUFBQXY1QyxJQUNBdTVDLEVB
QUE1NUMsT0FDQTg0QyxFQUFBNzJCLGFBQUEwM0IsRUFBQUMsRUFBQXY1QyxJQUVBeTRDLEVBQUF6
MkIsWUFBQXMzQixJQUtBLFFBQUFMLEdBQUFSLEVBQUF4NkMsR0FDQSxHQUFBdXZCLEdBQUF2dkIs
RUFBQXV2QixJQUNBMnJCLEVBQUFsN0MsRUFBQWs3QyxNQUNBbEMsRUFBQWg1QyxFQUFBZzVDLFNB
Y0EsSUFaQWtDLEdBQ0FWLEVBQUFuM0IsYUFBQSxRQUFBNjNCLEdBR0FsQyxJQUdBenBCLEdBQUEs
bUJBQUF5cEIsRUFBQUYsUUFBQSxTQUVBdnBCLEdBQUEsdURBQXlEb3BCLEtBQUFNLFNBQUFDLG1C
QUFBcjRDLEtBQUFDLFVBQUFrNEMsTUFBQSxPQUd6RHdCLEVBQUFXLFdBQ0FYLEVBQUFXLFdBQUFs
TixRQUFBMWUsTUFDRyxDQUNILEtBQUFpckIsRUFBQW5JLFlBQ0FtSSxFQUFBMTJCLFlBQUEwMkIs
RUFBQW5JLFdBRUFtSSxHQUFBejJCLFlBQUFwQixTQUFBYyxlQUFBOEwsS0E5TUEsR0FBQWdzQixH
QUFBLG1CQUFBNTRCLFNBRUEsdUJBQUE2NEIsZ0JBQ0FELEVBQ0EsU0FBQUUsT0FDQSwwSkFLQSxJ
QUFBQyxHQUFBdjhDLEVBQUEsUUFlQWk3QyxLQVFBSyxFQUFBYyxJQUFBNTRCLFNBQUE4M0IsTUFB
QTkzQixTQUFBZzVCLHFCQUFBLFlBQ0FiLEVBQUEsS0FDQUQsRUFBQSxFQUNBSCxHQUFBLEVBQ0Fq
M0MsRUFBQSxhQUlBazNDLEVBQUEsbUJBQUEvVCxZQUFBLGVBQUF4aEMsS0FBQXdoQyxVQUFBQyxV
QUFBbGxDLGNBRUExQyxHQUFBbzVDLFFBQUEsU0FBQXVELEVBQUFyNkMsRUFBQXM2QyxHQUNBbkIs
RUFBQW1CLENBRUEsSUFBQXByQixHQUFBaXJCLEVBQUFFLEVBQUFyNkMsRUFHQSxPQUZBMjRDLEdB
QUF6cEIsR0FFQSxTQUFBcXJCLEdBRUEsT0FEQUMsTUFDQXQ2QyxFQUFBLEVBQW1CQSxFQUFBZ3ZC
LEVBQUEvdUIsT0FBbUJELElBQUEsQ0FDdEMsR0FBQUssR0FBQTJ1QixFQUFBaHZCLEdBQ0EwNEMs
RUFBQUMsRUFBQXQ0QyxFQUFBK0ksR0FDQXN2QyxHQUFBNzFCLE9BQ0F5M0IsRUFBQXoxQyxLQUFB
NnpDLEdBRUEyQixHQUNBcnJCLEVBQUFpckIsRUFBQUUsRUFBQUUsR0FDQTVCLEVBQUF6cEIsSUFF
QUEsSUFFQSxRQUFBaHZCLEdBQUEsRUFBbUJBLEVBQUFzNkMsRUFBQXI2QyxPQUFzQkQsSUFBQSxD
QUN6QyxHQUFBMDRDLEdBQUE0QixFQUFBdDZDLEVBQ0EsUUFBQTA0QyxFQUFBNzFCLEtBQUEsQ0FD
QSxPQUFBbFAsR0FBQSxFQUF1QkEsRUFBQStrQyxFQUFBRSxNQUFBMzRDLE9BQTJCMFQsSUFDbEQr
a0MsRUFBQUUsTUFBQWpsQyxXQUVBZ2xDLEdBQUFELEVBQUF0dkMsT0F3RkEsSUFBQXV3QyxHQUFB
LFdBQ0EsR0FBQVksS0FFQSxpQkFBQWo2QyxFQUFBazZDLEdBRUEsTUFEQUQsR0FBQWo2QyxHQUFB
azZDLEVBQ0FELEVBQUF6NkIsT0FBQTlWLFNBQUEwYSxLQUFBLFdMb21VTSsxQixLQUNBLFNBQVVq
OUMsRUFBUW81QyxFQUFTbDVDLElNdHdVakMsU0FBQWs1QyxHQVlBLFFBQUE4RCxLQUdBLFdBQUFD
LEVBQUFwdEMsTUFBQSxNQUFBb3RDLEVBQUFwdEMsS0FpUkEsUUFBQXF0QyxHQUFBeDZDLEVBQUF5
NkMsR0FDQSxPQUFBNzZDLEdBQUEsRUFBaUJBLEVBQUFJLEVBQUFILE9BQWdCRCxHQUFBLEVBQ2pD
LFFBQUE2NkMsRUFBQXo2QyxFQUFBSixLQUFBSSxHQUNBLE9BS0EsUUFBQTA2QyxHQUFBMTZDLEdB
RUEsT0FEQTI2QyxNQUNBLzZDLEVBQUEsRUFBQWxCLEVBQUFzQixFQUFBSCxPQUFpQ0QsRUFBQWxC
LEVBQU9rQixJQUN4Qys2QyxJQUFBcnpDLE9BQUF0SCxFQUFBSixHQUVBLE9BQUErNkMsR0FHQSxR
QUFBQyxHQUFBNTZDLEVBQUF5NkMsRUFBQXpnQyxHQUNBLElBQUFoYSxFQUFBSCxPQUNBLE1BQUFt
YSxJQUVBLElBQUE2Z0MsR0FBQSxHQUNBLFFBQUFDLEtBQ0FMLEVBQUF6NkMsRUFBQTY2QyxHQUFB
LFNBQUFuM0MsR0FDQUEsSUFBQSxJQUFBQSxHQUNBc1csRUFBQXRXLEdBQ0FzVyxFQUFBLGVBRUE2
Z0MsR0FBQSxFQUNBQSxJQUFBNzZDLEVBQUFILE9BQ0FtYSxJQUVBOGdDLFVBT0EsUUFBQUMsR0FB
QXo3QyxFQUFBMDdDLEVBQUFDLEdBQ0FBLEVBQUEzN0MsQ0FDQSxRQUFBNDdDLEtBQUFGLEdBQ0Es
R0FBQUEsRUFBQXo2QyxlQUFBMjZDLEtBQ0FELEVBQUFELEVBQUFFLEdBQUE1N0MsTUFDQUEsRUFD
QSxLQUlBLE9BQUEyN0MsS0FBQTM3QyxFQUFBLHVCQUFBMjdDLEVBR0EsUUFBQUUsR0FBQTc3QyxF
QUFBMDdDLEdBRUEsSUFEQSxHQUFBMTdCLEdBQUExUixFQUFBLEVBQUF3dEMsRUFBQSxHQUNBOTdC
LEVBQUFoZ0IsRUFBQSs3QyxPQUFBenRDLEdBQUF4RCxNQUFBLG1DQUNBd0QsRUFBQTBSLEVBQUFw
ZixNQUFBb2YsRUFBQSxHQUFBemYsT0FDQXlmLEVBQUEsR0FBQUEsRUFBQSxHQUFBaU8sUUFBQSxv
Q0FDQTZ0QixHQUFBOTdDLEVBQUErN0MsT0FBQSxFQUFBLzdCLEVBQUFwZixPQUFBb2YsRUFBQSxF
QUVBaGdCLEdBQUE4N0MsR0FBQTk3QyxFQUFBKzdDLE9BQUF6dEMsRUFDQSxJQUFBckIsR0FBQTFN
LEVBQUF5N0MsRUFBQWg4QyxFQUFBOEssTUFBQSxjQUNBLElBQUFreEMsRUFBQSxDQUNBejdDLEVB
QUF5N0MsRUFBQXo3QyxNQUNBLFFBQUFELEdBQUEsRUFBbUJBLEVBQUFDLEVBQVlELElBQy9CMk0s
RUFBQSt1QyxFQUFBMTdDLEdBRUFOLEVBREEsT0FBQWlOLEVBQUFWLE1BQUEsS0FDQVUsRUFBQVYs
TUFBQSxHQUVBdk0sRUFBQWl1QixRQUFBaGhCLEVBQUF3dUMsRUFBQXh1QyxFQUFBeXVDLElBSUEs
TUFBQTE3QyxHQUdBLFFBQUFpOEMsR0FBQUMsRUFBQUMsRUFBQXI2QyxFQUFBZzBDLEdBQ0EsR0FB
QXgxQyxHQUFBZ08sRUFBQSxFQUFBdW5CLEVBQUEsRUFBQThmLEVBQUEsRUFBQTd6QyxNQUFBLEtB
QUFyQyxXQUFBcTJDLE1BQUEsS0FBQXIyQyxVQUNBLEtBQUFhLEVBQUEsRUFBYUEsRUFBQTQ3QyxF
QUFBMzdDLE9BQW1CRCxJQUFBLENBQ2hDLEdBQUE4N0MsR0FBQUYsRUFBQTU3QyxFQUNBLElBQUE4
N0MsRUFBQXY3QyxRQUFBaUIsRUFBQXdNLEdBQUE4dEMsRUFBQXY3QyxRQUFBaTFDLEVBQUF4bkMs
S0FBQTh0QyxFQUFBdjdDLFFBQUFpQixFQUFBd00sTUFBQTh0QyxFQUFBdjdDLFFBQUFpMUMsRUFB
QXhuQyxNQUFBOHRDLEVBQUF2N0MsUUFBQWlCLEVBQUF3TSxLQUFBOHRDLEVBQUF2N0MsUUFBQWkx
QyxFQUFBeG5DLEdBQUEsQ0FHQSxHQUZBdW5CLEVBQUF1bUIsRUFBQXY3QyxRQUFBaUIsRUFBQXdN
LEdBQ0FxbkMsRUFBQXlHLEVBQUF2N0MsUUFBQWkxQyxFQUFBeG5DLElBQ0F1bkIsS0FBQThmLEtB
QUE5ZixJQUFBOGYsRUFBQSxDQUVBdUcsR0FEQUEsRUFBQTN2QyxNQUFBLEdBQUFqTSxHQUFBLE1B
QUEwa0IsS0FBQW0zQixJQUNBbjBDLE9BQUFrMEMsRUFBQTN2QyxPQUFBak0sR0FBQSxPQUVBZ08s
R0FBQXFuQyxFQUFBOWYsRUFBQThmLEVBQUE5ZixHQUFBLEVBQ0F2MUIsRUFBQSxNQUVBZ08sR0FB
QSxFQUdBLE1BQUE0dEMsR0FqWEEsR0FBQWpCLEdBQUF6NUIsU0FBQTY2QixTQVFBQyxHQUNBaEss
S0FBQSxTQUNBemtDLEtBQUFvdEMsRUFBQXB0QyxLQUNBMHVDLFNBQUEsRUFFQUMsTUFBQSxXQUNB
LEdBQUE3akMsR0FBQXNpQyxFQUFBcHRDLElBQ0E4SyxJQUFBcFYsS0FBQXNLLE9BQ0F0SyxLQUFB
c0ssS0FBQThLLEVBQ0FwVixLQUFBazVDLGtCQUlBQyxLQUFBLFdBQ0EsV0FBQW41QyxLQUFBK3VD
LE1BQ0EsSUFBQS91QyxLQUFBZzVDLFFBQUE5NkIsT0FBQWs3QixhQUFBbDdCLE9BQUFtN0IsZUFH
QXI1QyxLQUFBazVDLGlCQUlBdlQsS0FBQSxTQUFBL25DLEVBQUFvN0MsR0FRQSxRQUFBTSxHQUFB
QyxHQUNBLE9BQUF4OEMsR0FBQSxFQUFBbUIsRUFBQXM3QyxFQUFBenNDLFVBQUEvUCxPQUFrREQs
RUFBQW1CLEVBQU9uQixJQUN6RHk4QyxFQUFBenNDLFVBQUFoUSxHQUFBdzhDLEdBVEEsR0FBQTlH
LEdBQUF6eUMsSUFjQSxJQWJBQSxLQUFBZzVDLFVBRUFRLEVBQUF6c0MsWUFDQXlzQyxFQUFBenND
LGNBVUEsZ0JBQUFtUixjQUFBbGpCLEtBQUFpakIsU0FBQXc3QixjQUNBeDdCLFNBQUF3N0IsYUFB
QSxJQUVBLElBQUF6NUMsS0FBQWc1QyxRQU1BdnNDLFdBQUEsV0FDQXlSLE9BQUFrN0IsV0FBQUUs
R0FDUyxLQUdUcDdCLE9BQUFtN0IsYUFBQUMsRUFFQXQ1QyxLQUFBK3VDLEtBQUEsYUFFQSxDQUlB
LEdBQUEySyxHQUFBejdCLFNBQUEzSSxjQUFBLFNBQ0Fva0MsR0FBQXZ6QyxHQUFBLGNBQ0F1ekMs
RUFBQXB3QixNQUFBcWxCLFFBQUEsT0FDQTF3QixTQUFBOHhCLEtBQUExd0IsWUFBQXE2QixHQUNB
MTVDLEtBQUEyNUMsV0FBQSxJQUVBLG9CQUFBMTdCLFdBQUEsZUFBQUEsV0FDQUEsU0FBQTI3QixZ
QUFBLDhCQUNBLGFBQUFwd0MsTUFBQXltQyxjQUNBd0MsRUFBQXdHLFVBS0EvNkIsT0FBQTI3QixZ
QUFBLFdBQXNDcEgsRUFBQXdHLFNBQWdCLElBRXREajVDLEtBQUFrNUMsY0FBQUksRUFDQXQ1QyxL
QUFBK3VDLEtBQUEsU0FLQSxNQUZBeUssR0FBQXpzQyxVQUFBbkwsS0FBQWhFLEdBRUFvQyxLQUFB
K3VDLE1BR0E5SSxRQUFBLFNBQUFyb0MsR0FDQSxHQUFBNDdDLEtBQUF6c0MsVUFNQSxPQUZBQSxH
QUFBeXNDLEVBQUF6c0MsVUFFQWhRLEVBQUFnUSxFQUFBL1AsT0FBQSxFQUFzQ0QsR0FBQSxFQUFR
QSxJQUM5Q2dRLEVBQUFoUSxLQUFBYSxHQUNBbVAsRUFBQXhQLE9BQUFSLEVBQUEsSUFLQSs4QyxR
QUFBLFNBQUE5c0IsR0FjQSxNQVpBLFdBQUFodEIsS0FBQSt1QyxNQUNBL3VDLEtBQUEyNUMsV0FB
QTNzQixJQUdBLElBQUFodEIsS0FBQWc1QyxTQUNBOTZCLE9BQUE4NkIsUUFBQWUsYUFBaUM5N0Is
U0FBQSs3QixNQUFBaHRCLEdBR2pDaHRCLEtBQUFtNUMsUUFFQXpCLEVBQUFwdEMsS0FBQSxNQUFB
MGlCLEVBQUEsR0FBQUEsRUFBQSxJQUFBQSxFQUVBaHRCLE1BR0EyNUMsV0FBQSxTQUFBM3NCLEdB
RUEsR0FBQWl0QixHQUFBaDhCLFNBQUFpOEIsZUFBQSxlQUNBN2tDLEVBQUE0a0MsRUFBQUUsaUJB
QUFGLEVBQUFHLGNBQUFuOEIsUUFDQTVJLEdBQUFxN0IsT0FDQXI3QixFQUFBZ2xDLE1BQUEsb0JB
QUFydEIsRUFBQSxpREFDQTNYLEVBQUFzN0IsU0FHQTJKLFNBQUEsV0FFQSxHQUFBdHRCLEdBQUFo
dEIsS0FBQXU2QyxLQUlBLE9BSEF2dEIsSUFBQTBxQixFQUFBcHRDLE9BQ0FvdEMsRUFBQXB0QyxL
QUFBMGlCLEdBRUFodEIsTUFHQWs1QyxjQUFBLGNBR0FNLEVBQUE3RixFQUFBNkYsT0FBQSxTQUFB
YixHQUNBLEtBQUEzNEMsZUFBQXc1QyxJQUFBLFVBQUFBLEdBQUFiLEVBRUEzNEMsTUFBQW00QyxV
QUNBbjRDLEtBQUEyNEMsVUFDQTM0QyxLQUFBNlMsU0FBQSw4QkFDQTdTLEtBQUF1L0IsU0FDQXYv
QixLQUFBdzZDLFlBRUF4NkMsS0FBQXk2QyxRQUFBejZDLEtBQUFnbUMsT0FDQWhtQyxLQUFBZ21D
LE9BQUFobUMsS0FBQTA2QyxTQUVBMTZDLEtBQUEyNkMsZUFBQSxhQUFBejhCLE9BQUE4NkIsUUFB
QTk2QixPQUFBODZCLFFBQUFlLFVBQUEsTUFFQS81QyxLQUFBNDZDLFlBQ0E1NkMsS0FBQXd6QyxN
QUFBbUYsT0FHQWEsR0FBQS91QyxVQUFBazdCLEtBQUEsU0FBQWtWLEdBQ0EsR0FDQUMsR0FEQXJJ
LEVBQUF6eUMsSUFxQ0EsT0FuQ0FBLE1BQUFpVSxRQUFBLFNBQUFzbEMsR0FDQSxHQUFBd0IsR0FB
QXhCLEtBQUF3QixRQUFBNzhCLE9BQUE0NkIsU0FBQXh1QyxLQUNBMHdDLEdBQUEsSUFBQXZJLEVB
QUF1RyxRQUFBdkcsRUFBQXdJLFVBQUFGLEVBQUFyd0IsUUFBQSxTQUNBK25CLEdBQUF5SSxTQUFB
LFdBQUFGLEVBQUFsM0IsT0FBQSxHQUFBazNCLEVBQUEsSUFBQUEsSUFHQWpDLEVBQUFwVCxLQUFB
M2xDLEtBQUFpVSxRQUFBalUsS0FBQWc1QyxVQUVBLElBQUFoNUMsS0FBQWc1QyxRQUNBdkIsS0FB
QW9ELEVBQ0FuRCxFQUFBcHRDLEtBQUF1d0MsRUFDS3BELEtBQ0xoRixFQUFBeUksU0FBQSxTQUFB
eEQsRUFBQXB0QyxLQUFBb2dCLFFBQUEsb0JBSUExcUIsS0FBQW03QyxzQkFFQUwsRUFBQXJELEtB
QUFvRCxJQUFBcEQsSUFBQSxLQUFBQyxFQUFBcHRDLEtBQUFvZ0IsUUFBQSxXQUVBeE0sT0FBQTg2
QixRQUFBb0MsZ0JBQXNDbjlCLFNBQUErN0IsTUFBQWMsR0FLdENBLEVBQUE5NkMsS0FBQWk3QyxX
QUtBSCxJQUFBLElBQUE5NkMsS0FBQXE3QyxjQUNBcjdDLEtBQUFpVSxXQUlBalUsTUFHQXc1QyxF
QUFBL3VDLFVBQUE2d0MsUUFBQSxXQUNBLEdBQUF2Z0QsSUFBQSxJQUFBaUYsS0FBQWc1QyxRQUFB
aDVDLEtBQUFpN0MsVUFBQXZELEVBQUFwdEMsSUFFQSxPQURBLE1BQUF2UCxFQUFBK29CLE9BQUEs
S0FBNEIvb0IsSUFBQWlPLE1BQUEsSUFDNUJqTyxFQUFBaU8sTUFBQSxFQUFBak8sRUFBQWlDLFFB
QUFGLE1BQUEsTUFHQTA4QyxFQUFBL3VDLFVBQUE4d0MsU0FBQSxTQUFBeCtDLEVBQUFoQyxFQUFB
YSxHQUNBLEdBQUFvL0MsR0FBQWg3QyxLQUFBczdDLFNBYUEsT0FYQSxnQkFBQXYrQyxJQUFBLGdC
QUFBaEMsR0FDQWlnRCxFQUFBaitDLEdBQUFoQyxFQUVBLGdCQUFBYSxHQUNBby9DLEVBQUF6OUMs
T0FBQVIsRUFBQWhDLEVBQUFpeUIsR0FHQWd1QixHQUFBaitDLEdBR0FnOEMsRUFBQWUsUUFBQWtC
LEVBQUF2NUIsS0FBQSxNQUNBdTVCLEdBV0F4QixFQUFBL3VDLFVBQUFpd0MsU0FBQSxTQUFBdFcs
RUFBQTVqQyxFQUFBZzdDLEVBQUEvMUMsR0FZQSxNQVhBLFNBQUEyK0IsSUFDQUEsRUFBQSxLQUNB
b1gsRUFBQSxTQUFBQSxHQUNBLEdBQUExN0MsSUFBQSxDQUNBLG1CQUNBLElBQUFBLEVBRUEsTUFE
QUEsSUFBQSxFQUNBMDdDLEVBQUFwOUMsTUFBQTRCLEtBQUE3QixhQUVLcTlDLElBRUx4N0MsS0FB
QXk2QyxRQUFBclcsRUFBQTVqQyxFQUFBZzdDLEVBQUEvMUMsSUFHQSt6QyxFQUFBL3VDLFVBQUFn
eEMsU0FBQSxTQUFBMWdELEdBQ0EsR0FBQXlELEdBQUF6RCxDQUVBLG9CQUFBQSxHQUNBeUQsRUFB
QXdCLEtBQUFzN0MsVUFBQXZnRCxPQUVBLG9CQUFBQSxHQUFBLENBQ0EsR0FBQXFhLEdBQUFwVixL
QUFBczdDLFNBQ0E5OEMsR0FBQTRXLEVBQUE5WCxRQUFBdkMsT0FHQXlELEdBQUF3QixLQUFBczdD
LFNBR0EsT0FBQTk4QyxJQUdBZzdDLEVBQUEvdUMsVUFBQXc3QixRQUFBLFdBRUEsTUFEQThTLEdB
QUE5UyxRQUFBam1DLEtBQUFpVSxTQUNBalUsTUFHQXc1QyxFQUFBL3VDLFVBQUF3d0MsUUFBQSxX
QUNBLEdBQUF6NkMsR0FBQTBkLE9BQUE0NkIsU0FBQTRDLFFBSUEsT0FIQSxNQUFBbDdDLEVBQUFn
NEMsT0FBQSxPQUNBaDRDLEVBQUEsSUFBQUEsR0FFQUEsRUFnR0EsSUFBQW03QyxHQUFBLE1BRUFu
QyxHQUFBL3VDLFVBQUFtd0MsVUFBQSxTQUFBaDJDLEdBQ0FBLE9BQ0EsUUFBQTdILEdBQUEsRUFB
aUJBLEVBQUFpRCxLQUFBNlMsUUFBQTdWLE9BQXlCRCxJQUMxQ2lELEtBQUF3NkMsU0FBQXg2QyxL
QUFBNlMsUUFBQTlWLEtBQUEsQ0FnQkEsT0FkQWlELE1BQUE0N0MsUUFBQWgzQyxFQUFBZzNDLFNB
QUE1N0MsS0FBQTQ3QyxVQUFBLEVBQ0E1N0MsS0FBQTY3QyxNQUFBajNDLEVBQUFpM0MsUUFBQSxF
QUNBNzdDLEtBQUE0NEMsVUFBQWgwQyxFQUFBZzBDLFdBQUEsSUFDQTU0QyxLQUFBODdDLFdBQUEs
S0FBQWwzQyxFQUFBazNDLFFBQUFsM0MsRUFBQWszQyxPQUNBOTdDLEtBQUErN0MsU0FBQW4zQyxF
QUFBbTNDLFNBQ0EvN0MsS0FBQWc4QyxTQUFBcDNDLEVBQUFvM0MsU0FDQWg4QyxLQUFBZzVDLFFB
QUFwMEMsRUFBQXEzQyxjQUFBajhDLEtBQUEyNkMsaUJBQUEsRUFDQTM2QyxLQUFBcTdDLGFBQUEs
SUFBQXI3QyxLQUFBZzVDLFVBQUEsSUFBQXAwQyxFQUFBczNDLG9CQUNBbDhDLEtBQUFtN0Msc0JB
QUEsSUFBQW43QyxLQUFBZzVDLFVBQUEsSUFBQXAwQyxFQUFBdTJDLHFCQUNBbjdDLEtBQUFSLE9B
Q0EyOEMsTUFBQXYzQyxFQUFBdTNDLE9BQUEsS0FDQUMsT0FBQXgzQyxFQUFBdzNDLFFBQUEsS0FD
QWx6QyxHQUFBdEUsRUFBQXNFLElBQUEsTUFFQWxKLE1BR0F3NUMsRUFBQS91QyxVQUFBNHRDLE1B
QUEsU0FBQWdFLEVBQUFDLEdBQ0EsTUFBQUQsRUFBQSxLQUNBQSxFQUFBLElBQUFBLEVBRUEsSUFB
QTFiLEdBQUEsR0FBQXZMLFFBQUFpbkIsRUFBQSxJQUlBLE9BSEFyOEMsTUFBQW00QyxPQUFBa0Us
R0FBQSxTQUFBNS9DLEdBQ0EsTUFBQUEsR0FBQWl1QixRQUFBaVcsRUFBQTJiLEVBQUF0bkMsUUFB
QXNuQyxJQUVBdDhDLE1BR0F3NUMsRUFBQS91QyxVQUFBdkIsR0FBQXN3QyxFQUFBL3VDLFVBQUEr
d0MsTUFBQSxTQUFBcFgsRUFBQTVqQyxFQUFBZzdDLEdBQ0EsR0FBQS9JLEdBQUF6eUMsSUFNQSxP
QUxBdzdDLElBQUEsa0JBQUFoN0MsS0FDQWc3QyxFQUFBaDdDLEVBQ0FBLEVBQUE0akMsRUFDQUEs
RUFBQSxNQUVBM2xDLE1BQUFhLFFBQUFrQixHQUNBQSxFQUFBbVUsUUFBQSxTQUFBa1AsR0FDQTR1
QixFQUFBdnBDLEdBQUFrN0IsRUFBQXZnQixFQUFBMjNCLE1BR0FoN0MsRUFBQXdVLFNBQ0F4VSxJ
QUFBd1UsT0FBQTBWLFFBQUEsZUFFQWpzQixNQUFBYSxRQUFBOGtDLEdBQ0FBLEVBQUF6dkIsUUFB
QSxTQUFBMFAsR0FDQW91QixFQUFBdnBDLEdBQUFtYixFQUFBcG5CLGNBQUF1RCxFQUFBZzdDLE1B
R0FoN0MsSUFBQTFELE1BQUEsR0FBQXM0QixRQUFBcDFCLEtBQUE0NEMsWUFDQXA0QyxFQUFBazRD
LEVBQUFsNEMsRUFBQVIsS0FBQTQ0QyxlQUNBNTRDLE1BQUFnbUMsT0FBQTVCLEVBQUFwa0MsS0FB
QXUvQixNQUFBOTZCLE9BQUFqRSxHQUFBZzdDLE1BR0FoQyxFQUFBL3VDLFVBQUFqSyxLQUFBLFNB
QUFBLEVBQUErN0MsR0FDQSxHQUFBdi9DLEdBQUFnRCxLQUFBdS9CLE1BQUF2aUMsTUFDQXdELEdB
QUF3VSxTQUNBeFUsSUFBQXdVLE9BQUEwVixRQUFBLGVBRUFscUIsSUFBQTFELE1BQUEsR0FBQXM0
QixRQUFBcDFCLEtBQUE0NEMsWUFDQXA0QyxFQUFBazRDLEVBQUFsNEMsRUFBQVIsS0FBQTQ0QyxX
QUNBNTRDLEtBQUF1L0IsTUFBQXYvQixLQUFBdS9CLE1BQUE5NkIsT0FBQWpFLEdBQ0ErN0MsRUFB
QTlnRCxLQUFBdUUsV0FDQUEsS0FBQXUvQixNQUFBaGlDLE9BQUFQLEVBQUF3RCxFQUFBeEQsU0FH
QXc4QyxFQUFBL3VDLFVBQUF5d0MsU0FBQSxTQUFBOVcsRUFBQTVqQyxFQUFBMlcsR0FnQkEsUUFB
QXFsQyxLQUNBL0osRUFBQTFuQyxLQUFBbEMsRUFBQXN6QyxNQUNBMUosRUFBQWdLLE9BQUFoSyxF
QUFBaUssUUFBQTd6QyxHQUFBNHBDLEVBQUF0N0IsR0FqQkEsR0FBQWdsQyxHQUFBMUosRUFBQXp5
QyxLQUFBNkksRUFBQTdJLEtBQUErUixTQUFBcXlCLEVBQUE1akMsRUFBQWtxQixRQUFBaXhCLEVB
QUEsSUFBQTM3QyxLQUFBMjRDLE9BQUEsSUFBQWdFLEVBQUEzOEMsS0FBQTQ4QyxRQUVBLE9BREE1
OEMsTUFBQTQ4QyxVQUFBLEVBQ0EvekMsR0FBQSxJQUFBQSxFQUFBN0wsUUFVQSxZQUFBZ0QsS0FB
QTQ3QyxVQUNBL3lDLElBQUFnMEMsWUFNQVYsRUFBQW44QyxLQUFBUixPQUFBUSxLQUFBUixNQUFB
MjhDLE9BQUFuOEMsS0FBQVIsTUFBQTI4QyxPQUFBMTNDLE9BQUF6RSxLQUFBK0ssT0FBQS9LLEtB
QUErSyxRQUNBb3hDLEVBQUFuL0MsT0FBQSxHQUFBMi9DLEdBQ0EzOEMsS0FBQTY3QyxNQUNBNzdD
LEtBQUF5OEMsT0FBQU4sRUFBQW44QyxLQUFBdzhDLElBRUF4OEMsS0FBQXk4QyxPQUFBTixFQUFB
bjhDLE1BQ0F3OEMsTUFFQSxJQUVBQSxLQUNBLEtBM0JBeDhDLEtBQUErSyxRQUNBLGtCQUFBL0ss
TUFBQSs3QyxVQUNBLzdDLEtBQUF5OEMsUUFBQXo4QyxLQUFBKzdDLFdBQ0EzWCxTQUNBNWpDLFFB
Q08yVyxJQUVQLElBdUJBcWlDLEVBQUEvdUMsVUFBQWd5QyxPQUFBLFNBQUE1ekMsRUFBQWkwQyxF
QUFBM2xDLEdBQ0EsR0FDQS9ZLEdBREFxMEMsRUFBQXp5QyxJQUVBQSxNQUFBNjdDLE9BQ0F6OUMs
RUFBQSxTQUFBUixFQUFBMm9CLEdBQ0EsR0FBQTluQixNQUFBYSxRQUFBMUIsR0FDQSxNQUFBbTZD
LEdBQUFuNkMsRUFBQVEsRUFBQW1vQixFQUNPLG1CQUFBM29CLElBQ1BBLEVBQUFRLE1BQUEwK0Ms
R0FBQWowQyxFQUFBNHZDLGNBQUFoMEMsT0FBQThoQixLQUdBd3hCLEVBQUFsdkMsRUFBQXpLLEVB
QUEsV0FDQStZLEdBQ0FBLEVBQUEvWSxNQUFBMCtDLEVBQUEzK0MsZUFJQUMsRUFBQSxTQUFBUixH
QUNBLE1BQUFhLE9BQUFhLFFBQUExQixHQUNBKzVDLEVBQUEvNUMsRUFBQVEsR0FDTyxrQkFBQVIs
R0FDUEEsRUFBQVEsTUFBQTArQyxFQUFBajBDLEVBQUE0dkMsbUJBQ08sZ0JBQUE3NkMsSUFBQTYw
QyxFQUFBdUosVUFDUHZKLEVBQUF1SixTQUFBcCtDLEdBQUFRLE1BQUEwK0MsRUFBQWowQyxFQUFB
NHZDLGdCQUdBZCxFQUFBOXVDLEVBQUF6SyxLQUlBbzdDLEVBQUEvdUMsVUFBQXNILFNBQUEsU0FB
QXF5QixFQUFBNWpDLEVBQUFtNEMsRUFBQW9FLEVBQUFsZ0MsR0FFQSxRQUFBbWdDLEdBQUFyRSxH
QUlBLFFBQUFzRSxHQUFBam9DLEdBRUEsT0FEQVAsTUFDQTFYLEVBQUEsRUFBcUJBLEVBQUFpWSxF
QUFBaFksT0FBbUJELElBQ3hDMFgsRUFBQTFYLEdBQUEwQixNQUFBYSxRQUFBMFYsRUFBQWpZLElB
QUFrZ0QsRUFBQWpvQyxFQUFBalksSUFBQWlZLEVBQUFqWSxFQUVBLE9BQUEwWCxHQUVBLFFBQUF5
b0MsR0FBQXIwQyxHQUNBLE9BQUE5TCxHQUFBOEwsRUFBQTdMLE9BQUEsRUFBa0NELEdBQUEsRUFB
UUEsSUFDMUMwQixNQUFBYSxRQUFBdUosRUFBQTlMLEtBQ0FtZ0QsRUFBQXIwQyxFQUFBOUwsSUFD
QSxJQUFBOEwsRUFBQTlMLEdBQUFDLFFBQ0E2TCxFQUFBdEwsT0FBQVIsRUFBQSxJQUdBOGYsRUFB
QWhVLEVBQUE5TCxLQUNBOEwsRUFBQXRMLE9BQUFSLEVBQUEsR0FuQkEsSUFBQThmLEVBQ0EsTUFB
QTg3QixFQXVCQSxJQUFBd0UsR0FBQUYsRUFBQXRFLEVBS0EsT0FKQXdFLEdBQUFDLFFBQUF6RSxF
QUFBeUUsUUFDQUQsRUFBQTFFLFNBQUFFLEVBQUFGLFNBQ0EwRSxFQUFBaEIsTUFBQXhELEVBQUF3
RCxNQUFBdC9CLFVBQ0FxZ0MsRUFBQUMsR0FDQUEsRUEvQkEsR0FBQXZnQyxHQUFBeWdDLEVBQUE5
MUMsRUFBQWdmLEVBQUExZCxJQWlDQSxJQUFBckksSUFBQVIsS0FBQTQ0QyxXQUFBRCxFQUFBdlUs
R0FLQSxNQUpBN2QsS0FBQW95QixFQUFBeUQsT0FBQXpELEVBQUF2VSxJQUFBdm5CLE9BQUE5VixV
QUNBd2YsRUFBQTQxQixPQUFBeEQsRUFBQXdELE9BQUF0L0IsT0FBQTlWLFNBQ0F3ZixFQUFBNjJC
LFNBQUEsRUFDQTcyQixFQUFBa3lCLFlBQ0F1RSxFQUFBejJCLEVBRUEsUUFBQXMwQixLQUFBbEMs
R0FDQSxHQUFBQSxFQUFBajdDLGVBQUFtOUMsTUFBQTc2QyxLQUFBdzZDLFNBQUFLLElBQUE3NkMs
S0FBQXc2QyxTQUFBSyxJQUFBLGdCQUFBbEMsR0FBQWtDLEtBQUFwOEMsTUFBQWEsUUFBQXE1QyxF
QUFBa0MsS0FBQSxDQU1BLEdBTEFqK0IsRUFBQXlnQyxFQUFBTixFQUFBLzhDLEtBQUE0NEMsVUFB
QWlDLEVBQ0E3NkMsS0FBQTg3QyxTQUNBdUIsR0FBQSxJQUFBcjlDLEtBQUE0NEMsVUFBQSxRQUVB
cnhDLEVBQUEvRyxFQUFBK0csTUFBQSxHQUFBNnRCLFFBQUEsSUFBQWlvQixLQUVBLFFBRUEsSUFB
QTkxQyxFQUFBLElBQUFBLEVBQUEsSUFBQS9HLEdBQUFtNEMsRUFBQWtDLEdBQUF6VyxHQVNBLE1B
UkE3ZCxLQUFBb3lCLEVBQUFrQyxHQUFBdUIsT0FBQXpELEVBQUFrQyxHQUFBelcsSUFBQXZuQixP
QUFBOVYsVUFDQXdmLEVBQUE0MUIsT0FBQXhELEVBQUFrQyxHQUFBc0IsT0FBQXQvQixPQUFBOVYs
U0FDQXdmLEVBQUE2MkIsU0FBQSxFQUNBNzJCLEVBQUFreUIsU0FBQWx4QyxFQUFBeUIsTUFBQSxH
QUNBaEosS0FBQTQ3QyxTQUFBakQsSUFBQTM0QyxLQUFBMjRDLFNBQ0FweUIsRUFBQTNrQixNQUFB
KzJDLEVBQUF5RCxPQUFBekQsRUFBQXp2QyxJQUFBMlQsT0FBQTlWLFVBQ0F3ZixFQUFBNDFCLE1B
QUE1MUIsRUFBQTQxQixNQUFBMTNDLFFBQUFrMEMsRUFBQXdELE9BQUF0L0IsT0FBQTlWLFdBRUFp
MkMsRUFBQXoyQixFQUdBLElBREFBLEVBQUF2bUIsS0FBQStSLFNBQUFxeUIsRUFBQTVqQyxFQUFB
bTRDLEVBQUFrQyxHQUFBaitCLEdBQ0EySixFQUFBNjJCLFFBZUEsTUFkQTcyQixHQUFBdnBCLE9B
QUEsSUFDQTZMLElBQUFwRSxPQUFBOGhCLElBRUF2bUIsS0FBQTQ3QyxVQUNBL3lDLEVBQUFqSCxN
QUFBKzJDLEVBQUFrQyxHQUFBdUIsT0FBQXpELEVBQUFrQyxHQUFBM3hDLElBQUEyVCxPQUFBOVYs
VUFDQXdmLEVBQUE0MUIsTUFBQTUxQixFQUFBNDFCLE1BQUExM0MsUUFBQWswQyxFQUFBa0MsR0FB
QXNCLE9BQUF0L0IsT0FBQTlWLFVBQ0E0eEMsSUFBQTM0QyxLQUFBMjRDLFNBQ0E5dkMsRUFBQWpI
LE1BQUErMkMsRUFBQSxPQUFBQSxFQUFBLElBQUE5N0IsT0FBQTlWLFVBQ0F3ZixFQUFBNDFCLE1B
QUE1MUIsRUFBQTQxQixNQUFBMTNDLFFBQUFrMEMsRUFBQSxPQUFBOTdCLE9BQUE5VixZQUdBOEIs
RUFBQXUwQyxTQUFBLEVBQ0F2MEMsRUFBQTR2QyxTQUFBbHlCLEVBQUFreUIsU0FDQTV2QyxFQUFB
c3pDLE1BQUE1MUIsRUFBQTQxQixNQUNBYSxFQUFBbjBDLEdBSUEsVUFHQTJ3QyxFQUFBL3VDLFVB
QUF1N0IsT0FBQSxTQUFBNUIsRUFBQTVqQyxFQUFBZzdDLEVBQUEvMUMsR0FDQSxHQUFBNjNDLEdB
QUFoK0MsRUFBQTJyQyxFQUFBc1MsQ0FTQSxJQVJBLzhDLElBQUFxYyxPQUFBLFNBQUFnSCxHQUNB
LE1BQUFBLE1BQUE3bUIsT0FBQSxJQUVBeUksS0FBQXpGLEtBQUEyNEMsT0FDQTRFLEVBQUEvOEMs
RUFBQWsrQixRQUNBLFFBQUFoK0IsS0FBQTY4QyxLQUFBLFVBQUE3OEMsS0FBQTY4QyxLQUNBQSxF
QUFBakYsRUFBQWlGLEVBQUF2OUMsS0FBQW00QyxTQUVBMzNDLEVBQUF4RCxPQUFBLEVBRUEsTUFE
QXlJLEdBQUE4M0MsR0FBQTkzQyxFQUFBODNDLE9BQ0F2OUMsS0FBQWdtQyxPQUFBNUIsRUFBQTVq
QyxFQUFBZzdDLEVBQUEvMUMsRUFBQTgzQyxHQUVBLElBQUFBLEdBQUEvOEMsRUFBQXhELFFBQUF5
SSxJQUFBekYsS0FBQTI0QyxPQUFBLENBaUJBLEdBRkEyRSxRQUFBNzNDLEdBQUE4M0MsR0FDQWor
QyxFQUFBYixNQUFBYSxRQUFBbUcsRUFBQTgzQyxJQUNBOTNDLEVBQUE4M0MsS0FBQWorQyxHQUFB
LFVBQUFnK0MsRUFFQSxhQURBNzNDLEdBQUE4M0MsR0FBQW5aLElBRUEsZUFFQSxZQURBMytCLEVB
QUE4M0MsR0FBQW5aLElBQUEzK0IsRUFBQTgzQyxHQUFBblosR0FBQW9YLEdBRUEsY0FFQSxXQURB
LzFDLEdBQUE4M0MsR0FBQW5aLEdBQUF4aUMsS0FBQTQ1QyxFQUVBLGlCQUVBLFlBREEvMUMsRUFB
QTgzQyxHQUFBblosR0FBQW9YLE9BR0csaUJBQUE4QixFQUlILE1BSEFyUyxNQUNBQSxFQUFBN0cs
R0FBQW9YLE9BQ0EvMUMsRUFBQTgzQyxHQUFBdFMsRUFHQSxVQUFBOEwsT0FBQSwwQkFBQXVHLEdB
bENBLGFBREE3M0MsR0FBQTIrQixJQUVBLGVBRUEsWUFEQTMrQixFQUFBMitCLElBQUEzK0IsRUFB
QTIrQixHQUFBb1gsR0FFQSxjQUVBLFdBREEvMUMsR0FBQTIrQixHQUFBeGlDLEtBQUE0NUMsRUFF
QSxpQkFFQSxZQURBLzFDLEVBQUEyK0IsR0FBQW9YLEtBK0JBaEMsRUFBQS91QyxVQUFBL0wsT0FB
QSxTQUFBbVUsR0FDQSxHQUFBOVYsR0FBQTAxQyxFQUFBenlDLEtBQUF3SCxFQUFBcUwsRUFBQTdW
LE1BUUEsS0FBQUQsRUFBQSxFQUFhQSxFQUFBeUssRUFBU3pLLEtBUHRCLFNBQUFxbkMsR0FDQXFP
LEVBQUErSCxTQUFBcFcsSUFBQSxFQUNBcU8sRUFBQXJPLEdBQUEsV0FDQSxHQUFBb1osR0FBQSxJ
QUFBci9DLFVBQUFuQixRQUFBb25DLEVBQUEsS0FBQUEsRUFDQXFPLEdBQUF2cEMsR0FBQTlLLE1B
QUFxMEMsRUFBQStLLEVBQUEvNEMsT0FBQWhHLE1BQUFnTSxVQUFBekIsTUFBQXZOLEtBQUEwQyxl
QUlBMFUsRUFBQTlWLEtBSUF5OEMsRUFBQS91QyxVQUFBaXlDLFFBQUEsU0FBQTd6QyxHQUNBLEdB
QUE2ekMsR0FBQTE4QyxLQUFBUixPQUFBUSxLQUFBUixNQUFBNDhDLFFBQUFwOEMsS0FBQVIsTUFB
QTQ4QyxRQUFBMzNDLE9BQUFvekMsRUFBQWh2QyxJQUFBZ3ZDLEVBQUFodkMsRUFNQSxPQUxBN0ks
TUFBQVIsT0FBQVEsS0FBQVIsTUFBQTBKLElBQ0F3ekMsRUFBQTk2QyxLQUFBNUIsS0FBQVIsTUFB
QTBKLElBRUF3ekMsRUFBQWpFLFNBQUE1dkMsRUFBQTR2QyxTQUNBaUUsRUFBQTFuQyxPQUFBbk0s
RUFBQW1NLE9BQ0EwbkMsR0FHQWxELEVBQUEvdUMsVUFBQStvQyxNQUFBLFNBQUFtRixFQUFBbjRD
LEdBQ0EsR0FBQW00QyxHQUFBLGdCQUFBQSxLQUFBbDZDLE1BQUFhLFFBQUFxNUMsR0FBQSxDQUdB
LEdBQUFsRyxHQUFBenlDLElBQ0FRLFNBQ0EvQixNQUFBYSxRQUFBa0IsS0FDQUEsSUFBQTFELE1B
QUEyMUMsRUFBQW1HLFdBbUJBLFFBQUE0QyxLQUFBN0MsR0FDQUEsRUFBQWo3QyxlQUFBODlDLElB
bEJBLFNBQUFBLEVBQUFpQyxHQUNBLEdBQUFDLEdBQUFsQyxFQUFBN0YsRUFBQTZGLEVBQUExK0Ms
TUFBQTIxQyxFQUFBbUcsV0FBQStFLFFBQUFoRixHQUFBNkMsR0FBQW9DLEVBQUEsS0FBQWpJLEVB
QUEsS0FBQWxELEVBQUErSCxTQUFBN0UsRUFBQSxJQUFBbnNDLEVBQUFvMEMsRUFBQSxLQUFBRixD
QUtBLElBSkFFLElBQ0FGLElBQUExMEMsT0FBQTAwQyxFQUFBbjJDLE1BQUEsR0FBQTZ0QixRQUFB
LElBQUFxZCxFQUFBbUcsY0FBQSxRQUFBNTdDLFFBQ0EyNEMsRUFBQWpYLFNBRUFrZixHQUFBLFdB
QUFELElBQUFsL0MsTUFBQWEsUUFBQXE1QyxFQUFBNkMsSUFHQSxNQUZBaUMsS0FBQWg1QyxPQUFB
a3hDLE9BQ0FsRCxHQUFBZSxNQUFBbUYsRUFBQTZDLEdBQUFpQyxFQUdBRyxLQUNBSCxJQUFBaDVD
LE9BQUFpNUMsRUFBQTVnRCxNQUFBMjFDLEVBQUFtRyxZQUNBNkUsRUFBQS9FLEVBQUErRSxFQUFB
aEwsRUFBQW1HLFlBRUFuRyxFQUFBek0sT0FBQXg4QixFQUFBaTBDLEVBQUE5RSxFQUFBNkMsS0FJ
QUEsRUFBQWg3QyxFQUFBd0ksTUFBQSxPQU9DMnFDLElObXhVS2tLLEtBQ0EsU0FBVXRqRCxFQUFR
bzVDLEdPcCtWeEJwNUMsRUFBQW81QyxRQUFBLFNBQUF1RCxFQUFBcjZDLEdBR0EsT0FGQWt2QixN
QUNBK3hCLEtBQ0EvZ0QsRUFBQSxFQUFpQkEsRUFBQUYsRUFBQUcsT0FBaUJELElBQUEsQ0FDbEMs
R0FBQUssR0FBQVAsRUFBQUUsR0FDQW9KLEVBQUEvSSxFQUFBLEdBQ0F5dEIsRUFBQXp0QixFQUFB
LEdBQ0FvNUMsRUFBQXA1QyxFQUFBLEdBQ0FrM0MsRUFBQWwzQyxFQUFBLEdBQ0FtZ0QsR0FDQXAz
QyxHQUFBK3dDLEVBQUEsSUFBQW42QyxFQUNBOHRCLE1BQ0EyckIsUUFDQWxDLFlBRUF3SixHQUFB
MzNDLEdBR0EyM0MsRUFBQTMzQyxHQUFBd3ZDLE1BQUEvekMsS0FBQTI3QyxHQUZBeHhCLEVBQUFu
cUIsS0FBQWs4QyxFQUFBMzNDLElBQW1DQSxLQUFBd3ZDLE9BQUE0SCxLQUtuQyxNQUFBeHhCIiwi
ZmlsZSI6InN0YXRpYy9qcy92ZW5kb3IuZTcwMDgwMDFhOGJlZDAwOWJiZjEuanMiLCJzb3VyY2Vz
Q29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzFdLHtcblxuLyoqKi8gXCI3K3VXXCI6XG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19l
eHBvcnRzX18sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogV0VCUEFDSyBW
QVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8qIVxuICogVnVlLmpzIHYyLjQuMlxu
ICogKGMpIDIwMTQtMjAxNyBFdmFuIFlvdVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNl
bnNlLlxuICovXG4vKiAgKi9cblxuLy8gdGhlc2UgaGVscGVycyBwcm9kdWNlcyBiZXR0ZXIgdm0g
Y29kZSBpbiBKUyBlbmdpbmVzIGR1ZSB0byB0aGVpclxuLy8gZXhwbGljaXRuZXNzIGFuZCBmdW5j
dGlvbiBpbmxpbmluZ1xuZnVuY3Rpb24gaXNVbmRlZiAodikge1xuICByZXR1cm4gdiA9PT0gdW5k
ZWZpbmVkIHx8IHYgPT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZWYgKHYpIHtcbiAgcmV0dXJu
IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSAodikg
e1xuICByZXR1cm4gdiA9PT0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBpc0ZhbHNlICh2KSB7XG4gIHJl
dHVybiB2ID09PSBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIHByaW1pdGl2
ZVxuICovXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB0
eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVy
JyB8fFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nXG4gIClcbn1cblxuLyoqXG4gKiBR
dWljayBvYmplY3QgY2hlY2sgLSB0aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGxcbiAqIE9i
amVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4gd2Uga25vdyB0aGUgdmFsdWVcbiAqIGlz
IGEgSlNPTi1jb21wbGlhbnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xu
ICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbnZh
ciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIFN0cmlj
dCBvYmplY3QgdHlwZSBjaGVjay4gT25seSByZXR1cm5zIHRydWVcbiAqIGZvciBwbGFpbiBKYXZh
U2NyaXB0IG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xuICBy
ZXR1cm4gX3RvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbn1cblxuZnVu
Y3Rpb24gaXNSZWdFeHAgKHYpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHYpID09PSAnW29i
amVjdCBSZWdFeHBdJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbCBpcyBhIHZhbGlkIGFycmF5
IGluZGV4LlxuICovXG5mdW5jdGlvbiBpc1ZhbGlkQXJyYXlJbmRleCAodmFsKSB7XG4gIHZhciBu
ID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gbiA+PSAwICYmIE1hdGguZmxvb3IobikgPT09
IG4gJiYgaXNGaW5pdGUodmFsKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSB0byBhIHN0
cmluZyB0aGF0IGlzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICovXG5mdW5jdGlvbiB0b1N0cmluZyAo
dmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbFxuICAgID8gJydcbiAgICA6IHR5cGVvZiB2YWwg
PT09ICdvYmplY3QnXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVsbCwgMilcbiAgICAg
IDogU3RyaW5nKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgaW5wdXQgdmFsdWUgdG8gYSBu
dW1iZXIgZm9yIHBlcnNpc3RlbmNlLlxuICogSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHJldHVy
biBvcmlnaW5hbCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyICh2YWwpIHtcbiAgdmFy
IG4gPSBwYXJzZUZsb2F0KHZhbCk7XG4gIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG5cbn1cblxu
LyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYg
YSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3Ry
LFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwg
bGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0
dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2
YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2
YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4g
Ki9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xu
XG4vKipcbiAqIENoZWNrIGlmIGEgYXR0cmlidXRlIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlLlxu
ICovXG52YXIgaXNSZXNlcnZlZEF0dHJpYnV0ZSA9IG1ha2VNYXAoJ2tleSxyZWYsc2xvdCxpcycp
O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXlcbiAqL1xuZnVuY3Rpb24g
cmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICB2YXIgaW5kZXgg
PSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJu
IGFyci5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hl
dGhlciB0aGUgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0
eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9i
aiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4v
KipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xu
ZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwp
O1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2Fj
aGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlc
bn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52
YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlv
biAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywg
YykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICog
Q2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rp
b24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNs
aWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICov
XG52YXIgaHlwaGVuYXRlUkUgPSAvKFteLV0pKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNh
Y2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZShoeXBoZW5h
dGVSRSwgJyQxLSQyJylcbiAgICAucmVwbGFjZShoeXBoZW5hdGVSRSwgJyQxLSQyJylcbiAgICAu
dG9Mb3dlckNhc2UoKVxufSk7XG5cbi8qKlxuICogU2ltcGxlIGJpbmQsIGZhc3RlciB0aGFuIG5h
dGl2ZVxuICovXG5mdW5jdGlvbiBiaW5kIChmbiwgY3R4KSB7XG4gIGZ1bmN0aW9uIGJvdW5kRm4g
KGEpIHtcbiAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGxcbiAgICAg
ID8gbCA+IDFcbiAgICAgICAgPyBmbi5hcHBseShjdHgsIGFyZ3VtZW50cylcbiAgICAgICAgOiBm
bi5jYWxsKGN0eCwgYSlcbiAgICAgIDogZm4uY2FsbChjdHgpXG4gIH1cbiAgLy8gcmVjb3JkIG9y
aWdpbmFsIGZuIGxlbmd0aFxuICBib3VuZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG4gIHJldHVy
biBib3VuZEZuXG59XG5cbi8qKlxuICogQ29udmVydCBhbiBBcnJheS1saWtlIG9iamVjdCB0byBh
IHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkgKGxpc3QsIHN0YXJ0KSB7XG4gIHN0
YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFyIGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0O1xuICB2YXIg
cmV0ID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcmV0W2ldID0gbGlzdFtp
ICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyoqXG4gKiBNaXggcHJvcGVydGll
cyBpbnRvIHRhcmdldCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodG8sIF9mcm9tKSB7
XG4gIGZvciAodmFyIGtleSBpbiBfZnJvbSkge1xuICAgIHRvW2tleV0gPSBfZnJvbVtrZXldO1xu
ICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIE1lcmdlIGFuIEFycmF5IG9mIE9iamVjdHMg
aW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0IChhcnIpIHtcbiAg
dmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xu
ICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9
XG4gIHJldHVybiByZXNcbn1cblxuLyoqXG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlvbi5cbiAqIFN0
dWJiaW5nIGFyZ3MgdG8gbWFrZSBGbG93IGhhcHB5IHdpdGhvdXQgbGVhdmluZyB1c2VsZXNzIHRy
YW5zcGlsZWQgY29kZVxuICogd2l0aCAuLi5yZXN0IChodHRwczovL2Zsb3cub3JnL2Jsb2cvMjAx
Ny8wNS8wNy9TdHJpY3QtRnVuY3Rpb24tQ2FsbC1Bcml0eS8pXG4gKi9cbmZ1bmN0aW9uIG5vb3Ag
KGEsIGIsIGMpIHt9XG5cbi8qKlxuICogQWx3YXlzIHJldHVybiBmYWxzZS5cbiAqL1xudmFyIG5v
ID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIGZhbHNlOyB9O1xuXG4vKipcbiAqIFJldHVy
biBzYW1lIHZhbHVlXG4gKi9cbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uIChfKSB7IHJldHVybiBf
OyB9O1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RhdGljIGtleXMgc3RyaW5nIGZyb20gY29tcGls
ZXIgbW9kdWxlcy5cbiAqL1xuZnVuY3Rpb24gZ2VuU3RhdGljS2V5cyAobW9kdWxlcykge1xuICBy
ZXR1cm4gbW9kdWxlcy5yZWR1Y2UoZnVuY3Rpb24gKGtleXMsIG0pIHtcbiAgICByZXR1cm4ga2V5
cy5jb25jYXQobS5zdGF0aWNLZXlzIHx8IFtdKVxuICB9LCBbXSkuam9pbignLCcpXG59XG5cbi8q
KlxuICogQ2hlY2sgaWYgdHdvIHZhbHVlcyBhcmUgbG9vc2VseSBlcXVhbCAtIHRoYXQgaXMsXG4g
KiBpZiB0aGV5IGFyZSBwbGFpbiBvYmplY3RzLCBkbyB0aGV5IGhhdmUgdGhlIHNhbWUgc2hhcGU/
XG4gKi9cbmZ1bmN0aW9uIGxvb3NlRXF1YWwgKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHsgcmV0
dXJuIHRydWUgfVxuICB2YXIgaXNPYmplY3RBID0gaXNPYmplY3QoYSk7XG4gIHZhciBpc09iamVj
dEIgPSBpc09iamVjdChiKTtcbiAgaWYgKGlzT2JqZWN0QSAmJiBpc09iamVjdEIpIHtcbiAgICB0
cnkge1xuICAgICAgdmFyIGlzQXJyYXlBID0gQXJyYXkuaXNBcnJheShhKTtcbiAgICAgIHZhciBp
c0FycmF5QiA9IEFycmF5LmlzQXJyYXkoYik7XG4gICAgICBpZiAoaXNBcnJheUEgJiYgaXNBcnJh
eUIpIHtcbiAgICAgICAgcmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KGZ1
bmN0aW9uIChlLCBpKSB7XG4gICAgICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoZSwgYltpXSlcbiAg
ICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIWlzQXJyYXlBICYmICFpc0FycmF5Qikge1xuICAg
ICAgICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgICAgdmFyIGtleXNCID0gT2Jq
ZWN0LmtleXMoYik7XG4gICAgICAgIHJldHVybiBrZXlzQS5sZW5ndGggPT09IGtleXNCLmxlbmd0
aCAmJiBrZXlzQS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGxvb3Nl
RXF1YWwoYVtrZXldLCBiW2tleV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAg
IH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xu
ICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEgJiYgIWlz
T2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9IGVsc2Ug
e1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZiAoYXJy
LCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBp
ZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9XG4gIHJldHVybiAt
MVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UuXG4g
Ki9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJu
IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtc
biAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBT
U1JfQVRUUiA9ICdkYXRhLXNlcnZlci1yZW5kZXJlZCc7XG5cbnZhciBBU1NFVF9UWVBFUyA9IFtc
biAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmlsdGVyJ1xuXTtcblxudmFyIExJ
RkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4gICdjcmVhdGVkJyxcbiAgJ2Jl
Zm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBkYXRlJyxcbiAgJ3VwZGF0ZWQn
LFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxuICAnYWN0aXZhdGVkJyxcbiAg
J2RlYWN0aXZhdGVkJ1xuXTtcblxuLyogICovXG5cbnZhciBjb25maWcgPSAoe1xuICAvKipcbiAg
ICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlvbnMpXG4g
ICAqL1xuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAg
LyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6
IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBv
biBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9k
dWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICov
XG4gIGRldnRvb2xzOiBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxu
ICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2Us
XG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xu
ICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIFdhcm4gaGFuZGxlciBmb3Igd2F0
Y2hlciB3YXJuc1xuICAgKi9cbiAgd2FybkhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIEln
bm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBb
XSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICov
XG4gIGtleUNvZGVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBDaGVjayBp
ZiBhIHRhZyBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSByZWdpc3RlcmVkIGFzIGFc
biAgICogY29tcG9uZW50LiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92
ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZFRhZzogbm8sXG5cbiAgLyoqXG4gICAqIENo
ZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBzbyB0aGF0IGl0IGNhbm5vdCBiZSB1c2Vk
IGFzIGEgY29tcG9uZW50XG4gICAqIHByb3AuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFu
ZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkQXR0cjogbm8sXG5cbiAg
LyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIGFuIHVua25vd24gZWxlbWVudC5cbiAgICogUGxh
dGZvcm0tZGVwZW5kZW50LlxuICAgKi9cbiAgaXNVbmtub3duRWxlbWVudDogbm8sXG5cbiAgLyoq
XG4gICAqIEdldCB0aGUgbmFtZXNwYWNlIG9mIGFuIGVsZW1lbnRcbiAgICovXG4gIGdldFRhZ05h
bWVzcGFjZTogbm9vcCxcblxuICAvKipcbiAgICogUGFyc2UgdGhlIHJlYWwgdGFnIG5hbWUgZm9y
IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybS5cbiAgICovXG4gIHBhcnNlUGxhdGZvcm1UYWdOYW1lOiBp
ZGVudGl0eSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIG11c3QgYmUgYm91
bmQgdXNpbmcgcHJvcGVydHksIGUuZy4gdmFsdWVcbiAgICogUGxhdGZvcm0tZGVwZW5kZW50Llxu
ICAgKi9cbiAgbXVzdFVzZVByb3A6IG5vLFxuXG4gIC8qKlxuICAgKiBFeHBvc2VkIGZvciBsZWdh
Y3kgcmVhc29uc1xuICAgKi9cbiAgX2xpZmVjeWNsZUhvb2tzOiBMSUZFQ1lDTEVfSE9PS1Ncbn0p
O1xuXG4vKiAgKi9cblxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG5cbi8q
KlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9u
IGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtc
biAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBh
IHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUp
IHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxc
biAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAg
Y29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRo
LlxuICovXG52YXIgYmFpbFJFID0gL1teXFx3LiRdLztcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0
aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIg
c2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYg
KCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxu
ICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4gPSBub29wO1xudmFy
IHRpcCA9IG5vb3A7XG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9IChudWxsKTsgLy8gd29yayBh
cm91bmQgZmxvdyBjaGVja1xuXG5pZiAoZmFsc2UpIHtcbiAgdmFyIGhhc0NvbnNvbGUgPSB0eXBl
b2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFzc2lmeVJFID0gLyg/Ol58Wy1f
XSkoXFx3KS9nO1xuICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHJc
biAgICAucmVwbGFjZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50b1VwcGVy
Q2FzZSgpOyB9KVxuICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsgfTtcblxuICB3YXJuID0gZnVu
Y3Rpb24gKG1zZywgdm0pIHtcbiAgICB2YXIgdHJhY2UgPSB2bSA/IGdlbmVyYXRlQ29tcG9uZW50
VHJhY2Uodm0pIDogJyc7XG5cbiAgICBpZiAoY29uZmlnLndhcm5IYW5kbGVyKSB7XG4gICAgICBj
b25maWcud2FybkhhbmRsZXIuY2FsbChudWxsLCBtc2csIHZtLCB0cmFjZSk7XG4gICAgfSBlbHNl
IGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJy
b3IoKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyB0cmFjZSkpO1xuICAgIH1cbiAgfTtcblxuICB0
aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmln
LnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAo
XG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7
XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGlu
Y2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkge1xuICAgICAgcmV0dXJuICc8
Um9vdD4nXG4gICAgfVxuICAgIHZhciBuYW1lID0gdHlwZW9mIHZtID09PSAnc3RyaW5nJ1xuICAg
ICAgPyB2bVxuICAgICAgOiB0eXBlb2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0ub3B0aW9uc1xu
ICAgICAgICA/IHZtLm9wdGlvbnMubmFtZVxuICAgICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICAg
ID8gdm0uJG9wdGlvbnMubmFtZSB8fCB2bS4kb3B0aW9ucy5fY29tcG9uZW50VGFnXG4gICAgICAg
ICAgOiB2bS5uYW1lO1xuXG4gICAgdmFyIGZpbGUgPSB2bS5faXNWdWUgJiYgdm0uJG9wdGlvbnMu
X19maWxlO1xuICAgIGlmICghbmFtZSAmJiBmaWxlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBmaWxl
Lm1hdGNoKC8oW14vXFxcXF0rKVxcLnZ1ZSQvKTtcbiAgICAgIG5hbWUgPSBtYXRjaCAmJiBtYXRj
aFsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKG5hbWUgPyAoXCI8XCIgKyAoY2xh
c3NpZnkobmFtZSkpICsgXCI+XCIpIDogXCI8QW5vbnltb3VzPlwiKSArXG4gICAgICAoZmlsZSAm
JiBpbmNsdWRlRmlsZSAhPT0gZmFsc2UgPyAoXCIgYXQgXCIgKyBmaWxlKSA6ICcnKVxuICAgIClc
biAgfTtcblxuICB2YXIgcmVwZWF0ID0gZnVuY3Rpb24gKHN0ciwgbikge1xuICAgIHZhciByZXMg
PSAnJztcbiAgICB3aGlsZSAobikge1xuICAgICAgaWYgKG4gJSAyID09PSAxKSB7IHJlcyArPSBz
dHI7IH1cbiAgICAgIGlmIChuID4gMSkgeyBzdHIgKz0gc3RyOyB9XG4gICAgICBuID4+PSAxO1xu
ICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH07XG5cbiAgdmFyIGdlbmVyYXRlQ29tcG9uZW50VHJh
Y2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtc
biAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNl
ID0gMDtcbiAgICAgIHdoaWxlICh2bSkge1xuICAgICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7
XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAg
aWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBj
dXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtc
biAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJz
aXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBb
bGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1
cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyZWUu
cHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVy
biAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2
bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1
ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZtKVxuICAgICAgICAgICAgPyAoKGZvcm1hdENv
bXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUg
Y2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4g
ICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxu
KGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1c
biAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZv
KSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAgY29uZmlnLmVycm9ySGFuZGxl
ci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pO1xuICB9IGVsc2Uge1xuICAgIGlmIChmYWxzZSkg
e1xuICAgICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBcIjogXFxcIlwiICsgKGVyci50
b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgZWxzZSAqL1xuICAgIGlmIChpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRl
ZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8qIGdsb2JhbHMgTXV0YXRpb25P
YnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9cbnZhciBoYXNQcm90byA9ICdf
X3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25tZW50IHNuaWZmaW5nXG52YXIg
aW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgVUEgPSBpbkJy
b3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZhciBp
c0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAmJiBV
QS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRleE9m
KCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lk
JykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KFVB
KTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNF
ZGdlO1xuXG4vLyBGaXJlZml4IGhhcyBhIFwid2F0Y2hcIiBmdW5jdGlvbiBvbiBPYmplY3QucHJv
dG90eXBlLi4uXG52YXIgbmF0aXZlV2F0Y2ggPSAoe30pLndhdGNoO1xuXG52YXIgc3VwcG9ydHNQ
YXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMg
PSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAg
ICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pKTsg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUnLCBudWxsLCBvcHRzKTtcbiAgfSBjYXRj
aCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1
ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVyLXJlbmRlcmVyIGNhbiBzZXQg
VlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1bmN0aW9u
ICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwg
aWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIgJiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3Vu
ZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVzZW5jZSBvZiB2dWUtc2VydmVyLXJlbmRl
cmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBzaGltbWluZyB0aGUgcHJvY2Vzc1xuICAg
ICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10uZW52LlZVRV9FTlYgPT09ICdzZXJ2ZXIn
O1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAg
cmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0IGRldnRvb2xzXG52YXIgZGV2dG9vbHMg
PSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG5cbi8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpc05hdGl2ZSAoQ3Rvcikge1xuICBy
ZXR1cm4gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KEN0
b3IudG9TdHJpbmcoKSlcbn1cblxudmFyIGhhc1N5bWJvbCA9XG4gIHR5cGVvZiBTeW1ib2wgIT09
ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFN5bWJvbCkgJiZcbiAgdHlwZW9mIFJlZmxlY3QgIT09
ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFJlZmxlY3Qub3duS2V5cyk7XG5cbi8qKlxuICogRGVm
ZXIgYSB0YXNrIHRvIGV4ZWN1dGUgaXQgYXN5bmNocm9ub3VzbHkuXG4gKi9cbnZhciBuZXh0VGlj
ayA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsYmFja3MgPSBbXTtcbiAgdmFyIHBlbmRpbmcg
PSBmYWxzZTtcbiAgdmFyIHRpbWVyRnVuYztcblxuICBmdW5jdGlvbiBuZXh0VGlja0hhbmRsZXIg
KCkge1xuICAgIHBlbmRpbmcgPSBmYWxzZTtcbiAgICB2YXIgY29waWVzID0gY2FsbGJhY2tzLnNs
aWNlKDApO1xuICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29waWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb3BpZXNbaV0oKTtcbiAgICB9XG4gIH1c
blxuICAvLyB0aGUgbmV4dFRpY2sgYmVoYXZpb3IgbGV2ZXJhZ2VzIHRoZSBtaWNyb3Rhc2sgcXVl
dWUsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZFxuICAvLyB2aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNl
LnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbiAgLy8gTXV0YXRpb25PYnNlcnZlciBoYXMgd2lk
ZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBpcyBzZXJpb3VzbHkgYnVnZ2VkIGluXG4gIC8vIFVJV2Vi
VmlldyBpbiBpT1MgPj0gOS4zLjMgd2hlbiB0cmlnZ2VyZWQgaW4gdG91Y2ggZXZlbnQgaGFuZGxl
cnMuIEl0XG4gIC8vIGNvbXBsZXRlbHkgc3RvcHMgd29ya2luZyBhZnRlciB0cmlnZ2VyaW5nIGEg
ZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbiAgLy8gUHJvbWlzZSBpcyBhdmFpbGFibGUsIHdl
IHdpbGwgdXNlIGl0OlxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBQ
cm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm9taXNlKSkge1xuICAgIHZhciBw
ID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdmFyIGxvZ0Vycm9yID0gZnVuY3Rpb24gKGVycikg
eyBjb25zb2xlLmVycm9yKGVycik7IH07XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xu
ICAgICAgcC50aGVuKG5leHRUaWNrSGFuZGxlcikuY2F0Y2gobG9nRXJyb3IpO1xuICAgICAgLy8g
aW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlzZS50aGVuIGRvZXNuJ3QgY29tcGxldGVs
eSBicmVhaywgYnV0XG4gICAgICAvLyBpdCBjYW4gZ2V0IHN0dWNrIGluIGEgd2VpcmQgc3RhdGUg
d2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0aGVcbiAgICAgIC8vIG1pY3JvdGFzayBx
dWV1ZSBidXQgdGhlIHF1ZXVlIGlzbid0IGJlaW5nIGZsdXNoZWQsIHVudGlsIHRoZSBicm93c2Vy
XG4gICAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVyIHdvcmssIGUuZy4gaGFuZGxlIGEgdGlt
ZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAgIC8vIFwiZm9yY2VcIiB0aGUgbWljcm90YXNrIHF1
ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVtcHR5IHRpbWVyLlxuICAgICAgaWYgKGlz
SU9TKSB7IHNldFRpbWVvdXQobm9vcCk7IH1cbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBN
dXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNOYXRpdmUoTXV0YXRp
b25PYnNlcnZlcikgfHxcbiAgICAvLyBQaGFudG9tSlMgYW5kIGlPUyA3LnhcbiAgICBNdXRhdGlv
bk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1
Y3Rvcl0nXG4gICkpIHtcbiAgICAvLyB1c2UgTXV0YXRpb25PYnNlcnZlciB3aGVyZSBuYXRpdmUg
UHJvbWlzZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgIC8vIGUuZy4gUGhhbnRvbUpTIElFMTEsIGlP
UzcsIEFuZHJvaWQgNC40XG4gICAgdmFyIGNvdW50ZXIgPSAxO1xuICAgIHZhciBvYnNlcnZlciA9
IG5ldyBNdXRhdGlvbk9ic2VydmVyKG5leHRUaWNrSGFuZGxlcik7XG4gICAgdmFyIHRleHROb2Rl
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGNvdW50ZXIpKTtcbiAgICBvYnNlcnZl
ci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgfSk7
XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgY291bnRlciA9IChjb3VudGVy
ICsgMSkgJSAyO1xuICAgICAgdGV4dE5vZGUuZGF0YSA9IFN0cmluZyhjb3VudGVyKTtcbiAgICB9
O1xuICB9IGVsc2Uge1xuICAgIC8vIGZhbGxiYWNrIHRvIHNldFRpbWVvdXRcbiAgICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAg
IHNldFRpbWVvdXQobmV4dFRpY2tIYW5kbGVyLCAwKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJu
IGZ1bmN0aW9uIHF1ZXVlTmV4dFRpY2sgKGNiLCBjdHgpIHtcbiAgICB2YXIgX3Jlc29sdmU7XG4g
ICAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGNiKSB7XG4gICAgICAg
IHRyeSB7XG4gICAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4g
ICAgICAgICAgaGFuZGxlRXJyb3IoZSwgY3R4LCAnbmV4dFRpY2snKTtcbiAgICAgICAgfVxuICAg
ICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAgICBfcmVzb2x2ZShjdHgpO1xuICAgICAg
fVxuICAgIH0pO1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IHRydWU7XG4g
ICAgICB0aW1lckZ1bmMoKTtcbiAgICB9XG4gICAgaWYgKCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAh
PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVz
b2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIH0pXG4g
ICAgfVxuICB9XG59KSgpO1xuXG52YXIgX1NldDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xu
aWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFNldCkpIHtcbiAgLy8g
dXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUuXG4gIF9TZXQgPSBTZXQ7XG59IGVsc2Uge1xu
ICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZpbGwgdGhhdCBvbmx5IHdvcmtzIHdpdGggcHJp
bWl0aXZlIGtleXMuXG4gIF9TZXQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNldCAo
KSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICAgIFNl
dC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlz
LnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0
aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtrZXldID0gdHJ1ZTtcbiAgICB9O1xuICAg
IFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhciAoKSB7XG4gICAgICB0aGlzLnNl
dCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtcblxuICAgIHJldHVybiBTZXQ7XG4gIH0o
KSk7XG59XG5cbi8qICAqL1xuXG5cbnZhciB1aWQgPSAwO1xuXG4vKipcbiAqIEEgZGVwIGlzIGFu
IG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZVxuICogZGlyZWN0aXZlcyBzdWJzY3Jp
YmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0aW9uIERlcCAoKSB7XG4gIHRoaXMuaWQg
PSB1aWQrKztcbiAgdGhpcy5zdWJzID0gW107XG59O1xuXG5EZXAucHJvdG90eXBlLmFkZFN1YiA9
IGZ1bmN0aW9uIGFkZFN1YiAoc3ViKSB7XG4gIHRoaXMuc3Vicy5wdXNoKHN1Yik7XG59O1xuXG5E
ZXAucHJvdG90eXBlLnJlbW92ZVN1YiA9IGZ1bmN0aW9uIHJlbW92ZVN1YiAoc3ViKSB7XG4gIHJl
bW92ZSh0aGlzLnN1YnMsIHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0
aW9uIGRlcGVuZCAoKSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgRGVwLnRhcmdldC5hZGRE
ZXAodGhpcyk7XG4gIH1cbn07XG5cbkRlcC5wcm90b3R5cGUubm90aWZ5ID0gZnVuY3Rpb24gbm90
aWZ5ICgpIHtcbiAgLy8gc3RhYmlsaXplIHRoZSBzdWJzY3JpYmVyIGxpc3QgZmlyc3RcbiAgdmFy
IHN1YnMgPSB0aGlzLnN1YnMuc2xpY2UoKTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxl
bmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0udXBkYXRlKCk7XG4gIH1cbn07XG5cbi8v
IHRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZC5cbi8vIHRoaXMgaXMg
Z2xvYmFsbHkgdW5pcXVlIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb25seSBvbmVcbi8vIHdhdGNo
ZXIgYmVpbmcgZXZhbHVhdGVkIGF0IGFueSB0aW1lLlxuRGVwLnRhcmdldCA9IG51bGw7XG52YXIg
dGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVzaFRhcmdldCAoX3RhcmdldCkge1xuICBp
ZiAoRGVwLnRhcmdldCkgeyB0YXJnZXRTdGFjay5wdXNoKERlcC50YXJnZXQpOyB9XG4gIERlcC50
YXJnZXQgPSBfdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuICBEZXAudGFy
Z2V0ID0gdGFyZ2V0U3RhY2sucG9wKCk7XG59XG5cbi8qXG4gKiBub3QgdHlwZSBjaGVja2luZyB0
aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNh
bGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlwZVxuICovXG5cbnZhciBhcnJh
eVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFycmF5TWV0aG9kcyA9IE9iamVjdC5jcmVh
dGUoYXJyYXlQcm90byk7W1xuICAncHVzaCcsXG4gICdwb3AnLFxuICAnc2hpZnQnLFxuICAndW5z
aGlmdCcsXG4gICdzcGxpY2UnLFxuICAnc29ydCcsXG4gICdyZXZlcnNlJ1xuXVxuLmZvckVhY2go
ZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBvcmlnaW5hbCBtZXRob2RcbiAgdmFyIG9y
aWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBkZWYoYXJyYXlNZXRob2RzLCBtZXRob2Qs
IGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50
cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBs
ZW4gXTtcblxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAg
ICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNoICht
ZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAg
ICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6
XG4gICAgICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9
XG4gICAgaWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAv
LyBub3RpZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRc
biAgfSk7XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHdoZW4gYSBy
ZWFjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQsIHRoZSBuZXcgdmFsdWUgaXNcbiAqIGFsc28gY29udmVy
dGVkIHRvIGJlY29tZSByZWFjdGl2ZS4gSG93ZXZlciB3aGVuIHBhc3NpbmcgZG93biBwcm9wcyxc
biAqIHdlIGRvbid0IHdhbnQgdG8gZm9yY2UgY29udmVyc2lvbiBiZWNhdXNlIHRoZSB2YWx1ZSBt
YXkgYmUgYSBuZXN0ZWQgdmFsdWVcbiAqIHVuZGVyIGEgZnJvemVuIGRhdGEgc3RydWN0dXJlLiBD
b252ZXJ0aW5nIGl0IHdvdWxkIGRlZmVhdCB0aGUgb3B0aW1pemF0aW9uLlxuICovXG52YXIgb2Jz
ZXJ2ZXJTdGF0ZSA9IHtcbiAgc2hvdWxkQ29udmVydDogdHJ1ZVxufTtcblxuLyoqXG4gKiBPYnNl
cnZlciBjbGFzcyB0aGF0IGFyZSBhdHRhY2hlZCB0byBlYWNoIG9ic2VydmVkXG4gKiBvYmplY3Qu
IE9uY2UgYXR0YWNoZWQsIHRoZSBvYnNlcnZlciBjb252ZXJ0cyB0YXJnZXRcbiAqIG9iamVjdCdz
IHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0XG4gKiBjb2xsZWN0IGRlcGVu
ZGVuY2llcyBhbmQgZGlzcGF0Y2hlcyB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBmdW5j
dGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLmRl
cCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19vYl9f
JywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhciBhdWdtZW50
ID0gaGFzUHJvdG9cbiAgICAgID8gcHJvdG9BdWdtZW50XG4gICAgICA6IGNvcHlBdWdtZW50O1xu
ICAgIGF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICB0aGlzLm9i
c2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtcbiAg
fVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBhbmQgY29udmVydCB0
aGVtIGludG9cbiAqIGdldHRlci9zZXR0ZXJzLiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBj
YWxsZWQgd2hlblxuICogdmFsdWUgdHlwZSBpcyBPYmplY3QuXG4gKi9cbk9ic2VydmVyLnByb3Rv
dHlwZS53YWxrID0gZnVuY3Rpb24gd2FsayAob2JqKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0Lmtl
eXMob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAg
ZGVmaW5lUmVhY3RpdmUkJDEob2JqLCBrZXlzW2ldLCBvYmpba2V5c1tpXV0pO1xuICB9XG59O1xu
XG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1zLlxuICovXG5PYnNlcnZlci5w
cm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2ZUFycmF5IChpdGVtcykge1xu
ICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9i
c2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJzXG5cbi8qKlxuICogQXVnbWVu
dCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGludGVyY2VwdGluZ1xuICogdGhlIHByb3Rv
dHlwZSBjaGFpbiB1c2luZyBfX3Byb3RvX19cbiAqL1xuZnVuY3Rpb24gcHJvdG9BdWdtZW50ICh0
YXJnZXQsIHNyYywga2V5cykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuICB0
YXJnZXQuX19wcm90b19fID0gc3JjO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXByb3RvICovXG59
XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmluaW5n
XG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9c
bmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBp
ID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNb
aV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBB
dHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJl
dHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0
aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xu
ZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVjdCh2
YWx1ZSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUs
ICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9i
ID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxk
Q29udmVydCAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJy
YXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVu
c2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBP
YnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52
bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3Rp
dmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQk
MSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlcixcbiAgc2hhbGxvd1xu
KSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9w
ZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBj
YXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3Bl
cnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5
LnNldDtcblxuICB2YXIgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9ic2VydmUodmFsKTtcbiAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAg
ICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiByZWFjdGl2ZUdldHRlciAo
KSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xu
ICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAgICAgICBp
ZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAgICAgICB9
XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGRlcGVuZEFy
cmF5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAg
fSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAgICAgIHZh
ciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAvKiBlc2xp
bnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09IHZhbHVl
IHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHJl
dHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9c
biAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAgIH1cbiAg
ICAgIGlmIChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwpO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAgY2hpbGRP
YiA9ICFzaGFsbG93ICYmIG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAg
ICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRk
cyB0aGUgbmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBp
ZiB0aGUgcHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24g
c2V0ICh0YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYg
aXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0
YXJnZXQubGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2YWwpO1xuICAg
IHJldHVybiB2YWxcbiAgfVxuICBpZiAoaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHRhcmdl
dFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0KS5f
X29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAg
IFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBh
ZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAk
ZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZyb250IGluIHRoZSBk
YXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKCFvYikge1xu
ICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBkZWZpbmVSZWFj
dGl2ZSQkMShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAubm90aWZ5KCk7XG4gIHJldHVy
biB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBhbmQgdHJpZ2dlciBjaGFuZ2Ug
aWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdldCwga2V5KSB7XG4gIGlmIChB
cnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRh
cmdldC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0
KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xu
ICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9p
ZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRh
ICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVsbC4nXG4gICAgKTtcbiAgICByZXR1cm5c
biAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICBk
ZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtcbiAgICByZXR1cm5cbiAgfVxuICBvYi5k
ZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVjdCBkZXBlbmRlbmNpZXMgb24gYXJyYXkg
ZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2luY2VcbiAqIHdlIGNhbm5vdCBp
bnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlrZSBwcm9wZXJ0eSBnZXR0ZXJzLlxuICov
XG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcbiAgZm9yICh2YXIgZSA9ICh2b2lkIDAp
LCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGUgPSB2YWx1ZVtp
XTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9fLmRlcC5kZXBlbmQoKTtcbiAgICBpZiAo
QXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5kQXJyYXkoZSk7XG4gICAgfVxuICB9XG59
XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVyd3JpdGluZyBzdHJhdGVnaWVzIGFyZSBm
dW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBtZXJnZSBhIHBhcmVudCBvcHRpb24gdmFs
dWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBpbnRvIHRoZSBmaW5hbCB2YWx1ZS5cbiAq
L1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7XG5cbi8qKlxuICog
T3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5pZiAoZmFsc2UpIHtcbiAgc3RyYXRzLmVs
ID0gc3RyYXRzLnByb3BzRGF0YSA9IGZ1bmN0aW9uIChwYXJlbnQsIGNoaWxkLCB2bSwga2V5KSB7
XG4gICAgaWYgKCF2bSkge1xuICAgICAgd2FybihcbiAgICAgICAgXCJvcHRpb24gXFxcIlwiICsg
a2V5ICsgXCJcXFwiIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGluc3RhbmNlIFwiICtcbiAgICAg
ICAgJ2NyZWF0aW9uIHdpdGggdGhlIGBuZXdgIGtleXdvcmQuJ1xuICAgICAgKTtcbiAgICB9XG4g
ICAgcmV0dXJuIGRlZmF1bHRTdHJhdChwYXJlbnQsIGNoaWxkKVxuICB9O1xufVxuXG4vKipcbiAq
IEhlbHBlciB0aGF0IHJlY3Vyc2l2ZWx5IG1lcmdlcyB0d28gZGF0YSBvYmplY3RzIHRvZ2V0aGVy
LlxuICovXG5mdW5jdGlvbiBtZXJnZURhdGEgKHRvLCBmcm9tKSB7XG4gIGlmICghZnJvbSkgeyBy
ZXR1cm4gdG8gfVxuICB2YXIga2V5LCB0b1ZhbCwgZnJvbVZhbDtcbiAgdmFyIGtleXMgPSBPYmpl
Y3Qua2V5cyhmcm9tKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7
XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICB0b1ZhbCA9IHRvW2tleV07XG4gICAgZnJvbVZhbCA9
IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5KSkge1xuICAgICAgc2V0KHRvLCBr
ZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh0b1ZhbCkgJiYgaXNQ
bGFpbk9iamVjdChmcm9tVmFsKSkge1xuICAgICAgbWVyZ2VEYXRhKHRvVmFsLCBmcm9tVmFsKTtc
biAgICB9XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICogRGF0YVxuICovXG5mdW5jdGlv
biBtZXJnZURhdGFPckZuIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xu
ICBpZiAoIXZtKSB7XG4gICAgLy8gaW4gYSBWdWUuZXh0ZW5kIG1lcmdlLCBib3RoIHNob3VsZCBi
ZSBmdW5jdGlvbnNcbiAgICBpZiAoIWNoaWxkVmFsKSB7XG4gICAgICByZXR1cm4gcGFyZW50VmFs
XG4gICAgfVxuICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICByZXR1cm4gY2hpbGRWYWxcbiAg
ICB9XG4gICAgLy8gd2hlbiBwYXJlbnRWYWwgJiBjaGlsZFZhbCBhcmUgYm90aCBwcmVzZW50LFxu
ICAgIC8vIHdlIG5lZWQgdG8gcmV0dXJuIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZVxuICAg
IC8vIG1lcmdlZCByZXN1bHQgb2YgYm90aCBmdW5jdGlvbnMuLi4gbm8gbmVlZCB0b1xuICAgIC8v
IGNoZWNrIGlmIHBhcmVudFZhbCBpcyBhIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZVxuICAgIC8vIGl0
IGhhcyB0byBiZSBhIGZ1bmN0aW9uIHRvIHBhc3MgcHJldmlvdXMgbWVyZ2VzLlxuICAgIHJldHVy
biBmdW5jdGlvbiBtZXJnZWREYXRhRm4gKCkge1xuICAgICAgcmV0dXJuIG1lcmdlRGF0YShcbiAg
ICAgICAgdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nID8gY2hpbGRWYWwuY2FsbCh0aGlz
KSA6IGNoaWxkVmFsLFxuICAgICAgICB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nID8g
cGFyZW50VmFsLmNhbGwodGhpcykgOiBwYXJlbnRWYWxcbiAgICAgIClcbiAgICB9XG4gIH0gZWxz
ZSBpZiAocGFyZW50VmFsIHx8IGNoaWxkVmFsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdl
ZEluc3RhbmNlRGF0YUZuICgpIHtcbiAgICAgIC8vIGluc3RhbmNlIG1lcmdlXG4gICAgICB2YXIg
aW5zdGFuY2VEYXRhID0gdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8g
Y2hpbGRWYWwuY2FsbCh2bSlcbiAgICAgICAgOiBjaGlsZFZhbDtcbiAgICAgIHZhciBkZWZhdWx0
RGF0YSA9IHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBwYXJlbnRW
YWwuY2FsbCh2bSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoaW5zdGFuY2VEYXRh
KSB7XG4gICAgICAgIHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VEYXRhLCBkZWZhdWx0RGF0YSlc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RGF0YVxuICAgICAgfVxuICAg
IH1cbiAgfVxufVxuXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBj
aGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgaWYgKGNoaWxkVmFsICYmIHR5
cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgXCJwcm9kdWN0aW9uXCIgIT09
ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnVGhlIFwiZGF0YVwiIG9wdGlvbiBzaG91
bGQgYmUgYSBmdW5jdGlvbiAnICtcbiAgICAgICAgJ3RoYXQgcmV0dXJucyBhIHBlci1pbnN0YW5j
ZSB2YWx1ZSBpbiBjb21wb25lbnQgJyArXG4gICAgICAgICdkZWZpbml0aW9ucy4nLFxuICAgICAg
ICB2bVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICByZXR1
cm4gbWVyZ2VEYXRhT3JGbi5jYWxsKHRoaXMsIHBhcmVudFZhbCwgY2hpbGRWYWwpXG4gIH1cblxu
ICByZXR1cm4gbWVyZ2VEYXRhT3JGbihwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSlcbn07XG5cbi8q
KlxuICogSG9va3MgYW5kIHByb3BzIGFyZSBtZXJnZWQgYXMgYXJyYXlzLlxuICovXG5mdW5jdGlv
biBtZXJnZUhvb2sgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsXG4pIHtcbiAgcmV0dXJuIGNo
aWxkVmFsXG4gICAgPyBwYXJlbnRWYWxcbiAgICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZh
bClcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZFZhbClcbiAgICAgICAgPyBjaGlsZFZhbFxu
ICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICA6IHBhcmVudFZhbFxufVxuXG5MSUZFQ1lDTEVfSE9P
S1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7
XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5z
dGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3
ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQg
b3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMgKHBhcmVudFZhbCwgY2hpbGRWYWwp
IHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICByZXR1
cm4gY2hpbGRWYWxcbiAgICA/IGV4dGVuZChyZXMsIGNoaWxkVmFsKVxuICAgIDogcmVzXG59XG5c
bkFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgc3RyYXRzW3R5cGUgKyAn
cyddID0gbWVyZ2VBc3NldHM7XG59KTtcblxuLyoqXG4gKiBXYXRjaGVycy5cbiAqXG4gKiBXYXRj
aGVycyBoYXNoZXMgc2hvdWxkIG5vdCBvdmVyd3JpdGUgb25lXG4gKiBhbm90aGVyLCBzbyB3ZSBt
ZXJnZSB0aGVtIGFzIGFycmF5cy5cbiAqL1xuc3RyYXRzLndhdGNoID0gZnVuY3Rpb24gKHBhcmVu
dFZhbCwgY2hpbGRWYWwpIHtcbiAgLy8gd29yayBhcm91bmQgRmlyZWZveCdzIE9iamVjdC5wcm90
b3R5cGUud2F0Y2guLi5cbiAgaWYgKHBhcmVudFZhbCA9PT0gbmF0aXZlV2F0Y2gpIHsgcGFyZW50
VmFsID0gdW5kZWZpbmVkOyB9XG4gIGlmIChjaGlsZFZhbCA9PT0gbmF0aXZlV2F0Y2gpIHsgY2hp
bGRWYWwgPSB1bmRlZmluZWQ7IH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICgh
Y2hpbGRWYWwpIHsgcmV0dXJuIE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpIH1cbiAg
aWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IHt9O1xuICBl
eHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3IgKHZhciBrZXkgaW4gY2hpbGRWYWwpIHtcbiAg
ICB2YXIgcGFyZW50ID0gcmV0W2tleV07XG4gICAgdmFyIGNoaWxkID0gY2hpbGRWYWxba2V5XTtc
biAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0FycmF5KHBhcmVudCkpIHtcbiAgICAgIHBhcmVu
dCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRba2V5XSA9IHBhcmVudFxuICAgICAgPyBwYXJl
bnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkKSA/IGNoaWxkIDog
W2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAqIE90aGVyIG9iamVjdCBo
YXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9XG5zdHJhdHMubWV0aG9kcyA9XG5zdHJhdHMuaW5q
ZWN0ID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7
XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBpZiAoY2hpbGRW
YWwpIHsgZXh0ZW5kKHJldCwgY2hpbGRWYWwpOyB9XG4gIHJldHVybiByZXRcbn07XG5zdHJhdHMu
cHJvdmlkZSA9IG1lcmdlRGF0YU9yRm47XG5cbi8qKlxuICogRGVmYXVsdCBzdHJhdGVneS5cbiAq
L1xudmFyIGRlZmF1bHRTdHJhdCA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4g
IHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBwYXJlbnRWYWxcbiAgICA6IGNo
aWxkVmFsXG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGNvbXBvbmVudCBuYW1lc1xuICovXG5mdW5j
dGlvbiBjaGVja0NvbXBvbmVudHMgKG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGluIG9wdGlv
bnMuY29tcG9uZW50cykge1xuICAgIHZhciBsb3dlciA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAg
IGlmIChpc0J1aWx0SW5UYWcobG93ZXIpIHx8IGNvbmZpZy5pc1Jlc2VydmVkVGFnKGxvd2VyKSkg
e1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQg
SFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICdpZDogJyArIGtleVxuICAg
ICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUgYWxsIHByb3BzIG9wdGlvbiBz
eW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAqIE9iamVjdC1iYXNlZCBmb3JtYXQuXG4g
Ki9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRpb25zKSB7XG4gIHZhciBwcm9wcyA9IG9w
dGlvbnMucHJvcHM7XG4gIGlmICghcHJvcHMpIHsgcmV0dXJuIH1cbiAgdmFyIHJlcyA9IHt9O1xu
ICB2YXIgaSwgdmFsLCBuYW1lO1xuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcykpIHtcbiAgICBp
ID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHZhbCA9IHByb3BzW2ld
O1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5hbWUgPSBj
YW1lbGl6ZSh2YWwpO1xuICAgICAgICByZXNbbmFtZV0gPSB7IHR5cGU6IG51bGwgfTtcbiAgICAg
IH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgd2FybigncHJvcHMgbXVzdCBiZSBzdHJpbmdz
IHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlm
IChpc1BsYWluT2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xu
ICAgICAgdmFsID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBjYW1lbGl6ZShrZXkpO1xuICAg
ICAgcmVzW25hbWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gdmFsXG4gICAgICAg
IDogeyB0eXBlOiB2YWwgfTtcbiAgICB9XG4gIH1cbiAgb3B0aW9ucy5wcm9wcyA9IHJlcztcbn1c
blxuLyoqXG4gKiBOb3JtYWxpemUgYWxsIGluamVjdGlvbnMgaW50byBPYmplY3QtYmFzZWQgZm9y
bWF0XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdCAob3B0aW9ucykge1xuICB2YXIgaW5q
ZWN0ID0gb3B0aW9ucy5pbmplY3Q7XG4gIGlmIChBcnJheS5pc0FycmF5KGluamVjdCkpIHtcbiAg
ICB2YXIgbm9ybWFsaXplZCA9IG9wdGlvbnMuaW5qZWN0ID0ge307XG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBpbmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vcm1hbGl6ZWRbaW5qZWN0W2ld
XSA9IGluamVjdFtpXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgcmF3IGZ1
bmN0aW9uIGRpcmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3Jt
YWxpemVEaXJlY3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJzID0gb3B0aW9ucy5kaXJlY3Rp
dmVzO1xuICBpZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBpbiBkaXJzKSB7XG4gICAgICB2
YXIgZGVmID0gZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicp
IHtcbiAgICAgICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYsIHVwZGF0ZTogZGVmIH07XG4gICAg
ICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgdHdvIG9wdGlvbiBvYmplY3RzIGlu
dG8gYSBuZXcgb25lLlxuICogQ29yZSB1dGlsaXR5IHVzZWQgaW4gYm90aCBpbnN0YW50aWF0aW9u
IGFuZCBpbmhlcml0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VPcHRpb25zIChcbiAgcGFyZW50
LFxuICBjaGlsZCxcbiAgdm1cbikge1xuICBpZiAoZmFsc2UpIHtcbiAgICBjaGVja0NvbXBvbmVu
dHMoY2hpbGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ2Z1bmN0aW9uJykge1xu
ICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxuXG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxk
KTtcbiAgbm9ybWFsaXplSW5qZWN0KGNoaWxkKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGls
ZCk7XG4gIHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7XG4gIGlmIChleHRlbmRzRnJv
bSkge1xuICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGV4dGVuZHNGcm9tLCB2bSk7
XG4gIH1cbiAgaWYgKGNoaWxkLm1peGlucykge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hp
bGQubWl4aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcGFyZW50ID0gbWVyZ2VPcHRp
b25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgfVxuICB9XG4gIHZhciBvcHRp
b25zID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdl
RmllbGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3du
KHBhcmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBm
dW5jdGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8
fCBkZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNo
aWxkW2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICog
UmVzb2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxk
IGluc3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2Vz
dG9yIGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0
eXBlLFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2
YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9u
IHZhcmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNz
ZXRzW2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093
bihhc3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4g
IHZhciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093
bihhc3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1c
biAgLy8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRd
IHx8IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChm
YWxzZSkge1xuICAgIHdhcm4oXG4gICAgICAnRmFpbGVkIHRvIHJlc29sdmUgJyArIHR5cGUuc2xp
Y2UoMCwgLTEpICsgJzogJyArIGlkLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0
dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wIChcbiAga2V5LFxu
ICBwcm9wT3B0aW9ucyxcbiAgcHJvcHNEYXRhLFxuICB2bVxuKSB7XG4gIHZhciBwcm9wID0gcHJv
cE9wdGlvbnNba2V5XTtcbiAgdmFyIGFic2VudCA9ICFoYXNPd24ocHJvcHNEYXRhLCBrZXkpO1xu
ICB2YXIgdmFsdWUgPSBwcm9wc0RhdGFba2V5XTtcbiAgLy8gaGFuZGxlIGJvb2xlYW4gcHJvcHNc
biAgaWYgKGlzVHlwZShCb29sZWFuLCBwcm9wLnR5cGUpKSB7XG4gICAgaWYgKGFic2VudCAmJiAh
aGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICAgIHZhbHVlID0gZmFsc2U7XG4gICAgfSBl
bHNlIGlmICghaXNUeXBlKFN0cmluZywgcHJvcC50eXBlKSAmJiAodmFsdWUgPT09ICcnIHx8IHZh
bHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcbiAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICB9XG4g
IH1cbiAgLy8gY2hlY2sgZGVmYXVsdCB2YWx1ZVxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkg
e1xuICAgIHZhbHVlID0gZ2V0UHJvcERlZmF1bHRWYWx1ZSh2bSwgcHJvcCwga2V5KTtcbiAgICAv
LyBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGZyZXNoIGNvcHksXG4gICAgLy8gbWFrZSBz
dXJlIHRvIG9ic2VydmUgaXQuXG4gICAgdmFyIHByZXZTaG91bGRDb252ZXJ0ID0gb2JzZXJ2ZXJT
dGF0ZS5zaG91bGRDb252ZXJ0O1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHRy
dWU7XG4gICAgb2JzZXJ2ZSh2YWx1ZSk7XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0
ID0gcHJldlNob3VsZENvbnZlcnQ7XG4gIH1cbiAgaWYgKGZhbHNlKSB7XG4gICAgYXNzZXJ0UHJv
cChwcm9wLCBrZXksIHZhbHVlLCB2bSwgYWJzZW50KTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1c
blxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBwcm9wLlxuICovXG5mdW5jdGlv
biBnZXRQcm9wRGVmYXVsdFZhbHVlICh2bSwgcHJvcCwga2V5KSB7XG4gIC8vIG5vIGRlZmF1bHQs
IHJldHVybiB1bmRlZmluZWRcbiAgaWYgKCFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAg
IHJldHVybiB1bmRlZmluZWRcbiAgfVxuICB2YXIgZGVmID0gcHJvcC5kZWZhdWx0O1xuICAvLyB3
YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVsdHMgZm9yIE9iamVjdCAmIEFycmF5XG4gIGlm
IChmYWxzZSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBw
cm9wIFwiJyArIGtleSArICdcIjogJyArXG4gICAgICAnUHJvcHMgd2l0aCB0eXBlIE9iamVjdC9B
cnJheSBtdXN0IHVzZSBhIGZhY3RvcnkgZnVuY3Rpb24gJyArXG4gICAgICAndG8gcmV0dXJuIHRo
ZSBkZWZhdWx0IHZhbHVlLicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gdGhlIHJhdyBw
cm9wIHZhbHVlIHdhcyBhbHNvIHVuZGVmaW5lZCBmcm9tIHByZXZpb3VzIHJlbmRlcixcbiAgLy8g
cmV0dXJuIHByZXZpb3VzIGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2F0Y2hl
ciB0cmlnZ2VyXG4gIGlmICh2bSAmJiB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgJiZcbiAgICB2bS4k
b3B0aW9ucy5wcm9wc0RhdGFba2V5XSA9PT0gdW5kZWZpbmVkICYmXG4gICAgdm0uX3Byb3BzW2tl
eV0gIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdm0uX3Byb3BzW2tleV1cbiAgfVxu
ICAvLyBjYWxsIGZhY3RvcnkgZnVuY3Rpb24gZm9yIG5vbi1GdW5jdGlvbiB0eXBlc1xuICAvLyBh
IHZhbHVlIGlzIEZ1bmN0aW9uIGlmIGl0cyBwcm90b3R5cGUgaXMgZnVuY3Rpb24gZXZlbiBhY3Jv
c3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gIHJldHVybiB0eXBlb2YgZGVmID09PSAn
ZnVuY3Rpb24nICYmIGdldFR5cGUocHJvcC50eXBlKSAhPT0gJ0Z1bmN0aW9uJ1xuICAgID8gZGVm
LmNhbGwodm0pXG4gICAgOiBkZWZcbn1cblxuLyoqXG4gKiBBc3NlcnQgd2hldGhlciBhIHByb3Ag
aXMgdmFsaWQuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFByb3AgKFxuICBwcm9wLFxuICBuYW1lLFxu
ICB2YWx1ZSxcbiAgdm0sXG4gIGFic2VudFxuKSB7XG4gIGlmIChwcm9wLnJlcXVpcmVkICYmIGFi
c2VudCkge1xuICAgIHdhcm4oXG4gICAgICAnTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBu
YW1lICsgJ1wiJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodmFs
dWUgPT0gbnVsbCAmJiAhcHJvcC5yZXF1aXJlZCkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0
eXBlID0gcHJvcC50eXBlO1xuICB2YXIgdmFsaWQgPSAhdHlwZSB8fCB0eXBlID09PSB0cnVlO1xu
ICB2YXIgZXhwZWN0ZWRUeXBlcyA9IFtdO1xuICBpZiAodHlwZSkge1xuICAgIGlmICghQXJyYXku
aXNBcnJheSh0eXBlKSkge1xuICAgICAgdHlwZSA9IFt0eXBlXTtcbiAgICB9XG4gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0eXBlLmxlbmd0aCAmJiAhdmFsaWQ7IGkrKykge1xuICAgICAgdmFyIGFz
c2VydGVkVHlwZSA9IGFzc2VydFR5cGUodmFsdWUsIHR5cGVbaV0pO1xuICAgICAgZXhwZWN0ZWRU
eXBlcy5wdXNoKGFzc2VydGVkVHlwZS5leHBlY3RlZFR5cGUgfHwgJycpO1xuICAgICAgdmFsaWQg
PSBhc3NlcnRlZFR5cGUudmFsaWQ7XG4gICAgfVxuICB9XG4gIGlmICghdmFsaWQpIHtcbiAgICB3
YXJuKFxuICAgICAgJ0ludmFsaWQgcHJvcDogdHlwZSBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCIn
ICsgbmFtZSArICdcIi4nICtcbiAgICAgICcgRXhwZWN0ZWQgJyArIGV4cGVjdGVkVHlwZXMubWFw
KGNhcGl0YWxpemUpLmpvaW4oJywgJykgK1xuICAgICAgJywgZ290ICcgKyBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSArICcuJyxcbiAgICAgIHZtXG4g
ICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdmFsaWRhdG9yID0gcHJvcC52YWxpZGF0b3I7
XG4gIGlmICh2YWxpZGF0b3IpIHtcbiAgICBpZiAoIXZhbGlkYXRvcih2YWx1ZSkpIHtcbiAgICAg
IHdhcm4oXG4gICAgICAgICdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFp
bGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4g
ICAgfVxuICB9XG59XG5cbnZhciBzaW1wbGVDaGVja1JFID0gL14oU3RyaW5nfE51bWJlcnxCb29s
ZWFufEZ1bmN0aW9ufFN5bWJvbCkkLztcblxuZnVuY3Rpb24gYXNzZXJ0VHlwZSAodmFsdWUsIHR5
cGUpIHtcbiAgdmFyIHZhbGlkO1xuICB2YXIgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtc
biAgaWYgKHNpbXBsZUNoZWNrUkUudGVzdChleHBlY3RlZFR5cGUpKSB7XG4gICAgdmFsaWQgPSB0
eXBlb2YgdmFsdWUgPT09IGV4cGVjdGVkVHlwZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYg
KGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcbiAgICB2YWxpZCA9IGlzUGxhaW5PYmplY3Qo
dmFsdWUpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xuICAgIHZh
bGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFsaWQgPSB2YWx1
ZSBpbnN0YW5jZW9mIHR5cGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2YWxpZDogdmFsaWQsXG4g
ICAgZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGVcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBmdW5j
dGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayBidWlsdC1pbiB0eXBlcyxcbiAqIGJlY2F1c2UgYSBz
aW1wbGUgZXF1YWxpdHkgY2hlY2sgd2lsbCBmYWlsIHdoZW4gcnVubmluZ1xuICogYWNyb3NzIGRp
ZmZlcmVudCB2bXMgLyBpZnJhbWVzLlxuICovXG5mdW5jdGlvbiBnZXRUeXBlIChmbikge1xuICB2
YXIgbWF0Y2ggPSBmbiAmJiBmbi50b1N0cmluZygpLm1hdGNoKC9eXFxzKmZ1bmN0aW9uIChcXHcr
KS8pO1xuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnXG59XG5cbmZ1bmN0aW9uIGlzVHlw
ZSAodHlwZSwgZm4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZuKSkge1xuICAgIHJldHVybiBn
ZXRUeXBlKGZuKSA9PT0gZ2V0VHlwZSh0eXBlKVxuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsZW4g
PSBmbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChnZXRUeXBlKGZuW2ldKSA9PT0g
Z2V0VHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgLyogaXN0
YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIg
bWFyaztcbnZhciBtZWFzdXJlO1xuXG5pZiAoZmFsc2UpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dz
ZXIgJiYgd2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAg
aWYgKFxuICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZc
biAgICBwZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4g
ICAgbWFyayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAg
IG1lYXN1cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVy
Zi5tZWFzdXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtz
KHN0YXJ0VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgcGVyZi5j
bGVhck1lYXN1cmVzKG5hbWUpO1xuICAgIH07XG4gIH1cbn1cblxuLyogbm90IHR5cGUgY2hlY2tp
bmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICov
XG5cbnZhciBpbml0UHJveHk7XG5cbmlmIChmYWxzZSkge1xuICB2YXIgYWxsb3dlZEdsb2JhbHMg
PSBtYWtlTWFwKFxuICAgICdJbmZpbml0eSx1bmRlZmluZWQsTmFOLGlzRmluaXRlLGlzTmFOLCcg
K1xuICAgICdwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQs
ZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCwnICtcbiAgICAnTWF0aCxOdW1iZXIsRGF0ZSxB
cnJheSxPYmplY3QsQm9vbGVhbixTdHJpbmcsUmVnRXhwLE1hcCxTZXQsSlNPTixJbnRsLCcgK1xu
ICAgICdyZXF1aXJlJyAvLyBmb3IgV2VicGFjay9Ccm93c2VyaWZ5XG4gICk7XG5cbiAgdmFyIHdh
cm5Ob25QcmVzZW50ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gICAgd2FybihcbiAgICAg
IFwiUHJvcGVydHkgb3IgbWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBub3QgZGVmaW5l
ZCBvbiB0aGUgaW5zdGFuY2UgYnV0IFwiICtcbiAgICAgIFwicmVmZXJlbmNlZCBkdXJpbmcgcmVu
ZGVyLiBNYWtlIHN1cmUgdG8gZGVjbGFyZSByZWFjdGl2ZSBkYXRhIFwiICtcbiAgICAgIFwicHJv
cGVydGllcyBpbiB0aGUgZGF0YSBvcHRpb24uXCIsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9
O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAm
JlxuICAgIFByb3h5LnRvU3RyaW5nKCkubWF0Y2goL25hdGl2ZSBjb2RlLyk7XG5cbiAgaWYgKGhh
c1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxwcmV2
ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YScpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9IG5l
dyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0YXJn
ZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkpIHtc
biAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVyIGlu
IGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4g
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAg
ICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIg
aGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtcbiAg
ICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFsbG93
ZWRHbG9iYWxzKGtleSkgfHwga2V5LmNoYXJBdCgwKSA9PT0gJ18nO1xuICAgICAgaWYgKCFoYXMg
JiYgIWlzQWxsb3dlZCkge1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4g
ICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5cbiAg
dmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5KSB7
XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0KSkg
e1xuICAgICAgICB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gdGFyZ2V0W2tleV1cbiAgICB9XG4gIH07XG5cbiAgaW5pdFByb3h5ID0gZnVuY3Rpb24g
aW5pdFByb3h5ICh2bSkge1xuICAgIGlmIChoYXNQcm94eSkge1xuICAgICAgLy8gZGV0ZXJtaW5l
IHdoaWNoIHByb3h5IGhhbmRsZXIgdG8gdXNlXG4gICAgICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRp
b25zO1xuICAgICAgdmFyIGhhbmRsZXJzID0gb3B0aW9ucy5yZW5kZXIgJiYgb3B0aW9ucy5yZW5k
ZXIuX3dpdGhTdHJpcHBlZFxuICAgICAgICA/IGdldEhhbmRsZXJcbiAgICAgICAgOiBoYXNIYW5k
bGVyO1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gbmV3IFByb3h5KHZtLCBoYW5kbGVycyk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAgfTtcbn1c
blxuLyogICovXG5cbnZhciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBkYXRh
LFxuICBjaGlsZHJlbixcbiAgdGV4dCxcbiAgZWxtLFxuICBjb250ZXh0LFxuICBjb21wb25lbnRP
cHRpb25zLFxuICBhc3luY0ZhY3Rvcnlcbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5k
YXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnRleHQgPSB0
ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5j
b250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mdW5jdGlvbmFsQ29udGV4dCA9IHVuZGVmaW5lZDtc
biAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVudE9wdGlvbnMg
PSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVk
O1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxzZTtcbiAgdGhp
cy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG4gIHRoaXMu
aXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAgdGhpcy5pc09u
Y2UgPSBmYWxzZTtcbiAgdGhpcy5hc3luY0ZhY3RvcnkgPSBhc3luY0ZhY3Rvcnk7XG4gIHRoaXMu
YXN5bmNNZXRhID0gdW5kZWZpbmVkO1xuICB0aGlzLmlzQXN5bmNQbGFjZWhvbGRlciA9IGZhbHNl
O1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hpbGQ6IHt9IH07XG5cbi8vIERF
UFJFQ0FURUQ6IGFsaWFzIGZvciBjb21wb25lbnRJbnN0YW5jZSBmb3IgYmFja3dhcmRzIGNvbXBh
dC5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5wcm90b3R5cGVBY2Nlc3NvcnMuY2hpbGQu
Z2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZVxufTtc
blxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFZOb2RlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNj
ZXNzb3JzICk7XG5cbnZhciBjcmVhdGVFbXB0eVZOb2RlID0gZnVuY3Rpb24gKHRleHQpIHtcbiAg
aWYgKCB0ZXh0ID09PSB2b2lkIDAgKSB0ZXh0ID0gJyc7XG5cbiAgdmFyIG5vZGUgPSBuZXcgVk5v
ZGUoKTtcbiAgbm9kZS50ZXh0ID0gdGV4dDtcbiAgbm9kZS5pc0NvbW1lbnQgPSB0cnVlO1xuICBy
ZXR1cm4gbm9kZVxufTtcblxuZnVuY3Rpb24gY3JlYXRlVGV4dFZOb2RlICh2YWwpIHtcbiAgcmV0
dXJuIG5ldyBWTm9kZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBTdHJpbmcodmFs
KSlcbn1cblxuLy8gb3B0aW1pemVkIHNoYWxsb3cgY2xvbmVcbi8vIHVzZWQgZm9yIHN0YXRpYyBu
b2RlcyBhbmQgc2xvdCBub2RlcyBiZWNhdXNlIHRoZXkgbWF5IGJlIHJldXNlZCBhY3Jvc3Ncbi8v
IG11bHRpcGxlIHJlbmRlcnMsIGNsb25pbmcgdGhlbSBhdm9pZHMgZXJyb3JzIHdoZW4gRE9NIG1h
bmlwdWxhdGlvbnMgcmVseVxuLy8gb24gdGhlaXIgZWxtIHJlZmVyZW5jZS5cbmZ1bmN0aW9uIGNs
b25lVk5vZGUgKHZub2RlKSB7XG4gIHZhciBjbG9uZWQgPSBuZXcgVk5vZGUoXG4gICAgdm5vZGUu
dGFnLFxuICAgIHZub2RlLmRhdGEsXG4gICAgdm5vZGUuY2hpbGRyZW4sXG4gICAgdm5vZGUudGV4
dCxcbiAgICB2bm9kZS5lbG0sXG4gICAgdm5vZGUuY29udGV4dCxcbiAgICB2bm9kZS5jb21wb25l
bnRPcHRpb25zLFxuICAgIHZub2RlLmFzeW5jRmFjdG9yeVxuICApO1xuICBjbG9uZWQubnMgPSB2
bm9kZS5ucztcbiAgY2xvbmVkLmlzU3RhdGljID0gdm5vZGUuaXNTdGF0aWM7XG4gIGNsb25lZC5r
ZXkgPSB2bm9kZS5rZXk7XG4gIGNsb25lZC5pc0NvbW1lbnQgPSB2bm9kZS5pc0NvbW1lbnQ7XG4g
IGNsb25lZC5pc0Nsb25lZCA9IHRydWU7XG4gIHJldHVybiBjbG9uZWRcbn1cblxuZnVuY3Rpb24g
Y2xvbmVWTm9kZXMgKHZub2Rlcykge1xuICB2YXIgbGVuID0gdm5vZGVzLmxlbmd0aDtcbiAgdmFy
IHJlcyA9IG5ldyBBcnJheShsZW4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7
XG4gICAgcmVzW2ldID0gY2xvbmVWTm9kZSh2bm9kZXNbaV0pO1xuICB9XG4gIHJldHVybiByZXNc
bn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlvbiAobmFt
ZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5hbWUgPSBw
YXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFtZS5jaGFy
QXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBuYW1lID0g
b25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5hbWUuY2hh
ckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7
XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxuICAgIGNh
cHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxuZnVuY3Rp
b24gY3JlYXRlRm5JbnZva2VyIChmbnMpIHtcbiAgZnVuY3Rpb24gaW52b2tlciAoKSB7XG4gICAg
dmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGZucyA9IGludm9rZXIuZm5z
O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAgIHZhciBjbG9uZWQgPSBmbnMu
c2xpY2UoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xvbmVkLmxlbmd0aDsgaSsrKSB7
XG4gICAgICAgIGNsb25lZFtpXS5hcHBseShudWxsLCBhcmd1bWVudHMkMSk7XG4gICAgICB9XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2lu
Z2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gZm5zLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAg
ICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1
bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1v
dmUkJDEsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChu
YW1lIGluIG9uKSB7XG4gICAgY3VyID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07
XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIp
KSB7XG4gICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAg
ICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBc
IlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9
IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtc
biAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyKTtcbiAgICAgIH1c
biAgICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50Lm9uY2UsIGV2ZW50LmNhcHR1cmUsIGV2
ZW50LnBhc3NpdmUpO1xuICAgIH0gZWxzZSBpZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5m
bnMgPSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1l
IGluIG9sZE9uKSB7XG4gICAgaWYgKGlzVW5kZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9
IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9u
W25hbWVdLCBldmVudC5jYXB0dXJlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0
aW9uIG1lcmdlVk5vZGVIb29rIChkZWYsIGhvb2tLZXksIGhvb2spIHtcbiAgdmFyIGludm9rZXI7
XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29r
ICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50
OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAg
IC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFw
cGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4
aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10p
O1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0Rl
ZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxy
ZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGlu
dm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlz
dGluZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29r
LCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtc
biAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJh
Y3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAv
LyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlv
biBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBv
bmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAg
aWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9
IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3Bz
O1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtl
eSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xu
ICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xv
d2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2Fz
ZSAmJlxuICAgICAgICAgIGF0dHJzICYmIGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4g
ICAgICAgICkge1xuICAgICAgICAgIHRpcChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBr
ZXlJbkxvd2VyQ2FzZSArIFwiXFxcIiBpcyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAg
ICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBk
ZWNsYXJlZCBwcm9wIG5hbWUgaXNcIiArXG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBc
IlxcXCIuIFwiICtcbiAgICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUg
Y2FzZS1pbnNlbnNpdGl2ZSBhbmQgY2FtZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3Bz
IG5lZWQgdG8gdXNlIHRoZWlyIGtlYmFiLWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1E
T00gXCIgK1xuICAgICAgICAgICAgXCJ0ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNl
IFxcXCJcIiArIGFsdEtleSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxc
Ii5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChy
ZXMsIHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0
dHJzLCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5c
bmZ1bmN0aW9uIGNoZWNrUHJvcCAoXG4gIHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXks
XG4gIHByZXNlcnZlXG4pIHtcbiAgaWYgKGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093biho
YXNoLCBrZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJl
c2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVy
biB0cnVlXG4gICAgfSBlbHNlIGlmIChoYXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVz
W2tleV0gPSBoYXNoW2FsdEtleV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRl
bGV0ZSBoYXNoW2FsdEtleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAg
fVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxl
ciBhdHRlbXB0cyB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8g
c3RhdGljYWxseSBhbmFseXppbmcgdGhlIHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4v
LyBGb3IgcGxhaW4gSFRNTCBtYXJrdXAsIG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkg
c2tpcHBlZCBiZWNhdXNlIHRoZVxuLy8gZ2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFy
YW50ZWVkIHRvIHJldHVybiBBcnJheTxWTm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdo
ZXJlIGV4dHJhIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGls
ZHJlbiBjb250YWlucyBjb21wb25lbnRzIC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50
XG4vLyBtYXkgcmV0dXJuIGFuIEFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhp
cyBjYXNlLCBqdXN0IGEgc2ltcGxlXG4vLyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFu
eSBjaGlsZCBpcyBhbiBBcnJheSwgd2UgZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGgg
QXJyYXkucHJvdG90eXBlLmNvbmNhdC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2
ZWwgZGVlcFxuLy8gYmVjYXVzZSBmdW5jdGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxp
emUgdGhlaXIgb3duIGNoaWxkcmVuLlxuZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4g
KGNoaWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKysp
IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBB
cnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAg
cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8vIDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNv
bnN0cnVjdHMgdGhhdCBhbHdheXMgZ2VuZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0
ZW1wbGF0ZT4sIDxzbG90Piwgdi1mb3IsIG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVk
IGJ5IHVzZXJcbi8vIHdpdGggaGFuZC13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIElu
IHN1Y2ggY2FzZXMgYSBmdWxsIG5vcm1hbGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0
byBhbGwgcG9zc2libGUgdHlwZXMgb2YgY2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFs
aXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilc
biAgICA/IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShj
aGlsZHJlbilcbiAgICAgID8gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAg
IDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJu
IGlzRGVmKG5vZGUpICYmIGlzRGVmKG5vZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVu
dClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3Rl
ZEluZGV4KSB7XG4gIHZhciByZXMgPSBbXTtcbiAgdmFyIGksIGMsIGxhc3Q7XG4gIGZvciAoaSA9
IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGMgPSBjaGlsZHJlbltpXTtcbiAg
ICBpZiAoaXNVbmRlZihjKSB8fCB0eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7IGNvbnRpbnVlIH1c
biAgICBsYXN0ID0gcmVzW3Jlcy5sZW5ndGggLSAxXTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYg
KEFycmF5LmlzQXJyYXkoYykpIHtcbiAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgbm9ybWFsaXpl
QXJyYXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpKTtcbiAg
ICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKGMpKSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShsYXN0
KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIC8vIHRo
aXMgaXMgbmVjZXNzYXJ5IGZvciBTU1IgaHlkcmF0aW9uIGJlY2F1c2UgdGV4dCBub2RlcyBhcmVc
biAgICAgICAgLy8gZXNzZW50aWFsbHkgbWVyZ2VkIHdoZW4gcmVuZGVyZWQgdG8gSFRNTCBzdHJp
bmdzXG4gICAgICAgIChsYXN0KS50ZXh0ICs9IFN0cmluZyhjKTtcbiAgICAgIH0gZWxzZSBpZiAo
YyAhPT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAg
ICAgcmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xu
ICAgICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAv
LyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHJlc1tyZXMubGVuZ3RoIC0gMV0g
PSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYy50ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIC8vIGRlZmF1bHQga2V5IGZvciBuZXN0ZWQgYXJyYXkgY2hpbGRyZW4gKGxpa2VseSBn
ZW5lcmF0ZWQgYnkgdi1mb3IpXG4gICAgICAgIGlmIChpc1RydWUoY2hpbGRyZW4uX2lzVkxpc3Qp
ICYmXG4gICAgICAgICAgaXNEZWYoYy50YWcpICYmXG4gICAgICAgICAgaXNVbmRlZihjLmtleSkg
JiZcbiAgICAgICAgICBpc0RlZihuZXN0ZWRJbmRleCkpIHtcbiAgICAgICAgICBjLmtleSA9IFwi
X192bGlzdFwiICsgbmVzdGVkSW5kZXggKyBcIl9cIiArIGkgKyBcIl9fXCI7XG4gICAgICAgIH1c
biAgICAgICAgcmVzLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgaWYg
KGNvbXAuX19lc01vZHVsZSAmJiBjb21wLmRlZmF1bHQpIHtcbiAgICBjb21wID0gY29tcC5kZWZh
dWx0O1xuICB9XG4gIHJldHVybiBpc09iamVjdChjb21wKVxuICAgID8gYmFzZS5leHRlbmQoY29t
cClcbiAgICA6IGNvbXBcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXN5bmNQbGFjZWhvbGRlciAoXG4g
IGZhY3RvcnksXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xu
ICB2YXIgbm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgbm9kZS5hc3luY0ZhY3RvcnkgPSBm
YWN0b3J5O1xuICBub2RlLmFzeW5jTWV0YSA9IHsgZGF0YTogZGF0YSwgY29udGV4dDogY29udGV4
dCwgY2hpbGRyZW46IGNoaWxkcmVuLCB0YWc6IHRhZyB9O1xuICByZXR1cm4gbm9kZVxufVxuXG5m
dW5jdGlvbiByZXNvbHZlQXN5bmNDb21wb25lbnQgKFxuICBmYWN0b3J5LFxuICBiYXNlQ3Rvcixc
biAgY29udGV4dFxuKSB7XG4gIGlmIChpc1RydWUoZmFjdG9yeS5lcnJvcikgJiYgaXNEZWYoZmFj
dG9yeS5lcnJvckNvbXApKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkuZXJyb3JDb21wXG4gIH1cblxu
ICBpZiAoaXNEZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5yZXNv
bHZlZFxuICB9XG5cbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmxvYWRpbmcpICYmIGlzRGVmKGZhY3Rv
cnkubG9hZGluZ0NvbXApKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgfVxu
XG4gIGlmIChpc0RlZihmYWN0b3J5LmNvbnRleHRzKSkge1xuICAgIC8vIGFscmVhZHkgcGVuZGlu
Z1xuICAgIGZhY3RvcnkuY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICB2
YXIgY29udGV4dHMgPSBmYWN0b3J5LmNvbnRleHRzID0gW2NvbnRleHRdO1xuICAgIHZhciBzeW5j
ID0gdHJ1ZTtcblxuICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gY29udGV4dHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAg
IGNvbnRleHRzW2ldLiRmb3JjZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIg
cmVzb2x2ZSA9IG9uY2UoZnVuY3Rpb24gKHJlcykge1xuICAgICAgLy8gY2FjaGUgcmVzb2x2ZWRc
biAgICAgIGZhY3RvcnkucmVzb2x2ZWQgPSBlbnN1cmVDdG9yKHJlcywgYmFzZUN0b3IpO1xuICAg
ICAgLy8gaW52b2tlIGNhbGxiYWNrcyBvbmx5IGlmIHRoaXMgaXMgbm90IGEgc3luY2hyb25vdXMg
cmVzb2x2ZVxuICAgICAgLy8gKGFzeW5jIHJlc29sdmVzIGFyZSBzaGltbWVkIGFzIHN5bmNocm9u
b3VzIGR1cmluZyBTU1IpXG4gICAgICBpZiAoIXN5bmMpIHtcbiAgICAgICAgZm9yY2VSZW5kZXIo
KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZWplY3QgPSBvbmNlKGZ1bmN0aW9uIChy
ZWFzb24pIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihc
biAgICAgICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBhc3luYyBjb21wb25lbnQ6IFwiICsgKFN0cmlu
ZyhmYWN0b3J5KSkgK1xuICAgICAgICAocmVhc29uID8gKFwiXFxuUmVhc29uOiBcIiArIHJlYXNv
bikgOiAnJylcbiAgICAgICk7XG4gICAgICBpZiAoaXNEZWYoZmFjdG9yeS5lcnJvckNvbXApKSB7
XG4gICAgICAgIGZhY3RvcnkuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmb3JjZVJlbmRlcigpO1xu
ICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0
KTtcblxuICAgIGlmIChpc09iamVjdChyZXMpKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcy50aGVu
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vICgpID0+IFByb21pc2VcbiAgICAgICAgaWYg
KGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICByZXMudGhlbihyZXNvbHZl
LCByZWplY3QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKHJlcy5jb21wb25l
bnQpICYmIHR5cGVvZiByZXMuY29tcG9uZW50LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAg
ICAgcmVzLmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlz
RGVmKHJlcy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0
b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYo
cmVzLmxvYWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0
b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAw
KSB7XG4gICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAg
aWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkg
e1xuICAgICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAg
ICAgZm9yY2VSZW5kZXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRl
bGF5IHx8IDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVm
KHJlcy50aW1lb3V0KSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAg
ICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAg
cmVqZWN0KFxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgPyAoXCJ0
aW1lb3V0IChcIiArIChyZXMudGltZW91dCkgKyBcIm1zKVwiKVxuICAgICAgICAgICAgICAgICAg
OiBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVz
LnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3luYyA9IGZhbHNl
O1xuICAgIC8vIHJldHVybiBpbiBjYXNlIHJlc29sdmVkIHN5bmNocm9ub3VzbHlcbiAgICByZXR1
cm4gZmFjdG9yeS5sb2FkaW5nXG4gICAgICA/IGZhY3RvcnkubG9hZGluZ0NvbXBcbiAgICAgIDog
ZmFjdG9yeS5yZXNvbHZlZFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZXRGaXJzdENv
bXBvbmVudENoaWxkIChjaGlsZHJlbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikp
IHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAg
ICB2YXIgYyA9IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGMpICYmIGlzRGVmKGMuY29t
cG9uZW50T3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn1cblxuLyogICovXG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXZlbnRzICh2bSkge1xuICB2
bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdm0uX2hhc0hvb2tFdmVudCA9IGZh
bHNlO1xuICAvLyBpbml0IHBhcmVudCBhdHRhY2hlZCBldmVudHNcbiAgdmFyIGxpc3RlbmVycyA9
IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGlmIChsaXN0ZW5lcnMpIHtcbiAgICB1
cGRhdGVDb21wb25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycyk7XG4gIH1cbn1cblxudmFyIHRh
cmdldDtcblxuZnVuY3Rpb24gYWRkIChldmVudCwgZm4sIG9uY2UkJDEpIHtcbiAgaWYgKG9uY2Uk
JDEpIHtcbiAgICB0YXJnZXQuJG9uY2UoZXZlbnQsIGZuKTtcbiAgfSBlbHNlIHtcbiAgICB0YXJn
ZXQuJG9uKGV2ZW50LCBmbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBm
bikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21w
b25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikg
e1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVu
ZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCB2bSk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGlu
IChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9
IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZh
ciB2bSA9IHRoaXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0aGlz
JDEuJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5f
ZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAg
ICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1h
cmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxu
ICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50
ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnBy
b3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlz
O1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAg
IGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZt
LiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUu
JG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxu
ICAgIHZhciB2bSA9IHRoaXM7XG4gICAgLy8gYWxsXG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3Ro
KSB7XG4gICAgICB2bS5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIHJldHVy
biB2bVxuICAgIH1cbiAgICAvLyBhcnJheSBvZiBldmVudHNcbiAgICBpZiAoQXJyYXkuaXNBcnJh
eShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkk
MSA8IGw7IGkkMSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAg
IHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0
dXJuIHZtXG4gICAgfVxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB2
bS5fZXZlbnRzW2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8g
c3BlY2lmaWMgaGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7XG4g
ICAgd2hpbGUgKGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09IGZu
IHx8IGNiLmZuID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBi
cmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90
eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBp
ZiAoZmFsc2UpIHtcbiAgICAgIHZhciBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNl
KCk7XG4gICAgICBpZiAobG93ZXJDYXNlRXZlbnQgIT09IGV2ZW50ICYmIHZtLl9ldmVudHNbbG93
ZXJDYXNlRXZlbnRdKSB7XG4gICAgICAgIHRpcChcbiAgICAgICAgICBcIkV2ZW50IFxcXCJcIiAr
IGxvd2VyQ2FzZUV2ZW50ICsgXCJcXFwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50IFwiICtcbiAg
ICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIgYnV0IHRoZSBoYW5kbGVyIGlz
IHJlZ2lzdGVyZWQgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAg
XCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCB5b3Ug
Y2Fubm90IHVzZSBcIiArXG4gICAgICAgICAgXCJ2LW9uIHRvIGxpc3RlbiB0byBjYW1lbENhc2Ug
ZXZlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIHRlbXBsYXRlcy4gXCIgK1xuICAgICAgICAgIFwiWW91
IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgKGh5cGhlbmF0ZShldmVudCkpICsgXCJcXFwi
IGluc3RlYWQgb2YgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuXCJcbiAgICAgICAgKTtcbiAgICAg
IH1cbiAgICB9XG4gICAgdmFyIGNicyA9IHZtLl9ldmVudHNbZXZlbnRdO1xuICAgIGlmIChjYnMp
IHtcbiAgICAgIGNicyA9IGNicy5sZW5ndGggPiAxID8gdG9BcnJheShjYnMpIDogY2JzO1xuICAg
ICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4gICAgICBmb3IgKHZhciBpID0g
MCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAg
ICBjYnNbaV0uYXBwbHkodm0sIGFyZ3MpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAg
ICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImV2ZW50IGhhbmRsZXIgZm9yIFxcXCJcIiArIGV2ZW50
ICsgXCJcXFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1c
biAgfTtcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmlu
ZyByYXcgY2hpbGRyZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24g
cmVzb2x2ZVNsb3RzIChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xuICB2YXIgc2xvdHMg
PSB7fTtcbiAgaWYgKCFjaGlsZHJlbikge1xuICAgIHJldHVybiBzbG90c1xuICB9XG4gIHZhciBk
ZWZhdWx0U2xvdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsg
aSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIC8vIG5hbWVk
IHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJlbmRlcmVk
IGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRleHQgPT09
IGNvbnRleHQgfHwgY2hpbGQuZnVuY3Rpb25hbENvbnRleHQgPT09IGNvbnRleHQpICYmXG4gICAg
ICBjaGlsZC5kYXRhICYmIGNoaWxkLmRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7XG4gICAgICB2
YXIgbmFtZSA9IGNoaWxkLmRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNsb3RzW25hbWVd
IHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAndGVtcGxh
dGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJlbik7XG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICBkZWZhdWx0U2xvdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH1cbiAgLy8g
aWdub3JlIHdoaXRlc3BhY2VcbiAgaWYgKCFkZWZhdWx0U2xvdC5ldmVyeShpc1doaXRlc3BhY2Up
KSB7XG4gICAgc2xvdHMuZGVmYXVsdCA9IGRlZmF1bHRTbG90O1xuICB9XG4gIHJldHVybiBzbG90
c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuaXND
b21tZW50IHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTY29wZWRT
bG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzXG4pIHtcbiAgcmVzID0gcmVz
IHx8IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xuICAgIGlm
IChBcnJheS5pc0FycmF5KGZuc1tpXSkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRTbG90cyhmbnNb
aV0sIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1tmbnNbaV0ua2V5XSA9IGZuc1tpXS5m
bjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIGFjdGl2ZUlu
c3RhbmNlID0gbnVsbDtcbnZhciBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcblxu
ZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtcbiAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9u
cztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFic3RyYWN0IHBhcmVudFxuICB2YXIgcGFyZW50
ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJlbnQgJiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtc
biAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFic3RyYWN0ICYmIHBhcmVudC4kcGFyZW50KSB7
XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICB9XG4gICAgcGFyZW50LiRjaGls
ZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRwYXJlbnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290
ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07XG5cbiAgdm0uJGNoaWxkcmVuID0gW107XG4g
IHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNoZXIgPSBudWxsO1xuICB2bS5faW5hY3RpdmUg
PSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9
IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95
ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUu
cHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5ZHJhdGluZykge1xuICAgIHZh
ciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc01vdW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZt
LCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgfVxuICAgIHZhciBwcmV2RWwgPSB2bS4kZWw7XG4gICAg
dmFyIHByZXZWbm9kZSA9IHZtLl92bm9kZTtcbiAgICB2YXIgcHJldkFjdGl2ZUluc3RhbmNlID0g
YWN0aXZlSW5zdGFuY2U7XG4gICAgYWN0aXZlSW5zdGFuY2UgPSB2bTtcbiAgICB2bS5fdm5vZGUg
PSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBl
bnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5c
biAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZt
LiRlbCA9IHZtLl9fcGF0Y2hfXyhcbiAgICAgICAgdm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBm
YWxzZSAvKiByZW1vdmVPbmx5ICovLFxuICAgICAgICB2bS4kb3B0aW9ucy5fcGFyZW50RWxtLFxu
ICAgICAgICB2bS4kb3B0aW9ucy5fcmVmRWxtXG4gICAgICApO1xuICAgICAgLy8gbm8gbmVlZCBm
b3IgdGhlIHJlZiBub2RlcyBhZnRlciBpbml0aWFsIHBhdGNoXG4gICAgICAvLyB0aGlzIHByZXZl
bnRzIGtlZXBpbmcgYSBkZXRhY2hlZCBET00gdHJlZSBpbiBtZW1vcnkgKCM1ODUxKVxuICAgICAg
dm0uJG9wdGlvbnMuX3BhcmVudEVsbSA9IHZtLiRvcHRpb25zLl9yZWZFbG0gPSBudWxsO1xuICAg
IH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18o
cHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIGFjdGl2ZUluc3RhbmNlID0gcHJldkFjdGl2
ZUluc3RhbmNlO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmIChwcmV2
RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZtLiRl
bCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8gaWYgcGFyZW50
IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4kdm5vZGUgJiYg
dm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7XG4gICAgICB2
bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBob29rIGlzIGNh
bGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZVxuICAgIC8v
IHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAgVnVlLnByb3Rv
dHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAg
ICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgpO1xuICAgIH1c
biAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZh
ciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZXR1
cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4gICAgdm0uX2lz
QmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gcGFyZW50XG4g
ICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9p
c0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgICAgcmVtb3Zl
KHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24gd2F0Y2hlcnNc
biAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7XG4g
ICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7
XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAgLy8gcmVtb3Zl
IHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1heSBub3QgaGF2
ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2bS5fZGF0YS5f
X29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhvb2suLi5cbiAg
ICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95IGhvb2tzIG9u
IGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwp
O1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwgJ2Rlc3Ryb3ll
ZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4gICAgdm0uJG9m
ZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2bS4kZWwpIHtc
biAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9u
IG1vdW50Q29tcG9uZW50IChcbiAgdm0sXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICB2bS4k
ZWwgPSBlbDtcbiAgaWYgKCF2bS4kb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2bS4kb3B0aW9ucy5y
ZW5kZXIgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoKHZtLiRvcHRpb25zLnRlbXBsYXRlICYmIHZt
LiRvcHRpb25zLnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB8fFxuICAgICAgICB2bS4kb3B0
aW9ucy5lbCB8fCBlbCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgYXJlIHVzaW5n
IHRoZSBydW50aW1lLW9ubHkgYnVpbGQgb2YgVnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAg
ICAgICAgICAnY29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRo
ZSB0ZW1wbGF0ZXMgaW50byAnICtcbiAgICAgICAgICAncmVuZGVyIGZ1bmN0aW9ucywgb3IgdXNl
IHRoZSBjb21waWxlci1pbmNsdWRlZCBidWlsZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gbW91
bnQgY29tcG9uZW50OiB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxc
biAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsSG9v
ayh2bSwgJ2JlZm9yZU1vdW50Jyk7XG5cbiAgdmFyIHVwZGF0ZUNvbXBvbmVudDtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChmYWxzZSkge1xuICAgIHVwZGF0ZUNvbXBvbmVudCA9
IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBuYW1lID0gdm0uX25hbWU7XG4gICAgICB2YXIgaWQg
PSB2bS5fdWlkO1xuICAgICAgdmFyIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1zdGFydDpcIiArIGlk
O1xuICAgICAgdmFyIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgaWQ7XG5cbiAgICAgIG1h
cmsoc3RhcnRUYWcpO1xuICAgICAgdmFyIHZub2RlID0gdm0uX3JlbmRlcigpO1xuICAgICAgbWFy
ayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwiIHJlbmRlclwiKSwgc3RhcnRUYWcs
IGVuZFRhZyk7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdm0uX3VwZGF0ZSh2bm9k
ZSwgaHlkcmF0aW5nKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKG5hbWUg
KyBcIiBwYXRjaFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAg
ICB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2bS5fdXBkYXRlKHZtLl9y
ZW5kZXIoKSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9XG5cbiAgdm0uX3dhdGNoZXIgPSBuZXcg
V2F0Y2hlcih2bSwgdXBkYXRlQ29tcG9uZW50LCBub29wKTtcbiAgaHlkcmF0aW5nID0gZmFsc2U7
XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwgY2FsbCBtb3VudGVkIG9uIHNlbGZc
biAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVhdGVkIGNoaWxkIGNvbXBvbmVu
dHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2bm9kZSA9PSBudWxsKSB7XG4gICAg
dm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2sodm0sICdtb3VudGVkJyk7XG4gIH1c
biAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxkQ29tcG9uZW50IChcbiAgdm0s
XG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRWbm9kZSxcbiAgcmVuZGVyQ2hp
bGRyZW5cbikge1xuICBpZiAoZmFsc2UpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQg
PSB0cnVlO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgY29tcG9uZW50IGhhcyBzbG90
IGNoaWxkcmVuXG4gIC8vIHdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgb3ZlcndyaXRpbmcgJG9w
dGlvbnMuX3JlbmRlckNoaWxkcmVuXG4gIHZhciBoYXNDaGlsZHJlbiA9ICEhKFxuICAgIHJlbmRl
ckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNcbiAgICB2
bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNsb3RzXG4g
ICAgcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyB8fCAvLyBoYXMgbmV3IHNjb3BlZCBzbG90
c1xuICAgIHZtLiRzY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgLy8gaGFzIG9sZCBzY29wZWQg
c2xvdHNcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtc
biAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5v
ZGUgd2l0aG91dCByZS1yZW5kZXJcblxuICBpZiAodm0uX3Zub2RlKSB7IC8vIHVwZGF0ZSBjaGls
ZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xuICB9
XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNoaWxkcmVuO1xuXG4gIC8v
IHVwZGF0ZSAkYXR0cnMgYW5kICRsaXN0ZW5zZXJzIGhhc2hcbiAgLy8gdGhlc2UgYXJlIGFsc28g
cmVhY3RpdmUgc28gdGhleSBtYXkgdHJpZ2dlciBjaGlsZCB1cGRhdGUgaWYgdGhlIGNoaWxkXG4g
IC8vIHVzZWQgdGhlbSBkdXJpbmcgcmVuZGVyXG4gIHZtLiRhdHRycyA9IHBhcmVudFZub2RlLmRh
dGEgJiYgcGFyZW50Vm5vZGUuZGF0YS5hdHRycztcbiAgdm0uJGxpc3RlbmVycyA9IGxpc3RlbmVy
cztcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5w
cm9wcykge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGZhbHNlO1xuICAgIHZh
ciBwcm9wcyA9IHZtLl9wcm9wcztcbiAgICB2YXIgcHJvcEtleXMgPSB2bS4kb3B0aW9ucy5fcHJv
cEtleXMgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wS2V5cy5sZW5ndGg7IGkr
Kykge1xuICAgICAgdmFyIGtleSA9IHByb3BLZXlzW2ldO1xuICAgICAgcHJvcHNba2V5XSA9IHZh
bGlkYXRlUHJvcChrZXksIHZtLiRvcHRpb25zLnByb3BzLCBwcm9wc0RhdGEsIHZtKTtcbiAgICB9
XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1ZTtcbiAgICAvLyBrZWVwIGEg
Y29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhID0gcHJvcHNE
YXRhO1xuICB9XG5cbiAgLy8gdXBkYXRlIGxpc3RlbmVyc1xuICBpZiAobGlzdGVuZXJzKSB7XG4g
ICAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gICAg
dm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICB1cGRhdGVDb21w
b25lbnRMaXN0ZW5lcnModm0sIGxpc3RlbmVycywgb2xkTGlzdGVuZXJzKTtcbiAgfVxuICAvLyBy
ZXNvbHZlIHNsb3RzICsgZm9yY2UgdXBkYXRlIGlmIGhhcyBjaGlsZHJlblxuICBpZiAoaGFzQ2hp
bGRyZW4pIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBh
cmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaWYg
KGZhbHNlKSB7XG4gICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG4gIH1cbn1c
blxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAgd2hpbGUgKHZtICYmICh2bSA9
IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkgeyByZXR1cm4gdHJ1ZSB9XG4g
IH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQg
KHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9
IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJuXG4g
ICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkge1xuICAgIHJldHVyblxuICB9
XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09PSBudWxsKSB7XG4gICAgdm0u
X2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4u
bGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVu
W2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0ZWQnKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRp
cmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKGlzSW5JbmFj
dGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAgaWYgKCF2bS5faW5h
Y3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWFjdGl2YXRlQ2hpbGRDb21w
b25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdkZWFjdGl2
YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2bSwgaG9vaykge1xuICB2YXIg
aGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgaWYgKGhhbmRsZXJzKSB7XG4gICAgZm9y
ICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIHRy
eSB7XG4gICAgICAgIGhhbmRsZXJzW2ldLmNhbGwodm0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xu
ICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbiAgaWYgKHZtLl9oYXNIb29rRXZlbnQpIHtcbiAgICB2bS4kZW1pdCgnaG9v
azonICsgaG9vayk7XG4gIH1cbn1cblxuLyogICovXG5cblxudmFyIE1BWF9VUERBVEVfQ09VTlQg
PSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxkcmVuID0gW107XG52
YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5nID0gZmFsc2U7XG52
YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxuICogUmVzZXQgdGhl
IHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVkdWxlclN0YXRlICgp
IHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJlbi5sZW5ndGggPSAw
O1xuICBoYXMgPSB7fTtcbiAgaWYgKGZhbHNlKSB7XG4gICAgY2lyY3VsYXIgPSB7fTtcbiAgfVxu
ICB3YWl0aW5nID0gZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLyoqXG4gKiBGbHVzaCBib3RoIHF1
ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rpb24gZmx1c2hTY2hlZHVsZXJR
dWV1ZSAoKSB7XG4gIGZsdXNoaW5nID0gdHJ1ZTtcbiAgdmFyIHdhdGNoZXIsIGlkO1xuXG4gIC8v
IFNvcnQgcXVldWUgYmVmb3JlIGZsdXNoLlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdDpcbiAgLy8g
MS4gQ29tcG9uZW50cyBhcmUgdXBkYXRlZCBmcm9tIHBhcmVudCB0byBjaGlsZC4gKGJlY2F1c2Ug
cGFyZW50IGlzIGFsd2F5c1xuICAvLyAgICBjcmVhdGVkIGJlZm9yZSB0aGUgY2hpbGQpXG4gIC8v
IDIuIEEgY29tcG9uZW50J3MgdXNlciB3YXRjaGVycyBhcmUgcnVuIGJlZm9yZSBpdHMgcmVuZGVy
IHdhdGNoZXIgKGJlY2F1c2VcbiAgLy8gICAgdXNlciB3YXRjaGVycyBhcmUgY3JlYXRlZCBiZWZv
cmUgdGhlIHJlbmRlciB3YXRjaGVyKVxuICAvLyAzLiBJZiBhIGNvbXBvbmVudCBpcyBkZXN0cm95
ZWQgZHVyaW5nIGEgcGFyZW50IGNvbXBvbmVudCdzIHdhdGNoZXIgcnVuLFxuICAvLyAgICBpdHMg
d2F0Y2hlcnMgY2FuIGJlIHNraXBwZWQuXG4gIHF1ZXVlLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsg
cmV0dXJuIGEuaWQgLSBiLmlkOyB9KTtcblxuICAvLyBkbyBub3QgY2FjaGUgbGVuZ3RoIGJlY2F1
c2UgbW9yZSB3YXRjaGVycyBtaWdodCBiZSBwdXNoZWRcbiAgLy8gYXMgd2UgcnVuIGV4aXN0aW5n
IHdhdGNoZXJzXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHF1ZXVlLmxlbmd0aDsgaW5kZXgr
Kykge1xuICAgIHdhdGNoZXIgPSBxdWV1ZVtpbmRleF07XG4gICAgaWQgPSB3YXRjaGVyLmlkO1xu
ICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7XG4gICAgLy8gaW4gZGV2IGJ1
aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxuICAgIGlmIChmYWxzZSkge1xu
ICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAwKSArIDE7XG4gICAgICBpZiAo
Y2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAgICAgICB3YXJuKFxuICAgICAg
ICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxvb3AgJyArIChcbiAgICAgICAg
ICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImluIHdhdGNoZXIgd2l0aCBleHBy
ZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpXG4gICAgICAg
ICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJcbiAgICAgICAgICAp
LFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWtcbiAgICAg
IH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBwb3N0IHF1ZXVlcyBiZWZvcmUg
cmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9IGFjdGl2YXRlZENoaWxkcmVu
LnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5zbGljZSgpO1xuXG4gIHJlc2V0
U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVudCB1cGRhdGVkIGFuZCBhY3Rp
dmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2YXRlZFF1ZXVlKTtcbiAgY2Fs
bFVwZGF0ZWRIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykg
e1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVw
ZGF0ZWRIb29rcyAocXVldWUpIHtcbiAgdmFyIGkgPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChp
LS0pIHtcbiAgICB2YXIgd2F0Y2hlciA9IHF1ZXVlW2ldO1xuICAgIHZhciB2bSA9IHdhdGNoZXIu
dm07XG4gICAgaWYgKHZtLl93YXRjaGVyID09PSB3YXRjaGVyICYmIHZtLl9pc01vdW50ZWQpIHtc
biAgICAgIGNhbGxIb29rKHZtLCAndXBkYXRlZCcpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAq
IFF1ZXVlIGEga2VwdC1hbGl2ZSBjb21wb25lbnQgdGhhdCB3YXMgYWN0aXZhdGVkIGR1cmluZyBw
YXRjaC5cbiAqIFRoZSBxdWV1ZSB3aWxsIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgZW50aXJlIHRy
ZWUgaGFzIGJlZW4gcGF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVBY3RpdmF0ZWRDb21wb25l
bnQgKHZtKSB7XG4gIC8vIHNldHRpbmcgX2luYWN0aXZlIHRvIGZhbHNlIGhlcmUgc28gdGhhdCBh
IHJlbmRlciBmdW5jdGlvbiBjYW5cbiAgLy8gcmVseSBvbiBjaGVja2luZyB3aGV0aGVyIGl0J3Mg
aW4gYW4gaW5hY3RpdmUgdHJlZSAoZS5nLiByb3V0ZXItdmlldylcbiAgdm0uX2luYWN0aXZlID0g
ZmFsc2U7XG4gIGFjdGl2YXRlZENoaWxkcmVuLnB1c2godm0pO1xufVxuXG5mdW5jdGlvbiBjYWxs
QWN0aXZhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVu
Z3RoOyBpKyspIHtcbiAgICBxdWV1ZVtpXS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGFjdGl2YXRl
Q2hpbGRDb21wb25lbnQocXVldWVbaV0sIHRydWUgLyogdHJ1ZSAqLyk7XG4gIH1cbn1cblxuLyoq
XG4gKiBQdXNoIGEgd2F0Y2hlciBpbnRvIHRoZSB3YXRjaGVyIHF1ZXVlLlxuICogSm9icyB3aXRo
IGR1cGxpY2F0ZSBJRHMgd2lsbCBiZSBza2lwcGVkIHVubGVzcyBpdCdzXG4gKiBwdXNoZWQgd2hl
biB0aGUgcXVldWUgaXMgYmVpbmcgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVXYXRjaGVy
ICh3YXRjaGVyKSB7XG4gIHZhciBpZCA9IHdhdGNoZXIuaWQ7XG4gIGlmIChoYXNbaWRdID09IG51
bGwpIHtcbiAgICBoYXNbaWRdID0gdHJ1ZTtcbiAgICBpZiAoIWZsdXNoaW5nKSB7XG4gICAgICBx
dWV1ZS5wdXNoKHdhdGNoZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBhbHJlYWR5IGZs
dXNoaW5nLCBzcGxpY2UgdGhlIHdhdGNoZXIgYmFzZWQgb24gaXRzIGlkXG4gICAgICAvLyBpZiBh
bHJlYWR5IHBhc3QgaXRzIGlkLCBpdCB3aWxsIGJlIHJ1biBuZXh0IGltbWVkaWF0ZWx5LlxuICAg
ICAgdmFyIGkgPSBxdWV1ZS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkgPiBpbmRleCAmJiBx
dWV1ZVtpXS5pZCA+IHdhdGNoZXIuaWQpIHtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgICAg
cXVldWUuc3BsaWNlKGkgKyAxLCAwLCB3YXRjaGVyKTtcbiAgICB9XG4gICAgLy8gcXVldWUgdGhl
IGZsdXNoXG4gICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICB3YWl0aW5nID0gdHJ1ZTtcbiAgICAg
IG5leHRUaWNrKGZsdXNoU2NoZWR1bGVyUXVldWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9c
blxudmFyIHVpZCQyID0gMDtcblxuLyoqXG4gKiBBIHdhdGNoZXIgcGFyc2VzIGFuIGV4cHJlc3Np
b24sIGNvbGxlY3RzIGRlcGVuZGVuY2llcyxcbiAqIGFuZCBmaXJlcyBjYWxsYmFjayB3aGVuIHRo
ZSBleHByZXNzaW9uIHZhbHVlIGNoYW5nZXMuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJvdGggdGhl
ICR3YXRjaCgpIGFwaSBhbmQgZGlyZWN0aXZlcy5cbiAqL1xudmFyIFdhdGNoZXIgPSBmdW5jdGlv
biBXYXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGNiLFxuICBvcHRpb25zXG4pIHtcbiAg
dGhpcy52bSA9IHZtO1xuICB2bS5fd2F0Y2hlcnMucHVzaCh0aGlzKTtcbiAgLy8gb3B0aW9uc1xu
ICBpZiAob3B0aW9ucykge1xuICAgIHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuICAgIHRo
aXMudXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICAgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5
O1xuICAgIHRoaXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuICB9IGVsc2Uge1xuICAgIHRoaXMu
ZGVlcCA9IHRoaXMudXNlciA9IHRoaXMubGF6eSA9IHRoaXMuc3luYyA9IGZhbHNlO1xuICB9XG4g
IHRoaXMuY2IgPSBjYjtcbiAgdGhpcy5pZCA9ICsrdWlkJDI7IC8vIHVpZCBmb3IgYmF0Y2hpbmdc
biAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB0aGlzLmRpcnR5ID0gdGhpcy5sYXp5OyAvLyBmb3Ig
bGF6eSB3YXRjaGVyc1xuICB0aGlzLmRlcHMgPSBbXTtcbiAgdGhpcy5uZXdEZXBzID0gW107XG4g
IHRoaXMuZGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5uZXdEZXBJZHMgPSBuZXcgX1NldCgp
O1xuICB0aGlzLmV4cHJlc3Npb24gPSAgZmFsc2VcbiAgICA/IGV4cE9yRm4udG9TdHJpbmcoKVxu
ICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlwZW9m
IGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4g
IH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYg
KCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBmdW5jdGlvbiAoKSB7fTtcbiAg
ICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJG
YWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG4gICAg
ICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRlbGltaXRlZCBwYXRocy4gJyAr
XG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0ZWFkLicsXG4g
ICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlzLnZhbHVlID0gdGhpcy5sYXp5
XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipcbiAqIEV2YWx1
YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuV2F0Y2hl
ci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdldCh0aGlzKTtc
biAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICB0cnkge1xuICAgIHZhbHVlID0g
dGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHRoaXMu
dXNlcikge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdldHRlciBmb3Igd2F0Y2hlciBc
XFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHRocm93IGVcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgLy8gXCJ0b3VjaFwiIGV2ZXJ5
IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4gICAgLy8gZGVwZW5kZW5jaWVz
IGZvciBkZWVwIHdhdGNoaW5nXG4gICAgaWYgKHRoaXMuZGVlcCkge1xuICAgICAgdHJhdmVyc2Uo
dmFsdWUpO1xuICAgIH1cbiAgICBwb3BUYXJnZXQoKTtcbiAgICB0aGlzLmNsZWFudXBEZXBzKCk7
XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFkZCBhIGRlcGVuZGVuY3kgdG8g
dGhpcyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9IGZ1bmN0aW9u
IGFkZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAgaWYgKCF0aGlzLm5ld0RlcElk
cy5oYXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcbiAgICB0aGlzLm5ld0Rl
cHMucHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFzKGlkKSkge1xuICAgICAgZGVw
LmFkZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYW4gdXAgZm9yIGRl
cGVuZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuY2xlYW51cERlcHMg
PSBmdW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAg
dmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGRlcCA9
IHRoaXMkMS5kZXBzW2ldO1xuICAgIGlmICghdGhpcyQxLm5ld0RlcElkcy5oYXMoZGVwLmlkKSkg
e1xuICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgfVxuICB2YXIgdG1wID0g
dGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4gIHRoaXMubmV3
RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAgPSB0aGlzLmRl
cHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBzID0gdG1wO1xu
ICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2NyaWJlciBpbnRl
cmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxuICov
XG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAvKiBp
c3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAgdGhpcy5kaXJ0
eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5ydW4oKTtcbiAg
fSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogU2No
ZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVy
LlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkge1xuICBpZiAo
dGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAgIGlmIChcbiAg
ICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3
YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAgIC8vIHdoZW4g
dGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAgICAgIC8vIGhh
dmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhpcy5kZWVwXG4g
ICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlz
LnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudXNlcikg
e1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwg
b2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3Io
ZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVz
c2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0
aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxuICog
VGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVyLnBy
b3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1ZSA9
IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVwZW5k
IG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIucHJv
dG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRo
aXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAg
dGhpcyQxLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlIHNlbGYg
ZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldhdGNoZXIucHJv
dG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICAgIHZhciB0aGlzJDEg
PSB0aGlzO1xuXG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20g
dm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIG9w
ZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ryb3ll
ZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJlbW92ZSh0
aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhpcy5kZXBzLmxl
bmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzJDEuZGVwc1tpXS5yZW1vdmVTdWIo
dGhpcyQxKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufTtcblxuLyoq
XG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxsIGNvbnZlcnRl
ZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5zaWRlIHRoZSBv
YmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG4gKi9cbnZh
ciBzZWVuT2JqZWN0cyA9IG5ldyBfU2V0KCk7XG5mdW5jdGlvbiB0cmF2ZXJzZSAodmFsKSB7XG4g
IHNlZW5PYmplY3RzLmNsZWFyKCk7XG4gIF90cmF2ZXJzZSh2YWwsIHNlZW5PYmplY3RzKTtcbn1c
blxuZnVuY3Rpb24gX3RyYXZlcnNlICh2YWwsIHNlZW4pIHtcbiAgdmFyIGksIGtleXM7XG4gIHZh
ciBpc0EgPSBBcnJheS5pc0FycmF5KHZhbCk7XG4gIGlmICgoIWlzQSAmJiAhaXNPYmplY3QodmFs
KSkgfHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlm
ICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG4gICAg
aWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNlZW4uYWRk
KGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7XG4gICAgd2hp
bGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Uge1xuICAgIGtl
eXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAo
aS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1cblxuLyogICov
XG5cbnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gIGVudW1lcmFibGU6IHRydWUs
XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxuICBzZXQ6IG5vb3Bcbn07XG5c
bmZ1bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5KSB7XG4gIHNoYXJlZFByb3Bl
cnR5RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRlciAoKSB7XG4gICAgcmV0dXJu
IHRoaXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5z
ZXQgPSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgdGhpc1tzb3VyY2VLZXldW2tl
eV0gPSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hh
cmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gaW5pdFN0YXRlICh2bSkge1xu
ICB2bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucztcbiAgaWYgKG9w
dHMucHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsgfVxuICBpZiAob3B0cy5tZXRo
b2RzKSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9XG4gIGlmIChvcHRzLmRhdGEp
IHtcbiAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2ZSh2bS5fZGF0YSA9
IHt9LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlmIChvcHRzLmNvbXB1dGVkKSB7
IGluaXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAgaWYgKG9wdHMud2F0Y2ggJiYg
b3B0cy53YXRjaCAhPT0gbmF0aXZlV2F0Y2gpIHtcbiAgICBpbml0V2F0Y2godm0sIG9wdHMud2F0
Y2gpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrT3B0aW9uVHlwZSAodm0sIG5hbWUpIHtcbiAg
dmFyIG9wdGlvbiA9IHZtLiRvcHRpb25zW25hbWVdO1xuICBpZiAoIWlzUGxhaW5PYmplY3Qob3B0
aW9uKSkge1xuICAgIHdhcm4oXG4gICAgICAoXCJjb21wb25lbnQgb3B0aW9uIFxcXCJcIiArIG5h
bWUgKyBcIlxcXCIgc2hvdWxkIGJlIGFuIG9iamVjdC5cIiksXG4gICAgICB2bVxuICAgICk7XG4g
IH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBw
cm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZt
Ll9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMg
dXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMg
b2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtl
eXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNl
IHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0
ID0gaXNSb290O1xuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtleXMucHVz
aChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0aW9ucywg
cHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgIGlmIChpc1Jlc2VydmVkQXR0cmlidXRlKGtleSkgfHwgY29uZmlnLmlz
UmVzZXJ2ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJcXFwiXCIg
KyBrZXkgKyBcIlxcXCIgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgYW5kIGNhbm5vdCBiZSB1c2Vk
IGFzIGNvbXBvbmVudCBwcm9wLlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAg
fVxuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFsdWUsIGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgaWYgKHZtLiRwYXJlbnQgJiYgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCkg
e1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGEgcHJvcCBk
aXJlY3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3
cml0dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAg
ICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21wdXRlZCBwcm9wZXJ0eSBiYXNl
ZCBvbiB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFsdWUuIFByb3AgYmVpbmcgbXV0
YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAg
ICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVSZWFj
dGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8vIHN0YXRpYyBwcm9wcyBh
cmUgYWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBwcm90b3R5cGVcbiAgICAvLyBk
dXJpbmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJveHkgcHJvcHMgZGVmaW5lZCBh
dFxuICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4g
ICAgICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2
YXIga2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4gIG9ic2VydmVyU3RhdGUuc2hv
dWxkQ29udmVydCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2YXIg
ZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBkYXRh
ID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8fCB7
fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIFwi
cHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0
aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRwczovL3Z1ZWpz
Lm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVuY3Rpb24nLFxu
ICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFy
IGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJv
cHM7XG4gIHZhciBtZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9kcztcbiAgdmFyIGkgPSBrZXlz
Lmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgaWYgKG1ldGhvZHMgJiYgaGFzT3duKG1ldGhvZHMsIGtleSkpIHtc
biAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwi
IGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIGRhdGEgcHJvcGVydHkuXCIpLFxuICAgICAg
ICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wcyAmJiBoYXNP
d24ocHJvcHMsIGtleSkpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicg
JiYgd2FybihcbiAgICAgICAgXCJUaGUgZGF0YSBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxc
XCIgaXMgYWxyZWFkeSBkZWNsYXJlZCBhcyBhIHByb3AuIFwiICtcbiAgICAgICAgXCJVc2UgcHJv
cCBkZWZhdWx0IHZhbHVlIGluc3RlYWQuXCIsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0g
ZWxzZSBpZiAoIWlzUmVzZXJ2ZWQoa2V5KSkge1xuICAgICAgcHJveHkodm0sIFwiX2RhdGFcIiwg
a2V5KTtcbiAgICB9XG4gIH1cbiAgLy8gb2JzZXJ2ZSBkYXRhXG4gIG9ic2VydmUoZGF0YSwgdHJ1
ZSAvKiBhc1Jvb3REYXRhICovKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YSAoZGF0YSwgdm0pIHtc
biAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtKVxuICB9IGNhdGNoIChlKSB7XG4gICAg
aGFuZGxlRXJyb3IoZSwgdm0sIFwiZGF0YSgpXCIpO1xuICAgIHJldHVybiB7fVxuICB9XG59XG5c
bnZhciBjb21wdXRlZFdhdGNoZXJPcHRpb25zID0geyBsYXp5OiB0cnVlIH07XG5cbmZ1bmN0aW9u
IGluaXRDb21wdXRlZCAodm0sIGNvbXB1dGVkKSB7XG4gIFwicHJvZHVjdGlvblwiICE9PSAncHJv
ZHVjdGlvbicgJiYgY2hlY2tPcHRpb25UeXBlKHZtLCAnY29tcHV0ZWQnKTtcbiAgdmFyIHdhdGNo
ZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZv
ciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0ZWRba2V5
XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicgPyB1c2Vy
RGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB3YXJuKFxuICAgICAg
ICAoXCJHZXR0ZXIgaXMgbWlzc2luZyBmb3IgY29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5
ICsgXCJcXFwiLlwiKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGNyZWF0
ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJvcGVydHkuXG4gICAgd2F0Y2hl
cnNba2V5XSA9IG5ldyBXYXRjaGVyKHZtLCBnZXR0ZXIgfHwgbm9vcCwgbm9vcCwgY29tcHV0ZWRX
YXRjaGVyT3B0aW9ucyk7XG5cbiAgICAvLyBjb21wb25lbnQtZGVmaW5lZCBjb21wdXRlZCBwcm9w
ZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmluZWQgb24gdGhlXG4gICAgLy8gY29tcG9uZW50IHByb3Rv
dHlwZS4gV2Ugb25seSBuZWVkIHRvIGRlZmluZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGRlZmluZWRc
biAgICAvLyBhdCBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xu
ICAgICAgZGVmaW5lQ29tcHV0ZWQodm0sIGtleSwgdXNlckRlZik7XG4gICAgfSBlbHNlIGlmIChm
YWxzZSkge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0YSkge1xuICAgICAgICB3YXJuKChcIlRo
ZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZp
bmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVsc2UgaWYgKHZtLiRvcHRpb25zLnByb3Bz
ICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21w
dXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFz
IGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVm
aW5lQ29tcHV0ZWQgKHRhcmdldCwga2V5LCB1c2VyRGVmKSB7XG4gIGlmICh0eXBlb2YgdXNlckRl
ZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBj
cmVhdGVDb21wdXRlZEdldHRlcihrZXkpO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5z
ZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQg
PSB1c2VyRGVmLmdldFxuICAgICAgPyB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICA/
IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgICAgOiB1c2VyRGVmLmdldFxuICAgICAg
OiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSB1c2VyRGVmLnNldFxu
ICAgICAgPyB1c2VyRGVmLnNldFxuICAgICAgOiBub29wO1xuICB9XG4gIGlmIChmYWxzZSkge1xu
ICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3
YXJuKFxuICAgICAgICAoXCJDb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIg
d2FzIGFzc2lnbmVkIHRvIGJ1dCBpdCBoYXMgbm8gc2V0dGVyLlwiKSxcbiAgICAgICAgdGhpc1xu
ICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtl
eSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcHV0
ZWRHZXR0ZXIgKGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24gY29tcHV0ZWRHZXR0ZXIgKCkge1xu
ICAgIHZhciB3YXRjaGVyID0gdGhpcy5fY29tcHV0ZWRXYXRjaGVycyAmJiB0aGlzLl9jb21wdXRl
ZFdhdGNoZXJzW2tleV07XG4gICAgaWYgKHdhdGNoZXIpIHtcbiAgICAgIGlmICh3YXRjaGVyLmRp
cnR5KSB7XG4gICAgICAgIHdhdGNoZXIuZXZhbHVhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChE
ZXAudGFyZ2V0KSB7XG4gICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gd2F0Y2hlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9k
cyAodm0sIG1ldGhvZHMpIHtcbiAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiBj
aGVja09wdGlvblR5cGUodm0sICdtZXRob2RzJyk7XG4gIHZhciBwcm9wcyA9IHZtLiRvcHRpb25z
LnByb3BzO1xuICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgIHZtW2tleV0gPSBtZXRo
b2RzW2tleV0gPT0gbnVsbCA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIHdh
cm4oXG4gICAgICAgICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbiB1bmRl
ZmluZWQgdmFsdWUgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAgICAgICAg
XCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAgICAgICAg
IHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3Bz
LCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9kIFxcXCJcIiArIGtl
eSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxcbiAgICAg
ICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBp
bml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24n
ICYmIGNoZWNrT3B0aW9uVHlwZSh2bSwgJ3dhdGNoJyk7XG4gIGZvciAodmFyIGtleSBpbiB3YXRj
aCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJh
eShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVyLmxlbmd0aDsg
aSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcltpXSk7XG4gICAg
ICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcik7
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKFxuICB2bSxcbiAga2V5
T3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KGhh
bmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhhbmRsZXIu
aGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAg
aGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2bS4kd2F0Y2goa2V5T3JGbiwg
aGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8v
IGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0
aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2Ug
aGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2
YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRo
aXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0
aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChmYWxzZSkge1xuICAgIGRhdGFE
ZWYuc2V0ID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdBdm9p
ZCByZXBsYWNpbmcgaW5zdGFuY2Ugcm9vdCAkZGF0YS4gJyArXG4gICAgICAgICdVc2UgbmVzdGVk
IGRhdGEgcHJvcGVydGllcyBpbnN0ZWFkLicsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAg
fTtcbiAgICBwcm9wc0RlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFwiJHByb3Bz
IGlzIHJlYWRvbmx5LlwiLCB0aGlzKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShWdWUucHJvdG90eXBlLCAnJGRhdGEnLCBkYXRhRGVmKTtcbiAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcHJvcHMnLCBwcm9wc0RlZik7XG5cbiAgVnVlLnByb3Rv
dHlwZS4kc2V0ID0gc2V0O1xuICBWdWUucHJvdG90eXBlLiRkZWxldGUgPSBkZWw7XG5cbiAgVnVl
LnByb3RvdHlwZS4kd2F0Y2ggPSBmdW5jdGlvbiAoXG4gICAgZXhwT3JGbixcbiAgICBjYixcbiAg
ICBvcHRpb25zXG4gICkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKGlzUGxhaW5PYmpl
Y3QoY2IpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV2F0Y2hlcih2bSwgZXhwT3JGbiwgY2IsIG9w
dGlvbnMpXG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIG9wdGlvbnMu
dXNlciA9IHRydWU7XG4gICAgdmFyIHdhdGNoZXIgPSBuZXcgV2F0Y2hlcih2bSwgZXhwT3JGbiwg
Y2IsIG9wdGlvbnMpO1xuICAgIGlmIChvcHRpb25zLmltbWVkaWF0ZSkge1xuICAgICAgY2IuY2Fs
bCh2bSwgd2F0Y2hlci52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiB1bndhdGNo
Rm4gKCkge1xuICAgICAgd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgfTtcbn1cblxuLyog
ICovXG5cbmZ1bmN0aW9uIGluaXRQcm92aWRlICh2bSkge1xuICB2YXIgcHJvdmlkZSA9IHZtLiRv
cHRpb25zLnByb3ZpZGU7XG4gIGlmIChwcm92aWRlKSB7XG4gICAgdm0uX3Byb3ZpZGVkID0gdHlw
ZW9mIHByb3ZpZGUgPT09ICdmdW5jdGlvbidcbiAgICAgID8gcHJvdmlkZS5jYWxsKHZtKVxuICAg
ICAgOiBwcm92aWRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRJbmplY3Rpb25zICh2bSkge1xu
ICB2YXIgcmVzdWx0ID0gcmVzb2x2ZUluamVjdCh2bS4kb3B0aW9ucy5pbmplY3QsIHZtKTtcbiAg
aWYgKHJlc3VsdCkge1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IGZhbHNlO1xu
ICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIGRl
ZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAg
ICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYW4gaW5qZWN0ZWQgdmFs
dWUgZGlyZWN0bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBc
Im92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21wb25lbnQgcmUtcmVuZGVycy4g
XCIgK1xuICAgICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5
ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0
W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVy
dCA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUluamVjdCAoaW5qZWN0LCB2bSkg
e1xuICBpZiAoaW5qZWN0KSB7XG4gICAgLy8gaW5qZWN0IGlzIDphbnkgYmVjYXVzZSBmbG93IGlz
IG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBjYWNoZWRcbiAgICB2YXIgcmVzdWx0ID0g
T2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIga2V5cyA9IGhhc1N5bWJvbFxuICAgICAgICA/
IFJlZmxlY3Qub3duS2V5cyhpbmplY3QpXG4gICAgICAgIDogT2JqZWN0LmtleXMoaW5qZWN0KTtc
blxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFy
IGtleSA9IGtleXNbaV07XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGluamVjdFtrZXldO1xuICAg
ICAgdmFyIHNvdXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAo
c291cmNlLl9wcm92aWRlZCAmJiBwcm92aWRlS2V5IGluIHNvdXJjZS5fcHJvdmlkZWQpIHtcbiAg
ICAgICAgICByZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAg
ICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtc
biAgICAgIH1cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB3YXJuKChcIkluamVjdGlvbiBc
XFwiXCIgKyBrZXkgKyBcIlxcXCIgbm90IGZvdW5kXCIpLCB2bSk7XG4gICAgICB9XG4gICAgfVxu
ICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRnVu
Y3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29u
dGV4dCxcbiAgY2hpbGRyZW5cbikge1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRp
b25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNEZWYocHJvcE9wdGlvbnMpKSB7XG4g
ICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICBwcm9wc1trZXldID0gdmFs
aWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3BzRGF0YSB8fCB7fSk7XG4gICAgfVxuICB9
IGVsc2Uge1xuICAgIGlmIChpc0RlZihkYXRhLmF0dHJzKSkgeyBtZXJnZVByb3BzKHByb3BzLCBk
YXRhLmF0dHJzKTsgfVxuICAgIGlmIChpc0RlZihkYXRhLnByb3BzKSkgeyBtZXJnZVByb3BzKHBy
b3BzLCBkYXRhLnByb3BzKTsgfVxuICB9XG4gIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBm
dW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250
ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFtZWQgc2xvdCBjaGVja1xuICB2
YXIgX2NvbnRleHQgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQpO1xuICB2YXIgaCA9IGZ1bmN0aW9u
IChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KF9jb250ZXh0LCBhLCBiLCBjLCBk
LCB0cnVlKTsgfTtcbiAgdmFyIHZub2RlID0gQ3Rvci5vcHRpb25zLnJlbmRlci5jYWxsKG51bGws
IGgsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICBjaGlsZHJlbjog
Y2hpbGRyZW4sXG4gICAgcGFyZW50OiBjb250ZXh0LFxuICAgIGxpc3RlbmVyczogZGF0YS5vbiB8
fCB7fSxcbiAgICBpbmplY3Rpb25zOiByZXNvbHZlSW5qZWN0KEN0b3Iub3B0aW9ucy5pbmplY3Qs
IGNvbnRleHQpLFxuICAgIHNsb3RzOiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlU2xvdHMo
Y2hpbGRyZW4sIGNvbnRleHQpOyB9XG4gIH0pO1xuICBpZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9k
ZSkge1xuICAgIHZub2RlLmZ1bmN0aW9uYWxDb250ZXh0ID0gY29udGV4dDtcbiAgICB2bm9kZS5m
dW5jdGlvbmFsT3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgICBpZiAoZGF0YS5zbG90KSB7XG4g
ICAgICAodm5vZGUuZGF0YSB8fCAodm5vZGUuZGF0YSA9IHt9KSkuc2xvdCA9IGRhdGEuc2xvdDtc
biAgICB9XG4gIH1cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIG1lcmdlUHJvcHMgKHRv
LCBmcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG4gICAgdG9bY2FtZWxpemUoa2V5
KV0gPSBmcm9tW2tleV07XG4gIH1cbn1cblxuLyogICovXG5cbi8vIGhvb2tzIHRvIGJlIGludm9r
ZWQgb24gY29tcG9uZW50IFZOb2RlcyBkdXJpbmcgcGF0Y2hcbnZhciBjb21wb25lbnRWTm9kZUhv
b2tzID0ge1xuICBpbml0OiBmdW5jdGlvbiBpbml0IChcbiAgICB2bm9kZSxcbiAgICBoeWRyYXRp
bmcsXG4gICAgcGFyZW50RWxtLFxuICAgIHJlZkVsbVxuICApIHtcbiAgICBpZiAoIXZub2RlLmNv
bXBvbmVudEluc3RhbmNlIHx8IHZub2RlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkg
e1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjcmVhdGVDb21w
b25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2bm9kZSxcbiAgICAgICAgYWN0aXZlSW5z
dGFuY2UsXG4gICAgICAgIHBhcmVudEVsbSxcbiAgICAgICAgcmVmRWxtXG4gICAgICApO1xuICAg
ICAgY2hpbGQuJG1vdW50KGh5ZHJhdGluZyA/IHZub2RlLmVsbSA6IHVuZGVmaW5lZCwgaHlkcmF0
aW5nKTtcbiAgICB9IGVsc2UgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAvLyBr
ZXB0LWFsaXZlIGNvbXBvbmVudHMsIHRyZWF0IGFzIGEgcGF0Y2hcbiAgICAgIHZhciBtb3VudGVk
Tm9kZSA9IHZub2RlOyAvLyB3b3JrIGFyb3VuZCBmbG93XG4gICAgICBjb21wb25lbnRWTm9kZUhv
b2tzLnByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVkTm9kZSk7XG4gICAgfVxuICB9LFxuXG4g
IHByZXBhdGNoOiBmdW5jdGlvbiBwcmVwYXRjaCAob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgdmFy
IG9wdGlvbnMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIHZhciBjaGlsZCA9IHZub2Rl
LmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgdXBk
YXRlQ2hpbGRDb21wb25lbnQoXG4gICAgICBjaGlsZCxcbiAgICAgIG9wdGlvbnMucHJvcHNEYXRh
LCAvLyB1cGRhdGVkIHByb3BzXG4gICAgICBvcHRpb25zLmxpc3RlbmVycywgLy8gdXBkYXRlZCBs
aXN0ZW5lcnNcbiAgICAgIHZub2RlLCAvLyBuZXcgcGFyZW50IHZub2RlXG4gICAgICBvcHRpb25z
LmNoaWxkcmVuIC8vIG5ldyBjaGlsZHJlblxuICAgICk7XG4gIH0sXG5cbiAgaW5zZXJ0OiBmdW5j
dGlvbiBpbnNlcnQgKHZub2RlKSB7XG4gICAgdmFyIGNvbnRleHQgPSB2bm9kZS5jb250ZXh0O1xu
ICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAg
IGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCkge1xuICAgICAgY29tcG9uZW50SW5z
dGFuY2UuX2lzTW91bnRlZCA9IHRydWU7XG4gICAgICBjYWxsSG9vayhjb21wb25lbnRJbnN0YW5j
ZSwgJ21vdW50ZWQnKTtcbiAgICB9XG4gICAgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4g
ICAgICBpZiAoY29udGV4dC5faXNNb3VudGVkKSB7XG4gICAgICAgIC8vIHZ1ZS1yb3V0ZXIjMTIx
MlxuICAgICAgICAvLyBEdXJpbmcgdXBkYXRlcywgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCdzIGNo
aWxkIGNvbXBvbmVudHMgbWF5XG4gICAgICAgIC8vIGNoYW5nZSwgc28gZGlyZWN0bHkgd2Fsa2lu
ZyB0aGUgdHJlZSBoZXJlIG1heSBjYWxsIGFjdGl2YXRlZCBob29rc1xuICAgICAgICAvLyBvbiBp
bmNvcnJlY3QgY2hpbGRyZW4uIEluc3RlYWQgd2UgcHVzaCB0aGVtIGludG8gYSBxdWV1ZSB3aGlj
aCB3aWxsXG4gICAgICAgIC8vIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgd2hvbGUgcGF0Y2ggcHJv
Y2VzcyBlbmRlZC5cbiAgICAgICAgcXVldWVBY3RpdmF0ZWRDb21wb25lbnQoY29tcG9uZW50SW5z
dGFuY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChj
b21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAg
fSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHZhciBjb21w
b25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9u
ZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkKSB7XG4gICAgICBpZiAoIXZub2RlLmRhdGEua2VlcEFs
aXZlKSB7XG4gICAgICAgIGNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2Us
IHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBob29r
c1RvTWVyZ2UgPSBPYmplY3Qua2V5cyhjb21wb25lbnRWTm9kZUhvb2tzKTtcblxuZnVuY3Rpb24g
Y3JlYXRlQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRy
ZW4sXG4gIHRhZ1xuKSB7XG4gIGlmIChpc1VuZGVmKEN0b3IpKSB7XG4gICAgcmV0dXJuXG4gIH1c
blxuICB2YXIgYmFzZUN0b3IgPSBjb250ZXh0LiRvcHRpb25zLl9iYXNlO1xuXG4gIC8vIHBsYWlu
IG9wdGlvbnMgb2JqZWN0OiB0dXJuIGl0IGludG8gYSBjb25zdHJ1Y3RvclxuICBpZiAoaXNPYmpl
Y3QoQ3RvcikpIHtcbiAgICBDdG9yID0gYmFzZUN0b3IuZXh0ZW5kKEN0b3IpO1xuICB9XG5cbiAg
Ly8gaWYgYXQgdGhpcyBzdGFnZSBpdCdzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIGFuIGFzeW5jIGNv
bXBvbmVudCBmYWN0b3J5LFxuICAvLyByZWplY3QuXG4gIGlmICh0eXBlb2YgQ3RvciAhPT0gJ2Z1
bmN0aW9uJykge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBv
bmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxu
ICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIHZhciBhc3luY0ZhY3Rv
cnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFzeW5jRmFjdG9yeSA9IEN0b3I7
XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3luY0ZhY3RvcnksIGJhc2VDdG9y
LCBjb250ZXh0KTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyByZXR1
cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25lbnQsIHdoaWNoIGlzIHJlbmRl
cmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJlc2VydmVzIGFsbCB0aGUgcmF3
IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRoZSBpbmZvcm1hdGlvbiB3aWxs
IGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5kIGh5ZHJhdGlvbi5cbiAgICAg
IHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAgICBhc3luY0ZhY3RvcnksXG4g
ICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAg
ICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAv
LyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4aW5zIGFyZSBh
cHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlvblxuICByZXNv
bHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRyYW5zZm9ybSBjb21wb25lbnQg
di1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlzRGVmKGRhdGEubW9kZWwp
KSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRhKTtcbiAgfVxuXG4gIC8v
IGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zyb21WTm9kZURh
dGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICBpZiAo
aXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJldHVybiBjcmVhdGVGdW5j
dGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4p
XG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUg
dHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9N
IGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRo
IGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8gc28gaXQgZ2V0cyBwcm9jZXNz
ZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2
ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFi
c3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFu
IHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29yayBhcm91bmQgZmxvd1xuICAg
IHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtcbiAgICBpZiAoc2xvdCkge1xu
ICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxuICAvLyBtZXJnZSBjb21wb25l
bnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRlciBub2RlXG4gIG1lcmdlSG9v
a3MoZGF0YSk7XG5cbiAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIgdm5vZGVcbiAgdmFyIG5hbWUg
PSBDdG9yLm9wdGlvbnMubmFtZSB8fCB0YWc7XG4gIHZhciB2bm9kZSA9IG5ldyBWTm9kZShcbiAg
ICAoXCJ2dWUtY29tcG9uZW50LVwiICsgKEN0b3IuY2lkKSArIChuYW1lID8gKFwiLVwiICsgbmFt
ZSkgOiAnJykpLFxuICAgIGRhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNv
bnRleHQsXG4gICAgeyBDdG9yOiBDdG9yLCBwcm9wc0RhdGE6IHByb3BzRGF0YSwgbGlzdGVuZXJz
OiBsaXN0ZW5lcnMsIHRhZzogdGFnLCBjaGlsZHJlbjogY2hpbGRyZW4gfSxcbiAgICBhc3luY0Zh
Y3RvcnlcbiAgKTtcbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVu
dEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21w
b25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCwgLy8gYWN0aXZlSW5zdGFuY2Ug
aW4gbGlmZWN5Y2xlIHN0YXRlXG4gIHBhcmVudEVsbSxcbiAgcmVmRWxtXG4pIHtcbiAgdmFyIHZu
b2RlQ29tcG9uZW50T3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIHZhciBvcHRp
b25zID0ge1xuICAgIF9pc0NvbXBvbmVudDogdHJ1ZSxcbiAgICBwYXJlbnQ6IHBhcmVudCxcbiAg
ICBwcm9wc0RhdGE6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGEsXG4gICAgX2NvbXBv
bmVudFRhZzogdm5vZGVDb21wb25lbnRPcHRpb25zLnRhZyxcbiAgICBfcGFyZW50Vm5vZGU6IHZu
b2RlLFxuICAgIF9wYXJlbnRMaXN0ZW5lcnM6IHZub2RlQ29tcG9uZW50T3B0aW9ucy5saXN0ZW5l
cnMsXG4gICAgX3JlbmRlckNoaWxkcmVuOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW4s
XG4gICAgX3BhcmVudEVsbTogcGFyZW50RWxtIHx8IG51bGwsXG4gICAgX3JlZkVsbTogcmVmRWxt
IHx8IG51bGxcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRlciBmdW5jdGlv
bnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtcbiAg
aWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gaW5saW5l
VGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVt
cGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGVDb21wb25lbnRP
cHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rcyAoZGF0YSkge1xu
ICBpZiAoIWRhdGEuaG9vaykge1xuICAgIGRhdGEuaG9vayA9IHt9O1xuICB9XG4gIGZvciAodmFy
IGkgPSAwOyBpIDwgaG9va3NUb01lcmdlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGhv
b2tzVG9NZXJnZVtpXTtcbiAgICB2YXIgZnJvbVBhcmVudCA9IGRhdGEuaG9va1trZXldO1xuICAg
IHZhciBvdXJzID0gY29tcG9uZW50Vk5vZGVIb29rc1trZXldO1xuICAgIGRhdGEuaG9va1trZXld
ID0gZnJvbVBhcmVudCA/IG1lcmdlSG9vayQxKG91cnMsIGZyb21QYXJlbnQpIDogb3VycztcbiAg
fVxufVxuXG5mdW5jdGlvbiBtZXJnZUhvb2skMSAob25lLCB0d28pIHtcbiAgcmV0dXJuIGZ1bmN0
aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgb25lKGEsIGIsIGMsIGQpO1xuICAgIHR3byhhLCBiLCBj
LCBkKTtcbiAgfVxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFs
dWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3Rp
dmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBw
cm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xu
ICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAn
aW5wdXQnOyhkYXRhLnByb3BzIHx8IChkYXRhLnByb3BzID0ge30pKVtwcm9wXSA9IGRhdGEubW9k
ZWwudmFsdWU7XG4gIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gIGlmIChp
c0RlZihvbltldmVudF0pKSB7XG4gICAgb25bZXZlbnRdID0gW2RhdGEubW9kZWwuY2FsbGJhY2td
LmNvbmNhdChvbltldmVudF0pO1xuICB9IGVsc2Uge1xuICAgIG9uW2V2ZW50XSA9IGRhdGEubW9k
ZWwuY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9STUFMSVpFID0g
MTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5jdGlvbiBmb3Ig
cHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQgZ2V0dGluZyB5
ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4g
IHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlLFxuICBhbHdh
eXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1ByaW1pdGl2
ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4gICAgY2hpbGRy
ZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlzVHJ1ZShhbHdh
eXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNfTk9STUFMSVpF
O1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRhdGEsIGNoaWxk
cmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnQgKFxu
ICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9u
VHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19vYl9fKSkge1xu
ICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiQXZv
aWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNPTi5z
dHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlzIGNyZWF0ZSBmcmVzaCB2
bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAgIGNvbnRleHRcbiAgICAp
O1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyBvYmplY3Qgc3ludGF4
IGluIHYtYmluZFxuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0YS5pcykpIHtcbiAgICB0
YWcgPSBkYXRhLmlzO1xuICB9XG4gIGlmICghdGFnKSB7XG4gICAgLy8gaW4gY2FzZSBvZiBjb21w
b25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2Rl
KClcbiAgfVxuICAvLyB3YXJuIGFnYWluc3Qgbm9uLXByaW1pdGl2ZSBrZXlcbiAgaWYgKGZhbHNl
XG4gICkge1xuICAgIHdhcm4oXG4gICAgICAnQXZvaWQgdXNpbmcgbm9uLXByaW1pdGl2ZSB2YWx1
ZSBhcyBrZXksICcgK1xuICAgICAgJ3VzZSBzdHJpbmcvbnVtYmVyIHZhbHVlIGluc3RlYWQuJyxc
biAgICAgIGNvbnRleHRcbiAgICApO1xuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9u
IGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hp
bGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xu
ICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6
IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9y
bWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5v
cm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlw
ZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXpl
Q2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2Yg
dGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gY29uZmlnLmdldFRh
Z05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4g
ICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgdm5vZGUgPSBuZXcgVk5v
ZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGls
ZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4g
ICAgfSBlbHNlIGlmIChpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMs
ICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUg
PSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVt
ZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWdu
ZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxk
cmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJl
bixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAg
fVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVj
dG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGls
ZHJlbik7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlKSkge1xuICAgIGlmIChucykgeyBhcHBseU5T
KHZub2RlLCBucyk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
Y3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5z
KSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0
Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxu
ICAgIHJldHVyblxuICB9XG4gIGlmIChpc0RlZih2bm9kZS5jaGlsZHJlbikpIHtcbiAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
ICAgdmFyIGNoaWxkID0gdm5vZGUuY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoY2hpbGQu
dGFnKSAmJiBpc1VuZGVmKGNoaWxkLm5zKSkge1xuICAgICAgICBhcHBseU5TKGNoaWxkLCBucyk7
XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckxpc3Qg
KFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAg
aWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAg
IHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxl
bmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtpXSwgaSk7XG4g
ICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0ID0g
bmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG4gICAgICBy
ZXRbaV0gPSByZW5kZXIoaSArIDEsIGkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2
YWwpKSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgcmV0ID0gbmV3IEFycmF5
KGtleXMubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBp
KyspIHtcbiAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2tl
eV0sIGtleSwgaSk7XG4gICAgfVxuICB9XG4gIGlmIChpc0RlZihyZXQpKSB7XG4gICAgKHJldCku
X2lzVkxpc3QgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyogICovXG5cbi8qKlxu
ICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyA8c2xvdD5cbiAqL1xuZnVuY3Rpb24gcmVu
ZGVyU2xvdCAoXG4gIG5hbWUsXG4gIGZhbGxiYWNrLFxuICBwcm9wcyxcbiAgYmluZE9iamVjdFxu
KSB7XG4gIHZhciBzY29wZWRTbG90Rm4gPSB0aGlzLiRzY29wZWRTbG90c1tuYW1lXTtcbiAgaWYg
KHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307
XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIHByb3BzID0gZXh0ZW5kKGV4dGVuZCh7fSwg
YmluZE9iamVjdCksIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlZFNsb3RGbihwcm9w
cykgfHwgZmFsbGJhY2tcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xvdE5vZGVzID0gdGhpcy4kc2xv
dHNbbmFtZV07XG4gICAgLy8gd2FybiBkdXBsaWNhdGUgc2xvdCB1c2FnZVxuICAgIGlmIChzbG90
Tm9kZXMgJiYgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgc2xvdE5v
ZGVzLl9yZW5kZXJlZCAmJiB3YXJuKFxuICAgICAgICBcIkR1cGxpY2F0ZSBwcmVzZW5jZSBvZiBz
bG90IFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgZm91bmQgaW4gdGhlIHNhbWUgcmVuZGVyIHRyZWUg
XCIgK1xuICAgICAgICBcIi0gdGhpcyB3aWxsIGxpa2VseSBjYXVzZSByZW5kZXIgZXJyb3JzLlwi
LFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgICAgc2xvdE5vZGVzLl9yZW5kZXJlZCA9IHRy
dWU7XG4gICAgfVxuICAgIHJldHVybiBzbG90Tm9kZXMgfHwgZmFsbGJhY2tcbiAgfVxufVxuXG4v
KiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIGZpbHRlcnNcbiAq
L1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldCh0
aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8fCBpZGVudGl0eVxufVxuXG4vKiAg
Ki9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgY2hlY2tpbmcga2V5Q29kZXMgZnJvbSBj
b25maWcuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMgKFxuICBldmVudEtleUNvZGUsXG4g
IGtleSxcbiAgYnVpbHRJbkFsaWFzXG4pIHtcbiAgdmFyIGtleUNvZGVzID0gY29uZmlnLmtleUNv
ZGVzW2tleV0gfHwgYnVpbHRJbkFsaWFzO1xuICBpZiAoQXJyYXkuaXNBcnJheShrZXlDb2Rlcykp
IHtcbiAgICByZXR1cm4ga2V5Q29kZXMuaW5kZXhPZihldmVudEtleUNvZGUpID09PSAtMVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiBrZXlDb2RlcyAhPT0gZXZlbnRLZXlDb2RlXG4gIH1cbn1cblxu
LyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIG1lcmdpbmcgdi1iaW5kPVwib2Jq
ZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYmluZE9iamVjdFByb3Bz
IChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQcm9wLFxuICBpc1N5bmNcbikge1xu
ICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgXCJwcm9k
dWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1iaW5kIHdpdGhv
dXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuICAgICAgICB0
aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1
ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB2
YXIgaGFzaDtcbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAgICAgIGlm
IChcbiAgICAgICAgICBrZXkgPT09ICdjbGFzcycgfHxcbiAgICAgICAgICBrZXkgPT09ICdzdHls
ZScgfHxcbiAgICAgICAgICBpc1Jlc2VydmVkQXR0cmlidXRlKGtleSlcbiAgICAgICAgKSB7XG4g
ICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHR5
cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNoID0gYXNQ
cm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAgICAgID8g
ZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAgOiBkYXRh
LmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKGtl
eSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG5cbiAgICAg
ICAgICBpZiAoaXNTeW5jKSB7XG4gICAgICAgICAgICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRh
Lm9uID0ge30pO1xuICAgICAgICAgICAgb25bKFwidXBkYXRlOlwiICsga2V5KV0gPSBmdW5jdGlv
biAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHZhbHVlW2tleV0gPSAkZXZlbnQ7XG4gICAgICAg
ICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yICh2
YXIga2V5IGluIHZhbHVlKSBsb29wKCBrZXkgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFc
bn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBzdGF0
aWMgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxuICBpc0lu
Rm9yXG4pIHtcbiAgdmFyIHRyZWUgPSB0aGlzLl9zdGF0aWNUcmVlc1tpbmRleF07XG4gIC8vIGlm
IGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxu
ICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZSBieSBkb2luZyBhIHNoYWxsb3cgY2xvbmUu
XG4gIGlmICh0cmVlICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJl
ZSlcbiAgICAgID8gY2xvbmVWTm9kZXModHJlZSlcbiAgICAgIDogY2xvbmVWTm9kZSh0cmVlKVxu
ICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IHRoaXMu
X3N0YXRpY1RyZWVzW2luZGV4XSA9XG4gICAgdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNb
aW5kZXhdLmNhbGwodGhpcy5fcmVuZGVyUHJveHkpO1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9f
c3RhdGljX19cIiArIGluZGV4KSwgZmFsc2UpO1xuICByZXR1cm4gdHJlZVxufVxuXG4vKipcbiAq
IFJ1bnRpbWUgaGVscGVyIGZvciB2LW9uY2UuXG4gKiBFZmZlY3RpdmVseSBpdCBtZWFucyBtYXJr
aW5nIHRoZSBub2RlIGFzIHN0YXRpYyB3aXRoIGEgdW5pcXVlIGtleS5cbiAqL1xuZnVuY3Rpb24g
bWFya09uY2UgKFxuICB0cmVlLFxuICBpbmRleCxcbiAga2V5XG4pIHtcbiAgbWFya1N0YXRpYyh0
cmVlLCAoXCJfX29uY2VfX1wiICsgaW5kZXggKyAoa2V5ID8gKFwiX1wiICsga2V5KSA6IFwiXCIp
KSwgdHJ1ZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMgKFxuICB0
cmVlLFxuICBrZXksXG4gIGlzT25jZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSB7
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAo
dHJlZVtpXSAmJiB0eXBlb2YgdHJlZVtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbWFya1N0
YXRpY05vZGUodHJlZVtpXSwgKGtleSArIFwiX1wiICsgaSksIGlzT25jZSk7XG4gICAgICB9XG4g
ICAgfVxuICB9IGVsc2Uge1xuICAgIG1hcmtTdGF0aWNOb2RlKHRyZWUsIGtleSwgaXNPbmNlKTtc
biAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljTm9kZSAobm9kZSwga2V5LCBpc09uY2UpIHtc
biAgbm9kZS5pc1N0YXRpYyA9IHRydWU7XG4gIG5vZGUua2V5ID0ga2V5O1xuICBub2RlLmlzT25j
ZSA9IGlzT25jZTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmRPYmplY3RMaXN0ZW5lcnMg
KGRhdGEsIHZhbHVlKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmICghaXNQbGFpbk9iamVjdCh2
YWx1ZSkpIHtcbiAgICAgIFwicHJvZHVjdGlvblwiICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihc
biAgICAgICAgJ3Ytb24gd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCB2YWx1ZScs
XG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvbiA9IGRh
dGEub24gPSBkYXRhLm9uID8gZXh0ZW5kKHt9LCBkYXRhLm9uKSA6IHt9O1xuICAgICAgZm9yICh2
YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIHZhciBleGlzdGluZyA9IG9uW2tleV07XG4gICAg
ICAgIHZhciBvdXJzID0gdmFsdWVba2V5XTtcbiAgICAgICAgb25ba2V5XSA9IGV4aXN0aW5nID8g
W10uY29uY2F0KG91cnMsIGV4aXN0aW5nKSA6IG91cnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4g
IHJldHVybiBkYXRhXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UmVuZGVyICh2bSkge1xu
ICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0aGUgY2hpbGQgdHJlZVxuICB2bS5f
c3RhdGljVHJlZXMgPSBudWxsO1xuICB2YXIgcGFyZW50Vm5vZGUgPSB2bS4kdm5vZGUgPSB2bS4k
b3B0aW9ucy5fcGFyZW50Vm5vZGU7IC8vIHRoZSBwbGFjZWhvbGRlciBub2RlIGluIHBhcmVudCB0
cmVlXG4gIHZhciByZW5kZXJDb250ZXh0ID0gcGFyZW50Vm5vZGUgJiYgcGFyZW50Vm5vZGUuY29u
dGV4dDtcbiAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHZtLiRvcHRpb25zLl9yZW5kZXJDaGls
ZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90cyA9IGVtcHR5T2JqZWN0O1xu
ICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRoaXMgaW5zdGFuY2VcbiAgLy8gc28g
dGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGluc2lkZSBpdC5cbiAgLy8gYXJncyBv
cmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUsIGFsd2F5c05vcm1h
bGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9ucyBj
b21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7
IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCBmYWxzZSk7IH07XG4gIC8vIG5v
cm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRoZSBwdWJsaWMgdmVyc2lvbiwgdXNl
ZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucy5cbiAgdm0uJGNyZWF0ZUVs
ZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwg
YSwgYiwgYywgZCwgdHJ1ZSk7IH07XG5cbiAgLy8gJGF0dHJzICYgJGxpc3RlbmVycyBhcmUgZXhw
b3NlZCBmb3IgZWFzaWVyIEhPQyBjcmVhdGlvbi5cbiAgLy8gdGhleSBuZWVkIHRvIGJlIHJlYWN0
aXZlIHNvIHRoYXQgSE9DcyB1c2luZyB0aGVtIGFyZSBhbHdheXMgdXBkYXRlZFxuICB2YXIgcGFy
ZW50RGF0YSA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmRhdGE7XG4gIC8qIGlzdGFuYnVs
IGlnbm9yZSBlbHNlICovXG4gIGlmIChmYWxzZSkge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZt
LCAnJGF0dHJzJywgcGFyZW50RGF0YSAmJiBwYXJlbnREYXRhLmF0dHJzLCBmdW5jdGlvbiAoKSB7
XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkYXR0cnMgaXMgcmVh
ZG9ubHkuXCIsIHZtKTtcbiAgICB9LCB0cnVlKTtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwg
JyRsaXN0ZW5lcnMnLCB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzLCBmdW5jdGlvbiAoKSB7
XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkbGlzdGVuZXJzIGlz
IHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGVmaW5l
UmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMs
IG51bGwsIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIHZt
LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMsIG51bGwsIHRydWUpO1xuICB9XG59XG5cbmZ1bmN0
aW9uIHJlbmRlck1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5j
dGlvbiAoZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVl
LnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4g
ICAgdmFyIHJlZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xu
ICAgIHZhciBzdGF0aWNSZW5kZXJGbnMgPSByZWYuc3RhdGljUmVuZGVyRm5zO1xuICAgIHZhciBf
cGFyZW50Vm5vZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAgaWYgKHZtLl9pc01vdW50ZWQp
IHtcbiAgICAgIC8vIGNsb25lIHNsb3Qgbm9kZXMgb24gcmUtcmVuZGVyc1xuICAgICAgZm9yICh2
YXIga2V5IGluIHZtLiRzbG90cykge1xuICAgICAgICB2bS4kc2xvdHNba2V5XSA9IGNsb25lVk5v
ZGVzKHZtLiRzbG90c1trZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2bS4kc2NvcGVkU2xv
dHMgPSAoX3BhcmVudFZub2RlICYmIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzKSB8fCBl
bXB0eU9iamVjdDtcblxuICAgIGlmIChzdGF0aWNSZW5kZXJGbnMgJiYgIXZtLl9zdGF0aWNUcmVl
cykge1xuICAgICAgdm0uX3N0YXRpY1RyZWVzID0gW107XG4gICAgfVxuICAgIC8vIHNldCBwYXJl
bnQgdm5vZGUuIHRoaXMgYWxsb3dzIHJlbmRlciBmdW5jdGlvbnMgdG8gaGF2ZSBhY2Nlc3NcbiAg
ICAvLyB0byB0aGUgZGF0YSBvbiB0aGUgcGxhY2Vob2xkZXIgbm9kZS5cbiAgICB2bS4kdm5vZGUg
PSBfcGFyZW50Vm5vZGU7XG4gICAgLy8gcmVuZGVyIHNlbGZcbiAgICB2YXIgdm5vZGU7XG4gICAg
dHJ5IHtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3Jl
YXRlRWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0s
IFwicmVuZGVyIGZ1bmN0aW9uXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1
bHQsXG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBj
YXVzaW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9c
biAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB2bm9kZSA9IHZtLiRvcHRpb25zLnJlbmRlckVy
cm9yXG4gICAgICAgICAgPyB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvci5jYWxsKHZtLl9yZW5kZXJQ
cm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQsIGUpXG4gICAgICAgICAgOiB2bS5fdm5vZGU7XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgLy8gcmV0dXJuIGVtcHR5IHZub2RlIGluIGNhc2UgdGhlIHJlbmRlciBmdW5jdGlvbiBlcnJv
cmVkIG91dFxuICAgIGlmICghKHZub2RlIGluc3RhbmNlb2YgVk5vZGUpKSB7XG4gICAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyBy
ZXR1cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAg
ICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4g
ICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAg
ICB9XG4gICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtc
biAgICByZXR1cm4gdm5vZGVcbiAgfTtcblxuICAvLyBpbnRlcm5hbCByZW5kZXIgaGVscGVycy5c
biAgLy8gdGhlc2UgYXJlIGV4cG9zZWQgb24gdGhlIGluc3RhbmNlIHByb3RvdHlwZSB0byByZWR1
Y2UgZ2VuZXJhdGVkIHJlbmRlclxuICAvLyBjb2RlIHNpemUuXG4gIFZ1ZS5wcm90b3R5cGUuX28g
PSBtYXJrT25jZTtcbiAgVnVlLnByb3RvdHlwZS5fbiA9IHRvTnVtYmVyO1xuICBWdWUucHJvdG90
eXBlLl9zID0gdG9TdHJpbmc7XG4gIFZ1ZS5wcm90b3R5cGUuX2wgPSByZW5kZXJMaXN0O1xuICBW
dWUucHJvdG90eXBlLl90ID0gcmVuZGVyU2xvdDtcbiAgVnVlLnByb3RvdHlwZS5fcSA9IGxvb3Nl
RXF1YWw7XG4gIFZ1ZS5wcm90b3R5cGUuX2kgPSBsb29zZUluZGV4T2Y7XG4gIFZ1ZS5wcm90b3R5
cGUuX20gPSByZW5kZXJTdGF0aWM7XG4gIFZ1ZS5wcm90b3R5cGUuX2YgPSByZXNvbHZlRmlsdGVy
O1xuICBWdWUucHJvdG90eXBlLl9rID0gY2hlY2tLZXlDb2RlcztcbiAgVnVlLnByb3RvdHlwZS5f
YiA9IGJpbmRPYmplY3RQcm9wcztcbiAgVnVlLnByb3RvdHlwZS5fdiA9IGNyZWF0ZVRleHRWTm9k
ZTtcbiAgVnVlLnByb3RvdHlwZS5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIFZ1ZS5wcm90b3R5
cGUuX3UgPSByZXNvbHZlU2NvcGVkU2xvdHM7XG4gIFZ1ZS5wcm90b3R5cGUuX2cgPSBiaW5kT2Jq
ZWN0TGlzdGVuZXJzO1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCQxID0gMDtcblxuZnVuY3Rpb24g
aW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRp
b25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhIHVpZFxuICAgIHZtLl91aWQgPSB1
aWQkMSsrO1xuXG4gICAgdmFyIHN0YXJ0VGFnLCBlbmRUYWc7XG4gICAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBzdGFydFRhZyA9IFwidnVlLXBlcmYt
aW5pdDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsg
KHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgfVxuXG4gICAgLy8gYSBmbGFn
IHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5faXNWdWUgPSB0cnVlO1xuICAg
IC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLl9pc0NvbXBvbmVu
dCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25c
biAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5nIGlzIHByZXR0eSBzbG93LCBh
bmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBvbmVudCBvcHRpb25zIG5lZWRz
IHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFsQ29tcG9uZW50KHZtLCBvcHRp
b25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4g
ICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29uc3RydWN0b3IpLFxuICAgICAg
ICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0
YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGluaXRQcm94eSh2
bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAg
ICAvLyBleHBvc2UgcmVhbCBzZWxmXG4gICAgdm0uX3NlbGYgPSB2bTtcbiAgICBpbml0TGlmZWN5
Y2xlKHZtKTtcbiAgICBpbml0RXZlbnRzKHZtKTtcbiAgICBpbml0UmVuZGVyKHZtKTtcbiAgICBj
YWxsSG9vayh2bSwgJ2JlZm9yZUNyZWF0ZScpO1xuICAgIGluaXRJbmplY3Rpb25zKHZtKTsgLy8g
cmVzb2x2ZSBpbmplY3Rpb25zIGJlZm9yZSBkYXRhL3Byb3BzXG4gICAgaW5pdFN0YXRlKHZtKTtc
biAgICBpbml0UHJvdmlkZSh2bSk7IC8vIHJlc29sdmUgcHJvdmlkZSBhZnRlciBkYXRhL3Byb3Bz
XG4gICAgY2FsbEhvb2sodm0sICdjcmVhdGVkJyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
aWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHZtLl9uYW1lID0gZm9ybWF0Q29tcG9uZW50
TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoKHZt
Ll9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH1cblxuICAgIGlm
ICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0uJG1vdW50KHZtLiRvcHRpb25zLmVsKTtcbiAg
ICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJbnRlcm5hbENvbXBvbmVudCAodm0sIG9wdGlv
bnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucyA9IE9iamVjdC5jcmVhdGUodm0uY29uc3Ry
dWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRoaXMgYmVjYXVzZSBpdCdzIGZhc3RlciB0aGFu
IGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIG9wdHMucGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4g
IG9wdHMucHJvcHNEYXRhID0gb3B0aW9ucy5wcm9wc0RhdGE7XG4gIG9wdHMuX3BhcmVudFZub2Rl
ID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMuX3BhcmVudExpc3RlbmVycyA9IG9wdGlv
bnMuX3BhcmVudExpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hpbGRyZW4gPSBvcHRpb25zLl9y
ZW5kZXJDaGlsZHJlbjtcbiAgb3B0cy5fY29tcG9uZW50VGFnID0gb3B0aW9ucy5fY29tcG9uZW50
VGFnO1xuICBvcHRzLl9wYXJlbnRFbG0gPSBvcHRpb25zLl9wYXJlbnRFbG07XG4gIG9wdHMuX3Jl
ZkVsbSA9IG9wdGlvbnMuX3JlZkVsbTtcbiAgaWYgKG9wdGlvbnMucmVuZGVyKSB7XG4gICAgb3B0
cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0YXRpY1JlbmRlckZucyA9IG9w
dGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb25zdHJ1
Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIGlm
IChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9IHJlc29sdmVDb25zdHJ1Y3Rv
ck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1cGVyT3B0aW9ucyA9IEN0b3Iu
c3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09IGNhY2hlZFN1cGVyT3B0aW9u
cykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4gICAgICAvLyBuZWVkIHRvIHJl
c29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0aW9ucyA9IHN1cGVyT3B0aW9u
cztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0ZS1tb2RpZmllZC9hdHRhY2hl
ZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9wdGlvbnMgPSByZXNvbHZlTW9k
aWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJhc2UgZXh0ZW5kIG9wdGlvbnNc
biAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kKEN0b3IuZXh0ZW5k
T3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMgPSBDdG9y
Lm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBDdG9yLmV4dGVuZE9wdGlvbnMp
O1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLmNvbXBvbmVudHNb
b3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRp
b25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlvbnMgKEN0b3IpIHtcbiAgdmFy
IG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgZXh0ZW5kZWQg
PSBDdG9yLmV4dGVuZE9wdGlvbnM7XG4gIHZhciBzZWFsZWQgPSBDdG9yLnNlYWxlZE9wdGlvbnM7
XG4gIGZvciAodmFyIGtleSBpbiBsYXRlc3QpIHtcbiAgICBpZiAobGF0ZXN0W2tleV0gIT09IHNl
YWxlZFtrZXldKSB7XG4gICAgICBpZiAoIW1vZGlmaWVkKSB7IG1vZGlmaWVkID0ge307IH1cbiAg
ICAgIG1vZGlmaWVkW2tleV0gPSBkZWR1cGUobGF0ZXN0W2tleV0sIGV4dGVuZGVkW2tleV0sIHNl
YWxlZFtrZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGlmaWVkXG59XG5cbmZ1bmN0aW9u
IGRlZHVwZSAobGF0ZXN0LCBleHRlbmRlZCwgc2VhbGVkKSB7XG4gIC8vIGNvbXBhcmUgbGF0ZXN0
IGFuZCBzZWFsZWQgdG8gZW5zdXJlIGxpZmVjeWNsZSBob29rcyB3b24ndCBiZSBkdXBsaWNhdGVk
XG4gIC8vIGJldHdlZW4gbWVyZ2VzXG4gIGlmIChBcnJheS5pc0FycmF5KGxhdGVzdCkpIHtcbiAg
ICB2YXIgcmVzID0gW107XG4gICAgc2VhbGVkID0gQXJyYXkuaXNBcnJheShzZWFsZWQpID8gc2Vh
bGVkIDogW3NlYWxlZF07XG4gICAgZXh0ZW5kZWQgPSBBcnJheS5pc0FycmF5KGV4dGVuZGVkKSA/
IGV4dGVuZGVkIDogW2V4dGVuZGVkXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhdGVzdC5s
ZW5ndGg7IGkrKykge1xuICAgICAgLy8gcHVzaCBvcmlnaW5hbCBvcHRpb25zIGFuZCBub3Qgc2Vh
bGVkIG9wdGlvbnMgdG8gZXhjbHVkZSBkdXBsaWNhdGVkIG9wdGlvbnNcbiAgICAgIGlmIChleHRl
bmRlZC5pbmRleE9mKGxhdGVzdFtpXSkgPj0gMCB8fCBzZWFsZWQuaW5kZXhPZihsYXRlc3RbaV0p
IDwgMCkge1xuICAgICAgICByZXMucHVzaChsYXRlc3RbaV0pO1xuICAgICAgfVxuICAgIH1cbiAg
ICByZXR1cm4gcmVzXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxhdGVzdFxuICB9XG59XG5cbmZ1
bmN0aW9uIFZ1ZSQzIChvcHRpb25zKSB7XG4gIGlmIChmYWxzZVxuICApIHtcbiAgICB3YXJuKCdW
dWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBgbmV3YCBr
ZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtcbn1cblxuaW5pdE1peGluKFZ1
ZSQzKTtcbnN0YXRlTWl4aW4oVnVlJDMpO1xuZXZlbnRzTWl4aW4oVnVlJDMpO1xubGlmZWN5Y2xl
TWl4aW4oVnVlJDMpO1xucmVuZGVyTWl4aW4oVnVlJDMpO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24g
aW5pdFVzZSAoVnVlKSB7XG4gIFZ1ZS51c2UgPSBmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgdmFy
IGluc3RhbGxlZFBsdWdpbnMgPSAodGhpcy5faW5zdGFsbGVkUGx1Z2lucyB8fCAodGhpcy5faW5z
dGFsbGVkUGx1Z2lucyA9IFtdKSk7XG4gICAgaWYgKGluc3RhbGxlZFBsdWdpbnMuaW5kZXhPZihw
bHVnaW4pID4gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLy8gYWRkaXRp
b25hbCBwYXJhbWV0ZXJzXG4gICAgdmFyIGFyZ3MgPSB0b0FycmF5KGFyZ3VtZW50cywgMSk7XG4g
ICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIGlmICh0eXBlb2YgcGx1Z2luLmluc3RhbGwgPT09
ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5pbnN0YWxsLmFwcGx5KHBsdWdpbiwgYXJncyk7
XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGx1Z2luID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBw
bHVnaW4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICAgIGluc3RhbGxlZFBsdWdpbnMucHVz
aChwbHVnaW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlv
biBpbml0TWl4aW4kMSAoVnVlKSB7XG4gIFZ1ZS5taXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xu
ICAgIHRoaXMub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIG1peGluKTtcbiAg
ICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV4dGVuZCAo
VnVlKSB7XG4gIC8qKlxuICAgKiBFYWNoIGluc3RhbmNlIGNvbnN0cnVjdG9yLCBpbmNsdWRpbmcg
VnVlLCBoYXMgYSB1bmlxdWVcbiAgICogY2lkLiBUaGlzIGVuYWJsZXMgdXMgdG8gY3JlYXRlIHdy
YXBwZWQgXCJjaGlsZFxuICAgKiBjb25zdHJ1Y3RvcnNcIiBmb3IgcHJvdG90eXBhbCBpbmhlcml0
YW5jZSBhbmQgY2FjaGUgdGhlbS5cbiAgICovXG4gIFZ1ZS5jaWQgPSAwO1xuICB2YXIgY2lkID0g
MTtcblxuICAvKipcbiAgICogQ2xhc3MgaW5oZXJpdGFuY2VcbiAgICovXG4gIFZ1ZS5leHRlbmQg
PSBmdW5jdGlvbiAoZXh0ZW5kT3B0aW9ucykge1xuICAgIGV4dGVuZE9wdGlvbnMgPSBleHRlbmRP
cHRpb25zIHx8IHt9O1xuICAgIHZhciBTdXBlciA9IHRoaXM7XG4gICAgdmFyIFN1cGVySWQgPSBT
dXBlci5jaWQ7XG4gICAgdmFyIGNhY2hlZEN0b3JzID0gZXh0ZW5kT3B0aW9ucy5fQ3RvciB8fCAo
ZXh0ZW5kT3B0aW9ucy5fQ3RvciA9IHt9KTtcbiAgICBpZiAoY2FjaGVkQ3RvcnNbU3VwZXJJZF0p
IHtcbiAgICAgIHJldHVybiBjYWNoZWRDdG9yc1tTdXBlcklkXVxuICAgIH1cblxuICAgIHZhciBu
YW1lID0gZXh0ZW5kT3B0aW9ucy5uYW1lIHx8IFN1cGVyLm9wdGlvbnMubmFtZTtcbiAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSokLy50ZXN0KG5hbWUpKSB7XG4g
ICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ludmFsaWQgY29tcG9uZW50IG5hbWU6IFwiJyArIG5h
bWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICAgICAnY2FuIG9ubHkgY29udGFp
biBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIGh5cGhlbiwgJyArXG4gICAgICAgICAg
J2FuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAg
IH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAg
ICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VP
cHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICAp
O1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21w
dXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0
aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3Rv
dHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9y
IGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAg
ICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRl
ZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBm
dXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3Vw
ZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBT
dXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBj
bGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFT
U0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1
cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBc
biAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1
YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25z
IGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2Fu
IGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAg
IFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25z
ID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3Vi
Lm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tT
dXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQ
cm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9y
ICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3Bz
XCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAg
dmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4g
Y29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21w
dXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0
ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9k
cy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBW
dWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICAp
IHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25z
W3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIGlmICh0eXBlID09PSAn
Y29tcG9uZW50JyAmJiBjb25maWcuaXNSZXNlcnZlZFRhZyhpZCkpIHtcbiAgICAgICAgICAgIHdh
cm4oXG4gICAgICAgICAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwg
ZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgICAgICAgICAnaWQ6ICcgKyBpZFxuICAg
ICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09
ICdjb21wb25lbnQnICYmIGlzUGxhaW5PYmplY3QoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICBk
ZWZpbml0aW9uLm5hbWUgPSBkZWZpbml0aW9uLm5hbWUgfHwgaWQ7XG4gICAgICAgICAgZGVmaW5p
dGlvbiA9IHRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQoZGVmaW5pdGlvbik7XG4gICAgICAgIH1c
biAgICAgICAgaWYgKHR5cGUgPT09ICdkaXJlY3RpdmUnICYmIHR5cGVvZiBkZWZpbml0aW9uID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHsgYmluZDogZGVmaW5pdGlv
biwgdXBkYXRlOiBkZWZpbml0aW9uIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25z
W3R5cGUgKyAncyddW2lkXSA9IGRlZmluaXRpb247XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9u
XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbi8qICAqL1xuXG52YXIgcGF0dGVyblR5cGVz
ID0gW1N0cmluZywgUmVnRXhwLCBBcnJheV07XG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUg
KG9wdHMpIHtcbiAgcmV0dXJuIG9wdHMgJiYgKG9wdHMuQ3Rvci5vcHRpb25zLm5hbWUgfHwgb3B0
cy50YWcpXG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMgKHBhdHRlcm4sIG5hbWUpIHtcbiAgaWYgKEFy
cmF5LmlzQXJyYXkocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVybi5pbmRleE9mKG5hbWUp
ID4gLTFcbiAgfSBlbHNlIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICBy
ZXR1cm4gcGF0dGVybi5zcGxpdCgnLCcpLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYg
KGlzUmVnRXhwKHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKVxuICB9
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5j
dGlvbiBwcnVuZUNhY2hlIChjYWNoZSwgY3VycmVudCwgZmlsdGVyKSB7XG4gIGZvciAodmFyIGtl
eSBpbiBjYWNoZSkge1xuICAgIHZhciBjYWNoZWROb2RlID0gY2FjaGVba2V5XTtcbiAgICBpZiAo
Y2FjaGVkTm9kZSkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNhY2hlZE5v
ZGUuY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAobmFtZSAmJiAhZmlsdGVyKG5hbWUpKSB7
XG4gICAgICAgIGlmIChjYWNoZWROb2RlICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgcHJ1bmVD
YWNoZUVudHJ5KGNhY2hlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhY2hlW2tleV0gPSBu
dWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkg
KHZub2RlKSB7XG4gIGlmICh2bm9kZSkge1xuICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlLiRk
ZXN0cm95KCk7XG4gIH1cbn1cblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxp
dmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRl
cm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXNcbiAgfSxcblxuICBjcmVhdGVkOiBm
dW5jdGlvbiBjcmVhdGVkICgpIHtcbiAgICB0aGlzLmNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxs
KTtcbiAgfSxcblxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgdmFy
IHRoaXMkMSA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLmNhY2hlKSB7XG4g
ICAgICBwcnVuZUNhY2hlRW50cnkodGhpcyQxLmNhY2hlW2tleV0pO1xuICAgIH1cbiAgfSxcblxu
ICB3YXRjaDoge1xuICAgIGluY2x1ZGU6IGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCkge1xuICAgICAg
cHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVuY3Rpb24gKG5hbWUpIHsgcmV0
dXJuIG1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSxcbiAgICBleGNsdWRlOiBmdW5jdGlv
biBleGNsdWRlICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcy5jYWNoZSwgdGhpcy5fdm5v
ZGUsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAg
ICB9XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciB2bm9k
ZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQodGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgdmFy
IGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAg
IGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2
YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICBpZiAo
bmFtZSAmJiAoXG4gICAgICAgICh0aGlzLmluY2x1ZGUgJiYgIW1hdGNoZXModGhpcy5pbmNsdWRl
LCBuYW1lKSkgfHxcbiAgICAgICAgKHRoaXMuZXhjbHVkZSAmJiBtYXRjaGVzKHRoaXMuZXhjbHVk
ZSwgbmFtZSkpXG4gICAgICApKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuICAg
ICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0
b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAg
ICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21w
b25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiAr
IChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAg
ICAgaWYgKHRoaXMuY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5j
ZSA9IHRoaXMuY2FjaGVba2V5XS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIHRoaXMuY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgfVxuICAgICAgdm5vZGUuZGF0
YS5rZWVwQWxpdmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfVxufTtcblxu
dmFyIGJ1aWx0SW5Db21wb25lbnRzID0ge1xuICBLZWVwQWxpdmU6IEtlZXBBbGl2ZVxufTtcblxu
LyogICovXG5cbmZ1bmN0aW9uIGluaXRHbG9iYWxBUEkgKFZ1ZSkge1xuICAvLyBjb25maWdcbiAg
dmFyIGNvbmZpZ0RlZiA9IHt9O1xuICBjb25maWdEZWYuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gY29uZmlnOyB9O1xuICBpZiAoZmFsc2UpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rp
b24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29u
ZmlnIG9iamVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAg
ICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdE
ZWYpO1xuXG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUg
bm90IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25c
biAgLy8gdGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwg
PSB7XG4gICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlv
bnM6IG1lcmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFc
biAgfTtcblxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4
dFRpY2sgPSBuZXh0VGljaztcblxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7
XG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9u
c1t0eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMg
aXMgdXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFs
bCBwbGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0
YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChW
dWUub3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShW
dWUpO1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3Nl
dFJlZ2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSQzKTtcblxuT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFZ1ZSQzLnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1Nl
cnZlclJlbmRlcmluZ1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5
cGUsICckc3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlz
dGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlICYmIHRoaXMuJHZu
b2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cblZ1ZSQzLnZlcnNpb24gPSAnMi40LjInO1xuXG4v
KiAgKi9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZvciB3ZWIgYmVjYXVzZSB0aGV5IGFyZSBk
aXJlY3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcgdGVtcGxhdGUgY29tcGlsYXRpb25cbnZh
ciBpc1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxlLGNsYXNzJyk7XG5cbi8vIGF0dHJpYnV0
ZXMgdGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9yIGJpbmRpbmdcbnZhciBhY2NlcHRWYWx1
ZSA9IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QnKTtcbnZhciBtdXN0VXNl
UHJvcCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIpIHtcbiAgcmV0dXJuIChcbiAgICAoYXR0
ciA9PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcpKSAmJiB0eXBlICE9PSAnYnV0dG9uJyB8
fFxuICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRhZyA9PT0gJ29wdGlvbicpIHx8XG4gICAg
KGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcpIHx8XG4gICAgKGF0dHIgPT09
ICdtdXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICApXG59O1xuXG52YXIgaXNFbnVtZXJhdGVk
QXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjaycpO1xu
XG52YXIgaXNCb29sZWFuQXR0ciA9IG1ha2VNYXAoXG4gICdhbGxvd2Z1bGxzY3JlZW4sYXN5bmMs
YXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLCcgK1xu
ICAnZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRl
ZmVyLGRpc2FibGVkLCcgK1xuICAnZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRl
cm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSwnICtcbiAgJ211dGVk
LG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93cmFwLG9wZW4scGF1c2VvbmV4
aXQscmVhZG9ubHksJyArXG4gICdyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2Vs
ZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLCcgK1xuICAndHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gs
dmlzaWJsZSdcbik7XG5cbnZhciB4bGlua05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsnO1xuXG52YXIgaXNYbGluayA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBuYW1lLmNo
YXJBdCg1KSA9PT0gJzonICYmIG5hbWUuc2xpY2UoMCwgNSkgPT09ICd4bGluaydcbn07XG5cbnZh
ciBnZXRYbGlua1Byb3AgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gaXNYbGluayhuYW1l
KSA/IG5hbWUuc2xpY2UoNiwgbmFtZS5sZW5ndGgpIDogJydcbn07XG5cbnZhciBpc0ZhbHN5QXR0
clZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGwgfHwgdmFsID09
PSBmYWxzZVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGdlbkNsYXNzRm9yVm5vZGUgKHZub2Rl
KSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtc
biAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICB3aGlsZSAoaXNEZWYoY2hpbGROb2RlLmNvbXBv
bmVudEluc3RhbmNlKSkge1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJbnN0
YW5jZS5fdm5vZGU7XG4gICAgaWYgKGNoaWxkTm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVy
Z2VDbGFzc0RhdGEoY2hpbGROb2RlLmRhdGEsIGRhdGEpO1xuICAgIH1cbiAgfVxuICB3aGlsZSAo
aXNEZWYocGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnRO
b2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShkYXRhLCBwYXJlbnROb2Rl
LmRhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVuZGVyQ2xhc3MoZGF0YS5zdGF0aWNDbGFz
cywgZGF0YS5jbGFzcylcbn1cblxuZnVuY3Rpb24gbWVyZ2VDbGFzc0RhdGEgKGNoaWxkLCBwYXJl
bnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0aWNDbGFzczogY29uY2F0KGNoaWxkLnN0YXRpY0Ns
YXNzLCBwYXJlbnQuc3RhdGljQ2xhc3MpLFxuICAgIGNsYXNzOiBpc0RlZihjaGlsZC5jbGFzcylc
biAgICAgID8gW2NoaWxkLmNsYXNzLCBwYXJlbnQuY2xhc3NdXG4gICAgICA6IHBhcmVudC5jbGFz
c1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNsYXNzIChcbiAgc3RhdGljQ2xhc3MsXG4gIGR5
bmFtaWNDbGFzc1xuKSB7XG4gIGlmIChpc0RlZihzdGF0aWNDbGFzcykgfHwgaXNEZWYoZHluYW1p
Y0NsYXNzKSkge1xuICAgIHJldHVybiBjb25jYXQoc3RhdGljQ2xhc3MsIHN0cmluZ2lmeUNsYXNz
KGR5bmFtaWNDbGFzcykpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0
dXJuICcnXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYSwgYikge1xuICByZXR1cm4gYSA/IGIgPyAo
YSArICcgJyArIGIpIDogYSA6IChiIHx8ICcnKVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlDbGFz
cyAodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0
cmluZ2lmeUFycmF5KHZhbHVlKVxuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBy
ZXR1cm4gc3RyaW5naWZ5T2JqZWN0KHZhbHVlKVxuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09
ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3Jl
IG5leHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUFycmF5ICh2YWx1
ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBzdHJpbmdpZmllZDtcbiAgZm9yICh2YXIgaSA9
IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoaXNEZWYoc3RyaW5n
aWZpZWQgPSBzdHJpbmdpZnlDbGFzcyh2YWx1ZVtpXSkpICYmIHN0cmluZ2lmaWVkICE9PSAnJykg
e1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0gc3RyaW5naWZp
ZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5T2Jq
ZWN0ICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkg
e1xuICAgIGlmICh2YWx1ZVtrZXldKSB7XG4gICAgICBpZiAocmVzKSB7IHJlcyArPSAnICc7IH1c
biAgICAgIHJlcyArPSBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICov
XG5cbnZhciBuYW1lc3BhY2VNYXAgPSB7XG4gIHN2ZzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnJyxcbiAgbWF0aDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnXG59O1xu
XG52YXIgaXNIVE1MVGFnID0gbWFrZU1hcChcbiAgJ2h0bWwsYm9keSxiYXNlLGhlYWQsbGluayxt
ZXRhLHN0eWxlLHRpdGxlLCcgK1xuICAnYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFk
ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLCcgK1xuICAnZGl2LGRkLGRs
LGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWws
JyArXG4gICdhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxt
YXJrLHEscnAscnQscnRjLHJ1YnksJyArXG4gICdzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3Vi
LHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbywnICtcbiAgJ2Vt
YmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLCcg
K1xuICAnY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsJyAr
XG4gICdidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0
ZXIsb3B0Z3JvdXAsb3B0aW9uLCcgK1xuICAnb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJl
YSwnICtcbiAgJ2RldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSwnICtcbiAgJ2Nv
bnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QnXG4p
O1xuXG4vLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IHNlbGVjdGl2ZSwgb25seSBjb3Zlcmlu
ZyBTVkcgZWxlbWVudHMgdGhhdCBtYXlcbi8vIGNvbnRhaW4gY2hpbGQgZWxlbWVudHMuXG52YXIg
aXNTVkcgPSBtYWtlTWFwKFxuICAnc3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixk
ZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLCcgK1xuICAnZm9yZWlnbk9iamVjdCxn
LGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4s
JyArXG4gICdwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRo
LHRzcGFuLHVzZSx2aWV3JyxcbiAgdHJ1ZVxuKTtcblxudmFyIGlzUHJlVGFnID0gZnVuY3Rpb24g
KHRhZykgeyByZXR1cm4gdGFnID09PSAncHJlJzsgfTtcblxudmFyIGlzUmVzZXJ2ZWRUYWcgPSBm
dW5jdGlvbiAodGFnKSB7XG4gIHJldHVybiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWRyh0YWcpXG59
O1xuXG5mdW5jdGlvbiBnZXRUYWdOYW1lc3BhY2UgKHRhZykge1xuICBpZiAoaXNTVkcodGFnKSkg
e1xuICAgIHJldHVybiAnc3ZnJ1xuICB9XG4gIC8vIGJhc2ljIHN1cHBvcnQgZm9yIE1hdGhNTFxu
ICAvLyBub3RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdGhlciBNYXRoTUwgZWxlbWVudHMgYmVpbmcg
Y29tcG9uZW50IHJvb3RzXG4gIGlmICh0YWcgPT09ICdtYXRoJykge1xuICAgIHJldHVybiAnbWF0
aCdcbiAgfVxufVxuXG52YXIgdW5rbm93bkVsZW1lbnRDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG5mdW5jdGlvbiBpc1Vua25vd25FbGVtZW50ICh0YWcpIHtcbiAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gIGlmICghaW5Ccm93c2VyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBp
ZiAoaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdGFnID0g
dGFnLnRvTG93ZXJDYXNlKCk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodW5r
bm93bkVsZW1lbnRDYWNoZVt0YWddICE9IG51bGwpIHtcbiAgICByZXR1cm4gdW5rbm93bkVsZW1l
bnRDYWNoZVt0YWddXG4gIH1cbiAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcp
O1xuICBpZiAodGFnLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgLy8gaHR0cDovL3N0YWNrb3Zl
cmZsb3cuY29tL2EvMjgyMTAzNjQvMTA3MDI0NFxuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRD
YWNoZVt0YWddID0gKFxuICAgICAgZWwuY29uc3RydWN0b3IgPT09IHdpbmRvdy5IVE1MVW5rbm93
bkVsZW1lbnQgfHxcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTEVsZW1lbnRc
biAgICApKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAodW5rbm93bkVsZW1lbnRDYWNoZVt0YWdd
ID0gL0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlbC50b1N0cmluZygpKSlcbiAgfVxufVxuXG4v
KiAgKi9cblxuLyoqXG4gKiBRdWVyeSBhbiBlbGVtZW50IHNlbGVjdG9yIGlmIGl0J3Mgbm90IGFu
IGVsZW1lbnQgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnkgKGVsKSB7XG4gIGlmICh0eXBl
b2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHNlbGVjdGVkID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcihlbCk7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgXCJwcm9kdWN0aW9uXCIg
IT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnQ2Fubm90IGZpbmQgZWxlbWVudDog
JyArIGVsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpXG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFxuICB9IGVsc2Uge1xuICAgIHJldHVybiBl
bFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEgKHRhZ05hbWUs
IHZub2RlKSB7XG4gIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xu
ICBpZiAodGFnTmFtZSAhPT0gJ3NlbGVjdCcpIHtcbiAgICByZXR1cm4gZWxtXG4gIH1cbiAgLy8g
ZmFsc2Ugb3IgbnVsbCB3aWxsIHJlbW92ZSB0aGUgYXR0cmlidXRlIGJ1dCB1bmRlZmluZWQgd2ls
bCBub3RcbiAgaWYgKHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS5hdHRycyAmJiB2bm9kZS5kYXRh
LmF0dHJzLm11bHRpcGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbG0uc2V0QXR0cmlidXRlKCdt
dWx0aXBsZScsICdtdWx0aXBsZScpO1xuICB9XG4gIHJldHVybiBlbG1cbn1cblxuZnVuY3Rpb24g
Y3JlYXRlRWxlbWVudE5TIChuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgcmV0dXJuIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSwgdGFnTmFtZSlcbn1cblxu
ZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUgKHRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHRleHQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQgKHRleHQpIHtcbiAg
cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dClcbn1cblxuZnVuY3Rpb24gaW5zZXJ0
QmVmb3JlIChwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gIHBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpO1xufVxuXG5mdW5jdGlvbiBy
ZW1vdmVDaGlsZCAobm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7XG59
XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLmFwcGVuZENo
aWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gcGFyZW50Tm9kZSAobm9kZSkge1xuICByZXR1cm4g
bm9kZS5wYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIG5leHRTaWJsaW5nIChub2RlKSB7XG4gIHJl
dHVybiBub2RlLm5leHRTaWJsaW5nXG59XG5cbmZ1bmN0aW9uIHRhZ05hbWUgKG5vZGUpIHtcbiAg
cmV0dXJuIG5vZGUudGFnTmFtZVxufVxuXG5mdW5jdGlvbiBzZXRUZXh0Q29udGVudCAobm9kZSwg
dGV4dCkge1xuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcbn1cblxuZnVuY3Rpb24gc2V0QXR0
cmlidXRlIChub2RlLCBrZXksIHZhbCkge1xuICBub2RlLnNldEF0dHJpYnV0ZShrZXksIHZhbCk7
XG59XG5cblxudmFyIG5vZGVPcHMgPSBPYmplY3QuZnJlZXplKHtcblx0Y3JlYXRlRWxlbWVudDog
Y3JlYXRlRWxlbWVudCQxLFxuXHRjcmVhdGVFbGVtZW50TlM6IGNyZWF0ZUVsZW1lbnROUyxcblx0
Y3JlYXRlVGV4dE5vZGU6IGNyZWF0ZVRleHROb2RlLFxuXHRjcmVhdGVDb21tZW50OiBjcmVhdGVD
b21tZW50LFxuXHRpbnNlcnRCZWZvcmU6IGluc2VydEJlZm9yZSxcblx0cmVtb3ZlQ2hpbGQ6IHJl
bW92ZUNoaWxkLFxuXHRhcHBlbmRDaGlsZDogYXBwZW5kQ2hpbGQsXG5cdHBhcmVudE5vZGU6IHBh
cmVudE5vZGUsXG5cdG5leHRTaWJsaW5nOiBuZXh0U2libGluZyxcblx0dGFnTmFtZTogdGFnTmFt
ZSxcblx0c2V0VGV4dENvbnRlbnQ6IHNldFRleHRDb250ZW50LFxuXHRzZXRBdHRyaWJ1dGU6IHNl
dEF0dHJpYnV0ZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmID0ge1xuICBjcmVhdGU6IGZ1bmN0
aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gIH0sXG4g
IHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICBpZiAob2xk
Vm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7XG4gICAgICByZWdpc3RlclJlZihv
bGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgfVxuICB9LFxu
ICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVmKHZu
b2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJSZWYgKHZub2RlLCBpc1Jl
bW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xuICBpZiAoIWtleSkgeyByZXR1
cm4gfVxuXG4gIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4gIHZhciByZWYgPSB2bm9kZS5jb21w
b25lbnRJbnN0YW5jZSB8fCB2bm9kZS5lbG07XG4gIHZhciByZWZzID0gdm0uJHJlZnM7XG4gIGlm
IChpc1JlbW92YWwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzW2tleV0pKSB7XG4gICAg
ICByZW1vdmUocmVmc1trZXldLCByZWYpO1xuICAgIH0gZWxzZSBpZiAocmVmc1trZXldID09PSBy
ZWYpIHtcbiAgICAgIHJlZnNba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gZWxzZSB7XG4g
ICAgaWYgKHZub2RlLmRhdGEucmVmSW5Gb3IpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShy
ZWZzW2tleV0pKSB7XG4gICAgICAgIHJlZnNba2V5XSA9IFtyZWZdO1xuICAgICAgfSBlbHNlIGlm
IChyZWZzW2tleV0uaW5kZXhPZihyZWYpIDwgMCkge1xuICAgICAgICAvLyAkZmxvdy1kaXNhYmxl
LWxpbmVcbiAgICAgICAgcmVmc1trZXldLnB1c2gocmVmKTtcbiAgICAgIH1cbiAgICB9IGVsc2Ug
e1xuICAgICAgcmVmc1trZXldID0gcmVmO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZpcnR1
YWwgRE9NIHBhdGNoaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBTbmFiYmRvbSBieVxuICogU2ltb24g
RnJpaXMgVmluZHVtIChAcGFsZGVwaW5kKVxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNl
bnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFsZGVwaW5kL3NuYWJiZG9tL2Jsb2IvbWFzdGVy
L0xJQ0VOU0VcbiAqXG4gKiBtb2RpZmllZCBieSBFdmFuIFlvdSAoQHl5eDk5MDgwMylcbiAqXG5c
bi8qXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGJlY2F1c2UgdGhpcyBmaWxlIGlzIHBlcmYt
Y3JpdGljYWwgYW5kIHRoZSBjb3N0XG4gKiBvZiBtYWtpbmcgZmxvdyB1bmRlcnN0YW5kIGl0IGlz
IG5vdCB3b3J0aCBpdC5cbiAqL1xuXG52YXIgZW1wdHlOb2RlID0gbmV3IFZOb2RlKCcnLCB7fSwg
W10pO1xuXG52YXIgaG9va3MgPSBbJ2NyZWF0ZScsICdhY3RpdmF0ZScsICd1cGRhdGUnLCAncmVt
b3ZlJywgJ2Rlc3Ryb3knXTtcblxuZnVuY3Rpb24gc2FtZVZub2RlIChhLCBiKSB7XG4gIHJldHVy
biAoXG4gICAgYS5rZXkgPT09IGIua2V5ICYmIChcbiAgICAgIChcbiAgICAgICAgYS50YWcgPT09
IGIudGFnICYmXG4gICAgICAgIGEuaXNDb21tZW50ID09PSBiLmlzQ29tbWVudCAmJlxuICAgICAg
ICBpc0RlZihhLmRhdGEpID09PSBpc0RlZihiLmRhdGEpICYmXG4gICAgICAgIHNhbWVJbnB1dFR5
cGUoYSwgYilcbiAgICAgICkgfHwgKFxuICAgICAgICBpc1RydWUoYS5pc0FzeW5jUGxhY2Vob2xk
ZXIpICYmXG4gICAgICAgIGEuYXN5bmNGYWN0b3J5ID09PSBiLmFzeW5jRmFjdG9yeSAmJlxuICAg
ICAgICBpc1VuZGVmKGIuYXN5bmNGYWN0b3J5LmVycm9yKVxuICAgICAgKVxuICAgIClcbiAgKVxu
fVxuXG4vLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGNoYW5naW5n
IHR5cGUgZm9yIDxpbnB1dD5cbi8vIHNvIHRoZXkgbmVlZCB0byBiZSB0cmVhdGVkIGFzIGRpZmZl
cmVudCBub2Rlc1xuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50YWcg
IT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0gaXNE
ZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFyIHR5
cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtc
biAgcmV0dXJuIHR5cGVBID09PSB0eXBlQlxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlUb09sZElk
eCAoY2hpbGRyZW4sIGJlZ2luSWR4LCBlbmRJZHgpIHtcbiAgdmFyIGksIGtleTtcbiAgdmFyIG1h
cCA9IHt9O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkge1xuICAgIGtl
eSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgeyBtYXBba2V5XSA9IGk7
IH1cbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNoRnVuY3Rpb24g
KGJhY2tlbmQpIHtcbiAgdmFyIGksIGo7XG4gIHZhciBjYnMgPSB7fTtcblxuICB2YXIgbW9kdWxl
cyA9IGJhY2tlbmQubW9kdWxlcztcbiAgdmFyIG5vZGVPcHMgPSBiYWNrZW5kLm5vZGVPcHM7XG5c
biAgZm9yIChpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgKytpKSB7XG4gICAgY2JzW2hvb2tzW2ld
XSA9IFtdO1xuICAgIGZvciAoaiA9IDA7IGogPCBtb2R1bGVzLmxlbmd0aDsgKytqKSB7XG4gICAg
ICBpZiAoaXNEZWYobW9kdWxlc1tqXVtob29rc1tpXV0pKSB7XG4gICAgICAgIGNic1tob29rc1tp
XV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAg
ZnVuY3Rpb24gZW1wdHlOb2RlQXQgKGVsbSkge1xuICAgIHJldHVybiBuZXcgVk5vZGUobm9kZU9w
cy50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQsIGVsbSlcbiAg
fVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJtQ2IgKGNoaWxkRWxtLCBsaXN0ZW5lcnMpIHtcbiAgICBm
dW5jdGlvbiByZW1vdmUkJDEgKCkge1xuICAgICAgaWYgKC0tcmVtb3ZlJCQxLmxpc3RlbmVycyA9
PT0gMCkge1xuICAgICAgICByZW1vdmVOb2RlKGNoaWxkRWxtKTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgcmVtb3ZlJCQxLmxpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgICByZXR1cm4gcmVtb3ZlJCQx
XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVOb2RlIChlbCkge1xuICAgIHZhciBwYXJlbnQgPSBu
b2RlT3BzLnBhcmVudE5vZGUoZWwpO1xuICAgIC8vIGVsZW1lbnQgbWF5IGhhdmUgYWxyZWFkeSBi
ZWVuIHJlbW92ZWQgZHVlIHRvIHYtaHRtbCAvIHYtdGV4dFxuICAgIGlmIChpc0RlZihwYXJlbnQp
KSB7XG4gICAgICBub2RlT3BzLnJlbW92ZUNoaWxkKHBhcmVudCwgZWwpO1xuICAgIH1cbiAgfVxu
XG4gIHZhciBpblByZSA9IDA7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVsbSAodm5vZGUsIGluc2VydGVk
Vm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIG5lc3RlZCkge1xuICAgIHZub2RlLmlzUm9v
dEluc2VydCA9ICFuZXN0ZWQ7IC8vIGZvciB0cmFuc2l0aW9uIGVudGVyIGNoZWNrXG4gICAgaWYg
KGNyZWF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJl
ZkVsbSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0
YTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0gdm5v
ZGUudGFnO1xuICAgIGlmIChpc0RlZih0YWcpKSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAg
ICAgaWYgKGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBpblByZSsrO1xuICAgICAgICB9
XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAgICAgICAgICAhdm5vZGUubnMg
JiZcbiAgICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYmIGNvbmZpZy5p
Z25vcmVkRWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAgICAgY29uZmlnLmlz
VW5rbm93bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAg
ICAgICAgJ1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4gLSBkaWQgeW91ICcg
K1xuICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVjdGx5PyBGb3IgcmVj
dXJzaXZlIGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3VyZSB0byBwcm92aWRl
IHRoZSBcIm5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNvbnRleHRcbiAgICAg
ICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0gPSB2bm9kZS5uc1xu
ICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4gICAgICAg
IDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2NvcGUodm5v
ZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtcbiAgICAgICAg
Y3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAg
ICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9k
ZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnQocGFyZW50
RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmYWxzZSkge1xu
ICAgICAgICBpblByZS0tO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUcnVlKHZub2RlLmlz
Q29tbWVudCkpIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlQ29tbWVudCh2bm9k
ZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAg
ICB9IGVsc2Uge1xuICAgICAgdm5vZGUuZWxtID0gbm9kZU9wcy5jcmVhdGVUZXh0Tm9kZSh2bm9k
ZS50ZXh0KTtcbiAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAg
ICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQgKHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGkgPSB2bm9kZS5kYXRhO1xu
ICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgdmFyIGlzUmVhY3RpdmF0ZWQgPSBpc0RlZih2bm9k
ZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaS5rZWVwQWxpdmU7XG4gICAgICBpZiAoaXNEZWYoaSA9
IGkuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIHtcbiAgICAgICAgaSh2bm9kZSwgZmFsc2Ug
LyogaHlkcmF0aW5nICovLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgICB9XG4gICAgICAvLyBh
ZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBv
bmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQg
bW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRo
ZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4g
anVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5v
ZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGlmIChpc1RydWUoaXNSZWFjdGl2YXRlZCkpIHtc
biAgICAgICAgICByZWFjdGl2YXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUs
IHBhcmVudEVsbSwgcmVmRWxtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAg
ICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRDb21wb25lbnQgKHZub2RlLCBpbnNl
cnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoaXNEZWYodm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0
KSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2guYXBwbHkoaW5zZXJ0ZWRWbm9kZVF1
ZXVlLCB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpO1xuICAgICAgdm5vZGUuZGF0YS5wZW5kaW5n
SW5zZXJ0ID0gbnVsbDtcbiAgICB9XG4gICAgdm5vZGUuZWxtID0gdm5vZGUuY29tcG9uZW50SW5z
dGFuY2UuJGVsO1xuICAgIGlmIChpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGludm9rZUNy
ZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgc2V0U2NvcGUodm5v
ZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlbXB0eSBjb21wb25lbnQgcm9vdC5cbiAgICAg
IC8vIHNraXAgYWxsIGVsZW1lbnQtcmVsYXRlZCBtb2R1bGVzIGV4Y2VwdCBmb3IgcmVmICgjMzQ1
NSlcbiAgICAgIHJlZ2lzdGVyUmVmKHZub2RlKTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0byBpbnZv
a2UgdGhlIGluc2VydCBob29rXG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7
XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhY3RpdmF0ZUNvbXBvbmVudCAodm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICB2YXIgaTtcbiAgICAv
LyBoYWNrIGZvciAjNDMzOTogYSByZWFjdGl2YXRlZCBjb21wb25lbnQgd2l0aCBpbm5lciB0cmFu
c2l0aW9uXG4gICAgLy8gZG9lcyBub3QgdHJpZ2dlciBiZWNhdXNlIHRoZSBpbm5lciBub2RlJ3Mg
Y3JlYXRlZCBob29rcyBhcmUgbm90IGNhbGxlZFxuICAgIC8vIGFnYWluLiBJdCdzIG5vdCBpZGVh
bCB0byBpbnZvbHZlIG1vZHVsZS1zcGVjaWZpYyBsb2dpYyBpbiBoZXJlIGJ1dFxuICAgIC8vIHRo
ZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJldHRlciB3YXkgdG8gZG8gaXQuXG4gICAgdmFyIGlu
bmVyTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2Up
IHtcbiAgICAgIGlubmVyTm9kZSA9IGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7
XG4gICAgICBpZiAoaXNEZWYoaSA9IGlubmVyTm9kZS5kYXRhKSAmJiBpc0RlZihpID0gaS50cmFu
c2l0aW9uKSkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLmFjdGl2YXRlLmxlbmd0aDsg
KytpKSB7XG4gICAgICAgICAgY2JzLmFjdGl2YXRlW2ldKGVtcHR5Tm9kZSwgaW5uZXJOb2RlKTtc
biAgICAgICAgfVxuICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaChpbm5lck5vZGUpO1xu
ICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB1bmxpa2UgYSBuZXdseSBjcmVh
dGVkIGNvbXBvbmVudCxcbiAgICAvLyBhIHJlYWN0aXZhdGVkIGtlZXAtYWxpdmUgY29tcG9uZW50
IGRvZXNuJ3QgaW5zZXJ0IGl0c2VsZlxuICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwg
cmVmRWxtKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc2VydCAocGFyZW50LCBlbG0sIHJlZiQkMSkg
e1xuICAgIGlmIChpc0RlZihwYXJlbnQpKSB7XG4gICAgICBpZiAoaXNEZWYocmVmJCQxKSkge1xu
ICAgICAgICBpZiAocmVmJCQxLnBhcmVudE5vZGUgPT09IHBhcmVudCkge1xuICAgICAgICAgIG5v
ZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxtLCByZWYkJDEpO1xuICAgICAgICB9XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICBub2RlT3BzLmFwcGVuZENoaWxkKHBhcmVudCwgZWxtKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDaGlsZHJlbiAodm5vZGUsIGNo
aWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGls
ZHJlbikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kp
IHtcbiAgICAgICAgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUsIHZu
b2RlLmVsbSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2
ZSh2bm9kZS50ZXh0KSkge1xuICAgICAgbm9kZU9wcy5hcHBlbmRDaGlsZCh2bm9kZS5lbG0sIG5v
ZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0
aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnRJbnN0
YW5jZSkge1xuICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4g
ICAgfVxuICAgIHJldHVybiBpc0RlZih2bm9kZS50YWcpXG4gIH1cblxuICBmdW5jdGlvbiBpbnZv
a2VDcmVhdGVIb29rcyAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAodmFy
IGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgY2JzLmNy
ZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBpID0gdm5vZGUuZGF0YS5o
b29rOyAvLyBSZXVzZSB2YXJpYWJsZVxuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgaWYgKGlz
RGVmKGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShlbXB0eU5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYg
KGlzRGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAg
ICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmlidXRlIGZvciBzY29wZWQgQ1NTLlxu
ICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBjYXNlIHRvIGF2b2lkIHRoZSBv
dmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBhdGNo
aW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2bm9kZSkge1xuICAgIHZhciBpO1xu
ICAgIHZhciBhbmNlc3RvciA9IHZub2RlO1xuICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAg
aWYgKGlzRGVmKGkgPSBhbmNlc3Rvci5jb250ZXh0KSAmJiBpc0RlZihpID0gaS4kb3B0aW9ucy5f
c2NvcGVJZCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRBdHRyaWJ1dGUodm5vZGUuZWxtLCBpLCAn
Jyk7XG4gICAgICB9XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICB9XG4g
ICAgLy8gZm9yIHNsb3QgY29udGVudCB0aGV5IHNob3VsZCBhbHNvIGdldCB0aGUgc2NvcGVJZCBm
cm9tIHRoZSBob3N0IGluc3RhbmNlLlxuICAgIGlmIChpc0RlZihpID0gYWN0aXZlSW5zdGFuY2Up
ICYmXG4gICAgICBpICE9PSB2bm9kZS5jb250ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0
aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2Rl
LmVsbSwgaSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50
RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
KSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAg
Y3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxt
LCByZWZFbG0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZURlc3Ryb3lIb29rICh2
bm9kZSkge1xuICAgIHZhciBpLCBqO1xuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgICBp
ZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0Rl
ZihpID0gaS5kZXN0cm95KSkgeyBpKHZub2RlKTsgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNi
cy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7IGNicy5kZXN0cm95W2ldKHZub2RlKTsgfVxuICAgIH1c
biAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkcmVuKSkge1xuICAgICAgZm9yIChqID0gMDsg
aiA8IHZub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIGludm9rZURlc3Ryb3lI
b29rKHZub2RlLmNoaWxkcmVuW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlv
biByZW1vdmVWbm9kZXMgKHBhcmVudEVsbSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4KSB7XG4g
ICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgdmFyIGNo
ID0gdm5vZGVzW3N0YXJ0SWR4XTtcbiAgICAgIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYg
KGlzRGVmKGNoLnRhZykpIHtcbiAgICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGNo
KTtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhjaCk7XG4gICAgICAgIH0gZWxzZSB7IC8v
IFRleHQgbm9kZVxuICAgICAgICAgIHJlbW92ZU5vZGUoY2guZWxtKTtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2sg
KHZub2RlLCBybSkge1xuICAgIGlmIChpc0RlZihybSkgfHwgaXNEZWYodm5vZGUuZGF0YSkpIHtc
biAgICAgIHZhciBpO1xuICAgICAgdmFyIGxpc3RlbmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsg
MTtcbiAgICAgIGlmIChpc0RlZihybSkpIHtcbiAgICAgICAgLy8gd2UgaGF2ZSBhIHJlY3Vyc2l2
ZWx5IHBhc3NlZCBkb3duIHJtIGNhbGxiYWNrXG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBsaXN0
ZW5lcnMgY291bnRcbiAgICAgICAgcm0ubGlzdGVuZXJzICs9IGxpc3RlbmVycztcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIC8vIGRpcmVjdGx5IHJlbW92aW5nXG4gICAgICAgIHJtID0gY3JlYXRl
Um1DYih2bm9kZS5lbG0sIGxpc3RlbmVycyk7XG4gICAgICB9XG4gICAgICAvLyByZWN1cnNpdmVs
eSBpbnZva2UgaG9va3Mgb24gY2hpbGQgY29tcG9uZW50IHJvb3Qgbm9kZVxuICAgICAgaWYgKGlz
RGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkgJiYgaXNEZWYoaSA9IGkuX3Zub2RlKSAm
JiBpc0RlZihpLmRhdGEpKSB7XG4gICAgICAgIHJlbW92ZUFuZEludm9rZVJlbW92ZUhvb2soaSwg
cm0pO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5yZW1vdmUubGVuZ3RoOyAr
K2kpIHtcbiAgICAgICAgY2JzLnJlbW92ZVtpXSh2bm9kZSwgcm0pO1xuICAgICAgfVxuICAgICAg
aWYgKGlzRGVmKGkgPSB2bm9kZS5kYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnJlbW92ZSkpIHtc
biAgICAgICAgaSh2bm9kZSwgcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm0oKTtcbiAg
ICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlTm9kZSh2bm9kZS5lbG0pO1xuICAgIH1c
biAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuIChwYXJlbnRFbG0sIG9sZENoLCBuZXdD
aCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgdmFyIG9sZFN0YXJ0SWR4
ID0gMDtcbiAgICB2YXIgbmV3U3RhcnRJZHggPSAwO1xuICAgIHZhciBvbGRFbmRJZHggPSBvbGRD
aC5sZW5ndGggLSAxO1xuICAgIHZhciBvbGRTdGFydFZub2RlID0gb2xkQ2hbMF07XG4gICAgdmFy
IG9sZEVuZFZub2RlID0gb2xkQ2hbb2xkRW5kSWR4XTtcbiAgICB2YXIgbmV3RW5kSWR4ID0gbmV3
Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWzBdO1xuICAgIHZh
ciBuZXdFbmRWbm9kZSA9IG5ld0NoW25ld0VuZElkeF07XG4gICAgdmFyIG9sZEtleVRvSWR4LCBp
ZHhJbk9sZCwgZWxtVG9Nb3ZlLCByZWZFbG07XG5cbiAgICAvLyByZW1vdmVPbmx5IGlzIGEgc3Bl
Y2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91cD5cbiAgICAvLyB0byBlbnN1
cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG4g
ICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2YXIgY2FuTW92ZSA9ICFyZW1v
dmVPbmx5O1xuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFy
dElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7
XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUg
aGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2Rl
KSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0g
ZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAg
ICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9k
ZVF1ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xu
ICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVs
c2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7XG4gICAgICAgIHBh
dGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xu
ICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3RW5k
Vm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShv
bGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAg
ICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0s
IG9sZFN0YXJ0Vm5vZGUuZWxtLCBub2RlT3BzLm5leHRTaWJsaW5nKG9sZEVuZFZub2RlLmVsbSkp
O1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAg
IG5ld0VuZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1l
Vm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIGxlZnRc
biAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRW
bm9kZVF1ZXVlKTtcbiAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJl
bnRFbG0sIG9sZEVuZFZub2RlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICBvbGRF
bmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5l
d0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzVW5kZWYo
b2xkS2V5VG9JZHgpKSB7IG9sZEtleVRvSWR4ID0gY3JlYXRlS2V5VG9PbGRJZHgob2xkQ2gsIG9s
ZFN0YXJ0SWR4LCBvbGRFbmRJZHgpOyB9XG4gICAgICAgIGlkeEluT2xkID0gaXNEZWYobmV3U3Rh
cnRWbm9kZS5rZXkpID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9kZS5rZXldIDogbnVsbDtcbiAg
ICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAg
Y3JlYXRlRWxtKG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBv
bGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3
U3RhcnRJZHhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsbVRvTW92ZSA9IG9sZENo
W2lkeEluT2xkXTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICdJdCBzZWVt
cyB0aGVyZSBhcmUgZHVwbGljYXRlIGtleXMgdGhhdCBpcyBjYXVzaW5nIGFuIHVwZGF0ZSBlcnJv
ci4gJyArXG4gICAgICAgICAgICAgICdNYWtlIHN1cmUgZWFjaCB2LWZvciBpdGVtIGhhcyBhIHVu
aXF1ZSBrZXkuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNh
bWVWbm9kZShlbG1Ub01vdmUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgICAgICBwYXRjaFZu
b2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAg
ICAgICAgIG9sZENoW2lkeEluT2xkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNhbk1vdmUg
JiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBlbG1Ub01vdmUuZWxtLCBvbGRTdGFy
dFZub2RlLmVsbSk7XG4gICAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFy
dElkeF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNhbWUga2V5IGJ1dCBk
aWZmZXJlbnQgZWxlbWVudC4gdHJlYXQgYXMgbmV3IGVsZW1lbnRcbiAgICAgICAgICAgIGNyZWF0
ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgb2xkU3Rh
cnRWbm9kZS5lbG0pO1xuICAgICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3Rh
cnRJZHhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAo
b2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hb
bmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAg
IGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJ
ZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5l
d0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0
SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdGNoVm5vZGUgKG9s
ZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KSB7XG4gICAgaWYg
KG9sZFZub2RlID09PSB2bm9kZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGVs
bSA9IHZub2RlLmVsbSA9IG9sZFZub2RlLmVsbTtcblxuICAgIGlmIChpc1RydWUob2xkVm5vZGUu
aXNBc3luY1BsYWNlaG9sZGVyKSkge1xuICAgICAgaWYgKGlzRGVmKHZub2RlLmFzeW5jRmFjdG9y
eS5yZXNvbHZlZCkpIHtcbiAgICAgICAgaHlkcmF0ZShvbGRWbm9kZS5lbG0sIHZub2RlLCBpbnNl
cnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm5vZGUuaXNBc3luY1Bs
YWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8v
IHJldXNlIGVsZW1lbnQgZm9yIHN0YXRpYyB0cmVlcy5cbiAgICAvLyBub3RlIHdlIG9ubHkgZG8g
dGhpcyBpZiB0aGUgdm5vZGUgaXMgY2xvbmVkIC1cbiAgICAvLyBpZiB0aGUgbmV3IG5vZGUgaXMg
bm90IGNsb25lZCBpdCBtZWFucyB0aGUgcmVuZGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW5cbiAgICAv
LyByZXNldCBieSB0aGUgaG90LXJlbG9hZC1hcGkgYW5kIHdlIG5lZWQgdG8gZG8gYSBwcm9wZXIg
cmUtcmVuZGVyLlxuICAgIGlmIChpc1RydWUodm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICBpc1Ry
dWUob2xkVm5vZGUuaXNTdGF0aWMpICYmXG4gICAgICB2bm9kZS5rZXkgPT09IG9sZFZub2RlLmtl
eSAmJlxuICAgICAgKGlzVHJ1ZSh2bm9kZS5pc0Nsb25lZCkgfHwgaXNUcnVlKHZub2RlLmlzT25j
ZSkpXG4gICAgKSB7XG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNv
bXBvbmVudEluc3RhbmNlO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGk7XG4gICAg
dmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihpID0g
ZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5wcmVwYXRjaCkpIHtcbiAgICAgIGkob2xkVm5vZGUs
IHZub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgb2xkQ2ggPSBvbGRWbm9kZS5jaGlsZHJlbjtcbiAg
ICB2YXIgY2ggPSB2bm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNQYXRj
aGFibGUodm5vZGUpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLnVwZGF0ZS5sZW5ndGg7
ICsraSkgeyBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2bm9kZSk7IH1cbiAgICAgIGlmIChpc0Rl
ZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS51cGRhdGUpKSB7IGkob2xkVm5vZGUsIHZu
b2RlKTsgfVxuICAgIH1cbiAgICBpZiAoaXNVbmRlZih2bm9kZS50ZXh0KSkge1xuICAgICAgaWYg
KGlzRGVmKG9sZENoKSAmJiBpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKG9sZENoICE9PSBjaCkg
eyB1cGRhdGVDaGlsZHJlbihlbG0sIG9sZENoLCBjaCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1v
dmVPbmx5KTsgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlz
RGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7IH1c
biAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gsIDAsIGNoLmxlbmd0aCAtIDEsIGluc2Vy
dGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZENoKSkge1xuICAgICAg
ICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xkQ2gubGVuZ3RoIC0gMSk7XG4gICAgICB9
IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0VGV4
dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvbGRWbm9kZS50ZXh0
ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgdm5v
ZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVm
KGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnBvc3RwYXRjaCkpIHsgaShvbGRWbm9kZSwg
dm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlSW5zZXJ0SG9vayAodm5v
ZGUsIHF1ZXVlLCBpbml0aWFsKSB7XG4gICAgLy8gZGVsYXkgaW5zZXJ0IGhvb2tzIGZvciBjb21w
b25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhlXG4gICAgLy8gZWxlbWVudCBp
cyByZWFsbHkgaW5zZXJ0ZWRcbiAgICBpZiAoaXNUcnVlKGluaXRpYWwpICYmIGlzRGVmKHZub2Rl
LnBhcmVudCkpIHtcbiAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQgPSBxdWV1
ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7
ICsraSkge1xuICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5zZXJ0KHF1ZXVlW2ldKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYmFpbGVkID0gZmFsc2U7XG4gIC8vIGxpc3Qgb2Yg
bW9kdWxlcyB0aGF0IGNhbiBza2lwIGNyZWF0ZSBob29rIGR1cmluZyBoeWRyYXRpb24gYmVjYXVz
ZSB0aGV5XG4gIC8vIGFyZSBhbHJlYWR5IHJlbmRlcmVkIG9uIHRoZSBjbGllbnQgb3IgaGFzIG5v
IG5lZWQgZm9yIGluaXRpYWxpemF0aW9uXG4gIHZhciBpc1JlbmRlcmVkTW9kdWxlID0gbWFrZU1h
cCgnYXR0cnMsc3R5bGUsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Jyk7XG5cbiAg
Ly8gTm90ZTogdGhpcyBpcyBhIGJyb3dzZXItb25seSBmdW5jdGlvbiBzbyB3ZSBjYW4gYXNzdW1l
IGVsbXMgYXJlIERPTSBub2Rlcy5cbiAgZnVuY3Rpb24gaHlkcmF0ZSAoZWxtLCB2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpICYmIGlz
RGVmKHZub2RlLmFzeW5jRmFjdG9yeSkpIHtcbiAgICAgIHZub2RlLmVsbSA9IGVsbTtcbiAgICAg
IHZub2RlLmlzQXN5bmNQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAg
IH1cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICghYXNzZXJ0Tm9kZU1hdGNoKGVsbSwgdm5v
ZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICB2bm9kZS5l
bG0gPSBlbG07XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICB2YXIgZGF0YSA9IHZub2Rl
LmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYgKGlzRGVm
KGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGku
aW5pdCkpIHsgaSh2bm9kZSwgdHJ1ZSAvKiBoeWRyYXRpbmcgKi8pOyB9XG4gICAgICBpZiAoaXNE
ZWYoaSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICAvLyBjaGlsZCBjb21w
b25lbnQuIGl0IHNob3VsZCBoYXZlIGh5ZHJhdGVkIGl0cyBvd24gdHJlZS5cbiAgICAgICAgaW5p
dENvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgcmV0dXJuIHRy
dWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChpc0Rl
ZihjaGlsZHJlbikpIHtcbiAgICAgICAgLy8gZW1wdHkgZWxlbWVudCwgYWxsb3cgY2xpZW50IHRv
IHBpY2sgdXAgYW5kIHBvcHVsYXRlIGNoaWxkcmVuXG4gICAgICAgIGlmICghZWxtLmhhc0NoaWxk
Tm9kZXMoKSkge1xuICAgICAgICAgIGNyZWF0ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbiwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgY2hpbGRy
ZW5NYXRjaCA9IHRydWU7XG4gICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGVsbS5maXJzdENoaWxk
O1xuICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQx
KyspIHtcbiAgICAgICAgICAgIGlmICghY2hpbGROb2RlIHx8ICFoeWRyYXRlKGNoaWxkTm9kZSwg
Y2hpbGRyZW5baSQxXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBjaGls
ZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4g
ICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAg
fVxuICAgICAgICAgIC8vIGlmIGNoaWxkTm9kZSBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhlIGFj
dHVhbCBjaGlsZE5vZGVzIGxpc3QgaXNcbiAgICAgICAgICAvLyBsb25nZXIgdGhhbiB0aGUgdmly
dHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgIGlmICghY2hpbGRyZW5NYXRjaCB8fCBjaGls
ZE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZVxuICAgICAgICAgICAgKSB7XG4gICAgICAg
ICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignUGFyZW50
OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ01pc21hdGNoaW5nIGNoaWxk
Tm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9kZXMsIGNoaWxkcmVuKTtcbiAgICAgICAg
ICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBp
biBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9kdWxlKGtleSkpIHtcbiAgICAg
ICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAg
ICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVs
c2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBlbG0uZGF0YSA9IHZub2Rl
LnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBhc3NlcnRO
b2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLnRhZykpIHtcbiAg
ICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9mKCd2dWUtY29tcG9uZW50Jykg
PT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNlKCkgPT09IChub2RlLnRhZ05h
bWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgfSBlbHNlIHtc
biAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUuaXNDb21tZW50ID8gOCA6IDMp
XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoIChvbGRWbm9kZSwgdm5vZGUs
IGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZFbG0pIHtcbiAgICBpZiAoaXNV
bmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tlRGVzdHJv
eUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaXNJbml0
aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAg
ICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChsaWtlbHkg
YXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBh
dGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBw
YXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpc1JlYWxFbGVtZW50
ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYgKCFpc1JlYWxFbGVtZW50ICYm
IHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAgIC8vIHBhdGNoIGV4aXN0aW5n
IHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRW
bm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1Jl
YWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSByZWFsIGVsZW1lbnRcbiAg
ICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5kZXJlZCBjb250ZW50IGFuZCBp
ZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vzc2Z1bCBoeWRyYXRpb24uXG4g
ICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9sZFZub2RlLmhhc0F0dHJp
YnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2RlLnJlbW92ZUF0dHJpYnV0ZShT
U1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIH1cbiAg
ICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAgICAgICAgIGlmIChoeWRyYXRl
KG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xuICAgICAgICAgICAgICBp
bnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHRydWUpO1xuICAgICAg
ICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtc
biAgICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgICAnVGhlIGNsaWVudC1zaWRlIHJl
bmRlcmVkIHZpcnR1YWwgRE9NIHRyZWUgaXMgbm90IG1hdGNoaW5nICcgK1xuICAgICAgICAgICAg
ICAgICdzZXJ2ZXItcmVuZGVyZWQgY29udGVudC4gVGhpcyBpcyBsaWtlbHkgY2F1c2VkIGJ5IGlu
Y29ycmVjdCAnICtcbiAgICAgICAgICAgICAgICAnSFRNTCBtYXJrdXAsIGZvciBleGFtcGxlIG5l
c3RpbmcgYmxvY2stbGV2ZWwgZWxlbWVudHMgaW5zaWRlICcgK1xuICAgICAgICAgICAgICAgICc8
cD4sIG9yIG1pc3NpbmcgPHRib2R5Pi4gQmFpbGluZyBoeWRyYXRpb24gYW5kIHBlcmZvcm1pbmcg
JyArXG4gICAgICAgICAgICAgICAgJ2Z1bGwgY2xpZW50LXNpZGUgcmVuZGVyLidcbiAgICAgICAg
ICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZWl0aGVy
IG5vdCBzZXJ2ZXItcmVuZGVyZWQsIG9yIGh5ZHJhdGlvbiBmYWlsZWQuXG4gICAgICAgICAgLy8g
Y3JlYXRlIGFuIGVtcHR5IG5vZGUgYW5kIHJlcGxhY2UgaXRcbiAgICAgICAgICBvbGRWbm9kZSA9
IGVtcHR5Tm9kZUF0KG9sZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXBsYWNpbmcg
ZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xkRWxtID0gb2xkVm5vZGUuZWxtO1xuICAg
ICAgICB2YXIgcGFyZW50RWxtJDEgPSBub2RlT3BzLnBhcmVudE5vZGUob2xkRWxtKTtcbiAgICAg
ICAgY3JlYXRlRWxtKFxuICAgICAgICAgIHZub2RlLFxuICAgICAgICAgIGluc2VydGVkVm5vZGVR
dWV1ZSxcbiAgICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSBlZGdlIGNhc2U6IGRvIG5vdCBpbnNl
cnQgaWYgb2xkIGVsZW1lbnQgaXMgaW4gYVxuICAgICAgICAgIC8vIGxlYXZpbmcgdHJhbnNpdGlv
bi4gT25seSBoYXBwZW5zIHdoZW4gY29tYmluaW5nIHRyYW5zaXRpb24gK1xuICAgICAgICAgIC8v
IGtlZXAtYWxpdmUgKyBIT0NzLiAoIzQ1OTApXG4gICAgICAgICAgb2xkRWxtLl9sZWF2ZUNiID8g
bnVsbCA6IHBhcmVudEVsbSQxLFxuICAgICAgICAgIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRWxt
KVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAg
ICAgICAgLy8gY29tcG9uZW50IHJvb3QgZWxlbWVudCByZXBsYWNlZC5cbiAgICAgICAgICAvLyB1
cGRhdGUgcGFyZW50IHBsYWNlaG9sZGVyIG5vZGUgZWxlbWVudCwgcmVjdXJzaXZlbHlcbiAgICAg
ICAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZS5wYXJlbnQ7XG4gICAgICAgICAgd2hpbGUgKGFuY2Vz
dG9yKSB7XG4gICAgICAgICAgICBhbmNlc3Rvci5lbG0gPSB2bm9kZS5lbG07XG4gICAgICAgICAg
ICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYg
KGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
YnMuY3JlYXRlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgIGNicy5jcmVhdGVbaV0oZW1w
dHlOb2RlLCB2bm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAg
ICAgfVxuXG4gICAgICAgIGlmIChpc0RlZihwYXJlbnRFbG0kMSkpIHtcbiAgICAgICAgICByZW1v
dmVWbm9kZXMocGFyZW50RWxtJDEsIFtvbGRWbm9kZV0sIDAsIDApO1xuICAgICAgICB9IGVsc2Ug
aWYgKGlzRGVmKG9sZFZub2RlLnRhZykpIHtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayhv
bGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnZva2VJbnNlcnRI
b29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGlzSW5pdGlhbFBhdGNoKTtcbiAgICByZXR1
cm4gdm5vZGUuZWxtXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBkaXJlY3RpdmVzID0ge1xuICBj
cmVhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIHVwZGF0ZTogdXBkYXRlRGlyZWN0aXZlcyxcbiAg
ZGVzdHJveTogZnVuY3Rpb24gdW5iaW5kRGlyZWN0aXZlcyAodm5vZGUpIHtcbiAgICB1cGRhdGVE
aXJlY3RpdmVzKHZub2RlLCBlbXB0eU5vZGUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVE
aXJlY3RpdmVzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKG9sZFZub2RlLmRhdGEuZGlyZWN0
aXZlcyB8fCB2bm9kZS5kYXRhLmRpcmVjdGl2ZXMpIHtcbiAgICBfdXBkYXRlKG9sZFZub2RlLCB2
bm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX3VwZGF0ZSAob2xkVm5vZGUsIHZub2RlKSB7XG4g
IHZhciBpc0NyZWF0ZSA9IG9sZFZub2RlID09PSBlbXB0eU5vZGU7XG4gIHZhciBpc0Rlc3Ryb3kg
PSB2bm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgb2xkRGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2
ZXMkMShvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMsIG9sZFZub2RlLmNvbnRleHQpO1xuICB2YXIg
bmV3RGlycyA9IG5vcm1hbGl6ZURpcmVjdGl2ZXMkMSh2bm9kZS5kYXRhLmRpcmVjdGl2ZXMsIHZu
b2RlLmNvbnRleHQpO1xuXG4gIHZhciBkaXJzV2l0aEluc2VydCA9IFtdO1xuICB2YXIgZGlyc1dp
dGhQb3N0cGF0Y2ggPSBbXTtcblxuICB2YXIga2V5LCBvbGREaXIsIGRpcjtcbiAgZm9yIChrZXkg
aW4gbmV3RGlycykge1xuICAgIG9sZERpciA9IG9sZERpcnNba2V5XTtcbiAgICBkaXIgPSBuZXdE
aXJzW2tleV07XG4gICAgaWYgKCFvbGREaXIpIHtcbiAgICAgIC8vIG5ldyBkaXJlY3RpdmUsIGJp
bmRcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAnYmluZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAg
ICBpZiAoZGlyLmRlZiAmJiBkaXIuZGVmLmluc2VydGVkKSB7XG4gICAgICAgIGRpcnNXaXRoSW5z
ZXJ0LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhpc3Rpbmcg
ZGlyZWN0aXZlLCB1cGRhdGVcbiAgICAgIGRpci5vbGRWYWx1ZSA9IG9sZERpci52YWx1ZTtcbiAg
ICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlm
IChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkge1xuICAgICAgICBkaXJzV2l0
aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNX
aXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xu
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aEluc2VydC5sZW5ndGg7IGkrKykge1xu
ICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0W2ldLCAnaW5zZXJ0ZWQnLCB2bm9kZSwg
b2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlzQ3JlYXRlKSB7XG4gICAgICBt
ZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwg
J2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsSW5zZXJ0KCk7
XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aCkge1xuICAgIG1l
cmdlVk5vZGVIb29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAn
cG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJz
V2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRo
UG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAg
ICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3JlYXRlKSB7XG4gICAgZm9yIChrZXkgaW4g
b2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tleV0pIHtcbiAgICAgICAgLy8gbm8gbG9u
Z2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxsSG9vayQxKG9sZERpcnNba2V5XSwgJ3Vu
YmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZnVu
Y3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAgZGlycyxcbiAgdm1cbikge1xuICB2YXIg
cmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKCFkaXJzKSB7XG4gICAgcmV0dXJuIHJl
c1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9IDA7IGkgPCBkaXJzLmxlbmd0aDsgaSsr
KSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAoIWRpci5tb2RpZmllcnMpIHtcbiAgICAg
IGRpci5tb2RpZmllcnMgPSBlbXB0eU1vZGlmaWVycztcbiAgICB9XG4gICAgcmVzW2dldFJhd0Rp
ck5hbWUoZGlyKV0gPSBkaXI7XG4gICAgZGlyLmRlZiA9IHJlc29sdmVBc3NldCh2bS4kb3B0aW9u
cywgJ2RpcmVjdGl2ZXMnLCBkaXIubmFtZSwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxu
XG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtcbiAgcmV0dXJuIGRpci5yYXdOYW1lIHx8
ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycyB8fCB7fSku
am9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhvb2skMSAoZGlyLCBob29rLCB2bm9kZSwg
b2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4gPSBkaXIuZGVmICYmIGRpci5kZWZbaG9v
a107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBmbih2bm9kZS5lbG0sIGRpciwgdm5v
ZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRs
ZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVjdGl2ZSBcIiArIChkaXIubmFtZSkgKyBc
IiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGJhc2VNb2R1
bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1
cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBvcHRzID0gdm5vZGUuY29tcG9u
ZW50T3B0aW9ucztcbiAgaWYgKGlzRGVmKG9wdHMpICYmIG9wdHMuQ3Rvci5vcHRpb25zLmluaGVy
aXRBdHRycyA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoaXNVbmRlZihvbGRW
bm9kZS5kYXRhLmF0dHJzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuYXR0cnMpKSB7XG4gICAgcmV0
dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyLCBvbGQ7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4g
IHZhciBvbGRBdHRycyA9IG9sZFZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIHZhciBhdHRycyA9
IHZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFz
IHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNEZWYoYXR0cnMu
X19vYl9fKSkge1xuICAgIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRycyA9IGV4dGVuZCh7fSwgYXR0
cnMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gYXR0cnMpIHtcbiAgICBjdXIgPSBhdHRyc1trZXld
O1xuICAgIG9sZCA9IG9sZEF0dHJzW2tleV07XG4gICAgaWYgKG9sZCAhPT0gY3VyKSB7XG4gICAg
ICBzZXRBdHRyKGVsbSwga2V5LCBjdXIpO1xuICAgIH1cbiAgfVxuICAvLyAjNDM5MTogaW4gSUU5
LCBzZXR0aW5nIHR5cGUgY2FuIHJlc2V0IHZhbHVlIGZvciBpbnB1dFt0eXBlPXJhZGlvXVxuICAv
KiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzSUU5ICYmIGF0dHJzLnZhbHVlICE9PSBv
bGRBdHRycy52YWx1ZSkge1xuICAgIHNldEF0dHIoZWxtLCAndmFsdWUnLCBhdHRycy52YWx1ZSk7
XG4gIH1cbiAgZm9yIChrZXkgaW4gb2xkQXR0cnMpIHtcbiAgICBpZiAoaXNVbmRlZihhdHRyc1tr
ZXldKSkge1xuICAgICAgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0
cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtleSkpO1xuICAgICAgfSBlbHNlIGlmICgh
aXNFbnVtZXJhdGVkQXR0cihrZXkpKSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGUoa2V5
KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0QXR0ciAoZWwsIGtleSwg
dmFsdWUpIHtcbiAgaWYgKGlzQm9vbGVhbkF0dHIoa2V5KSkge1xuICAgIC8vIHNldCBhdHRyaWJ1
dGUgZm9yIGJsYW5rIHZhbHVlXG4gICAgLy8gZS5nLiA8b3B0aW9uIGRpc2FibGVkPlNlbGVjdCBv
bmU8L29wdGlvbj5cbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVs
LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1
dGUoa2V5LCBrZXkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0VudW1lcmF0ZWRBdHRyKGtleSkp
IHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCBpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSB8fCB2
YWx1ZSA9PT0gJ2ZhbHNlJyA/ICdmYWxzZScgOiAndHJ1ZScpO1xuICB9IGVsc2UgaWYgKGlzWGxp
bmsoa2V5KSkge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwu
cmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtleSkpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXksIHZhbHVlKTtcbiAgICB9
XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBl
bC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmli
dXRlKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgYXR0cnMgPSB7XG4gIGNyZWF0
ZTogdXBkYXRlQXR0cnMsXG4gIHVwZGF0ZTogdXBkYXRlQXR0cnNcbn07XG5cbi8qICAqL1xuXG5m
dW5jdGlvbiB1cGRhdGVDbGFzcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBlbCA9IHZub2Rl
LmVsbTtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2Rl
LmRhdGE7XG4gIGlmIChcbiAgICBpc1VuZGVmKGRhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAgaXNV
bmRlZihkYXRhLmNsYXNzKSAmJiAoXG4gICAgICBpc1VuZGVmKG9sZERhdGEpIHx8IChcbiAgICAg
ICAgaXNVbmRlZihvbGREYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAgICAgICBpc1VuZGVmKG9sZERh
dGEuY2xhc3MpXG4gICAgICApXG4gICAgKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZh
ciBjbHMgPSBnZW5DbGFzc0ZvclZub2RlKHZub2RlKTtcblxuICAvLyBoYW5kbGUgdHJhbnNpdGlv
biBjbGFzc2VzXG4gIHZhciB0cmFuc2l0aW9uQ2xhc3MgPSBlbC5fdHJhbnNpdGlvbkNsYXNzZXM7
XG4gIGlmIChpc0RlZih0cmFuc2l0aW9uQ2xhc3MpKSB7XG4gICAgY2xzID0gY29uY2F0KGNscywg
c3RyaW5naWZ5Q2xhc3ModHJhbnNpdGlvbkNsYXNzKSk7XG4gIH1cblxuICAvLyBzZXQgdGhlIGNs
YXNzXG4gIGlmIChjbHMgIT09IGVsLl9wcmV2Q2xhc3MpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUo
J2NsYXNzJywgY2xzKTtcbiAgICBlbC5fcHJldkNsYXNzID0gY2xzO1xuICB9XG59XG5cbnZhciBr
bGFzcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVDbGFzcyxcbiAgdXBkYXRlOiB1cGRhdGVDbGFzc1xu
fTtcblxuLyogICovXG5cbnZhciB2YWxpZERpdmlzaW9uQ2hhclJFID0gL1tcXHcpLitcXC1fJFxc
XV0vO1xuXG5mdW5jdGlvbiBwYXJzZUZpbHRlcnMgKGV4cCkge1xuICB2YXIgaW5TaW5nbGUgPSBm
YWxzZTtcbiAgdmFyIGluRG91YmxlID0gZmFsc2U7XG4gIHZhciBpblRlbXBsYXRlU3RyaW5nID0g
ZmFsc2U7XG4gIHZhciBpblJlZ2V4ID0gZmFsc2U7XG4gIHZhciBjdXJseSA9IDA7XG4gIHZhciBz
cXVhcmUgPSAwO1xuICB2YXIgcGFyZW4gPSAwO1xuICB2YXIgbGFzdEZpbHRlckluZGV4ID0gMDtc
biAgdmFyIGMsIHByZXYsIGksIGV4cHJlc3Npb24sIGZpbHRlcnM7XG5cbiAgZm9yIChpID0gMDsg
aSA8IGV4cC5sZW5ndGg7IGkrKykge1xuICAgIHByZXYgPSBjO1xuICAgIGMgPSBleHAuY2hhckNv
ZGVBdChpKTtcbiAgICBpZiAoaW5TaW5nbGUpIHtcbiAgICAgIGlmIChjID09PSAweDI3ICYmIHBy
ZXYgIT09IDB4NUMpIHsgaW5TaW5nbGUgPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5Eb3Vi
bGUpIHtcbiAgICAgIGlmIChjID09PSAweDIyICYmIHByZXYgIT09IDB4NUMpIHsgaW5Eb3VibGUg
PSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoaW5UZW1wbGF0ZVN0cmluZykge1xuICAgICAgaWYg
KGMgPT09IDB4NjAgJiYgcHJldiAhPT0gMHg1QykgeyBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7
IH1cbiAgICB9IGVsc2UgaWYgKGluUmVnZXgpIHtcbiAgICAgIGlmIChjID09PSAweDJmICYmIHBy
ZXYgIT09IDB4NUMpIHsgaW5SZWdleCA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAg
IGMgPT09IDB4N0MgJiYgLy8gcGlwZVxuICAgICAgZXhwLmNoYXJDb2RlQXQoaSArIDEpICE9PSAw
eDdDICYmXG4gICAgICBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09IDB4N0MgJiZcbiAgICAgICFj
dXJseSAmJiAhc3F1YXJlICYmICFwYXJlblxuICAgICkge1xuICAgICAgaWYgKGV4cHJlc3Npb24g
PT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBmaXJzdCBmaWx0ZXIsIGVuZCBvZiBleHByZXNz
aW9uXG4gICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xuICAgICAgICBleHByZXNzaW9u
ID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHB1c2hG
aWx0ZXIoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAg
ICAgIGNhc2UgMHgyMjogaW5Eb3VibGUgPSB0cnVlOyBicmVhayAgICAgICAgIC8vIFwiXG4gICAg
ICAgIGNhc2UgMHgyNzogaW5TaW5nbGUgPSB0cnVlOyBicmVhayAgICAgICAgIC8vICdcbiAgICAg
ICAgY2FzZSAweDYwOiBpblRlbXBsYXRlU3RyaW5nID0gdHJ1ZTsgYnJlYWsgLy8gYFxuICAgICAg
ICBjYXNlIDB4Mjg6IHBhcmVuKys7IGJyZWFrICAgICAgICAgICAgICAgICAvLyAoXG4gICAgICAg
IGNhc2UgMHgyOTogcGFyZW4tLTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIClcbiAgICAgICAg
Y2FzZSAweDVCOiBzcXVhcmUrKzsgYnJlYWsgICAgICAgICAgICAgICAgLy8gW1xuICAgICAgICBj
YXNlIDB4NUQ6IHNxdWFyZS0tOyBicmVhayAgICAgICAgICAgICAgICAvLyBdXG4gICAgICAgIGNh
c2UgMHg3QjogY3VybHkrKzsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIHtcbiAgICAgICAgY2Fz
ZSAweDdEOiBjdXJseS0tOyBicmVhayAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgfVxuICAg
ICAgaWYgKGMgPT09IDB4MmYpIHsgLy8gL1xuICAgICAgICB2YXIgaiA9IGkgLSAxO1xuICAgICAg
ICB2YXIgcCA9ICh2b2lkIDApO1xuICAgICAgICAvLyBmaW5kIGZpcnN0IG5vbi13aGl0ZXNwYWNl
IHByZXYgY2hhclxuICAgICAgICBmb3IgKDsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgICBwID0g
ZXhwLmNoYXJBdChqKTtcbiAgICAgICAgICBpZiAocCAhPT0gJyAnKSB7IGJyZWFrIH1cbiAgICAg
ICAgfVxuICAgICAgICBpZiAoIXAgfHwgIXZhbGlkRGl2aXNpb25DaGFyUkUudGVzdChwKSkge1xu
ICAgICAgICAgIGluUmVnZXggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
XG5cbiAgaWYgKGV4cHJlc3Npb24gPT09IHVuZGVmaW5lZCkge1xuICAgIGV4cHJlc3Npb24gPSBl
eHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICB9IGVsc2UgaWYgKGxhc3RGaWx0ZXJJbmRleCAhPT0g
MCkge1xuICAgIHB1c2hGaWx0ZXIoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2hGaWx0ZXIgKCkg
e1xuICAgIChmaWx0ZXJzIHx8IChmaWx0ZXJzID0gW10pKS5wdXNoKGV4cC5zbGljZShsYXN0Rmls
dGVySW5kZXgsIGkpLnRyaW0oKSk7XG4gICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XG4gIH1c
blxuICBpZiAoZmlsdGVycykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsg
aSsrKSB7XG4gICAgICBleHByZXNzaW9uID0gd3JhcEZpbHRlcihleHByZXNzaW9uLCBmaWx0ZXJz
W2ldKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhwcmVzc2lvblxufVxuXG5mdW5jdGlvbiB3
cmFwRmlsdGVyIChleHAsIGZpbHRlcikge1xuICB2YXIgaSA9IGZpbHRlci5pbmRleE9mKCcoJyk7
XG4gIGlmIChpIDwgMCkge1xuICAgIC8vIF9mOiByZXNvbHZlRmlsdGVyXG4gICAgcmV0dXJuIChc
Il9mKFxcXCJcIiArIGZpbHRlciArIFwiXFxcIikoXCIgKyBleHAgKyBcIilcIilcbiAgfSBlbHNl
IHtcbiAgICB2YXIgbmFtZSA9IGZpbHRlci5zbGljZSgwLCBpKTtcbiAgICB2YXIgYXJncyA9IGZp
bHRlci5zbGljZShpICsgMSk7XG4gICAgcmV0dXJuIChcIl9mKFxcXCJcIiArIG5hbWUgKyBcIlxc
XCIpKFwiICsgZXhwICsgXCIsXCIgKyBhcmdzKVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlv
biBiYXNlV2FybiAobXNnKSB7XG4gIGNvbnNvbGUuZXJyb3IoKFwiW1Z1ZSBjb21waWxlcl06IFwi
ICsgbXNnKSk7XG59XG5cbmZ1bmN0aW9uIHBsdWNrTW9kdWxlRnVuY3Rpb24gKFxuICBtb2R1bGVz
LFxuICBrZXlcbikge1xuICByZXR1cm4gbW9kdWxlc1xuICAgID8gbW9kdWxlcy5tYXAoZnVuY3Rp
b24gKG0pIHsgcmV0dXJuIG1ba2V5XTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChfKSB7IHJldHVybiBf
OyB9KVxuICAgIDogW11cbn1cblxuZnVuY3Rpb24gYWRkUHJvcCAoZWwsIG5hbWUsIHZhbHVlKSB7
XG4gIChlbC5wcm9wcyB8fCAoZWwucHJvcHMgPSBbXSkpLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1
ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHIgKGVsLCBuYW1lLCB2YWx1ZSkge1xu
ICAoZWwuYXR0cnMgfHwgKGVsLmF0dHJzID0gW10pKS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6
IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBhZGREaXJlY3RpdmUgKFxuICBlbCxcbiAgbmFtZSxc
biAgcmF3TmFtZSxcbiAgdmFsdWUsXG4gIGFyZyxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgKGVsLmRp
cmVjdGl2ZXMgfHwgKGVsLmRpcmVjdGl2ZXMgPSBbXSkpLnB1c2goeyBuYW1lOiBuYW1lLCByYXdO
YW1lOiByYXdOYW1lLCB2YWx1ZTogdmFsdWUsIGFyZzogYXJnLCBtb2RpZmllcnM6IG1vZGlmaWVy
cyB9KTtcbn1cblxuZnVuY3Rpb24gYWRkSGFuZGxlciAoXG4gIGVsLFxuICBuYW1lLFxuICB2YWx1
ZSxcbiAgbW9kaWZpZXJzLFxuICBpbXBvcnRhbnQsXG4gIHdhcm5cbikge1xuICAvLyB3YXJuIHBy
ZXZlbnQgYW5kIHBhc3NpdmUgbW9kaWZpZXJcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4g
IGlmIChcbiAgICBmYWxzZVxuICApIHtcbiAgICB3YXJuKFxuICAgICAgJ3Bhc3NpdmUgYW5kIHBy
ZXZlbnQgY2FuXFwndCBiZSB1c2VkIHRvZ2V0aGVyLiAnICtcbiAgICAgICdQYXNzaXZlIGhhbmRs
ZXIgY2FuXFwndCBwcmV2ZW50IGRlZmF1bHQgZXZlbnQuJ1xuICAgICk7XG4gIH1cbiAgLy8gY2hl
Y2sgY2FwdHVyZSBtb2RpZmllclxuICBpZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5jYXB0dXJl
KSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5jYXB0dXJlO1xuICAgIG5hbWUgPSAnIScgKyBuYW1l
OyAvLyBtYXJrIHRoZSBldmVudCBhcyBjYXB0dXJlZFxuICB9XG4gIGlmIChtb2RpZmllcnMgJiYg
bW9kaWZpZXJzLm9uY2UpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm9uY2U7XG4gICAgbmFtZSA9
ICd+JyArIG5hbWU7IC8vIG1hcmsgdGhlIGV2ZW50IGFzIG9uY2VcbiAgfVxuICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgaWYgKG1vZGlmaWVycyAmJiBtb2RpZmllcnMucGFzc2l2ZSkge1xu
ICAgIGRlbGV0ZSBtb2RpZmllcnMucGFzc2l2ZTtcbiAgICBuYW1lID0gJyYnICsgbmFtZTsgLy8g
bWFyayB0aGUgZXZlbnQgYXMgcGFzc2l2ZVxuICB9XG4gIHZhciBldmVudHM7XG4gIGlmIChtb2Rp
ZmllcnMgJiYgbW9kaWZpZXJzLm5hdGl2ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMubmF0aXZl
O1xuICAgIGV2ZW50cyA9IGVsLm5hdGl2ZUV2ZW50cyB8fCAoZWwubmF0aXZlRXZlbnRzID0ge30p
O1xuICB9IGVsc2Uge1xuICAgIGV2ZW50cyA9IGVsLmV2ZW50cyB8fCAoZWwuZXZlbnRzID0ge30p
O1xuICB9XG4gIHZhciBuZXdIYW5kbGVyID0geyB2YWx1ZTogdmFsdWUsIG1vZGlmaWVyczogbW9k
aWZpZXJzIH07XG4gIHZhciBoYW5kbGVycyA9IGV2ZW50c1tuYW1lXTtcbiAgLyogaXN0YW5idWwg
aWdub3JlIGlmICovXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXJzKSkge1xuICAgIGltcG9y
dGFudCA/IGhhbmRsZXJzLnVuc2hpZnQobmV3SGFuZGxlcikgOiBoYW5kbGVycy5wdXNoKG5ld0hh
bmRsZXIpO1xuICB9IGVsc2UgaWYgKGhhbmRsZXJzKSB7XG4gICAgZXZlbnRzW25hbWVdID0gaW1w
b3J0YW50ID8gW25ld0hhbmRsZXIsIGhhbmRsZXJzXSA6IFtoYW5kbGVycywgbmV3SGFuZGxlcl07
XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzW25hbWVdID0gbmV3SGFuZGxlcjtcbiAgfVxufVxuXG5m
dW5jdGlvbiBnZXRCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICBnZXRTdGF0aWNcbikg
e1xuICB2YXIgZHluYW1pY1ZhbHVlID1cbiAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnOicgKyBu
YW1lKSB8fFxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWJpbmQ6JyArIG5hbWUpO1xuICBp
ZiAoZHluYW1pY1ZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4gcGFyc2VGaWx0ZXJzKGR5bmFt
aWNWYWx1ZSlcbiAgfSBlbHNlIGlmIChnZXRTdGF0aWMgIT09IGZhbHNlKSB7XG4gICAgdmFyIHN0
YXRpY1ZhbHVlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgbmFtZSk7XG4gICAgaWYgKHN0YXRpY1Zh
bHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzdGF0aWNWYWx1ZSlc
biAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QW5kUmVtb3ZlQXR0ciAoZWwsIG5hbWUpIHtc
biAgdmFyIHZhbDtcbiAgaWYgKCh2YWwgPSBlbC5hdHRyc01hcFtuYW1lXSkgIT0gbnVsbCkge1xu
ICAgIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGlz
dC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChsaXN0W2ldLm5hbWUgPT09IG5hbWUp
IHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4g
ICAgfVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxuLyogICovXG5cbi8qKlxuICogQ3Jvc3MtcGxh
dGZvcm0gY29kZSBnZW5lcmF0aW9uIGZvciBjb21wb25lbnQgdi1tb2RlbFxuICovXG5mdW5jdGlv
biBnZW5Db21wb25lbnRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtc
biAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7
XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG5cbiAgdmFyIGJhc2VWYWx1ZUV4cHJlc3Npb24gPSAn
JCR2JztcbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9IGJhc2VWYWx1ZUV4cHJlc3Npb247XG4gIGlm
ICh0cmltKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID1cbiAgICAgIFwiKHR5cGVvZiBcIiArIGJh
c2VWYWx1ZUV4cHJlc3Npb24gKyBcIiA9PT0gJ3N0cmluZydcIiArXG4gICAgICAgIFwiPyBcIiAr
IGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIi50cmltKClcIiArXG4gICAgICAgIFwiOiBcIiArIGJh
c2VWYWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFs
dWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4g
IHZhciBhc3NpZ25tZW50ID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lv
bik7XG5cbiAgZWwubW9kZWwgPSB7XG4gICAgdmFsdWU6IChcIihcIiArIHZhbHVlICsgXCIpXCIp
LFxuICAgIGV4cHJlc3Npb246IChcIlxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLFxuICAgIGNh
bGxiYWNrOiAoXCJmdW5jdGlvbiAoXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIpIHtcIiAr
IGFzc2lnbm1lbnQgKyBcIn1cIilcbiAgfTtcbn1cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBj
b2RlZ2VuIGhlbHBlciBmb3IgZ2VuZXJhdGluZyB2LW1vZGVsIHZhbHVlIGFzc2lnbm1lbnQgY29k
ZS5cbiAqL1xuZnVuY3Rpb24gZ2VuQXNzaWdubWVudENvZGUgKFxuICB2YWx1ZSxcbiAgYXNzaWdu
bWVudFxuKSB7XG4gIHZhciBtb2RlbFJzID0gcGFyc2VNb2RlbCh2YWx1ZSk7XG4gIGlmIChtb2Rl
bFJzLmlkeCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAodmFsdWUgKyBcIj1cIiArIGFzc2lnbm1l
bnQpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcIiRzZXQoXCIgKyAobW9kZWxScy5leHApICsg
XCIsIFwiICsgKG1vZGVsUnMuaWR4KSArIFwiLCBcIiArIGFzc2lnbm1lbnQgKyBcIilcIilcbiAg
fVxufVxuXG4vKipcbiAqIHBhcnNlIGRpcmVjdGl2ZSBtb2RlbCB0byBkbyB0aGUgYXJyYXkgdXBk
YXRlIHRyYW5zZm9ybS4gYVtpZHhdID0gdmFsID0+ICQkYS5zcGxpY2UoJCRpZHgsIDEsIHZhbClc
biAqXG4gKiBmb3IgbG9vcCBwb3NzaWJsZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVz
dFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFbaWR4XV1cbiAqIC0gdGVzdFtcImFcIl1baWR4XVxuICog
LSB4eHgudGVzdFthW2FdLnRlc3QxW2lkeF1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVz
dDFbaWR4XV1cbiAqXG4gKi9cblxudmFyIGxlbjtcbnZhciBzdHI7XG52YXIgY2hyO1xudmFyIGlu
ZGV4JDE7XG52YXIgZXhwcmVzc2lvblBvcztcbnZhciBleHByZXNzaW9uRW5kUG9zO1xuXG5mdW5j
dGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgc3RyID0gdmFsO1xuICBsZW4gPSBzdHIubGVuZ3Ro
O1xuICBpbmRleCQxID0gZXhwcmVzc2lvblBvcyA9IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4g
IGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAt
IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXhwOiB2YWwsXG4gICAgICBpZHg6IG51bGxcbiAg
ICB9XG4gIH1cblxuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc1N0cmluZ1N0YXJ0KGNocikpIHtcbiAg
ICAgIHBhcnNlU3RyaW5nKGNocik7XG4gICAgfSBlbHNlIGlmIChjaHIgPT09IDB4NUIpIHtcbiAg
ICAgIHBhcnNlQnJhY2tldChjaHIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhw
OiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAgIGlkeDogdmFsLnN1YnN0cmlu
ZyhleHByZXNzaW9uUG9zICsgMSwgZXhwcmVzc2lvbkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlv
biBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVu
Y3Rpb24gZW9mICgpIHtcbiAgcmV0dXJuIGluZGV4JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlz
U3RyaW5nU3RhcnQgKGNocikge1xuICByZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0gMHgy
N1xufVxuXG5mdW5jdGlvbiBwYXJzZUJyYWNrZXQgKGNocikge1xuICB2YXIgaW5CcmFja2V0ID0g
MTtcbiAgZXhwcmVzc2lvblBvcyA9IGluZGV4JDE7XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBj
aHIgPSBuZXh0KCk7XG4gICAgaWYgKGlzU3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VT
dHJpbmcoY2hyKTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIp
IHsgaW5CcmFja2V0Kys7IH1cbiAgICBpZiAoY2hyID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9
XG4gICAgaWYgKGluQnJhY2tldCA9PT0gMCkge1xuICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGlu
ZGV4JDE7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmlu
ZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdRdW90ZSA9IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xu
ICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoY2hyID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAg
YnJlYWtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNv
bWUgY2FzZXMsIHRoZSBldmVudCB1c2VkIGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVc
bi8vIHNvIHdlIHVzZWQgc29tZSByZXNlcnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIg
UkFOR0VfVE9LRU4gPSAnX19yJztcbnZhciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xu
XG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVsLFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQx
ID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRp
ci5tb2RpZmllcnM7XG4gIHZhciB0YWcgPSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNN
YXAudHlwZTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICB2YXIgZHluYW1pY1R5cGUgPSBlbC5hdHRy
c01hcFsndi1iaW5kOnR5cGUnXSB8fCBlbC5hdHRyc01hcFsnOnR5cGUnXTtcbiAgICBpZiAodGFn
ID09PSAnaW5wdXQnICYmIGR5bmFtaWNUeXBlKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwi
PGlucHV0IDp0eXBlPVxcXCJcIiArIGR5bmFtaWNUeXBlICsgXCJcXFwiIHYtbW9kZWw9XFxcIlwi
ICsgdmFsdWUgKyBcIlxcXCI+OlxcblwiICtcbiAgICAgICAgXCJ2LW1vZGVsIGRvZXMgbm90IHN1
cHBvcnQgZHluYW1pYyBpbnB1dCB0eXBlcy4gVXNlIHYtaWYgYnJhbmNoZXMgaW5zdGVhZC5cIlxu
ICAgICAgKTtcbiAgICB9XG4gICAgLy8gaW5wdXRzIHdpdGggdHlwZT1cImZpbGVcIiBhcmUgcmVh
ZCBvbmx5IGFuZCBzZXR0aW5nIHRoZSBpbnB1dCdzXG4gICAgLy8gdmFsdWUgd2lsbCB0aHJvdyBh
biBlcnJvci5cbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdmaWxlJykge1xu
ICAgICAgd2FybiQxKFxuICAgICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwi
XCIgKyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJmaWxlXFxcIj46XFxuXCIgK1xuICAgICAgICBc
IkZpbGUgaW5wdXRzIGFyZSByZWFkIG9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGlu
c3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVsLmNvbXBvbmVudCkge1xu
ICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21w
b25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxz
ZVxuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICBnZW5TZWxlY3QoZWwsIHZh
bHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09
PSAnY2hlY2tib3gnKSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVy
cyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdyYWRpbycpIHtc
biAgICBnZW5SYWRpb01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0
YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnKSB7XG4gICAgZ2VuRGVmYXVsdE1v
ZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICghY29uZmlnLmlzUmVzZXJ2
ZWRUYWcodGFnKSkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJz
KTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxu
ICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKGZhbHNlKSB7XG4gICAgd2FybiQxKFxuICAg
ICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+
OiBcIiArXG4gICAgICBcInYtbW9kZWwgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGVsZW1lbnQg
dHlwZS4gXCIgK1xuICAgICAgJ0lmIHlvdSBhcmUgd29ya2luZyB3aXRoIGNvbnRlbnRlZGl0YWJs
ZSwgaXRcXCdzIHJlY29tbWVuZGVkIHRvICcgK1xuICAgICAgJ3dyYXAgYSBsaWJyYXJ5IGRlZGlj
YXRlZCBmb3IgdGhhdCBwdXJwb3NlIGluc2lkZSBhIGN1c3RvbSBjb21wb25lbnQuJ1xuICAgICk7
XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRhdGFcbiAgcmV0dXJu
IHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxc
biAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMu
bnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2YWx1ZScp
IHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwg
J3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmluZGluZyA9IGdldEJp
bmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBhZGRQcm9wKGVsLCAn
Y2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBcIilcIiArXG4gICAg
ICBcIj9faShcIiArIHZhbHVlICsgXCIsXCIgKyB2YWx1ZUJpbmRpbmcgKyBcIik+LTFcIiArIChc
biAgICAgICAgdHJ1ZVZhbHVlQmluZGluZyA9PT0gJ3RydWUnXG4gICAgICAgICAgPyAoXCI6KFwi
ICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgICA6IChcIjpfcShcIiArIHZhbHVlICsgXCIsXCIg
KyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpXCIpXG4gICAgICApXG4gICk7XG4gIGFkZEhhbmRsZXIo
ZWwsIENIRUNLQk9YX1JBRElPX1RPS0VOLFxuICAgIFwidmFyICQkYT1cIiArIHZhbHVlICsgXCIs
XCIgK1xuICAgICAgICAnJCRlbD0kZXZlbnQudGFyZ2V0LCcgK1xuICAgICAgICBcIiQkYz0kJGVs
LmNoZWNrZWQ/KFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKTooXCIgKyBmYWxzZVZhbHVlQmlu
ZGluZyArIFwiKTtcIiArXG4gICAgJ2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7JyArXG4gICAgICBc
InZhciAkJHY9XCIgKyAobnVtYmVyID8gJ19uKCcgKyB2YWx1ZUJpbmRpbmcgKyAnKScgOiB2YWx1
ZUJpbmRpbmcpICsgXCIsXCIgK1xuICAgICAgICAgICckJGk9X2koJCRhLCQkdik7JyArXG4gICAg
ICBcImlmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihcIiArIHZhbHVlICsgXCI9JCRhLmNvbmNhdCgk
JHYpKX1cIiArXG4gICAgICBcImVsc2V7JCRpPi0xJiYoXCIgKyB2YWx1ZSArIFwiPSQkYS5zbGlj
ZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpKX1cIiArXG4gICAgXCJ9ZWxzZXtcIiAr
IChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgJyQkYycpKSArIFwifVwiLFxuICAgIG51bGwsIHRy
dWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuUmFkaW9Nb2RlbCAoXG4gICAgZWwsXG4gICAgdmFs
dWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2Rp
ZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2
YWx1ZScpIHx8ICdudWxsJztcbiAgdmFsdWVCaW5kaW5nID0gbnVtYmVyID8gKFwiX24oXCIgKyB2
YWx1ZUJpbmRpbmcgKyBcIilcIikgOiB2YWx1ZUJpbmRpbmc7XG4gIGFkZFByb3AoZWwsICdjaGVj
a2VkJywgKFwiX3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpKTtc
biAgYWRkSGFuZGxlcihlbCwgQ0hFQ0tCT1hfUkFESU9fVE9LRU4sIGdlbkFzc2lnbm1lbnRDb2Rl
KHZhbHVlLCB2YWx1ZUJpbmRpbmcpLCBudWxsLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2VuU2Vs
ZWN0IChcbiAgICBlbCxcbiAgICB2YWx1ZSxcbiAgICBtb2RpZmllcnNcbikge1xuICB2YXIgbnVt
YmVyID0gbW9kaWZpZXJzICYmIG1vZGlmaWVycy5udW1iZXI7XG4gIHZhciBzZWxlY3RlZFZhbCA9
IFwiQXJyYXkucHJvdG90eXBlLmZpbHRlclwiICtcbiAgICBcIi5jYWxsKCRldmVudC50YXJnZXQu
b3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pXCIgK1xuICAgIFwiLm1hcChm
dW5jdGlvbihvKXt2YXIgdmFsID0gXFxcIl92YWx1ZVxcXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52
YWx1ZTtcIiArXG4gICAgXCJyZXR1cm4gXCIgKyAobnVtYmVyID8gJ19uKHZhbCknIDogJ3ZhbCcp
ICsgXCJ9KVwiO1xuXG4gIHZhciBhc3NpZ25tZW50ID0gJyRldmVudC50YXJnZXQubXVsdGlwbGUg
PyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSc7XG4gIHZhciBjb2RlID0gXCJ2YXIg
JCRzZWxlY3RlZFZhbCA9IFwiICsgc2VsZWN0ZWRWYWwgKyBcIjtcIjtcbiAgY29kZSA9IGNvZGUg
KyBcIiBcIiArIChnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgYXNzaWdubWVudCkpO1xuICBhZGRI
YW5kbGVyKGVsLCAnY2hhbmdlJywgY29kZSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdl
bkRlZmF1bHRNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFy
IHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuICB2YXIgcmVmID0gbW9kaWZpZXJzIHx8IHt9O1xu
ICB2YXIgbGF6eSA9IHJlZi5sYXp5O1xuICB2YXIgbnVtYmVyID0gcmVmLm51bWJlcjtcbiAgdmFy
IHRyaW0gPSByZWYudHJpbTtcbiAgdmFyIG5lZWRDb21wb3NpdGlvbkd1YXJkID0gIWxhenkgJiYg
dHlwZSAhPT0gJ3JhbmdlJztcbiAgdmFyIGV2ZW50ID0gbGF6eVxuICAgID8gJ2NoYW5nZSdcbiAg
ICA6IHR5cGUgPT09ICdyYW5nZSdcbiAgICAgID8gUkFOR0VfVE9LRU5cbiAgICAgIDogJ2lucHV0
JztcblxuICB2YXIgdmFsdWVFeHByZXNzaW9uID0gJyRldmVudC50YXJnZXQudmFsdWUnO1xuICBp
ZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiJGV2ZW50LnRhcmdldC52YWx1ZS50
cmltKClcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJf
bihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG5cbiAgdmFyIGNvZGUgPSBnZW5B
c3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVFeHByZXNzaW9uKTtcbiAgaWYgKG5lZWRDb21wb3Np
dGlvbkd1YXJkKSB7XG4gICAgY29kZSA9IFwiaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0
dXJuO1wiICsgY29kZTtcbiAgfVxuXG4gIGFkZFByb3AoZWwsICd2YWx1ZScsIChcIihcIiArIHZh
bHVlICsgXCIpXCIpKTtcbiAgYWRkSGFuZGxlcihlbCwgZXZlbnQsIGNvZGUsIG51bGwsIHRydWUp
O1xuICBpZiAodHJpbSB8fCBudW1iZXIpIHtcbiAgICBhZGRIYW5kbGVyKGVsLCAnYmx1cicsICck
Zm9yY2VVcGRhdGUoKScpO1xuICB9XG59XG5cbi8qICAqL1xuXG4vLyBub3JtYWxpemUgdi1tb2Rl
bCBldmVudCB0b2tlbnMgdGhhdCBjYW4gb25seSBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuXG4v
LyBpdCdzIGltcG9ydGFudCB0byBwbGFjZSB0aGUgZXZlbnQgYXMgdGhlIGZpcnN0IGluIHRoZSBh
cnJheSBiZWNhdXNlXG4vLyB0aGUgd2hvbGUgcG9pbnQgaXMgZW5zdXJpbmcgdGhlIHYtbW9kZWwg
Y2FsbGJhY2sgZ2V0cyBjYWxsZWQgYmVmb3JlXG4vLyB1c2VyLWF0dGFjaGVkIGhhbmRsZXJzLlxu
ZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRzIChvbikge1xuICB2YXIgZXZlbnQ7XG4gIC8qIGlzdGFu
YnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYob25bUkFOR0VfVE9LRU5dKSkge1xuICAgIC8v
IElFIGlucHV0W3R5cGU9cmFuZ2VdIG9ubHkgc3VwcG9ydHMgYGNoYW5nZWAgZXZlbnRcbiAgICBl
dmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gICAgb25bZXZlbnRdID0gW10uY29u
Y2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUgb25bUkFO
R0VfVE9LRU5dO1xuICB9XG4gIGlmIChpc0RlZihvbltDSEVDS0JPWF9SQURJT19UT0tFTl0pKSB7
XG4gICAgLy8gQ2hyb21lIGZpcmVzIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBjbGljay9jaGFuZ2Us
IGxlYWRzIHRvICM0NTIxXG4gICAgZXZlbnQgPSBpc0Nocm9tZSA/ICdjbGljaycgOiAnY2hhbmdl
JztcbiAgICBvbltldmVudF0gPSBbXS5jb25jYXQob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dLCBv
bltldmVudF0gfHwgW10pO1xuICAgIGRlbGV0ZSBvbltDSEVDS0JPWF9SQURJT19UT0tFTl07XG4g
IH1cbn1cblxudmFyIHRhcmdldCQxO1xuXG5mdW5jdGlvbiBhZGQkMSAoXG4gIGV2ZW50LFxuICBo
YW5kbGVyLFxuICBvbmNlJCQxLFxuICBjYXB0dXJlLFxuICBwYXNzaXZlXG4pIHtcbiAgaWYgKG9u
Y2UkJDEpIHtcbiAgICB2YXIgb2xkSGFuZGxlciA9IGhhbmRsZXI7XG4gICAgdmFyIF90YXJnZXQg
PSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdldCBlbGVtZW50IGluIGNsb3N1cmVcbiAg
ICBoYW5kbGVyID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgcmVzID0gYXJndW1lbnRzLmxl
bmd0aCA9PT0gMVxuICAgICAgICA/IG9sZEhhbmRsZXIoZXYpXG4gICAgICAgIDogb2xkSGFuZGxl
ci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKHJlcyAhPT0gbnVsbCkge1xuICAg
ICAgICByZW1vdmUkMihldmVudCwgaGFuZGxlciwgY2FwdHVyZSwgX3RhcmdldCk7XG4gICAgICB9
XG4gICAgfTtcbiAgfVxuICB0YXJnZXQkMS5hZGRFdmVudExpc3RlbmVyKFxuICAgIGV2ZW50LFxu
ICAgIGhhbmRsZXIsXG4gICAgc3VwcG9ydHNQYXNzaXZlXG4gICAgICA/IHsgY2FwdHVyZTogY2Fw
dHVyZSwgcGFzc2l2ZTogcGFzc2l2ZSB9XG4gICAgICA6IGNhcHR1cmVcbiAgKTtcbn1cblxuZnVu
Y3Rpb24gcmVtb3ZlJDIgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgY2FwdHVyZSxcbiAgX3Rh
cmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQxKS5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRE9NTGlzdGVuZXJz
IChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5vbikgJiYg
aXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvbiA9IHZu
b2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9IG9sZFZub2RlLmRhdGEub24gfHwge307
XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3JtYWxpemVFdmVudHMob24pO1xuICB1cGRh
dGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVtb3ZlJDIsIHZub2RlLmNvbnRleHQpO1xu
fVxuXG52YXIgZXZlbnRzID0ge1xuICBjcmVhdGU6IHVwZGF0ZURPTUxpc3RlbmVycyxcbiAgdXBk
YXRlOiB1cGRhdGVET01MaXN0ZW5lcnNcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVE
T01Qcm9wcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEu
ZG9tUHJvcHMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5kb21Qcm9wcykpIHtcbiAgICByZXR1cm5c
biAgfVxuICB2YXIga2V5LCBjdXI7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRQ
cm9wcyA9IG9sZFZub2RlLmRhdGEuZG9tUHJvcHMgfHwge307XG4gIHZhciBwcm9wcyA9IHZub2Rl
LmRhdGEuZG9tUHJvcHMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRo
ZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNEZWYocHJvcHMuX19v
Yl9fKSkge1xuICAgIHByb3BzID0gdm5vZGUuZGF0YS5kb21Qcm9wcyA9IGV4dGVuZCh7fSwgcHJv
cHMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gb2xkUHJvcHMpIHtcbiAgICBpZiAoaXNVbmRlZihw
cm9wc1trZXldKSkge1xuICAgICAgZWxtW2tleV0gPSAnJztcbiAgICB9XG4gIH1cbiAgZm9yIChr
ZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9wc1trZXldO1xuICAgIC8vIGlnbm9yZSBjaGls
ZHJlbiBpZiB0aGUgbm9kZSBoYXMgdGV4dENvbnRlbnQgb3IgaW5uZXJIVE1MLFxuICAgIC8vIGFz
IHRoZXNlIHdpbGwgdGhyb3cgYXdheSBleGlzdGluZyBET00gbm9kZXMgYW5kIGNhdXNlIHJlbW92
YWwgZXJyb3JzXG4gICAgLy8gb24gc3Vic2VxdWVudCBwYXRjaGVzICgjMzM2MClcbiAgICBpZiAo
a2V5ID09PSAndGV4dENvbnRlbnQnIHx8IGtleSA9PT0gJ2lubmVySFRNTCcpIHtcbiAgICAgIGlm
ICh2bm9kZS5jaGlsZHJlbikgeyB2bm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwOyB9XG4gICAgICBp
ZiAoY3VyID09PSBvbGRQcm9wc1trZXldKSB7IGNvbnRpbnVlIH1cbiAgICB9XG5cbiAgICBpZiAo
a2V5ID09PSAndmFsdWUnKSB7XG4gICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2Vs
bCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZFxu
ICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8vIGF2b2lkIHJlc2V0dGluZyBjdXJzb3Ig
cG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxuICAgICAgdmFyIHN0ckN1ciA9IGlzVW5k
ZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlVmFsdWUo
ZWxtLCB2bm9kZSwgc3RyQ3VyKSkge1xuICAgICAgICBlbG0udmFsdWUgPSBzdHJDdXI7XG4gICAg
ICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsbVtrZXldID0gY3VyO1xuICAgIH1cbiAgfVxufVxu
XG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0cnMuanMgYWNjZXB0VmFsdWVcblxuXG5m
dW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoXG4gIGVsbSxcbiAgdm5vZGUsXG4gIGNoZWNrVmFs
XG4pIHtcbiAgcmV0dXJuICghZWxtLmNvbXBvc2luZyAmJiAoXG4gICAgdm5vZGUudGFnID09PSAn
b3B0aW9uJyB8fFxuICAgIGlzRGlydHkoZWxtLCBjaGVja1ZhbCkgfHxcbiAgICBpc0lucHV0Q2hh
bmdlZChlbG0sIGNoZWNrVmFsKVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcnR5IChlbG0sIGNo
ZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4gdGV4dGJveCAoLm51bWJlciBhbmQgLnRy
aW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXNcbiAgLy8gbm90IGVxdWFsIHRvIHRoZSB1
cGRhdGVkIHZhbHVlXG4gIHZhciBub3RJbkZvY3VzID0gdHJ1ZTtcbiAgLy8gIzYxNTdcbiAgLy8g
d29yayBhcm91bmQgSUUgYnVnIHdoZW4gYWNjZXNzaW5nIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
aW4gYW4gaWZyYW1lXG4gIHRyeSB7IG5vdEluRm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50
ICE9PSBlbG07IH0gY2F0Y2ggKGUpIHt9XG4gIHJldHVybiBub3RJbkZvY3VzICYmIGVsbS52YWx1
ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNJbnB1dENoYW5nZWQgKGVsbSwgbmV3VmFs
KSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVsbS5fdk1v
ZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmIChpc0RlZihtb2Rp
ZmllcnMpICYmIG1vZGlmaWVycy5udW1iZXIpIHtcbiAgICByZXR1cm4gdG9OdW1iZXIodmFsdWUp
ICE9PSB0b051bWJlcihuZXdWYWwpXG4gIH1cbiAgaWYgKGlzRGVmKG1vZGlmaWVycykgJiYgbW9k
aWZpZXJzLnRyaW0pIHtcbiAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9PSBuZXdWYWwudHJpbSgp
XG4gIH1cbiAgcmV0dXJuIHZhbHVlICE9PSBuZXdWYWxcbn1cblxudmFyIGRvbVByb3BzID0ge1xu
ICBjcmVhdGU6IHVwZGF0ZURPTVByb3BzLFxuICB1cGRhdGU6IHVwZGF0ZURPTVByb3BzXG59O1xu
XG4vKiAgKi9cblxudmFyIHBhcnNlU3R5bGVUZXh0ID0gY2FjaGVkKGZ1bmN0aW9uIChjc3NUZXh0
KSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGxpc3REZWxpbWl0ZXIgPSAvOyg/IVteKF0qXFwp
KS9nO1xuICB2YXIgcHJvcGVydHlEZWxpbWl0ZXIgPSAvOiguKykvO1xuICBjc3NUZXh0LnNwbGl0
KGxpc3REZWxpbWl0ZXIpLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSkg
e1xuICAgICAgdmFyIHRtcCA9IGl0ZW0uc3BsaXQocHJvcGVydHlEZWxpbWl0ZXIpO1xuICAgICAg
dG1wLmxlbmd0aCA+IDEgJiYgKHJlc1t0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xu
ICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vLyBtZXJnZSBzdGF0aWMgYW5kIGR5
bmFtaWMgc3R5bGUgZGF0YSBvbiB0aGUgc2FtZSB2bm9kZVxuZnVuY3Rpb24gbm9ybWFsaXplU3R5
bGVEYXRhIChkYXRhKSB7XG4gIHZhciBzdHlsZSA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkYXRh
LnN0eWxlKTtcbiAgLy8gc3RhdGljIHN0eWxlIGlzIHByZS1wcm9jZXNzZWQgaW50byBhbiBvYmpl
Y3QgZHVyaW5nIGNvbXBpbGF0aW9uXG4gIC8vIGFuZCBpcyBhbHdheXMgYSBmcmVzaCBvYmplY3Qs
IHNvIGl0J3Mgc2FmZSB0byBtZXJnZSBpbnRvIGl0XG4gIHJldHVybiBkYXRhLnN0YXRpY1N0eWxl
XG4gICAgPyBleHRlbmQoZGF0YS5zdGF0aWNTdHlsZSwgc3R5bGUpXG4gICAgOiBzdHlsZVxufVxu
XG4vLyBub3JtYWxpemUgcG9zc2libGUgYXJyYXkgLyBzdHJpbmcgdmFsdWVzIGludG8gT2JqZWN0
XG5mdW5jdGlvbiBub3JtYWxpemVTdHlsZUJpbmRpbmcgKGJpbmRpbmdTdHlsZSkge1xuICBpZiAo
QXJyYXkuaXNBcnJheShiaW5kaW5nU3R5bGUpKSB7XG4gICAgcmV0dXJuIHRvT2JqZWN0KGJpbmRp
bmdTdHlsZSlcbiAgfVxuICBpZiAodHlwZW9mIGJpbmRpbmdTdHlsZSA9PT0gJ3N0cmluZycpIHtc
biAgICByZXR1cm4gcGFyc2VTdHlsZVRleHQoYmluZGluZ1N0eWxlKVxuICB9XG4gIHJldHVybiBi
aW5kaW5nU3R5bGVcbn1cblxuLyoqXG4gKiBwYXJlbnQgY29tcG9uZW50IHN0eWxlIHNob3VsZCBi
ZSBhZnRlciBjaGlsZCdzXG4gKiBzbyB0aGF0IHBhcmVudCBjb21wb25lbnQncyBzdHlsZSBjb3Vs
ZCBvdmVycmlkZSBpdFxuICovXG5mdW5jdGlvbiBnZXRTdHlsZSAodm5vZGUsIGNoZWNrQ2hpbGQp
IHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgc3R5bGVEYXRhO1xuXG4gIGlmIChjaGVja0NoaWxk
KSB7XG4gICAgdmFyIGNoaWxkTm9kZSA9IHZub2RlO1xuICAgIHdoaWxlIChjaGlsZE5vZGUuY29t
cG9uZW50SW5zdGFuY2UpIHtcbiAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jb21wb25lbnRJ
bnN0YW5jZS5fdm5vZGU7XG4gICAgICBpZiAoY2hpbGROb2RlLmRhdGEgJiYgKHN0eWxlRGF0YSA9
IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpKSB7XG4gICAgICAgIGV4dGVuZChy
ZXMsIHN0eWxlRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKChzdHlsZURhdGEg
PSBub3JtYWxpemVTdHlsZURhdGEodm5vZGUuZGF0YSkpKSB7XG4gICAgZXh0ZW5kKHJlcywgc3R5
bGVEYXRhKTtcbiAgfVxuXG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHdoaWxlICgocGFy
ZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50KSkge1xuICAgIGlmIChwYXJlbnROb2RlLmRhdGEg
JiYgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShwYXJlbnROb2RlLmRhdGEpKSkge1xu
ICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xu
fVxuXG4vKiAgKi9cblxudmFyIGNzc1ZhclJFID0gL14tLS87XG52YXIgaW1wb3J0YW50UkUgPSAv
XFxzKiFpbXBvcnRhbnQkLztcbnZhciBzZXRQcm9wID0gZnVuY3Rpb24gKGVsLCBuYW1lLCB2YWwp
IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjc3NWYXJSRS50ZXN0KG5hbWUp
KSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcbiAgfSBlbHNlIGlmIChp
bXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2
YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XG4gIH0gZWxzZSB7XG4g
ICAgdmFyIG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplKG5hbWUpO1xuICAgIGlmIChBcnJheS5p
c0FycmF5KHZhbCkpIHtcbiAgICAgIC8vIFN1cHBvcnQgdmFsdWVzIGFycmF5IGNyZWF0ZWQgYnkg
YXV0b3ByZWZpeGVyLCBlLmcuXG4gICAgICAvLyB7ZGlzcGxheTogW1wiLXdlYmtpdC1ib3hcIiwg
XCItbXMtZmxleGJveFwiLCBcImZsZXhcIl19XG4gICAgICAvLyBTZXQgdGhlbSBvbmUgYnkgb25l
LCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBvbmx5IHNldCB0aG9zZSBpdCBjYW4gcmVjb2duaXplXG4g
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4g
ICAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbFtpXTtcbiAgICAgIH1cbiAgICB9
IGVsc2Uge1xuICAgICAgZWwuc3R5bGVbbm9ybWFsaXplZE5hbWVdID0gdmFsO1xuICAgIH1cbiAg
fVxufTtcblxudmFyIHZlbmRvck5hbWVzID0gWydXZWJraXQnLCAnTW96JywgJ21zJ107XG5cbnZh
ciBlbXB0eVN0eWxlO1xudmFyIG5vcm1hbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAocHJvcCkge1xu
ICBlbXB0eVN0eWxlID0gZW1wdHlTdHlsZSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KS5zdHlsZTtcbiAgcHJvcCA9IGNhbWVsaXplKHByb3ApO1xuICBpZiAocHJvcCAhPT0gJ2ZpbHRl
cicgJiYgKHByb3AgaW4gZW1wdHlTdHlsZSkpIHtcbiAgICByZXR1cm4gcHJvcFxuICB9XG4gIHZh
ciBjYXBOYW1lID0gcHJvcC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3Auc2xpY2UoMSk7
XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmVuZG9yTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2
YXIgbmFtZSA9IHZlbmRvck5hbWVzW2ldICsgY2FwTmFtZTtcbiAgICBpZiAobmFtZSBpbiBlbXB0
eVN0eWxlKSB7XG4gICAgICByZXR1cm4gbmFtZVxuICAgIH1cbiAgfVxufSk7XG5cbmZ1bmN0aW9u
IHVwZGF0ZVN0eWxlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGRhdGEgPSB2bm9kZS5kYXRh
O1xuICB2YXIgb2xkRGF0YSA9IG9sZFZub2RlLmRhdGE7XG5cbiAgaWYgKGlzVW5kZWYoZGF0YS5z
dGF0aWNTdHlsZSkgJiYgaXNVbmRlZihkYXRhLnN0eWxlKSAmJlxuICAgIGlzVW5kZWYob2xkRGF0
YS5zdGF0aWNTdHlsZSkgJiYgaXNVbmRlZihvbGREYXRhLnN0eWxlKVxuICApIHtcbiAgICByZXR1
cm5cbiAgfVxuXG4gIHZhciBjdXIsIG5hbWU7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcbiAgdmFy
IG9sZFN0YXRpY1N0eWxlID0gb2xkRGF0YS5zdGF0aWNTdHlsZTtcbiAgdmFyIG9sZFN0eWxlQmlu
ZGluZyA9IG9sZERhdGEubm9ybWFsaXplZFN0eWxlIHx8IG9sZERhdGEuc3R5bGUgfHwge307XG5c
biAgLy8gaWYgc3RhdGljIHN0eWxlIGV4aXN0cywgc3R5bGViaW5kaW5nIGFscmVhZHkgbWVyZ2Vk
IGludG8gaXQgd2hlbiBkb2luZyBub3JtYWxpemVTdHlsZURhdGFcbiAgdmFyIG9sZFN0eWxlID0g
b2xkU3RhdGljU3R5bGUgfHwgb2xkU3R5bGVCaW5kaW5nO1xuXG4gIHZhciBzdHlsZSA9IG5vcm1h
bGl6ZVN0eWxlQmluZGluZyh2bm9kZS5kYXRhLnN0eWxlKSB8fCB7fTtcblxuICAvLyBzdG9yZSBu
b3JtYWxpemVkIHN0eWxlIHVuZGVyIGEgZGlmZmVyZW50IGtleSBmb3IgbmV4dCBkaWZmXG4gIC8v
IG1ha2Ugc3VyZSB0byBjbG9uZSBpdCBpZiBpdCdzIHJlYWN0aXZlLCBzaW5jZSB0aGUgdXNlciBs
aWtsZXkgd2FudHNcbiAgLy8gdG8gbXV0YXRlIGl0LlxuICB2bm9kZS5kYXRhLm5vcm1hbGl6ZWRT
dHlsZSA9IGlzRGVmKHN0eWxlLl9fb2JfXylcbiAgICA/IGV4dGVuZCh7fSwgc3R5bGUpXG4gICAg
OiBzdHlsZTtcblxuICB2YXIgbmV3U3R5bGUgPSBnZXRTdHlsZSh2bm9kZSwgdHJ1ZSk7XG5cbiAg
Zm9yIChuYW1lIGluIG9sZFN0eWxlKSB7XG4gICAgaWYgKGlzVW5kZWYobmV3U3R5bGVbbmFtZV0p
KSB7XG4gICAgICBzZXRQcm9wKGVsLCBuYW1lLCAnJyk7XG4gICAgfVxuICB9XG4gIGZvciAobmFt
ZSBpbiBuZXdTdHlsZSkge1xuICAgIGN1ciA9IG5ld1N0eWxlW25hbWVdO1xuICAgIGlmIChjdXIg
IT09IG9sZFN0eWxlW25hbWVdKSB7XG4gICAgICAvLyBpZTkgc2V0dGluZyB0byBudWxsIGhhcyBu
byBlZmZlY3QsIG11c3QgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwg
Y3VyID09IG51bGwgPyAnJyA6IGN1cik7XG4gICAgfVxuICB9XG59XG5cbnZhciBzdHlsZSA9IHtc
biAgY3JlYXRlOiB1cGRhdGVTdHlsZSxcbiAgdXBkYXRlOiB1cGRhdGVTdHlsZVxufTtcblxuLyog
ICovXG5cbi8qKlxuICogQWRkIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgU1ZHIHNpbmNl
IGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVudHMgaW4gSUVcbiAq
L1xuZnVuY3Rpb24gYWRkQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtcbiAgICByZXR1cm5cbiAg
fVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChlbC5jbGFzc0xpc3QpIHtc
biAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBjbHMuc3BsaXQoL1xccysv
KS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKGMpOyB9KTtc
biAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgIH1cbiAgfSBl
bHNlIHtcbiAgICB2YXIgY3VyID0gXCIgXCIgKyAoZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8
ICcnKSArIFwiIFwiO1xuICAgIGlmIChjdXIuaW5kZXhPZignICcgKyBjbHMgKyAnICcpIDwgMCkg
e1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIChjdXIgKyBjbHMpLnRyaW0oKSk7XG4g
ICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGNsYXNzIHdpdGggY29tcGF0aWJpbGl0eSBm
b3IgU1ZHIHNpbmNlIGNsYXNzTGlzdCBpcyBub3Qgc3VwcG9ydGVkIG9uXG4gKiBTVkcgZWxlbWVu
dHMgaW4gSUVcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MgKGVsLCBjbHMpIHtcbiAgLyogaXN0
YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghY2xzIHx8ICEoY2xzID0gY2xzLnRyaW0oKSkpIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChl
bC5jbGFzc0xpc3QpIHtcbiAgICBpZiAoY2xzLmluZGV4T2YoJyAnKSA+IC0xKSB7XG4gICAgICBj
bHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBlbC5jbGFzc0xp
c3QucmVtb3ZlKGMpOyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92
ZShjbHMpO1xuICAgIH1cbiAgICBpZiAoIWVsLmNsYXNzTGlzdC5sZW5ndGgpIHtcbiAgICAgIGVs
LnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGN1
ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykgKyBcIiBcIjtcbiAg
ICB2YXIgdGFyID0gJyAnICsgY2xzICsgJyAnO1xuICAgIHdoaWxlIChjdXIuaW5kZXhPZih0YXIp
ID49IDApIHtcbiAgICAgIGN1ciA9IGN1ci5yZXBsYWNlKHRhciwgJyAnKTtcbiAgICB9XG4gICAg
Y3VyID0gY3VyLnRyaW0oKTtcbiAgICBpZiAoY3VyKSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUo
J2NsYXNzJywgY3VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdj
bGFzcycpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5z
aXRpb24gKGRlZiQkMSkge1xuICBpZiAoIWRlZiQkMSkge1xuICAgIHJldHVyblxuICB9XG4gIC8q
IGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmICh0eXBlb2YgZGVmJCQxID09PSAnb2JqZWN0
Jykge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICBpZiAoZGVmJCQxLmNzcyAhPT0gZmFsc2UpIHtc
biAgICAgIGV4dGVuZChyZXMsIGF1dG9Dc3NUcmFuc2l0aW9uKGRlZiQkMS5uYW1lIHx8ICd2Jykp
O1xuICAgIH1cbiAgICBleHRlbmQocmVzLCBkZWYkJDEpO1xuICAgIHJldHVybiByZXNcbiAgfSBl
bHNlIGlmICh0eXBlb2YgZGVmJCQxID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhdXRvQ3Nz
VHJhbnNpdGlvbihkZWYkJDEpXG4gIH1cbn1cblxudmFyIGF1dG9Dc3NUcmFuc2l0aW9uID0gY2Fj
aGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiB7XG4gICAgZW50ZXJDbGFzczogKG5hbWUg
KyBcIi1lbnRlclwiKSxcbiAgICBlbnRlclRvQ2xhc3M6IChuYW1lICsgXCItZW50ZXItdG9cIiks
XG4gICAgZW50ZXJBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIiksXG4gICAg
bGVhdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2ZVwiKSxcbiAgICBsZWF2ZVRvQ2xhc3M6IChuYW1l
ICsgXCItbGVhdmUtdG9cIiksXG4gICAgbGVhdmVBY3RpdmVDbGFzczogKG5hbWUgKyBcIi1sZWF2
ZS1hY3RpdmVcIilcbiAgfVxufSk7XG5cbnZhciBoYXNUcmFuc2l0aW9uID0gaW5Ccm93c2VyICYm
ICFpc0lFOTtcbnZhciBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xudmFyIEFOSU1BVElPTiA9
ICdhbmltYXRpb24nO1xuXG4vLyBUcmFuc2l0aW9uIHByb3BlcnR5L2V2ZW50IHNuaWZmaW5nXG52
YXIgdHJhbnNpdGlvblByb3AgPSAndHJhbnNpdGlvbic7XG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50
ID0gJ3RyYW5zaXRpb25lbmQnO1xudmFyIGFuaW1hdGlvblByb3AgPSAnYW5pbWF0aW9uJztcbnZh
ciBhbmltYXRpb25FbmRFdmVudCA9ICdhbmltYXRpb25lbmQnO1xuaWYgKGhhc1RyYW5zaXRpb24p
IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICh3aW5kb3cub250cmFuc2l0aW9u
ZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kICE9
PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgdHJhbnNpdGlvblByb3AgPSAnV2Via2l0VHJhbnNpdGlv
bic7XG4gICAgdHJhbnNpdGlvbkVuZEV2ZW50ID0gJ3dlYmtpdFRyYW5zaXRpb25FbmQnO1xuICB9
XG4gIGlmICh3aW5kb3cub25hbmltYXRpb25lbmQgPT09IHVuZGVmaW5lZCAmJlxuICAgIHdpbmRv
dy5vbndlYmtpdGFuaW1hdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIGFuaW1hdGlv
blByb3AgPSAnV2Via2l0QW5pbWF0aW9uJztcbiAgICBhbmltYXRpb25FbmRFdmVudCA9ICd3ZWJr
aXRBbmltYXRpb25FbmQnO1xuICB9XG59XG5cbi8vIGJpbmRpbmcgdG8gd2luZG93IGlzIG5lY2Vz
c2FyeSB0byBtYWtlIGhvdCByZWxvYWQgd29yayBpbiBJRSBpbiBzdHJpY3QgbW9kZVxudmFyIHJh
ZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gID8gd2luZG93
LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdylcbiAgOiBzZXRUaW1lb3V0O1xuXG5m
dW5jdGlvbiBuZXh0RnJhbWUgKGZuKSB7XG4gIHJhZihmdW5jdGlvbiAoKSB7XG4gICAgcmFmKGZu
KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xu
ICB2YXIgdHJhbnNpdGlvbkNsYXNzZXMgPSBlbC5fdHJhbnNpdGlvbkNsYXNzZXMgfHwgKGVsLl90
cmFuc2l0aW9uQ2xhc3NlcyA9IFtdKTtcbiAgaWYgKHRyYW5zaXRpb25DbGFzc2VzLmluZGV4T2Yo
Y2xzKSA8IDApIHtcbiAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5wdXNoKGNscyk7XG4gICAgYWRkQ2xh
c3MoZWwsIGNscyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlVHJhbnNpdGlvbkNsYXNzIChl
bCwgY2xzKSB7XG4gIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICByZW1vdmUoZWwu
X3RyYW5zaXRpb25DbGFzc2VzLCBjbHMpO1xuICB9XG4gIHJlbW92ZUNsYXNzKGVsLCBjbHMpO1xu
fVxuXG5mdW5jdGlvbiB3aGVuVHJhbnNpdGlvbkVuZHMgKFxuICBlbCxcbiAgZXhwZWN0ZWRUeXBl
LFxuICBjYlxuKSB7XG4gIHZhciByZWYgPSBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRU
eXBlKTtcbiAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgdmFyIHRpbWVvdXQgPSByZWYudGltZW91
dDtcbiAgdmFyIHByb3BDb3VudCA9IHJlZi5wcm9wQ291bnQ7XG4gIGlmICghdHlwZSkgeyByZXR1
cm4gY2IoKSB9XG4gIHZhciBldmVudCA9IHR5cGUgPT09IFRSQU5TSVRJT04gPyB0cmFuc2l0aW9u
RW5kRXZlbnQgOiBhbmltYXRpb25FbmRFdmVudDtcbiAgdmFyIGVuZGVkID0gMDtcbiAgdmFyIGVu
ZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBvbkVu
ZCk7XG4gICAgY2IoKTtcbiAgfTtcbiAgdmFyIG9uRW5kID0gZnVuY3Rpb24gKGUpIHtcbiAgICBp
ZiAoZS50YXJnZXQgPT09IGVsKSB7XG4gICAgICBpZiAoKytlbmRlZCA+PSBwcm9wQ291bnQpIHtc
biAgICAgICAgZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHtcbiAgICBpZiAoZW5kZWQgPCBwcm9wQ291bnQpIHtcbiAgICAgIGVuZCgpO1xuICAg
IH1cbiAgfSwgdGltZW91dCArIDEpO1xuICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBvbkVu
ZCk7XG59XG5cbnZhciB0cmFuc2Zvcm1SRSA9IC9cXGIodHJhbnNmb3JtfGFsbCkoLHwkKS87XG5c
bmZ1bmN0aW9uIGdldFRyYW5zaXRpb25JbmZvIChlbCwgZXhwZWN0ZWRUeXBlKSB7XG4gIHZhciBz
dHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIHZhciB0cmFuc2l0aW9uRGVs
YXlzID0gc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0RlbGF5J10uc3BsaXQoJywgJyk7XG4gIHZh
ciB0cmFuc2l0aW9uRHVyYXRpb25zID0gc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0R1cmF0aW9u
J10uc3BsaXQoJywgJyk7XG4gIHZhciB0cmFuc2l0aW9uVGltZW91dCA9IGdldFRpbWVvdXQodHJh
bnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9ucyk7XG4gIHZhciBhbmltYXRpb25EZWxh
eXMgPSBzdHlsZXNbYW5pbWF0aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcsICcpO1xuICB2YXIg
YW5pbWF0aW9uRHVyYXRpb25zID0gc3R5bGVzW2FuaW1hdGlvblByb3AgKyAnRHVyYXRpb24nXS5z
cGxpdCgnLCAnKTtcbiAgdmFyIGFuaW1hdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KGFuaW1hdGlv
bkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcblxuICB2YXIgdHlwZTtcbiAgdmFyIHRpbWVv
dXQgPSAwO1xuICB2YXIgcHJvcENvdW50ID0gMDtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gIGlmIChleHBlY3RlZFR5cGUgPT09IFRSQU5TSVRJT04pIHtcbiAgICBpZiAodHJhbnNpdGlv
blRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gVFJBTlNJVElPTjtcbiAgICAgIHRpbWVvdXQg
PSB0cmFuc2l0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9IHRyYW5zaXRpb25EdXJhdGlv
bnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09IEFOSU1BVElP
Tikge1xuICAgIGlmIChhbmltYXRpb25UaW1lb3V0ID4gMCkge1xuICAgICAgdHlwZSA9IEFOSU1B
VElPTjtcbiAgICAgIHRpbWVvdXQgPSBhbmltYXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50
ID0gYW5pbWF0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGlt
ZW91dCA9IE1hdGgubWF4KHRyYW5zaXRpb25UaW1lb3V0LCBhbmltYXRpb25UaW1lb3V0KTtcbiAg
ICB0eXBlID0gdGltZW91dCA+IDBcbiAgICAgID8gdHJhbnNpdGlvblRpbWVvdXQgPiBhbmltYXRp
b25UaW1lb3V0XG4gICAgICAgID8gVFJBTlNJVElPTlxuICAgICAgICA6IEFOSU1BVElPTlxuICAg
ICAgOiBudWxsO1xuICAgIHByb3BDb3VudCA9IHR5cGVcbiAgICAgID8gdHlwZSA9PT0gVFJBTlNJ
VElPTlxuICAgICAgICA/IHRyYW5zaXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICAgIDogYW5p
bWF0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgOiAwO1xuICB9XG4gIHZhciBoYXNUcmFuc2Zv
cm0gPVxuICAgIHR5cGUgPT09IFRSQU5TSVRJT04gJiZcbiAgICB0cmFuc2Zvcm1SRS50ZXN0KHN0
eWxlc1t0cmFuc2l0aW9uUHJvcCArICdQcm9wZXJ0eSddKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBl
OiB0eXBlLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgcHJvcENvdW50OiBwcm9wQ291bnQs
XG4gICAgaGFzVHJhbnNmb3JtOiBoYXNUcmFuc2Zvcm1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRU
aW1lb3V0IChkZWxheXMsIGR1cmF0aW9ucykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAq
L1xuICB3aGlsZSAoZGVsYXlzLmxlbmd0aCA8IGR1cmF0aW9ucy5sZW5ndGgpIHtcbiAgICBkZWxh
eXMgPSBkZWxheXMuY29uY2F0KGRlbGF5cyk7XG4gIH1cblxuICByZXR1cm4gTWF0aC5tYXguYXBw
bHkobnVsbCwgZHVyYXRpb25zLm1hcChmdW5jdGlvbiAoZCwgaSkge1xuICAgIHJldHVybiB0b01z
KGQpICsgdG9NcyhkZWxheXNbaV0pXG4gIH0pKVxufVxuXG5mdW5jdGlvbiB0b01zIChzKSB7XG4g
IHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkpICogMTAwMFxufVxuXG4vKiAgKi9cblxuZnVu
Y3Rpb24gZW50ZXIgKHZub2RlLCB0b2dnbGVEaXNwbGF5KSB7XG4gIHZhciBlbCA9IHZub2RlLmVs
bTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwuX2xlYXZl
Q2IpKSB7XG4gICAgZWwuX2xlYXZlQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5fbGVhdmVD
YigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRy
YW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAg
LyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fZW50ZXJDYikgfHwgZWwu
bm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNz
cztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBlbnRlckNsYXNzID0gZGF0YS5lbnRl
ckNsYXNzO1xuICB2YXIgZW50ZXJUb0NsYXNzID0gZGF0YS5lbnRlclRvQ2xhc3M7XG4gIHZhciBl
bnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNzO1xuICB2YXIgYXBwZWFyQ2xh
c3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBwZWFyVG9DbGFzcyA9IGRhdGEuYXBwZWFy
VG9DbGFzcztcbiAgdmFyIGFwcGVhckFjdGl2ZUNsYXNzID0gZGF0YS5hcHBlYXJBY3RpdmVDbGFz
cztcbiAgdmFyIGJlZm9yZUVudGVyID0gZGF0YS5iZWZvcmVFbnRlcjtcbiAgdmFyIGVudGVyID0g
ZGF0YS5lbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXIgPSBkYXRhLmFmdGVyRW50ZXI7XG4gIHZhciBl
bnRlckNhbmNlbGxlZCA9IGRhdGEuZW50ZXJDYW5jZWxsZWQ7XG4gIHZhciBiZWZvcmVBcHBlYXIg
PSBkYXRhLmJlZm9yZUFwcGVhcjtcbiAgdmFyIGFwcGVhciA9IGRhdGEuYXBwZWFyO1xuICB2YXIg
YWZ0ZXJBcHBlYXIgPSBkYXRhLmFmdGVyQXBwZWFyO1xuICB2YXIgYXBwZWFyQ2FuY2VsbGVkID0g
ZGF0YS5hcHBlYXJDYW5jZWxsZWQ7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5c
biAgLy8gYWN0aXZlSW5zdGFuY2Ugd2lsbCBhbHdheXMgYmUgdGhlIDx0cmFuc2l0aW9uPiBjb21w
b25lbnQgbWFuYWdpbmcgdGhpc1xuICAvLyB0cmFuc2l0aW9uLiBPbmUgZWRnZSBjYXNlIHRvIGNo
ZWNrIGlzIHdoZW4gdGhlIDx0cmFuc2l0aW9uPiBpcyBwbGFjZWRcbiAgLy8gYXMgdGhlIHJvb3Qg
bm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY2hlY2tc
biAgLy8gPHRyYW5zaXRpb24+J3MgcGFyZW50IGZvciBhcHBlYXIgY2hlY2suXG4gIHZhciBjb250
ZXh0ID0gYWN0aXZlSW5zdGFuY2U7XG4gIHZhciB0cmFuc2l0aW9uTm9kZSA9IGFjdGl2ZUluc3Rh
bmNlLiR2bm9kZTtcbiAgd2hpbGUgKHRyYW5zaXRpb25Ob2RlICYmIHRyYW5zaXRpb25Ob2RlLnBh
cmVudCkge1xuICAgIHRyYW5zaXRpb25Ob2RlID0gdHJhbnNpdGlvbk5vZGUucGFyZW50O1xuICAg
IGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZS5jb250ZXh0O1xuICB9XG5cbiAgdmFyIGlzQXBwZWFy
ID0gIWNvbnRleHQuX2lzTW91bnRlZCB8fCAhdm5vZGUuaXNSb290SW5zZXJ0O1xuXG4gIGlmIChp
c0FwcGVhciAmJiAhYXBwZWFyICYmIGFwcGVhciAhPT0gJycpIHtcbiAgICByZXR1cm5cbiAgfVxu
XG4gIHZhciBzdGFydENsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyQ2xhc3NcbiAgICA/IGFwcGVh
ckNsYXNzXG4gICAgOiBlbnRlckNsYXNzO1xuICB2YXIgYWN0aXZlQ2xhc3MgPSBpc0FwcGVhciAm
JiBhcHBlYXJBY3RpdmVDbGFzc1xuICAgID8gYXBwZWFyQWN0aXZlQ2xhc3NcbiAgICA6IGVudGVy
QWN0aXZlQ2xhc3M7XG4gIHZhciB0b0NsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyVG9DbGFzc1xu
ICAgID8gYXBwZWFyVG9DbGFzc1xuICAgIDogZW50ZXJUb0NsYXNzO1xuXG4gIHZhciBiZWZvcmVF
bnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGJlZm9yZUFwcGVhciB8fCBiZWZvcmVFbnRlcilc
biAgICA6IGJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/ICh0
eXBlb2YgYXBwZWFyID09PSAnZnVuY3Rpb24nID8gYXBwZWFyIDogZW50ZXIpXG4gICAgOiBlbnRl
cjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/IChhZnRlckFwcGVhciB8
fCBhZnRlckVudGVyKVxuICAgIDogYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkSG9v
ayA9IGlzQXBwZWFyXG4gICAgPyAoYXBwZWFyQ2FuY2VsbGVkIHx8IGVudGVyQ2FuY2VsbGVkKVxu
ICAgIDogZW50ZXJDYW5jZWxsZWQ7XG5cbiAgdmFyIGV4cGxpY2l0RW50ZXJEdXJhdGlvbiA9IHRv
TnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJhdGlvbi5lbnRlclxu
ICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChmYWxzZSkge1xuICAgIGNoZWNrRHVyYXRp
b24oZXhwbGljaXRFbnRlckR1cmF0aW9uLCAnZW50ZXInLCB2bm9kZSk7XG4gIH1cblxuICB2YXIg
ZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29u
dHJvbCA9IGdldEhvb2tBcmd1bWVudHNMZW5ndGgoZW50ZXJIb29rKTtcblxuICB2YXIgY2IgPSBl
bC5fZW50ZXJDYiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4g
ICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHRvQ2xhc3MpO1xuICAgICAgcmVtb3ZlVHJh
bnNpdGlvbkNsYXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgfVxuICAgIGlmIChjYi5jYW5jZWxs
ZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25D
bGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICB9XG4gICAgICBlbnRlckNhbmNlbGxlZEhvb2sg
JiYgZW50ZXJDYW5jZWxsZWRIb29rKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJFbnRl
ckhvb2sgJiYgYWZ0ZXJFbnRlckhvb2soZWwpO1xuICAgIH1cbiAgICBlbC5fZW50ZXJDYiA9IG51
bGw7XG4gIH0pO1xuXG4gIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgLy8gcmVtb3ZlIHBl
bmRpbmcgbGVhdmUgZWxlbWVudCBvbiBlbnRlciBieSBpbmplY3RpbmcgYW4gaW5zZXJ0IGhvb2tc
biAgICBtZXJnZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9
IHt9KSwgJ2luc2VydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJlbnQgPSBlbC5wYXJl
bnROb2RlO1xuICAgICAgdmFyIHBlbmRpbmdOb2RlID0gcGFyZW50ICYmIHBhcmVudC5fcGVuZGlu
ZyAmJiBwYXJlbnQuX3BlbmRpbmdbdm5vZGUua2V5XTtcbiAgICAgIGlmIChwZW5kaW5nTm9kZSAm
JlxuICAgICAgICBwZW5kaW5nTm9kZS50YWcgPT09IHZub2RlLnRhZyAmJlxuICAgICAgICBwZW5k
aW5nTm9kZS5lbG0uX2xlYXZlQ2JcbiAgICAgICkge1xuICAgICAgICBwZW5kaW5nTm9kZS5lbG0u
X2xlYXZlQ2IoKTtcbiAgICAgIH1cbiAgICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNi
KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGVudGVyIHRyYW5zaXRpb25cbiAgYmVmb3Jl
RW50ZXJIb29rICYmIGJlZm9yZUVudGVySG9vayhlbCk7XG4gIGlmIChleHBlY3RzQ1NTKSB7XG4g
ICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICBhZGRUcmFuc2l0aW9u
Q2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICBuZXh0RnJhbWUoZnVuY3Rpb24gKCkge1xuICAg
ICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRp
b25DbGFzcyhlbCwgc3RhcnRDbGFzcyk7XG4gICAgICBpZiAoIWNiLmNhbmNlbGxlZCAmJiAhdXNl
cldhbnRzQ29udHJvbCkge1xuICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0RW50
ZXJEdXJhdGlvbikpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdEVudGVyRHVy
YXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhl
bCwgdHlwZSwgY2IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAo
dm5vZGUuZGF0YS5zaG93KSB7XG4gICAgdG9nZ2xlRGlzcGxheSAmJiB0b2dnbGVEaXNwbGF5KCk7
XG4gICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICB9XG5cbiAgaWYgKCFleHBl
Y3RzQ1NTICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgY2IoKTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBsZWF2ZSAodm5vZGUsIHJtKSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBj
YWxsIGVudGVyIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwuX2VudGVyQ2IpKSB7XG4gICAg
ZWwuX2VudGVyQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5fZW50ZXJDYigpO1xuICB9XG5c
biAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xu
ICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVybiBybSgpXG4gIH1cblxuICAvKiBpc3Rh
bmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9sZWF2ZUNiKSB8fCBlbC5ub2RlVHlw
ZSAhPT0gMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2
YXIgdHlwZSA9IGRhdGEudHlwZTtcbiAgdmFyIGxlYXZlQ2xhc3MgPSBkYXRhLmxlYXZlQ2xhc3M7
XG4gIHZhciBsZWF2ZVRvQ2xhc3MgPSBkYXRhLmxlYXZlVG9DbGFzcztcbiAgdmFyIGxlYXZlQWN0
aXZlQ2xhc3MgPSBkYXRhLmxlYXZlQWN0aXZlQ2xhc3M7XG4gIHZhciBiZWZvcmVMZWF2ZSA9IGRh
dGEuYmVmb3JlTGVhdmU7XG4gIHZhciBsZWF2ZSA9IGRhdGEubGVhdmU7XG4gIHZhciBhZnRlckxl
YXZlID0gZGF0YS5hZnRlckxlYXZlO1xuICB2YXIgbGVhdmVDYW5jZWxsZWQgPSBkYXRhLmxlYXZl
Q2FuY2VsbGVkO1xuICB2YXIgZGVsYXlMZWF2ZSA9IGRhdGEuZGVsYXlMZWF2ZTtcbiAgdmFyIGR1
cmF0aW9uID0gZGF0YS5kdXJhdGlvbjtcblxuICB2YXIgZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFs
c2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9IGdldEhvb2tBcmd1bWVudHNM
ZW5ndGgobGVhdmUpO1xuXG4gIHZhciBleHBsaWNpdExlYXZlRHVyYXRpb24gPSB0b051bWJlcihc
biAgICBpc09iamVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24ubGVhdmVcbiAgICAgIDog
ZHVyYXRpb25cbiAgKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxp
Y2l0TGVhdmVEdXJhdGlvbiwgJ2xlYXZlJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGNiID0gZWwu
X2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZWwucGFyZW50Tm9kZSAmJiBl
bC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAgICBlbC5wYXJlbnROb2RlLl9wZW5kaW5nW3Zu
b2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVt
b3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAgcmVtb3ZlVHJhbnNp
dGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gICAgaWYgKGNiLmNhbmNl
bGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlv
bkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGxlYXZlQ2FuY2VsbGVkICYm
IGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICAgIGFm
dGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4gICAgfVxuICAgIGVsLl9sZWF2ZUNiID0gbnVs
bDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUpIHtcbiAgICBkZWxheUxlYXZlKHBlcmZvcm1M
ZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9ybUxlYXZlKCk7XG4gIH1cblxuICBmdW5jdGlv
biBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRoZSBkZWxheWVkIGxlYXZlIG1heSBoYXZlIGFs
cmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICByZXR1
cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZpbmcgZWxlbWVudFxuICAgIGlmICghdm5vZGUu
ZGF0YS5zaG93KSB7XG4gICAgICAoZWwucGFyZW50Tm9kZS5fcGVuZGluZyB8fCAoZWwucGFyZW50
Tm9kZS5fcGVuZGluZyA9IHt9KSlbKHZub2RlLmtleSldID0gdm5vZGU7XG4gICAgfVxuICAgIGJl
Zm9yZUxlYXZlICYmIGJlZm9yZUxlYXZlKGVsKTtcbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAg
ICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIGFkZFRyYW5zaXRp
b25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgICBuZXh0RnJhbWUoZnVuY3Rpb24g
KCkge1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAg
ICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICAgIGlmICgh
Y2IuY2FuY2VsbGVkICYmICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICAgICAgaWYgKGlzVmFs
aWREdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24pKSB7XG4gICAgICAgICAgICBzZXRUaW1l
b3V0KGNiLCBleHBsaWNpdExlYXZlRHVyYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAg
ICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgICB9XG4g
ICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZWF2ZSAmJiBsZWF2ZShlbCwgY2IpO1xu
ICAgIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgY2IoKTtc
biAgICB9XG4gIH1cbn1cblxuLy8gb25seSB1c2VkIGluIGRldiBtb2RlXG5mdW5jdGlvbiBjaGVj
a0R1cmF0aW9uICh2YWwsIG5hbWUsIHZub2RlKSB7XG4gIGlmICh0eXBlb2YgdmFsICE9PSAnbnVt
YmVyJykge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5h
bWUgKyBcIiBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBudW1iZXIgLSBcIiArXG4gICAgICBcImdv
dCBcIiArIChKU09OLnN0cmluZ2lmeSh2YWwpKSArIFwiLlwiLFxuICAgICAgdm5vZGUuY29udGV4
dFxuICAgICk7XG4gIH0gZWxzZSBpZiAoaXNOYU4odmFsKSkge1xuICAgIHdhcm4oXG4gICAgICBc
Ijx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBOYU4gLSBc
IiArXG4gICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Npb24gbWlnaHQgYmUgaW5jb3JyZWN0Lics
XG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlk
RHVyYXRpb24gKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgJiYgIWlz
TmFOKHZhbClcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSB0cmFuc2l0aW9uIGhvb2sncyBhcmd1
bWVudCBsZW5ndGguIFRoZSBob29rIG1heSBiZTpcbiAqIC0gYSBtZXJnZWQgaG9vayAoaW52b2tl
cikgd2l0aCB0aGUgb3JpZ2luYWwgaW4gLmZuc1xuICogLSBhIHdyYXBwZWQgY29tcG9uZW50IG1l
dGhvZCAoY2hlY2sgLl9sZW5ndGgpXG4gKiAtIGEgcGxhaW4gZnVuY3Rpb24gKC5sZW5ndGgpXG4g
Ki9cbmZ1bmN0aW9uIGdldEhvb2tBcmd1bWVudHNMZW5ndGggKGZuKSB7XG4gIGlmIChpc1VuZGVm
KGZuKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBpbnZva2VyRm5zID0gZm4uZm5z
O1xuICBpZiAoaXNEZWYoaW52b2tlckZucykpIHtcbiAgICAvLyBpbnZva2VyXG4gICAgcmV0dXJu
IGdldEhvb2tBcmd1bWVudHNMZW5ndGgoXG4gICAgICBBcnJheS5pc0FycmF5KGludm9rZXJGbnMp
XG4gICAgICAgID8gaW52b2tlckZuc1swXVxuICAgICAgICA6IGludm9rZXJGbnNcbiAgICApXG4g
IH0gZWxzZSB7XG4gICAgcmV0dXJuIChmbi5fbGVuZ3RoIHx8IGZuLmxlbmd0aCkgPiAxXG4gIH1c
bn1cblxuZnVuY3Rpb24gX2VudGVyIChfLCB2bm9kZSkge1xuICBpZiAodm5vZGUuZGF0YS5zaG93
ICE9PSB0cnVlKSB7XG4gICAgZW50ZXIodm5vZGUpO1xuICB9XG59XG5cbnZhciB0cmFuc2l0aW9u
ID0gaW5Ccm93c2VyID8ge1xuICBjcmVhdGU6IF9lbnRlcixcbiAgYWN0aXZhdGU6IF9lbnRlcixc
biAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUkJDEgKHZub2RlLCBybSkge1xuICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZub2RlLmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xu
ICAgICAgbGVhdmUodm5vZGUsIHJtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICB9
XG4gIH1cbn0gOiB7fTtcblxudmFyIHBsYXRmb3JtTW9kdWxlcyA9IFtcbiAgYXR0cnMsXG4gIGts
YXNzLFxuICBldmVudHMsXG4gIGRvbVByb3BzLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvblxuXTtc
blxuLyogICovXG5cbi8vIHRoZSBkaXJlY3RpdmUgbW9kdWxlIHNob3VsZCBiZSBhcHBsaWVkIGxh
c3QsIGFmdGVyIGFsbFxuLy8gYnVpbHQtaW4gbW9kdWxlcyBoYXZlIGJlZW4gYXBwbGllZC5cbnZh
ciBtb2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNvbmNhdChiYXNlTW9kdWxlcyk7XG5cbnZhciBw
YXRjaCA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBub2RlT3BzOiBub2RlT3BzLCBtb2R1bGVzOiBt
b2R1bGVzIH0pO1xuXG4vKipcbiAqIE5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNl
IGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xuICogcHJvcGVydGllcyB0byBFbGVtZW50cy5c
biAqL1xuXG52YXIgaXNUZXh0SW5wdXRUeXBlID0gbWFrZU1hcCgndGV4dCxudW1iZXIscGFzc3dv
cmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwnKTtcblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5p
ZiAoaXNJRTkpIHtcbiAgLy8gaHR0cDovL3d3dy5tYXR0czQxMS5jb20vcG9zdC9pbnRlcm5ldC1l
eHBsb3Jlci05LW9uaW5wdXQvXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlv
bmNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50O1xuICAgIGlmIChlbCAmJiBlbC52bW9kZWwpIHtcbiAgICAgIHRyaWdnZXIoZWwsICdpbnB1
dCcpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBtb2RlbCQxID0ge1xuICBpbnNlcnRlZDogZnVu
Y3Rpb24gaW5zZXJ0ZWQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGlmICh2bm9kZS50YWcg
PT09ICdzZWxlY3QnKSB7XG4gICAgICB2YXIgY2IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNl
dFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9kZS5jb250ZXh0KTtcbiAgICAgIH07XG4gICAgICBj
YigpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSB8fCBp
c0VkZ2UpIHtcbiAgICAgICAgc2V0VGltZW91dChjYiwgMCk7XG4gICAgICB9XG4gICAgICBlbC5f
dk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRWYWx1ZSk7XG4gICAgfSBlbHNl
IGlmICh2bm9kZS50YWcgPT09ICd0ZXh0YXJlYScgfHwgaXNUZXh0SW5wdXRUeXBlKGVsLnR5cGUp
KSB7XG4gICAgICBlbC5fdk1vZGlmaWVycyA9IGJpbmRpbmcubW9kaWZpZXJzO1xuICAgICAgaWYg
KCFiaW5kaW5nLm1vZGlmaWVycy5sYXp5KSB7XG4gICAgICAgIC8vIFNhZmFyaSA8IDEwLjIgJiBV
SVdlYlZpZXcgZG9lc24ndCBmaXJlIGNvbXBvc2l0aW9uZW5kIHdoZW5cbiAgICAgICAgLy8gc3dp
dGNoaW5nIGZvY3VzIGJlZm9yZSBjb25maXJtaW5nIGNvbXBvc2l0aW9uIGNob2ljZVxuICAgICAg
ICAvLyB0aGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNvbWUgYnJvd3NlcnMgZS5nLiBp
T1MgQ2hyb21lXG4gICAgICAgIC8vIGZpcmVzIFwiY2hhbmdlXCIgaW5zdGVhZCBvZiBcImlucHV0
XCIgb24gYXV0b2NvbXBsZXRlLlxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2Un
LCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgaWYgKCFpc0FuZHJvaWQpIHtcbiAgICAgICAg
ICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0
YXJ0KTtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbmVuZCcsIG9u
Q29tcG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICAgICAgICBpZiAoaXNJRTkpIHtcbiAgICAgICAgICBlbC52bW9kZWwgPSB0cnVlO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5j
dGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5v
ZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZu
b2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2
LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVl
IGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRl
Y3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEg
bWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIHByZXZPcHRp
b25zID0gZWwuX3ZPcHRpb25zO1xuICAgICAgdmFyIGN1ck9wdGlvbnMgPSBlbC5fdk9wdGlvbnMg
PSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRWYWx1ZSk7XG4gICAgICBpZiAoY3VyT3B0aW9u
cy5zb21lKGZ1bmN0aW9uIChvLCBpKSB7IHJldHVybiAhbG9vc2VFcXVhbChvLCBwcmV2T3B0aW9u
c1tpXSk7IH0pKSB7XG4gICAgICAgIHRyaWdnZXIoZWwsICdjaGFuZ2UnKTtcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHNldFNlbGVjdGVkIChlbCwgYmluZGluZywgdm0pIHtc
biAgdmFyIHZhbHVlID0gYmluZGluZy52YWx1ZTtcbiAgdmFyIGlzTXVsdGlwbGUgPSBlbC5tdWx0
aXBsZTtcbiAgaWYgKGlzTXVsdGlwbGUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAg
XCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCI8c2VsZWN0
IG11bHRpcGxlIHYtbW9kZWw9XFxcIlwiICsgKGJpbmRpbmcuZXhwcmVzc2lvbikgKyBcIlxcXCI+
IFwiICtcbiAgICAgIFwiZXhwZWN0cyBhbiBBcnJheSB2YWx1ZSBmb3IgaXRzIGJpbmRpbmcsIGJ1
dCBnb3QgXCIgKyAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4
LCAtMSkpLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIHZhciBzZWxlY3Rl
ZCwgb3B0aW9uO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGVsLm9wdGlvbnMubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7XG4gICAgb3B0aW9uID0gZWwub3B0aW9uc1tpXTtcbiAgICBpZiAoaXNNdWx0aXBs
ZSkge1xuICAgICAgc2VsZWN0ZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIGdldFZhbHVlKG9wdGlv
bikpID4gLTE7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAg
ICAgICBvcHRpb24uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xu
ICAgICAgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uKSwgdmFsdWUpKSB7XG4gICAgICAg
IGlmIChlbC5zZWxlY3RlZEluZGV4ICE9PSBpKSB7XG4gICAgICAgICAgZWwuc2VsZWN0ZWRJbmRl
eCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG4g
IGlmICghaXNNdWx0aXBsZSkge1xuICAgIGVsLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgfVxufVxu
XG5mdW5jdGlvbiBnZXRWYWx1ZSAob3B0aW9uKSB7XG4gIHJldHVybiAnX3ZhbHVlJyBpbiBvcHRp
b25cbiAgICA/IG9wdGlvbi5fdmFsdWVcbiAgICA6IG9wdGlvbi52YWx1ZVxufVxuXG5mdW5jdGlv
biBvbkNvbXBvc2l0aW9uU3RhcnQgKGUpIHtcbiAgZS50YXJnZXQuY29tcG9zaW5nID0gdHJ1ZTtc
bn1cblxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZCAoZSkge1xuICAvLyBwcmV2ZW50IHRyaWdn
ZXJpbmcgYW4gaW5wdXQgZXZlbnQgZm9yIG5vIHJlYXNvblxuICBpZiAoIWUudGFyZ2V0LmNvbXBv
c2luZykgeyByZXR1cm4gfVxuICBlLnRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcbiAgdHJpZ2dl
cihlLnRhcmdldCwgJ2lucHV0Jyk7XG59XG5cbmZ1bmN0aW9uIHRyaWdnZXIgKGVsLCB0eXBlKSB7
XG4gIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgZS5pbml0
RXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIGVsLmRpc3BhdGNoRXZlbnQoZSk7XG59XG5cbi8q
ICAqL1xuXG4vLyByZWN1cnNpdmVseSBzZWFyY2ggZm9yIHBvc3NpYmxlIHRyYW5zaXRpb24gZGVm
aW5lZCBpbnNpZGUgdGhlIGNvbXBvbmVudCByb290XG5mdW5jdGlvbiBsb2NhdGVOb2RlICh2bm9k
ZSkge1xuICByZXR1cm4gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiYgKCF2bm9kZS5kYXRhIHx8
ICF2bm9kZS5kYXRhLnRyYW5zaXRpb24pXG4gICAgPyBsb2NhdGVOb2RlKHZub2RlLmNvbXBvbmVu
dEluc3RhbmNlLl92bm9kZSlcbiAgICA6IHZub2RlXG59XG5cbnZhciBzaG93ID0ge1xuICBiaW5k
OiBmdW5jdGlvbiBiaW5kIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52
YWx1ZTtcblxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5zaXRp
b24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICB2YXIgb3Jp
Z2luYWxEaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5ID1cbiAgICAgIGVsLnN0eWxlLmRp
c3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtcbiAgICBpZiAodmFsdWUg
JiYgdHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAg
IGVudGVyKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSBv
cmlnaW5hbERpc3BsYXk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUu
ZGlzcGxheSA9IHZhbHVlID8gb3JpZ2luYWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxc
blxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIg
dmFsdWUgPSByZWYudmFsdWU7XG4gICAgdmFyIG9sZFZhbHVlID0gcmVmLm9sZFZhbHVlO1xuXG4g
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHZhbHVlID09PSBvbGRWYWx1ZSkg
eyByZXR1cm4gfVxuICAgIHZub2RlID0gbG9jYXRlTm9kZSh2bm9kZSk7XG4gICAgdmFyIHRyYW5z
aXRpb24kJDEgPSB2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEudHJhbnNpdGlvbjtcbiAgICBpZiAo
dHJhbnNpdGlvbiQkMSkge1xuICAgICAgdm5vZGUuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICAgIGlm
ICh2YWx1ZSkge1xuICAgICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAg
IGVsLnN0eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgICAgIH0pO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhdmUodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAg
ICB9IGVsc2Uge1xuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWwuX192T3JpZ2lu
YWxEaXNwbGF5IDogJ25vbmUnO1xuICAgIH1cbiAgfSxcblxuICB1bmJpbmQ6IGZ1bmN0aW9uIHVu
YmluZCAoXG4gICAgZWwsXG4gICAgYmluZGluZyxcbiAgICB2bm9kZSxcbiAgICBvbGRWbm9kZSxc
biAgICBpc0Rlc3Ryb3lcbiAgKSB7XG4gICAgaWYgKCFpc0Rlc3Ryb3kpIHtcbiAgICAgIGVsLnN0
eWxlLmRpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXk7XG4gICAgfVxuICB9XG59O1xuXG52
YXIgcGxhdGZvcm1EaXJlY3RpdmVzID0ge1xuICBtb2RlbDogbW9kZWwkMSxcbiAgc2hvdzogc2hv
d1xufTtcblxuLyogICovXG5cbi8vIFByb3ZpZGVzIHRyYW5zaXRpb24gc3VwcG9ydCBmb3IgYSBz
aW5nbGUgZWxlbWVudC9jb21wb25lbnQuXG4vLyBzdXBwb3J0cyB0cmFuc2l0aW9uIG1vZGUgKG91
dC1pbiAvIGluLW91dClcblxudmFyIHRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgbmFtZTogU3RyaW5n
LFxuICBhcHBlYXI6IEJvb2xlYW4sXG4gIGNzczogQm9vbGVhbixcbiAgbW9kZTogU3RyaW5nLFxu
ICB0eXBlOiBTdHJpbmcsXG4gIGVudGVyQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVDbGFzczogU3Ry
aW5nLFxuICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVUb0NsYXNzOiBTdHJpbmcsXG4g
IGVudGVyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgbGVhdmVBY3RpdmVDbGFzczogU3RyaW5nLFxu
ICBhcHBlYXJDbGFzczogU3RyaW5nLFxuICBhcHBlYXJBY3RpdmVDbGFzczogU3RyaW5nLFxuICBh
cHBlYXJUb0NsYXNzOiBTdHJpbmcsXG4gIGR1cmF0aW9uOiBbTnVtYmVyLCBTdHJpbmcsIE9iamVj
dF1cbn07XG5cbi8vIGluIGNhc2UgdGhlIGNoaWxkIGlzIGFsc28gYW4gYWJzdHJhY3QgY29tcG9u
ZW50LCBlLmcuIDxrZWVwLWFsaXZlPlxuLy8gd2Ugd2FudCB0byByZWN1cnNpdmVseSByZXRyaWV2
ZSB0aGUgcmVhbCBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWRcbmZ1bmN0aW9uIGdldFJlYWxDaGls
ZCAodm5vZGUpIHtcbiAgdmFyIGNvbXBPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50
T3B0aW9ucztcbiAgaWYgKGNvbXBPcHRpb25zICYmIGNvbXBPcHRpb25zLkN0b3Iub3B0aW9ucy5h
YnN0cmFjdCkge1xuICAgIHJldHVybiBnZXRSZWFsQ2hpbGQoZ2V0Rmlyc3RDb21wb25lbnRDaGls
ZChjb21wT3B0aW9ucy5jaGlsZHJlbikpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZub2RlXG4g
IH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zaXRpb25EYXRhIChjb21wKSB7XG4gIHZhciBk
YXRhID0ge307XG4gIHZhciBvcHRpb25zID0gY29tcC4kb3B0aW9ucztcbiAgLy8gcHJvcHNcbiAg
Zm9yICh2YXIga2V5IGluIG9wdGlvbnMucHJvcHNEYXRhKSB7XG4gICAgZGF0YVtrZXldID0gY29t
cFtrZXldO1xuICB9XG4gIC8vIGV2ZW50cy5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMgYW5kIHBh
c3MgdGhlbSBkaXJlY3RseSB0byB0aGUgdHJhbnNpdGlvbiBtZXRob2RzXG4gIHZhciBsaXN0ZW5l
cnMgPSBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIGZvciAodmFyIGtleSQxIGluIGxpc3Rl
bmVycykge1xuICAgIGRhdGFbY2FtZWxpemUoa2V5JDEpXSA9IGxpc3RlbmVyc1trZXkkMV07XG4g
IH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gcGxhY2Vob2xkZXIgKGgsIHJhd0NoaWxk
KSB7XG4gIGlmICgvXFxkLWtlZXAtYWxpdmUkLy50ZXN0KHJhd0NoaWxkLnRhZykpIHtcbiAgICBy
ZXR1cm4gaCgna2VlcC1hbGl2ZScsIHtcbiAgICAgIHByb3BzOiByYXdDaGlsZC5jb21wb25lbnRP
cHRpb25zLnByb3BzRGF0YVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzUGFyZW50VHJh
bnNpdGlvbiAodm5vZGUpIHtcbiAgd2hpbGUgKCh2bm9kZSA9IHZub2RlLnBhcmVudCkpIHtcbiAg
ICBpZiAodm5vZGUuZGF0YS50cmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1c
biAgfVxufVxuXG5mdW5jdGlvbiBpc1NhbWVDaGlsZCAoY2hpbGQsIG9sZENoaWxkKSB7XG4gIHJl
dHVybiBvbGRDaGlsZC5rZXkgPT09IGNoaWxkLmtleSAmJiBvbGRDaGlsZC50YWcgPT09IGNoaWxk
LnRhZ1xufVxuXG5mdW5jdGlvbiBpc0FzeW5jUGxhY2Vob2xkZXIgKG5vZGUpIHtcbiAgcmV0dXJu
IG5vZGUuaXNDb21tZW50ICYmIG5vZGUuYXN5bmNGYWN0b3J5XG59XG5cbnZhciBUcmFuc2l0aW9u
ID0ge1xuICBuYW1lOiAndHJhbnNpdGlvbicsXG4gIHByb3BzOiB0cmFuc2l0aW9uUHJvcHMsXG4g
IGFic3RyYWN0OiB0cnVlLFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAg
dmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLiRvcHRpb25zLl9y
ZW5kZXJDaGlsZHJlbjtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm5cbiAgICB9
XG5cbiAgICAvLyBmaWx0ZXIgb3V0IHRleHQgbm9kZXMgKHBvc3NpYmxlIHdoaXRlc3BhY2VzKVxu
ICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRh
ZyB8fCBpc0FzeW5jUGxhY2Vob2xkZXIoYyk7IH0pO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBp
ZiAqL1xuICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5c
biAgICAvLyB3YXJuIG11bHRpcGxlIGVsZW1lbnRzXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB3
YXJuKFxuICAgICAgICAnPHRyYW5zaXRpb24+IGNhbiBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUg
ZWxlbWVudC4gVXNlICcgK1xuICAgICAgICAnPHRyYW5zaXRpb24tZ3JvdXA+IGZvciBsaXN0cy4n
LFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIG1vZGUg
PSB0aGlzLm1vZGU7XG5cbiAgICAvLyB3YXJuIGludmFsaWQgbW9kZVxuICAgIGlmIChmYWxzZVxu
ICAgICkge1xuICAgICAgd2FybihcbiAgICAgICAgJ2ludmFsaWQgPHRyYW5zaXRpb24+IG1vZGU6
ICcgKyBtb2RlLFxuICAgICAgICB0aGlzLiRwYXJlbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAg
dmFyIHJhd0NoaWxkID0gY2hpbGRyZW5bMF07XG5cbiAgICAvLyBpZiB0aGlzIGlzIGEgY29tcG9u
ZW50IHJvb3Qgbm9kZSBhbmQgdGhlIGNvbXBvbmVudCdzXG4gICAgLy8gcGFyZW50IGNvbnRhaW5l
ciBub2RlIGFsc28gaGFzIHRyYW5zaXRpb24sIHNraXAuXG4gICAgaWYgKGhhc1BhcmVudFRyYW5z
aXRpb24odGhpcy4kdm5vZGUpKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9XG5cbiAg
ICAvLyBhcHBseSB0cmFuc2l0aW9uIGRhdGEgdG8gY2hpbGRcbiAgICAvLyB1c2UgZ2V0UmVhbENo
aWxkKCkgdG8gaWdub3JlIGFic3RyYWN0IGNvbXBvbmVudHMgZS5nLiBrZWVwLWFsaXZlXG4gICAg
dmFyIGNoaWxkID0gZ2V0UmVhbENoaWxkKHJhd0NoaWxkKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICByZXR1cm4gcmF3Q2hpbGRcbiAgICB9
XG5cbiAgICBpZiAodGhpcy5fbGVhdmluZykge1xuICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyKGgs
IHJhd0NoaWxkKVxuICAgIH1cblxuICAgIC8vIGVuc3VyZSBhIGtleSB0aGF0IGlzIHVuaXF1ZSB0
byB0aGUgdm5vZGUgdHlwZSBhbmQgdG8gdGhpcyB0cmFuc2l0aW9uXG4gICAgLy8gY29tcG9uZW50
IGluc3RhbmNlLiBUaGlzIGtleSB3aWxsIGJlIHVzZWQgdG8gcmVtb3ZlIHBlbmRpbmcgbGVhdmlu
ZyBub2Rlc1xuICAgIC8vIGR1cmluZyBlbnRlcmluZy5cbiAgICB2YXIgaWQgPSBcIl9fdHJhbnNp
dGlvbi1cIiArICh0aGlzLl91aWQpICsgXCItXCI7XG4gICAgY2hpbGQua2V5ID0gY2hpbGQua2V5
ID09IG51bGxcbiAgICAgID8gY2hpbGQuaXNDb21tZW50XG4gICAgICAgID8gaWQgKyAnY29tbWVu
dCdcbiAgICAgICAgOiBpZCArIGNoaWxkLnRhZ1xuICAgICAgOiBpc1ByaW1pdGl2ZShjaGlsZC5r
ZXkpXG4gICAgICAgID8gKFN0cmluZyhjaGlsZC5rZXkpLmluZGV4T2YoaWQpID09PSAwID8gY2hp
bGQua2V5IDogaWQgKyBjaGlsZC5rZXkpXG4gICAgICAgIDogY2hpbGQua2V5O1xuXG4gICAgdmFy
IGRhdGEgPSAoY2hpbGQuZGF0YSB8fCAoY2hpbGQuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IGV4
dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcbiAgICB2YXIgb2xkUmF3Q2hpbGQgPSB0aGlzLl92
bm9kZTtcbiAgICB2YXIgb2xkQ2hpbGQgPSBnZXRSZWFsQ2hpbGQob2xkUmF3Q2hpbGQpO1xuXG4g
ICAgLy8gbWFyayB2LXNob3dcbiAgICAvLyBzbyB0aGF0IHRoZSB0cmFuc2l0aW9uIG1vZHVsZSBj
YW4gaGFuZCBvdmVyIHRoZSBjb250cm9sIHRvIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoY2hpbGQu
ZGF0YS5kaXJlY3RpdmVzICYmIGNoaWxkLmRhdGEuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChk
KSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfSkpIHtcbiAgICAgIGNoaWxkLmRhdGEuc2hv
dyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb2xkQ2hpbGQgJiZcbiAgICAgIG9s
ZENoaWxkLmRhdGEgJiZcbiAgICAgICFpc1NhbWVDaGlsZChjaGlsZCwgb2xkQ2hpbGQpICYmXG4g
ICAgICAhaXNBc3luY1BsYWNlaG9sZGVyKG9sZENoaWxkKVxuICAgICkge1xuICAgICAgLy8gcmVw
bGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25lXG4gICAgICAvLyBp
bXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIgb2xkRGF0YSA9IG9s
ZENoaWxkICYmIChvbGRDaGlsZC5kYXRhLnRyYW5zaXRpb24gPSBleHRlbmQoe30sIGRhdGEpKTtc
biAgICAgIC8vIGhhbmRsZSB0cmFuc2l0aW9uIG1vZGVcbiAgICAgIGlmIChtb2RlID09PSAnb3V0
LWluJykge1xuICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVldWUgdXBk
YXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcbiAgICAgICAgdGhpcy5fbGVhdmluZyA9IHRydWU7XG4g
ICAgICAgIG1lcmdlVk5vZGVIb29rKG9sZERhdGEsICdhZnRlckxlYXZlJywgZnVuY3Rpb24gKCkg
e1xuICAgICAgICAgIHRoaXMkMS5fbGVhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMkMS4k
Zm9yY2VVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwbGFjZWhvbGRlciho
LCByYXdDaGlsZClcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcpIHtcbiAgICAg
ICAgaWYgKGlzQXN5bmNQbGFjZWhvbGRlcihjaGlsZCkpIHtcbiAgICAgICAgICByZXR1cm4gb2xk
UmF3Q2hpbGRcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVsYXllZExlYXZlO1xuICAgICAgICB2
YXIgcGVyZm9ybUxlYXZlID0gZnVuY3Rpb24gKCkgeyBkZWxheWVkTGVhdmUoKTsgfTtcbiAgICAg
ICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2FmdGVyRW50ZXInLCBwZXJmb3JtTGVhdmUpO1xuICAg
ICAgICBtZXJnZVZOb2RlSG9vayhkYXRhLCAnZW50ZXJDYW5jZWxsZWQnLCBwZXJmb3JtTGVhdmUp
O1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnZGVsYXlMZWF2ZScsIGZ1bmN0aW9u
IChsZWF2ZSkgeyBkZWxheWVkTGVhdmUgPSBsZWF2ZTsgfSk7XG4gICAgICB9XG4gICAgfVxuXG4g
ICAgcmV0dXJuIHJhd0NoaWxkXG4gIH1cbn07XG5cbi8qICAqL1xuXG4vLyBQcm92aWRlcyB0cmFu
c2l0aW9uIHN1cHBvcnQgZm9yIGxpc3QgaXRlbXMuXG4vLyBzdXBwb3J0cyBtb3ZlIHRyYW5zaXRp
b25zIHVzaW5nIHRoZSBGTElQIHRlY2huaXF1ZS5cblxuLy8gQmVjYXVzZSB0aGUgdmRvbSdzIGNo
aWxkcmVuIHVwZGF0ZSBhbGdvcml0aG0gaXMgXCJ1bnN0YWJsZVwiIC0gaS5lLlxuLy8gaXQgZG9l
c24ndCBndWFyYW50ZWUgdGhlIHJlbGF0aXZlIHBvc2l0aW9uaW5nIG9mIHJlbW92ZWQgZWxlbWVu
dHMsXG4vLyB3ZSBmb3JjZSB0cmFuc2l0aW9uLWdyb3VwIHRvIHVwZGF0ZSBpdHMgY2hpbGRyZW4g
aW50byB0d28gcGFzc2VzOlxuLy8gaW4gdGhlIGZpcnN0IHBhc3MsIHdlIHJlbW92ZSBhbGwgbm9k
ZXMgdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQsXG4vLyB0cmlnZ2VyaW5nIHRoZWlyIGxlYXZpbmcg
dHJhbnNpdGlvbjsgaW4gdGhlIHNlY29uZCBwYXNzLCB3ZSBpbnNlcnQvbW92ZVxuLy8gaW50byB0
aGUgZmluYWwgZGVzaXJlZCBzdGF0ZS4gVGhpcyB3YXkgaW4gdGhlIHNlY29uZCBwYXNzIHJlbW92
ZWRcbi8vIG5vZGVzIHdpbGwgcmVtYWluIHdoZXJlIHRoZXkgc2hvdWxkIGJlLlxuXG52YXIgcHJv
cHMgPSBleHRlbmQoe1xuICB0YWc6IFN0cmluZyxcbiAgbW92ZUNsYXNzOiBTdHJpbmdcbn0sIHRy
YW5zaXRpb25Qcm9wcyk7XG5cbmRlbGV0ZSBwcm9wcy5tb2RlO1xuXG52YXIgVHJhbnNpdGlvbkdy
b3VwID0ge1xuICBwcm9wczogcHJvcHMsXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgp
IHtcbiAgICB2YXIgdGFnID0gdGhpcy50YWcgfHwgdGhpcy4kdm5vZGUuZGF0YS50YWcgfHwgJ3Nw
YW4nO1xuICAgIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBwcmV2Q2hp
bGRyZW4gPSB0aGlzLnByZXZDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgdmFyIHJhd0No
aWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXTtcbiAgICB2YXIgY2hpbGRyZW4gPSB0
aGlzLmNoaWxkcmVuID0gW107XG4gICAgdmFyIHRyYW5zaXRpb25EYXRhID0gZXh0cmFjdFRyYW5z
aXRpb25EYXRhKHRoaXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdDaGlsZHJlbi5s
ZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSByYXdDaGlsZHJlbltpXTtcbiAgICAgIGlmIChj
LnRhZykge1xuICAgICAgICBpZiAoYy5rZXkgIT0gbnVsbCAmJiBTdHJpbmcoYy5rZXkpLmluZGV4
T2YoJ19fdmxpc3QnKSAhPT0gMCkge1xuICAgICAgICAgIGNoaWxkcmVuLnB1c2goYyk7XG4gICAg
ICAgICAgbWFwW2Mua2V5XSA9IGNcbiAgICAgICAgICA7KGMuZGF0YSB8fCAoYy5kYXRhID0ge30p
KS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFsc2Up
IHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0aW9ucztcbiAgICAgICAgICB2
YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZyB8fCAn
JykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9uLWdyb3VwPiBjaGlsZHJl
biBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHZhciBrZXB0ID0gW107
XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwg
cHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFyIGMkMSA9IHByZXZDaGls
ZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7
XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBrZXB0LnB1c2goYyQxKTtc
biAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2goYyQxKTtcbiAgICAgICAg
fVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGwsIGtlcHQpO1xuICAgICAg
dGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIG51bGws
IGNoaWxkcmVuKVxuICB9LFxuXG4gIGJlZm9yZVVwZGF0ZTogZnVuY3Rpb24gYmVmb3JlVXBkYXRl
ICgpIHtcbiAgICAvLyBmb3JjZSByZW1vdmluZyBwYXNzXG4gICAgdGhpcy5fX3BhdGNoX18oXG4g
ICAgICB0aGlzLl92bm9kZSxcbiAgICAgIHRoaXMua2VwdCxcbiAgICAgIGZhbHNlLCAvLyBoeWRy
YXRpbmdcbiAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFudCwgYXZvaWRzIHVubmVj
ZXNzYXJ5IG1vdmVzKVxuICAgICk7XG4gICAgdGhpcy5fdm5vZGUgPSB0aGlzLmtlcHQ7XG4gIH0s
XG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0g
dGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9IHRoaXMubW92ZUNsYXNzIHx8
ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0
aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNsYXNzKSkge1xuICAgICAg
cmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8gdGhyZWUgbG9v
cHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXG4gICAgLy8gaW4gZWFjaCBp
dGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJhc2hpbmcuXG4gICAgY2hp
bGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChyZWNv
cmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBseVRyYW5zbGF0aW9uKTtcblxu
ICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlvblxuICAgIHZh
ciBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgZiA9IGJvZHkub2Zmc2V0SGVpZ2h0OyAv
LyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChj
KSB7XG4gICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG4gICAgICAgIHZhciBlbCA9IGMuZWxtO1xu
ICAgICAgICB2YXIgcyA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWws
IG1vdmVDbGFzcyk7XG4gICAgICAgIHMudHJhbnNmb3JtID0gcy5XZWJraXRUcmFuc2Zvcm0gPSBz
LnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKHRy
YW5zaXRpb25FbmRFdmVudCwgZWwuX21vdmVDYiA9IGZ1bmN0aW9uIGNiIChlKSB7XG4gICAgICAg
ICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkge1xuICAgICAg
ICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGNiKTtcbiAg
ICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xuICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlv
bkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9
XG4gICAgfSk7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhc01vdmU6IGZ1bmN0aW9uIGhh
c01vdmUgKGVsLCBtb3ZlQ2xhc3MpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xu
ICAgICAgaWYgKCFoYXNUcmFuc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAg
fVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAodGhpcy5faGFzTW92
ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTW92ZVxuICAgICAgfVxuICAgICAgLy8gRGV0
ZWN0IHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNsYXNzIGFwcGxpZWQgaGFzXG4g
ICAgICAvLyBDU1MgdHJhbnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBiZSBpbnNpZGUg
YW4gZW50ZXJpbmdcbiAgICAgIC8vIHRyYW5zaXRpb24gYXQgdGhpcyB2ZXJ5IG1vbWVudCwgd2Ug
bWFrZSBhIGNsb25lIG9mIGl0IGFuZCByZW1vdmVcbiAgICAgIC8vIGFsbCBvdGhlciB0cmFuc2l0
aW9uIGNsYXNzZXMgYXBwbGllZCB0byBlbnN1cmUgb25seSB0aGUgbW92ZSBjbGFzc1xuICAgICAg
Ly8gaXMgYXBwbGllZC5cbiAgICAgIHZhciBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xuICAgICAg
aWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgICAgICBlbC5fdHJhbnNpdGlvbkNsYXNz
ZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJlbW92ZUNsYXNzKGNsb25lLCBjbHMpOyB9KTtc
biAgICAgIH1cbiAgICAgIGFkZENsYXNzKGNsb25lLCBtb3ZlQ2xhc3MpO1xuICAgICAgY2xvbmUu
c3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIHRoaXMuJGVsLmFwcGVuZENoaWxkKGNsb25l
KTtcbiAgICAgIHZhciBpbmZvID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xuICAgICAgdGhp
cy4kZWwucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgcmV0dXJuICh0aGlzLl9oYXNNb3ZlID0g
aW5mby5oYXNUcmFuc2Zvcm0pXG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBjYWxsUGVuZGlu
Z0NicyAoYykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGMuZWxtLl9tb3Zl
Q2IpIHtcbiAgICBjLmVsbS5fbW92ZUNiKCk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovXG4gIGlmIChjLmVsbS5fZW50ZXJDYikge1xuICAgIGMuZWxtLl9lbnRlckNiKCk7XG4gIH1c
bn1cblxuZnVuY3Rpb24gcmVjb3JkUG9zaXRpb24gKGMpIHtcbiAgYy5kYXRhLm5ld1BvcyA9IGMu
ZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5mdW5jdGlvbiBhcHBseVRyYW5zbGF0
aW9uIChjKSB7XG4gIHZhciBvbGRQb3MgPSBjLmRhdGEucG9zO1xuICB2YXIgbmV3UG9zID0gYy5k
YXRhLm5ld1BvcztcbiAgdmFyIGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVmdDtcbiAgdmFy
IGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XG4gIGlmIChkeCB8fCBkeSkge1xuICAgIGMu
ZGF0YS5tb3ZlZCA9IHRydWU7XG4gICAgdmFyIHMgPSBjLmVsbS5zdHlsZTtcbiAgICBzLnRyYW5z
Zm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyBkeCArIFwicHgsXCIg
KyBkeSArIFwicHgpXCI7XG4gICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xuICB9XG59
XG5cbnZhciBwbGF0Zm9ybUNvbXBvbmVudHMgPSB7XG4gIFRyYW5zaXRpb246IFRyYW5zaXRpb24s
XG4gIFRyYW5zaXRpb25Hcm91cDogVHJhbnNpdGlvbkdyb3VwXG59O1xuXG4vKiAgKi9cblxuLy8g
aW5zdGFsbCBwbGF0Zm9ybSBzcGVjaWZpYyB1dGlsc1xuVnVlJDMuY29uZmlnLm11c3RVc2VQcm9w
ID0gbXVzdFVzZVByb3A7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZFRhZyA9IGlzUmVzZXJ2ZWRU
YWc7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZEF0dHIgPSBpc1Jlc2VydmVkQXR0cjtcblZ1ZSQz
LmNvbmZpZy5nZXRUYWdOYW1lc3BhY2UgPSBnZXRUYWdOYW1lc3BhY2U7XG5WdWUkMy5jb25maWcu
aXNVbmtub3duRWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5cbi8vIGluc3RhbGwgcGxhdGZv
cm0gcnVudGltZSBkaXJlY3RpdmVzICYgY29tcG9uZW50c1xuZXh0ZW5kKFZ1ZSQzLm9wdGlvbnMu
ZGlyZWN0aXZlcywgcGxhdGZvcm1EaXJlY3RpdmVzKTtcbmV4dGVuZChWdWUkMy5vcHRpb25zLmNv
bXBvbmVudHMsIHBsYXRmb3JtQ29tcG9uZW50cyk7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcGF0
Y2ggZnVuY3Rpb25cblZ1ZSQzLnByb3RvdHlwZS5fX3BhdGNoX18gPSBpbkJyb3dzZXIgPyBwYXRj
aCA6IG5vb3A7XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZSQzLnByb3RvdHlwZS4kbW91
bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIGlu
QnJvd3NlciA/IHF1ZXJ5KGVsKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG1vdW50Q29tcG9uZW50
KHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xuXG4vLyBkZXZ0b29scyBnbG9iYWwgaG9va1xuLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICBpZiAo
Y29uZmlnLmRldnRvb2xzKSB7XG4gICAgaWYgKGRldnRvb2xzKSB7XG4gICAgICBkZXZ0b29scy5l
bWl0KCdpbml0JywgVnVlJDMpO1xuICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgIGNvbnNv
bGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAnRG93bmxvYWQgdGhl
IFZ1ZSBEZXZ0b29scyBleHRlbnNpb24gZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVu
Y2U6XFxuJyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLWRldnRvb2xz
J1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKGZhbHNlXG4gICkge1xuICAgIGNvbnNvbGVb
Y29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgXCJZb3UgYXJlIHJ1bm5pbmcg
VnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAgXCJNYWtlIHN1cmUgdG8gdHVy
biBvbiBwcm9kdWN0aW9uIG1vZGUgd2hlbiBkZXBsb3lpbmcgZm9yIHByb2R1Y3Rpb24uXFxuXCIg
K1xuICAgICAgXCJTZWUgbW9yZSB0aXBzIGF0IGh0dHBzOi8vdnVlanMub3JnL2d1aWRlL2RlcGxv
eW1lbnQuaHRtbFwiXG4gICAgKTtcbiAgfVxufSwgMCk7XG5cbi8qICAqL1xuXG4vLyBjaGVjayB3
aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hhciBpbnNpZGUgYXR0cmlidXRlIHZh
bHVlc1xuZnVuY3Rpb24gc2hvdWxkRGVjb2RlIChjb250ZW50LCBlbmNvZGVkKSB7XG4gIHZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IFwi
PGRpdiBhPVxcXCJcIiArIGNvbnRlbnQgKyBcIlxcXCIvPlwiO1xuICByZXR1cm4gZGl2LmlubmVy
SFRNTC5pbmRleE9mKGVuY29kZWQpID4gMFxufVxuXG4vLyAjMzY2M1xuLy8gSUUgZW5jb2RlcyBu
ZXdsaW5lcyBpbnNpZGUgYXR0cmlidXRlIHZhbHVlcyB3aGlsZSBvdGhlciBicm93c2VycyBkb24n
dFxudmFyIHNob3VsZERlY29kZU5ld2xpbmVzID0gaW5Ccm93c2VyID8gc2hvdWxkRGVjb2RlKCdc
XG4nLCAnJiMxMDsnKSA6IGZhbHNlO1xuXG4vKiAgKi9cblxudmFyIGRlZmF1bHRUYWdSRSA9IC9c
XHtcXHsoKD86LnxcXG4pKz8pXFx9XFx9L2c7XG52YXIgcmVnZXhFc2NhcGVSRSA9IC9bLS4qKz9e
JHt9KCl8W1xcXVxcL1xcXFxdL2c7XG5cbnZhciBidWlsZFJlZ2V4ID0gY2FjaGVkKGZ1bmN0aW9u
IChkZWxpbWl0ZXJzKSB7XG4gIHZhciBvcGVuID0gZGVsaW1pdGVyc1swXS5yZXBsYWNlKHJlZ2V4
RXNjYXBlUkUsICdcXFxcJCYnKTtcbiAgdmFyIGNsb3NlID0gZGVsaW1pdGVyc1sxXS5yZXBsYWNl
KHJlZ2V4RXNjYXBlUkUsICdcXFxcJCYnKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAob3BlbiArICco
KD86LnxcXFxcbikrPyknICsgY2xvc2UsICdnJylcbn0pO1xuXG5mdW5jdGlvbiBwYXJzZVRleHQg
KFxuICB0ZXh0LFxuICBkZWxpbWl0ZXJzXG4pIHtcbiAgdmFyIHRhZ1JFID0gZGVsaW1pdGVycyA/
IGJ1aWxkUmVnZXgoZGVsaW1pdGVycykgOiBkZWZhdWx0VGFnUkU7XG4gIGlmICghdGFnUkUudGVz
dCh0ZXh0KSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciB0b2tlbnMgPSBbXTtcbiAgdmFyIGxh
c3RJbmRleCA9IHRhZ1JFLmxhc3RJbmRleCA9IDA7XG4gIHZhciBtYXRjaCwgaW5kZXg7XG4gIHdo
aWxlICgobWF0Y2ggPSB0YWdSRS5leGVjKHRleHQpKSkge1xuICAgIGluZGV4ID0gbWF0Y2guaW5k
ZXg7XG4gICAgLy8gcHVzaCB0ZXh0IHRva2VuXG4gICAgaWYgKGluZGV4ID4gbGFzdEluZGV4KSB7
XG4gICAgICB0b2tlbnMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKGxhc3RJbmRleCwg
aW5kZXgpKSk7XG4gICAgfVxuICAgIC8vIHRhZyB0b2tlblxuICAgIHZhciBleHAgPSBwYXJzZUZp
bHRlcnMobWF0Y2hbMV0udHJpbSgpKTtcbiAgICB0b2tlbnMucHVzaCgoXCJfcyhcIiArIGV4cCAr
IFwiKVwiKSk7XG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIH1c
biAgaWYgKGxhc3RJbmRleCA8IHRleHQubGVuZ3RoKSB7XG4gICAgdG9rZW5zLnB1c2goSlNPTi5z
dHJpbmdpZnkodGV4dC5zbGljZShsYXN0SW5kZXgpKSk7XG4gIH1cbiAgcmV0dXJuIHRva2Vucy5q
b2luKCcrJylcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU5vZGUgKGVsLCBvcHRp
b25zKSB7XG4gIHZhciB3YXJuID0gb3B0aW9ucy53YXJuIHx8IGJhc2VXYXJuO1xuICB2YXIgc3Rh
dGljQ2xhc3MgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnY2xhc3MnKTtcbiAgaWYgKGZhbHNlKSB7
XG4gICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVs
aW1pdGVycyk7XG4gICAgaWYgKGV4cHJlc3Npb24pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwi
Y2xhc3M9XFxcIlwiICsgc3RhdGljQ2xhc3MgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgJ0ludGVy
cG9sYXRpb24gaW5zaWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAg
ICdVc2Ugdi1iaW5kIG9yIHRoZSBjb2xvbiBzaG9ydGhhbmQgaW5zdGVhZC4gRm9yIGV4YW1wbGUs
ICcgK1xuICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGNsYXNzPVwie3sgdmFsIH19XCI+LCB1c2Ug
PGRpdiA6Y2xhc3M9XCJ2YWxcIj4uJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRp
Y0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFz
cyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3Mn
LCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwu
Y2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEg
KGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNDbGFzcykge1xuICAgIGRh
dGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykgKyBcIixcIjtcbiAgfVxu
ICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcImNsYXNzOlwiICsgKGVsLmNs
YXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIga2xhc3Mk
MSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0
cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rp
b24gdHJhbnNmb3JtTm9kZSQxIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMu
d2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY1N0eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihl
bCwgJ3N0eWxlJyk7XG4gIGlmIChzdGF0aWNTdHlsZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRl
eHQoc3RhdGljU3R5bGUsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgICBpZiAoZXhwcmVzc2lv
bikge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5
bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmli
dXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUg
Y29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5z
dGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxc
Ij4uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpT
T04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIg
c3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0
YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcpIHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBz
dHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQxIChlbCkge1xuICB2YXIg
ZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGlj
U3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxl
QmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSAr
IFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3Rh
dGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2Rl
JDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxudmFyIG1vZHVsZXMkMSA9IFtcbiAga2xh
c3MkMSxcbiAgc3R5bGUkMVxuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIp
IHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFkZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChc
Il9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5j
dGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlmIChkaXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVs
LCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1c
blxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxu
ICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxudmFyIGlzVW5hcnlUYWcgPSBtYWtlTWFwKFxu
ICAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFtZSxocixpbWcsaW5wdXQsaXNpbmRleCxrZXln
ZW4sJyArXG4gICdsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdicidcbik7XG5cbi8vIEVs
ZW1lbnRzIHRoYXQgeW91IGNhbiwgaW50ZW50aW9uYWxseSwgbGVhdmUgb3BlblxuLy8gKGFuZCB3
aGljaCBjbG9zZSB0aGVtc2VsdmVzKVxudmFyIGNhbkJlTGVmdE9wZW5UYWcgPSBtYWtlTWFwKFxu
ICAnY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJj
ZSdcbik7XG5cbi8vIEhUTUw1IHRhZ3MgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvaW5kaWNlcy5odG1sI2VsZW1lbnRzLTNcbi8vIFBocmFzaW5nIENvbnRlbnQgaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjcGhyYXNpbmctY29udGVu
dFxudmFyIGlzTm9uUGhyYXNpbmdUYWcgPSBtYWtlTWFwKFxuICAnYWRkcmVzcyxhcnRpY2xlLGFz
aWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLCcgK1xuICAn
ZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rl
cixmb3JtLCcgK1xuICAnaDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0
bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsJyArXG4gICdvcHRncm91cCxvcHRpb24scGFyYW0s
cnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsJyArXG4g
ICd0aXRsZSx0cix0cmFjaydcbik7XG5cbi8qICAqL1xuXG52YXIgYmFzZU9wdGlvbnMgPSB7XG4g
IGV4cGVjdEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6IG1vZHVsZXMkMSxcbiAgZGlyZWN0aXZlczog
ZGlyZWN0aXZlcyQxLFxuICBpc1ByZVRhZzogaXNQcmVUYWcsXG4gIGlzVW5hcnlUYWc6IGlzVW5h
cnlUYWcsXG4gIG11c3RVc2VQcm9wOiBtdXN0VXNlUHJvcCxcbiAgY2FuQmVMZWZ0T3BlblRhZzog
Y2FuQmVMZWZ0T3BlblRhZyxcbiAgaXNSZXNlcnZlZFRhZzogaXNSZXNlcnZlZFRhZyxcbiAgZ2V0
VGFnTmFtZXNwYWNlOiBnZXRUYWdOYW1lc3BhY2UsXG4gIHN0YXRpY0tleXM6IGdlblN0YXRpY0tl
eXMobW9kdWxlcyQxKVxufTtcblxuLyogICovXG5cbnZhciBkZWNvZGVyO1xuXG52YXIgaGUgPSB7
XG4gIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlIChodG1sKSB7XG4gICAgZGVjb2RlciA9IGRlY29k
ZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGVjb2Rlci5pbm5lckhU
TUwgPSBodG1sO1xuICAgIHJldHVybiBkZWNvZGVyLnRleHRDb250ZW50XG4gIH1cbn07XG5cbi8q
KlxuICogTm90IHR5cGUtY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgaXQncyBtb3N0bHkgdmVu
ZG9yIGNvZGUuXG4gKi9cblxuLyohXG4gKiBIVE1MIFBhcnNlciBCeSBKb2huIFJlc2lnIChlam9o
bi5vcmcpXG4gKiBNb2RpZmllZCBieSBKdXJpeSBcImthbmdheFwiIFpheXRzZXZcbiAqIE9yaWdp
bmFsIGNvZGUgYnkgRXJpayBBcnZpZHNzb24sIE1vemlsbGEgUHVibGljIExpY2Vuc2VcbiAqIGh0
dHA6Ly9lcmlrLmVhZS5uZXQvc2ltcGxlaHRtbHBhcnNlci9zaW1wbGVodG1scGFyc2VyLmpzXG4g
Ki9cblxuLy8gUmVndWxhciBFeHByZXNzaW9ucyBmb3IgcGFyc2luZyB0YWdzIGFuZCBhdHRyaWJ1
dGVzXG52YXIgc2luZ2xlQXR0cklkZW50aWZpZXIgPSAvKFteXFxzXCInPD4vPV0rKS87XG52YXIg
c2luZ2xlQXR0ckFzc2lnbiA9IC8oPzo9KS87XG52YXIgc2luZ2xlQXR0clZhbHVlcyA9IFtcbiAg
Ly8gYXR0ciB2YWx1ZSBkb3VibGUgcXVvdGVzXG4gIC9cIihbXlwiXSopXCIrLy5zb3VyY2UsXG4g
IC8vIGF0dHIgdmFsdWUsIHNpbmdsZSBxdW90ZXNcbiAgLycoW14nXSopJysvLnNvdXJjZSxcbiAg
Ly8gYXR0ciB2YWx1ZSwgbm8gcXVvdGVzXG4gIC8oW15cXHNcIic9PD5gXSspLy5zb3VyY2Vcbl07
XG52YXIgYXR0cmlidXRlID0gbmV3IFJlZ0V4cChcbiAgJ15cXFxccyonICsgc2luZ2xlQXR0cklk
ZW50aWZpZXIuc291cmNlICtcbiAgJyg/OlxcXFxzKignICsgc2luZ2xlQXR0ckFzc2lnbi5zb3Vy
Y2UgKyAnKScgK1xuICAnXFxcXHMqKD86JyArIHNpbmdsZUF0dHJWYWx1ZXMuam9pbignfCcpICsg
JykpPydcbik7XG5cbi8vIGNvdWxkIHVzZSBodHRwczovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMt
eG1sLW5hbWVzLTE5OTkwMTE0LyNOVC1RTmFtZVxuLy8gYnV0IGZvciBWdWUgdGVtcGxhdGVzIHdl
IGNhbiBlbmZvcmNlIGEgc2ltcGxlIGNoYXJzZXRcbnZhciBuY25hbWUgPSAnW2EtekEtWl9dW1xc
XFx3XFxcXC1cXFxcLl0qJztcbnZhciBxbmFtZUNhcHR1cmUgPSAnKCg/OicgKyBuY25hbWUgKyAn
XFxcXDopPycgKyBuY25hbWUgKyAnKSc7XG52YXIgc3RhcnRUYWdPcGVuID0gbmV3IFJlZ0V4cCgn
XjwnICsgcW5hbWVDYXB0dXJlKTtcbnZhciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87
XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4cCgnXjxcXFxcLycgKyBxbmFtZUNhcHR1cmUgKyAnW14+
XSo+Jyk7XG52YXIgZG9jdHlwZSA9IC9ePCFET0NUWVBFIFtePl0rPi9pO1xudmFyIGNvbW1lbnQg
PSAvXjwhLS0vO1xudmFyIGNvbmRpdGlvbmFsQ29tbWVudCA9IC9ePCFcXFsvO1xuXG52YXIgSVNf
UkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGZhbHNlO1xuJ3gnLnJlcGxhY2UoL3goLik/L2csIGZ1
bmN0aW9uIChtLCBnKSB7XG4gIElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gPSBnID09PSAnJztc
bn0pO1xuXG4vLyBTcGVjaWFsIEVsZW1lbnRzIChjYW4gY29udGFpbiBhbnl0aGluZylcbnZhciBp
c1BsYWluVGV4dEVsZW1lbnQgPSBtYWtlTWFwKCdzY3JpcHQsc3R5bGUsdGV4dGFyZWEnLCB0cnVl
KTtcbnZhciByZUNhY2hlID0ge307XG5cbnZhciBkZWNvZGluZ01hcCA9IHtcbiAgJyZsdDsnOiAn
PCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyZhbXA7JzogJyYnLFxu
ICAnJiMxMDsnOiAnXFxuJ1xufTtcbnZhciBlbmNvZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxh
bXApOy9nO1xudmFyIGVuY29kZWRBdHRyV2l0aE5ld0xpbmVzID0gLyYoPzpsdHxndHxxdW90fGFt
cHwjMTApOy9nO1xuXG4vLyAjNTk5MlxudmFyIGlzSWdub3JlTmV3bGluZVRhZyA9IG1ha2VNYXAo
J3ByZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHNob3VsZElnbm9yZUZpcnN0TmV3bGluZSA9IGZ1
bmN0aW9uICh0YWcsIGh0bWwpIHsgcmV0dXJuIHRhZyAmJiBpc0lnbm9yZU5ld2xpbmVUYWcodGFn
KSAmJiBodG1sWzBdID09PSAnXFxuJzsgfTtcblxuZnVuY3Rpb24gZGVjb2RlQXR0ciAodmFsdWUs
IHNob3VsZERlY29kZU5ld2xpbmVzKSB7XG4gIHZhciByZSA9IHNob3VsZERlY29kZU5ld2xpbmVz
ID8gZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgOiBlbmNvZGVkQXR0cjtcbiAgcmV0dXJuIHZhbHVl
LnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gZGVjb2RpbmdNYXBbbWF0Y2hd
OyB9KVxufVxuXG5mdW5jdGlvbiBwYXJzZUhUTUwgKGh0bWwsIG9wdGlvbnMpIHtcbiAgdmFyIHN0
YWNrID0gW107XG4gIHZhciBleHBlY3RIVE1MID0gb3B0aW9ucy5leHBlY3RIVE1MO1xuICB2YXIg
aXNVbmFyeVRhZyQkMSA9IG9wdGlvbnMuaXNVbmFyeVRhZyB8fCBubztcbiAgdmFyIGNhbkJlTGVm
dE9wZW5UYWckJDEgPSBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcgfHwgbm87XG4gIHZhciBpbmRl
eCA9IDA7XG4gIHZhciBsYXN0LCBsYXN0VGFnO1xuICB3aGlsZSAoaHRtbCkge1xuICAgIGxhc3Qg
PSBodG1sO1xuICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgaW4gYSBwbGFpbnRleHQgY29udGVu
dCBlbGVtZW50IGxpa2Ugc2NyaXB0L3N0eWxlXG4gICAgaWYgKCFsYXN0VGFnIHx8ICFpc1BsYWlu
VGV4dEVsZW1lbnQobGFzdFRhZykpIHtcbiAgICAgIHZhciB0ZXh0RW5kID0gaHRtbC5pbmRleE9m
KCc8Jyk7XG4gICAgICBpZiAodGV4dEVuZCA9PT0gMCkge1xuICAgICAgICAvLyBDb21tZW50Olxu
ICAgICAgICBpZiAoY29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbW1lbnRF
bmQgPSBodG1sLmluZGV4T2YoJy0tPicpO1xuXG4gICAgICAgICAgaWYgKGNvbW1lbnRFbmQgPj0g
MCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkS2VlcENvbW1lbnQpIHtcbiAgICAg
ICAgICAgICAgb3B0aW9ucy5jb21tZW50KGh0bWwuc3Vic3RyaW5nKDQsIGNvbW1lbnRFbmQpKTtc
biAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAg
ICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBo
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVs
LXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29t
bWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5p
bmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAg
ICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRp
bnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAg
ICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChk
b2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgp
O1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxu
ICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlm
IChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAg
ICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRh
ZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxu
ICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdN
YXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAg
ICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBpZiAoc2hv
dWxkSWdub3JlRmlyc3ROZXdsaW5lKGxhc3RUYWcsIGh0bWwpKSB7XG4gICAgICAgICAgICBhZHZh
bmNlKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAg
ICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQgMCksIHJlc3QgPSAodm9pZCAwKSwgbmV4dCA9
ICh2b2lkIDApO1xuICAgICAgaWYgKHRleHRFbmQgPj0gMCkge1xuICAgICAgICByZXN0ID0gaHRt
bC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICFlbmRUYWcudGVz
dChyZXN0KSAmJlxuICAgICAgICAgICFzdGFydFRhZ09wZW4udGVzdChyZXN0KSAmJlxuICAgICAg
ICAgICFjb21tZW50LnRlc3QocmVzdCkgJiZcbiAgICAgICAgICAhY29uZGl0aW9uYWxDb21tZW50
LnRlc3QocmVzdClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gPCBpbiBwbGFpbiB0ZXh0LCBi
ZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRleHRcbiAgICAgICAgICBuZXh0ID0gcmVzdC5p
bmRleE9mKCc8JywgMSk7XG4gICAgICAgICAgaWYgKG5leHQgPCAwKSB7IGJyZWFrIH1cbiAgICAg
ICAgICB0ZXh0RW5kICs9IG5leHQ7XG4gICAgICAgICAgcmVzdCA9IGh0bWwuc2xpY2UodGV4dEVu
ZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9IGh0bWwuc3Vic3RyaW5nKDAsIHRleHRFbmQp
O1xuICAgICAgICBhZHZhbmNlKHRleHRFbmQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGV4dEVu
ZCA8IDApIHtcbiAgICAgICAgdGV4dCA9IGh0bWw7XG4gICAgICAgIGh0bWwgPSAnJztcbiAgICAg
IH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2hhcnMgJiYgdGV4dCkge1xuICAgICAgICBvcHRpb25z
LmNoYXJzKHRleHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZW5kVGFnTGVu
Z3RoID0gMDtcbiAgICAgIHZhciBzdGFja2VkVGFnID0gbGFzdFRhZy50b0xvd2VyQ2FzZSgpO1xu
ICAgICAgdmFyIHJlU3RhY2tlZFRhZyA9IHJlQ2FjaGVbc3RhY2tlZFRhZ10gfHwgKHJlQ2FjaGVb
c3RhY2tlZFRhZ10gPSBuZXcgUmVnRXhwKCcoW1xcXFxzXFxcXFNdKj8pKDwvJyArIHN0YWNrZWRU
YWcgKyAnW14+XSo+KScsICdpJykpO1xuICAgICAgdmFyIHJlc3QkMSA9IGh0bWwucmVwbGFjZShy
ZVN0YWNrZWRUYWcsIGZ1bmN0aW9uIChhbGwsIHRleHQsIGVuZFRhZykge1xuICAgICAgICBlbmRU
YWdMZW5ndGggPSBlbmRUYWcubGVuZ3RoO1xuICAgICAgICBpZiAoIWlzUGxhaW5UZXh0RWxlbWVu
dChzdGFja2VkVGFnKSAmJiBzdGFja2VkVGFnICE9PSAnbm9zY3JpcHQnKSB7XG4gICAgICAgICAg
dGV4dCA9IHRleHRcbiAgICAgICAgICAgIC5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L2cs
ICckMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvPCFcXFtDREFUQVxcWyhbXFxzXFxTXSo/KV1d
Pi9nLCAnJDEnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXds
aW5lKHN0YWNrZWRUYWcsIHRleHQpKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMSk7
XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuY2hhcnMpIHtcbiAgICAgICAgICBvcHRp
b25zLmNoYXJzKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfSk7
XG4gICAgICBpbmRleCArPSBodG1sLmxlbmd0aCAtIHJlc3QkMS5sZW5ndGg7XG4gICAgICBodG1s
ID0gcmVzdCQxO1xuICAgICAgcGFyc2VFbmRUYWcoc3RhY2tlZFRhZywgaW5kZXggLSBlbmRUYWdM
ZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbCA9PT0gbGFzdCkge1xuICAgICAg
b3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNoYXJzKGh0bWwpO1xuICAgICAgaWYgKGZhbHNlKSB7
XG4gICAgICAgIG9wdGlvbnMud2FybigoXCJNYWwtZm9ybWF0dGVkIHRhZyBhdCBlbmQgb2YgdGVt
cGxhdGU6IFxcXCJcIiArIGh0bWwgKyBcIlxcXCJcIikpO1xuICAgICAgfVxuICAgICAgYnJlYWtc
biAgICB9XG4gIH1cblxuICAvLyBDbGVhbiB1cCBhbnkgcmVtYWluaW5nIHRhZ3NcbiAgcGFyc2VF
bmRUYWcoKTtcblxuICBmdW5jdGlvbiBhZHZhbmNlIChuKSB7XG4gICAgaW5kZXggKz0gbjtcbiAg
ICBodG1sID0gaHRtbC5zdWJzdHJpbmcobik7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVN0YXJ0
VGFnICgpIHtcbiAgICB2YXIgc3RhcnQgPSBodG1sLm1hdGNoKHN0YXJ0VGFnT3Blbik7XG4gICAg
aWYgKHN0YXJ0KSB7XG4gICAgICB2YXIgbWF0Y2ggPSB7XG4gICAgICAgIHRhZ05hbWU6IHN0YXJ0
WzFdLFxuICAgICAgICBhdHRyczogW10sXG4gICAgICAgIHN0YXJ0OiBpbmRleFxuICAgICAgfTtc
biAgICAgIGFkdmFuY2Uoc3RhcnRbMF0ubGVuZ3RoKTtcbiAgICAgIHZhciBlbmQsIGF0dHI7XG4g
ICAgICB3aGlsZSAoIShlbmQgPSBodG1sLm1hdGNoKHN0YXJ0VGFnQ2xvc2UpKSAmJiAoYXR0ciA9
IGh0bWwubWF0Y2goYXR0cmlidXRlKSkpIHtcbiAgICAgICAgYWR2YW5jZShhdHRyWzBdLmxlbmd0
aCk7XG4gICAgICAgIG1hdGNoLmF0dHJzLnB1c2goYXR0cik7XG4gICAgICB9XG4gICAgICBpZiAo
ZW5kKSB7XG4gICAgICAgIG1hdGNoLnVuYXJ5U2xhc2ggPSBlbmRbMV07XG4gICAgICAgIGFkdmFu
Y2UoZW5kWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmVuZCA9IGluZGV4O1xuICAgICAgICBy
ZXR1cm4gbWF0Y2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdGFy
dFRhZyAobWF0Y2gpIHtcbiAgICB2YXIgdGFnTmFtZSA9IG1hdGNoLnRhZ05hbWU7XG4gICAgdmFy
IHVuYXJ5U2xhc2ggPSBtYXRjaC51bmFyeVNsYXNoO1xuXG4gICAgaWYgKGV4cGVjdEhUTUwpIHtc
biAgICAgIGlmIChsYXN0VGFnID09PSAncCcgJiYgaXNOb25QaHJhc2luZ1RhZyh0YWdOYW1lKSkg
e1xuICAgICAgICBwYXJzZUVuZFRhZyhsYXN0VGFnKTtcbiAgICAgIH1cbiAgICAgIGlmIChjYW5C
ZUxlZnRPcGVuVGFnJCQxKHRhZ05hbWUpICYmIGxhc3RUYWcgPT09IHRhZ05hbWUpIHtcbiAgICAg
ICAgcGFyc2VFbmRUYWcodGFnTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHVuYXJ5
ID0gaXNVbmFyeVRhZyQkMSh0YWdOYW1lKSB8fCAhIXVuYXJ5U2xhc2g7XG5cbiAgICB2YXIgbCA9
IG1hdGNoLmF0dHJzLmxlbmd0aDtcbiAgICB2YXIgYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhcmdzID0gbWF0Y2guYXR0
cnNbaV07XG4gICAgICAvLyBoYWNraXNoIHdvcmsgYXJvdW5kIEZGIGJ1ZyBodHRwczovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk3NzhcbiAgICAgIGlmIChJU19SRUdF
WF9DQVBUVVJJTkdfQlJPS0VOICYmIGFyZ3NbMF0uaW5kZXhPZignXCJcIicpID09PSAtMSkge1xu
ICAgICAgICBpZiAoYXJnc1szXSA9PT0gJycpIHsgZGVsZXRlIGFyZ3NbM107IH1cbiAgICAgICAg
aWYgKGFyZ3NbNF0gPT09ICcnKSB7IGRlbGV0ZSBhcmdzWzRdOyB9XG4gICAgICAgIGlmIChhcmdz
WzVdID09PSAnJykgeyBkZWxldGUgYXJnc1s1XTsgfVxuICAgICAgfVxuICAgICAgdmFyIHZhbHVl
ID0gYXJnc1szXSB8fCBhcmdzWzRdIHx8IGFyZ3NbNV0gfHwgJyc7XG4gICAgICBhdHRyc1tpXSA9
IHtcbiAgICAgICAgbmFtZTogYXJnc1sxXSxcbiAgICAgICAgdmFsdWU6IGRlY29kZUF0dHIoXG4g
ICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgb3B0aW9ucy5zaG91bGREZWNvZGVOZXdsaW5lc1xu
ICAgICAgICApXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIHN0
YWNrLnB1c2goeyB0YWc6IHRhZ05hbWUsIGxvd2VyQ2FzZWRUYWc6IHRhZ05hbWUudG9Mb3dlckNh
c2UoKSwgYXR0cnM6IGF0dHJzIH0pO1xuICAgICAgbGFzdFRhZyA9IHRhZ05hbWU7XG4gICAgfVxu
XG4gICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwg
YXR0cnMsIHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0Y2guZW5kKTtcbiAgICB9XG4gIH1cblxuICBm
dW5jdGlvbiBwYXJzZUVuZFRhZyAodGFnTmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBwb3Ms
IGxvd2VyQ2FzZWRUYWdOYW1lO1xuICAgIGlmIChzdGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5k
ZXg7IH1cbiAgICBpZiAoZW5kID09IG51bGwpIHsgZW5kID0gaW5kZXg7IH1cblxuICAgIGlmICh0
YWdOYW1lKSB7XG4gICAgICBsb3dlckNhc2VkVGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2Uo
KTtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IG9wZW5lZCB0YWcgb2YgdGhlIHNh
bWUgdHlwZVxuICAgIGlmICh0YWdOYW1lKSB7XG4gICAgICBmb3IgKHBvcyA9IHN0YWNrLmxlbmd0
aCAtIDE7IHBvcyA+PSAwOyBwb3MtLSkge1xuICAgICAgICBpZiAoc3RhY2tbcG9zXS5sb3dlckNh
c2VkVGFnID09PSBsb3dlckNhc2VkVGFnTmFtZSkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgbm8gdGFnIG5hbWUgaXMgcHJv
dmlkZWQsIGNsZWFuIHNob3BcbiAgICAgIHBvcyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+
PSAwKSB7XG4gICAgICAvLyBDbG9zZSBhbGwgdGhlIG9wZW4gZWxlbWVudHMsIHVwIHRoZSBzdGFj
a1xuICAgICAgZm9yICh2YXIgaSA9IHN0YWNrLmxlbmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pIHtc
biAgICAgICAgaWYgKGZhbHNlXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2Fybihc
biAgICAgICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0
Y2hpbmcgZW5kIHRhZy5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChv
cHRpb25zLmVuZCkge1xuICAgICAgICAgIG9wdGlvbnMuZW5kKHN0YWNrW2ldLnRhZywgc3RhcnQs
IGVuZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBvcGVuIGVs
ZW1lbnRzIGZyb20gdGhlIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggPSBwb3M7XG4gICAgICBs
YXN0VGFnID0gcG9zICYmIHN0YWNrW3BvcyAtIDFdLnRhZztcbiAgICB9IGVsc2UgaWYgKGxvd2Vy
Q2FzZWRUYWdOYW1lID09PSAnYnInKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAg
ICAgICBvcHRpb25zLnN0YXJ0KHRhZ05hbWUsIFtdLCB0cnVlLCBzdGFydCwgZW5kKTtcbiAgICAg
IH1cbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZWRUYWdOYW1lID09PSAncCcpIHtcbiAgICAgIGlm
IChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIGZh
bHNlLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmVuZCkge1xuICAg
ICAgICBvcHRpb25zLmVuZCh0YWdOYW1lLCBzdGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn1cblxuLyogICovXG5cbnZhciBvblJFID0gL15AfF52LW9uOi87XG52YXIgZGlyUkUgPSAv
XnYtfF5AfF46LztcbnZhciBmb3JBbGlhc1JFID0gLyguKj8pXFxzKyg/OmlufG9mKVxccysoLiop
LztcbnZhciBmb3JJdGVyYXRvclJFID0gL1xcKChcXHtbXn1dKlxcfXxbXixdKiksKFteLF0qKSg/
OiwoW14sXSopKT9cXCkvO1xuXG52YXIgYXJnUkUgPSAvOiguKikkLztcbnZhciBiaW5kUkUgPSAv
Xjp8XnYtYmluZDovO1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXSsvZztcblxudmFyIGRlY29k
ZUhUTUxDYWNoZWQgPSBjYWNoZWQoaGUuZGVjb2RlKTtcblxuLy8gY29uZmlndXJhYmxlIHN0YXRl
XG52YXIgd2FybiQyO1xudmFyIGRlbGltaXRlcnM7XG52YXIgdHJhbnNmb3JtcztcbnZhciBwcmVU
cmFuc2Zvcm1zO1xudmFyIHBvc3RUcmFuc2Zvcm1zO1xudmFyIHBsYXRmb3JtSXNQcmVUYWc7XG52
YXIgcGxhdGZvcm1NdXN0VXNlUHJvcDtcbnZhciBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZTtcblxu
LyoqXG4gKiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2Ug
KFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8
fCBiYXNlV2FybjtcblxuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBu
bztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwgbm87XG4g
IHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87
XG5cbiAgdHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAn
dHJhbnNmb3JtTm9kZScpO1xuICBwcmVUcmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihv
cHRpb25zLm1vZHVsZXMsICdwcmVUcmFuc2Zvcm1Ob2RlJyk7XG4gIHBvc3RUcmFuc2Zvcm1zID0g
cGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICdwb3N0VHJhbnNmb3JtTm9kZScp
O1xuXG4gIGRlbGltaXRlcnMgPSBvcHRpb25zLmRlbGltaXRlcnM7XG5cbiAgdmFyIHN0YWNrID0g
W107XG4gIHZhciBwcmVzZXJ2ZVdoaXRlc3BhY2UgPSBvcHRpb25zLnByZXNlcnZlV2hpdGVzcGFj
ZSAhPT0gZmFsc2U7XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGlu
VlByZSA9IGZhbHNlO1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNl
O1xuXG4gIGZ1bmN0aW9uIHdhcm5PbmNlIChtc2cpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAg
ICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIHdhcm4kMihtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGZ1
bmN0aW9uIGVuZFByZSAoZWxlbWVudCkge1xuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlm
IChlbGVtZW50LnByZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChw
bGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAg
ICB9XG4gIH1cblxuICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4g
ICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlv
bnMuaXNVbmFyeVRhZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9w
ZW5UYWcsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3
bGluZXMsXG4gICAgc2hvdWxkS2VlcENvbW1lbnQ6IG9wdGlvbnMuY29tbWVudHMsXG4gICAgc3Rh
cnQ6IGZ1bmN0aW9uIHN0YXJ0ICh0YWcsIGF0dHJzLCB1bmFyeSkge1xuICAgICAgLy8gY2hlY2sg
bmFtZXNwYWNlLlxuICAgICAgLy8gaW5oZXJpdCBwYXJlbnQgbnMgaWYgdGhlcmUgaXMgb25lXG4g
ICAgICB2YXIgbnMgPSAoY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50Lm5zKSB8fCBwbGF0
Zm9ybUdldFRhZ05hbWVzcGFjZSh0YWcpO1xuXG4gICAgICAvLyBoYW5kbGUgSUUgc3ZnIGJ1Z1xu
ICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoaXNJRSAmJiBucyA9PT0g
J3N2ZycpIHtcbiAgICAgICAgYXR0cnMgPSBndWFyZElFU1ZHQnVnKGF0dHJzKTtcbiAgICAgIH1c
blxuICAgICAgdmFyIGVsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6IDEsXG4gICAgICAgIHRhZzog
dGFnLFxuICAgICAgICBhdHRyc0xpc3Q6IGF0dHJzLFxuICAgICAgICBhdHRyc01hcDogbWFrZUF0
dHJzTWFwKGF0dHJzKSxcbiAgICAgICAgcGFyZW50OiBjdXJyZW50UGFyZW50LFxuICAgICAgICBj
aGlsZHJlbjogW11cbiAgICAgIH07XG4gICAgICBpZiAobnMpIHtcbiAgICAgICAgZWxlbWVudC5u
cyA9IG5zO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGb3JiaWRkZW5UYWcoZWxlbWVudCkgJiYg
IWlzU2VydmVyUmVuZGVyaW5nKCkpIHtcbiAgICAgICAgZWxlbWVudC5mb3JiaWRkZW4gPSB0cnVl
O1xuICAgICAgICBcInByb2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4kMihcbiAg
ICAgICAgICAnVGVtcGxhdGVzIHNob3VsZCBvbmx5IGJlIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5n
IHRoZSBzdGF0ZSB0byB0aGUgJyArXG4gICAgICAgICAgJ1VJLiBBdm9pZCBwbGFjaW5nIHRhZ3Mg
d2l0aCBzaWRlLWVmZmVjdHMgaW4geW91ciB0ZW1wbGF0ZXMsIHN1Y2ggYXMgJyArXG4gICAgICAg
ICAgXCI8XCIgKyB0YWcgKyBcIj5cIiArICcsIGFzIHRoZXkgd2lsbCBub3QgYmUgcGFyc2VkLidc
biAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXBwbHkgcHJlLXRyYW5zZm9ybXNcbiAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlVHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xuICAg
ICAgICBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgfVxuXG4gICAg
ICBpZiAoIWluVlByZSkge1xuICAgICAgICBwcm9jZXNzUHJlKGVsZW1lbnQpO1xuICAgICAgICBp
ZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgICAgICBpblZQcmUgPSB0cnVlO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAgICAg
ICAgaW5QcmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGluVlByZSkge1xuICAgICAgICBw
cm9jZXNzUmF3QXR0cnMoZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNz
Rm9yKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nl
c3NPbmNlKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzS2V5KGVsZW1lbnQpO1xuXG4gICAgICAg
IC8vIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBwbGFpbiBlbGVtZW50IGFmdGVyXG4gICAg
ICAgIC8vIHJlbW92aW5nIHN0cnVjdHVyYWwgYXR0cmlidXRlc1xuICAgICAgICBlbGVtZW50LnBs
YWluID0gIWVsZW1lbnQua2V5ICYmICFhdHRycy5sZW5ndGg7XG5cbiAgICAgICAgcHJvY2Vzc1Jl
ZihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc1Nsb3QoZWxlbWVudCk7XG4gICAgICAgIHByb2Nl
c3NDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHRy
YW5zZm9ybXMubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgIHRyYW5zZm9ybXNbaSQxXShlbGVt
ZW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQXR0cnMoZWxlbWVudCk7
XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNoZWNrUm9vdENvbnN0cmFpbnRzIChlbCkge1xu
ICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBpZiAoZWwudGFnID09PSAnc2xvdCcgfHwg
ZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAg
ICAgICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+IGFzIGNvbXBvbmVudCByb290
IGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAgICAgICAnY29udGFpbiBtdWx0
aXBsZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAo
ZWwuYXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtcbiAgICAgICAgICAgIHdhcm5P
bmNlKFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0ZWZ1bCBjb21wb25l
bnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAgICAgICdpdCByZW5kZXJzIG11
bHRpcGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9
XG4gICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgICAgaWYgKCFyb290KSB7
XG4gICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhy
b290KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkge1xuICAgICAgICAvLyBhbGxv
dyByb290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFuZCB2LWVsc2VcbiAgICAgICAg
aWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkpIHtcbiAgICAg
ICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAgICBhZGRJZkNvbmRp
dGlvbihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQuZWxzZWlmLFxuICAgICAgICAg
ICAgYmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChmYWxz
ZSkge1xuICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJDb21wb25lbnQgdGVtcGxh
dGUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgcm9vdCBlbGVtZW50LiBcIiArXG4gICAgICAg
ICAgICBcIklmIHlvdSBhcmUgdXNpbmcgdi1pZiBvbiBtdWx0aXBsZSBlbGVtZW50cywgXCIgK1xu
ICAgICAgICAgICAgXCJ1c2Ugdi1lbHNlLWlmIHRvIGNoYWluIHRoZW0gaW5zdGVhZC5cIlxuICAg
ICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50UGFyZW50ICYm
ICFlbGVtZW50LmZvcmJpZGRlbikge1xuICAgICAgICBpZiAoZWxlbWVudC5lbHNlaWYgfHwgZWxl
bWVudC5lbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzc0lmQ29uZGl0aW9ucyhlbGVtZW50LCBjdXJy
ZW50UGFyZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnNsb3RTY29wZSkgeyAvLyBz
Y29wZWQgc2xvdFxuICAgICAgICAgIGN1cnJlbnRQYXJlbnQucGxhaW4gPSBmYWxzZTtcbiAgICAg
ICAgICB2YXIgbmFtZSA9IGVsZW1lbnQuc2xvdFRhcmdldCB8fCAnXCJkZWZhdWx0XCInOyhjdXJy
ZW50UGFyZW50LnNjb3BlZFNsb3RzIHx8IChjdXJyZW50UGFyZW50LnNjb3BlZFNsb3RzID0ge30p
KVtuYW1lXSA9IGVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFBh
cmVudC5jaGlsZHJlbi5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnQucGFyZW50ID0g
Y3VycmVudFBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF1bmFyeSkge1xu
ICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcbiAgICAgICAgc3RhY2sucHVzaChlbGVt
ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZFByZShlbGVtZW50KTtcbiAgICAgIH1c
biAgICAgIC8vIGFwcGx5IHBvc3QtdHJhbnNmb3Jtc1xuICAgICAgZm9yICh2YXIgaSQyID0gMDsg
aSQyIDwgcG9zdFRyYW5zZm9ybXMubGVuZ3RoOyBpJDIrKykge1xuICAgICAgICBwb3N0VHJhbnNm
b3Jtc1tpJDJdKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBlbmQ6
IGZ1bmN0aW9uIGVuZCAoKSB7XG4gICAgICAvLyByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZVxu
ICAgICAgdmFyIGVsZW1lbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBs
YXN0Tm9kZSA9IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXTtc
biAgICAgIGlmIChsYXN0Tm9kZSAmJiBsYXN0Tm9kZS50eXBlID09PSAzICYmIGxhc3ROb2RlLnRl
eHQgPT09ICcgJyAmJiAhaW5QcmUpIHtcbiAgICAgICAgZWxlbWVudC5jaGlsZHJlbi5wb3AoKTtc
biAgICAgIH1cbiAgICAgIC8vIHBvcCBzdGFja1xuICAgICAgc3RhY2subGVuZ3RoIC09IDE7XG4g
ICAgICBjdXJyZW50UGFyZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBlbmRQ
cmUoZWxlbWVudCk7XG4gICAgfSxcblxuICAgIGNoYXJzOiBmdW5jdGlvbiBjaGFycyAodGV4dCkg
e1xuICAgICAgaWYgKCFjdXJyZW50UGFyZW50KSB7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAg
ICAgICAgIGlmICh0ZXh0ID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoXG4g
ICAgICAgICAgICAgICdDb21wb25lbnQgdGVtcGxhdGUgcmVxdWlyZXMgYSByb290IGVsZW1lbnQs
IHJhdGhlciB0aGFuIGp1c3QgdGV4dC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxz
ZSBpZiAoKHRleHQgPSB0ZXh0LnRyaW0oKSkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAg
ICAgICAgICAgICAoXCJ0ZXh0IFxcXCJcIiArIHRleHQgKyBcIlxcXCIgb3V0c2lkZSByb290IGVs
ZW1lbnQgd2lsbCBiZSBpZ25vcmVkLlwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4g
ICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBJRSB0ZXh0YXJlYSBw
bGFjZWhvbGRlciBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYg
KGlzSUUgJiZcbiAgICAgICAgY3VycmVudFBhcmVudC50YWcgPT09ICd0ZXh0YXJlYScgJiZcbiAg
ICAgICAgY3VycmVudFBhcmVudC5hdHRyc01hcC5wbGFjZWhvbGRlciA9PT0gdGV4dFxuICAgICAg
KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuID0gY3VycmVu
dFBhcmVudC5jaGlsZHJlbjtcbiAgICAgIHRleHQgPSBpblByZSB8fCB0ZXh0LnRyaW0oKVxuICAg
ICAgICA/IGlzVGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQgOiBkZWNvZGVIVE1MQ2FjaGVk
KHRleHQpXG4gICAgICAgIC8vIG9ubHkgcHJlc2VydmUgd2hpdGVzcGFjZSBpZiBpdHMgbm90IHJp
Z2h0IGFmdGVyIGEgc3RhcnRpbmcgdGFnXG4gICAgICAgIDogcHJlc2VydmVXaGl0ZXNwYWNlICYm
IGNoaWxkcmVuLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAg
dmFyIGV4cHJlc3Npb247XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRleHQgIT09ICcgJyAmJiAo
ZXhwcmVzc2lvbiA9IHBhcnNlVGV4dCh0ZXh0LCBkZWxpbWl0ZXJzKSkpIHtcbiAgICAgICAgICBj
aGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4gICAgICAgICAgICBleHByZXNz
aW9uOiBleHByZXNzaW9uLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH0pO1xu
ICAgICAgICB9IGVsc2UgaWYgKHRleHQgIT09ICcgJyB8fCAhY2hpbGRyZW4ubGVuZ3RoIHx8IGNo
aWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnRleHQgIT09ICcgJykge1xuICAgICAgICAgIGNo
aWxkcmVuLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogMyxcbiAgICAgICAgICAgIHRleHQ6IHRl
eHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY29tbWVu
dDogZnVuY3Rpb24gY29tbWVudCAodGV4dCkge1xuICAgICAgY3VycmVudFBhcmVudC5jaGlsZHJl
bi5wdXNoKHtcbiAgICAgICAgdHlwZTogMyxcbiAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAg
aXNDb21tZW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxu
fVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihl
bCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbCA9IGVsLmF0dHJzTGlzdC5sZW5n
dGg7XG4gIGlmIChsKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobCk7
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGF0dHJzW2ldID0ge1xu
ICAgICAgICBuYW1lOiBlbC5hdHRyc0xpc3RbaV0ubmFtZSxcbiAgICAgICAgdmFsdWU6IEpTT04u
c3RyaW5naWZ5KGVsLmF0dHJzTGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgfVxuICB9IGVs
c2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0
aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9u
IHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScp
O1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB3YXJuJDIoXCI8dGVtcGxh
dGU+IGNhbm5vdCBiZSBrZXllZC4gUGxhY2UgdGhlIGtleSBvbiByZWFsIGVsZW1lbnRzIGluc3Rl
YWQuXCIpO1xuICAgIH1cbiAgICBlbC5rZXkgPSBleHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJv
Y2Vzc1JlZiAoZWwpIHtcbiAgdmFyIHJlZiA9IGdldEJpbmRpbmdBdHRyKGVsLCAncmVmJyk7XG4g
IGlmIChyZWYpIHtcbiAgICBlbC5yZWYgPSByZWY7XG4gICAgZWwucmVmSW5Gb3IgPSBjaGVja0lu
Rm9yKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRm9yIChlbCkge1xuICB2YXIgZXhw
O1xuICBpZiAoKGV4cCA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWZvcicpKSkge1xuICAgIHZh
ciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICAgIGlmICghaW5NYXRjaCkge1xu
ICAgICAgXCJwcm9kdWN0aW9uXCIgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAg
IChcIkludmFsaWQgdi1mb3IgZXhwcmVzc2lvbjogXCIgKyBleHApXG4gICAgICApO1xuICAgICAg
cmV0dXJuXG4gICAgfVxuICAgIGVsLmZvciA9IGluTWF0Y2hbMl0udHJpbSgpO1xuICAgIHZhciBh
bGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpO1xuICAgIHZhciBpdGVyYXRvck1hdGNoID0gYWxpYXMu
bWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICAgIGVs
LmFsaWFzID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgICBlbC5pdGVyYXRvcjEgPSBp
dGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIGlmIChpdGVyYXRvck1hdGNoWzNdKSB7XG4g
ICAgICAgIGVsLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0Y2hbM10udHJpbSgpO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICBlbC5hbGlhcyA9IGFsaWFzO1xuICAgIH1cbiAgfVxufVxuXG5m
dW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVs
LCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25k
aXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4g
IH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxs
KSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFu
ZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBl
bC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNv
bmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFy
ZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0
aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAg
fSk7XG4gIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICB3YXJuJDIoXG4gICAgICBcInYtXCIgKyAo
ZWwuZWxzZWlmID8gKCdlbHNlLWlmPVwiJyArIGVsLmVsc2VpZiArICdcIicpIDogJ2Vsc2UnKSAr
IFwiIFwiICtcbiAgICAgIFwidXNlZCBvbiBlbGVtZW50IDxcIiArIChlbC50YWcpICsgXCI+IHdp
dGhvdXQgY29ycmVzcG9uZGluZyB2LWlmLlwiXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBm
aW5kUHJldkVsZW1lbnQgKGNoaWxkcmVuKSB7XG4gIHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoO1xu
ICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKGNoaWxkcmVuW2ldLnR5cGUgPT09IDEpIHtcbiAgICAg
IHJldHVybiBjaGlsZHJlbltpXVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgICAgd2FybiQyKFxuICAgICAgICAgIFwidGV4dCBcXFwiXCIgKyAoY2hpbGRyZW5baV0udGV4
dC50cmltKCkpICsgXCJcXFwiIGJldHdlZW4gdi1pZiBhbmQgdi1lbHNlKC1pZikgXCIgK1xuICAg
ICAgICAgIFwid2lsbCBiZSBpZ25vcmVkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBj
aGlsZHJlbi5wb3AoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkSWZDb25kaXRpb24g
KGVsLCBjb25kaXRpb24pIHtcbiAgaWYgKCFlbC5pZkNvbmRpdGlvbnMpIHtcbiAgICBlbC5pZkNv
bmRpdGlvbnMgPSBbXTtcbiAgfVxuICBlbC5pZkNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xu
fVxuXG5mdW5jdGlvbiBwcm9jZXNzT25jZSAoZWwpIHtcbiAgdmFyIG9uY2UkJDEgPSBnZXRBbmRS
ZW1vdmVBdHRyKGVsLCAndi1vbmNlJyk7XG4gIGlmIChvbmNlJCQxICE9IG51bGwpIHtcbiAgICBl
bC5vbmNlID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzU2xvdCAoZWwpIHtcbiAg
aWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgZWwuc2xvdE5hbWUgPSBnZXRCaW5kaW5nQXR0
cihlbCwgJ25hbWUnKTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAg
XCJga2V5YCBkb2VzIG5vdCB3b3JrIG9uIDxzbG90PiBiZWNhdXNlIHNsb3RzIGFyZSBhYnN0cmFj
dCBvdXRsZXRzIFwiICtcbiAgICAgICAgXCJhbmQgY2FuIHBvc3NpYmx5IGV4cGFuZCBpbnRvIG11
bHRpcGxlIGVsZW1lbnRzLiBcIiArXG4gICAgICAgIFwiVXNlIHRoZSBrZXkgb24gYSB3cmFwcGlu
ZyBlbGVtZW50IGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZh
ciBzbG90VGFyZ2V0ID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzbG90Jyk7XG4gICAgaWYgKHNsb3RU
YXJnZXQpIHtcbiAgICAgIGVsLnNsb3RUYXJnZXQgPSBzbG90VGFyZ2V0ID09PSAnXCJcIicgPyAn
XCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtcbiAgICB9XG4gICAgaWYgKGVsLnRhZyA9PT0gJ3Rl
bXBsYXRlJykge1xuICAgICAgZWwuc2xvdFNjb3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nj
b3BlJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NDb21wb25lbnQgKGVsKSB7
XG4gIHZhciBiaW5kaW5nO1xuICBpZiAoKGJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2lz
JykpKSB7XG4gICAgZWwuY29tcG9uZW50ID0gYmluZGluZztcbiAgfVxuICBpZiAoZ2V0QW5kUmVt
b3ZlQXR0cihlbCwgJ2lubGluZS10ZW1wbGF0ZScpICE9IG51bGwpIHtcbiAgICBlbC5pbmxpbmVU
ZW1wbGF0ZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0F0dHJzIChlbCkge1xu
ICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgdmFyIGksIGwsIG5hbWUsIHJhd05hbWUsIHZh
bHVlLCBtb2RpZmllcnMsIGlzUHJvcDtcbiAgZm9yIChpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7XG4gICAgbmFtZSA9IHJhd05hbWUgPSBsaXN0W2ldLm5hbWU7XG4gICAgdmFs
dWUgPSBsaXN0W2ldLnZhbHVlO1xuICAgIGlmIChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAv
LyBtYXJrIGVsZW1lbnQgYXMgZHluYW1pY1xuICAgICAgZWwuaGFzQmluZGluZ3MgPSB0cnVlO1xu
ICAgICAgLy8gbW9kaWZpZXJzXG4gICAgICBtb2RpZmllcnMgPSBwYXJzZU1vZGlmaWVycyhuYW1l
KTtcbiAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSht
b2RpZmllclJFLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoYmluZFJFLnRlc3QobmFtZSkpIHsg
Ly8gdi1iaW5kXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoYmluZFJFLCAnJyk7XG4gICAg
ICAgIHZhbHVlID0gcGFyc2VGaWx0ZXJzKHZhbHVlKTtcbiAgICAgICAgaXNQcm9wID0gZmFsc2U7
XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3Ap
IHtcbiAgICAgICAgICAgIGlzUHJvcCA9IHRydWU7XG4gICAgICAgICAgICBuYW1lID0gY2FtZWxp
emUobmFtZSk7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2lubmVySHRtbCcpIHsgbmFtZSA9
ICdpbm5lckhUTUwnOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtb2RpZmllcnMuY2Ft
ZWwpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4g
ICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5jKSB7XG4gICAgICAgICAgICBhZGRIYW5kbGVyKFxu
ICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgKFwidXBkYXRlOlwiICsgKGNhbWVsaXpl
KG5hbWUpKSksXG4gICAgICAgICAgICAgIGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBcIiRldmVu
dFwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYg
KGlzUHJvcCB8fCAoXG4gICAgICAgICAgIWVsLmNvbXBvbmVudCAmJiBwbGF0Zm9ybU11c3RVc2VQ
cm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwgbmFtZSlcbiAgICAgICAgKSkge1xuICAgICAg
ICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAo
b25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShv
blJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRsZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmllcnMs
IGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcbiAg
ICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShkaXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJzZSBh
cmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0gbmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAgIHZh
ciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRjaFsxXTtcbiAgICAgICAgaWYgKGFyZykge1xuICAg
ICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0oYXJnLmxlbmd0aCArIDEpKTtcbiAgICAgICAg
fVxuICAgICAgICBhZGREaXJlY3RpdmUoZWwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBhcmcsIG1v
ZGlmaWVycyk7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIGNoZWNrRm9yQWxpYXNN
b2RlbChlbCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IC8vIGxpdGVyYWwgYXR0cmlidXRlXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgdmFyIGV4
cHJlc3Npb24gPSBwYXJzZVRleHQodmFsdWUsIGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhw
cmVzc2lvbikge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwi
XCIgKyB2YWx1ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5z
aWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYt
YmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAg
ICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgaWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpp
ZD1cInZhbFwiPi4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRk
QXR0cihlbCwgbmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxu
ZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAo
cGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0
dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1
cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1h
dGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJl
dCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSld
ID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRy
c01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0
dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIGZhbHNlXG4gICAgKSB7
XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtc
biAgICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gIH1cbiAg
cmV0dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChlLmcuIHR5cGU9XCJ4L3RlbXBsYXRlXCIp
IG9yIHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRcbmZ1bmN0aW9uIGlzVGV4dFRhZyAoZWwp
IHtcbiAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcgfHwgZWwudGFnID09PSAnc3R5bGUnXG59
XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkge1xuICByZXR1cm4gKFxuICAgIGVsLnRh
ZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09ICdzY3JpcHQnICYmIChcbiAgICAgICFl
bC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRyc01hcC50eXBlID09PSAndGV4dC9qYXZh
c2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGllTlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87
XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRycykge1xuICB2YXIgcmVzID0gW107XG4g
IGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXR0ciA9
IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0
dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQcmVmaXgsICcnKTtcbiAgICAgIHJlcy5w
dXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNr
Rm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZhciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9l
bCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlhcyA9PT0gdmFsdWUpIHtcbiAgICAgIHdh
cm4kMihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSArIFwiIHYtbW9kZWw9XFxcIlwiICsgdmFs
dWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGly
ZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMuIFwiICtcbiAgICAgICAgXCJUaGlzIHdp
bGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZvciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBc
IiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxpYXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBm
dW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAgICAgICBcIkNvbnNpZGVyIHVzaW5nIGFu
IGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVsIG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBp
bnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBfZWwgPSBfZWwucGFyZW50O1xuICB9XG59
XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFn
O1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xu
XG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBs
YXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3Rh
dGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdl
LlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAq
IDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQg
dG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtc
biAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICov
XG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0
dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGlj
S2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZl
ZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5c
biAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9v
dHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0
YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0
cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycycgK1xuICAgIChrZXlz
ID8gJywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWMkMSAobm9k
ZSkge1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5vZGUpO1xuICBpZiAobm9kZS50eXBlID09
PSAxKSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9uZW50IHNsb3QgY29udGVudCBzdGF0aWMu
IHRoaXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50cyBub3QgYWJsZSB0byBtdXRhdGUgc2xv
dCBub2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNvbnRlbnQgZmFpbHMgZm9yIGhvdC1yZWxv
YWRpbmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAm
JlxuICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxuICAgICAgbm9kZS5hdHRyc01hcFsnaW5s
aW5lLXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAg
IGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtc
biAgICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICBtYXJrU3RhdGljJDEo
Y2hpbGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMpIHtcbiAgICAgICAgbm9kZS5zdGF0aWMg
PSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuaWZDb25kaXRpb25zKSB7XG4g
ICAgICBmb3IgKHZhciBpJDEgPSAxLCBsJDEgPSBub2RlLmlmQ29uZGl0aW9ucy5sZW5ndGg7IGkk
MSA8IGwkMTsgaSQxKyspIHtcbiAgICAgICAgdmFyIGJsb2NrID0gbm9kZS5pZkNvbmRpdGlvbnNb
aSQxXS5ibG9jaztcbiAgICAgICAgbWFya1N0YXRpYyQxKGJsb2NrKTtcbiAgICAgICAgaWYgKCFi
bG9jay5zdGF0aWMpIHtcbiAgICAgICAgICBub2RlLnN0YXRpYyA9IGZhbHNlO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWNSb290cyAobm9k
ZSwgaXNJbkZvcikge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgaWYgKG5vZGUuc3Rh
dGljIHx8IG5vZGUub25jZSkge1xuICAgICAgbm9kZS5zdGF0aWNJbkZvciA9IGlzSW5Gb3I7XG4g
ICAgfVxuICAgIC8vIEZvciBhIG5vZGUgdG8gcXVhbGlmeSBhcyBhIHN0YXRpYyByb290LCBpdCBz
aG91bGQgaGF2ZSBjaGlsZHJlbiB0aGF0XG4gICAgLy8gYXJlIG5vdCBqdXN0IHN0YXRpYyB0ZXh0
LiBPdGhlcndpc2UgdGhlIGNvc3Qgb2YgaG9pc3Rpbmcgb3V0IHdpbGxcbiAgICAvLyBvdXR3ZWln
aCB0aGUgYmVuZWZpdHMgYW5kIGl0J3MgYmV0dGVyIG9mZiB0byBqdXN0IGFsd2F5cyByZW5kZXIg
aXQgZnJlc2guXG4gICAgaWYgKG5vZGUuc3RhdGljICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoICYm
ICEoXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgbm9kZS5jaGls
ZHJlblswXS50eXBlID09PSAzXG4gICAgKSkge1xuICAgICAgbm9kZS5zdGF0aWNSb290ID0gdHJ1
ZTtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnN0YXRpY1Jvb3QgPSBm
YWxzZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkg
PSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgbWFy
a1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlzSW5Gb3IgfHwgISFub2RlLmZvcik7XG4g
ICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29uZGl0aW9ucykge1xuICAgICAgZm9yICh2
YXIgaSQxID0gMSwgbCQxID0gbm9kZS5pZkNvbmRpdGlvbnMubGVuZ3RoOyBpJDEgPCBsJDE7IGkk
MSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290cyhub2RlLmlmQ29uZGl0aW9uc1tpJDFdLmJs
b2NrLCBpc0luRm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdGF0
aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMikgeyAvLyBleHByZXNzaW9uXG4gICAg
cmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gMykgeyAvLyB0ZXh0XG4gICAg
cmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9kZS5wcmUgfHwgKFxuICAgICFub2RlLmhh
c0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGluZ3NcbiAgICAhbm9kZS5pZiAmJiAhbm9k
ZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Igdi1lbHNlXG4gICAgIWlzQnVpbHRJblRh
Zyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5cbiAgICBpc1BsYXRmb3JtUmVzZXJ2ZWRU
YWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVudFxuICAgICFpc0RpcmVjdENoaWxkT2ZU
ZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5rZXlzKG5vZGUpLmV2ZXJ5KGlzU3RhdGlj
S2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvciAobm9k
ZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4g
ICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAg
ICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxu
ICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZhciBmbkV4cFJFID0gL15cXHMqKFtcXHck
X10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKlxcKC87XG52YXIgc2ltcGxlUGF0
aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpcXC5bQS1aYS16XyRdW1xcdyRdKnxcXFsn
Lio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSpcXHMqJC87
XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxuICB0
YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3
LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtcblxu
Ly8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbGlz
dGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1cm4gbnVsbCBzbyB0aGF0IHdlIGNhbiBk
ZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRoZSBsaXN0ZW5lciBmb3IgLm9uY2VcbnZh
ciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHsgcmV0dXJuIChcImlmKFwiICsgY29u
ZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xuXG52YXIgbW9kaWZpZXJDb2RlID0ge1xu
ICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOycsXG4gIHByZXZlbnQ6ICckZXZlbnQu
cHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5HdWFyZChcIiRldmVudC50YXJnZXQgIT09
ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJsOiBnZW5HdWFyZChcIiEkZXZlbnQuY3Ry
bEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRldmVudC5zaGlmdEtleVwiKSxcbiAgYWx0
OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxuICBtZXRhOiBnZW5HdWFyZChcIiEkZXZl
bnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYg
JGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxlOiBnZW5HdWFyZChcIididXR0b24nIGlu
ICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLFxuICByaWdodDogZ2VuR3VhcmQoXCIn
YnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMlwiKVxufTtcblxuZnVuY3Rp
b24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlzTmF0aXZlLFxuICB3YXJuXG4pIHtcbiAg
dmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsnIDogJ29uOnsnO1xuICBmb3IgKHZhciBu
YW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyID0gZXZlbnRzW25hbWVdO1xuICAgIC8v
ICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSByaWdodCBjbGlja3MgZG8gbm90IGFjdHVh
bGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChmYWxzZVxuICAgICkge1xuICAgICAgd2Fy
bihcbiAgICAgICAgXCJVc2UgXFxcImNvbnRleHRtZW51XFxcIiBpbnN0ZWFkIG9mIFxcXCJjbGlj
ay5yaWdodFxcXCIgc2luY2UgcmlnaHQgY2xpY2tzIFwiICtcbiAgICAgICAgXCJkbyBub3QgYWN0
dWFsbHkgZmlyZSBcXFwiY2xpY2tcXFwiIGV2ZW50cy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAg
cmVzICs9IFwiXFxcIlwiICsgbmFtZSArIFwiXFxcIjpcIiArIChnZW5IYW5kbGVyKG5hbWUsIGhh
bmRsZXIpKSArIFwiLFwiO1xuICB9XG4gIHJldHVybiByZXMuc2xpY2UoMCwgLTEpICsgJ30nXG59
XG5cbmZ1bmN0aW9uIGdlbkhhbmRsZXIgKFxuICBuYW1lLFxuICBoYW5kbGVyXG4pIHtcbiAgaWYg
KCFoYW5kbGVyKSB7XG4gICAgcmV0dXJuICdmdW5jdGlvbigpe30nXG4gIH1cblxuICBpZiAoQXJy
YXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgIHJldHVybiAoXCJbXCIgKyAoaGFuZGxlci5tYXAo
ZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcik7IH0p
LmpvaW4oJywnKSkgKyBcIl1cIilcbiAgfVxuXG4gIHZhciBpc01ldGhvZFBhdGggPSBzaW1wbGVQ
YXRoUkUudGVzdChoYW5kbGVyLnZhbHVlKTtcbiAgdmFyIGlzRnVuY3Rpb25FeHByZXNzaW9uID0g
Zm5FeHBSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuXG4gIGlmICghaGFuZGxlci5tb2RpZmllcnMp
IHtcbiAgICByZXR1cm4gaXNNZXRob2RQYXRoIHx8IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAg
ICA/IGhhbmRsZXIudmFsdWVcbiAgICAgIDogKFwiZnVuY3Rpb24oJGV2ZW50KXtcIiArIChoYW5k
bGVyLnZhbHVlKSArIFwifVwiKSAvLyBpbmxpbmUgc3RhdGVtZW50XG4gIH0gZWxzZSB7XG4gICAg
dmFyIGNvZGUgPSAnJztcbiAgICB2YXIgZ2VuTW9kaWZpZXJDb2RlID0gJyc7XG4gICAgdmFyIGtl
eXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICAg
IGlmIChtb2RpZmllckNvZGVba2V5XSkge1xuICAgICAgICBnZW5Nb2RpZmllckNvZGUgKz0gbW9k
aWZpZXJDb2RlW2tleV07XG4gICAgICAgIC8vIGxlZnQvcmlnaHRcbiAgICAgICAgaWYgKGtleUNv
ZGVzW2tleV0pIHtcbiAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAg
fSBlbHNlIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlm
IChrZXlzLmxlbmd0aCkge1xuICAgICAgY29kZSArPSBnZW5LZXlGaWx0ZXIoa2V5cyk7XG4gICAg
fVxuICAgIC8vIE1ha2Ugc3VyZSBtb2RpZmllcnMgbGlrZSBwcmV2ZW50IGFuZCBzdG9wIGdldCBl
eGVjdXRlZCBhZnRlciBrZXkgZmlsdGVyaW5nXG4gICAgaWYgKGdlbk1vZGlmaWVyQ29kZSkge1xu
ICAgICAgY29kZSArPSBnZW5Nb2RpZmllckNvZGU7XG4gICAgfVxuICAgIHZhciBoYW5kbGVyQ29k
ZSA9IGlzTWV0aG9kUGF0aFxuICAgICAgPyBoYW5kbGVyLnZhbHVlICsgJygkZXZlbnQpJ1xuICAg
ICAgOiBpc0Z1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgICA/IChcIihcIiArIChoYW5kbGVyLnZh
bHVlKSArIFwiKSgkZXZlbnQpXCIpXG4gICAgICAgIDogaGFuZGxlci52YWx1ZTtcbiAgICByZXR1
cm4gKFwiZnVuY3Rpb24oJGV2ZW50KXtcIiArIGNvZGUgKyBoYW5kbGVyQ29kZSArIFwifVwiKVxu
ICB9XG59XG5cbmZ1bmN0aW9uIGdlbktleUZpbHRlciAoa2V5cykge1xuICByZXR1cm4gKFwiaWYo
ISgnYnV0dG9uJyBpbiAkZXZlbnQpJiZcIiArIChrZXlzLm1hcChnZW5GaWx0ZXJDb2RlKS5qb2lu
KCcmJicpKSArIFwiKXJldHVybiBudWxsO1wiKVxufVxuXG5mdW5jdGlvbiBnZW5GaWx0ZXJDb2Rl
IChrZXkpIHtcbiAgdmFyIGtleVZhbCA9IHBhcnNlSW50KGtleSwgMTApO1xuICBpZiAoa2V5VmFs
KSB7XG4gICAgcmV0dXJuIChcIiRldmVudC5rZXlDb2RlIT09XCIgKyBrZXlWYWwpXG4gIH1cbiAg
dmFyIGFsaWFzID0ga2V5Q29kZXNba2V5XTtcbiAgcmV0dXJuIChcIl9rKCRldmVudC5rZXlDb2Rl
LFwiICsgKEpTT04uc3RyaW5naWZ5KGtleSkpICsgKGFsaWFzID8gJywnICsgSlNPTi5zdHJpbmdp
ZnkoYWxpYXMpIDogJycpICsgXCIpXCIpXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBvbiAoZWws
IGRpcikge1xuICBpZiAoZmFsc2UpIHtcbiAgICB3YXJuKFwidi1vbiB3aXRob3V0IGFyZ3VtZW50
IGRvZXMgbm90IHN1cHBvcnQgbW9kaWZpZXJzLlwiKTtcbiAgfVxuICBlbC53cmFwTGlzdGVuZXJz
ID0gZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChcIl9nKFwiICsgY29kZSArIFwiLFwiICsgKGRp
ci52YWx1ZSkgKyBcIilcIik7IH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kJDEgKGVs
LCBkaXIpIHtcbiAgZWwud3JhcERhdGEgPSBmdW5jdGlvbiAoY29kZSkge1xuICAgIHJldHVybiAo
XCJfYihcIiArIGNvZGUgKyBcIiwnXCIgKyAoZWwudGFnKSArIFwiJyxcIiArIChkaXIudmFsdWUp
ICsgXCIsXCIgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnByb3AgPyAndHJ1ZScg
OiAnZmFsc2UnKSArIChkaXIubW9kaWZpZXJzICYmIGRpci5tb2RpZmllcnMuc3luYyA/ICcsdHJ1
ZScgOiAnJykgKyBcIilcIilcbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBiYXNlRGlyZWN0aXZl
cyA9IHtcbiAgb246IG9uLFxuICBiaW5kOiBiaW5kJDEsXG4gIGNsb2FrOiBub29wXG59O1xuXG4v
KiAgKi9cblxudmFyIENvZGVnZW5TdGF0ZSA9IGZ1bmN0aW9uIENvZGVnZW5TdGF0ZSAob3B0aW9u
cykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLndhcm4gPSBvcHRpb25zLndh
cm4gfHwgYmFzZVdhcm47XG4gIHRoaXMudHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24o
b3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICB0aGlzLmRhdGFHZW5GbnMgPSBw
bHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgdGhpcy5k
aXJlY3RpdmVzID0gZXh0ZW5kKGV4dGVuZCh7fSwgYmFzZURpcmVjdGl2ZXMpLCBvcHRpb25zLmRp
cmVjdGl2ZXMpO1xuICB2YXIgaXNSZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8
fCBubztcbiAgdGhpcy5tYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWlz
UmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcbiAgdGhpcy5vbmNlSWQgPSAwO1xuICB0aGlzLnN0YXRp
Y1JlbmRlckZucyA9IFtdO1xufTtcblxuXG5cbmZ1bmN0aW9uIGdlbmVyYXRlIChcbiAgYXN0LFxu
ICBvcHRpb25zXG4pIHtcbiAgdmFyIHN0YXRlID0gbmV3IENvZGVnZW5TdGF0ZShvcHRpb25zKTtc
biAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCwgc3RhdGUpIDogJ19jKFwiZGl2XCIp
JztcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgY29k
ZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRlLnN0YXRpY1JlbmRlckZuc1xu
ICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsLCBzdGF0ZSkge1xuICBpZiAoZWwuc3Rh
dGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlblN0YXRpYyhl
bCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwub25jZVByb2Nlc3NlZCkge1xu
ICAgIHJldHVybiBnZW5PbmNlKGVsLCBzdGF0ZSlcbiAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVs
LmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwsIHN0YXRlKVxuICB9IGVsc2Ug
aWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3Rh
dGUpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0
KSB7XG4gICAgcmV0dXJuIGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSkgfHwgJ3ZvaWQgMCdcbiAgfSBl
bHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIHJldHVybiBnZW5TbG90KGVsLCBzdGF0
ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyBjb21wb25lbnQgb3IgZWxlbWVudFxuICAgIHZhciBjb2Rl
O1xuICAgIGlmIChlbC5jb21wb25lbnQpIHtcbiAgICAgIGNvZGUgPSBnZW5Db21wb25lbnQoZWwu
Y29tcG9uZW50LCBlbCwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZGF0YSA9IGVs
LnBsYWluID8gdW5kZWZpbmVkIDogZ2VuRGF0YSQyKGVsLCBzdGF0ZSk7XG5cbiAgICAgIHZhciBj
aGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8gbnVsbCA6IGdlbkNoaWxkcmVuKGVsLCBzdGF0
ZSwgdHJ1ZSk7XG4gICAgICBjb2RlID0gXCJfYygnXCIgKyAoZWwudGFnKSArIFwiJ1wiICsgKGRh
dGEgPyAoXCIsXCIgKyBkYXRhKSA6ICcnKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVu
KSA6ICcnKSArIFwiKVwiO1xuICAgIH1cbiAgICAvLyBtb2R1bGUgdHJhbnNmb3Jtc1xuICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc3RhdGUudHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xuICAgICAg
Y29kZSA9IHN0YXRlLnRyYW5zZm9ybXNbaV0oZWwsIGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4g
Y29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRpYyBzdWItdHJlZXMgb3V0XG5mdW5jdGlvbiBn
ZW5TdGF0aWMgKGVsLCBzdGF0ZSkge1xuICBlbC5zdGF0aWNQcm9jZXNzZWQgPSB0cnVlO1xuICBz
dGF0ZS5zdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIChnZW5F
bGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCIpKTtcbiAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRl
LnN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSArIChlbC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScg
OiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNlXG5mdW5jdGlvbiBnZW5PbmNlIChlbCwgc3Rh
dGUpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRydWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQ
cm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVs
LnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5w
YXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAg
ICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBh
cmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBcInBy
b2R1Y3Rpb25cIiAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRlLndhcm4oXG4gICAgICAgIFwidi1v
bmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQgaXMga2V5ZWQuIFwiXG4gICAg
ICApO1xuICAgICAgcmV0dXJuIGdlbkVsZW1lbnQoZWwsIHN0YXRlKVxuICAgIH1cbiAgICByZXR1
cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVudChlbCwgc3RhdGUpKSArIFwiLFwiICsgKHN0YXRlLm9u
Y2VJZCsrKSArIChrZXkgPyAoXCIsXCIgKyBrZXkpIDogXCJcIikgKyBcIilcIilcbiAgfSBlbHNl
IHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsLCBzdGF0ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBn
ZW5JZiAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGVs
LmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBnZW5JZkNv
bmRpdGlvbnMoZWwuaWZDb25kaXRpb25zLnNsaWNlKCksIHN0YXRlLCBhbHRHZW4sIGFsdEVtcHR5
KVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMgKFxuICBjb25kaXRpb25zLFxuICBzdGF0
ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGlmICghY29uZGl0aW9ucy5sZW5ndGgp
IHtcbiAgICByZXR1cm4gYWx0RW1wdHkgfHwgJ19lKCknXG4gIH1cblxuICB2YXIgY29uZGl0aW9u
ID0gY29uZGl0aW9ucy5zaGlmdCgpO1xuICBpZiAoY29uZGl0aW9uLmV4cCkge1xuICAgIHJldHVy
biAoXCIoXCIgKyAoY29uZGl0aW9uLmV4cCkgKyBcIik/XCIgKyAoZ2VuVGVybmFyeUV4cChjb25k
aXRpb24uYmxvY2spKSArIFwiOlwiICsgKGdlbklmQ29uZGl0aW9ucyhjb25kaXRpb25zLCBzdGF0
ZSwgYWx0R2VuLCBhbHRFbXB0eSkpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIChn
ZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpKVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYt
b25jZSBzaG91bGQgZ2VuZXJhdGUgY29kZSBsaWtlIChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlv
biBnZW5UZXJuYXJ5RXhwIChlbCkge1xuICAgIHJldHVybiBhbHRHZW5cbiAgICAgID8gYWx0R2Vu
KGVsLCBzdGF0ZSlcbiAgICAgIDogZWwub25jZVxuICAgICAgICA/IGdlbk9uY2UoZWwsIHN0YXRl
KVxuICAgICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdl
bkZvciAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRIZWxwZXJcbikge1xuICB2
YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9y
MSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIg
aXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7
XG5cbiAgaWYgKGZhbHNlXG4gICkge1xuICAgIHN0YXRlLndhcm4oXG4gICAgICBcIjxcIiArIChl
bC50YWcpICsgXCIgdi1mb3I9XFxcIlwiICsgYWxpYXMgKyBcIiBpbiBcIiArIGV4cCArIFwiXFxc
Ij46IGNvbXBvbmVudCBsaXN0cyByZW5kZXJlZCB3aXRoIFwiICtcbiAgICAgIFwidi1mb3Igc2hv
dWxkIGhhdmUgZXhwbGljaXQga2V5cy4gXCIgK1xuICAgICAgXCJTZWUgaHR0cHM6Ly92dWVqcy5v
cmcvZ3VpZGUvbGlzdC5odG1sI2tleSBmb3IgbW9yZSBpbmZvLlwiLFxuICAgICAgdHJ1ZSAvKiB0
aXAgKi9cbiAgICApO1xuICB9XG5cbiAgZWwuZm9yUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQg
cmVjdXJzaW9uXG4gIHJldHVybiAoYWx0SGVscGVyIHx8ICdfbCcpICsgXCIoKFwiICsgZXhwICsg
XCIpLFwiICtcbiAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMgKyBpdGVyYXRvcjEgKyBpdGVyYXRv
cjIgKyBcIil7XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAoKGFsdEdlbiB8fCBnZW5FbGVtZW50
KShlbCwgc3RhdGUpKSArXG4gICAgJ30pJ1xufVxuXG5mdW5jdGlvbiBnZW5EYXRhJDIgKGVsLCBz
dGF0ZSkge1xuICB2YXIgZGF0YSA9ICd7JztcblxuICAvLyBkaXJlY3RpdmVzIGZpcnN0LlxuICAv
LyBkaXJlY3RpdmVzIG1heSBtdXRhdGUgdGhlIGVsJ3Mgb3RoZXIgcHJvcGVydGllcyBiZWZvcmUg
dGhleSBhcmUgZ2VuZXJhdGVkLlxuICB2YXIgZGlycyA9IGdlbkRpcmVjdGl2ZXMoZWwsIHN0YXRl
KTtcbiAgaWYgKGRpcnMpIHsgZGF0YSArPSBkaXJzICsgJywnOyB9XG5cbiAgLy8ga2V5XG4gIGlm
IChlbC5rZXkpIHtcbiAgICBkYXRhICs9IFwia2V5OlwiICsgKGVsLmtleSkgKyBcIixcIjtcbiAg
fVxuICAvLyByZWZcbiAgaWYgKGVsLnJlZikge1xuICAgIGRhdGEgKz0gXCJyZWY6XCIgKyAoZWwu
cmVmKSArIFwiLFwiO1xuICB9XG4gIGlmIChlbC5yZWZJbkZvcikge1xuICAgIGRhdGEgKz0gXCJy
ZWZJbkZvcjp0cnVlLFwiO1xuICB9XG4gIC8vIHByZVxuICBpZiAoZWwucHJlKSB7XG4gICAgZGF0
YSArPSBcInByZTp0cnVlLFwiO1xuICB9XG4gIC8vIHJlY29yZCBvcmlnaW5hbCB0YWcgbmFtZSBm
b3IgY29tcG9uZW50cyB1c2luZyBcImlzXCIgYXR0cmlidXRlXG4gIGlmIChlbC5jb21wb25lbnQp
IHtcbiAgICBkYXRhICs9IFwidGFnOlxcXCJcIiArIChlbC50YWcpICsgXCJcXFwiLFwiO1xuICB9
XG4gIC8vIG1vZHVsZSBkYXRhIGdlbmVyYXRpb24gZnVuY3Rpb25zXG4gIGZvciAodmFyIGkgPSAw
OyBpIDwgc3RhdGUuZGF0YUdlbkZucy5sZW5ndGg7IGkrKykge1xuICAgIGRhdGEgKz0gc3RhdGUu
ZGF0YUdlbkZuc1tpXShlbCk7XG4gIH1cbiAgLy8gYXR0cmlidXRlc1xuICBpZiAoZWwuYXR0cnMp
IHtcbiAgICBkYXRhICs9IFwiYXR0cnM6e1wiICsgKGdlblByb3BzKGVsLmF0dHJzKSkgKyBcIn0s
XCI7XG4gIH1cbiAgLy8gRE9NIHByb3BzXG4gIGlmIChlbC5wcm9wcykge1xuICAgIGRhdGEgKz0g
XCJkb21Qcm9wczp7XCIgKyAoZ2VuUHJvcHMoZWwucHJvcHMpKSArIFwifSxcIjtcbiAgfVxuICAv
LyBldmVudCBoYW5kbGVyc1xuICBpZiAoZWwuZXZlbnRzKSB7XG4gICAgZGF0YSArPSAoZ2VuSGFu
ZGxlcnMoZWwuZXZlbnRzLCBmYWxzZSwgc3RhdGUud2FybikpICsgXCIsXCI7XG4gIH1cbiAgaWYg
KGVsLm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLm5hdGl2ZUV2
ZW50cywgdHJ1ZSwgc3RhdGUud2FybikpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRc
biAgaWYgKGVsLnNsb3RUYXJnZXQpIHtcbiAgICBkYXRhICs9IFwic2xvdDpcIiArIChlbC5zbG90
VGFyZ2V0KSArIFwiLFwiO1xuICB9XG4gIC8vIHNjb3BlZCBzbG90c1xuICBpZiAoZWwuc2NvcGVk
U2xvdHMpIHtcbiAgICBkYXRhICs9IChnZW5TY29wZWRTbG90cyhlbC5zY29wZWRTbG90cywgc3Rh
dGUpKSArIFwiLFwiO1xuICB9XG4gIC8vIGNvbXBvbmVudCB2LW1vZGVsXG4gIGlmIChlbC5tb2Rl
bCkge1xuICAgIGRhdGEgKz0gXCJtb2RlbDp7dmFsdWU6XCIgKyAoZWwubW9kZWwudmFsdWUpICsg
XCIsY2FsbGJhY2s6XCIgKyAoZWwubW9kZWwuY2FsbGJhY2spICsgXCIsZXhwcmVzc2lvbjpcIiAr
IChlbC5tb2RlbC5leHByZXNzaW9uKSArIFwifSxcIjtcbiAgfVxuICAvLyBpbmxpbmUtdGVtcGxh
dGVcbiAgaWYgKGVsLmlubGluZVRlbXBsYXRlKSB7XG4gICAgdmFyIGlubGluZVRlbXBsYXRlID0g
Z2VuSW5saW5lVGVtcGxhdGUoZWwsIHN0YXRlKTtcbiAgICBpZiAoaW5saW5lVGVtcGxhdGUpIHtc
biAgICAgIGRhdGEgKz0gaW5saW5lVGVtcGxhdGUgKyBcIixcIjtcbiAgICB9XG4gIH1cbiAgZGF0
YSA9IGRhdGEucmVwbGFjZSgvLCQvLCAnJykgKyAnfSc7XG4gIC8vIHYtYmluZCBkYXRhIHdyYXBc
biAgaWYgKGVsLndyYXBEYXRhKSB7XG4gICAgZGF0YSA9IGVsLndyYXBEYXRhKGRhdGEpO1xuICB9
XG4gIC8vIHYtb24gZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwTGlzdGVuZXJzKSB7XG4gICAgZGF0
YSA9IGVsLndyYXBMaXN0ZW5lcnMoZGF0YSk7XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVu
Y3Rpb24gZ2VuRGlyZWN0aXZlcyAoZWwsIHN0YXRlKSB7XG4gIHZhciBkaXJzID0gZWwuZGlyZWN0
aXZlcztcbiAgaWYgKCFkaXJzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSAnZGlyZWN0aXZlczpb
JztcbiAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcbiAgdmFyIGksIGwsIGRpciwgbmVlZFJ1bnRp
bWU7XG4gIGZvciAoaSA9IDAsIGwgPSBkaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGRp
ciA9IGRpcnNbaV07XG4gICAgbmVlZFJ1bnRpbWUgPSB0cnVlO1xuICAgIHZhciBnZW4gPSBzdGF0
ZS5kaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBjb21waWxl
LXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0dXJucyB0
cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAgbmVlZFJ1
bnRpbWUgPSAhIWdlbihlbCwgZGlyLCBzdGF0ZS53YXJuKTtcbiAgICB9XG4gICAgaWYgKG5lZWRS
dW50aW1lKSB7XG4gICAgICBoYXNSdW50aW1lID0gdHJ1ZTtcbiAgICAgIHJlcyArPSBcIntuYW1l
OlxcXCJcIiArIChkaXIubmFtZSkgKyBcIlxcXCIscmF3TmFtZTpcXFwiXCIgKyAoZGlyLnJhd05h
bWUpICsgXCJcXFwiXCIgKyAoZGlyLnZhbHVlID8gKFwiLHZhbHVlOihcIiArIChkaXIudmFsdWUp
ICsgXCIpLGV4cHJlc3Npb246XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLnZhbHVlKSkpIDogJycp
ICsgKGRpci5hcmcgPyAoXCIsYXJnOlxcXCJcIiArIChkaXIuYXJnKSArIFwiXFxcIlwiKSA6ICcn
KSArIChkaXIubW9kaWZpZXJzID8gKFwiLG1vZGlmaWVyczpcIiArIChKU09OLnN0cmluZ2lmeShk
aXIubW9kaWZpZXJzKSkpIDogJycpICsgXCJ9LFwiO1xuICAgIH1cbiAgfVxuICBpZiAoaGFzUnVu
dGltZSkge1xuICAgIHJldHVybiByZXMuc2xpY2UoMCwgLTEpICsgJ10nXG4gIH1cbn1cblxuZnVu
Y3Rpb24gZ2VuSW5saW5lVGVtcGxhdGUgKGVsLCBzdGF0ZSkge1xuICB2YXIgYXN0ID0gZWwuY2hp
bGRyZW5bMF07XG4gIGlmIChmYWxzZSkge1xuICAgIHN0YXRlLndhcm4oJ0lubGluZS10ZW1wbGF0
ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50LicpO1xuICB9
XG4gIGlmIChhc3QudHlwZSA9PT0gMSkge1xuICAgIHZhciBpbmxpbmVSZW5kZXJGbnMgPSBnZW5l
cmF0ZShhc3QsIHN0YXRlLm9wdGlvbnMpO1xuICAgIHJldHVybiAoXCJpbmxpbmVUZW1wbGF0ZTp7
cmVuZGVyOmZ1bmN0aW9uKCl7XCIgKyAoaW5saW5lUmVuZGVyRm5zLnJlbmRlcikgKyBcIn0sc3Rh
dGljUmVuZGVyRm5zOltcIiArIChpbmxpbmVSZW5kZXJGbnMuc3RhdGljUmVuZGVyRm5zLm1hcChm
dW5jdGlvbiAoY29kZSkgeyByZXR1cm4gKFwiZnVuY3Rpb24oKXtcIiArIGNvZGUgKyBcIn1cIik7
IH0pLmpvaW4oJywnKSkgKyBcIl19XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuU2NvcGVkU2xv
dHMgKFxuICBzbG90cyxcbiAgc3RhdGVcbikge1xuICByZXR1cm4gKFwic2NvcGVkU2xvdHM6X3Uo
W1wiICsgKE9iamVjdC5rZXlzKHNsb3RzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0
dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90c1trZXldLCBzdGF0ZSlcbiAgICB9KS5qb2luKCcs
JykpICsgXCJdKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90IChcbiAga2V5LFxuICBl
bCxcbiAgc3RhdGVcbikge1xuICBpZiAoZWwuZm9yICYmICFlbC5mb3JQcm9jZXNzZWQpIHtcbiAg
ICByZXR1cm4gZ2VuRm9yU2NvcGVkU2xvdChrZXksIGVsLCBzdGF0ZSlcbiAgfVxuICByZXR1cm4g
XCJ7a2V5OlwiICsga2V5ICsgXCIsZm46ZnVuY3Rpb24oXCIgKyAoU3RyaW5nKGVsLmF0dHJzTWFw
LnNjb3BlKSkgKyBcIil7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKGVsLnRhZyA9PT0gJ3RlbXBs
YXRlJ1xuICAgICAgPyBnZW5DaGlsZHJlbihlbCwgc3RhdGUpIHx8ICd2b2lkIDAnXG4gICAgICA6
IGdlbkVsZW1lbnQoZWwsIHN0YXRlKSkgKyBcIn19XCJcbn1cblxuZnVuY3Rpb24gZ2VuRm9yU2Nv
cGVkU2xvdCAoXG4gIGtleSxcbiAgZWwsXG4gIHN0YXRlXG4pIHtcbiAgdmFyIGV4cCA9IGVsLmZv
cjtcbiAgdmFyIGFsaWFzID0gZWwuYWxpYXM7XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRv
cjEgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3IxKSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVs
Lml0ZXJhdG9yMiA/IChcIixcIiArIChlbC5pdGVyYXRvcjIpKSA6ICcnO1xuICBlbC5mb3JQcm9j
ZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1cnNpb25cbiAgcmV0dXJuIFwiX2woKFwiICsgZXhw
ICsgXCIpLFwiICtcbiAgICBcImZ1bmN0aW9uKFwiICsgYWxpYXMgKyBpdGVyYXRvcjEgKyBpdGVy
YXRvcjIgKyBcIil7XCIgK1xuICAgICAgXCJyZXR1cm4gXCIgKyAoZ2VuU2NvcGVkU2xvdChrZXks
IGVsLCBzdGF0ZSkpICtcbiAgICAnfSknXG59XG5cbmZ1bmN0aW9uIGdlbkNoaWxkcmVuIChcbiAg
ZWwsXG4gIHN0YXRlLFxuICBjaGVja1NraXAsXG4gIGFsdEdlbkVsZW1lbnQsXG4gIGFsdEdlbk5v
ZGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxl
bmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hpbGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUgc2lu
Z2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwkMS5m
b3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRhZyAh
PT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICByZXR1cm4gKGFsdEdlbkVsZW1lbnQgfHwgZ2VuRWxl
bWVudCkoZWwkMSwgc3RhdGUpXG4gICAgfVxuICAgIHZhciBub3JtYWxpemF0aW9uVHlwZSA9IGNo
ZWNrU2tpcFxuICAgICAgPyBnZXROb3JtYWxpemF0aW9uVHlwZShjaGlsZHJlbiwgc3RhdGUubWF5
YmVDb21wb25lbnQpXG4gICAgICA6IDA7XG4gICAgdmFyIGdlbiA9IGFsdEdlbk5vZGUgfHwgZ2Vu
Tm9kZTtcbiAgICByZXR1cm4gKFwiW1wiICsgKGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoYykgeyBy
ZXR1cm4gZ2VuKGMsIHN0YXRlKTsgfSkuam9pbignLCcpKSArIFwiXVwiICsgKG5vcm1hbGl6YXRp
b25UeXBlID8gKFwiLFwiICsgbm9ybWFsaXphdGlvblR5cGUpIDogJycpKVxuICB9XG59XG5cbi8v
IGRldGVybWluZSB0aGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgZm9yIHRoZSBjaGlsZHJlbiBhcnJh
eS5cbi8vIDA6IG5vIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4vLyAxOiBzaW1wbGUgbm9ybWFsaXph
dGlvbiBuZWVkZWQgKHBvc3NpYmxlIDEtbGV2ZWwgZGVlcCBuZXN0ZWQgYXJyYXkpXG4vLyAyOiBm
dWxsIG5vcm1hbGl6YXRpb24gbmVlZGVkXG5mdW5jdGlvbiBnZXROb3JtYWxpemF0aW9uVHlwZSAo
XG4gIGNoaWxkcmVuLFxuICBtYXliZUNvbXBvbmVudFxuKSB7XG4gIHZhciByZXMgPSAwO1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsID0g
Y2hpbGRyZW5baV07XG4gICAgaWYgKGVsLnR5cGUgIT09IDEpIHtcbiAgICAgIGNvbnRpbnVlXG4g
ICAgfVxuICAgIGlmIChuZWVkc05vcm1hbGl6YXRpb24oZWwpIHx8XG4gICAgICAgIChlbC5pZkNv
bmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIG5l
ZWRzTm9ybWFsaXphdGlvbihjLmJsb2NrKTsgfSkpKSB7XG4gICAgICByZXMgPSAyO1xuICAgICAg
YnJlYWtcbiAgICB9XG4gICAgaWYgKG1heWJlQ29tcG9uZW50KGVsKSB8fFxuICAgICAgICAoZWwu
aWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVy
biBtYXliZUNvbXBvbmVudChjLmJsb2NrKTsgfSkpKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH1c
biAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5lZWRzTm9ybWFsaXphdGlvbiAoZWwp
IHtcbiAgcmV0dXJuIGVsLmZvciAhPT0gdW5kZWZpbmVkIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRl
JyB8fCBlbC50YWcgPT09ICdzbG90J1xufVxuXG5mdW5jdGlvbiBnZW5Ob2RlIChub2RlLCBzdGF0
ZSkge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGdlbkVsZW1lbnQobm9k
ZSwgc3RhdGUpXG4gIH0gaWYgKG5vZGUudHlwZSA9PT0gMyAmJiBub2RlLmlzQ29tbWVudCkge1xu
ICAgIHJldHVybiBnZW5Db21tZW50KG5vZGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblRl
eHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0ZXh0KSB7XG4gIHJldHVybiAo
XCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQuZXhwcmVzc2lvbiAvLyBubyBu
ZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBfcygpXG4gICAgOiB0cmFuc2Zv
cm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50ZXh0KSkpICsgXCIpXCIpXG59
XG5cbmZ1bmN0aW9uIGdlbkNvbW1lbnQgKGNvbW1lbnQpIHtcbiAgcmV0dXJuIChcIl9lKFwiICsg
KEpTT04uc3RyaW5naWZ5KGNvbW1lbnQudGV4dCkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdl
blNsb3QgKGVsLCBzdGF0ZSkge1xuICB2YXIgc2xvdE5hbWUgPSBlbC5zbG90TmFtZSB8fCAnXCJk
ZWZhdWx0XCInO1xuICB2YXIgY2hpbGRyZW4gPSBnZW5DaGlsZHJlbihlbCwgc3RhdGUpO1xuICB2
YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRy
ZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBlbC5hdHRycyAmJiAoXCJ7XCIgKyAoZWwuYXR0cnMu
bWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiAoKGNhbWVsaXplKGEubmFtZSkpICsgXCI6XCIgKyAo
YS52YWx1ZSkpOyB9KS5qb2luKCcsJykpICsgXCJ9XCIpO1xuICB2YXIgYmluZCQkMSA9IGVsLmF0
dHJzTWFwWyd2LWJpbmQnXTtcbiAgaWYgKChhdHRycyB8fCBiaW5kJCQxKSAmJiAhY2hpbGRyZW4p
IHtcbiAgICByZXMgKz0gXCIsbnVsbFwiO1xuICB9XG4gIGlmIChhdHRycykge1xuICAgIHJlcyAr
PSBcIixcIiArIGF0dHJzO1xuICB9XG4gIGlmIChiaW5kJCQxKSB7XG4gICAgcmVzICs9IChhdHRy
cyA/ICcnIDogJyxudWxsJykgKyBcIixcIiArIGJpbmQkJDE7XG4gIH1cbiAgcmV0dXJuIHJlcyAr
ICcpJ1xufVxuXG4vLyBjb21wb25lbnROYW1lIGlzIGVsLmNvbXBvbmVudCwgdGFrZSBpdCBhcyBh
cmd1bWVudCB0byBzaHVuIGZsb3cncyBwZXNzaW1pc3RpYyByZWZpbmVtZW50XG5mdW5jdGlvbiBn
ZW5Db21wb25lbnQgKFxuICBjb21wb25lbnROYW1lLFxuICBlbCxcbiAgc3RhdGVcbikge1xuICB2
YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwg
c3RhdGUsIHRydWUpO1xuICByZXR1cm4gKFwiX2MoXCIgKyBjb21wb25lbnROYW1lICsgXCIsXCIg
KyAoZ2VuRGF0YSQyKGVsLCBzdGF0ZSkpICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4p
IDogJycpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblByb3BzIChwcm9wcykge1xuICB2YXIg
cmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAg
ICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgIHJlcyArPSBcIlxcXCJcIiArIChwcm9wLm5hbWUp
ICsgXCJcXFwiOlwiICsgKHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhwcm9wLnZhbHVlKSkgKyBc
IixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKVxufVxuXG4vLyAjMzg5NSwgIzQy
NjhcbmZ1bmN0aW9uIHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyAodGV4dCkge1xuICByZXR1cm4g
dGV4dFxuICAgIC5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIwMjgnKVxuICAgIC5yZXBsYWNl
KC9cXHUyMDI5L2csICdcXFxcdTIwMjknKVxufVxuXG4vKiAgKi9cblxuLy8gdGhlc2Uga2V5d29y
ZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25zLCBidXQgb3BlcmF0b3JzIGxp
a2Vcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFsbG93ZWRcbnZhciBwcm9oaWJp
dGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxuICAnZG8saWYsZm9yLGxldCxu
ZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwn
ICtcbiAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVy
bixzd2l0Y2gsZGVmYXVsdCwnICtcbiAgJ2V4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dl
cixmdW5jdGlvbixhcmd1bWVudHMnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXGJ8XFxcXGInKSAr
ICdcXFxcYicpO1xuXG4vLyB0aGVzZSB1bmFyeSBvcGVyYXRvcnMgc2hvdWxkIG5vdCBiZSB1c2Vk
IGFzIHByb3BlcnR5L21ldGhvZCBuYW1lc1xudmFyIHVuYXJ5T3BlcmF0b3JzUkUgPSBuZXcgUmVn
RXhwKCdcXFxcYicgKyAoXG4gICdkZWxldGUsdHlwZW9mLHZvaWQnXG4pLnNwbGl0KCcsJykuam9p
bignXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKXxcXFxcYicpICsgJ1xcXFxzKlxcXFwoW15cXFxc
KV0qXFxcXCknKTtcblxuLy8gY2hlY2sgdmFsaWQgaWRlbnRpZmllciBmb3Igdi1mb3JcbnZhciBp
ZGVudFJFID0gL1tBLVphLXpfJF1bXFx3JF0qLztcblxuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHBy
ZXNzaW9uc1xudmFyIHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86
W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBc
XFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcblxuLy8gZGV0ZWN0IHByb2Js
ZW1hdGljIGV4cHJlc3Npb25zIGluIGEgdGVtcGxhdGVcbmZ1bmN0aW9uIGRldGVjdEVycm9ycyAo
YXN0KSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgaWYgKGFzdCkge1xuICAgIGNoZWNrTm9kZShh
c3QsIGVycm9ycyk7XG4gIH1cbiAgcmV0dXJuIGVycm9yc1xufVxuXG5mdW5jdGlvbiBjaGVja05v
ZGUgKG5vZGUsIGVycm9ycykge1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgZm9yICh2
YXIgbmFtZSBpbiBub2RlLmF0dHJzTWFwKSB7XG4gICAgICBpZiAoZGlyUkUudGVzdChuYW1lKSkg
e1xuICAgICAgICB2YXIgdmFsdWUgPSBub2RlLmF0dHJzTWFwW25hbWVdO1xuICAgICAgICBpZiAo
dmFsdWUpIHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ3YtZm9yJykge1xuICAgICAgICAgICAg
Y2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9y
cyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvblJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAg
IGNoZWNrRXZlbnQodmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiks
IGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoZWNrRXhwcmVzc2lv
bih2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtc
biAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuY2hp
bGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7
IGkrKykge1xuICAgICAgICBjaGVja05vZGUobm9kZS5jaGlsZHJlbltpXSwgZXJyb3JzKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSAyKSB7XG4gICAgY2hlY2tF
eHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbiwgbm9kZS50ZXh0LCBlcnJvcnMpO1xuICB9XG59XG5c
bmZ1bmN0aW9uIGNoZWNrRXZlbnQgKGV4cCwgdGV4dCwgZXJyb3JzKSB7XG4gIHZhciBzdGlwcGVk
ID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpO1xuICB2YXIga2V5d29yZE1hdGNoID0g
c3RpcHBlZC5tYXRjaCh1bmFyeU9wZXJhdG9yc1JFKTtcbiAgaWYgKGtleXdvcmRNYXRjaCAmJiBz
dGlwcGVkLmNoYXJBdChrZXl3b3JkTWF0Y2guaW5kZXggLSAxKSAhPT0gJyQnKSB7XG4gICAgZXJy
b3JzLnB1c2goXG4gICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3JpcHQgdW5hcnkgb3BlcmF0b3Ig
YXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBd
KSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQudHJpbSgpKVxuICAgICk7XG4gIH1c
biAgY2hlY2tFeHByZXNzaW9uKGV4cCwgdGV4dCwgZXJyb3JzKTtcbn1cblxuZnVuY3Rpb24gY2hl
Y2tGb3IgKG5vZGUsIHRleHQsIGVycm9ycykge1xuICBjaGVja0V4cHJlc3Npb24obm9kZS5mb3Ig
fHwgJycsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLmFsaWFzLCAndi1m
b3IgYWxpYXMnLCB0ZXh0LCBlcnJvcnMpO1xuICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRv
cjEsICd2LWZvciBpdGVyYXRvcicsIHRleHQsIGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmllcihu
b2RlLml0ZXJhdG9yMiwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgZXJyb3JzKTtcbn1cblxuZnVu
Y3Rpb24gY2hlY2tJZGVudGlmaWVyIChpZGVudCwgdHlwZSwgdGV4dCwgZXJyb3JzKSB7XG4gIGlm
ICh0eXBlb2YgaWRlbnQgPT09ICdzdHJpbmcnICYmICFpZGVudFJFLnRlc3QoaWRlbnQpKSB7XG4g
ICAgZXJyb3JzLnB1c2goKFwiaW52YWxpZCBcIiArIHR5cGUgKyBcIiBcXFwiXCIgKyBpZGVudCAr
IFwiXFxcIiBpbiBleHByZXNzaW9uOiBcIiArICh0ZXh0LnRyaW0oKSkpKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiBjaGVja0V4cHJlc3Npb24gKGV4cCwgdGV4dCwgZXJyb3JzKSB7XG4gIHRyeSB7XG4g
ICAgbmV3IEZ1bmN0aW9uKChcInJldHVybiBcIiArIGV4cCkpO1xuICB9IGNhdGNoIChlKSB7XG4g
ICAgdmFyIGtleXdvcmRNYXRjaCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKS5tYXRj
aChwcm9oaWJpdGVkS2V5d29yZFJFKTtcbiAgICBpZiAoa2V5d29yZE1hdGNoKSB7XG4gICAgICBl
cnJvcnMucHVzaChcbiAgICAgICAgXCJhdm9pZCB1c2luZyBKYXZhU2NyaXB0IGtleXdvcmQgYXMg
cHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgICBcIlxcXCJcIiArIChrZXl3b3JkTWF0Y2hbMF0p
ICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIgKyAodGV4dC50cmltKCkpXG4gICAgICApO1xuICAg
IH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVzaCgoXCJpbnZhbGlkIGV4cHJlc3Npb246IFwiICsg
KHRleHQudHJpbSgpKSkpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3Jl
YXRlRnVuY3Rpb24gKGNvZGUsIGVycm9ycykge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgRnVu
Y3Rpb24oY29kZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3JzLnB1c2goeyBlcnI6IGVy
ciwgY29kZTogY29kZSB9KTtcbiAgICByZXR1cm4gbm9vcFxuICB9XG59XG5cbmZ1bmN0aW9uIGNy
ZWF0ZUNvbXBpbGVUb0Z1bmN0aW9uRm4gKGNvbXBpbGUpIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0
LmNyZWF0ZShudWxsKTtcblxuICByZXR1cm4gZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb25zIChc
biAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25zLFxuICAgIHZtXG4gICkge1xuICAgIG9wdGlvbnMg
PSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYg
KGZhbHNlKSB7XG4gICAgICAvLyBkZXRlY3QgcG9zc2libGUgQ1NQIHJlc3RyaWN0aW9uXG4gICAg
ICB0cnkge1xuICAgICAgICBuZXcgRnVuY3Rpb24oJ3JldHVybiAxJyk7XG4gICAgICB9IGNhdGNo
IChlKSB7XG4gICAgICAgIGlmIChlLnRvU3RyaW5nKCkubWF0Y2goL3Vuc2FmZS1ldmFsfENTUC8p
KSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdJdCBzZWVtcyB5b3UgYXJlIHVzaW5n
IHRoZSBzdGFuZGFsb25lIGJ1aWxkIG9mIFZ1ZS5qcyBpbiBhbiAnICtcbiAgICAgICAgICAgICdl
bnZpcm9ubWVudCB3aXRoIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHRoYXQgcHJvaGliaXRzIHVu
c2FmZS1ldmFsLiAnICtcbiAgICAgICAgICAgICdUaGUgdGVtcGxhdGUgY29tcGlsZXIgY2Fubm90
IHdvcmsgaW4gdGhpcyBlbnZpcm9ubWVudC4gQ29uc2lkZXIgJyArXG4gICAgICAgICAgICAncmVs
YXhpbmcgdGhlIHBvbGljeSB0byBhbGxvdyB1bnNhZmUtZXZhbCBvciBwcmUtY29tcGlsaW5nIHlv
dXIgJyArXG4gICAgICAgICAgICAndGVtcGxhdGVzIGludG8gcmVuZGVyIGZ1bmN0aW9ucy4nXG4g
ICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNoZWNrIGNh
Y2hlXG4gICAgdmFyIGtleSA9IG9wdGlvbnMuZGVsaW1pdGVyc1xuICAgICAgPyBTdHJpbmcob3B0
aW9ucy5kZWxpbWl0ZXJzKSArIHRlbXBsYXRlXG4gICAgICA6IHRlbXBsYXRlO1xuICAgIGlmIChj
YWNoZVtrZXldKSB7XG4gICAgICByZXR1cm4gY2FjaGVba2V5XVxuICAgIH1cblxuICAgIC8vIGNv
bXBpbGVcbiAgICB2YXIgY29tcGlsZWQgPSBjb21waWxlKHRlbXBsYXRlLCBvcHRpb25zKTtcblxu
ICAgIC8vIGNoZWNrIGNvbXBpbGF0aW9uIGVycm9ycy90aXBzXG4gICAgaWYgKGZhbHNlKSB7XG4g
ICAgICBpZiAoY29tcGlsZWQuZXJyb3JzICYmIGNvbXBpbGVkLmVycm9ycy5sZW5ndGgpIHtcbiAg
ICAgICAgd2FybihcbiAgICAgICAgICBcIkVycm9yIGNvbXBpbGluZyB0ZW1wbGF0ZTpcXG5cXG5c
IiArIHRlbXBsYXRlICsgXCJcXG5cXG5cIiArXG4gICAgICAgICAgY29tcGlsZWQuZXJyb3JzLm1h
cChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9KS5qb2luKCdcXG4nKSArICdc
XG4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGls
ZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAgICAgICBjb21waWxlZC50aXBz
LmZvckVhY2goZnVuY3Rpb24gKG1zZykgeyByZXR1cm4gdGlwKG1zZywgdm0pOyB9KTtcbiAgICAg
IH1cbiAgICB9XG5cbiAgICAvLyB0dXJuIGNvZGUgaW50byBmdW5jdGlvbnNcbiAgICB2YXIgcmVz
ID0ge307XG4gICAgdmFyIGZuR2VuRXJyb3JzID0gW107XG4gICAgcmVzLnJlbmRlciA9IGNyZWF0
ZUZ1bmN0aW9uKGNvbXBpbGVkLnJlbmRlciwgZm5HZW5FcnJvcnMpO1xuICAgIHJlcy5zdGF0aWNS
ZW5kZXJGbnMgPSBjb21waWxlZC5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7
XG4gICAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb24oY29kZSwgZm5HZW5FcnJvcnMpXG4gICAgfSk7
XG5cbiAgICAvLyBjaGVjayBmdW5jdGlvbiBnZW5lcmF0aW9uIGVycm9ycy5cbiAgICAvLyB0aGlz
IHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgY29tcGlsZXIgaXRz
ZWxmLlxuICAgIC8vIG1vc3RseSBmb3IgY29kZWdlbiBkZXZlbG9wbWVudCB1c2VcbiAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICgoIWNvbXBp
bGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJvcnMubGVu
Z3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJhdGUgcmVu
ZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAoZnVuY3Rp
b24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAgICAgICB2
YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9TdHJpbmco
KSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5qb2luKCdc
XG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJl
dHVybiAoY2FjaGVba2V5XSA9IHJlcylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3Jl
YXRlQ29tcGlsZXJDcmVhdG9yIChiYXNlQ29tcGlsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gY3Jl
YXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gICAgZnVuY3Rpb24gY29tcGlsZSAoXG4gICAg
ICB0ZW1wbGF0ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApIHtcbiAgICAgIHZhciBmaW5hbE9wdGlv
bnMgPSBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zKTtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtc
biAgICAgIHZhciB0aXBzID0gW107XG4gICAgICBmaW5hbE9wdGlvbnMud2FybiA9IGZ1bmN0aW9u
IChtc2csIHRpcCkge1xuICAgICAgICAodGlwID8gdGlwcyA6IGVycm9ycykucHVzaChtc2cpO1xu
ICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgLy8gbWVyZ2UgY3VzdG9t
IG1vZHVsZXNcbiAgICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykge1xuICAgICAgICAgIGZpbmFs
T3B0aW9ucy5tb2R1bGVzID1cbiAgICAgICAgICAgIChiYXNlT3B0aW9ucy5tb2R1bGVzIHx8IFtd
KS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtZXJnZSBj
dXN0b20gZGlyZWN0aXZlc1xuICAgICAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzKSB7XG4gICAg
ICAgICAgZmluYWxPcHRpb25zLmRpcmVjdGl2ZXMgPSBleHRlbmQoXG4gICAgICAgICAgICBPYmpl
Y3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMpLFxuICAgICAgICAgICAgb3B0aW9ucy5k
aXJlY3RpdmVzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb3B5IG90aGVy
IG9wdGlvbnNcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBp
ZiAoa2V5ICE9PSAnbW9kdWxlcycgJiYga2V5ICE9PSAnZGlyZWN0aXZlcycpIHtcbiAgICAgICAg
ICAgIGZpbmFsT3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcGlsZWQgPSBiYXNlQ29tcGlsZSh0ZW1wbGF0
ZSwgZmluYWxPcHRpb25zKTtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBlcnJvcnMucHVz
aC5hcHBseShlcnJvcnMsIGRldGVjdEVycm9ycyhjb21waWxlZC5hc3QpKTtcbiAgICAgIH1cbiAg
ICAgIGNvbXBpbGVkLmVycm9ycyA9IGVycm9ycztcbiAgICAgIGNvbXBpbGVkLnRpcHMgPSB0aXBz
O1xuICAgICAgcmV0dXJuIGNvbXBpbGVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNv
bXBpbGU6IGNvbXBpbGUsXG4gICAgICBjb21waWxlVG9GdW5jdGlvbnM6IGNyZWF0ZUNvbXBpbGVU
b0Z1bmN0aW9uRm4oY29tcGlsZSlcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8vIGBjcmVh
dGVDb21waWxlckNyZWF0b3JgIGFsbG93cyBjcmVhdGluZyBjb21waWxlcnMgdGhhdCB1c2UgYWx0
ZXJuYXRpdmVcbi8vIHBhcnNlci9vcHRpbWl6ZXIvY29kZWdlbiwgZS5nIHRoZSBTU1Igb3B0aW1p
emluZyBjb21waWxlci5cbi8vIEhlcmUgd2UganVzdCBleHBvcnQgYSBkZWZhdWx0IGNvbXBpbGVy
IHVzaW5nIHRoZSBkZWZhdWx0IHBhcnRzLlxudmFyIGNyZWF0ZUNvbXBpbGVyID0gY3JlYXRlQ29t
cGlsZXJDcmVhdG9yKGZ1bmN0aW9uIGJhc2VDb21waWxlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlv
bnNcbikge1xuICB2YXIgYXN0ID0gcGFyc2UodGVtcGxhdGUudHJpbSgpLCBvcHRpb25zKTtcbiAg
b3B0aW1pemUoYXN0LCBvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBnZW5lcmF0ZShhc3QsIG9wdGlv
bnMpO1xuICByZXR1cm4ge1xuICAgIGFzdDogYXN0LFxuICAgIHJlbmRlcjogY29kZS5yZW5kZXIs
XG4gICAgc3RhdGljUmVuZGVyRm5zOiBjb2RlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59KTtcblxu
LyogICovXG5cbnZhciByZWYkMSA9IGNyZWF0ZUNvbXBpbGVyKGJhc2VPcHRpb25zKTtcbnZhciBj
b21waWxlVG9GdW5jdGlvbnMgPSByZWYkMS5jb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qICAqL1xu
XG52YXIgaWRUb1RlbXBsYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChpZCkge1xuICB2YXIgZWwgPSBx
dWVyeShpZCk7XG4gIHJldHVybiBlbCAmJiBlbC5pbm5lckhUTUxcbn0pO1xuXG52YXIgbW91bnQg
PSBWdWUkMy5wcm90b3R5cGUuJG1vdW50O1xuVnVlJDMucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0
aW9uIChcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGVsID0gZWwgJiYgcXVlcnkoZWwpO1xu
XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkg
fHwgZWwgPT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIFwicHJvZHVjdGlvblwi
ICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiRG8gbm90IG1vdW50IFZ1ZSB0byA8
aHRtbD4gb3IgPGJvZHk+IC0gbW91bnQgdG8gbm9ybWFsIGVsZW1lbnRzIGluc3RlYWQuXCJcbiAg
ICApO1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlv
bnM7XG4gIC8vIHJlc29sdmUgdGVtcGxhdGUvZWwgYW5kIGNvbnZlcnQgdG8gcmVuZGVyIGZ1bmN0
aW9uXG4gIGlmICghb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2YXIgdGVtcGxhdGUgPSBvcHRpb25z
LnRlbXBsYXRlO1xuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0
ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHRlbXBsYXRlLmNoYXJBdCgwKSA9PT0gJyMn
KSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpZFRvVGVtcGxhdGUodGVtcGxhdGUpO1xuICAgICAg
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmIChmYWxzZSkge1xuICAg
ICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgKFwiVGVtcGxhdGUgZWxlbWVudCBub3QgZm91
bmQgb3IgaXMgZW1wdHk6IFwiICsgKG9wdGlvbnMudGVtcGxhdGUpKSxcbiAgICAgICAgICAgICAg
dGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxz
ZSBpZiAodGVtcGxhdGUubm9kZVR5cGUpIHtcbiAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5p
bm5lckhUTUw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAg
ICB3YXJuKCdpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjonICsgdGVtcGxhdGUsIHRoaXMpO1xuICAg
ICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbCkg
e1xuICAgICAgdGVtcGxhdGUgPSBnZXRPdXRlckhUTUwoZWwpO1xuICAgIH1cbiAgICBpZiAodGVt
cGxhdGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGZhbHNl
KSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUnKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZiA9
IGNvbXBpbGVUb0Z1bmN0aW9ucyh0ZW1wbGF0ZSwge1xuICAgICAgICBzaG91bGREZWNvZGVOZXds
aW5lczogc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgICAgIGRlbGltaXRlcnM6IG9wdGlvbnMu
ZGVsaW1pdGVycyxcbiAgICAgICAgY29tbWVudHM6IG9wdGlvbnMuY29tbWVudHNcbiAgICAgIH0s
IHRoaXMpO1xuICAgICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7XG4gICAgICB2YXIgc3RhdGlj
UmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICAgIG9wdGlvbnMucmVuZGVyID0g
cmVuZGVyO1xuICAgICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnM7
XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGZhbHNlKSB7XG4g
ICAgICAgIG1hcmsoJ2NvbXBpbGUgZW5kJyk7XG4gICAgICAgIG1lYXN1cmUoKCh0aGlzLl9uYW1l
KSArIFwiIGNvbXBpbGVcIiksICdjb21waWxlJywgJ2NvbXBpbGUgZW5kJyk7XG4gICAgICB9XG4g
ICAgfVxuICB9XG4gIHJldHVybiBtb3VudC5jYWxsKHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xu
XG4vKipcbiAqIEdldCBvdXRlckhUTUwgb2YgZWxlbWVudHMsIHRha2luZyBjYXJlXG4gKiBvZiBT
VkcgZWxlbWVudHMgaW4gSUUgYXMgd2VsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3V0ZXJIVE1MIChl
bCkge1xuICBpZiAoZWwub3V0ZXJIVE1MKSB7XG4gICAgcmV0dXJuIGVsLm91dGVySFRNTFxuICB9
IGVsc2Uge1xuICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwuY2xvbmVOb2RlKHRydWUpKTtcbiAgICBy
ZXR1cm4gY29udGFpbmVyLmlubmVySFRNTFxuICB9XG59XG5cblZ1ZSQzLmNvbXBpbGUgPSBjb21w
aWxlVG9GdW5jdGlvbnM7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNr
X2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSAoVnVlJDMpO1xuXG4vKiBXRUJQQUNLIFZBUiBJTkpF
Q1RJT04gKi99LmNhbGwoX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXyhc
IkR1UjJcIikpKVxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJEdVIyXCI6XG4vKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBu
b24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxu
fSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQg
KHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgx
LGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRjaChlKSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiB0
aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcclxuXHRpZih0eXBlb2Ygd2luZG93ID09
PSBcIm9iamVjdFwiKVxyXG5cdFx0ZyA9IHdpbmRvdztcclxufVxyXG5cclxuLy8gZyBjYW4gc3Rp
bGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxyXG4vLyBXZSBy
ZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xyXG4vLyBl
YXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XHJcblxyXG5tb2R1
bGUuZXhwb3J0cyA9IGc7XHJcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJGWitmXCI6XG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6
Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBU
b2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0
aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtc
blx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBj
c3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRy
ZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3Nz
V2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsy
XSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250
ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0
XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2Yg
bW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlh
UXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1v
ZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVk
TW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7
XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51
bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0
fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBp
dGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVc
blx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2Vp
cmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBp
bXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRc
dFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZl
IHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwi
IHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlh
UXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0
XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIg
KyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1c
blx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJu
IGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNv
dXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBw
aW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7
XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24n
KSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0
dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2Up
IHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290
ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0
KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5c
blx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNv
bnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xu
XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0
b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkp
KSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29u
O2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRh
dGEgKyAnICovJztcbn1cblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCJWVS84XCI6XG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRF
WFRfXyAqL1xuXG4vLyB0aGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5l
ciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhl
IGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBu
b3JtYWxpemVDb21wb25lbnQgKFxuICByYXdTY3JpcHRFeHBvcnRzLFxuICBjb21waWxlZFRlbXBs
YXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIgLyog
c2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIgZXNNb2R1bGVcbiAgdmFyIHNjcmlwdEV4cG9ydHMg
PSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2NyaXB0RXhwb3J0cyB8fCB7fVxuXG4gIC8vIEVTNiBt
b2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUgPSB0eXBlb2YgcmF3U2NyaXB0RXhwb3J0cy5kZWZh
dWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBvcnRzXG4gICAgc2NyaXB0RXhwb3J0cyA9IHJhd1Nj
cmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5cbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBl
eHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAn
ZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9y
dHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChjb21waWxlZFRlbXBsYXRlKSB7XG4g
ICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxlZFRlbXBsYXRlLnJlbmRlclxuICAgIG9wdGlvbnMu
c3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxu
XG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9
IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8v
IHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8g
Mi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2Fj
aGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQp
IHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5v
ZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAg
IC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYm
IHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBj
b250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNv
bXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0
U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNv
bXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAg
ICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAg
ICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4g
ICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNh
Y2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRp
b25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAg
ICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIHZhciBmdW5j
dGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFsXG4gICAgdmFyIGV4aXN0aW5nID0gZnVuY3Rpb25h
bFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxuICAgICAgOiBvcHRpb25zLmJlZm9yZUNyZWF0ZVxu
ICAgIGlmICghZnVuY3Rpb25hbCkge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3Ry
YXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0g
ZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDog
W2hvb2tdXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29t
cG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRl
cldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29u
dGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAg
fVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlc01vZHVsZTogZXNNb2R1bGUsXG4gICAgZXhwb3J0
czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG4vKioq
LyB9KSxcblxuLyoqKi8gXCJyamowXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cu
b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMg
S29wcGVycyBAc29rcmFcbiAgTW9kaWZpZWQgYnkgRXZhbiBZb3UgQHl5eDk5MDgwM1xuKi9cblxu
dmFyIGhhc0RvY3VtZW50ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuXG5pZiAo
dHlwZW9mIERFQlVHICE9PSAndW5kZWZpbmVkJyAmJiBERUJVRykge1xuICBpZiAoIWhhc0RvY3Vt
ZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2dWUtc3R5bGUtbG9hZGVyIGNhbm5v
dCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQuICcgK1xuICAgIFwiVXNlIHsg
dGFyZ2V0OiAnbm9kZScgfSBpbiB5b3VyIFdlYnBhY2sgY29uZmlnIHRvIGluZGljYXRlIGEgc2Vy
dmVyLXJlbmRlcmluZyBlbnZpcm9ubWVudC5cIlxuICApIH1cbn1cblxudmFyIGxpc3RUb1N0eWxl
cyA9IF9fd2VicGFja19yZXF1aXJlX18oXCJ0VFZrXCIpXG5cbi8qXG50eXBlIFN0eWxlT2JqZWN0
ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0czogQXJyYXk8U3R5bGVPYmplY3RQYXJ0PlxufVxu
XG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtcbiAgY3NzOiBzdHJpbmc7XG4gIG1lZGlhOiBzdHJp
bmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xufVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0gey8q
XG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlkOiBudW1iZXIsXG4gICAgcmVmczogbnVtYmVyLFxu
ICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5bGVPYmplY3RQYXJ0KSA9PiB2b2lkPlxuICB9XG4q
L31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVudCAmJiAoZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdKVxudmFyIHNpbmdsZXRvbkVsZW1lbnQg
PSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRlciA9IDBcbnZhciBpc1Byb2R1Y3Rpb24gPSBmYWxz
ZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxuXG4vLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0
aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5c
bi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbnZhciBpc09sZElFID0gdHlwZW9mIG5h
dmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL21zaWUgWzYtOV1cXGIvLnRlc3QobmF2aWdhdG9y
LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChw
YXJlbnRJZCwgbGlzdCwgX2lzUHJvZHVjdGlvbikge1xuICBpc1Byb2R1Y3Rpb24gPSBfaXNQcm9k
dWN0aW9uXG5cbiAgdmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbGlzdClcbiAg
YWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUgKG5ld0xp
c3QpIHtcbiAgICB2YXIgbWF5UmVtb3ZlID0gW11cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0
eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICAgIHZh
ciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgICBkb21TdHlsZS5yZWZzLS1c
biAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKVxuICAgIH1cbiAgICBpZiAobmV3TGlzdCkg
e1xuICAgICAgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBuZXdMaXN0KVxuICAgICAg
YWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXMgPSBbXVxu
ICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xu
ICAgICAgdmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldXG4gICAgICBpZiAoZG9tU3R5bGUucmVm
cyA9PT0gMCkge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxl
bmd0aDsgaisrKSB7XG4gICAgICAgICAgZG9tU3R5bGUucGFydHNbal0oKVxuICAgICAgICB9XG4g
ICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF1cbiAgICAgIH1cbiAgICB9XG4g
IH1cbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0eWxlcyAvKiBBcnJheTxTdHlsZU9i
amVjdD4gKi8pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtc
biAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9t
W2l0ZW0uaWRdXG4gICAgaWYgKGRvbVN0eWxlKSB7XG4gICAgICBkb21TdHlsZS5yZWZzKytcbiAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAg
ICAgICAgZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSlcbiAgICAgIH1cbiAgICAgIGZv
ciAoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0
cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgaWYgKGRvbVN0
eWxlLnBhcnRzLmxlbmd0aCA+IGl0ZW0ucGFydHMubGVuZ3RoKSB7XG4gICAgICAgIGRvbVN0eWxl
LnBhcnRzLmxlbmd0aCA9IGl0ZW0ucGFydHMubGVuZ3RoXG4gICAgICB9XG4gICAgfSBlbHNlIHtc
biAgICAgIHZhciBwYXJ0cyA9IFtdXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFy
dHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgcGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRz
W2pdKSlcbiAgICAgIH1cbiAgICAgIHN0eWxlc0luRG9tW2l0ZW0uaWRdID0geyBpZDogaXRlbS5p
ZCwgcmVmczogMSwgcGFydHM6IHBhcnRzIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3Jl
YXRlU3R5bGVFbGVtZW50ICgpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3N0eWxlJylcbiAgc3R5bGVFbGVtZW50LnR5cGUgPSAndGV4dC9jc3MnXG4gIGhl
YWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KVxuICByZXR1cm4gc3R5bGVFbGVtZW50XG59XG5c
bmZ1bmN0aW9uIGFkZFN0eWxlIChvYmogLyogU3R5bGVPYmplY3RQYXJ0ICovKSB7XG4gIHZhciB1
cGRhdGUsIHJlbW92ZVxuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignc3R5bGVbZGF0YS12dWUtc3NyLWlkfj1cIicgKyBvYmouaWQgKyAnXCJdJylcblxuICBpZiAo
c3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlzUHJvZHVjdGlvbikge1xuICAgICAgLy8gaGFzIFNT
UiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24gbW9kZS5cbiAgICAgIC8vIHNpbXBseSBkbyBub3Ro
aW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIFNTUiBz
dHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAgICAgLy8gZm9yIHNvbWUgcmVhc29uIENocm9tZSBj
YW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBzZXJ2ZXItcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxl
IHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5bGU+IG9ubHkgd29ya3MgaWYgdGhlIHN0eWxlIHRh
ZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQgaW5zZXJ0ZWQgZHluYW1pY2FsbHkuIFNvIHdlIHJl
bW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4gICAgICAvLyBzdHlsZXMgYW5kIGluamVjdCBuZXcg
b25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxl
bWVudClcbiAgICB9XG4gIH1cblxuICBpZiAoaXNPbGRJRSkge1xuICAgIC8vIHVzZSBzaW5nbGV0
b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisr
XG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVudCB8fCAoc2luZ2xldG9uRWxlbWVu
dCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25U
YWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNlKVxuICAgIHJlbW92
ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5k
ZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIG11bHRpLXN0eWxlLXRhZyBtb2RlIGlu
IGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgp
XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudClcbiAgICBy
ZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlKG9iailcblxuICBy
ZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8p
IHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAm
JlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG4gICAgICAgICAgbmV3
T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm5cbiAgICAg
IH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92
ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG4g
IHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJldHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2Vt
ZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50XG4gICAgcmV0dXJuIHRl
eHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJylcbiAgfVxufSkoKVxuXG5mdW5jdGlv
biBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZUVsZW1lbnQsIGluZGV4LCByZW1vdmUsIG9iaikg
e1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3NzXG5cbiAgaWYgKHN0eWxlRWxlbWVu
dC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJl
cGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZUVsZW1l
bnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGVFbGVtZW50LnJl
bW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkg
e1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2lu
ZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05v
ZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcgKHN0eWxlRWxlbWVudCwg
b2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzXG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYVxuICB2
YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcFxuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxl
RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpXG4gIH1cblxuICBpZiAoc291cmNl
TWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kZXZ0b29scy9kb2Nz
L2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAgLy8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNp
ZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuICAgIGNzcyArPSAnXFxuLyoj
IHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAnICovJ1xuICAgIC8vIGh0dHA6
Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNl
TWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCcgKyBidG9hKHVuZXNjYXBl
KGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgJyAqLydc
biAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVu
dC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3NcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVF
bGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHls
ZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpXG4gIH1cbn1cblxuXG4vKioqLyB9KSxcblxu
LyoqKi8gXCJybW5oXCI6XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblxuXG4vL1xuLy8gR2VuZXJhdGVkIG9uIFR1ZSBEZWMgMTYgMjAx
NCAxMjoxMzo0NyBHTVQrMDEwMCAoQ0VUKSBieSBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdv
bWVuaSAmIHRoZSBDb250cmlidXRvcnMgKFVzaW5nIENvZGVzdXJnZW9uKS5cbi8vIFZlcnNpb24g
MS4yLjZcbi8vXG5cbihmdW5jdGlvbiAoZXhwb3J0cykge1xuXG4vKlxuICogYnJvd3Nlci5qczog
QnJvd3NlciBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZvciBkaXJlY3Rvci5cbiAqXG4gKiAoQykg
MjAxMSwgQ2hhcmxpZSBSb2JiaW5zLCBQYW9sbyBGcmFnb21lbmksICYgdGhlIENvbnRyaWJ1dG9y
cy5cbiAqIE1JVCBMSUNFTlNFXG4gKlxuICovXG5cbnZhciBkbG9jID0gZG9jdW1lbnQubG9jYXRp
b247XG5cbmZ1bmN0aW9uIGRsb2NIYXNoRW1wdHkoKSB7XG4gIC8vIE5vbi1JRSBicm93c2VycyBy
ZXR1cm4gJycgd2hlbiB0aGUgYWRkcmVzcyBiYXIgc2hvd3MgJyMnOyBEaXJlY3RvcidzIGxvZ2lj
XG4gIC8vIGFzc3VtZXMgYm90aCBtZWFuIGVtcHR5LlxuICByZXR1cm4gZGxvYy5oYXNoID09PSAn
JyB8fCBkbG9jLmhhc2ggPT09ICcjJztcbn1cblxudmFyIGxpc3RlbmVyID0ge1xuICBtb2RlOiAn
bW9kZXJuJyxcbiAgaGFzaDogZGxvYy5oYXNoLFxuICBoaXN0b3J5OiBmYWxzZSxcblxuICBjaGVj
azogZnVuY3Rpb24gKCkge1xuICAgIHZhciBoID0gZGxvYy5oYXNoO1xuICAgIGlmIChoICE9IHRo
aXMuaGFzaCkge1xuICAgICAgdGhpcy5oYXNoID0gaDtcbiAgICAgIHRoaXMub25IYXNoQ2hhbmdl
ZCgpO1xuICAgIH1cbiAgfSxcblxuICBmaXJlOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMu
bW9kZSA9PT0gJ21vZGVybicpIHtcbiAgICAgIHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSA/IHdpbmRv
dy5vbnBvcHN0YXRlKCkgOiB3aW5kb3cub25oYXNoY2hhbmdlKCk7XG4gICAgfVxuICAgIGVsc2Ug
e1xuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2VkKCk7XG4gICAgfVxuICB9LFxuXG4gIGluaXQ6IGZ1
bmN0aW9uIChmbiwgaGlzdG9yeSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLmhp
c3RvcnkgPSBoaXN0b3J5O1xuXG4gICAgaWYgKCFSb3V0ZXIubGlzdGVuZXJzKSB7XG4gICAgICBS
b3V0ZXIubGlzdGVuZXJzID0gW107XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25jaGFuZ2Uob25D
aGFuZ2VFdmVudCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBSb3V0ZXIubGlzdGVuZXJz
Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBSb3V0ZXIubGlzdGVuZXJzW2ldKG9uQ2hh
bmdlRXZlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vbm90ZSBJRTggaXMgYmVpbmcgY291
bnRlZCBhcyAnbW9kZXJuJyBiZWNhdXNlIGl0IGhhcyB0aGUgaGFzaGNoYW5nZSBldmVudFxuICAg
IGlmICgnb25oYXNoY2hhbmdlJyBpbiB3aW5kb3cgJiYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSA9
PT0gdW5kZWZpbmVkXG4gICAgICB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA3KSkge1xuICAg
ICAgLy8gQXQgbGVhc3QgZm9yIG5vdyBIVE1MNSBoaXN0b3J5IGlzIGF2YWlsYWJsZSBmb3IgJ21v
ZGVybicgYnJvd3NlcnMgb25seVxuICAgICAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkge1xu
ICAgICAgICAvLyBUaGVyZSBpcyBhbiBvbGQgYnVnIGluIENocm9tZSB0aGF0IGNhdXNlcyBvbnBv
cHN0YXRlIHRvIGZpcmUgZXZlblxuICAgICAgICAvLyB1cG9uIGluaXRpYWwgcGFnZSBsb2FkLiBT
aW5jZSB0aGUgaGFuZGxlciBpcyBydW4gbWFudWFsbHkgaW4gaW5pdCgpLFxuICAgICAgICAvLyB0
aGlzIHdvdWxkIGNhdXNlIENocm9tZSB0byBydW4gaXQgdHdpc2UuIEN1cnJlbnRseSB0aGUgb25s
eVxuICAgICAgICAvLyB3b3JrYXJvdW5kIHNlZW1zIHRvIGJlIHRvIHNldCB0aGUgaGFuZGxlciBh
ZnRlciB0aGUgaW5pdGlhbCBwYWdlIGxvYWRcbiAgICAgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjMwNDBcbiAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHtcbiAgICAgICAgICB3aW5kb3cub25wb3BzdGF0ZSA9IG9uY2hhbmdlO1xu
ICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHdpbmRvdy5v
bmhhc2hjaGFuZ2UgPSBvbmNoYW5nZTtcbiAgICAgIH1cbiAgICAgIHRoaXMubW9kZSA9ICdtb2Rl
cm4nO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vXG4gICAgICAvLyBJRSBzdXBwb3J0LCBi
YXNlZCBvbiBhIGNvbmNlcHQgYnkgRXJpayBBcnZpZHNvbiAuLi5cbiAgICAgIC8vXG4gICAgICB2
YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICAgIGZyYW1l
LmlkID0gJ3N0YXRlLWZyYW1lJztcbiAgICAgIGZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTtcbiAgICAgIHRoaXMud3Jp
dGVGcmFtZSgnJyk7XG5cbiAgICAgIGlmICgnb25wcm9wZXJ0eWNoYW5nZScgaW4gZG9jdW1lbnQg
JiYgJ2F0dGFjaEV2ZW50JyBpbiBkb2N1bWVudCkge1xuICAgICAgICBkb2N1bWVudC5hdHRhY2hF
dmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoZXZl
bnQucHJvcGVydHlOYW1lID09PSAnbG9jYXRpb24nKSB7XG4gICAgICAgICAgICBzZWxmLmNoZWNr
KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgd2luZG93LnNl
dEludGVydmFsKGZ1bmN0aW9uICgpIHsgc2VsZi5jaGVjaygpOyB9LCA1MCk7XG5cbiAgICAgIHRo
aXMub25IYXNoQ2hhbmdlZCA9IG9uY2hhbmdlO1xuICAgICAgdGhpcy5tb2RlID0gJ2xlZ2FjeSc7
XG4gICAgfVxuXG4gICAgUm91dGVyLmxpc3RlbmVycy5wdXNoKGZuKTtcblxuICAgIHJldHVybiB0
aGlzLm1vZGU7XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKCFS
b3V0ZXIgfHwgIVJvdXRlci5saXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAg
ICB2YXIgbGlzdGVuZXJzID0gUm91dGVyLmxpc3RlbmVycztcblxuICAgIGZvciAodmFyIGkgPSBs
aXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChsaXN0ZW5lcnNb
aV0gPT09IGZuKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4g
ICAgfVxuICB9LFxuXG4gIHNldEhhc2g6IGZ1bmN0aW9uIChzKSB7XG4gICAgLy8gTW96aWxsYSBh
bHdheXMgYWRkcyBhbiBlbnRyeSB0byB0aGUgaGlzdG9yeVxuICAgIGlmICh0aGlzLm1vZGUgPT09
ICdsZWdhY3knKSB7XG4gICAgICB0aGlzLndyaXRlRnJhbWUocyk7XG4gICAgfVxuXG4gICAgaWYg
KHRoaXMuaGlzdG9yeSA9PT0gdHJ1ZSkge1xuICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRl
KHt9LCBkb2N1bWVudC50aXRsZSwgcyk7XG4gICAgICAvLyBGaXJlIGFuIG9ucG9wc3RhdGUgZXZl
bnQgbWFudWFsbHkgc2luY2UgcHVzaGluZyBkb2VzIG5vdCBvYnZpb3VzbHlcbiAgICAgIC8vIHRy
aWdnZXIgdGhlIHBvcCBldmVudC5cbiAgICAgIHRoaXMuZmlyZSgpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBkbG9jLmhhc2ggPSAoc1swXSA9PT0gJy8nKSA/IHMgOiAnLycgKyBzO1xuICAgIH1cbiAg
ICByZXR1cm4gdGhpcztcbiAgfSxcblxuICB3cml0ZUZyYW1lOiBmdW5jdGlvbiAocykge1xuICAg
IC8vIElFIHN1cHBvcnQuLi5cbiAgICB2YXIgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
dGF0ZS1mcmFtZScpO1xuICAgIHZhciBkID0gZi5jb250ZW50RG9jdW1lbnQgfHwgZi5jb250ZW50
V2luZG93LmRvY3VtZW50O1xuICAgIGQub3BlbigpO1xuICAgIGQud3JpdGUoXCI8c2NyaXB0Pl9o
YXNoID0gJ1wiICsgcyArIFwiJzsgb25sb2FkID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxz
Y3JpcHQ+XCIpO1xuICAgIGQuY2xvc2UoKTtcbiAgfSxcblxuICBzeW5jSGFzaDogZnVuY3Rpb24g
KCkge1xuICAgIC8vIElFIHN1cHBvcnQuLi5cbiAgICB2YXIgcyA9IHRoaXMuX2hhc2g7XG4gICAg
aWYgKHMgIT0gZGxvYy5oYXNoKSB7XG4gICAgICBkbG9jLmhhc2ggPSBzO1xuICAgIH1cbiAgICBy
ZXR1cm4gdGhpcztcbiAgfSxcblxuICBvbkhhc2hDaGFuZ2VkOiBmdW5jdGlvbiAoKSB7fVxufTtc
blxudmFyIFJvdXRlciA9IGV4cG9ydHMuUm91dGVyID0gZnVuY3Rpb24gKHJvdXRlcykge1xuICBp
ZiAoISh0aGlzIGluc3RhbmNlb2YgUm91dGVyKSkgcmV0dXJuIG5ldyBSb3V0ZXIocm91dGVzKTtc
blxuICB0aGlzLnBhcmFtcyAgID0ge307XG4gIHRoaXMucm91dGVzICAgPSB7fTtcbiAgdGhpcy5t
ZXRob2RzICA9IFsnb24nLCAnb25jZScsICdhZnRlcicsICdiZWZvcmUnXTtcbiAgdGhpcy5zY29w
ZSAgICA9IFtdO1xuICB0aGlzLl9tZXRob2RzID0ge307XG5cbiAgdGhpcy5faW5zZXJ0ID0gdGhp
cy5pbnNlcnQ7XG4gIHRoaXMuaW5zZXJ0ID0gdGhpcy5pbnNlcnRFeDtcblxuICB0aGlzLmhpc3Rv
cnlTdXBwb3J0ID0gKHdpbmRvdy5oaXN0b3J5ICE9IG51bGwgPyB3aW5kb3cuaGlzdG9yeS5wdXNo
U3RhdGUgOiBudWxsKSAhPSBudWxsXG5cbiAgdGhpcy5jb25maWd1cmUoKTtcbiAgdGhpcy5tb3Vu
dChyb3V0ZXMgfHwge30pO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24g
KHIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gICAgLCByb3V0ZVRvO1xuICB0aGlzLmhhbmRsZXIg
PSBmdW5jdGlvbihvbkNoYW5nZUV2ZW50KSB7XG4gICAgdmFyIG5ld1VSTCA9IG9uQ2hhbmdlRXZl
bnQgJiYgb25DaGFuZ2VFdmVudC5uZXdVUkwgfHwgd2luZG93LmxvY2F0aW9uLmhhc2g7XG4gICAg
dmFyIHVybCA9IHNlbGYuaGlzdG9yeSA9PT0gdHJ1ZSA/IHNlbGYuZ2V0UGF0aCgpIDogbmV3VVJM
LnJlcGxhY2UoLy4qIy8sICcnKTtcbiAgICBzZWxmLmRpc3BhdGNoKCdvbicsIHVybC5jaGFyQXQo
MCkgPT09ICcvJyA/IHVybCA6ICcvJyArIHVybCk7XG4gIH07XG5cbiAgbGlzdGVuZXIuaW5pdCh0
aGlzLmhhbmRsZXIsIHRoaXMuaGlzdG9yeSk7XG5cbiAgaWYgKHRoaXMuaGlzdG9yeSA9PT0gZmFs
c2UpIHtcbiAgICBpZiAoZGxvY0hhc2hFbXB0eSgpICYmIHIpIHtcbiAgICAgIGRsb2MuaGFzaCA9
IHI7XG4gICAgfSBlbHNlIGlmICghZGxvY0hhc2hFbXB0eSgpKSB7XG4gICAgICBzZWxmLmRpc3Bh
dGNoKCdvbicsICcvJyArIGRsb2MuaGFzaC5yZXBsYWNlKC9eKCNcXC98I3xcXC8pLywgJycpKTtc
biAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgaWYgKHRoaXMuY29udmVydF9oYXNoX2luX2luaXQp
IHtcbiAgICAgIC8vIFVzZSBoYXNoIGFzIHJvdXRlXG4gICAgICByb3V0ZVRvID0gZGxvY0hhc2hF
bXB0eSgpICYmIHIgPyByIDogIWRsb2NIYXNoRW1wdHkoKSA/IGRsb2MuaGFzaC5yZXBsYWNlKC9e
Iy8sICcnKSA6IG51bGw7XG4gICAgICBpZiAocm91dGVUbykge1xuICAgICAgICB3aW5kb3cuaGlz
dG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCByb3V0ZVRvKTtcbiAgICAgIH1c
biAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBVc2UgY2Fub25pY2FsIHVybFxuICAgICAgcm91
dGVUbyA9IHRoaXMuZ2V0UGF0aCgpO1xuICAgIH1cblxuICAgIC8vIFJvdXRlciBoYXMgYmVlbiBp
bml0aWFsaXplZCwgYnV0IGR1ZSB0byB0aGUgY2hyb21lIGJ1ZyBpdCB3aWxsIG5vdFxuICAgIC8v
IHlldCBhY3R1YWxseSByb3V0ZSBIVE1MNSBoaXN0b3J5IHN0YXRlIGNoYW5nZXMuIFRodXMsIGRl
Y2lkZSBpZiBzaG91bGQgcm91dGUuXG4gICAgaWYgKHJvdXRlVG8gfHwgdGhpcy5ydW5faW5faW5p
dCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5oYW5kbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0
dXJuIHRoaXM7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmV4cGxvZGUgPSBmdW5jdGlvbiAoKSB7
XG4gIHZhciB2ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gdGhpcy5nZXRQYXRoKCkgOiBkbG9j
Lmhhc2g7XG4gIGlmICh2LmNoYXJBdCgxKSA9PT0gJy8nKSB7IHY9di5zbGljZSgxKSB9XG4gIHJl
dHVybiB2LnNsaWNlKDEsIHYubGVuZ3RoKS5zcGxpdChcIi9cIik7XG59O1xuXG5Sb3V0ZXIucHJv
dG90eXBlLnNldFJvdXRlID0gZnVuY3Rpb24gKGksIHYsIHZhbCkge1xuICB2YXIgdXJsID0gdGhp
cy5leHBsb2RlKCk7XG5cbiAgaWYgKHR5cGVvZiBpID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdiA9
PT0gJ3N0cmluZycpIHtcbiAgICB1cmxbaV0gPSB2O1xuICB9XG4gIGVsc2UgaWYgKHR5cGVvZiB2
YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdXJsLnNwbGljZShpLCB2LCBzKTtcbiAgfVxuICBlbHNl
IHtcbiAgICB1cmwgPSBbaV07XG4gIH1cblxuICBsaXN0ZW5lci5zZXRIYXNoKHVybC5qb2luKCcv
JykpO1xuICByZXR1cm4gdXJsO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBpbnNlcnRFeCht
ZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpXG4vLyAjIyMjIEBtZXRob2Qge3N0cmluZ30gTWV0
aG9kIHRvIGluc2VydCB0aGUgc3BlY2lmaWMgYHJvdXRlYC5cbi8vICMjIyMgQHBhdGgge0FycmF5
fSBQYXJzZWQgcGF0aCB0byBpbnNlcnQgdGhlIGByb3V0ZWAgYXQuXG4vLyAjIyMjIEByb3V0ZSB7
QXJyYXl8ZnVuY3Rpb259IFJvdXRlIGhhbmRsZXJzIHRvIGluc2VydC5cbi8vICMjIyMgQHBhcmVu
dCB7T2JqZWN0fSAqKk9wdGlvbmFsKiogUGFyZW50IFwicm91dGVzXCIgdG8gaW5zZXJ0IGludG8u
XG4vLyBpbnNlcnQgYSBjYWxsYmFjayB0aGF0IHdpbGwgb25seSBvY2N1ciBvbmNlIHBlciB0aGUg
bWF0Y2hlZCByb3V0ZS5cbi8vXG5Sb3V0ZXIucHJvdG90eXBlLmluc2VydEV4ID0gZnVuY3Rpb24o
bWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50KSB7XG4gIGlmIChtZXRob2QgPT09IFwib25jZVwi
KSB7XG4gICAgbWV0aG9kID0gXCJvblwiO1xuICAgIHJvdXRlID0gZnVuY3Rpb24ocm91dGUpIHtc
biAgICAgIHZhciBvbmNlID0gZmFsc2U7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAg
ICAgIGlmIChvbmNlKSByZXR1cm47XG4gICAgICAgIG9uY2UgPSB0cnVlO1xuICAgICAgICByZXR1
cm4gcm91dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfShyb3V0ZSk7
XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2luc2VydChtZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQp
O1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5nZXRSb3V0ZSA9IGZ1bmN0aW9uICh2KSB7XG4gIHZh
ciByZXQgPSB2O1xuXG4gIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldCA9
IHRoaXMuZXhwbG9kZSgpW3ZdO1xuICB9XG4gIGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmlu
Z1wiKXtcbiAgICB2YXIgaCA9IHRoaXMuZXhwbG9kZSgpO1xuICAgIHJldCA9IGguaW5kZXhPZih2
KTtcbiAgfVxuICBlbHNlIHtcbiAgICByZXQgPSB0aGlzLmV4cGxvZGUoKTtcbiAgfVxuXG4gIHJl
dHVybiByZXQ7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7
XG4gIGxpc3RlbmVyLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xu
XG5Sb3V0ZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBwYXRoID0g
d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICBpZiAocGF0aC5zdWJzdHIoMCwgMSkgIT09ICcv
Jykge1xuICAgIHBhdGggPSAnLycgKyBwYXRoO1xuICB9XG4gIHJldHVybiBwYXRoO1xufTtcbmZ1
bmN0aW9uIF9ldmVyeShhcnIsIGl0ZXJhdG9yKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKGl0ZXJhdG9yKGFycltpXSwgaSwgYXJyKSA9PT0g
ZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX2ZsYXR0
ZW4oYXJyKSB7XG4gIHZhciBmbGF0ID0gW107XG4gIGZvciAodmFyIGkgPSAwLCBuID0gYXJyLmxl
bmd0aDsgaSA8IG47IGkrKykge1xuICAgIGZsYXQgPSBmbGF0LmNvbmNhdChhcnJbaV0pO1xuICB9
XG4gIHJldHVybiBmbGF0O1xufVxuXG5mdW5jdGlvbiBfYXN5bmNFdmVyeVNlcmllcyhhcnIsIGl0
ZXJhdG9yLCBjYWxsYmFjaykge1xuICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2Fs
bGJhY2soKTtcbiAgfVxuICB2YXIgY29tcGxldGVkID0gMDtcbiAgKGZ1bmN0aW9uIGl0ZXJhdGUo
KSB7XG4gICAgaXRlcmF0b3IoYXJyW2NvbXBsZXRlZF0sIGZ1bmN0aW9uKGVycikge1xuICAgICAg
aWYgKGVyciB8fCBlcnIgPT09IGZhbHNlKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAg
ICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNv
bXBsZXRlZCArPSAxO1xuICAgICAgICBpZiAoY29tcGxldGVkID09PSBhcnIubGVuZ3RoKSB7XG4g
ICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVyYXRl
KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSkoKTtcbn1cblxuZnVuY3Rpb24g
cGFyYW1pZnlTdHJpbmcoc3RyLCBwYXJhbXMsIG1vZCkge1xuICBtb2QgPSBzdHI7XG4gIGZvciAo
dmFyIHBhcmFtIGluIHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkocGFy
YW0pKSB7XG4gICAgICBtb2QgPSBwYXJhbXNbcGFyYW1dKHN0cik7XG4gICAgICBpZiAobW9kICE9
PSBzdHIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBt
b2QgPT09IHN0ciA/IFwiKFsuX2EtekEtWjAtOS0lKCldKylcIiA6IG1vZDtcbn1cblxuZnVuY3Rp
b24gcmVnaWZ5U3RyaW5nKHN0ciwgcGFyYW1zKSB7XG4gIHZhciBtYXRjaGVzLCBsYXN0ID0gMCwg
b3V0ID0gXCJcIjtcbiAgd2hpbGUgKG1hdGNoZXMgPSBzdHIuc3Vic3RyKGxhc3QpLm1hdGNoKC9b
Xlxcd1xcZFxcLSAlQCZdKlxcKlteXFx3XFxkXFwtICVAJl0qLykpIHtcbiAgICBsYXN0ID0gbWF0
Y2hlcy5pbmRleCArIG1hdGNoZXNbMF0ubGVuZ3RoO1xuICAgIG1hdGNoZXNbMF0gPSBtYXRjaGVz
WzBdLnJlcGxhY2UoL15cXCovLCBcIihbXy4oKSFcXFxcICVAJmEtekEtWjAtOS1dKylcIik7XG4g
ICAgb3V0ICs9IHN0ci5zdWJzdHIoMCwgbWF0Y2hlcy5pbmRleCkgKyBtYXRjaGVzWzBdO1xuICB9
XG4gIHN0ciA9IG91dCArPSBzdHIuc3Vic3RyKGxhc3QpO1xuICB2YXIgY2FwdHVyZXMgPSBzdHIu
bWF0Y2goLzooW15cXC9dKykvaWcpLCBjYXB0dXJlLCBsZW5ndGg7XG4gIGlmIChjYXB0dXJlcykg
e1xuICAgIGxlbmd0aCA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7XG4gICAgICBjYXB0dXJlID0gY2FwdHVyZXNbaV07XG4gICAgICBpZiAo
Y2FwdHVyZS5zbGljZSgwLCAyKSA9PT0gXCI6OlwiKSB7XG4gICAgICAgIHN0ciA9IGNhcHR1cmUu
c2xpY2UoMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShjYXB0
dXJlLCBwYXJhbWlmeVN0cmluZyhjYXB0dXJlLCBwYXJhbXMpKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuZnVuY3Rpb24gdGVybWluYXRvcihyb3V0ZXMsIGRlbGlt
aXRlciwgc3RhcnQsIHN0b3ApIHtcbiAgdmFyIGxhc3QgPSAwLCBsZWZ0ID0gMCwgcmlnaHQgPSAw
LCBzdGFydCA9IChzdGFydCB8fCBcIihcIikudG9TdHJpbmcoKSwgc3RvcCA9IChzdG9wIHx8IFwi
KVwiKS50b1N0cmluZygpLCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgcm91dGVzLmxlbmd0aDsgaSsr
KSB7XG4gICAgdmFyIGNodW5rID0gcm91dGVzW2ldO1xuICAgIGlmIChjaHVuay5pbmRleE9mKHN0
YXJ0LCBsYXN0KSA+IGNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkgfHwgfmNodW5rLmluZGV4T2Yo
c3RhcnQsIGxhc3QpICYmICF+Y2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSB8fCAhfmNodW5rLmlu
ZGV4T2Yoc3RhcnQsIGxhc3QpICYmIH5jaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpKSB7XG4gICAg
ICBsZWZ0ID0gY2h1bmsuaW5kZXhPZihzdGFydCwgbGFzdCk7XG4gICAgICByaWdodCA9IGNodW5r
LmluZGV4T2Yoc3RvcCwgbGFzdCk7XG4gICAgICBpZiAofmxlZnQgJiYgIX5yaWdodCB8fCAhfmxl
ZnQgJiYgfnJpZ2h0KSB7XG4gICAgICAgIHZhciB0bXAgPSByb3V0ZXMuc2xpY2UoMCwgKGkgfHwg
MSkgKyAxKS5qb2luKGRlbGltaXRlcik7XG4gICAgICAgIHJvdXRlcyA9IFsgdG1wIF0uY29uY2F0
KHJvdXRlcy5zbGljZSgoaSB8fCAxKSArIDEpKTtcbiAgICAgIH1cbiAgICAgIGxhc3QgPSAocmln
aHQgPiBsZWZ0ID8gcmlnaHQgOiBsZWZ0KSArIDE7XG4gICAgICBpID0gMDtcbiAgICB9IGVsc2Ug
e1xuICAgICAgbGFzdCA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbnZh
ciBRVUVSWV9TRVBBUkFUT1IgPSAvXFw/LiovO1xuXG5Sb3V0ZXIucHJvdG90eXBlLmNvbmZpZ3Vy
ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZXRob2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5f
bWV0aG9kc1t0aGlzLm1ldGhvZHNbaV1dID0gdHJ1ZTtcbiAgfVxuICB0aGlzLnJlY3Vyc2UgPSBv
cHRpb25zLnJlY3Vyc2UgfHwgdGhpcy5yZWN1cnNlIHx8IGZhbHNlO1xuICB0aGlzLmFzeW5jID0g
b3B0aW9ucy5hc3luYyB8fCBmYWxzZTtcbiAgdGhpcy5kZWxpbWl0ZXIgPSBvcHRpb25zLmRlbGlt
aXRlciB8fCBcIi9cIjtcbiAgdGhpcy5zdHJpY3QgPSB0eXBlb2Ygb3B0aW9ucy5zdHJpY3QgPT09
IFwidW5kZWZpbmVkXCIgPyB0cnVlIDogb3B0aW9ucy5zdHJpY3Q7XG4gIHRoaXMubm90Zm91bmQg
PSBvcHRpb25zLm5vdGZvdW5kO1xuICB0aGlzLnJlc291cmNlID0gb3B0aW9ucy5yZXNvdXJjZTtc
biAgdGhpcy5oaXN0b3J5ID0gb3B0aW9ucy5odG1sNWhpc3RvcnkgJiYgdGhpcy5oaXN0b3J5U3Vw
cG9ydCB8fCBmYWxzZTtcbiAgdGhpcy5ydW5faW5faW5pdCA9IHRoaXMuaGlzdG9yeSA9PT0gdHJ1
ZSAmJiBvcHRpb25zLnJ1bl9oYW5kbGVyX2luX2luaXQgIT09IGZhbHNlO1xuICB0aGlzLmNvbnZl
cnRfaGFzaF9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVlICYmIG9wdGlvbnMuY29udmVy
dF9oYXNoX2luX2luaXQgIT09IGZhbHNlO1xuICB0aGlzLmV2ZXJ5ID0ge1xuICAgIGFmdGVyOiBv
cHRpb25zLmFmdGVyIHx8IG51bGwsXG4gICAgYmVmb3JlOiBvcHRpb25zLmJlZm9yZSB8fCBudWxs
LFxuICAgIG9uOiBvcHRpb25zLm9uIHx8IG51bGxcbiAgfTtcbiAgcmV0dXJuIHRoaXM7XG59O1xu
XG5Sb3V0ZXIucHJvdG90eXBlLnBhcmFtID0gZnVuY3Rpb24odG9rZW4sIG1hdGNoZXIpIHtcbiAg
aWYgKHRva2VuWzBdICE9PSBcIjpcIikge1xuICAgIHRva2VuID0gXCI6XCIgKyB0b2tlbjtcbiAg
fVxuICB2YXIgY29tcGlsZWQgPSBuZXcgUmVnRXhwKHRva2VuLCBcImdcIik7XG4gIHRoaXMucGFy
YW1zW3Rva2VuXSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShjb21w
aWxlZCwgbWF0Y2hlci5zb3VyY2UgfHwgbWF0Y2hlcik7XG4gIH07XG4gIHJldHVybiB0aGlzO1xu
fTtcblxuUm91dGVyLnByb3RvdHlwZS5vbiA9IFJvdXRlci5wcm90b3R5cGUucm91dGUgPSBmdW5j
dGlvbihtZXRob2QsIHBhdGgsIHJvdXRlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKCFy
b3V0ZSAmJiB0eXBlb2YgcGF0aCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByb3V0ZSA9IHBhdGg7
XG4gICAgcGF0aCA9IG1ldGhvZDtcbiAgICBtZXRob2QgPSBcIm9uXCI7XG4gIH1cbiAgaWYgKEFy
cmF5LmlzQXJyYXkocGF0aCkpIHtcbiAgICByZXR1cm4gcGF0aC5mb3JFYWNoKGZ1bmN0aW9uKHAp
IHtcbiAgICAgIHNlbGYub24obWV0aG9kLCBwLCByb3V0ZSk7XG4gICAgfSk7XG4gIH1cbiAgaWYg
KHBhdGguc291cmNlKSB7XG4gICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxhY2UoL1xcXFxcXC8v
aWcsIFwiL1wiKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShtZXRob2QpKSB7XG4gICAgcmV0
dXJuIG1ldGhvZC5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAgIHNlbGYub24obS50b0xvd2Vy
Q2FzZSgpLCBwYXRoLCByb3V0ZSk7XG4gICAgfSk7XG4gIH1cbiAgcGF0aCA9IHBhdGguc3BsaXQo
bmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpO1xuICBwYXRoID0gdGVybWluYXRvcihwYXRoLCB0
aGlzLmRlbGltaXRlcik7XG4gIHRoaXMuaW5zZXJ0KG1ldGhvZCwgdGhpcy5zY29wZS5jb25jYXQo
cGF0aCksIHJvdXRlKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uKHBh
dGgsIHJvdXRlc0ZuKSB7XG4gIHZhciBzZWxmID0gdGhpcywgbGVuZ3RoID0gdGhpcy5zY29wZS5s
ZW5ndGg7XG4gIGlmIChwYXRoLnNvdXJjZSkge1xuICAgIHBhdGggPSBwYXRoLnNvdXJjZS5yZXBs
YWNlKC9cXFxcXFwvL2lnLCBcIi9cIik7XG4gIH1cbiAgcGF0aCA9IHBhdGguc3BsaXQobmV3IFJl
Z0V4cCh0aGlzLmRlbGltaXRlcikpO1xuICBwYXRoID0gdGVybWluYXRvcihwYXRoLCB0aGlzLmRl
bGltaXRlcik7XG4gIHRoaXMuc2NvcGUgPSB0aGlzLnNjb3BlLmNvbmNhdChwYXRoKTtcbiAgcm91
dGVzRm4uY2FsbCh0aGlzLCB0aGlzKTtcbiAgdGhpcy5zY29wZS5zcGxpY2UobGVuZ3RoLCBwYXRo
Lmxlbmd0aCk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmRpc3BhdGNoID0gZnVuY3Rpb24obWV0
aG9kLCBwYXRoLCBjYWxsYmFjaykge1xuICB2YXIgc2VsZiA9IHRoaXMsIGZucyA9IHRoaXMudHJh
dmVyc2UobWV0aG9kLCBwYXRoLnJlcGxhY2UoUVVFUllfU0VQQVJBVE9SLCBcIlwiKSwgdGhpcy5y
b3V0ZXMsIFwiXCIpLCBpbnZva2VkID0gdGhpcy5faW52b2tlZCwgYWZ0ZXI7XG4gIHRoaXMuX2lu
dm9rZWQgPSB0cnVlO1xuICBpZiAoIWZucyB8fCBmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhp
cy5sYXN0ID0gW107XG4gICAgaWYgKHR5cGVvZiB0aGlzLm5vdGZvdW5kID09PSBcImZ1bmN0aW9u
XCIpIHtcbiAgICAgIHRoaXMuaW52b2tlKFsgdGhpcy5ub3Rmb3VuZCBdLCB7XG4gICAgICAgIG1l
dGhvZDogbWV0aG9kLFxuICAgICAgICBwYXRoOiBwYXRoXG4gICAgICB9LCBjYWxsYmFjayk7XG4g
ICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy5yZWN1cnNlID09PSBcImZv
cndhcmRcIikge1xuICAgIGZucyA9IGZucy5yZXZlcnNlKCk7XG4gIH1cbiAgZnVuY3Rpb24gdXBk
YXRlQW5kSW52b2tlKCkge1xuICAgIHNlbGYubGFzdCA9IGZucy5hZnRlcjtcbiAgICBzZWxmLmlu
dm9rZShzZWxmLnJ1bmxpc3QoZm5zKSwgc2VsZiwgY2FsbGJhY2spO1xuICB9XG4gIGFmdGVyID0g
dGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5LmFmdGVyID8gWyB0aGlzLmV2ZXJ5LmFmdGVyIF0uY29u
Y2F0KHRoaXMubGFzdCkgOiBbIHRoaXMubGFzdCBdO1xuICBpZiAoYWZ0ZXIgJiYgYWZ0ZXIubGVu
Z3RoID4gMCAmJiBpbnZva2VkKSB7XG4gICAgaWYgKHRoaXMuYXN5bmMpIHtcbiAgICAgIHRoaXMu
aW52b2tlKGFmdGVyLCB0aGlzLCB1cGRhdGVBbmRJbnZva2UpO1xuICAgIH0gZWxzZSB7XG4gICAg
ICB0aGlzLmludm9rZShhZnRlciwgdGhpcyk7XG4gICAgICB1cGRhdGVBbmRJbnZva2UoKTtcbiAg
ICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdXBkYXRlQW5kSW52b2tlKCk7XG4gIHJldHVy
biB0cnVlO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbihmbnMsIHRo
aXNBcmcsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGFwcGx5O1xuICBp
ZiAodGhpcy5hc3luYykge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4sIG5leHQpIHtcbiAgICAg
IGlmIChBcnJheS5pc0FycmF5KGZuKSkge1xuICAgICAgICByZXR1cm4gX2FzeW5jRXZlcnlTZXJp
ZXMoZm4sIGFwcGx5LCBuZXh0KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZuID09IFwiZnVu
Y3Rpb25cIikge1xuICAgICAgICBmbi5hcHBseSh0aGlzQXJnLCAoZm5zLmNhcHR1cmVzIHx8IFtd
KS5jb25jYXQobmV4dCkpO1xuICAgICAgfVxuICAgIH07XG4gICAgX2FzeW5jRXZlcnlTZXJpZXMo
Zm5zLCBhcHBseSwgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAg
Y2FsbGJhY2suYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAg
fSBlbHNlIHtcbiAgICBhcHBseSA9IGZ1bmN0aW9uKGZuKSB7XG4gICAgICBpZiAoQXJyYXkuaXNB
cnJheShmbikpIHtcbiAgICAgICAgcmV0dXJuIF9ldmVyeShmbiwgYXBwbHkpO1xuICAgICAgfSBl
bHNlIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gZm4u
YXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTtcbiAgICAgIH0gZWxzZSBpZiAodHlw
ZW9mIGZuID09PSBcInN0cmluZ1wiICYmIHNlbGYucmVzb3VyY2UpIHtcbiAgICAgICAgc2VsZi5y
ZXNvdXJjZVtmbl0uYXBwbHkodGhpc0FyZywgZm5zLmNhcHR1cmVzIHx8IFtdKTtcbiAgICAgIH1c
biAgICB9O1xuICAgIF9ldmVyeShmbnMsIGFwcGx5KTtcbiAgfVxufTtcblxuUm91dGVyLnByb3Rv
dHlwZS50cmF2ZXJzZSA9IGZ1bmN0aW9uKG1ldGhvZCwgcGF0aCwgcm91dGVzLCByZWdleHAsIGZp
bHRlcikge1xuICB2YXIgZm5zID0gW10sIGN1cnJlbnQsIGV4YWN0LCBtYXRjaCwgbmV4dCwgdGhh
dDtcbiAgZnVuY3Rpb24gZmlsdGVyUm91dGVzKHJvdXRlcykge1xuICAgIGlmICghZmlsdGVyKSB7
XG4gICAgICByZXR1cm4gcm91dGVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWVwQ29weShzb3Vy
Y2UpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdFtpXSA9IEFycmF5LmlzQXJyYXko
c291cmNlW2ldKSA/IGRlZXBDb3B5KHNvdXJjZVtpXSkgOiBzb3VyY2VbaV07XG4gICAgICB9XG4g
ICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBhcHBseUZpbHRlcihmbnMp
IHtcbiAgICAgIGZvciAodmFyIGkgPSBmbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAg
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zW2ldKSkge1xuICAgICAgICAgIGFwcGx5RmlsdGVy
KGZuc1tpXSk7XG4gICAgICAgICAgaWYgKGZuc1tpXS5sZW5ndGggPT09IDApIHtcbiAgICAgICAg
ICAgIGZucy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAg
ICAgICAgIGlmICghZmlsdGVyKGZuc1tpXSkpIHtcbiAgICAgICAgICAgIGZucy5zcGxpY2UoaSwg
MSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBuZXdS
b3V0ZXMgPSBkZWVwQ29weShyb3V0ZXMpO1xuICAgIG5ld1JvdXRlcy5tYXRjaGVkID0gcm91dGVz
Lm1hdGNoZWQ7XG4gICAgbmV3Um91dGVzLmNhcHR1cmVzID0gcm91dGVzLmNhcHR1cmVzO1xuICAg
IG5ld1JvdXRlcy5hZnRlciA9IHJvdXRlcy5hZnRlci5maWx0ZXIoZmlsdGVyKTtcbiAgICBhcHBs
eUZpbHRlcihuZXdSb3V0ZXMpO1xuICAgIHJldHVybiBuZXdSb3V0ZXM7XG4gIH1cbiAgaWYgKHBh
dGggPT09IHRoaXMuZGVsaW1pdGVyICYmIHJvdXRlc1ttZXRob2RdKSB7XG4gICAgbmV4dCA9IFsg
WyByb3V0ZXMuYmVmb3JlLCByb3V0ZXNbbWV0aG9kXSBdLmZpbHRlcihCb29sZWFuKSBdO1xuICAg
IG5leHQuYWZ0ZXIgPSBbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKTtcbiAgICBuZXh0
Lm1hdGNoZWQgPSB0cnVlO1xuICAgIG5leHQuY2FwdHVyZXMgPSBbXTtcbiAgICByZXR1cm4gZmls
dGVyUm91dGVzKG5leHQpO1xuICB9XG4gIGZvciAodmFyIHIgaW4gcm91dGVzKSB7XG4gICAgaWYg
KHJvdXRlcy5oYXNPd25Qcm9wZXJ0eShyKSAmJiAoIXRoaXMuX21ldGhvZHNbcl0gfHwgdGhpcy5f
bWV0aG9kc1tyXSAmJiB0eXBlb2Ygcm91dGVzW3JdID09PSBcIm9iamVjdFwiICYmICFBcnJheS5p
c0FycmF5KHJvdXRlc1tyXSkpKSB7XG4gICAgICBjdXJyZW50ID0gZXhhY3QgPSByZWdleHAgKyB0
aGlzLmRlbGltaXRlciArIHI7XG4gICAgICBpZiAoIXRoaXMuc3RyaWN0KSB7XG4gICAgICAgIGV4
YWN0ICs9IFwiW1wiICsgdGhpcy5kZWxpbWl0ZXIgKyBcIl0/XCI7XG4gICAgICB9XG4gICAgICBt
YXRjaCA9IHBhdGgubWF0Y2gobmV3IFJlZ0V4cChcIl5cIiArIGV4YWN0KSk7XG4gICAgICBpZiAo
IW1hdGNoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKG1hdGNoWzBd
ICYmIG1hdGNoWzBdID09IHBhdGggJiYgcm91dGVzW3JdW21ldGhvZF0pIHtcbiAgICAgICAgbmV4
dCA9IFsgWyByb3V0ZXNbcl0uYmVmb3JlLCByb3V0ZXNbcl1bbWV0aG9kXSBdLmZpbHRlcihCb29s
ZWFuKSBdO1xuICAgICAgICBuZXh0LmFmdGVyID0gWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIo
Qm9vbGVhbik7XG4gICAgICAgIG5leHQubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIG5leHQuY2Fw
dHVyZXMgPSBtYXRjaC5zbGljZSgxKTtcbiAgICAgICAgaWYgKHRoaXMucmVjdXJzZSAmJiByb3V0
ZXMgPT09IHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgbmV4dC5wdXNoKFsgcm91dGVzLmJlZm9y
ZSwgcm91dGVzLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICBuZXh0LmFmdGVyID0g
bmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXMuYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikpO1xuICAg
ICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJSb3V0ZXMobmV4dCk7XG4gICAgICB9XG4gICAg
ICBuZXh0ID0gdGhpcy50cmF2ZXJzZShtZXRob2QsIHBhdGgsIHJvdXRlc1tyXSwgY3VycmVudCk7
XG4gICAgICBpZiAobmV4dC5tYXRjaGVkKSB7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA+IDAp
IHtcbiAgICAgICAgICBmbnMgPSBmbnMuY29uY2F0KG5leHQpO1xuICAgICAgICB9XG4gICAgICAg
IGlmICh0aGlzLnJlY3Vyc2UpIHtcbiAgICAgICAgICBmbnMucHVzaChbIHJvdXRlc1tyXS5iZWZv
cmUsIHJvdXRlc1tyXS5vbiBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgbmV4dC5hZnRl
ciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91dGVzW3JdLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4p
KTtcbiAgICAgICAgICBpZiAocm91dGVzID09PSB0aGlzLnJvdXRlcykge1xuICAgICAgICAgICAg
Zm5zLnB1c2goWyByb3V0ZXNbXCJiZWZvcmVcIl0sIHJvdXRlc1tcIm9uXCJdIF0uZmlsdGVyKEJv
b2xlYW4pKTtcbiAgICAgICAgICAgIG5leHQuYWZ0ZXIgPSBuZXh0LmFmdGVyLmNvbmNhdChbIHJv
dXRlc1tcImFmdGVyXCJdIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICB9XG4gICAgICAg
IH1cbiAgICAgICAgZm5zLm1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBmbnMuY2FwdHVyZXMgPSBu
ZXh0LmNhcHR1cmVzO1xuICAgICAgICBmbnMuYWZ0ZXIgPSBuZXh0LmFmdGVyO1xuICAgICAgICBy
ZXR1cm4gZmlsdGVyUm91dGVzKGZucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBm
YWxzZTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24obWV0aG9kLCBw
YXRoLCByb3V0ZSwgcGFyZW50KSB7XG4gIHZhciBtZXRob2RUeXBlLCBwYXJlbnRUeXBlLCBpc0Fy
cmF5LCBuZXN0ZWQsIHBhcnQ7XG4gIHBhdGggPSBwYXRoLmZpbHRlcihmdW5jdGlvbihwKSB7XG4g
ICAgcmV0dXJuIHAgJiYgcC5sZW5ndGggPiAwO1xuICB9KTtcbiAgcGFyZW50ID0gcGFyZW50IHx8
IHRoaXMucm91dGVzO1xuICBwYXJ0ID0gcGF0aC5zaGlmdCgpO1xuICBpZiAoL1xcOnxcXCovLnRl
c3QocGFydCkgJiYgIS9cXFxcZHxcXFxcdy8udGVzdChwYXJ0KSkge1xuICAgIHBhcnQgPSByZWdp
ZnlTdHJpbmcocGFydCwgdGhpcy5wYXJhbXMpO1xuICB9XG4gIGlmIChwYXRoLmxlbmd0aCA+IDAp
IHtcbiAgICBwYXJlbnRbcGFydF0gPSBwYXJlbnRbcGFydF0gfHwge307XG4gICAgcmV0dXJuIHRo
aXMuaW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudFtwYXJ0XSk7XG4gIH1cbiAgaWYg
KCFwYXJ0ICYmICFwYXRoLmxlbmd0aCAmJiBwYXJlbnQgPT09IHRoaXMucm91dGVzKSB7XG4gICAg
bWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRbbWV0aG9kXTtcbiAgICBzd2l0Y2ggKG1ldGhvZFR5
cGUpIHtcbiAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICBwYXJlbnRbbWV0aG9kXSA9IFsg
cGFyZW50W21ldGhvZF0sIHJvdXRlIF07XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJvYmpl
Y3RcIjpcbiAgICAgIHBhcmVudFttZXRob2RdLnB1c2gocm91dGUpO1xuICAgICAgcmV0dXJuO1xu
ICAgICBjYXNlIFwidW5kZWZpbmVkXCI6XG4gICAgICBwYXJlbnRbbWV0aG9kXSA9IHJvdXRlO1xu
ICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgcGFyZW50VHlwZSA9IHR5
cGVvZiBwYXJlbnRbcGFydF07XG4gIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHBhcmVudFtwYXJ0
XSk7XG4gIGlmIChwYXJlbnRbcGFydF0gJiYgIWlzQXJyYXkgJiYgcGFyZW50VHlwZSA9PSBcIm9i
amVjdFwiKSB7XG4gICAgbWV0aG9kVHlwZSA9IHR5cGVvZiBwYXJlbnRbcGFydF1bbWV0aG9kXTtc
biAgICBzd2l0Y2ggKG1ldGhvZFR5cGUpIHtcbiAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAg
ICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IFsgcGFyZW50W3BhcnRdW21ldGhvZF0sIHJvdXRlIF07
XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIHBhcmVudFtwYXJ0
XVttZXRob2RdLnB1c2gocm91dGUpO1xuICAgICAgcmV0dXJuO1xuICAgICBjYXNlIFwidW5kZWZp
bmVkXCI6XG4gICAgICBwYXJlbnRbcGFydF1bbWV0aG9kXSA9IHJvdXRlO1xuICAgICAgcmV0dXJu
O1xuICAgIH1cbiAgfSBlbHNlIGlmIChwYXJlbnRUeXBlID09IFwidW5kZWZpbmVkXCIpIHtcbiAg
ICBuZXN0ZWQgPSB7fTtcbiAgICBuZXN0ZWRbbWV0aG9kXSA9IHJvdXRlO1xuICAgIHBhcmVudFtw
YXJ0XSA9IG5lc3RlZDtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiSW52
YWxpZCByb3V0ZSBjb250ZXh0OiBcIiArIHBhcmVudFR5cGUpO1xufTtcblxuXG5cblJvdXRlci5w
cm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24obWV0aG9kcykge1xuICB2YXIgc2VsZiA9IHRoaXMs
IGxlbiA9IG1ldGhvZHMubGVuZ3RoLCBpO1xuICBmdW5jdGlvbiBleHRlbmQobWV0aG9kKSB7XG4g
ICAgc2VsZi5fbWV0aG9kc1ttZXRob2RdID0gdHJ1ZTtcbiAgICBzZWxmW21ldGhvZF0gPSBmdW5j
dGlvbigpIHtcbiAgICAgIHZhciBleHRyYSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBbIG1l
dGhvZCwgXCJcIiBdIDogWyBtZXRob2QgXTtcbiAgICAgIHNlbGYub24uYXBwbHkoc2VsZiwgZXh0
cmEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcbiAgICB9
O1xuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGV4dGVuZChtZXRob2Rz
W2ldKTtcbiAgfVxufTtcblxuUm91dGVyLnByb3RvdHlwZS5ydW5saXN0ID0gZnVuY3Rpb24oZm5z
KSB7XG4gIHZhciBydW5saXN0ID0gdGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5LmJlZm9yZSA/IFsg
dGhpcy5ldmVyeS5iZWZvcmUgXS5jb25jYXQoX2ZsYXR0ZW4oZm5zKSkgOiBfZmxhdHRlbihmbnMp
O1xuICBpZiAodGhpcy5ldmVyeSAmJiB0aGlzLmV2ZXJ5Lm9uKSB7XG4gICAgcnVubGlzdC5wdXNo
KHRoaXMuZXZlcnkub24pO1xuICB9XG4gIHJ1bmxpc3QuY2FwdHVyZXMgPSBmbnMuY2FwdHVyZXM7
XG4gIHJ1bmxpc3Quc291cmNlID0gZm5zLnNvdXJjZTtcbiAgcmV0dXJuIHJ1bmxpc3Q7XG59O1xu
XG5Sb3V0ZXIucHJvdG90eXBlLm1vdW50ID0gZnVuY3Rpb24ocm91dGVzLCBwYXRoKSB7XG4gIGlm
ICghcm91dGVzIHx8IHR5cGVvZiByb3V0ZXMgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJh
eShyb3V0ZXMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcGF0
aCA9IHBhdGggfHwgW107XG4gIGlmICghQXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgIHBhdGgg
PSBwYXRoLnNwbGl0KHNlbGYuZGVsaW1pdGVyKTtcbiAgfVxuICBmdW5jdGlvbiBpbnNlcnRPck1v
dW50KHJvdXRlLCBsb2NhbCkge1xuICAgIHZhciByZW5hbWUgPSByb3V0ZSwgcGFydHMgPSByb3V0
ZS5zcGxpdChzZWxmLmRlbGltaXRlciksIHJvdXRlVHlwZSA9IHR5cGVvZiByb3V0ZXNbcm91dGVd
LCBpc1JvdXRlID0gcGFydHNbMF0gPT09IFwiXCIgfHwgIXNlbGYuX21ldGhvZHNbcGFydHNbMF1d
LCBldmVudCA9IGlzUm91dGUgPyBcIm9uXCIgOiByZW5hbWU7XG4gICAgaWYgKGlzUm91dGUpIHtc
biAgICAgIHJlbmFtZSA9IHJlbmFtZS5zbGljZSgocmVuYW1lLm1hdGNoKG5ldyBSZWdFeHAoXCJe
XCIgKyBzZWxmLmRlbGltaXRlcikpIHx8IFsgXCJcIiBdKVswXS5sZW5ndGgpO1xuICAgICAgcGFy
dHMuc2hpZnQoKTtcbiAgICB9XG4gICAgaWYgKGlzUm91dGUgJiYgcm91dGVUeXBlID09PSBcIm9i
amVjdFwiICYmICFBcnJheS5pc0FycmF5KHJvdXRlc1tyb3V0ZV0pKSB7XG4gICAgICBsb2NhbCA9
IGxvY2FsLmNvbmNhdChwYXJ0cyk7XG4gICAgICBzZWxmLm1vdW50KHJvdXRlc1tyb3V0ZV0sIGxv
Y2FsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzUm91dGUpIHtcbiAgICAgIGxv
Y2FsID0gbG9jYWwuY29uY2F0KHJlbmFtZS5zcGxpdChzZWxmLmRlbGltaXRlcikpO1xuICAgICAg
bG9jYWwgPSB0ZXJtaW5hdG9yKGxvY2FsLCBzZWxmLmRlbGltaXRlcik7XG4gICAgfVxuICAgIHNl
bGYuaW5zZXJ0KGV2ZW50LCBsb2NhbCwgcm91dGVzW3JvdXRlXSk7XG4gIH1cbiAgZm9yICh2YXIg
cm91dGUgaW4gcm91dGVzKSB7XG4gICAgaWYgKHJvdXRlcy5oYXNPd25Qcm9wZXJ0eShyb3V0ZSkp
IHtcbiAgICAgIGluc2VydE9yTW91bnQocm91dGUsIHBhdGguc2xpY2UoMCkpO1xuICAgIH1cbiAg
fVxufTtcblxuXG5cbn0oIHRydWUgPyBleHBvcnRzIDogd2luZG93KSk7XG5cbi8qKiovIH0pLFxu
XG4vKioqLyBcInRUVmtcIjpcbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
LyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBsaXN0IGZvcm1hdCBwcm9kdWNlZCBieSBjc3MtbG9hZGVy
IGludG8gc29tZXRoaW5nXG4gKiBlYXNpZXIgdG8gbWFuaXB1bGF0ZS5cbiAqL1xubW9kdWxlLmV4
cG9ydHMgPSBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0KSB7XG4gIHZhciBz
dHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
aXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgdmFyIGlkID0g
aXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlhID0gaXRlbVsyXVxu
ICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBpZDog
cGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEs
XG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAoIW5ld1N0eWxlc1tp
ZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlkOiBpZCwgcGFydHM6
IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2go
cGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuXG5cbi8qKiovIH0pXG5cbn0p
O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzdGF0aWMvanMvdmVuZG9yLmU3MDA4MDAx
YThiZWQwMDliYmYxLmpzIiwiLyohXG4gKiBWdWUuanMgdjIuNC4yXG4gKiAoYykgMjAxNC0yMDE3
IEV2YW4gWW91XG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAq
L1xuXG4vLyB0aGVzZSBoZWxwZXJzIHByb2R1Y2VzIGJldHRlciB2bSBjb2RlIGluIEpTIGVuZ2lu
ZXMgZHVlIHRvIHRoZWlyXG4vLyBleHBsaWNpdG5lc3MgYW5kIGZ1bmN0aW9uIGlubGluaW5nXG5m
dW5jdGlvbiBpc1VuZGVmICh2KSB7XG4gIHJldHVybiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0g
bnVsbFxufVxuXG5mdW5jdGlvbiBpc0RlZiAodikge1xuICByZXR1cm4gdiAhPT0gdW5kZWZpbmVk
ICYmIHYgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNUcnVlICh2KSB7XG4gIHJldHVybiB2ID09
PSB0cnVlXG59XG5cbmZ1bmN0aW9uIGlzRmFsc2UgKHYpIHtcbiAgcmV0dXJuIHYgPT09IGZhbHNl
XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0aXZlXG4gKi9cbmZ1bmN0aW9u
IGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0g
J3N0cmluZycgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgdHlwZW9m
IHZhbHVlID09PSAnYm9vbGVhbidcbiAgKVxufVxuXG4vKipcbiAqIFF1aWNrIG9iamVjdCBjaGVj
ayAtIHRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gdGVsbFxuICogT2JqZWN0cyBmcm9tIHByaW1p
dGl2ZSB2YWx1ZXMgd2hlbiB3ZSBrbm93IHRoZSB2YWx1ZVxuICogaXMgYSBKU09OLWNvbXBsaWFu
dCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09
IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxudmFyIF90b1N0cmluZyA9IE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNo
ZWNrLiBPbmx5IHJldHVybnMgdHJ1ZVxuICogZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5c
biAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiBfdG9TdHJpbmcu
Y2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cCAo
dikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwodikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG59
XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsIGlzIGEgdmFsaWQgYXJyYXkgaW5kZXguXG4gKi9cbmZ1
bmN0aW9uIGlzVmFsaWRBcnJheUluZGV4ICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZh
bCk7XG4gIHJldHVybiBuID49IDAgJiYgTWF0aC5mbG9vcihuKSA9PT0gbiAmJiBpc0Zpbml0ZSh2
YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhIHZhbHVlIHRvIGEgc3RyaW5nIHRoYXQgaXMgYWN0
dWFsbHkgcmVuZGVyZWQuXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nICh2YWwpIHtcbiAgcmV0dXJu
IHZhbCA9PSBudWxsXG4gICAgPyAnJ1xuICAgIDogdHlwZW9mIHZhbCA9PT0gJ29iamVjdCdcbiAg
ICAgID8gSlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgICAgOiBTdHJpbmcodmFsKVxu
fVxuXG4vKipcbiAqIENvbnZlcnQgYSBpbnB1dCB2YWx1ZSB0byBhIG51bWJlciBmb3IgcGVyc2lz
dGVuY2UuXG4gKiBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgcmV0dXJuIG9yaWdpbmFsIHN0cmlu
Zy5cbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIgKHZhbCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQo
dmFsKTtcbiAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogblxufVxuXG4vKipcbiAqIE1ha2UgYSBt
YXAgYW5kIHJldHVybiBhIGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhIGtleVxuICogaXMgaW4g
dGhhdCBtYXAuXG4gKi9cbmZ1bmN0aW9uIG1ha2VNYXAgKFxuICBzdHIsXG4gIGV4cGVjdHNMb3dl
ckNhc2Vcbikge1xuICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGxpc3Qg
PSBzdHIuc3BsaXQoJywnKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsr
KSB7XG4gICAgbWFwW2xpc3RbaV1dID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZXhwZWN0c0xvd2Vy
Q2FzZVxuICAgID8gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbWFwW3ZhbC50b0xvd2VyQ2FzZSgp
XTsgfVxuICAgIDogZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbWFwW3ZhbF07IH1cbn1cblxuLyoq
XG4gKiBDaGVjayBpZiBhIHRhZyBpcyBhIGJ1aWx0LWluIHRhZy5cbiAqL1xudmFyIGlzQnVpbHRJ
blRhZyA9IG1ha2VNYXAoJ3Nsb3QsY29tcG9uZW50JywgdHJ1ZSk7XG5cbi8qKlxuICogQ2hlY2sg
aWYgYSBhdHRyaWJ1dGUgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUuXG4gKi9cbnZhciBpc1Jlc2Vy
dmVkQXR0cmlidXRlID0gbWFrZU1hcCgna2V5LHJlZixzbG90LGlzJyk7XG5cbi8qKlxuICogUmVt
b3ZlIGFuIGl0ZW0gZnJvbSBhbiBhcnJheVxuICovXG5mdW5jdGlvbiByZW1vdmUgKGFyciwgaXRl
bSkge1xuICBpZiAoYXJyLmxlbmd0aCkge1xuICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0
ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gYXJyLnNwbGljZShpbmRl
eCwgMSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBvYmplY3Qg
aGFzIHRoZSBwcm9wZXJ0eS5cbiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGhhc093biAob2JqLCBrZXkpIHtcbiAgcmV0
dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpXG59XG5cbi8qKlxuICogQ3JlYXRlIGEg
Y2FjaGVkIHZlcnNpb24gb2YgYSBwdXJlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYWNoZWQg
KGZuKSB7XG4gIHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiAoZnVu
Y3Rpb24gY2FjaGVkRm4gKHN0cikge1xuICAgIHZhciBoaXQgPSBjYWNoZVtzdHJdO1xuICAgIHJl
dHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKVxuICB9KVxufVxuXG4vKipcbiAqIENh
bWVsaXplIGEgaHlwaGVuLWRlbGltaXRlZCBzdHJpbmcuXG4gKi9cbnZhciBjYW1lbGl6ZVJFID0g
Ly0oXFx3KS9nO1xudmFyIGNhbWVsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0
dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjID8g
Yy50b1VwcGVyQ2FzZSgpIDogJyc7IH0pXG59KTtcblxuLyoqXG4gKiBDYXBpdGFsaXplIGEgc3Ry
aW5nLlxuICovXG52YXIgY2FwaXRhbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJl
dHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn0pO1xuXG4v
KipcbiAqIEh5cGhlbmF0ZSBhIGNhbWVsQ2FzZSBzdHJpbmcuXG4gKi9cbnZhciBoeXBoZW5hdGVS
RSA9IC8oW14tXSkoW0EtWl0pL2c7XG52YXIgaHlwaGVuYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChz
dHIpIHtcbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnJDEtJDInKVxu
ICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnJDEtJDInKVxuICAgIC50b0xvd2VyQ2FzZSgpXG59
KTtcblxuLyoqXG4gKiBTaW1wbGUgYmluZCwgZmFzdGVyIHRoYW4gbmF0aXZlXG4gKi9cbmZ1bmN0
aW9uIGJpbmQgKGZuLCBjdHgpIHtcbiAgZnVuY3Rpb24gYm91bmRGbiAoYSkge1xuICAgIHZhciBs
ID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICByZXR1cm4gbFxuICAgICAgPyBsID4gMVxuICAgICAg
ICA/IGZuLmFwcGx5KGN0eCwgYXJndW1lbnRzKVxuICAgICAgICA6IGZuLmNhbGwoY3R4LCBhKVxu
ICAgICAgOiBmbi5jYWxsKGN0eClcbiAgfVxuICAvLyByZWNvcmQgb3JpZ2luYWwgZm4gbGVuZ3Ro
XG4gIGJvdW5kRm4uX2xlbmd0aCA9IGZuLmxlbmd0aDtcbiAgcmV0dXJuIGJvdW5kRm5cbn1cblxu
LyoqXG4gKiBDb252ZXJ0IGFuIEFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgcmVhbCBBcnJheS5cbiAq
L1xuZnVuY3Rpb24gdG9BcnJheSAobGlzdCwgc3RhcnQpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAw
O1xuICB2YXIgaSA9IGxpc3QubGVuZ3RoIC0gc3RhcnQ7XG4gIHZhciByZXQgPSBuZXcgQXJyYXko
aSk7XG4gIHdoaWxlIChpLS0pIHtcbiAgICByZXRbaV0gPSBsaXN0W2kgKyBzdGFydF07XG4gIH1c
biAgcmV0dXJuIHJldFxufVxuXG4vKipcbiAqIE1peCBwcm9wZXJ0aWVzIGludG8gdGFyZ2V0IG9i
amVjdC5cbiAqL1xuZnVuY3Rpb24gZXh0ZW5kICh0bywgX2Zyb20pIHtcbiAgZm9yICh2YXIga2V5
IGluIF9mcm9tKSB7XG4gICAgdG9ba2V5XSA9IF9mcm9tW2tleV07XG4gIH1cbiAgcmV0dXJuIHRv
XG59XG5cbi8qKlxuICogTWVyZ2UgYW4gQXJyYXkgb2YgT2JqZWN0cyBpbnRvIGEgc2luZ2xlIE9i
amVjdC5cbiAqL1xuZnVuY3Rpb24gdG9PYmplY3QgKGFycikge1xuICB2YXIgcmVzID0ge307XG4g
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycltpXSkg
e1xuICAgICAgZXh0ZW5kKHJlcywgYXJyW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xu
fVxuXG4vKipcbiAqIFBlcmZvcm0gbm8gb3BlcmF0aW9uLlxuICogU3R1YmJpbmcgYXJncyB0byBt
YWtlIEZsb3cgaGFwcHkgd2l0aG91dCBsZWF2aW5nIHVzZWxlc3MgdHJhbnNwaWxlZCBjb2RlXG4g
KiB3aXRoIC4uLnJlc3QgKGh0dHBzOi8vZmxvdy5vcmcvYmxvZy8yMDE3LzA1LzA3L1N0cmljdC1G
dW5jdGlvbi1DYWxsLUFyaXR5LylcbiAqL1xuZnVuY3Rpb24gbm9vcCAoYSwgYiwgYykge31cblxu
LyoqXG4gKiBBbHdheXMgcmV0dXJuIGZhbHNlLlxuICovXG52YXIgbm8gPSBmdW5jdGlvbiAoYSwg
YiwgYykgeyByZXR1cm4gZmFsc2U7IH07XG5cbi8qKlxuICogUmV0dXJuIHNhbWUgdmFsdWVcbiAq
L1xudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH07XG5cbi8qKlxuICog
R2VuZXJhdGUgYSBzdGF0aWMga2V5cyBzdHJpbmcgZnJvbSBjb21waWxlciBtb2R1bGVzLlxuICov
XG5mdW5jdGlvbiBnZW5TdGF0aWNLZXlzIChtb2R1bGVzKSB7XG4gIHJldHVybiBtb2R1bGVzLnJl
ZHVjZShmdW5jdGlvbiAoa2V5cywgbSkge1xuICAgIHJldHVybiBrZXlzLmNvbmNhdChtLnN0YXRp
Y0tleXMgfHwgW10pXG4gIH0sIFtdKS5qb2luKCcsJylcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0
d28gdmFsdWVzIGFyZSBsb29zZWx5IGVxdWFsIC0gdGhhdCBpcyxcbiAqIGlmIHRoZXkgYXJlIHBs
YWluIG9iamVjdHMsIGRvIHRoZXkgaGF2ZSB0aGUgc2FtZSBzaGFwZT9cbiAqL1xuZnVuY3Rpb24g
bG9vc2VFcXVhbCAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgeyByZXR1cm4gdHJ1ZSB9XG4gIHZh
ciBpc09iamVjdEEgPSBpc09iamVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIp
O1xuICBpZiAoaXNPYmplY3RBICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICB2YXIg
aXNBcnJheUEgPSBBcnJheS5pc0FycmF5KGEpO1xuICAgICAgdmFyIGlzQXJyYXlCID0gQXJyYXku
aXNBcnJheShiKTtcbiAgICAgIGlmIChpc0FycmF5QSAmJiBpc0FycmF5Qikge1xuICAgICAgICBy
ZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoZnVuY3Rpb24gKGUsIGkpIHtc
biAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChlLCBiW2ldKVxuICAgICAgICB9KVxuICAgICAg
fSBlbHNlIGlmICghaXNBcnJheUEgJiYgIWlzQXJyYXlCKSB7XG4gICAgICAgIHZhciBrZXlzQSA9
IE9iamVjdC5rZXlzKGEpO1xuICAgICAgICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAg
ICAgICAgcmV0dXJuIGtleXNBLmxlbmd0aCA9PT0ga2V5c0IubGVuZ3RoICYmIGtleXNBLmV2ZXJ5
KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChhW2tleV0sIGJb
a2V5XSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0gY2F0Y2gg
KGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gZmFs
c2VcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzT2JqZWN0QSAmJiAhaXNPYmplY3RCKSB7XG4gICAg
cmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZh
bHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9vc2VJbmRleE9mIChhcnIsIHZhbCkge1xuICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFsKGFy
cltpXSwgdmFsKSkgeyByZXR1cm4gaSB9XG4gIH1cbiAgcmV0dXJuIC0xXG59XG5cbi8qKlxuICog
RW5zdXJlIGEgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25jZS5cbiAqL1xuZnVuY3Rpb24gb25j
ZSAoZm4pIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xu
ICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgZm4uYXBwbHko
dGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFNTUl9BVFRSID0gJ2RhdGEt
c2VydmVyLXJlbmRlcmVkJztcblxudmFyIEFTU0VUX1RZUEVTID0gW1xuICAnY29tcG9uZW50Jyxc
biAgJ2RpcmVjdGl2ZScsXG4gICdmaWx0ZXInXG5dO1xuXG52YXIgTElGRUNZQ0xFX0hPT0tTID0g
W1xuICAnYmVmb3JlQ3JlYXRlJyxcbiAgJ2NyZWF0ZWQnLFxuICAnYmVmb3JlTW91bnQnLFxuICAn
bW91bnRlZCcsXG4gICdiZWZvcmVVcGRhdGUnLFxuICAndXBkYXRlZCcsXG4gICdiZWZvcmVEZXN0
cm95JyxcbiAgJ2Rlc3Ryb3llZCcsXG4gICdhY3RpdmF0ZWQnLFxuICAnZGVhY3RpdmF0ZWQnXG5d
O1xuXG4vKiAgKi9cblxudmFyIGNvbmZpZyA9ICh7XG4gIC8qKlxuICAgKiBPcHRpb24gbWVyZ2Ug
c3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9ucylcbiAgICovXG4gIG9wdGlvbk1l
cmdlU3RyYXRlZ2llczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogV2hldGhl
ciB0byBzdXBwcmVzcyB3YXJuaW5ncy5cbiAgICovXG4gIHNpbGVudDogZmFsc2UsXG5cbiAgLyoq
XG4gICAqIFNob3cgcHJvZHVjdGlvbiBtb2RlIHRpcCBtZXNzYWdlIG9uIGJvb3Q/XG4gICAqL1xu
ICBwcm9kdWN0aW9uVGlwOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxu
XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkZXZ0b29sc1xuICAgKi9cbiAgZGV2dG9v
bHM6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4gICAq
IFdoZXRoZXIgdG8gcmVjb3JkIHBlcmZcbiAgICovXG4gIHBlcmZvcm1hbmNlOiBmYWxzZSxcblxu
ICAvKipcbiAgICogRXJyb3IgaGFuZGxlciBmb3Igd2F0Y2hlciBlcnJvcnNcbiAgICovXG4gIGVy
cm9ySGFuZGxlcjogbnVsbCxcblxuICAvKipcbiAgICogV2FybiBoYW5kbGVyIGZvciB3YXRjaGVy
IHdhcm5zXG4gICAqL1xuICB3YXJuSGFuZGxlcjogbnVsbCxcblxuICAvKipcbiAgICogSWdub3Jl
IGNlcnRhaW4gY3VzdG9tIGVsZW1lbnRzXG4gICAqL1xuICBpZ25vcmVkRWxlbWVudHM6IFtdLFxu
XG4gIC8qKlxuICAgKiBDdXN0b20gdXNlciBrZXkgYWxpYXNlcyBmb3Igdi1vblxuICAgKi9cbiAg
a2V5Q29kZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEg
dGFnIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHJlZ2lzdGVyZWQgYXMgYVxuICAg
KiBjb21wb25lbnQuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3Zlcndy
aXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkVGFnOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sg
aWYgYW4gYXR0cmlidXRlIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHVzZWQgYXMg
YSBjb21wb25lbnRcbiAgICogcHJvcC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1h
eSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRBdHRyOiBubyxcblxuICAvKipc
biAgICogQ2hlY2sgaWYgYSB0YWcgaXMgYW4gdW5rbm93biBlbGVtZW50LlxuICAgKiBQbGF0Zm9y
bS1kZXBlbmRlbnQuXG4gICAqL1xuICBpc1Vua25vd25FbGVtZW50OiBubyxcblxuICAvKipcbiAg
ICogR2V0IHRoZSBuYW1lc3BhY2Ugb2YgYW4gZWxlbWVudFxuICAgKi9cbiAgZ2V0VGFnTmFtZXNw
YWNlOiBub29wLFxuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgcmVhbCB0YWcgbmFtZSBmb3IgdGhl
IHNwZWNpZmljIHBsYXRmb3JtLlxuICAgKi9cbiAgcGFyc2VQbGF0Zm9ybVRhZ05hbWU6IGlkZW50
aXR5LFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgbXVzdCBiZSBib3VuZCB1
c2luZyBwcm9wZXJ0eSwgZS5nLiB2YWx1ZVxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4gICAq
L1xuICBtdXN0VXNlUHJvcDogbm8sXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIGxlZ2FjeSBy
ZWFzb25zXG4gICAqL1xuICBfbGlmZWN5Y2xlSG9va3M6IExJRkVDWUNMRV9IT09LU1xufSk7XG5c
bi8qICAqL1xuXG52YXIgZW1wdHlPYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcblxuLyoqXG4g
KiBDaGVjayBpZiBhIHN0cmluZyBzdGFydHMgd2l0aCAkIG9yIF9cbiAqL1xuZnVuY3Rpb24gaXNS
ZXNlcnZlZCAoc3RyKSB7XG4gIHZhciBjID0gKHN0ciArICcnKS5jaGFyQ29kZUF0KDApO1xuICBy
ZXR1cm4gYyA9PT0gMHgyNCB8fCBjID09PSAweDVGXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcHJv
cGVydHkuXG4gKi9cbmZ1bmN0aW9uIGRlZiAob2JqLCBrZXksIHZhbCwgZW51bWVyYWJsZSkge1xu
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICB2YWx1ZTogdmFsLFxuICAg
IGVudW1lcmFibGU6ICEhZW51bWVyYWJsZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICBjb25m
aWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogUGFyc2Ugc2ltcGxlIHBhdGguXG4g
Ki9cbnZhciBiYWlsUkUgPSAvW15cXHcuJF0vO1xuZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRoKSB7
XG4gIGlmIChiYWlsUkUudGVzdChwYXRoKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBzZWdt
ZW50cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmopIHtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIW9i
aikgeyByZXR1cm4gfVxuICAgICAgb2JqID0gb2JqW3NlZ21lbnRzW2ldXTtcbiAgICB9XG4gICAg
cmV0dXJuIG9ialxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgd2FybiA9IG5vb3A7XG52YXIgdGlw
ID0gbm9vcDtcbnZhciBmb3JtYXRDb21wb25lbnROYW1lID0gKG51bGwpOyAvLyB3b3JrIGFyb3Vu
ZCBmbG93IGNoZWNrXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gIHZhciBoYXNDb25zb2xlID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnO1xu
ICB2YXIgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5ID0g
ZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwgZnVu
Y3Rpb24gKGMpIHsgcmV0dXJuIGMudG9VcHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgvWy1f
XS9nLCAnJyk7IH07XG5cbiAgd2FybiA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgdmFyIHRy
YWNlID0gdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnO1xuXG4gICAgaWYgKGNv
bmZpZy53YXJuSGFuZGxlcikge1xuICAgICAgY29uZmlnLndhcm5IYW5kbGVyLmNhbGwobnVsbCwg
bXNnLCB2bSwgdHJhY2UpO1xuICAgIH0gZWxzZSBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5z
aWxlbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIltWdWUgd2Fybl06IFwiICsgbXNnICsg
dHJhY2UpKTtcbiAgICB9XG4gIH07XG5cbiAgdGlwID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAg
ICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLndh
cm4oXCJbVnVlIHRpcF06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9u
ZW50VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICBmb3JtYXRDb21w
b25lbnROYW1lID0gZnVuY3Rpb24gKHZtLCBpbmNsdWRlRmlsZSkge1xuICAgIGlmICh2bS4kcm9v
dCA9PT0gdm0pIHtcbiAgICAgIHJldHVybiAnPFJvb3Q+J1xuICAgIH1cbiAgICB2YXIgbmFtZSA9
IHR5cGVvZiB2bSA9PT0gJ3N0cmluZydcbiAgICAgID8gdm1cbiAgICAgIDogdHlwZW9mIHZtID09
PSAnZnVuY3Rpb24nICYmIHZtLm9wdGlvbnNcbiAgICAgICAgPyB2bS5vcHRpb25zLm5hbWVcbiAg
ICAgICAgOiB2bS5faXNWdWVcbiAgICAgICAgICA/IHZtLiRvcHRpb25zLm5hbWUgfHwgdm0uJG9w
dGlvbnMuX2NvbXBvbmVudFRhZ1xuICAgICAgICAgIDogdm0ubmFtZTtcblxuICAgIHZhciBmaWxl
ID0gdm0uX2lzVnVlICYmIHZtLiRvcHRpb25zLl9fZmlsZTtcbiAgICBpZiAoIW5hbWUgJiYgZmls
ZSkge1xuICAgICAgdmFyIG1hdGNoID0gZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC52dWUkLyk7
XG4gICAgICBuYW1lID0gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIChc
biAgICAgIChuYW1lID8gKFwiPFwiICsgKGNsYXNzaWZ5KG5hbWUpKSArIFwiPlwiKSA6IFwiPEFu
b255bW91cz5cIikgK1xuICAgICAgKGZpbGUgJiYgaW5jbHVkZUZpbGUgIT09IGZhbHNlID8gKFwi
IGF0IFwiICsgZmlsZSkgOiAnJylcbiAgICApXG4gIH07XG5cbiAgdmFyIHJlcGVhdCA9IGZ1bmN0
aW9uIChzdHIsIG4pIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgd2hpbGUgKG4pIHtcbiAgICAg
IGlmIChuICUgMiA9PT0gMSkgeyByZXMgKz0gc3RyOyB9XG4gICAgICBpZiAobiA+IDEpIHsgc3Ry
ICs9IHN0cjsgfVxuICAgICAgbiA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9O1xu
XG4gIHZhciBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gZnVuY3Rpb24gKHZtKSB7XG4gICAgaWYg
KHZtLl9pc1Z1ZSAmJiB2bS4kcGFyZW50KSB7XG4gICAgICB2YXIgdHJlZSA9IFtdO1xuICAgICAg
dmFyIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICB3aGlsZSAodm0pIHtcbiAg
ICAgICAgaWYgKHRyZWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gdHJlZVt0
cmVlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0LmNvbnN0cnVjdG9yID09PSB2bS5j
b25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlKys7XG4g
ICAgICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAg
ICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID4gMCkge1xuICAgICAgICAg
ICAgdHJlZVt0cmVlLmxlbmd0aCAtIDFdID0gW2xhc3QsIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5j
ZV07XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPSAwO1xuICAgICAgICAg
IH1cbiAgICAgICAgfVxuICAgICAgICB0cmVlLnB1c2godm0pO1xuICAgICAgICB2bSA9IHZtLiRw
YXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ1xcblxcbmZvdW5kIGluXFxuXFxuJyArIHRy
ZWVcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodm0sIGkpIHsgcmV0dXJuIChcIlwiICsgKGkgPT09
IDAgPyAnLS0tPiAnIDogcmVwZWF0KCcgJywgNSArIGkgKiAyKSkgKyAoQXJyYXkuaXNBcnJheSh2
bSlcbiAgICAgICAgICAgID8gKChmb3JtYXRDb21wb25lbnROYW1lKHZtWzBdKSkgKyBcIi4uLiAo
XCIgKyAodm1bMV0pICsgXCIgcmVjdXJzaXZlIGNhbGxzKVwiKVxuICAgICAgICAgICAgOiBmb3Jt
YXRDb21wb25lbnROYW1lKHZtKSkpOyB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICB9IGVs
c2Uge1xuICAgICAgcmV0dXJuIChcIlxcblxcbihmb3VuZCBpbiBcIiArIChmb3JtYXRDb21wb25l
bnROYW1lKHZtKSkgKyBcIilcIilcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlv
biBoYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAoY29uZmlnLmVycm9ySGFuZGxl
cikge1xuICAgIGNvbmZpZy5lcnJvckhhbmRsZXIuY2FsbChudWxsLCBlcnIsIHZtLCBpbmZvKTtc
biAgfSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgd2FybigoXCJFcnJvciBpbiBcIiArIGluZm8gKyBcIjogXFxcIlwiICsgKGVy
ci50b1N0cmluZygpKSArIFwiXFxcIlwiKSwgdm0pO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgZWxzZSAqL1xuICAgIGlmIChpbkJyb3dzZXIgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1
bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cbi8qIGdsb2JhbHMgTXV0YXRp
b25PYnNlcnZlciAqL1xuXG4vLyBjYW4gd2UgdXNlIF9fcHJvdG9fXz9cbnZhciBoYXNQcm90byA9
ICdfX3Byb3RvX18nIGluIHt9O1xuXG4vLyBCcm93c2VyIGVudmlyb25tZW50IHNuaWZmaW5nXG52
YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgVUEgPSBp
bkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZh
ciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAm
JiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRl
eE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSBVQSAmJiBVQS5pbmRleE9mKCdhbmRy
b2lkJykgPiAwO1xudmFyIGlzSU9TID0gVUEgJiYgL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0
KFVBKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAh
aXNFZGdlO1xuXG4vLyBGaXJlZml4IGhhcyBhIFwid2F0Y2hcIiBmdW5jdGlvbiBvbiBPYmplY3Qu
cHJvdG90eXBlLi4uXG52YXIgbmF0aXZlV2F0Y2ggPSAoe30pLndhdGNoO1xuXG52YXIgc3VwcG9y
dHNQYXNzaXZlID0gZmFsc2U7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9w
dHMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xu
ICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqL1xuICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0p
KTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUnLCBudWxsLCBvcHRzKTtcbiAgfSBj
YXRjaCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNhdXNl
IHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVyLXJlbmRlcmVyIGNhbiBz
ZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1bmN0
aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIgJiYgdHlwZW9mIGdsb2JhbCAhPT0g
J3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVzZW5jZSBvZiB2dWUtc2VydmVyLXJl
bmRlcmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBzaGltbWluZyB0aGUgcHJvY2Vzc1xu
ICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10uZW52LlZVRV9FTlYgPT09ICdzZXJ2
ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1c
biAgcmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0IGRldnRvb2xzXG52YXIgZGV2dG9v
bHMgPSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG5c
bi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpc05hdGl2ZSAoQ3Rvcikge1xu
ICByZXR1cm4gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0
KEN0b3IudG9TdHJpbmcoKSlcbn1cblxudmFyIGhhc1N5bWJvbCA9XG4gIHR5cGVvZiBTeW1ib2wg
IT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFN5bWJvbCkgJiZcbiAgdHlwZW9mIFJlZmxlY3Qg
IT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFJlZmxlY3Qub3duS2V5cyk7XG5cbi8qKlxuICog
RGVmZXIgYSB0YXNrIHRvIGV4ZWN1dGUgaXQgYXN5bmNocm9ub3VzbHkuXG4gKi9cbnZhciBuZXh0
VGljayA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsYmFja3MgPSBbXTtcbiAgdmFyIHBlbmRp
bmcgPSBmYWxzZTtcbiAgdmFyIHRpbWVyRnVuYztcblxuICBmdW5jdGlvbiBuZXh0VGlja0hhbmRs
ZXIgKCkge1xuICAgIHBlbmRpbmcgPSBmYWxzZTtcbiAgICB2YXIgY29waWVzID0gY2FsbGJhY2tz
LnNsaWNlKDApO1xuICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY29waWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb3BpZXNbaV0oKTtcbiAgICB9XG4g
IH1cblxuICAvLyB0aGUgbmV4dFRpY2sgYmVoYXZpb3IgbGV2ZXJhZ2VzIHRoZSBtaWNyb3Rhc2sg
cXVldWUsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZFxuICAvLyB2aWEgZWl0aGVyIG5hdGl2ZSBQcm9t
aXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbiAgLy8gTXV0YXRpb25PYnNlcnZlciBoYXMg
d2lkZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBpcyBzZXJpb3VzbHkgYnVnZ2VkIGluXG4gIC8vIFVJ
V2ViVmlldyBpbiBpT1MgPj0gOS4zLjMgd2hlbiB0cmlnZ2VyZWQgaW4gdG91Y2ggZXZlbnQgaGFu
ZGxlcnMuIEl0XG4gIC8vIGNvbXBsZXRlbHkgc3RvcHMgd29ya2luZyBhZnRlciB0cmlnZ2VyaW5n
IGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbiAgLy8gUHJvbWlzZSBpcyBhdmFpbGFibGUs
IHdlIHdpbGwgdXNlIGl0OlxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVv
ZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm9taXNlKSkge1xuICAgIHZh
ciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgdmFyIGxvZ0Vycm9yID0gZnVuY3Rpb24gKGVy
cikgeyBjb25zb2xlLmVycm9yKGVycik7IH07XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkg
e1xuICAgICAgcC50aGVuKG5leHRUaWNrSGFuZGxlcikuY2F0Y2gobG9nRXJyb3IpO1xuICAgICAg
Ly8gaW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlzZS50aGVuIGRvZXNuJ3QgY29tcGxl
dGVseSBicmVhaywgYnV0XG4gICAgICAvLyBpdCBjYW4gZ2V0IHN0dWNrIGluIGEgd2VpcmQgc3Rh
dGUgd2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0aGVcbiAgICAgIC8vIG1pY3JvdGFz
ayBxdWV1ZSBidXQgdGhlIHF1ZXVlIGlzbid0IGJlaW5nIGZsdXNoZWQsIHVudGlsIHRoZSBicm93
c2VyXG4gICAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVyIHdvcmssIGUuZy4gaGFuZGxlIGEg
dGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAgIC8vIFwiZm9yY2VcIiB0aGUgbWljcm90YXNr
IHF1ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVtcHR5IHRpbWVyLlxuICAgICAgaWYg
KGlzSU9TKSB7IHNldFRpbWVvdXQobm9vcCk7IH1cbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGVv
ZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNOYXRpdmUoTXV0
YXRpb25PYnNlcnZlcikgfHxcbiAgICAvLyBQaGFudG9tSlMgYW5kIGlPUyA3LnhcbiAgICBNdXRh
dGlvbk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25z
dHJ1Y3Rvcl0nXG4gICkpIHtcbiAgICAvLyB1c2UgTXV0YXRpb25PYnNlcnZlciB3aGVyZSBuYXRp
dmUgUHJvbWlzZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgIC8vIGUuZy4gUGhhbnRvbUpTIElFMTEs
IGlPUzcsIEFuZHJvaWQgNC40XG4gICAgdmFyIGNvdW50ZXIgPSAxO1xuICAgIHZhciBvYnNlcnZl
ciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG5leHRUaWNrSGFuZGxlcik7XG4gICAgdmFyIHRleHRO
b2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGNvdW50ZXIpKTtcbiAgICBvYnNl
cnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAg
fSk7XG4gICAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgY291bnRlciA9IChjb3Vu
dGVyICsgMSkgJSAyO1xuICAgICAgdGV4dE5vZGUuZGF0YSA9IFN0cmluZyhjb3VudGVyKTtcbiAg
ICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIGZhbGxiYWNrIHRvIHNldFRpbWVvdXRcbiAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAg
ICAgIHNldFRpbWVvdXQobmV4dFRpY2tIYW5kbGVyLCAwKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0
dXJuIGZ1bmN0aW9uIHF1ZXVlTmV4dFRpY2sgKGNiLCBjdHgpIHtcbiAgICB2YXIgX3Jlc29sdmU7
XG4gICAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGNiKSB7XG4gICAg
ICAgIHRyeSB7XG4gICAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7
XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgY3R4LCAnbmV4dFRpY2snKTtcbiAgICAgICAgfVxu
ICAgICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAgICBfcmVzb2x2ZShjdHgpO1xuICAg
ICAgfVxuICAgIH0pO1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IHRydWU7
XG4gICAgICB0aW1lckZ1bmMoKTtcbiAgICB9XG4gICAgaWYgKCFjYiAmJiB0eXBlb2YgUHJvbWlz
ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAo
cmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIH0p
XG4gICAgfVxuICB9XG59KSgpO1xuXG52YXIgX1NldDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuaWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFNldCkpIHtcbiAg
Ly8gdXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUuXG4gIF9TZXQgPSBTZXQ7XG59IGVsc2Ug
e1xuICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZpbGwgdGhhdCBvbmx5IHdvcmtzIHdpdGgg
cHJpbWl0aXZlIGtleXMuXG4gIF9TZXQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNl
dCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICAg
IFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChrZXkpIHtcbiAgICAgIHJldHVybiB0
aGlzLnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1
bmN0aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtrZXldID0gdHJ1ZTtcbiAgICB9O1xu
ICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhciAoKSB7XG4gICAgICB0aGlz
LnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtcblxuICAgIHJldHVybiBTZXQ7XG4g
IH0oKSk7XG59XG5cbi8qICAqL1xuXG5cbnZhciB1aWQgPSAwO1xuXG4vKipcbiAqIEEgZGVwIGlz
IGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZVxuICogZGlyZWN0aXZlcyBzdWJz
Y3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0aW9uIERlcCAoKSB7XG4gIHRoaXMu
aWQgPSB1aWQrKztcbiAgdGhpcy5zdWJzID0gW107XG59O1xuXG5EZXAucHJvdG90eXBlLmFkZFN1
YiA9IGZ1bmN0aW9uIGFkZFN1YiAoc3ViKSB7XG4gIHRoaXMuc3Vicy5wdXNoKHN1Yik7XG59O1xu
XG5EZXAucHJvdG90eXBlLnJlbW92ZVN1YiA9IGZ1bmN0aW9uIHJlbW92ZVN1YiAoc3ViKSB7XG4g
IHJlbW92ZSh0aGlzLnN1YnMsIHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLmRlcGVuZCA9IGZ1
bmN0aW9uIGRlcGVuZCAoKSB7XG4gIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgRGVwLnRhcmdldC5h
ZGREZXAodGhpcyk7XG4gIH1cbn07XG5cbkRlcC5wcm90b3R5cGUubm90aWZ5ID0gZnVuY3Rpb24g
bm90aWZ5ICgpIHtcbiAgLy8gc3RhYmlsaXplIHRoZSBzdWJzY3JpYmVyIGxpc3QgZmlyc3RcbiAg
dmFyIHN1YnMgPSB0aGlzLnN1YnMuc2xpY2UoKTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdWJz
Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0udXBkYXRlKCk7XG4gIH1cbn07XG5c
bi8vIHRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZC5cbi8vIHRoaXMg
aXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb25seSBvbmVcbi8vIHdh
dGNoZXIgYmVpbmcgZXZhbHVhdGVkIGF0IGFueSB0aW1lLlxuRGVwLnRhcmdldCA9IG51bGw7XG52
YXIgdGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVzaFRhcmdldCAoX3RhcmdldCkge1xu
ICBpZiAoRGVwLnRhcmdldCkgeyB0YXJnZXRTdGFjay5wdXNoKERlcC50YXJnZXQpOyB9XG4gIERl
cC50YXJnZXQgPSBfdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuICBEZXAu
dGFyZ2V0ID0gdGFyZ2V0U3RhY2sucG9wKCk7XG59XG5cbi8qXG4gKiBub3QgdHlwZSBjaGVja2lu
ZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAqIGR5bmFt
aWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlwZVxuICovXG5cbnZhciBh
cnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFycmF5TWV0aG9kcyA9IE9iamVjdC5j
cmVhdGUoYXJyYXlQcm90byk7W1xuICAncHVzaCcsXG4gICdwb3AnLFxuICAnc2hpZnQnLFxuICAn
dW5zaGlmdCcsXG4gICdzcGxpY2UnLFxuICAnc29ydCcsXG4gICdyZXZlcnNlJ1xuXVxuLmZvckVh
Y2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBvcmlnaW5hbCBtZXRob2RcbiAgdmFy
IG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBkZWYoYXJyYXlNZXRob2RzLCBtZXRo
b2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3Vt
ZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRz
WyBsZW4gXTtcblxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtc
biAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNo
IChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgY2FzZSAndW5zaGlmdCc6XG4g
ICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGlj
ZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAg
ICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAg
ICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1
bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHdoZW4g
YSByZWFjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQsIHRoZSBuZXcgdmFsdWUgaXNcbiAqIGFsc28gY29u
dmVydGVkIHRvIGJlY29tZSByZWFjdGl2ZS4gSG93ZXZlciB3aGVuIHBhc3NpbmcgZG93biBwcm9w
cyxcbiAqIHdlIGRvbid0IHdhbnQgdG8gZm9yY2UgY29udmVyc2lvbiBiZWNhdXNlIHRoZSB2YWx1
ZSBtYXkgYmUgYSBuZXN0ZWQgdmFsdWVcbiAqIHVuZGVyIGEgZnJvemVuIGRhdGEgc3RydWN0dXJl
LiBDb252ZXJ0aW5nIGl0IHdvdWxkIGRlZmVhdCB0aGUgb3B0aW1pemF0aW9uLlxuICovXG52YXIg
b2JzZXJ2ZXJTdGF0ZSA9IHtcbiAgc2hvdWxkQ29udmVydDogdHJ1ZVxufTtcblxuLyoqXG4gKiBP
YnNlcnZlciBjbGFzcyB0aGF0IGFyZSBhdHRhY2hlZCB0byBlYWNoIG9ic2VydmVkXG4gKiBvYmpl
Y3QuIE9uY2UgYXR0YWNoZWQsIHRoZSBvYnNlcnZlciBjb252ZXJ0cyB0YXJnZXRcbiAqIG9iamVj
dCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0XG4gKiBjb2xsZWN0IGRl
cGVuZGVuY2llcyBhbmQgZGlzcGF0Y2hlcyB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBm
dW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlz
LmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19v
Yl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhciBhdWdt
ZW50ID0gaGFzUHJvdG9cbiAgICAgID8gcHJvdG9BdWdtZW50XG4gICAgICA6IGNvcHlBdWdtZW50
O1xuICAgIGF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICB0aGlz
Lm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtc
biAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBhbmQgY29udmVy
dCB0aGVtIGludG9cbiAqIGdldHRlci9zZXR0ZXJzLiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBi
ZSBjYWxsZWQgd2hlblxuICogdmFsdWUgdHlwZSBpcyBPYmplY3QuXG4gKi9cbk9ic2VydmVyLnBy
b3RvdHlwZS53YWxrID0gZnVuY3Rpb24gd2FsayAob2JqKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0
LmtleXMob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4g
ICAgZGVmaW5lUmVhY3RpdmUkJDEob2JqLCBrZXlzW2ldLCBvYmpba2V5c1tpXV0pO1xuICB9XG59
O1xuXG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1zLlxuICovXG5PYnNlcnZl
ci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2ZUFycmF5IChpdGVtcykg
e1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
IG9ic2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJzXG5cbi8qKlxuICogQXVn
bWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGludGVyY2VwdGluZ1xuICogdGhlIHBy
b3RvdHlwZSBjaGFpbiB1c2luZyBfX3Byb3RvX19cbiAqL1xuZnVuY3Rpb24gcHJvdG9BdWdtZW50
ICh0YXJnZXQsIHNyYywga2V5cykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xu
ICB0YXJnZXQuX19wcm90b19fID0gc3JjO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXByb3RvICov
XG59XG5cbi8qKlxuICogQXVnbWVudCBhbiB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmlu
aW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQg
Ki9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZh
ciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtl
eXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4g
KiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAq
IHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBv
ciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAq
L1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVj
dCh2YWx1ZSkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFs
dWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAg
IG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIG9ic2VydmVyU3RhdGUuc2hv
dWxkQ29udmVydCAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5Lmlz
QXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4
dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5l
dyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBv
Yi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVh
Y3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2
ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlcixcbiAgc2hhbGxv
d1xuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBw
cm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAv
LyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHBy
b3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3Bl
cnR5LnNldDtcblxuICB2YXIgY2hpbGRPYiA9ICFzaGFsbG93ICYmIG9ic2VydmUodmFsKTtcbiAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxc
biAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiByZWFjdGl2ZUdldHRl
ciAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFs
O1xuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAgICAg
ICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAgICAg
ICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGRlcGVu
ZEFycmF5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4g
ICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAgICAg
IHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAvKiBl
c2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09IHZh
bHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAg
IHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUg
Ki9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGN1
c3RvbVNldHRlcikge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAgIH1cbiAgICAgIGlm
IChzZXR0ZXIpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBuZXdWYWwpO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgdmFsID0gbmV3VmFsO1xuICAgICAgfVxuICAgICAgY2hpbGRPYiA9ICFz
aGFsbG93ICYmIG9ic2VydmUobmV3VmFsKTtcbiAgICAgIGRlcC5ub3RpZnkoKTtcbiAgICB9XG4g
IH0pO1xufVxuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gQWRkcyB0aGUg
bmV3IHByb3BlcnR5IGFuZFxuICogdHJpZ2dlcnMgY2hhbmdlIG5vdGlmaWNhdGlvbiBpZiB0aGUg
cHJvcGVydHkgZG9lc24ndFxuICogYWxyZWFkeSBleGlzdC5cbiAqL1xuZnVuY3Rpb24gc2V0ICh0
YXJnZXQsIGtleSwgdmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxp
ZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRhcmdldC5sZW5ndGggPSBNYXRoLm1heCh0YXJnZXQu
bGVuZ3RoLCBrZXkpO1xuICAgIHRhcmdldC5zcGxpY2Uoa2V5LCAxLCB2YWwpO1xuICAgIHJldHVy
biB2YWxcbiAgfVxuICBpZiAoaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHRhcmdldFtrZXld
ID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0KS5fX29iX187
XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdBdm9pZCBh
ZGRpbmcgcmVhY3RpdmUgcHJvcGVydGllcyB0byBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAk
ZGF0YSAnICtcbiAgICAgICdhdCBydW50aW1lIC0gZGVjbGFyZSBpdCB1cGZyb250IGluIHRoZSBk
YXRhIG9wdGlvbi4nXG4gICAgKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKCFvYikge1xu
ICAgIHRhcmdldFtrZXldID0gdmFsO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBkZWZpbmVSZWFj
dGl2ZSQkMShvYi52YWx1ZSwga2V5LCB2YWwpO1xuICBvYi5kZXAubm90aWZ5KCk7XG4gIHJldHVy
biB2YWxcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBwcm9wZXJ0eSBhbmQgdHJpZ2dlciBjaGFuZ2Ug
aWYgbmVjZXNzYXJ5LlxuICovXG5mdW5jdGlvbiBkZWwgKHRhcmdldCwga2V5KSB7XG4gIGlmIChB
cnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNWYWxpZEFycmF5SW5kZXgoa2V5KSkge1xuICAgIHRh
cmdldC5zcGxpY2Uoa2V5LCAxKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2IgPSAodGFyZ2V0
KS5fX29iX187XG4gIGlmICh0YXJnZXQuX2lzVnVlIHx8IChvYiAmJiBvYi52bUNvdW50KSkge1xu
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAg
ICdBdm9pZCBkZWxldGluZyBwcm9wZXJ0aWVzIG9uIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290
ICRkYXRhICcgK1xuICAgICAgJy0ganVzdCBzZXQgaXQgdG8gbnVsbC4nXG4gICAgKTtcbiAgICBy
ZXR1cm5cbiAgfVxuICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkpIHtcbiAgICByZXR1cm5cbiAg
fVxuICBkZWxldGUgdGFyZ2V0W2tleV07XG4gIGlmICghb2IpIHtcbiAgICByZXR1cm5cbiAgfVxu
ICBvYi5kZXAubm90aWZ5KCk7XG59XG5cbi8qKlxuICogQ29sbGVjdCBkZXBlbmRlbmNpZXMgb24g
YXJyYXkgZWxlbWVudHMgd2hlbiB0aGUgYXJyYXkgaXMgdG91Y2hlZCwgc2luY2VcbiAqIHdlIGNh
bm5vdCBpbnRlcmNlcHQgYXJyYXkgZWxlbWVudCBhY2Nlc3MgbGlrZSBwcm9wZXJ0eSBnZXR0ZXJz
LlxuICovXG5mdW5jdGlvbiBkZXBlbmRBcnJheSAodmFsdWUpIHtcbiAgZm9yICh2YXIgZSA9ICh2
b2lkIDApLCBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGUgPSB2
YWx1ZVtpXTtcbiAgICBlICYmIGUuX19vYl9fICYmIGUuX19vYl9fLmRlcC5kZXBlbmQoKTtcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgZGVwZW5kQXJyYXkoZSk7XG4gICAgfVxu
ICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIE9wdGlvbiBvdmVyd3JpdGluZyBzdHJhdGVnaWVz
IGFyZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGVcbiAqIGhvdyB0byBtZXJnZSBhIHBhcmVudCBvcHRp
b24gdmFsdWUgYW5kIGEgY2hpbGQgb3B0aW9uXG4gKiB2YWx1ZSBpbnRvIHRoZSBmaW5hbCB2YWx1
ZS5cbiAqL1xudmFyIHN0cmF0cyA9IGNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7XG5cbi8q
KlxuICogT3B0aW9ucyB3aXRoIHJlc3RyaWN0aW9uc1xuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBzdHJhdHMuZWwgPSBzdHJhdHMucHJvcHNEYXRh
ID0gZnVuY3Rpb24gKHBhcmVudCwgY2hpbGQsIHZtLCBrZXkpIHtcbiAgICBpZiAoIXZtKSB7XG4g
ICAgICB3YXJuKFxuICAgICAgICBcIm9wdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY2FuIG9u
bHkgYmUgdXNlZCBkdXJpbmcgaW5zdGFuY2UgXCIgK1xuICAgICAgICAnY3JlYXRpb24gd2l0aCB0
aGUgYG5ld2Aga2V5d29yZC4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFN0
cmF0KHBhcmVudCwgY2hpbGQpXG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIHRoYXQgcmVjdXJz
aXZlbHkgbWVyZ2VzIHR3byBkYXRhIG9iamVjdHMgdG9nZXRoZXIuXG4gKi9cbmZ1bmN0aW9uIG1l
cmdlRGF0YSAodG8sIGZyb20pIHtcbiAgaWYgKCFmcm9tKSB7IHJldHVybiB0byB9XG4gIHZhciBr
ZXksIHRvVmFsLCBmcm9tVmFsO1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyb20pO1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ld
O1xuICAgIHRvVmFsID0gdG9ba2V5XTtcbiAgICBmcm9tVmFsID0gZnJvbVtrZXldO1xuICAgIGlm
ICghaGFzT3duKHRvLCBrZXkpKSB7XG4gICAgICBzZXQodG8sIGtleSwgZnJvbVZhbCk7XG4gICAg
fSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHRvVmFsKSAmJiBpc1BsYWluT2JqZWN0KGZyb21WYWwp
KSB7XG4gICAgICBtZXJnZURhdGEodG9WYWwsIGZyb21WYWwpO1xuICAgIH1cbiAgfVxuICByZXR1
cm4gdG9cbn1cblxuLyoqXG4gKiBEYXRhXG4gKi9cbmZ1bmN0aW9uIG1lcmdlRGF0YU9yRm4gKFxu
ICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7XG4gIGlmICghdm0pIHtcbiAgICAv
LyBpbiBhIFZ1ZS5leHRlbmQgbWVyZ2UsIGJvdGggc2hvdWxkIGJlIGZ1bmN0aW9uc1xuICAgIGlm
ICghY2hpbGRWYWwpIHtcbiAgICAgIHJldHVybiBwYXJlbnRWYWxcbiAgICB9XG4gICAgaWYgKCFw
YXJlbnRWYWwpIHtcbiAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgIH1cbiAgICAvLyB3aGVuIHBh
cmVudFZhbCAmIGNoaWxkVmFsIGFyZSBib3RoIHByZXNlbnQsXG4gICAgLy8gd2UgbmVlZCB0byBy
ZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlXG4gICAgLy8gbWVyZ2VkIHJlc3VsdCBv
ZiBib3RoIGZ1bmN0aW9ucy4uLiBubyBuZWVkIHRvXG4gICAgLy8gY2hlY2sgaWYgcGFyZW50VmFs
IGlzIGEgZnVuY3Rpb24gaGVyZSBiZWNhdXNlXG4gICAgLy8gaXQgaGFzIHRvIGJlIGEgZnVuY3Rp
b24gdG8gcGFzcyBwcmV2aW91cyBtZXJnZXMuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZERh
dGFGbiAoKSB7XG4gICAgICByZXR1cm4gbWVyZ2VEYXRhKFxuICAgICAgICB0eXBlb2YgY2hpbGRW
YWwgPT09ICdmdW5jdGlvbicgPyBjaGlsZFZhbC5jYWxsKHRoaXMpIDogY2hpbGRWYWwsXG4gICAg
ICAgIHR5cGVvZiBwYXJlbnRWYWwgPT09ICdmdW5jdGlvbicgPyBwYXJlbnRWYWwuY2FsbCh0aGlz
KSA6IHBhcmVudFZhbFxuICAgICAgKVxuICAgIH1cbiAgfSBlbHNlIGlmIChwYXJlbnRWYWwgfHwg
Y2hpbGRWYWwpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkSW5zdGFuY2VEYXRhRm4gKCkg
e1xuICAgICAgLy8gaW5zdGFuY2UgbWVyZ2VcbiAgICAgIHZhciBpbnN0YW5jZURhdGEgPSB0eXBl
b2YgY2hpbGRWYWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtKVxu
ICAgICAgICA6IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVu
dFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtKVxuICAgICAg
ICA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChpbnN0YW5jZURhdGEpIHtcbiAgICAgICAgcmV0dXJu
IG1lcmdlRGF0YShpbnN0YW5jZURhdGEsIGRlZmF1bHREYXRhKVxuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgcmV0dXJuIGRlZmF1bHREYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnN0cmF0
cy5kYXRhID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7
XG4gIGlmICghdm0pIHtcbiAgICBpZiAoY2hpbGRWYWwgJiYgdHlwZW9mIGNoaWxkVmFsICE9PSAn
ZnVuY3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0
aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVyLWluc3RhbmNlIHZhbHVlIGluIGNv
bXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLicsXG4gICAgICAgIHZtXG4gICAgICAp
O1xuXG4gICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIHJldHVybiBtZXJnZURhdGFP
ckZuLmNhbGwodGhpcywgcGFyZW50VmFsLCBjaGlsZFZhbClcbiAgfVxuXG4gIHJldHVybiBtZXJn
ZURhdGFPckZuKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKVxufTtcblxuLyoqXG4gKiBIb29rcyBh
bmQgcHJvcHMgYXJlIG1lcmdlZCBhcyBhcnJheXMuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSG9vayAo
XG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWxcbikge1xuICByZXR1cm4gY2hpbGRWYWxcbiAgICA/
IHBhcmVudFZhbFxuICAgICAgPyBwYXJlbnRWYWwuY29uY2F0KGNoaWxkVmFsKVxuICAgICAgOiBB
cnJheS5pc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgIDogW2No
aWxkVmFsXVxuICAgIDogcGFyZW50VmFsXG59XG5cbkxJRkVDWUNMRV9IT09LUy5mb3JFYWNoKGZ1
bmN0aW9uIChob29rKSB7XG4gIHN0cmF0c1tob29rXSA9IG1lcmdlSG9vaztcbn0pO1xuXG4vKipc
biAqIEFzc2V0c1xuICpcbiAqIFdoZW4gYSB2bSBpcyBwcmVzZW50IChpbnN0YW5jZSBjcmVhdGlv
biksIHdlIG5lZWQgdG8gZG9cbiAqIGEgdGhyZWUtd2F5IG1lcmdlIGJldHdlZW4gY29uc3RydWN0
b3Igb3B0aW9ucywgaW5zdGFuY2VcbiAqIG9wdGlvbnMgYW5kIHBhcmVudCBvcHRpb25zLlxuICov
XG5mdW5jdGlvbiBtZXJnZUFzc2V0cyAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICB2YXIgcmVz
ID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCk7XG4gIHJldHVybiBjaGlsZFZhbFxu
ICAgID8gZXh0ZW5kKHJlcywgY2hpbGRWYWwpXG4gICAgOiByZXNcbn1cblxuQVNTRVRfVFlQRVMu
Zm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBzdHJhdHNbdHlwZSArICdzJ10gPSBtZXJnZUFz
c2V0cztcbn0pO1xuXG4vKipcbiAqIFdhdGNoZXJzLlxuICpcbiAqIFdhdGNoZXJzIGhhc2hlcyBz
aG91bGQgbm90IG92ZXJ3cml0ZSBvbmVcbiAqIGFub3RoZXIsIHNvIHdlIG1lcmdlIHRoZW0gYXMg
YXJyYXlzLlxuICovXG5zdHJhdHMud2F0Y2ggPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZh
bCkge1xuICAvLyB3b3JrIGFyb3VuZCBGaXJlZm94J3MgT2JqZWN0LnByb3RvdHlwZS53YXRjaC4u
LlxuICBpZiAocGFyZW50VmFsID09PSBuYXRpdmVXYXRjaCkgeyBwYXJlbnRWYWwgPSB1bmRlZmlu
ZWQ7IH1cbiAgaWYgKGNoaWxkVmFsID09PSBuYXRpdmVXYXRjaCkgeyBjaGlsZFZhbCA9IHVuZGVm
aW5lZDsgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjaGlsZFZhbCkgeyBy
ZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxuICBpZiAoIXBhcmVudFZh
bCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0ge307XG4gIGV4dGVuZChyZXQsIHBh
cmVudFZhbCk7XG4gIGZvciAodmFyIGtleSBpbiBjaGlsZFZhbCkge1xuICAgIHZhciBwYXJlbnQg
PSByZXRba2V5XTtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXldO1xuICAgIGlmIChwYXJl
bnQgJiYgIUFycmF5LmlzQXJyYXkocGFyZW50KSkge1xuICAgICAgcGFyZW50ID0gW3BhcmVudF07
XG4gICAgfVxuICAgIHJldFtrZXldID0gcGFyZW50XG4gICAgICA/IHBhcmVudC5jb25jYXQoY2hp
bGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGQpID8gY2hpbGQgOiBbY2hpbGRdO1xuICB9
XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2JqZWN0IGhhc2hlcy5cbiAqL1xu
c3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0cy5pbmplY3QgPVxuc3RyYXRz
LmNvbXB1dGVkID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgaWYgKCFwYXJl
bnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVs
bCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGlmIChjaGlsZFZhbCkgeyBleHRlbmQo
cmV0LCBjaGlsZFZhbCk7IH1cbiAgcmV0dXJuIHJldFxufTtcbnN0cmF0cy5wcm92aWRlID0gbWVy
Z2VEYXRhT3JGbjtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVs
dFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxk
VmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5c
bi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29t
cG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRz
KSB7XG4gICAgdmFyIGxvd2VyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGlzQnVpbHRJ
blRhZyhsb3dlcikgfHwgY29uZmlnLmlzUmVzZXJ2ZWRUYWcobG93ZXIpKSB7XG4gICAgICB3YXJu
KFxuICAgICAgICAnRG8gbm90IHVzZSBidWlsdC1pbiBvciByZXNlcnZlZCBIVE1MIGVsZW1lbnRz
IGFzIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2lkOiAnICsga2V5XG4gICAgICApO1xuICAgIH1c
biAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhbGwgcHJvcHMgb3B0aW9uIHN5bnRheCBhcmUgbm9y
bWFsaXplZCBpbnRvIHRoZVxuICogT2JqZWN0LWJhc2VkIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24g
bm9ybWFsaXplUHJvcHMgKG9wdGlvbnMpIHtcbiAgdmFyIHByb3BzID0gb3B0aW9ucy5wcm9wcztc
biAgaWYgKCFwcm9wcykgeyByZXR1cm4gfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBpLCB2YWws
IG5hbWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIGkgPSBwcm9wcy5sZW5n
dGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdmFsID0gcHJvcHNbaV07XG4gICAgICBpZiAo
dHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmFtZSA9IGNhbWVsaXplKHZhbCk7
XG4gICAgICAgIHJlc1tuYW1lXSA9IHsgdHlwZTogbnVsbCB9O1xuICAgICAgfSBlbHNlIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ3By
b3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC4nKTtcbiAgICAgIH1c
biAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHtcbiAgICBmb3IgKHZh
ciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgIHZhbCA9IHByb3BzW2tleV07XG4gICAgICBuYW1lID0g
Y2FtZWxpemUoa2V5KTtcbiAgICAgIHJlc1tuYW1lXSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAg
ICAgICA/IHZhbFxuICAgICAgICA6IHsgdHlwZTogdmFsIH07XG4gICAgfVxuICB9XG4gIG9wdGlv
bnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGFsbCBpbmplY3Rpb25zIGlu
dG8gT2JqZWN0LWJhc2VkIGZvcm1hdFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QgKG9w
dGlvbnMpIHtcbiAgdmFyIGluamVjdCA9IG9wdGlvbnMuaW5qZWN0O1xuICBpZiAoQXJyYXkuaXNB
cnJheShpbmplY3QpKSB7XG4gICAgdmFyIG5vcm1hbGl6ZWQgPSBvcHRpb25zLmluamVjdCA9IHt9
O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5qZWN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBu
b3JtYWxpemVkW2luamVjdFtpXV0gPSBpbmplY3RbaV07XG4gICAgfVxuICB9XG59XG5cbi8qKlxu
ICogTm9ybWFsaXplIHJhdyBmdW5jdGlvbiBkaXJlY3RpdmVzIGludG8gb2JqZWN0IGZvcm1hdC5c
biAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyAob3B0aW9ucykge1xuICB2YXIgZGly
cyA9IG9wdGlvbnMuZGlyZWN0aXZlcztcbiAgaWYgKGRpcnMpIHtcbiAgICBmb3IgKHZhciBrZXkg
aW4gZGlycykge1xuICAgICAgdmFyIGRlZiA9IGRpcnNba2V5XTtcbiAgICAgIGlmICh0eXBlb2Yg
ZGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGRpcnNba2V5XSA9IHsgYmluZDogZGVmLCB1
cGRhdGU6IGRlZiB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3
byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGlu
IGJvdGggaW5zdGFudGlhdGlvbiBhbmQgaW5oZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdl
T3B0aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hpbGQsXG4gIHZtXG4pIHtcbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaGVja0NvbXBvbmVudHMoY2hp
bGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNo
aWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxuXG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxkKTtcbiAg
bm9ybWFsaXplSW5qZWN0KGNoaWxkKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGlsZCk7XG4g
IHZhciBleHRlbmRzRnJvbSA9IGNoaWxkLmV4dGVuZHM7XG4gIGlmIChleHRlbmRzRnJvbSkge1xu
ICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGV4dGVuZHNGcm9tLCB2bSk7XG4gIH1c
biAgaWYgKGNoaWxkLm1peGlucykge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGQubWl4
aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBh
cmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgfVxuICB9XG4gIHZhciBvcHRpb25zID0g
e307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdlRmllbGQo
a2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3duKHBhcmVu
dCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlv
biBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBkZWZh
dWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNoaWxkW2tl
eV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICogUmVzb2x2
ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxkIGluc3Rh
bmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2VzdG9yIGNo
YWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0eXBlLFxu
ICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAg
aWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgYXNz
ZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9uIHZhcmlh
dGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNzZXRzW2lk
XSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093bihhc3Nl
dHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4gIHZhciBQ
YXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093bihhc3Nl
dHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1cbiAgLy8g
ZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRdIHx8IGFz
c2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtc
biAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0x
KSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcCAoXG4gIGtleSxcbiAgcHJvcE9w
dGlvbnMsXG4gIHByb3BzRGF0YSxcbiAgdm1cbikge1xuICB2YXIgcHJvcCA9IHByb3BPcHRpb25z
W2tleV07XG4gIHZhciBhYnNlbnQgPSAhaGFzT3duKHByb3BzRGF0YSwga2V5KTtcbiAgdmFyIHZh
bHVlID0gcHJvcHNEYXRhW2tleV07XG4gIC8vIGhhbmRsZSBib29sZWFuIHByb3BzXG4gIGlmIChp
c1R5cGUoQm9vbGVhbiwgcHJvcC50eXBlKSkge1xuICAgIGlmIChhYnNlbnQgJiYgIWhhc093bihw
cm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAo
IWlzVHlwZShTdHJpbmcsIHByb3AudHlwZSkgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0g
aHlwaGVuYXRlKGtleSkpKSB7XG4gICAgICB2YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8v
IGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2
YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUodm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2luY2Ug
dGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0byBv
YnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hvdWxkQ29udmVydCA9IG9ic2VydmVyU3RhdGUuc2hv
dWxkQ29udmVydDtcbiAgICBvYnNlcnZlclN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuICAg
IG9ic2VydmUodmFsdWUpO1xuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29udmVydCA9IHByZXZT
aG91bGRDb252ZXJ0O1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgYXNzZXJ0UHJvcChwcm9wLCBrZXksIHZhbHVlLCB2bSwgYWJzZW50KTtc
biAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgdmFsdWUg
b2YgYSBwcm9wLlxuICovXG5mdW5jdGlvbiBnZXRQcm9wRGVmYXVsdFZhbHVlICh2bSwgcHJvcCwg
a2V5KSB7XG4gIC8vIG5vIGRlZmF1bHQsIHJldHVybiB1bmRlZmluZWRcbiAgaWYgKCFoYXNPd24o
cHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICB2YXIgZGVm
ID0gcHJvcC5kZWZhdWx0O1xuICAvLyB3YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVsdHMg
Zm9yIE9iamVjdCAmIEFycmF5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIGlzT2JqZWN0KGRlZikpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQgZGVm
YXVsdCB2YWx1ZSBmb3IgcHJvcCBcIicgKyBrZXkgKyAnXCI6ICcgK1xuICAgICAgJ1Byb3BzIHdp
dGggdHlwZSBPYmplY3QvQXJyYXkgbXVzdCB1c2UgYSBmYWN0b3J5IGZ1bmN0aW9uICcgK1xuICAg
ICAgJ3RvIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZS4nLFxuICAgICAgdm1cbiAgICApO1xuICB9
XG4gIC8vIHRoZSByYXcgcHJvcCB2YWx1ZSB3YXMgYWxzbyB1bmRlZmluZWQgZnJvbSBwcmV2aW91
cyByZW5kZXIsXG4gIC8vIHJldHVybiBwcmV2aW91cyBkZWZhdWx0IHZhbHVlIHRvIGF2b2lkIHVu
bmVjZXNzYXJ5IHdhdGNoZXIgdHJpZ2dlclxuICBpZiAodm0gJiYgdm0uJG9wdGlvbnMucHJvcHNE
YXRhICYmXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhW2tleV0gPT09IHVuZGVmaW5lZCAmJlxu
ICAgIHZtLl9wcm9wc1trZXldICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHZtLl9w
cm9wc1trZXldXG4gIH1cbiAgLy8gY2FsbCBmYWN0b3J5IGZ1bmN0aW9uIGZvciBub24tRnVuY3Rp
b24gdHlwZXNcbiAgLy8gYSB2YWx1ZSBpcyBGdW5jdGlvbiBpZiBpdHMgcHJvdG90eXBlIGlzIGZ1
bmN0aW9uIGV2ZW4gYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gY29udGV4dFxuICByZXR1cm4g
dHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRUeXBlKHByb3AudHlwZSkgIT09ICdGdW5j
dGlvbidcbiAgICA/IGRlZi5jYWxsKHZtKVxuICAgIDogZGVmXG59XG5cbi8qKlxuICogQXNzZXJ0
IHdoZXRoZXIgYSBwcm9wIGlzIHZhbGlkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQcm9wIChcbiAg
cHJvcCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHZtLFxuICBhYnNlbnRcbikge1xuICBpZiAocHJv
cC5yZXF1aXJlZCAmJiBhYnNlbnQpIHtcbiAgICB3YXJuKFxuICAgICAgJ01pc3NpbmcgcmVxdWly
ZWQgcHJvcDogXCInICsgbmFtZSArICdcIicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJu
XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcbiAgICByZXR1
cm5cbiAgfVxuICB2YXIgdHlwZSA9IHByb3AudHlwZTtcbiAgdmFyIHZhbGlkID0gIXR5cGUgfHwg
dHlwZSA9PT0gdHJ1ZTtcbiAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgaWYgKHR5cGUpIHtc
biAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBbdHlwZV07XG4g
ICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZhbGlkOyBpKysp
IHtcbiAgICAgIHZhciBhc3NlcnRlZFR5cGUgPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlW2ldKTtc
biAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChhc3NlcnRlZFR5cGUuZXhwZWN0ZWRUeXBlIHx8ICcn
KTtcbiAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuICAgIH1cbiAgfVxuICBpZiAo
IXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sgZmFp
bGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyArXG4gICAgICAnIEV4cGVjdGVkICcgKyBl
eHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpICtcbiAgICAgICcsIGdvdCAn
ICsgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSkgKyAn
LicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRvciA9
IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0b3Io
dmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20gdmFs
aWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAgICAg
IHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9IC9eKFN0
cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9uIGFzc2Vy
dFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9
IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRUeXBlKSkg
e1xuICAgIHZhbGlkID0gdHlwZW9mIHZhbHVlID09PSBleHBlY3RlZFR5cGUudG9Mb3dlckNhc2Uo
KTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XG4gICAgdmFsaWQg
PSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdB
cnJheScpIHtcbiAgICB2YWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xu
ICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICB9XG4gIHJldHVybiB7XG4gICAg
dmFsaWQ6IHZhbGlkLFxuICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWRUeXBlXG4gIH1cbn1cblxu
LyoqXG4gKiBVc2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgYnVpbHQtaW4gdHlwZXMs
XG4gKiBiZWNhdXNlIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbCB3aGVuIHJ1bm5p
bmdcbiAqIGFjcm9zcyBkaWZmZXJlbnQgdm1zIC8gaWZyYW1lcy5cbiAqL1xuZnVuY3Rpb24gZ2V0
VHlwZSAoZm4pIHtcbiAgdmFyIG1hdGNoID0gZm4gJiYgZm4udG9TdHJpbmcoKS5tYXRjaCgvXlxc
cypmdW5jdGlvbiAoXFx3KykvKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAnJ1xufVxu
XG5mdW5jdGlvbiBpc1R5cGUgKHR5cGUsIGZuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShmbikp
IHtcbiAgICByZXR1cm4gZ2V0VHlwZShmbikgPT09IGdldFR5cGUodHlwZSlcbiAgfVxuICBmb3Ig
KHZhciBpID0gMCwgbGVuID0gZm4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZ2V0
VHlwZShmbltpXSkgPT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAg
fVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBmYWxzZVxufVxu
XG4vKiAgKi9cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYgd2lu
ZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAg
IHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZcbiAgICBwZXJm
LmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4gICAgbWFyayA9
IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAgIG1lYXN1cmUg
PSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVyZi5tZWFzdXJl
KG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFn
KTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1lYXN1
cmVzKG5hbWUpO1xuICAgIH07XG4gIH1cbn1cblxuLyogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBm
aWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICovXG5cbnZhciBp
bml0UHJveHk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVmaW5l
ZCxOYU4saXNGaW5pdGUsaXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2Rl
VVJJLGRlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcgK1xu
ICAgICdNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAs
TWFwLFNldCxKU09OLEludGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dz
ZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBr
ZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsga2V5
ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAgICAg
XCJyZWZlcmVuY2VkIGR1cmluZyByZW5kZXIuIE1ha2Ugc3VyZSB0byBkZWNsYXJlIHJlYWN0aXZl
IGRhdGEgXCIgK1xuICAgICAgXCJwcm9wZXJ0aWVzIGluIHRoZSBkYXRhIG9wdGlvbi5cIixcbiAg
ICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBlb2Yg
UHJveHkgIT09ICd1bmRlZmluZWQnICYmXG4gICAgUHJveHkudG9TdHJpbmcoKS5tYXRjaCgvbmF0
aXZlIGNvZGUvKTtcblxuICBpZiAoaGFzUHJveHkpIHtcbiAgICB2YXIgaXNCdWlsdEluTW9kaWZp
ZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhJyk7XG4g
ICAgY29uZmlnLmtleUNvZGVzID0gbmV3IFByb3h5KGNvbmZpZy5rZXlDb2Rlcywge1xuICAgICAg
c2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNC
dWlsdEluTW9kaWZpZXIoa2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwiQXZvaWQgb3ZlcndyaXRp
bmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4gY29uZmlnLmtleUNvZGVzOiAuXCIgKyBrZXkpKTtcbiAg
ICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRb
a2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9KTtcbiAgfVxuXG4gIHZhciBoYXNIYW5kbGVyID0ge1xuICAgIGhhczogZnVuY3Rpb24g
aGFzICh0YXJnZXQsIGtleSkge1xuICAgICAgdmFyIGhhcyA9IGtleSBpbiB0YXJnZXQ7XG4gICAg
ICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMoa2V5KSB8fCBrZXkuY2hhckF0KDApID09
PSAnXyc7XG4gICAgICBpZiAoIWhhcyAmJiAhaXNBbGxvd2VkKSB7XG4gICAgICAgIHdhcm5Ob25Q
cmVzZW50KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXMgfHwgIWlzQWxs
b3dlZFxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0
aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5n
JyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgIHdhcm5Ob25QcmVzZW50KHRhcmdldCwg
a2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtcblxu
ICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1Byb3h5
KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAgICAg
IHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRpb25z
LnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0SGFu
ZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBuZXcg
UHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5
ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rpb24g
Vk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0sXG4g
IGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnMsXG4gIGFzeW5jRmFjdG9yeVxuKSB7XG4gIHRo
aXMudGFnID0gdGFnO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0gY2hp
bGRyZW47XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlzLm5z
ID0gdW5kZWZpbmVkO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLmZ1bmN0aW9u
YWxDb250ZXh0ID0gdW5kZWZpbmVkO1xuICB0aGlzLmtleSA9IGRhdGEgJiYgZGF0YS5rZXk7XG4g
IHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IGNvbXBvbmVudE9wdGlvbnM7XG4gIHRoaXMuY29tcG9u
ZW50SW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICB0
aGlzLnJhdyA9IGZhbHNlO1xuICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gIHRoaXMuaXNSb290
SW5zZXJ0ID0gdHJ1ZTtcbiAgdGhpcy5pc0NvbW1lbnQgPSBmYWxzZTtcbiAgdGhpcy5pc0Nsb25l
ZCA9IGZhbHNlO1xuICB0aGlzLmlzT25jZSA9IGZhbHNlO1xuICB0aGlzLmFzeW5jRmFjdG9yeSA9
IGFzeW5jRmFjdG9yeTtcbiAgdGhpcy5hc3luY01ldGEgPSB1bmRlZmluZWQ7XG4gIHRoaXMuaXNB
c3luY1BsYWNlaG9sZGVyID0gZmFsc2U7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0g
eyBjaGlsZDoge30gfTtcblxuLy8gREVQUkVDQVRFRDogYWxpYXMgZm9yIGNvbXBvbmVudEluc3Rh
bmNlIGZvciBiYWNrd2FyZHMgY29tcGF0LlxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnBy
b3RvdHlwZUFjY2Vzc29ycy5jaGlsZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlz
LmNvbXBvbmVudEluc3RhbmNlXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVk5vZGUu
cHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIGNyZWF0ZUVtcHR5Vk5vZGUg
PSBmdW5jdGlvbiAodGV4dCkge1xuICBpZiAoIHRleHQgPT09IHZvaWQgMCApIHRleHQgPSAnJztc
blxuICB2YXIgbm9kZSA9IG5ldyBWTm9kZSgpO1xuICBub2RlLnRleHQgPSB0ZXh0O1xuICBub2Rl
LmlzQ29tbWVudCA9IHRydWU7XG4gIHJldHVybiBub2RlXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVU
ZXh0Vk5vZGUgKHZhbCkge1xuICByZXR1cm4gbmV3IFZOb2RlKHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB1bmRlZmluZWQsIFN0cmluZyh2YWwpKVxufVxuXG4vLyBvcHRpbWl6ZWQgc2hhbGxvdyBjbG9u
ZVxuLy8gdXNlZCBmb3Igc3RhdGljIG5vZGVzIGFuZCBzbG90IG5vZGVzIGJlY2F1c2UgdGhleSBt
YXkgYmUgcmV1c2VkIGFjcm9zc1xuLy8gbXVsdGlwbGUgcmVuZGVycywgY2xvbmluZyB0aGVtIGF2
b2lkcyBlcnJvcnMgd2hlbiBET00gbWFuaXB1bGF0aW9ucyByZWx5XG4vLyBvbiB0aGVpciBlbG0g
cmVmZXJlbmNlLlxuZnVuY3Rpb24gY2xvbmVWTm9kZSAodm5vZGUpIHtcbiAgdmFyIGNsb25lZCA9
IG5ldyBWTm9kZShcbiAgICB2bm9kZS50YWcsXG4gICAgdm5vZGUuZGF0YSxcbiAgICB2bm9kZS5j
aGlsZHJlbixcbiAgICB2bm9kZS50ZXh0LFxuICAgIHZub2RlLmVsbSxcbiAgICB2bm9kZS5jb250
ZXh0LFxuICAgIHZub2RlLmNvbXBvbmVudE9wdGlvbnMsXG4gICAgdm5vZGUuYXN5bmNGYWN0b3J5
XG4gICk7XG4gIGNsb25lZC5ucyA9IHZub2RlLm5zO1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9k
ZS5pc1N0YXRpYztcbiAgY2xvbmVkLmtleSA9IHZub2RlLmtleTtcbiAgY2xvbmVkLmlzQ29tbWVu
dCA9IHZub2RlLmlzQ29tbWVudDtcbiAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgcmV0dXJu
IGNsb25lZFxufVxuXG5mdW5jdGlvbiBjbG9uZVZOb2RlcyAodm5vZGVzKSB7XG4gIHZhciBsZW4g
PSB2bm9kZXMubGVuZ3RoO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbik7XG4gIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXNbaV0gPSBjbG9uZVZOb2RlKHZub2Rlc1tp
XSk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxudmFyIG5vcm1hbGl6ZUV2ZW50
ID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciBwYXNzaXZlID0gbmFtZS5jaGFyQXQo
MCkgPT09ICcmJztcbiAgbmFtZSA9IHBhc3NpdmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAg
dmFyIG9uY2UkJDEgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJ34nOyAvLyBQcmVmaXhlZCBsYXN0LCBj
aGVja2VkIGZpcnN0XG4gIG5hbWUgPSBvbmNlJCQxID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4g
IHZhciBjYXB0dXJlID0gbmFtZS5jaGFyQXQoMCkgPT09ICchJztcbiAgbmFtZSA9IGNhcHR1cmUg
PyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAg
IG9uY2U6IG9uY2UkJDEsXG4gICAgY2FwdHVyZTogY2FwdHVyZSxcbiAgICBwYXNzaXZlOiBwYXNz
aXZlXG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBjcmVhdGVGbkludm9rZXIgKGZucykge1xuICBmdW5j
dGlvbiBpbnZva2VyICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAg
ICB2YXIgZm5zID0gaW52b2tlci5mbnM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zKSkge1xu
ICAgICAgdmFyIGNsb25lZCA9IGZucy5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjbG9uZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2xvbmVkW2ldLmFwcGx5KG51bGwsIGFy
Z3VtZW50cyQxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmV0dXJuIGhhbmRs
ZXIgcmV0dXJuIHZhbHVlIGZvciBzaW5nbGUgaGFuZGxlcnNcbiAgICAgIHJldHVybiBmbnMuYXBw
bHkobnVsbCwgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuICBpbnZva2VyLmZucyA9IGZucztcbiAg
cmV0dXJuIGludm9rZXJcbn1cblxuZnVuY3Rpb24gdXBkYXRlTGlzdGVuZXJzIChcbiAgb24sXG4g
IG9sZE9uLFxuICBhZGQsXG4gIHJlbW92ZSQkMSxcbiAgdm1cbikge1xuICB2YXIgbmFtZSwgY3Vy
LCBvbGQsIGV2ZW50O1xuICBmb3IgKG5hbWUgaW4gb24pIHtcbiAgICBjdXIgPSBvbltuYW1lXTtc
biAgICBvbGQgPSBvbGRPbltuYW1lXTtcbiAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUp
O1xuICAgIGlmIChpc1VuZGVmKGN1cikpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJJbnZhbGlkIGhhbmRsZXIgZm9yIGV2
ZW50IFxcXCJcIiArIChldmVudC5uYW1lKSArIFwiXFxcIjogZ290IFwiICsgU3RyaW5nKGN1ciks
XG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGQpKSB7XG4g
ICAgICBpZiAoaXNVbmRlZihjdXIuZm5zKSkge1xuICAgICAgICBjdXIgPSBvbltuYW1lXSA9IGNy
ZWF0ZUZuSW52b2tlcihjdXIpO1xuICAgICAgfVxuICAgICAgYWRkKGV2ZW50Lm5hbWUsIGN1ciwg
ZXZlbnQub25jZSwgZXZlbnQuY2FwdHVyZSwgZXZlbnQucGFzc2l2ZSk7XG4gICAgfSBlbHNlIGlm
IChjdXIgIT09IG9sZCkge1xuICAgICAgb2xkLmZucyA9IGN1cjtcbiAgICAgIG9uW25hbWVdID0g
b2xkO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gb2xkT24pIHtcbiAgICBpZiAoaXNVbmRl
ZihvbltuYW1lXSkpIHtcbiAgICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAg
ICByZW1vdmUkJDEoZXZlbnQubmFtZSwgb2xkT25bbmFtZV0sIGV2ZW50LmNhcHR1cmUpO1xuICAg
IH1cbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gbWVyZ2VWTm9kZUhvb2sgKGRlZiwgaG9v
a0tleSwgaG9vaykge1xuICB2YXIgaW52b2tlcjtcbiAgdmFyIG9sZEhvb2sgPSBkZWZbaG9va0tl
eV07XG5cbiAgZnVuY3Rpb24gd3JhcHBlZEhvb2sgKCkge1xuICAgIGhvb2suYXBwbHkodGhpcywg
YXJndW1lbnRzKTtcbiAgICAvLyBpbXBvcnRhbnQ6IHJlbW92ZSBtZXJnZWQgaG9vayB0byBlbnN1
cmUgaXQncyBjYWxsZWQgb25seSBvbmNlXG4gICAgLy8gYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtc
biAgICByZW1vdmUoaW52b2tlci5mbnMsIHdyYXBwZWRIb29rKTtcbiAgfVxuXG4gIGlmIChpc1Vu
ZGVmKG9sZEhvb2spKSB7XG4gICAgLy8gbm8gZXhpc3RpbmcgaG9va1xuICAgIGludm9rZXIgPSBj
cmVhdGVGbkludm9rZXIoW3dyYXBwZWRIb29rXSk7XG4gIH0gZWxzZSB7XG4gICAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzRGVmKG9sZEhvb2suZm5zKSAmJiBpc1RydWUob2xk
SG9vay5tZXJnZWQpKSB7XG4gICAgICAvLyBhbHJlYWR5IGEgbWVyZ2VkIGludm9rZXJcbiAgICAg
IGludm9rZXIgPSBvbGRIb29rO1xuICAgICAgaW52b2tlci5mbnMucHVzaCh3cmFwcGVkSG9vayk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIHBsYWluIGhvb2tcbiAgICAgIGludm9r
ZXIgPSBjcmVhdGVGbkludm9rZXIoW29sZEhvb2ssIHdyYXBwZWRIb29rXSk7XG4gICAgfVxuICB9
XG5cbiAgaW52b2tlci5tZXJnZWQgPSB0cnVlO1xuICBkZWZbaG9va0tleV0gPSBpbnZva2VyO1xu
fVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YSAoXG4gIGRh
dGEsXG4gIEN0b3IsXG4gIHRhZ1xuKSB7XG4gIC8vIHdlIGFyZSBvbmx5IGV4dHJhY3RpbmcgcmF3
IHZhbHVlcyBoZXJlLlxuICAvLyB2YWxpZGF0aW9uIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgaGFu
ZGxlZCBpbiB0aGUgY2hpbGRcbiAgLy8gY29tcG9uZW50IGl0c2VsZi5cbiAgdmFyIHByb3BPcHRp
b25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNVbmRlZihwcm9wT3B0aW9ucykpIHtc
biAgICByZXR1cm5cbiAgfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBhdHRycyA9IGRhdGEuYXR0
cnM7XG4gIHZhciBwcm9wcyA9IGRhdGEucHJvcHM7XG4gIGlmIChpc0RlZihhdHRycykgfHwgaXNE
ZWYocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICB2
YXIgYWx0S2V5ID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIga2V5SW5Mb3dlckNhc2UgPSBrZXku
dG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSAhPT0ga2V5SW5Mb3dl
ckNhc2UgJiZcbiAgICAgICAgICBhdHRycyAmJiBoYXNPd24oYXR0cnMsIGtleUluTG93ZXJDYXNl
KVxuICAgICAgICApIHtcbiAgICAgICAgICB0aXAoXG4gICAgICAgICAgICBcIlByb3AgXFxcIlwi
ICsga2V5SW5Mb3dlckNhc2UgKyBcIlxcXCIgaXMgcGFzc2VkIHRvIGNvbXBvbmVudCBcIiArXG4g
ICAgICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh0YWcgfHwgQ3RvcikpICsgXCIsIGJ1dCB0
aGUgZGVjbGFyZWQgcHJvcCBuYW1lIGlzXCIgK1xuICAgICAgICAgICAgXCIgXFxcIlwiICsga2V5
ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMg
YXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIGNhbWVsQ2FzZWQgXCIgK1xuICAgICAgICAgICAgXCJw
cm9wcyBuZWVkIHRvIHVzZSB0aGVpciBrZWJhYi1jYXNlIGVxdWl2YWxlbnRzIHdoZW4gdXNpbmcg
aW4tRE9NIFwiICtcbiAgICAgICAgICAgIFwidGVtcGxhdGVzLiBZb3Ugc2hvdWxkIHByb2JhYmx5
IHVzZSBcXFwiXCIgKyBhbHRLZXkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBrZXkgKyBc
IlxcXCIuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaGVja1By
b3AocmVzLCBwcm9wcywga2V5LCBhbHRLZXksIHRydWUpIHx8XG4gICAgICBjaGVja1Byb3AocmVz
LCBhdHRycywga2V5LCBhbHRLZXksIGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xu
fVxuXG5mdW5jdGlvbiBjaGVja1Byb3AgKFxuICByZXMsXG4gIGhhc2gsXG4gIGtleSxcbiAgYWx0
S2V5LFxuICBwcmVzZXJ2ZVxuKSB7XG4gIGlmIChpc0RlZihoYXNoKSkge1xuICAgIGlmIChoYXNP
d24oaGFzaCwga2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2tleV07XG4gICAgICBpZiAo
IXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2tleV07XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoaGFzT3duKGhhc2gsIGFsdEtleSkpIHtcbiAgICAg
IHJlc1trZXldID0gaGFzaFthbHRLZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAg
ICBkZWxldGUgaGFzaFthbHRLZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9
XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG4vLyBUaGUgdGVtcGxhdGUgY29t
cGlsZXIgYXR0ZW1wdHMgdG8gbWluaW1pemUgdGhlIG5lZWQgZm9yIG5vcm1hbGl6YXRpb24gYnlc
bi8vIHN0YXRpY2FsbHkgYW5hbHl6aW5nIHRoZSB0ZW1wbGF0ZSBhdCBjb21waWxlIHRpbWUuXG4v
L1xuLy8gRm9yIHBsYWluIEhUTUwgbWFya3VwLCBub3JtYWxpemF0aW9uIGNhbiBiZSBjb21wbGV0
ZWx5IHNraXBwZWQgYmVjYXVzZSB0aGVcbi8vIGdlbmVyYXRlZCByZW5kZXIgZnVuY3Rpb24gaXMg
Z3VhcmFudGVlZCB0byByZXR1cm4gQXJyYXk8Vk5vZGU+LiBUaGVyZSBhcmVcbi8vIHR3byBjYXNl
cyB3aGVyZSBleHRyYSBub3JtYWxpemF0aW9uIGlzIG5lZWRlZDpcblxuLy8gMS4gV2hlbiB0aGUg
Y2hpbGRyZW4gY29udGFpbnMgY29tcG9uZW50cyAtIGJlY2F1c2UgYSBmdW5jdGlvbmFsIGNvbXBv
bmVudFxuLy8gbWF5IHJldHVybiBhbiBBcnJheSBpbnN0ZWFkIG9mIGEgc2luZ2xlIHJvb3QuIElu
IHRoaXMgY2FzZSwganVzdCBhIHNpbXBsZVxuLy8gbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQgLSBp
ZiBhbnkgY2hpbGQgaXMgYW4gQXJyYXksIHdlIGZsYXR0ZW4gdGhlIHdob2xlXG4vLyB0aGluZyB3
aXRoIEFycmF5LnByb3RvdHlwZS5jb25jYXQuIEl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb25seSAx
LWxldmVsIGRlZXBcbi8vIGJlY2F1c2UgZnVuY3Rpb25hbCBjb21wb25lbnRzIGFscmVhZHkgbm9y
bWFsaXplIHRoZWlyIG93biBjaGlsZHJlbi5cbmZ1bmN0aW9uIHNpbXBsZU5vcm1hbGl6ZUNoaWxk
cmVuIChjaGlsZHJlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsg
aSsrKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW5baV0pKSB7XG4gICAgICByZXR1
cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgY2hpbGRyZW4pXG4gICAgfVxuICB9
XG4gIHJldHVybiBjaGlsZHJlblxufVxuXG4vLyAyLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlu
cyBjb25zdHJ1Y3RzIHRoYXQgYWx3YXlzIGdlbmVyYXRlZCBuZXN0ZWQgQXJyYXlzLFxuLy8gZS5n
LiA8dGVtcGxhdGU+LCA8c2xvdD4sIHYtZm9yLCBvciB3aGVuIHRoZSBjaGlsZHJlbiBpcyBwcm92
aWRlZCBieSB1c2VyXG4vLyB3aXRoIGhhbmQtd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zIC8gSlNY
LiBJbiBzdWNoIGNhc2VzIGEgZnVsbCBub3JtYWxpemF0aW9uXG4vLyBpcyBuZWVkZWQgdG8gY2F0
ZXIgdG8gYWxsIHBvc3NpYmxlIHR5cGVzIG9mIGNoaWxkcmVuIHZhbHVlcy5cbmZ1bmN0aW9uIG5v
cm1hbGl6ZUNoaWxkcmVuIChjaGlsZHJlbikge1xuICByZXR1cm4gaXNQcmltaXRpdmUoY2hpbGRy
ZW4pXG4gICAgPyBbY3JlYXRlVGV4dFZOb2RlKGNoaWxkcmVuKV1cbiAgICA6IEFycmF5LmlzQXJy
YXkoY2hpbGRyZW4pXG4gICAgICA/IG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4oY2hpbGRyZW4pXG4g
ICAgICA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBpc1RleHROb2RlIChub2RlKSB7XG4gIHJl
dHVybiBpc0RlZihub2RlKSAmJiBpc0RlZihub2RlLnRleHQpICYmIGlzRmFsc2Uobm9kZS5pc0Nv
bW1lbnQpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4gKGNoaWxkcmVuLCBu
ZXN0ZWRJbmRleCkge1xuICB2YXIgcmVzID0gW107XG4gIHZhciBpLCBjLCBsYXN0O1xuICBmb3Ig
KGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBjID0gY2hpbGRyZW5baV07
XG4gICAgaWYgKGlzVW5kZWYoYykgfHwgdHlwZW9mIGMgPT09ICdib29sZWFuJykgeyBjb250aW51
ZSB9XG4gICAgbGFzdCA9IHJlc1tyZXMubGVuZ3RoIC0gMV07XG4gICAgLy8gIG5lc3RlZFxuICAg
IGlmIChBcnJheS5pc0FycmF5KGMpKSB7XG4gICAgICByZXMucHVzaC5hcHBseShyZXMsIG5vcm1h
bGl6ZUFycmF5Q2hpbGRyZW4oYywgKChuZXN0ZWRJbmRleCB8fCAnJykgKyBcIl9cIiArIGkpKSk7
XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZShjKSkge1xuICAgICAgaWYgKGlzVGV4dE5vZGUo
bGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICAv
LyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgU1NSIGh5ZHJhdGlvbiBiZWNhdXNlIHRleHQgbm9kZXMg
YXJlXG4gICAgICAgIC8vIGVzc2VudGlhbGx5IG1lcmdlZCB3aGVuIHJlbmRlcmVkIHRvIEhUTUwg
c3RyaW5nc1xuICAgICAgICAobGFzdCkudGV4dCArPSBTdHJpbmcoYyk7XG4gICAgICB9IGVsc2Ug
aWYgKGMgIT09ICcnKSB7XG4gICAgICAgIC8vIGNvbnZlcnQgcHJpbWl0aXZlIHRvIHZub2RlXG4g
ICAgICAgIHJlcy5wdXNoKGNyZWF0ZVRleHRWTm9kZShjKSk7XG4gICAgICB9XG4gICAgfSBlbHNl
IHtcbiAgICAgIGlmIChpc1RleHROb2RlKGMpICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAg
ICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICByZXNbcmVzLmxlbmd0aCAt
IDFdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIGMudGV4dCk7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICAvLyBkZWZhdWx0IGtleSBmb3IgbmVzdGVkIGFycmF5IGNoaWxkcmVuIChsaWtl
bHkgZ2VuZXJhdGVkIGJ5IHYtZm9yKVxuICAgICAgICBpZiAoaXNUcnVlKGNoaWxkcmVuLl9pc1ZM
aXN0KSAmJlxuICAgICAgICAgIGlzRGVmKGMudGFnKSAmJlxuICAgICAgICAgIGlzVW5kZWYoYy5r
ZXkpICYmXG4gICAgICAgICAgaXNEZWYobmVzdGVkSW5kZXgpKSB7XG4gICAgICAgICAgYy5rZXkg
PSBcIl9fdmxpc3RcIiArIG5lc3RlZEluZGV4ICsgXCJfXCIgKyBpICsgXCJfX1wiO1xuICAgICAg
ICB9XG4gICAgICAgIHJlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4g
cmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnN1cmVDdG9yIChjb21wLCBiYXNlKSB7XG4g
IGlmIChjb21wLl9fZXNNb2R1bGUgJiYgY29tcC5kZWZhdWx0KSB7XG4gICAgY29tcCA9IGNvbXAu
ZGVmYXVsdDtcbiAgfVxuICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5k
KGNvbXApXG4gICAgOiBjb21wXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFzeW5jUGxhY2Vob2xkZXIg
KFxuICBmYWN0b3J5LFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgdGFnXG4p
IHtcbiAgdmFyIG5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gIG5vZGUuYXN5bmNGYWN0b3J5
ID0gZmFjdG9yeTtcbiAgbm9kZS5hc3luY01ldGEgPSB7IGRhdGE6IGRhdGEsIGNvbnRleHQ6IGNv
bnRleHQsIGNoaWxkcmVuOiBjaGlsZHJlbiwgdGFnOiB0YWcgfTtcbiAgcmV0dXJuIG5vZGVcbn1c
blxuZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50IChcbiAgZmFjdG9yeSxcbiAgYmFzZUN0
b3IsXG4gIGNvbnRleHRcbikge1xuICBpZiAoaXNUcnVlKGZhY3RvcnkuZXJyb3IpICYmIGlzRGVm
KGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmVycm9yQ29tcFxuICB9
XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuIGZhY3Rvcnku
cmVzb2x2ZWRcbiAgfVxuXG4gIGlmIChpc1RydWUoZmFjdG9yeS5sb2FkaW5nKSAmJiBpc0RlZihm
YWN0b3J5LmxvYWRpbmdDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdDb21wXG4g
IH1cblxuICBpZiAoaXNEZWYoZmFjdG9yeS5jb250ZXh0cykpIHtcbiAgICAvLyBhbHJlYWR5IHBl
bmRpbmdcbiAgICBmYWN0b3J5LmNvbnRleHRzLnB1c2goY29udGV4dCk7XG4gIH0gZWxzZSB7XG4g
ICAgdmFyIGNvbnRleHRzID0gZmFjdG9yeS5jb250ZXh0cyA9IFtjb250ZXh0XTtcbiAgICB2YXIg
c3luYyA9IHRydWU7XG5cbiAgICB2YXIgZm9yY2VSZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAg
ICBmb3IgKHZhciBpID0gMCwgbCA9IGNvbnRleHRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAg
ICAgICBjb250ZXh0c1tpXS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAg
dmFyIHJlc29sdmUgPSBvbmNlKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIC8vIGNhY2hlIHJlc29s
dmVkXG4gICAgICBmYWN0b3J5LnJlc29sdmVkID0gZW5zdXJlQ3RvcihyZXMsIGJhc2VDdG9yKTtc
biAgICAgIC8vIGludm9rZSBjYWxsYmFja3Mgb25seSBpZiB0aGlzIGlzIG5vdCBhIHN5bmNocm9u
b3VzIHJlc29sdmVcbiAgICAgIC8vIChhc3luYyByZXNvbHZlcyBhcmUgc2hpbW1lZCBhcyBzeW5j
aHJvbm91cyBkdXJpbmcgU1NSKVxuICAgICAgaWYgKCFzeW5jKSB7XG4gICAgICAgIGZvcmNlUmVu
ZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVqZWN0ID0gb25jZShmdW5jdGlv
biAocmVhc29uKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ICYmIHdhcm4oXG4gICAgICAgIFwiRmFpbGVkIHRvIHJlc29sdmUgYXN5bmMgY29tcG9uZW50OiBc
IiArIChTdHJpbmcoZmFjdG9yeSkpICtcbiAgICAgICAgKHJlYXNvbiA/IChcIlxcblJlYXNvbjog
XCIgKyByZWFzb24pIDogJycpXG4gICAgICApO1xuICAgICAgaWYgKGlzRGVmKGZhY3RvcnkuZXJy
b3JDb21wKSkge1xuICAgICAgICBmYWN0b3J5LmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZm9yY2VS
ZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZXMgPSBmYWN0b3J5KHJlc29s
dmUsIHJlamVjdCk7XG5cbiAgICBpZiAoaXNPYmplY3QocmVzKSkge1xuICAgICAgaWYgKHR5cGVv
ZiByZXMudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyAoKSA9PiBQcm9taXNlXG4g
ICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgcmVzLnRo
ZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0RlZihy
ZXMuY29tcG9uZW50KSAmJiB0eXBlb2YgcmVzLmNvbXBvbmVudC50aGVuID09PSAnZnVuY3Rpb24n
KSB7XG4gICAgICAgIHJlcy5jb21wb25lbnQudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXG4gICAg
ICAgIGlmIChpc0RlZihyZXMuZXJyb3IpKSB7XG4gICAgICAgICAgZmFjdG9yeS5lcnJvckNvbXAg
PSBlbnN1cmVDdG9yKHJlcy5lcnJvciwgYmFzZUN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAg
aWYgKGlzRGVmKHJlcy5sb2FkaW5nKSkge1xuICAgICAgICAgIGZhY3RvcnkubG9hZGluZ0NvbXAg
PSBlbnN1cmVDdG9yKHJlcy5sb2FkaW5nLCBiYXNlQ3Rvcik7XG4gICAgICAgICAgaWYgKHJlcy5k
ZWxheSA9PT0gMCkge1xuICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAg
ICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpICYmIGlzVW5kZWYoZmFjdG9y
eS5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAg
ICAgICAgICAgICAgIGZvcmNlUmVuZGVyKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAg
IH0sIHJlcy5kZWxheSB8fCAyMDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAg
IGlmIChpc0RlZihyZXMudGltZW91dCkpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAg
ICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICAgICAgICAgICA/IChcInRpbWVvdXQgKFwiICsgKHJl
cy50aW1lb3V0KSArIFwibXMpXCIpXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAg
ICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCByZXMudGltZW91dCk7XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzeW5jID0gZmFsc2U7XG4gICAgLy8gcmV0dXJu
IGluIGNhc2UgcmVzb2x2ZWQgc3luY2hyb25vdXNseVxuICAgIHJldHVybiBmYWN0b3J5LmxvYWRp
bmdcbiAgICAgID8gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICAgICAgOiBmYWN0b3J5LnJlc29sdmVk
XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGdldEZpcnN0Q29tcG9uZW50Q2hpbGQgKGNo
aWxkcmVuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2hpbGRy
ZW5baV07XG4gICAgICBpZiAoaXNEZWYoYykgJiYgaXNEZWYoYy5jb21wb25lbnRPcHRpb25zKSkg
e1xuICAgICAgICByZXR1cm4gY1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxu
LyogICovXG5cbmZ1bmN0aW9uIGluaXRFdmVudHMgKHZtKSB7XG4gIHZtLl9ldmVudHMgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICB2bS5faGFzSG9va0V2ZW50ID0gZmFsc2U7XG4gIC8vIGluaXQg
cGFyZW50IGF0dGFjaGVkIGV2ZW50c1xuICB2YXIgbGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3Bh
cmVudExpc3RlbmVycztcbiAgaWYgKGxpc3RlbmVycykge1xuICAgIHVwZGF0ZUNvbXBvbmVudExp
c3RlbmVycyh2bSwgbGlzdGVuZXJzKTtcbiAgfVxufVxuXG52YXIgdGFyZ2V0O1xuXG5mdW5jdGlv
biBhZGQgKGV2ZW50LCBmbiwgb25jZSQkMSkge1xuICBpZiAob25jZSQkMSkge1xuICAgIHRhcmdl
dC4kb25jZShldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC4kb24oZXZlbnQsIGZu
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUkMSAoZXZlbnQsIGZuKSB7XG4gIHRhcmdldC4k
b2ZmKGV2ZW50LCBmbik7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyAo
XG4gIHZtLFxuICBsaXN0ZW5lcnMsXG4gIG9sZExpc3RlbmVyc1xuKSB7XG4gIHRhcmdldCA9IHZt
O1xuICB1cGRhdGVMaXN0ZW5lcnMobGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMgfHwge30sIGFkZCwg
cmVtb3ZlJDEsIHZtKTtcbn1cblxuZnVuY3Rpb24gZXZlbnRzTWl4aW4gKFZ1ZSkge1xuICB2YXIg
aG9va1JFID0gL15ob29rOi87XG4gIFZ1ZS5wcm90b3R5cGUuJG9uID0gZnVuY3Rpb24gKGV2ZW50
LCBmbikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHZtID0gdGhpcztcbiAg
ICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0g
ZXZlbnQubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHRoaXMkMS4kb24oZXZlbnRbaV0s
IGZuKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgKHZtLl9ldmVudHNbZXZlbnRdIHx8
ICh2bS5fZXZlbnRzW2V2ZW50XSA9IFtdKSkucHVzaChmbik7XG4gICAgICAvLyBvcHRpbWl6ZSBo
b29rOmV2ZW50IGNvc3QgYnkgdXNpbmcgYSBib29sZWFuIGZsYWcgbWFya2VkIGF0IHJlZ2lzdHJh
dGlvblxuICAgICAgLy8gaW5zdGVhZCBvZiBhIGhhc2ggbG9va3VwXG4gICAgICBpZiAoaG9va1JF
LnRlc3QoZXZlbnQpKSB7XG4gICAgICAgIHZtLl9oYXNIb29rRXZlbnQgPSB0cnVlO1xuICAgICAg
fVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvbmNlID0g
ZnVuY3Rpb24gKGV2ZW50LCBmbikge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgZnVuY3Rpb24g
b24gKCkge1xuICAgICAgdm0uJG9mZihldmVudCwgb24pO1xuICAgICAgZm4uYXBwbHkodm0sIGFy
Z3VtZW50cyk7XG4gICAgfVxuICAgIG9uLmZuID0gZm47XG4gICAgdm0uJG9uKGV2ZW50LCBvbik7
XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb2ZmID0gZnVuY3Rpb24g
KGV2ZW50LCBmbikge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHZtID0gdGhp
cztcbiAgICAvLyBhbGxcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIHZtLl9l
dmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAg
IC8vIGFycmF5IG9mIGV2ZW50c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAg
ICAgZm9yICh2YXIgaSQxID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSQxIDwgbDsgaSQxKyspIHtc
biAgICAgICAgdGhpcyQxLiRvZmYoZXZlbnRbaSQxXSwgZm4pO1xuICAgICAgfVxuICAgICAgcmV0
dXJuIHZtXG4gICAgfVxuICAgIC8vIHNwZWNpZmljIGV2ZW50XG4gICAgdmFyIGNicyA9IHZtLl9l
dmVudHNbZXZlbnRdO1xuICAgIGlmICghY2JzKSB7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4g
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZtLl9ldmVudHNbZXZlbnRd
ID0gbnVsbDtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5kbGVy
XG4gICAgdmFyIGNiO1xuICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7
XG4gICAgICBjYiA9IGNic1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZu
KSB7XG4gICAgICAgIGNicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4g
ICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5j
dGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbG93ZXJDYXNlRXZlbnQgPSBl
dmVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAm
JiB2bS5fZXZlbnRzW2xvd2VyQ2FzZUV2ZW50XSkge1xuICAgICAgICB0aXAoXG4gICAgICAgICAg
XCJFdmVudCBcXFwiXCIgKyBsb3dlckNhc2VFdmVudCArIFwiXFxcIiBpcyBlbWl0dGVkIGluIGNv
bXBvbmVudCBcIiArXG4gICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiIGJ1
dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIi4g
XCIgK1xuICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNl
bnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgXCIgK1xuICAgICAgICAgIFwidi1vbiB0byBsaXN0
ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIFwiICtc
biAgICAgICAgICBcIllvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIChoeXBoZW5hdGUo
ZXZlbnQpKSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLlwiXG4g
ICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50
XTtcbiAgICBpZiAoY2JzKSB7XG4gICAgICBjYnMgPSBjYnMubGVuZ3RoID4gMSA/IHRvQXJyYXko
Y2JzKSA6IGNicztcbiAgICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAg
ICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAg
IHRyeSB7XG4gICAgICAgICAgY2JzW2ldLmFwcGx5KHZtLCBhcmdzKTtcbiAgICAgICAgfSBjYXRj
aCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCAoXCJldmVudCBoYW5kbGVyIGZv
ciBcXFwiXCIgKyBldmVudCArIFwiXFxcIlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9
XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVuIFZOb2RlcyBpbnRvIGEgc2xvdCBvYmplY3Qu
XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAoXG4gIGNoaWxkcmVuLFxuICBjb250ZXh0XG4p
IHtcbiAgdmFyIHNsb3RzID0ge307XG4gIGlmICghY2hpbGRyZW4pIHtcbiAgICByZXR1cm4gc2xv
dHNcbiAgfVxuICB2YXIgZGVmYXVsdFNsb3QgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBj
aGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltp
XTtcbiAgICAvLyBuYW1lZCBzbG90cyBzaG91bGQgb25seSBiZSByZXNwZWN0ZWQgaWYgdGhlIHZu
b2RlIHdhcyByZW5kZXJlZCBpbiB0aGVcbiAgICAvLyBzYW1lIGNvbnRleHQuXG4gICAgaWYgKChj
aGlsZC5jb250ZXh0ID09PSBjb250ZXh0IHx8IGNoaWxkLmZ1bmN0aW9uYWxDb250ZXh0ID09PSBj
b250ZXh0KSAmJlxuICAgICAgY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLnNsb3QgIT0gbnVsbFxu
ICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBjaGlsZC5kYXRhLnNsb3Q7XG4gICAgICB2YXIgc2xv
dCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFtZV0gPSBbXSkpO1xuICAgICAgaWYgKGNoaWxk
LnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICBzbG90LnB1c2guYXBwbHkoc2xvdCwgY2hp
bGQuY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xvdC5wdXNoKGNoaWxkKTtc
biAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGVmYXVsdFNsb3QucHVzaChjaGlsZCk7XG4g
ICAgfVxuICB9XG4gIC8vIGlnbm9yZSB3aGl0ZXNwYWNlXG4gIGlmICghZGVmYXVsdFNsb3QuZXZl
cnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgIHNsb3RzLmRlZmF1bHQgPSBkZWZhdWx0U2xvdDtcbiAg
fVxuICByZXR1cm4gc2xvdHNcbn1cblxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlIChub2RlKSB7XG4g
IHJldHVybiBub2RlLmlzQ29tbWVudCB8fCBub2RlLnRleHQgPT09ICcgJ1xufVxuXG5mdW5jdGlv
biByZXNvbHZlU2NvcGVkU2xvdHMgKFxuICBmbnMsIC8vIHNlZSBmbG93L3Zub2RlXG4gIHJlc1xu
KSB7XG4gIHJlcyA9IHJlcyB8fCB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3Ro
OyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4gICAgICByZXNvbHZl
U2NvcGVkU2xvdHMoZm5zW2ldLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNbZm5zW2ld
LmtleV0gPSBmbnNbaV0uZm47XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICov
XG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG52YXIgaXNVcGRhdGluZ0NoaWxkQ29tcG9u
ZW50ID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGluaXRMaWZlY3ljbGUgKHZtKSB7XG4gIHZhciBvcHRp
b25zID0gdm0uJG9wdGlvbnM7XG5cbiAgLy8gbG9jYXRlIGZpcnN0IG5vbi1hYnN0cmFjdCBwYXJl
bnRcbiAgdmFyIHBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBpZiAocGFyZW50ICYmICFvcHRp
b25zLmFic3RyYWN0KSB7XG4gICAgd2hpbGUgKHBhcmVudC4kb3B0aW9ucy5hYnN0cmFjdCAmJiBw
YXJlbnQuJHBhcmVudCkge1xuICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgfVxu
ICAgIHBhcmVudC4kY2hpbGRyZW4ucHVzaCh2bSk7XG4gIH1cblxuICB2bS4kcGFyZW50ID0gcGFy
ZW50O1xuICB2bS4kcm9vdCA9IHBhcmVudCA/IHBhcmVudC4kcm9vdCA6IHZtO1xuXG4gIHZtLiRj
aGlsZHJlbiA9IFtdO1xuICB2bS4kcmVmcyA9IHt9O1xuXG4gIHZtLl93YXRjaGVyID0gbnVsbDtc
biAgdm0uX2luYWN0aXZlID0gbnVsbDtcbiAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4g
IHZtLl9pc01vdW50ZWQgPSBmYWxzZTtcbiAgdm0uX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gIHZt
Ll9pc0JlaW5nRGVzdHJveWVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGxpZmVjeWNsZU1peGlu
IChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKHZub2RlLCBoeWRy
YXRpbmcpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNNb3VudGVkKSB7XG4g
ICAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZVVwZGF0ZScpO1xuICAgIH1cbiAgICB2YXIgcHJldkVs
ID0gdm0uJGVsO1xuICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgdmFyIHByZXZB
Y3RpdmVJbnN0YW5jZSA9IGFjdGl2ZUluc3RhbmNlO1xuICAgIGFjdGl2ZUluc3RhbmNlID0gdm07
XG4gICAgdm0uX3Zub2RlID0gdm5vZGU7XG4gICAgLy8gVnVlLnByb3RvdHlwZS5fX3BhdGNoX18g
aXMgaW5qZWN0ZWQgaW4gZW50cnkgcG9pbnRzXG4gICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmlu
ZyBiYWNrZW5kIHVzZWQuXG4gICAgaWYgKCFwcmV2Vm5vZGUpIHtcbiAgICAgIC8vIGluaXRpYWwg
cmVuZGVyXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18oXG4gICAgICAgIHZtLiRlbCwgdm5v
ZGUsIGh5ZHJhdGluZywgZmFsc2UgLyogcmVtb3ZlT25seSAqLyxcbiAgICAgICAgdm0uJG9wdGlv
bnMuX3BhcmVudEVsbSxcbiAgICAgICAgdm0uJG9wdGlvbnMuX3JlZkVsbVxuICAgICAgKTtcbiAg
ICAgIC8vIG5vIG5lZWQgZm9yIHRoZSByZWYgbm9kZXMgYWZ0ZXIgaW5pdGlhbCBwYXRjaFxuICAg
ICAgLy8gdGhpcyBwcmV2ZW50cyBrZWVwaW5nIGEgZGV0YWNoZWQgRE9NIHRyZWUgaW4gbWVtb3J5
ICgjNTg1MSlcbiAgICAgIHZtLiRvcHRpb25zLl9wYXJlbnRFbG0gPSB2bS4kb3B0aW9ucy5fcmVm
RWxtID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXBkYXRlc1xuICAgICAgdm0uJGVs
ID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBhY3RpdmVJbnN0
YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgICAvLyB1cGRhdGUgX192dWVfXyByZWZlcmVu
Y2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBwcmV2RWwuX192dWVfXyA9IG51bGw7XG4gICAg
fVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gdm07XG4gICAgfVxu
ICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVwZGF0ZSBpdHMgJGVsIGFzIHdlbGxcbiAgICBp
ZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYgdm0uJHZub2RlID09PSB2bS4kcGFyZW50Ll92
bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwgPSB2bS4kZWw7XG4gICAgfVxuICAgIC8vIHVw
ZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlciB0byBlbnN1cmUgdGhhdCBjaGls
ZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGluIGEgcGFyZW50J3MgdXBkYXRlZCBob29rLlxuICB9
O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZh
ciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci51
cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0
aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNCZWluZ0Rlc3Ryb3ll
ZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlRGVzdHJv
eScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyByZW1vdmUgc2Vs
ZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJlbnQgPSB2bS4kcGFyZW50O1xuICAgIGlmIChwYXJl
bnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ryb3llZCAmJiAhdm0uJG9wdGlvbnMuYWJzdHJhY3Qp
IHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNoaWxkcmVuLCB2bSk7XG4gICAgfVxuICAgIC8vIHRl
YXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hl
ci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2YXIgaSA9IHZtLl93YXRjaGVycy5sZW5ndGg7XG4g
ICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0uX3dhdGNoZXJzW2ldLnRlYXJkb3duKCk7XG4gICAg
fVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgZnJvbSBkYXRhIG9iXG4gICAgLy8gZnJvemVuIG9i
amVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIuXG4gICAgaWYgKHZtLl9kYXRhLl9fb2JfXykge1xu
ICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291bnQtLTtcbiAgICB9XG4gICAgLy8gY2FsbCB0aGUg
bGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyBpbnZva2Ug
ZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJlbmRlcmVkIHRyZWVcbiAgICB2bS5fX3BhdGNoX18o
dm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBmaXJlIGRlc3Ryb3llZCBob29rXG4gICAgY2FsbEhv
b2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0dXJuIG9mZiBhbGwgaW5zdGFuY2UgbGlzdGVu
ZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyByZW1vdmUgX192dWVfXyByZWZlcmVuY2VcbiAg
ICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICB9
O1xufVxuXG5mdW5jdGlvbiBtb3VudENvbXBvbmVudCAoXG4gIHZtLFxuICBlbCxcbiAgaHlkcmF0
aW5nXG4pIHtcbiAgdm0uJGVsID0gZWw7XG4gIGlmICghdm0uJG9wdGlvbnMucmVuZGVyKSB7XG4g
ICAgdm0uJG9wdGlvbnMucmVuZGVyID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gICAgICBpZiAoKHZtLiRvcHRpb25zLnRlbXBsYXRlICYmIHZtLiRvcHRpb25z
LnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB8fFxuICAgICAgICB2bS4kb3B0aW9ucy5lbCB8
fCBlbCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50
aW1lLW9ubHkgYnVpbGQgb2YgVnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAn
Y29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0
ZXMgaW50byAnICtcbiAgICAgICAgICAncmVuZGVyIGZ1bmN0aW9ucywgb3IgdXNlIHRoZSBjb21w
aWxlci1pbmNsdWRlZCBidWlsZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9u
ZW50OiB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxcbiAgICAgICAg
ICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYWxsSG9vayh2bSwgJ2Jl
Zm9yZU1vdW50Jyk7XG5cbiAgdmFyIHVwZGF0ZUNvbXBvbmVudDtcbiAgLyogaXN0YW5idWwgaWdu
b3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYm
IGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVu
Y3Rpb24gKCkge1xuICAgICAgdmFyIG5hbWUgPSB2bS5fbmFtZTtcbiAgICAgIHZhciBpZCA9IHZt
Ll91aWQ7XG4gICAgICB2YXIgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgaWQ7XG4g
ICAgICB2YXIgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyBpZDtcblxuICAgICAgbWFyayhz
dGFydFRhZyk7XG4gICAgICB2YXIgdm5vZGUgPSB2bS5fcmVuZGVyKCk7XG4gICAgICBtYXJrKGVu
ZFRhZyk7XG4gICAgICBtZWFzdXJlKChuYW1lICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5k
VGFnKTtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBo
eWRyYXRpbmcpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgobmFtZSArIFwi
IHBhdGNoXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHVw
ZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZtLl91cGRhdGUodm0uX3JlbmRl
cigpLCBoeWRyYXRpbmcpO1xuICAgIH07XG4gIH1cblxuICB2bS5fd2F0Y2hlciA9IG5ldyBXYXRj
aGVyKHZtLCB1cGRhdGVDb21wb25lbnQsIG5vb3ApO1xuICBoeWRyYXRpbmcgPSBmYWxzZTtcblxu
ICAvLyBtYW51YWxseSBtb3VudGVkIGluc3RhbmNlLCBjYWxsIG1vdW50ZWQgb24gc2VsZlxuICAv
LyBtb3VudGVkIGlzIGNhbGxlZCBmb3IgcmVuZGVyLWNyZWF0ZWQgY2hpbGQgY29tcG9uZW50cyBp
biBpdHMgaW5zZXJ0ZWQgaG9va1xuICBpZiAodm0uJHZub2RlID09IG51bGwpIHtcbiAgICB2bS5f
aXNNb3VudGVkID0gdHJ1ZTtcbiAgICBjYWxsSG9vayh2bSwgJ21vdW50ZWQnKTtcbiAgfVxuICBy
ZXR1cm4gdm1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hpbGRDb21wb25lbnQgKFxuICB2bSxcbiAg
cHJvcHNEYXRhLFxuICBsaXN0ZW5lcnMsXG4gIHBhcmVudFZub2RlLFxuICByZW5kZXJDaGlsZHJl
blxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIGRldGVybWlu
ZSB3aGV0aGVyIGNvbXBvbmVudCBoYXMgc2xvdCBjaGlsZHJlblxuICAvLyB3ZSBuZWVkIHRvIGRv
IHRoaXMgYmVmb3JlIG92ZXJ3cml0aW5nICRvcHRpb25zLl9yZW5kZXJDaGlsZHJlblxuICB2YXIg
aGFzQ2hpbGRyZW4gPSAhIShcbiAgICByZW5kZXJDaGlsZHJlbiB8fCAgICAgICAgICAgICAgIC8v
IGhhcyBuZXcgc3RhdGljIHNsb3RzXG4gICAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuIHx8
ICAvLyBoYXMgb2xkIHN0YXRpYyBzbG90c1xuICAgIHBhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xv
dHMgfHwgLy8gaGFzIG5ldyBzY29wZWQgc2xvdHNcbiAgICB2bS4kc2NvcGVkU2xvdHMgIT09IGVt
cHR5T2JqZWN0IC8vIGhhcyBvbGQgc2NvcGVkIHNsb3RzXG4gICk7XG5cbiAgdm0uJG9wdGlvbnMu
X3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG4gIHZtLiR2bm9kZSA9IHBhcmVudFZub2RlOyAv
LyB1cGRhdGUgdm0ncyBwbGFjZWhvbGRlciBub2RlIHdpdGhvdXQgcmUtcmVuZGVyXG5cbiAgaWYg
KHZtLl92bm9kZSkgeyAvLyB1cGRhdGUgY2hpbGQgdHJlZSdzIHBhcmVudFxuICAgIHZtLl92bm9k
ZS5wYXJlbnQgPSBwYXJlbnRWbm9kZTtcbiAgfVxuICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRy
ZW4gPSByZW5kZXJDaGlsZHJlbjtcblxuICAvLyB1cGRhdGUgJGF0dHJzIGFuZCAkbGlzdGVuc2Vy
cyBoYXNoXG4gIC8vIHRoZXNlIGFyZSBhbHNvIHJlYWN0aXZlIHNvIHRoZXkgbWF5IHRyaWdnZXIg
Y2hpbGQgdXBkYXRlIGlmIHRoZSBjaGlsZFxuICAvLyB1c2VkIHRoZW0gZHVyaW5nIHJlbmRlclxu
ICB2bS4kYXR0cnMgPSBwYXJlbnRWbm9kZS5kYXRhICYmIHBhcmVudFZub2RlLmRhdGEuYXR0cnM7
XG4gIHZtLiRsaXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG5cbiAgLy8gdXBkYXRlIHByb3BzXG4gIGlm
IChwcm9wc0RhdGEgJiYgdm0uJG9wdGlvbnMucHJvcHMpIHtcbiAgICBvYnNlcnZlclN0YXRlLnNo
b3VsZENvbnZlcnQgPSBmYWxzZTtcbiAgICB2YXIgcHJvcHMgPSB2bS5fcHJvcHM7XG4gICAgdmFy
IHByb3BLZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzIHx8IFtdO1xuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wS2V5
c1tpXTtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCB2bS4kb3B0aW9ucy5w
cm9wcywgcHJvcHNEYXRhLCB2bSk7XG4gICAgfVxuICAgIG9ic2VydmVyU3RhdGUuc2hvdWxkQ29u
dmVydCA9IHRydWU7XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0YVxuICAgIHZt
LiRvcHRpb25zLnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSBsaXN0
ZW5lcnNcbiAgaWYgKGxpc3RlbmVycykge1xuICAgIHZhciBvbGRMaXN0ZW5lcnMgPSB2bS4kb3B0
aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICAgIHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMg
PSBsaXN0ZW5lcnM7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMs
IG9sZExpc3RlbmVycyk7XG4gIH1cbiAgLy8gcmVzb2x2ZSBzbG90cyArIGZvcmNlIHVwZGF0ZSBp
ZiBoYXMgY2hpbGRyZW5cbiAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgdm0uJHNsb3RzID0gcmVz
b2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCBwYXJlbnRWbm9kZS5jb250ZXh0KTtcbiAgICB2bS4k
Zm9yY2VVcGRhdGUoKTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG4gIH1c
bn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAgd2hpbGUgKHZtICYmICh2
bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkgeyByZXR1cm4gdHJ1ZSB9
XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2YXRlQ2hpbGRDb21wb25l
bnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2
ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJu
XG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkge1xuICAgIHJldHVyblxu
ICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09PSBudWxsKSB7XG4gICAg
dm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRy
ZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxk
cmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0ZWQnKTtcbiAgfVxufVxu
XG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYg
KGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKGlzSW5J
bmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAgaWYgKCF2bS5f
aW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWFjdGl2YXRlQ2hpbGRD
b21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdkZWFj
dGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2bSwgaG9vaykge1xuICB2
YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgaWYgKGhhbmRsZXJzKSB7XG4gICAg
Zm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAg
IHRyeSB7XG4gICAgICAgIGhhbmRsZXJzW2ldLmNhbGwodm0pO1xuICAgICAgfSBjYXRjaCAoZSkg
e1xuICAgICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICAg
IH1cbiAgICB9XG4gIH1cbiAgaWYgKHZtLl9oYXNIb29rRXZlbnQpIHtcbiAgICB2bS4kZW1pdCgn
aG9vazonICsgaG9vayk7XG4gIH1cbn1cblxuLyogICovXG5cblxudmFyIE1BWF9VUERBVEVfQ09V
TlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxkcmVuID0gW107
XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5nID0gZmFsc2U7
XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxuICogUmVzZXQg
dGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVkdWxlclN0YXRl
ICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJlbi5sZW5ndGgg
PSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICBjaXJjdWxhciA9IHt9O1xuICB9XG4gIHdhaXRpbmcgPSBmbHVzaGluZyA9
IGZhbHNlO1xufVxuXG4vKipcbiAqIEZsdXNoIGJvdGggcXVldWVzIGFuZCBydW4gdGhlIHdhdGNo
ZXJzLlxuICovXG5mdW5jdGlvbiBmbHVzaFNjaGVkdWxlclF1ZXVlICgpIHtcbiAgZmx1c2hpbmcg
PSB0cnVlO1xuICB2YXIgd2F0Y2hlciwgaWQ7XG5cbiAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1
c2guXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxuICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRh
dGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3YXlzXG4gIC8v
ICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZClcbiAgLy8gMi4gQSBjb21wb25lbnQncyB1c2Vy
IHdhdGNoZXJzIGFyZSBydW4gYmVmb3JlIGl0cyByZW5kZXIgd2F0Y2hlciAoYmVjYXVzZVxuICAv
LyAgICB1c2VyIHdhdGNoZXJzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgcmVuZGVyIHdhdGNoZXIp
XG4gIC8vIDMuIElmIGEgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBkdXJpbmcgYSBwYXJlbnQgY29t
cG9uZW50J3Mgd2F0Y2hlciBydW4sXG4gIC8vICAgIGl0cyB3YXRjaGVycyBjYW4gYmUgc2tpcHBl
ZC5cbiAgcXVldWUuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0p
O1xuXG4gIC8vIGRvIG5vdCBjYWNoZSBsZW5ndGggYmVjYXVzZSBtb3JlIHdhdGNoZXJzIG1pZ2h0
IGJlIHB1c2hlZFxuICAvLyBhcyB3ZSBydW4gZXhpc3Rpbmcgd2F0Y2hlcnNcbiAgZm9yIChpbmRl
eCA9IDA7IGluZGV4IDwgcXVldWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgd2F0Y2hlciA9IHF1
ZXVlW2luZGV4XTtcbiAgICBpZCA9IHdhdGNoZXIuaWQ7XG4gICAgaGFzW2lkXSA9IG51bGw7XG4g
ICAgd2F0Y2hlci5ydW4oKTtcbiAgICAvLyBpbiBkZXYgYnVpbGQsIGNoZWNrIGFuZCBzdG9wIGNp
cmN1bGFyIHVwZGF0ZXMuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgJiYgaGFzW2lkXSAhPSBudWxsKSB7XG4gICAgICBjaXJjdWxhcltpZF0gPSAoY2lyY3Vs
YXJbaWRdIHx8IDApICsgMTtcbiAgICAgIGlmIChjaXJjdWxhcltpZF0gPiBNQVhfVVBEQVRFX0NP
VU5UKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBtYXkgaGF2ZSBhbiBpbmZpbml0
ZSB1cGRhdGUgbG9vcCAnICsgKFxuICAgICAgICAgICAgd2F0Y2hlci51c2VyXG4gICAgICAgICAg
ICAgID8gKFwiaW4gd2F0Y2hlciB3aXRoIGV4cHJlc3Npb24gXFxcIlwiICsgKHdhdGNoZXIuZXhw
cmVzc2lvbikgKyBcIlxcXCJcIilcbiAgICAgICAgICAgICAgOiBcImluIGEgY29tcG9uZW50IHJl
bmRlciBmdW5jdGlvbi5cIlxuICAgICAgICAgICksXG4gICAgICAgICAgd2F0Y2hlci52bVxuICAg
ICAgICApO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGtlZXAg
Y29waWVzIG9mIHBvc3QgcXVldWVzIGJlZm9yZSByZXNldHRpbmcgc3RhdGVcbiAgdmFyIGFjdGl2
YXRlZFF1ZXVlID0gYWN0aXZhdGVkQ2hpbGRyZW4uc2xpY2UoKTtcbiAgdmFyIHVwZGF0ZWRRdWV1
ZSA9IHF1ZXVlLnNsaWNlKCk7XG5cbiAgcmVzZXRTY2hlZHVsZXJTdGF0ZSgpO1xuXG4gIC8vIGNh
bGwgY29tcG9uZW50IHVwZGF0ZWQgYW5kIGFjdGl2YXRlZCBob29rc1xuICBjYWxsQWN0aXZhdGVk
SG9va3MoYWN0aXZhdGVkUXVldWUpO1xuICBjYWxsVXBkYXRlZEhvb2tzKHVwZGF0ZWRRdWV1ZSk7
XG5cbiAgLy8gZGV2dG9vbCBob29rXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAo
ZGV2dG9vbHMgJiYgY29uZmlnLmRldnRvb2xzKSB7XG4gICAgZGV2dG9vbHMuZW1pdCgnZmx1c2gn
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxsVXBkYXRlZEhvb2tzIChxdWV1ZSkge1xuICB2YXIg
aSA9IHF1ZXVlLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciB3YXRjaGVyID0gcXVl
dWVbaV07XG4gICAgdmFyIHZtID0gd2F0Y2hlci52bTtcbiAgICBpZiAodm0uX3dhdGNoZXIgPT09
IHdhdGNoZXIgJiYgdm0uX2lzTW91bnRlZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVk
Jyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVu
dCB0aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUg
cHJvY2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5m
dW5jdGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5h
Y3RpdmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyBy
ZWx5IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJv
dXRlci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4u
cHVzaCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9p
bmFjdGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1
ZSAvKiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhl
IHdhdGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBw
ZWQgdW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVk
LlxuICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0
Y2hlci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xu
ICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBl
bHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBi
YXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwg
YmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7
XG4gICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xu
ICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNo
ZXIpO1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtc
biAgICAgIHdhaXRpbmcgPSB0cnVlO1xuICAgICAgbmV4dFRpY2soZmx1c2hTY2hlZHVsZXJRdWV1
ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAq
IEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxu
ICogYW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5c
biAqIFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVz
LlxuICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JG
bixcbiAgY2IsXG4gIG9wdGlvbnNcbikge1xuICB0aGlzLnZtID0gdm07XG4gIHZtLl93YXRjaGVy
cy5wdXNoKHRoaXMpO1xuICAvLyBvcHRpb25zXG4gIGlmIChvcHRpb25zKSB7XG4gICAgdGhpcy5k
ZWVwID0gISFvcHRpb25zLmRlZXA7XG4gICAgdGhpcy51c2VyID0gISFvcHRpb25zLnVzZXI7XG4g
ICAgdGhpcy5sYXp5ID0gISFvcHRpb25zLmxhenk7XG4gICAgdGhpcy5zeW5jID0gISFvcHRpb25z
LnN5bmM7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5
ID0gdGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0g
Kyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRo
aXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9
IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xu
ICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IGV4cE9yRm4udG9TdHJpbmco
KVxuICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlw
ZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47
XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAg
aWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBmdW5jdGlvbiAoKSB7fTtc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAg
ICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBc
IiArXG4gICAgICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRlbGltaXRlZCBw
YXRocy4gJyArXG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0
ZWFkLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlzLnZhbHVlID0g
dGhpcy5sYXp5XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipc
biAqIEV2YWx1YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVuY2llcy5cbiAq
L1xuV2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdl
dCh0aGlzKTtcbiAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICB0cnkge1xuICAg
IHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAg
aWYgKHRoaXMudXNlcikge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdldHRlciBmb3Ig
d2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgLy8gXCJ0b3Vj
aFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4gICAgLy8gZGVw
ZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG4gICAgaWYgKHRoaXMuZGVlcCkge1xuICAgICAg
dHJhdmVyc2UodmFsdWUpO1xuICAgIH1cbiAgICBwb3BUYXJnZXQoKTtcbiAgICB0aGlzLmNsZWFu
dXBEZXBzKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFkZCBhIGRlcGVu
ZGVuY3kgdG8gdGhpcyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9
IGZ1bmN0aW9uIGFkZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAgaWYgKCF0aGlz
Lm5ld0RlcElkcy5oYXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcbiAgICB0
aGlzLm5ld0RlcHMucHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFzKGlkKSkge1xu
ICAgICAgZGVwLmFkZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYW4g
dXAgZm9yIGRlcGVuZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuY2xl
YW51cERlcHMgPSBmdW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRo
aXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAg
dmFyIGRlcCA9IHRoaXMkMS5kZXBzW2ldO1xuICAgIGlmICghdGhpcyQxLm5ld0RlcElkcy5oYXMo
ZGVwLmlkKSkge1xuICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzJDEpO1xuICAgIH1cbiAgfVxuICB2
YXIgdG1wID0gdGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4g
IHRoaXMubmV3RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAg
PSB0aGlzLmRlcHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBz
ID0gdG1wO1xuICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2Ny
aWJlciBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFu
Z2VzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkg
e1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAg
dGhpcy5kaXJ0eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5y
dW4oKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8q
KlxuICogU2NoZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUg
c2NoZWR1bGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkg
e1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAg
IGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNo
ZXJzIGFuZCB3YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAg
IC8vIHdoZW4gdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAg
ICAgIC8vIGhhdmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhp
cy5kZWVwXG4gICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFs
dWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRo
aXMudXNlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZt
LCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFu
ZGxlRXJyb3IoZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRo
aXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRj
aGVyLlxuICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5X
YXRjaGVyLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhp
cy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxu
ICogRGVwZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldh
dGNoZXIucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gICAgdmFyIHRo
aXMkMSA9IHRoaXM7XG5cbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0t
KSB7XG4gICAgdGhpcyQxLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVt
b3ZlIHNlbGYgZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldh
dGNoZXIucHJvdG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICAgIHZh
ciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBz
ZWxmIGZyb20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhw
ZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5n
IGRlc3Ryb3llZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAg
IHJlbW92ZSh0aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhp
cy5kZXBzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzJDEuZGVwc1tpXS5y
ZW1vdmVTdWIodGhpcyQxKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxu
fTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxs
IGNvbnZlcnRlZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5z
aWRlIHRoZSBvYmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3ku
XG4gKi9cbnZhciBzZWVuT2JqZWN0cyA9IG5ldyBfU2V0KCk7XG5mdW5jdGlvbiB0cmF2ZXJzZSAo
dmFsKSB7XG4gIHNlZW5PYmplY3RzLmNsZWFyKCk7XG4gIF90cmF2ZXJzZSh2YWwsIHNlZW5PYmpl
Y3RzKTtcbn1cblxuZnVuY3Rpb24gX3RyYXZlcnNlICh2YWwsIHNlZW4pIHtcbiAgdmFyIGksIGtl
eXM7XG4gIHZhciBpc0EgPSBBcnJheS5pc0FycmF5KHZhbCk7XG4gIGlmICgoIWlzQSAmJiAhaXNP
YmplY3QodmFsKSkgfHwgIU9iamVjdC5pc0V4dGVuc2libGUodmFsKSkge1xuICAgIHJldHVyblxu
ICB9XG4gIGlmICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAu
aWQ7XG4gICAgaWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAg
IHNlZW4uYWRkKGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7
XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Ug
e1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAg
ICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1c
blxuLyogICovXG5cbnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gIGVudW1lcmFi
bGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxuICBzZXQ6IG5v
b3Bcbn07XG5cbmZ1bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5KSB7XG4gIHNo
YXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRlciAoKSB7XG4g
ICAgcmV0dXJuIHRoaXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFByb3BlcnR5RGVm
aW5pdGlvbi5zZXQgPSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgdGhpc1tzb3Vy
Y2VLZXldW2tleV0gPSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQs
IGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gaW5pdFN0YXRl
ICh2bSkge1xuICB2bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucztc
biAgaWYgKG9wdHMucHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsgfVxuICBpZiAo
b3B0cy5tZXRob2RzKSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9XG4gIGlmIChv
cHRzLmRhdGEpIHtcbiAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2ZSh2
bS5fZGF0YSA9IHt9LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlmIChvcHRzLmNv
bXB1dGVkKSB7IGluaXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAgaWYgKG9wdHMu
d2F0Y2ggJiYgb3B0cy53YXRjaCAhPT0gbmF0aXZlV2F0Y2gpIHtcbiAgICBpbml0V2F0Y2godm0s
IG9wdHMud2F0Y2gpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrT3B0aW9uVHlwZSAodm0sIG5h
bWUpIHtcbiAgdmFyIG9wdGlvbiA9IHZtLiRvcHRpb25zW25hbWVdO1xuICBpZiAoIWlzUGxhaW5P
YmplY3Qob3B0aW9uKSkge1xuICAgIHdhcm4oXG4gICAgICAoXCJjb21wb25lbnQgb3B0aW9uIFxc
XCJcIiArIG5hbWUgKyBcIlxcXCIgc2hvdWxkIGJlIGFuIG9iamVjdC5cIiksXG4gICAgICB2bVxu
ICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7
XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBw
cm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1
cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9m
IGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9u
cy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290
IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91
bGRDb252ZXJ0ID0gaXNSb290O1xuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAg
IGtleXMucHVzaChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3Bz
T3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
aWYgKGlzUmVzZXJ2ZWRBdHRyaWJ1dGUoa2V5KSB8fCBjb25maWcuaXNSZXNlcnZlZEF0dHIoa2V5
KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIlxcXCJcIiArIGtleSArIFwiXFxcIiBp
cyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQgYXMgY29tcG9uZW50IHBy
b3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBkZWZpbmVS
ZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAo
dm0uJHBhcmVudCAmJiAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50KSB7XG4gICAgICAgICAgd2Fy
bihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYSBwcm9wIGRpcmVjdGx5IHNpbmNlIHRo
ZSB2YWx1ZSB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIg
dGhlIHBhcmVudCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJJbnN0
ZWFkLCB1c2UgYSBkYXRhIG9yIGNvbXB1dGVkIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBwcm9wJ3Mg
XCIgK1xuICAgICAgICAgICAgXCJ2YWx1ZS4gUHJvcCBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBr
ZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxu
ICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBr
ZXksIHZhbHVlKTtcbiAgICB9XG4gICAgLy8gc3RhdGljIHByb3BzIGFyZSBhbHJlYWR5IHByb3hp
ZWQgb24gdGhlIGNvbXBvbmVudCdzIHByb3RvdHlwZVxuICAgIC8vIGR1cmluZyBWdWUuZXh0ZW5k
KCkuIFdlIG9ubHkgbmVlZCB0byBwcm94eSBwcm9wcyBkZWZpbmVkIGF0XG4gICAgLy8gaW5zdGFu
dGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIHByb3h5KHZtLCBc
Il9wcm9wc1wiLCBrZXkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHNP
cHRpb25zKSBsb29wKCBrZXkgKTtcbiAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gdHJ1
ZTtcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEgKHZtKSB7XG4gIHZhciBkYXRhID0gdm0uJG9wdGlv
bnMuZGF0YTtcbiAgZGF0YSA9IHZtLl9kYXRhID0gdHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbidc
biAgICA/IGdldERhdGEoZGF0YSwgdm0pXG4gICAgOiBkYXRhIHx8IHt9O1xuICBpZiAoIWlzUGxh
aW5PYmplY3QoZGF0YSkpIHtcbiAgICBkYXRhID0ge307XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ2RhdGEgZnVuY3Rpb25zIHNob3Vs
ZCByZXR1cm4gYW4gb2JqZWN0OlxcbicgK1xuICAgICAgJ2h0dHBzOi8vdnVlanMub3JnL3YyL2d1
aWRlL2NvbXBvbmVudHMuaHRtbCNkYXRhLU11c3QtQmUtYS1GdW5jdGlvbicsXG4gICAgICB2bVxu
ICAgICk7XG4gIH1cbiAgLy8gcHJveHkgZGF0YSBvbiBpbnN0YW5jZVxuICB2YXIga2V5cyA9IE9i
amVjdC5rZXlzKGRhdGEpO1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgdmFy
IG1ldGhvZHMgPSB2bS4kb3B0aW9ucy5tZXRob2RzO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xu
ICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChtZXRob2RzICYmIGhh
c093bihtZXRob2RzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9k
IFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBkYXRh
IHByb3BlcnR5LlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1c
biAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4gICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiVGhlIGRhdGEg
cHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVjbGFyZWQgYXMgYSBw
cm9wLiBcIiArXG4gICAgICAgIFwiVXNlIHByb3AgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLlwiLFxu
ICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCFpc1Jlc2VydmVkKGtleSkpIHtc
biAgICAgIHByb3h5KHZtLCBcIl9kYXRhXCIsIGtleSk7XG4gICAgfVxuICB9XG4gIC8vIG9ic2Vy
dmUgZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG59XG5cbmZ1
bmN0aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRhdGEuY2Fs
bCh2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcImRhdGEoKVwi
KTtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG52YXIgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyA9
IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQgKHZtLCBjb21wdXRlZCkg
e1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoZWNrT3B0aW9u
VHlwZSh2bSwgJ2NvbXB1dGVkJyk7XG4gIHZhciB3YXRjaGVycyA9IHZtLl9jb21wdXRlZFdhdGNo
ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQp
IHtcbiAgICB2YXIgdXNlckRlZiA9IGNvbXB1dGVkW2tleV07XG4gICAgdmFyIGdldHRlciA9IHR5
cGVvZiB1c2VyRGVmID09PSAnZnVuY3Rpb24nID8gdXNlckRlZiA6IHVzZXJEZWYuZ2V0O1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGdldHRlciA9PSBu
dWxsKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAoXCJHZXR0ZXIgaXMgbWlzc2luZyBmb3IgY29t
cHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiKSxcbiAgICAgICAgdm1cbiAg
ICAgICk7XG4gICAgfVxuICAgIC8vIGNyZWF0ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29t
cHV0ZWQgcHJvcGVydHkuXG4gICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKHZtLCBnZXR0
ZXIgfHwgbm9vcCwgbm9vcCwgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyk7XG5cbiAgICAvLyBjb21w
b25lbnQtZGVmaW5lZCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmluZWQgb24g
dGhlXG4gICAgLy8gY29tcG9uZW50IHByb3RvdHlwZS4gV2Ugb25seSBuZWVkIHRvIGRlZmluZSBj
b21wdXRlZCBwcm9wZXJ0aWVzIGRlZmluZWRcbiAgICAvLyBhdCBpbnN0YW50aWF0aW9uIGhlcmUu
XG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgZGVmaW5lQ29tcHV0ZWQodm0sIGtleSwg
dXNlckRlZik7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBpZiAoa2V5IGluIHZtLiRkYXRhKSB7XG4gICAgICAgIHdhcm4oKFwi
VGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRl
ZmluZWQgaW4gZGF0YS5cIiksIHZtKTtcbiAgICAgIH0gZWxzZSBpZiAodm0uJG9wdGlvbnMucHJv
cHMgJiYga2V5IGluIHZtLiRvcHRpb25zLnByb3BzKSB7XG4gICAgICAgIHdhcm4oKFwiVGhlIGNv
bXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlZmluZWQg
YXMgYSBwcm9wLlwiKSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBk
ZWZpbmVDb21wdXRlZCAodGFyZ2V0LCBrZXksIHVzZXJEZWYpIHtcbiAgaWYgKHR5cGVvZiB1c2Vy
RGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9
IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSk7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9u
LnNldCA9IG5vb3A7XG4gIH0gZWxzZSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdl
dCA9IHVzZXJEZWYuZ2V0XG4gICAgICA/IHVzZXJEZWYuY2FjaGUgIT09IGZhbHNlXG4gICAgICAg
ID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgICA6IHVzZXJEZWYuZ2V0XG4gICAg
ICA6IG5vb3A7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IHVzZXJEZWYuc2V0
XG4gICAgICA/IHVzZXJEZWYuc2V0XG4gICAgICA6IG5vb3A7XG4gIH1cbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHNoYXJlZFByb3BlcnR5RGVm
aW5pdGlvbi5zZXQgPT09IG5vb3ApIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0
ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgKFwiQ29tcHV0ZWQgcHJvcGVy
dHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBhc3NpZ25lZCB0byBidXQgaXQgaGFzIG5vIHNl
dHRlci5cIiksXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59
XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkR2V0dGVyIChrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0
aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICB2YXIgd2F0Y2hlciA9IHRoaXMuX2NvbXB1dGVk
V2F0Y2hlcnMgJiYgdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1trZXldO1xuICAgIGlmICh3YXRjaGVy
KSB7XG4gICAgICBpZiAod2F0Y2hlci5kaXJ0eSkge1xuICAgICAgICB3YXRjaGVyLmV2YWx1YXRl
KCk7XG4gICAgICB9XG4gICAgICBpZiAoRGVwLnRhcmdldCkge1xuICAgICAgICB3YXRjaGVyLmRl
cGVuZCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdhdGNoZXIudmFsdWVcbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gaW5pdE1ldGhvZHMgKHZtLCBtZXRob2RzKSB7XG4gIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY2hlY2tPcHRpb25UeXBlKHZtLCAnbWV0aG9k
cycpO1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGlu
IG1ldGhvZHMpIHtcbiAgICB2bVtrZXldID0gbWV0aG9kc1trZXldID09IG51bGwgPyBub29wIDog
YmluZChtZXRob2RzW2tleV0sIHZtKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKG1ldGhvZHNba2V5XSA9PSBudWxsKSB7XG4gICAg
ICAgIHdhcm4oXG4gICAgICAgICAgXCJtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBh
biB1bmRlZmluZWQgdmFsdWUgaW4gdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uLiBcIiArXG4gICAg
ICAgICAgXCJEaWQgeW91IHJlZmVyZW5jZSB0aGUgZnVuY3Rpb24gY29ycmVjdGx5P1wiLFxuICAg
ICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMgJiYgaGFzT3du
KHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwibWV0aG9kIFxcXCJc
IiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBwcm9wLlwiKSxc
biAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiBpbml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nICYmIGNoZWNrT3B0aW9uVHlwZSh2bSwgJ3dhdGNoJyk7XG4gIGZvciAodmFy
IGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAo
QXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5k
bGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxl
cltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtl
eSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKFxu
ICB2bSxcbiAga2V5T3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmIChpc1Bs
YWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxl
ciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJp
bmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2bS4kd2F0
Y2goa2V5T3JGbiwgaGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAo
VnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNs
YXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVj
dCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVm
LmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5j
dGlvbiAobmV3RGF0YSkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJlcGxhY2luZyBp
bnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0
aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICAgIHByb3Bz
RGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMgcmVhZG9ubHku
XCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90
b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnBy
b3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBlLiRzZXQgPSBz
ZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJvdG90eXBlLiR3
YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9wdGlvbnNcbiAg
KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoaXNQbGFpbk9iamVjdChjYikpIHtcbiAg
ICAgIHJldHVybiBjcmVhdGVXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucylcbiAgICB9
XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtc
biAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7
XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICBjYi5jYWxsKHZtLCB3YXRjaGVy
LnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAg
ICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdFByb3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlk
ZTtcbiAgaWYgKHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9
PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7
XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQg
PSByZXNvbHZlSW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7
XG4gICAgb2JzZXJ2ZXJTdGF0ZS5zaG91bGRDb252ZXJ0ID0gZmFsc2U7XG4gICAgT2JqZWN0Lmtl
eXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGln
bm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSwg
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0
aW5nIGFuIGluamVjdGVkIHZhbHVlIGRpcmVjdGx5IHNpbmNlIHRoZSBjaGFuZ2VzIHdpbGwgYmUg
XCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcHJvdmlkZWQgY29t
cG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiaW5qZWN0aW9uIGJlaW5nIG11
dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAg
ICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZl
JCQxKHZtLCBrZXksIHJlc3VsdFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYnNlcnZl
clN0YXRlLnNob3VsZENvbnZlcnQgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJ
bmplY3QgKGluamVjdCwgdm0pIHtcbiAgaWYgKGluamVjdCkge1xuICAgIC8vIGluamVjdCBpcyA6
YW55IGJlY2F1c2UgZmxvdyBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgY2FjaGVk
XG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGtleXMgPSBo
YXNTeW1ib2xcbiAgICAgICAgPyBSZWZsZWN0Lm93bktleXMoaW5qZWN0KVxuICAgICAgICA6IE9i
amVjdC5rZXlzKGluamVjdCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3Ro
OyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHByb3ZpZGVLZXkg
PSBpbmplY3Rba2V5XTtcbiAgICAgIHZhciBzb3VyY2UgPSB2bTtcbiAgICAgIHdoaWxlIChzb3Vy
Y2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZS5fcHJvdmlkZWQgJiYgcHJvdmlkZUtleSBpbiBzb3Vy
Y2UuX3Byb3ZpZGVkKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBzb3VyY2UuX3Byb3ZpZGVk
W3Byb3ZpZGVLZXldO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgc291cmNl
ID0gc291cmNlLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhc291cmNlKSB7XG4gICAgICAgIHdhcm4oKFwiSW5qZWN0
aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBub3QgZm91bmRcIiksIHZtKTtcbiAgICAgIH1cbiAg
ICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVh
dGVGdW5jdGlvbmFsQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgcHJvcHNEYXRhLFxuICBkYXRhLFxu
ICBjb250ZXh0LFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIgcHJv
cE9wdGlvbnMgPSBDdG9yLm9wdGlvbnMucHJvcHM7XG4gIGlmIChpc0RlZihwcm9wT3B0aW9ucykp
IHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHByb3BzW2tleV0g
PSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhIHx8IHt9KTtcbiAgICB9
XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRGVmKGRhdGEuYXR0cnMpKSB7IG1lcmdlUHJvcHMocHJv
cHMsIGRhdGEuYXR0cnMpOyB9XG4gICAgaWYgKGlzRGVmKGRhdGEucHJvcHMpKSB7IG1lcmdlUHJv
cHMocHJvcHMsIGRhdGEucHJvcHMpOyB9XG4gIH1cbiAgLy8gZW5zdXJlIHRoZSBjcmVhdGVFbGVt
ZW50IGZ1bmN0aW9uIGluIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAvLyBnZXRzIGEgdW5pcXVl
IGNvbnRleHQgLSB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdCBuYW1lZCBzbG90IGNoZWNr
XG4gIHZhciBfY29udGV4dCA9IE9iamVjdC5jcmVhdGUoY29udGV4dCk7XG4gIHZhciBoID0gZnVu
Y3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoX2NvbnRleHQsIGEsIGIs
IGMsIGQsIHRydWUpOyB9O1xuICB2YXIgdm5vZGUgPSBDdG9yLm9wdGlvbnMucmVuZGVyLmNhbGwo
bnVsbCwgaCwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgcHJvcHM6IHByb3BzLFxuICAgIGNoaWxk
cmVuOiBjaGlsZHJlbixcbiAgICBwYXJlbnQ6IGNvbnRleHQsXG4gICAgbGlzdGVuZXJzOiBkYXRh
Lm9uIHx8IHt9LFxuICAgIGluamVjdGlvbnM6IHJlc29sdmVJbmplY3QoQ3Rvci5vcHRpb25zLmlu
amVjdCwgY29udGV4dCksXG4gICAgc2xvdHM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmVT
bG90cyhjaGlsZHJlbiwgY29udGV4dCk7IH1cbiAgfSk7XG4gIGlmICh2bm9kZSBpbnN0YW5jZW9m
IFZOb2RlKSB7XG4gICAgdm5vZGUuZnVuY3Rpb25hbENvbnRleHQgPSBjb250ZXh0O1xuICAgIHZu
b2RlLmZ1bmN0aW9uYWxPcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICAgIGlmIChkYXRhLnNsb3Qp
IHtcbiAgICAgICh2bm9kZS5kYXRhIHx8ICh2bm9kZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5z
bG90O1xuICAgIH1cbiAgfVxuICByZXR1cm4gdm5vZGVcbn1cblxuZnVuY3Rpb24gbWVyZ2VQcm9w
cyAodG8sIGZyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICB0b1tjYW1lbGl6
ZShrZXkpXSA9IGZyb21ba2V5XTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gaG9va3MgdG8gYmUg
aW52b2tlZCBvbiBjb21wb25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVudFZO
b2RlSG9va3MgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQgKFxuICAgIHZub2RlLFxuICAgIGh5
ZHJhdGluZyxcbiAgICBwYXJlbnRFbG0sXG4gICAgcmVmRWxtXG4gICkge1xuICAgIGlmICghdm5v
ZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJv
eWVkKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNyZWF0
ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUoXG4gICAgICAgIHZub2RlLFxuICAgICAgICBhY3Rp
dmVJbnN0YW5jZSxcbiAgICAgICAgcGFyZW50RWxtLFxuICAgICAgICByZWZFbG1cbiAgICAgICk7
XG4gICAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBo
eWRyYXRpbmcpO1xuICAgIH0gZWxzZSBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUpIHtcbiAgICAg
IC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFyIG1v
dW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVudFZO
b2RlSG9va3MucHJlcGF0Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9XG4gIH0s
XG5cbiAgcHJlcGF0Y2g6IGZ1bmN0aW9uIHByZXBhdGNoIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAg
ICB2YXIgb3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgdmFyIGNoaWxkID0g
dm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAg
ICB1cGRhdGVDaGlsZENvbXBvbmVudChcbiAgICAgIGNoaWxkLFxuICAgICAgb3B0aW9ucy5wcm9w
c0RhdGEsIC8vIHVwZGF0ZWQgcHJvcHNcbiAgICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1cGRh
dGVkIGxpc3RlbmVyc1xuICAgICAgdm5vZGUsIC8vIG5ldyBwYXJlbnQgdm5vZGVcbiAgICAgIG9w
dGlvbnMuY2hpbGRyZW4gLy8gbmV3IGNoaWxkcmVuXG4gICAgKTtcbiAgfSxcblxuICBpbnNlcnQ6
IGZ1bmN0aW9uIGluc2VydCAodm5vZGUpIHtcbiAgICB2YXIgY29udGV4dCA9IHZub2RlLmNvbnRl
eHQ7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7
XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5jZS5faXNNb3VudGVkKSB7XG4gICAgICBjb21wb25l
bnRJbnN0YW5jZS5faXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVudElu
c3RhbmNlLCAnbW91bnRlZCcpO1xuICAgIH1cbiAgICBpZiAodm5vZGUuZGF0YS5rZWVwQWxpdmUp
IHtcbiAgICAgIGlmIChjb250ZXh0Ll9pc01vdW50ZWQpIHtcbiAgICAgICAgLy8gdnVlLXJvdXRl
ciMxMjEyXG4gICAgICAgIC8vIER1cmluZyB1cGRhdGVzLCBhIGtlcHQtYWxpdmUgY29tcG9uZW50
J3MgY2hpbGQgY29tcG9uZW50cyBtYXlcbiAgICAgICAgLy8gY2hhbmdlLCBzbyBkaXJlY3RseSB3
YWxraW5nIHRoZSB0cmVlIGhlcmUgbWF5IGNhbGwgYWN0aXZhdGVkIGhvb2tzXG4gICAgICAgIC8v
IG9uIGluY29ycmVjdCBjaGlsZHJlbi4gSW5zdGVhZCB3ZSBwdXNoIHRoZW0gaW50byBhIHF1ZXVl
IHdoaWNoIHdpbGxcbiAgICAgICAgLy8gYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSB3aG9sZSBwYXRj
aCBwcm9jZXNzIGVuZGVkLlxuICAgICAgICBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudChjb21wb25l
bnRJbnN0YW5jZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmF0ZUNoaWxkQ29tcG9u
ZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAg
fVxuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3kgKHZub2RlKSB7XG4gICAgdmFy
IGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYgKCFj
b21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGlmICghdm5vZGUuZGF0YS5r
ZWVwQWxpdmUpIHtcbiAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0
YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFy
IGhvb2tzVG9NZXJnZSA9IE9iamVjdC5rZXlzKGNvbXBvbmVudFZOb2RlSG9va3MpO1xuXG5mdW5j
dGlvbiBjcmVhdGVDb21wb25lbnQgKFxuICBDdG9yLFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBj
aGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgaWYgKGlzVW5kZWYoQ3RvcikpIHtcbiAgICByZXR1cm5c
biAgfVxuXG4gIHZhciBiYXNlQ3RvciA9IGNvbnRleHQuJG9wdGlvbnMuX2Jhc2U7XG5cbiAgLy8g
cGxhaW4gb3B0aW9ucyBvYmplY3Q6IHR1cm4gaXQgaW50byBhIGNvbnN0cnVjdG9yXG4gIGlmIChp
c09iamVjdChDdG9yKSkge1xuICAgIEN0b3IgPSBiYXNlQ3Rvci5leHRlbmQoQ3Rvcik7XG4gIH1c
blxuICAvLyBpZiBhdCB0aGlzIHN0YWdlIGl0J3Mgbm90IGEgY29uc3RydWN0b3Igb3IgYW4gYXN5
bmMgY29tcG9uZW50IGZhY3RvcnksXG4gIC8vIHJlamVjdC5cbiAgaWYgKHR5cGVvZiBDdG9yICE9
PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgIHdhcm4oKFwiSW52YWxpZCBDb21wb25lbnQgZGVmaW5pdGlvbjogXCIg
KyAoU3RyaW5nKEN0b3IpKSksIGNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4g
IC8vIGFzeW5jIGNvbXBvbmVudFxuICB2YXIgYXN5bmNGYWN0b3J5O1xuICBpZiAoaXNVbmRlZihD
dG9yLmNpZCkpIHtcbiAgICBhc3luY0ZhY3RvcnkgPSBDdG9yO1xuICAgIEN0b3IgPSByZXNvbHZl
QXN5bmNDb21wb25lbnQoYXN5bmNGYWN0b3J5LCBiYXNlQ3RvciwgY29udGV4dCk7XG4gICAgaWYg
KEN0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gcmV0dXJuIGEgcGxhY2Vob2xkZXIgbm9k
ZSBmb3IgYXN5bmMgY29tcG9uZW50LCB3aGljaCBpcyByZW5kZXJlZFxuICAgICAgLy8gYXMgYSBj
b21tZW50IG5vZGUgYnV0IHByZXNlcnZlcyBhbGwgdGhlIHJhdyBpbmZvcm1hdGlvbiBmb3IgdGhl
IG5vZGUuXG4gICAgICAvLyB0aGUgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIGZvciBhc3luYyBz
ZXJ2ZXItcmVuZGVyaW5nIGFuZCBoeWRyYXRpb24uXG4gICAgICByZXR1cm4gY3JlYXRlQXN5bmNQ
bGFjZWhvbGRlcihcbiAgICAgICAgYXN5bmNGYWN0b3J5LFxuICAgICAgICBkYXRhLFxuICAgICAg
ICBjb250ZXh0LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgdGFnXG4gICAgICApXG4gICAg
fVxuICB9XG5cbiAgZGF0YSA9IGRhdGEgfHwge307XG5cbiAgLy8gcmVzb2x2ZSBjb25zdHJ1Y3Rv
ciBvcHRpb25zIGluIGNhc2UgZ2xvYmFsIG1peGlucyBhcmUgYXBwbGllZCBhZnRlclxuICAvLyBj
b21wb25lbnQgY29uc3RydWN0b3IgY3JlYXRpb25cbiAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9u
cyhDdG9yKTtcblxuICAvLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgZGF0YSBpbnRvIHBy
b3BzICYgZXZlbnRzXG4gIGlmIChpc0RlZihkYXRhLm1vZGVsKSkge1xuICAgIHRyYW5zZm9ybU1v
ZGVsKEN0b3Iub3B0aW9ucywgZGF0YSk7XG4gIH1cblxuICAvLyBleHRyYWN0IHByb3BzXG4gIHZh
ciBwcm9wc0RhdGEgPSBleHRyYWN0UHJvcHNGcm9tVk5vZGVEYXRhKGRhdGEsIEN0b3IsIHRhZyk7
XG5cbiAgLy8gZnVuY3Rpb25hbCBjb21wb25lbnRcbiAgaWYgKGlzVHJ1ZShDdG9yLm9wdGlvbnMu
ZnVuY3Rpb25hbCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudChDdG9y
LCBwcm9wc0RhdGEsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKVxuICB9XG5cbiAgLy8gZXh0cmFj
dCBsaXN0ZW5lcnMsIHNpbmNlIHRoZXNlIG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXNcbiAgLy8gY2hp
bGQgY29tcG9uZW50IGxpc3RlbmVycyBpbnN0ZWFkIG9mIERPTSBsaXN0ZW5lcnNcbiAgdmFyIGxp
c3RlbmVycyA9IGRhdGEub247XG4gIC8vIHJlcGxhY2Ugd2l0aCBsaXN0ZW5lcnMgd2l0aCAubmF0
aXZlIG1vZGlmaWVyXG4gIC8vIHNvIGl0IGdldHMgcHJvY2Vzc2VkIGR1cmluZyBwYXJlbnQgY29t
cG9uZW50IHBhdGNoLlxuICBkYXRhLm9uID0gZGF0YS5uYXRpdmVPbjtcblxuICBpZiAoaXNUcnVl
KEN0b3Iub3B0aW9ucy5hYnN0cmFjdCkpIHtcbiAgICAvLyBhYnN0cmFjdCBjb21wb25lbnRzIGRv
IG5vdCBrZWVwIGFueXRoaW5nXG4gICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVycyAm
IHNsb3RcblxuICAgIC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICB2YXIgc2xvdCA9IGRhdGEuc2xv
dDtcbiAgICBkYXRhID0ge307XG4gICAgaWYgKHNsb3QpIHtcbiAgICAgIGRhdGEuc2xvdCA9IHNs
b3Q7XG4gICAgfVxuICB9XG5cbiAgLy8gbWVyZ2UgY29tcG9uZW50IG1hbmFnZW1lbnQgaG9va3Mg
b250byB0aGUgcGxhY2Vob2xkZXIgbm9kZVxuICBtZXJnZUhvb2tzKGRhdGEpO1xuXG4gIC8vIHJl
dHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBuYW1lID0gQ3Rvci5vcHRpb25zLm5hbWUg
fHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgKFwidnVlLWNvbXBvbmVudC1c
IiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5hbWUpIDogJycpKSxcbiAgICBkYXRh
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0LFxuICAgIHsgQ3Rvcjog
Q3RvciwgcHJvcHNEYXRhOiBwcm9wc0RhdGEsIGxpc3RlbmVyczogbGlzdGVuZXJzLCB0YWc6IHRh
ZywgY2hpbGRyZW46IGNoaWxkcmVuIH0sXG4gICAgYXN5bmNGYWN0b3J5XG4gICk7XG4gIHJldHVy
biB2bm9kZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlIChc
biAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29tcG9uZW50Vk5vZGUgYnV0IGZsb3cg
ZG9lc24ndFxuICBwYXJlbnQsIC8vIGFjdGl2ZUluc3RhbmNlIGluIGxpZmVjeWNsZSBzdGF0ZVxu
ICBwYXJlbnRFbG0sXG4gIHJlZkVsbVxuKSB7XG4gIHZhciB2bm9kZUNvbXBvbmVudE9wdGlvbnMg
PSB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXNDb21w
b25lbnQ6IHRydWUsXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgcHJvcHNEYXRhOiB2bm9kZUNv
bXBvbmVudE9wdGlvbnMucHJvcHNEYXRhLFxuICAgIF9jb21wb25lbnRUYWc6IHZub2RlQ29tcG9u
ZW50T3B0aW9ucy50YWcsXG4gICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBfcGFyZW50TGlz
dGVuZXJzOiB2bm9kZUNvbXBvbmVudE9wdGlvbnMubGlzdGVuZXJzLFxuICAgIF9yZW5kZXJDaGls
ZHJlbjogdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVuLFxuICAgIF9wYXJlbnRFbG06IHBh
cmVudEVsbSB8fCBudWxsLFxuICAgIF9yZWZFbG06IHJlZkVsbSB8fCBudWxsXG4gIH07XG4gIC8v
IGNoZWNrIGlubGluZS10ZW1wbGF0ZSByZW5kZXIgZnVuY3Rpb25zXG4gIHZhciBpbmxpbmVUZW1w
bGF0ZSA9IHZub2RlLmRhdGEuaW5saW5lVGVtcGxhdGU7XG4gIGlmIChpc0RlZihpbmxpbmVUZW1w
bGF0ZSkpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IGlubGluZVRlbXBsYXRlLnJlbmRlcjtcbiAg
ICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IGlubGluZVRlbXBsYXRlLnN0YXRpY1JlbmRlckZu
cztcbiAgfVxuICByZXR1cm4gbmV3IHZub2RlQ29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlvbnMp
XG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9va3MgKGRhdGEpIHtcbiAgaWYgKCFkYXRhLmhvb2spIHtc
biAgICBkYXRhLmhvb2sgPSB7fTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzVG9N
ZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4gICAg
dmFyIGZyb21QYXJlbnQgPSBkYXRhLmhvb2tba2V5XTtcbiAgICB2YXIgb3VycyA9IGNvbXBvbmVu
dFZOb2RlSG9va3Nba2V5XTtcbiAgICBkYXRhLmhvb2tba2V5XSA9IGZyb21QYXJlbnQgPyBtZXJn
ZUhvb2skMShvdXJzLCBmcm9tUGFyZW50KSA6IG91cnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVy
Z2VIb29rJDEgKG9uZSwgdHdvKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xu
ICAgIG9uZShhLCBiLCBjLCBkKTtcbiAgICB0d28oYSwgYiwgYywgZCk7XG4gIH1cbn1cblxuLy8g
dHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGluZm8gKHZhbHVlIGFuZCBjYWxsYmFjaykgaW50
b1xuLy8gcHJvcCBhbmQgZXZlbnQgaGFuZGxlciByZXNwZWN0aXZlbHkuXG5mdW5jdGlvbiB0cmFu
c2Zvcm1Nb2RlbCAob3B0aW9ucywgZGF0YSkge1xuICB2YXIgcHJvcCA9IChvcHRpb25zLm1vZGVs
ICYmIG9wdGlvbnMubW9kZWwucHJvcCkgfHwgJ3ZhbHVlJztcbiAgdmFyIGV2ZW50ID0gKG9wdGlv
bnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5ldmVudCkgfHwgJ2lucHV0JzsoZGF0YS5wcm9wcyB8
fCAoZGF0YS5wcm9wcyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIgb24g
PSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICBpZiAoaXNEZWYob25bZXZlbnRdKSkge1xu
ICAgIG9uW2V2ZW50XSA9IFtkYXRhLm1vZGVsLmNhbGxiYWNrXS5jb25jYXQob25bZXZlbnRdKTtc
biAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBkYXRhLm1vZGVsLmNhbGxiYWNrO1xuICB9XG59
XG5cbi8qICAqL1xuXG52YXIgU0lNUExFX05PUk1BTElaRSA9IDE7XG52YXIgQUxXQVlTX05PUk1B
TElaRSA9IDI7XG5cbi8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIHByb3ZpZGluZyBhIG1vcmUgZmxl
eGlibGUgaW50ZXJmYWNlXG4vLyB3aXRob3V0IGdldHRpbmcgeWVsbGVkIGF0IGJ5IGZsb3dcbmZ1
bmN0aW9uIGNyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNo
aWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZSxcbiAgYWx3YXlzTm9ybWFsaXplXG4pIHtcbiAg
aWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgaXNQcmltaXRpdmUoZGF0YSkpIHtcbiAgICBub3Jt
YWxpemF0aW9uVHlwZSA9IGNoaWxkcmVuO1xuICAgIGNoaWxkcmVuID0gZGF0YTtcbiAgICBkYXRh
ID0gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChpc1RydWUoYWx3YXlzTm9ybWFsaXplKSkge1xuICAg
IG5vcm1hbGl6YXRpb25UeXBlID0gQUxXQVlTX05PUk1BTElaRTtcbiAgfVxuICByZXR1cm4gX2Ny
ZWF0ZUVsZW1lbnQoY29udGV4dCwgdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5
cGUpXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxu
ICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGVcbikge1xuICBpZiAoaXNE
ZWYoZGF0YSkgJiYgaXNEZWYoKGRhdGEpLl9fb2JfXykpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkF2b2lkIHVzaW5nIG9ic2Vy
dmVkIGRhdGEgb2JqZWN0IGFzIHZub2RlIGRhdGE6IFwiICsgKEpTT04uc3RyaW5naWZ5KGRhdGEp
KSArIFwiXFxuXCIgK1xuICAgICAgJ0Fsd2F5cyBjcmVhdGUgZnJlc2ggdm5vZGUgZGF0YSBvYmpl
Y3RzIGluIGVhY2ggcmVuZGVyIScsXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgICByZXR1cm4g
Y3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbiAgLy8gb2JqZWN0IHN5bnRheCBpbiB2LWJpbmRcbiAg
aWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKGRhdGEuaXMpKSB7XG4gICAgdGFnID0gZGF0YS5pcztc
biAgfVxuICBpZiAoIXRhZykge1xuICAgIC8vIGluIGNhc2Ugb2YgY29tcG9uZW50IDppcyBzZXQg
dG8gZmFsc3kgdmFsdWVcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbiAgLy8g
d2FybiBhZ2FpbnN0IG5vbi1wcmltaXRpdmUga2V5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0YS5rZXkp
ICYmICFpc1ByaW1pdGl2ZShkYXRhLmtleSlcbiAgKSB7XG4gICAgd2FybihcbiAgICAgICdBdm9p
ZCB1c2luZyBub24tcHJpbWl0aXZlIHZhbHVlIGFzIGtleSwgJyArXG4gICAgICAndXNlIHN0cmlu
Zy9udW1iZXIgdmFsdWUgaW5zdGVhZC4nLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gIH1cbiAg
Ly8gc3VwcG9ydCBzaW5nbGUgZnVuY3Rpb24gY2hpbGRyZW4gYXMgZGVmYXVsdCBzY29wZWQgc2xv
dFxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiZcbiAgICB0eXBlb2YgY2hpbGRyZW5b
MF0gPT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgZGF0YSA9IGRhdGEgfHwge307XG4gICAgZGF0
YS5zY29wZWRTbG90cyA9IHsgZGVmYXVsdDogY2hpbGRyZW5bMF0gfTtcbiAgICBjaGlsZHJlbi5s
ZW5ndGggPSAwO1xuICB9XG4gIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gQUxXQVlTX05PUk1B
TElaRSkge1xuICAgIGNoaWxkcmVuID0gbm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9
IGVsc2UgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBTSU1QTEVfTk9STUFMSVpFKSB7XG4gICAg
Y2hpbGRyZW4gPSBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH1cbiAgdmFy
IHZub2RlLCBucztcbiAgaWYgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIEN0
b3I7XG4gICAgbnMgPSBjb25maWcuZ2V0VGFnTmFtZXNwYWNlKHRhZyk7XG4gICAgaWYgKGNvbmZp
Zy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICAgIC8vIHBsYXRmb3JtIGJ1aWx0LWluIGVsZW1l
bnRzXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgY29uZmlnLnBhcnNlUGxhdGZv
cm1UYWdOYW1lKHRhZyksIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzRGVmKEN0b3IgPSByZXNv
bHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0YWcpKSkge1xuICAgICAg
Ly8gY29tcG9uZW50XG4gICAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudChDdG9yLCBkYXRhLCBj
b250ZXh0LCBjaGlsZHJlbiwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdW5rbm93biBv
ciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG4gICAgICAvLyBjaGVjayBhdCBydW50aW1l
IGJlY2F1c2UgaXQgbWF5IGdldCBhc3NpZ25lZCBhIG5hbWVzcGFjZSB3aGVuIGl0c1xuICAgICAg
Ly8gcGFyZW50IG5vcm1hbGl6ZXMgY2hpbGRyZW5cbiAgICAgIHZub2RlID0gbmV3IFZOb2RlKFxu
ICAgICAgICB0YWcsIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZGlyZWN0IGNv
bXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3JcbiAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVu
dCh0YWcsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgfVxuICBpZiAoaXNEZWYodm5vZGUp
KSB7XG4gICAgaWYgKG5zKSB7IGFwcGx5TlModm5vZGUsIG5zKTsgfVxuICAgIHJldHVybiB2bm9k
ZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxufVxuXG5m
dW5jdGlvbiBhcHBseU5TICh2bm9kZSwgbnMpIHtcbiAgdm5vZGUubnMgPSBucztcbiAgaWYgKHZu
b2RlLnRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSB7XG4gICAgLy8gdXNlIGRlZmF1bHQgbmFtZXNw
YWNlIGluc2lkZSBmb3JlaWduT2JqZWN0XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKGlzRGVmKHZu
b2RlLmNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4u
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZHJlbltp
XTtcbiAgICAgIGlmIChpc0RlZihjaGlsZC50YWcpICYmIGlzVW5kZWYoY2hpbGQubnMpKSB7XG4g
ICAgICAgIGFwcGx5TlMoY2hpbGQsIG5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyog
ICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyB2LWZvciBsaXN0cy5c
biAqL1xuZnVuY3Rpb24gcmVuZGVyTGlzdCAoXG4gIHZhbCxcbiAgcmVuZGVyXG4pIHtcbiAgdmFy
IHJldCwgaSwgbCwga2V5cywga2V5O1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpIHx8IHR5cGVv
ZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpO1xu
ICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICByZXRb
aV0gPSByZW5kZXIodmFsW2ldLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9
PT0gJ251bWJlcicpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsKTtcbiAgICBmb3IgKGkgPSAw
OyBpIDwgdmFsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcihpICsgMSwgaSk7XG4gICAg
fVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXMo
dmFsKTtcbiAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAs
IGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAga2V5ID0ga2V5c1tpXTtcbiAg
ICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpKTtcbiAgICB9XG4gIH1cbiAgaWYg
KGlzRGVmKHJldCkpIHtcbiAgICAocmV0KS5faXNWTGlzdCA9IHRydWU7XG4gIH1cbiAgcmV0dXJu
IHJldFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5n
IDxzbG90PlxuICovXG5mdW5jdGlvbiByZW5kZXJTbG90IChcbiAgbmFtZSxcbiAgZmFsbGJhY2ss
XG4gIHByb3BzLFxuICBiaW5kT2JqZWN0XG4pIHtcbiAgdmFyIHNjb3BlZFNsb3RGbiA9IHRoaXMu
JHNjb3BlZFNsb3RzW25hbWVdO1xuICBpZiAoc2NvcGVkU2xvdEZuKSB7IC8vIHNjb3BlZCBzbG90
XG4gICAgcHJvcHMgPSBwcm9wcyB8fCB7fTtcbiAgICBpZiAoYmluZE9iamVjdCkge1xuICAgICAg
cHJvcHMgPSBleHRlbmQoZXh0ZW5kKHt9LCBiaW5kT2JqZWN0KSwgcHJvcHMpO1xuICAgIH1cbiAg
ICByZXR1cm4gc2NvcGVkU2xvdEZuKHByb3BzKSB8fCBmYWxsYmFja1xuICB9IGVsc2Uge1xuICAg
IHZhciBzbG90Tm9kZXMgPSB0aGlzLiRzbG90c1tuYW1lXTtcbiAgICAvLyB3YXJuIGR1cGxpY2F0
ZSBzbG90IHVzYWdlXG4gICAgaWYgKHNsb3ROb2RlcyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBzbG90Tm9kZXMuX3JlbmRlcmVkICYmIHdhcm4oXG4g
ICAgICAgIFwiRHVwbGljYXRlIHByZXNlbmNlIG9mIHNsb3QgXFxcIlwiICsgbmFtZSArIFwiXFxc
IiBmb3VuZCBpbiB0aGUgc2FtZSByZW5kZXIgdHJlZSBcIiArXG4gICAgICAgIFwiLSB0aGlzIHdp
bGwgbGlrZWx5IGNhdXNlIHJlbmRlciBlcnJvcnMuXCIsXG4gICAgICAgIHRoaXNcbiAgICAgICk7
XG4gICAgICBzbG90Tm9kZXMuX3JlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNs
b3ROb2RlcyB8fCBmYWxsYmFja1xuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUg
aGVscGVyIGZvciByZXNvbHZpbmcgZmlsdGVyc1xuICovXG5mdW5jdGlvbiByZXNvbHZlRmlsdGVy
IChpZCkge1xuICByZXR1cm4gcmVzb2x2ZUFzc2V0KHRoaXMuJG9wdGlvbnMsICdmaWx0ZXJzJywg
aWQsIHRydWUpIHx8IGlkZW50aXR5XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVs
cGVyIGZvciBjaGVja2luZyBrZXlDb2RlcyBmcm9tIGNvbmZpZy5cbiAqL1xuZnVuY3Rpb24gY2hl
Y2tLZXlDb2RlcyAoXG4gIGV2ZW50S2V5Q29kZSxcbiAga2V5LFxuICBidWlsdEluQWxpYXNcbikg
e1xuICB2YXIga2V5Q29kZXMgPSBjb25maWcua2V5Q29kZXNba2V5XSB8fCBidWlsdEluQWxpYXM7
XG4gIGlmIChBcnJheS5pc0FycmF5KGtleUNvZGVzKSkge1xuICAgIHJldHVybiBrZXlDb2Rlcy5p
bmRleE9mKGV2ZW50S2V5Q29kZSkgPT09IC0xXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGtleUNv
ZGVzICE9PSBldmVudEtleUNvZGVcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1l
IGhlbHBlciBmb3IgbWVyZ2luZyB2LWJpbmQ9XCJvYmplY3RcIiBpbnRvIGEgVk5vZGUncyBkYXRh
LlxuICovXG5mdW5jdGlvbiBiaW5kT2JqZWN0UHJvcHMgKFxuICBkYXRhLFxuICB0YWcsXG4gIHZh
bHVlLFxuICBhc1Byb3AsXG4gIGlzU3luY1xuKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmICgh
aXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3Rz
IGFuIE9iamVjdCBvciBBcnJheSB2YWx1ZScsXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1
ZSA9IHRvT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhciBoYXNoO1xuICAgICAgdmFy
IGxvb3AgPSBmdW5jdGlvbiAoIGtleSApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9
PT0gJ2NsYXNzJyB8fFxuICAgICAgICAgIGtleSA9PT0gJ3N0eWxlJyB8fFxuICAgICAgICAgIGlz
UmVzZXJ2ZWRBdHRyaWJ1dGUoa2V5KVxuICAgICAgICApIHtcbiAgICAgICAgICBoYXNoID0gZGF0
YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuYXR0cnMgJiYg
ZGF0YS5hdHRycy50eXBlO1xuICAgICAgICAgIGhhc2ggPSBhc1Byb3AgfHwgY29uZmlnLm11c3RV
c2VQcm9wKHRhZywgdHlwZSwga2V5KVxuICAgICAgICAgICAgPyBkYXRhLmRvbVByb3BzIHx8IChk
YXRhLmRvbVByb3BzID0ge30pXG4gICAgICAgICAgICA6IGRhdGEuYXR0cnMgfHwgKGRhdGEuYXR0
cnMgPSB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoa2V5IGluIGhhc2gpKSB7XG4gICAg
ICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcblxuICAgICAgICAgIGlmIChpc1N5bmMpIHtc
biAgICAgICAgICAgIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gICAgICAg
ICAgICBvblsoXCJ1cGRhdGU6XCIgKyBrZXkpXSA9IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAg
ICAgICAgICAgdmFsdWVba2V5XSA9ICRldmVudDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIGxv
b3AoIGtleSApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoq
XG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVu
Y3Rpb24gcmVuZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICB2YXIgdHJl
ZSA9IHRoaXMuX3N0YXRpY1RyZWVzW2luZGV4XTtcbiAgLy8gaWYgaGFzIGFscmVhZHktcmVuZGVy
ZWQgc3RhdGljIHRyZWUgYW5kIG5vdCBpbnNpZGUgdi1mb3IsXG4gIC8vIHdlIGNhbiByZXVzZSB0
aGUgc2FtZSB0cmVlIGJ5IGRvaW5nIGEgc2hhbGxvdyBjbG9uZS5cbiAgaWYgKHRyZWUgJiYgIWlz
SW5Gb3IpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0cmVlKVxuICAgICAgPyBjbG9uZVZO
b2Rlcyh0cmVlKVxuICAgICAgOiBjbG9uZVZOb2RlKHRyZWUpXG4gIH1cbiAgLy8gb3RoZXJ3aXNl
LCByZW5kZXIgYSBmcmVzaCB0cmVlLlxuICB0cmVlID0gdGhpcy5fc3RhdGljVHJlZXNbaW5kZXhd
ID1cbiAgICB0aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbCh0aGlzLl9y
ZW5kZXJQcm94eSk7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19zdGF0aWNfX1wiICsgaW5kZXgp
LCBmYWxzZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9y
IHYtb25jZS5cbiAqIEVmZmVjdGl2ZWx5IGl0IG1lYW5zIG1hcmtpbmcgdGhlIG5vZGUgYXMgc3Rh
dGljIHdpdGggYSB1bmlxdWUga2V5LlxuICovXG5mdW5jdGlvbiBtYXJrT25jZSAoXG4gIHRyZWUs
XG4gIGluZGV4LFxuICBrZXlcbikge1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fb25jZV9fXCIg
KyBpbmRleCArIChrZXkgPyAoXCJfXCIgKyBrZXkpIDogXCJcIikpLCB0cnVlKTtcbiAgcmV0dXJu
IHRyZWVcbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpYyAoXG4gIHRyZWUsXG4gIGtleSxcbiAgaXNP
bmNlXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0cmVlW2ldICYmIHR5cGVvZiB0
cmVlW2ldICE9PSAnc3RyaW5nJykge1xuICAgICAgICBtYXJrU3RhdGljTm9kZSh0cmVlW2ldLCAo
a2V5ICsgXCJfXCIgKyBpKSwgaXNPbmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4g
ICAgbWFya1N0YXRpY05vZGUodHJlZSwga2V5LCBpc09uY2UpO1xuICB9XG59XG5cbmZ1bmN0aW9u
IG1hcmtTdGF0aWNOb2RlIChub2RlLCBrZXksIGlzT25jZSkge1xuICBub2RlLmlzU3RhdGljID0g
dHJ1ZTtcbiAgbm9kZS5rZXkgPSBrZXk7XG4gIG5vZGUuaXNPbmNlID0gaXNPbmNlO1xufVxuXG4v
KiAgKi9cblxuZnVuY3Rpb24gYmluZE9iamVjdExpc3RlbmVycyAoZGF0YSwgdmFsdWUpIHtcbiAg
aWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1v
biB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IHZhbHVlJyxcbiAgICAgICAgdGhp
c1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG9uID0gZGF0YS5vbiA9IGRhdGEu
b24gPyBleHRlbmQoe30sIGRhdGEub24pIDoge307XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFs
dWUpIHtcbiAgICAgICAgdmFyIGV4aXN0aW5nID0gb25ba2V5XTtcbiAgICAgICAgdmFyIG91cnMg
PSB2YWx1ZVtrZXldO1xuICAgICAgICBvbltrZXldID0gZXhpc3RpbmcgPyBbXS5jb25jYXQob3Vy
cywgZXhpc3RpbmcpIDogb3VycztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFc
bn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRSZW5kZXIgKHZtKSB7XG4gIHZtLl92bm9kZSA9
IG51bGw7IC8vIHRoZSByb290IG9mIHRoZSBjaGlsZCB0cmVlXG4gIHZtLl9zdGF0aWNUcmVlcyA9
IG51bGw7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IHZtLiRvcHRpb25zLl9wYXJl
bnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFyZW50IHRyZWVcbiAgdmFyIHJl
bmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5jb250ZXh0O1xuICB2bS4k
c2xvdHMgPSByZXNvbHZlU2xvdHModm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLCByZW5kZXJD
b250ZXh0KTtcbiAgdm0uJHNjb3BlZFNsb3RzID0gZW1wdHlPYmplY3Q7XG4gIC8vIGJpbmQgdGhl
IGNyZWF0ZUVsZW1lbnQgZm4gdG8gdGhpcyBpbnN0YW5jZVxuICAvLyBzbyB0aGF0IHdlIGdldCBw
cm9wZXIgcmVuZGVyIGNvbnRleHQgaW5zaWRlIGl0LlxuICAvLyBhcmdzIG9yZGVyOiB0YWcsIGRh
dGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSwgYWx3YXlzTm9ybWFsaXplXG4gIC8vIGlu
dGVybmFsIHZlcnNpb24gaXMgdXNlZCBieSByZW5kZXIgZnVuY3Rpb25zIGNvbXBpbGVkIGZyb20g
dGVtcGxhdGVzXG4gIHZtLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0
ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIGZhbHNlKTsgfTtcbiAgLy8gbm9ybWFsaXphdGlvbiBp
cyBhbHdheXMgYXBwbGllZCBmb3IgdGhlIHB1YmxpYyB2ZXJzaW9uLCB1c2VkIGluXG4gIC8vIHVz
ZXItd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zLlxuICB2bS4kY3JlYXRlRWxlbWVudCA9IGZ1bmN0
aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCB0
cnVlKTsgfTtcblxuICAvLyAkYXR0cnMgJiAkbGlzdGVuZXJzIGFyZSBleHBvc2VkIGZvciBlYXNp
ZXIgSE9DIGNyZWF0aW9uLlxuICAvLyB0aGV5IG5lZWQgdG8gYmUgcmVhY3RpdmUgc28gdGhhdCBI
T0NzIHVzaW5nIHRoZW0gYXJlIGFsd2F5cyB1cGRhdGVkXG4gIHZhciBwYXJlbnREYXRhID0gcGFy
ZW50Vm5vZGUgJiYgcGFyZW50Vm5vZGUuZGF0YTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2Ug
Ki9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBk
ZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRhdHRycycsIHBhcmVudERhdGEgJiYgcGFyZW50RGF0YS5h
dHRycywgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3
YXJuKFwiJGF0dHJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgZGVm
aW5lUmVhY3RpdmUkJDEodm0sICckbGlzdGVuZXJzJywgdm0uJG9wdGlvbnMuX3BhcmVudExpc3Rl
bmVycywgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3
YXJuKFwiJGxpc3RlbmVycyBpcyByZWFkb25seS5cIiwgdm0pO1xuICAgIH0sIHRydWUpO1xuICB9
IGVsc2Uge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGF0dHJzJywgcGFyZW50RGF0YSAm
JiBwYXJlbnREYXRhLmF0dHJzLCBudWxsLCB0cnVlKTtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2
bSwgJyRsaXN0ZW5lcnMnLCB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzLCBudWxsLCB0cnVl
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5
cGUuJG5leHRUaWNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0
aGlzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAg
ICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciByZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVu
ZGVyID0gcmVmLnJlbmRlcjtcbiAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1Jl
bmRlckZucztcbiAgICB2YXIgX3BhcmVudFZub2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAg
IGlmICh2bS5faXNNb3VudGVkKSB7XG4gICAgICAvLyBjbG9uZSBzbG90IG5vZGVzIG9uIHJlLXJl
bmRlcnNcbiAgICAgIGZvciAodmFyIGtleSBpbiB2bS4kc2xvdHMpIHtcbiAgICAgICAgdm0uJHNs
b3RzW2tleV0gPSBjbG9uZVZOb2Rlcyh2bS4kc2xvdHNba2V5XSk7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgdm0uJHNjb3BlZFNsb3RzID0gKF9wYXJlbnRWbm9kZSAmJiBfcGFyZW50Vm5vZGUuZGF0
YS5zY29wZWRTbG90cykgfHwgZW1wdHlPYmplY3Q7XG5cbiAgICBpZiAoc3RhdGljUmVuZGVyRm5z
ICYmICF2bS5fc3RhdGljVHJlZXMpIHtcbiAgICAgIHZtLl9zdGF0aWNUcmVlcyA9IFtdO1xuICAg
IH1cbiAgICAvLyBzZXQgcGFyZW50IHZub2RlLiB0aGlzIGFsbG93cyByZW5kZXIgZnVuY3Rpb25z
IHRvIGhhdmUgYWNjZXNzXG4gICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBsYWNlaG9sZGVyIG5v
ZGUuXG4gICAgdm0uJHZub2RlID0gX3BhcmVudFZub2RlO1xuICAgIC8vIHJlbmRlciBzZWxmXG4g
ICAgdmFyIHZub2RlO1xuICAgIHRyeSB7XG4gICAgICB2bm9kZSA9IHJlbmRlci5jYWxsKHZtLl9y
ZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAg
IGhhbmRsZUVycm9yKGUsIHZtLCBcInJlbmRlciBmdW5jdGlvblwiKTtcbiAgICAgIC8vIHJldHVy
biBlcnJvciByZW5kZXIgcmVzdWx0LFxuICAgICAgLy8gb3IgcHJldmlvdXMgdm5vZGUgdG8gcHJl
dmVudCByZW5kZXIgZXJyb3IgY2F1c2luZyBibGFuayBjb21wb25lbnRcbiAgICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICB2bm9kZSA9IHZtLiRvcHRpb25zLnJlbmRlckVycm9yXG4g
ICAgICAgICAgPyB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvci5jYWxsKHZtLl9yZW5kZXJQcm94eSwg
dm0uJGNyZWF0ZUVsZW1lbnQsIGUpXG4gICAgICAgICAgOiB2bS5fdm5vZGU7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g
cmV0dXJuIGVtcHR5IHZub2RlIGluIGNhc2UgdGhlIHJlbmRlciBmdW5jdGlvbiBlcnJvcmVkIG91
dFxuICAgIGlmICghKHZub2RlIGluc3RhbmNlb2YgVk5vZGUpKSB7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBBcnJheS5pc0FycmF5KHZub2RlKSkg
e1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdNdWx0aXBsZSByb290IG5vZGVzIHJldHVybmVk
IGZyb20gcmVuZGVyIGZ1bmN0aW9uLiBSZW5kZXIgZnVuY3Rpb24gJyArXG4gICAgICAgICAgJ3No
b3VsZCByZXR1cm4gYSBzaW5nbGUgcm9vdCBub2RlLicsXG4gICAgICAgICAgdm1cbiAgICAgICAg
KTtcbiAgICAgIH1cbiAgICAgIHZub2RlID0gY3JlYXRlRW1wdHlWTm9kZSgpO1xuICAgIH1cbiAg
ICAvLyBzZXQgcGFyZW50XG4gICAgdm5vZGUucGFyZW50ID0gX3BhcmVudFZub2RlO1xuICAgIHJl
dHVybiB2bm9kZVxuICB9O1xuXG4gIC8vIGludGVybmFsIHJlbmRlciBoZWxwZXJzLlxuICAvLyB0
aGVzZSBhcmUgZXhwb3NlZCBvbiB0aGUgaW5zdGFuY2UgcHJvdG90eXBlIHRvIHJlZHVjZSBnZW5l
cmF0ZWQgcmVuZGVyXG4gIC8vIGNvZGUgc2l6ZS5cbiAgVnVlLnByb3RvdHlwZS5fbyA9IG1hcmtP
bmNlO1xuICBWdWUucHJvdG90eXBlLl9uID0gdG9OdW1iZXI7XG4gIFZ1ZS5wcm90b3R5cGUuX3Mg
PSB0b1N0cmluZztcbiAgVnVlLnByb3RvdHlwZS5fbCA9IHJlbmRlckxpc3Q7XG4gIFZ1ZS5wcm90
b3R5cGUuX3QgPSByZW5kZXJTbG90O1xuICBWdWUucHJvdG90eXBlLl9xID0gbG9vc2VFcXVhbDtc
biAgVnVlLnByb3RvdHlwZS5faSA9IGxvb3NlSW5kZXhPZjtcbiAgVnVlLnByb3RvdHlwZS5fbSA9
IHJlbmRlclN0YXRpYztcbiAgVnVlLnByb3RvdHlwZS5fZiA9IHJlc29sdmVGaWx0ZXI7XG4gIFZ1
ZS5wcm90b3R5cGUuX2sgPSBjaGVja0tleUNvZGVzO1xuICBWdWUucHJvdG90eXBlLl9iID0gYmlu
ZE9iamVjdFByb3BzO1xuICBWdWUucHJvdG90eXBlLl92ID0gY3JlYXRlVGV4dFZOb2RlO1xuICBW
dWUucHJvdG90eXBlLl9lID0gY3JlYXRlRW1wdHlWTm9kZTtcbiAgVnVlLnByb3RvdHlwZS5fdSA9
IHJlc29sdmVTY29wZWRTbG90cztcbiAgVnVlLnByb3RvdHlwZS5fZyA9IGJpbmRPYmplY3RMaXN0
ZW5lcnM7XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDEgPSAwO1xuXG5mdW5jdGlvbiBpbml0TWl4
aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtc
biAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGEgdWlkXG4gICAgdm0uX3VpZCA9IHVpZCQxKys7
XG5cbiAgICB2YXIgc3RhcnRUYWcsIGVuZFRhZztcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25m
aWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLWlu
aXQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBlbmRUYWcgPSBcInZ1ZS1wZXJmLWVuZDpcIiArICh2
bS5fdWlkKTtcbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgIH1cblxuICAgIC8vIGEgZmxhZyB0
byBhdm9pZCB0aGlzIGJlaW5nIG9ic2VydmVkXG4gICAgdm0uX2lzVnVlID0gdHJ1ZTtcbiAgICAv
LyBtZXJnZSBvcHRpb25zXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5faXNDb21wb25lbnQp
IHtcbiAgICAgIC8vIG9wdGltaXplIGludGVybmFsIGNvbXBvbmVudCBpbnN0YW50aWF0aW9uXG4g
ICAgICAvLyBzaW5jZSBkeW5hbWljIG9wdGlvbnMgbWVyZ2luZyBpcyBwcmV0dHkgc2xvdywgYW5k
IG5vbmUgb2YgdGhlXG4gICAgICAvLyBpbnRlcm5hbCBjb21wb25lbnQgb3B0aW9ucyBuZWVkcyBz
cGVjaWFsIHRyZWF0bWVudC5cbiAgICAgIGluaXRJbnRlcm5hbENvbXBvbmVudCh2bSwgb3B0aW9u
cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLiRvcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAg
ICAgICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKHZtLmNvbnN0cnVjdG9yKSxcbiAgICAgICAg
b3B0aW9ucyB8fCB7fSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICAgIC8qIGlzdGFu
YnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIGluaXRQcm94eSh2bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZt
Ll9yZW5kZXJQcm94eSA9IHZtO1xuICAgIH1cbiAgICAvLyBleHBvc2UgcmVhbCBzZWxmXG4gICAg
dm0uX3NlbGYgPSB2bTtcbiAgICBpbml0TGlmZWN5Y2xlKHZtKTtcbiAgICBpbml0RXZlbnRzKHZt
KTtcbiAgICBpbml0UmVuZGVyKHZtKTtcbiAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZUNyZWF0ZScp
O1xuICAgIGluaXRJbmplY3Rpb25zKHZtKTsgLy8gcmVzb2x2ZSBpbmplY3Rpb25zIGJlZm9yZSBk
YXRhL3Byb3BzXG4gICAgaW5pdFN0YXRlKHZtKTtcbiAgICBpbml0UHJvdmlkZSh2bSk7IC8vIHJl
c29sdmUgcHJvdmlkZSBhZnRlciBkYXRhL3Byb3BzXG4gICAgY2FsbEhvb2sodm0sICdjcmVhdGVk
Jyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykg
e1xuICAgICAgdm0uX25hbWUgPSBmb3JtYXRDb21wb25lbnROYW1lKHZtLCBmYWxzZSk7XG4gICAg
ICBtYXJrKGVuZFRhZyk7XG4gICAgICBtZWFzdXJlKCgodm0uX25hbWUpICsgXCIgaW5pdFwiKSwg
c3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHZtLiRvcHRpb25zLmVsKSB7XG4g
ICAgICB2bS4kbW91bnQodm0uJG9wdGlvbnMuZWwpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rp
b24gaW5pdEludGVybmFsQ29tcG9uZW50ICh2bSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHZt
LiRvcHRpb25zID0gT2JqZWN0LmNyZWF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcbiAgLy8g
ZG9pbmcgdGhpcyBiZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gZHluYW1pYyBlbnVtZXJhdGlvbi5c
biAgb3B0cy5wYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgb3B0cy5wcm9wc0RhdGEgPSBvcHRp
b25zLnByb3BzRGF0YTtcbiAgb3B0cy5fcGFyZW50Vm5vZGUgPSBvcHRpb25zLl9wYXJlbnRWbm9k
ZTtcbiAgb3B0cy5fcGFyZW50TGlzdGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xu
ICBvcHRzLl9yZW5kZXJDaGlsZHJlbiA9IG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuO1xuICBvcHRz
Ll9jb21wb25lbnRUYWcgPSBvcHRpb25zLl9jb21wb25lbnRUYWc7XG4gIG9wdHMuX3BhcmVudEVs
bSA9IG9wdGlvbnMuX3BhcmVudEVsbTtcbiAgb3B0cy5fcmVmRWxtID0gb3B0aW9ucy5fcmVmRWxt
O1xuICBpZiAob3B0aW9ucy5yZW5kZXIpIHtcbiAgICBvcHRzLnJlbmRlciA9IG9wdGlvbnMucmVu
ZGVyO1xuICAgIG9wdHMuc3RhdGljUmVuZGVyRm5zID0gb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnM7
XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyAoQ3Rvcikge1xu
ICB2YXIgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgaWYgKEN0b3Iuc3VwZXIpIHtcbiAgICB2
YXIgc3VwZXJPcHRpb25zID0gcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyhDdG9yLnN1cGVyKTtc
biAgICB2YXIgY2FjaGVkU3VwZXJPcHRpb25zID0gQ3Rvci5zdXBlck9wdGlvbnM7XG4gICAgaWYg
KHN1cGVyT3B0aW9ucyAhPT0gY2FjaGVkU3VwZXJPcHRpb25zKSB7XG4gICAgICAvLyBzdXBlciBv
cHRpb24gY2hhbmdlZCxcbiAgICAgIC8vIG5lZWQgdG8gcmVzb2x2ZSBuZXcgb3B0aW9ucy5cbiAg
ICAgIEN0b3Iuc3VwZXJPcHRpb25zID0gc3VwZXJPcHRpb25zO1xuICAgICAgLy8gY2hlY2sgaWYg
dGhlcmUgYXJlIGFueSBsYXRlLW1vZGlmaWVkL2F0dGFjaGVkIG9wdGlvbnMgKCM0OTc2KVxuICAg
ICAgdmFyIG1vZGlmaWVkT3B0aW9ucyA9IHJlc29sdmVNb2RpZmllZE9wdGlvbnMoQ3Rvcik7XG4g
ICAgICAvLyB1cGRhdGUgYmFzZSBleHRlbmQgb3B0aW9uc1xuICAgICAgaWYgKG1vZGlmaWVkT3B0
aW9ucykge1xuICAgICAgICBleHRlbmQoQ3Rvci5leHRlbmRPcHRpb25zLCBtb2RpZmllZE9wdGlv
bnMpO1xuICAgICAgfVxuICAgICAgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucyA9IG1lcmdlT3B0aW9u
cyhzdXBlck9wdGlvbnMsIEN0b3IuZXh0ZW5kT3B0aW9ucyk7XG4gICAgICBpZiAob3B0aW9ucy5u
YW1lKSB7XG4gICAgICAgIG9wdGlvbnMuY29tcG9uZW50c1tvcHRpb25zLm5hbWVdID0gQ3Rvcjtc
biAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gcmVz
b2x2ZU1vZGlmaWVkT3B0aW9ucyAoQ3Rvcikge1xuICB2YXIgbW9kaWZpZWQ7XG4gIHZhciBsYXRl
c3QgPSBDdG9yLm9wdGlvbnM7XG4gIHZhciBleHRlbmRlZCA9IEN0b3IuZXh0ZW5kT3B0aW9ucztc
biAgdmFyIHNlYWxlZCA9IEN0b3Iuc2VhbGVkT3B0aW9ucztcbiAgZm9yICh2YXIga2V5IGluIGxh
dGVzdCkge1xuICAgIGlmIChsYXRlc3Rba2V5XSAhPT0gc2VhbGVkW2tleV0pIHtcbiAgICAgIGlm
ICghbW9kaWZpZWQpIHsgbW9kaWZpZWQgPSB7fTsgfVxuICAgICAgbW9kaWZpZWRba2V5XSA9IGRl
ZHVwZShsYXRlc3Rba2V5XSwgZXh0ZW5kZWRba2V5XSwgc2VhbGVkW2tleV0pO1xuICAgIH1cbiAg
fVxuICByZXR1cm4gbW9kaWZpZWRcbn1cblxuZnVuY3Rpb24gZGVkdXBlIChsYXRlc3QsIGV4dGVu
ZGVkLCBzZWFsZWQpIHtcbiAgLy8gY29tcGFyZSBsYXRlc3QgYW5kIHNlYWxlZCB0byBlbnN1cmUg
bGlmZWN5Y2xlIGhvb2tzIHdvbid0IGJlIGR1cGxpY2F0ZWRcbiAgLy8gYmV0d2VlbiBtZXJnZXNc
biAgaWYgKEFycmF5LmlzQXJyYXkobGF0ZXN0KSkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBz
ZWFsZWQgPSBBcnJheS5pc0FycmF5KHNlYWxlZCkgPyBzZWFsZWQgOiBbc2VhbGVkXTtcbiAgICBl
eHRlbmRlZCA9IEFycmF5LmlzQXJyYXkoZXh0ZW5kZWQpID8gZXh0ZW5kZWQgOiBbZXh0ZW5kZWRd
O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF0ZXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAv
LyBwdXNoIG9yaWdpbmFsIG9wdGlvbnMgYW5kIG5vdCBzZWFsZWQgb3B0aW9ucyB0byBleGNsdWRl
IGR1cGxpY2F0ZWQgb3B0aW9uc1xuICAgICAgaWYgKGV4dGVuZGVkLmluZGV4T2YobGF0ZXN0W2ld
KSA+PSAwIHx8IHNlYWxlZC5pbmRleE9mKGxhdGVzdFtpXSkgPCAwKSB7XG4gICAgICAgIHJlcy5w
dXNoKGxhdGVzdFtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfSBlbHNl
IHtcbiAgICByZXR1cm4gbGF0ZXN0XG4gIH1cbn1cblxuZnVuY3Rpb24gVnVlJDMgKG9wdGlvbnMp
IHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAh
KHRoaXMgaW5zdGFuY2VvZiBWdWUkMylcbiAgKSB7XG4gICAgd2FybignVnVlIGlzIGEgY29uc3Ry
dWN0b3IgYW5kIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgYG5ld2Aga2V5d29yZCcpO1xuICB9
XG4gIHRoaXMuX2luaXQob3B0aW9ucyk7XG59XG5cbmluaXRNaXhpbihWdWUkMyk7XG5zdGF0ZU1p
eGluKFZ1ZSQzKTtcbmV2ZW50c01peGluKFZ1ZSQzKTtcbmxpZmVjeWNsZU1peGluKFZ1ZSQzKTtc
bnJlbmRlck1peGluKFZ1ZSQzKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRVc2UgKFZ1ZSkg
e1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBpbnN0YWxsZWRQbHVn
aW5zID0gKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgfHwgKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMg
PSBbXSkpO1xuICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmluZGV4T2YocGx1Z2luKSA+IC0xKSB7
XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVy
c1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlm
dCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7
XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBp
ZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51
bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBpbnN0YWxsZWRQbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAg
ICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEg
KFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlv
bnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNc
biAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipc
biAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5p
cXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRc
biAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hl
IHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4g
ICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4
dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtc
biAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAg
IHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMu
X0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1
cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9w
dGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghL15bYS16QS1aXVtcXHctXSok
Ly50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ludmFsaWQgY29tcG9u
ZW50IG5hbWU6IFwiJyArIG5hbWUgKyAnXCIuIENvbXBvbmVudCBuYW1lcyAnICtcbiAgICAgICAg
ICAnY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdGhlIGh5cGhl
biwgJyArXG4gICAgICAgICAgJ2FuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIuJ1xuICAgICAg
ICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25l
bnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBT
dWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1
Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4
dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8g
Rm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdl
dHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24g
dGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5l
UHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9w
dGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChT
dWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9
XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAg
ICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGlu
O1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0
ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBh
c3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAg
ICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1
cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29t
cG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRv
IHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGlu
c3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8g
YmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAg
IFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9u
cyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3Jc
biAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59
XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0
aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5w
cm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1
dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xu
ICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnBy
b3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rp
b24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCBy
ZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rp
b24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAg
IGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICBy
ZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25l
bnQnICYmIGNvbmZpZy5pc1Jlc2VydmVkVGFnKGlkKSkge1xuICAgICAgICAgICAgd2FybihcbiAg
ICAgICAgICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50
cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAgICAgICAgICdpZDogJyArIGlkXG4gICAgICAgICAg
ICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBv
bmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRp
b24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0g
dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAg
ICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5j
dGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRh
dGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSAr
ICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAg
IH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3Ry
aW5nLCBSZWdFeHAsIEFycmF5XTtcblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZSAob3B0cykg
e1xuICByZXR1cm4gb3B0cyAmJiAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZylc
bn1cblxuZnVuY3Rpb24gbWF0Y2hlcyAocGF0dGVybiwgbmFtZSkge1xuICBpZiAoQXJyYXkuaXNB
cnJheShwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLmluZGV4T2YobmFtZSkgPiAtMVxu
ICB9IGVsc2UgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBw
YXR0ZXJuLnNwbGl0KCcsJykuaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAoaXNSZWdF
eHAocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVybi50ZXN0KG5hbWUpXG4gIH1cbiAgLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBy
dW5lQ2FjaGUgKGNhY2hlLCBjdXJyZW50LCBmaWx0ZXIpIHtcbiAgZm9yICh2YXIga2V5IGluIGNh
Y2hlKSB7XG4gICAgdmFyIGNhY2hlZE5vZGUgPSBjYWNoZVtrZXldO1xuICAgIGlmIChjYWNoZWRO
b2RlKSB7XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY2FjaGVkTm9kZS5jb21w
b25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYmICFmaWx0ZXIobmFtZSkpIHtcbiAgICAg
ICAgaWYgKGNhY2hlZE5vZGUgIT09IGN1cnJlbnQpIHtcbiAgICAgICAgICBwcnVuZUNhY2hlRW50
cnkoY2FjaGVkTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FjaGVba2V5XSA9IG51bGw7XG4g
ICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeSAodm5vZGUp
IHtcbiAgaWYgKHZub2RlKSB7XG4gICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3ko
KTtcbiAgfVxufVxuXG52YXIgS2VlcEFsaXZlID0ge1xuICBuYW1lOiAna2VlcC1hbGl2ZScsXG4g
IGFic3RyYWN0OiB0cnVlLFxuXG4gIHByb3BzOiB7XG4gICAgaW5jbHVkZTogcGF0dGVyblR5cGVz
LFxuICAgIGV4Y2x1ZGU6IHBhdHRlcm5UeXBlc1xuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9u
IGNyZWF0ZWQgKCkge1xuICAgIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9
LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkICgpIHtcbiAgICB2YXIgdGhpcyQx
ID0gdGhpcztcblxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzJDEuY2FjaGUpIHtcbiAgICAgIHBy
dW5lQ2FjaGVFbnRyeSh0aGlzJDEuY2FjaGVba2V5XSk7XG4gICAgfVxuICB9LFxuXG4gIHdhdGNo
OiB7XG4gICAgaW5jbHVkZTogZnVuY3Rpb24gaW5jbHVkZSAodmFsKSB7XG4gICAgICBwcnVuZUNh
Y2hlKHRoaXMuY2FjaGUsIHRoaXMuX3Zub2RlLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWF0
Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9LFxuICAgIGV4Y2x1ZGU6IGZ1bmN0aW9uIGV4Y2x1
ZGUgKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzLmNhY2hlLCB0aGlzLl92bm9kZSwgZnVu
Y3Rpb24gKG5hbWUpIHsgcmV0dXJuICFtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH1cbiAg
fSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoKSB7XG4gICAgdmFyIHZub2RlID0gZ2V0
Rmlyc3RDb21wb25lbnRDaGlsZCh0aGlzLiRzbG90cy5kZWZhdWx0KTtcbiAgICB2YXIgY29tcG9u
ZW50T3B0aW9ucyA9IHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgaWYgKGNv
bXBvbmVudE9wdGlvbnMpIHtcbiAgICAgIC8vIGNoZWNrIHBhdHRlcm5cbiAgICAgIHZhciBuYW1l
ID0gZ2V0Q29tcG9uZW50TmFtZShjb21wb25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYm
IChcbiAgICAgICAgKHRoaXMuaW5jbHVkZSAmJiAhbWF0Y2hlcyh0aGlzLmluY2x1ZGUsIG5hbWUp
KSB8fFxuICAgICAgICAodGhpcy5leGNsdWRlICYmIG1hdGNoZXModGhpcy5leGNsdWRlLCBuYW1l
KSlcbiAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlXG4gICAgICB9XG4gICAgICB2YXIg
a2V5ID0gdm5vZGUua2V5ID09IG51bGxcbiAgICAgICAgLy8gc2FtZSBjb25zdHJ1Y3RvciBtYXkg
Z2V0IHJlZ2lzdGVyZWQgYXMgZGlmZmVyZW50IGxvY2FsIGNvbXBvbmVudHNcbiAgICAgICAgLy8g
c28gY2lkIGFsb25lIGlzIG5vdCBlbm91Z2ggKCMzMjY5KVxuICAgICAgICA/IGNvbXBvbmVudE9w
dGlvbnMuQ3Rvci5jaWQgKyAoY29tcG9uZW50T3B0aW9ucy50YWcgPyAoXCI6OlwiICsgKGNvbXBv
bmVudE9wdGlvbnMudGFnKSkgOiAnJylcbiAgICAgICAgOiB2bm9kZS5rZXk7XG4gICAgICBpZiAo
dGhpcy5jYWNoZVtrZXldKSB7XG4gICAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gdGhp
cy5jYWNoZVtrZXldLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
dGhpcy5jYWNoZVtrZXldID0gdm5vZGU7XG4gICAgICB9XG4gICAgICB2bm9kZS5kYXRhLmtlZXBB
bGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB2bm9kZVxuICB9XG59O1xuXG52YXIgYnVp
bHRJbkNvbXBvbmVudHMgPSB7XG4gIEtlZXBBbGl2ZTogS2VlcEFsaXZlXG59O1xuXG4vKiAgKi9c
blxuZnVuY3Rpb24gaW5pdEdsb2JhbEFQSSAoVnVlKSB7XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29u
ZmlnRGVmID0ge307XG4gIGNvbmZpZ0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25m
aWc7IH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgY29uZmlnRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdE
byBub3QgcmVwbGFjZSB0aGUgVnVlLmNvbmZpZyBvYmplY3QsIHNldCBpbmRpdmlkdWFsIGZpZWxk
cyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoVnVlLCAnY29uZmlnJywgY29uZmlnRGVmKTtcblxuICAvLyBleHBvc2VkIHV0aWwgbWV0aG9k
cy5cbiAgLy8gTk9URTogdGhlc2UgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHB1Ymxp
YyBBUEkgLSBhdm9pZCByZWx5aW5nIG9uXG4gIC8vIHRoZW0gdW5sZXNzIHlvdSBhcmUgYXdhcmUg
b2YgdGhlIHJpc2suXG4gIFZ1ZS51dGlsID0ge1xuICAgIHdhcm46IHdhcm4sXG4gICAgZXh0ZW5k
OiBleHRlbmQsXG4gICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgZGVmaW5lUmVh
Y3RpdmU6IGRlZmluZVJlYWN0aXZlJCQxXG4gIH07XG5cbiAgVnVlLnNldCA9IHNldDtcbiAgVnVl
LmRlbGV0ZSA9IGRlbDtcbiAgVnVlLm5leHRUaWNrID0gbmV4dFRpY2s7XG5cbiAgVnVlLm9wdGlv
bnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9u
ICh0eXBlKSB7XG4gICAgVnVlLm9wdGlvbnNbdHlwZSArICdzJ10gPSBPYmplY3QuY3JlYXRlKG51
bGwpO1xuICB9KTtcblxuICAvLyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFwiYmFzZVwi
IGNvbnN0cnVjdG9yIHRvIGV4dGVuZCBhbGwgcGxhaW4tb2JqZWN0XG4gIC8vIGNvbXBvbmVudHMg
d2l0aCBpbiBXZWV4J3MgbXVsdGktaW5zdGFuY2Ugc2NlbmFyaW9zLlxuICBWdWUub3B0aW9ucy5f
YmFzZSA9IFZ1ZTtcblxuICBleHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgYnVpbHRJbkNv
bXBvbmVudHMpO1xuXG4gIGluaXRVc2UoVnVlKTtcbiAgaW5pdE1peGluJDEoVnVlKTtcbiAgaW5p
dEV4dGVuZChWdWUpO1xuICBpbml0QXNzZXRSZWdpc3RlcnMoVnVlKTtcbn1cblxuaW5pdEdsb2Jh
bEFQSShWdWUkMyk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUkMy5wcm90b3R5cGUsICck
aXNTZXJ2ZXInLCB7XG4gIGdldDogaXNTZXJ2ZXJSZW5kZXJpbmdcbn0pO1xuXG5PYmplY3QuZGVm
aW5lUHJvcGVydHkoVnVlJDMucHJvdG90eXBlLCAnJHNzckNvbnRleHQnLCB7XG4gIGdldDogZnVu
Y3Rpb24gZ2V0ICgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVy
biB0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0XG4gIH1cbn0pO1xuXG5WdWUk
My52ZXJzaW9uID0gJzIuNC4yJztcblxuLyogICovXG5cbi8vIHRoZXNlIGFyZSByZXNlcnZlZCBm
b3Igd2ViIGJlY2F1c2UgdGhleSBhcmUgZGlyZWN0bHkgY29tcGlsZWQgYXdheVxuLy8gZHVyaW5n
IHRlbXBsYXRlIGNvbXBpbGF0aW9uXG52YXIgaXNSZXNlcnZlZEF0dHIgPSBtYWtlTWFwKCdzdHls
ZSxjbGFzcycpO1xuXG4vLyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIHVzaW5nIHByb3BzIGZv
ciBiaW5kaW5nXG52YXIgYWNjZXB0VmFsdWUgPSBtYWtlTWFwKCdpbnB1dCx0ZXh0YXJlYSxvcHRp
b24sc2VsZWN0Jyk7XG52YXIgbXVzdFVzZVByb3AgPSBmdW5jdGlvbiAodGFnLCB0eXBlLCBhdHRy
KSB7XG4gIHJldHVybiAoXG4gICAgKGF0dHIgPT09ICd2YWx1ZScgJiYgYWNjZXB0VmFsdWUodGFn
KSkgJiYgdHlwZSAhPT0gJ2J1dHRvbicgfHxcbiAgICAoYXR0ciA9PT0gJ3NlbGVjdGVkJyAmJiB0
YWcgPT09ICdvcHRpb24nKSB8fFxuICAgIChhdHRyID09PSAnY2hlY2tlZCcgJiYgdGFnID09PSAn
aW5wdXQnKSB8fFxuICAgIChhdHRyID09PSAnbXV0ZWQnICYmIHRhZyA9PT0gJ3ZpZGVvJylcbiAg
KVxufTtcblxudmFyIGlzRW51bWVyYXRlZEF0dHIgPSBtYWtlTWFwKCdjb250ZW50ZWRpdGFibGUs
ZHJhZ2dhYmxlLHNwZWxsY2hlY2snKTtcblxudmFyIGlzQm9vbGVhbkF0dHIgPSBtYWtlTWFwKFxu
ICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBh
Y3QsY29udHJvbHMsZGVjbGFyZSwnICtcbiAgJ2RlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVs
dG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCwnICtcbiAgJ2VuYWJsZWQsZm9y
bW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxv
b3AsbXVsdGlwbGUsJyArXG4gICdtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlk
YXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LCcgK1xuICAncmVxdWlyZWQscmV2
ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSwnICtcbiAg
J3RydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUnXG4pO1xuXG52YXIgeGxpbmtOUyA9ICdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcblxudmFyIGlzWGxpbmsgPSBmdW5jdGlvbiAo
bmFtZSkge1xuICByZXR1cm4gbmFtZS5jaGFyQXQoNSkgPT09ICc6JyAmJiBuYW1lLnNsaWNlKDAs
IDUpID09PSAneGxpbmsnXG59O1xuXG52YXIgZ2V0WGxpbmtQcm9wID0gZnVuY3Rpb24gKG5hbWUp
IHtcbiAgcmV0dXJuIGlzWGxpbmsobmFtZSkgPyBuYW1lLnNsaWNlKDYsIG5hbWUubGVuZ3RoKSA6
ICcnXG59O1xuXG52YXIgaXNGYWxzeUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0
dXJuIHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gZmFsc2Vcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlv
biBnZW5DbGFzc0ZvclZub2RlICh2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4g
IHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgd2hp
bGUgKGlzRGVmKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICBjaGlsZE5vZGUg
PSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIGlmIChjaGlsZE5vZGUu
ZGF0YSkge1xuICAgICAgZGF0YSA9IG1lcmdlQ2xhc3NEYXRhKGNoaWxkTm9kZS5kYXRhLCBkYXRh
KTtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKGlzRGVmKHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBh
cmVudCkpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VD
bGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9kZS5kYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJl
bmRlckNsYXNzKGRhdGEuc3RhdGljQ2xhc3MsIGRhdGEuY2xhc3MpXG59XG5cbmZ1bmN0aW9uIG1l
cmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7XG4gICAgc3RhdGljQ2xh
c3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNzKSxcbiAgICBj
bGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNs
YXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJDbGFz
cyAoXG4gIHN0YXRpY0NsYXNzLFxuICBkeW5hbWljQ2xhc3Ncbikge1xuICBpZiAoaXNEZWYoc3Rh
dGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0
YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFu
YnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEs
IGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1c
blxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5
KHZhbHVlKSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlBcnJheSh2YWx1ZSlcbiAgfVxuICBpZiAo
aXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdCh2YWx1ZSlcbiAg
fVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxu
ICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5j
dGlvbiBzdHJpbmdpZnlBcnJheSAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgc3Ry
aW5naWZpZWQ7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsr
KSB7XG4gICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0p
KSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgIGlmIChyZXMpIHsgcmVzICs9ICcgJzsg
fVxuICAgICAgcmVzICs9IHN0cmluZ2lmaWVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59
XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeU9iamVjdCAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xu
ICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAodmFsdWVba2V5XSkge1xuICAgICAg
aWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0ga2V5O1xuICAgIH1cbiAgfVxu
ICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbmFtZXNwYWNlTWFwID0ge1xuICBzdmc6
ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIG1hdGg6ICdodHRwOi8vd3d3LnczLm9y
Zy8xOTk4L01hdGgvTWF0aE1MJ1xufTtcblxudmFyIGlzSFRNTFRhZyA9IG1ha2VNYXAoXG4gICdo
dG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcbiAgJ2FkZHJlc3Ms
YXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYs
c2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhy
LGltZyxsaSxtYWluLG9sLHAscHJlLHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRl
LGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxz
YW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxt
YXAsdHJhY2ssdmlkZW8sJyArXG4gICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxz
Y3JpcHQsbm9zY3JpcHQsZGVsLGlucywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxl
LHRoZWFkLHRib2R5LHRkLHRoLHRyLCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZv
cm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1
dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1l
bnVpdGVtLHN1bW1hcnksJyArXG4gICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJs
b2NrcXVvdGUsaWZyYW1lLHRmb290J1xuKTtcblxuLy8gdGhpcyBtYXAgaXMgaW50ZW50aW9uYWxs
eSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcgU1ZHIGVsZW1lbnRzIHRoYXQgbWF5XG4vLyBjb250
YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlzU1ZHID0gbWFrZU1hcChcbiAgJ3N2ZyxhbmltYXRl
LGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFj
ZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1p
c3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuICAncG9seWdvbixwb2x5bGluZSxyZWN0LHN3
aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldycsXG4gIHRydWVcbik7XG5c
bnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZyA9PT0gJ3ByZSc7IH07
XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gaXNIVE1M
VGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24gZ2V0VGFnTmFtZXNwYWNlICh0
YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4gJ3N2ZydcbiAgfVxuICAvLyBi
YXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3Ro
ZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290c1xuICBpZiAodGFnID09PSAn
bWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxudmFyIHVua25vd25FbGVtZW50
Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCAo
dGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWluQnJvd3Nlcikge1xu
ICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIHJl
dHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAvKiBpc3RhbmJ1
bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSAhPSBudWxsKSB7
XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxuICB9XG4gIHZhciBlbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5pbmRleE9mKCctJykgPiAtMSkg
e1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjEwMzY0LzEwNzAyNDRcbiAg
ICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChcbiAgICAgIGVsLmNvbnN0cnVj
dG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4gICAgICBlbC5jb25zdHJ1Y3Rv
ciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
KHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZWwu
dG9TdHJpbmcoKSkpXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUXVlcnkgYW4gZWxlbWVu
dCBzZWxlY3RvciBpZiBpdCdzIG5vdCBhbiBlbGVtZW50IGFscmVhZHkuXG4gKi9cbmZ1bmN0aW9u
IHF1ZXJ5IChlbCkge1xuICBpZiAodHlwZW9mIGVsID09PSAnc3RyaW5nJykge1xuICAgIHZhciBz
ZWxlY3RlZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWwpO1xuICAgIGlmICghc2VsZWN0ZWQp
IHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybihc
biAgICAgICAgJ0Nhbm5vdCBmaW5kIGVsZW1lbnQ6ICcgKyBlbFxuICAgICAgKTtcbiAgICAgIHJl
dHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIH1cbiAgICByZXR1cm4gc2Vs
ZWN0ZWRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVu
Y3Rpb24gY3JlYXRlRWxlbWVudCQxICh0YWdOYW1lLCB2bm9kZSkge1xuICB2YXIgZWxtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbiAgaWYgKHRhZ05hbWUgIT09ICdzZWxlY3Qn
KSB7XG4gICAgcmV0dXJuIGVsbVxuICB9XG4gIC8vIGZhbHNlIG9yIG51bGwgd2lsbCByZW1vdmUg
dGhlIGF0dHJpYnV0ZSBidXQgdW5kZWZpbmVkIHdpbGwgbm90XG4gIGlmICh2bm9kZS5kYXRhICYm
IHZub2RlLmRhdGEuYXR0cnMgJiYgdm5vZGUuZGF0YS5hdHRycy5tdWx0aXBsZSAhPT0gdW5kZWZp
bmVkKSB7XG4gICAgZWxtLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnbXVsdGlwbGUnKTtcbiAg
fVxuICByZXR1cm4gZWxtXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyAobmFtZXNwYWNl
LCB0YWdOYW1lKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNl
TWFwW25hbWVzcGFjZV0sIHRhZ05hbWUpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHROb2RlICh0
ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KVxufVxuXG5mdW5j
dGlvbiBjcmVhdGVDb21tZW50ICh0ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVDb21t
ZW50KHRleHQpXG59XG5cbmZ1bmN0aW9uIGluc2VydEJlZm9yZSAocGFyZW50Tm9kZSwgbmV3Tm9k
ZSwgcmVmZXJlbmNlTm9kZSkge1xuICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdOb2RlLCBy
ZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hpbGQgKG5vZGUsIGNoaWxkKSB7
XG4gIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZCAo
bm9kZSwgY2hpbGQpIHtcbiAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9u
IHBhcmVudE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZVxufVxuXG5mdW5j
dGlvbiBuZXh0U2libGluZyAobm9kZSkge1xuICByZXR1cm4gbm9kZS5uZXh0U2libGluZ1xufVxu
XG5mdW5jdGlvbiB0YWdOYW1lIChub2RlKSB7XG4gIHJldHVybiBub2RlLnRhZ05hbWVcbn1cblxu
ZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQgKG5vZGUsIHRleHQpIHtcbiAgbm9kZS50ZXh0Q29udGVu
dCA9IHRleHQ7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZSAobm9kZSwga2V5LCB2YWwpIHtc
biAgbm9kZS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWwpO1xufVxuXG5cbnZhciBub2RlT3BzID0gT2Jq
ZWN0LmZyZWV6ZSh7XG5cdGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQkMSxcblx0Y3JlYXRl
RWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG5cdGNyZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0
Tm9kZSxcblx0Y3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxcblx0aW5zZXJ0QmVmb3JlOiBp
bnNlcnRCZWZvcmUsXG5cdHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcblx0YXBwZW5kQ2hpbGQ6
IGFwcGVuZENoaWxkLFxuXHRwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuXHRuZXh0U2libGluZzog
bmV4dFNpYmxpbmcsXG5cdHRhZ05hbWU6IHRhZ05hbWUsXG5cdHNldFRleHRDb250ZW50OiBzZXRU
ZXh0Q29udGVudCxcblx0c2V0QXR0cmlidXRlOiBzZXRBdHRyaWJ1dGVcbn0pO1xuXG4vKiAgKi9c
blxudmFyIHJlZiA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUgKF8sIHZub2RlKSB7XG4g
ICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAo
b2xkVm5vZGUsIHZub2RlKSB7XG4gICAgaWYgKG9sZFZub2RlLmRhdGEucmVmICE9PSB2bm9kZS5k
YXRhLnJlZikge1xuICAgICAgcmVnaXN0ZXJSZWYob2xkVm5vZGUsIHRydWUpO1xuICAgICAgcmVn
aXN0ZXJSZWYodm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJv
eSAodm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSwgdHJ1ZSk7XG4gIH1cbn07XG5cbmZ1
bmN0aW9uIHJlZ2lzdGVyUmVmICh2bm9kZSwgaXNSZW1vdmFsKSB7XG4gIHZhciBrZXkgPSB2bm9k
ZS5kYXRhLnJlZjtcbiAgaWYgKCFrZXkpIHsgcmV0dXJuIH1cblxuICB2YXIgdm0gPSB2bm9kZS5j
b250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuZWxt
O1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1vdmFsKSB7XG4gICAgaWYgKEFy
cmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3ZlKHJlZnNba2V5XSwgcmVmKTtc
biAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVmKSB7XG4gICAgICByZWZzW2tleV0gPSB1
bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2bm9kZS5kYXRhLnJlZkluRm9y
KSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgICByZWZz
W2tleV0gPSBbcmVmXTtcbiAgICAgIH0gZWxzZSBpZiAocmVmc1trZXldLmluZGV4T2YocmVmKSA8
IDApIHtcbiAgICAgICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICAgIHJlZnNba2V5XS5w
dXNoKHJlZik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZnNba2V5XSA9IHJlZjtc
biAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXJ0dWFsIERPTSBwYXRjaGluZyBhbGdvcml0aG0g
YmFzZWQgb24gU25hYmJkb20gYnlcbiAqIFNpbW9uIEZyaWlzIFZpbmR1bSAoQHBhbGRlcGluZClc
biAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29t
L3BhbGRlcGluZC9zbmFiYmRvbS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKlxuICogbW9kaWZpZWQg
YnkgRXZhbiBZb3UgKEB5eXg5OTA4MDMpXG4gKlxuXG4vKlxuICogTm90IHR5cGUtY2hlY2tpbmcg
dGhpcyBiZWNhdXNlIHRoaXMgZmlsZSBpcyBwZXJmLWNyaXRpY2FsIGFuZCB0aGUgY29zdFxuICog
b2YgbWFraW5nIGZsb3cgdW5kZXJzdGFuZCBpdCBpcyBub3Qgd29ydGggaXQuXG4gKi9cblxudmFy
IGVtcHR5Tm9kZSA9IG5ldyBWTm9kZSgnJywge30sIFtdKTtcblxudmFyIGhvb2tzID0gWydjcmVh
dGUnLCAnYWN0aXZhdGUnLCAndXBkYXRlJywgJ3JlbW92ZScsICdkZXN0cm95J107XG5cbmZ1bmN0
aW9uIHNhbWVWbm9kZSAoYSwgYikge1xuICByZXR1cm4gKFxuICAgIGEua2V5ID09PSBiLmtleSAm
JiAoXG4gICAgICAoXG4gICAgICAgIGEudGFnID09PSBiLnRhZyAmJlxuICAgICAgICBhLmlzQ29t
bWVudCA9PT0gYi5pc0NvbW1lbnQgJiZcbiAgICAgICAgaXNEZWYoYS5kYXRhKSA9PT0gaXNEZWYo
Yi5kYXRhKSAmJlxuICAgICAgICBzYW1lSW5wdXRUeXBlKGEsIGIpXG4gICAgICApIHx8IChcbiAg
ICAgICAgaXNUcnVlKGEuaXNBc3luY1BsYWNlaG9sZGVyKSAmJlxuICAgICAgICBhLmFzeW5jRmFj
dG9yeSA9PT0gYi5hc3luY0ZhY3RvcnkgJiZcbiAgICAgICAgaXNVbmRlZihiLmFzeW5jRmFjdG9y
eS5lcnJvcilcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuLy8gU29tZSBicm93c2VycyBkbyBu
b3Qgc3VwcG9ydCBkeW5hbWljYWxseSBjaGFuZ2luZyB0eXBlIGZvciA8aW5wdXQ+XG4vLyBzbyB0
aGV5IG5lZWQgdG8gYmUgdHJlYXRlZCBhcyBkaWZmZXJlbnQgbm9kZXNcbmZ1bmN0aW9uIHNhbWVJ
bnB1dFR5cGUgKGEsIGIpIHtcbiAgaWYgKGEudGFnICE9PSAnaW5wdXQnKSB7IHJldHVybiB0cnVl
IH1cbiAgdmFyIGk7XG4gIHZhciB0eXBlQSA9IGlzRGVmKGkgPSBhLmRhdGEpICYmIGlzRGVmKGkg
PSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHZhciB0eXBlQiA9IGlzRGVmKGkgPSBiLmRhdGEpICYm
IGlzRGVmKGkgPSBpLmF0dHJzKSAmJiBpLnR5cGU7XG4gIHJldHVybiB0eXBlQSA9PT0gdHlwZUJc
bn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5VG9PbGRJZHggKGNoaWxkcmVuLCBiZWdpbklkeCwgZW5k
SWR4KSB7XG4gIHZhciBpLCBrZXk7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yIChpID0gYmVnaW5J
ZHg7IGkgPD0gZW5kSWR4OyArK2kpIHtcbiAgICBrZXkgPSBjaGlsZHJlbltpXS5rZXk7XG4gICAg
aWYgKGlzRGVmKGtleSkpIHsgbWFwW2tleV0gPSBpOyB9XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxu
XG5mdW5jdGlvbiBjcmVhdGVQYXRjaEZ1bmN0aW9uIChiYWNrZW5kKSB7XG4gIHZhciBpLCBqO1xu
ICB2YXIgY2JzID0ge307XG5cbiAgdmFyIG1vZHVsZXMgPSBiYWNrZW5kLm1vZHVsZXM7XG4gIHZh
ciBub2RlT3BzID0gYmFja2VuZC5ub2RlT3BzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBob29rcy5s
ZW5ndGg7ICsraSkge1xuICAgIGNic1tob29rc1tpXV0gPSBbXTtcbiAgICBmb3IgKGogPSAwOyBq
IDwgbW9kdWxlcy5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKGlzRGVmKG1vZHVsZXNbal1baG9v
a3NbaV1dKSkge1xuICAgICAgICBjYnNbaG9va3NbaV1dLnB1c2gobW9kdWxlc1tqXVtob29rc1tp
XV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVtcHR5Tm9kZUF0IChlbG0p
IHtcbiAgICByZXR1cm4gbmV3IFZOb2RlKG5vZGVPcHMudGFnTmFtZShlbG0pLnRvTG93ZXJDYXNl
KCksIHt9LCBbXSwgdW5kZWZpbmVkLCBlbG0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVSbUNi
IChjaGlsZEVsbSwgbGlzdGVuZXJzKSB7XG4gICAgZnVuY3Rpb24gcmVtb3ZlJCQxICgpIHtcbiAg
ICAgIGlmICgtLXJlbW92ZSQkMS5saXN0ZW5lcnMgPT09IDApIHtcbiAgICAgICAgcmVtb3ZlTm9k
ZShjaGlsZEVsbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlbW92ZSQkMS5saXN0ZW5lcnMgPSBs
aXN0ZW5lcnM7XG4gICAgcmV0dXJuIHJlbW92ZSQkMVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3Zl
Tm9kZSAoZWwpIHtcbiAgICB2YXIgcGFyZW50ID0gbm9kZU9wcy5wYXJlbnROb2RlKGVsKTtcbiAg
ICAvLyBlbGVtZW50IG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGR1ZSB0byB2LWh0bWwg
LyB2LXRleHRcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgbm9kZU9wcy5yZW1vdmVD
aGlsZChwYXJlbnQsIGVsKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaW5QcmUgPSAwO1xuICBmdW5j
dGlvbiBjcmVhdGVFbG0gKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVm
RWxtLCBuZXN0ZWQpIHtcbiAgICB2bm9kZS5pc1Jvb3RJbnNlcnQgPSAhbmVzdGVkOyAvLyBmb3Ig
dHJhbnNpdGlvbiBlbnRlciBjaGVja1xuICAgIGlmIChjcmVhdGVDb21wb25lbnQodm5vZGUsIGlu
c2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pKSB7XG4gICAgICByZXR1cm5cbiAg
ICB9XG5cbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgdmFyIGNoaWxkcmVuID0gdm5v
ZGUuY2hpbGRyZW47XG4gICAgdmFyIHRhZyA9IHZub2RlLnRhZztcbiAgICBpZiAoaXNEZWYodGFn
KSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgICBpblByZSsrO1xuICAg
ICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaW5QcmUgJiZcbiAgICAgICAgICAhdm5v
ZGUubnMgJiZcbiAgICAgICAgICAhKGNvbmZpZy5pZ25vcmVkRWxlbWVudHMubGVuZ3RoICYmIGNv
bmZpZy5pZ25vcmVkRWxlbWVudHMuaW5kZXhPZih0YWcpID4gLTEpICYmXG4gICAgICAgICAgY29u
ZmlnLmlzVW5rbm93bkVsZW1lbnQodGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB3YXJuKFxu
ICAgICAgICAgICAgJ1Vua25vd24gY3VzdG9tIGVsZW1lbnQ6IDwnICsgdGFnICsgJz4gLSBkaWQg
eW91ICcgK1xuICAgICAgICAgICAgJ3JlZ2lzdGVyIHRoZSBjb21wb25lbnQgY29ycmVjdGx5PyBG
b3IgcmVjdXJzaXZlIGNvbXBvbmVudHMsICcgK1xuICAgICAgICAgICAgJ21ha2Ugc3VyZSB0byBw
cm92aWRlIHRoZSBcIm5hbWVcIiBvcHRpb24uJyxcbiAgICAgICAgICAgIHZub2RlLmNvbnRleHRc
biAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2bm9kZS5lbG0gPSB2bm9k
ZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4g
ICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2Nv
cGUodm5vZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtcbiAg
ICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUp
O1xuICAgICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVIb29r
cyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnQo
cGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRhdGEgJiYgZGF0YS5wcmUpIHtc
biAgICAgICAgaW5QcmUtLTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVHJ1ZSh2bm9kZS5p
c0NvbW1lbnQpKSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZUNvbW1lbnQodm5v
ZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5v
ZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4g
ICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRW
bm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpID0gdm5vZGUuZGF0YTtc
biAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIHZhciBpc1JlYWN0aXZhdGVkID0gaXNEZWYodm5v
ZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGkua2VlcEFsaXZlO1xuICAgICAgaWYgKGlzRGVmKGkg
PSBpLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7XG4gICAgICAgIGkodm5vZGUsIGZhbHNl
IC8qIGh5ZHJhdGluZyAqLywgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgfVxuICAgICAgLy8g
YWZ0ZXIgY2FsbGluZyB0aGUgaW5pdCBob29rLCBpZiB0aGUgdm5vZGUgaXMgYSBjaGlsZCBjb21w
b25lbnRcbiAgICAgIC8vIGl0IHNob3VsZCd2ZSBjcmVhdGVkIGEgY2hpbGQgaW5zdGFuY2UgYW5k
IG1vdW50ZWQgaXQuIHRoZSBjaGlsZFxuICAgICAgLy8gY29tcG9uZW50IGFsc28gaGFzIHNldCB0
aGUgcGxhY2Vob2xkZXIgdm5vZGUncyBlbG0uXG4gICAgICAvLyBpbiB0aGF0IGNhc2Ugd2UgY2Fu
IGp1c3QgcmV0dXJuIHRoZSBlbGVtZW50IGFuZCBiZSBkb25lLlxuICAgICAgaWYgKGlzRGVmKHZu
b2RlLmNvbXBvbmVudEluc3RhbmNlKSkge1xuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBpZiAoaXNUcnVlKGlzUmVhY3RpdmF0ZWQpKSB7
XG4gICAgICAgICAgcmVhY3RpdmF0ZUNvbXBvbmVudCh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVl
LCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0Q29tcG9uZW50ICh2bm9kZSwgaW5z
ZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKGlzRGVmKHZub2RlLmRhdGEucGVuZGluZ0luc2Vy
dCkpIHtcbiAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoLmFwcGx5KGluc2VydGVkVm5vZGVR
dWV1ZSwgdm5vZGUuZGF0YS5wZW5kaW5nSW5zZXJ0KTtcbiAgICAgIHZub2RlLmRhdGEucGVuZGlu
Z0luc2VydCA9IG51bGw7XG4gICAgfVxuICAgIHZub2RlLmVsbSA9IHZub2RlLmNvbXBvbmVudElu
c3RhbmNlLiRlbDtcbiAgICBpZiAoaXNQYXRjaGFibGUodm5vZGUpKSB7XG4gICAgICBpbnZva2VD
cmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgIHNldFNjb3BlKHZu
b2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZW1wdHkgY29tcG9uZW50IHJvb3QuXG4gICAg
ICAvLyBza2lwIGFsbCBlbGVtZW50LXJlbGF0ZWQgbW9kdWxlcyBleGNlcHQgZm9yIHJlZiAoIzM0
NTUpXG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgICAvLyBtYWtlIHN1cmUgdG8gaW52
b2tlIHRoZSBpbnNlcnQgaG9va1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUp
O1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWN0aXZhdGVDb21wb25lbnQgKHZub2RlLCBp
bnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSB7XG4gICAgdmFyIGk7XG4gICAg
Ly8gaGFjayBmb3IgIzQzMzk6IGEgcmVhY3RpdmF0ZWQgY29tcG9uZW50IHdpdGggaW5uZXIgdHJh
bnNpdGlvblxuICAgIC8vIGRvZXMgbm90IHRyaWdnZXIgYmVjYXVzZSB0aGUgaW5uZXIgbm9kZSdz
IGNyZWF0ZWQgaG9va3MgYXJlIG5vdCBjYWxsZWRcbiAgICAvLyBhZ2Fpbi4gSXQncyBub3QgaWRl
YWwgdG8gaW52b2x2ZSBtb2R1bGUtc3BlY2lmaWMgbG9naWMgaW4gaGVyZSBidXRcbiAgICAvLyB0
aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0LlxuICAgIHZhciBp
bm5lck5vZGUgPSB2bm9kZTtcbiAgICB3aGlsZSAoaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNl
KSB7XG4gICAgICBpbm5lck5vZGUgPSBpbm5lck5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2Rl
O1xuICAgICAgaWYgKGlzRGVmKGkgPSBpbm5lck5vZGUuZGF0YSkgJiYgaXNEZWYoaSA9IGkudHJh
bnNpdGlvbikpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5hY3RpdmF0ZS5sZW5ndGg7
ICsraSkge1xuICAgICAgICAgIGNicy5hY3RpdmF0ZVtpXShlbXB0eU5vZGUsIGlubmVyTm9kZSk7
XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2goaW5uZXJOb2RlKTtc
biAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdW5saWtlIGEgbmV3bHkgY3Jl
YXRlZCBjb21wb25lbnQsXG4gICAgLy8gYSByZWFjdGl2YXRlZCBrZWVwLWFsaXZlIGNvbXBvbmVu
dCBkb2Vzbid0IGluc2VydCBpdHNlbGZcbiAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0s
IHJlZkVsbSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbnNlcnQgKHBhcmVudCwgZWxtLCByZWYkJDEp
IHtcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgaWYgKGlzRGVmKHJlZiQkMSkpIHtc
biAgICAgICAgaWYgKHJlZiQkMS5wYXJlbnROb2RlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICBu
b2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnQsIGVsbSwgcmVmJCQxKTtcbiAgICAgICAgfVxuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZU9wcy5hcHBlbmRDaGlsZChwYXJlbnQsIGVsbSk7XG4g
ICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ2hpbGRyZW4gKHZub2RlLCBj
aGlsZHJlbiwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hp
bGRyZW4pKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytp
KSB7XG4gICAgICAgIGNyZWF0ZUVsbShjaGlsZHJlbltpXSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCB2
bm9kZS5lbG0sIG51bGwsIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRp
dmUodm5vZGUudGV4dCkpIHtcbiAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBu
b2RlT3BzLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpKTtcbiAgICB9XG4gIH1cblxuICBmdW5j
dGlvbiBpc1BhdGNoYWJsZSAodm5vZGUpIHtcbiAgICB3aGlsZSAodm5vZGUuY29tcG9uZW50SW5z
dGFuY2UpIHtcbiAgICAgIHZub2RlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xu
ICAgIH1cbiAgICByZXR1cm4gaXNEZWYodm5vZGUudGFnKVxuICB9XG5cbiAgZnVuY3Rpb24gaW52
b2tlQ3JlYXRlSG9va3MgKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKHZh
ciBpJDEgPSAwOyBpJDEgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpJDEpIHtcbiAgICAgIGNicy5j
cmVhdGVbaSQxXShlbXB0eU5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgaSA9IHZub2RlLmRhdGEu
aG9vazsgLy8gUmV1c2UgdmFyaWFibGVcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIGlmIChp
c0RlZihpLmNyZWF0ZSkpIHsgaS5jcmVhdGUoZW1wdHlOb2RlLCB2bm9kZSk7IH1cbiAgICAgIGlm
IChpc0RlZihpLmluc2VydCkpIHsgaW5zZXJ0ZWRWbm9kZVF1ZXVlLnB1c2godm5vZGUpOyB9XG4g
ICAgfVxuICB9XG5cbiAgLy8gc2V0IHNjb3BlIGlkIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIENTUy5c
biAgLy8gdGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB0aGUg
b3ZlcmhlYWRcbiAgLy8gb2YgZ29pbmcgdGhyb3VnaCB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBwYXRj
aGluZyBwcm9jZXNzLlxuICBmdW5jdGlvbiBzZXRTY29wZSAodm5vZGUpIHtcbiAgICB2YXIgaTtc
biAgICB2YXIgYW5jZXN0b3IgPSB2bm9kZTtcbiAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAg
IGlmIChpc0RlZihpID0gYW5jZXN0b3IuY29udGV4dCkgJiYgaXNEZWYoaSA9IGkuJG9wdGlvbnMu
X3Njb3BlSWQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0QXR0cmlidXRlKHZub2RlLmVsbSwgaSwg
JycpO1xuICAgICAgfVxuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgfVxu
ICAgIC8vIGZvciBzbG90IGNvbnRlbnQgdGhleSBzaG91bGQgYWxzbyBnZXQgdGhlIHNjb3BlSWQg
ZnJvbSB0aGUgaG9zdCBpbnN0YW5jZS5cbiAgICBpZiAoaXNEZWYoaSA9IGFjdGl2ZUluc3RhbmNl
KSAmJlxuICAgICAgaSAhPT0gdm5vZGUuY29udGV4dCAmJlxuICAgICAgaXNEZWYoaSA9IGkuJG9w
dGlvbnMuX3Njb3BlSWQpXG4gICAgKSB7XG4gICAgICBub2RlT3BzLnNldEF0dHJpYnV0ZSh2bm9k
ZS5lbG0sIGksICcnKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRWbm9kZXMgKHBhcmVu
dEVsbSwgcmVmRWxtLCB2bm9kZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1
ZSkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAg
IGNyZWF0ZUVsbSh2bm9kZXNbc3RhcnRJZHhdLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVs
bSwgcmVmRWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAo
dm5vZGUpIHtcbiAgICB2YXIgaSwgajtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAg
aWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNE
ZWYoaSA9IGkuZGVzdHJveSkpIHsgaSh2bm9kZSk7IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBj
YnMuZGVzdHJveS5sZW5ndGg7ICsraSkgeyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9
XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7
IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraikge1xuICAgICAgICBpbnZva2VEZXN0cm95
SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rp
b24gcmVtb3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xu
ICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBj
aCA9IHZub2Rlc1tzdGFydElkeF07XG4gICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlm
IChpc0RlZihjaC50YWcpKSB7XG4gICAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhj
aCk7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAv
LyBUZXh0IG5vZGVcbiAgICAgICAgICByZW1vdmVOb2RlKGNoLmVsbSk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29r
ICh2bm9kZSwgcm0pIHtcbiAgICBpZiAoaXNEZWYocm0pIHx8IGlzRGVmKHZub2RlLmRhdGEpKSB7
XG4gICAgICB2YXIgaTtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjYnMucmVtb3ZlLmxlbmd0aCAr
IDE7XG4gICAgICBpZiAoaXNEZWYocm0pKSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNp
dmVseSBwYXNzZWQgZG93biBybSBjYWxsYmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlz
dGVuZXJzIGNvdW50XG4gICAgICAgIHJtLmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICAvLyBkaXJlY3RseSByZW1vdmluZ1xuICAgICAgICBybSA9IGNyZWF0
ZVJtQ2Iodm5vZGUuZWxtLCBsaXN0ZW5lcnMpO1xuICAgICAgfVxuICAgICAgLy8gcmVjdXJzaXZl
bHkgaW52b2tlIGhvb2tzIG9uIGNoaWxkIGNvbXBvbmVudCByb290IG5vZGVcbiAgICAgIGlmIChp
c0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkg
JiYgaXNEZWYoaS5kYXRhKSkge1xuICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGks
IHJtKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsg
KytpKSB7XG4gICAgICAgIGNicy5yZW1vdmVbaV0odm5vZGUsIHJtKTtcbiAgICAgIH1cbiAgICAg
IGlmIChpc0RlZihpID0gdm5vZGUuZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7
XG4gICAgICAgIGkodm5vZGUsIHJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJtKCk7XG4g
ICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZU5vZGUodm5vZGUuZWxtKTtcbiAgICB9
XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbiAocGFyZW50RWxtLCBvbGRDaCwgbmV3
Q2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIHZhciBvbGRTdGFydElk
eCA9IDA7XG4gICAgdmFyIG5ld1N0YXJ0SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xk
Q2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgb2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZh
ciBvbGRFbmRWbm9kZSA9IG9sZENoW29sZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5l
d0NoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2
YXIgbmV3RW5kVm5vZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwg
aWR4SW5PbGQsIGVsbVRvTW92ZSwgcmVmRWxtO1xuXG4gICAgLy8gcmVtb3ZlT25seSBpcyBhIHNw
ZWNpYWwgZmxhZyB1c2VkIG9ubHkgYnkgPHRyYW5zaXRpb24tZ3JvdXA+XG4gICAgLy8gdG8gZW5z
dXJlIHJlbW92ZWQgZWxlbWVudHMgc3RheSBpbiBjb3JyZWN0IHJlbGF0aXZlIHBvc2l0aW9uc1xu
ICAgIC8vIGR1cmluZyBsZWF2aW5nIHRyYW5zaXRpb25zXG4gICAgdmFyIGNhbk1vdmUgPSAhcmVt
b3ZlT25seTtcblxuICAgIHdoaWxlIChvbGRTdGFydElkeCA8PSBvbGRFbmRJZHggJiYgbmV3U3Rh
cnRJZHggPD0gbmV3RW5kSWR4KSB7XG4gICAgICBpZiAoaXNVbmRlZihvbGRTdGFydFZub2RlKSkg
e1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07IC8vIFZub2Rl
IGhhcyBiZWVuIG1vdmVkIGxlZnRcbiAgICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGRFbmRWbm9k
ZSkpIHtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICB9
IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdTdGFydFZub2RlKSkge1xuICAg
ICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVkVm5v
ZGVRdWV1ZSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtc
biAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfSBl
bHNlIGlmIChzYW1lVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlKSkge1xuICAgICAgICBw
YXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtc
biAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld0Vu
ZFZub2RlID0gbmV3Q2hbLS1uZXdFbmRJZHhdO1xuICAgICAgfSBlbHNlIGlmIChzYW1lVm5vZGUo
b2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7IC8vIFZub2RlIG1vdmVkIHJpZ2h0XG4gICAg
ICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxt
LCBvbGRTdGFydFZub2RlLmVsbSwgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbmRWbm9kZS5lbG0p
KTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAg
ICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2Ft
ZVZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCBsZWZ0
XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld1N0YXJ0Vm5vZGUsIGluc2VydGVk
Vm5vZGVRdWV1ZSk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFy
ZW50RWxtLCBvbGRFbmRWbm9kZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgb2xk
RW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBu
ZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1VuZGVm
KG9sZEtleVRvSWR4KSkgeyBvbGRLZXlUb0lkeCA9IGNyZWF0ZUtleVRvT2xkSWR4KG9sZENoLCBv
bGRTdGFydElkeCwgb2xkRW5kSWR4KTsgfVxuICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0
YXJ0Vm5vZGUua2V5KSA/IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XSA6IG51bGw7XG4g
ICAgICAgIGlmIChpc1VuZGVmKGlkeEluT2xkKSkgeyAvLyBOZXcgZWxlbWVudFxuICAgICAgICAg
IGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwg
b2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25l
d1N0YXJ0SWR4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbG1Ub01vdmUgPSBvbGRD
aFtpZHhJbk9sZF07XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWVsbVRvTW92
ZSkge1xuICAgICAgICAgICAgd2FybihcbiAgICAgICAgICAgICAgJ0l0IHNlZW1zIHRoZXJlIGFy
ZSBkdXBsaWNhdGUga2V5cyB0aGF0IGlzIGNhdXNpbmcgYW4gdXBkYXRlIGVycm9yLiAnICtcbiAg
ICAgICAgICAgICAgJ01ha2Ugc3VyZSBlYWNoIHYtZm9yIGl0ZW0gaGFzIGEgdW5pcXVlIGtleS4n
XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2FtZVZub2RlKGVs
bVRvTW92ZSwgbmV3U3RhcnRWbm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGNoVm5vZGUoZWxtVG9N
b3ZlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICAgICAgb2xk
Q2hbaWR4SW5PbGRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3Bz
Lmluc2VydEJlZm9yZShwYXJlbnRFbG0sIGVsbVRvTW92ZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxt
KTtcbiAgICAgICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAg
ICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2FtZSBrZXkgYnV0IGRpZmZlcmVudCBl
bGVtZW50LiB0cmVhdCBhcyBuZXcgZWxlbWVudFxuICAgICAgICAgICAgY3JlYXRlRWxtKG5ld1N0
YXJ0Vm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCBvbGRTdGFydFZub2RlLmVs
bSk7XG4gICAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4g
ICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvbGRTdGFydElk
eCA+IG9sZEVuZElkeCkge1xuICAgICAgcmVmRWxtID0gaXNVbmRlZihuZXdDaFtuZXdFbmRJZHgg
KyAxXSkgPyBudWxsIDogbmV3Q2hbbmV3RW5kSWR4ICsgMV0uZWxtO1xuICAgICAgYWRkVm5vZGVz
KHBhcmVudEVsbSwgcmVmRWxtLCBuZXdDaCwgbmV3U3RhcnRJZHgsIG5ld0VuZElkeCwgaW5zZXJ0
ZWRWbm9kZVF1ZXVlKTtcbiAgICB9IGVsc2UgaWYgKG5ld1N0YXJ0SWR4ID4gbmV3RW5kSWR4KSB7
XG4gICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtLCBvbGRDaCwgb2xkU3RhcnRJZHgsIG9sZEVu
ZElkeCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGF0Y2hWbm9kZSAob2xkVm5vZGUsIHZu
b2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpIHtcbiAgICBpZiAob2xkVm5vZGUg
PT09IHZub2RlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgZWxtID0gdm5vZGUu
ZWxtID0gb2xkVm5vZGUuZWxtO1xuXG4gICAgaWYgKGlzVHJ1ZShvbGRWbm9kZS5pc0FzeW5jUGxh
Y2Vob2xkZXIpKSB7XG4gICAgICBpZiAoaXNEZWYodm5vZGUuYXN5bmNGYWN0b3J5LnJlc29sdmVk
KSkge1xuICAgICAgICBoeWRyYXRlKG9sZFZub2RlLmVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVR
dWV1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIg
PSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gcmV1c2UgZWxl
bWVudCBmb3Igc3RhdGljIHRyZWVzLlxuICAgIC8vIG5vdGUgd2Ugb25seSBkbyB0aGlzIGlmIHRo
ZSB2bm9kZSBpcyBjbG9uZWQgLVxuICAgIC8vIGlmIHRoZSBuZXcgbm9kZSBpcyBub3QgY2xvbmVk
IGl0IG1lYW5zIHRoZSByZW5kZXIgZnVuY3Rpb25zIGhhdmUgYmVlblxuICAgIC8vIHJlc2V0IGJ5
IHRoZSBob3QtcmVsb2FkLWFwaSBhbmQgd2UgbmVlZCB0byBkbyBhIHByb3BlciByZS1yZW5kZXIu
XG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc1N0YXRpYykgJiZcbiAgICAgIGlzVHJ1ZShvbGRWbm9k
ZS5pc1N0YXRpYykgJiZcbiAgICAgIHZub2RlLmtleSA9PT0gb2xkVm5vZGUua2V5ICYmXG4gICAg
ICAoaXNUcnVlKHZub2RlLmlzQ2xvbmVkKSB8fCBpc1RydWUodm5vZGUuaXNPbmNlKSlcbiAgICAp
IHtcbiAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5z
dGFuY2U7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaTtcbiAgICB2YXIgZGF0YSA9
IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKGkgPSBkYXRhLmhvb2sp
ICYmIGlzRGVmKGkgPSBpLnByZXBhdGNoKSkge1xuICAgICAgaShvbGRWbm9kZSwgdm5vZGUpO1xu
ICAgIH1cblxuICAgIHZhciBvbGRDaCA9IG9sZFZub2RlLmNoaWxkcmVuO1xuICAgIHZhciBjaCA9
IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc1BhdGNoYWJsZSh2bm9k
ZSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRlLmxlbmd0aDsgKytpKSB7IGNi
cy51cGRhdGVbaV0ob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRh
Lmhvb2spICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4g
ICAgfVxuICAgIGlmIChpc1VuZGVmKHZub2RlLnRleHQpKSB7XG4gICAgICBpZiAoaXNEZWYob2xk
Q2gpICYmIGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAob2xkQ2ggIT09IGNoKSB7IHVwZGF0ZUNo
aWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpOyB9
XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAoaXNEZWYob2xkVm5v
ZGUudGV4dCkpIHsgbm9kZU9wcy5zZXRUZXh0Q29udGVudChlbG0sICcnKTsgfVxuICAgICAgICBh
ZGRWbm9kZXMoZWxtLCBudWxsLCBjaCwgMCwgY2gubGVuZ3RoIC0gMSwgaW5zZXJ0ZWRWbm9kZVF1
ZXVlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEZWYob2xkQ2gpKSB7XG4gICAgICAgIHJlbW92ZVZu
b2RlcyhlbG0sIG9sZENoLCAwLCBvbGRDaC5sZW5ndGggLSAxKTtcbiAgICAgIH0gZWxzZSBpZiAo
aXNEZWYob2xkVm5vZGUudGV4dCkpIHtcbiAgICAgICAgbm9kZU9wcy5zZXRUZXh0Q29udGVudChl
bG0sICcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9sZFZub2RlLnRleHQgIT09IHZub2Rl
LnRleHQpIHtcbiAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCB2bm9kZS50ZXh0KTtc
biAgICB9XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEu
aG9vaykgJiYgaXNEZWYoaSA9IGkucG9zdHBhdGNoKSkgeyBpKG9sZFZub2RlLCB2bm9kZSk7IH1c
biAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VJbnNlcnRIb29rICh2bm9kZSwgcXVldWUs
IGluaXRpYWwpIHtcbiAgICAvLyBkZWxheSBpbnNlcnQgaG9va3MgZm9yIGNvbXBvbmVudCByb290
IG5vZGVzLCBpbnZva2UgdGhlbSBhZnRlciB0aGVcbiAgICAvLyBlbGVtZW50IGlzIHJlYWxseSBp
bnNlcnRlZFxuICAgIGlmIChpc1RydWUoaW5pdGlhbCkgJiYgaXNEZWYodm5vZGUucGFyZW50KSkg
e1xuICAgICAgdm5vZGUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydCA9IHF1ZXVlO1xuICAgIH0g
ZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgKytpKSB7XG4g
ICAgICAgIHF1ZXVlW2ldLmRhdGEuaG9vay5pbnNlcnQocXVldWVbaV0pO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIHZhciBiYWlsZWQgPSBmYWxzZTtcbiAgLy8gbGlzdCBvZiBtb2R1bGVzIHRo
YXQgY2FuIHNraXAgY3JlYXRlIGhvb2sgZHVyaW5nIGh5ZHJhdGlvbiBiZWNhdXNlIHRoZXlcbiAg
Ly8gYXJlIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIGNsaWVudCBvciBoYXMgbm8gbmVlZCBmb3Ig
aW5pdGlhbGl6YXRpb25cbiAgdmFyIGlzUmVuZGVyZWRNb2R1bGUgPSBtYWtlTWFwKCdhdHRycyxz
dHlsZSxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXknKTtcblxuICAvLyBOb3RlOiB0
aGlzIGlzIGEgYnJvd3Nlci1vbmx5IGZ1bmN0aW9uIHNvIHdlIGNhbiBhc3N1bWUgZWxtcyBhcmUg
RE9NIG5vZGVzLlxuICBmdW5jdGlvbiBoeWRyYXRlIChlbG0sIHZub2RlLCBpbnNlcnRlZFZub2Rl
UXVldWUpIHtcbiAgICBpZiAoaXNUcnVlKHZub2RlLmlzQ29tbWVudCkgJiYgaXNEZWYodm5vZGUu
YXN5bmNGYWN0b3J5KSkge1xuICAgICAgdm5vZGUuZWxtID0gZWxtO1xuICAgICAgdm5vZGUuaXNB
c3luY1BsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIWFz
c2VydE5vZGVNYXRjaChlbG0sIHZub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAg
IH1cbiAgICB9XG4gICAgdm5vZGUuZWxtID0gZWxtO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7
XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNo
aWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRh
Lmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7IGkodm5vZGUsIHRydWUgLyogaHlkcmF0aW5n
ICovKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtc
biAgICAgICAgLy8gY2hpbGQgY29tcG9uZW50LiBpdCBzaG91bGQgaGF2ZSBoeWRyYXRlZCBpdHMg
b3duIHRyZWUuXG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1
ZSk7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0RlZih0
YWcpKSB7XG4gICAgICBpZiAoaXNEZWYoY2hpbGRyZW4pKSB7XG4gICAgICAgIC8vIGVtcHR5IGVs
ZW1lbnQsIGFsbG93IGNsaWVudCB0byBwaWNrIHVwIGFuZCBwb3B1bGF0ZSBjaGlsZHJlblxuICAg
ICAgICBpZiAoIWVsbS5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICBjcmVhdGVDaGlsZHJl
bih2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIH0gZWxzZSB7
XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgIHZhciBjaGls
ZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEg
PCBjaGlsZHJlbi5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSB8
fCAhaHlkcmF0ZShjaGlsZE5vZGUsIGNoaWxkcmVuW2kkMV0sIGluc2VydGVkVm5vZGVRdWV1ZSkp
IHtcbiAgICAgICAgICAgICAgY2hpbGRyZW5NYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICBi
cmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5l
eHRTaWJsaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpZiBjaGlsZE5vZGUgaXMgbm90
IG51bGwsIGl0IG1lYW5zIHRoZSBhY3R1YWwgY2hpbGROb2RlcyBsaXN0IGlzXG4gICAgICAgICAg
Ly8gbG9uZ2VyIHRoYW4gdGhlIHZpcnR1YWwgY2hpbGRyZW4gbGlzdC5cbiAgICAgICAgICBpZiAo
IWNoaWxkcmVuTWF0Y2ggfHwgY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgICAgICB0eXBlb2YgY29u
c29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgIWJhaWxlZFxuICAgICAgICAg
ICAgKSB7XG4gICAgICAgICAgICAgIGJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnNv
bGUud2FybignUGFyZW50OiAnLCBlbG0pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ01p
c21hdGNoaW5nIGNoaWxkTm9kZXMgdnMuIFZOb2RlczogJywgZWxtLmNoaWxkTm9kZXMsIGNoaWxk
cmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAg
IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICAg
IGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkTW9kdWxl
KGtleSkpIHtcbiAgICAgICAgICAgIGludm9rZUNyZWF0ZUhvb2tzKHZub2RlLCBpbnNlcnRlZFZu
b2RlUXVldWUpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsbS5kYXRhICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBl
bG0uZGF0YSA9IHZub2RlLnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBm
dW5jdGlvbiBhc3NlcnROb2RlTWF0Y2ggKG5vZGUsIHZub2RlKSB7XG4gICAgaWYgKGlzRGVmKHZu
b2RlLnRhZykpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZub2RlLnRhZy5pbmRleE9mKCd2
dWUtY29tcG9uZW50JykgPT09IDAgfHxcbiAgICAgICAgdm5vZGUudGFnLnRvTG93ZXJDYXNlKCkg
PT09IChub2RlLnRhZ05hbWUgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICAp
XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAodm5vZGUuaXND
b21tZW50ID8gOCA6IDMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoIChv
bGRWbm9kZSwgdm5vZGUsIGh5ZHJhdGluZywgcmVtb3ZlT25seSwgcGFyZW50RWxtLCByZWZFbG0p
IHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkp
IHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5c
biAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1
ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5
IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAg
ICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0
ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZh
ciBpc1JlYWxFbGVtZW50ID0gaXNEZWYob2xkVm5vZGUubm9kZVR5cGUpO1xuICAgICAgaWYgKCFp
c1JlYWxFbGVtZW50ICYmIHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICAgIC8v
IHBhdGNoIGV4aXN0aW5nIHJvb3Qgbm9kZVxuICAgICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2
bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCByZW1vdmVPbmx5KTtcbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIGlmIChpc1JlYWxFbGVtZW50KSB7XG4gICAgICAgICAgLy8gbW91bnRpbmcgdG8gYSBy
ZWFsIGVsZW1lbnRcbiAgICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHNlcnZlci1yZW5kZXJl
ZCBjb250ZW50IGFuZCBpZiB3ZSBjYW4gcGVyZm9ybVxuICAgICAgICAgIC8vIGEgc3VjY2Vzc2Z1
bCBoeWRyYXRpb24uXG4gICAgICAgICAgaWYgKG9sZFZub2RlLm5vZGVUeXBlID09PSAxICYmIG9s
ZFZub2RlLmhhc0F0dHJpYnV0ZShTU1JfQVRUUikpIHtcbiAgICAgICAgICAgIG9sZFZub2RlLnJl
bW92ZUF0dHJpYnV0ZShTU1JfQVRUUik7XG4gICAgICAgICAgICBoeWRyYXRpbmcgPSB0cnVlO1xu
ICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNUcnVlKGh5ZHJhdGluZykpIHtcbiAgICAgICAg
ICAgIGlmIChoeWRyYXRlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSkge1xu
ICAgICAgICAgICAgICBpbnZva2VJbnNlcnRIb29rKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUs
IHRydWUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2xkVm5vZGVcbiAgICAgICAgICAgIH0gZWxz
ZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAg
ICAgICB3YXJuKFxuICAgICAgICAgICAgICAgICdUaGUgY2xpZW50LXNpZGUgcmVuZGVyZWQgdmly
dHVhbCBET00gdHJlZSBpcyBub3QgbWF0Y2hpbmcgJyArXG4gICAgICAgICAgICAgICAgJ3NlcnZl
ci1yZW5kZXJlZCBjb250ZW50LiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgaW5jb3JyZWN0ICcg
K1xuICAgICAgICAgICAgICAgICdIVE1MIG1hcmt1cCwgZm9yIGV4YW1wbGUgbmVzdGluZyBibG9j
ay1sZXZlbCBlbGVtZW50cyBpbnNpZGUgJyArXG4gICAgICAgICAgICAgICAgJzxwPiwgb3IgbWlz
c2luZyA8dGJvZHk+LiBCYWlsaW5nIGh5ZHJhdGlvbiBhbmQgcGVyZm9ybWluZyAnICtcbiAgICAg
ICAgICAgICAgICAnZnVsbCBjbGllbnQtc2lkZSByZW5kZXIuJ1xuICAgICAgICAgICAgICApO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlaXRoZXIgbm90IHNlcnZl
ci1yZW5kZXJlZCwgb3IgaHlkcmF0aW9uIGZhaWxlZC5cbiAgICAgICAgICAvLyBjcmVhdGUgYW4g
ZW1wdHkgbm9kZSBhbmQgcmVwbGFjZSBpdFxuICAgICAgICAgIG9sZFZub2RlID0gZW1wdHlOb2Rl
QXQob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2luZyBleGlzdGluZyBl
bGVtZW50XG4gICAgICAgIHZhciBvbGRFbG0gPSBvbGRWbm9kZS5lbG07XG4gICAgICAgIHZhciBw
YXJlbnRFbG0kMSA9IG5vZGVPcHMucGFyZW50Tm9kZShvbGRFbG0pO1xuICAgICAgICBjcmVhdGVF
bG0oXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlLFxuICAg
ICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGVkZ2UgY2FzZTogZG8gbm90IGluc2VydCBpZiBvbGQg
ZWxlbWVudCBpcyBpbiBhXG4gICAgICAgICAgLy8gbGVhdmluZyB0cmFuc2l0aW9uLiBPbmx5IGhh
cHBlbnMgd2hlbiBjb21iaW5pbmcgdHJhbnNpdGlvbiArXG4gICAgICAgICAgLy8ga2VlcC1hbGl2
ZSArIEhPQ3MuICgjNDU5MClcbiAgICAgICAgICBvbGRFbG0uX2xlYXZlQ2IgPyBudWxsIDogcGFy
ZW50RWxtJDEsXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAgICAg
ICk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICAvLyBj
b21wb25lbnQgcm9vdCBlbGVtZW50IHJlcGxhY2VkLlxuICAgICAgICAgIC8vIHVwZGF0ZSBwYXJl
bnQgcGxhY2Vob2xkZXIgbm9kZSBlbGVtZW50LCByZWN1cnNpdmVseVxuICAgICAgICAgIHZhciBh
bmNlc3RvciA9IHZub2RlLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAg
ICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtcbiAgICAgICAgICAgIGFuY2VzdG9y
ID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNQYXRjaGFi
bGUodm5vZGUpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5jcmVhdGUu
bGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpXShlbXB0eU5vZGUsIHZu
b2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAg
ICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSQxKSkge1xuICAgICAgICAgIHJlbW92ZVZub2Rlcyhw
YXJlbnRFbG0kMSwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWYo
b2xkVm5vZGUudGFnKSkge1xuICAgICAgICAgIGludm9rZURlc3Ryb3lIb29rKG9sZFZub2RlKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGludm9rZUluc2VydEhvb2sodm5vZGUs
IGluc2VydGVkVm5vZGVRdWV1ZSwgaXNJbml0aWFsUGF0Y2gpO1xuICAgIHJldHVybiB2bm9kZS5l
bG1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGRpcmVjdGl2ZXMgPSB7XG4gIGNyZWF0ZTogdXBk
YXRlRGlyZWN0aXZlcyxcbiAgdXBkYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICBkZXN0cm95OiBm
dW5jdGlvbiB1bmJpbmREaXJlY3RpdmVzICh2bm9kZSkge1xuICAgIHVwZGF0ZURpcmVjdGl2ZXMo
dm5vZGUsIGVtcHR5Tm9kZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZURpcmVjdGl2ZXMg
KG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzIHx8IHZu
b2RlLmRhdGEuZGlyZWN0aXZlcykge1xuICAgIF91cGRhdGUob2xkVm5vZGUsIHZub2RlKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBfdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGlzQ3Jl
YXRlID0gb2xkVm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIGlzRGVzdHJveSA9IHZub2RlID09
PSBlbXB0eU5vZGU7XG4gIHZhciBvbGREaXJzID0gbm9ybWFsaXplRGlyZWN0aXZlcyQxKG9sZFZu
b2RlLmRhdGEuZGlyZWN0aXZlcywgb2xkVm5vZGUuY29udGV4dCk7XG4gIHZhciBuZXdEaXJzID0g
bm9ybWFsaXplRGlyZWN0aXZlcyQxKHZub2RlLmRhdGEuZGlyZWN0aXZlcywgdm5vZGUuY29udGV4
dCk7XG5cbiAgdmFyIGRpcnNXaXRoSW5zZXJ0ID0gW107XG4gIHZhciBkaXJzV2l0aFBvc3RwYXRj
aCA9IFtdO1xuXG4gIHZhciBrZXksIG9sZERpciwgZGlyO1xuICBmb3IgKGtleSBpbiBuZXdEaXJz
KSB7XG4gICAgb2xkRGlyID0gb2xkRGlyc1trZXldO1xuICAgIGRpciA9IG5ld0RpcnNba2V5XTtc
biAgICBpZiAoIW9sZERpcikge1xuICAgICAgLy8gbmV3IGRpcmVjdGl2ZSwgYmluZFxuICAgICAg
Y2FsbEhvb2skMShkaXIsICdiaW5kJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIu
ZGVmICYmIGRpci5kZWYuaW5zZXJ0ZWQpIHtcbiAgICAgICAgZGlyc1dpdGhJbnNlcnQucHVzaChk
aXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBkaXJlY3RpdmUs
IHVwZGF0ZVxuICAgICAgZGlyLm9sZFZhbHVlID0gb2xkRGlyLnZhbHVlO1xuICAgICAgY2FsbEhv
b2skMShkaXIsICd1cGRhdGUnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYg
JiYgZGlyLmRlZi5jb21wb25lbnRVcGRhdGVkKSB7XG4gICAgICAgIGRpcnNXaXRoUG9zdHBhdGNo
LnB1c2goZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZGlyc1dpdGhJbnNlcnQu
bGVuZ3RoKSB7XG4gICAgdmFyIGNhbGxJbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNh
bGxIb29rJDEoZGlyc1dpdGhJbnNlcnRbaV0sICdpbnNlcnRlZCcsIHZub2RlLCBvbGRWbm9kZSk7
XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoaXNDcmVhdGUpIHtcbiAgICAgIG1lcmdlVk5vZGVI
b29rKHZub2RlLmRhdGEuaG9vayB8fCAodm5vZGUuZGF0YS5ob29rID0ge30pLCAnaW5zZXJ0Jywg
Y2FsbEluc2VydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxJbnNlcnQoKTtcbiAgICB9XG4g
IH1cblxuICBpZiAoZGlyc1dpdGhQb3N0cGF0Y2gubGVuZ3RoKSB7XG4gICAgbWVyZ2VWTm9kZUhv
b2sodm5vZGUuZGF0YS5ob29rIHx8ICh2bm9kZS5kYXRhLmhvb2sgPSB7fSksICdwb3N0cGF0Y2gn
LCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnNXaXRoUG9zdHBh
dGNoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxIb29rJDEoZGlyc1dpdGhQb3N0cGF0Y2hb
aV0sICdjb21wb25lbnRVcGRhdGVkJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIH1cbiAgICB9
KTtcbiAgfVxuXG4gIGlmICghaXNDcmVhdGUpIHtcbiAgICBmb3IgKGtleSBpbiBvbGREaXJzKSB7
XG4gICAgICBpZiAoIW5ld0RpcnNba2V5XSkge1xuICAgICAgICAvLyBubyBsb25nZXIgcHJlc2Vu
dCwgdW5iaW5kXG4gICAgICAgIGNhbGxIb29rJDEob2xkRGlyc1trZXldLCAndW5iaW5kJywgb2xk
Vm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52
YXIgZW1wdHlNb2RpZmllcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBub3Jt
YWxpemVEaXJlY3RpdmVzJDEgKFxuICBkaXJzLFxuICB2bVxuKSB7XG4gIHZhciByZXMgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpO1xuICBpZiAoIWRpcnMpIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAg
dmFyIGksIGRpcjtcbiAgZm9yIChpID0gMDsgaSA8IGRpcnMubGVuZ3RoOyBpKyspIHtcbiAgICBk
aXIgPSBkaXJzW2ldO1xuICAgIGlmICghZGlyLm1vZGlmaWVycykge1xuICAgICAgZGlyLm1vZGlm
aWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXNbZ2V0UmF3RGlyTmFtZShkaXIp
XSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0KHZtLiRvcHRpb25zLCAnZGlyZWN0
aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9u
IGdldFJhd0Rpck5hbWUgKGRpcikge1xuICByZXR1cm4gZGlyLnJhd05hbWUgfHwgKChkaXIubmFt
ZSkgKyBcIi5cIiArIChPYmplY3Qua2V5cyhkaXIubW9kaWZpZXJzIHx8IHt9KS5qb2luKCcuJykp
KVxufVxuXG5mdW5jdGlvbiBjYWxsSG9vayQxIChkaXIsIGhvb2ssIHZub2RlLCBvbGRWbm9kZSwg
aXNEZXN0cm95KSB7XG4gIHZhciBmbiA9IGRpci5kZWYgJiYgZGlyLmRlZltob29rXTtcbiAgaWYg
KGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKHZub2RlLmVsbSwgZGlyLCB2bm9kZSwgb2xkVm5v
ZGUsIGlzRGVzdHJveSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwg
dm5vZGUuY29udGV4dCwgKFwiZGlyZWN0aXZlIFwiICsgKGRpci5uYW1lKSArIFwiIFwiICsgaG9v
ayArIFwiIGhvb2tcIikpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgYmFzZU1vZHVsZXMgPSBbXG4g
IHJlZixcbiAgZGlyZWN0aXZlc1xuXTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVwZGF0ZUF0dHJz
IChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIG9wdHMgPSB2bm9kZS5jb21wb25lbnRPcHRpb25z
O1xuICBpZiAoaXNEZWYob3B0cykgJiYgb3B0cy5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzID09
PSBmYWxzZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEu
YXR0cnMpICYmIGlzVW5kZWYodm5vZGUuZGF0YS5hdHRycykpIHtcbiAgICByZXR1cm5cbiAgfVxu
ICB2YXIga2V5LCBjdXIsIG9sZDtcbiAgdmFyIGVsbSA9IHZub2RlLmVsbTtcbiAgdmFyIG9sZEF0
dHJzID0gb2xkVm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgdmFyIGF0dHJzID0gdm5vZGUuZGF0
YS5hdHRycyB8fCB7fTtcbiAgLy8gY2xvbmUgb2JzZXJ2ZWQgb2JqZWN0cywgYXMgdGhlIHVzZXIg
cHJvYmFibHkgd2FudHMgdG8gbXV0YXRlIGl0XG4gIGlmIChpc0RlZihhdHRycy5fX29iX18pKSB7
XG4gICAgYXR0cnMgPSB2bm9kZS5kYXRhLmF0dHJzID0gZXh0ZW5kKHt9LCBhdHRycyk7XG4gIH1c
blxuICBmb3IgKGtleSBpbiBhdHRycykge1xuICAgIGN1ciA9IGF0dHJzW2tleV07XG4gICAgb2xk
ID0gb2xkQXR0cnNba2V5XTtcbiAgICBpZiAob2xkICE9PSBjdXIpIHtcbiAgICAgIHNldEF0dHIo
ZWxtLCBrZXksIGN1cik7XG4gICAgfVxuICB9XG4gIC8vICM0MzkxOiBpbiBJRTksIHNldHRpbmcg
dHlwZSBjYW4gcmVzZXQgdmFsdWUgZm9yIGlucHV0W3R5cGU9cmFkaW9dXG4gIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICBpZiAoaXNJRTkgJiYgYXR0cnMudmFsdWUgIT09IG9sZEF0dHJzLnZh
bHVlKSB7XG4gICAgc2V0QXR0cihlbG0sICd2YWx1ZScsIGF0dHJzLnZhbHVlKTtcbiAgfVxuICBm
b3IgKGtleSBpbiBvbGRBdHRycykge1xuICAgIGlmIChpc1VuZGVmKGF0dHJzW2tleV0pKSB7XG4g
ICAgICBpZiAoaXNYbGluayhrZXkpKSB7XG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGVOUyh4
bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgICB9IGVsc2UgaWYgKCFpc0VudW1lcmF0
ZWRBdHRyKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAg
fVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xu
ICBpZiAoaXNCb29sZWFuQXR0cihrZXkpKSB7XG4gICAgLy8gc2V0IGF0dHJpYnV0ZSBmb3IgYmxh
bmsgdmFsdWVcbiAgICAvLyBlLmcuIDxvcHRpb24gZGlzYWJsZWQ+U2VsZWN0IG9uZTwvb3B0aW9u
PlxuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0
cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGtl
eSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVs
LnNldEF0dHJpYnV0ZShrZXksIGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpIHx8IHZhbHVlID09PSAn
ZmFsc2UnID8gJ2ZhbHNlJyA6ICd0cnVlJyk7XG4gIH0gZWxzZSBpZiAoaXNYbGluayhrZXkpKSB7
XG4gICAgaWYgKGlzRmFsc3lBdHRyVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbC5yZW1vdmVBdHRy
aWJ1dGVOUyh4bGlua05TLCBnZXRYbGlua1Byb3Aoa2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNl
IHtcbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0
dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2
YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBhdHRycyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVB
dHRycyxcbiAgdXBkYXRlOiB1cGRhdGVBdHRyc1xufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHVw
ZGF0ZUNsYXNzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuICB2
YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBvbGREYXRhID0gb2xkVm5vZGUuZGF0YTtcbiAg
aWYgKFxuICAgIGlzVW5kZWYoZGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICBpc1VuZGVmKGRhdGEu
Y2xhc3MpICYmIChcbiAgICAgIGlzVW5kZWYob2xkRGF0YSkgfHwgKFxuICAgICAgICBpc1VuZGVm
KG9sZERhdGEuc3RhdGljQ2xhc3MpICYmXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5jbGFzcylc
biAgICAgIClcbiAgICApXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNscyA9IGdl
bkNsYXNzRm9yVm5vZGUodm5vZGUpO1xuXG4gIC8vIGhhbmRsZSB0cmFuc2l0aW9uIGNsYXNzZXNc
biAgdmFyIHRyYW5zaXRpb25DbGFzcyA9IGVsLl90cmFuc2l0aW9uQ2xhc3NlcztcbiAgaWYgKGlz
RGVmKHRyYW5zaXRpb25DbGFzcykpIHtcbiAgICBjbHMgPSBjb25jYXQoY2xzLCBzdHJpbmdpZnlD
bGFzcyh0cmFuc2l0aW9uQ2xhc3MpKTtcbiAgfVxuXG4gIC8vIHNldCB0aGUgY2xhc3NcbiAgaWYg
KGNscyAhPT0gZWwuX3ByZXZDbGFzcykge1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBj
bHMpO1xuICAgIGVsLl9wcmV2Q2xhc3MgPSBjbHM7XG4gIH1cbn1cblxudmFyIGtsYXNzID0ge1xu
ICBjcmVhdGU6IHVwZGF0ZUNsYXNzLFxuICB1cGRhdGU6IHVwZGF0ZUNsYXNzXG59O1xuXG4vKiAg
Ki9cblxudmFyIHZhbGlkRGl2aXNpb25DaGFyUkUgPSAvW1xcdykuK1xcLV8kXFxdXS87XG5cbmZ1
bmN0aW9uIHBhcnNlRmlsdGVycyAoZXhwKSB7XG4gIHZhciBpblNpbmdsZSA9IGZhbHNlO1xuICB2
YXIgaW5Eb3VibGUgPSBmYWxzZTtcbiAgdmFyIGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcbiAg
dmFyIGluUmVnZXggPSBmYWxzZTtcbiAgdmFyIGN1cmx5ID0gMDtcbiAgdmFyIHNxdWFyZSA9IDA7
XG4gIHZhciBwYXJlbiA9IDA7XG4gIHZhciBsYXN0RmlsdGVySW5kZXggPSAwO1xuICB2YXIgYywg
cHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycztcblxuICBmb3IgKGkgPSAwOyBpIDwgZXhwLmxl
bmd0aDsgaSsrKSB7XG4gICAgcHJldiA9IGM7XG4gICAgYyA9IGV4cC5jaGFyQ29kZUF0KGkpO1xu
ICAgIGlmIChpblNpbmdsZSkge1xuICAgICAgaWYgKGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1
QykgeyBpblNpbmdsZSA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpbkRvdWJsZSkge1xuICAg
ICAgaWYgKGMgPT09IDB4MjIgJiYgcHJldiAhPT0gMHg1QykgeyBpbkRvdWJsZSA9IGZhbHNlOyB9
XG4gICAgfSBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XG4gICAgICBpZiAoYyA9PT0gMHg2
MCAmJiBwcmV2ICE9PSAweDVDKSB7IGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTsgfVxuICAgIH0g
ZWxzZSBpZiAoaW5SZWdleCkge1xuICAgICAgaWYgKGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1
QykgeyBpblJlZ2V4ID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYyA9PT0gMHg3
QyAmJiAvLyBwaXBlXG4gICAgICBleHAuY2hhckNvZGVBdChpICsgMSkgIT09IDB4N0MgJiZcbiAg
ICAgIGV4cC5jaGFyQ29kZUF0KGkgLSAxKSAhPT0gMHg3QyAmJlxuICAgICAgIWN1cmx5ICYmICFz
cXVhcmUgJiYgIXBhcmVuXG4gICAgKSB7XG4gICAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZp
bmVkKSB7XG4gICAgICAgIC8vIGZpcnN0IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Npb25cbiAgICAg
ICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XG4gICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xp
Y2UoMCwgaSkudHJpbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVzaEZpbHRlcigpO1xu
ICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAw
eDIyOiBpbkRvdWJsZSA9IHRydWU7IGJyZWFrICAgICAgICAgLy8gXCJcbiAgICAgICAgY2FzZSAw
eDI3OiBpblNpbmdsZSA9IHRydWU7IGJyZWFrICAgICAgICAgLy8gJ1xuICAgICAgICBjYXNlIDB4
NjA6IGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlOyBicmVhayAvLyBgXG4gICAgICAgIGNhc2UgMHgy
ODogcGFyZW4rKzsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIChcbiAgICAgICAgY2FzZSAweDI5
OiBwYXJlbi0tOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKVxuICAgICAgICBjYXNlIDB4NUI6
IHNxdWFyZSsrOyBicmVhayAgICAgICAgICAgICAgICAvLyBbXG4gICAgICAgIGNhc2UgMHg1RDog
c3F1YXJlLS07IGJyZWFrICAgICAgICAgICAgICAgIC8vIF1cbiAgICAgICAgY2FzZSAweDdCOiBj
dXJseSsrOyBicmVhayAgICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICBjYXNlIDB4N0Q6IGN1
cmx5LS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICBpZiAoYyA9
PT0gMHgyZikgeyAvLyAvXG4gICAgICAgIHZhciBqID0gaSAtIDE7XG4gICAgICAgIHZhciBwID0g
KHZvaWQgMCk7XG4gICAgICAgIC8vIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgcHJldiBjaGFy
XG4gICAgICAgIGZvciAoOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIHAgPSBleHAuY2hhckF0
KGopO1xuICAgICAgICAgIGlmIChwICE9PSAnICcpIHsgYnJlYWsgfVxuICAgICAgICB9XG4gICAg
ICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNoYXJSRS50ZXN0KHApKSB7XG4gICAgICAgICAg
aW5SZWdleCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAo
ZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgw
LCBpKS50cmltKCk7XG4gIH0gZWxzZSBpZiAobGFzdEZpbHRlckluZGV4ICE9PSAwKSB7XG4gICAg
cHVzaEZpbHRlcigpO1xuICB9XG5cbiAgZnVuY3Rpb24gcHVzaEZpbHRlciAoKSB7XG4gICAgKGZp
bHRlcnMgfHwgKGZpbHRlcnMgPSBbXSkpLnB1c2goZXhwLnNsaWNlKGxhc3RGaWx0ZXJJbmRleCwg
aSkudHJpbSgpKTtcbiAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgfVxuXG4gIGlmIChm
aWx0ZXJzKSB7XG4gICAgZm9yIChpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcbiAg
ICAgIGV4cHJlc3Npb24gPSB3cmFwRmlsdGVyKGV4cHJlc3Npb24sIGZpbHRlcnNbaV0pO1xuICAg
IH1cbiAgfVxuXG4gIHJldHVybiBleHByZXNzaW9uXG59XG5cbmZ1bmN0aW9uIHdyYXBGaWx0ZXIg
KGV4cCwgZmlsdGVyKSB7XG4gIHZhciBpID0gZmlsdGVyLmluZGV4T2YoJygnKTtcbiAgaWYgKGkg
PCAwKSB7XG4gICAgLy8gX2Y6IHJlc29sdmVGaWx0ZXJcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwi
ICsgZmlsdGVyICsgXCJcXFwiKShcIiArIGV4cCArIFwiKVwiKVxuICB9IGVsc2Uge1xuICAgIHZh
ciBuYW1lID0gZmlsdGVyLnNsaWNlKDAsIGkpO1xuICAgIHZhciBhcmdzID0gZmlsdGVyLnNsaWNl
KGkgKyAxKTtcbiAgICByZXR1cm4gKFwiX2YoXFxcIlwiICsgbmFtZSArIFwiXFxcIikoXCIgKyBl
eHAgKyBcIixcIiArIGFyZ3MpXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJhc2VXYXJu
IChtc2cpIHtcbiAgY29uc29sZS5lcnJvcigoXCJbVnVlIGNvbXBpbGVyXTogXCIgKyBtc2cpKTtc
bn1cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5jdGlvbiAoXG4gIG1vZHVsZXMsXG4gIGtleVxu
KSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBtb2R1bGVzLm1hcChmdW5jdGlvbiAobSkgeyBy
ZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH0pXG4gICAg
OiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChlbCwgbmFtZSwgdmFsdWUpIHtcbiAgKGVsLnBy
b3BzIHx8IChlbC5wcm9wcyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9
KTtcbn1cblxuZnVuY3Rpb24gYWRkQXR0ciAoZWwsIG5hbWUsIHZhbHVlKSB7XG4gIChlbC5hdHRy
cyB8fCAoZWwuYXR0cnMgPSBbXSkpLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSk7
XG59XG5cbmZ1bmN0aW9uIGFkZERpcmVjdGl2ZSAoXG4gIGVsLFxuICBuYW1lLFxuICByYXdOYW1l
LFxuICB2YWx1ZSxcbiAgYXJnLFxuICBtb2RpZmllcnNcbikge1xuICAoZWwuZGlyZWN0aXZlcyB8
fCAoZWwuZGlyZWN0aXZlcyA9IFtdKSkucHVzaCh7IG5hbWU6IG5hbWUsIHJhd05hbWU6IHJhd05h
bWUsIHZhbHVlOiB2YWx1ZSwgYXJnOiBhcmcsIG1vZGlmaWVyczogbW9kaWZpZXJzIH0pO1xufVxu
XG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWwsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICBtb2Rp
ZmllcnMsXG4gIGltcG9ydGFudCxcbiAgd2FyblxuKSB7XG4gIC8vIHdhcm4gcHJldmVudCBhbmQg
cGFzc2l2ZSBtb2RpZmllclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybiAmJlxuICAgIG1v
ZGlmaWVycyAmJiBtb2RpZmllcnMucHJldmVudCAmJiBtb2RpZmllcnMucGFzc2l2ZVxuICApIHtc
biAgICB3YXJuKFxuICAgICAgJ3Bhc3NpdmUgYW5kIHByZXZlbnQgY2FuXFwndCBiZSB1c2VkIHRv
Z2V0aGVyLiAnICtcbiAgICAgICdQYXNzaXZlIGhhbmRsZXIgY2FuXFwndCBwcmV2ZW50IGRlZmF1
bHQgZXZlbnQuJ1xuICAgICk7XG4gIH1cbiAgLy8gY2hlY2sgY2FwdHVyZSBtb2RpZmllclxuICBp
ZiAobW9kaWZpZXJzICYmIG1vZGlmaWVycy5jYXB0dXJlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVy
cy5jYXB0dXJlO1xuICAgIG5hbWUgPSAnIScgKyBuYW1lOyAvLyBtYXJrIHRoZSBldmVudCBhcyBj
YXB0dXJlZFxuICB9XG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm9uY2UpIHtcbiAgICBk
ZWxldGUgbW9kaWZpZXJzLm9uY2U7XG4gICAgbmFtZSA9ICd+JyArIG5hbWU7IC8vIG1hcmsgdGhl
IGV2ZW50IGFzIG9uY2VcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKG1v
ZGlmaWVycyAmJiBtb2RpZmllcnMucGFzc2l2ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMucGFz
c2l2ZTtcbiAgICBuYW1lID0gJyYnICsgbmFtZTsgLy8gbWFyayB0aGUgZXZlbnQgYXMgcGFzc2l2
ZVxuICB9XG4gIHZhciBldmVudHM7XG4gIGlmIChtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm5hdGl2
ZSkge1xuICAgIGRlbGV0ZSBtb2RpZmllcnMubmF0aXZlO1xuICAgIGV2ZW50cyA9IGVsLm5hdGl2
ZUV2ZW50cyB8fCAoZWwubmF0aXZlRXZlbnRzID0ge30pO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50
cyA9IGVsLmV2ZW50cyB8fCAoZWwuZXZlbnRzID0ge30pO1xuICB9XG4gIHZhciBuZXdIYW5kbGVy
ID0geyB2YWx1ZTogdmFsdWUsIG1vZGlmaWVyczogbW9kaWZpZXJzIH07XG4gIHZhciBoYW5kbGVy
cyA9IGV2ZW50c1tuYW1lXTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChBcnJh
eS5pc0FycmF5KGhhbmRsZXJzKSkge1xuICAgIGltcG9ydGFudCA/IGhhbmRsZXJzLnVuc2hpZnQo
bmV3SGFuZGxlcikgOiBoYW5kbGVycy5wdXNoKG5ld0hhbmRsZXIpO1xuICB9IGVsc2UgaWYgKGhh
bmRsZXJzKSB7XG4gICAgZXZlbnRzW25hbWVdID0gaW1wb3J0YW50ID8gW25ld0hhbmRsZXIsIGhh
bmRsZXJzXSA6IFtoYW5kbGVycywgbmV3SGFuZGxlcl07XG4gIH0gZWxzZSB7XG4gICAgZXZlbnRz
W25hbWVdID0gbmV3SGFuZGxlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCaW5kaW5nQXR0ciAo
XG4gIGVsLFxuICBuYW1lLFxuICBnZXRTdGF0aWNcbikge1xuICB2YXIgZHluYW1pY1ZhbHVlID1c
biAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnOicgKyBuYW1lKSB8fFxuICAgIGdldEFuZFJlbW92
ZUF0dHIoZWwsICd2LWJpbmQ6JyArIG5hbWUpO1xuICBpZiAoZHluYW1pY1ZhbHVlICE9IG51bGwp
IHtcbiAgICByZXR1cm4gcGFyc2VGaWx0ZXJzKGR5bmFtaWNWYWx1ZSlcbiAgfSBlbHNlIGlmIChn
ZXRTdGF0aWMgIT09IGZhbHNlKSB7XG4gICAgdmFyIHN0YXRpY1ZhbHVlID0gZ2V0QW5kUmVtb3Zl
QXR0cihlbCwgbmFtZSk7XG4gICAgaWYgKHN0YXRpY1ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJl
dHVybiBKU09OLnN0cmluZ2lmeShzdGF0aWNWYWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rp
b24gZ2V0QW5kUmVtb3ZlQXR0ciAoZWwsIG5hbWUpIHtcbiAgdmFyIHZhbDtcbiAgaWYgKCh2YWwg
PSBlbC5hdHRyc01hcFtuYW1lXSkgIT0gbnVsbCkge1xuICAgIHZhciBsaXN0ID0gZWwuYXR0cnNM
aXN0O1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtc
biAgICAgIGlmIChsaXN0W2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgbGlzdC5zcGxpY2Uo
aSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWxc
bn1cblxuLyogICovXG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gY29kZSBnZW5lcmF0aW9uIGZv
ciBjb21wb25lbnQgdi1tb2RlbFxuICovXG5mdW5jdGlvbiBnZW5Db21wb25lbnRNb2RlbCAoXG4g
IGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8
fCB7fTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07
XG5cbiAgdmFyIGJhc2VWYWx1ZUV4cHJlc3Npb24gPSAnJCR2JztcbiAgdmFyIHZhbHVlRXhwcmVz
c2lvbiA9IGJhc2VWYWx1ZUV4cHJlc3Npb247XG4gIGlmICh0cmltKSB7XG4gICAgdmFsdWVFeHBy
ZXNzaW9uID1cbiAgICAgIFwiKHR5cGVvZiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIiA9
PT0gJ3N0cmluZydcIiArXG4gICAgICAgIFwiPyBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBc
Ii50cmltKClcIiArXG4gICAgICAgIFwiOiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIilc
IjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJfbihcIiAr
IHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIHZhciBhc3NpZ25tZW50ID0gZ2VuQXNz
aWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG5cbiAgZWwubW9kZWwgPSB7XG4g
ICAgdmFsdWU6IChcIihcIiArIHZhbHVlICsgXCIpXCIpLFxuICAgIGV4cHJlc3Npb246IChcIlxc
XCJcIiArIHZhbHVlICsgXCJcXFwiXCIpLFxuICAgIGNhbGxiYWNrOiAoXCJmdW5jdGlvbiAoXCIg
KyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIpIHtcIiArIGFzc2lnbm1lbnQgKyBcIn1cIilcbiAg
fTtcbn1cblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBjb2RlZ2VuIGhlbHBlciBmb3IgZ2VuZXJh
dGluZyB2LW1vZGVsIHZhbHVlIGFzc2lnbm1lbnQgY29kZS5cbiAqL1xuZnVuY3Rpb24gZ2VuQXNz
aWdubWVudENvZGUgKFxuICB2YWx1ZSxcbiAgYXNzaWdubWVudFxuKSB7XG4gIHZhciBtb2RlbFJz
ID0gcGFyc2VNb2RlbCh2YWx1ZSk7XG4gIGlmIChtb2RlbFJzLmlkeCA9PT0gbnVsbCkge1xuICAg
IHJldHVybiAodmFsdWUgKyBcIj1cIiArIGFzc2lnbm1lbnQpXG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIChcIiRzZXQoXCIgKyAobW9kZWxScy5leHApICsgXCIsIFwiICsgKG1vZGVsUnMuaWR4KSAr
IFwiLCBcIiArIGFzc2lnbm1lbnQgKyBcIilcIilcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRp
cmVjdGl2ZSBtb2RlbCB0byBkbyB0aGUgYXJyYXkgdXBkYXRlIHRyYW5zZm9ybS4gYVtpZHhdID0g
dmFsID0+ICQkYS5zcGxpY2UoJCRpZHgsIDEsIHZhbClcbiAqXG4gKiBmb3IgbG9vcCBwb3NzaWJs
ZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVzdFtpZHhdXG4gKiAtIHRlc3RbdGVzdDFb
aWR4XV1cbiAqIC0gdGVzdFtcImFcIl1baWR4XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2lk
eF1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVzdDFbaWR4XV1cbiAqXG4gKi9cblxudmFy
IGxlbjtcbnZhciBzdHI7XG52YXIgY2hyO1xudmFyIGluZGV4JDE7XG52YXIgZXhwcmVzc2lvblBv
cztcbnZhciBleHByZXNzaW9uRW5kUG9zO1xuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtc
biAgc3RyID0gdmFsO1xuICBsZW4gPSBzdHIubGVuZ3RoO1xuICBpbmRleCQxID0gZXhwcmVzc2lv
blBvcyA9IGV4cHJlc3Npb25FbmRQb3MgPSAwO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwg
MCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICByZXR1cm4ge1xuICAg
ICAgZXhwOiB2YWwsXG4gICAgICBpZHg6IG51bGxcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWVv
ZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xu
ICAgIGlmIChpc1N0cmluZ1N0YXJ0KGNocikpIHtcbiAgICAgIHBhcnNlU3RyaW5nKGNocik7XG4g
ICAgfSBlbHNlIGlmIChjaHIgPT09IDB4NUIpIHtcbiAgICAgIHBhcnNlQnJhY2tldChjaHIpO1xu
ICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwOiB2YWwuc3Vic3RyaW5nKDAsIGV4cHJl
c3Npb25Qb3MpLFxuICAgIGlkeDogdmFsLnN1YnN0cmluZyhleHByZXNzaW9uUG9zICsgMSwgZXhw
cmVzc2lvbkVuZFBvcylcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0ICgpIHtcbiAgcmV0dXJuIHN0
ci5jaGFyQ29kZUF0KCsraW5kZXgkMSlcbn1cblxuZnVuY3Rpb24gZW9mICgpIHtcbiAgcmV0dXJu
IGluZGV4JDEgPj0gbGVuXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nU3RhcnQgKGNocikge1xuICBy
ZXR1cm4gY2hyID09PSAweDIyIHx8IGNociA9PT0gMHgyN1xufVxuXG5mdW5jdGlvbiBwYXJzZUJy
YWNrZXQgKGNocikge1xuICB2YXIgaW5CcmFja2V0ID0gMTtcbiAgZXhwcmVzc2lvblBvcyA9IGlu
ZGV4JDE7XG4gIHdoaWxlICghZW9mKCkpIHtcbiAgICBjaHIgPSBuZXh0KCk7XG4gICAgaWYgKGlz
U3RyaW5nU3RhcnQoY2hyKSkge1xuICAgICAgcGFyc2VTdHJpbmcoY2hyKTtcbiAgICAgIGNvbnRp
bnVlXG4gICAgfVxuICAgIGlmIChjaHIgPT09IDB4NUIpIHsgaW5CcmFja2V0Kys7IH1cbiAgICBp
ZiAoY2hyID09PSAweDVEKSB7IGluQnJhY2tldC0tOyB9XG4gICAgaWYgKGluQnJhY2tldCA9PT0g
MCkge1xuICAgICAgZXhwcmVzc2lvbkVuZFBvcyA9IGluZGV4JDE7XG4gICAgICBicmVha1xuICAg
IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyAoY2hyKSB7XG4gIHZhciBzdHJpbmdR
dW90ZSA9IGNocjtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBp
ZiAoY2hyID09PSBzdHJpbmdRdW90ZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxu
LyogICovXG5cbnZhciB3YXJuJDE7XG5cbi8vIGluIHNvbWUgY2FzZXMsIHRoZSBldmVudCB1c2Vk
IGhhcyB0byBiZSBkZXRlcm1pbmVkIGF0IHJ1bnRpbWVcbi8vIHNvIHdlIHVzZWQgc29tZSByZXNl
cnZlZCB0b2tlbnMgZHVyaW5nIGNvbXBpbGUuXG52YXIgUkFOR0VfVE9LRU4gPSAnX19yJztcbnZh
ciBDSEVDS0JPWF9SQURJT19UT0tFTiA9ICdfX2MnO1xuXG5mdW5jdGlvbiBtb2RlbCAoXG4gIGVs
LFxuICBkaXIsXG4gIF93YXJuXG4pIHtcbiAgd2FybiQxID0gX3dhcm47XG4gIHZhciB2YWx1ZSA9
IGRpci52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGRpci5tb2RpZmllcnM7XG4gIHZhciB0YWcg
PSBlbC50YWc7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBkeW5hbWljVHlwZSA9
IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dHlwZSddIHx8IGVsLmF0dHJzTWFwWyc6dHlwZSddO1xuICAg
IGlmICh0YWcgPT09ICdpbnB1dCcgJiYgZHluYW1pY1R5cGUpIHtcbiAgICAgIHdhcm4kMShcbiAg
ICAgICAgXCI8aW5wdXQgOnR5cGU9XFxcIlwiICsgZHluYW1pY1R5cGUgKyBcIlxcXCIgdi1tb2Rl
bD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46XFxuXCIgK1xuICAgICAgICBcInYtbW9kZWwgZG9l
cyBub3Qgc3VwcG9ydCBkeW5hbWljIGlucHV0IHR5cGVzLiBVc2Ugdi1pZiBicmFuY2hlcyBpbnN0
ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBpbnB1dHMgd2l0aCB0eXBlPVwiZmlsZVwi
IGFyZSByZWFkIG9ubHkgYW5kIHNldHRpbmcgdGhlIGlucHV0J3NcbiAgICAvLyB2YWx1ZSB3aWxs
IHRocm93IGFuIGVycm9yLlxuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ2Zp
bGUnKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1v
ZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiIHR5cGU9XFxcImZpbGVcXFwiPjpcXG5cIiArXG4g
ICAgICAgIFwiRmlsZSBpbnB1dHMgYXJlIHJlYWQgb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlz
dGVuZXIgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZWwuY29tcG9u
ZW50KSB7XG4gICAgZ2VuQ29tcG9uZW50TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICAg
IC8vIGNvbXBvbmVudCB2LW1vZGVsIGRvZXNuJ3QgbmVlZCBleHRyYSBydW50aW1lXG4gICAgcmV0
dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAodGFnID09PSAnc2VsZWN0Jykge1xuICAgIGdlblNlbGVj
dChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYm
IHR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICBnZW5DaGVja2JveE1vZGVsKGVsLCB2YWx1ZSwg
bW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgJiYgdHlwZSA9PT0gJ3Jh
ZGlvJykge1xuICAgIGdlblJhZGlvTW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVs
c2UgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScpIHtcbiAgICBnZW5E
ZWZhdWx0TW9kZWwoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKCFjb25maWcu
aXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgZ2VuQ29tcG9uZW50TW9kZWwoZWwsIHZhbHVlLCBt
b2RpZmllcnMpO1xuICAgIC8vIGNvbXBvbmVudCB2LW1vZGVsIGRvZXNuJ3QgbmVlZCBleHRyYSBy
dW50aW1lXG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMShcbiAgICAgIFwiPFwiICsgKGVsLnRh
ZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xuICAgICAgXCJ2
LW1vZGVsIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBlbGVtZW50IHR5cGUuIFwiICtcbiAgICAg
ICdJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBjb250ZW50ZWRpdGFibGUsIGl0XFwncyByZWNvbW1l
bmRlZCB0byAnICtcbiAgICAgICd3cmFwIGEgbGlicmFyeSBkZWRpY2F0ZWQgZm9yIHRoYXQgcHVy
cG9zZSBpbnNpZGUgYSBjdXN0b20gY29tcG9uZW50LidcbiAgICApO1xuICB9XG5cbiAgLy8gZW5z
dXJlIHJ1bnRpbWUgZGlyZWN0aXZlIG1ldGFkYXRhXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0
aW9uIGdlbkNoZWNrYm94TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7
XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZh
bHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZh
ciB0cnVlVmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0cnVlLXZhbHVlJykgfHwg
J3RydWUnO1xuICB2YXIgZmFsc2VWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2Zh
bHNlLXZhbHVlJykgfHwgJ2ZhbHNlJztcbiAgYWRkUHJvcChlbCwgJ2NoZWNrZWQnLFxuICAgIFwi
QXJyYXkuaXNBcnJheShcIiArIHZhbHVlICsgXCIpXCIgK1xuICAgICAgXCI/X2koXCIgKyB2YWx1
ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpPi0xXCIgKyAoXG4gICAgICAgIHRydWVWYWx1
ZUJpbmRpbmcgPT09ICd0cnVlJ1xuICAgICAgICAgID8gKFwiOihcIiArIHZhbHVlICsgXCIpXCIp
XG4gICAgICAgICAgOiAoXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1ZVZhbHVlQmluZGlu
ZyArIFwiKVwiKVxuICAgICAgKVxuICApO1xuICBhZGRIYW5kbGVyKGVsLCBDSEVDS0JPWF9SQURJ
T19UT0tFTixcbiAgICBcInZhciAkJGE9XCIgKyB2YWx1ZSArIFwiLFwiICtcbiAgICAgICAgJyQk
ZWw9JGV2ZW50LnRhcmdldCwnICtcbiAgICAgICAgXCIkJGM9JCRlbC5jaGVja2VkPyhcIiArIHRy
dWVWYWx1ZUJpbmRpbmcgKyBcIik6KFwiICsgZmFsc2VWYWx1ZUJpbmRpbmcgKyBcIik7XCIgK1xu
ICAgICdpZihBcnJheS5pc0FycmF5KCQkYSkpeycgK1xuICAgICAgXCJ2YXIgJCR2PVwiICsgKG51
bWJlciA/ICdfbignICsgdmFsdWVCaW5kaW5nICsgJyknIDogdmFsdWVCaW5kaW5nKSArIFwiLFwi
ICtcbiAgICAgICAgICAnJCRpPV9pKCQkYSwkJHYpOycgK1xuICAgICAgXCJpZigkJGVsLmNoZWNr
ZWQpeyQkaTwwJiYoXCIgKyB2YWx1ZSArIFwiPSQkYS5jb25jYXQoJCR2KSl9XCIgK1xuICAgICAg
XCJlbHNleyQkaT4tMSYmKFwiICsgdmFsdWUgKyBcIj0kJGEuc2xpY2UoMCwkJGkpLmNvbmNhdCgk
JGEuc2xpY2UoJCRpKzEpKSl9XCIgK1xuICAgIFwifWVsc2V7XCIgKyAoZ2VuQXNzaWdubWVudENv
ZGUodmFsdWUsICckJGMnKSkgKyBcIn1cIixcbiAgICBudWxsLCB0cnVlXG4gICk7XG59XG5cbmZ1
bmN0aW9uIGdlblJhZGlvTW9kZWwgKFxuICAgIGVsLFxuICAgIHZhbHVlLFxuICAgIG1vZGlmaWVy
c1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAg
dmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7
XG4gIHZhbHVlQmluZGluZyA9IG51bWJlciA/IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIp
XCIpIDogdmFsdWVCaW5kaW5nO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsIChcIl9xKFwiICsg
dmFsdWUgKyBcIixcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWws
IENIRUNLQk9YX1JBRElPX1RPS0VOLCBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVCaW5k
aW5nKSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdlblNlbGVjdCAoXG4gICAgZWwsXG4g
ICAgdmFsdWUsXG4gICAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAm
JiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgc2VsZWN0ZWRWYWwgPSBcIkFycmF5LnByb3RvdHlw
ZS5maWx0ZXJcIiArXG4gICAgXCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24o
byl7cmV0dXJuIG8uc2VsZWN0ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZh
bCA9IFxcXCJfdmFsdWVcXFwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwi
cmV0dXJuIFwiICsgKG51bWJlciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIjtcblxuICB2
YXIgYXNzaWdubWVudCA9ICckZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6
ICQkc2VsZWN0ZWRWYWxbMF0nO1xuICB2YXIgY29kZSA9IFwidmFyICQkc2VsZWN0ZWRWYWwgPSBc
IiArIHNlbGVjdGVkVmFsICsgXCI7XCI7XG4gIGNvZGUgPSBjb2RlICsgXCIgXCIgKyAoZ2VuQXNz
aWdubWVudENvZGUodmFsdWUsIGFzc2lnbm1lbnQpKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5n
ZScsIGNvZGUsIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxu
ICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNN
YXAudHlwZTtcbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIGxhenkgPSByZWYu
bGF6eTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07
XG4gIHZhciBuZWVkQ29tcG9zaXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7
XG4gIHZhciBldmVudCA9IGxhenlcbiAgICA/ICdjaGFuZ2UnXG4gICAgOiB0eXBlID09PSAncmFu
Z2UnXG4gICAgICA/IFJBTkdFX1RPS0VOXG4gICAgICA6ICdpbnB1dCc7XG5cbiAgdmFyIHZhbHVl
RXhwcmVzc2lvbiA9ICckZXZlbnQudGFyZ2V0LnZhbHVlJztcbiAgaWYgKHRyaW0pIHtcbiAgICB2
YWx1ZUV4cHJlc3Npb24gPSBcIiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpXCI7XG4gIH1cbiAg
aWYgKG51bWJlcikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJl
c3Npb24gKyBcIilcIjtcbiAgfVxuXG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFs
dWUsIHZhbHVlRXhwcmVzc2lvbik7XG4gIGlmIChuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAg
IGNvZGUgPSBcImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4g
IH1cblxuICBhZGRQcm9wKGVsLCAndmFsdWUnLCAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4g
IGFkZEhhbmRsZXIoZWwsIGV2ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbiAgaWYgKHRyaW0gfHwg
bnVtYmVyKSB7XG4gICAgYWRkSGFuZGxlcihlbCwgJ2JsdXInLCAnJGZvcmNlVXBkYXRlKCknKTtc
biAgfVxufVxuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYtbW9kZWwgZXZlbnQgdG9rZW5zIHRo
YXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLlxuLy8gaXQncyBpbXBvcnRhbnQg
dG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkgYmVjYXVzZVxuLy8g
dGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1vZGVsIGNhbGxiYWNrIGdldHMgY2Fs
bGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVycy5cbmZ1bmN0aW9uIG5vcm1hbGl6
ZUV2ZW50cyAob24pIHtcbiAgdmFyIGV2ZW50O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9c
biAgaWYgKGlzRGVmKG9uW1JBTkdFX1RPS0VOXSkpIHtcbiAgICAvLyBJRSBpbnB1dFt0eXBlPXJh
bmdlXSBvbmx5IHN1cHBvcnRzIGBjaGFuZ2VgIGV2ZW50XG4gICAgZXZlbnQgPSBpc0lFID8gJ2No
YW5nZScgOiAnaW5wdXQnO1xuICAgIG9uW2V2ZW50XSA9IFtdLmNvbmNhdChvbltSQU5HRV9UT0tF
Tl0sIG9uW2V2ZW50XSB8fCBbXSk7XG4gICAgZGVsZXRlIG9uW1JBTkdFX1RPS0VOXTtcbiAgfVxu
ICBpZiAoaXNEZWYob25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dKSkge1xuICAgIC8vIENocm9tZSBm
aXJlcyBtaWNyb3Rhc2tzIGluIGJldHdlZW4gY2xpY2svY2hhbmdlLCBsZWFkcyB0byAjNDUyMVxu
ICAgIGV2ZW50ID0gaXNDaHJvbWUgPyAnY2xpY2snIDogJ2NoYW5nZSc7XG4gICAgb25bZXZlbnRd
ID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtc
biAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dO1xuICB9XG59XG5cbnZhciB0YXJn
ZXQkMTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBldmVudCxcbiAgaGFuZGxlcixcbiAgb25jZSQk
MSxcbiAgY2FwdHVyZSxcbiAgcGFzc2l2ZVxuKSB7XG4gIGlmIChvbmNlJCQxKSB7XG4gICAgdmFy
IG9sZEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIHZhciBfdGFyZ2V0ID0gdGFyZ2V0JDE7IC8vIHNh
dmUgY3VycmVudCB0YXJnZXQgZWxlbWVudCBpbiBjbG9zdXJlXG4gICAgaGFuZGxlciA9IGZ1bmN0
aW9uIChldikge1xuICAgICAgdmFyIHJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAg
ICAgPyBvbGRIYW5kbGVyKGV2KVxuICAgICAgICA6IG9sZEhhbmRsZXIuYXBwbHkobnVsbCwgYXJn
dW1lbnRzKTtcbiAgICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgICAgcmVtb3ZlJDIoZXZl
bnQsIGhhbmRsZXIsIGNhcHR1cmUsIF90YXJnZXQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAg
dGFyZ2V0JDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBldmVudCxcbiAgICBoYW5kbGVyLFxuICAg
IHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6IGNhcHR1cmUsIHBhc3NpdmU6IHBh
c3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQyIChc
biAgZXZlbnQsXG4gIGhhbmRsZXIsXG4gIGNhcHR1cmUsXG4gIF90YXJnZXRcbikge1xuICAoX3Rh
cmdldCB8fCB0YXJnZXQkMSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2Fw
dHVyZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURPTUxpc3RlbmVycyAob2xkVm5vZGUsIHZub2Rl
KSB7XG4gIGlmIChpc1VuZGVmKG9sZFZub2RlLmRhdGEub24pICYmIGlzVW5kZWYodm5vZGUuZGF0
YS5vbikpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb24gPSB2bm9kZS5kYXRhLm9uIHx8IHt9
O1xuICB2YXIgb2xkT24gPSBvbGRWbm9kZS5kYXRhLm9uIHx8IHt9O1xuICB0YXJnZXQkMSA9IHZu
b2RlLmVsbTtcbiAgbm9ybWFsaXplRXZlbnRzKG9uKTtcbiAgdXBkYXRlTGlzdGVuZXJzKG9uLCBv
bGRPbiwgYWRkJDEsIHJlbW92ZSQyLCB2bm9kZS5jb250ZXh0KTtcbn1cblxudmFyIGV2ZW50cyA9
IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NTGlz
dGVuZXJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZub2Rl
LCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBpc1Vu
ZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwg
Y3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5k
YXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzIHx8
IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3
YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBwcm9w
cyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4gIGZv
ciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKGlzVW5kZWYocHJvcHNba2V5XSkpIHtcbiAg
ICAgIGVsbVtrZXldID0gJyc7XG4gICAgfVxuICB9XG4gIGZvciAoa2V5IGluIHByb3BzKSB7XG4g
ICAgY3VyID0gcHJvcHNba2V5XTtcbiAgICAvLyBpZ25vcmUgY2hpbGRyZW4gaWYgdGhlIG5vZGUg
aGFzIHRleHRDb250ZW50IG9yIGlubmVySFRNTCxcbiAgICAvLyBhcyB0aGVzZSB3aWxsIHRocm93
IGF3YXkgZXhpc3RpbmcgRE9NIG5vZGVzIGFuZCBjYXVzZSByZW1vdmFsIGVycm9yc1xuICAgIC8v
IG9uIHN1YnNlcXVlbnQgcGF0Y2hlcyAoIzMzNjApXG4gICAgaWYgKGtleSA9PT0gJ3RleHRDb250
ZW50JyB8fCBrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBpZiAodm5vZGUuY2hpbGRyZW4p
IHsgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDsgfVxuICAgICAgaWYgKGN1ciA9PT0gb2xkUHJv
cHNba2V5XSkgeyBjb250aW51ZSB9XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVlJykg
e1xuICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgX3ZhbHVlIGFzIHdlbGwgc2luY2VcbiAgICAgIC8v
IG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWRcbiAgICAgIGVsbS5fdmFsdWUg
PSBjdXI7XG4gICAgICAvLyBhdm9pZCByZXNldHRpbmcgY3Vyc29yIHBvc2l0aW9uIHdoZW4gdmFs
dWUgaXMgdGhlIHNhbWVcbiAgICAgIHZhciBzdHJDdXIgPSBpc1VuZGVmKGN1cikgPyAnJyA6IFN0
cmluZyhjdXIpO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVZhbHVlKGVsbSwgdm5vZGUsIHN0ckN1
cikpIHtcbiAgICAgICAgZWxtLnZhbHVlID0gc3RyQ3VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7
XG4gICAgICBlbG1ba2V5XSA9IGN1cjtcbiAgICB9XG4gIH1cbn1cblxuLy8gY2hlY2sgcGxhdGZv
cm1zL3dlYi91dGlsL2F0dHJzLmpzIGFjY2VwdFZhbHVlXG5cblxuZnVuY3Rpb24gc2hvdWxkVXBk
YXRlVmFsdWUgKFxuICBlbG0sXG4gIHZub2RlLFxuICBjaGVja1ZhbFxuKSB7XG4gIHJldHVybiAo
IWVsbS5jb21wb3NpbmcgJiYgKFxuICAgIHZub2RlLnRhZyA9PT0gJ29wdGlvbicgfHxcbiAgICBp
c0RpcnR5KGVsbSwgY2hlY2tWYWwpIHx8XG4gICAgaXNJbnB1dENoYW5nZWQoZWxtLCBjaGVja1Zh
bClcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eSAoZWxtLCBjaGVja1ZhbCkge1xuICAvLyBy
ZXR1cm4gdHJ1ZSB3aGVuIHRleHRib3ggKC5udW1iZXIgYW5kIC50cmltKSBsb3NlcyBmb2N1cyBh
bmQgaXRzIHZhbHVlIGlzXG4gIC8vIG5vdCBlcXVhbCB0byB0aGUgdXBkYXRlZCB2YWx1ZVxuICB2
YXIgbm90SW5Gb2N1cyA9IHRydWU7XG4gIC8vICM2MTU3XG4gIC8vIHdvcmsgYXJvdW5kIElFIGJ1
ZyB3aGVuIGFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluIGFuIGlmcmFtZVxuICB0
cnkgeyBub3RJbkZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZWxtOyB9IGNhdGNo
IChlKSB7fVxuICByZXR1cm4gbm90SW5Gb2N1cyAmJiBlbG0udmFsdWUgIT09IGNoZWNrVmFsXG59
XG5cbmZ1bmN0aW9uIGlzSW5wdXRDaGFuZ2VkIChlbG0sIG5ld1ZhbCkge1xuICB2YXIgdmFsdWUg
PSBlbG0udmFsdWU7XG4gIHZhciBtb2RpZmllcnMgPSBlbG0uX3ZNb2RpZmllcnM7IC8vIGluamVj
dGVkIGJ5IHYtbW9kZWwgcnVudGltZVxuICBpZiAoaXNEZWYobW9kaWZpZXJzKSAmJiBtb2RpZmll
cnMubnVtYmVyKSB7XG4gICAgcmV0dXJuIHRvTnVtYmVyKHZhbHVlKSAhPT0gdG9OdW1iZXIobmV3
VmFsKVxuICB9XG4gIGlmIChpc0RlZihtb2RpZmllcnMpICYmIG1vZGlmaWVycy50cmltKSB7XG4g
ICAgcmV0dXJuIHZhbHVlLnRyaW0oKSAhPT0gbmV3VmFsLnRyaW0oKVxuICB9XG4gIHJldHVybiB2
YWx1ZSAhPT0gbmV3VmFsXG59XG5cbnZhciBkb21Qcm9wcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVE
T01Qcm9wcyxcbiAgdXBkYXRlOiB1cGRhdGVET01Qcm9wc1xufTtcblxuLyogICovXG5cbnZhciBw
YXJzZVN0eWxlVGV4dCA9IGNhY2hlZChmdW5jdGlvbiAoY3NzVGV4dCkge1xuICB2YXIgcmVzID0g
e307XG4gIHZhciBsaXN0RGVsaW1pdGVyID0gLzsoPyFbXihdKlxcKSkvZztcbiAgdmFyIHByb3Bl
cnR5RGVsaW1pdGVyID0gLzooLispLztcbiAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyKS5m
b3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB0bXAg
PSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW1pdGVyKTtcbiAgICAgIHRtcC5sZW5ndGggPiAxICYm
IChyZXNbdG1wWzBdLnRyaW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcbiAgICB9XG4gIH0pO1xuICBy
ZXR1cm4gcmVzXG59KTtcblxuLy8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIHN0eWxlIGRhdGEg
b24gdGhlIHNhbWUgdm5vZGVcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlRGF0YSAoZGF0YSkge1xu
ICB2YXIgc3R5bGUgPSBub3JtYWxpemVTdHlsZUJpbmRpbmcoZGF0YS5zdHlsZSk7XG4gIC8vIHN0
YXRpYyBzdHlsZSBpcyBwcmUtcHJvY2Vzc2VkIGludG8gYW4gb2JqZWN0IGR1cmluZyBjb21waWxh
dGlvblxuICAvLyBhbmQgaXMgYWx3YXlzIGEgZnJlc2ggb2JqZWN0LCBzbyBpdCdzIHNhZmUgdG8g
bWVyZ2UgaW50byBpdFxuICByZXR1cm4gZGF0YS5zdGF0aWNTdHlsZVxuICAgID8gZXh0ZW5kKGRh
dGEuc3RhdGljU3R5bGUsIHN0eWxlKVxuICAgIDogc3R5bGVcbn1cblxuLy8gbm9ybWFsaXplIHBv
c3NpYmxlIGFycmF5IC8gc3RyaW5nIHZhbHVlcyBpbnRvIE9iamVjdFxuZnVuY3Rpb24gbm9ybWFs
aXplU3R5bGVCaW5kaW5nIChiaW5kaW5nU3R5bGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYmlu
ZGluZ1N0eWxlKSkge1xuICAgIHJldHVybiB0b09iamVjdChiaW5kaW5nU3R5bGUpXG4gIH1cbiAg
aWYgKHR5cGVvZiBiaW5kaW5nU3R5bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNl
U3R5bGVUZXh0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICByZXR1cm4gYmluZGluZ1N0eWxlXG59XG5c
bi8qKlxuICogcGFyZW50IGNvbXBvbmVudCBzdHlsZSBzaG91bGQgYmUgYWZ0ZXIgY2hpbGQnc1xu
ICogc28gdGhhdCBwYXJlbnQgY29tcG9uZW50J3Mgc3R5bGUgY291bGQgb3ZlcnJpZGUgaXRcbiAq
L1xuZnVuY3Rpb24gZ2V0U3R5bGUgKHZub2RlLCBjaGVja0NoaWxkKSB7XG4gIHZhciByZXMgPSB7
fTtcbiAgdmFyIHN0eWxlRGF0YTtcblxuICBpZiAoY2hlY2tDaGlsZCkge1xuICAgIHZhciBjaGls
ZE5vZGUgPSB2bm9kZTtcbiAgICB3aGlsZSAoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSB7
XG4gICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xu
ICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhICYmIChzdHlsZURhdGEgPSBub3JtYWxpemVTdHlsZURh
dGEoY2hpbGROb2RlLmRhdGEpKSkge1xuICAgICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICgoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVE
YXRhKHZub2RlLmRhdGEpKSkge1xuICAgIGV4dGVuZChyZXMsIHN0eWxlRGF0YSk7XG4gIH1cblxu
ICB2YXIgcGFyZW50Tm9kZSA9IHZub2RlO1xuICB3aGlsZSAoKHBhcmVudE5vZGUgPSBwYXJlbnRO
b2RlLnBhcmVudCkpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5kYXRhICYmIChzdHlsZURhdGEgPSBu
b3JtYWxpemVTdHlsZURhdGEocGFyZW50Tm9kZS5kYXRhKSkpIHtcbiAgICAgIGV4dGVuZChyZXMs
IHN0eWxlRGF0YSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZh
ciBjc3NWYXJSRSA9IC9eLS0vO1xudmFyIGltcG9ydGFudFJFID0gL1xccyohaW1wb3J0YW50JC87
XG52YXIgc2V0UHJvcCA9IGZ1bmN0aW9uIChlbCwgbmFtZSwgdmFsKSB7XG4gIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICBpZiAoY3NzVmFyUkUudGVzdChuYW1lKSkge1xuICAgIGVsLnN0eWxl
LnNldFByb3BlcnR5KG5hbWUsIHZhbCk7XG4gIH0gZWxzZSBpZiAoaW1wb3J0YW50UkUudGVzdCh2
YWwpKSB7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsLnJlcGxhY2UoaW1wb3J0
YW50UkUsICcnKSwgJ2ltcG9ydGFudCcpO1xuICB9IGVsc2Uge1xuICAgIHZhciBub3JtYWxpemVk
TmFtZSA9IG5vcm1hbGl6ZShuYW1lKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4g
ICAgICAvLyBTdXBwb3J0IHZhbHVlcyBhcnJheSBjcmVhdGVkIGJ5IGF1dG9wcmVmaXhlciwgZS5n
LlxuICAgICAgLy8ge2Rpc3BsYXk6IFtcIi13ZWJraXQtYm94XCIsIFwiLW1zLWZsZXhib3hcIiwg
XCJmbGV4XCJdfVxuICAgICAgLy8gU2V0IHRoZW0gb25lIGJ5IG9uZSwgYW5kIHRoZSBicm93c2Vy
IHdpbGwgb25seSBzZXQgdGhvc2UgaXQgY2FuIHJlY29nbml6ZVxuICAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbiA9IHZhbC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBlbC5zdHlsZVtu
b3JtYWxpemVkTmFtZV0gPSB2YWxbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVs
LnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciB2ZW5k
b3JOYW1lcyA9IFsnV2Via2l0JywgJ01veicsICdtcyddO1xuXG52YXIgZW1wdHlTdHlsZTtcbnZh
ciBub3JtYWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHtcbiAgZW1wdHlTdHlsZSA9IGVt
cHR5U3R5bGUgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHByb3Ag
PSBjYW1lbGl6ZShwcm9wKTtcbiAgaWYgKHByb3AgIT09ICdmaWx0ZXInICYmIChwcm9wIGluIGVt
cHR5U3R5bGUpKSB7XG4gICAgcmV0dXJuIHByb3BcbiAgfVxuICB2YXIgY2FwTmFtZSA9IHByb3Au
Y2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICBmb3IgKHZhciBpID0g
MDsgaSA8IHZlbmRvck5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5hbWUgPSB2ZW5kb3JO
YW1lc1tpXSArIGNhcE5hbWU7XG4gICAgaWYgKG5hbWUgaW4gZW1wdHlTdHlsZSkge1xuICAgICAg
cmV0dXJuIG5hbWVcbiAgICB9XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB1cGRhdGVTdHlsZSAob2xk
Vm5vZGUsIHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEg
PSBvbGRWbm9kZS5kYXRhO1xuXG4gIGlmIChpc1VuZGVmKGRhdGEuc3RhdGljU3R5bGUpICYmIGlz
VW5kZWYoZGF0YS5zdHlsZSkgJiZcbiAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljU3R5bGUpICYm
IGlzVW5kZWYob2xkRGF0YS5zdHlsZSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIg
Y3VyLCBuYW1lO1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBvbGRTdGF0aWNTdHlsZSA9
IG9sZERhdGEuc3RhdGljU3R5bGU7XG4gIHZhciBvbGRTdHlsZUJpbmRpbmcgPSBvbGREYXRhLm5v
cm1hbGl6ZWRTdHlsZSB8fCBvbGREYXRhLnN0eWxlIHx8IHt9O1xuXG4gIC8vIGlmIHN0YXRpYyBz
dHlsZSBleGlzdHMsIHN0eWxlYmluZGluZyBhbHJlYWR5IG1lcmdlZCBpbnRvIGl0IHdoZW4gZG9p
bmcgbm9ybWFsaXplU3R5bGVEYXRhXG4gIHZhciBvbGRTdHlsZSA9IG9sZFN0YXRpY1N0eWxlIHx8
IG9sZFN0eWxlQmluZGluZztcblxuICB2YXIgc3R5bGUgPSBub3JtYWxpemVTdHlsZUJpbmRpbmco
dm5vZGUuZGF0YS5zdHlsZSkgfHwge307XG5cbiAgLy8gc3RvcmUgbm9ybWFsaXplZCBzdHlsZSB1
bmRlciBhIGRpZmZlcmVudCBrZXkgZm9yIG5leHQgZGlmZlxuICAvLyBtYWtlIHN1cmUgdG8gY2xv
bmUgaXQgaWYgaXQncyByZWFjdGl2ZSwgc2luY2UgdGhlIHVzZXIgbGlrbGV5IHdhbnRzXG4gIC8v
IHRvIG11dGF0ZSBpdC5cbiAgdm5vZGUuZGF0YS5ub3JtYWxpemVkU3R5bGUgPSBpc0RlZihzdHls
ZS5fX29iX18pXG4gICAgPyBleHRlbmQoe30sIHN0eWxlKVxuICAgIDogc3R5bGU7XG5cbiAgdmFy
IG5ld1N0eWxlID0gZ2V0U3R5bGUodm5vZGUsIHRydWUpO1xuXG4gIGZvciAobmFtZSBpbiBvbGRT
dHlsZSkge1xuICAgIGlmIChpc1VuZGVmKG5ld1N0eWxlW25hbWVdKSkge1xuICAgICAgc2V0UHJv
cChlbCwgbmFtZSwgJycpO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gbmV3U3R5bGUpIHtc
biAgICBjdXIgPSBuZXdTdHlsZVtuYW1lXTtcbiAgICBpZiAoY3VyICE9PSBvbGRTdHlsZVtuYW1l
XSkge1xuICAgICAgLy8gaWU5IHNldHRpbmcgdG8gbnVsbCBoYXMgbm8gZWZmZWN0LCBtdXN0IHVz
ZSBlbXB0eSBzdHJpbmdcbiAgICAgIHNldFByb3AoZWwsIG5hbWUsIGN1ciA9PSBudWxsID8gJycg
OiBjdXIpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc3R5bGUgPSB7XG4gIGNyZWF0ZTogdXBkYXRl
U3R5bGUsXG4gIHVwZGF0ZTogdXBkYXRlU3R5bGVcbn07XG5cbi8qICAqL1xuXG4vKipcbiAqIEFk
ZCBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90
IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElFXG4gKi9cbmZ1bmN0aW9uIGFkZENs
YXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8
fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1
bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgaWYgKGNscy5pbmRl
eE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChmdW5jdGlv
biAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LmFkZChjKTsgfSk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGN1
ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykgKyBcIiBcIjtcbiAg
ICBpZiAoY3VyLmluZGV4T2YoJyAnICsgY2xzICsgJyAnKSA8IDApIHtcbiAgICAgIGVsLnNldEF0
dHJpYnV0ZSgnY2xhc3MnLCAoY3VyICsgY2xzKS50cmltKCkpO1xuICAgIH1cbiAgfVxufVxuXG4v
KipcbiAqIFJlbW92ZSBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5jZSBjbGFz
c0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElFXG4gKi9cbmZ1
bmN0aW9uIHJlbW92ZUNsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAq
L1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJuXG4gIH1c
blxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4g
ICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KC9cXHMrLyku
Zm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShjKTsgfSk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoY2xzKTtcbiAgICB9XG4g
ICAgaWYgKCFlbC5jbGFzc0xpc3QubGVuZ3RoKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUo
J2NsYXNzJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5n
ZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4gICAgdmFyIHRhciA9ICcgJyAr
IGNscyArICcgJztcbiAgICB3aGlsZSAoY3VyLmluZGV4T2YodGFyKSA+PSAwKSB7XG4gICAgICBj
dXIgPSBjdXIucmVwbGFjZSh0YXIsICcgJyk7XG4gICAgfVxuICAgIGN1ciA9IGN1ci50cmltKCk7
XG4gICAgaWYgKGN1cikge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGN1cik7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4g
IH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtc
biAgaWYgKCFkZWYkJDEpIHtcbiAgICByZXR1cm5cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUg
ZWxzZSAqL1xuICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVz
ID0ge307XG4gICAgaWYgKGRlZiQkMS5jc3MgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbmQocmVz
LCBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEubmFtZSB8fCAndicpKTtcbiAgICB9XG4gICAgZXh0
ZW5kKHJlcywgZGVmJCQxKTtcbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRl
ZiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQx
KVxuICB9XG59XG5cbnZhciBhdXRvQ3NzVHJhbnNpdGlvbiA9IGNhY2hlZChmdW5jdGlvbiAobmFt
ZSkge1xuICByZXR1cm4ge1xuICAgIGVudGVyQ2xhc3M6IChuYW1lICsgXCItZW50ZXJcIiksXG4g
ICAgZW50ZXJUb0NsYXNzOiAobmFtZSArIFwiLWVudGVyLXRvXCIpLFxuICAgIGVudGVyQWN0aXZl
Q2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxuICAgIGxlYXZlQ2xhc3M6IChuYW1l
ICsgXCItbGVhdmVcIiksXG4gICAgbGVhdmVUb0NsYXNzOiAobmFtZSArIFwiLWxlYXZlLXRvXCIp
LFxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtYWN0aXZlXCIpXG4gIH1c
bn0pO1xuXG52YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG52YXIgVFJB
TlNJVElPTiA9ICd0cmFuc2l0aW9uJztcbnZhciBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcblxu
Ly8gVHJhbnNpdGlvbiBwcm9wZXJ0eS9ldmVudCBzbmlmZmluZ1xudmFyIHRyYW5zaXRpb25Qcm9w
ID0gJ3RyYW5zaXRpb24nO1xudmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0cmFuc2l0aW9uZW5k
JztcbnZhciBhbmltYXRpb25Qcm9wID0gJ2FuaW1hdGlvbic7XG52YXIgYW5pbWF0aW9uRW5kRXZl
bnQgPSAnYW5pbWF0aW9uZW5kJztcbmlmIChoYXNUcmFuc2l0aW9uKSB7XG4gIC8qIGlzdGFuYnVs
IGlnbm9yZSBpZiAqL1xuICBpZiAod2luZG93Lm9udHJhbnNpdGlvbmVuZCA9PT0gdW5kZWZpbmVk
ICYmXG4gICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkg
e1xuICAgIHRyYW5zaXRpb25Qcm9wID0gJ1dlYmtpdFRyYW5zaXRpb24nO1xuICAgIHRyYW5zaXRp
b25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5kJztcbiAgfVxuICBpZiAod2luZG93Lm9u
YW5pbWF0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXRhbmltYXRp
b25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFu
aW1hdGlvbic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztc
biAgfVxufVxuXG4vLyBiaW5kaW5nIHRvIHdpbmRvdyBpcyBuZWNlc3NhcnkgdG8gbWFrZSBob3Qg
cmVsb2FkIHdvcmsgaW4gSUUgaW4gc3RyaWN0IG1vZGVcbnZhciByYWYgPSBpbkJyb3dzZXIgJiYg
d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUuYmluZCh3aW5kb3cpXG4gIDogc2V0VGltZW91dDtcblxuZnVuY3Rpb24gbmV4dEZyYW1l
IChmbikge1xuICByYWYoZnVuY3Rpb24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5m
dW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgdmFyIHRyYW5zaXRpb25D
bGFzc2VzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzIHx8IChlbC5fdHJhbnNpdGlvbkNsYXNzZXMg
PSBbXSk7XG4gIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcy5pbmRleE9mKGNscykgPCAwKSB7XG4gICAg
dHJhbnNpdGlvbkNsYXNzZXMucHVzaChjbHMpO1xuICAgIGFkZENsYXNzKGVsLCBjbHMpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICBpZiAo
ZWwuX3RyYW5zaXRpb25DbGFzc2VzKSB7XG4gICAgcmVtb3ZlKGVsLl90cmFuc2l0aW9uQ2xhc3Nl
cywgY2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xzKTtcbn1cblxuZnVuY3Rpb24gd2hl
blRyYW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVkVHlwZSxcbiAgY2Jcbikge1xuICB2
YXIgcmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciB0eXBl
ID0gcmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRpbWVvdXQ7XG4gIHZhciBwcm9wQ291
bnQgPSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsgcmV0dXJuIGNiKCkgfVxuICB2YXIg
ZXZlbnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlvbkVuZEV2ZW50IDogYW5pbWF0
aW9uRW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZhciBlbmQgPSBmdW5jdGlvbiAoKSB7
XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xuICAgIGNiKCk7XG4g
IH07XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBl
bCkge1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50KSB7XG4gICAgICAgIGVuZCgpO1xu
ICAgICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYg
KGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH0sIHRpbWVvdXQg
KyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xufVxuXG52YXIgdHJh
bnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO1xuXG5mdW5jdGlvbiBnZXRUcmFu
c2l0aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2YXIgc3R5bGVzID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZWwpO1xuICB2YXIgdHJhbnNpdGlvbkRlbGF5cyA9IHN0eWxlc1t0cmFu
c2l0aW9uUHJvcCArICdEZWxheSddLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvbkR1cmF0
aW9ucyA9IHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEdXJhdGlvbiddLnNwbGl0KCcsICcpO1xu
ICB2YXIgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KHRyYW5zaXRpb25EZWxheXMsIHRy
YW5zaXRpb25EdXJhdGlvbnMpO1xuICB2YXIgYW5pbWF0aW9uRGVsYXlzID0gc3R5bGVzW2FuaW1h
dGlvblByb3AgKyAnRGVsYXknXS5zcGxpdCgnLCAnKTtcbiAgdmFyIGFuaW1hdGlvbkR1cmF0aW9u
cyA9IHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10uc3BsaXQoJywgJyk7XG4gIHZh
ciBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmltYXRpb25EZWxheXMsIGFuaW1hdGlv
bkR1cmF0aW9ucyk7XG5cbiAgdmFyIHR5cGU7XG4gIHZhciB0aW1lb3V0ID0gMDtcbiAgdmFyIHBy
b3BDb3VudCA9IDA7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZXhwZWN0ZWRU
eXBlID09PSBUUkFOU0lUSU9OKSB7XG4gICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xu
ICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG4gICAgICB0aW1lb3V0ID0gdHJhbnNpdGlvblRpbWVv
dXQ7XG4gICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9
XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJT04pIHtcbiAgICBpZiAoYW5p
bWF0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBBTklNQVRJT047XG4gICAgICB0aW1l
b3V0ID0gYW5pbWF0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9IGFuaW1hdGlvbkR1cmF0
aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRpbWVvdXQgPSBNYXRoLm1heCh0
cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7XG4gICAgdHlwZSA9IHRpbWVvdXQg
PiAwXG4gICAgICA/IHRyYW5zaXRpb25UaW1lb3V0ID4gYW5pbWF0aW9uVGltZW91dFxuICAgICAg
ICA/IFRSQU5TSVRJT05cbiAgICAgICAgOiBBTklNQVRJT05cbiAgICAgIDogbnVsbDtcbiAgICBw
cm9wQ291bnQgPSB0eXBlXG4gICAgICA/IHR5cGUgPT09IFRSQU5TSVRJT05cbiAgICAgICAgPyB0
cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxuICAgICAgICA6IGFuaW1hdGlvbkR1cmF0aW9ucy5s
ZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuICB2YXIgaGFzVHJhbnNmb3JtID1cbiAgICB0eXBlID09
PSBUUkFOU0lUSU9OICYmXG4gICAgdHJhbnNmb3JtUkUudGVzdChzdHlsZXNbdHJhbnNpdGlvblBy
b3AgKyAnUHJvcGVydHknXSk7XG4gIHJldHVybiB7XG4gICAgdHlwZTogdHlwZSxcbiAgICB0aW1l
b3V0OiB0aW1lb3V0LFxuICAgIHByb3BDb3VudDogcHJvcENvdW50LFxuICAgIGhhc1RyYW5zZm9y
bTogaGFzVHJhbnNmb3JtXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGltZW91dCAoZGVsYXlzLCBk
dXJhdGlvbnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgd2hpbGUgKGRlbGF5
cy5sZW5ndGggPCBkdXJhdGlvbnMubGVuZ3RoKSB7XG4gICAgZGVsYXlzID0gZGVsYXlzLmNvbmNh
dChkZWxheXMpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGR1cmF0aW9u
cy5tYXAoZnVuY3Rpb24gKGQsIGkpIHtcbiAgICByZXR1cm4gdG9NcyhkKSArIHRvTXMoZGVsYXlz
W2ldKVxuICB9KSlcbn1cblxuZnVuY3Rpb24gdG9NcyAocykge1xuICByZXR1cm4gTnVtYmVyKHMu
c2xpY2UoMCwgLTEpKSAqIDEwMDBcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVudGVyICh2bm9k
ZSwgdG9nZ2xlRGlzcGxheSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG5cbiAgLy8gY2FsbCBs
ZWF2ZSBjYWxsYmFjayBub3dcbiAgaWYgKGlzRGVmKGVsLl9sZWF2ZUNiKSkge1xuICAgIGVsLl9s
ZWF2ZUNiLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgZWwuX2xlYXZlQ2IoKTtcbiAgfVxuXG4gIHZh
ciBkYXRhID0gcmVzb2x2ZVRyYW5zaXRpb24odm5vZGUuZGF0YS50cmFuc2l0aW9uKTtcbiAgaWYg
KGlzVW5kZWYoZGF0YSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2VudGVyQ2IpIHx8IGVsLm5vZGVUeXBlICE9PSAxKSB7
XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3NzID0gZGF0YS5jc3M7XG4gIHZhciB0eXBlID0g
ZGF0YS50eXBlO1xuICB2YXIgZW50ZXJDbGFzcyA9IGRhdGEuZW50ZXJDbGFzcztcbiAgdmFyIGVu
dGVyVG9DbGFzcyA9IGRhdGEuZW50ZXJUb0NsYXNzO1xuICB2YXIgZW50ZXJBY3RpdmVDbGFzcyA9
IGRhdGEuZW50ZXJBY3RpdmVDbGFzcztcbiAgdmFyIGFwcGVhckNsYXNzID0gZGF0YS5hcHBlYXJD
bGFzcztcbiAgdmFyIGFwcGVhclRvQ2xhc3MgPSBkYXRhLmFwcGVhclRvQ2xhc3M7XG4gIHZhciBh
cHBlYXJBY3RpdmVDbGFzcyA9IGRhdGEuYXBwZWFyQWN0aXZlQ2xhc3M7XG4gIHZhciBiZWZvcmVF
bnRlciA9IGRhdGEuYmVmb3JlRW50ZXI7XG4gIHZhciBlbnRlciA9IGRhdGEuZW50ZXI7XG4gIHZh
ciBhZnRlckVudGVyID0gZGF0YS5hZnRlckVudGVyO1xuICB2YXIgZW50ZXJDYW5jZWxsZWQgPSBk
YXRhLmVudGVyQ2FuY2VsbGVkO1xuICB2YXIgYmVmb3JlQXBwZWFyID0gZGF0YS5iZWZvcmVBcHBl
YXI7XG4gIHZhciBhcHBlYXIgPSBkYXRhLmFwcGVhcjtcbiAgdmFyIGFmdGVyQXBwZWFyID0gZGF0
YS5hZnRlckFwcGVhcjtcbiAgdmFyIGFwcGVhckNhbmNlbGxlZCA9IGRhdGEuYXBwZWFyQ2FuY2Vs
bGVkO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9uO1xuXG4gIC8vIGFjdGl2ZUluc3Rh
bmNlIHdpbGwgYWx3YXlzIGJlIHRoZSA8dHJhbnNpdGlvbj4gY29tcG9uZW50IG1hbmFnaW5nIHRo
aXNcbiAgLy8gdHJhbnNpdGlvbi4gT25lIGVkZ2UgY2FzZSB0byBjaGVjayBpcyB3aGVuIHRoZSA8
dHJhbnNpdGlvbj4gaXMgcGxhY2VkXG4gIC8vIGFzIHRoZSByb290IG5vZGUgb2YgYSBjaGlsZCBj
b21wb25lbnQuIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNoZWNrXG4gIC8vIDx0cmFuc2l0aW9u
PidzIHBhcmVudCBmb3IgYXBwZWFyIGNoZWNrLlxuICB2YXIgY29udGV4dCA9IGFjdGl2ZUluc3Rh
bmNlO1xuICB2YXIgdHJhbnNpdGlvbk5vZGUgPSBhY3RpdmVJbnN0YW5jZS4kdm5vZGU7XG4gIHdo
aWxlICh0cmFuc2l0aW9uTm9kZSAmJiB0cmFuc2l0aW9uTm9kZS5wYXJlbnQpIHtcbiAgICB0cmFu
c2l0aW9uTm9kZSA9IHRyYW5zaXRpb25Ob2RlLnBhcmVudDtcbiAgICBjb250ZXh0ID0gdHJhbnNp
dGlvbk5vZGUuY29udGV4dDtcbiAgfVxuXG4gIHZhciBpc0FwcGVhciA9ICFjb250ZXh0Ll9pc01v
dW50ZWQgfHwgIXZub2RlLmlzUm9vdEluc2VydDtcblxuICBpZiAoaXNBcHBlYXIgJiYgIWFwcGVh
ciAmJiBhcHBlYXIgIT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgc3RhcnRDbGFz
cyA9IGlzQXBwZWFyICYmIGFwcGVhckNsYXNzXG4gICAgPyBhcHBlYXJDbGFzc1xuICAgIDogZW50
ZXJDbGFzcztcbiAgdmFyIGFjdGl2ZUNsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyQWN0aXZlQ2xh
c3NcbiAgICA/IGFwcGVhckFjdGl2ZUNsYXNzXG4gICAgOiBlbnRlckFjdGl2ZUNsYXNzO1xuICB2
YXIgdG9DbGFzcyA9IGlzQXBwZWFyICYmIGFwcGVhclRvQ2xhc3NcbiAgICA/IGFwcGVhclRvQ2xh
c3NcbiAgICA6IGVudGVyVG9DbGFzcztcblxuICB2YXIgYmVmb3JlRW50ZXJIb29rID0gaXNBcHBl
YXJcbiAgICA/IChiZWZvcmVBcHBlYXIgfHwgYmVmb3JlRW50ZXIpXG4gICAgOiBiZWZvcmVFbnRl
cjtcbiAgdmFyIGVudGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAodHlwZW9mIGFwcGVhciA9PT0g
J2Z1bmN0aW9uJyA/IGFwcGVhciA6IGVudGVyKVxuICAgIDogZW50ZXI7XG4gIHZhciBhZnRlckVu
dGVySG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYWZ0ZXJBcHBlYXIgfHwgYWZ0ZXJFbnRlcilcbiAg
ICA6IGFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZEhvb2sgPSBpc0FwcGVhclxuICAg
ID8gKGFwcGVhckNhbmNlbGxlZCB8fCBlbnRlckNhbmNlbGxlZClcbiAgICA6IGVudGVyQ2FuY2Vs
bGVkO1xuXG4gIHZhciBleHBsaWNpdEVudGVyRHVyYXRpb24gPSB0b051bWJlcihcbiAgICBpc09i
amVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24uZW50ZXJcbiAgICAgIDogZHVyYXRpb25c
biAgKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBl
eHBsaWNpdEVudGVyRHVyYXRpb24gIT0gbnVsbCkge1xuICAgIGNoZWNrRHVyYXRpb24oZXhwbGlj
aXRFbnRlckR1cmF0aW9uLCAnZW50ZXInLCB2bm9kZSk7XG4gIH1cblxuICB2YXIgZXhwZWN0c0NT
UyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlzSUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9IGdl
dEhvb2tBcmd1bWVudHNMZW5ndGgoZW50ZXJIb29rKTtcblxuICB2YXIgY2IgPSBlbC5fZW50ZXJD
YiA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICByZW1v
dmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHRvQ2xhc3MpO1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNs
YXNzKGVsLCBhY3RpdmVDbGFzcyk7XG4gICAgfVxuICAgIGlmIChjYi5jYW5jZWxsZWQpIHtcbiAg
ICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwg
c3RhcnRDbGFzcyk7XG4gICAgICB9XG4gICAgICBlbnRlckNhbmNlbGxlZEhvb2sgJiYgZW50ZXJD
YW5jZWxsZWRIb29rKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJFbnRlckhvb2sgJiYg
YWZ0ZXJFbnRlckhvb2soZWwpO1xuICAgIH1cbiAgICBlbC5fZW50ZXJDYiA9IG51bGw7XG4gIH0p
O1xuXG4gIGlmICghdm5vZGUuZGF0YS5zaG93KSB7XG4gICAgLy8gcmVtb3ZlIHBlbmRpbmcgbGVh
dmUgZWxlbWVudCBvbiBlbnRlciBieSBpbmplY3RpbmcgYW4gaW5zZXJ0IGhvb2tcbiAgICBtZXJn
ZVZOb2RlSG9vayh2bm9kZS5kYXRhLmhvb2sgfHwgKHZub2RlLmRhdGEuaG9vayA9IHt9KSwgJ2lu
c2VydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xu
ICAgICAgdmFyIHBlbmRpbmdOb2RlID0gcGFyZW50ICYmIHBhcmVudC5fcGVuZGluZyAmJiBwYXJl
bnQuX3BlbmRpbmdbdm5vZGUua2V5XTtcbiAgICAgIGlmIChwZW5kaW5nTm9kZSAmJlxuICAgICAg
ICBwZW5kaW5nTm9kZS50YWcgPT09IHZub2RlLnRhZyAmJlxuICAgICAgICBwZW5kaW5nTm9kZS5l
bG0uX2xlYXZlQ2JcbiAgICAgICkge1xuICAgICAgICBwZW5kaW5nTm9kZS5lbG0uX2xlYXZlQ2Io
KTtcbiAgICAgIH1cbiAgICAgIGVudGVySG9vayAmJiBlbnRlckhvb2soZWwsIGNiKTtcbiAgICB9
KTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGVudGVyIHRyYW5zaXRpb25cbiAgYmVmb3JlRW50ZXJIb29r
ICYmIGJlZm9yZUVudGVySG9vayhlbCk7XG4gIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgYWRkVHJh
bnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWws
IGFjdGl2ZUNsYXNzKTtcbiAgICBuZXh0RnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgYWRkVHJh
bnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhl
bCwgc3RhcnRDbGFzcyk7XG4gICAgICBpZiAoIWNiLmNhbmNlbGxlZCAmJiAhdXNlcldhbnRzQ29u
dHJvbCkge1xuICAgICAgICBpZiAoaXNWYWxpZER1cmF0aW9uKGV4cGxpY2l0RW50ZXJEdXJhdGlv
bikpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdEVudGVyRHVyYXRpb24pO1xu
ICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwg
Y2IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAodm5vZGUuZGF0
YS5zaG93KSB7XG4gICAgdG9nZ2xlRGlzcGxheSAmJiB0b2dnbGVEaXNwbGF5KCk7XG4gICAgZW50
ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICB9XG5cbiAgaWYgKCFleHBlY3RzQ1NTICYm
ICF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgY2IoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsZWF2
ZSAodm5vZGUsIHJtKSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGVudGVy
IGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwuX2VudGVyQ2IpKSB7XG4gICAgZWwuX2VudGVy
Q2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5fZW50ZXJDYigpO1xuICB9XG5cbiAgdmFyIGRh
dGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNV
bmRlZihkYXRhKSkge1xuICAgIHJldHVybiBybSgpXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgaWYgKGlzRGVmKGVsLl9sZWF2ZUNiKSB8fCBlbC5ub2RlVHlwZSAhPT0gMSkg
e1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNzcyA9IGRhdGEuY3NzO1xuICB2YXIgdHlwZSA9
IGRhdGEudHlwZTtcbiAgdmFyIGxlYXZlQ2xhc3MgPSBkYXRhLmxlYXZlQ2xhc3M7XG4gIHZhciBs
ZWF2ZVRvQ2xhc3MgPSBkYXRhLmxlYXZlVG9DbGFzcztcbiAgdmFyIGxlYXZlQWN0aXZlQ2xhc3Mg
PSBkYXRhLmxlYXZlQWN0aXZlQ2xhc3M7XG4gIHZhciBiZWZvcmVMZWF2ZSA9IGRhdGEuYmVmb3Jl
TGVhdmU7XG4gIHZhciBsZWF2ZSA9IGRhdGEubGVhdmU7XG4gIHZhciBhZnRlckxlYXZlID0gZGF0
YS5hZnRlckxlYXZlO1xuICB2YXIgbGVhdmVDYW5jZWxsZWQgPSBkYXRhLmxlYXZlQ2FuY2VsbGVk
O1xuICB2YXIgZGVsYXlMZWF2ZSA9IGRhdGEuZGVsYXlMZWF2ZTtcbiAgdmFyIGR1cmF0aW9uID0g
ZGF0YS5kdXJhdGlvbjtcblxuICB2YXIgZXhwZWN0c0NTUyA9IGNzcyAhPT0gZmFsc2UgJiYgIWlz
SUU5O1xuICB2YXIgdXNlcldhbnRzQ29udHJvbCA9IGdldEhvb2tBcmd1bWVudHNMZW5ndGgobGVh
dmUpO1xuXG4gIHZhciBleHBsaWNpdExlYXZlRHVyYXRpb24gPSB0b051bWJlcihcbiAgICBpc09i
amVjdChkdXJhdGlvbilcbiAgICAgID8gZHVyYXRpb24ubGVhdmVcbiAgICAgIDogZHVyYXRpb25c
biAgKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBp
c0RlZihleHBsaWNpdExlYXZlRHVyYXRpb24pKSB7XG4gICAgY2hlY2tEdXJhdGlvbihleHBsaWNp
dExlYXZlRHVyYXRpb24sICdsZWF2ZScsIHZub2RlKTtcbiAgfVxuXG4gIHZhciBjYiA9IGVsLl9s
ZWF2ZUNiID0gb25jZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGVsLnBhcmVudE5vZGUgJiYgZWwu
cGFyZW50Tm9kZS5fcGVuZGluZykge1xuICAgICAgZWwucGFyZW50Tm9kZS5fcGVuZGluZ1t2bm9k
ZS5rZXldID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJlbW92
ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcbiAgICAgIHJlbW92ZVRyYW5zaXRp
b25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgfVxuICAgIGlmIChjYi5jYW5jZWxs
ZWQpIHtcbiAgICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25D
bGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICB9XG4gICAgICBsZWF2ZUNhbmNlbGxlZCAmJiBs
ZWF2ZUNhbmNlbGxlZChlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJtKCk7XG4gICAgICBhZnRl
ckxlYXZlICYmIGFmdGVyTGVhdmUoZWwpO1xuICAgIH1cbiAgICBlbC5fbGVhdmVDYiA9IG51bGw7
XG4gIH0pO1xuXG4gIGlmIChkZWxheUxlYXZlKSB7XG4gICAgZGVsYXlMZWF2ZShwZXJmb3JtTGVh
dmUpO1xuICB9IGVsc2Uge1xuICAgIHBlcmZvcm1MZWF2ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24g
cGVyZm9ybUxlYXZlICgpIHtcbiAgICAvLyB0aGUgZGVsYXllZCBsZWF2ZSBtYXkgaGF2ZSBhbHJl
YWR5IGJlZW4gY2FuY2VsbGVkXG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgcmV0dXJu
XG4gICAgfVxuICAgIC8vIHJlY29yZCBsZWF2aW5nIGVsZW1lbnRcbiAgICBpZiAoIXZub2RlLmRh
dGEuc2hvdykge1xuICAgICAgKGVsLnBhcmVudE5vZGUuX3BlbmRpbmcgfHwgKGVsLnBhcmVudE5v
ZGUuX3BlbmRpbmcgPSB7fSkpWyh2bm9kZS5rZXkpXSA9IHZub2RlO1xuICAgIH1cbiAgICBiZWZv
cmVMZWF2ZSAmJiBiZWZvcmVMZWF2ZShlbCk7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAg
IGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICBhZGRUcmFuc2l0aW9u
Q2xhc3MoZWwsIGxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgICAgbmV4dEZyYW1lKGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAg
ICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgICBpZiAoIWNi
LmNhbmNlbGxlZCAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICAgIGlmIChpc1ZhbGlk
RHVyYXRpb24oZXhwbGljaXRMZWF2ZUR1cmF0aW9uKSkge1xuICAgICAgICAgICAgc2V0VGltZW91
dChjYiwgZXhwbGljaXRMZWF2ZUR1cmF0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBjYik7XG4gICAgICAgICAgfVxuICAg
ICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGVhdmUgJiYgbGVhdmUoZWwsIGNiKTtcbiAg
ICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICAgIGNiKCk7XG4g
ICAgfVxuICB9XG59XG5cbi8vIG9ubHkgdXNlZCBpbiBkZXYgbW9kZVxuZnVuY3Rpb24gY2hlY2tE
dXJhdGlvbiAodmFsLCBuYW1lLCB2bm9kZSkge1xuICBpZiAodHlwZW9mIHZhbCAhPT0gJ251bWJl
cicpIHtcbiAgICB3YXJuKFxuICAgICAgXCI8dHJhbnNpdGlvbj4gZXhwbGljaXQgXCIgKyBuYW1l
ICsgXCIgZHVyYXRpb24gaXMgbm90IGEgdmFsaWQgbnVtYmVyIC0gXCIgK1xuICAgICAgXCJnb3Qg
XCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsKSkgKyBcIi5cIixcbiAgICAgIHZub2RlLmNvbnRleHRc
biAgICApO1xuICB9IGVsc2UgaWYgKGlzTmFOKHZhbCkpIHtcbiAgICB3YXJuKFxuICAgICAgXCI8
dHJhbnNpdGlvbj4gZXhwbGljaXQgXCIgKyBuYW1lICsgXCIgZHVyYXRpb24gaXMgTmFOIC0gXCIg
K1xuICAgICAgJ3RoZSBkdXJhdGlvbiBleHByZXNzaW9uIG1pZ2h0IGJlIGluY29ycmVjdC4nLFxu
ICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNWYWxpZER1
cmF0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmICFpc05h
Tih2YWwpXG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgdHJhbnNpdGlvbiBob29rJ3MgYXJndW1l
bnQgbGVuZ3RoLiBUaGUgaG9vayBtYXkgYmU6XG4gKiAtIGEgbWVyZ2VkIGhvb2sgKGludm9rZXIp
IHdpdGggdGhlIG9yaWdpbmFsIGluIC5mbnNcbiAqIC0gYSB3cmFwcGVkIGNvbXBvbmVudCBtZXRo
b2QgKGNoZWNrIC5fbGVuZ3RoKVxuICogLSBhIHBsYWluIGZ1bmN0aW9uICgubGVuZ3RoKVxuICov
XG5mdW5jdGlvbiBnZXRIb29rQXJndW1lbnRzTGVuZ3RoIChmbikge1xuICBpZiAoaXNVbmRlZihm
bikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICB2YXIgaW52b2tlckZucyA9IGZuLmZucztc
biAgaWYgKGlzRGVmKGludm9rZXJGbnMpKSB7XG4gICAgLy8gaW52b2tlclxuICAgIHJldHVybiBn
ZXRIb29rQXJndW1lbnRzTGVuZ3RoKFxuICAgICAgQXJyYXkuaXNBcnJheShpbnZva2VyRm5zKVxu
ICAgICAgICA/IGludm9rZXJGbnNbMF1cbiAgICAgICAgOiBpbnZva2VyRm5zXG4gICAgKVxuICB9
IGVsc2Uge1xuICAgIHJldHVybiAoZm4uX2xlbmd0aCB8fCBmbi5sZW5ndGgpID4gMVxuICB9XG59
XG5cbmZ1bmN0aW9uIF9lbnRlciAoXywgdm5vZGUpIHtcbiAgaWYgKHZub2RlLmRhdGEuc2hvdyAh
PT0gdHJ1ZSkge1xuICAgIGVudGVyKHZub2RlKTtcbiAgfVxufVxuXG52YXIgdHJhbnNpdGlvbiA9
IGluQnJvd3NlciA/IHtcbiAgY3JlYXRlOiBfZW50ZXIsXG4gIGFjdGl2YXRlOiBfZW50ZXIsXG4g
IHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlJCQxICh2bm9kZSwgcm0pIHtcbiAgICAvKiBpc3RhbmJ1
bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2bm9kZS5kYXRhLnNob3cgIT09IHRydWUpIHtcbiAg
ICAgIGxlYXZlKHZub2RlLCBybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJtKCk7XG4gICAgfVxu
ICB9XG59IDoge307XG5cbnZhciBwbGF0Zm9ybU1vZHVsZXMgPSBbXG4gIGF0dHJzLFxuICBrbGFz
cyxcbiAgZXZlbnRzLFxuICBkb21Qcm9wcyxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb25cbl07XG5c
bi8qICAqL1xuXG4vLyB0aGUgZGlyZWN0aXZlIG1vZHVsZSBzaG91bGQgYmUgYXBwbGllZCBsYXN0
LCBhZnRlciBhbGxcbi8vIGJ1aWx0LWluIG1vZHVsZXMgaGF2ZSBiZWVuIGFwcGxpZWQuXG52YXIg
bW9kdWxlcyA9IHBsYXRmb3JtTW9kdWxlcy5jb25jYXQoYmFzZU1vZHVsZXMpO1xuXG52YXIgcGF0
Y2ggPSBjcmVhdGVQYXRjaEZ1bmN0aW9uKHsgbm9kZU9wczogbm9kZU9wcywgbW9kdWxlczogbW9k
dWxlcyB9KTtcblxuLyoqXG4gKiBOb3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBm
bG93IGRvZXNuJ3QgbGlrZSBhdHRhY2hpbmdcbiAqIHByb3BlcnRpZXMgdG8gRWxlbWVudHMuXG4g
Ki9cblxudmFyIGlzVGV4dElucHV0VHlwZSA9IG1ha2VNYXAoJ3RleHQsbnVtYmVyLHBhc3N3b3Jk
LHNlYXJjaCxlbWFpbCx0ZWwsdXJsJyk7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYg
KGlzSUU5KSB7XG4gIC8vIGh0dHA6Ly93d3cubWF0dHM0MTEuY29tL3Bvc3QvaW50ZXJuZXQtZXhw
bG9yZXItOS1vbmlucHV0L1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25j
aGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dDtcbiAgICBpZiAoZWwgJiYgZWwudm1vZGVsKSB7XG4gICAgICB0cmlnZ2VyKGVsLCAnaW5wdXQn
KTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgbW9kZWwkMSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0
aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09
PSAnc2VsZWN0Jykge1xuICAgICAgdmFyIGNiID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRT
ZWxlY3RlZChlbCwgYmluZGluZywgdm5vZGUuY29udGV4dCk7XG4gICAgICB9O1xuICAgICAgY2Io
KTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgfHwgaXNF
ZGdlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgICAgfVxuICAgICAgZWwuX3ZP
cHRpb25zID0gW10ubWFwLmNhbGwoZWwub3B0aW9ucywgZ2V0VmFsdWUpO1xuICAgIH0gZWxzZSBp
ZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGlzVGV4dElucHV0VHlwZShlbC50eXBlKSkg
e1xuICAgICAgZWwuX3ZNb2RpZmllcnMgPSBiaW5kaW5nLm1vZGlmaWVycztcbiAgICAgIGlmICgh
YmluZGluZy5tb2RpZmllcnMubGF6eSkge1xuICAgICAgICAvLyBTYWZhcmkgPCAxMC4yICYgVUlX
ZWJWaWV3IGRvZXNuJ3QgZmlyZSBjb21wb3NpdGlvbmVuZCB3aGVuXG4gICAgICAgIC8vIHN3aXRj
aGluZyBmb2N1cyBiZWZvcmUgY29uZmlybWluZyBjb21wb3NpdGlvbiBjaG9pY2VcbiAgICAgICAg
Ly8gdGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBzb21lIGJyb3dzZXJzIGUuZy4gaU9T
IENocm9tZVxuICAgICAgICAvLyBmaXJlcyBcImNoYW5nZVwiIGluc3RlYWQgb2YgXCJpbnB1dFwi
IG9uIGF1dG9jb21wbGV0ZS5cbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywg
b25Db21wb3NpdGlvbkVuZCk7XG4gICAgICAgIGlmICghaXNBbmRyb2lkKSB7XG4gICAgICAgICAg
ZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25zdGFydCcsIG9uQ29tcG9zaXRpb25TdGFy
dCk7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCBvbkNv
bXBvc2l0aW9uRW5kKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgICAgICAgaWYgKGlzSUU5KSB7XG4gICAgICAgICAgZWwudm1vZGVsID0gdHJ1ZTtcbiAg
ICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50VXBkYXRlZDogZnVuY3Rp
b24gY29tcG9uZW50VXBkYXRlZCAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgaWYgKHZub2Rl
LnRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIHNldFNlbGVjdGVkKGVsLCBiaW5kaW5nLCB2bm9k
ZS5jb250ZXh0KTtcbiAgICAgIC8vIGluIGNhc2UgdGhlIG9wdGlvbnMgcmVuZGVyZWQgYnkgdi1m
b3IgaGF2ZSBjaGFuZ2VkLFxuICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoZSB2YWx1ZSBp
cyBvdXQtb2Ytc3luYyB3aXRoIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuICAgICAgLy8gZGV0ZWN0
IHN1Y2ggY2FzZXMgYW5kIGZpbHRlciBvdXQgdmFsdWVzIHRoYXQgbm8gbG9uZ2VyIGhhcyBhIG1h
dGNoaW5nXG4gICAgICAvLyBvcHRpb24gaW4gdGhlIERPTS5cbiAgICAgIHZhciBwcmV2T3B0aW9u
cyA9IGVsLl92T3B0aW9ucztcbiAgICAgIHZhciBjdXJPcHRpb25zID0gZWwuX3ZPcHRpb25zID0g
W10ubWFwLmNhbGwoZWwub3B0aW9ucywgZ2V0VmFsdWUpO1xuICAgICAgaWYgKGN1ck9wdGlvbnMu
c29tZShmdW5jdGlvbiAobywgaSkgeyByZXR1cm4gIWxvb3NlRXF1YWwobywgcHJldk9wdGlvbnNb
aV0pOyB9KSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCAnY2hhbmdlJyk7XG4gICAgICB9XG4gICAg
fVxuICB9XG59O1xuXG5mdW5jdGlvbiBzZXRTZWxlY3RlZCAoZWwsIGJpbmRpbmcsIHZtKSB7XG4g
IHZhciB2YWx1ZSA9IGJpbmRpbmcudmFsdWU7XG4gIHZhciBpc011bHRpcGxlID0gZWwubXVsdGlw
bGU7XG4gIGlmIChpc011bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiPHNl
bGVjdCBtdWx0aXBsZSB2LW1vZGVsPVxcXCJcIiArIChiaW5kaW5nLmV4cHJlc3Npb24pICsgXCJc
XFwiPiBcIiArXG4gICAgICBcImV4cGVjdHMgYW4gQXJyYXkgdmFsdWUgZm9yIGl0cyBiaW5kaW5n
LCBidXQgZ290IFwiICsgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xp
Y2UoOCwgLTEpKSxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2Vs
ZWN0ZWQsIG9wdGlvbjtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBlbC5vcHRpb25zLmxlbmd0aDsg
aSA8IGw7IGkrKykge1xuICAgIG9wdGlvbiA9IGVsLm9wdGlvbnNbaV07XG4gICAgaWYgKGlzTXVs
dGlwbGUpIHtcbiAgICAgIHNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBnZXRWYWx1ZShv
cHRpb24pKSA+IC0xO1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtc
biAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNl
IHtcbiAgICAgIGlmIChsb29zZUVxdWFsKGdldFZhbHVlKG9wdGlvbiksIHZhbHVlKSkge1xuICAg
ICAgICBpZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSkge1xuICAgICAgICAgIGVsLnNlbGVjdGVk
SW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAg
fVxuICBpZiAoIWlzTXVsdGlwbGUpIHtcbiAgICBlbC5zZWxlY3RlZEluZGV4ID0gLTE7XG4gIH1c
bn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG9wdGlvbikge1xuICByZXR1cm4gJ192YWx1ZScgaW4g
b3B0aW9uXG4gICAgPyBvcHRpb24uX3ZhbHVlXG4gICAgOiBvcHRpb24udmFsdWVcbn1cblxuZnVu
Y3Rpb24gb25Db21wb3NpdGlvblN0YXJ0IChlKSB7XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IHRy
dWU7XG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQgKGUpIHtcbiAgLy8gcHJldmVudCB0
cmlnZ2VyaW5nIGFuIGlucHV0IGV2ZW50IGZvciBubyByZWFzb25cbiAgaWYgKCFlLnRhcmdldC5j
b21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgZS50YXJnZXQuY29tcG9zaW5nID0gZmFsc2U7XG4gIHRy
aWdnZXIoZS50YXJnZXQsICdpbnB1dCcpO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyIChlbCwgdHlw
ZSkge1xuICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gIGUu
aW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpO1xuICBlbC5kaXNwYXRjaEV2ZW50KGUpO1xufVxu
XG4vKiAgKi9cblxuLy8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBwb3NzaWJsZSB0cmFuc2l0aW9u
IGRlZmluZWQgaW5zaWRlIHRoZSBjb21wb25lbnQgcm9vdFxuZnVuY3Rpb24gbG9jYXRlTm9kZSAo
dm5vZGUpIHtcbiAgcmV0dXJuIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmICghdm5vZGUuZGF0
YSB8fCAhdm5vZGUuZGF0YS50cmFuc2l0aW9uKVxuICAgID8gbG9jYXRlTm9kZSh2bm9kZS5jb21w
b25lbnRJbnN0YW5jZS5fdm5vZGUpXG4gICAgOiB2bm9kZVxufVxuXG52YXIgc2hvdyA9IHtcbiAg
YmluZDogZnVuY3Rpb24gYmluZCAoZWwsIHJlZiwgdm5vZGUpIHtcbiAgICB2YXIgdmFsdWUgPSBy
ZWYudmFsdWU7XG5cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFu
c2l0aW9uJCQxID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgdmFy
IG9yaWdpbmFsRGlzcGxheSA9IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA9XG4gICAgICBlbC5zdHls
ZS5kaXNwbGF5ID09PSAnbm9uZScgPyAnJyA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAgaWYgKHZh
bHVlICYmIHRyYW5zaXRpb24kJDEpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4g
ICAgICBlbnRlcih2bm9kZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBlbC5zdHlsZS5kaXNwbGF5
ID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0
eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IG9yaWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9XG4g
IH0sXG5cbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUgKGVsLCByZWYsIHZub2RlKSB7XG4gICAg
dmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuICAgIHZhciBvbGRWYWx1ZSA9IHJlZi5vbGRWYWx1ZTtc
blxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh2YWx1ZSA9PT0gb2xkVmFs
dWUpIHsgcmV0dXJuIH1cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0
cmFuc2l0aW9uJCQxID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAg
aWYgKHRyYW5zaXRpb24kJDEpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4gICAg
ICBpZiAodmFsdWUpIHtcbiAgICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICB9
KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlYXZlKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4g
ICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfSk7XG4gICAgICB9
XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl9fdk9y
aWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdW5iaW5kOiBmdW5jdGlv
biB1bmJpbmQgKFxuICAgIGVsLFxuICAgIGJpbmRpbmcsXG4gICAgdm5vZGUsXG4gICAgb2xkVm5v
ZGUsXG4gICAgaXNEZXN0cm95XG4gICkge1xuICAgIGlmICghaXNEZXN0cm95KSB7XG4gICAgICBl
bC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgIH1cbiAgfVxufTtc
blxudmFyIHBsYXRmb3JtRGlyZWN0aXZlcyA9IHtcbiAgbW9kZWw6IG1vZGVsJDEsXG4gIHNob3c6
IHNob3dcbn07XG5cbi8qICAqL1xuXG4vLyBQcm92aWRlcyB0cmFuc2l0aW9uIHN1cHBvcnQgZm9y
IGEgc2luZ2xlIGVsZW1lbnQvY29tcG9uZW50LlxuLy8gc3VwcG9ydHMgdHJhbnNpdGlvbiBtb2Rl
IChvdXQtaW4gLyBpbi1vdXQpXG5cbnZhciB0cmFuc2l0aW9uUHJvcHMgPSB7XG4gIG5hbWU6IFN0
cmluZyxcbiAgYXBwZWFyOiBCb29sZWFuLFxuICBjc3M6IEJvb2xlYW4sXG4gIG1vZGU6IFN0cmlu
ZyxcbiAgdHlwZTogU3RyaW5nLFxuICBlbnRlckNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQ2xhc3M6
IFN0cmluZyxcbiAgZW50ZXJUb0NsYXNzOiBTdHJpbmcsXG4gIGxlYXZlVG9DbGFzczogU3RyaW5n
LFxuICBlbnRlckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQWN0aXZlQ2xhc3M6IFN0cmlu
ZyxcbiAgYXBwZWFyQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxc
biAgYXBwZWFyVG9DbGFzczogU3RyaW5nLFxuICBkdXJhdGlvbjogW051bWJlciwgU3RyaW5nLCBP
YmplY3RdXG59O1xuXG4vLyBpbiBjYXNlIHRoZSBjaGlsZCBpcyBhbHNvIGFuIGFic3RyYWN0IGNv
bXBvbmVudCwgZS5nLiA8a2VlcC1hbGl2ZT5cbi8vIHdlIHdhbnQgdG8gcmVjdXJzaXZlbHkgcmV0
cmlldmUgdGhlIHJlYWwgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkXG5mdW5jdGlvbiBnZXRSZWFs
Q2hpbGQgKHZub2RlKSB7XG4gIHZhciBjb21wT3B0aW9ucyA9IHZub2RlICYmIHZub2RlLmNvbXBv
bmVudE9wdGlvbnM7XG4gIGlmIChjb21wT3B0aW9ucyAmJiBjb21wT3B0aW9ucy5DdG9yLm9wdGlv
bnMuYWJzdHJhY3QpIHtcbiAgICByZXR1cm4gZ2V0UmVhbENoaWxkKGdldEZpcnN0Q29tcG9uZW50
Q2hpbGQoY29tcE9wdGlvbnMuY2hpbGRyZW4pKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB2bm9k
ZVxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUcmFuc2l0aW9uRGF0YSAoY29tcCkge1xuICB2
YXIgZGF0YSA9IHt9O1xuICB2YXIgb3B0aW9ucyA9IGNvbXAuJG9wdGlvbnM7XG4gIC8vIHByb3Bz
XG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLnByb3BzRGF0YSkge1xuICAgIGRhdGFba2V5XSA9
IGNvbXBba2V5XTtcbiAgfVxuICAvLyBldmVudHMuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzIGFu
ZCBwYXNzIHRoZW0gZGlyZWN0bHkgdG8gdGhlIHRyYW5zaXRpb24gbWV0aG9kc1xuICB2YXIgbGlz
dGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBmb3IgKHZhciBrZXkkMSBpbiBs
aXN0ZW5lcnMpIHtcbiAgICBkYXRhW2NhbWVsaXplKGtleSQxKV0gPSBsaXN0ZW5lcnNba2V5JDFd
O1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHBsYWNlaG9sZGVyIChoLCByYXdD
aGlsZCkge1xuICBpZiAoL1xcZC1rZWVwLWFsaXZlJC8udGVzdChyYXdDaGlsZC50YWcpKSB7XG4g
ICAgcmV0dXJuIGgoJ2tlZXAtYWxpdmUnLCB7XG4gICAgICBwcm9wczogcmF3Q2hpbGQuY29tcG9u
ZW50T3B0aW9ucy5wcm9wc0RhdGFcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhcmVu
dFRyYW5zaXRpb24gKHZub2RlKSB7XG4gIHdoaWxlICgodm5vZGUgPSB2bm9kZS5wYXJlbnQpKSB7
XG4gICAgaWYgKHZub2RlLmRhdGEudHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIHRydWVcbiAg
ICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTYW1lQ2hpbGQgKGNoaWxkLCBvbGRDaGlsZCkge1xu
ICByZXR1cm4gb2xkQ2hpbGQua2V5ID09PSBjaGlsZC5rZXkgJiYgb2xkQ2hpbGQudGFnID09PSBj
aGlsZC50YWdcbn1cblxuZnVuY3Rpb24gaXNBc3luY1BsYWNlaG9sZGVyIChub2RlKSB7XG4gIHJl
dHVybiBub2RlLmlzQ29tbWVudCAmJiBub2RlLmFzeW5jRmFjdG9yeVxufVxuXG52YXIgVHJhbnNp
dGlvbiA9IHtcbiAgbmFtZTogJ3RyYW5zaXRpb24nLFxuICBwcm9wczogdHJhbnNpdGlvblByb3Bz
LFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCkge1xu
ICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kb3B0aW9u
cy5fcmVuZGVyQ2hpbGRyZW47XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0dXJuXG4g
ICAgfVxuXG4gICAgLy8gZmlsdGVyIG91dCB0ZXh0IG5vZGVzIChwb3NzaWJsZSB3aGl0ZXNwYWNl
cylcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykgeyByZXR1cm4g
Yy50YWcgfHwgaXNBc3luY1BsYWNlaG9sZGVyKGMpOyB9KTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25v
cmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAg
fVxuXG4gICAgLy8gd2FybiBtdWx0aXBsZSBlbGVtZW50c1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAg
IHdhcm4oXG4gICAgICAgICc8dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmds
ZSBlbGVtZW50LiBVc2UgJyArXG4gICAgICAgICc8dHJhbnNpdGlvbi1ncm91cD4gZm9yIGxpc3Rz
LicsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgbW9k
ZSA9IHRoaXMubW9kZTtcblxuICAgIC8vIHdhcm4gaW52YWxpZCBtb2RlXG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1vZGUgJiYgbW9kZSAh
PT0gJ2luLW91dCcgJiYgbW9kZSAhPT0gJ291dC1pbidcbiAgICApIHtcbiAgICAgIHdhcm4oXG4g
ICAgICAgICdpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAnICsgbW9kZSxcbiAgICAgICAgdGhp
cy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciByYXdDaGlsZCA9IGNoaWxkcmVu
WzBdO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhIGNvbXBvbmVudCByb290IG5vZGUgYW5kIHRoZSBj
b21wb25lbnQnc1xuICAgIC8vIHBhcmVudCBjb250YWluZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0
aW9uLCBza2lwLlxuICAgIGlmIChoYXNQYXJlbnRUcmFuc2l0aW9uKHRoaXMuJHZub2RlKSkge1xu
ICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBk
YXRhIHRvIGNoaWxkXG4gICAgLy8gdXNlIGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFj
dCBjb21wb25lbnRzIGUuZy4ga2VlcC1hbGl2ZVxuICAgIHZhciBjaGlsZCA9IGdldFJlYWxDaGls
ZChyYXdDaGlsZCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGls
ZCkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xlYXZp
bmcpIHtcbiAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICB9XG5cbiAg
ICAvLyBlbnN1cmUgYSBrZXkgdGhhdCBpcyB1bmlxdWUgdG8gdGhlIHZub2RlIHR5cGUgYW5kIHRv
IHRoaXMgdHJhbnNpdGlvblxuICAgIC8vIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBrZXkgd2ls
bCBiZSB1c2VkIHRvIHJlbW92ZSBwZW5kaW5nIGxlYXZpbmcgbm9kZXNcbiAgICAvLyBkdXJpbmcg
ZW50ZXJpbmcuXG4gICAgdmFyIGlkID0gXCJfX3RyYW5zaXRpb24tXCIgKyAodGhpcy5fdWlkKSAr
IFwiLVwiO1xuICAgIGNoaWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsXG4gICAgICA/IGNoaWxk
LmlzQ29tbWVudFxuICAgICAgICA/IGlkICsgJ2NvbW1lbnQnXG4gICAgICAgIDogaWQgKyBjaGls
ZC50YWdcbiAgICAgIDogaXNQcmltaXRpdmUoY2hpbGQua2V5KVxuICAgICAgICA/IChTdHJpbmco
Y2hpbGQua2V5KS5pbmRleE9mKGlkKSA9PT0gMCA/IGNoaWxkLmtleSA6IGlkICsgY2hpbGQua2V5
KVxuICAgICAgICA6IGNoaWxkLmtleTtcblxuICAgIHZhciBkYXRhID0gKGNoaWxkLmRhdGEgfHwg
KGNoaWxkLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhp
cyk7XG4gICAgdmFyIG9sZFJhd0NoaWxkID0gdGhpcy5fdm5vZGU7XG4gICAgdmFyIG9sZENoaWxk
ID0gZ2V0UmVhbENoaWxkKG9sZFJhd0NoaWxkKTtcblxuICAgIC8vIG1hcmsgdi1zaG93XG4gICAg
Ly8gc28gdGhhdCB0aGUgdHJhbnNpdGlvbiBtb2R1bGUgY2FuIGhhbmQgb3ZlciB0aGUgY29udHJv
bCB0byB0aGUgZGlyZWN0aXZlXG4gICAgaWYgKGNoaWxkLmRhdGEuZGlyZWN0aXZlcyAmJiBjaGls
ZC5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbiAoZCkgeyByZXR1cm4gZC5uYW1lID09PSAn
c2hvdyc7IH0pKSB7XG4gICAgICBjaGlsZC5kYXRhLnNob3cgPSB0cnVlO1xuICAgIH1cblxuICAg
IGlmIChcbiAgICAgIG9sZENoaWxkICYmXG4gICAgICBvbGRDaGlsZC5kYXRhICYmXG4gICAgICAh
aXNTYW1lQ2hpbGQoY2hpbGQsIG9sZENoaWxkKSAmJlxuICAgICAgIWlzQXN5bmNQbGFjZWhvbGRl
cihvbGRDaGlsZClcbiAgICApIHtcbiAgICAgIC8vIHJlcGxhY2Ugb2xkIGNoaWxkIHRyYW5zaXRp
b24gZGF0YSB3aXRoIGZyZXNoIG9uZVxuICAgICAgLy8gaW1wb3J0YW50IGZvciBkeW5hbWljIHRy
YW5zaXRpb25zIVxuICAgICAgdmFyIG9sZERhdGEgPSBvbGRDaGlsZCAmJiAob2xkQ2hpbGQuZGF0
YS50cmFuc2l0aW9uID0gZXh0ZW5kKHt9LCBkYXRhKSk7XG4gICAgICAvLyBoYW5kbGUgdHJhbnNp
dGlvbiBtb2RlXG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAgICAgLy8gcmV0
dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVz
XG4gICAgICAgIHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhv
bGREYXRhLCAnYWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzJDEuX2xl
YXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7XG4gICAgICAg
IH0pO1xuICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgICB9IGVs
c2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIGlmIChpc0FzeW5jUGxhY2Vob2xk
ZXIoY2hpbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIG9sZFJhd0NoaWxkXG4gICAgICAgIH1cbiAg
ICAgICAgdmFyIGRlbGF5ZWRMZWF2ZTtcbiAgICAgICAgdmFyIHBlcmZvcm1MZWF2ZSA9IGZ1bmN0
aW9uICgpIHsgZGVsYXllZExlYXZlKCk7IH07XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEs
ICdhZnRlckVudGVyJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0
YSwgJ2VudGVyQ2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhv
b2sob2xkRGF0YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVhdmUpIHsgZGVsYXllZExlYXZl
ID0gbGVhdmU7IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByYXdDaGlsZFxuICB9
XG59O1xuXG4vKiAgKi9cblxuLy8gUHJvdmlkZXMgdHJhbnNpdGlvbiBzdXBwb3J0IGZvciBsaXN0
IGl0ZW1zLlxuLy8gc3VwcG9ydHMgbW92ZSB0cmFuc2l0aW9ucyB1c2luZyB0aGUgRkxJUCB0ZWNo
bmlxdWUuXG5cbi8vIEJlY2F1c2UgdGhlIHZkb20ncyBjaGlsZHJlbiB1cGRhdGUgYWxnb3JpdGht
IGlzIFwidW5zdGFibGVcIiAtIGkuZS5cbi8vIGl0IGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSByZWxh
dGl2ZSBwb3NpdGlvbmluZyBvZiByZW1vdmVkIGVsZW1lbnRzLFxuLy8gd2UgZm9yY2UgdHJhbnNp
dGlvbi1ncm91cCB0byB1cGRhdGUgaXRzIGNoaWxkcmVuIGludG8gdHdvIHBhc3Nlczpcbi8vIGlu
IHRoZSBmaXJzdCBwYXNzLCB3ZSByZW1vdmUgYWxsIG5vZGVzIHRoYXQgbmVlZCB0byBiZSByZW1v
dmVkLFxuLy8gdHJpZ2dlcmluZyB0aGVpciBsZWF2aW5nIHRyYW5zaXRpb247IGluIHRoZSBzZWNv
bmQgcGFzcywgd2UgaW5zZXJ0L21vdmVcbi8vIGludG8gdGhlIGZpbmFsIGRlc2lyZWQgc3RhdGUu
IFRoaXMgd2F5IGluIHRoZSBzZWNvbmQgcGFzcyByZW1vdmVkXG4vLyBub2RlcyB3aWxsIHJlbWFp
biB3aGVyZSB0aGV5IHNob3VsZCBiZS5cblxudmFyIHByb3BzID0gZXh0ZW5kKHtcbiAgdGFnOiBT
dHJpbmcsXG4gIG1vdmVDbGFzczogU3RyaW5nXG59LCB0cmFuc2l0aW9uUHJvcHMpO1xuXG5kZWxl
dGUgcHJvcHMubW9kZTtcblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IHtcbiAgcHJvcHM6IHByb3Bz
LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRhZyA9IHRoaXMu
dGFnIHx8IHRoaXMuJHZub2RlLmRhdGEudGFnIHx8ICdzcGFuJztcbiAgICB2YXIgbWFwID0gT2Jq
ZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRy
ZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgIHZhciByYXdDaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRl
ZmF1bHQgfHwgW107XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAg
IHZhciB0cmFuc2l0aW9uRGF0YSA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcblxuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZh
ciBjID0gcmF3Q2hpbGRyZW5baV07XG4gICAgICBpZiAoYy50YWcpIHtcbiAgICAgICAgaWYgKGMu
a2V5ICE9IG51bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0JykgIT09IDApIHtc
biAgICAgICAgICBjaGlsZHJlbi5wdXNoKGMpO1xuICAgICAgICAgIG1hcFtjLmtleV0gPSBjXG4g
ICAgICAgICAgOyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IHRyYW5zaXRp
b25EYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0aW9ucztcbiAg
ICAgICAgICB2YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRz
LnRhZyB8fCAnJykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9uLWdyb3Vw
PiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAgICAgICAg
fVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHZhciBr
ZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSQxID0g
MDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFyIGMkMSA9
IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0gdHJhbnNp
dGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBrZXB0LnB1
c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2goYyQxKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGwsIGtlcHQp
O1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0
YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIGJlZm9yZVVwZGF0ZTogZnVuY3Rpb24gYmVm
b3JlVXBkYXRlICgpIHtcbiAgICAvLyBmb3JjZSByZW1vdmluZyBwYXNzXG4gICAgdGhpcy5fX3Bh
dGNoX18oXG4gICAgICB0aGlzLl92bm9kZSxcbiAgICAgIHRoaXMua2VwdCxcbiAgICAgIGZhbHNl
LCAvLyBoeWRyYXRpbmdcbiAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFudCwgYXZv
aWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICk7XG4gICAgdGhpcy5fdm5vZGUgPSB0aGlzLmtl
cHQ7XG4gIH0sXG5cbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCAoKSB7XG4gICAgdmFyIGNo
aWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW47XG4gICAgdmFyIG1vdmVDbGFzcyA9IHRoaXMubW92
ZUNsYXNzIHx8ICgodGhpcy5uYW1lIHx8ICd2JykgKyAnLW1vdmUnKTtcbiAgICBpZiAoIWNoaWxk
cmVuLmxlbmd0aCB8fCAhdGhpcy5oYXNNb3ZlKGNoaWxkcmVuWzBdLmVsbSwgbW92ZUNsYXNzKSkg
e1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2UgZGl2aWRlIHRoZSB3b3JrIGludG8g
dGhyZWUgbG9vcHMgdG8gYXZvaWQgbWl4aW5nIERPTSByZWFkcyBhbmQgd3JpdGVzXG4gICAgLy8g
aW4gZWFjaCBpdGVyYXRpb24gLSB3aGljaCBoZWxwcyBwcmV2ZW50IGxheW91dCB0aHJhc2hpbmcu
XG4gICAgY2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgY2hpbGRyZW4uZm9y
RWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChhcHBseVRyYW5zbGF0
aW9uKTtcblxuICAgIC8vIGZvcmNlIHJlZmxvdyB0byBwdXQgZXZlcnl0aGluZyBpbiBwb3NpdGlv
blxuICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgZiA9IGJvZHkub2Zmc2V0
SGVpZ2h0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1
bmN0aW9uIChjKSB7XG4gICAgICBpZiAoYy5kYXRhLm1vdmVkKSB7XG4gICAgICAgIHZhciBlbCA9
IGMuZWxtO1xuICAgICAgICB2YXIgcyA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRUcmFuc2l0aW9u
Q2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgIHMudHJhbnNmb3JtID0gcy5XZWJraXRUcmFu
c2Zvcm0gPSBzLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xuICAgICAgICBlbC5hZGRFdmVudExp
c3RlbmVyKHRyYW5zaXRpb25FbmRFdmVudCwgZWwuX21vdmVDYiA9IGZ1bmN0aW9uIGNiIChlKSB7
XG4gICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkg
e1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQs
IGNiKTtcbiAgICAgICAgICAgIGVsLl9tb3ZlQ2IgPSBudWxsO1xuICAgICAgICAgICAgcmVtb3Zl
VHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7
XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIGhhc01vdmU6IGZ1
bmN0aW9uIGhhc01vdmUgKGVsLCBtb3ZlQ2xhc3MpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9y
ZSBpZiAqL1xuICAgICAgaWYgKCFoYXNUcmFuc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiBmYWxz
ZVxuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAodGhp
cy5faGFzTW92ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTW92ZVxuICAgICAgfVxuICAg
ICAgLy8gRGV0ZWN0IHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIHRoZSBtb3ZlIGNsYXNzIGFwcGxp
ZWQgaGFzXG4gICAgICAvLyBDU1MgdHJhbnNpdGlvbnMuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBi
ZSBpbnNpZGUgYW4gZW50ZXJpbmdcbiAgICAgIC8vIHRyYW5zaXRpb24gYXQgdGhpcyB2ZXJ5IG1v
bWVudCwgd2UgbWFrZSBhIGNsb25lIG9mIGl0IGFuZCByZW1vdmVcbiAgICAgIC8vIGFsbCBvdGhl
ciB0cmFuc2l0aW9uIGNsYXNzZXMgYXBwbGllZCB0byBlbnN1cmUgb25seSB0aGUgbW92ZSBjbGFz
c1xuICAgICAgLy8gaXMgYXBwbGllZC5cbiAgICAgIHZhciBjbG9uZSA9IGVsLmNsb25lTm9kZSgp
O1xuICAgICAgaWYgKGVsLl90cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgICAgICBlbC5fdHJhbnNp
dGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJlbW92ZUNsYXNzKGNsb25lLCBj
bHMpOyB9KTtcbiAgICAgIH1cbiAgICAgIGFkZENsYXNzKGNsb25lLCBtb3ZlQ2xhc3MpO1xuICAg
ICAgY2xvbmUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIHRoaXMuJGVsLmFwcGVuZENo
aWxkKGNsb25lKTtcbiAgICAgIHZhciBpbmZvID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xu
ICAgICAgdGhpcy4kZWwucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgcmV0dXJuICh0aGlzLl9o
YXNNb3ZlID0gaW5mby5oYXNUcmFuc2Zvcm0pXG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBj
YWxsUGVuZGluZ0NicyAoYykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGMu
ZWxtLl9tb3ZlQ2IpIHtcbiAgICBjLmVsbS5fbW92ZUNiKCk7XG4gIH1cbiAgLyogaXN0YW5idWwg
aWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fZW50ZXJDYikge1xuICAgIGMuZWxtLl9lbnRlckNi
KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVjb3JkUG9zaXRpb24gKGMpIHtcbiAgYy5kYXRhLm5l
d1BvcyA9IGMuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5mdW5jdGlvbiBhcHBs
eVRyYW5zbGF0aW9uIChjKSB7XG4gIHZhciBvbGRQb3MgPSBjLmRhdGEucG9zO1xuICB2YXIgbmV3
UG9zID0gYy5kYXRhLm5ld1BvcztcbiAgdmFyIGR4ID0gb2xkUG9zLmxlZnQgLSBuZXdQb3MubGVm
dDtcbiAgdmFyIGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XG4gIGlmIChkeCB8fCBkeSkg
e1xuICAgIGMuZGF0YS5tb3ZlZCA9IHRydWU7XG4gICAgdmFyIHMgPSBjLmVsbS5zdHlsZTtcbiAg
ICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyBkeCAr
IFwicHgsXCIgKyBkeSArIFwicHgpXCI7XG4gICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMn
O1xuICB9XG59XG5cbnZhciBwbGF0Zm9ybUNvbXBvbmVudHMgPSB7XG4gIFRyYW5zaXRpb246IFRy
YW5zaXRpb24sXG4gIFRyYW5zaXRpb25Hcm91cDogVHJhbnNpdGlvbkdyb3VwXG59O1xuXG4vKiAg
Ki9cblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBzcGVjaWZpYyB1dGlsc1xuVnVlJDMuY29uZmlnLm11
c3RVc2VQcm9wID0gbXVzdFVzZVByb3A7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZFRhZyA9IGlz
UmVzZXJ2ZWRUYWc7XG5WdWUkMy5jb25maWcuaXNSZXNlcnZlZEF0dHIgPSBpc1Jlc2VydmVkQXR0
cjtcblZ1ZSQzLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2UgPSBnZXRUYWdOYW1lc3BhY2U7XG5WdWUk
My5jb25maWcuaXNVbmtub3duRWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5cbi8vIGluc3Rh
bGwgcGxhdGZvcm0gcnVudGltZSBkaXJlY3RpdmVzICYgY29tcG9uZW50c1xuZXh0ZW5kKFZ1ZSQz
Lm9wdGlvbnMuZGlyZWN0aXZlcywgcGxhdGZvcm1EaXJlY3RpdmVzKTtcbmV4dGVuZChWdWUkMy5v
cHRpb25zLmNvbXBvbmVudHMsIHBsYXRmb3JtQ29tcG9uZW50cyk7XG5cbi8vIGluc3RhbGwgcGxh
dGZvcm0gcGF0Y2ggZnVuY3Rpb25cblZ1ZSQzLnByb3RvdHlwZS5fX3BhdGNoX18gPSBpbkJyb3dz
ZXIgPyBwYXRjaCA6IG5vb3A7XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZSQzLnByb3Rv
dHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9
IGVsICYmIGluQnJvd3NlciA/IHF1ZXJ5KGVsKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG1vdW50
Q29tcG9uZW50KHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xuXG4vLyBkZXZ0b29scyBnbG9iYWwg
aG9va1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
e1xuICBpZiAoY29uZmlnLmRldnRvb2xzKSB7XG4gICAgaWYgKGRldnRvb2xzKSB7XG4gICAgICBk
ZXZ0b29scy5lbWl0KCdpbml0JywgVnVlJDMpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc0Nocm9tZSkge1xuICAgICAgY29uc29sZVtj
b25zb2xlLmluZm8gPyAnaW5mbycgOiAnbG9nJ10oXG4gICAgICAgICdEb3dubG9hZCB0aGUgVnVl
IERldnRvb2xzIGV4dGVuc2lvbiBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTpc
XG4nICtcbiAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUtZGV2dG9vbHMnXG4g
ICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJlxuICAgIGNvbmZpZy5wcm9kdWN0aW9uVGlwICE9PSBmYWxzZSAmJlxuICAgIGlu
QnJvd3NlciAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgY29u
c29sZVtjb25zb2xlLmluZm8gPyAnaW5mbycgOiAnbG9nJ10oXG4gICAgICBcIllvdSBhcmUgcnVu
bmluZyBWdWUgaW4gZGV2ZWxvcG1lbnQgbW9kZS5cXG5cIiArXG4gICAgICBcIk1ha2Ugc3VyZSB0
byB0dXJuIG9uIHByb2R1Y3Rpb24gbW9kZSB3aGVuIGRlcGxveWluZyBmb3IgcHJvZHVjdGlvbi5c
XG5cIiArXG4gICAgICBcIlNlZSBtb3JlIHRpcHMgYXQgaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUv
ZGVwbG95bWVudC5odG1sXCJcbiAgICApO1xuICB9XG59LCAwKTtcblxuLyogICovXG5cbi8vIGNo
ZWNrIHdoZXRoZXIgY3VycmVudCBicm93c2VyIGVuY29kZXMgYSBjaGFyIGluc2lkZSBhdHRyaWJ1
dGUgdmFsdWVzXG5mdW5jdGlvbiBzaG91bGREZWNvZGUgKGNvbnRlbnQsIGVuY29kZWQpIHtcbiAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaW5uZXJIVE1M
ID0gXCI8ZGl2IGE9XFxcIlwiICsgY29udGVudCArIFwiXFxcIi8+XCI7XG4gIHJldHVybiBkaXYu
aW5uZXJIVE1MLmluZGV4T2YoZW5jb2RlZCkgPiAwXG59XG5cbi8vICMzNjYzXG4vLyBJRSBlbmNv
ZGVzIG5ld2xpbmVzIGluc2lkZSBhdHRyaWJ1dGUgdmFsdWVzIHdoaWxlIG90aGVyIGJyb3dzZXJz
IGRvbid0XG52YXIgc2hvdWxkRGVjb2RlTmV3bGluZXMgPSBpbkJyb3dzZXIgPyBzaG91bGREZWNv
ZGUoJ1xcbicsICcmIzEwOycpIDogZmFsc2U7XG5cbi8qICAqL1xuXG52YXIgZGVmYXVsdFRhZ1JF
ID0gL1xce1xceygoPzoufFxcbikrPylcXH1cXH0vZztcbnZhciByZWdleEVzY2FwZVJFID0gL1st
LiorP14ke30oKXxbXFxdXFwvXFxcXF0vZztcblxudmFyIGJ1aWxkUmVnZXggPSBjYWNoZWQoZnVu
Y3Rpb24gKGRlbGltaXRlcnMpIHtcbiAgdmFyIG9wZW4gPSBkZWxpbWl0ZXJzWzBdLnJlcGxhY2Uo
cmVnZXhFc2NhcGVSRSwgJ1xcXFwkJicpO1xuICB2YXIgY2xvc2UgPSBkZWxpbWl0ZXJzWzFdLnJl
cGxhY2UocmVnZXhFc2NhcGVSRSwgJ1xcXFwkJicpO1xuICByZXR1cm4gbmV3IFJlZ0V4cChvcGVu
ICsgJygoPzoufFxcXFxuKSs/KScgKyBjbG9zZSwgJ2cnKVxufSk7XG5cbmZ1bmN0aW9uIHBhcnNl
VGV4dCAoXG4gIHRleHQsXG4gIGRlbGltaXRlcnNcbikge1xuICB2YXIgdGFnUkUgPSBkZWxpbWl0
ZXJzID8gYnVpbGRSZWdleChkZWxpbWl0ZXJzKSA6IGRlZmF1bHRUYWdSRTtcbiAgaWYgKCF0YWdS
RS50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHRva2VucyA9IFtdO1xuICB2
YXIgbGFzdEluZGV4ID0gdGFnUkUubGFzdEluZGV4ID0gMDtcbiAgdmFyIG1hdGNoLCBpbmRleDtc
biAgd2hpbGUgKChtYXRjaCA9IHRhZ1JFLmV4ZWModGV4dCkpKSB7XG4gICAgaW5kZXggPSBtYXRj
aC5pbmRleDtcbiAgICAvLyBwdXNoIHRleHQgdG9rZW5cbiAgICBpZiAoaW5kZXggPiBsYXN0SW5k
ZXgpIHtcbiAgICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHQuc2xpY2UobGFzdElu
ZGV4LCBpbmRleCkpKTtcbiAgICB9XG4gICAgLy8gdGFnIHRva2VuXG4gICAgdmFyIGV4cCA9IHBh
cnNlRmlsdGVycyhtYXRjaFsxXS50cmltKCkpO1xuICAgIHRva2Vucy5wdXNoKChcIl9zKFwiICsg
ZXhwICsgXCIpXCIpKTtcbiAgICBsYXN0SW5kZXggPSBpbmRleCArIG1hdGNoWzBdLmxlbmd0aDtc
biAgfVxuICBpZiAobGFzdEluZGV4IDwgdGV4dC5sZW5ndGgpIHtcbiAgICB0b2tlbnMucHVzaChK
U09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKGxhc3RJbmRleCkpKTtcbiAgfVxuICByZXR1cm4gdG9r
ZW5zLmpvaW4oJysnKVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSAoZWws
IG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHZh
ciBzdGF0aWNDbGFzcyA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdjbGFzcycpO1xuICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBzdGF0aWNDbGFzcykge1xuICAg
IHZhciBleHByZXNzaW9uID0gcGFyc2VUZXh0KHN0YXRpY0NsYXNzLCBvcHRpb25zLmRlbGltaXRl
cnMpO1xuICAgIGlmIChleHByZXNzaW9uKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcImNsYXNz
PVxcXCJcIiArIHN0YXRpY0NsYXNzICsgXCJcXFwiOiBcIiArXG4gICAgICAgICdJbnRlcnBvbGF0
aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAnVXNl
IHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtc
biAgICAgICAgJ2luc3RlYWQgb2YgPGRpdiBjbGFzcz1cInt7IHZhbCB9fVwiPiwgdXNlIDxkaXYg
OmNsYXNzPVwidmFsXCI+LidcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChzdGF0aWNDbGFz
cykge1xuICAgIGVsLnN0YXRpY0NsYXNzID0gSlNPTi5zdHJpbmdpZnkoc3RhdGljQ2xhc3MpO1xu
ICB9XG4gIHZhciBjbGFzc0JpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2NsYXNzJywgZmFs
c2UgLyogZ2V0U3RhdGljICovKTtcbiAgaWYgKGNsYXNzQmluZGluZykge1xuICAgIGVsLmNsYXNz
QmluZGluZyA9IGNsYXNzQmluZGluZztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5EYXRhIChlbCkg
e1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljQ2xhc3MpIHtcbiAgICBkYXRhICs9
IFwic3RhdGljQ2xhc3M6XCIgKyAoZWwuc3RhdGljQ2xhc3MpICsgXCIsXCI7XG4gIH1cbiAgaWYg
KGVsLmNsYXNzQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJjbGFzczpcIiArIChlbC5jbGFzc0Jp
bmRpbmcpICsgXCIsXCI7XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxudmFyIGtsYXNzJDEgPSB7
XG4gIHN0YXRpY0tleXM6IFsnc3RhdGljQ2xhc3MnXSxcbiAgdHJhbnNmb3JtTm9kZTogdHJhbnNm
b3JtTm9kZSxcbiAgZ2VuRGF0YTogZ2VuRGF0YVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIHRy
YW5zZm9ybU5vZGUkMSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4g
fHwgYmFzZVdhcm47XG4gIHZhciBzdGF0aWNTdHlsZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdz
dHlsZScpO1xuICBpZiAoc3RhdGljU3R5bGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYg
Ki9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgdmFyIGV4cHJlc3Npb24gPSBwYXJzZVRleHQoc3RhdGljU3R5bGUsIG9wdGlvbnMuZGVsaW1p
dGVycyk7XG4gICAgICBpZiAoZXhwcmVzc2lvbikge1xuICAgICAgICB3YXJuKFxuICAgICAgICAg
IFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAn
SW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAg
ICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBl
eGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19
XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxcIj4uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAg
IH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0
YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIo
ZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcp
IHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rp
b24gZ2VuRGF0YSQxIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5
bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsg
XCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHls
ZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxu
fVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0
cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtc
blxudmFyIG1vZHVsZXMkMSA9IFtcbiAga2xhc3MkMSxcbiAgc3R5bGUkMVxuXTtcblxuLyogICov
XG5cbmZ1bmN0aW9uIHRleHQgKGVsLCBkaXIpIHtcbiAgaWYgKGRpci52YWx1ZSkge1xuICAgIGFk
ZFByb3AoZWwsICd0ZXh0Q29udGVudCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIikp
O1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBodG1sIChlbCwgZGlyKSB7XG4gIGlmIChk
aXIudmFsdWUpIHtcbiAgICBhZGRQcm9wKGVsLCAnaW5uZXJIVE1MJywgKFwiX3MoXCIgKyAoZGly
LnZhbHVlKSArIFwiKVwiKSk7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9k
ZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxu
dmFyIGlzVW5hcnlUYWcgPSBtYWtlTWFwKFxuICAnYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxmcmFt
ZSxocixpbWcsaW5wdXQsaXNpbmRleCxrZXlnZW4sJyArXG4gICdsaW5rLG1ldGEscGFyYW0sc291
cmNlLHRyYWNrLHdicidcbik7XG5cbi8vIEVsZW1lbnRzIHRoYXQgeW91IGNhbiwgaW50ZW50aW9u
YWxseSwgbGVhdmUgb3BlblxuLy8gKGFuZCB3aGljaCBjbG9zZSB0aGVtc2VsdmVzKVxudmFyIGNh
bkJlTGVmdE9wZW5UYWcgPSBtYWtlTWFwKFxuICAnY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxw
LHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSdcbik7XG5cbi8vIEhUTUw1IHRhZ3MgaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sI2VsZW1lbnRzLTNc
bi8vIFBocmFzaW5nIENvbnRlbnQgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvZG9tLmh0bWwjcGhyYXNpbmctY29udGVudFxudmFyIGlzTm9uUGhyYXNpbmdUYWcgPSBtYWtl
TWFwKFxuICAnYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRp
b24sY29sLGNvbGdyb3VwLGRkLCcgK1xuICAnZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxk
c2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLCcgK1xuICAnaDEsaDIsaDMsaDQsaDUs
aDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsJyAr
XG4gICdvcHRncm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJv
ZHksdGQsdGZvb3QsdGgsdGhlYWQsJyArXG4gICd0aXRsZSx0cix0cmFjaydcbik7XG5cbi8qICAq
L1xuXG52YXIgYmFzZU9wdGlvbnMgPSB7XG4gIGV4cGVjdEhUTUw6IHRydWUsXG4gIG1vZHVsZXM6
IG1vZHVsZXMkMSxcbiAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyQxLFxuICBpc1ByZVRhZzogaXNQ
cmVUYWcsXG4gIGlzVW5hcnlUYWc6IGlzVW5hcnlUYWcsXG4gIG11c3RVc2VQcm9wOiBtdXN0VXNl
UHJvcCxcbiAgY2FuQmVMZWZ0T3BlblRhZzogY2FuQmVMZWZ0T3BlblRhZyxcbiAgaXNSZXNlcnZl
ZFRhZzogaXNSZXNlcnZlZFRhZyxcbiAgZ2V0VGFnTmFtZXNwYWNlOiBnZXRUYWdOYW1lc3BhY2Us
XG4gIHN0YXRpY0tleXM6IGdlblN0YXRpY0tleXMobW9kdWxlcyQxKVxufTtcblxuLyogICovXG5c
bnZhciBkZWNvZGVyO1xuXG52YXIgaGUgPSB7XG4gIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlICho
dG1sKSB7XG4gICAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7XG4gICAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiBkZWNvZGVy
LnRleHRDb250ZW50XG4gIH1cbn07XG5cbi8qKlxuICogTm90IHR5cGUtY2hlY2tpbmcgdGhpcyBm
aWxlIGJlY2F1c2UgaXQncyBtb3N0bHkgdmVuZG9yIGNvZGUuXG4gKi9cblxuLyohXG4gKiBIVE1M
IFBhcnNlciBCeSBKb2huIFJlc2lnIChlam9obi5vcmcpXG4gKiBNb2RpZmllZCBieSBKdXJpeSBc
ImthbmdheFwiIFpheXRzZXZcbiAqIE9yaWdpbmFsIGNvZGUgYnkgRXJpayBBcnZpZHNzb24sIE1v
emlsbGEgUHVibGljIExpY2Vuc2VcbiAqIGh0dHA6Ly9lcmlrLmVhZS5uZXQvc2ltcGxlaHRtbHBh
cnNlci9zaW1wbGVodG1scGFyc2VyLmpzXG4gKi9cblxuLy8gUmVndWxhciBFeHByZXNzaW9ucyBm
b3IgcGFyc2luZyB0YWdzIGFuZCBhdHRyaWJ1dGVzXG52YXIgc2luZ2xlQXR0cklkZW50aWZpZXIg
PSAvKFteXFxzXCInPD4vPV0rKS87XG52YXIgc2luZ2xlQXR0ckFzc2lnbiA9IC8oPzo9KS87XG52
YXIgc2luZ2xlQXR0clZhbHVlcyA9IFtcbiAgLy8gYXR0ciB2YWx1ZSBkb3VibGUgcXVvdGVzXG4g
IC9cIihbXlwiXSopXCIrLy5zb3VyY2UsXG4gIC8vIGF0dHIgdmFsdWUsIHNpbmdsZSBxdW90ZXNc
biAgLycoW14nXSopJysvLnNvdXJjZSxcbiAgLy8gYXR0ciB2YWx1ZSwgbm8gcXVvdGVzXG4gIC8o
W15cXHNcIic9PD5gXSspLy5zb3VyY2Vcbl07XG52YXIgYXR0cmlidXRlID0gbmV3IFJlZ0V4cChc
biAgJ15cXFxccyonICsgc2luZ2xlQXR0cklkZW50aWZpZXIuc291cmNlICtcbiAgJyg/OlxcXFxz
KignICsgc2luZ2xlQXR0ckFzc2lnbi5zb3VyY2UgKyAnKScgK1xuICAnXFxcXHMqKD86JyArIHNp
bmdsZUF0dHJWYWx1ZXMuam9pbignfCcpICsgJykpPydcbik7XG5cbi8vIGNvdWxkIHVzZSBodHRw
czovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteG1sLW5hbWVzLTE5OTkwMTE0LyNOVC1RTmFtZVxu
Ly8gYnV0IGZvciBWdWUgdGVtcGxhdGVzIHdlIGNhbiBlbmZvcmNlIGEgc2ltcGxlIGNoYXJzZXRc
bnZhciBuY25hbWUgPSAnW2EtekEtWl9dW1xcXFx3XFxcXC1cXFxcLl0qJztcbnZhciBxbmFtZUNh
cHR1cmUgPSAnKCg/OicgKyBuY25hbWUgKyAnXFxcXDopPycgKyBuY25hbWUgKyAnKSc7XG52YXIg
c3RhcnRUYWdPcGVuID0gbmV3IFJlZ0V4cCgnXjwnICsgcW5hbWVDYXB0dXJlKTtcbnZhciBzdGFy
dFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4cCgnXjxc
XFxcLycgKyBxbmFtZUNhcHR1cmUgKyAnW14+XSo+Jyk7XG52YXIgZG9jdHlwZSA9IC9ePCFET0NU
WVBFIFtePl0rPi9pO1xudmFyIGNvbW1lbnQgPSAvXjwhLS0vO1xudmFyIGNvbmRpdGlvbmFsQ29t
bWVudCA9IC9ePCFcXFsvO1xuXG52YXIgSVNfUkVHRVhfQ0FQVFVSSU5HX0JST0tFTiA9IGZhbHNl
O1xuJ3gnLnJlcGxhY2UoL3goLik/L2csIGZ1bmN0aW9uIChtLCBnKSB7XG4gIElTX1JFR0VYX0NB
UFRVUklOR19CUk9LRU4gPSBnID09PSAnJztcbn0pO1xuXG4vLyBTcGVjaWFsIEVsZW1lbnRzIChj
YW4gY29udGFpbiBhbnl0aGluZylcbnZhciBpc1BsYWluVGV4dEVsZW1lbnQgPSBtYWtlTWFwKCdz
Y3JpcHQsc3R5bGUsdGV4dGFyZWEnLCB0cnVlKTtcbnZhciByZUNhY2hlID0ge307XG5cbnZhciBk
ZWNvZGluZ01hcCA9IHtcbiAgJyZsdDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7
JzogJ1wiJyxcbiAgJyZhbXA7JzogJyYnLFxuICAnJiMxMDsnOiAnXFxuJ1xufTtcbnZhciBlbmNv
ZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxhbXApOy9nO1xudmFyIGVuY29kZWRBdHRyV2l0aE5l
d0xpbmVzID0gLyYoPzpsdHxndHxxdW90fGFtcHwjMTApOy9nO1xuXG4vLyAjNTk5MlxudmFyIGlz
SWdub3JlTmV3bGluZVRhZyA9IG1ha2VNYXAoJ3ByZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHNo
b3VsZElnbm9yZUZpcnN0TmV3bGluZSA9IGZ1bmN0aW9uICh0YWcsIGh0bWwpIHsgcmV0dXJuIHRh
ZyAmJiBpc0lnbm9yZU5ld2xpbmVUYWcodGFnKSAmJiBodG1sWzBdID09PSAnXFxuJzsgfTtcblxu
ZnVuY3Rpb24gZGVjb2RlQXR0ciAodmFsdWUsIHNob3VsZERlY29kZU5ld2xpbmVzKSB7XG4gIHZh
ciByZSA9IHNob3VsZERlY29kZU5ld2xpbmVzID8gZW5jb2RlZEF0dHJXaXRoTmV3TGluZXMgOiBl
bmNvZGVkQXR0cjtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaCkg
eyByZXR1cm4gZGVjb2RpbmdNYXBbbWF0Y2hdOyB9KVxufVxuXG5mdW5jdGlvbiBwYXJzZUhUTUwg
KGh0bWwsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBleHBlY3RIVE1MID0g
b3B0aW9ucy5leHBlY3RIVE1MO1xuICB2YXIgaXNVbmFyeVRhZyQkMSA9IG9wdGlvbnMuaXNVbmFy
eVRhZyB8fCBubztcbiAgdmFyIGNhbkJlTGVmdE9wZW5UYWckJDEgPSBvcHRpb25zLmNhbkJlTGVm
dE9wZW5UYWcgfHwgbm87XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsYXN0LCBsYXN0VGFnO1xu
ICB3aGlsZSAoaHRtbCkge1xuICAgIGxhc3QgPSBodG1sO1xuICAgIC8vIE1ha2Ugc3VyZSB3ZSdy
ZSBub3QgaW4gYSBwbGFpbnRleHQgY29udGVudCBlbGVtZW50IGxpa2Ugc2NyaXB0L3N0eWxlXG4g
ICAgaWYgKCFsYXN0VGFnIHx8ICFpc1BsYWluVGV4dEVsZW1lbnQobGFzdFRhZykpIHtcbiAgICAg
IHZhciB0ZXh0RW5kID0gaHRtbC5pbmRleE9mKCc8Jyk7XG4gICAgICBpZiAodGV4dEVuZCA9PT0g
MCkge1xuICAgICAgICAvLyBDb21tZW50OlxuICAgICAgICBpZiAoY29tbWVudC50ZXN0KGh0bWwp
KSB7XG4gICAgICAgICAgdmFyIGNvbW1lbnRFbmQgPSBodG1sLmluZGV4T2YoJy0tPicpO1xuXG4g
ICAgICAgICAgaWYgKGNvbW1lbnRFbmQgPj0gMCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMu
c2hvdWxkS2VlcENvbW1lbnQpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5jb21tZW50KGh0bWwu
c3Vic3RyaW5nKDQsIGNvbW1lbnRFbmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFk
dmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9
XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nv
bmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRc
biAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAg
dmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYg
KGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxF
bmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5c
biAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0
Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZh
bmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAg
IH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1s
Lm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZh
ciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVu
Z3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGlu
ZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQg
dGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAg
ICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRh
Z01hdGNoKTtcbiAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKGxhc3RUYWcs
IGh0bWwpKSB7XG4gICAgICAgICAgICBhZHZhbmNlKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0ID0gKHZvaWQg
MCksIHJlc3QgPSAodm9pZCAwKSwgbmV4dCA9ICh2b2lkIDApO1xuICAgICAgaWYgKHRleHRFbmQg
Pj0gMCkge1xuICAgICAgICByZXN0ID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgd2hp
bGUgKFxuICAgICAgICAgICFlbmRUYWcudGVzdChyZXN0KSAmJlxuICAgICAgICAgICFzdGFydFRh
Z09wZW4udGVzdChyZXN0KSAmJlxuICAgICAgICAgICFjb21tZW50LnRlc3QocmVzdCkgJiZcbiAg
ICAgICAgICAhY29uZGl0aW9uYWxDb21tZW50LnRlc3QocmVzdClcbiAgICAgICAgKSB7XG4gICAg
ICAgICAgLy8gPCBpbiBwbGFpbiB0ZXh0LCBiZSBmb3JnaXZpbmcgYW5kIHRyZWF0IGl0IGFzIHRl
eHRcbiAgICAgICAgICBuZXh0ID0gcmVzdC5pbmRleE9mKCc8JywgMSk7XG4gICAgICAgICAgaWYg
KG5leHQgPCAwKSB7IGJyZWFrIH1cbiAgICAgICAgICB0ZXh0RW5kICs9IG5leHQ7XG4gICAgICAg
ICAgcmVzdCA9IGh0bWwuc2xpY2UodGV4dEVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9
IGh0bWwuc3Vic3RyaW5nKDAsIHRleHRFbmQpO1xuICAgICAgICBhZHZhbmNlKHRleHRFbmQpO1xu
ICAgICAgfVxuXG4gICAgICBpZiAodGV4dEVuZCA8IDApIHtcbiAgICAgICAgdGV4dCA9IGh0bWw7
XG4gICAgICAgIGh0bWwgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2hhcnMg
JiYgdGV4dCkge1xuICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgfVxuICAgIH0g
ZWxzZSB7XG4gICAgICB2YXIgZW5kVGFnTGVuZ3RoID0gMDtcbiAgICAgIHZhciBzdGFja2VkVGFn
ID0gbGFzdFRhZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHJlU3RhY2tlZFRhZyA9IHJlQ2Fj
aGVbc3RhY2tlZFRhZ10gfHwgKHJlQ2FjaGVbc3RhY2tlZFRhZ10gPSBuZXcgUmVnRXhwKCcoW1xc
XFxzXFxcXFNdKj8pKDwvJyArIHN0YWNrZWRUYWcgKyAnW14+XSo+KScsICdpJykpO1xuICAgICAg
dmFyIHJlc3QkMSA9IGh0bWwucmVwbGFjZShyZVN0YWNrZWRUYWcsIGZ1bmN0aW9uIChhbGwsIHRl
eHQsIGVuZFRhZykge1xuICAgICAgICBlbmRUYWdMZW5ndGggPSBlbmRUYWcubGVuZ3RoO1xuICAg
ICAgICBpZiAoIWlzUGxhaW5UZXh0RWxlbWVudChzdGFja2VkVGFnKSAmJiBzdGFja2VkVGFnICE9
PSAnbm9zY3JpcHQnKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHRcbiAgICAgICAgICAgIC5yZXBs
YWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L2csICckMScpXG4gICAgICAgICAgICAucmVwbGFjZSgv
PCFcXFtDREFUQVxcWyhbXFxzXFxTXSo/KV1dPi9nLCAnJDEnKTtcbiAgICAgICAgfVxuICAgICAg
ICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKHN0YWNrZWRUYWcsIHRleHQpKSB7XG4gICAg
ICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlv
bnMuY2hhcnMpIHtcbiAgICAgICAgICBvcHRpb25zLmNoYXJzKHRleHQpO1xuICAgICAgICB9XG4g
ICAgICAgIHJldHVybiAnJ1xuICAgICAgfSk7XG4gICAgICBpbmRleCArPSBodG1sLmxlbmd0aCAt
IHJlc3QkMS5sZW5ndGg7XG4gICAgICBodG1sID0gcmVzdCQxO1xuICAgICAgcGFyc2VFbmRUYWco
c3RhY2tlZFRhZywgaW5kZXggLSBlbmRUYWdMZW5ndGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBp
ZiAoaHRtbCA9PT0gbGFzdCkge1xuICAgICAgb3B0aW9ucy5jaGFycyAmJiBvcHRpb25zLmNoYXJz
KGh0bWwpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
JiYgIXN0YWNrLmxlbmd0aCAmJiBvcHRpb25zLndhcm4pIHtcbiAgICAgICAgb3B0aW9ucy53YXJu
KChcIk1hbC1mb3JtYXR0ZWQgdGFnIGF0IGVuZCBvZiB0ZW1wbGF0ZTogXFxcIlwiICsgaHRtbCAr
IFwiXFxcIlwiKSk7XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENs
ZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuICBwYXJzZUVuZFRhZygpO1xuXG4gIGZ1bmN0aW9u
IGFkdmFuY2UgKG4pIHtcbiAgICBpbmRleCArPSBuO1xuICAgIGh0bWwgPSBodG1sLnN1YnN0cmlu
ZyhuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3RhcnRUYWcgKCkge1xuICAgIHZhciBzdGFy
dCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHZh
ciBtYXRjaCA9IHtcbiAgICAgICAgdGFnTmFtZTogc3RhcnRbMV0sXG4gICAgICAgIGF0dHJzOiBb
XSxcbiAgICAgICAgc3RhcnQ6IGluZGV4XG4gICAgICB9O1xuICAgICAgYWR2YW5jZShzdGFydFsw
XS5sZW5ndGgpO1xuICAgICAgdmFyIGVuZCwgYXR0cjtcbiAgICAgIHdoaWxlICghKGVuZCA9IGh0
bWwubWF0Y2goc3RhcnRUYWdDbG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChhdHRyaWJ1dGUp
KSkge1xuICAgICAgICBhZHZhbmNlKGF0dHJbMF0ubGVuZ3RoKTtcbiAgICAgICAgbWF0Y2guYXR0
cnMucHVzaChhdHRyKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgbWF0Y2gu
dW5hcnlTbGFzaCA9IGVuZFsxXTtcbiAgICAgICAgYWR2YW5jZShlbmRbMF0ubGVuZ3RoKTtcbiAg
ICAgICAgbWF0Y2guZW5kID0gaW5kZXg7XG4gICAgICAgIHJldHVybiBtYXRjaFxuICAgICAgfVxu
ICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0VGFnIChtYXRjaCkge1xuICAgIHZh
ciB0YWdOYW1lID0gbWF0Y2gudGFnTmFtZTtcbiAgICB2YXIgdW5hcnlTbGFzaCA9IG1hdGNoLnVu
YXJ5U2xhc2g7XG5cbiAgICBpZiAoZXhwZWN0SFRNTCkge1xuICAgICAgaWYgKGxhc3RUYWcgPT09
ICdwJyAmJiBpc05vblBocmFzaW5nVGFnKHRhZ05hbWUpKSB7XG4gICAgICAgIHBhcnNlRW5kVGFn
KGxhc3RUYWcpO1xuICAgICAgfVxuICAgICAgaWYgKGNhbkJlTGVmdE9wZW5UYWckJDEodGFnTmFt
ZSkgJiYgbGFzdFRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAgICBwYXJzZUVuZFRhZyh0YWdOYW1l
KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdW5hcnkgPSBpc1VuYXJ5VGFnJCQxKHRhZ05h
bWUpIHx8ICEhdW5hcnlTbGFzaDtcblxuICAgIHZhciBsID0gbWF0Y2guYXR0cnMubGVuZ3RoO1xu
ICAgIHZhciBhdHRycyA9IG5ldyBBcnJheShsKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7
IGkrKykge1xuICAgICAgdmFyIGFyZ3MgPSBtYXRjaC5hdHRyc1tpXTtcbiAgICAgIC8vIGhhY2tp
c2ggd29yayBhcm91bmQgRkYgYnVnIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2OTc3OFxuICAgICAgaWYgKElTX1JFR0VYX0NBUFRVUklOR19CUk9LRU4gJiYg
YXJnc1swXS5pbmRleE9mKCdcIlwiJykgPT09IC0xKSB7XG4gICAgICAgIGlmIChhcmdzWzNdID09
PSAnJykgeyBkZWxldGUgYXJnc1szXTsgfVxuICAgICAgICBpZiAoYXJnc1s0XSA9PT0gJycpIHsg
ZGVsZXRlIGFyZ3NbNF07IH1cbiAgICAgICAgaWYgKGFyZ3NbNV0gPT09ICcnKSB7IGRlbGV0ZSBh
cmdzWzVdOyB9XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmdzWzNdIHx8IGFyZ3NbNF0g
fHwgYXJnc1s1XSB8fCAnJztcbiAgICAgIGF0dHJzW2ldID0ge1xuICAgICAgICBuYW1lOiBhcmdz
WzFdLFxuICAgICAgICB2YWx1ZTogZGVjb2RlQXR0cihcbiAgICAgICAgICB2YWx1ZSxcbiAgICAg
ICAgICBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzXG4gICAgICAgIClcbiAgICAgIH07XG4g
ICAgfVxuXG4gICAgaWYgKCF1bmFyeSkge1xuICAgICAgc3RhY2sucHVzaCh7IHRhZzogdGFnTmFt
ZSwgbG93ZXJDYXNlZFRhZzogdGFnTmFtZS50b0xvd2VyQ2FzZSgpLCBhdHRyczogYXR0cnMgfSk7
XG4gICAgICBsYXN0VGFnID0gdGFnTmFtZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zdGFy
dCkge1xuICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBhdHRycywgdW5hcnksIG1hdGNoLnN0
YXJ0LCBtYXRjaC5lbmQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlRW5kVGFnICh0
YWdOYW1lLCBzdGFydCwgZW5kKSB7XG4gICAgdmFyIHBvcywgbG93ZXJDYXNlZFRhZ05hbWU7XG4g
ICAgaWYgKHN0YXJ0ID09IG51bGwpIHsgc3RhcnQgPSBpbmRleDsgfVxuICAgIGlmIChlbmQgPT0g
bnVsbCkgeyBlbmQgPSBpbmRleDsgfVxuXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGxvd2Vy
Q2FzZWRUYWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIEZp
bmQgdGhlIGNsb3Nlc3Qgb3BlbmVkIHRhZyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgaWYgKHRhZ05h
bWUpIHtcbiAgICAgIGZvciAocG9zID0gc3RhY2subGVuZ3RoIC0gMTsgcG9zID49IDA7IHBvcy0t
KSB7XG4gICAgICAgIGlmIChzdGFja1twb3NdLmxvd2VyQ2FzZWRUYWcgPT09IGxvd2VyQ2FzZWRU
YWdOYW1lKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxz
ZSB7XG4gICAgICAvLyBJZiBubyB0YWcgbmFtZSBpcyBwcm92aWRlZCwgY2xlYW4gc2hvcFxuICAg
ICAgcG9zID0gMDtcbiAgICB9XG5cbiAgICBpZiAocG9zID49IDApIHtcbiAgICAgIC8vIENsb3Nl
IGFsbCB0aGUgb3BlbiBlbGVtZW50cywgdXAgdGhlIHN0YWNrXG4gICAgICBmb3IgKHZhciBpID0g
c3RhY2subGVuZ3RoIC0gMTsgaSA+PSBwb3M7IGktLSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgIChpID4gcG9zIHx8ICF0
YWdOYW1lKSAmJlxuICAgICAgICAgIG9wdGlvbnMud2FyblxuICAgICAgICApIHtcbiAgICAgICAg
ICBvcHRpb25zLndhcm4oXG4gICAgICAgICAgICAoXCJ0YWcgPFwiICsgKHN0YWNrW2ldLnRhZykg
KyBcIj4gaGFzIG5vIG1hdGNoaW5nIGVuZCB0YWcuXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAg
fVxuICAgICAgICBpZiAob3B0aW9ucy5lbmQpIHtcbiAgICAgICAgICBvcHRpb25zLmVuZChzdGFj
a1tpXS50YWcsIHN0YXJ0LCBlbmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJl
bW92ZSB0aGUgb3BlbiBlbGVtZW50cyBmcm9tIHRoZSBzdGFja1xuICAgICAgc3RhY2subGVuZ3Ro
ID0gcG9zO1xuICAgICAgbGFzdFRhZyA9IHBvcyAmJiBzdGFja1twb3MgLSAxXS50YWc7XG4gICAg
fSBlbHNlIGlmIChsb3dlckNhc2VkVGFnTmFtZSA9PT0gJ2JyJykge1xuICAgICAgaWYgKG9wdGlv
bnMuc3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBbXSwgdHJ1ZSwgc3Rh
cnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsb3dlckNhc2VkVGFnTmFtZSA9PT0g
J3AnKSB7XG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkge1xuICAgICAgICBvcHRpb25zLnN0YXJ0
KHRhZ05hbWUsIFtdLCBmYWxzZSwgc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAob3B0
aW9ucy5lbmQpIHtcbiAgICAgICAgb3B0aW9ucy5lbmQodGFnTmFtZSwgc3RhcnQsIGVuZCk7XG4g
ICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgb25SRSA9IC9eQHxedi1vbjov
O1xudmFyIGRpclJFID0gL152LXxeQHxeOi87XG52YXIgZm9yQWxpYXNSRSA9IC8oLio/KVxccyso
PzppbnxvZilcXHMrKC4qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC9cXCgoXFx7W159XSpcXH18
W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XFwpLztcblxudmFyIGFyZ1JFID0gLzooLiopJC87
XG52YXIgYmluZFJFID0gL146fF52LWJpbmQ6LztcbnZhciBtb2RpZmllclJFID0gL1xcLlteLl0r
L2c7XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGhlLmRlY29kZSk7XG5cbi8vIGNv
bmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRyYW5z
Zm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBwbGF0
Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1HZXRU
YWdOYW1lc3BhY2U7XG5cbi8qKlxuICogQ29udmVydCBIVE1MIHN0cmluZyB0byBBU1QuXG4gKi9c
bmZ1bmN0aW9uIHBhcnNlIChcbiAgdGVtcGxhdGUsXG4gIG9wdGlvbnNcbikge1xuICB3YXJuJDIg
PSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG5cbiAgcGxhdGZvcm1Jc1ByZVRhZyA9IG9wdGlv
bnMuaXNQcmVUYWcgfHwgbm87XG4gIHBsYXRmb3JtTXVzdFVzZVByb3AgPSBvcHRpb25zLm11c3RV
c2VQcm9wIHx8IG5vO1xuICBwbGF0Zm9ybUdldFRhZ05hbWVzcGFjZSA9IG9wdGlvbnMuZ2V0VGFn
TmFtZXNwYWNlIHx8IG5vO1xuXG4gIHRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9w
dGlvbnMubW9kdWxlcywgJ3RyYW5zZm9ybU5vZGUnKTtcbiAgcHJlVHJhbnNmb3JtcyA9IHBsdWNr
TW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAncHJlVHJhbnNmb3JtTm9kZScpO1xuICBw
b3N0VHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAncG9z
dFRyYW5zZm9ybU5vZGUnKTtcblxuICBkZWxpbWl0ZXJzID0gb3B0aW9ucy5kZWxpbWl0ZXJzO1xu
XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgcHJlc2VydmVXaGl0ZXNwYWNlID0gb3B0aW9ucy5w
cmVzZXJ2ZVdoaXRlc3BhY2UgIT09IGZhbHNlO1xuICB2YXIgcm9vdDtcbiAgdmFyIGN1cnJlbnRQ
YXJlbnQ7XG4gIHZhciBpblZQcmUgPSBmYWxzZTtcbiAgdmFyIGluUHJlID0gZmFsc2U7XG4gIHZh
ciB3YXJuZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiB3YXJuT25jZSAobXNnKSB7XG4gICAgaWYg
KCF3YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNnKTtcbiAg
ICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbmRQcmUgKGVsZW1lbnQpIHtcbiAgICAvLyBjaGVjayBw
cmUgc3RhdGVcbiAgICBpZiAoZWxlbWVudC5wcmUpIHtcbiAgICAgIGluVlByZSA9IGZhbHNlO1xu
ICAgIH1cbiAgICBpZiAocGxhdGZvcm1Jc1ByZVRhZyhlbGVtZW50LnRhZykpIHtcbiAgICAgIGlu
UHJlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VIVE1MKHRlbXBsYXRlLCB7XG4gICAg
d2Fybjogd2FybiQyLFxuICAgIGV4cGVjdEhUTUw6IG9wdGlvbnMuZXhwZWN0SFRNTCxcbiAgICBp
c1VuYXJ5VGFnOiBvcHRpb25zLmlzVW5hcnlUYWcsXG4gICAgY2FuQmVMZWZ0T3BlblRhZzogb3B0
aW9ucy5jYW5CZUxlZnRPcGVuVGFnLFxuICAgIHNob3VsZERlY29kZU5ld2xpbmVzOiBvcHRpb25z
LnNob3VsZERlY29kZU5ld2xpbmVzLFxuICAgIHNob3VsZEtlZXBDb21tZW50OiBvcHRpb25zLmNv
bW1lbnRzLFxuICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydCAodGFnLCBhdHRycywgdW5hcnkpIHtc
biAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5zIGlm
IHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBh
cmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UodGFnKTtcblxuICAgICAgLy8gaGFu
ZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYg
KGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0dHJzID0gZ3VhcmRJRVNWR0J1Zyhh
dHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0ge1xuICAgICAgICB0eXBlOiAx
LFxuICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgYXR0cnNMaXN0OiBhdHRycyxcbiAgICAgICAg
YXR0cnNNYXA6IG1ha2VBdHRyc01hcChhdHRycyksXG4gICAgICAgIHBhcmVudDogY3VycmVudFBh
cmVudCxcbiAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICB9O1xuICAgICAgaWYgKG5zKSB7XG4g
ICAgICAgIGVsZW1lbnQubnMgPSBucztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlkZGVu
VGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1lbnQu
Zm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25seSBiZSBy
ZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAgICAgICdV
SS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVtcGxhdGVz
LCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBhcyB0aGV5
IHdpbGwgbm90IGJlIHBhcnNlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFw
cGx5IHByZS10cmFuc2Zvcm1zXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVRyYW5zZm9y
bXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJlVHJhbnNmb3Jtc1tpXShlbGVtZW50LCBvcHRp
b25zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1By
ZShlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQucHJlKSB7XG4gICAgICAgICAgaW5WUHJl
ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBsYXRmb3JtSXNQcmVUYWco
ZWxlbWVudC50YWcpKSB7XG4gICAgICAgIGluUHJlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlm
IChpblZQcmUpIHtcbiAgICAgICAgcHJvY2Vzc1Jhd0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgcHJvY2Vzc0ZvcihlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc0lmKGVs
ZW1lbnQpO1xuICAgICAgICBwcm9jZXNzT25jZShlbGVtZW50KTtcbiAgICAgICAgcHJvY2Vzc0tl
eShlbGVtZW50KTtcblxuICAgICAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGEgcGxh
aW4gZWxlbWVudCBhZnRlclxuICAgICAgICAvLyByZW1vdmluZyBzdHJ1Y3R1cmFsIGF0dHJpYnV0
ZXNcbiAgICAgICAgZWxlbWVudC5wbGFpbiA9ICFlbGVtZW50LmtleSAmJiAhYXR0cnMubGVuZ3Ro
O1xuXG4gICAgICAgIHByb2Nlc3NSZWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NTbG90KGVs
ZW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAgICBmb3Ig
KHZhciBpJDEgPSAwOyBpJDEgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAg
ICB0cmFuc2Zvcm1zW2kkMV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAg
cHJvY2Vzc0F0dHJzKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjaGVja1Jv
b3RDb25zdHJhaW50cyAoZWwpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoZWwudGFnID09PSAnc2xvdCcgfHwgZWwu
dGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAg
ICAgXCJDYW5ub3QgdXNlIDxcIiArIChlbC50YWcpICsgXCI+IGFzIGNvbXBvbmVudCByb290IGVs
ZW1lbnQgYmVjYXVzZSBpdCBtYXkgXCIgK1xuICAgICAgICAgICAgICAnY29udGFpbiBtdWx0aXBs
ZSBub2Rlcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWwu
YXR0cnNNYXAuaGFzT3duUHJvcGVydHkoJ3YtZm9yJykpIHtcbiAgICAgICAgICAgIHdhcm5PbmNl
KFxuICAgICAgICAgICAgICAnQ2Fubm90IHVzZSB2LWZvciBvbiBzdGF0ZWZ1bCBjb21wb25lbnQg
cm9vdCBlbGVtZW50IGJlY2F1c2UgJyArXG4gICAgICAgICAgICAgICdpdCByZW5kZXJzIG11bHRp
cGxlIGVsZW1lbnRzLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4g
ICAgICB9XG5cbiAgICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgICAgaWYgKCFyb290KSB7XG4g
ICAgICAgIHJvb3QgPSBlbGVtZW50O1xuICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhyb290
KTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkge1xuICAgICAgICAvLyBhbGxvdyBy
b290IGVsZW1lbnRzIHdpdGggdi1pZiwgdi1lbHNlLWlmIGFuZCB2LWVsc2VcbiAgICAgICAgaWYg
KHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkpIHtcbiAgICAgICAg
ICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAgICBhZGRJZkNvbmRpdGlv
bihyb290LCB7XG4gICAgICAgICAgICBleHA6IGVsZW1lbnQuZWxzZWlmLFxuICAgICAgICAgICAg
YmxvY2s6IGVsZW1lbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2Fybk9uY2UoXG4g
ICAgICAgICAgICBcIkNvbXBvbmVudCB0ZW1wbGF0ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9u
ZSByb290IGVsZW1lbnQuIFwiICtcbiAgICAgICAgICAgIFwiSWYgeW91IGFyZSB1c2luZyB2LWlm
IG9uIG11bHRpcGxlIGVsZW1lbnRzLCBcIiArXG4gICAgICAgICAgICBcInVzZSB2LWVsc2UtaWYg
dG8gY2hhaW4gdGhlbSBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgICAgaWYgKGN1cnJlbnRQYXJlbnQgJiYgIWVsZW1lbnQuZm9yYmlkZGVuKSB7XG4gICAg
ICAgIGlmIChlbGVtZW50LmVsc2VpZiB8fCBlbGVtZW50LmVsc2UpIHtcbiAgICAgICAgICBwcm9j
ZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJlbnQpO1xuICAgICAgICB9IGVsc2Ug
aWYgKGVsZW1lbnQuc2xvdFNjb3BlKSB7IC8vIHNjb3BlZCBzbG90XG4gICAgICAgICAgY3VycmVu
dFBhcmVudC5wbGFpbiA9IGZhbHNlO1xuICAgICAgICAgIHZhciBuYW1lID0gZWxlbWVudC5zbG90
VGFyZ2V0IHx8ICdcImRlZmF1bHRcIic7KGN1cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgfHwgKGN1
cnJlbnRQYXJlbnQuc2NvcGVkU2xvdHMgPSB7fSkpW25hbWVdID0gZWxlbWVudDtcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50LmNoaWxkcmVuLnB1c2goZWxlbWVudCk7
XG4gICAgICAgICAgZWxlbWVudC5wYXJlbnQgPSBjdXJyZW50UGFyZW50O1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgICBpZiAoIXVuYXJ5KSB7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQgPSBlbGVt
ZW50O1xuICAgICAgICBzdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgZW5kUHJlKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgLy8gYXBwbHkgcG9zdC10cmFuc2Zv
cm1zXG4gICAgICBmb3IgKHZhciBpJDIgPSAwOyBpJDIgPCBwb3N0VHJhbnNmb3Jtcy5sZW5ndGg7
IGkkMisrKSB7XG4gICAgICAgIHBvc3RUcmFuc2Zvcm1zW2kkMl0oZWxlbWVudCwgb3B0aW9ucyk7
XG4gICAgICB9XG4gICAgfSxcblxuICAgIGVuZDogZnVuY3Rpb24gZW5kICgpIHtcbiAgICAgIC8v
IHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlXG4gICAgICB2YXIgZWxlbWVudCA9IHN0YWNrW3N0
YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIGxhc3ROb2RlID0gZWxlbWVudC5jaGlsZHJlbltl
bGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGxhc3ROb2RlICYmIGxhc3RO
b2RlLnR5cGUgPT09IDMgJiYgbGFzdE5vZGUudGV4dCA9PT0gJyAnICYmICFpblByZSkge1xuICAg
ICAgICBlbGVtZW50LmNoaWxkcmVuLnBvcCgpO1xuICAgICAgfVxuICAgICAgLy8gcG9wIHN0YWNr
XG4gICAgICBzdGFjay5sZW5ndGggLT0gMTtcbiAgICAgIGN1cnJlbnRQYXJlbnQgPSBzdGFja1tz
dGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGVuZFByZShlbGVtZW50KTtcbiAgICB9LFxuXG4gICAg
Y2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnRQYXJlbnQp
IHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm5PbmNl
KFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBsYXRlIHJlcXVpcmVzIGEgcm9vdCBlbGVt
ZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9
IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShc
biAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0ZXh0ICsgXCJcXFwiIG91dHNpZGUgcm9v
dCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gSUUgdGV4dGFy
ZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAg
IGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQudGFnID09PSAndGV4dGFyZWEnICYm
XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHRcbiAg
ICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlbiA9IGN1
cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICB0ZXh0ID0gaW5QcmUgfHwgdGV4dC50cmltKClc
biAgICAgICAgPyBpc1RleHRUYWcoY3VycmVudFBhcmVudCkgPyB0ZXh0IDogZGVjb2RlSFRNTENh
Y2hlZCh0ZXh0KVxuICAgICAgICAvLyBvbmx5IHByZXNlcnZlIHdoaXRlc3BhY2UgaWYgaXRzIG5v
dCByaWdodCBhZnRlciBhIHN0YXJ0aW5nIHRhZ1xuICAgICAgICA6IHByZXNlcnZlV2hpdGVzcGFj
ZSAmJiBjaGlsZHJlbi5sZW5ndGggPyAnICcgOiAnJztcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAg
ICAgIHZhciBleHByZXNzaW9uO1xuICAgICAgICBpZiAoIWluVlByZSAmJiB0ZXh0ICE9PSAnICcg
JiYgKGV4cHJlc3Npb24gPSBwYXJzZVRleHQodGV4dCwgZGVsaW1pdGVycykpKSB7XG4gICAgICAg
ICAgY2hpbGRyZW4ucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICAgICAgZXhw
cmVzc2lvbjogZXhwcmVzc2lvbixcbiAgICAgICAgICAgIHRleHQ6IHRleHRcbiAgICAgICAgICB9
KTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0ICE9PSAnICcgfHwgIWNoaWxkcmVuLmxlbmd0aCB8
fCBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS50ZXh0ICE9PSAnICcpIHtcbiAgICAgICAg
ICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IDMsXG4gICAgICAgICAgICB0ZXh0
OiB0ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNv
bW1lbnQ6IGZ1bmN0aW9uIGNvbW1lbnQgKHRleHQpIHtcbiAgICAgIGN1cnJlbnRQYXJlbnQuY2hp
bGRyZW4ucHVzaCh7XG4gICAgICAgIHR5cGU6IDMsXG4gICAgICAgIHRleHQ6IHRleHQsXG4gICAg
ICAgIGlzQ29tbWVudDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJv
b3Rcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1ByZSAoZWwpIHtcbiAgaWYgKGdldEFuZFJlbW92ZUF0
dHIoZWwsICd2LXByZScpICE9IG51bGwpIHtcbiAgICBlbC5wcmUgPSB0cnVlO1xuICB9XG59XG5c
bmZ1bmN0aW9uIHByb2Nlc3NSYXdBdHRycyAoZWwpIHtcbiAgdmFyIGwgPSBlbC5hdHRyc0xpc3Qu
bGVuZ3RoO1xuICBpZiAobCkge1xuICAgIHZhciBhdHRycyA9IGVsLmF0dHJzID0gbmV3IEFycmF5
KGwpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICBhdHRyc1tpXSA9
IHtcbiAgICAgICAgbmFtZTogZWwuYXR0cnNMaXN0W2ldLm5hbWUsXG4gICAgICAgIHZhbHVlOiBK
U09OLnN0cmluZ2lmeShlbC5hdHRyc0xpc3RbaV0udmFsdWUpXG4gICAgICB9O1xuICAgIH1cbiAg
fSBlbHNlIGlmICghZWwucHJlKSB7XG4gICAgLy8gbm9uIHJvb3Qgbm9kZSBpbiBwcmUgYmxvY2tz
IHdpdGggbm8gYXR0cmlidXRlc1xuICAgIGVsLnBsYWluID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBwcm9jZXNzS2V5IChlbCkge1xuICB2YXIgZXhwID0gZ2V0QmluZGluZ0F0dHIoZWwsICdr
ZXknKTtcbiAgaWYgKGV4cCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nICYmIGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgd2FybiQyKFwiPHRl
bXBsYXRlPiBjYW5ub3QgYmUga2V5ZWQuIFBsYWNlIHRoZSBrZXkgb24gcmVhbCBlbGVtZW50cyBp
bnN0ZWFkLlwiKTtcbiAgICB9XG4gICAgZWwua2V5ID0gZXhwO1xuICB9XG59XG5cbmZ1bmN0aW9u
IHByb2Nlc3NSZWYgKGVsKSB7XG4gIHZhciByZWYgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3JlZicp
O1xuICBpZiAocmVmKSB7XG4gICAgZWwucmVmID0gcmVmO1xuICAgIGVsLnJlZkluRm9yID0gY2hl
Y2tJbkZvcihlbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0ZvciAoZWwpIHtcbiAgdmFy
IGV4cDtcbiAgaWYgKChleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1mb3InKSkpIHtcbiAg
ICB2YXIgaW5NYXRjaCA9IGV4cC5tYXRjaChmb3JBbGlhc1JFKTtcbiAgICBpZiAoIWluTWF0Y2gp
IHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybiQy
KFxuICAgICAgICAoXCJJbnZhbGlkIHYtZm9yIGV4cHJlc3Npb246IFwiICsgZXhwKVxuICAgICAg
KTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlbC5mb3IgPSBpbk1hdGNoWzJdLnRyaW0oKTtc
biAgICB2YXIgYWxpYXMgPSBpbk1hdGNoWzFdLnRyaW0oKTtcbiAgICB2YXIgaXRlcmF0b3JNYXRj
aCA9IGFsaWFzLm1hdGNoKGZvckl0ZXJhdG9yUkUpO1xuICAgIGlmIChpdGVyYXRvck1hdGNoKSB7
XG4gICAgICBlbC5hbGlhcyA9IGl0ZXJhdG9yTWF0Y2hbMV0udHJpbSgpO1xuICAgICAgZWwuaXRl
cmF0b3IxID0gaXRlcmF0b3JNYXRjaFsyXS50cmltKCk7XG4gICAgICBpZiAoaXRlcmF0b3JNYXRj
aFszXSkge1xuICAgICAgICBlbC5pdGVyYXRvcjIgPSBpdGVyYXRvck1hdGNoWzNdLnRyaW0oKTtc
biAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwuYWxpYXMgPSBhbGlhcztcbiAgICB9XG4g
IH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0lmIChlbCkge1xuICB2YXIgZXhwID0gZ2V0QW5kUmVt
b3ZlQXR0cihlbCwgJ3YtaWYnKTtcbiAgaWYgKGV4cCkge1xuICAgIGVsLmlmID0gZXhwO1xuICAg
IGFkZElmQ29uZGl0aW9uKGVsLCB7XG4gICAgICBleHA6IGV4cCxcbiAgICAgIGJsb2NrOiBlbFxu
ICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1lbHNl
JykgIT0gbnVsbCkge1xuICAgICAgZWwuZWxzZSA9IHRydWU7XG4gICAgfVxuICAgIHZhciBlbHNl
aWYgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1lbHNlLWlmJyk7XG4gICAgaWYgKGVsc2VpZikg
e1xuICAgICAgZWwuZWxzZWlmID0gZWxzZWlmO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBw
cm9jZXNzSWZDb25kaXRpb25zIChlbCwgcGFyZW50KSB7XG4gIHZhciBwcmV2ID0gZmluZFByZXZF
bGVtZW50KHBhcmVudC5jaGlsZHJlbik7XG4gIGlmIChwcmV2ICYmIHByZXYuaWYpIHtcbiAgICBh
ZGRJZkNvbmRpdGlvbihwcmV2LCB7XG4gICAgICBleHA6IGVsLmVsc2VpZixcbiAgICAgIGJsb2Nr
OiBlbFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICB3YXJuJDIoXG4gICAgICBcInYtXCIgKyAoZWwuZWxzZWlmID8gKCdl
bHNlLWlmPVwiJyArIGVsLmVsc2VpZiArICdcIicpIDogJ2Vsc2UnKSArIFwiIFwiICtcbiAgICAg
IFwidXNlZCBvbiBlbGVtZW50IDxcIiArIChlbC50YWcpICsgXCI+IHdpdGhvdXQgY29ycmVzcG9u
ZGluZyB2LWlmLlwiXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kUHJldkVsZW1lbnQg
KGNoaWxkcmVuKSB7XG4gIHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7
XG4gICAgaWYgKGNoaWxkcmVuW2ldLnR5cGUgPT09IDEpIHtcbiAgICAgIHJldHVybiBjaGlsZHJl
bltpXVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiBjaGlsZHJlbltpXS50ZXh0ICE9PSAnICcpIHtcbiAgICAgICAgd2FybiQy
KFxuICAgICAgICAgIFwidGV4dCBcXFwiXCIgKyAoY2hpbGRyZW5baV0udGV4dC50cmltKCkpICsg
XCJcXFwiIGJldHdlZW4gdi1pZiBhbmQgdi1lbHNlKC1pZikgXCIgK1xuICAgICAgICAgIFwid2ls
bCBiZSBpZ25vcmVkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjaGlsZHJlbi5wb3Ao
KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkSWZDb25kaXRpb24gKGVsLCBjb25kaXRp
b24pIHtcbiAgaWYgKCFlbC5pZkNvbmRpdGlvbnMpIHtcbiAgICBlbC5pZkNvbmRpdGlvbnMgPSBb
XTtcbiAgfVxuICBlbC5pZkNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xufVxuXG5mdW5jdGlv
biBwcm9jZXNzT25jZSAoZWwpIHtcbiAgdmFyIG9uY2UkJDEgPSBnZXRBbmRSZW1vdmVBdHRyKGVs
LCAndi1vbmNlJyk7XG4gIGlmIChvbmNlJCQxICE9IG51bGwpIHtcbiAgICBlbC5vbmNlID0gdHJ1
ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzU2xvdCAoZWwpIHtcbiAgaWYgKGVsLnRhZyA9
PT0gJ3Nsb3QnKSB7XG4gICAgZWwuc2xvdE5hbWUgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ25hbWUn
KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBlbC5r
ZXkpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCJga2V5YCBkb2VzIG5vdCB3b3JrIG9uIDxz
bG90PiBiZWNhdXNlIHNsb3RzIGFyZSBhYnN0cmFjdCBvdXRsZXRzIFwiICtcbiAgICAgICAgXCJh
bmQgY2FuIHBvc3NpYmx5IGV4cGFuZCBpbnRvIG11bHRpcGxlIGVsZW1lbnRzLiBcIiArXG4gICAg
ICAgIFwiVXNlIHRoZSBrZXkgb24gYSB3cmFwcGluZyBlbGVtZW50IGluc3RlYWQuXCJcbiAgICAg
ICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzbG90VGFyZ2V0ID0gZ2V0QmluZGluZ0F0
dHIoZWwsICdzbG90Jyk7XG4gICAgaWYgKHNsb3RUYXJnZXQpIHtcbiAgICAgIGVsLnNsb3RUYXJn
ZXQgPSBzbG90VGFyZ2V0ID09PSAnXCJcIicgPyAnXCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtc
biAgICB9XG4gICAgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgZWwuc2xvdFNj
b3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Njb3BlJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1
bmN0aW9uIHByb2Nlc3NDb21wb25lbnQgKGVsKSB7XG4gIHZhciBiaW5kaW5nO1xuICBpZiAoKGJp
bmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2lzJykpKSB7XG4gICAgZWwuY29tcG9uZW50ID0g
YmluZGluZztcbiAgfVxuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ2lubGluZS10ZW1wbGF0
ZScpICE9IG51bGwpIHtcbiAgICBlbC5pbmxpbmVUZW1wbGF0ZSA9IHRydWU7XG4gIH1cbn1cblxu
ZnVuY3Rpb24gcHJvY2Vzc0F0dHJzIChlbCkge1xuICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtc
biAgdmFyIGksIGwsIG5hbWUsIHJhd05hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGlzUHJvcDtcbiAg
Zm9yIChpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbmFtZSA9IHJh
d05hbWUgPSBsaXN0W2ldLm5hbWU7XG4gICAgdmFsdWUgPSBsaXN0W2ldLnZhbHVlO1xuICAgIGlm
IChkaXJSRS50ZXN0KG5hbWUpKSB7XG4gICAgICAvLyBtYXJrIGVsZW1lbnQgYXMgZHluYW1pY1xu
ICAgICAgZWwuaGFzQmluZGluZ3MgPSB0cnVlO1xuICAgICAgLy8gbW9kaWZpZXJzXG4gICAgICBt
b2RpZmllcnMgPSBwYXJzZU1vZGlmaWVycyhuYW1lKTtcbiAgICAgIGlmIChtb2RpZmllcnMpIHtc
biAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShtb2RpZmllclJFLCAnJyk7XG4gICAgICB9XG4g
ICAgICBpZiAoYmluZFJFLnRlc3QobmFtZSkpIHsgLy8gdi1iaW5kXG4gICAgICAgIG5hbWUgPSBu
YW1lLnJlcGxhY2UoYmluZFJFLCAnJyk7XG4gICAgICAgIHZhbHVlID0gcGFyc2VGaWx0ZXJzKHZh
bHVlKTtcbiAgICAgICAgaXNQcm9wID0gZmFsc2U7XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtc
biAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3ApIHtcbiAgICAgICAgICAgIGlzUHJvcCA9IHRy
dWU7XG4gICAgICAgICAgICBuYW1lID0gY2FtZWxpemUobmFtZSk7XG4gICAgICAgICAgICBpZiAo
bmFtZSA9PT0gJ2lubmVySHRtbCcpIHsgbmFtZSA9ICdpbm5lckhUTUwnOyB9XG4gICAgICAgICAg
fVxuICAgICAgICAgIGlmIChtb2RpZmllcnMuY2FtZWwpIHtcbiAgICAgICAgICAgIG5hbWUgPSBj
YW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5j
KSB7XG4gICAgICAgICAgICBhZGRIYW5kbGVyKFxuICAgICAgICAgICAgICBlbCxcbiAgICAgICAg
ICAgICAgKFwidXBkYXRlOlwiICsgKGNhbWVsaXplKG5hbWUpKSksXG4gICAgICAgICAgICAgIGdl
bkFzc2lnbm1lbnRDb2RlKHZhbHVlLCBcIiRldmVudFwiKVxuICAgICAgICAgICAgKTtcbiAgICAg
ICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUHJvcCB8fCAoXG4gICAgICAgICAgIWVs
LmNvbXBvbmVudCAmJiBwbGF0Zm9ybU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlw
ZSwgbmFtZSlcbiAgICAgICAgKSkge1xuICAgICAgICAgIGFkZFByb3AoZWwsIG5hbWUsIHZhbHVl
KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSk7
XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob25SRS50ZXN0KG5hbWUpKSB7IC8vIHYtb25c
biAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShvblJFLCAnJyk7XG4gICAgICAgIGFkZEhhbmRs
ZXIoZWwsIG5hbWUsIHZhbHVlLCBtb2RpZmllcnMsIGZhbHNlLCB3YXJuJDIpO1xuICAgICAgfSBl
bHNlIHsgLy8gbm9ybWFsIGRpcmVjdGl2ZXNcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShk
aXJSRSwgJycpO1xuICAgICAgICAvLyBwYXJzZSBhcmdcbiAgICAgICAgdmFyIGFyZ01hdGNoID0g
bmFtZS5tYXRjaChhcmdSRSk7XG4gICAgICAgIHZhciBhcmcgPSBhcmdNYXRjaCAmJiBhcmdNYXRj
aFsxXTtcbiAgICAgICAgaWYgKGFyZykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAs
IC0oYXJnLmxlbmd0aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgICBhZGREaXJlY3RpdmUoZWws
IG5hbWUsIHJhd05hbWUsIHZhbHVlLCBhcmcsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtc
biAgICAgICAgICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGV4
cHJlc3Npb24gPSBwYXJzZVRleHQodmFsdWUsIGRlbGltaXRlcnMpO1xuICAgICAgICBpZiAoZXhw
cmVzc2lvbikge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIG5hbWUgKyBcIj1cXFwi
XCIgKyB2YWx1ZSArIFwiXFxcIjogXCIgK1xuICAgICAgICAgICAgJ0ludGVycG9sYXRpb24gaW5z
aWRlIGF0dHJpYnV0ZXMgaGFzIGJlZW4gcmVtb3ZlZC4gJyArXG4gICAgICAgICAgICAnVXNlIHYt
YmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAg
ICAgICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgaWQ9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpp
ZD1cInZhbFwiPi4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWRk
QXR0cihlbCwgbmFtZSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cblxu
ZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAo
cGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0
dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1
cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1h
dGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJl
dCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSld
ID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRy
c01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0
dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAh
aXNJRSAmJiAhaXNFZGdlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1
dGU6ICcgKyBhdHRyc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgbWFwW2F0dHJzW2ldLm5hbWVdID0g
YXR0cnNbaV0udmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG4vLyBmb3Igc2NyaXB0IChl
LmcuIHR5cGU9XCJ4L3RlbXBsYXRlXCIpIG9yIHN0eWxlLCBkbyBub3QgZGVjb2RlIGNvbnRlbnRc
bmZ1bmN0aW9uIGlzVGV4dFRhZyAoZWwpIHtcbiAgcmV0dXJuIGVsLnRhZyA9PT0gJ3NjcmlwdCcg
fHwgZWwudGFnID09PSAnc3R5bGUnXG59XG5cbmZ1bmN0aW9uIGlzRm9yYmlkZGVuVGFnIChlbCkg
e1xuICByZXR1cm4gKFxuICAgIGVsLnRhZyA9PT0gJ3N0eWxlJyB8fFxuICAgIChlbC50YWcgPT09
ICdzY3JpcHQnICYmIChcbiAgICAgICFlbC5hdHRyc01hcC50eXBlIHx8XG4gICAgICBlbC5hdHRy
c01hcC50eXBlID09PSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICkpXG4gIClcbn1cblxudmFyIGll
TlNCdWcgPSAvXnhtbG5zOk5TXFxkKy87XG52YXIgaWVOU1ByZWZpeCA9IC9eTlNcXGQrOi87XG5c
bi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBndWFyZElFU1ZHQnVnIChhdHRy
cykge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3Ro
OyBpKyspIHtcbiAgICB2YXIgYXR0ciA9IGF0dHJzW2ldO1xuICAgIGlmICghaWVOU0J1Zy50ZXN0
KGF0dHIubmFtZSkpIHtcbiAgICAgIGF0dHIubmFtZSA9IGF0dHIubmFtZS5yZXBsYWNlKGllTlNQ
cmVmaXgsICcnKTtcbiAgICAgIHJlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4g
cmVzXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yQWxpYXNNb2RlbCAoZWwsIHZhbHVlKSB7XG4gIHZh
ciBfZWwgPSBlbDtcbiAgd2hpbGUgKF9lbCkge1xuICAgIGlmIChfZWwuZm9yICYmIF9lbC5hbGlh
cyA9PT0gdmFsdWUpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCI8XCIgKyAoZWwudGFnKSAr
IFwiIHYtbW9kZWw9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI+OiBcIiArXG4gICAgICAgIFwiWW91
IGFyZSBiaW5kaW5nIHYtbW9kZWwgZGlyZWN0bHkgdG8gYSB2LWZvciBpdGVyYXRpb24gYWxpYXMu
IFwiICtcbiAgICAgICAgXCJUaGlzIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5IHRoZSB2LWZv
ciBzb3VyY2UgYXJyYXkgYmVjYXVzZSBcIiArXG4gICAgICAgIFwid3JpdGluZyB0byB0aGUgYWxp
YXMgaXMgbGlrZSBtb2RpZnlpbmcgYSBmdW5jdGlvbiBsb2NhbCB2YXJpYWJsZS4gXCIgK1xuICAg
ICAgICBcIkNvbnNpZGVyIHVzaW5nIGFuIGFycmF5IG9mIG9iamVjdHMgYW5kIHVzZSB2LW1vZGVs
IG9uIGFuIG9iamVjdCBwcm9wZXJ0eSBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBf
ZWwgPSBfZWwucGFyZW50O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52
YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNh
Y2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjog
d2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10
cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRo
YXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1
Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNv
IHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3Ig
dGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRo
ZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9u
cykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNL
ZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZl
ZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFy
ayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNv
bmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxz
ZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFr
ZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGls
ZHJlbixhdHRycycgK1xuICAgIChrZXlzID8gJywnICsga2V5cyA6ICcnKVxuICApXG59XG5cbmZ1
bmN0aW9uIG1hcmtTdGF0aWMkMSAobm9kZSkge1xuICBub2RlLnN0YXRpYyA9IGlzU3RhdGljKG5v
ZGUpO1xuICBpZiAobm9kZS50eXBlID09PSAxKSB7XG4gICAgLy8gZG8gbm90IG1ha2UgY29tcG9u
ZW50IHNsb3QgY29udGVudCBzdGF0aWMuIHRoaXMgYXZvaWRzXG4gICAgLy8gMS4gY29tcG9uZW50
cyBub3QgYWJsZSB0byBtdXRhdGUgc2xvdCBub2Rlc1xuICAgIC8vIDIuIHN0YXRpYyBzbG90IGNv
bnRlbnQgZmFpbHMgZm9yIGhvdC1yZWxvYWRpbmdcbiAgICBpZiAoXG4gICAgICAhaXNQbGF0Zm9y
bVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJlxuICAgICAgbm9kZS50YWcgIT09ICdzbG90JyAmJlxu
ICAgICAgbm9kZS5hdHRyc01hcFsnaW5saW5lLXRlbXBsYXRlJ10gPT0gbnVsbFxuICAgICkge1xu
ICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJl
bi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGUuY2hpbGRyZW5b
aV07XG4gICAgICBtYXJrU3RhdGljJDEoY2hpbGQpO1xuICAgICAgaWYgKCFjaGlsZC5zdGF0aWMp
IHtcbiAgICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYg
KG5vZGUuaWZDb25kaXRpb25zKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAxLCBsJDEgPSBub2Rl
LmlmQ29uZGl0aW9ucy5sZW5ndGg7IGkkMSA8IGwkMTsgaSQxKyspIHtcbiAgICAgICAgdmFyIGJs
b2NrID0gbm9kZS5pZkNvbmRpdGlvbnNbaSQxXS5ibG9jaztcbiAgICAgICAgbWFya1N0YXRpYyQx
KGJsb2NrKTtcbiAgICAgICAgaWYgKCFibG9jay5zdGF0aWMpIHtcbiAgICAgICAgICBub2RlLnN0
YXRpYyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0
aW9uIG1hcmtTdGF0aWNSb290cyAobm9kZSwgaXNJbkZvcikge1xuICBpZiAobm9kZS50eXBlID09
PSAxKSB7XG4gICAgaWYgKG5vZGUuc3RhdGljIHx8IG5vZGUub25jZSkge1xuICAgICAgbm9kZS5z
dGF0aWNJbkZvciA9IGlzSW5Gb3I7XG4gICAgfVxuICAgIC8vIEZvciBhIG5vZGUgdG8gcXVhbGlm
eSBhcyBhIHN0YXRpYyByb290LCBpdCBzaG91bGQgaGF2ZSBjaGlsZHJlbiB0aGF0XG4gICAgLy8g
YXJlIG5vdCBqdXN0IHN0YXRpYyB0ZXh0LiBPdGhlcndpc2UgdGhlIGNvc3Qgb2YgaG9pc3Rpbmcg
b3V0IHdpbGxcbiAgICAvLyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgYW5kIGl0J3MgYmV0dGVyIG9m
ZiB0byBqdXN0IGFsd2F5cyByZW5kZXIgaXQgZnJlc2guXG4gICAgaWYgKG5vZGUuc3RhdGljICYm
IG5vZGUuY2hpbGRyZW4ubGVuZ3RoICYmICEoXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9
PT0gMSAmJlxuICAgICAgbm9kZS5jaGlsZHJlblswXS50eXBlID09PSAzXG4gICAgKSkge1xuICAg
ICAgbm9kZS5zdGF0aWNSb290ID0gdHJ1ZTtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSB7XG4g
ICAgICBub2RlLnN0YXRpY1Jvb3QgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRy
ZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkg
PCBsOyBpKyspIHtcbiAgICAgICAgbWFya1N0YXRpY1Jvb3RzKG5vZGUuY2hpbGRyZW5baV0sIGlz
SW5Gb3IgfHwgISFub2RlLmZvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29u
ZGl0aW9ucykge1xuICAgICAgZm9yICh2YXIgaSQxID0gMSwgbCQxID0gbm9kZS5pZkNvbmRpdGlv
bnMubGVuZ3RoOyBpJDEgPCBsJDE7IGkkMSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290cyhu
b2RlLmlmQ29uZGl0aW9uc1tpJDFdLmJsb2NrLCBpc0luRm9yKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn1cblxuZnVuY3Rpb24gaXNTdGF0aWMgKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0g
MikgeyAvLyBleHByZXNzaW9uXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKG5vZGUudHlw
ZSA9PT0gMykgeyAvLyB0ZXh0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gISEobm9k
ZS5wcmUgfHwgKFxuICAgICFub2RlLmhhc0JpbmRpbmdzICYmIC8vIG5vIGR5bmFtaWMgYmluZGlu
Z3NcbiAgICAhbm9kZS5pZiAmJiAhbm9kZS5mb3IgJiYgLy8gbm90IHYtaWYgb3Igdi1mb3Igb3Ig
di1lbHNlXG4gICAgIWlzQnVpbHRJblRhZyhub2RlLnRhZykgJiYgLy8gbm90IGEgYnVpbHQtaW5c
biAgICBpc1BsYXRmb3JtUmVzZXJ2ZWRUYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGNvbXBvbmVu
dFxuICAgICFpc0RpcmVjdENoaWxkT2ZUZW1wbGF0ZUZvcihub2RlKSAmJlxuICAgIE9iamVjdC5r
ZXlzKG5vZGUpLmV2ZXJ5KGlzU3RhdGljS2V5KVxuICApKVxufVxuXG5mdW5jdGlvbiBpc0RpcmVj
dENoaWxkT2ZUZW1wbGF0ZUZvciAobm9kZSkge1xuICB3aGlsZSAobm9kZS5wYXJlbnQpIHtcbiAg
ICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgaWYgKG5vZGUudGFnICE9PSAndGVtcGxhdGUnKSB7
XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKG5vZGUuZm9yKSB7XG4gICAgICBy
ZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbnZh
ciBmbkV4cFJFID0gL15cXHMqKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9u
XFxzKlxcKC87XG52YXIgc2ltcGxlUGF0aFJFID0gL15cXHMqW0EtWmEtel8kXVtcXHckXSooPzpc
XC5bQS1aYS16XyRdW1xcdyRdKnxcXFsnLio/J118XFxbXCIuKj9cIl18XFxbXFxkK118XFxbW0Et
WmEtel8kXVtcXHckXSpdKSpcXHMqJC87XG5cbi8vIGtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNv
ZGVzID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMy
LFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAn
ZGVsZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gIzQ4Njg6IG1vZGlmaWVycyB0aGF0IHByZXZlbnQg
dGhlIGV4ZWN1dGlvbiBvZiB0aGUgbGlzdGVuZXJcbi8vIG5lZWQgdG8gZXhwbGljaXRseSByZXR1
cm4gbnVsbCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciB0byByZW1vdmVcbi8vIHRo
ZSBsaXN0ZW5lciBmb3IgLm9uY2VcbnZhciBnZW5HdWFyZCA9IGZ1bmN0aW9uIChjb25kaXRpb24p
IHsgcmV0dXJuIChcImlmKFwiICsgY29uZGl0aW9uICsgXCIpcmV0dXJuIG51bGw7XCIpOyB9O1xu
XG52YXIgbW9kaWZpZXJDb2RlID0ge1xuICBzdG9wOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OycsXG4gIHByZXZlbnQ6ICckZXZlbnQucHJldmVudERlZmF1bHQoKTsnLFxuICBzZWxmOiBnZW5H
dWFyZChcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLFxuICBjdHJs
OiBnZW5HdWFyZChcIiEkZXZlbnQuY3RybEtleVwiKSxcbiAgc2hpZnQ6IGdlbkd1YXJkKFwiISRl
dmVudC5zaGlmdEtleVwiKSxcbiAgYWx0OiBnZW5HdWFyZChcIiEkZXZlbnQuYWx0S2V5XCIpLFxu
ICBtZXRhOiBnZW5HdWFyZChcIiEkZXZlbnQubWV0YUtleVwiKSxcbiAgbGVmdDogZ2VuR3VhcmQo
XCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMFwiKSxcbiAgbWlkZGxl
OiBnZW5HdWFyZChcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIp
LFxuICByaWdodDogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRv
biAhPT0gMlwiKVxufTtcblxuZnVuY3Rpb24gZ2VuSGFuZGxlcnMgKFxuICBldmVudHMsXG4gIGlz
TmF0aXZlLFxuICB3YXJuXG4pIHtcbiAgdmFyIHJlcyA9IGlzTmF0aXZlID8gJ25hdGl2ZU9uOnsn
IDogJ29uOnsnO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVy
ID0gZXZlbnRzW25hbWVdO1xuICAgIC8vICM1MzMwOiB3YXJuIGNsaWNrLnJpZ2h0LCBzaW5jZSBy
aWdodCBjbGlja3MgZG8gbm90IGFjdHVhbGx5IGZpcmUgY2xpY2sgZXZlbnRzLlxuICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBuYW1lID09PSAn
Y2xpY2snICYmXG4gICAgICBoYW5kbGVyICYmIGhhbmRsZXIubW9kaWZpZXJzICYmIGhhbmRsZXIu
bW9kaWZpZXJzLnJpZ2h0XG4gICAgKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIlVzZSBcXFwi
Y29udGV4dG1lbnVcXFwiIGluc3RlYWQgb2YgXFxcImNsaWNrLnJpZ2h0XFxcIiBzaW5jZSByaWdo
dCBjbGlja3MgXCIgK1xuICAgICAgICBcImRvIG5vdCBhY3R1YWxseSBmaXJlIFxcXCJjbGlja1xc
XCIgZXZlbnRzLlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXMgKz0gXCJcXFwiXCIgKyBuYW1l
ICsgXCJcXFwiOlwiICsgKGdlbkhhbmRsZXIobmFtZSwgaGFuZGxlcikpICsgXCIsXCI7XG4gIH1c
biAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnfSdcbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxl
ciAoXG4gIG5hbWUsXG4gIGhhbmRsZXJcbikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1
cm4gJ2Z1bmN0aW9uKCl7fSdcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7
XG4gICAgcmV0dXJuIChcIltcIiArIChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyBy
ZXR1cm4gZ2VuSGFuZGxlcihuYW1lLCBoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxu
ICB9XG5cbiAgdmFyIGlzTWV0aG9kUGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFs
dWUpO1xuICB2YXIgaXNGdW5jdGlvbkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52
YWx1ZSk7XG5cbiAgaWYgKCFoYW5kbGVyLm1vZGlmaWVycykge1xuICAgIHJldHVybiBpc01ldGhv
ZFBhdGggfHwgaXNGdW5jdGlvbkV4cHJlc3Npb25cbiAgICAgID8gaGFuZGxlci52YWx1ZVxuICAg
ICAgOiAoXCJmdW5jdGlvbigkZXZlbnQpe1wiICsgKGhhbmRsZXIudmFsdWUpICsgXCJ9XCIpIC8v
IGlubGluZSBzdGF0ZW1lbnRcbiAgfSBlbHNlIHtcbiAgICB2YXIgY29kZSA9ICcnO1xuICAgIHZh
ciBnZW5Nb2RpZmllckNvZGUgPSAnJztcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFy
IGtleSBpbiBoYW5kbGVyLm1vZGlmaWVycykge1xuICAgICAgaWYgKG1vZGlmaWVyQ29kZVtrZXld
KSB7XG4gICAgICAgIGdlbk1vZGlmaWVyQ29kZSArPSBtb2RpZmllckNvZGVba2V5XTtcbiAgICAg
ICAgLy8gbGVmdC9yaWdodFxuICAgICAgICBpZiAoa2V5Q29kZXNba2V5XSkge1xuICAgICAgICAg
IGtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlz
LnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAg
ICBjb2RlICs9IGdlbktleUZpbHRlcihrZXlzKTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIG1v
ZGlmaWVycyBsaWtlIHByZXZlbnQgYW5kIHN0b3AgZ2V0IGV4ZWN1dGVkIGFmdGVyIGtleSBmaWx0
ZXJpbmdcbiAgICBpZiAoZ2VuTW9kaWZpZXJDb2RlKSB7XG4gICAgICBjb2RlICs9IGdlbk1vZGlm
aWVyQ29kZTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZXJDb2RlID0gaXNNZXRob2RQYXRoXG4gICAg
ICA/IGhhbmRsZXIudmFsdWUgKyAnKCRldmVudCknXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNz
aW9uXG4gICAgICAgID8gKFwiKFwiICsgKGhhbmRsZXIudmFsdWUpICsgXCIpKCRldmVudClcIilc
biAgICAgICAgOiBoYW5kbGVyLnZhbHVlO1xuICAgIHJldHVybiAoXCJmdW5jdGlvbigkZXZlbnQp
e1wiICsgY29kZSArIGhhbmRsZXJDb2RlICsgXCJ9XCIpXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2Vu
S2V5RmlsdGVyIChrZXlzKSB7XG4gIHJldHVybiAoXCJpZighKCdidXR0b24nIGluICRldmVudCkm
JlwiICsgKGtleXMubWFwKGdlbkZpbHRlckNvZGUpLmpvaW4oJyYmJykpICsgXCIpcmV0dXJuIG51
bGw7XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFs
ID0gcGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2
ZW50LmtleUNvZGUhPT1cIiArIGtleVZhbClcbiAgfVxuICB2YXIgYWxpYXMgPSBrZXlDb2Rlc1tr
ZXldO1xuICByZXR1cm4gKFwiX2soJGV2ZW50LmtleUNvZGUsXCIgKyAoSlNPTi5zdHJpbmdpZnko
a2V5KSkgKyAoYWxpYXMgPyAnLCcgKyBKU09OLnN0cmluZ2lmeShhbGlhcykgOiAnJykgKyBcIilc
Iilcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG9uIChlbCwgZGlyKSB7XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRpci5tb2RpZmllcnMpIHtcbiAgICB3
YXJuKFwidi1vbiB3aXRob3V0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgbW9kaWZpZXJzLlwi
KTtcbiAgfVxuICBlbC53cmFwTGlzdGVuZXJzID0gZnVuY3Rpb24gKGNvZGUpIHsgcmV0dXJuIChc
Il9nKFwiICsgY29kZSArIFwiLFwiICsgKGRpci52YWx1ZSkgKyBcIilcIik7IH07XG59XG5cbi8q
ICAqL1xuXG5mdW5jdGlvbiBiaW5kJDEgKGVsLCBkaXIpIHtcbiAgZWwud3JhcERhdGEgPSBmdW5j
dGlvbiAoY29kZSkge1xuICAgIHJldHVybiAoXCJfYihcIiArIGNvZGUgKyBcIiwnXCIgKyAoZWwu
dGFnKSArIFwiJyxcIiArIChkaXIudmFsdWUpICsgXCIsXCIgKyAoZGlyLm1vZGlmaWVycyAmJiBk
aXIubW9kaWZpZXJzLnByb3AgPyAndHJ1ZScgOiAnZmFsc2UnKSArIChkaXIubW9kaWZpZXJzICYm
IGRpci5tb2RpZmllcnMuc3luYyA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbiAgfTtcbn1cblxu
LyogICovXG5cbnZhciBiYXNlRGlyZWN0aXZlcyA9IHtcbiAgb246IG9uLFxuICBiaW5kOiBiaW5k
JDEsXG4gIGNsb2FrOiBub29wXG59O1xuXG4vKiAgKi9cblxudmFyIENvZGVnZW5TdGF0ZSA9IGZ1
bmN0aW9uIENvZGVnZW5TdGF0ZSAob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25z
O1xuICB0aGlzLndhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRoaXMudHJhbnNm
b3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29k
ZScpO1xuICB0aGlzLmRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9k
dWxlcywgJ2dlbkRhdGEnKTtcbiAgdGhpcy5kaXJlY3RpdmVzID0gZXh0ZW5kKGV4dGVuZCh7fSwg
YmFzZURpcmVjdGl2ZXMpLCBvcHRpb25zLmRpcmVjdGl2ZXMpO1xuICB2YXIgaXNSZXNlcnZlZFRh
ZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdGhpcy5tYXliZUNvbXBvbmVudCA9
IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcbiAgdGhp
cy5vbmNlSWQgPSAwO1xuICB0aGlzLnN0YXRpY1JlbmRlckZucyA9IFtdO1xufTtcblxuXG5cbmZ1
bmN0aW9uIGdlbmVyYXRlIChcbiAgYXN0LFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIHN0YXRlID0g
bmV3IENvZGVnZW5TdGF0ZShvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50
KGFzdCwgc3RhdGUpIDogJ19jKFwiZGl2XCIpJztcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChc
IndpdGgodGhpcyl7cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJG
bnM6IHN0YXRlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQg
KGVsLCBzdGF0ZSkge1xuICBpZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2Vk
KSB7XG4gICAgcmV0dXJuIGdlblN0YXRpYyhlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwub25j
ZSAmJiAhZWwub25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsLCBzdGF0ZSlc
biAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBn
ZW5Gb3IoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkg
e1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAn
dGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0KSB7XG4gICAgcmV0dXJuIGdlbkNoaWxkcmVuKGVs
LCBzdGF0ZSkgfHwgJ3ZvaWQgMCdcbiAgfSBlbHNlIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xu
ICAgIHJldHVybiBnZW5TbG90KGVsLCBzdGF0ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyBjb21wb25l
bnQgb3IgZWxlbWVudFxuICAgIHZhciBjb2RlO1xuICAgIGlmIChlbC5jb21wb25lbnQpIHtcbiAg
ICAgIGNvZGUgPSBnZW5Db21wb25lbnQoZWwuY29tcG9uZW50LCBlbCwgc3RhdGUpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICB2YXIgZGF0YSA9IGVsLnBsYWluID8gdW5kZWZpbmVkIDogZ2VuRGF0YSQy
KGVsLCBzdGF0ZSk7XG5cbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsLmlubGluZVRlbXBsYXRlID8g
bnVsbCA6IGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICBjb2RlID0gXCJfYygn
XCIgKyAoZWwudGFnKSArIFwiJ1wiICsgKGRhdGEgPyAoXCIsXCIgKyBkYXRhKSA6ICcnKSArIChj
aGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiO1xuICAgIH1cbiAgICAv
LyBtb2R1bGUgdHJhbnNmb3Jtc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUudHJhbnNm
b3Jtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnRyYW5zZm9ybXNbaV0oZWws
IGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gY29kZVxuICB9XG59XG5cbi8vIGhvaXN0IHN0YXRp
YyBzdWItdHJlZXMgb3V0XG5mdW5jdGlvbiBnZW5TdGF0aWMgKGVsLCBzdGF0ZSkge1xuICBlbC5z
dGF0aWNQcm9jZXNzZWQgPSB0cnVlO1xuICBzdGF0ZS5zdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3
aXRoKHRoaXMpe3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCIpKTtc
biAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRlLnN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSAr
IChlbC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNl
XG5mdW5jdGlvbiBnZW5PbmNlIChlbCwgc3RhdGUpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRy
dWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYo
ZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9
ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xu
ICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAg
ICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxu
ICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHN0YXRlLndhcm4oXG4gICAgICAgIFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5z
aWRlIHYtZm9yIHRoYXQgaXMga2V5ZWQuIFwiXG4gICAgICApO1xuICAgICAgcmV0dXJuIGdlbkVs
ZW1lbnQoZWwsIHN0YXRlKVxuICAgIH1cbiAgICByZXR1cm4gKFwiX28oXCIgKyAoZ2VuRWxlbWVu
dChlbCwgc3RhdGUpKSArIFwiLFwiICsgKHN0YXRlLm9uY2VJZCsrKSArIChrZXkgPyAoXCIsXCIg
KyBrZXkpIDogXCJcIikgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuU3RhdGlj
KGVsLCBzdGF0ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JZiAoXG4gIGVsLFxuICBzdGF0ZSxc
biAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8g
YXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25z
LnNsaWNlKCksIHN0YXRlLCBhbHRHZW4sIGFsdEVtcHR5KVxufVxuXG5mdW5jdGlvbiBnZW5JZkNv
bmRpdGlvbnMgKFxuICBjb25kaXRpb25zLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0
eVxuKSB7XG4gIGlmICghY29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYWx0RW1wdHkg
fHwgJ19lKCknXG4gIH1cblxuICB2YXIgY29uZGl0aW9uID0gY29uZGl0aW9ucy5zaGlmdCgpO1xu
ICBpZiAoY29uZGl0aW9uLmV4cCkge1xuICAgIHJldHVybiAoXCIoXCIgKyAoY29uZGl0aW9uLmV4
cCkgKyBcIik/XCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSArIFwiOlwiICsg
KGdlbklmQ29uZGl0aW9ucyhjb25kaXRpb25zLCBzdGF0ZSwgYWx0R2VuLCBhbHRFbXB0eSkpKVxu
ICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5i
bG9jaykpKVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQgZ2VuZXJhdGUgY29k
ZSBsaWtlIChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5RXhwIChlbCkge1xu
ICAgIHJldHVybiBhbHRHZW5cbiAgICAgID8gYWx0R2VuKGVsLCBzdGF0ZSlcbiAgICAgIDogZWwu
b25jZVxuICAgICAgICA/IGdlbk9uY2UoZWwsIHN0YXRlKVxuICAgICAgICA6IGdlbkVsZW1lbnQo
ZWwsIHN0YXRlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkZvciAoXG4gIGVsLFxuICBzdGF0ZSxc
biAgYWx0R2VuLFxuICBhbHRIZWxwZXJcbikge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIg
YWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixc
IiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3Iy
ID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBzdGF0ZS5tYXliZUNvbXBvbmVudChlbCkg
JiZcbiAgICBlbC50YWcgIT09ICdzbG90JyAmJlxuICAgIGVsLnRhZyAhPT0gJ3RlbXBsYXRlJyAm
JlxuICAgICFlbC5rZXlcbiAgKSB7XG4gICAgc3RhdGUud2FybihcbiAgICAgIFwiPFwiICsgKGVs
LnRhZykgKyBcIiB2LWZvcj1cXFwiXCIgKyBhbGlhcyArIFwiIGluIFwiICsgZXhwICsgXCJcXFwi
PjogY29tcG9uZW50IGxpc3RzIHJlbmRlcmVkIHdpdGggXCIgK1xuICAgICAgXCJ2LWZvciBzaG91
bGQgaGF2ZSBleHBsaWNpdCBrZXlzLiBcIiArXG4gICAgICBcIlNlZSBodHRwczovL3Z1ZWpzLm9y
Zy9ndWlkZS9saXN0Lmh0bWwja2V5IGZvciBtb3JlIGluZm8uXCIsXG4gICAgICB0cnVlIC8qIHRp
cCAqL1xuICAgICk7XG4gIH1cblxuICBlbC5mb3JQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCBy
ZWN1cnNpb25cbiAgcmV0dXJuIChhbHRIZWxwZXIgfHwgJ19sJykgKyBcIigoXCIgKyBleHAgKyBc
IiksXCIgK1xuICAgIFwiZnVuY3Rpb24oXCIgKyBhbGlhcyArIGl0ZXJhdG9yMSArIGl0ZXJhdG9y
MiArIFwiKXtcIiArXG4gICAgICBcInJldHVybiBcIiArICgoYWx0R2VuIHx8IGdlbkVsZW1lbnQp
KGVsLCBzdGF0ZSkpICtcbiAgICAnfSknXG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEkMiAoZWwsIHN0
YXRlKSB7XG4gIHZhciBkYXRhID0gJ3snO1xuXG4gIC8vIGRpcmVjdGl2ZXMgZmlyc3QuXG4gIC8v
IGRpcmVjdGl2ZXMgbWF5IG11dGF0ZSB0aGUgZWwncyBvdGhlciBwcm9wZXJ0aWVzIGJlZm9yZSB0
aGV5IGFyZSBnZW5lcmF0ZWQuXG4gIHZhciBkaXJzID0gZ2VuRGlyZWN0aXZlcyhlbCwgc3RhdGUp
O1xuICBpZiAoZGlycykgeyBkYXRhICs9IGRpcnMgKyAnLCc7IH1cblxuICAvLyBrZXlcbiAgaWYg
KGVsLmtleSkge1xuICAgIGRhdGEgKz0gXCJrZXk6XCIgKyAoZWwua2V5KSArIFwiLFwiO1xuICB9
XG4gIC8vIHJlZlxuICBpZiAoZWwucmVmKSB7XG4gICAgZGF0YSArPSBcInJlZjpcIiArIChlbC5y
ZWYpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnJlZkluRm9yKSB7XG4gICAgZGF0YSArPSBcInJl
ZkluRm9yOnRydWUsXCI7XG4gIH1cbiAgLy8gcHJlXG4gIGlmIChlbC5wcmUpIHtcbiAgICBkYXRh
ICs9IFwicHJlOnRydWUsXCI7XG4gIH1cbiAgLy8gcmVjb3JkIG9yaWdpbmFsIHRhZyBuYW1lIGZv
ciBjb21wb25lbnRzIHVzaW5nIFwiaXNcIiBhdHRyaWJ1dGVcbiAgaWYgKGVsLmNvbXBvbmVudCkg
e1xuICAgIGRhdGEgKz0gXCJ0YWc6XFxcIlwiICsgKGVsLnRhZykgKyBcIlxcXCIsXCI7XG4gIH1c
biAgLy8gbW9kdWxlIGRhdGEgZ2VuZXJhdGlvbiBmdW5jdGlvbnNcbiAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzdGF0ZS5kYXRhR2VuRm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgZGF0YSArPSBzdGF0ZS5k
YXRhR2VuRm5zW2ldKGVsKTtcbiAgfVxuICAvLyBhdHRyaWJ1dGVzXG4gIGlmIChlbC5hdHRycykg
e1xuICAgIGRhdGEgKz0gXCJhdHRyczp7XCIgKyAoZ2VuUHJvcHMoZWwuYXR0cnMpKSArIFwifSxc
IjtcbiAgfVxuICAvLyBET00gcHJvcHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBc
ImRvbVByb3BzOntcIiArIChnZW5Qcm9wcyhlbC5wcm9wcykpICsgXCJ9LFwiO1xuICB9XG4gIC8v
IGV2ZW50IGhhbmRsZXJzXG4gIGlmIChlbC5ldmVudHMpIHtcbiAgICBkYXRhICs9IChnZW5IYW5k
bGVycyhlbC5ldmVudHMsIGZhbHNlLCBzdGF0ZS53YXJuKSkgKyBcIixcIjtcbiAgfVxuICBpZiAo
ZWwubmF0aXZlRXZlbnRzKSB7XG4gICAgZGF0YSArPSAoZ2VuSGFuZGxlcnMoZWwubmF0aXZlRXZl
bnRzLCB0cnVlLCBzdGF0ZS53YXJuKSkgKyBcIixcIjtcbiAgfVxuICAvLyBzbG90IHRhcmdldFxu
ICBpZiAoZWwuc2xvdFRhcmdldCkge1xuICAgIGRhdGEgKz0gXCJzbG90OlwiICsgKGVsLnNsb3RU
YXJnZXQpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2NvcGVkIHNsb3RzXG4gIGlmIChlbC5zY29wZWRT
bG90cykge1xuICAgIGRhdGEgKz0gKGdlblNjb3BlZFNsb3RzKGVsLnNjb3BlZFNsb3RzLCBzdGF0
ZSkpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYtbW9kZWxcbiAgaWYgKGVsLm1vZGVs
KSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiArIChlbC5tb2RlbC52YWx1ZSkgKyBc
IixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykgKyBcIixleHByZXNzaW9uOlwiICsg
KGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1wbGF0
ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUgPSBn
ZW5JbmxpbmVUZW1wbGF0ZShlbCwgc3RhdGUpO1xuICAgIGlmIChpbmxpbmVUZW1wbGF0ZSkge1xu
ICAgICAgZGF0YSArPSBpbmxpbmVUZW1wbGF0ZSArIFwiLFwiO1xuICAgIH1cbiAgfVxuICBkYXRh
ID0gZGF0YS5yZXBsYWNlKC8sJC8sICcnKSArICd9JztcbiAgLy8gdi1iaW5kIGRhdGEgd3JhcFxu
ICBpZiAoZWwud3JhcERhdGEpIHtcbiAgICBkYXRhID0gZWwud3JhcERhdGEoZGF0YSk7XG4gIH1c
biAgLy8gdi1vbiBkYXRhIHdyYXBcbiAgaWYgKGVsLndyYXBMaXN0ZW5lcnMpIHtcbiAgICBkYXRh
ID0gZWwud3JhcExpc3RlbmVycyhkYXRhKTtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5j
dGlvbiBnZW5EaXJlY3RpdmVzIChlbCwgc3RhdGUpIHtcbiAgdmFyIGRpcnMgPSBlbC5kaXJlY3Rp
dmVzO1xuICBpZiAoIWRpcnMpIHsgcmV0dXJuIH1cbiAgdmFyIHJlcyA9ICdkaXJlY3RpdmVzOlsn
O1xuICB2YXIgaGFzUnVudGltZSA9IGZhbHNlO1xuICB2YXIgaSwgbCwgZGlyLCBuZWVkUnVudGlt
ZTtcbiAgZm9yIChpID0gMCwgbCA9IGRpcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZGly
ID0gZGlyc1tpXTtcbiAgICBuZWVkUnVudGltZSA9IHRydWU7XG4gICAgdmFyIGdlbiA9IHN0YXRl
LmRpcmVjdGl2ZXNbZGlyLm5hbWVdO1xuICAgIGlmIChnZW4pIHtcbiAgICAgIC8vIGNvbXBpbGUt
dGltZSBkaXJlY3RpdmUgdGhhdCBtYW5pcHVsYXRlcyBBU1QuXG4gICAgICAvLyByZXR1cm5zIHRy
dWUgaWYgaXQgYWxzbyBuZWVkcyBhIHJ1bnRpbWUgY291bnRlcnBhcnQuXG4gICAgICBuZWVkUnVu
dGltZSA9ICEhZ2VuKGVsLCBkaXIsIHN0YXRlLndhcm4pO1xuICAgIH1cbiAgICBpZiAobmVlZFJ1
bnRpbWUpIHtcbiAgICAgIGhhc1J1bnRpbWUgPSB0cnVlO1xuICAgICAgcmVzICs9IFwie25hbWU6
XFxcIlwiICsgKGRpci5uYW1lKSArIFwiXFxcIixyYXdOYW1lOlxcXCJcIiArIChkaXIucmF3TmFt
ZSkgKyBcIlxcXCJcIiArIChkaXIudmFsdWUgPyAoXCIsdmFsdWU6KFwiICsgKGRpci52YWx1ZSkg
KyBcIiksZXhwcmVzc2lvbjpcIiArIChKU09OLnN0cmluZ2lmeShkaXIudmFsdWUpKSkgOiAnJykg
KyAoZGlyLmFyZyA/IChcIixhcmc6XFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpIDogJycp
ICsgKGRpci5tb2RpZmllcnMgPyAoXCIsbW9kaWZpZXJzOlwiICsgKEpTT04uc3RyaW5naWZ5KGRp
ci5tb2RpZmllcnMpKSkgOiAnJykgKyBcIn0sXCI7XG4gICAgfVxuICB9XG4gIGlmIChoYXNSdW50
aW1lKSB7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCAtMSkgKyAnXSdcbiAgfVxufVxuXG5mdW5j
dGlvbiBnZW5JbmxpbmVUZW1wbGF0ZSAoZWwsIHN0YXRlKSB7XG4gIHZhciBhc3QgPSBlbC5jaGls
ZHJlblswXTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYg
KFxuICAgIGVsLmNoaWxkcmVuLmxlbmd0aCA+IDEgfHwgYXN0LnR5cGUgIT09IDFcbiAgKSkge1xu
ICAgIHN0YXRlLndhcm4oJ0lubGluZS10ZW1wbGF0ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFj
dGx5IG9uZSBjaGlsZCBlbGVtZW50LicpO1xuICB9XG4gIGlmIChhc3QudHlwZSA9PT0gMSkge1xu
ICAgIHZhciBpbmxpbmVSZW5kZXJGbnMgPSBnZW5lcmF0ZShhc3QsIHN0YXRlLm9wdGlvbnMpO1xu
ICAgIHJldHVybiAoXCJpbmxpbmVUZW1wbGF0ZTp7cmVuZGVyOmZ1bmN0aW9uKCl7XCIgKyAoaW5s
aW5lUmVuZGVyRm5zLnJlbmRlcikgKyBcIn0sc3RhdGljUmVuZGVyRm5zOltcIiArIChpbmxpbmVS
ZW5kZXJGbnMuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbiAoY29kZSkgeyByZXR1cm4gKFwi
ZnVuY3Rpb24oKXtcIiArIGNvZGUgKyBcIn1cIik7IH0pLmpvaW4oJywnKSkgKyBcIl19XCIpXG4g
IH1cbn1cblxuZnVuY3Rpb24gZ2VuU2NvcGVkU2xvdHMgKFxuICBzbG90cyxcbiAgc3RhdGVcbikg
e1xuICByZXR1cm4gKFwic2NvcGVkU2xvdHM6X3UoW1wiICsgKE9iamVjdC5rZXlzKHNsb3RzKS5t
YXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGdlblNjb3BlZFNsb3Qoa2V5LCBzbG90
c1trZXldLCBzdGF0ZSlcbiAgICB9KS5qb2luKCcsJykpICsgXCJdKVwiKVxufVxuXG5mdW5jdGlv
biBnZW5TY29wZWRTbG90IChcbiAga2V5LFxuICBlbCxcbiAgc3RhdGVcbikge1xuICBpZiAoZWwu
Zm9yICYmICFlbC5mb3JQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuRm9yU2NvcGVkU2xvdChr
ZXksIGVsLCBzdGF0ZSlcbiAgfVxuICByZXR1cm4gXCJ7a2V5OlwiICsga2V5ICsgXCIsZm46ZnVu
Y3Rpb24oXCIgKyAoU3RyaW5nKGVsLmF0dHJzTWFwLnNjb3BlKSkgKyBcIil7XCIgK1xuICAgIFwi
cmV0dXJuIFwiICsgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJ1xuICAgICAgPyBnZW5DaGlsZHJlbihl
bCwgc3RhdGUpIHx8ICd2b2lkIDAnXG4gICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKSkgKyBc
In19XCJcbn1cblxuZnVuY3Rpb24gZ2VuRm9yU2NvcGVkU2xvdCAoXG4gIGtleSxcbiAgZWwsXG4g
IHN0YXRlXG4pIHtcbiAgdmFyIGV4cCA9IGVsLmZvcjtcbiAgdmFyIGFsaWFzID0gZWwuYWxpYXM7
XG4gIHZhciBpdGVyYXRvcjEgPSBlbC5pdGVyYXRvcjEgPyAoXCIsXCIgKyAoZWwuaXRlcmF0b3Ix
KSkgOiAnJztcbiAgdmFyIGl0ZXJhdG9yMiA9IGVsLml0ZXJhdG9yMiA/IChcIixcIiArIChlbC5p
dGVyYXRvcjIpKSA6ICcnO1xuICBlbC5mb3JQcm9jZXNzZWQgPSB0cnVlOyAvLyBhdm9pZCByZWN1
cnNpb25cbiAgcmV0dXJuIFwiX2woKFwiICsgZXhwICsgXCIpLFwiICtcbiAgICBcImZ1bmN0aW9u
KFwiICsgYWxpYXMgKyBpdGVyYXRvcjEgKyBpdGVyYXRvcjIgKyBcIil7XCIgK1xuICAgICAgXCJy
ZXR1cm4gXCIgKyAoZ2VuU2NvcGVkU2xvdChrZXksIGVsLCBzdGF0ZSkpICtcbiAgICAnfSknXG59
XG5cbmZ1bmN0aW9uIGdlbkNoaWxkcmVuIChcbiAgZWwsXG4gIHN0YXRlLFxuICBjaGVja1NraXAs
XG4gIGFsdEdlbkVsZW1lbnQsXG4gIGFsdEdlbk5vZGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBl
bC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hp
bGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUgc2luZ2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVu
Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwkMS5mb3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAn
dGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRhZyAhPT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICBy
ZXR1cm4gKGFsdEdlbkVsZW1lbnQgfHwgZ2VuRWxlbWVudCkoZWwkMSwgc3RhdGUpXG4gICAgfVxu
ICAgIHZhciBub3JtYWxpemF0aW9uVHlwZSA9IGNoZWNrU2tpcFxuICAgICAgPyBnZXROb3JtYWxp
emF0aW9uVHlwZShjaGlsZHJlbiwgc3RhdGUubWF5YmVDb21wb25lbnQpXG4gICAgICA6IDA7XG4g
ICAgdmFyIGdlbiA9IGFsdEdlbk5vZGUgfHwgZ2VuTm9kZTtcbiAgICByZXR1cm4gKFwiW1wiICsg
KGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gZ2VuKGMsIHN0YXRlKTsgfSkuam9p
bignLCcpKSArIFwiXVwiICsgKG5vcm1hbGl6YXRpb25UeXBlID8gKFwiLFwiICsgbm9ybWFsaXph
dGlvblR5cGUpIDogJycpKVxuICB9XG59XG5cbi8vIGRldGVybWluZSB0aGUgbm9ybWFsaXphdGlv
biBuZWVkZWQgZm9yIHRoZSBjaGlsZHJlbiBhcnJheS5cbi8vIDA6IG5vIG5vcm1hbGl6YXRpb24g
bmVlZGVkXG4vLyAxOiBzaW1wbGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgKHBvc3NpYmxlIDEtbGV2
ZWwgZGVlcCBuZXN0ZWQgYXJyYXkpXG4vLyAyOiBmdWxsIG5vcm1hbGl6YXRpb24gbmVlZGVkXG5m
dW5jdGlvbiBnZXROb3JtYWxpemF0aW9uVHlwZSAoXG4gIGNoaWxkcmVuLFxuICBtYXliZUNvbXBv
bmVudFxuKSB7XG4gIHZhciByZXMgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVu
Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGVsLnR5
cGUgIT09IDEpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChuZWVkc05vcm1hbGl6
YXRpb24oZWwpIHx8XG4gICAgICAgIChlbC5pZkNvbmRpdGlvbnMgJiYgZWwuaWZDb25kaXRpb25z
LnNvbWUoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIG5lZWRzTm9ybWFsaXphdGlvbihjLmJsb2NrKTsg
fSkpKSB7XG4gICAgICByZXMgPSAyO1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKG1heWJl
Q29tcG9uZW50KGVsKSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0
aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVybiBtYXliZUNvbXBvbmVudChjLmJsb2NrKTsg
fSkpKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1
bmN0aW9uIG5lZWRzTm9ybWFsaXphdGlvbiAoZWwpIHtcbiAgcmV0dXJuIGVsLmZvciAhPT0gdW5k
ZWZpbmVkIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRlJyB8fCBlbC50YWcgPT09ICdzbG90J1xufVxu
XG5mdW5jdGlvbiBnZW5Ob2RlIChub2RlLCBzdGF0ZSkge1xuICBpZiAobm9kZS50eXBlID09PSAx
KSB7XG4gICAgcmV0dXJuIGdlbkVsZW1lbnQobm9kZSwgc3RhdGUpXG4gIH0gaWYgKG5vZGUudHlw
ZSA9PT0gMyAmJiBub2RlLmlzQ29tbWVudCkge1xuICAgIHJldHVybiBnZW5Db21tZW50KG5vZGUp
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblRleHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlv
biBnZW5UZXh0ICh0ZXh0KSB7XG4gIHJldHVybiAoXCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJc
biAgICA/IHRleHQuZXhwcmVzc2lvbiAvLyBubyBuZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkg
d3JhcHBlZCBpbiBfcygpXG4gICAgOiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJp
bmdpZnkodGV4dC50ZXh0KSkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlbkNvbW1lbnQgKGNv
bW1lbnQpIHtcbiAgcmV0dXJuIChcIl9lKFwiICsgKEpTT04uc3RyaW5naWZ5KGNvbW1lbnQudGV4
dCkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblNsb3QgKGVsLCBzdGF0ZSkge1xuICB2YXIg
c2xvdE5hbWUgPSBlbC5zbG90TmFtZSB8fCAnXCJkZWZhdWx0XCInO1xuICB2YXIgY2hpbGRyZW4g
PSBnZW5DaGlsZHJlbihlbCwgc3RhdGUpO1xuICB2YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1l
ICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBl
bC5hdHRycyAmJiAoXCJ7XCIgKyAoZWwuYXR0cnMubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiAo
KGNhbWVsaXplKGEubmFtZSkpICsgXCI6XCIgKyAoYS52YWx1ZSkpOyB9KS5qb2luKCcsJykpICsg
XCJ9XCIpO1xuICB2YXIgYmluZCQkMSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQnXTtcbiAgaWYgKChh
dHRycyB8fCBiaW5kJCQxKSAmJiAhY2hpbGRyZW4pIHtcbiAgICByZXMgKz0gXCIsbnVsbFwiO1xu
ICB9XG4gIGlmIChhdHRycykge1xuICAgIHJlcyArPSBcIixcIiArIGF0dHJzO1xuICB9XG4gIGlm
IChiaW5kJCQxKSB7XG4gICAgcmVzICs9IChhdHRycyA/ICcnIDogJyxudWxsJykgKyBcIixcIiAr
IGJpbmQkJDE7XG4gIH1cbiAgcmV0dXJuIHJlcyArICcpJ1xufVxuXG4vLyBjb21wb25lbnROYW1l
IGlzIGVsLmNvbXBvbmVudCwgdGFrZSBpdCBhcyBhcmd1bWVudCB0byBzaHVuIGZsb3cncyBwZXNz
aW1pc3RpYyByZWZpbmVtZW50XG5mdW5jdGlvbiBnZW5Db21wb25lbnQgKFxuICBjb21wb25lbnRO
YW1lLFxuICBlbCxcbiAgc3RhdGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1w
bGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgc3RhdGUsIHRydWUpO1xuICByZXR1cm4gKFwi
X2MoXCIgKyBjb21wb25lbnROYW1lICsgXCIsXCIgKyAoZ2VuRGF0YSQyKGVsLCBzdGF0ZSkpICsg
KGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpICsgXCIpXCIpXG59XG5cbmZ1bmN0
aW9uIGdlblByb3BzIChwcm9wcykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAw
OyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAg
IHJlcyArPSBcIlxcXCJcIiArIChwcm9wLm5hbWUpICsgXCJcXFwiOlwiICsgKHRyYW5zZm9ybVNw
ZWNpYWxOZXdsaW5lcyhwcm9wLnZhbHVlKSkgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gcmVzLnNs
aWNlKDAsIC0xKVxufVxuXG4vLyAjMzg5NSwgIzQyNjhcbmZ1bmN0aW9uIHRyYW5zZm9ybVNwZWNp
YWxOZXdsaW5lcyAodGV4dCkge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC9cXHUyMDI4
L2csICdcXFxcdTIwMjgnKVxuICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKVxu
fVxuXG4vKiAgKi9cblxuLy8gdGhlc2Uga2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRl
IGV4cHJlc3Npb25zLCBidXQgb3BlcmF0b3JzIGxpa2Vcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBh
bmQgaW4gYXJlIGFsbG93ZWRcbnZhciBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgn
XFxcXGInICsgKFxuICAnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxh
d2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwnICtcbiAgJ3N1cGVyLHRocm93LHdoaWxlLHlp
ZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcbiAgJ2V4
dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMnXG4pLnNw
bGl0KCcsJykuam9pbignXFxcXGJ8XFxcXGInKSArICdcXFxcYicpO1xuXG4vLyB0aGVzZSB1bmFy
eSBvcGVyYXRvcnMgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIHByb3BlcnR5L21ldGhvZCBuYW1lc1xu
dmFyIHVuYXJ5T3BlcmF0b3JzUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkZWxldGUs
dHlwZW9mLHZvaWQnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxc
KXxcXFxcYicpICsgJ1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCknKTtcblxuLy8gY2hlY2sgdmFs
aWQgaWRlbnRpZmllciBmb3Igdi1mb3JcbnZhciBpZGVudFJFID0gL1tBLVphLXpfJF1bXFx3JF0q
LztcblxuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xudmFyIHN0cmlwU3RyaW5nUkUg
PSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15g
XFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18
XFxcXC4pKmAvZztcblxuLy8gZGV0ZWN0IHByb2JsZW1hdGljIGV4cHJlc3Npb25zIGluIGEgdGVt
cGxhdGVcbmZ1bmN0aW9uIGRldGVjdEVycm9ycyAoYXN0KSB7XG4gIHZhciBlcnJvcnMgPSBbXTtc
biAgaWYgKGFzdCkge1xuICAgIGNoZWNrTm9kZShhc3QsIGVycm9ycyk7XG4gIH1cbiAgcmV0dXJu
IGVycm9yc1xufVxuXG5mdW5jdGlvbiBjaGVja05vZGUgKG5vZGUsIGVycm9ycykge1xuICBpZiAo
bm9kZS50eXBlID09PSAxKSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiBub2RlLmF0dHJzTWFwKSB7
XG4gICAgICBpZiAoZGlyUkUudGVzdChuYW1lKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBub2Rl
LmF0dHJzTWFwW25hbWVdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAobmFt
ZSA9PT0gJ3YtZm9yJykge1xuICAgICAgICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxc
IlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChv
blJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAgIGNoZWNrRXZlbnQodmFsdWUsIChuYW1lICsg
XCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIGVycm9ycyk7XG4gICAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICAgIGNoZWNrRXhwcmVzc2lvbih2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIg
KyB2YWx1ZSArIFwiXFxcIlwiKSwgZXJyb3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGVja05vZGUo
bm9kZS5jaGlsZHJlbltpXSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAo
bm9kZS50eXBlID09PSAyKSB7XG4gICAgY2hlY2tFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbiwg
bm9kZS50ZXh0LCBlcnJvcnMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXZlbnQgKGV4cCwg
dGV4dCwgZXJyb3JzKSB7XG4gIHZhciBzdGlwcGVkID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdS
RSwgJycpO1xuICB2YXIga2V5d29yZE1hdGNoID0gc3RpcHBlZC5tYXRjaCh1bmFyeU9wZXJhdG9y
c1JFKTtcbiAgaWYgKGtleXdvcmRNYXRjaCAmJiBzdGlwcGVkLmNoYXJBdChrZXl3b3JkTWF0Y2gu
aW5kZXggLSAxKSAhPT0gJyQnKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBcImF2b2lkIHVz
aW5nIEphdmFTY3JpcHQgdW5hcnkgb3BlcmF0b3IgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAg
ICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwi
ICsgKHRleHQudHJpbSgpKVxuICAgICk7XG4gIH1cbiAgY2hlY2tFeHByZXNzaW9uKGV4cCwgdGV4
dCwgZXJyb3JzKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tGb3IgKG5vZGUsIHRleHQsIGVycm9ycykg
e1xuICBjaGVja0V4cHJlc3Npb24obm9kZS5mb3IgfHwgJycsIHRleHQsIGVycm9ycyk7XG4gIGNo
ZWNrSWRlbnRpZmllcihub2RlLmFsaWFzLCAndi1mb3IgYWxpYXMnLCB0ZXh0LCBlcnJvcnMpO1xu
ICBjaGVja0lkZW50aWZpZXIobm9kZS5pdGVyYXRvcjEsICd2LWZvciBpdGVyYXRvcicsIHRleHQs
IGVycm9ycyk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJhdG9yMiwgJ3YtZm9yIGl0ZXJh
dG9yJywgdGV4dCwgZXJyb3JzKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tJZGVudGlmaWVyIChpZGVu
dCwgdHlwZSwgdGV4dCwgZXJyb3JzKSB7XG4gIGlmICh0eXBlb2YgaWRlbnQgPT09ICdzdHJpbmcn
ICYmICFpZGVudFJFLnRlc3QoaWRlbnQpKSB7XG4gICAgZXJyb3JzLnB1c2goKFwiaW52YWxpZCBc
IiArIHR5cGUgKyBcIiBcXFwiXCIgKyBpZGVudCArIFwiXFxcIiBpbiBleHByZXNzaW9uOiBcIiAr
ICh0ZXh0LnRyaW0oKSkpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V4cHJlc3Npb24gKGV4
cCwgdGV4dCwgZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgbmV3IEZ1bmN0aW9uKChcInJldHVybiBc
IiArIGV4cCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIGtleXdvcmRNYXRjaCA9IGV4cC5y
ZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKS5tYXRjaChwcm9oaWJpdGVkS2V5d29yZFJFKTtcbiAg
ICBpZiAoa2V5d29yZE1hdGNoKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgXCJhdm9p
ZCB1c2luZyBKYXZhU2NyaXB0IGtleXdvcmQgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAg
ICBcIlxcXCJcIiArIChrZXl3b3JkTWF0Y2hbMF0pICsgXCJcXFwiIGluIGV4cHJlc3Npb24gXCIg
KyAodGV4dC50cmltKCkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVz
aCgoXCJpbnZhbGlkIGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSkpO1xuICAgIH1cbiAg
fVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb24gKGNvZGUsIGVycm9ycykg
e1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb24oY29kZSlcbiAgfSBjYXRjaCAoZXJy
KSB7XG4gICAgZXJyb3JzLnB1c2goeyBlcnI6IGVyciwgY29kZTogY29kZSB9KTtcbiAgICByZXR1
cm4gbm9vcFxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVUb0Z1bmN0aW9uRm4gKGNv
bXBpbGUpIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICByZXR1cm4g
ZnVuY3Rpb24gY29tcGlsZVRvRnVuY3Rpb25zIChcbiAgICB0ZW1wbGF0ZSxcbiAgICBvcHRpb25z
LFxuICAgIHZtXG4gICkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25c
biAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICAgIH0g
Y2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8
Q1NQLykpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUg
dXNpbmcgdGhlIHN0YW5kYWxvbmUgYnVpbGQgb2YgVnVlLmpzIGluIGFuICcgK1xuICAgICAgICAg
ICAgJ2Vudmlyb25tZW50IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJp
dHMgdW5zYWZlLWV2YWwuICcgK1xuICAgICAgICAgICAgJ1RoZSB0ZW1wbGF0ZSBjb21waWxlciBj
YW5ub3Qgd29yayBpbiB0aGlzIGVudmlyb25tZW50LiBDb25zaWRlciAnICtcbiAgICAgICAgICAg
ICdyZWxheGluZyB0aGUgcG9saWN5IHRvIGFsbG93IHVuc2FmZS1ldmFsIG9yIHByZS1jb21waWxp
bmcgeW91ciAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25z
LidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hl
Y2sgY2FjaGVcbiAgICB2YXIga2V5ID0gb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICA/IFN0cmlu
ZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVcbiAgICAgIDogdGVtcGxhdGU7XG4gICAg
aWYgKGNhY2hlW2tleV0pIHtcbiAgICAgIHJldHVybiBjYWNoZVtrZXldXG4gICAgfVxuXG4gICAg
Ly8gY29tcGlsZVxuICAgIHZhciBjb21waWxlZCA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMp
O1xuXG4gICAgLy8gY2hlY2sgY29tcGlsYXRpb24gZXJyb3JzL3RpcHNcbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbXBpbGVkLmVy
cm9ycyAmJiBjb21waWxlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAg
ICAgXCJFcnJvciBjb21waWxpbmcgdGVtcGxhdGU6XFxuXFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxu
XFxuXCIgK1xuICAgICAgICAgIGNvbXBpbGVkLmVycm9ycy5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0
dXJuIChcIi0gXCIgKyBlKTsgfSkuam9pbignXFxuJykgKyAnXFxuJyxcbiAgICAgICAgICB2bVxu
ICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBpbGVkLnRpcHMgJiYgY29tcGlsZWQu
dGlwcy5sZW5ndGgpIHtcbiAgICAgICAgY29tcGlsZWQudGlwcy5mb3JFYWNoKGZ1bmN0aW9uICht
c2cpIHsgcmV0dXJuIHRpcChtc2csIHZtKTsgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g
dHVybiBjb2RlIGludG8gZnVuY3Rpb25zXG4gICAgdmFyIHJlcyA9IHt9O1xuICAgIHZhciBmbkdl
bkVycm9ycyA9IFtdO1xuICAgIHJlcy5yZW5kZXIgPSBjcmVhdGVGdW5jdGlvbihjb21waWxlZC5y
ZW5kZXIsIGZuR2VuRXJyb3JzKTtcbiAgICByZXMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWQu
c3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbiAoY29kZSkge1xuICAgICAgcmV0dXJuIGNyZWF0
ZUZ1bmN0aW9uKGNvZGUsIGZuR2VuRXJyb3JzKVxuICAgIH0pO1xuXG4gICAgLy8gY2hlY2sgZnVu
Y3Rpb24gZ2VuZXJhdGlvbiBlcnJvcnMuXG4gICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4g
aWYgdGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvbXBpbGVyIGl0c2VsZi5cbiAgICAvLyBtb3N0bHkg
Zm9yIGNvZGVnZW4gZGV2ZWxvcG1lbnQgdXNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICov
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGlmICgoIWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5H
ZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJGYWlsZWQgdG8g
Z2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9y
cy5tYXAoZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4g
ICAgICAgICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChl
cnIudG9TdHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAg
ICB9KS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAg
IH1cblxuICAgIHJldHVybiAoY2FjaGVba2V5XSA9IHJlcylcbiAgfVxufVxuXG4vKiAgKi9cblxu
ZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJDcmVhdG9yIChiYXNlQ29tcGlsZSkge1xuICByZXR1cm4g
ZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gICAgZnVuY3Rpb24gY29t
cGlsZSAoXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApIHtcbiAgICAgIHZh
ciBmaW5hbE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zKTtcbiAgICAgIHZhciBl
cnJvcnMgPSBbXTtcbiAgICAgIHZhciB0aXBzID0gW107XG4gICAgICBmaW5hbE9wdGlvbnMud2Fy
biA9IGZ1bmN0aW9uIChtc2csIHRpcCkge1xuICAgICAgICAodGlwID8gdGlwcyA6IGVycm9ycyku
cHVzaChtc2cpO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgLy8g
bWVyZ2UgY3VzdG9tIG1vZHVsZXNcbiAgICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykge1xuICAg
ICAgICAgIGZpbmFsT3B0aW9ucy5tb2R1bGVzID1cbiAgICAgICAgICAgIChiYXNlT3B0aW9ucy5t
b2R1bGVzIHx8IFtdKS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAg
ICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgICBpZiAob3B0aW9ucy5kaXJlY3Rp
dmVzKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25zLmRpcmVjdGl2ZXMgPSBleHRlbmQoXG4gICAg
ICAgICAgICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMpLFxuICAgICAgICAg
ICAgb3B0aW9ucy5kaXJlY3RpdmVzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAv
LyBjb3B5IG90aGVyIG9wdGlvbnNcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMpIHtc
biAgICAgICAgICBpZiAoa2V5ICE9PSAnbW9kdWxlcycgJiYga2V5ICE9PSAnZGlyZWN0aXZlcycp
IHtcbiAgICAgICAgICAgIGZpbmFsT3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcGlsZWQgPSBiYXNlQ29t
cGlsZSh0ZW1wbGF0ZSwgZmluYWxPcHRpb25zKTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGVycm9ycy5wdXNoLmFwcGx5KGVycm9y
cywgZGV0ZWN0RXJyb3JzKGNvbXBpbGVkLmFzdCkpO1xuICAgICAgfVxuICAgICAgY29tcGlsZWQu
ZXJyb3JzID0gZXJyb3JzO1xuICAgICAgY29tcGlsZWQudGlwcyA9IHRpcHM7XG4gICAgICByZXR1
cm4gY29tcGlsZWRcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcGlsZTogY29tcGls
ZSxcbiAgICAgIGNvbXBpbGVUb0Z1bmN0aW9uczogY3JlYXRlQ29tcGlsZVRvRnVuY3Rpb25Gbihj
b21waWxlKVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gYGNyZWF0ZUNvbXBpbGVyQ3Jl
YXRvcmAgYWxsb3dzIGNyZWF0aW5nIGNvbXBpbGVycyB0aGF0IHVzZSBhbHRlcm5hdGl2ZVxuLy8g
cGFyc2VyL29wdGltaXplci9jb2RlZ2VuLCBlLmcgdGhlIFNTUiBvcHRpbWl6aW5nIGNvbXBpbGVy
LlxuLy8gSGVyZSB3ZSBqdXN0IGV4cG9ydCBhIGRlZmF1bHQgY29tcGlsZXIgdXNpbmcgdGhlIGRl
ZmF1bHQgcGFydHMuXG52YXIgY3JlYXRlQ29tcGlsZXIgPSBjcmVhdGVDb21waWxlckNyZWF0b3Io
ZnVuY3Rpb24gYmFzZUNvbXBpbGUgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHZh
ciBhc3QgPSBwYXJzZSh0ZW1wbGF0ZS50cmltKCksIG9wdGlvbnMpO1xuICBvcHRpbWl6ZShhc3Qs
IG9wdGlvbnMpO1xuICB2YXIgY29kZSA9IGdlbmVyYXRlKGFzdCwgb3B0aW9ucyk7XG4gIHJldHVy
biB7XG4gICAgYXN0OiBhc3QsXG4gICAgcmVuZGVyOiBjb2RlLnJlbmRlcixcbiAgICBzdGF0aWNS
ZW5kZXJGbnM6IGNvZGUuc3RhdGljUmVuZGVyRm5zXG4gIH1cbn0pO1xuXG4vKiAgKi9cblxudmFy
IHJlZiQxID0gY3JlYXRlQ29tcGlsZXIoYmFzZU9wdGlvbnMpO1xudmFyIGNvbXBpbGVUb0Z1bmN0
aW9ucyA9IHJlZiQxLmNvbXBpbGVUb0Z1bmN0aW9ucztcblxuLyogICovXG5cbnZhciBpZFRvVGVt
cGxhdGUgPSBjYWNoZWQoZnVuY3Rpb24gKGlkKSB7XG4gIHZhciBlbCA9IHF1ZXJ5KGlkKTtcbiAg
cmV0dXJuIGVsICYmIGVsLmlubmVySFRNTFxufSk7XG5cbnZhciBtb3VudCA9IFZ1ZSQzLnByb3Rv
dHlwZS4kbW91bnQ7XG5WdWUkMy5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxc
biAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBxdWVyeShlbCk7XG5cbiAgLyogaXN0YW5i
dWwgaWdub3JlIGlmICovXG4gIGlmIChlbCA9PT0gZG9jdW1lbnQuYm9keSB8fCBlbCA9PT0gZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCJEbyBub3QgbW91bnQgVnVlIHRvIDxodG1sPiBv
ciA8Ym9keT4gLSBtb3VudCB0byBub3JtYWwgZWxlbWVudHMgaW5zdGVhZC5cIlxuICAgICk7XG4g
ICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHZhciBvcHRpb25zID0gdGhpcy4kb3B0aW9ucztcbiAg
Ly8gcmVzb2x2ZSB0ZW1wbGF0ZS9lbCBhbmQgY29udmVydCB0byByZW5kZXIgZnVuY3Rpb25cbiAg
aWYgKCFvcHRpb25zLnJlbmRlcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IG9wdGlvbnMudGVtcGxh
dGU7XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAn
c3RyaW5nJykge1xuICAgICAgICBpZiAodGVtcGxhdGUuY2hhckF0KDApID09PSAnIycpIHtcbiAg
ICAgICAgICB0ZW1wbGF0ZSA9IGlkVG9UZW1wbGF0ZSh0ZW1wbGF0ZSk7XG4gICAgICAgICAgLyog
aXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgJiYgIXRlbXBsYXRlKSB7XG4gICAgICAgICAgICB3YXJuKFxuICAg
ICAgICAgICAgICAoXCJUZW1wbGF0ZSBlbGVtZW50IG5vdCBmb3VuZCBvciBpcyBlbXB0eTogXCIg
KyAob3B0aW9ucy50ZW1wbGF0ZSkpLFxuICAgICAgICAgICAgICB0aGlzXG4gICAgICAgICAgICAp
O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0ZW1wbGF0ZS5ub2Rl
VHlwZSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLmlubmVySFRNTDtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgICAgd2FybignaW52YWxpZCB0ZW1wbGF0ZSBvcHRpb246JyArIHRlbXBsYXRl
LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgfVxuICAgIH0g
ZWxzZSBpZiAoZWwpIHtcbiAgICAgIHRlbXBsYXRlID0gZ2V0T3V0ZXJIVE1MKGVsKTtcbiAgICB9
XG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5w
ZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUnKTtcbiAgICAgIH1c
blxuICAgICAgdmFyIHJlZiA9IGNvbXBpbGVUb0Z1bmN0aW9ucyh0ZW1wbGF0ZSwge1xuICAgICAg
ICBzaG91bGREZWNvZGVOZXdsaW5lczogc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgICAgIGRl
bGltaXRlcnM6IG9wdGlvbnMuZGVsaW1pdGVycyxcbiAgICAgICAgY29tbWVudHM6IG9wdGlvbnMu
Y29tbWVudHNcbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdmFyIHJlbmRlciA9IHJlZi5yZW5kZXI7
XG4gICAgICB2YXIgc3RhdGljUmVuZGVyRm5zID0gcmVmLnN0YXRpY1JlbmRlckZucztcbiAgICAg
IG9wdGlvbnMucmVuZGVyID0gcmVuZGVyO1xuICAgICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMg
PSBzdGF0aWNSZW5kZXJGbnM7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBl
cmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAgbWFyaygnY29tcGlsZSBlbmQnKTtcbiAgICAg
ICAgbWVhc3VyZSgoKHRoaXMuX25hbWUpICsgXCIgY29tcGlsZVwiKSwgJ2NvbXBpbGUnLCAnY29t
cGlsZSBlbmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vdW50LmNhbGwodGhp
cywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxuICogR2V0IG91dGVySFRNTCBvZiBlbGVtZW50
cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVtZW50cyBpbiBJRSBhcyB3ZWxsLlxuICovXG5m
dW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4gIGlmIChlbC5vdXRlckhUTUwpIHtcbiAgICBy
ZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlbC5j
bG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1MXG4gIH1cbn1c
blxuVnVlJDMuY29tcGlsZSA9IGNvbXBpbGVUb0Z1bmN0aW9ucztcblxuZXhwb3J0IGRlZmF1bHQg
VnVlJDM7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAu
L34vdnVlL2Rpc3QvdnVlLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gNyt1V1xuLy8gbW9kdWxlIGNo
dW5rcyA9IDEiLCJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2Rl
XHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50
cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5c
dGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNc
Iik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZl
cmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilc
clxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5l
ZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5l
ZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRs
ZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBn
O1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAod2Vi
cGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IER1UjJcbi8vIG1vZHVsZSBj
aHVua3MgPSAxIiwiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9s
aWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxu
Ki9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5c
dC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0
cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlv
biAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0
ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBc
IkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0g
ZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJc
Iik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rc
blx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVv
ZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxl
cywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9y
KHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNb
aV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVh
ZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwg
bW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRc
dFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1l
bnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5h
dGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVz
IHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2ls
bCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRc
dFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1v
ZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xu
XHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFR
dWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChc
IiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRl
bSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9u
IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250
ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAo
IWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3Vy
Y2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFw
cGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01h
cHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMg
c291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRc
dH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtz
b3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpv
aW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQp
XG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5l
eHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklD
b21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291
cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQs
JyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuXG5cblxu
Ly8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2Nzcy1sb2FkZXIv
bGliL2Nzcy1iYXNlLmpzXG4vLyBtb2R1bGUgaWQgPSBGWitmXG4vLyBtb2R1bGUgY2h1bmtzID0g
MSIsIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyB0aGlzIG1vZHVsZSBp
cyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBh
bmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGVc
blxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICByYXdT
Y3JpcHRFeHBvcnRzLFxuICBjb21waWxlZFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNj
b3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIgLyogc2VydmVyIG9ubHkgKi9cbikge1xuICB2YXIg
ZXNNb2R1bGVcbiAgdmFyIHNjcmlwdEV4cG9ydHMgPSByYXdTY3JpcHRFeHBvcnRzID0gcmF3U2Ny
aXB0RXhwb3J0cyB8fCB7fVxuXG4gIC8vIEVTNiBtb2R1bGVzIGludGVyb3BcbiAgdmFyIHR5cGUg
PSB0eXBlb2YgcmF3U2NyaXB0RXhwb3J0cy5kZWZhdWx0XG4gIGlmICh0eXBlID09PSAnb2JqZWN0
JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXNNb2R1bGUgPSByYXdTY3JpcHRFeHBv
cnRzXG4gICAgc2NyaXB0RXhwb3J0cyA9IHJhd1NjcmlwdEV4cG9ydHMuZGVmYXVsdFxuICB9XG5c
biAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9u
cyA9IHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nXG4gICAgPyBzY3JpcHRFeHBv
cnRzLm9wdGlvbnNcbiAgICA6IHNjcmlwdEV4cG9ydHNcblxuICAvLyByZW5kZXIgZnVuY3Rpb25z
XG4gIGlmIChjb21waWxlZFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBjb21waWxl
ZFRlbXBsYXRlLnJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWRU
ZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnNcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29w
ZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9IHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29r
XG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBm
dW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4
dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZu
b2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0
aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNz
ckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4
dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9f
ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRf
X1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChp
bmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClc
biAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBm
b3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5f
cmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBv
bmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQg
Ynkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAg
Ly8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAg
fSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gaW5qZWN0U3R5bGVzXG4gIH1c
blxuICBpZiAoaG9vaykge1xuICAgIHZhciBmdW5jdGlvbmFsID0gb3B0aW9ucy5mdW5jdGlvbmFs
XG4gICAgdmFyIGV4aXN0aW5nID0gZnVuY3Rpb25hbFxuICAgICAgPyBvcHRpb25zLnJlbmRlclxu
ICAgICAgOiBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgIGlmICghZnVuY3Rpb25hbCkge1xuICAg
ICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tc
biAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25j
YXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfSBlbHNlIHtcbiAgICAg
IC8vIHJlZ2lzdGVyIGZvciBmdW5jdGlvYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICBv
cHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29u
dGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIGV4aXN0
aW5nKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBl
c01vZHVsZTogZXNNb2R1bGUsXG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRp
b25zOiBvcHRpb25zXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFD
SyBGT09URVJcbi8vIC4vfi92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplci5qc1xu
Ly8gbW9kdWxlIGlkID0gVlUvOFxuLy8gbW9kdWxlIGNodW5rcyA9IDEiLCIvKlxuICBNSVQgTGlj
ZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxu
ICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4gIE1vZGlmaWVkIGJ5IEV2YW4gWW91IEB5
eXg5OTA4MDNcbiovXG5cbnZhciBoYXNEb2N1bWVudCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3Vu
ZGVmaW5lZCdcblxuaWYgKHR5cGVvZiBERUJVRyAhPT0gJ3VuZGVmaW5lZCcgJiYgREVCVUcpIHtc
biAgaWYgKCFoYXNEb2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAndnVlLXN0
eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50LiAn
ICtcbiAgICBcIlVzZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0
byBpbmRpY2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuXCJcbiAgKSB9XG59XG5c
bnZhciBsaXN0VG9TdHlsZXMgPSByZXF1aXJlKCcuL2xpc3RUb1N0eWxlcycpXG5cbi8qXG50eXBl
IFN0eWxlT2JqZWN0ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0czogQXJyYXk8U3R5bGVPYmpl
Y3RQYXJ0PlxufVxuXG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtcbiAgY3NzOiBzdHJpbmc7XG4g
IG1lZGlhOiBzdHJpbmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xufVxuKi9cblxudmFyIHN0eWxl
c0luRG9tID0gey8qXG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlkOiBudW1iZXIsXG4gICAgcmVm
czogbnVtYmVyLFxuICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5bGVPYmplY3RQYXJ0KSA9PiB2
b2lkPlxuICB9XG4qL31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVudCAmJiAoZG9jdW1lbnQuaGVh
ZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdKVxudmFyIHNpbmds
ZXRvbkVsZW1lbnQgPSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRlciA9IDBcbnZhciBpc1Byb2R1
Y3Rpb24gPSBmYWxzZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxuXG4vLyBGb3JjZSBzaW5n
bGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAj
IG9mIDxzdHlsZT5cbi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbnZhciBpc09sZElF
ID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL21zaWUgWzYtOV1cXGIvLnRl
c3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxuXG5tb2R1bGUuZXhwb3J0cyA9
IGZ1bmN0aW9uIChwYXJlbnRJZCwgbGlzdCwgX2lzUHJvZHVjdGlvbikge1xuICBpc1Byb2R1Y3Rp
b24gPSBfaXNQcm9kdWN0aW9uXG5cbiAgdmFyIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJ
ZCwgbGlzdClcbiAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1
cGRhdGUgKG5ld0xpc3QpIHtcbiAgICB2YXIgbWF5UmVtb3ZlID0gW11cbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBzdHlsZXNb
aV1cbiAgICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgICBkb21T
dHlsZS5yZWZzLS1cbiAgICAgIG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKVxuICAgIH1cbiAgICBp
ZiAobmV3TGlzdCkge1xuICAgICAgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBuZXdM
aXN0KVxuICAgICAgYWRkU3R5bGVzVG9Eb20oc3R5bGVzKVxuICAgIH0gZWxzZSB7XG4gICAgICBz
dHlsZXMgPSBbXVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5n
dGg7IGkrKykge1xuICAgICAgdmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldXG4gICAgICBpZiAo
ZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0
eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZG9tU3R5bGUucGFydHNbal0oKVxu
ICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNJbkRvbVtkb21TdHlsZS5pZF1cbiAgICAg
IH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVzVG9Eb20gKHN0eWxlcyAvKiBB
cnJheTxTdHlsZU9iamVjdD4gKi8pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgIHZhciBkb21TdHlsZSA9
IHN0eWxlc0luRG9tW2l0ZW0uaWRdXG4gICAgaWYgKGRvbVN0eWxlKSB7XG4gICAgICBkb21TdHls
ZS5yZWZzKytcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3Ro
OyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSlcbiAgICAg
IH1cbiAgICAgIGZvciAoOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBk
b21TdHlsZS5wYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAg
ICAgaWYgKGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA+IGl0ZW0ucGFydHMubGVuZ3RoKSB7XG4gICAg
ICAgIGRvbVN0eWxlLnBhcnRzLmxlbmd0aCA9IGl0ZW0ucGFydHMubGVuZ3RoXG4gICAgICB9XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJ0cyA9IFtdXG4gICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgcGFydHMucHVzaChhZGRTdHls
ZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIHN0eWxlc0luRG9tW2l0ZW0uaWRdID0g
eyBpZDogaXRlbS5pZCwgcmVmczogMSwgcGFydHM6IHBhcnRzIH1cbiAgICB9XG4gIH1cbn1cblxu
ZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50ICgpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgc3R5bGVFbGVtZW50LnR5cGUgPSAndGV4
dC9jc3MnXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KVxuICByZXR1cm4gc3R5bGVF
bGVtZW50XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlIChvYmogLyogU3R5bGVPYmplY3RQYXJ0ICov
KSB7XG4gIHZhciB1cGRhdGUsIHJlbW92ZVxuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcignc3R5bGVbZGF0YS12dWUtc3NyLWlkfj1cIicgKyBvYmouaWQgKyAnXCJd
JylcblxuICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlzUHJvZHVjdGlvbikge1xuICAg
ICAgLy8gaGFzIFNTUiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24gbW9kZS5cbiAgICAgIC8vIHNp
bXBseSBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAgICB9IGVsc2Uge1xuICAgICAg
Ly8gaGFzIFNTUiBzdHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAgICAgLy8gZm9yIHNvbWUgcmVh
c29uIENocm9tZSBjYW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBzZXJ2ZXItcmVuZGVyZWRcbiAg
ICAgIC8vIHN0eWxlIHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5bGU+IG9ubHkgd29ya3MgaWYg
dGhlIHN0eWxlIHRhZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQgaW5zZXJ0ZWQgZHluYW1pY2Fs
bHkuIFNvIHdlIHJlbW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4gICAgICAvLyBzdHlsZXMgYW5k
IGluamVjdCBuZXcgb25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBpZiAoaXNPbGRJRSkge1xuICAgIC8v
IHVzZSBzaW5nbGV0b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xl
dG9uQ291bnRlcisrXG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVudCB8fCAoc2lu
Z2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxuICAgIHVwZGF0ZSA9IGFwcGx5
VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNl
KVxuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1l
bnQsIHN0eWxlSW5kZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIG11bHRpLXN0eWxl
LXRhZyBtb2RlIGluIGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0
eWxlRWxlbWVudCgpXG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxl
bWVudClcbiAgICByZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRl
KG9iailcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaiAvKiBTdHlsZU9i
amVjdFBhcnQgKi8pIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9
PT0gb2JqLmNzcyAmJlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG4g
ICAgICAgICAgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICBy
ZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopXG4gICAgfSBlbHNlIHtc
biAgICAgIHJlbW92ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5j
dGlvbiAoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJldHVybiBmdW5jdGlvbiAoaW5k
ZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50XG4g
ICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJylcbiAgfVxufSko
KVxuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZUVsZW1lbnQsIGluZGV4LCBy
ZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3NzXG5cbiAgaWYg
KHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQu
Y3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNz
c05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4gICAgdmFyIGNoaWxkTm9kZXMg
PSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5
bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIGlmIChjaGlsZE5v
ZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBj
aGlsZE5vZGVzW2luZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVFbGVtZW50LmFwcGVu
ZENoaWxkKGNzc05vZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcgKHN0
eWxlRWxlbWVudCwgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzXG4gIHZhciBtZWRpYSA9IG9i
ai5tZWRpYVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcFxuXG4gIGlmIChtZWRpYSkg
e1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpXG4gIH1cblxu
ICBpZiAoc291cmNlTWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9k
ZXZ0b29scy9kb2NzL2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAgLy8gdGhpcyBtYWtlcyBzb3Vy
Y2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuICAgIGNz
cyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAnICovJ1xu
ICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG4gICAgY3NzICs9ICdc
XG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCcgKyBi
dG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXAp
KSkpICsgJyAqLydcbiAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAg
IHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3NcbiAgfSBlbHNlIHtcbiAgICB3
aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1v
dmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpXG4gIH1cbn1cblxuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi92dWUtc3R5bGUt
bG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcbi8vIG1vZHVsZSBpZCA9IHJqajBcbi8vIG1v
ZHVsZSBjaHVua3MgPSAxIiwiXG5cbi8vXG4vLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0
IDEyOjEzOjQ3IEdNVCswMTAwIChDRVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29t
ZW5pICYgdGhlIENvbnRyaWJ1dG9ycyAoVXNpbmcgQ29kZXN1cmdlb24pLlxuLy8gVmVyc2lvbiAx
LjIuNlxuLy9cblxuKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cbi8qXG4gKiBicm93c2VyLmpzOiBC
cm93c2VyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZm9yIGRpcmVjdG9yLlxuICpcbiAqIChDKSAy
MDExLCBDaGFybGllIFJvYmJpbnMsIFBhb2xvIEZyYWdvbWVuaSwgJiB0aGUgQ29udHJpYnV0b3Jz
LlxuICogTUlUIExJQ0VOU0VcbiAqXG4gKi9cblxudmFyIGRsb2MgPSBkb2N1bWVudC5sb2NhdGlv
bjtcblxuZnVuY3Rpb24gZGxvY0hhc2hFbXB0eSgpIHtcbiAgLy8gTm9uLUlFIGJyb3dzZXJzIHJl
dHVybiAnJyB3aGVuIHRoZSBhZGRyZXNzIGJhciBzaG93cyAnIyc7IERpcmVjdG9yJ3MgbG9naWNc
biAgLy8gYXNzdW1lcyBib3RoIG1lYW4gZW1wdHkuXG4gIHJldHVybiBkbG9jLmhhc2ggPT09ICcn
IHx8IGRsb2MuaGFzaCA9PT0gJyMnO1xufVxuXG52YXIgbGlzdGVuZXIgPSB7XG4gIG1vZGU6ICdt
b2Rlcm4nLFxuICBoYXNoOiBkbG9jLmhhc2gsXG4gIGhpc3Rvcnk6IGZhbHNlLFxuXG4gIGNoZWNr
OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGggPSBkbG9jLmhhc2g7XG4gICAgaWYgKGggIT0gdGhp
cy5oYXNoKSB7XG4gICAgICB0aGlzLmhhc2ggPSBoO1xuICAgICAgdGhpcy5vbkhhc2hDaGFuZ2Vk
KCk7XG4gICAgfVxuICB9LFxuXG4gIGZpcmU6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5t
b2RlID09PSAnbW9kZXJuJykge1xuICAgICAgdGhpcy5oaXN0b3J5ID09PSB0cnVlID8gd2luZG93
Lm9ucG9wc3RhdGUoKSA6IHdpbmRvdy5vbmhhc2hjaGFuZ2UoKTtcbiAgICB9XG4gICAgZWxzZSB7
XG4gICAgICB0aGlzLm9uSGFzaENoYW5nZWQoKTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdDogZnVu
Y3Rpb24gKGZuLCBoaXN0b3J5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuaGlz
dG9yeSA9IGhpc3Rvcnk7XG5cbiAgICBpZiAoIVJvdXRlci5saXN0ZW5lcnMpIHtcbiAgICAgIFJv
dXRlci5saXN0ZW5lcnMgPSBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNoYW5nZShvbkNo
YW5nZUV2ZW50KSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IFJvdXRlci5saXN0ZW5lcnMu
bGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIFJvdXRlci5saXN0ZW5lcnNbaV0ob25DaGFu
Z2VFdmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9ub3RlIElFOCBpcyBiZWluZyBjb3Vu
dGVkIGFzICdtb2Rlcm4nIGJlY2F1c2UgaXQgaGFzIHRoZSBoYXNoY2hhbmdlIGV2ZW50XG4gICAg
aWYgKCdvbmhhc2hjaGFuZ2UnIGluIHdpbmRvdyAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09
PSB1bmRlZmluZWRcbiAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDcpKSB7XG4gICAg
ICAvLyBBdCBsZWFzdCBmb3Igbm93IEhUTUw1IGhpc3RvcnkgaXMgYXZhaWxhYmxlIGZvciAnbW9k
ZXJuJyBicm93c2VycyBvbmx5XG4gICAgICBpZiAodGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7XG4g
ICAgICAgIC8vIFRoZXJlIGlzIGFuIG9sZCBidWcgaW4gQ2hyb21lIHRoYXQgY2F1c2VzIG9ucG9w
c3RhdGUgdG8gZmlyZSBldmVuXG4gICAgICAgIC8vIHVwb24gaW5pdGlhbCBwYWdlIGxvYWQuIFNp
bmNlIHRoZSBoYW5kbGVyIGlzIHJ1biBtYW51YWxseSBpbiBpbml0KCksXG4gICAgICAgIC8vIHRo
aXMgd291bGQgY2F1c2UgQ2hyb21lIHRvIHJ1biBpdCB0d2lzZS4gQ3VycmVudGx5IHRoZSBvbmx5
XG4gICAgICAgIC8vIHdvcmthcm91bmQgc2VlbXMgdG8gYmUgdG8gc2V0IHRoZSBoYW5kbGVyIGFm
dGVyIHRoZSBpbml0aWFsIHBhZ2UgbG9hZFxuICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MzA0MFxuICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gb25jaGFuZ2U7XG4g
ICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgd2luZG93Lm9u
aGFzaGNoYW5nZSA9IG9uY2hhbmdlO1xuICAgICAgfVxuICAgICAgdGhpcy5tb2RlID0gJ21vZGVy
bic7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy9cbiAgICAgIC8vIElFIHN1cHBvcnQsIGJh
c2VkIG9uIGEgY29uY2VwdCBieSBFcmlrIEFydmlkc29uIC4uLlxuICAgICAgLy9cbiAgICAgIHZh
ciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgZnJhbWUu
aWQgPSAnc3RhdGUtZnJhbWUnO1xuICAgICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztc
biAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgdGhpcy53cml0
ZUZyYW1lKCcnKTtcblxuICAgICAgaWYgKCdvbnByb3BlcnR5Y2hhbmdlJyBpbiBkb2N1bWVudCAm
JiAnYXR0YWNoRXZlbnQnIGluIGRvY3VtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmF0dGFjaEV2
ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChldmVu
dC5wcm9wZXJ0eU5hbWUgPT09ICdsb2NhdGlvbicpIHtcbiAgICAgICAgICAgIHNlbGYuY2hlY2so
KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cuc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBzZWxmLmNoZWNrKCk7IH0sIDUwKTtcblxuICAgICAgdGhp
cy5vbkhhc2hDaGFuZ2VkID0gb25jaGFuZ2U7XG4gICAgICB0aGlzLm1vZGUgPSAnbGVnYWN5Jztc
biAgICB9XG5cbiAgICBSb3V0ZXIubGlzdGVuZXJzLnB1c2goZm4pO1xuXG4gICAgcmV0dXJuIHRo
aXMubW9kZTtcbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAoIVJv
dXRlciB8fCAhUm91dGVyLmxpc3RlbmVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAg
IHZhciBsaXN0ZW5lcnMgPSBSb3V0ZXIubGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IGxp
c3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGxpc3RlbmVyc1tp
XSA9PT0gZm4pIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAg
ICB9XG4gIH0sXG5cbiAgc2V0SGFzaDogZnVuY3Rpb24gKHMpIHtcbiAgICAvLyBNb3ppbGxhIGFs
d2F5cyBhZGRzIGFuIGVudHJ5IHRvIHRoZSBoaXN0b3J5XG4gICAgaWYgKHRoaXMubW9kZSA9PT0g
J2xlZ2FjeScpIHtcbiAgICAgIHRoaXMud3JpdGVGcmFtZShzKTtcbiAgICB9XG5cbiAgICBpZiAo
dGhpcy5oaXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUo
e30sIGRvY3VtZW50LnRpdGxlLCBzKTtcbiAgICAgIC8vIEZpcmUgYW4gb25wb3BzdGF0ZSBldmVu
dCBtYW51YWxseSBzaW5jZSBwdXNoaW5nIGRvZXMgbm90IG9idmlvdXNseVxuICAgICAgLy8gdHJp
Z2dlciB0aGUgcG9wIGV2ZW50LlxuICAgICAgdGhpcy5maXJlKCk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGRsb2MuaGFzaCA9IChzWzBdID09PSAnLycpID8gcyA6ICcvJyArIHM7XG4gICAgfVxuICAg
IHJldHVybiB0aGlzO1xuICB9LFxuXG4gIHdyaXRlRnJhbWU6IGZ1bmN0aW9uIChzKSB7XG4gICAg
Ly8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0
YXRlLWZyYW1lJyk7XG4gICAgdmFyIGQgPSBmLmNvbnRlbnREb2N1bWVudCB8fCBmLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQ7XG4gICAgZC5vcGVuKCk7XG4gICAgZC53cml0ZShcIjxzY3JpcHQ+X2hh
c2ggPSAnXCIgKyBzICsgXCInOyBvbmxvYWQgPSBwYXJlbnQubGlzdGVuZXIuc3luY0hhc2g7PHNj
cmlwdD5cIik7XG4gICAgZC5jbG9zZSgpO1xuICB9LFxuXG4gIHN5bmNIYXNoOiBmdW5jdGlvbiAo
KSB7XG4gICAgLy8gSUUgc3VwcG9ydC4uLlxuICAgIHZhciBzID0gdGhpcy5faGFzaDtcbiAgICBp
ZiAocyAhPSBkbG9jLmhhc2gpIHtcbiAgICAgIGRsb2MuaGFzaCA9IHM7XG4gICAgfVxuICAgIHJl
dHVybiB0aGlzO1xuICB9LFxuXG4gIG9uSGFzaENoYW5nZWQ6IGZ1bmN0aW9uICgpIHt9XG59O1xu
XG52YXIgUm91dGVyID0gZXhwb3J0cy5Sb3V0ZXIgPSBmdW5jdGlvbiAocm91dGVzKSB7XG4gIGlm
ICghKHRoaXMgaW5zdGFuY2VvZiBSb3V0ZXIpKSByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXMpO1xu
XG4gIHRoaXMucGFyYW1zICAgPSB7fTtcbiAgdGhpcy5yb3V0ZXMgICA9IHt9O1xuICB0aGlzLm1l
dGhvZHMgID0gWydvbicsICdvbmNlJywgJ2FmdGVyJywgJ2JlZm9yZSddO1xuICB0aGlzLnNjb3Bl
ICAgID0gW107XG4gIHRoaXMuX21ldGhvZHMgPSB7fTtcblxuICB0aGlzLl9pbnNlcnQgPSB0aGlz
Lmluc2VydDtcbiAgdGhpcy5pbnNlcnQgPSB0aGlzLmluc2VydEV4O1xuXG4gIHRoaXMuaGlzdG9y
eVN1cHBvcnQgPSAod2luZG93Lmhpc3RvcnkgIT0gbnVsbCA/IHdpbmRvdy5oaXN0b3J5LnB1c2hT
dGF0ZSA6IG51bGwpICE9IG51bGxcblxuICB0aGlzLmNvbmZpZ3VyZSgpO1xuICB0aGlzLm1vdW50
KHJvdXRlcyB8fCB7fSk7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAo
cikge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgICAsIHJvdXRlVG87XG4gIHRoaXMuaGFuZGxlciA9
IGZ1bmN0aW9uKG9uQ2hhbmdlRXZlbnQpIHtcbiAgICB2YXIgbmV3VVJMID0gb25DaGFuZ2VFdmVu
dCAmJiBvbkNoYW5nZUV2ZW50Lm5ld1VSTCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaDtcbiAgICB2
YXIgdXJsID0gc2VsZi5oaXN0b3J5ID09PSB0cnVlID8gc2VsZi5nZXRQYXRoKCkgOiBuZXdVUkwu
cmVwbGFjZSgvLiojLywgJycpO1xuICAgIHNlbGYuZGlzcGF0Y2goJ29uJywgdXJsLmNoYXJBdCgw
KSA9PT0gJy8nID8gdXJsIDogJy8nICsgdXJsKTtcbiAgfTtcblxuICBsaXN0ZW5lci5pbml0KHRo
aXMuaGFuZGxlciwgdGhpcy5oaXN0b3J5KTtcblxuICBpZiAodGhpcy5oaXN0b3J5ID09PSBmYWxz
ZSkge1xuICAgIGlmIChkbG9jSGFzaEVtcHR5KCkgJiYgcikge1xuICAgICAgZGxvYy5oYXNoID0g
cjtcbiAgICB9IGVsc2UgaWYgKCFkbG9jSGFzaEVtcHR5KCkpIHtcbiAgICAgIHNlbGYuZGlzcGF0
Y2goJ29uJywgJy8nICsgZGxvYy5oYXNoLnJlcGxhY2UoL14oI1xcL3wjfFxcLykvLCAnJykpO1xu
ICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICBpZiAodGhpcy5jb252ZXJ0X2hhc2hfaW5faW5pdCkg
e1xuICAgICAgLy8gVXNlIGhhc2ggYXMgcm91dGVcbiAgICAgIHJvdXRlVG8gPSBkbG9jSGFzaEVt
cHR5KCkgJiYgciA/IHIgOiAhZGxvY0hhc2hFbXB0eSgpID8gZGxvYy5oYXNoLnJlcGxhY2UoL14j
LywgJycpIDogbnVsbDtcbiAgICAgIGlmIChyb3V0ZVRvKSB7XG4gICAgICAgIHdpbmRvdy5oaXN0
b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHJvdXRlVG8pO1xuICAgICAgfVxu
ICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFVzZSBjYW5vbmljYWwgdXJsXG4gICAgICByb3V0
ZVRvID0gdGhpcy5nZXRQYXRoKCk7XG4gICAgfVxuXG4gICAgLy8gUm91dGVyIGhhcyBiZWVuIGlu
aXRpYWxpemVkLCBidXQgZHVlIHRvIHRoZSBjaHJvbWUgYnVnIGl0IHdpbGwgbm90XG4gICAgLy8g
eWV0IGFjdHVhbGx5IHJvdXRlIEhUTUw1IGhpc3Rvcnkgc3RhdGUgY2hhbmdlcy4gVGh1cywgZGVj
aWRlIGlmIHNob3VsZCByb3V0ZS5cbiAgICBpZiAocm91dGVUbyB8fCB0aGlzLnJ1bl9pbl9pbml0
ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICByZXR1
cm4gdGhpcztcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZXhwbG9kZSA9IGZ1bmN0aW9uICgpIHtc
biAgdmFyIHYgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgPyB0aGlzLmdldFBhdGgoKSA6IGRsb2Mu
aGFzaDtcbiAgaWYgKHYuY2hhckF0KDEpID09PSAnLycpIHsgdj12LnNsaWNlKDEpIH1cbiAgcmV0
dXJuIHYuc2xpY2UoMSwgdi5sZW5ndGgpLnNwbGl0KFwiL1wiKTtcbn07XG5cblJvdXRlci5wcm90
b3R5cGUuc2V0Um91dGUgPSBmdW5jdGlvbiAoaSwgdiwgdmFsKSB7XG4gIHZhciB1cmwgPSB0aGlz
LmV4cGxvZGUoKTtcblxuICBpZiAodHlwZW9mIGkgPT09ICdudW1iZXInICYmIHR5cGVvZiB2ID09
PSAnc3RyaW5nJykge1xuICAgIHVybFtpXSA9IHY7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHZh
bCA9PT0gJ3N0cmluZycpIHtcbiAgICB1cmwuc3BsaWNlKGksIHYsIHMpO1xuICB9XG4gIGVsc2Ug
e1xuICAgIHVybCA9IFtpXTtcbiAgfVxuXG4gIGxpc3RlbmVyLnNldEhhc2godXJsLmpvaW4oJy8n
KSk7XG4gIHJldHVybiB1cmw7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGluc2VydEV4KG1l
dGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudClcbi8vICMjIyMgQG1ldGhvZCB7c3RyaW5nfSBNZXRo
b2QgdG8gaW5zZXJ0IHRoZSBzcGVjaWZpYyBgcm91dGVgLlxuLy8gIyMjIyBAcGF0aCB7QXJyYXl9
IFBhcnNlZCBwYXRoIHRvIGluc2VydCB0aGUgYHJvdXRlYCBhdC5cbi8vICMjIyMgQHJvdXRlIHtB
cnJheXxmdW5jdGlvbn0gUm91dGUgaGFuZGxlcnMgdG8gaW5zZXJ0LlxuLy8gIyMjIyBAcGFyZW50
IHtPYmplY3R9ICoqT3B0aW9uYWwqKiBQYXJlbnQgXCJyb3V0ZXNcIiB0byBpbnNlcnQgaW50by5c
bi8vIGluc2VydCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBvbmx5IG9jY3VyIG9uY2UgcGVyIHRoZSBt
YXRjaGVkIHJvdXRlLlxuLy9cblJvdXRlci5wcm90b3R5cGUuaW5zZXJ0RXggPSBmdW5jdGlvbiht
ZXRob2QsIHBhdGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgaWYgKG1ldGhvZCA9PT0gXCJvbmNlXCIp
IHtcbiAgICBtZXRob2QgPSBcIm9uXCI7XG4gICAgcm91dGUgPSBmdW5jdGlvbihyb3V0ZSkge1xu
ICAgICAgdmFyIG9uY2UgPSBmYWxzZTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAg
ICAgaWYgKG9uY2UpIHJldHVybjtcbiAgICAgICAgb25jZSA9IHRydWU7XG4gICAgICAgIHJldHVy
biByb3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KHJvdXRlKTtc
biAgfVxuICByZXR1cm4gdGhpcy5faW5zZXJ0KG1ldGhvZCwgcGF0aCwgcm91dGUsIHBhcmVudCk7
XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmdldFJvdXRlID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFy
IHJldCA9IHY7XG5cbiAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0ID0g
dGhpcy5leHBsb2RlKClbdl07XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5n
XCIpe1xuICAgIHZhciBoID0gdGhpcy5leHBsb2RlKCk7XG4gICAgcmV0ID0gaC5pbmRleE9mKHYp
O1xuICB9XG4gIGVsc2Uge1xuICAgIHJldCA9IHRoaXMuZXhwbG9kZSgpO1xuICB9XG5cbiAgcmV0
dXJuIHJldDtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtc
biAgbGlzdGVuZXIuZGVzdHJveSh0aGlzLmhhbmRsZXIpO1xuICByZXR1cm4gdGhpcztcbn07XG5c
blJvdXRlci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhdGggPSB3
aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIGlmIChwYXRoLnN1YnN0cigwLCAxKSAhPT0gJy8n
KSB7XG4gICAgcGF0aCA9ICcvJyArIHBhdGg7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xuZnVu
Y3Rpb24gX2V2ZXJ5KGFyciwgaXRlcmF0b3IpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIu
bGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoaXRlcmF0b3IoYXJyW2ldLCBpLCBhcnIpID09PSBm
YWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfZmxhdHRl
bihhcnIpIHtcbiAgdmFyIGZsYXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcnIubGVu
Z3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgZmxhdCA9IGZsYXQuY29uY2F0KGFycltpXSk7XG4gIH1c
biAgcmV0dXJuIGZsYXQ7XG59XG5cbmZ1bmN0aW9uIF9hc3luY0V2ZXJ5U2VyaWVzKGFyciwgaXRl
cmF0b3IsIGNhbGxiYWNrKSB7XG4gIGlmICghYXJyLmxlbmd0aCkge1xuICAgIHJldHVybiBjYWxs
YmFjaygpO1xuICB9XG4gIHZhciBjb21wbGV0ZWQgPSAwO1xuICAoZnVuY3Rpb24gaXRlcmF0ZSgp
IHtcbiAgICBpdGVyYXRvcihhcnJbY29tcGxldGVkXSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICBp
ZiAoZXJyIHx8IGVyciA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAg
ICAgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29t
cGxldGVkICs9IDE7XG4gICAgICAgIGlmIChjb21wbGV0ZWQgPT09IGFyci5sZW5ndGgpIHtcbiAg
ICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZXJhdGUo
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KSgpO1xufVxuXG5mdW5jdGlvbiBw
YXJhbWlmeVN0cmluZyhzdHIsIHBhcmFtcywgbW9kKSB7XG4gIG1vZCA9IHN0cjtcbiAgZm9yICh2
YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShwYXJh
bSkpIHtcbiAgICAgIG1vZCA9IHBhcmFtc1twYXJhbV0oc3RyKTtcbiAgICAgIGlmIChtb2QgIT09
IHN0cikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1v
ZCA9PT0gc3RyID8gXCIoWy5fYS16QS1aMC05LSUoKV0rKVwiIDogbW9kO1xufVxuXG5mdW5jdGlv
biByZWdpZnlTdHJpbmcoc3RyLCBwYXJhbXMpIHtcbiAgdmFyIG1hdGNoZXMsIGxhc3QgPSAwLCBv
dXQgPSBcIlwiO1xuICB3aGlsZSAobWF0Y2hlcyA9IHN0ci5zdWJzdHIobGFzdCkubWF0Y2goL1te
XFx3XFxkXFwtICVAJl0qXFwqW15cXHdcXGRcXC0gJUAmXSovKSkge1xuICAgIGxhc3QgPSBtYXRj
aGVzLmluZGV4ICsgbWF0Y2hlc1swXS5sZW5ndGg7XG4gICAgbWF0Y2hlc1swXSA9IG1hdGNoZXNb
MF0ucmVwbGFjZSgvXlxcKi8sIFwiKFtfLigpIVxcXFwgJUAmYS16QS1aMC05LV0rKVwiKTtcbiAg
ICBvdXQgKz0gc3RyLnN1YnN0cigwLCBtYXRjaGVzLmluZGV4KSArIG1hdGNoZXNbMF07XG4gIH1c
biAgc3RyID0gb3V0ICs9IHN0ci5zdWJzdHIobGFzdCk7XG4gIHZhciBjYXB0dXJlcyA9IHN0ci5t
YXRjaCgvOihbXlxcL10rKS9pZyksIGNhcHR1cmUsIGxlbmd0aDtcbiAgaWYgKGNhcHR1cmVzKSB7
XG4gICAgbGVuZ3RoID0gY2FwdHVyZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHtcbiAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tpXTtcbiAgICAgIGlmIChj
YXB0dXJlLnNsaWNlKDAsIDIpID09PSBcIjo6XCIpIHtcbiAgICAgICAgc3RyID0gY2FwdHVyZS5z
bGljZSgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGNhcHR1
cmUsIHBhcmFtaWZ5U3RyaW5nKGNhcHR1cmUsIHBhcmFtcykpO1xuICAgICAgfVxuICAgIH1cbiAg
fVxuICByZXR1cm4gc3RyO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hdG9yKHJvdXRlcywgZGVsaW1p
dGVyLCBzdGFydCwgc3RvcCkge1xuICB2YXIgbGFzdCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAs
IHN0YXJ0ID0gKHN0YXJ0IHx8IFwiKFwiKS50b1N0cmluZygpLCBzdG9wID0gKHN0b3AgfHwgXCIp
XCIpLnRvU3RyaW5nKCksIGk7XG4gIGZvciAoaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBpKysp
IHtcbiAgICB2YXIgY2h1bmsgPSByb3V0ZXNbaV07XG4gICAgaWYgKGNodW5rLmluZGV4T2Yoc3Rh
cnQsIGxhc3QpID4gY2h1bmsuaW5kZXhPZihzdG9wLCBsYXN0KSB8fCB+Y2h1bmsuaW5kZXhPZihz
dGFydCwgbGFzdCkgJiYgIX5jaHVuay5pbmRleE9mKHN0b3AsIGxhc3QpIHx8ICF+Y2h1bmsuaW5k
ZXhPZihzdGFydCwgbGFzdCkgJiYgfmNodW5rLmluZGV4T2Yoc3RvcCwgbGFzdCkpIHtcbiAgICAg
IGxlZnQgPSBjaHVuay5pbmRleE9mKHN0YXJ0LCBsYXN0KTtcbiAgICAgIHJpZ2h0ID0gY2h1bmsu
aW5kZXhPZihzdG9wLCBsYXN0KTtcbiAgICAgIGlmICh+bGVmdCAmJiAhfnJpZ2h0IHx8ICF+bGVm
dCAmJiB+cmlnaHQpIHtcbiAgICAgICAgdmFyIHRtcCA9IHJvdXRlcy5zbGljZSgwLCAoaSB8fCAx
KSArIDEpLmpvaW4oZGVsaW1pdGVyKTtcbiAgICAgICAgcm91dGVzID0gWyB0bXAgXS5jb25jYXQo
cm91dGVzLnNsaWNlKChpIHx8IDEpICsgMSkpO1xuICAgICAgfVxuICAgICAgbGFzdCA9IChyaWdo
dCA+IGxlZnQgPyByaWdodCA6IGxlZnQpICsgMTtcbiAgICAgIGkgPSAwO1xuICAgIH0gZWxzZSB7
XG4gICAgICBsYXN0ID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn1cblxudmFy
IFFVRVJZX1NFUEFSQVRPUiA9IC9cXD8uKi87XG5cblJvdXRlci5wcm90b3R5cGUuY29uZmlndXJl
ID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLl9t
ZXRob2RzW3RoaXMubWV0aG9kc1tpXV0gPSB0cnVlO1xuICB9XG4gIHRoaXMucmVjdXJzZSA9IG9w
dGlvbnMucmVjdXJzZSB8fCB0aGlzLnJlY3Vyc2UgfHwgZmFsc2U7XG4gIHRoaXMuYXN5bmMgPSBv
cHRpb25zLmFzeW5jIHx8IGZhbHNlO1xuICB0aGlzLmRlbGltaXRlciA9IG9wdGlvbnMuZGVsaW1p
dGVyIHx8IFwiL1wiO1xuICB0aGlzLnN0cmljdCA9IHR5cGVvZiBvcHRpb25zLnN0cmljdCA9PT0g
XCJ1bmRlZmluZWRcIiA/IHRydWUgOiBvcHRpb25zLnN0cmljdDtcbiAgdGhpcy5ub3Rmb3VuZCA9
IG9wdGlvbnMubm90Zm91bmQ7XG4gIHRoaXMucmVzb3VyY2UgPSBvcHRpb25zLnJlc291cmNlO1xu
ICB0aGlzLmhpc3RvcnkgPSBvcHRpb25zLmh0bWw1aGlzdG9yeSAmJiB0aGlzLmhpc3RvcnlTdXBw
b3J0IHx8IGZhbHNlO1xuICB0aGlzLnJ1bl9pbl9pbml0ID0gdGhpcy5oaXN0b3J5ID09PSB0cnVl
ICYmIG9wdGlvbnMucnVuX2hhbmRsZXJfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuY29udmVy
dF9oYXNoX2luX2luaXQgPSB0aGlzLmhpc3RvcnkgPT09IHRydWUgJiYgb3B0aW9ucy5jb252ZXJ0
X2hhc2hfaW5faW5pdCAhPT0gZmFsc2U7XG4gIHRoaXMuZXZlcnkgPSB7XG4gICAgYWZ0ZXI6IG9w
dGlvbnMuYWZ0ZXIgfHwgbnVsbCxcbiAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlIHx8IG51bGws
XG4gICAgb246IG9wdGlvbnMub24gfHwgbnVsbFxuICB9O1xuICByZXR1cm4gdGhpcztcbn07XG5c
blJvdXRlci5wcm90b3R5cGUucGFyYW0gPSBmdW5jdGlvbih0b2tlbiwgbWF0Y2hlcikge1xuICBp
ZiAodG9rZW5bMF0gIT09IFwiOlwiKSB7XG4gICAgdG9rZW4gPSBcIjpcIiArIHRva2VuO1xuICB9
XG4gIHZhciBjb21waWxlZCA9IG5ldyBSZWdFeHAodG9rZW4sIFwiZ1wiKTtcbiAgdGhpcy5wYXJh
bXNbdG9rZW5dID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNvbXBp
bGVkLCBtYXRjaGVyLnNvdXJjZSB8fCBtYXRjaGVyKTtcbiAgfTtcbiAgcmV0dXJuIHRoaXM7XG59
O1xuXG5Sb3V0ZXIucHJvdG90eXBlLm9uID0gUm91dGVyLnByb3RvdHlwZS5yb3V0ZSA9IGZ1bmN0
aW9uKG1ldGhvZCwgcGF0aCwgcm91dGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoIXJv
dXRlICYmIHR5cGVvZiBwYXRoID09IFwiZnVuY3Rpb25cIikge1xuICAgIHJvdXRlID0gcGF0aDtc
biAgICBwYXRoID0gbWV0aG9kO1xuICAgIG1ldGhvZCA9IFwib25cIjtcbiAgfVxuICBpZiAoQXJy
YXkuaXNBcnJheShwYXRoKSkge1xuICAgIHJldHVybiBwYXRoLmZvckVhY2goZnVuY3Rpb24ocCkg
e1xuICAgICAgc2VsZi5vbihtZXRob2QsIHAsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBpZiAo
cGF0aC5zb3VyY2UpIHtcbiAgICBwYXRoID0gcGF0aC5zb3VyY2UucmVwbGFjZSgvXFxcXFxcLy9p
ZywgXCIvXCIpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG1ldGhvZCkpIHtcbiAgICByZXR1
cm4gbWV0aG9kLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAgICAgc2VsZi5vbihtLnRvTG93ZXJD
YXNlKCksIHBhdGgsIHJvdXRlKTtcbiAgICB9KTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChu
ZXcgUmVnRXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRo
aXMuZGVsaW1pdGVyKTtcbiAgdGhpcy5pbnNlcnQobWV0aG9kLCB0aGlzLnNjb3BlLmNvbmNhdChw
YXRoKSwgcm91dGUpO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24ocGF0
aCwgcm91dGVzRm4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBsZW5ndGggPSB0aGlzLnNjb3BlLmxl
bmd0aDtcbiAgaWYgKHBhdGguc291cmNlKSB7XG4gICAgcGF0aCA9IHBhdGguc291cmNlLnJlcGxh
Y2UoL1xcXFxcXC8vaWcsIFwiL1wiKTtcbiAgfVxuICBwYXRoID0gcGF0aC5zcGxpdChuZXcgUmVn
RXhwKHRoaXMuZGVsaW1pdGVyKSk7XG4gIHBhdGggPSB0ZXJtaW5hdG9yKHBhdGgsIHRoaXMuZGVs
aW1pdGVyKTtcbiAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUuY29uY2F0KHBhdGgpO1xuICByb3V0
ZXNGbi5jYWxsKHRoaXMsIHRoaXMpO1xuICB0aGlzLnNjb3BlLnNwbGljZShsZW5ndGgsIHBhdGgu
bGVuZ3RoKTtcbn07XG5cblJvdXRlci5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRo
b2QsIHBhdGgsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0gdGhpcywgZm5zID0gdGhpcy50cmF2
ZXJzZShtZXRob2QsIHBhdGgucmVwbGFjZShRVUVSWV9TRVBBUkFUT1IsIFwiXCIpLCB0aGlzLnJv
dXRlcywgXCJcIiksIGludm9rZWQgPSB0aGlzLl9pbnZva2VkLCBhZnRlcjtcbiAgdGhpcy5faW52
b2tlZCA9IHRydWU7XG4gIGlmICghZm5zIHx8IGZucy5sZW5ndGggPT09IDApIHtcbiAgICB0aGlz
Lmxhc3QgPSBbXTtcbiAgICBpZiAodHlwZW9mIHRoaXMubm90Zm91bmQgPT09IFwiZnVuY3Rpb25c
Iikge1xuICAgICAgdGhpcy5pbnZva2UoWyB0aGlzLm5vdGZvdW5kIF0sIHtcbiAgICAgICAgbWV0
aG9kOiBtZXRob2QsXG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH0sIGNhbGxiYWNrKTtcbiAg
ICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLnJlY3Vyc2UgPT09IFwiZm9y
d2FyZFwiKSB7XG4gICAgZm5zID0gZm5zLnJldmVyc2UoKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRh
dGVBbmRJbnZva2UoKSB7XG4gICAgc2VsZi5sYXN0ID0gZm5zLmFmdGVyO1xuICAgIHNlbGYuaW52
b2tlKHNlbGYucnVubGlzdChmbnMpLCBzZWxmLCBjYWxsYmFjayk7XG4gIH1cbiAgYWZ0ZXIgPSB0
aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYWZ0ZXIgPyBbIHRoaXMuZXZlcnkuYWZ0ZXIgXS5jb25j
YXQodGhpcy5sYXN0KSA6IFsgdGhpcy5sYXN0IF07XG4gIGlmIChhZnRlciAmJiBhZnRlci5sZW5n
dGggPiAwICYmIGludm9rZWQpIHtcbiAgICBpZiAodGhpcy5hc3luYykge1xuICAgICAgdGhpcy5p
bnZva2UoYWZ0ZXIsIHRoaXMsIHVwZGF0ZUFuZEludm9rZSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHRoaXMuaW52b2tlKGFmdGVyLCB0aGlzKTtcbiAgICAgIHVwZGF0ZUFuZEludm9rZSgpO1xuICAg
IH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB1cGRhdGVBbmRJbnZva2UoKTtcbiAgcmV0dXJu
IHRydWU7XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLmludm9rZSA9IGZ1bmN0aW9uKGZucywgdGhp
c0FyZywgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXBwbHk7XG4gIGlm
ICh0aGlzLmFzeW5jKSB7XG4gICAgYXBwbHkgPSBmdW5jdGlvbihmbiwgbmV4dCkge1xuICAgICAg
aWYgKEFycmF5LmlzQXJyYXkoZm4pKSB7XG4gICAgICAgIHJldHVybiBfYXN5bmNFdmVyeVNlcmll
cyhmbiwgYXBwbHksIG5leHQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm4gPT0gXCJmdW5j
dGlvblwiKSB7XG4gICAgICAgIGZuLmFwcGx5KHRoaXNBcmcsIChmbnMuY2FwdHVyZXMgfHwgW10p
LmNvbmNhdChuZXh0KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfYXN5bmNFdmVyeVNlcmllcyhm
bnMsIGFwcGx5LCBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBj
YWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9
IGVsc2Uge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24oZm4pIHtcbiAgICAgIGlmIChBcnJheS5pc0Fy
cmF5KGZuKSkge1xuICAgICAgICByZXR1cm4gX2V2ZXJ5KGZuLCBhcHBseSk7XG4gICAgICB9IGVs
c2UgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBmbi5h
cHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAgfSBlbHNlIGlmICh0eXBl
b2YgZm4gPT09IFwic3RyaW5nXCIgJiYgc2VsZi5yZXNvdXJjZSkge1xuICAgICAgICBzZWxmLnJl
c291cmNlW2ZuXS5hcHBseSh0aGlzQXJnLCBmbnMuY2FwdHVyZXMgfHwgW10pO1xuICAgICAgfVxu
ICAgIH07XG4gICAgX2V2ZXJ5KGZucywgYXBwbHkpO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90
eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24obWV0aG9kLCBwYXRoLCByb3V0ZXMsIHJlZ2V4cCwgZmls
dGVyKSB7XG4gIHZhciBmbnMgPSBbXSwgY3VycmVudCwgZXhhY3QsIG1hdGNoLCBuZXh0LCB0aGF0
O1xuICBmdW5jdGlvbiBmaWx0ZXJSb3V0ZXMocm91dGVzKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHtc
biAgICAgIHJldHVybiByb3V0ZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZXBDb3B5KHNvdXJj
ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
b3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0W2ldID0gQXJyYXkuaXNBcnJheShz
b3VyY2VbaV0pID8gZGVlcENvcHkoc291cmNlW2ldKSA6IHNvdXJjZVtpXTtcbiAgICAgIH1cbiAg
ICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVyKGZucykg
e1xuICAgICAgZm9yICh2YXIgaSA9IGZucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAg
ICAgICBpZiAoQXJyYXkuaXNBcnJheShmbnNbaV0pKSB7XG4gICAgICAgICAgYXBwbHlGaWx0ZXIo
Zm5zW2ldKTtcbiAgICAgICAgICBpZiAoZm5zW2ldLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAg
ICAgZm5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAg
ICAgICAgaWYgKCFmaWx0ZXIoZm5zW2ldKSkge1xuICAgICAgICAgICAgZm5zLnNwbGljZShpLCAx
KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG5ld1Jv
dXRlcyA9IGRlZXBDb3B5KHJvdXRlcyk7XG4gICAgbmV3Um91dGVzLm1hdGNoZWQgPSByb3V0ZXMu
bWF0Y2hlZDtcbiAgICBuZXdSb3V0ZXMuY2FwdHVyZXMgPSByb3V0ZXMuY2FwdHVyZXM7XG4gICAg
bmV3Um91dGVzLmFmdGVyID0gcm91dGVzLmFmdGVyLmZpbHRlcihmaWx0ZXIpO1xuICAgIGFwcGx5
RmlsdGVyKG5ld1JvdXRlcyk7XG4gICAgcmV0dXJuIG5ld1JvdXRlcztcbiAgfVxuICBpZiAocGF0
aCA9PT0gdGhpcy5kZWxpbWl0ZXIgJiYgcm91dGVzW21ldGhvZF0pIHtcbiAgICBuZXh0ID0gWyBb
IHJvdXRlcy5iZWZvcmUsIHJvdXRlc1ttZXRob2RdIF0uZmlsdGVyKEJvb2xlYW4pIF07XG4gICAg
bmV4dC5hZnRlciA9IFsgcm91dGVzLmFmdGVyIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIG5leHQu
bWF0Y2hlZCA9IHRydWU7XG4gICAgbmV4dC5jYXB0dXJlcyA9IFtdO1xuICAgIHJldHVybiBmaWx0
ZXJSb3V0ZXMobmV4dCk7XG4gIH1cbiAgZm9yICh2YXIgciBpbiByb3V0ZXMpIHtcbiAgICBpZiAo
cm91dGVzLmhhc093blByb3BlcnR5KHIpICYmICghdGhpcy5fbWV0aG9kc1tyXSB8fCB0aGlzLl9t
ZXRob2RzW3JdICYmIHR5cGVvZiByb3V0ZXNbcl0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5Lmlz
QXJyYXkocm91dGVzW3JdKSkpIHtcbiAgICAgIGN1cnJlbnQgPSBleGFjdCA9IHJlZ2V4cCArIHRo
aXMuZGVsaW1pdGVyICsgcjtcbiAgICAgIGlmICghdGhpcy5zdHJpY3QpIHtcbiAgICAgICAgZXhh
Y3QgKz0gXCJbXCIgKyB0aGlzLmRlbGltaXRlciArIFwiXT9cIjtcbiAgICAgIH1cbiAgICAgIG1h
dGNoID0gcGF0aC5tYXRjaChuZXcgUmVnRXhwKFwiXlwiICsgZXhhY3QpKTtcbiAgICAgIGlmICgh
bWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2hbMF0g
JiYgbWF0Y2hbMF0gPT0gcGF0aCAmJiByb3V0ZXNbcl1bbWV0aG9kXSkge1xuICAgICAgICBuZXh0
ID0gWyBbIHJvdXRlc1tyXS5iZWZvcmUsIHJvdXRlc1tyXVttZXRob2RdIF0uZmlsdGVyKEJvb2xl
YW4pIF07XG4gICAgICAgIG5leHQuYWZ0ZXIgPSBbIHJvdXRlc1tyXS5hZnRlciBdLmZpbHRlcihC
b29sZWFuKTtcbiAgICAgICAgbmV4dC5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgbmV4dC5jYXB0
dXJlcyA9IG1hdGNoLnNsaWNlKDEpO1xuICAgICAgICBpZiAodGhpcy5yZWN1cnNlICYmIHJvdXRl
cyA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICBuZXh0LnB1c2goWyByb3V0ZXMuYmVmb3Jl
LCByb3V0ZXMub24gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIG5leHQuYWZ0ZXIgPSBu
ZXh0LmFmdGVyLmNvbmNhdChbIHJvdXRlcy5hZnRlciBdLmZpbHRlcihCb29sZWFuKSk7XG4gICAg
ICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlclJvdXRlcyhuZXh0KTtcbiAgICAgIH1cbiAgICAg
IG5leHQgPSB0aGlzLnRyYXZlcnNlKG1ldGhvZCwgcGF0aCwgcm91dGVzW3JdLCBjdXJyZW50KTtc
biAgICAgIGlmIChuZXh0Lm1hdGNoZWQpIHtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoID4gMCkg
e1xuICAgICAgICAgIGZucyA9IGZucy5jb25jYXQobmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAg
aWYgKHRoaXMucmVjdXJzZSkge1xuICAgICAgICAgIGZucy5wdXNoKFsgcm91dGVzW3JdLmJlZm9y
ZSwgcm91dGVzW3JdLm9uIF0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICBuZXh0LmFmdGVy
ID0gbmV4dC5hZnRlci5jb25jYXQoWyByb3V0ZXNbcl0uYWZ0ZXIgXS5maWx0ZXIoQm9vbGVhbikp
O1xuICAgICAgICAgIGlmIChyb3V0ZXMgPT09IHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBm
bnMucHVzaChbIHJvdXRlc1tcImJlZm9yZVwiXSwgcm91dGVzW1wib25cIl0gXS5maWx0ZXIoQm9v
bGVhbikpO1xuICAgICAgICAgICAgbmV4dC5hZnRlciA9IG5leHQuYWZ0ZXIuY29uY2F0KFsgcm91
dGVzW1wiYWZ0ZXJcIl0gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIH1cbiAgICAgICAg
fVxuICAgICAgICBmbnMubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIGZucy5jYXB0dXJlcyA9IG5l
eHQuY2FwdHVyZXM7XG4gICAgICAgIGZucy5hZnRlciA9IG5leHQuYWZ0ZXI7XG4gICAgICAgIHJl
dHVybiBmaWx0ZXJSb3V0ZXMoZm5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZh
bHNlO1xufTtcblxuUm91dGVyLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbihtZXRob2QsIHBh
dGgsIHJvdXRlLCBwYXJlbnQpIHtcbiAgdmFyIG1ldGhvZFR5cGUsIHBhcmVudFR5cGUsIGlzQXJy
YXksIG5lc3RlZCwgcGFydDtcbiAgcGF0aCA9IHBhdGguZmlsdGVyKGZ1bmN0aW9uKHApIHtcbiAg
ICByZXR1cm4gcCAmJiBwLmxlbmd0aCA+IDA7XG4gIH0pO1xuICBwYXJlbnQgPSBwYXJlbnQgfHwg
dGhpcy5yb3V0ZXM7XG4gIHBhcnQgPSBwYXRoLnNoaWZ0KCk7XG4gIGlmICgvXFw6fFxcKi8udGVz
dChwYXJ0KSAmJiAhL1xcXFxkfFxcXFx3Ly50ZXN0KHBhcnQpKSB7XG4gICAgcGFydCA9IHJlZ2lm
eVN0cmluZyhwYXJ0LCB0aGlzLnBhcmFtcyk7XG4gIH1cbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkg
e1xuICAgIHBhcmVudFtwYXJ0XSA9IHBhcmVudFtwYXJ0XSB8fCB7fTtcbiAgICByZXR1cm4gdGhp
cy5pbnNlcnQobWV0aG9kLCBwYXRoLCByb3V0ZSwgcGFyZW50W3BhcnRdKTtcbiAgfVxuICBpZiAo
IXBhcnQgJiYgIXBhdGgubGVuZ3RoICYmIHBhcmVudCA9PT0gdGhpcy5yb3V0ZXMpIHtcbiAgICBt
ZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFttZXRob2RdO1xuICAgIHN3aXRjaCAobWV0aG9kVHlw
ZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gWyBw
YXJlbnRbbWV0aG9kXSwgcm91dGUgXTtcbiAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVj
dFwiOlxuICAgICAgcGFyZW50W21ldGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47XG4g
ICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHBhcmVudFttZXRob2RdID0gcm91dGU7XG4g
ICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBwYXJlbnRUeXBlID0gdHlw
ZW9mIHBhcmVudFtwYXJ0XTtcbiAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyZW50W3BhcnRd
KTtcbiAgaWYgKHBhcmVudFtwYXJ0XSAmJiAhaXNBcnJheSAmJiBwYXJlbnRUeXBlID09IFwib2Jq
ZWN0XCIpIHtcbiAgICBtZXRob2RUeXBlID0gdHlwZW9mIHBhcmVudFtwYXJ0XVttZXRob2RdO1xu
ICAgIHN3aXRjaCAobWV0aG9kVHlwZSkge1xuICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAg
IHBhcmVudFtwYXJ0XVttZXRob2RdID0gWyBwYXJlbnRbcGFydF1bbWV0aG9kXSwgcm91dGUgXTtc
biAgICAgIHJldHVybjtcbiAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgcGFyZW50W3BhcnRd
W21ldGhvZF0ucHVzaChyb3V0ZSk7XG4gICAgICByZXR1cm47XG4gICAgIGNhc2UgXCJ1bmRlZmlu
ZWRcIjpcbiAgICAgIHBhcmVudFtwYXJ0XVttZXRob2RdID0gcm91dGU7XG4gICAgICByZXR1cm47
XG4gICAgfVxuICB9IGVsc2UgaWYgKHBhcmVudFR5cGUgPT0gXCJ1bmRlZmluZWRcIikge1xuICAg
IG5lc3RlZCA9IHt9O1xuICAgIG5lc3RlZFttZXRob2RdID0gcm91dGU7XG4gICAgcGFyZW50W3Bh
cnRdID0gbmVzdGVkO1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZh
bGlkIHJvdXRlIGNvbnRleHQ6IFwiICsgcGFyZW50VHlwZSk7XG59O1xuXG5cblxuUm91dGVyLnBy
b3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihtZXRob2RzKSB7XG4gIHZhciBzZWxmID0gdGhpcywg
bGVuID0gbWV0aG9kcy5sZW5ndGgsIGk7XG4gIGZ1bmN0aW9uIGV4dGVuZChtZXRob2QpIHtcbiAg
ICBzZWxmLl9tZXRob2RzW21ldGhvZF0gPSB0cnVlO1xuICAgIHNlbGZbbWV0aG9kXSA9IGZ1bmN0
aW9uKCkge1xuICAgICAgdmFyIGV4dHJhID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IFsgbWV0
aG9kLCBcIlwiIF0gOiBbIG1ldGhvZCBdO1xuICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBleHRy
YS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuICAgIH07
XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgZXh0ZW5kKG1ldGhvZHNb
aV0pO1xuICB9XG59O1xuXG5Sb3V0ZXIucHJvdG90eXBlLnJ1bmxpc3QgPSBmdW5jdGlvbihmbnMp
IHtcbiAgdmFyIHJ1bmxpc3QgPSB0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkuYmVmb3JlID8gWyB0
aGlzLmV2ZXJ5LmJlZm9yZSBdLmNvbmNhdChfZmxhdHRlbihmbnMpKSA6IF9mbGF0dGVuKGZucyk7
XG4gIGlmICh0aGlzLmV2ZXJ5ICYmIHRoaXMuZXZlcnkub24pIHtcbiAgICBydW5saXN0LnB1c2go
dGhpcy5ldmVyeS5vbik7XG4gIH1cbiAgcnVubGlzdC5jYXB0dXJlcyA9IGZucy5jYXB0dXJlcztc
biAgcnVubGlzdC5zb3VyY2UgPSBmbnMuc291cmNlO1xuICByZXR1cm4gcnVubGlzdDtcbn07XG5c
blJvdXRlci5wcm90b3R5cGUubW91bnQgPSBmdW5jdGlvbihyb3V0ZXMsIHBhdGgpIHtcbiAgaWYg
KCFyb3V0ZXMgfHwgdHlwZW9mIHJvdXRlcyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5
KHJvdXRlcykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBwYXRo
ID0gcGF0aCB8fCBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgcGF0aCA9
IHBhdGguc3BsaXQoc2VsZi5kZWxpbWl0ZXIpO1xuICB9XG4gIGZ1bmN0aW9uIGluc2VydE9yTW91
bnQocm91dGUsIGxvY2FsKSB7XG4gICAgdmFyIHJlbmFtZSA9IHJvdXRlLCBwYXJ0cyA9IHJvdXRl
LnNwbGl0KHNlbGYuZGVsaW1pdGVyKSwgcm91dGVUeXBlID0gdHlwZW9mIHJvdXRlc1tyb3V0ZV0s
IGlzUm91dGUgPSBwYXJ0c1swXSA9PT0gXCJcIiB8fCAhc2VsZi5fbWV0aG9kc1twYXJ0c1swXV0s
IGV2ZW50ID0gaXNSb3V0ZSA/IFwib25cIiA6IHJlbmFtZTtcbiAgICBpZiAoaXNSb3V0ZSkge1xu
ICAgICAgcmVuYW1lID0gcmVuYW1lLnNsaWNlKChyZW5hbWUubWF0Y2gobmV3IFJlZ0V4cChcIl5c
IiArIHNlbGYuZGVsaW1pdGVyKSkgfHwgWyBcIlwiIF0pWzBdLmxlbmd0aCk7XG4gICAgICBwYXJ0
cy5zaGlmdCgpO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSAmJiByb3V0ZVR5cGUgPT09IFwib2Jq
ZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkocm91dGVzW3JvdXRlXSkpIHtcbiAgICAgIGxvY2FsID0g
bG9jYWwuY29uY2F0KHBhcnRzKTtcbiAgICAgIHNlbGYubW91bnQocm91dGVzW3JvdXRlXSwgbG9j
YWwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNSb3V0ZSkge1xuICAgICAgbG9j
YWwgPSBsb2NhbC5jb25jYXQocmVuYW1lLnNwbGl0KHNlbGYuZGVsaW1pdGVyKSk7XG4gICAgICBs
b2NhbCA9IHRlcm1pbmF0b3IobG9jYWwsIHNlbGYuZGVsaW1pdGVyKTtcbiAgICB9XG4gICAgc2Vs
Zi5pbnNlcnQoZXZlbnQsIGxvY2FsLCByb3V0ZXNbcm91dGVdKTtcbiAgfVxuICBmb3IgKHZhciBy
b3V0ZSBpbiByb3V0ZXMpIHtcbiAgICBpZiAocm91dGVzLmhhc093blByb3BlcnR5KHJvdXRlKSkg
e1xuICAgICAgaW5zZXJ0T3JNb3VudChyb3V0ZSwgcGF0aC5zbGljZSgwKSk7XG4gICAgfVxuICB9
XG59O1xuXG5cblxufSh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIiA/IGV4cG9ydHMgOiB3
aW5kb3cpKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAu
L34vZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IHJtbmhcbi8vIG1v
ZHVsZSBjaHVua3MgPSAxIiwiLyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBsaXN0IGZvcm1hdCBwcm9k
dWNlZCBieSBjc3MtbG9hZGVyIGludG8gc29tZXRoaW5nXG4gKiBlYXNpZXIgdG8gbWFuaXB1bGF0
ZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElk
LCBsaXN0KSB7XG4gIHZhciBzdHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0
W2ldXG4gICAgdmFyIGlkID0gaXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFy
IG1lZGlhID0gaXRlbVsyXVxuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBh
cnQgPSB7XG4gICAgICBpZDogcGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4g
ICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAg
ICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0g
PSB7IGlkOiBpZCwgcGFydHM6IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHls
ZXNbaWRdLnBhcnRzLnB1c2gocGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxu
XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Z1ZS1z
dHlsZS1sb2FkZXIvbGliL2xpc3RUb1N0eWxlcy5qc1xuLy8gbW9kdWxlIGlkID0gdFRWa1xuLy8g
bW9kdWxlIGNodW5rcyA9IDEiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3BhY2thZ2UtbG9jay5q
c29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL3BhY2thZ2UtbG9jay5qc29uCmluZGV4IGIxZTY5
OWI5MWI3NGM2NmNiMWMzODk1OTRhZjdjOTg0OWYyZGVmZGYuLjkwZjRlMmZhNmVjMTk1NzEyOWZj
ZTVlMTFkZjE1ZGY3YmEzNGIyNjEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9w
YWNrYWdlLWxvY2suanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvcGFja2FnZS1sb2Nr
Lmpzb24KQEAgLTIsMTIgKzIsNiBAQAogICAicmVxdWlyZXMiOiB0cnVlLAogICAibG9ja2ZpbGVW
ZXJzaW9uIjogMSwKICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAiYWJicmV2IjogewotICAgICAg
InZlcnNpb24iOiAiMS4xLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2FiYnJldi8tL2FiYnJldi0xLjEuMC50Z3oiLAotICAgICAgImludGVncml0eSI6
ICJzaGExLTBGVk1JbFpqYmk5VzU4TGxyUmcvaFpRbzJCOD0iLAotICAgICAgImRldiI6IHRydWUK
LSAgICB9LAogICAgICJhY2NlcHRzIjogewogICAgICAgInZlcnNpb24iOiAiMS4zLjMiLAogICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FjY2VwdHMvLS9hY2Nl
cHRzLTEuMy4zLnRneiIsCkBAIC00MSw2ICszNSw0MSBAQAogICAgICAgICB9CiAgICAgICB9CiAg
ICAgfSwKKyAgICAiYWNvcm4tanN4IjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fjb3JuLWpzeC8tL2Fj
b3JuLWpzeC0zLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXI5K1VpUHNlenZ5
RFNQYjdJdlJrNHlwWXMycz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJhY29ybiI6ICIzLjMuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAiYWNvcm4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4zLjAi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hY29y
bi8tL2Fjb3JuLTMuMy4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVJlTi9z
NTZOby9KYnJ1UC9VMm5pdTE4aUFYbz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9LAorICAgICJhZ2VudC1iYXNlIjogeworICAgICAgInZlcnNpb24i
OiAiMi4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2FnZW50LWJhc2UvLS9hZ2VudC1iYXNlLTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtMXQ0UTFhOWhNdFc5YVNRbjFHL0ZPRk9RbE1jPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImV4dGVuZCI6ICIzLjAuMSIsCisgICAgICAg
ICJzZW12ZXIiOiAiNS4wLjMiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAg
ICAgICAgInNlbXZlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMyIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NlbXZlci8tL3NlbXZl
ci01LjAuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1kMFp0NVluTlhUeVY4
VGlxZUx4V21qeTEwbm89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKICAgICAiYWp2IjogewogICAgICAgInZlcnNpb24iOiAiNS4yLjIiLAogICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fqdi8tL2Fqdi01LjIu
Mi50Z3oiLApAQCAtNzYsNiArMTA1LDEyIEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbDZF
UmxrbXlFYTB6YVIyZm4waHFqc243NEtNPSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisg
ICAgImFuc2ktZXNjYXBlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLWVzY2FwZXMvLS9hbnNp
LWVzY2FwZXMtMS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wNmlvT3pHYXBu
ZVRaaXNUNTJISGtSUWlNRzQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiYW5z
aS1odG1sIjogewogICAgICAgInZlcnNpb24iOiAiMC4wLjciLAogICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktaHRtbC8tL2Fuc2ktaHRtbC0wLjAuNy50
Z3oiLApAQCAtODUsMTQgKzEyMCwxNiBAQAogICAgICJhbnNpLXJlZ2V4IjogewogICAgICAgInZl
cnNpb24iOiAiMi4xLjEiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2Fuc2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTIuMS4xLnRneiIsCi0gICAgICAiaW50ZWdy
aXR5IjogInNoYTEtdzdNNnRlNDJEWWJnNWlqd1Jvcm43eWZXVk44PSIsCi0gICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgImludGVncml0eSI6ICJzaGExLXc3TTZ0ZTQyRFliZzVpandSb3JuN3lmV1ZO
OD0iCiAgICAgfSwKICAgICAiYW5zaS1zdHlsZXMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjIu
MSIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1z
dHlsZXMvLS9hbnNpLXN0eWxlcy0yLjIuMS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGEx
LXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAotICAgICAgImRldiI6IHRydWUKKyAgICAg
ICJ2ZXJzaW9uIjogIjMuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTMuMi4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi1OblNPbU1FWXRWUjJKVk1JR1R6eW5Sa2theHRpcTF4bkZCY2RR
RC9Ebk5DWVBvRVBzVkpoTTk4QkR5YW9OT1FJaTdwNG9rZGkzRTI3ZU43R1Fic1V1Zz09IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY29sb3ItY29u
dmVydCI6ICIxLjkuMCIKKyAgICAgIH0KICAgICB9LAogICAgICJhbnltYXRjaCI6IHsKICAgICAg
ICJ2ZXJzaW9uIjogIjEuMy4yIiwKQEAgLTEzNCwxMiArMTcxLDM5IEBACiAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPSIsCiAgICAgICAiZGV2Ijog
dHJ1ZQogICAgIH0sCisgICAgImFycmF5LXVuaW9uIjogeworICAgICAgInZlcnNpb24iOiAiMS4w
LjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5
LXVuaW9uLy0vYXJyYXktdW5pb24tMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1talJCRGs5T1BhSTk2amRiNWI1dzhrZDQ3RGs9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXJyYXktdW5pcSI6ICIxLjAuMyIKKyAgICAgIH0K
KyAgICB9LAorICAgICJhcnJheS11bmlxIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LXVuaXEv
LS9hcnJheS11bmlxLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcjJySWQ2
SmN4L2RPQllpVWRUaFkzOXNrL2JZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAg
ImFycmF5LXVuaXF1ZSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKICAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS11bmlxdWUvLS9hcnJheS11
bmlxdWUtMC4yLjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vZGw4eXZ5OEppWE1j
UHJjNnphbERGaXdHbE09IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAiYXJyaWZ5
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2FycmlmeS8tL2FycmlmeS0xLjAuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLWlZVUkyaUltODREZmtFY29SV2hKd1ZBYVN3MD0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJhc24xIjogeworICAgICAgInZlcnNpb24iOiAiMC4y
LjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzbjEv
LS9hc24xLTAuMi4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMnNoNGR4UEpsbWhK
L0lHQWQzNituQjNmTzRZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImFzbjEu
anMiOiB7CiAgICAgICAidmVyc2lvbiI6ICI0LjkuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNuMS5qcy8tL2FzbjEuanMtNC45LjEudGd6IiwKQEAg
LTE2MCw2ICsyMjQsMjQgQEAKICAgICAgICAgInV0aWwiOiAiMC4xMC4zIgogICAgICAgfQogICAg
IH0sCisgICAgImFzc2VydC1wbHVzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fzc2VydC1wbHVzLy0v
YXNzZXJ0LXBsdXMtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04UzRQUEYx
M3NMSE4yUlJwUXVUcGJCNU4xU1U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
YXNzZXJ0aW9uLWVycm9yIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fzc2VydGlvbi1lcnJvci8tL2Fz
c2VydGlvbi1lcnJvci0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXgvaFVP
UDNVWnJ4OG9XcTVESUZSTjVlbDBqcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJhc3QtdHlwZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjkuMTMiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzdC10eXBlcy8tL2FzdC10eXBlcy0w
LjkuMTMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTcydzF2cnNwTGZTUDRodERa
V01nRHlhM2d6N1ZGSW9qaWF4V2RYZkprcFIvS291QnZKWjJ4b0h4Rzc5VndkR3I4WmRHL2I2emd3
cW9JRzI0UXRScUNRPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJhc3luYyI6
IHsKICAgICAgICJ2ZXJzaW9uIjogIjIuNS4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc3luYy8tL2FzeW5jLTIuNS4wLnRneiIsCkBAIC0xNzUsMjkg
KzI1NywxMjAgQEAKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HZE9Hb2RudHh1ZkJ5RjA0aXUy
OHhXMHpZQzA9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAiYXN5bmNraXQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYXN5bmNraXQvLS9hc3luY2tpdC0wLjQuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLXg1N1pmMzgweTQ4cm9ieVhrTHpEWmtkTFMzaz0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAogICAgICJhdXRvcHJlZml4ZXIiOiB7Ci0gICAgICAidmVyc2lv
biI6ICI2LjcuNyIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYXV0b3ByZWZpeGVyLy0vYXV0b3ByZWZpeGVyLTYuNy43LnRneiIsCi0gICAgICAiaW50ZWdy
aXR5IjogInNoYTEtSGIwY2cxWlk0MXpqK1poQW1kc0FXRng0SUJRPSIsCisgICAgICAidmVyc2lv
biI6ICI3LjEuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYXV0b3ByZWZpeGVyLy0vYXV0b3ByZWZpeGVyLTcuMS40LnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTUxMi1NQjFYeWJPSnF1MXVBd3BmU2lsQWExd1NVUk5jNFczMTBDRkt2TWoxZk5h
SkJGeHIxUEdnejcydlphUHI5cnlLR3FzMnZZWjZqRHlKMGFpR0VManNvQT09IiwKICAgICAgICJk
ZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAiYnJvd3NlcnNsaXN0Ijog
IjEuNy43IiwKLSAgICAgICAgImNhbml1c2UtZGIiOiAiMS4wLjMwMDAwNzE1IiwKKyAgICAgICAg
ImJyb3dzZXJzbGlzdCI6ICIyLjQuMCIsCisgICAgICAgICJjYW5pdXNlLWxpdGUiOiAiMS4wLjMw
MDAwNzM1IiwKICAgICAgICAgIm5vcm1hbGl6ZS1yYW5nZSI6ICIwLjEuMiIsCiAgICAgICAgICJu
dW0yZnJhY3Rpb24iOiAiMS4yLjIiLAotICAgICAgICAicG9zdGNzcyI6ICI1LjIuMTciLAorICAg
ICAgICAicG9zdGNzcyI6ICI2LjAuMTEiLAogICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIi
OiAiMy4zLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImJy
b3dzZXJzbGlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMCIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Jyb3dzZXJzbGlzdC8tL2Jy
b3dzZXJzbGlzdC0yLjQuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWFN
Mkd0NHg5YlZsQ1V0ZUFEQlM2SlAwRisydE1XS00xalF6VXVsVlJPdGRGV0ZJY0lWdlk3NkFKYnI3
R0RxeTBlRGhuK1BjbnB6eml2R3hZNHFpYUtRPT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjYW5pdXNlLWxpdGUiOiAiMS4w
LjMwMDAwNzM1IiwKKyAgICAgICAgICAgICJlbGVjdHJvbi10by1jaHJvbWl1bSI6ICIxLjMuMTgi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2FuaXVzZS1saXRlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zMDAwMDczNSIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nhbml1c2UtbGl0ZS8tL2Nhbml1c2UtbGl0ZS0x
LjAuMzAwMDA3MzUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcXJSQUZ1OGtQ
aUZlOUQvUk5ENzlJcE1JUXZnPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLWZsYWcv
LS9oYXMtZmxhZy0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS02Q0I2
OGN4N01OUkd6SEMzTkxYb3ZoajRqVkU9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjAuMTEi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0
Y3NzLy0vcG9zdGNzcy02LjAuMTEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUx
Mi1Ec25JenpuTlJRcHJzR1RBTHBrQzB4akR5Z28rUWNPZCtxVmpQOStSanl6clBpeVlPWEJHT3dv
SjRyQWlpRTRsdTZKZ2dRL2pXNG5pWTI0V0x4dW5jZz09IiwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2hhbGsiOiAiMi4xLjAi
LAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBv
cnRzLWNvbG9yIjogIjQuNC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInNv
dXJjZS1tYXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC41LjciLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zb3VyY2UtbWFwLy0vc291cmNl
LW1hcC0wLjUuNy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pZ09kTFJBaDBp
MGVvVXlBMk9wR2k2THZQOHc9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC40LjAi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBw
b3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTQuNC4wLnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItcktDMytEeVhXZ0swWkxLd21Sc3JreUhWWkFqTmtmemVlaHVGV2RHR2Nx
R0RUWkZINzMrUkg2Uy9SREFBeGw5R3VzU2paU1VXWUxtVDlONXB6WEZPWFE9PSIsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhh
cy1mbGFnIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgfQogICAgIH0s
CisgICAgImF3cy1zaWduMiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNy4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hd3Mtc2lnbjIvLS9hd3Mtc2ln
bjItMC43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10RzZKQ1RTcFdSOHRMMitH
MSthcDhiUCtkcWc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYXdzNCI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9hd3M0Ly0vYXdzNC0xLjYuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWcrOWNxR0N5c3k1S0RlN2U2TWR4dWR0WFJ4ND0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAogICAgICJiYWJlbC1jb2RlLWZyYW1lIjogewogICAgICAgInZlcnNpb24iOiAi
Ni4yNi4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9i
YWJlbC1jb2RlLWZyYW1lLy0vYmFiZWwtY29kZS1mcmFtZS02LjI2LjAudGd6IiwKICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1ZLzFEOTl3ZU83Zk9OWlI5dVA0Mm1qOVl4MHM9IiwKLSAgICAgICJk
ZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAiY2hhbGsiOiAiMS4xLjMi
LAogICAgICAgICAiZXN1dGlscyI6ICIyLjAuMiIsCiAgICAgICAgICJqcy10b2tlbnMiOiAiMy4w
LjIiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFuc2ktc3R5
bGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1zdHlsZXMvLS9hbnNpLXN0eWxl
cy0yLjIuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10RExkTTFpMk5NOTE0
ZVJtUTJna0JUUEIzYjQ9IgorICAgICAgICB9LAorICAgICAgICAiY2hhbGsiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8tL2NoYWxrLTEuMS4zLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLXFCRmNWZVNuQXY1TkZRcTlPSEtDS240Si9KZz0iLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnNpLXN0eWxlcyI6ICIyLjIuMSIsCisgICAg
ICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAorICAgICAgICAgICAgImhh
cy1hbnNpIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAg
ICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtVTEwRVhPYTJOaitrQVJjSVJpbVpYcDN6Sk1jPSIKKyAgICAgICAg
fQogICAgICAgfQogICAgIH0sCiAgICAgImJhYmVsLWNvcmUiOiB7CkBAIC0yMjcsNiArNDAwLDE4
IEBACiAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgogICAgICAgfQogICAgIH0sCisgICAg
ImJhYmVsLWVzbGludCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjcuMi4zIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1lc2xpbnQvLS9iYWJlbC1l
c2xpbnQtNy4yLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zdjR0Z0JKa2NQWEJs
RUxjZFhKVHFKZHhDQ2M9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwt
dHJhdmVyc2UiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIsCisg
ICAgICAgICJiYWJ5bG9uIjogIjYuMTguMCIKKyAgICAgIH0KKyAgICB9LAogICAgICJiYWJlbC1n
ZW5lcmF0b3IiOiB7CiAgICAgICAidmVyc2lvbiI6ICI2LjI2LjAiLAogICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWdlbmVyYXRvci8tL2JhYmVsLWdl
bmVyYXRvci02LjI2LjAudGd6IiwKQEAgLTI2OSw3ICs0NTQsNiBAQAogICAgICAgInZlcnNpb24i
OiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0ZS8tL2JhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRl
LTYuMjQuMS50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLTdPYXF6ZHgyNUJ3MFlmaUwv
RmRiME5xaTM0MD0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAg
ICAgICAgICJiYWJlbC1oZWxwZXItaG9pc3QtdmFyaWFibGVzIjogIjYuMjQuMSIsCiAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCkBAIC0yODEsNyArNDY1LDYgQEAKICAgICAgICJ2
ZXJzaW9uIjogIjYuMjYuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYmFiZWwtaGVscGVyLWRlZmluZS1tYXAvLS9iYWJlbC1oZWxwZXItZGVmaW5lLW1h
cC02LjI2LjAudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1wZlZ0cTBHaVg1ZnN0SmpI
NjZ5cGdaK1Z2bDg9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewog
ICAgICAgICAiYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiAiNi4yNC4xIiwKICAgICAgICAg
ImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKQEAgLTMxNiw3ICs0OTksNiBAQAogICAgICAgInZl
cnNpb24iOiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9iYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZS8tL2JhYmVsLWhlbHBlci1mdW5jdGlv
bi1uYW1lLTYuMjQuMS50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLTAwZGJqQVB0bUNR
cUpiU0RVYXNZT1owMWdLaz0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMi
OiB7CiAgICAgICAgICJiYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5IjogIjYuMjQuMSIs
CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCkBAIC0zMjksNyArNTExLDYgQEAK
ICAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eS8tL2JhYmVs
LWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHktNi4yNC4xLnRneiIsCiAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtajNlQ3FwTkFmRUhUcWxDUWo0bXdNYkcyaFQwPSIsCi0gICAgICAiZGV2IjogdHJ1
ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4w
IiwKICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIKQEAgLTMzOSw3ICs1MjAsNiBAQAog
ICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXItaG9pc3QtdmFyaWFibGVzLy0vYmFiZWwtaGVs
cGVyLWhvaXN0LXZhcmlhYmxlcy02LjI0LjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1Ic3NuYUp5ZEpWRStyYnlaRktjL1ZBaStlblk9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAg
ICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAogICAg
ICAgICAiYmFiZWwtdHlwZXMiOiAiNi4yNi4wIgpAQCAtMzQ5LDcgKzUyOSw2IEBACiAgICAgICAi
dmVyc2lvbiI6ICI2LjI0LjEiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2JhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24vLS9iYWJlbC1o
ZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uLTYuMjQuMS50Z3oiLAogICAgICAgImludGVn
cml0eSI6ICJzaGExLTk2RTBKN3FmYy9qMCtwazhWS2w0Z3RFa1FsYz0iLAotICAgICAgImRldiI6
IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYu
MjYuMCIsCiAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiCkBAIC0zNTksNyArNTM4LDYg
QEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVyLXJlZ2V4Ly0vYmFiZWwtaGVscGVyLXJl
Z2V4LTYuMjYuMC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLU1seForUUw0THlTM1Q2
enUwRFk1VlBaSlhuST0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7
CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCiAgICAgICAgICJiYWJlbC10eXBl
cyI6ICI2LjI2LjAiLApAQCAtMzgzLDcgKzU2MSw2IEBACiAgICAgICAidmVyc2lvbiI6ICI2LjI0
LjEiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVs
LWhlbHBlci1yZXBsYWNlLXN1cGVycy8tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycy02LjI0
LjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS12MjIvNURrNDBYTnBvaFBLaW92M1My
cVFxeG89IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAg
ICAiYmFiZWwtaGVscGVyLW9wdGltaXNlLWNhbGwtZXhwcmVzc2lvbiI6ICI2LjI0LjEiLAogICAg
ICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi4yMy4wIiwKQEAgLTQwNCwyMiArNTgxLDMzIEBACiAg
ICAgICB9CiAgICAgfSwKICAgICAiYmFiZWwtbG9hZGVyIjogewotICAgICAgInZlcnNpb24iOiAi
Ni40LjEiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Jh
YmVsLWxvYWRlci8tL2JhYmVsLWxvYWRlci02LjQuMS50Z3oiLAotICAgICAgImludGVncml0eSI6
ICJzaGExLUN6UVJMVnNIU0tqYzIvVWF6MitiMUMxUXVNbz0iLAorICAgICAgInZlcnNpb24iOiAi
Ny4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Jh
YmVsLWxvYWRlci8tL2JhYmVsLWxvYWRlci03LjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGE1MTItalJ3bEZiSU5BZXlEU3RxSzZEZDVZdVkwazVZdXpRVXZsejJaYW11WHJYbXhhdjNw
TnFlOXZmSjQwMisyRytPbWxKU1h4Q09wQjZVejBJTk03UlFlMkE9PSIsCiAgICAgICAiZGV2Ijog
dHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImZpbmQtY2FjaGUtZGlyIjogIjAu
MS4xIiwKLSAgICAgICAgImxvYWRlci11dGlscyI6ICIwLjIuMTciLAotICAgICAgICAibWtkaXJw
IjogIjAuNS4xIiwKLSAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiCisgICAgICAgICJm
aW5kLWNhY2hlLWRpciI6ICIxLjAuMCIsCisgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMS4xLjAi
LAorICAgICAgICAibWtkaXJwIjogIjAuNS4xIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICJsb2FkZXItdXRpbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9sb2FkZXItdXRpbHMvLS9sb2FkZXItdXRpbHMtMS4xLjAudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEteVlydlNJdk03YUwvdGVMZVpHMXFkVVFwOWMwPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJpZy5q
cyI6ICIzLjEuMyIsCisgICAgICAgICAgICAiZW1vamlzLWxpc3QiOiAiMi4xLjAiLAorICAgICAg
ICAgICAgImpzb241IjogIjAuNS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgfQog
ICAgIH0sCiAgICAgImJhYmVsLW1lc3NhZ2VzIjogewogICAgICAgInZlcnNpb24iOiAiNi4yMy4w
IiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1t
ZXNzYWdlcy8tL2JhYmVsLW1lc3NhZ2VzLTYuMjMuMC50Z3oiLAogICAgICAgImludGVncml0eSI6
ICJzaGExLTg4MzBjRGhZQTFzcUtWSEc3RjdmYkdMeVl3ND0iLAotICAgICAgImRldiI6IHRydWUs
CiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIK
ICAgICAgIH0KQEAgLTQyOCw3ICs2MTYsNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwK
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVn
aW4tY2hlY2stZXMyMDE1LWNvbnN0YW50cy8tL2JhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29u
c3RhbnRzLTYuMjIuMC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLU5SVjdFQlFtL1Mv
OVBhUDNYSDBla1lOYnY0bz0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMi
OiB7CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKICAgICAgIH0KQEAgLTUzMiw3
ICs3MTksNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwKICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1hcnJvdy1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1m
dW5jdGlvbnMtNi4yMi4wLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUlNhU3kzRWRY
M25jZjRYa1FNNUJ1ZkpFMGlFPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJl
cyI6IHsKICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgogICAgICAgfQpAQCAtNTQx
LDcgKzcyNyw2IEBACiAgICAgICAidmVyc2lvbiI6ICI2LjIyLjAiLAogICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1ibG9jay1zY29wZWQtZnVuY3Rpb25zLTYuMjIuMC50Z3oiLAogICAgICAgImludGVncml0eSI6
ICJzaGExLXU4VWJTZmxrMXd5NDJPQzVUb0lDUnM0NllVRT0iLAotICAgICAgImRldiI6IHRydWUs
CiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIK
ICAgICAgIH0KQEAgLTU1MCw3ICs3MzUsNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwK
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5nLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtYmxvY2stc2NvcGluZy02LjI2LjAudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS0xdzlTbWNFd2pRWEJMMFk0RTdDZ25uT3hpVjg9IiwKLSAgICAgICJkZXYiOiB0cnVlLAog
ICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAog
ICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4yNi4wIiwKQEAgLTU2Myw3ICs3NDcsNiBAQAog
ICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2VzLy0v
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nlcy02LjI0LjEudGd6IiwKICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1Xa3hZcFF5Y2xHSGxaTFN5bzcrcnlYb2xoTnM9IiwKLSAgICAg
ICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFiZWwtaGVscGVy
LWRlZmluZS1tYXAiOiAiNi4yNi4wIiwKICAgICAgICAgImJhYmVsLWhlbHBlci1mdW5jdGlvbi1u
YW1lIjogIjYuMjQuMSIsCkBAIC01ODAsNyArNzYzLDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYu
MjQuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcy8tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRpZXMtNi4yNC4xLnRneiIsCiAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtYitLbzBXaVYxV05QVE5tWnR0TklDakNCV2JNPSIsCi0g
ICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4yNi4wIiwKICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIKQEAg
LTU5MCw3ICs3NzIsNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4yMy4wIiwKICAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1kZXN0cnVjdHVyaW5nLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVz
dHJ1Y3R1cmluZy02LjIzLjAudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tWHV4OGF1
V2YyZ3RLd2gyL2pXTllPZGx4VzA9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVp
cmVzIjogewogICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiCiAgICAgICB9CkBAIC01
OTksNyArNzgwLDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCiAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1l
czIwMTUtZHVwbGljYXRlLWtleXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBs
aWNhdGUta2V5cy02LjI0LjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1jK3M5TVF5
cGFlUHZuc2tjVTNRYWJ4VjJRajQ9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVp
cmVzIjogewogICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAogICAgICAgICAiYmFi
ZWwtdHlwZXMiOiAiNi4yNi4wIgpAQCAtNjA5LDcgKzc4OSw2IEBACiAgICAgICAidmVyc2lvbiI6
ICI2LjIzLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZi8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LWZvci1vZi02LjIzLjAudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS05SHlWc3JZVDN4MCt6Qy9iZFhOaVBIVWtocEU9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAg
ICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiCiAgICAg
ICB9CkBAIC02MTgsNyArNzk3LDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCiAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtZnVuY3Rpb24tbmFtZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWZ1bmN0aW9uLW5hbWUtNi4yNC4xLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
ZzB5SmhUdkRheHJ3ODZURjI2cVUvWTZzcW9zPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAg
ICJyZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lIjogIjYu
MjQuMSIsCiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCkBAIC02MjksNyArODA3
LDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjIuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0
ZXJhbHMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFscy02LjIyLjAudGd6
IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1UMVNnTFd6V2JQa1ZLQUFab3gweGtsTjN5aTQ9
IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFi
ZWwtcnVudGltZSI6ICI2LjI2LjAiCiAgICAgICB9CkBAIC02MzgsNyArODE1LDYgQEAKICAgICAg
ICJ2ZXJzaW9uIjogIjYuMjQuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQvLS9i
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWFtZC02LjI0LjEudGd6IiwKICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1PejVVQVhJNWhDMXRHY01CSEV2UzhBb0EwVlE9IiwKLSAg
ICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25qcyI6ICI2LjI2LjAiLAogICAgICAg
ICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLApAQCAtNjQ5LDcgKzgyNSw2IEBACiAgICAgICAi
dmVyc2lvbiI6ICI2LjI2LjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMv
LS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpzLTYuMjYuMC50
Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLURZT1VBcHQ5eHF2aHFYN3hnZUFIV04wdVhZ
bz0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXN0cmljdC1tb2RlIjogIjYuMjQuMSIsCiAgICAgICAgICJi
YWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCkBAIC02NjEsNyArODM2LDYgQEAKICAgICAgICJ2ZXJz
aW9uIjogIjYuMjQuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qcy8tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtc3lzdGVtanMtNi4yNC4xLnRneiIs
CiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtLzRtaFFya1JtcEJobGZYeEJ1enpCZGxBZlNNPSIs
Ci0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVs
LWhlbHBlci1ob2lzdC12YXJpYWJsZXMiOiAiNi4yNC4xIiwKICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4yNi4wIiwKQEAgLTY3Miw3ICs4NDYsNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4y
NC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXVtZC8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LW1vZHVsZXMtdW1kLTYuMjQuMS50Z3oiLAogICAgICAgImludGVncml0eSI6
ICJzaGExLXJKbCtZb1hOR08xaGRxMjJCOVlDTkVyVGhHZz0iLAotICAgICAgImRldiI6IHRydWUs
CiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1tb2R1bGVzLWFtZCI6ICI2LjI0LjEiLAogICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2
LjI2LjAiLApAQCAtNjgzLDcgKzg1Niw2IEBACiAgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAog
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LW9iamVjdC1zdXBlci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LW9iamVjdC1zdXBlci02LjI0LjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1KTTcybXVJY3VEcC9oZ1BhMENIMWN1c25qNDA9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAg
ICAgInJlcXVpcmVzIjogewogICAgICAgICAiYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzIjog
IjYuMjQuMSIsCiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKQEAgLTY5Myw3ICs4
NjUsNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1w
YXJhbWV0ZXJzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFyYW1ldGVycy02LjI0
LjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1WNncxR3JTY3J4U3BmTkU3Q2ZadjN3
cGlYeXM9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAg
ICAiYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGUiOiAiNi4yNC4xIiwKICAgICAgICAgImJhYmVs
LWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkiOiAiNi4yNC4xIiwKQEAgLTcwNyw3ICs4NzgsNiBA
QAogICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zaG9ydGhh
bmQtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNob3J0aGFuZC1w
cm9wZXJ0aWVzLTYuMjQuMS50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLUpQaDExbklj
aDJZYnZabWtZaTVSOFUzamlxQT0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWly
ZXMiOiB7CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCiAgICAgICAgICJiYWJl
bC10eXBlcyI6ICI2LjI2LjAiCkBAIC03MTcsNyArODg3LDYgQEAKICAgICAgICJ2ZXJzaW9uIjog
IjYuMjIuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3ByZWFkLy0vYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtc3ByZWFkLTYuMjIuMC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGEx
LTF0YUttZmlhN2NSVGJJR2xRdWpkbnhkRytORT0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAg
ICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKICAgICAg
IH0KQEAgLTcyNiw3ICs4OTUsNiBAQAogICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKICAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1zdGlja3ktcmVnZXgvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1zdGlja3ktcmVnZXgtNi4yNC4xLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQU1I
TnNheW5FUkxOOE05aEpzTHRhMFY4emJ3PSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJy
ZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLWhlbHBlci1yZWdleCI6ICI2LjI2LjAiLAogICAg
ICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLApAQCAtNzM3LDcgKzkwNSw2IEBACiAgICAg
ICAidmVyc2lvbiI6ICI2LjIyLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVy
YWxzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHMtNi4y
Mi4wLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUVzMFVQZnArUEgyZzUxdGFIMm9T
N0VqYlkwPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAg
ICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgogICAgICAgfQpAQCAtNzQ2LDcgKzkxMyw2IEBA
CiAgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVvZi1z
eW1ib2wvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sLTYuMjMu
MC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLTNzQ2ZITjMvbExVcXh6MVFYSVRmV2R6
T3MzST0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKICAgICAgIH0KQEAgLTc1NSw3ICs5MjEsNiBAQAog
ICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS11bmljb2RlLXJl
Z2V4Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleC02LjI0LjEu
dGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wNHNTOUM2bk1qOXlrNGZ4aW54YTRmcnJO
ZWs9IiwKLSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAi
YmFiZWwtaGVscGVyLXJlZ2V4IjogIjYuMjYuMCIsCiAgICAgICAgICJiYWJlbC1ydW50aW1lIjog
IjYuMjYuMCIsCkBAIC03ODcsNyArOTUyLDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIs
CiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5l
cmF0b3ItNi4yNi4wLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNEhBMmx2dmVKL0Nq
NzhyUGkwM0tMM3M2ank4PSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6
IHsKICAgICAgICAgInJlZ2VuZXJhdG9yLXRyYW5zZm9ybSI6ICIwLjEwLjAiCiAgICAgICB9CkBA
IC04MDUsNyArOTY5LDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCiAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1zdHJpY3QtbW9kZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3RyaWN0LW1vZGUtNi4yNC4x
LnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMWZyM3FsZUtaYnZsa2M5ZTJ1QktER2ND
QjFnPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAg
ImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYu
MCIKQEAgLTg2NSw3ICsxMDI4LDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCiAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcHJlc2V0LWVz
MjAxNS8tL2JhYmVsLXByZXNldC1lczIwMTUtNi4yNC4xLnRneiIsCiAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtMUVCUTFyd3NuKzZuQXFyempYSjZBaEJUaVRrPSIsCi0gICAgICAiZGV2IjogdHJ1
ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLXBsdWdpbi1jaGVjay1lczIw
MTUtY29uc3RhbnRzIjogIjYuMjIuMCIsCiAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1hcnJvdy1mdW5jdGlvbnMiOiAiNi4yMi4wIiwKQEAgLTkzNyw3ICsxMDk5LDYgQEAK
ICAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcnVudGltZS8tL2JhYmVsLXJ1bnRpbWUtNi4yNi4wLnRn
eiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbGx4d1dHYU9nclZkZS80RS95TTN2SXRXUi80
PSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImNv
cmUtanMiOiAiMi41LjAiLAogICAgICAgICAicmVnZW5lcmF0b3ItcnVudGltZSI6ICIwLjExLjAi
CkBAIC05NDcsNyArMTEwOCw2IEBACiAgICAgICAidmVyc2lvbiI6ICI2LjI2LjAiLAogICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXRlbXBsYXRlLy0v
YmFiZWwtdGVtcGxhdGUtNi4yNi4wLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM2dQ
aTBXT1dzR24wYmRuLytGSWZzYURqWGdJPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJy
ZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKICAgICAgICAg
ImJhYmVsLXRyYXZlcnNlIjogIjYuMjYuMCIsCkBAIC05NjAsNyArMTEyMCw2IEBACiAgICAgICAi
dmVyc2lvbiI6ICI2LjI2LjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2JhYmVsLXRyYXZlcnNlLy0vYmFiZWwtdHJhdmVyc2UtNi4yNi4wLnRneiIsCiAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtUnFuTDErM01Zc2psd0dUaTB0alE5QU5YWnU0PSIsCi0g
ICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImJhYmVsLWNv
ZGUtZnJhbWUiOiAiNi4yNi4wIiwKICAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuMjMuMCIs
CkBAIC05NzcsNyArMTEzNiw2IEBACiAgICAgICAidmVyc2lvbiI6ICI2LjI2LjAiLAogICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXR5cGVzLy0vYmFi
ZWwtdHlwZXMtNi4yNi4wLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbzdCeitVcTBu
cmI2VmMxbElub3pRNEJqSkpjPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJl
cyI6IHsKICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKICAgICAgICAgImVzdXRp
bHMiOiAiMi4wLjIiLApAQCAtOTg4LDggKzExNDYsNyBAQAogICAgICJiYWJ5bG9uIjogewogICAg
ICAgInZlcnNpb24iOiAiNi4xOC4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9iYWJ5bG9uLy0vYmFieWxvbi02LjE4LjAudGd6IiwKLSAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLXEvVUVqZkdKMkNtM29LVjcxREp6OWQyNVRQbnE1cmhCVkwyUTRmQTV3
Y0MzamNyZG43K1Nzc0V5YkZJeHdBdnZQK1lDc0NZTkt1Z2hvRjMzR3hneWNRPT0iLAotICAgICAg
ImRldiI6IHRydWUKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXEvVUVqZkdKMkNtM29LVjcx
REp6OWQyNVRQbnE1cmhCVkwyUTRmQTV3Y0MzamNyZG43K1Nzc0V5YkZJeHdBdnZQK1lDc0NZTkt1
Z2hvRjMzR3hneWNRPT0iCiAgICAgfSwKICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7CiAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCkBAIC0xMDAzLDYgKzExNjAsMTYgQEAKICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhNTEyLWR3VlVWSVhzQlpYd1R1d25YSTlSSzhzQm1ncTA5TkRIenlSOVNBcGg5ZXFr
NzZnS0sySlNRbVpBUkMyelJDODFKQzJRVHR4RDBBUlU1cVRTMjVnSUd3PT0iLAogICAgICAgImRl
diI6IHRydWUKICAgICB9LAorICAgICJiY3J5cHQtcGJrZGYiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YmNyeXB0LXBia2RmLy0vYmNyeXB0LXBia2RmLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtWTd4ZHkyRXpHNUs4QmYxU2lWUEROR0tnYjQwPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJ0d2VldG5hY2wiOiAiMC4xNC41IgorICAgICAgfQorICAgIH0sCiAgICAgImJpZy5qcyI6IHsK
ICAgICAgICJ2ZXJzaW9uIjogIjMuMS4zIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iaWcuanMvLS9iaWcuanMtMy4xLjMudGd6IiwKQEAgLTEwMzMsNiAr
MTIwMCwxNSBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLWFOLzErK1lNVWVzM2NsNnA0KzB4
RGN3ZWQyND0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJib29tIjogeworICAg
ICAgInZlcnNpb24iOiAiNC4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Jvb20vLS9ib29tLTQuMy4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtVDRvd0JjdEtmamlKOTBrREQ5SmJsdUFkTGpFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImhvZWsiOiAiNC4yLjAiCisgICAgICB9Cisg
ICAgfSwKICAgICAiYnJhY2UtZXhwYW5zaW9uIjogewogICAgICAgInZlcnNpb24iOiAiMS4xLjgi
LAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JyYWNlLWV4
cGFuc2lvbi8tL2JyYWNlLWV4cGFuc2lvbi0xLjEuOC50Z3oiLApAQCAtMTA2MCw2ICsxMjM2LDEy
IEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRXNKZS9rQ2tYand5UHJobldnb001WHNpTng4
PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgImJyb3dzZXItc3Rkb3V0Ijogewor
ICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2Jyb3dzZXItc3Rkb3V0Ly0vYnJvd3Nlci1zdGRvdXQtMS4zLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04MUhUS1duVEw2WFhwVlp4VkNZOWtvcmp2Ujg9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiYnJvd3NlcmlmeS1hZXMiOiB7CiAg
ICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYnJvd3NlcmlmeS1hZXMvLS9icm93c2VyaWZ5LWFlcy0xLjAuNi50Z3oi
LApAQCAtMTE3Niw2ICsxMzU4LDI3IEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaFpnb2VP
SWJtT0hHWkNYZ1BRRjBlSTlXbnVnPSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAg
ImJ5dGVzIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2J5dGVzLy0vYnl0ZXMtMy4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0weWdWUUUxb2xwbjRXazZrK29kVjNST3BZRWc9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2FsbGVyLXBhdGgiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvY2FsbGVyLXBhdGgvLS9jYWxsZXItcGF0aC0wLjEuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLWxBaGU5aldCN05QYXFTUkVxUDZVNkNWM2RSOD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjYWxsc2l0ZXMiOiAiMC4yLjAi
CisgICAgICB9CisgICAgfSwKKyAgICAiY2FsbHNpdGVzIjogeworICAgICAgInZlcnNpb24iOiAi
MC4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nh
bGxzaXRlcy8tL2NhbGxzaXRlcy0wLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LXI2dVdKaWtRcC9NOEdhVjNXQ1hHbnpUalVNbz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAogICAgICJjYW1lbC1jYXNlIjogewogICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAogICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NhbWVsLWNhc2UvLS9jYW1l
bC1jYXNlLTMuMC4wLnRneiIsCkBAIC0xMjE2LDYgKzE0MTksMTIgQEAKICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS13eWYxNXRrSDY4N0dMTjVaakR2dzNYay91YUE9IiwKICAgICAgICJkZXYiOiB0
cnVlCiAgICAgfSwKKyAgICAiY2FzZWxlc3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEyLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nhc2VsZXNz
Ly0vY2FzZWxlc3MtMC4xMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRzJnY0lm
K0VBenlDWlVNSkJvbENEUmh4VWR3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAg
ImNlbnRlci1hbGlnbiI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjAuMS4zIiwKICAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jZW50ZXItYWxpZ24vLS9jZW50ZXIt
YWxpZ24tMC4xLjMudGd6IiwKQEAgLTEyMjYsMjQgKzE0MzUsNDEgQEAKICAgICAgICAgImxhenkt
Y2FjaGUiOiAiMS4wLjQiCiAgICAgICB9CiAgICAgfSwKKyAgICAiY2hhaS1uaWdodHdhdGNoIjog
eworICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2NoYWktbmlnaHR3YXRjaC8tL2NoYWktbmlnaHR3YXRjaC0wLjEu
MS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUhLVnQ1MmpUd0lhUDUvd3ZUVExDL29s
T2Eraz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJhc3NlcnRpb24tZXJyb3IiOiAiMS4wLjAiLAorICAgICAgICAiZGVlcC1lcWwiOiAiMC4xLjMi
CisgICAgICB9CisgICAgfSwKICAgICAiY2hhbGsiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjEu
MyIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2hhbGsv
LS9jaGFsay0xLjEuMy50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLXFCRmNWZVNuQXY1
TkZRcTlPSEtDS240Si9KZz0iLAorICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMi4xLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUxVSEdTL2RnZTR1amJYTUpybmloWU1j
TDRBb093ZUdudzlUcDNrUXVxeTFLeDVjMXFLanF2TUpaNm5WSlBNV0p0S0NUTjcyWm9nSDNvZVNP
OWc5clhRPT0iLAogICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICJhbnNpLXN0eWxlcyI6ICIyLjIuMSIsCisgICAgICAgICJhbnNpLXN0eWxlcyI6ICIzLjIu
MCIsCiAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCi0gICAgICAgICJo
YXMtYW5zaSI6ICIyLjAuMCIsCi0gICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKLSAgICAg
ICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAi
NC40LjAiCiAgICAgICB9LAogICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgInN1cHBv
cnRzLWNvbG9yIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CiAgICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjAiLAotICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTIuMC4wLnRneiIsCi0gICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLVUxMEVYT2EyTmora0FSY0lSaW1aWHAzekpNYz0iLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8t
L2hhcy1mbGFnLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTZDQjY4
Y3g3TU5SR3pIQzNOTFhvdmhqNGpWRT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0
LjQuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItNC40LjAudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi1yS0MzK0R5WFdnSzBaTEt3bVJzcmt5SFZaQWpOa2Z6ZWVodUZX
ZEdHY3FHRFRaRkg3MytSSDZTL1JEQUF4bDlHdXNTalpTVVdZTG1UOU41cHpYRk9YUT09IiwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiaGFzLWZsYWciOiAiMi4wLjAiCisgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CiAg
ICAgfSwKQEAgLTEyODEsNiArMTUwNywxOSBAQAogICAgICAgICB9CiAgICAgICB9CiAgICAgfSwK
KyAgICAiY2hyb21lZHJpdmVyIjogeworICAgICAgInZlcnNpb24iOiAiMi4zMi4zIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaHJvbWVkcml2ZXIvLS9j
aHJvbWVkcml2ZXItMi4zMi4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtem9Ud1Zi
N255LzVXOHhHQ3NuYnpNbGF4Sy9FPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImV4dHJhY3QtemlwIjogIjEuNi41IiwKKyAgICAgICAgImtldyI6
ICIwLjcuMCIsCisgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAicmVxdWVzdCI6
ICIyLjgyLjAiLAorICAgICAgICAicmltcmFmIjogIjIuNi4xIgorICAgICAgfQorICAgIH0sCiAg
ICAgImNpcGhlci1iYXNlIjogewogICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAogICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NpcGhlci1iYXNlLy0vY2lwaGVy
LWJhc2UtMS4wLjQudGd6IiwKQEAgLTEyOTEsNiArMTUzMCwxMiBAQAogICAgICAgICAic2FmZS1i
dWZmZXIiOiAiNS4xLjEiCiAgICAgICB9CiAgICAgfSwKKyAgICAiY2lyY3VsYXItanNvbiI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjAuMy4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9jaXJjdWxhci1qc29uLy0vY2lyY3VsYXItanNvbi0wLjMuMy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItVVpLM05CeDJNY2ErYjVMc0c3YlkxODNwSFd0
NVkxeHRzNFAzUHo3RU5Ud0dWbkpPVVdiUmIzb2Nqdlg3aHg5dHEveVRBZGNsWG05c1ozOGdOdWVt
NEE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImNsYXAiOiB7CiAgICAgICAi
dmVyc2lvbiI6ICIxLjIuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvY2xhcC8tL2NsYXAtMS4yLjAudGd6IiwKQEAgLTEyOTgsNiArMTU0MywzMyBAQAog
ICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJjaGFsayI6
ICIxLjEuMyIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYW5z
aS1zdHlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2kt
c3R5bGVzLTIuMi4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXRETGRNMWky
Tk05MTRlUm1RMmdrQlRQQjNiND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJjaGFsayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hh
bGstMS4xLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUJGY1ZlU25BdjVO
RlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAg
ICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAiaGFzLWFu
c2kiOiAiMi4wLjAiLAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAg
ICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3Vw
cG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1VMTBFWE9hMk5qK2tBUmNJUmltWlhwM3pKTWM9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKICAgICAiY2xlYW4tY3NzIjog
ewpAQCAtMTMyNCw2ICsxNTk2LDEyIEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNzVoKzA5
U0RrYXc5cTVHQXRBYW5RaGdOYm1vPSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAg
ImNsaS13aWR0aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMi4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGktd2lkdGgvLS9jbGktd2lkdGgtMi4y
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0veG50NkttbDVYa3lRVWV3d1I4UHZM
cSsxams9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiY2xpdWkiOiB7CiAgICAg
ICAidmVyc2lvbiI6ICIyLjEuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvY2xpdWkvLS9jbGl1aS0yLjEuMC50Z3oiLApAQCAtMTM1Niw2ICsxNjM0LDEy
IEBACiAgICAgICAgICJxIjogIjEuNS4wIgogICAgICAgfQogICAgIH0sCisgICAgImNvYWxlc2N5
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2NvYWxlc2N5Ly0vY29hbGVzY3ktMS4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Td1pZUnJnMk5ocmFiRXRLU3I5THdjckRHL0U9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiY29kZS1wb2ludC1hdCI6IHsKICAgICAgICJ2
ZXJzaW9uIjogIjEuMS4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9jb2RlLXBvaW50LWF0Ly0vY29kZS1wb2ludC1hdC0xLjEuMC50Z3oiLApAQCAtMTQx
NCw2ICsxNjk4LDE1IEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRm9wSEFYVnJhbjlSb1N6
Z3lYdjZLTUNFN1dNPSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgImNvbWJpbmVk
LXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb21iaW5lZC1zdHJlYW0vLS9jb21iaW5lZC1z
dHJlYW0tMS4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1rNE53cFh0S1VkNml4
M3dWMWNYOStKVVdRQWs9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiZGVsYXllZC1zdHJlYW0iOiAiMS4wLjAiCisgICAgICB9CisgICAgfSwKICAg
ICAiY29tbWFuZGVyIjogewogICAgICAgInZlcnNpb24iOiAiMi4xMS4wIiwKICAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb21tYW5kZXIvLS9jb21tYW5kZXIt
Mi4xMS4wLnRneiIsCkBAIC0xNDMyLDE0ICsxNzI1LDQ3IEBACiAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtMktscjEzL1dqZmQ1T25NRGFqdWcxVUJkUjNzPSIsCiAgICAgICAiZGV2IjogdHJ1ZQog
ICAgIH0sCi0gICAgImNvbmZpZy1jaGFpbiI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMS4xMSIs
Ci0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29uZmlnLWNo
YWluLy0vY29uZmlnLWNoYWluLTEuMS4xMS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGEx
LXE2Q1hSOSsrVEQ1dzUyYW01QldHNFlXZnh2ST0iLAorICAgICJjb25jYXQtc3RyZWFtIjogewor
ICAgICAgInZlcnNpb24iOiAiMS42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2NvbmNhdC1zdHJlYW0vLS9jb25jYXQtc3RyZWFtLTEuNi4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQ3F4bUw5VXI1NGxrMVZNdmFVZUU1d0VRclBjPSIs
CiAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImluaSI6
ICIxLjMuNCIsCi0gICAgICAgICJwcm90by1saXN0IjogIjEuMi40IgorICAgICAgICAiaW5oZXJp
dHMiOiAiMi4wLjMiLAorICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMy4zIiwKKyAgICAg
ICAgInR5cGVkYXJyYXkiOiAiMC4wLjYiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgImlzYXJyYXkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pc2FycmF5
Ly0vaXNhcnJheS0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11NU5k
U0Znc3VoYU1Cb05KVjZWS1BnY1NUeEU9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMy4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTIuMy4zLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItbStxenpjbjdLVXhFbWQxZ01iY2hGK1kyZUlVYmllVWF4
a1d0cHR5SHl3clgwckU4UUVZcVBDMDdWdXk0V20zMi94RTE2TmNkQmN0YjhTMFhlLzVJZVE9PSIs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCisgICAgICAgICAgICAiaW5oZXJpdHMiOiAi
Mi4wLjMiLAorICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAorICAgICAgICAgICAgInBy
b2Nlc3MtbmV4dGljay1hcmdzIjogIjEuMC43IiwKKyAgICAgICAgICAgICJzYWZlLWJ1ZmZlciI6
ICI1LjEuMSIsCisgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMS4wLjMiLAorICAgICAg
ICAgICAgInV0aWwtZGVwcmVjYXRlIjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInN0cmluZ19kZWNvZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4z
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3Ry
aW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rlci0xLjAuMy50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLTRBSDZaNWZ6Tk5CY0grNlhETWZBL0JUdDg3c2t4cUpsTzBsQWgzRGtl
cjV6VGhjQXhHNm1LeitpR3UzMDhVS29QUFE4RGNxeC80Smh1anpsdFJhK2hRPT0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJz
YWZlLWJ1ZmZlciI6ICI1LjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgIH0KICAg
ICB9LAogICAgICJjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogewpAQCAtMTUyOSw4ICsx
ODU1LDcgQEAKICAgICAiY29yZS1qcyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjIuNS4wIiwKICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLWpzLy0vY29y
ZS1qcy0yLjUuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLVZwd0ZDUmkrWklhemcz
VlNBb3JnUm10eGNJWT0iLAotICAgICAgImRldiI6IHRydWUKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1WcHdGQ1JpK1pJYXpnM1ZTQW9yZ1JtdHhjSVk9IgogICAgIH0sCiAgICAgImNvcmUtdXRp
bC1pcyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKQEAgLTE1OTcsNiArMTkyMiw0NyBA
QAogICAgICAgICAic2hhLmpzIjogIjIuNC44IgogICAgICAgfQogICAgIH0sCisgICAgImNyb3Nz
LWVudiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jcm9zcy1lbnYvLS9jcm9zcy1lbnYtNS4wLjUudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1RNFBUWk5sbUNIUGRHRnM1aXZPLzcxNy8vdk09
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY3Jv
c3Mtc3Bhd24iOiAiNS4xLjAiLAorICAgICAgICAiaXMtd2luZG93cyI6ICIxLjAuMSIKKyAgICAg
IH0KKyAgICB9LAorICAgICJjcm9zcy1zcGF3biI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUuMS4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jcm9zcy1z
cGF3bi8tL2Nyb3NzLXNwYXduLTUuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
NkwwTy91V1B6L2I0K1VVUW9LVlV1L29qVkVrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImxydS1jYWNoZSI6ICI0LjEuMSIsCisgICAgICAgICJz
aGViYW5nLWNvbW1hbmQiOiAiMS4yLjAiLAorICAgICAgICAid2hpY2giOiAiMS4zLjAiCisgICAg
ICB9CisgICAgfSwKKyAgICAiY3J5cHRpbGVzIjogeworICAgICAgInZlcnNpb24iOiAiMy4xLjIi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NyeXB0aWxl
cy8tL2NyeXB0aWxlcy0zLjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXFKKzdJ
ZzljNGw3RmJveEtxS1Q5ZTFzTktmND0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJib29tIjogIjUuMi4wIgorICAgICAgfSwKKyAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICJib29tIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUu
Mi4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
Ym9vbS8tL2Jvb20tNS4yLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1a
NUJUazZaUmU0dFhYUWxrcWZ0bXNBVUFOcFhtdXdsc0Y1T292OFRob01iUVJ6ZEdUQTFuZ1lSVzE2
MEdleGdPZ2pzRk9LSnowTFlob05pKzJBTUJVdz09IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaG9layI6ICI0LjIuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAogICAgICJjcnlwdG8tYnJvd3Nl
cmlmeSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjMuMTEuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3J5cHRvLWJyb3dzZXJpZnkvLS9jcnlwdG8tYnJv
d3NlcmlmeS0zLjExLjEudGd6IiwKQEAgLTE3NDIsNiArMjEwOCwyMiBAQAogICAgICAgICAicG9z
dGNzcy11bmlxdWUtc2VsZWN0b3JzIjogIjIuMC4yIiwKICAgICAgICAgInBvc3Rjc3MtdmFsdWUt
cGFyc2VyIjogIjMuMy4wIiwKICAgICAgICAgInBvc3Rjc3MtemluZGV4IjogIjIuMi4wIgorICAg
ICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhdXRvcHJlZml4ZXIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiNi43LjciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItNi43
LjcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSGIwY2cxWlk0MXpqK1poQW1k
c0FXRng0SUJRPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImJyb3dzZXJzbGlzdCI6ICIxLjcuNyIsCisgICAgICAgICAgICAi
Y2FuaXVzZS1kYiI6ICIxLjAuMzAwMDA3MTUiLAorICAgICAgICAgICAgIm5vcm1hbGl6ZS1yYW5n
ZSI6ICIwLjEuMiIsCisgICAgICAgICAgICAibnVtMmZyYWN0aW9uIjogIjEuMi4yIiwKKyAgICAg
ICAgICAgICJwb3N0Y3NzIjogIjUuMi4xNyIsCisgICAgICAgICAgICAicG9zdGNzcy12YWx1ZS1w
YXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICB9CiAgICAgfSwK
ICAgICAiY3NzbyI6IHsKQEAgLTE3NTQsNiArMjEzNiwzMCBAQAogICAgICAgICAic291cmNlLW1h
cCI6ICIwLjUuNiIKICAgICAgIH0KICAgICB9LAorICAgICJkIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2QvLS9kLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZFV1MXYrVlVVZHBw
cFl1VTFGOU1Xd1JpMVk4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImVzNS1leHQiOiAiMC4xMC4zMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJk
YXNoZGFzaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMTQuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGFzaGRhc2gvLS9kYXNoZGFzaC0xLjE0LjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oVHo2RDN5K0wrMWQ0Z01tdU4xWUVEWDI0
dkE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
YXNzZXJ0LXBsdXMiOiAiMS4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZGF0YS11cmktdG8t
YnVmZmVyIjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RhdGEtdXJpLXRvLWJ1ZmZlci8tL2RhdGEtdXJp
LXRvLWJ1ZmZlci0xLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItdktROURU
UVBOMUZMWWlpRUVPUTZJQkdGcXZqQ2E1clNLM2NXTXkvTmVzcG01ZC94M2RHRlQ5VUJabmtMeEN3
dWEvSVhCaTJUWW53VEVwc092aEM0VVE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAg
ICAgImRhdGUtbm93IjogewogICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAogICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RhdGUtbm93Ly0vZGF0ZS1ub3ctMC4x
LjQudGd6IiwKQEAgLTE3NzAsNyArMjE3Niw2IEBACiAgICAgICAidmVyc2lvbiI6ICIyLjYuOCIs
CiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVidWcvLS9k
ZWJ1Zy0yLjYuOC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLTV6RlRIS0x0NG4wWWdp
SkNmYUY0SWRhUDlQdz0iLAotICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7
CiAgICAgICAgICJtcyI6ICIyLjAuMCIKICAgICAgIH0KQEAgLTE3ODEsMTIgKzIxODYsNjcgQEAK
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05bE5ORlJTQ2FiSURVdWUrNG05UUg1b1pFcEE9IiwK
ICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAiZGVlcC1lcWwiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZGVlcC1lcWwvLS9kZWVwLWVxbC0wLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLTcxV0t5cmplSlNCczF4T1FiWFRsYVREcmFmST0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJ0eXBlLWRldGVjdCI6ICIwLjEuMSIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJkZWVwLWlzIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjMi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlZXAtaXMv
LS9kZWVwLWlzLTAuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtczJuVysxMjhF
KzdQVWsrUnNIRCs3Y05YenpRPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImRl
ZmluZWQiOiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVmaW5lZC8tL2RlZmluZWQtMS4wLjAudGd6IiwK
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15WTJienZkV2RCaU9FUWxwRlJHWjQ1c2ZwcE09IiwK
ICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAiZGVnZW5lcmF0b3IiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvZGVnZW5lcmF0b3IvLS9kZWdlbmVyYXRvci0xLjAuNC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLS9QU1FvMzdPSm1SazJjeERHcm1NV0JuTzBKVT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhc3QtdHlwZXMiOiAiMC45
LjEzIiwKKyAgICAgICAgImVzY29kZWdlbiI6ICIxLjkuMCIsCisgICAgICAgICJlc3ByaW1hIjog
IjMuMS4zIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJlc3By
aW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4zIiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNwcmltYS8tL2VzcHJpbWEtMy4xLjMu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtL2NwUnp1WVRPSlhqeUkxVFhPU2R2
L1lxUmpNPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAg
IH0sCisgICAgImRlbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWwvLS9kZWwtMi4yLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13U3lZSFFaNFJzaEx5dmhpei9rdzJRZi8wYWc9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZ2xvYmJ5
IjogIjUuMC4wIiwKKyAgICAgICAgImlzLXBhdGgtY3dkIjogIjEuMC4wIiwKKyAgICAgICAgImlz
LXBhdGgtaW4tY3dkIjogIjEuMC4wIiwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEi
LAorICAgICAgICAicGlmeSI6ICIyLjMuMCIsCisgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIy
LjAuMSIsCisgICAgICAgICJyaW1yYWYiOiAiMi42LjEiCisgICAgICB9CisgICAgfSwKKyAgICAi
ZGVsYXllZC1zdHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVsYXllZC1zdHJlYW0vLS9kZWxh
eWVkLXN0cmVhbS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTN6cmhtYXl0
KzMxRUNxcmdzcDRpY3JKT3hoaz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJk
ZXBkIjogewogICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAogICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlcGQvLS9kZXBkLTEuMS4xLnRneiIsCkBAIC0xODE4
LDYgKzIyNzgsMTIgQEAKICAgICAgICAgInJlcGVhdGluZyI6ICIyLjAuMSIKICAgICAgIH0KICAg
ICB9LAorICAgICJkaWZmIjogeworICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RpZmYvLS9kaWZmLTEuNC4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZnlqUzY1N25zVnFYNzlpYzVqM1AycVBNdXI4
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImRpZmZpZS1oZWxsbWFuIjogewog
ICAgICAgInZlcnNpb24iOiAiNS4wLjIiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2RpZmZpZS1oZWxsbWFuLy0vZGlmZmllLWhlbGxtYW4tNS4wLjIudGd6
IiwKQEAgLTE4MzQsNiArMjMwMCwyNCBAQAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2RpcmVjdG9yLy0vZGlyZWN0b3ItMS4yLjgudGd6IiwKICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS14dG0wM1lrT212OVRaUmcvNmN5T2M1bE04dFU9IgogICAgIH0sCisg
ICAgImRvY3RyaW5lIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvY3RyaW5lLy0vZG9jdHJpbmUtMi4w
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14ejJOS1FuU0lwSGhvQWVqbFlCTnFM
WmwvbU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiZXN1dGlscyI6ICIyLjAuMiIsCisgICAgICAgICJpc2FycmF5IjogIjEuMC4wIgorICAgICAg
fSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJpc2FycmF5IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvaXNhcnJheS8tL2lzYXJyYXktMS4wLjAudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtdTVOZFNGZ3N1aGFNQm9OSlY2VktQZ2NTVHhFPSIsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCiAgICAgImRvbS1j
b252ZXJ0ZXIiOiB7CiAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCiAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9tLWNvbnZlcnRlci8tL2RvbS1jb252ZXJ0
ZXItMC4xLjQudGd6IiwKQEAgLTE5MDYsMzQgKzIzOTAsMTQgQEAKICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1yT2IvZ0l3YzVtdFgwZXY1ZVhlc3NDTTB6OEU9IiwKICAgICAgICJkZXYiOiB0cnVl
CiAgICAgfSwKLSAgICAiZWRpdG9yY29uZmlnIjogewotICAgICAgInZlcnNpb24iOiAiMC4xMy4z
IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lZGl0b3Jj
b25maWcvLS9lZGl0b3Jjb25maWctMC4xMy4zLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNo
YTUxMi1Xa2pzVU5WQ3UrSVRLRGo3M1FEdmkwdHJ2cGREV2RrRHlIeWJER1NYUGZla0xDcXdtcEQ3
Q1A3aVBidkJnb3NOdUxjSTk2WFREd05hNzVKeUZsN3RFUT09IiwKKyAgICAiZWNjLWpzYm4iOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZWNjLWpzYm4vLS9lY2MtanNibi0wLjEuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUQ4YzZudFh3MVR3NEdUT1lVajczNVVOM2RRVT0iLAogICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAiYmx1ZWJpcmQiOiAiMy41LjAiLAotICAgICAgICAiY29tbWFuZGVyIjogIjIu
MTEuMCIsCi0gICAgICAgICJscnUtY2FjaGUiOiAiMy4yLjAiLAotICAgICAgICAic2VtdmVyIjog
IjUuNC4xIiwKLSAgICAgICAgInNpZ211bmQiOiAiMS4wLjEiCi0gICAgICB9LAotICAgICAgImRl
cGVuZGVuY2llcyI6IHsKLSAgICAgICAgImJsdWViaXJkIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuNS4wIiwKLSAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvYmx1ZWJpcmQvLS9ibHVlYmlyZC0zLjUuMC50Z3oiLAotICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1lUlFnMS9WUjdxS0pkRk9vcDNaVCtXWUcxbnc9IiwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAibHJ1LWNhY2hlIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMi4wIiwKLSAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvbHJ1LWNhY2hlLy0vbHJ1LWNhY2hlLTMuMi4wLnRneiIsCi0gICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLWNYaWJPMzlUbWI3SVZsM2FPS293MHFDWDcrND0iLAotICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJw
c2V1ZG9tYXAiOiAiMS4wLjIiCi0gICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgICJqc2Ju
IjogIjAuMS4xIgogICAgICAgfQogICAgIH0sCiAgICAgImVlLWZpcnN0IjogewpAQCAtMjAyNiw2
ICsyNDkwLDgyIEBACiAgICAgICAgICJzdGFja2ZyYW1lIjogIjEuMC40IgogICAgICAgfQogICAg
IH0sCisgICAgImVzNS1leHQiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEwLjMwIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lczUtZXh0Ly0vZXM1LWV4
dC0wLjEwLjMwLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtY1VHaGFEWnBmYnEvcXE3
dVFVbGM0cDlTeVRrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImVzNi1pdGVyYXRvciI6ICIyLjAuMSIsCisgICAgICAgICJlczYtc3ltYm9sIjog
IjMuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImVzNi1pdGVyYXRvciI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9lczYtaXRlcmF0b3IvLS9lczYtaXRlcmF0b3ItMi4wLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1qakdjbndSVHYxZGROMGxBcGxXU0RsbktWUkk9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6ICIxLjAuMCIsCisg
ICAgICAgICJlczUtZXh0IjogIjAuMTAuMzAiLAorICAgICAgICAiZXM2LXN5bWJvbCI6ICIzLjEu
MSIKKyAgICAgIH0KKyAgICB9LAorICAgICJlczYtbWFwIjogeworICAgICAgInZlcnNpb24iOiAi
MC4xLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Vz
Ni1tYXAvLS9lczYtbWFwLTAuMS41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEta1Ri
Z1VEM01CcU1CYVE4THNVLzA0MlRwU2ZBPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImQiOiAiMS4wLjAiLAorICAgICAgICAiZXM1LWV4dCI6ICIw
LjEwLjMwIiwKKyAgICAgICAgImVzNi1pdGVyYXRvciI6ICIyLjAuMSIsCisgICAgICAgICJlczYt
c2V0IjogIjAuMS41IiwKKyAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjEiLAorICAgICAgICAi
ZXZlbnQtZW1pdHRlciI6ICIwLjMuNSIKKyAgICAgIH0KKyAgICB9LAorICAgICJlczYtcHJvbWlz
ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lczYtcHJvbWlzZS8tL2VzNi1wcm9taXNlLTQuMC41LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZUlMekN0M2xza0RNK245OWVNVklNd2xScmtJ
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImVzNi1zZXQiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvZXM2LXNldC8tL2VzNi1zZXQtMC4xLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS0wclBzWFUyQURPMkJqYlU0MG9sMDJ3cHp6TEU9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6ICIxLjAuMCIsCisgICAgICAgICJl
czUtZXh0IjogIjAuMTAuMzAiLAorICAgICAgICAiZXM2LWl0ZXJhdG9yIjogIjIuMC4xIiwKKyAg
ICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjEiLAorICAgICAgICAiZXZlbnQtZW1pdHRlciI6ICIw
LjMuNSIKKyAgICAgIH0KKyAgICB9LAorICAgICJlczYtc3ltYm9sIjogeworICAgICAgInZlcnNp
b24iOiAiMy4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2VzNi1zeW1ib2wvLS9lczYtc3ltYm9sLTMuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtdndEdlQ5cTJ1aHRHN0xlMktiVEg3VmNWekhjPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImQiOiAiMS4wLjAiLAorICAgICAgICAi
ZXM1LWV4dCI6ICIwLjEwLjMwIgorICAgICAgfQorICAgIH0sCisgICAgImVzNi13ZWFrLW1hcCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lczYtd2Vhay1tYXAvLS9lczYtd2Vhay1tYXAtMi4wLjIudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1YanF6SWxILzBWT0tINDVmK2hOWGR5K1MyVzg9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6
ICIxLjAuMCIsCisgICAgICAgICJlczUtZXh0IjogIjAuMTAuMzAiLAorICAgICAgICAiZXM2LWl0
ZXJhdG9yIjogIjIuMC4xIiwKKyAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjEiCisgICAgICB9
CisgICAgfSwKICAgICAiZXNjYXBlLWh0bWwiOiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIs
CiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNjYXBlLWh0
bWwvLS9lc2NhcGUtaHRtbC0xLjAuMy50Z3oiLApAQCAtMjAzNSwyMCArMjU3NSwzMzEgQEAKICAg
ICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCiAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNjYXBlLXN0cmlu
Zy1yZWdleHAvLS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC0xLjAuNS50Z3oiLAotICAgICAgImludGVn
cml0eSI6ICJzaGExLUcySEFWaUdRcU4vMnJqdXl6d0lBeWhNTGh0UT0iLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLUcySEFWaUdRcU4vMnJqdXl6d0lBeWhNTGh0UT0iCisgICAgfSwKKyAgICAi
ZXNjb2RlZ2VuIjogeworICAgICAgInZlcnNpb24iOiAiMS45LjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY29kZWdlbi8tL2VzY29kZWdlbi0xLjku
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItdjBNWXZOUTMyYnp3b0cyT1NGeldB
a3VhaERRSEs5MkpCTjBwVEFBTEo0Ukl4RVplNzY2UUpQRFI4SHF5N1hOVXk1SzNmblZMNzZPcVlB
ZGM0VFpFSXc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImVzcHJpbWEiOiAiMy4xLjMiLAorICAgICAgICAiZXN0cmF2ZXJzZSI6ICI0LjIuMCIs
CisgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgIm9wdGlvbmF0b3IiOiAiMC44
LjIiLAorICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNiIKKyAgICAgIH0sCisgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAiZXNwcmltYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2VzcHJpbWEvLS9lc3ByaW1hLTMuMS4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLS9jcFJ6dVlUT0pYanlJMVRYT1Nkdi9ZcVJqTT0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJlc2NvcGUiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIzLjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvZXNjb3BlLy0vZXNjb3BlLTMuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtNEJsMTZCSjRHaFk2YmEzOTJBT1kzR1RJaWNNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImVzNi1tYXAiOiAiMC4xLjUiLAorICAgICAg
ICAiZXM2LXdlYWstbWFwIjogIjIuMC4yIiwKKyAgICAgICAgImVzcmVjdXJzZSI6ICI0LjIuMCIs
CisgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIgorICAgICAgfQorICAgIH0sCisgICAgImVz
bGludCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMTkuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50Ly0vZXNsaW50LTMuMTkuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXlQeGlBY2YwRGRDSlFiaDhDRmRuT0dwbm1zdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1j
b2RlLWZyYW1lIjogIjYuMjYuMCIsCisgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAg
ICJjb25jYXQtc3RyZWFtIjogIjEuNi4wIiwKKyAgICAgICAgImRlYnVnIjogIjIuNi44IiwKKyAg
ICAgICAgImRvY3RyaW5lIjogIjIuMC4wIiwKKyAgICAgICAgImVzY29wZSI6ICIzLjYuMCIsCisg
ICAgICAgICJlc3ByZWUiOiAiMy41LjEiLAorICAgICAgICAiZXNxdWVyeSI6ICIxLjAuMCIsCisg
ICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIiwKKyAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIi
LAorICAgICAgICAiZmlsZS1lbnRyeS1jYWNoZSI6ICIyLjAuMCIsCisgICAgICAgICJnbG9iIjog
IjcuMS4yIiwKKyAgICAgICAgImdsb2JhbHMiOiAiOS4xOC4wIiwKKyAgICAgICAgImlnbm9yZSI6
ICIzLjMuNSIsCisgICAgICAgICJpbXVybXVyaGFzaCI6ICIwLjEuNCIsCisgICAgICAgICJpbnF1
aXJlciI6ICIwLjEyLjAiLAorICAgICAgICAiaXMtbXktanNvbi12YWxpZCI6ICIyLjE2LjEiLAor
ICAgICAgICAiaXMtcmVzb2x2YWJsZSI6ICIxLjAuMCIsCisgICAgICAgICJqcy15YW1sIjogIjMu
Ny4wIiwKKyAgICAgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIsCisgICAgICAg
ICJsZXZuIjogIjAuMy4wIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAgICAgICAi
bWtkaXJwIjogIjAuNS4xIiwKKyAgICAgICAgIm5hdHVyYWwtY29tcGFyZSI6ICIxLjQuMCIsCisg
ICAgICAgICJvcHRpb25hdG9yIjogIjAuOC4yIiwKKyAgICAgICAgInBhdGgtaXMtaW5zaWRlIjog
IjEuMC4yIiwKKyAgICAgICAgInBsdXJhbGl6ZSI6ICIxLjIuMSIsCisgICAgICAgICJwcm9ncmVz
cyI6ICIxLjEuOCIsCisgICAgICAgICJyZXF1aXJlLXVuY2FjaGVkIjogIjEuMC4zIiwKKyAgICAg
ICAgInNoZWxsanMiOiAiMC43LjgiLAorICAgICAgICAic3RyaXAtYm9tIjogIjMuMC4wIiwKKyAg
ICAgICAgInN0cmlwLWpzb24tY29tbWVudHMiOiAiMi4wLjEiLAorICAgICAgICAidGFibGUiOiAi
My44LjMiLAorICAgICAgICAidGV4dC10YWJsZSI6ICIwLjIuMCIsCisgICAgICAgICJ1c2VyLWhv
bWUiOiAiMi4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ImFuc2ktc3R5bGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1zdHlsZXMvLS9h
bnNpLXN0eWxlcy0yLjIuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10RExk
TTFpMk5NOTE0ZVJtUTJna0JUUEIzYjQ9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiY2hhbGsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8t
L2NoYWxrLTEuMS4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXFCRmNWZVNu
QXY1TkZRcTlPSEtDS240Si9KZz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnNpLXN0eWxlcyI6ICIyLjIuMSIsCisgICAg
ICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAorICAgICAgICAgICAgImhh
cy1hbnNpIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAg
ICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJnbG9iIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMS4yIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYi8tL2ds
b2ItNy4xLjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1NSlRVZzFranVM
ZVFDSitjY0U0VnBhNmtLVlhrUFlKMm1PQ1F5VXVLTGNMUXNkck1DcEJQVWk4cVZFNitZdWFKa296
ZUE5TnVzVEF3M2hMcjhYZTVFUT09IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZnMucmVhbHBhdGgiOiAiMS4wLjAiLAorICAg
ICAgICAgICAgImluZmxpZ2h0IjogIjEuMC42IiwKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIy
LjAuMyIsCisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC40IiwKKyAgICAgICAgICAgICJv
bmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4xIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN0cmlwLWJvbSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3N0cmlwLWJvbS8tL3N0cmlwLWJvbS0zLjAuMC50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JelRCanB4MW4zdmRWdjN2ZnByajFZam1qdE09IiwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3VwcG9ydHMtY29sb3Ii
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNv
bG9yLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVUxMEVYT2EyTmor
a0FSY0lSaW1aWHAzekpNYz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9LAorICAgICJlc2xpbnQtY29uZmlnLXN0YW5kYXJkIjogeworICAgICAgInZl
cnNpb24iOiAiNi4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2VzbGludC1jb25maWctc3RhbmRhcmQvLS9lc2xpbnQtY29uZmlnLXN0YW5kYXJkLTYu
Mi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMDZhS3I4Y1pGam5uN2tRZWMwaHpr
Q1kxUXBJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImVzbGludC1mcmllbmRs
eS1mb3JtYXR0ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50LWZyaWVuZGx5LWZvcm1hdHRl
ci8tL2VzbGludC1mcmllbmRseS1mb3JtYXR0ZXItMy4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1KNGgwUTFwc1J1d2RsUG9MSC9TVTR3N3dRcEE9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAg
ICAgICAiY29hbGVzY3kiOiAiMS4wLjAiLAorICAgICAgICAiZXh0ZW5kIjogIjMuMC4xIiwKKyAg
ICAgICAgIm1pbmltaXN0IjogIjEuMi4wIiwKKyAgICAgICAgInRleHQtdGFibGUiOiAiMC4yLjAi
CisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFuc2ktc3R5bGVz
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1zdHlsZXMvLS9hbnNpLXN0eWxlcy0y
LjIuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10RExkTTFpMk5NOTE0ZVJt
UTJna0JUUEIzYjQ9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiY2hhbGsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8tL2NoYWxrLTEuMS4z
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXFCRmNWZVNuQXY1TkZRcTlPSEtD
S240Si9KZz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJhbnNpLXN0eWxlcyI6ICIyLjIuMSIsCisgICAgICAgICAgICAiZXNj
YXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAorICAgICAgICAgICAgImhhcy1hbnNpIjogIjIu
MC4wIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAgICAgICAgICJz
dXBwb3J0cy1jb2xvciI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltaXN0Ly0vbWluaW1p
c3QtMS4yLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbzFBSXNnOUJPRDdz
SDdrVTlNMWQ5NW9tUW9RPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwK
KyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9y
dHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1VMTBFWE9hMk5qK2tBUmNJUmltWlhwM3pKTWM9IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiZXNsaW50LWxvYWRlciI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuOS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQtbG9hZGVyLy0vZXNsaW50LWxvYWRlci0xLjkuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItNDBhTjk3NnFTTlB5YjllalRxakV0aFpJ
VHBsczFTVkt0d2d1YWhtSDFkekdDd1FVL3Z5U0UreFgzM1ZabUQ4Y3NVMGFoVk5DdEZsc1BnS3FS
QmlxZ2c9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImxvYWRlci1mcy1jYWNoZSI6ICIxLjAuMSIsCisgICAgICAgICJsb2FkZXItdXRpbHMiOiAi
MS4xLjAiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJvYmpl
Y3QtaGFzaCI6ICIxLjEuOCIsCisgICAgICAgICJyaW1yYWYiOiAiMi42LjEiCisgICAgICB9LAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImxvYWRlci11dGlscyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2xvYWRlci11dGlscy8tL2xvYWRlci11dGlscy0xLjEuMC50Z3oi
LAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15WXJ2U0l2TTdhTC90ZUxlWkcxcWRVUXA5
YzA9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYmlnLmpzIjogIjMuMS4zIiwKKyAgICAgICAgICAgICJlbW9qaXMtbGlzdCI6
ICIyLjEuMCIsCisgICAgICAgICAgICAianNvbjUiOiAiMC41LjEiCisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiZXNsaW50LXBsdWdpbi1odG1sIjogeworICAg
ICAgInZlcnNpb24iOiAiMy4yLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2VzbGludC1wbHVnaW4taHRtbC8tL2VzbGludC1wbHVnaW4taHRtbC0zLjIu
Mi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItc1N1YWZhdGhGNkltUHJ6RjJ2VUtF
Slk2TGxxMDZkL3JpTVRNemxzcnVEUkRoTnNRTVlwMnZpVUtvK2p4K0pScjFRZXZza2VVcFFjdXB0
cDJnTjFYVlE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImh0bWxwYXJzZXIyIjogIjMuOS4yIiwKKyAgICAgICAgInNlbXZlciI6ICI1LjQuMSIK
KyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZG9taGFuZGxlciI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTIuNC4x
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWlTNUhBQXFadmxXNzgzZFAvcUJX
SFloNXdsaz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJodG1scGFyc2VyMiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjkuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2h0bWxwYXJzZXIyLy0vaHRtbHBhcnNlcjItMy45LjIudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtRzkrSHJNb1BQNTVUK2svTTZ3OUxUTHNBc3pnPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRvbWVs
ZW1lbnR0eXBlIjogIjEuMy4wIiwKKyAgICAgICAgICAgICJkb21oYW5kbGVyIjogIjIuNC4xIiwK
KyAgICAgICAgICAgICJkb211dGlscyI6ICIxLjUuMSIsCisgICAgICAgICAgICAiZW50aXRpZXMi
OiAiMS4xLjEiLAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgICAg
ICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4zLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiaXNhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzYXJyYXkvLS9pc2Fy
cmF5LTEuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXU1TmRTRmdzdWhh
TUJvTkpWNlZLUGdjU1R4RT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4zLjMi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFk
YWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4zLjMudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi1tK3F6emNuN0tVeEVtZDFnTWJjaEYrWTJlSVViaWVVYXhrV3RwdHlI
eXdyWDByRThRRVlxUEMwN1Z1eTRXbTMyL3hFMTZOY2RCY3RiOFMwWGUvNUllUT09IiwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
Y29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIs
CisgICAgICAgICAgICAiaXNhcnJheSI6ICIxLjAuMCIsCisgICAgICAgICAgICAicHJvY2Vzcy1u
ZXh0aWNrLWFyZ3MiOiAiMS4wLjciLAorICAgICAgICAgICAgInNhZmUtYnVmZmVyIjogIjUuMS4x
IiwKKyAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIxLjAuMyIsCisgICAgICAgICAgICAi
dXRpbC1kZXByZWNhdGUiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAic3RyaW5nX2RlY29kZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdfZGVj
b2Rlci8tL3N0cmluZ19kZWNvZGVyLTEuMC4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGE1MTItNEFINlo1ZnpOTkJjSCs2WERNZkEvQlR0ODdza3hxSmxPMGxBaDNEa2VyNXpUaGNB
eEc2bUt6K2lHdTMwOFVLb1BQUThEY3F4LzRKaHVqemx0UmEraFE9PSIsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInNhZmUtYnVm
ZmVyIjogIjUuMS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisg
ICAgImVzbGludC1wbHVnaW4tcHJvbWlzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuNS4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQtcGx1
Z2luLXByb21pc2UvLS9lc2xpbnQtcGx1Z2luLXByb21pc2UtMy41LjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1lUHUyLytCSElCWW5WcDZGcHNVM092S21qOG89IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZXNsaW50LXBsdWdpbi1zdGFuZGFyZCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMy4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9lc2xpbnQtcGx1Z2luLXN0YW5kYXJkLy0vZXNsaW50LXBsdWdpbi1zdGFuZGFy
ZC0yLjMuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVoyVzlLbTJlemNlOThiRkZy
a3V6RGl0N2h2Zz0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJlc3ByZWUiOiB7
CisgICAgICAidmVyc2lvbiI6ICIzLjUuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZXNwcmVlLy0vZXNwcmVlLTMuNS4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtREppTGlyUnR0VEVBb1pWSzVMcVpYZDBuMkg0PSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFjb3JuIjogIjUuMS4xIiwK
KyAgICAgICAgImFjb3JuLWpzeCI6ICIzLjAuMSIKKyAgICAgIH0KKyAgICB9LAogICAgICJlc3By
aW1hIjogewogICAgICAgInZlcnNpb24iOiAiMi43LjMiLAogICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzcHJpbWEvLS9lc3ByaW1hLTIuNy4zLnRneiIsCiAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtbHVPM0RWZDU5cTFKelFNbWM5SERFblo3cFlFPSIsCiAg
ICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgImVzcXVlcnkiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZXNxdWVyeS8tL2VzcXVlcnktMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS16N3FMVjlmN3FUOFhLWXFLQUdvRXphRTlnUG89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiZXN0cmF2ZXJzZSI6ICI0LjIuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJlc3JlY3Vyc2UiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjIuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNyZWN1cnNlLy0v
ZXNyZWN1cnNlLTQuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK3BWbzJZMDRJ
L21rSFpIcEF0eXJucWJsc1dNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImVzdHJhdmVyc2UiOiAiNC4yLjAiLAorICAgICAgICAib2JqZWN0LWFz
c2lnbiI6ICI0LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJlc3RyYXZlcnNlIjogeworICAg
ICAgInZlcnNpb24iOiAiNC4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2VzdHJhdmVyc2UvLS9lc3RyYXZlcnNlLTQuMi4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtRGU0LzdUSDgxR2xoak9jMElKbjhHdm9MMnhNPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImVzdXRpbHMiOiB7CiAgICAgICAidmVyc2lvbiI6ICIy
LjAuMiIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXN1
dGlscy8tL2VzdXRpbHMtMi4wLjIudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DcjlQ
SEtwYnl4OTZuWXJNYmVwUHFxQkxySnM9IiwKLSAgICAgICJkZXYiOiB0cnVlCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtQ3I5UEhLcGJ5eDk2bllyTWJlcFBxcUJMckpzPSIKICAgICB9LAogICAg
ICJldGFnIjogewogICAgICAgInZlcnNpb24iOiAiMS44LjAiLApAQCAtMjA1Niw2ICsyOTA3LDE2
IEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYjJNYTd6TnRiRVkySzFGMlFFVE9JV3Zqd0ZF
PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgImV2ZW50LWVtaXR0ZXIiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIwLjMuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZXZlbnQtZW1pdHRlci8tL2V2ZW50LWVtaXR0ZXItMC4zLjUudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zNHhwN3ZGa2VTUEhGWHVjNkRoQVlRc0N6RGs9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6ICIx
LjAuMCIsCisgICAgICAgICJlczUtZXh0IjogIjAuMTAuMzAiCisgICAgICB9CisgICAgfSwKICAg
ICAiZXZlbnRlbWl0dGVyMyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ldmVudGVtaXR0ZXIzLy0vZXZl
bnRlbWl0dGVyMy0xLjIuMC50Z3oiLApAQCAtMjA4Myw2ICsyOTQ0LDEyIEBACiAgICAgICAgICJj
cmVhdGUtaGFzaCI6ICIxLjEuMyIKICAgICAgIH0KICAgICB9LAorICAgICJleGl0LWhvb2siOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZXhpdC1ob29rLy0vZXhpdC1ob29rLTEuMS4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtOEZ5aU03U01CZFZQL3dkMlhmaFFmcFhBTC9nPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImV4cGFuZC1icmFja2V0cyI6IHsKICAgICAgICJ2
ZXJzaW9uIjogIjAuMS41IiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9leHBhbmQtYnJhY2tldHMvLS9leHBhbmQtYnJhY2tldHMtMC4xLjUudGd6IiwKQEAg
LTIxMzcsNiArMzAwNCwxMiBAQAogICAgICAgICAidmFyeSI6ICIxLjEuMSIKICAgICAgIH0KICAg
ICB9LAorICAgICJleHRlbmQiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXh0ZW5kLy0vZXh0ZW5kLTMu
MC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcDFYcWU4R3QvTVdqSE9mbll0dXEz
RjVqWkVRPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImV4dGdsb2IiOiB7CiAg
ICAgICAidmVyc2lvbiI6ICIwLjMuMiIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZXh0Z2xvYi8tL2V4dGdsb2ItMC4zLjIudGd6IiwKQEAgLTIxNzksMTgg
KzMwNTIsOTcgQEAKICAgICAgICAgfQogICAgICAgfQogICAgIH0sCisgICAgImV4dHJhY3Qtemlw
IjogeworICAgICAgInZlcnNpb24iOiAiMS42LjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2V4dHJhY3QtemlwLy0vZXh0cmFjdC16aXAtMS42LjUudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tYUJuTmJicUlPcWJjRjEzbXMvOHlIei9CRUE9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY29u
Y2F0LXN0cmVhbSI6ICIxLjYuMCIsCisgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAg
ICJta2RpcnAiOiAiMC41LjAiLAorICAgICAgICAieWF1emwiOiAiMi40LjEiCisgICAgICB9LAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImRlYnVnIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMi4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZGVidWcvLS9kZWJ1Zy0yLjIuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS0rSEJYNlpXeG9mYXVha2xnWmtFM3ZGYndPZG89IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibXMiOiAiMC43
LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWtkaXJwIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuNS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvbWtkaXJwLy0vbWtkaXJwLTAuNS4wLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLUhYTUhhbTM1aHMyVFJPRmVjZnpBV2t5YXZ4ST0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJt
aW5pbWlzdCI6ICIwLjAuOCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJtcyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjcuMSIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21zLy0vbXMtMC43LjEudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtbk5FOEE2Mi84bHRsNy8zbnpvWk82VklCY0pnPSIsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImV4dHNw
cmludGYiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXh0c3ByaW50Zi8tL2V4dHNwcmludGYtMS4zLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1scEdFUU9NRUducEJUNHhTNDhWMDZ6dytI
Z1U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiZmFzdC1kZWVwLWVxdWFsIjog
ewogICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2Zhc3QtZGVlcC1lcXVhbC8tL2Zhc3QtZGVlcC1lcXVhbC0xLjAu
MC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLWxpVnFPOGwxV1Y2emJZTHBrcDBHRFlr
ME9mOD0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJmYXN0LWxldmVuc2h0ZWlu
IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2Zhc3QtbGV2ZW5zaHRlaW4vLS9mYXN0LWxldmVuc2h0ZWlu
LTIuMC42LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUFlwY1pvZzZGcU1NcUdRK2hS
OFp1cWQ1ZVJjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImZhc3RwYXJzZSI6
IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mYXN0cGFyc2UvLS9mYXN0cGFyc2UtMS4xLjEudGd6IiwKICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wZUprT3ppcFRYV0R0SGtHRG14Sy84bEFjZmc9IiwKICAg
ICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAiZmQtc2xpY2VyIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2ZkLXNsaWNlci8tL2ZkLXNsaWNlci0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWkxdkwyZXd5ZkZCQnY1cXdJLzFuVVBFWGZtVT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwZW5kIjogIjEuMi4wIgorICAgICAgfQor
ICAgIH0sCisgICAgImZpZ3VyZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjcuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlndXJlcy8tL2ZpZ3Vy
ZXMtMS43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15K0hqci96eHpVUzRESzMr
MG8zSGs2bHdIUzQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAorICAgICAgICAib2JqZWN0
LWFzc2lnbiI6ICI0LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJmaWxlLWVudHJ5LWNhY2hl
IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGUtZW50cnktY2FjaGUvLS9maWxlLWVudHJ5LWNhY2hl
LTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdzVLWkRENW9SNFBZT0xqSVNr
WFlvRWhGZzJFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImZsYXQtY2FjaGUiOiAiMS4yLjIiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0
LjEuMSIKKyAgICAgIH0KKyAgICB9LAogICAgICJmaWxlLWxvYWRlciI6IHsKICAgICAgICJ2ZXJz
aW9uIjogIjAuMTEuMiIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZmlsZS1sb2FkZXIvLS9maWxlLWxvYWRlci0wLjExLjIudGd6IiwKQEAgLTIyMTMsNiAr
MzE2NSwxMiBAQAogICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKKyAgICAiZmlsZS11cmktdG8t
cGF0aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maWxlLXVyaS10by1wYXRoLy0vZmlsZS11cmktdG8t
cGF0aC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItMFp0K3MzTDdWZjFi
aXdXWjI5YUFSaVZZTHg3aU1HbkVVbDl4MzNmYkIvajNqUjgxdS9PMkxicUsrQm0xQ0RTTkRLVnRK
L1lqd1k3VFVkNVNrZUxRTHc9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImZp
bGVuYW1lLXJlZ2V4IjogewogICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAogICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5h
bWUtcmVnZXgtMi4wLjEudGd6IiwKQEAgLTIyNTQsMTQgKzMyMTIsMTQgQEAKICAgICAgIH0KICAg
ICB9LAogICAgICJmaW5kLWNhY2hlLWRpciI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwK
LSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maW5kLWNhY2hl
LWRpci8tL2ZpbmQtY2FjaGUtZGlyLTAuMS4xLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNo
YTEteU43NjVYeUtVcWluaFBuakhGZkhRdW1Ub0xrPSIsCisgICAgICAidmVyc2lvbiI6ICIxLjAu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmluZC1j
YWNoZS1kaXIvLS9maW5kLWNhY2hlLWRpci0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWtvamo2ZVBNTjBoeGZUbnEzaGZQY2Z3dzdtOD0iLAogICAgICAgImRldiI6IHRydWUs
CiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJjb21tb25kaXIiOiAiMS4wLjEiLAotICAg
ICAgICAibWtkaXJwIjogIjAuNS4xIiwKLSAgICAgICAgInBrZy1kaXIiOiAiMS4wLjAiCisgICAg
ICAgICJtYWtlLWRpciI6ICIxLjAuMCIsCisgICAgICAgICJwa2ctZGlyIjogIjIuMC4wIgogICAg
ICAgfQogICAgIH0sCiAgICAgImZpbmQtdXAiOiB7CkBAIC0yMjc0LDYgKzMyMzIsMTggQEAKICAg
ICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgogICAgICAgfQogICAgIH0sCisgICAgImZs
YXQtY2FjaGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIuMiIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmxhdC1jYWNoZS8tL2ZsYXQtY2FjaGUtMS4y
LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0rb1p4VG5MQ0hiaUdBWFllenk5VlhS
cThhNVk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiY2lyY3VsYXItanNvbiI6ICIwLjMuMyIsCisgICAgICAgICJkZWwiOiAiMi4yLjIiLAorICAg
ICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjExIiwKKyAgICAgICAgIndyaXRlIjogIjAuMi4xIgor
ICAgICAgfQorICAgIH0sCiAgICAgImZsYXR0ZW4iOiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjAu
MiIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmxhdHRl
bi8tL2ZsYXR0ZW4tMS4wLjIudGd6IiwKQEAgLTIyOTUsNiArMzI2NSwyMyBAQAogICAgICAgICAi
Zm9yLWluIjogIjEuMC4yIgogICAgICAgfQogICAgIH0sCisgICAgImZvcmV2ZXItYWdlbnQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZm9yZXZlci1hZ2VudC8tL2ZvcmV2ZXItYWdlbnQtMC42LjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0rOGNmREVHdDZ6ZjViRmQ2MGUxQzJQMnN5cEU9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZm9ybS1kYXRhIjogeworICAgICAg
InZlcnNpb24iOiAiMi4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjMuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLWI3bFB2WEdJVXdiWFBSWE1TWC9rekU3TlJMOD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhc3luY2tpdCI6ICIwLjQuMCIs
CisgICAgICAgICJjb21iaW5lZC1zdHJlYW0iOiAiMS4wLjUiLAorICAgICAgICAibWltZS10eXBl
cyI6ICIyLjEuMTYiCisgICAgICB9CisgICAgfSwKICAgICAiZm9yd2FyZGVkIjogewogICAgICAg
InZlcnNpb24iOiAiMC4xLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2ZvcndhcmRlZC8tL2ZvcndhcmRlZC0wLjEuMC50Z3oiLApAQCAtMjMxNiw2ICsz
MzAzLDMzIEBACiAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCiAgICAgICAgICJlcnJvci1zdGFj
ay1wYXJzZXIiOiAiMi4wLjEiLAogICAgICAgICAic3RyaW5nLWxlbmd0aCI6ICIxLjAuMSIKKyAg
ICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYW5zaS1zdHlsZXMiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4x
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdr
QlRQQjNiND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJj
aGFsayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRK
L0pnPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJlc2NhcGUt
c3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAi
LAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBv
cnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN1
cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3Iv
LS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1VMTBFWE9hMk5qK2tBUmNJUmltWlhwM3pKTWM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKICAgICAiZnMtZXh0cmEiOiB7CkBAIC0zMzQ5LDE4
ICs0MzYzLDExMiBAQAogICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKKyAgICAiZnRwIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4zLjEwIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9mdHAvLS9mdHAtMC4zLjEwLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEta1pmWVlhMkJRdlBtUFZxRHYrVEZuM013aUYwPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIxLjEu
MTQiLAorICAgICAgICAieHJlZ2V4cCI6ICIyLjAuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMS4xNCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0xLjEuMTQudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZlBURlR2Wkk0NEV3aE1ZMjNTQjU0V2JBZ2Rr
PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCisgICAgICAgICAgICAiaW5oZXJpdHMi
OiAiMi4wLjMiLAorICAgICAgICAgICAgImlzYXJyYXkiOiAiMC4wLjEiLAorICAgICAgICAgICAg
InN0cmluZ19kZWNvZGVyIjogIjAuMTAuMzEiCisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKICAgICAiZnVuY3Rpb24tYmluZCI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEu
MS4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mdW5j
dGlvbi1iaW5kLy0vZnVuY3Rpb24tYmluZC0xLjEuMC50Z3oiLAogICAgICAgImludGVncml0eSI6
ICJzaGExLUZoZG5GTWdCZVk1T2p5ejM5MUtVWjd0S1YzRT0iLAogICAgICAgImRldiI6IHRydWUK
ICAgICB9LAorICAgICJnZW5lcmF0ZS1mdW5jdGlvbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIu
MC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nZW5l
cmF0ZS1mdW5jdGlvbi8tL2dlbmVyYXRlLWZ1bmN0aW9uLTIuMC4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtYUZqK2ZBbHB0OVRwQ1RNM1pIckhuMkRmdm5RPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eSI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9nZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkvLS9nZW5lcmF0ZS1vYmplY3QtcHJv
cGVydHktMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uQTRjUURDTTZBVDBl
RFlZdVRmNmlQbWRVTkE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiaXMtcHJvcGVydHkiOiAiMS4wLjIiCisgICAgICB9CisgICAgfSwKICAgICAi
Z2V0LWNhbGxlci1maWxlIjogewogICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAogICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dldC1jYWxsZXItZmlsZS8tL2dl
dC1jYWxsZXItZmlsZS0xLjAuMi50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGExLTl3TG1N
U2ZuNGpIQllLZ01GVlNzdHcxUVIrVT0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAg
ICJnZXQtdXJpIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dldC11cmkvLS9nZXQtdXJpLTIuMC4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi03YWVsVnJZcUNMdVZqcTJrRUtSVEg4ZlhQ
VEMweEtUa00rRzdVbEZrRXdDWFkzc0ZiU3h2WTM3NUpvRm93T0FZYmthVTQ3U3JCdk9lZlVsTFpa
KzZRQT09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiZGF0YS11cmktdG8tYnVmZmVyIjogIjEuMi4wIiwKKyAgICAgICAgImRlYnVnIjogIjIuNi44
IiwKKyAgICAgICAgImV4dGVuZCI6ICIzLjAuMSIsCisgICAgICAgICJmaWxlLXVyaS10by1wYXRo
IjogIjEuMC4wIiwKKyAgICAgICAgImZ0cCI6ICIwLjMuMTAiLAorICAgICAgICAicmVhZGFibGUt
c3RyZWFtIjogIjIuMy4zIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICJpc2FycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNhcnJheS8tL2lzYXJy
YXktMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdTVOZFNGZ3N1aGFN
Qm9OSlY2VktQZ2NTVHhFPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuMyIs
CisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWRh
YmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0yLjMuMy50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLW0rcXp6Y243S1V4RW1kMWdNYmNoRitZMmVJVWJpZVVheGtXdHB0eUh5
d3JYMHJFOFFFWXFQQzA3VnV5NFdtMzIveEUxNk5jZEJjdGI4UzBYZS81SWVRPT0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJj
b3JlLXV0aWwtaXMiOiAiMS4wLjIiLAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwK
KyAgICAgICAgICAgICJpc2FycmF5IjogIjEuMC4wIiwKKyAgICAgICAgICAgICJwcm9jZXNzLW5l
eHRpY2stYXJncyI6ICIxLjAuNyIsCisgICAgICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEi
LAorICAgICAgICAgICAgInN0cmluZ19kZWNvZGVyIjogIjEuMC4zIiwKKyAgICAgICAgICAgICJ1
dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmluZ19kZWNv
ZGVyLy0vc3RyaW5nX2RlY29kZXItMS4wLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi00QUg2WjVmek5OQmNIKzZYRE1mQS9CVHQ4N3NreHFKbE8wbEFoM0RrZXI1elRoY0F4
RzZtS3oraUd1MzA4VUtvUFBROERjcXgvNEpodWp6bHRSYStoUT09IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic2FmZS1idWZm
ZXIiOiAiNS4xLjEiCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAg
ICAiZ2V0cGFzcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS43IiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nZXRwYXNzLy0vZ2V0cGFzcy0wLjEuNy50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVh2K09QbWhOVnBya3l5c1NnbUJPaTZZaFNm
bz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJh
c3NlcnQtcGx1cyI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAogICAgICJnbG9iIjogewogICAg
ICAgInZlcnNpb24iOiAiNi4wLjQiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2dsb2IvLS9nbG9iLTYuMC40LnRneiIsCkBAIC0zNDMwLDggKzQ1MzgsMzcg
QEAKICAgICAiZ2xvYmFscyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjkuMTguMCIsCiAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYmFscy8tL2dsb2JhbHMt
OS4xOC4wLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1TMG5HM0NMRVFpWS9JTHhx
dHp0VFdILzNpUlJkeUJMdzZLTUR4bktNY2hydGJqMk9GbWVoVmgwV1VDZlczRFVySWd4L3FGckpQ
SUNycTRaNHNUUjlVUT09IiwKLSAgICAgICJkZXYiOiB0cnVlCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi1TMG5HM0NMRVFpWS9JTHhxdHp0VFdILzNpUlJkeUJMdzZLTUR4bktNY2hydGJqMk9G
bWVoVmgwV1VDZlczRFVySWd4L3FGckpQSUNycTRaNHNUUjlVUT09IgorICAgIH0sCisgICAgImds
b2JieSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iYnkvLS9nbG9iYnktNS4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS02OWhHWjhvTnV6TUxtYno4YU9yQ3ZGUTNEZzA9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXJyYXktdW5p
b24iOiAiMS4wLjIiLAorICAgICAgICAiYXJyaWZ5IjogIjEuMC4xIiwKKyAgICAgICAgImdsb2Ii
OiAiNy4xLjIiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJw
aWZ5IjogIjIuMy4wIiwKKyAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAg
fSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJnbG9iIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjcuMS4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZ2xvYi8tL2dsb2ItNy4xLjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTUxMi1NSlRVZzFranVMZVFDSitjY0U0VnBhNmtLVlhrUFlKMm1PQ1F5VXVLTGNM
UXNkck1DcEJQVWk4cVZFNitZdWFKa296ZUE5TnVzVEF3M2hMcjhYZTVFUT09IiwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZnMu
cmVhbHBhdGgiOiAiMS4wLjAiLAorICAgICAgICAgICAgImluZmxpZ2h0IjogIjEuMC42IiwKKyAg
ICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAibWluaW1hdGNoIjog
IjMuMC40IiwKKyAgICAgICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJwYXRo
LWlzLWFic29sdXRlIjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQog
ICAgIH0sCiAgICAgImdyYWNlZnVsLWZzIjogewogICAgICAgInZlcnNpb24iOiAiNC4xLjExIiwK
QEAgLTM0MzksNiArNDU3NiwxOCBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLURvdmY1Tkhk
dUlWTlpPQk9wOEFPS2dKdVZsZz0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJn
cmFjZWZ1bC1yZWFkbGluayI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ncmFjZWZ1bC1yZWFkbGluay8t
L2dyYWNlZnVsLXJlYWRsaW5rLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
VEsrdGRyeGk4QytnT2JMNVRwbzkwNk9ScHlVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgImdyb3dsIjogeworICAgICAgInZlcnNpb24iOiAiMS45LjIiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dyb3dsLy0vZ3Jvd2wtMS45LjIudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1EcWQwTnhYYmpZM2l4ZTNoZDE0YlJheUZ3Qzg9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiZ3ppcC1zaXplIjogewogICAgICAg
InZlcnNpb24iOiAiMy4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2d6aXAtc2l6ZS8tL2d6aXAtc2l6ZS0zLjAuMC50Z3oiLApAQCAtMzQ0OCw2ICs0
NTk3LDIyIEBACiAgICAgICAgICJkdXBsZXhlciI6ICIwLjEuMSIKICAgICAgIH0KICAgICB9LAor
ICAgICJoYXItc2NoZW1hIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhci1zY2hlbWEvLS9oYXItc2No
ZW1hLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcVV3aUpPdkt3RWVDb05r
RFZTSHlSelczN0pJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImhhci12YWxp
ZGF0b3IiOiB7CisgICAgICAidmVyc2lvbiI6ICI1LjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFyLXZhbGlkYXRvci8tL2hhci12YWxpZGF0b3It
NS4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11a0FzSm1HVThWbFc3eFhnL1BK
Q21UOXFmZjA9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAiYWp2IjogIjUuMi4yIiwKKyAgICAgICAgImhhci1zY2hlbWEiOiAiMi4wLjAiCisgICAg
ICB9CisgICAgfSwKICAgICAiaGFzIjogewogICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy8tL2hhcy0xLjAu
MS50Z3oiLApAQCAtMzQ2MSw3ICs0NjI2LDYgQEAKICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwK
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtYW5zaS8t
L2hhcy1hbnNpLTIuMC4wLnRneiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTlBVRW5PSHMz
eXNHU2E4KzhrNUY3VFZCYlpFPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJl
cyI6IHsKICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4xLjEiCiAgICAgICB9CkBAIC0zNDk3LDYg
KzQ2NjEsMjggQEAKICAgICAgICAgIm1pbmltYWxpc3RpYy1hc3NlcnQiOiAiMS4wLjAiCiAgICAg
ICB9CiAgICAgfSwKKyAgICAiaGFzaGEiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzaGEvLS9oYXNo
YS0yLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWVOZkwvQjV0WmpBLzU1ZzNO
bG1FVVhzdmJ1RT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJpcy1zdHJlYW0iOiAiMS4xLjAiLAorICAgICAgICAicGlua2llLXByb21pc2UiOiAi
Mi4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiaGF3ayI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjYuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9o
YXdrLy0vaGF3ay02LjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItbWlvd2hs
MitVN1FsZTR2ZExxRGRQdDltMDlLNnlaaGtMRFRXR29VaVV6clFDbittSEhTbWZKZ0F5R2FMUlpi
UG1UcWZGRmpSVjFRV0NXMFZXVUpCYlE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImJvb20iOiAiNC4zLjEiLAorICAgICAgICAiY3J5cHRpbGVz
IjogIjMuMS4yIiwKKyAgICAgICAgImhvZWsiOiAiNC4yLjAiLAorICAgICAgICAic250cCI6ICIy
LjAuMiIKKyAgICAgIH0KKyAgICB9LAogICAgICJoZSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEu
MS4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oZS8t
L2hlLTEuMS4xLnRneiIsCkBAIC0zNTE0LDYgKzQ3MDAsMTIgQEAKICAgICAgICAgIm1pbmltYWxp
c3RpYy1jcnlwdG8tdXRpbHMiOiAiMS4wLjEiCiAgICAgICB9CiAgICAgfSwKKyAgICAiaG9layI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ob2VrLy0vaG9lay00LjIuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItdjBYQ0x4SUNpOW5QZllyUzlSTDhIYlluWGk5b2JZQWVMYlNQMDBCbW5a
d0NLOStJaDlXT2pvWjhZb0hDb2F2MmNzcW40Rk96NE9ybGRzeTJkbUR3bVE9PSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImhvbWUtb3ItdG1wIjogewogICAgICAgInZlcnNpb24i
OiAiMi4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2hvbWUtb3ItdG1wLy0vaG9tZS1vci10bXAtMi4wLjAudGd6IiwKQEAgLTM2MjUsNiArNDgxNywx
NyBAQAogICAgICAgICAicmVxdWlyZXMtcG9ydCI6ICIxLjAuMCIKICAgICAgIH0KICAgICB9LAor
ICAgICJodHRwLXByb3h5LWFnZW50IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2h0dHAtcHJveHktYWdl
bnQvLS9odHRwLXByb3h5LWFnZW50LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtekJ6amprVTcrWVNnOTNBdExkV2NjOUNCS0VvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFnZW50LWJhc2UiOiAiMi4xLjEiLAorICAgICAg
ICAiZGVidWciOiAiMi42LjgiLAorICAgICAgICAiZXh0ZW5kIjogIjMuMC4xIgorICAgICAgfQor
ICAgIH0sCiAgICAgImh0dHAtcHJveHktbWlkZGxld2FyZSI6IHsKICAgICAgICJ2ZXJzaW9uIjog
IjAuMTcuNCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aHR0cC1wcm94eS1taWRkbGV3YXJlLy0vaHR0cC1wcm94eS1taWRkbGV3YXJlLTAuMTcuNC50Z3oi
LApAQCAtMzYzNywxMiArNDg0MCw0MCBAQAogICAgICAgICAibWljcm9tYXRjaCI6ICIyLjMuMTEi
CiAgICAgICB9CiAgICAgfSwKKyAgICAiaHR0cC1zaWduYXR1cmUiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvaHR0cC1zaWduYXR1cmUvLS9odHRwLXNpZ25hdHVyZS0xLjIuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLW11elpKUkZIY3ZQWlcyV21DcnVQZkJqN3JPRT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhc3NlcnQtcGx1cyI6ICIx
LjAuMCIsCisgICAgICAgICJqc3ByaW0iOiAiMS40LjEiLAorICAgICAgICAic3NocGsiOiAiMS4x
My4xIgorICAgICAgfQorICAgIH0sCiAgICAgImh0dHBzLWJyb3dzZXJpZnkiOiB7CiAgICAgICAi
dmVyc2lvbiI6ICIwLjAuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaHR0cHMtYnJvd3NlcmlmeS8tL2h0dHBzLWJyb3dzZXJpZnktMC4wLjEudGd6IiwK
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QNUUyWEt2bUMzZnREcnVpUzBWT1BnblpXb0k9IiwK
ICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAiaHR0cHMtcHJveHktYWdlbnQiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaHR0cHMtcHJveHktYWdlbnQvLS9odHRwcy1wcm94eS1hZ2VudC0xLjAu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU5mZmFiRWpPVGR2NkpraVJyRmsrNWYr
R2NlWT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJhZ2VudC1iYXNlIjogIjIuMS4xIiwKKyAgICAgICAgImRlYnVnIjogIjIuNi44IiwKKyAgICAg
ICAgImV4dGVuZCI6ICIzLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJpY29udi1saXRlIjog
eworICAgICAgInZlcnNpb24iOiAiMC40LjE5IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY29udi1saXRlLy0vaWNvbnYtbGl0ZS0wLjQuMTkudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLW9UWnF3ZUlQNTF4YUdQSTR1UGE1Ni9QcmkvNDgw
UittbzdTZVUrWUVUQnlRTmhERzU1eWNGeU5MSWd0YTl2WGhJTHJ4WERtRjdaR2hxWkljdU4wZ0pR
PT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJpY3NzLXJlcGxhY2Utc3ltYm9s
cyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY3NzLXJlcGxhY2Utc3ltYm9scy8tL2ljc3MtcmVwbGFj
ZS1zeW1ib2xzLTEuMS4wLnRneiIsCkBAIC0zNzEyLDYgKzQ5NDMsMTggQEAKICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS12alBVQ3NFTzhaSm5BZmJ3aWkyRysvMGEwK1E9IiwKICAgICAgICJkZXYi
OiB0cnVlCiAgICAgfSwKKyAgICAiaWdub3JlIjogeworICAgICAgInZlcnNpb24iOiAiMy4zLjUi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lnbm9yZS8t
L2lnbm9yZS0zLjMuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItSkxIOTNtTDhh
bVpRaGgvcDZtZlFnVkJIM002ZXBOcTNEZnNYc1RTdVNySW5Wand5WWxGRTFudjJBZ2ZSQ0M4UG9P
aE0wandRNXY4czlMZ2JLN3lHRHc9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
ImltdXJtdXJoYXNoIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ltdXJtdXJoYXNoLy0vaW11cm11cmhh
c2gtMC4xLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1raGk1c3Jrb29qaXhQY1Q3
YTIxWGJ5TVVVK289IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAiaW5kZXhlcy1v
ZiI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pbmRleGVzLW9mLy0vaW5kZXhlcy1vZi0xLjAuMS50Z3oi
LApAQCAtMzc0MCwxMSArNDk4Myw4NyBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLVl6d3Nn
K1BhUXFVQzlTUm1BaVNBOUNDQ1lkND0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAotICAg
ICJpbmkiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjMuNCIsCi0gICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5pLy0vaW5pLTEuMy40LnRneiIsCi0gICAgICAi
aW50ZWdyaXR5IjogInNoYTEtQlRmTGVkcjFtMW1ocFJmZjl3Yklic0E1Rmk0PSIsCi0gICAgICAi
ZGV2IjogdHJ1ZQorICAgICJpbmplY3QtbG9hZGVyIjogeworICAgICAgInZlcnNpb24iOiAiMy4w
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2luamVj
dC1sb2FkZXIvLS9pbmplY3QtbG9hZGVyLTMuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi0wS2Q0TnFNSlVoa25HNEVDaUovbWd5SEpCcGZCQldaM0lLSGwyQkxOUWlGdE1PNy94
aXY5bW1IbDdtR3ZFMGlLckJlUUFaZE1jUVAzc01YWk4wY3FlZz09IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtY29yZSI6ICI2LjI2LjAi
CisgICAgICB9CisgICAgfSwKKyAgICAiaW5xdWlyZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIw
LjEyLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lu
cXVpcmVyLy0vaW5xdWlyZXItMC4xMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
SHZLLzFqVUUzd3ZIVjRYLytNTEVIZkV2QjM0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFuc2ktZXNjYXBlcyI6ICIxLjQuMCIsCisgICAgICAg
ICJhbnNpLXJlZ2V4IjogIjIuMS4xIiwKKyAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAg
ICAgImNsaS1jdXJzb3IiOiAiMS4wLjIiLAorICAgICAgICAiY2xpLXdpZHRoIjogIjIuMi4wIiwK
KyAgICAgICAgImZpZ3VyZXMiOiAiMS43LjAiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIs
CisgICAgICAgICJyZWFkbGluZTIiOiAiMS4wLjEiLAorICAgICAgICAicnVuLWFzeW5jIjogIjAu
MS4wIiwKKyAgICAgICAgInJ4LWxpdGUiOiAiMy4xLjIiLAorICAgICAgICAic3RyaW5nLXdpZHRo
IjogIjEuMC4yIiwKKyAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAidGhy
b3VnaCI6ICIyLjMuOCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAg
ICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8t
L2Fuc2ktc3R5bGVzLTIuMi4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXRE
TGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJjaGFsayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIs
CisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxr
Ly0vY2hhbGstMS4xLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUJGY1Zl
U25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAg
ICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAi
aGFzLWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAor
ICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImNsaS1jdXJzb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjIiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9j
bGktY3Vyc29yLy0vY2xpLWN1cnNvci0xLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1aTm8vZlZhbFJCTGxsNVM5WXR3MUtWNlBLWWM9IiwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicmVzdG9yZS1jdXJz
b3IiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAib25ldGltZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29uZXRpbWUvLS9vbmV0aW1lLTEuMS4wLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW9mZURqNE1VeFJid1hzNzh2RXpQNEV0TzE0
az0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZXN0b3Jl
LWN1cnNvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jlc3RvcmUtY3Vyc29yLy0vcmVz
dG9yZS1jdXJzb3ItMS4wLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTkdZ
ZlJvaGpKLzdTbVJSNUZTSlMzNUxhcFVFPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImV4aXQtaG9vayI6ICIxLjEuMSIsCisg
ICAgICAgICAgICAib25ldGltZSI6ICIxLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIs
CisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBv
cnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtVTEwRVhPYTJOaitrQVJjSVJpbVpYcDN6Sk1jPSIsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQogICAgIH0sCiAgICAgImludGVycHJldCI6IHsK
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKQEAgLTM3NTYsNyArNTA3NSw2IEBACiAgICAgICAi
dmVyc2lvbiI6ICIyLjIuMiIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaW52YXJpYW50Ly0vaW52YXJpYW50LTIuMi4yLnRneiIsCiAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtbmg5V3JBck50cjh3TXdiek9MNDdJRXJtQTJBPSIsCi0gICAgICAiZGV2Ijog
dHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImxvb3NlLWVudmlmeSI6ICIxLjMu
MSIKICAgICAgIH0KQEAgLTM3NjcsNiArNTA4NSwxMiBAQAogICAgICAgImludGVncml0eSI6ICJz
aGExLUVFcU9TcXltMDlqTkZYcU8rTCtyTFhvLy9iWT0iLAogICAgICAgImRldiI6IHRydWUKICAg
ICB9LAorICAgICJpcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcC8tL2lwLTEuMC4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEteCtOV3plb2lXdWNiTnRjUExuR3BLNlRrSlpBPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImlwYWRkci5qcyI6IHsKICAgICAgICJ2ZXJz
aW9uIjogIjEuNC4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9pcGFkZHIuanMvLS9pcGFkZHIuanMtMS40LjAudGd6IiwKQEAgLTM4NjksNiArNTE5Mywx
OCBAQAogICAgICAgICAiaXMtZXh0Z2xvYiI6ICIyLjEuMSIKICAgICAgIH0KICAgICB9LAorICAg
ICJpcy1teS1qc29uLXZhbGlkIjogeworICAgICAgInZlcnNpb24iOiAiMi4xNi4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1teS1qc29uLXZhbGlk
Ly0vaXMtbXktanNvbi12YWxpZC0yLjE2LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
NTEyLW9jaFBzcVdTMVdYajhabk1JVjB2bk5Yb29hTWhwN2N5TDRGTVNJUEtUdG5WMEhhL1QxOUcy
Yjlra2hjTnNhYlY5YnhZa3plNy9hTFpKYi9iWXVGZHVRPT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJnZW5lcmF0ZS1mdW5jdGlvbiI6ICIyLjAu
MCIsCisgICAgICAgICJnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkiOiAiMS4yLjAiLAorICAgICAg
ICAianNvbnBvaW50ZXIiOiAiNC4wLjEiLAorICAgICAgICAieHRlbmQiOiAiNC4wLjEiCisgICAg
ICB9CisgICAgfSwKICAgICAiaXMtbnVtYmVyIjogewogICAgICAgInZlcnNpb24iOiAiMi4xLjAi
LAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLW51bWJl
ci8tL2lzLW51bWJlci0yLjEuMC50Z3oiLApAQCAtMzg3OCw2ICs1MjE0LDMwIEBACiAgICAgICAg
ICJraW5kLW9mIjogIjMuMi4yIgogICAgICAgfQogICAgIH0sCisgICAgImlzLXBhdGgtY3dkIjog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2lzLXBhdGgtY3dkLy0vaXMtcGF0aC1jd2QtMS4wLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0waVhzSXhNdWllM1RqOXAyZEhMbUxtWHhFRzA9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtcGF0aC1pbi1jd2QiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaXMtcGF0aC1pbi1jd2QvLS9pcy1wYXRoLWluLWN3ZC0xLjAuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLVpIZFlLNElVMWdJMFlKUldjQU8raXA2c0JOdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1wYXRo
LWluc2lkZSI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1wYXRoLWluc2lkZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1wYXRoLWluc2lkZS8tL2lzLXBhdGgtaW5zaWRlLTEuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtL0FibG9XZy92YUU5NW1ldjl4ZTd3UXBJ
ODM4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
InBhdGgtaXMtaW5zaWRlIjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCiAgICAgImlzLXBsYWlu
LW9iaiI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1wbGFpbi1vYmovLS9pcy1wbGFpbi1vYmotMS4x
LjAudGd6IiwKQEAgLTM4OTYsNiArNTI1NiwyNyBAQAogICAgICAgImludGVncml0eSI6ICJzaGEx
LUlIdXJrV09FbWNCN0t0OGtDa0dvY2hBRFJYVT0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9
LAorICAgICJpcy1wcm9wZXJ0eSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1wcm9wZXJ0eS8tL2lz
LXByb3BlcnR5LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVi80Y1RraEhU
dDFsc0prUjhtc2MxQWxkMm9RPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlz
LXJlc29sdmFibGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtcmVzb2x2YWJsZS8tL2lzLXJlc29s
dmFibGUtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1qZlY4WWVvdVBGQVVD
TkVBK3dFOCtOYmd6R0k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAidHJ5aXQiOiAiMS4wLjMiCisgICAgICB9CisgICAgfSwKKyAgICAiaXMtc3Ry
ZWFtIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXN0cmVhbS8tL2lzLXN0cmVhbS0xLjEuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLUV0U2ozVTVvNExlYzY0MjhoQmM2NkEyUnlrUT0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJpcy1zdmciOiB7CiAgICAgICAidmVy
c2lvbiI6ICIyLjEuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaXMtc3ZnLy0vaXMtc3ZnLTIuMS4wLnRneiIsCkBAIC0zOTA1LDE4ICs1Mjg2LDQyIEBA
CiAgICAgICAgICJodG1sLWNvbW1lbnQtcmVnZXgiOiAiMS4xLjEiCiAgICAgICB9CiAgICAgfSwK
KyAgICAiaXMtdHlwZWRhcnJheSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy10eXBlZGFycmF5Ly0v
aXMtdHlwZWRhcnJheS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTVIbklD
RmpmREJzUjNkcHBRUGxnRWZ6YVNwbz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAg
ICJpcy11dGY4IjogewogICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAogICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXV0ZjgvLS9pcy11dGY4LTAuMi4xLnRn
eiIsCiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtU3cyaFJDRUUwYk0yTkE2QWVYNkdYUE9mZlhJ
PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgImlzLXdpbmRvd3MiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaXMtd2luZG93cy8tL2lzLXdpbmRvd3MtMS4wLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1NUTIzRDNRdEpab1dvMmtnSzFHdmhDTXpFTms9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtd3NsIjogeworICAgICAgInZlcnNpb24iOiAiMS4x
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXdz
bC8tL2lzLXdzbC0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUh4YmtxaUt3
VFJNMnRtR0lwbXJ6eGdERHBtMD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJp
c2FycmF5IjogewogICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAogICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzYXJyYXkvLS9pc2FycmF5LTAuMC4xLnRneiIs
CiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaWhpcy9LbW85QmQrQ2F2OFlEaVRtd1hSN3Q4PSIs
CiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgImlzZXhlIjogeworICAgICAgInZlcnNp
b24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzZXhlLy0vaXNleGUtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS02
UHZ6ZE54VmIvaVVlaERjc0ZjdFl6OHMraEE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
ICAgICAiaXNvYmplY3QiOiB7CiAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCiAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNvYmplY3QvLS9pc29iamVjdC0y
LjEuMC50Z3oiLApAQCAtMzkzNCwyOSArNTMzOSwyMiBAQAogICAgICAgICB9CiAgICAgICB9CiAg
ICAgfSwKKyAgICAiaXNzdHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMiIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNzdHJlYW0vLS9pc3N0
cmVhbS0wLjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVIrWS9ldlZhK20rUzRW
QU9hUTY0dUZLY0Nabz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJqcy1iYXNl
NjQiOiB7CiAgICAgICAidmVyc2lvbiI6ICIyLjEuOSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanMtYmFzZTY0Ly0vanMtYmFzZTY0LTIuMS45LnRneiIs
CiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOE9nSzREbWt2V1ZMWHlnZnlUOEVxUlNuL000PSIs
CiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCi0gICAgImpzLWJlYXV0aWZ5IjogewotICAgICAg
InZlcnNpb24iOiAiMS42LjE0IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9qcy1iZWF1dGlmeS8tL2pzLWJlYXV0aWZ5LTEuNi4xNC50Z3oiLAotICAgICAg
ImludGVncml0eSI6ICJzaGExLTA3ajNNaTBDdVNkOVdMMGpnbVRESitXQVJNMD0iLAotICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJjb25maWctY2hhaW4i
OiAiMS4xLjExIiwKLSAgICAgICAgImVkaXRvcmNvbmZpZyI6ICIwLjEzLjMiLAotICAgICAgICAi
bWtkaXJwIjogIjAuNS4xIiwKLSAgICAgICAgIm5vcHQiOiAiMy4wLjYiCi0gICAgICB9Ci0gICAg
fSwKICAgICAianMtdG9rZW5zIjogewogICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAogICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzLXRva2Vucy8tL2pzLXRv
a2Vucy0zLjAuMi50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLW1HYmZPVkVDRXc0NDkv
bVd2T3RsUkRJSndscz0iLAotICAgICAgImRldiI6IHRydWUKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1tR2JmT1ZFQ0V3NDQ5L21Xdk90bFJESUp3bHM9IgogICAgIH0sCiAgICAgImpzLXlhbWwi
OiB7CiAgICAgICAidmVyc2lvbiI6ICIzLjcuMCIsCkBAIC0zOTY4LDYgKzUzNjYsMTMgQEAKICAg
ICAgICAgImVzcHJpbWEiOiAiMi43LjMiCiAgICAgICB9CiAgICAgfSwKKyAgICAianNibiI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9qc2JuLy0vanNibi0wLjEuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXBlWlV3dVdpM3JYeUFkbHM3N3lvREE3eTlSTT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKICAgICAianNlc2MiOiB7CiAgICAg
ICAidmVyc2lvbiI6ICIxLjMuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvanNlc2MvLS9qc2VzYy0xLjMuMC50Z3oiLApAQCAtMzk4MCw2ICs1Mzg1LDEy
IEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1RTFBzOERqN2xuZjNlM1FZUzF6a0NvKzRa
d3FPaUY5ZC9uWm5Zb3pUSVN4WFdDZk5zOXl1a3k1ckp3NC9XMzRzN1BPYU5sYlptUUdhQjVOaVhD
YlA0dz09IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAianNvbi1zY2hlbWEiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjIuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvanNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS0wLjIuMy50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXRJRElrdVdhTHdXVlRPY252VDhxVG9ndm5oTT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJqc29uLXNjaGVtYS10cmF2ZXJzZSI6IHsK
ICAgICAgICJ2ZXJzaW9uIjogIjAuMy4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9qc29uLXNjaGVtYS10cmF2ZXJzZS8tL2pzb24tc2NoZW1hLXRyYXZl
cnNlLTAuMy4xLnRneiIsCkBAIC0zOTk1LDYgKzU0MDYsMTggQEAKICAgICAgICAgImpzb25pZnki
OiAiMC4wLjAiCiAgICAgICB9CiAgICAgfSwKKyAgICAianNvbi1zdHJpbmdpZnktc2FmZSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjUuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9qc29uLXN0cmluZ2lmeS1zYWZlLy0vanNvbi1zdHJpbmdpZnktc2Fm
ZS01LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUVwYWkxWS9VWHhtZzlzNEIx
bGNCNHNjMXR1cz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJqc29uMyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjMuMy4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9qc29uMy8tL2pzb24zLTMuMy4yLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtUEFRMGREMzVQaTljUXE3bnNadkxTRFYxOU9FPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCiAgICAgImpzb241IjogewogICAgICAgInZlcnNpb24iOiAiMC41LjEiLAog
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb241Ly0vanNv
bjUtMC41LjEudGd6IiwKQEAgLTQwMTYsNiArNTQzOSwzMCBAQAogICAgICAgImludGVncml0eSI6
ICJzaGExLUxIUzI3a0haUEtVYmUxcXU2UFVEWXgwbEtuTT0iLAogICAgICAgImRldiI6IHRydWUK
ICAgICB9LAorICAgICJqc29ucG9pbnRlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc29ucG9pbnRl
ci8tL2pzb25wb2ludGVyLTQuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVDlr
c3MwNE9uYlBJbklZaTdQVWZtNWVNYkxrPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgImpzcHJpbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNC4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc3ByaW0vLS9qc3ByaW0tMS40LjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NVDVtdkI1Y3dHNURpOEczU1p3dVhGYXN0cUk9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXNz
ZXJ0LXBsdXMiOiAiMS4wLjAiLAorICAgICAgICAiZXh0c3ByaW50ZiI6ICIxLjMuMCIsCisgICAg
ICAgICJqc29uLXNjaGVtYSI6ICIwLjIuMyIsCisgICAgICAgICJ2ZXJyb3IiOiAiMS4xMC4wIgor
ICAgICAgfQorICAgIH0sCisgICAgImtldyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNy4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9rZXcvLS9rZXct
MC43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lZGs5TFRNMlBXL2RLWEN6TmRr
VUd0V1IxNXM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAia2luZC1vZiI6IHsK
ICAgICAgICJ2ZXJzaW9uIjogIjMuMi4yIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9raW5kLW9mLy0va2luZC1vZi0zLjIuMi50Z3oiLApAQCAtNDA0OSw2
ICs1NDk2LDE2IEBACiAgICAgICAgICJpbnZlcnQta3YiOiAiMS4wLjAiCiAgICAgICB9CiAgICAg
fSwKKyAgICAibGV2biI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sZXZuLy0vbGV2bi0wLjMuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLU93bVNUdCtmQ0R3RWtQM1V3THhFSWVCSFpPND0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwcmVs
dWRlLWxzIjogIjEuMS4yIiwKKyAgICAgICAgInR5cGUtY2hlY2siOiAiMC4zLjIiCisgICAgICB9
CisgICAgfSwKICAgICAibG9hZC1qc29uLWZpbGUiOiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjEu
MCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9hZC1q
c29uLWZpbGUvLS9sb2FkLWpzb24tZmlsZS0xLjEuMC50Z3oiLApAQCAtNDA2Miw2ICs1NTE5LDM4
IEBACiAgICAgICAgICJzdHJpcC1ib20iOiAiMi4wLjAiCiAgICAgICB9CiAgICAgfSwKKyAgICAi
bG9hZGVyLWZzLWNhY2hlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvYWRlci1mcy1jYWNoZS8tL2xv
YWRlci1mcy1jYWNoZS0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVZ1Qy9D
TDJYQ0xKcWRsdG9VSmhBeU43Si9idz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJmaW5kLWNhY2hlLWRpciI6ICIwLjEuMSIsCisgICAgICAgICJt
a2RpcnAiOiAiMC41LjEiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgImZpbmQtY2FjaGUtZGlyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmluZC1jYWNo
ZS1kaXIvLS9maW5kLWNhY2hlLWRpci0wLjEuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS15Tjc2NVh5S1VxaW5oUG5qSEZmSFF1bVRvTGs9IiwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY29tbW9uZGlyIjog
IjEuMC4xIiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgInBr
Zy1kaXIiOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicGtnLWRp
ciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BrZy1kaXIvLS9wa2ctZGlyLTEuMC4wLnRn
eiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWVrdFFpbzFic3RZcDFFY0ZiL1RweVRG
TTg5UT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJmaW5kLXVwIjogIjEuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0sCiAgICAgImxvYWRlci1ydW5uZXIiOiB7CiAgICAgICAidmVyc2lvbiI6
ICIyLjMuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
bG9hZGVyLXJ1bm5lci8tL2xvYWRlci1ydW5uZXItMi4zLjAudGd6IiwKQEAgLTQwODAsMTAgKzU1
NjksMTA1IEBACiAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIgogICAgICAgfQogICAg
IH0sCisgICAgImxvY2F0ZS1wYXRoIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvY2F0ZS1wYXRoLy0v
bG9jYXRlLXBhdGgtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1LMWFMSmw3
c2xFeHRuQTNwdzl1N3lnTlV6WTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAicC1sb2NhdGUiOiAiMi4wLjAiLAorICAgICAgICAicGF0aC1leGlz
dHMiOiAiMy4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
InBhdGgtZXhpc3RzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGF0aC1leGlzdHMvLS9w
YXRoLWV4aXN0cy0zLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16ZzYr
cWw5NHl4aVNYcWZZRU5lMW13RVAxUlU9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9CisgICAgICB9CisgICAgfSwKICAgICAibG9kYXNoIjogewogICAgICAgInZlcnNpb24iOiAi
NC4xNy40IiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9s
b2Rhc2gvLS9sb2Rhc2gtNC4xNy40LnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtZUNB
NlRSd3lpdUhZYmNwa1lPTnB0WDlBVmE0PSIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZUNB
NlRSd3lpdUhZYmNwa1lPTnB0WDlBVmE0PSIKKyAgICB9LAorICAgICJsb2Rhc2guX2FycmF5Y29w
eSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guX2FycmF5Y29weS8tL2xvZGFzaC5fYXJyYXlj
b3B5LTMuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZHVlM3dmSDdrbFJ6ZEll
S1ZpN1FhajVROXVFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5f
YXJyYXllYWNoIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5fYXJyYXllYWNoLy0vbG9kYXNo
Ll9hcnJheWVhY2gtMy4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11ckZXc3Fr
TlB4dTlYR1UwQXpTZVhsa3o3NTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
bG9kYXNoLl9iYXNlYXNzaWduIjogeworICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5fYmFzZWFzc2ln
bi8tL2xvZGFzaC5fYmFzZWFzc2lnbi0zLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLWpEaWdtVkFQSVZyUW5sbnhjaS9ReFN2K0NrND0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJsb2Rhc2guX2Jhc2Vjb3B5IjogIjMuMC4xIiwK
KyAgICAgICAgImxvZGFzaC5rZXlzIjogIjMuMS4yIgorICAgICAgfQorICAgIH0sCisgICAgImxv
ZGFzaC5fYmFzZWNsb25lIjogeworICAgICAgInZlcnNpb24iOiAiMy4zLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5fYmFzZWNsb25lLy0v
bG9kYXNoLl9iYXNlY2xvbmUtMy4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1N
RFVadjJPVC9uNUM4MDJMWXc3M2VVNDFRcmM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAibG9kYXNoLl9hcnJheWNvcHkiOiAiMy4wLjAiLAorICAg
ICAgICAibG9kYXNoLl9hcnJheWVhY2giOiAiMy4wLjAiLAorICAgICAgICAibG9kYXNoLl9iYXNl
YXNzaWduIjogIjMuMi4wIiwKKyAgICAgICAgImxvZGFzaC5fYmFzZWZvciI6ICIzLjAuMyIsCisg
ICAgICAgICJsb2Rhc2guaXNhcnJheSI6ICIzLjAuNCIsCisgICAgICAgICJsb2Rhc2gua2V5cyI6
ICIzLjEuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJsb2Rhc2guX2Jhc2Vjb3B5IjogeworICAg
ICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2xvZGFzaC5fYmFzZWNvcHkvLS9sb2Rhc2guX2Jhc2Vjb3B5LTMuMC4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtamFEbXFIYlBORXdLMktWSWdoRWQwOFhIeWpZ
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5fYmFzZWNyZWF0ZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guX2Jhc2VjcmVhdGUvLS9sb2Rhc2guX2Jhc2VjcmVh
dGUtMy4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HOFpoWVUycWY4TVJ0OUE3
OFdnR29DRTgrQ0U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLl9i
YXNlZm9yIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjMiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5fYmFzZWZvci8tL2xvZGFzaC5fYmFz
ZWZvci0zLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWRWQzA2U0dPOEordEpE
UTdZU0FoeDV0TUlNST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2gu
X2JpbmRjYWxsYmFjayI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guX2JpbmRjYWxsYmFjay8t
L2xvZGFzaC5fYmluZGNhbGxiYWNrLTMuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtNVRIQ2RrVFBpMWVwbmhmdGxiTmNkSWVKT1M0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImxvZGFzaC5fZ2V0bmF0aXZlIjogeworICAgICAgInZlcnNpb24iOiAiMy45LjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5f
Z2V0bmF0aXZlLy0vbG9kYXNoLl9nZXRuYXRpdmUtMy45LjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1Wd3ZIM3Q1RzFoemMzbWg5WmRQdXk2bzZyL1U9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAibG9kYXNoLl9pc2l0ZXJhdGVlY2FsbCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjMuMC45IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9sb2Rhc2guX2lzaXRlcmF0ZWVjYWxsLy0vbG9kYXNoLl9pc2l0ZXJhdGVlY2FsbC0zLjAu
OS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVVnT3RlNlFsK3VoQ1JnNXBiYm5QUG1x
c0JYdz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2guX3N0YWNrIjog
eworICAgICAgInZlcnNpb24iOiAiNC4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5fc3RhY2svLS9sb2Rhc2guX3N0YWNrLTQuMS4zLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZFJxbmJCdVdTd1IrZHRGUHh5b0pQOHRlTGRB
PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgImxvZGFzaC5jYW1lbGNhc2UiOiB7
CkBAIC00MDkyLDEyICs1Njc2LDEwMyBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLXNvcW1L
SW9ybjhaUkExeDNFZlphdGhrRE1hWT0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAg
ICJsb2Rhc2guY2xvbmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmNsb25lLy0vbG9kYXNo
LmNsb25lLTMuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaEdpTWM5TXJXcERL
SldGcFkvR0pKU3FaY0VNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImxvZGFzaC5fYmFzZWNsb25lIjogIjMuMy4wIiwKKyAgICAgICAgImxvZGFz
aC5fYmluZGNhbGxiYWNrIjogIjMuMC4xIiwKKyAgICAgICAgImxvZGFzaC5faXNpdGVyYXRlZWNh
bGwiOiAiMy4wLjkiCisgICAgICB9CisgICAgfSwKKyAgICAibG9kYXNoLmNyZWF0ZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjMuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9sb2Rhc2guY3JlYXRlLy0vbG9kYXNoLmNyZWF0ZS0zLjEuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTEvS0VudzI5cCtCR2dydU0xeXF3SWtZZDYrYz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJsb2Rhc2gu
X2Jhc2Vhc3NpZ24iOiAiMy4yLjAiLAorICAgICAgICAibG9kYXNoLl9iYXNlY3JlYXRlIjogIjMu
MC4zIiwKKyAgICAgICAgImxvZGFzaC5faXNpdGVyYXRlZWNhbGwiOiAiMy4wLjkiCisgICAgICB9
CisgICAgfSwKKyAgICAibG9kYXNoLmRlZmF1bHRzZGVlcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjQuMy4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9s
b2Rhc2guZGVmYXVsdHNkZWVwLy0vbG9kYXNoLmRlZmF1bHRzZGVlcC00LjMuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLWJCcFlibXhXUjdEbVRpMTVnVUc0ZzJGWXZvbz0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJsb2Rhc2guX2Jh
c2VjbG9uZSI6ICI0LjUuNyIsCisgICAgICAgICJsb2Rhc2guX3N0YWNrIjogIjQuMS4zIiwKKyAg
ICAgICAgImxvZGFzaC5pc3BsYWlub2JqZWN0IjogIjQuMC42IiwKKyAgICAgICAgImxvZGFzaC5r
ZXlzaW4iOiAiNC4yLjAiLAorICAgICAgICAibG9kYXNoLm1lcmdld2l0aCI6ICI0LjYuMCIsCisg
ICAgICAgICJsb2Rhc2gucmVzdCI6ICI0LjAuNSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAibG9kYXNoLl9iYXNlY2xvbmUiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiNC41LjciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9sb2Rhc2guX2Jhc2VjbG9uZS8tL2xvZGFzaC5fYmFzZWNsb25lLTQuNS43LnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXprS3Q0SU9FNzExaStuZkREMkdrYm1odmhE
UT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAor
ICAgICJsb2Rhc2guaXNhcmd1bWVudHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjEuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmlzYXJn
dW1lbnRzLy0vbG9kYXNoLmlzYXJndW1lbnRzLTMuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtTDFjOWhjYWlRb24vQUdZN1NSd2RNNC96UllvPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImxvZGFzaC5pc2FycmF5IjogeworICAgICAgInZlcnNpb24iOiAiMy4w
LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFz
aC5pc2FycmF5Ly0vbG9kYXNoLmlzYXJyYXktMy4wLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1lZVRyaU1OcWdTS3ZodmhFcXB2TmhSdGZ1MVU9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAibG9kYXNoLmlzcGxhaW5vYmplY3QiOiB7CisgICAgICAidmVyc2lvbiI6
ICI0LjAuNiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
bG9kYXNoLmlzcGxhaW5vYmplY3QvLS9sb2Rhc2guaXNwbGFpbm9iamVjdC00LjAuNi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLWZGSnFVdGliUmNSY3hwQzRnV08rQkpmMVVNcz0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2gua2V5cyI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjMuMS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9sb2Rhc2gua2V5cy8tL2xvZGFzaC5rZXlzLTMuMS4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtVGJ3RWNyRld2bENnc29hRlhSdlFzTVpXQ1lvPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImxvZGFzaC5fZ2V0bmF0aXZl
IjogIjMuOS4xIiwKKyAgICAgICAgImxvZGFzaC5pc2FyZ3VtZW50cyI6ICIzLjEuMCIsCisgICAg
ICAgICJsb2Rhc2guaXNhcnJheSI6ICIzLjAuNCIKKyAgICAgIH0KKyAgICB9LAorICAgICJsb2Rh
c2gua2V5c2luIjogeworICAgICAgInZlcnNpb24iOiAiNC4yLjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5rZXlzaW4vLS9sb2Rhc2gua2V5
c2luLTQuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtak1QN05jTFpTc3hFT2ho
ajRDK2tCNW5xYnlnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImxvZGFzaC5t
ZW1vaXplIjogewogICAgICAgInZlcnNpb24iOiAiNC4xLjIiLAogICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5tZW1vaXplLy0vbG9kYXNoLm1lbW9p
emUtNC4xLjIudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS12TWJFbWtLaWhBN1psL01q
NnRwZXpSZ3VDLzQ9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAibG9kYXNoLm1l
cmdld2l0aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gubWVyZ2V3aXRoLy0vbG9kYXNoLm1l
cmdld2l0aC00LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUZRendvV2VSOVpB
N2lKSHFzVlJna25TOTZsVT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rh
c2gucmVzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gucmVzdC8tL2xvZGFzaC5yZXN0LTQu
MC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbFU3M1VFa21JRGpKYlIvSml5ajly
NThIY3FvPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgImxvZGFzaC51bmlxIjog
ewogICAgICAgInZlcnNpb24iOiAiNC41LjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC51bmlxLy0vbG9kYXNoLnVuaXEtNC41LjAudGd6IiwK
QEAgLTQxMTEsNiArNTc4NiwzMyBAQAogICAgICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWly
ZXMiOiB7CiAgICAgICAgICJjaGFsayI6ICIxLjEuMyIKKyAgICAgIH0sCisgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjaGFsayI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFuc2ktc3R5
bGVzIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAu
NSIsCisgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAgICAgInN0cmlw
LWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAu
MC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VMTBFWE9hMk5qK2tBUmNJUmlt
WlhwM3pKTWM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CiAgICAgICB9CiAg
ICAgfSwKICAgICAibG9uZ2VzdCI6IHsKQEAgLTQxMjMsNyArNTgyNSw2IEBACiAgICAgICAidmVy
c2lvbiI6ICIxLjMuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbG9vc2UtZW52aWZ5Ly0vbG9vc2UtZW52aWZ5LTEuMy4xLnRneiIsCiAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtMGFpdE0vcWM0T2NUMWwvZENzaTNTTlI0eUVnPSIsCi0gICAgICAiZGV2
IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKICAgICAgICAgImpzLXRva2VucyI6ICIzLjAu
MiIKICAgICAgIH0KQEAgLTQxNTAsNiArNTg1MSwxNSBAQAogICAgICAgImludGVncml0eSI6ICJz
aGExLVdRVGNVM3c1N0cyKy9xNlFJeWNUWDZoUkh4ST0iLAogICAgICAgImRldiI6IHRydWUKICAg
ICB9LAorICAgICJtYWtlLWRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tYWtlLWRpci8tL21ha2Ut
ZGlyLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbDZBUmRSNlIzWWZQcmU5
WWd5NjdCSk50NlhnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgInBpZnkiOiAiMi4zLjAiCisgICAgICB9CisgICAgfSwKICAgICAibWF0aC1leHBy
ZXNzaW9uLWV2YWx1YXRvciI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xNyIsCiAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWF0aC1leHByZXNzaW9uLWV2
YWx1YXRvci8tL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3ItMS4yLjE3LnRneiIsCkBAIC00MzI3
LDEwICs2MDM3LDg5IEBACiAgICAgICAgICJtaW5pbWlzdCI6ICIwLjAuOCIKICAgICAgIH0KICAg
ICB9LAorICAgICJta3BhdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWtwYXRoLy0vbWtwYXRoLTEu
MC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNjdPcGQrZXZIR2c2NXYyaEsxUmFh
NmJGaFQwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1vY2hhLW5pZ2h0d2F0
Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjIuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbW9jaGEtbmlnaHR3YXRjaC8tL21vY2hhLW5pZ2h0d2F0
Y2gtMy4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1rYnk1czczZ1Y5MTJkOGVC
SmVTUjVZMW1aSHc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiYnJvd3Nlci1zdGRvdXQiOiAiMS4zLjAiLAorICAgICAgICAiY29tbWFuZGVyIjog
IjIuOS4wIiwKKyAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAgICAgImRpZmYiOiAiMS40
LjAiLAorICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAorICAgICAgICAi
Z2xvYiI6ICI3LjAuNSIsCisgICAgICAgICJncm93bCI6ICIxLjkuMiIsCisgICAgICAgICJqc29u
MyI6ICIzLjMuMiIsCisgICAgICAgICJsb2Rhc2guY3JlYXRlIjogIjMuMS4xIiwKKyAgICAgICAg
Im1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjEuMiIKKyAg
ICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiY29tbWFuZGVyIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuOS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29tbWFuZGVyLy0vY29tbWFuZGVyLTIuOS4wLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW5Ka0pRWGJoSWtETEl0YkZGR0NZUUEvZzk5
UT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJncmFjZWZ1bC1yZWFkbGluayI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJkZWJ1ZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMCIs
CisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlYnVn
Ly0vZGVidWctMi4yLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK0hCWDZa
V3hvZmF1YWtsZ1prRTN2RmJ3T2RvPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm1zIjogIjAuNy4xIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImdsb2IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNy4w
LjUiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9n
bG9iLy0vZ2xvYi03LjAuNS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10Q0Fx
YVFtYnUwMHBLbndibGJab0syZnIzSlU9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZnMucmVhbHBhdGgiOiAiMS4wLjAiLAor
ICAgICAgICAgICAgImluZmxpZ2h0IjogIjEuMC42IiwKKyAgICAgICAgICAgICJpbmhlcml0cyI6
ICIyLjAuMyIsCisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC40IiwKKyAgICAgICAgICAg
ICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1zIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuNy4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvbXMvLS9tcy0wLjcuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1uTkU4QTYyLzhsdGw3LzNuem9aTzZWSUJjSmc9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMy4xLjIiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMS4yLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLWNxSmlpVTJkUUl1VmJLQmY4M3N1MktiaW90VT0i
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9LAogICAgICJtcyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKICAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tcy8tL21zLTIuMC4wLnRn
eiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtVmdpdXJmd0F2bXdwQWQ5Zm1HRjRqZURWbDhn
PSIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVmdpdXJmd0F2bXdwQWQ5Zm1HRjRqZURWbDhn
PSIKKyAgICB9LAorICAgICJtdXRlLXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC41
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tdXRlLXN0
cmVhbS8tL211dGUtc3RyZWFtLTAuMC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
ajcrcnNLbUtKVDB4aERNZm5vM3JjM0w2eHNBPSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0s
CiAgICAgIm5hbiI6IHsKQEAgLTQzNDAsNiArNjEyOSwxMiBAQAogICAgICAgImRldiI6IHRydWUs
CiAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgfSwKKyAgICAibmF0dXJhbC1jb21wYXJlIjog
eworICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL25hdHVyYWwtY29tcGFyZS8tL25hdHVyYWwtY29tcGFyZS0xLjQu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVNyNi83dGRVSHl3bnJQc3B2YnZSWEkx
YnBQYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJuY25hbWUiOiB7CiAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvbmNuYW1lLy0vbmNuYW1lLTEuMC4wLnRneiIsCkBAIC00MzU1LDYgKzYxNTAs
NTMgQEAKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Lekp4aE9pWklRRVhleWhXUDdYbkVDck5E
S2s9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAibmV0bWFzayI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMC42IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9uZXRtYXNrLy0vbmV0bWFzay0xLjAuNi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUlDbCtpZGh2YjJRQThsRFo5UGEwd1pSZnpUVT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJuaWdodHdhdGNoIjogeworICAgICAgInZlcnNpb24iOiAiMC45LjE2
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9uaWdodHdh
dGNoLy0vbmlnaHR3YXRjaC0wLjkuMTYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14
S3creHhHdy93UjhQY3FjWlZjMlh1STJVWjg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiY2hhaS1uaWdodHdhdGNoIjogIjAuMS4xIiwKKyAgICAg
ICAgImVqcyI6ICIwLjguMyIsCisgICAgICAgICJsb2Rhc2guY2xvbmUiOiAiMy4wLjMiLAorICAg
ICAgICAibG9kYXNoLmRlZmF1bHRzZGVlcCI6ICI0LjMuMiIsCisgICAgICAgICJtaW5pbWF0Y2gi
OiAiMy4wLjMiLAorICAgICAgICAibWtwYXRoIjogIjEuMC4wIiwKKyAgICAgICAgIm1vY2hhLW5p
Z2h0d2F0Y2giOiAiMy4yLjIiLAorICAgICAgICAib3B0aW1pc3QiOiAiMC42LjEiLAorICAgICAg
ICAicHJveHktYWdlbnQiOiAiMi4wLjAiLAorICAgICAgICAicSI6ICIxLjQuMSIKKyAgICAgIH0s
CisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZWpzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuOC4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZWpzLy0vZWpzLTAuOC4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLTI0cXNSLytBcDkrQ3RNZ3NFbS9vbHdod1ltOD0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJtaW5pbWF0Y2giOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMy4wLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9taW5pbWF0Y2gvLS9taW5pbWF0Y2gtMy4wLjMudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtS2s1QWtMbHJMYkJxblgzd0VGV21LbmZKdDNRPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJyYWNl
LWV4cGFuc2lvbiI6ICIxLjEuOCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJx
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcS8tL3EtMS40LjEudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtVlhCYnpaUEY4MmMxTU1MQ3k4RENzNjNjS0c0PSIsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCiAgICAgIm5vLWNh
c2UiOiB7CiAgICAgICAidmVyc2lvbiI6ICIyLjMuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm8tY2FzZS8tL25vLWNhc2UtMi4zLjEudGd6IiwKQEAg
LTQ0MzgsMTUgKzYyODAsNiBAQAogICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKLSAgICAibm9w
dCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjMuMC42IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub3B0Ly0vbm9wdC0zLjAuNi50Z3oiLAotICAgICAgImlu
dGVncml0eSI6ICJzaGExLXhrWmR2d2lyelUyeldURi9lYXhvcGtheWovaz0iLAotICAgICAgImRl
diI6IHRydWUsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJhYmJyZXYiOiAiMS4xLjAi
Ci0gICAgICB9Ci0gICAgfSwKICAgICAibm9ybWFsaXplLXBhY2thZ2UtZGF0YSI6IHsKICAgICAg
ICJ2ZXJzaW9uIjogIjIuNC4wIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9ub3JtYWxpemUtcGFja2FnZS1kYXRhLy0vbm9ybWFsaXplLXBhY2thZ2UtZGF0
YS0yLjQuMC50Z3oiLApAQCAtNDUwNywxMiArNjM0MCwyNCBAQAogICAgICAgImludGVncml0eSI6
ICJzaGExLUNYdGdLMU5DS2xJc0d2dUhrREdETnBRYUFSMD0iLAogICAgICAgImRldiI6IHRydWUK
ICAgICB9LAorICAgICJvYXV0aC1zaWduIjogeworICAgICAgInZlcnNpb24iOiAiMC44LjIiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29hdXRoLXNpZ24v
LS9vYXV0aC1zaWduLTAuOC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUnFhcmZ3
cnEyTjZ1bnNCV1Y0QzMxTy9yblVNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAg
Im9iamVjdC1hc3NpZ24iOiB7CiAgICAgICAidmVyc2lvbiI6ICI0LjEuMSIsCiAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWFzc2lnbi8tL29iamVj
dC1hc3NpZ24tNC4xLjEudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JUW10eDVaWWg4
L0FYTHZVUXNySXY3czJDR009IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAib2Jq
ZWN0LWhhc2giOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuOCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWhhc2gvLS9vYmplY3QtaGFzaC0x
LjEuOC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUtLWlp6NWg5bHFUYXZuaGdLSjg3
VXliRW9Edz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJvYmplY3Qub21pdCI6
IHsKICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3Qub21pdC8tL29iamVjdC5vbWl0LTIuMC4xLnRneiIs
CkBAIC00NTU3LDIyICs2NDAyLDMwIEBACiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAg
Im9wbiI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuMC4yIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcG4vLS9vcG4tNC4wLjIudGd6IiwKLSAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1lcndpNWtUZjlqc0tsdFdyZnllUXdQQWF2SlU9IiwKKyAgICAgICJ2
ZXJzaW9uIjogIjUuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9vcG4vLS9vcG4tNS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEy
LWlQTmw3U3lNOEwzMFJtMXNqR2RMTGhleUhWdzVZWFZmaTNTS1dKekJJN2VmeFJ3SG9qZlJGandF
L09MTTZxcDl4SllNZ2FiOFdpY1RVMWNQb1krSHBnPT0iLAogICAgICAgImRldiI6IHRydWUsCiAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKLSAg
ICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAgICAiaXMtd3NsIjogIjEuMS4w
IgorICAgICAgfQorICAgIH0sCisgICAgIm9wdGltaXN0IjogeworICAgICAgInZlcnNpb24iOiAi
MC42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29w
dGltaXN0Ly0vb3B0aW1pc3QtMC42LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0y
ajZuUm9iNklhR2FFUnd5YnBEckZhQVpab1k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAibWluaW1pc3QiOiAiMC4wLjgiLAorICAgICAgICAid29y
ZHdyYXAiOiAiMC4wLjIiCiAgICAgICB9CiAgICAgfSwKICAgICAib3B0aW1pemUtY3NzLWFzc2V0
cy13ZWJwYWNrLXBsdWdpbiI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMy4yIiwKLSAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcHRpbWl6ZS1jc3MtYXNzZXRz
LXdlYnBhY2stcGx1Z2luLy0vb3B0aW1pemUtY3NzLWFzc2V0cy13ZWJwYWNrLXBsdWdpbi0xLjMu
Mi50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLTZ5ZEZiaUh1KzlnSUR6SG9Ob3haYUU1
WVdpdz0iLAorICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29wdGltaXplLWNzcy1hc3NldHMtd2VicGFjay1wbHVn
aW4vLS9vcHRpbWl6ZS1jc3MtYXNzZXRzLXdlYnBhY2stcGx1Z2luLTIuMC4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtVWNybkVqRHNrYVRCVjJTWEZlUjBtT0RMUmdzPSIsCiAgICAg
ICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImNzc25hbm8iOiAi
My4xMC4wIiwKICAgICAgICAgInVuZGVyc2NvcmUiOiAiMS44LjMiLAogICAgICAgICAid2VicGFj
ay1zb3VyY2VzIjogIjAuMS41IgogICAgICAgfSwKQEAgLTQ1ODksNiArNjQ0MiwyOCBAQAogICAg
ICAgICB9CiAgICAgICB9CiAgICAgfSwKKyAgICAib3B0aW9uYXRvciI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjAuOC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9vcHRpb25hdG9yLy0vb3B0aW9uYXRvci0wLjguMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLU5reGVRSjAvVFdNQjFzQzB3RnU2VUJnSzYyUT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkZWVwLWlzIjogIjAuMS4zIiwKKyAg
ICAgICAgImZhc3QtbGV2ZW5zaHRlaW4iOiAiMi4wLjYiLAorICAgICAgICAibGV2biI6ICIwLjMu
MCIsCisgICAgICAgICJwcmVsdWRlLWxzIjogIjEuMS4yIiwKKyAgICAgICAgInR5cGUtY2hlY2si
OiAiMC4zLjIiLAorICAgICAgICAid29yZHdyYXAiOiAiMS4wLjAiCisgICAgICB9LAorICAgICAg
ImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgIndvcmR3cmFwIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvd29yZHdyYXAvLS93b3Jkd3JhcC0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1KMWhJRUlrVVZxUVhISTBDSmtRYTNwREx5dXM9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKICAgICAib3JhIjogewogICAg
ICAgInZlcnNpb24iOiAiMS4zLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL29yYS8tL29yYS0xLjMuMC50Z3oiLApAQCAtNDU5OSw2ICs2NDc0LDMzIEBA
CiAgICAgICAgICJjbGktY3Vyc29yIjogIjIuMS4wIiwKICAgICAgICAgImNsaS1zcGlubmVycyI6
ICIxLjAuMCIsCiAgICAgICAgICJsb2ctc3ltYm9scyI6ICIxLjAuMiIKKyAgICAgIH0sCisgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjaGFsayI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4
cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAg
ICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjog
IjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9y
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1j
b2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VMTBFWE9hMk5q
K2tBUmNJUmltWlhwM3pKTWM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CiAg
ICAgICB9CiAgICAgfSwKICAgICAib3MtYnJvd3NlcmlmeSI6IHsKQEAgLTQ2MjgsNiArNjUzMCw1
OSBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLXUrWjBCc2VhcUZ4Yy9zZG0vbGMwVlYzNkVu
UT0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJwLWxpbWl0IjogeworICAgICAg
InZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3AtbGltaXQvLS9wLWxpbWl0LTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtc0gveTJhWFlpK3lBWURXSldpdXJacUo1aUx3PSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgInAtbG9jYXRlIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3AtbG9jYXRlLy0v
cC1sb2NhdGUtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JS0FRT3lJcWNN
ajlPY3d1V0FhQTg5M2w3RU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAicC1saW1pdCI6ICIxLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJw
YWMtcHJveHktYWdlbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFjLXByb3h5LWFnZW50Ly0vcGFj
LXByb3h5LWFnZW50LTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1RQkVM
Q1d5TFlQZ0UyR2orNHdVRWlNc2NIclE4blJQQnpZSXRRTk9IV2F2d0J0MjVvaFpIUUM0cW5kNUlz
emRWVnJGYkxzUStkUGttNmVxZGpKQW13UT09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiYWdlbnQtYmFzZSI6ICIyLjEuMSIsCisgICAgICAgICJk
ZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAgICJleHRlbmQiOiAiMy4wLjEiLAorICAgICAgICAiZ2V0
LXVyaSI6ICIyLjAuMSIsCisgICAgICAgICJodHRwLXByb3h5LWFnZW50IjogIjEuMC4wIiwKKyAg
ICAgICAgImh0dHBzLXByb3h5LWFnZW50IjogIjEuMC4wIiwKKyAgICAgICAgInBhYy1yZXNvbHZl
ciI6ICIyLjAuMCIsCisgICAgICAgICJyYXctYm9keSI6ICIyLjMuMiIsCisgICAgICAgICJzb2Nr
cy1wcm94eS1hZ2VudCI6ICIyLjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJwYWMtcmVzb2x2
ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFjLXJlc29sdmVyLy0vcGFjLXJlc29sdmVyLTIuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbWJpTkx4ay92ZTc4SEpwU25COHlZS3RT
ZDgwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ImNvIjogIjMuMC42IiwKKyAgICAgICAgImRlZ2VuZXJhdG9yIjogIjEuMC40IiwKKyAgICAgICAg
ImlwIjogIjEuMC4xIiwKKyAgICAgICAgIm5ldG1hc2siOiAiMS4wLjYiLAorICAgICAgICAidGh1
bmtpZnkiOiAiMi4xLjIiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgImNvIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC42IiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY28vLS9jby0zLjAuNi50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GRVh5SnNYcmxXRTQ1b3lhd3dGbjZuMHVhOW89
IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKICAg
ICAicGFrbyI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjAuMi45IiwKICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYWtvLy0vcGFrby0wLjIuOS50Z3oiLApAQCAt
NDcyMSw2ICs2Njc2LDEyIEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRjB1U2FITlZOUCs4
ZXM1cjlUcGFuaHRjWDE4PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgInBhdGgt
aXMtaW5zaWRlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhdGgtaXMtaW5zaWRlLy0vcGF0aC1pcy1p
bnNpZGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ObFFYM3Q1RVF3MGNF
YTloQW4rczhIUzkvRk09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAicGF0aC1w
YXJzZSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLXBhcnNlLy0vcGF0aC1wYXJzZS0xLjAuNS50
Z3oiLApAQCAtNDc1Nyw2ICs2NzE4LDIwNCBAQAogICAgICAgICAic2hhLmpzIjogIjIuNC44Igog
ICAgICAgfQogICAgIH0sCisgICAgInBlbmQiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGVuZC8tL3Bl
bmQtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lbGZyVlFwbmcva1JVekg4
OUdZOVhJNEFlbEE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicGVyZm9ybWFu
Y2Utbm93IjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BlcmZvcm1hbmNlLW5vdy8tL3BlcmZvcm1hbmNl
LW5vdy0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVl3bjA0T1g2a1Q3Qnhw
TUhyalpMU3pkOG5ucz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwaGFudG9t
anMtcHJlYnVpbHQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMTUiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BoYW50b21qcy1wcmVidWlsdC8tL3Bo
YW50b21qcy1wcmVidWlsdC0yLjEuMTUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1J
UGh1Z3RNMG5GQlpGMUozUmJla0VlQ0xPUU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiZXM2LXByb21pc2UiOiAiNC4wLjUiLAorICAgICAgICAi
ZXh0cmFjdC16aXAiOiAiMS42LjUiLAorICAgICAgICAiZnMtZXh0cmEiOiAiMS4wLjAiLAorICAg
ICAgICAiaGFzaGEiOiAiMi4yLjAiLAorICAgICAgICAia2V3IjogIjAuNy4wIiwKKyAgICAgICAg
InByb2dyZXNzIjogIjEuMS44IiwKKyAgICAgICAgInJlcXVlc3QiOiAiMi44MS4wIiwKKyAgICAg
ICAgInJlcXVlc3QtcHJvZ3Jlc3MiOiAiMi4wLjEiLAorICAgICAgICAid2hpY2giOiAiMS4yLjE0
IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhanYiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiNC4xMS44IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYWp2Ly0vYWp2LTQuMTEuOC50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1ndit3S3lubVlxNVR2Y0lLOFZsSGNHYzV4VFk9IiwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
Y28iOiAiNC42LjAiLAorICAgICAgICAgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6ICIxLjAu
MSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMC4yLjAudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMTA0YmgrZXYvQTI0cXR0d0lmUCtTQkFh
c2pRPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImF3cy1z
aWduMiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMCIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2F3cy1zaWduMi8tL2F3cy1zaWduMi0w
LjYuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GRFF0MDQyOHlVME9XNGZY
WTgxallTd09lVTg9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiYm9vbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEwLjEiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ib29tLy0vYm9vbS0yLjEwLjEu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtT2NpUmpPLzFlWitEK1VrcWhJOWlX
dDBNZG04PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImNyeXB0aWxlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NyeXB0aWxl
cy8tL2NyeXB0aWxlcy0yLjAuNS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1P
OS9zM0dDQlI4SEdjZ0w2S1I1OXlsbnFvN2c9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYm9vbSI6ICIyLjEwLjEiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZm9ybS1kYXRhIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMS40IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZm9ybS1kYXRhLy0vZm9ybS1kYXRhLTIuMS40LnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLU04R0RyUEdUSjI3S3FZRkRwcDZVdis0WFVORT0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJh
c3luY2tpdCI6ICIwLjQuMCIsCisgICAgICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41
IiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIuMS4xNiIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJmcy1leHRyYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Zz
LWV4dHJhLy0vZnMtZXh0cmEtMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtelR6bDkrZkxZVVdJUDhyakdSNllkL2hZZVZBPSIsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQu
MS4xMSIsCisgICAgICAgICAgICAianNvbmZpbGUiOiAiMi40LjAiLAorICAgICAgICAgICAgImts
YXciOiAiMS4zLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaGFyLXNjaGVt
YSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhci1zY2hlbWEvLS9oYXItc2NoZW1hLTEu
MC41LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTBtTVRYME13ZkFMR0FxL0kv
cFdYREFGUk5wND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJoYXItdmFsaWRhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFyLXZhbGlkYXRv
ci8tL2hhci12YWxpZGF0b3ItNC4yLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtTTBnZER4dS85Z0RkSUQxMWdTcHFYN29BTGlvPSIsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFqdiI6ICI0LjExLjgiLAor
ICAgICAgICAgICAgImhhci1zY2hlbWEiOiAiMS4wLjUiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiaGF3ayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMyIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhd2svLS9oYXdr
LTMuMS4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUI0UkV2WHdXUUxEK1ZB
MHNtM1BWbG5qbzRjUT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIsCisgICAgICAgICAgICAiY3J5
cHRpbGVzIjogIjIuMC41IiwKKyAgICAgICAgICAgICJob2VrIjogIjIuMTYuMyIsCisgICAgICAg
ICAgICAic250cCI6ICIxLjAuOSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJo
b2VrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTYuMyIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hvZWsvLS9ob2VrLTIuMTYuMy50Z3oi
LAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JTHQwQTlQT281anBIY1J4Q28veHVDZEtK
ZTA9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaHR0cC1z
aWduYXR1cmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9odHRwLXNpZ25hdHVyZS8tL2h0
dHAtc2lnbmF0dXJlLTEuMS4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTMz
TGlad1pzMEt4biszYXQrT0UwcVB2UGtiOD0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIwLjIuMCIs
CisgICAgICAgICAgICAianNwcmltIjogIjEuNC4xIiwKKyAgICAgICAgICAgICJzc2hwayI6ICIx
LjEzLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicGVyZm9ybWFuY2Utbm93
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGVyZm9ybWFuY2Utbm93Ly0vcGVyZm9ybWFu
Y2Utbm93LTAuMi4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLU0rOHd4Y2Q5
VHFJY1dsT0duWkcxYlk4bFZlVT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJxcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjQuMCIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3FzLy0vcXMtNi40LjAu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRStKdEtLMXJEL3FwRXhMTk8vY0k3
VFVlY2pNPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJl
cXVlc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi44MS4wIiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVxdWVzdC8tL3JlcXVlc3QtMi44
MS4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXhwS0pScURnYkYrTmI0cVRN
MGFmL2FSaW1LQT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJhd3Mtc2lnbjIiOiAiMC42LjAiLAorICAgICAgICAgICAgImF3
czQiOiAiMS42LjAiLAorICAgICAgICAgICAgImNhc2VsZXNzIjogIjAuMTIuMCIsCisgICAgICAg
ICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICJleHRlbmQiOiAi
My4wLjEiLAorICAgICAgICAgICAgImZvcmV2ZXItYWdlbnQiOiAiMC42LjEiLAorICAgICAgICAg
ICAgImZvcm0tZGF0YSI6ICIyLjEuNCIsCisgICAgICAgICAgICAiaGFyLXZhbGlkYXRvciI6ICI0
LjIuMSIsCisgICAgICAgICAgICAiaGF3ayI6ICIzLjEuMyIsCisgICAgICAgICAgICAiaHR0cC1z
aWduYXR1cmUiOiAiMS4xLjEiLAorICAgICAgICAgICAgImlzLXR5cGVkYXJyYXkiOiAiMS4wLjAi
LAorICAgICAgICAgICAgImlzc3RyZWFtIjogIjAuMS4yIiwKKyAgICAgICAgICAgICJqc29uLXN0
cmluZ2lmeS1zYWZlIjogIjUuMC4xIiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIuMS4x
NiIsCisgICAgICAgICAgICAib2F1dGgtc2lnbiI6ICIwLjguMiIsCisgICAgICAgICAgICAicGVy
Zm9ybWFuY2Utbm93IjogIjAuMi4wIiwKKyAgICAgICAgICAgICJxcyI6ICI2LjQuMCIsCisgICAg
ICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEiLAorICAgICAgICAgICAgInN0cmluZ3N0cmVh
bSI6ICIwLjAuNSIsCisgICAgICAgICAgICAidG91Z2gtY29va2llIjogIjIuMy4zIiwKKyAgICAg
ICAgICAgICJ0dW5uZWwtYWdlbnQiOiAiMC42LjAiLAorICAgICAgICAgICAgInV1aWQiOiAiMy4x
LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic250cCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuOSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3NudHAvLS9zbnRwLTEuMC45LnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLVpVRVlUTWtLN3FiRzU3TmVKbGtJSkVQR1laZz0iLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJob2VrIjog
IjIuMTYuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3aGljaCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjIuMTQiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGljaC8tL3doaWNoLTEuMi4xNC50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tb2ZFTjQ4RDZDZk95dkdzMzFiSE5zQWNGT1U9IiwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiaXNleGUiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAg
fSwKICAgICAicGlmeSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKICAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9waWZ5Ly0vcGlmeS0yLjMuMC50Z3oi
LApAQCAtNDc3OSwxNCArNjkzOCwzMSBAQAogICAgICAgfQogICAgIH0sCiAgICAgInBrZy1kaXIi
OiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGtnLWRpci8tL3BrZy1kaXItMS4wLjAudGd6IiwKLSAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1la3RRaW8xYnN0WXAxRWNGYi9UcHlURk04OVE9IiwKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9wa2ctZGlyLy0vcGtnLWRpci0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLTl0WFJFSjRaMWo3ZlFvNEwxWDRTZDNZVk0wcz0iLAogICAgICAgImRldiI6IHRy
dWUsCiAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJmaW5kLXVwIjogIjEuMS4yIgorICAg
ICAgICAiZmluZC11cCI6ICIyLjEuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjog
eworICAgICAgICAiZmluZC11cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbmQtdXAv
LS9maW5kLXVwLTIuMS4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVJkRzM1
UWJIRjkzVWduZGFLM2VTQ2p3TVY2Yz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2NhdGUtcGF0aCI6ICIyLjAuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICAgIH0KICAgICB9LAorICAgICJwbHVyYWxpemUiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcGx1cmFsaXplLy0vcGx1cmFsaXplLTEuMi4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtMGFJVWcvMGl1MEhsaWhMNk5DR0NNVUNKZkVVPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInBvc3Rjc3MiOiB7CiAgICAgICAidmVyc2lvbiI6
ICI1LjIuMTciLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLApAQCAtNDc5Nyw2ICs2OTczLDM1IEBACiAg
ICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAogICAgICAgICAic291cmNlLW1hcCI6ICIwLjUu
NiIsCiAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKKyAgICAgIH0sCisgICAgICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjaGFsayI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFu
c2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6
ICIxLjAuNSIsCisgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAgICAg
InN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIu
MC4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAi
LAorICAgICAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtVTEwRVhPYTJOaitrQVJjSVJpbVpYcDN6Sk1jPSIsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9CiAgICAgICB9CiAgICAgfSwKICAgICAicG9zdGNzcy1jYWxjIjogewpAQCAtNTM0Niw2ICs3
NTUxLDEyIEBACiAgICAgICAgICJ1bmlxcyI6ICIyLjAuMCIKICAgICAgIH0KICAgICB9LAorICAg
ICJwcmVsdWRlLWxzIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ByZWx1ZGUtbHMvLS9wcmVsdWRlLWxz
LTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSVpNcVZKOWVVdi9acUNmMWNP
Qkw1aXFYMmxRPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInByZXBlbmQtaHR0
cCI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcmVwZW5kLWh0dHAvLS9wcmVwZW5kLWh0dHAtMS4wLjQu
dGd6IiwKQEAgLTUzNTgsNiArNzU2OSwxMiBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLWdW
N1I5dXZHV1NiNFpiTVF3SEU3eXpNVnprcz0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAor
ICAgICJwcmV0dGllciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNy4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcmV0dGllci8tL3ByZXR0aWVyLTEu
Ny4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1rSWJBM1VFOXNZR2lWQ3hsV2c5
MkVPSFdacXRlNkVBa0M3RFM1amU2TmFMOGczVXcxcldlMGVIK1VYNEh5NU9FaVI5YXFsMnZWTUhl
ZzZsUjRZR3hZZz09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKICAgICAicHJldHR5LWVy
cm9yIjogewogICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAogICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ByZXR0eS1lcnJvci8tL3ByZXR0eS1lcnJvci0yLjEu
MS50Z3oiLApAQCAtNTM3MSw4ICs3NTg4LDcgQEAKICAgICAicHJpdmF0ZSI6IHsKICAgICAgICJ2
ZXJzaW9uIjogIjAuMS43IiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9wcml2YXRlLy0vcHJpdmF0ZS0wLjEuNy50Z3oiLAotICAgICAgImludGVncml0eSI6
ICJzaGExLWFNNWVpaDd3b2p1MWNNd29VM3RUTXF1bVB2RT0iLAotICAgICAgImRldiI6IHRydWUK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hTTVlaWg3d29qdTFjTXdvVTN0VE1xdW1QdkU9Igog
ICAgIH0sCiAgICAgInByb2Nlc3MiOiB7CiAgICAgICAidmVyc2lvbiI6ICIwLjExLjEwIiwKQEAg
LTUzODYsMTAgKzc2MDIsMTAgQEAKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GUTRndDFaWkN0
UDVFSlB5V2s4cTJML3pDNk09IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKLSAgICAicHJv
dG8tbGlzdCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMi40IiwKLSAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm90by1saXN0Ly0vcHJvdG8tbGlzdC0xLjIu
NC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLUlTMWIvaE1ZTUdwQ0QyUUN1T0p2ODVa
SHFFaz0iLAorICAgICJwcm9ncmVzcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS44IiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9ncmVzcy8tL3By
b2dyZXNzLTEuMS44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNG1ESGoyRmh6ZG13
NVd6RDRLaGQ0WHg2Vjc0PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCiAgICAgInByb3h5
LWFkZHIiOiB7CkBAIC01NDAyLDYgKzc2MTgsMzAgQEAKICAgICAgICAgImlwYWRkci5qcyI6ICIx
LjQuMCIKICAgICAgIH0KICAgICB9LAorICAgICJwcm94eS1hZ2VudCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9wcm94eS1hZ2VudC8tL3Byb3h5LWFnZW50LTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtVit0VFI2cUFYWFRzYUJ5eVZrbmJvNXlUTkprPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFnZW50LWJhc2UiOiAiMi4xLjEi
LAorICAgICAgICAiZGVidWciOiAiMi42LjgiLAorICAgICAgICAiZXh0ZW5kIjogIjMuMC4xIiwK
KyAgICAgICAgImh0dHAtcHJveHktYWdlbnQiOiAiMS4wLjAiLAorICAgICAgICAiaHR0cHMtcHJv
eHktYWdlbnQiOiAiMS4wLjAiLAorICAgICAgICAibHJ1LWNhY2hlIjogIjIuNi41IiwKKyAgICAg
ICAgInBhYy1wcm94eS1hZ2VudCI6ICIxLjEuMCIsCisgICAgICAgICJzb2Nrcy1wcm94eS1hZ2Vu
dCI6ICIyLjEuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAi
bHJ1LWNhY2hlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi41IiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbHJ1LWNhY2hlLy0vbHJ1LWNh
Y2hlLTIuNi41LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTVXMWpWQlNPM28x
M0I3V05GRElnL1FqZkQ5VT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9LAogICAgICJwcnIiOiB7CiAgICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCiAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJyLy0vcHJyLTAu
MC4wLnRneiIsCkBAIC01NTIzLDYgKzc3NjMsMTggQEAKICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS05SnZtdEllSlRkeEEzTWxLTWk5aEVKTGdEVjQ9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAg
fSwKKyAgICAicmF3LWJvZHkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjMuMiIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmF3LWJvZHkvLS9yYXctYm9k
eS0yLjMuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXZOWU1kOVByazgzZ0JRS1Z3
L041T0p2SWo0az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJieXRlcyI6ICIzLjAuMCIsCisgICAgICAgICJodHRwLWVycm9ycyI6ICIxLjYuMiIs
CisgICAgICAgICJpY29udi1saXRlIjogIjAuNC4xOSIsCisgICAgICAgICJ1bnBpcGUiOiAiMS4w
LjAiCisgICAgICB9CisgICAgfSwKICAgICAicmVhZC1wa2ciOiB7CiAgICAgICAidmVyc2lvbiI6
ICIxLjEuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
cmVhZC1wa2cvLS9yZWFkLXBrZy0xLjEuMC50Z3oiLApAQCAtNTYwMCw2ICs3ODUyLDE3IEBACiAg
ICAgICAgIH0KICAgICAgIH0KICAgICB9LAorICAgICJyZWFkbGluZTIiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcmVhZGxpbmUyLy0vcmVhZGxpbmUyLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtUVFXV0NQL0JWSFY3Y1YyWmlkR1ovNzgzTGpVPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNvZGUtcG9pbnQtYXQiOiAiMS4xLjAi
LAorICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAiLAorICAgICAgICAi
bXV0ZS1zdHJlYW0iOiAiMC4wLjUiCisgICAgICB9CisgICAgfSwKICAgICAicmVjaG9pciI6IHsK
ICAgICAgICJ2ZXJzaW9uIjogIjAuNi4yIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9yZWNob2lyLy0vcmVjaG9pci0wLjYuMi50Z3oiLApAQCAtNTY0OCwy
MCArNzkxMSwxNyBAQAogICAgICJyZWdlbmVyYXRlIjogewogICAgICAgInZlcnNpb24iOiAiMS4z
LjIiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlZ2Vu
ZXJhdGUvLS9yZWdlbmVyYXRlLTEuMy4yLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEt
MFpRY1o3clVOK0crZGtNNjNWczRYNVd4a21BPSIsCi0gICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ImludGVncml0eSI6ICJzaGExLTBaUWNaN3JVTitHK2RrTTYzVnM0WDVXeGttQT0iCiAgICAgfSwK
ICAgICAicmVnZW5lcmF0b3ItcnVudGltZSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIs
CiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0
b3ItcnVudGltZS8tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUtMC4xMS4wLnRneiIsCi0gICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi0vYUEwa0xlUmI1TjlLMGQ0Znc3b29FYkkreERlK0RLRDQ5OUVRcXln
R3FlUzhOM3h0bzE1cDA5dVkyeGo3aXhQODFzTlBYdlJMbkFRSXFkVlN0Z2IxQT09IiwKLSAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi0vYUEwa0xlUmI1TjlLMGQ0
Znc3b29FYkkreERlK0RLRDQ5OUVRcXlnR3FlUzhOM3h0bzE1cDA5dVkyeGo3aXhQODFzTlBYdlJM
bkFRSXFkVlN0Z2IxQT09IgogICAgIH0sCiAgICAgInJlZ2VuZXJhdG9yLXRyYW5zZm9ybSI6IHsK
ICAgICAgICJ2ZXJzaW9uIjogIjAuMTAuMCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0b3ItdHJhbnNmb3JtLy0vcmVnZW5lcmF0b3ItdHJh
bnNmb3JtLTAuMTAuMC50Z3oiLAogICAgICAgImludGVncml0eSI6ICJzaGE1MTItMG9NVHFhSnVN
M1E2UldxdHM2VTAvaWpXM3hjblk4ZC9LaW1MM0lrUVcxemliMWdtU2IxbEtvRktORitrU0RtcmlH
RVNsT0hjd29JMVhwWEtORUdjTGc9PSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1
aXJlcyI6IHsKICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKICAgICAgICAgImJh
YmVsLXR5cGVzIjogIjYuMjYuMCIsCkBAIC01NjgyLDcgKzc5NDIsNiBAQAogICAgICAgInZlcnNp
b24iOiAiMi4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3JlZ2V4cHUtY29yZS8tL3JlZ2V4cHUtY29yZS0yLjAuMC50Z3oiLAogICAgICAgImludGVn
cml0eSI6ICJzaGExLVNkQTRnM3VOejR2Nlc1cENFNWs0NXVvcTRrQT0iLAotICAgICAgImRldiI6
IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJyZWdlbmVyYXRlIjogIjEuMy4y
IiwKICAgICAgICAgInJlZ2pzZ2VuIjogIjAuMi4wIiwKQEAgLTU2OTIsMTQgKzc5NTEsMTIgQEAK
ICAgICAicmVnanNnZW4iOiB7CiAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCiAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnanNnZW4vLS9yZWdqc2dlbi0w
LjIuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLWJBRnEzcXhWVDNXQ1ArTjZ3RnVT
MWFUdHNmYz0iLAotICAgICAgImRldiI6IHRydWUKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1i
QUZxM3F4VlQzV0NQK042d0Z1UzFhVHRzZmM9IgogICAgIH0sCiAgICAgInJlZ2pzcGFyc2VyIjog
ewogICAgICAgInZlcnNpb24iOiAiMC4xLjUiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3JlZ2pzcGFyc2VyLy0vcmVnanNwYXJzZXItMC4xLjUudGd6IiwK
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mdWo0VGNiNmVTMC8wSzRpalNTOWxKNnRJRnc9IiwK
LSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAianNlc2Mi
OiAiMC41LjAiCiAgICAgICB9LApAQCAtNTcwNyw4ICs3OTY0LDcgQEAKICAgICAgICAgImpzZXNj
IjogewogICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4wIiwKICAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNlc2MvLS9qc2VzYy0wLjUuMC50Z3oiLAot
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01OTdtYmpYVy9CYjNFUDZSMWM5cDl3OElrUjA9
IiwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01
OTdtYmpYVy9CYjNFUDZSMWM5cDl3OElrUjA9IgogICAgICAgICB9CiAgICAgICB9CiAgICAgfSwK
QEAgLTU3NjYsNiArODAyMiw2OCBAQAogICAgICAgICAiaXMtZmluaXRlIjogIjEuMC4yIgogICAg
ICAgfQogICAgIH0sCisgICAgInJlcXVlc3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjgyLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlcXVlc3Qv
LS9yZXF1ZXN0LTIuODIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItL1FXcWZt
eVRmUTRPWXM2RWhCMWgyd1FzWDlaeGJ1TmVQQ3ZDbTBNZHovbXh3NzNtamRnMEQ0UWRJbDBUUUJG
czM1Q1ptTVhMamswaUNHSzM5NUNVRGc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImF3cy1zaWduMiI6ICIwLjcuMCIsCisgICAgICAgICJhd3M0
IjogIjEuNi4wIiwKKyAgICAgICAgImNhc2VsZXNzIjogIjAuMTIuMCIsCisgICAgICAgICJjb21i
aW5lZC1zdHJlYW0iOiAiMS4wLjUiLAorICAgICAgICAiZXh0ZW5kIjogIjMuMC4xIiwKKyAgICAg
ICAgImZvcmV2ZXItYWdlbnQiOiAiMC42LjEiLAorICAgICAgICAiZm9ybS1kYXRhIjogIjIuMy4x
IiwKKyAgICAgICAgImhhci12YWxpZGF0b3IiOiAiNS4wLjMiLAorICAgICAgICAiaGF3ayI6ICI2
LjAuMiIsCisgICAgICAgICJodHRwLXNpZ25hdHVyZSI6ICIxLjIuMCIsCisgICAgICAgICJpcy10
eXBlZGFycmF5IjogIjEuMC4wIiwKKyAgICAgICAgImlzc3RyZWFtIjogIjAuMS4yIiwKKyAgICAg
ICAgImpzb24tc3RyaW5naWZ5LXNhZmUiOiAiNS4wLjEiLAorICAgICAgICAibWltZS10eXBlcyI6
ICIyLjEuMTciLAorICAgICAgICAib2F1dGgtc2lnbiI6ICIwLjguMiIsCisgICAgICAgICJwZXJm
b3JtYW5jZS1ub3ciOiAiMi4xLjAiLAorICAgICAgICAicXMiOiAiNi41LjEiLAorICAgICAgICAi
c2FmZS1idWZmZXIiOiAiNS4xLjEiLAorICAgICAgICAic3RyaW5nc3RyZWFtIjogIjAuMC41IiwK
KyAgICAgICAgInRvdWdoLWNvb2tpZSI6ICIyLjMuMyIsCisgICAgICAgICJ0dW5uZWwtYWdlbnQi
OiAiMC42LjAiLAorICAgICAgICAidXVpZCI6ICIzLjEuMCIKKyAgICAgIH0sCisgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAibWltZS1kYiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjMwLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9taW1lLWRiLy0vbWltZS1kYi0xLjMwLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtZE1aRDJpM1oxcVJUbVpZMFpiSnRYS2ZYSHdFPSIsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtdHlwZXMiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMi4xLjE3IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjE3LnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLUNkZWprL0ErbVZwNStLK0ZlM0NwNEtzV1ZYbz0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJtaW1lLWRiIjogIjEuMzAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJx
cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjUuMSIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3FzLy0vcXMtNi41LjEudGd6IiwKKyAgICAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1lUnpock4xV1NJTllDRENicno3OTZ6MzdMT2UzbTV0
bVc3UlFmNm9CbnR1a0FHMW5tb3ZKdmhud0hIUk1BZmVvSXRjMW0ySGswMldFUjJhUS9pcXMrQT09
IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAg
ICAicmVxdWVzdC1wcm9ncmVzcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXF1ZXN0LXByb2dyZXNz
Ly0vcmVxdWVzdC1wcm9ncmVzcy0yLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LVhUYTdWNVljWnpxbHQ0amJ5QlFmM3lPMFRnZz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJ0aHJvdHRsZWl0IjogIjEuMC4wIgorICAgICAgfQor
ICAgIH0sCiAgICAgInJlcXVpcmUtZGlyZWN0b3J5IjogewogICAgICAgInZlcnNpb24iOiAiMi4x
LjEiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlcXVp
cmUtZGlyZWN0b3J5Ly0vcmVxdWlyZS1kaXJlY3RvcnktMi4xLjEudGd6IiwKQEAgLTU3ODQsNiAr
ODEwMiwxNiBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLWwvY1h0cDFJZUU5ZlVtcHNXcWov
M2FCVnBORT0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJyZXF1aXJlLXVuY2Fj
aGVkIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlcXVpcmUtdW5jYWNoZWQvLS9yZXF1aXJlLXVuY2Fj
aGVkLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVGcxVzFzbG1MOU1lUXdF
Y1M1V3FTWlZVSWRNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImNhbGxlci1wYXRoIjogIjAuMS4wIiwKKyAgICAgICAgInJlc29sdmUtZnJvbSI6
ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAogICAgICJyZXF1aXJlcy1wb3J0IjogewogICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3JlcXVpcmVzLXBvcnQvLS9yZXF1aXJlcy1wb3J0LTEuMC4wLnRneiIsCkBAIC01
Nzk5LDYgKzgxMjcsMTIgQEAKICAgICAgICAgInBhdGgtcGFyc2UiOiAiMS4wLjUiCiAgICAgICB9
CiAgICAgfSwKKyAgICAicmVzb2x2ZS1mcm9tIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jlc29sdmUt
ZnJvbS8tL3Jlc29sdmUtZnJvbS0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LUpzditrMTBhN3VxN0tidy81YTZ3SHBQVVFpWT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAogICAgICJyZXN0b3JlLWN1cnNvciI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXN0b3JlLWN1cnNv
ci8tL3Jlc3RvcmUtY3Vyc29yLTIuMC4wLnRneiIsCkBAIC01ODUzLDYgKzgxODcsMjEgQEAKICAg
ICAgICAgImluaGVyaXRzIjogIjIuMC4zIgogICAgICAgfQogICAgIH0sCisgICAgInJ1bi1hc3lu
YyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ydW4tYXN5bmMvLS9ydW4tYXN5bmMtMC4xLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15SzFLWGhFR1llUUNwOUliVXc0QW55WDQ0NGs9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAib25jZSI6
ICIxLjQuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyeC1saXRlIjogeworICAgICAgInZlcnNp
b24iOiAiMy4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3J4LWxpdGUvLS9yeC1saXRlLTMuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtR2M1UUxLVnlabDg3WkhzUWs1K1gvUllWOFFJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCiAgICAgInNhZmUtYnVmZmVyIjogewogICAgICAgInZlcnNpb24iOiAiNS4xLjEiLAogICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NhZmUtYnVmZmVyLy0v
c2FmZS1idWZmZXItNS4xLjEudGd6IiwKQEAgLTU4NzQsNiArODIyMywxMiBAQAogICAgICAgICAi
YWp2IjogIjUuMi4yIgogICAgICAgfQogICAgIH0sCisgICAgInNlbGVuaXVtLXNlcnZlciI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjMuNS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9zZWxlbml1bS1zZXJ2ZXIvLS9zZWxlbml1bS1zZXJ2ZXItMy41LjMu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWFwRUxaYituazVTZHdHTDg0QXc5T21V
Qk4vbDRKZVhnV2Qzb3hjMExnMnI5eUNNWDViOWRKeklmZGo1VHAzR3l0WTJoejdsWHVIN0RyS1pZ
T2J4a3RBPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJzZW12ZXIiOiB7CiAg
ICAgICAidmVyc2lvbiI6ICI1LjQuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvc2VtdmVyLy0vc2VtdmVyLTUuNC4xLnRneiIsCkBAIC01OTQ2LDYgKzgz
MDEsMjEgQEAKICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIgogICAgICAgfQogICAgIH0sCisg
ICAgInNoZWJhbmctY29tbWFuZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zaGViYW5nLWNvbW1hbmQv
LS9zaGViYW5nLWNvbW1hbmQtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1S
S3JHVzJsYkF6bUphTU9mTmovdVhlcjk4ZW89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAic2hlYmFuZy1yZWdleCI6ICIxLjAuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJzaGViYW5nLXJlZ2V4IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NoZWJhbmct
cmVnZXgvLS9zaGViYW5nLXJlZ2V4LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtMmtMMGwwREF0QzJ5eXBjb1Z4eXhrTW1PL3FNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCiAgICAgInNoZWxsanMiOiB7CiAgICAgICAidmVyc2lvbiI6ICIwLjcuOCIsCiAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2hlbGxqcy8tL3NoZWxsanMt
MC43LjgudGd6IiwKQEAgLTU5NzMsMTIgKzgzNDMsNiBAQAogICAgICAgICB9CiAgICAgICB9CiAg
ICAgfSwKLSAgICAic2lnbXVuZCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zaWdtdW5kLy0vc2lnbXVu
ZC0xLjAuMS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLVAvSWZHWXl0SVhYNTg3ZUJo
VC9aVFEwWnRaQT0iLAotICAgICAgImRldiI6IHRydWUKLSAgICB9LAogICAgICJzaWduYWwtZXhp
dCI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zaWduYWwtZXhpdC8tL3NpZ25hbC1leGl0LTMuMC4yLnRn
eiIsCkBAIC01OTkxLDYgKzgzNTUsNTYgQEAKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14Qjh2
YkRuOEZ0SE5GNjFMWFlsaEZLNUhEVlU9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAg
ICAic2xpY2UtYW5zaSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC40IiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zbGljZS1hbnNpLy0vc2xpY2UtYW5z
aS0wLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTdiK0pBL1p2Zk9MNDZ2MXM3
dFplSmt5REd6VT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJzbWFydC1idWZm
ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMTUiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NtYXJ0LWJ1ZmZlci8tL3NtYXJ0LWJ1ZmZlci0xLjEu
MTUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1meEZMVzJYNnMrS2pXcWQxdXhMdzBj
Wkp2eFk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic250cCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9zbnRwLy0vc250cC0yLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLVVHUVJEd3I0WDN6OXQ5YTJla0FDak9VclN5cz0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJob2VrIjogIjQuMi4wIgorICAgICAgfQorICAg
IH0sCisgICAgInNvY2tzIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjEwIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zb2Nrcy8tL3NvY2tzLTEuMS4x
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVc0dC94OGp6UWNVKzBGYnBLYmUvVGVp
NmUxbz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJpcCI6ICIxLjEuNSIsCisgICAgICAgICJzbWFydC1idWZmZXIiOiAiMS4xLjE1IgorICAgICAg
fSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJpcCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuNSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lwLy0vaXAtMS4xLjUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtdmQ3WEFSUXBDQ2pBb0Rubkx2SmZXcTdFTlVvPSIsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInNvY2tzLXByb3h5LWFnZW50Ijog
eworICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3NvY2tzLXByb3h5LWFnZW50Ly0vc29ja3MtcHJveHktYWdlbnQt
Mi4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXNGdG1ZcWRVSzVkQU1oODVI
MExFVkZVQ083T2hKSmUxL3oyeC9aNm14cDNzNy9RUGYxUmtabXBaeStCcHVVMGJFamNWOW5wcUtq
cTlZM2t3RlVqbnh3PT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICJhZ2VudC1iYXNlIjogIjIuMS4xIiwKKyAgICAgICAgImV4dGVuZCI6ICIzLjAu
MSIsCisgICAgICAgICJzb2NrcyI6ICIxLjEuMTAiCisgICAgICB9CisgICAgfSwKICAgICAic29y
dC1rZXlzIjogewogICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAogICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NvcnQta2V5cy8tL3NvcnQta2V5cy0xLjEuMi50
Z3oiLApAQCAtNjA0OCw2ICs4NDYyLDIyIEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQk9h
U2IyWW9sVFZQUGRBVklEWXp1RmNwZml3PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisg
ICAgInNzaHBrIjogeworICAgICAgInZlcnNpb24iOiAiMS4xMy4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zc2hway8tL3NzaHBrLTEuMTMuMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLVVTMzIybUtIRkVNVzNFd1kvaHp4MlVCem0rTT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhc24x
IjogIjAuMi4zIiwKKyAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIiwKKyAgICAgICAgImJj
cnlwdC1wYmtkZiI6ICIxLjAuMSIsCisgICAgICAgICJkYXNoZGFzaCI6ICIxLjE0LjEiLAorICAg
ICAgICAiZWNjLWpzYm4iOiAiMC4xLjEiLAorICAgICAgICAiZ2V0cGFzcyI6ICIwLjEuNyIsCisg
ICAgICAgICJqc2JuIjogIjAuMS4xIiwKKyAgICAgICAgInR3ZWV0bmFjbCI6ICIwLjE0LjUiCisg
ICAgICB9CisgICAgfSwKICAgICAic3RhY2tmcmFtZSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjEu
MC40IiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdGFj
a2ZyYW1lLy0vc3RhY2tmcmFtZS0xLjAuNC50Z3oiLApAQCAtNjE3OSwxMSArODYwOSwxNiBAQAog
ICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIKICAgICAgIH0KICAgICB9LAorICAgICJzdHJp
bmdzdHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuNSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nc3RyZWFtLy0vc3RyaW5nc3RyZWFt
LTAuMC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVGtoTTFONWFDN3Z1R09SakIz
RUtpb0ZpR0hnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInN0cmlwLWFuc2ki
OiB7CiAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaXAtYW5zaS8tL3N0cmlwLWFuc2ktMy4wLjEudGd6IiwK
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hamhmdUlVOWxTMWY4RjBPaXErVUo0M0dQYzg9IiwK
LSAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewogICAgICAgICAiYW5zaS1y
ZWdleCI6ICIyLjEuMSIKICAgICAgIH0KQEAgLTYxOTcsNiArODYzMiwxMiBAQAogICAgICAgICAi
aXMtdXRmOCI6ICIwLjIuMSIKICAgICAgIH0KICAgICB9LAorICAgICJzdHJpcC1qc29uLWNvbW1l
bnRzIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWpzb24tY29tbWVudHMvLS9zdHJpcC1qc29u
LWNvbW1lbnRzLTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUEZNWlF1a0l3
bWw4RHNORWhZd29iSHlncGdvPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInN1
cHBvcnRzLWNvbG9yIjogewogICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAogICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9y
dHMtY29sb3ItMy4yLjMudGd6IiwKQEAgLTYyMjEsMTIgKzg2NjIsMTIwIEBACiAgICAgICAgICJ3
aGV0LmV4dGVuZCI6ICIwLjkuOSIKICAgICAgIH0KICAgICB9LAorICAgICJ0YWJsZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjMuOC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy90YWJsZS8tL3RhYmxlLTMuOC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtSzd4VUx3L2FtR0duVmRPVWYrL1lzL1VUaFY4PSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFqdiI6ICI0LjExLjgiLAorICAgICAg
ICAiYWp2LWtleXdvcmRzIjogIjEuNS4xIiwKKyAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAg
ICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAgICAgICAic2xpY2UtYW5zaSI6ICIwLjAuNCIs
CisgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMi4xLjEiCisgICAgICB9LAorICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgImFqdiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEx
LjgiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9h
anYvLS9hanYtNC4xMS44LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWd2K3dL
eW5tWXE1VHZjSUs4VmxIY0djNXhUWT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjbyI6ICI0LjYuMCIsCisgICAgICAgICAg
ICAianNvbi1zdGFibGUtc3RyaW5naWZ5IjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImFuc2ktcmVnZXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNp
LXJlZ2V4Ly0vYW5zaS1yZWdleC0zLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS03UU1Yd3lJR1QzbEdiQUtXYTkyMkJhczMyWmc9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNiND0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjaGFsayI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFuc2kt
c3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIx
LjAuNSIsCisgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAgICAgInN0
cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBv
aW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQv
LS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1vN01LWEU4WmtZTVdlcXE1Tys3NjQ5MzdaVTg9IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3RyaW5nLXdpZHRoIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvc3RyaW5nLXdpZHRoLy0vc3RyaW5nLXdpZHRoLTIuMS4xLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItbk9xSDU5ZGVDcTlTUkhseHExQXc4NUpudDR3
Nkt2TEtxV1ZpazZvQTlaa2xYTE5JT2xxZzRGMnlyVDFNVmFUakFxdlZ3ZGZlWjd3N2FDdkpEN3Vn
a3c9PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjIuMC4wIiwKKyAgICAgICAg
ICAgICJzdHJpcC1hbnNpIjogIjQuMC4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9zdHJpcC1hbnNpLy0vc3RyaXAtYW5zaS00LjAuMC50Z3oiLAorICAg
ICAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUVlUUl1c2F3MmlvY1RpYlkxSml4UVh1Tm84
PSIsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMy4wLjAiCisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzdXBw
b3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0v
c3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
VTEwRVhPYTJOaitrQVJjSVJpbVpYcDN6Sk1jPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0sCiAgICAgInRhcGFibGUiOiB7CiAgICAgICAidmVyc2lv
biI6ICIwLjIuOCIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvdGFwYWJsZS8tL3RhcGFibGUtMC4yLjgudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1tVGNxWEptYjh0OFdDdndOZEw3VTlIbEl6U0k9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAg
fSwKKyAgICAidGV4dC10YWJsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90ZXh0LXRhYmxlLy0vdGV4
dC10YWJsZS0wLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWYxN29JNjZBVWdm
QUN2TGZTb1RzUDgrbGNMUT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ0aHJv
dHRsZWl0IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Rocm90dGxlaXQvLS90aHJvdHRsZWl0LTEuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbm5oWU50cjBaME1VV2xtRXRpYU5nb1Vv
ckd3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInRocm91Z2giOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyLjMuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdGhyb3VnaC8tL3Rocm91Z2gtMi4zLjgudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1EZFRKLzZxOE5YbGdzYmNrRVYxK0RvYWk0ZlU9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAidGh1bmtpZnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMiIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdGh1bmtpZnkv
LS90aHVua2lmeS0yLjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLStxRHAwakRG
R3N5VnloT2pZYXdGeW40RVZUMD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAogICAgICJ0
aW1lLXN0YW1wIjogewogICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RpbWUtc3RhbXAvLS90aW1lLXN0YW1wLTIu
MC4wLnRneiIsCkBAIC02MjUxLDggKzg4MDAsNyBAQAogICAgICJ0by1mYXN0LXByb3BlcnRpZXMi
OiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG8tZmFzdC1wcm9wZXJ0aWVzLy0vdG8tZmFzdC1wcm9wZXJ0
aWVzLTEuMC4zLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtdURWeCtrMk1KYmd1SXhz
RzQ2TUZYZVRLR2tjPSIsCi0gICAgICAiZGV2IjogdHJ1ZQorICAgICAgImludGVncml0eSI6ICJz
aGExLXVEVngrazJNSmJndUl4c0c0Nk1GWGVUS0drYz0iCiAgICAgfSwKICAgICAidG9wb3NvcnQi
OiB7CiAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCkBAIC02MjYwLDE4ICs4ODA4LDY0IEBACiAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtOEN6WXAwdll2aS9BNllZUnc3ckxsYUZ4aHB3PSIsCiAg
ICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgInRvdWdoLWNvb2tpZSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjIuMy4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy90b3VnaC1jb29raWUvLS90b3VnaC1jb29raWUtMi4zLjMudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1DMkdLVldXMjNxa0w4MEpkQk5WZTNFZGFkV0U9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicHVueWNvZGUiOiAiMS40
LjEiCisgICAgICB9CisgICAgfSwKICAgICAidHJpbS1yaWdodCI6IHsKICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy90cmltLXJpZ2h0Ly0vdHJpbS1yaWdodC0xLjAuMS50Z3oiLAogICAgICAgImludGVncml0eSI6
ICJzaGExLXl5NFNBd1orREkzaDloUUpTNS9rVndUcVlBTT0iLAogICAgICAgImRldiI6IHRydWUK
ICAgICB9LAorICAgICJ0cnlpdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90cnlpdC8tL3RyeWl0LTEu
MC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtT1R2bk1LbEViOUhxMXRwWm9CUXdq
emJDaWNzPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInR0eS1icm93c2VyaWZ5
IjogewogICAgICAgInZlcnNpb24iOiAiMC4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3R0eS1icm93c2VyaWZ5Ly0vdHR5LWJyb3dzZXJpZnktMC4w
LjAudGd6IiwKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vVmU2UUMyaVRwdjVWL21xYWRVazd0
UXBBYVk9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAidHVubmVsLWFnZW50Ijog
eworICAgICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3R1bm5lbC1hZ2VudC8tL3R1bm5lbC1hZ2VudC0wLjYuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLUo2WGVvR3Myc0VvS21XWjNTeWtJYVBEOFFQMD0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJzYWZl
LWJ1ZmZlciI6ICI1LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJ0d2VldG5hY2wiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIwLjE0LjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3R3ZWV0bmFjbC8tL3R3ZWV0bmFjbC0wLjE0LjUudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1XdWFCZC9HUzFFVmlhZEVJcjZrLytIUS9UMlE9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgInR5cGUt
Y2hlY2siOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjMuMiIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdHlwZS1jaGVjay8tL3R5cGUtY2hlY2stMC4zLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XSVRLdFJMUEhUVmVQN2VFOHdnRXNyVWcy
M0k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
cHJlbHVkZS1scyI6ICIxLjEuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJ0eXBlLWRldGVjdCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy90eXBlLWRldGVjdC8tL3R5cGUtZGV0ZWN0LTAuMS4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQzZYc0tvaFdRT1J3Nms2RkJaY1pBTnJGaUNJPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInR5cGUtaXMiOiB7CiAgICAgICAidmVy
c2lvbiI6ICIxLjYuMTUiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3R5cGUtaXMvLS90eXBlLWlzLTEuNi4xNS50Z3oiLApAQCAtNjI4Miw2ICs4ODc2LDEy
IEBACiAgICAgICAgICJtaW1lLXR5cGVzIjogIjIuMS4xNiIKICAgICAgIH0KICAgICB9LAorICAg
ICJ0eXBlZGFycmF5IjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjYiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3R5cGVkYXJyYXkvLS90eXBlZGFycmF5
LTAuMC42LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaG5ySFRqaGtHSHNkUFVmWmxx
ZU94Y2lEQjNjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInVnbGlmeS1qcyI6
IHsKICAgICAgICJ2ZXJzaW9uIjogIjMuMC4yNyIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdWdsaWZ5LWpzLy0vdWdsaWZ5LWpzLTMuMC4yNy50Z3oiLApA
QCAtNjM4NSw2ICs4OTg1LDE1IEBACiAgICAgICAgIH0KICAgICAgIH0KICAgICB9LAorICAgICJ1
c2VyLWhvbWUiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXNlci1ob21lLy0vdXNlci1ob21lLTIuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbkhDLzJCYWJ3ZHkvU0dCT0R3UzR0Snpl
bnA4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
Im9zLWhvbWVkaXIiOiAiMS4wLjIiCisgICAgICB9CisgICAgfSwKICAgICAidXRpbCI6IHsKICAg
ICAgICJ2ZXJzaW9uIjogIjAuMTAuMyIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvdXRpbC8tL3V0aWwtMC4xMC4zLnRneiIsCkBAIC02NDIwLDYgKzkwMjks
MTIgQEAKICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BcFQ3a2l1NU4xRlRWQnhQY0pZakh5aDhp
dmc9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKKyAgICAidXVpZCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjMuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy91dWlkLy0vdXVpZC0zLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1
MTItRElXdHpVa3cwNE00azNiZjFJY3BTMnRuZ1hFTDI2WVVEMk0wdE1EVXBuVXJ6MmhnelVCbEQ1
NWE0RmpkTEdQdmZIeFM2dWx1R1d2YVZFcWdCY1ZhK2c9PSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCiAgICAgInZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2UiOiB7CiAgICAgICAidmVy
c2lvbiI6ICIzLjAuMSIsCiAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvdmFsaWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZS8tL3ZhbGlkYXRlLW5wbS1wYWNrYWdl
LWxpY2Vuc2UtMy4wLjEudGd6IiwKQEAgLTY0NDIsNiArOTA1NywxNyBAQAogICAgICAgImludGVn
cml0eSI6ICJzaGExLU42MXp5TzVCZjdQVmdPZUZNU01IMG5TRWZ5ST0iLAogICAgICAgImRldiI6
IHRydWUKICAgICB9LAorICAgICJ2ZXJyb3IiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEwLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ZlcnJvci8t
L3ZlcnJvci0xLjEwLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1PaEJjb1hCVHIx
WFc0bkRCK0NpR2d1R05wQUE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiLAorICAgICAgICAiY29yZS11dGls
LWlzIjogIjEuMC4yIiwKKyAgICAgICAgImV4dHNwcmludGYiOiAiMS4zLjAiCisgICAgICB9Cisg
ICAgfSwKICAgICAidm0tYnJvd3NlcmlmeSI6IHsKICAgICAgICJ2ZXJzaW9uIjogIjAuMC40IiwK
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy92bS1icm93c2Vy
aWZ5Ly0vdm0tYnJvd3NlcmlmeS0wLjAuNC50Z3oiLApAQCAtNjQ2MywxOSArOTA4OSwxOSBAQAog
ICAgICAgImRldiI6IHRydWUKICAgICB9LAogICAgICJ2dWUtbG9hZGVyIjogewotICAgICAgInZl
cnNpb24iOiAiMTIuMi4yIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy92dWUtbG9hZGVyLy0vdnVlLWxvYWRlci0xMi4yLjIudGd6IiwKLSAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLUREK3NZYVdRMWVzWUwvdEV3SnBvRUdFL1BGVXUzMmZwN2lPdU1mNFNy
YTNkZ3hxcjRoYVRPa1ZhbTJWWTAvNUQ0TEc4ZUFjQjk0cnVYS2VRVzIvaWt3PT0iLAorICAgICAg
InZlcnNpb24iOiAiMTMuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy92dWUtbG9hZGVyLy0vdnVlLWxvYWRlci0xMy4wLjUudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhNTEyLXNxQ2JoQ1FJUENhbHpIWGNidVQ4YzkxcEZOOGpsRHZCOURrK3g2
dnNqQ0g5MUJTMitqTm1nQ2xEc0ZXaEdFTWozRkI4UDUrUktKZEhtVWdLbHlId3l3PT0iLAogICAg
ICAgImRldiI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7CiAgICAgICAgICJjb25zb2xpZGF0
ZSI6ICIwLjE0LjUiLAogICAgICAgICAiaGFzaC1zdW0iOiAiMS4wLjIiLAotICAgICAgICAianMt
YmVhdXRpZnkiOiAiMS42LjE0IiwKICAgICAgICAgImxvYWRlci11dGlscyI6ICIxLjEuMCIsCiAg
ICAgICAgICJscnUtY2FjaGUiOiAiNC4xLjEiLAotICAgICAgICAicG9zdGNzcyI6ICI1LjIuMTci
LAorICAgICAgICAicG9zdGNzcyI6ICI2LjAuMTEiLAogICAgICAgICAicG9zdGNzcy1sb2FkLWNv
bmZpZyI6ICIxLjIuMCIsCiAgICAgICAgICJwb3N0Y3NzLXNlbGVjdG9yLXBhcnNlciI6ICIyLjIu
MyIsCisgICAgICAgICJwcmV0dGllciI6ICIxLjcuMCIsCiAgICAgICAgICJyZXNvbHZlIjogIjEu
NC4wIiwKICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjYiLAogICAgICAgICAidnVlLWhvdC1y
ZWxvYWQtYXBpIjogIjIuMS4wIiwKQEAgLTY0ODMsNiArOTEwOSwxMiBAQAogICAgICAgICAidnVl
LXRlbXBsYXRlLWVzMjAxNS1jb21waWxlciI6ICIxLjUuMyIKICAgICAgIH0sCiAgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLTZDQjY4Y3g3TU5SR3pIQzNOTFhvdmhqNGpWRT0iLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCiAgICAgICAgICJsb2FkZXItdXRpbHMiOiB7CiAgICAgICAgICAg
InZlcnNpb24iOiAiMS4xLjAiLAogICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9sb2FkZXItdXRpbHMvLS9sb2FkZXItdXRpbHMtMS4xLjAudGd6IiwKQEAg
LTY0OTMsNiArOTEyNSwzNCBAQAogICAgICAgICAgICAgImVtb2ppcy1saXN0IjogIjIuMS4wIiwK
ICAgICAgICAgICAgICJqc29uNSI6ICIwLjUuMSIKICAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJwb3N0Y3NzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMC4xMSIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9w
b3N0Y3NzLTYuMC4xMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLURzbkl6
em5OUlFwcnNHVEFMcGtDMHhqRHlnbytRY09kK3FWalA5K1JqeXpyUGl5WU9YQkdPd29KNHJBaWlF
NGx1NkpnZ1Evalc0bmlZMjRXTHh1bmNnPT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjaGFsayI6ICIyLjEuMCIsCisgICAg
ICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIsCisgICAgICAgICAgICAic3VwcG9ydHMtY29s
b3IiOiAiNC40LjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
NS43IiwKKyAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNS43LnRneiIsCisgICAgICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1pZ09kTFJBaDBpMGVvVXlBMk9wR2k2THZQOHc9IiwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjQu
MCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1
cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItNC40LjAudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi1yS0MzK0R5WFdnSzBaTEt3bVJzcmt5SFZaQWpOa2Z6ZWVodUZXZEdH
Y3FHRFRaRkg3MytSSDZTL1JEQUF4bDlHdXNTalpTVVdZTG1UOU41cHpYRk9YUT09IiwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
aGFzLWZsYWciOiAiMi4wLjAiCisgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CiAgICAg
fSwKQEAgLTY2MjksNiArOTI4OSwzMyBAQAogICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKICAg
ICAgICAgIm9wZW5lciI6ICIxLjQuMyIsCiAgICAgICAgICJ3cyI6ICIyLjMuMSIKKyAgICAgIH0s
CisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1RMmdrQlRQQjNi
ND0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjaGFsayI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMS4xLjMudGd6IiwKKyAg
ICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJlc2NhcGUtc3RyaW5n
LXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAorICAg
ICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBvcnRzLWNv
bG9yIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN1cHBvcnRz
LWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBw
b3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VMTBF
WE9hMk5qK2tBUmNJUmltWlhwM3pKTWM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9CiAgICAgICB9CiAgICAgfSwKICAgICAid2VicGFjay1kZXYtbWlkZGxld2FyZSI6IHsKQEAg
LTY2ODksNiArOTM3NiwxNSBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLStIZlZ2MlNNbCtX
cVZDK3R3VzFxSlp1Y0VhRT0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAorICAgICJ3aGlj
aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGljaC8tL3doaWNoLTEuMy4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi14Y0pwb3BkYW1UdVk1ZHVDL0tuVFROQnJhUEs1NFl3cGVuUDRs
enhVOEg5MUd1ZFdwRnYzOHUwQ0tqY2xFMVdpMkVIMkVEejVMUmNIY0tiQ0l6cUd5Zz09IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXNleGUiOiAi
Mi4wLjAiCisgICAgICB9CisgICAgfSwKICAgICAid2hpY2gtbW9kdWxlIjogewogICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3doaWNoLW1vZHVsZS8tL3doaWNoLW1vZHVsZS0xLjAuMC50Z3oiLApAQCAtNjcyMyw2
ICs5NDE5LDE1IEBACiAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdFNROWp6N0Jxalh4TmtZRnZB
MFFOdU1LdHA4PSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCisgICAgIndyaXRlIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3dyaXRlLy0vd3JpdGUtMC4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1YOEE0S09Ka3pxUCtrVVZVZHZlanhXYkxCMWM9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibWtkaXJwIjogIjAuNS4xIgorICAg
ICAgfQorICAgIH0sCiAgICAgIndzIjogewogICAgICAgInZlcnNpb24iOiAiMi4zLjEiLAogICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dzLy0vd3MtMi4zLjEu
dGd6IiwKQEAgLTY3NDcsNiArOTQ1MiwxMiBAQAogICAgICAgImludGVncml0eSI6ICJzaGExLVpH
VjRTS0lQL0YzMWc2UXEyS0ozdEZFcnZFMD0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAor
ICAgICJ4cmVnZXhwIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3hyZWdleHAvLS94cmVnZXhwLTIuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVXFZK1Zzb0xoS2Z6cGZQV0dITHhKcTE2
V1VNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCiAgICAgInh0ZW5kIjogewogICAgICAg
InZlcnNpb24iOiAiNC4wLjEiLAogICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3h0ZW5kLy0veHRlbmQtNC4wLjEudGd6IiwKQEAgLTY4MjEsNiArOTUzMiwxNSBA
QAogICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0KICAgICAgIH0KKyAgICB9LAorICAg
ICJ5YXV6bCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy95YXV6bC8tL3lhdXpsLTIuNC4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtbFNqMFF0cXhzaWhPV0xRM203R1U0aTRNUUFVPSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImZkLXNsaWNl
ciI6ICIxLjAuMSIKKyAgICAgIH0KICAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvcGFja2Fn
ZS5qc29uCmluZGV4IDdmNDA3NmE3MmUzZjgzOTlhMGI2MzEyZTZkOTk2NjI1NjMxYzUxNWIuLmFh
ZjgwMzQyNjk5YmFjYzU4Mzk5OTgyMDhiOGNiZWU3MzZlZTlkODggMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3Z1ZWpzLWNsaS9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xp
L3BhY2thZ2UuanNvbgpAQCAtMiw3ICsyLDcgQEAKICAgInByaXZhdGUiOiB0cnVlLAogICAiYXV0
aG9yIjogIlRoZSBUb2RvTVZDIGF1dGhvcnMiLAogICAic2NyaXB0cyI6IHsKLSAgICAiZGV2Ijog
Im5vZGUgYnVpbGQvZGV2LXNlcnZlci5qcyIsCisgICAgImRldiI6ICJta2RpciAtcCBzdGF0aWMg
JiYgbm9kZSBidWlsZC9kZXYtc2VydmVyLmpzIiwKICAgICAiYnVpbGQiOiAibm9kZSBidWlsZC9i
dWlsZC5qcyIsCiAgICAgImxpbnQiOiAiZXNsaW50IC0tZXh0IC5qcywudnVlIHNyYyIKICAgfSwK
QEAgLTExLDE4ICsxMSwyNyBAQAogICAgICJ2dWUiOiAiXjIuNC4yIgogICB9LAogICAiZGV2RGVw
ZW5kZW5jaWVzIjogewotICAgICJhdXRvcHJlZml4ZXIiOiAiXjYuNy4yIiwKKyAgICAiYXV0b3By
ZWZpeGVyIjogIl43LjEuMiIsCiAgICAgImJhYmVsLWNvcmUiOiAiXjYuMjIuMSIsCi0gICAgImJh
YmVsLWxvYWRlciI6ICJeNi4yLjEwIiwKKyAgICAiYmFiZWwtZXNsaW50IjogIl43LjEuMSIsCisg
ICAgImJhYmVsLWxvYWRlciI6ICJeNy4xLjEiLAogICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LXJ1bnRpbWUiOiAiXjYuMjIuMCIsCiAgICAgImJhYmVsLXByZXNldC1lbnYiOiAiXjEuMy4yIiwK
ICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICJeNi4yNC4xIiwKICAgICAiYmFiZWwtcHJlc2V0
LXN0YWdlLTIiOiAiXjYuMjIuMCIsCiAgICAgImJhYmVsLXJlZ2lzdGVyIjogIl42LjIyLjAiLAot
ICAgICJjaGFsayI6ICJeMS4xLjMiLAorICAgICJjaGFsayI6ICJeMi4wLjEiLAogICAgICJjb25u
ZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogIl4xLjMuMCIsCiAgICAgImNvcHktd2VicGFjay1w
bHVnaW4iOiAiXjQuMC4xIiwKICAgICAiY3NzLWxvYWRlciI6ICJeMC4yOC4wIiwKKyAgICAiY3Nz
bmFubyI6ICJeMy4xMC4wIiwKKyAgICAiZXNsaW50IjogIl4zLjE5LjAiLAorICAgICJlc2xpbnQt
ZnJpZW5kbHktZm9ybWF0dGVyIjogIl4zLjAuMCIsCisgICAgImVzbGludC1sb2FkZXIiOiAiXjEu
Ny4xIiwKKyAgICAiZXNsaW50LXBsdWdpbi1odG1sIjogIl4zLjAuMCIsCisgICAgImVzbGludC1j
b25maWctc3RhbmRhcmQiOiAiXjYuMi4xIiwKKyAgICAiZXNsaW50LXBsdWdpbi1wcm9taXNlIjog
Il4zLjQuMCIsCisgICAgImVzbGludC1wbHVnaW4tc3RhbmRhcmQiOiAiXjIuMC4xIiwKICAgICAi
ZXZlbnRzb3VyY2UtcG9seWZpbGwiOiAiXjAuOS42IiwKICAgICAiZXhwcmVzcyI6ICJeNC4xNC4x
IiwKICAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luIjogIl4yLjAuMCIsCkBAIC0zMCwx
OCArMzksMjUgQEAKICAgICAiZnJpZW5kbHktZXJyb3JzLXdlYnBhY2stcGx1Z2luIjogIl4xLjEu
MyIsCiAgICAgImh0bWwtd2VicGFjay1wbHVnaW4iOiAiXjIuMjguMCIsCiAgICAgImh0dHAtcHJv
eHktbWlkZGxld2FyZSI6ICJeMC4xNy4zIiwKLSAgICAib3BuIjogIl40LjAuMiIsCi0gICAgIm9w
dGltaXplLWNzcy1hc3NldHMtd2VicGFjay1wbHVnaW4iOiAiXjEuMy4wIiwKLSAgICAib3JhIjog
Il4xLjIuMCIsCi0gICAgInJpbXJhZiI6ICJeMi42LjAiLAorICAgICJ3ZWJwYWNrLWJ1bmRsZS1h
bmFseXplciI6ICJeMi4yLjEiLAorICAgICJjcm9zcy1lbnYiOiAiXjUuMC4xIiwKKyAgICAiaW5q
ZWN0LWxvYWRlciI6ICJeMy4wLjAiLAorICAgICJwaGFudG9tanMtcHJlYnVpbHQiOiAiXjIuMS4x
NCIsCisgICAgImNocm9tZWRyaXZlciI6ICJeMi4yNy4yIiwKKyAgICAiY3Jvc3Mtc3Bhd24iOiAi
XjUuMC4xIiwKKyAgICAibmlnaHR3YXRjaCI6ICJeMC45LjEyIiwKKyAgICAic2VsZW5pdW0tc2Vy
dmVyIjogIl4zLjAuMSIsCiAgICAgInNlbXZlciI6ICJeNS4zLjAiLAogICAgICJzaGVsbGpzIjog
Il4wLjcuNiIsCisgICAgIm9wbiI6ICJeNS4xLjAiLAorICAgICJvcHRpbWl6ZS1jc3MtYXNzZXRz
LXdlYnBhY2stcGx1Z2luIjogIl4yLjAuMCIsCisgICAgIm9yYSI6ICJeMS4yLjAiLAorICAgICJy
aW1yYWYiOiAiXjIuNi4wIiwKICAgICAidXJsLWxvYWRlciI6ICJeMC41LjgiLAotICAgICJ2dWUt
bG9hZGVyIjogIl4xMi4xLjAiLAorICAgICJ2dWUtbG9hZGVyIjogIl4xMy4wLjQiLAogICAgICJ2
dWUtc3R5bGUtbG9hZGVyIjogIl4zLjAuMSIsCi0gICAgInZ1ZS10ZW1wbGF0ZS1jb21waWxlciI6
ICJeMi4zLjMiLAorICAgICJ2dWUtdGVtcGxhdGUtY29tcGlsZXIiOiAiXjIuNC4yIiwKICAgICAi
d2VicGFjayI6ICJeMi42LjEiLAotICAgICJ3ZWJwYWNrLWJ1bmRsZS1hbmFseXplciI6ICJeMi4y
LjEiLAogICAgICJ3ZWJwYWNrLWRldi1taWRkbGV3YXJlIjogIl4xLjEwLjAiLAogICAgICJ3ZWJw
YWNrLWhvdC1taWRkbGV3YXJlIjogIl4yLjE4LjAiLAogICAgICJ3ZWJwYWNrLW1lcmdlIjogIl40
LjEuMCIKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy90
b2RvLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9zcmMvY29tcG9uZW50cy90b2RvLmNzcwpp
bmRleCAxMGUzZDJmNmI3OTNkNDJjYjRlMjBhZWVhNDhhM2I1Y2ViNDg2ZWU1Li5lMDRmYmRiZGI0
ZWQ0YWZlMDlkNTU0M2RiNTIwZGM2YTlkZGQ0MWIyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92
dWVqcy1jbGkvc3JjL2NvbXBvbmVudHMvdG9kby5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL3NyYy9jb21wb25lbnRzL3RvZG8uY3NzCkBAIC0xMTIsMjggKzExMiwzMiBAQCBib2R5IHsK
ICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKIH0KIAotbGFiZWxbZm9yPSd0b2dn
bGUtYWxsJ10gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KIC50b2dnbGUtYWxsIHsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICov
CisgICAgb3BhY2l0eTogMDsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtNTVw
eDsKLSAgICBsZWZ0OiAtMTJweDsKK30KKworLnRvZ2dsZS1hbGwgKyBsYWJlbCB7CiAgICAgd2lk
dGg6IDYwcHg7CiAgICAgaGVpZ2h0OiAzNHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAg
ICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KKyAgICBmb250LXNpemU6IDA7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTUycHg7CisgICAgbGVmdDogLTEzcHg7
CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgICAgdHJhbnNmb3JtOiBy
b3RhdGUoOTBkZWcpOwogfQogCi0udG9nZ2xlLWFsbDpiZWZvcmUgeworLnRvZ2dsZS1hbGwgKyBs
YWJlbDpiZWZvcmUgewogICAgIGNvbnRlbnQ6ICfina8nOwogICAgIGZvbnQtc2l6ZTogMjJweDsK
ICAgICBjb2xvcjogI2U2ZTZlNjsKICAgICBwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4Owog
fQogCi0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9yZSB7CisudG9nZ2xlLWFsbDpjaGVja2VkICsg
bGFiZWw6YmVmb3JlIHsKICAgICBjb2xvcjogIzczNzM3MzsKIH0KIApAQCAtMTgzLDE4ICsxODcs
MjcgQEAgbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewogICAgIGFwcGVhcmFuY2U6IG5vbmU7CiB9
CiAKLS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVudDogdXJsKCdkYXRh
OmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJj
bGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0
cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpOworLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICBv
cGFjaXR5OiAwOwogfQogCi0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlciB7Ci0g
ICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIt
MTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25l
IiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYi
IGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIwIDIwIDM0LTUyeiIvPjwvc3ZnPicpOworLnRv
ZG8tbGlzdCBsaSAudG9nZ2xlICsgbGFiZWwgeworICAgIC8qCisgICAgICAgIEZpcmVmb3ggcmVx
dWlyZXMgYCNgIHRvIGJlIGVzY2FwZWQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD05MjI0MzMKKyAgICAgICAgSUUgYW5kIEVkZ2UgcmVxdWlyZXMgKmV2ZXJ5
dGhpbmcqIHRvIGJlIGVzY2FwZWQgdG8gcmVuZGVyLCBzbyB3ZSBkbyB0aGF0IGluc3RlYWQgb2Yg
anVzdCB0aGUgYCNgIC0gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9lbi11cy9taWNy
b3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvNzE1NzQ1OS8KKyAgICAqLworICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMlM0Ql
MjJodHRwJTNBLy93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUyMGhl
aWdodCUzRCUyMjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUyMiUz
RSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUwJTIy
JTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNlZGVkZWQlMjIlMjBzdHJva2Ut
d2lkdGglM0QlMjIzJTIyLyUzRSUzQy9zdmclM0UnKTsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDog
bm8tcmVwZWF0OworICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBsZWZ0OworfQorCisu
dG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tlZCArIGxhYmVsIHsKKyAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0
cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQl
M0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAxMzUlMjIlM0UlM0Nj
aXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZp
bGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzYmRkYWQ1JTIyJTIwc3Ryb2tlLXdpZHRo
JTNEJTIyMyUyMi8lM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzVkYzJhZiUyMiUyMGQlM0QlMjJN
NzIlMjAyNUw0MiUyMDcxJTIwMjclMjA1NmwtNCUyMDQlMjAyMCUyMDIwJTIwMzQtNTJ6JTIyLyUz
RSUzQy9zdmclM0UnKTsKIH0KIAogLnRvZG8tbGlzdCBsaSBsYWJlbCB7CiAgICAgd29yZC1icmVh
azogYnJlYWstYWxsOwotICAgIHBhZGRpbmc6IDE1cHggNjBweCAxNXB4IDE1cHg7Ci0gICAgbWFy
Z2luLWxlZnQ6IDQ1cHg7CisgICAgcGFkZGluZzogMTVweCAxNXB4IDE1cHggNjBweDsKICAgICBk
aXNwbGF5OiBibG9jazsKICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgIHRyYW5zaXRpb246IGNv
bG9yIDAuNHM7CkBAIC0zNTAsMTMgKzM2Myw2IEBAIGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3Rp
dmUgewogICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7CiAgICAgICAgIGhlaWdodDogNDBweDsK
ICAgICB9Ci0KLSAgICAudG9nZ2xlLWFsbCB7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBy
b3RhdGUoOTBkZWcpOwotICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKLSAg
ICB9CiB9CiAKIEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>321670</attachid>
            <date>2017-09-24 23:31:36 -0700</date>
            <delta_ts>2017-09-24 23:31:36 -0700</delta_ts>
            <desc>Results before and after applying the patch</desc>
            <filename>vue-results.pdf</filename>
            <type>application/pdf</type>
            <size>95823</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G
bGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9W8uKHMsR3fdX1A+4bj2yXmC0sDEG7y4MeGG8uFdcWRiN
Qdb/g09kZpw4NVXTPTNlW2JQV0zGI09EnsjMLn1vfm6+N33fzmua1yZtbZc/PIdsSUO79dPYfGvm
td26vpuaE9mNut9CV2Rfm782/2o6/J22qVnT0Pz7tyz66Y8/+ubzj6bPf398bvrxNg5Lu43D2CCO
MXsbpmVBBMPcrn23lgheyqiFCMbGn27fmq/Nl9CcujbBLi35uDK/IY3jRl2VmR5sUS/beWF7BkLT
tq1q37CqkaaunYd+3jgj2KOMuuJDZDaH49hnym7iZ0ptGocp0Q/mQZnYPNrL87kdxz6HvvjBbAte
ZzL3gzke7RXcunaYhyVNfXP2yUphaMc0jMkKEz7GdENBuEwSx6ScyVwXIFDXZbU4kJdt7cZtQCDL
ug4jyh3pnu3P0iAQOMAS6EtlIOS5ZLjK5r5Ny7BpNscqg1OibMFl3ZzhF/YKIobEijj6ablZne5c
z/hdPw3qOg0ouCn16uZEdhtdV12HzIqrs7W9zd1qM19zXuzT1AGZXSC3hHms2zztApmHttvSugvk
TOa6EUjY86rYxgXVuxkWXh6pn+Z1HneAJMN4XHqJAyw0tfOI0hfcT2WuG3E0tFdWAQDJNZGLwrwP
GZq+X+a0L4q0pXZbQFCZVkpip2FrMVLiuB1FqOuqqWGErOYlJwFoYGLDhmQjLRmXm5bHZKXQr5Xb
ahDIwNLPGkUzncmqLiqYlU57npUpT9y8L3O3rMmWyNRNWC678sgOumnDUg1b22wcaD2Eq2E6k1nF
TBuGhWoR1YUq68NQ2JUD+oqR725pzsjCsi1m0R3fTmTWk4queg5ZycOYLPeTATDmP1iiWHtZppkw
B33qdgvV2VACaU5kObisK4HQnmdiZR2stRqBRZUhkHFrtzl1pY1WsnJZI8REWj6VBVm5bm7LlcAK
Ip5+IMIF4jIJBE5JXWEM8Hb9OAGRCORM5rrfOLGwx5Wa3S9IzYx+Asqy6gCNY7lYjbhTfEjtOE3W
oCkTvvRAQEnkVZeFrgbi9jw1qD9bG3BvXQTuncbFHdkzZFbkhT3pLh1lypShG4xakrJkksisxWAS
6BQFKVDcyHYKBfCv7BlxnMmCPT2OsEconMQXrpv8oZCn6wUFRhzClAwDk6p8SpGQ59EaoyiVgTSs
Y4++MltlBIdTkXQXYShV0qnTJwgpZE69Uhm054Ec2AOBVPYwHo9AKgdqHEGV4fNMRq48WPMoHvT4
0EPWjUzB4pQJcTKMM5mQKXVdVnn8YW+lIslPA6nbbM2BkOkuuEqmR3uOSOUrFMgph01juyxpXfOZ
oJJpyGKXx72wkymCC1mQaeiG7JX2si+QUHRCxKacwQVxhtMzWdU15Kjr9hyRDb0dSwXuF26AUu74
vTFIKFbyQ41QJsTJQM5kJGINxO0xENt0Lbnh2n4QBGZr1xZ03giKU1JqyCp9ahqEUiW4qiuBcIPL
QMrO2Lj8bGcsTrkjDVnwZzitsn1wVVcDCZ6t3G67cRxQkRo7JOAoiZDKGcpIRJxyR0pZMCjjOBE5
qWqFuAytuoSxvTExToJaIU6gMBZxIFl1nxqyIFWZQtnjIrgaCPv+KbuHIkk1RJVANQeyJ404qqqk
xaZQtqk7OIxC7tapkyB2HwxDCJQuXbYPjTtU6tKewxFFkRdun5tdWmyTvisPIVUaEwKNQPAp32dI
rlxXC8RlXiD5ngf1+NOfcbfzD9ztjE29dvFPsr2Ni5VyaPGzOYxhtDx9tVNBuf6p1vbP0X1v9XKG
rC9WqCOyrzwdeJw8LVRLhOnls1hxnX3M3o1KTHKRUi3NSzutdjZ6+SyW3QYt5wUgl1yoKH0SdPc3
IodLh3rZxl090aHe+VUZkeU4QX9/0VEyJjJBm9pxkaWXb456XAjKKhSLRF5kX2N/Jl4cSbXIDHAc
yt2zIhZdN7YCtu4MQd8GlCz4k2bhVFYPReW6Mjqz1LlYjsyErcjCqazYR62ILn1qFlxbs+AyRbzK
dOnzaBcn7P3xLFBzi7IGfH6wGIj7uJ2McYs9yiwL2KeWAyWajTyBRTD7WvexIxJZPRGWLOh5zlG7
ueVyv1PrOWxFFk5ltC/2KNMsuLZmwWWahaMMEdJirIWQ6Vpwbc2CywLxmHPI9AQcWVAvwJ2bvZwF
fyo1WPk9ztbMguy4sg3uyWQt0JYwksuQZWbhXEaLngVEWmSITbJAbckCZZKFcxktMgvuJbdGokZt
yQJlgrjLdH2IRbHH+eW1wJ1uyYLtV8r1giOO4/pBpheglgVbh3a9avgEaq4XWVBbkQUfp5kJi2JP
vDhqYVGzEBa9LyBGzkJktCj2KJO1QG3NQlgkI3FcZEavOyILMb+SBayrfJ1SsuBPwkh+Nb1bH1hR
+Ta57n/4pFlwW5EF7A2KN9iKLPi4nYwWIwvhU9eCW9QshMVA/FRGL54FRFhkecUFaq6tWXBZIM75
oR4jM2FR7NFzzoIfcnIS/EFycBTh/qnepecUyJOkwNUkAy4KsOUmizkRc8RfZIK/2wv4xR7R91FC
TmKO4IsslgDtCfZhjzCfigiRI6+wFeSxlvKxrkDvT4r9KzL7/qBgb8sxfyOg0LuWYu+yAJ/3d7oi
4uwW4IuPgMvtBfhqL9D3cQo/De7M+Twcr7Cn6Ie9gP8VWTG4M1eAK+j7DWFB358U/VMZz5nY2e5O
mAGY6yn+LlP8jzK1KPboU6vftTUDLgu0YZFfLkVWwB/5uyDZle7mEqC5duRALUYOfJywj1gUe/Rs
WYhvm3IW/GQPDsPsy37oNVm9uUQn9uN15k2iRj3JAmWShddkZh8Wd/aqT8kCtSULlEUWcoz2TRss
Mgs2rlrkQhBZ0BC17WbEX15wL7DILLhMe4BY3OlyLoZgvcgoZwN/2mUhrjoiM/C7pcF2QNkGn4KL
brSlWQhbZH2O08yEfc8C7ImXQM0tahZcpogfZWpR7ImXQM21NQsuiyzEnEMGhGlR7FGWGWnpljZ1
vX1PDjz9qdRgWQsu08ws3YyXP+wb/azkD5GDsCQ5EEvMwbnMDXoKYC6LEJesA+pKBiiTDJzL3CAT
EJOSVUBdwZ8ywdplujLCIOEPUUHfX0Qq6PtTMJG+QsQ1gC/vWnt/wLCvHxV5t6LIVxmiC+R93E5W
LAfutB8wuS1FPWyRaeQFJJEV+2IMgpzVgMhtKeIuU8RPZcWcGCsOgba/o8Q7PGB+kAFUl3n8iC4D
zVfG8EQb9RxWT9H1jahyJ/FC9mpOX395bueFeaM0vn2zF/3yu1goCo7z+CETuDkLykQXdV+/gQqL
yIJ/KyUjKRMvAjq9uCzsGWLgpXK/SovPJ7JXcl1fcNOVAT4sL73RnnnJ709hm5x6+5JqO3wql+ED
LsNv3+12vJ0nvEqCtxPkk6U+XwJ/fm7+8GRP9rrk7/Dv2PQTvE4w/vSMW3V7V/Lpy+1vze+7bpjw
s36CxB62+mEc/IP+uhtdurjCr1n7lrXj1z5uSF03cuyMsb9+av7ePP2l+dMTXh21+Dr7TvDhnG6H
OaVhOp1Vk2c1IuzJZzX1Ndoc4A3z7BBKnzSUhxE0xwjwepbjehNcH0ZgSOcIpndFcMRgGhZGoJl9
GAExmN8VwRGDaVkZwccwQHVEQTzMwhEDbN8YwccwQJm8I4IjBvPaMYKPYYBV944IjhgsI1b0yQp/
ex388q4Ijhgs68AIPobBjhg+UAfreM5yb8fg80UMVry35Vn4GAZgyx7UeakWNrxY6VEc14MR8rR1
XVrxLzgy4Tkh+Zm/0/rp9g7fxyroQfB0fgIBaM8cJ+8ICZAXzxYWWPod3o+rAH0OJ/mXXa7kfwDh
J5RY9mYTn7zB4XMOCr2hdLE8tMYTwZnKZwz1zmYg9vZjncT7Sz/WB+PX/Buo9f4Toy5ONKWlHfuu
fzFfQI+ubs2FLpHZp3+WXvuBJZW29Q1+DAA0sgt+8G7O/8UPIn2DnwXzQV1emM889W/wY7hhC3LB
z9Jh//+wDswPGswVP9hBP/ZjuF2rA/xHgTf4seUEArkwn3Wa3uDnel1v/Vvnc60OtuU0P2WXTz6w
+WC7dwG3vsNZG1uNU5p12rkOG04x+I8u5zw+YgYkZbzSlxtYbmSfK32ToXnuyC0HYQX/OxOzCaQv
3hq8LaAplnawY/2R9I8qzD3UQmAXs6bqzTTiqEPho1jM8ViDsZigwpG5Y/wigg6nq9xoMBrXkdJo
8NC5PeqP7jt7wFrMSA2/SYgTVinHZ5O2nKyPWetCMOhlJcq9P1vcjhq7XC4ti+R9O6dj52ZD2yf+
RUOzGK4RGRvaXT9WwdgqXFgobGh3/WTUL/lBpIXI7vqxrF4jGDa0u34sP9eImQ3trh+bz7U6WLyh
3fVj87m2EWBDu+vH6u0abmxod/2AWS7WARvaXT+WH5ypL6wfNrS9nxcNzfyAjy/48Yb2P3aDq2+7
9Htx/VYPJqjk0tC8i+RuhrlZd0ODql0InYC8jb2YNB2SPo83KNxoaIdDi8EGa0H0YH47Bhrh04V1
nnyKsLZgv7Tiwe8z98Nk/px3Ykb/WbEEmhWN2Wz1QJ68DbFL5hb0X+sYe2SlY9QZXWQKdoyHfq5t
fdkx7voxwK8xEjvGXT/GSNdWFjvGQz/XmI8d464fw+1aB2THuOvnOm7sGHf92HyuHe3ZMe76uT4f
doy7fmw+144m7Bh7P9IxjA/Mz7XO5B3joRvZQP78H61tnOsKZW5kc3RyZWFtCmVuZG9iago1IDAg
b2JqCjM1NDgKZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAzIDAgUiAvUmVz
b3VyY2VzIDYgMCBSIC9Db250ZW50cyA0IDAgUiAvTWVkaWFCb3ggWzAgMCA1OTUgODQyXQovUm90
YXRlIDkwID4+CmVuZG9iago2IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdIC9Db2xv
clNwYWNlIDw8IC9DczEgNyAwIFIgPj4gL0V4dEdTdGF0ZSA8PCAvR3MxCjEwIDAgUiAvR3MyIDEx
IDAgUiA+PiAvRm9udCA8PCAvRzEgOCAwIFIgL0cyIDkgMCBSID4+ID4+CmVuZG9iagoxMCAwIG9i
ago8PCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjE0OSA+PgplbmRvYmoKMTEgMCBvYmoKPDwgL1R5
cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL0xlbmd0aCAxMyAwIFIg
L04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt
CngBnZZ3VFPZFofPvTe90BIiICX0GnoJINI7SBUEUYlJgFAChoQmdkQFRhQRKVZkVMABR4ciY0UU
C4OCYtcJ8hBQxsFRREXl3YxrCe+tNfPemv3HWd/Z57fX2Wfvfde6AFD8ggTCdFgBgDShWBTu68Fc
EhPLxPcCGBABDlgBwOFmZgRH+EQC1Py9PZmZqEjGs/buLoBku9ssv1Amc9b/f5EiN0MkBgAKRdU2
PH4mF+UClFOzxRky/wTK9JUpMoYxMhahCaKsIuPEr2z2p+Yru8mYlybkoRpZzhm8NJ6Mu1DemiXh
o4wEoVyYJeBno3wHZb1USZoA5fco09P4nEwAMBSZX8znJqFsiTJFFBnuifICAAiUxDm8cg6L+Tlo
ngB4pmfkigSJSWKmEdeYaeXoyGb68bNT+WIxK5TDTeGIeEzP9LQMjjAXgK9vlkUBJVltmWiR7a0c
7e1Z1uZo+b/Z3x5+U/09yHr7VfEm7M+eQYyeWd9s7KwvvRYA9iRamx2zvpVVALRtBkDl4axP7yAA
8gUAtN6c8x6GbF6SxOIMJwuL7OxscwGfay4r6Df7n4Jvyr+GOfeZy+77VjumFz+BI0kVM2VF5aan
pktEzMwMDpfPZP33EP/jwDlpzcnDLJyfwBfxhehVUeiUCYSJaLuFPIFYkC5kCoR/1eF/GDYnBxl+
nWsUaHVfAH2FOVC4SQfIbz0AQyMDJG4/egJ961sQMQrIvrxorZGvc48yev7n+h8LXIpu4UxBIlPm
9gyPZHIloiwZo9+EbMECEpAHdKAKNIEuMAIsYA0cgDNwA94gAISASBADlgMuSAJpQASyQT7YAApB
MdgBdoNqcADUgXrQBE6CNnAGXARXwA1wCwyAR0AKhsFLMAHegWkIgvAQFaJBqpAWpA+ZQtYQG1oI
eUNBUDgUA8VDiZAQkkD50CaoGCqDqqFDUD30I3Qaughdg/qgB9AgNAb9AX2EEZgC02EN2AC2gNmw
OxwIR8LL4ER4FZwHF8Db4Uq4Fj4Ot8IX4RvwACyFX8KTCEDICAPRRlgIG/FEQpBYJAERIWuRIqQC
qUWakA6kG7mNSJFx5AMGh6FhmBgWxhnjh1mM4WJWYdZiSjDVmGOYVkwX5jZmEDOB+YKlYtWxplgn
rD92CTYRm40txFZgj2BbsJexA9hh7DscDsfAGeIccH64GFwybjWuBLcP14y7gOvDDeEm8Xi8Kt4U
74IPwXPwYnwhvgp/HH8e348fxr8nkAlaBGuCDyGWICRsJFQQGgjnCP2EEcI0UYGoT3QihhB5xFxi
KbGO2EG8SRwmTpMUSYYkF1IkKZm0gVRJaiJdJj0mvSGTyTpkR3IYWUBeT64knyBfJQ+SP1CUKCYU
T0ocRULZTjlKuUB5QHlDpVINqG7UWKqYup1aT71EfUp9L0eTM5fzl+PJrZOrkWuV65d7JU+U15d3
l18unydfIX9K/qb8uAJRwUDBU4GjsFahRuG0wj2FSUWaopViiGKaYolig+I1xVElvJKBkrcST6lA
6bDSJaUhGkLTpXnSuLRNtDraZdowHUc3pPvTk+nF9B/ovfQJZSVlW+Uo5RzlGuWzylIGwjBg+DNS
GaWMk4y7jI/zNOa5z+PP2zavaV7/vCmV+SpuKnyVIpVmlQGVj6pMVW/VFNWdqm2qT9QwaiZqYWrZ
avvVLquNz6fPd57PnV80/+T8h+qwuol6uPpq9cPqPeqTGpoavhoZGlUalzTGNRmabprJmuWa5zTH
tGhaC7UEWuVa57VeMJWZ7sxUZiWzizmhra7tpy3RPqTdqz2tY6izWGejTrPOE12SLls3Qbdct1N3
Qk9LL1gvX69R76E+UZ+tn6S/R79bf8rA0CDaYItBm8GooYqhv2GeYaPhYyOqkavRKqNaozvGOGO2
cYrxPuNbJrCJnUmSSY3JTVPY1N5UYLrPtM8Ma+ZoJjSrNbvHorDcWVmsRtagOcM8yHyjeZv5Kws9
i1iLnRbdFl8s7SxTLessH1kpWQVYbbTqsPrD2sSaa11jfceGauNjs86m3ea1rakt33a/7X07ml2w
3Ra7TrvP9g72Ivsm+zEHPYd4h70O99h0dii7hH3VEevo4bjO8YzjByd7J7HTSaffnVnOKc4NzqML
DBfwF9QtGHLRceG4HHKRLmQujF94cKHUVduV41rr+sxN143ndsRtxN3YPdn9uPsrD0sPkUeLx5Sn
k+cazwteiJevV5FXr7eS92Lvau+nPjo+iT6NPhO+dr6rfS/4Yf0C/Xb63fPX8Of61/tPBDgErAno
CqQERgRWBz4LMgkSBXUEw8EBwbuCHy/SXyRc1BYCQvxDdoU8CTUMXRX6cxguLDSsJux5uFV4fnh3
BC1iRURDxLtIj8jSyEeLjRZLFndGyUfFRdVHTUV7RZdFS5dYLFmz5EaMWowgpj0WHxsVeyR2cqn3
0t1Lh+Ps4grj7i4zXJaz7NpyteWpy8+ukF/BWXEqHhsfHd8Q/4kTwqnlTK70X7l35QTXk7uH+5Ln
xivnjfFd+GX8kQSXhLKE0USXxF2JY0muSRVJ4wJPQbXgdbJf8oHkqZSQlKMpM6nRqc1phLT4tNNC
JWGKsCtdMz0nvS/DNKMwQ7rKadXuVROiQNGRTChzWWa7mI7+TPVIjCSbJYNZC7Nqst5nR2WfylHM
Eeb05JrkbssdyfPJ+341ZjV3dWe+dv6G/ME17msOrYXWrlzbuU53XcG64fW+649tIG1I2fDLRsuN
ZRvfbore1FGgUbC+YGiz7+bGQrlCUeG9Lc5bDmzFbBVs7d1ms61q25ciXtH1YsviiuJPJdyS699Z
fVf53cz2hO29pfal+3fgdgh33N3puvNYmWJZXtnQruBdreXM8qLyt7tX7L5WYVtxYA9pj2SPtDKo
sr1Kr2pH1afqpOqBGo+a5r3qe7ftndrH29e/321/0wGNA8UHPh4UHLx/yPdQa61BbcVh3OGsw8/r
ouq6v2d/X39E7Ujxkc9HhUelx8KPddU71Nc3qDeUNsKNksax43HHb/3g9UN7E6vpUDOjufgEOCE5
8eLH+B/vngw82XmKfarpJ/2f9rbQWopaodbc1om2pDZpe0x73+mA050dzh0tP5v/fPSM9pmas8pn
S8+RzhWcmzmfd37yQsaF8YuJF4c6V3Q+urTk0p2usK7ey4GXr17xuXKp2737/FWXq2euOV07fZ19
ve2G/Y3WHruell/sfmnpte9tvelws/2W462OvgV95/pd+y/e9rp95Y7/nRsDiwb67i6+e/9e3D3p
fd790QepD14/zHo4/Wj9Y+zjoicKTyqeqj+t/dX412apvfTsoNdgz7OIZ4+GuEMv/5X5r0/DBc+p
zytGtEbqR61Hz4z5jN16sfTF8MuMl9Pjhb8p/rb3ldGrn353+71nYsnE8GvR65k/St6ovjn61vZt
52To5NN3ae+mp4req74/9oH9oftj9MeR6exP+E+Vn40/d3wJ/PJ4Jm1m5t/3hPP7CmVuZHN0cmVh
bQplbmRvYmoKMTMgMCBvYmoKMjYxMgplbmRvYmoKNyAwIG9iagpbIC9JQ0NCYXNlZCAxMiAwIFIg
XQplbmRvYmoKMTUgMCBvYmoKPDwgL0xlbmd0aCAxNiAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUg
Pj4Kc3RyZWFtCngBrVvbjh23EXw/XzE/kOO5cG5AoIcEQYC8GRCQhyAPtmB5EUgBFP8/kGqSXV3c
md2j3ZENwTulYXezqtlNcsffup+7b90w3JctLVuX9nuff/ga2JrG+z7MU/elW7b73g/93J1gN479
EmMFe+r+2f236/HvvM/dlsbuf79l6Ke//jF0n/7ohvzvH5+6YbpN43rfp3HqEMeUvY3zuiKCcblv
Q7+VCJ5jHIUIps6fbl+6p+5zjJz7e4JdWvL3yvzGNE07xypm42CL47KdZ7YXMDTv+6b2jasaaerv
yzgsO2cEe8Q4VnwIZnM4vvuV2E38zOmepnFO9IN5EBObR3t5Prfju19jvPjBbAtfZ5j7wRyP9gpv
/X1cxjXNQ3f2k6XCeJ/SOCVLTPiY0g0J4ZgIR1HOMB8LEjjWsZoc/X1fl7T2CwJBPP2+WUhpGAzt
EAgcYAkMJTMQ8lIUrtgy3NM67qrmVDE4JcsWXB6bFX5mzxnZs/sbMmUapnW0iFLhqAlj6bEQ5rEJ
Y5/v/TDNjcuKtaHVsRqG2/MwVvie02587Eu/bsnimLdtnOZbE8ie7tM814wvc0ojVsGcBg3kDJvq
WAQX/Lo9D2TKKswWyJT/wU+wDWXmRhiQdN/2ZUaG0Fhaxnu/p60J5AyrY/FejHV7HsieJz9lRsZh
xioGI/20Y0G3gZjy0zqoNAkyLNNs9YPZ4FgbXB2rgbg9BtIPkGRDipga456lqT+pNAlU7ivKpjCC
1++gTn1WqA2tjtQw3JqHsWG9ICHAwlbXCfjI8QxNhsyWDQMSSMOACOuwtHGcYXWsZgjteSC7cTCM
CGRhNUGtyMwoH7MpP++aIPO+WG223kZdTrEyVPPDrUUUywb3Rkcs3JMCgu5nLaIpIAtUWfe1KSCO
taHVsaIL7TEQpkeygJItnVxT+tTkqTkYUt+UEK/Z6tQxTRCOlUAEs14FHrBX2BcrpJsl7JoXTNHF
EmTa7/uCBZSbbS2pgUX5ZPOQkhpYLakILsZWDJMogTwoITGwFkFkSGBRVMPpGRYFNMa6PQ9kR7Eo
hWMrC8WkiRISA70ISiBeQDFTBuIYZkrMiyqwoz0Ggg4Hv20JqSKpNF5UsXZpTIoqnTrWBlcKsgZC
exFIrmXGw/NkbXIkeRHUQGpR1dlLUZXgSlHVHKE9BsI2IzUkb00aPmoR1AyJkkqPJxCLscjiGAIr
ibpvyWqHrZhX84MlUNiwemQlVSVwTBniWAlEMAskL9lSxJAhuWpQ/Vr2NCGkYAYDUVgdu/lQdcy6
WgmwTdicdx22+Zlz7cKS2ZbJapdHcWPREwKkYLrL7gzj2Igj7FGJvOexZr+gtwxooiDiZIGw6EUg
Ny+Yyvop5gU4AskB56KcAwH7uYb21mUPC8QYmaf7uiZ0Ye4tsVMnFkXUd+o3KaKOxViUEY59XkR3
bgiX0tUsNWqnawLxQqiBRMEMp0cMwVmvwK5WAwms5kjelOccje1PSOMzuLEQSiBSMBnIGcaxEUjY
Y45wta5WTEfbgSTbKk9DIw2LXgRy84KJmUYgthjKbjWwugtVRmiPOWI7dTRybIzzpj2fXWoBUWlY
9CIQHKzKzlQCwUn+gHUcG4wo9oI0liNHaeCUO1OXq4uayckfIYTGnSlHClbC2Bb7J5fRWjtOU/XG
sid8SMmMOGppFY4Qbt3VBh9h760Z4pUx4kBF4s404jjDWEHJh1vzKJayw4AWq5/pvJZodrAuRhRa
PxmF11Q0GmIcG2zYNU/Z6Hocr2zDrNczfqmpgcFVvlgRp1JTGYiPtS7opcwxyJfzI19CweFPf8fF
0++4eJq6eifkP8muNm596tm2XkTAGN72a4RsGkfHcjdVrbXPUeRv9ebIu5la4ZjGcpxNkMhovf7s
ljjVapnPYsXHqLcnbhuLJSjvN0fV0rLe580OSM+fxTLHOJb3M3IDh4j1Sdhtr2sONyL1JrDemTzZ
4bwwzHHn93hklu8J++yUOY6wRy9kiqODcb0ZdJbjtlKSTrw09uiFrIkXx9QiFeB7WAKuinjxsdrN
n8B7dPyiQuwJwGZl/BRjKzbt9CQTKvg4VcGxYByjy/0YVkkoExbFHn0+McdjtKoQFl0FvqdL3+OG
51BBNxTBmluUNeBxW6Uj4/5egzFusUfMVMDEy+UcTg7yhLhChfpGi9XbtXKj7cdCK2TOGvYl9dpP
VXBMGT/FaF/sEVMVfLSq4Jjm/RHTnVOooHMJ1ny0quBYMB5zDgwMM26xRyyrwL1eVsGfoC9VcExV
kA0XtJOnUAFoufMst0ulqjgGW8z7c4wnZVeBXnItJWscLSoQExXOsXpBKmuhmQtZ42hRgZgw7piu
D7Eo9ji/ooJvdIsK/hQq6PY4lLGVZ/eqpfPGk6rgtmItqK1Qwd9TZcJiqBBYrIWwqCqERVYk2eQL
xlm4qrBHLDoydtf1OKAqOKYqHDG1GCqoF8tjrCu7ky7dmU+hAt9o1kdswLMNbsdVhbAcTFYMtkIF
f6/BaFHGEgsVIjpVISwG46cYLboKsFewvOKCNR+tKjimKpxitCj26DmvBT/j5KXgD6LBEdJjBiSQ
g4hI4MNiHcgBywWAJf9tgENqjvw3LsiXDw76xR7Z97ekOIk5McbjVCwB2hPuwx5b8ilEc8680laY
x7rJv4Mo1PuTcv8CZr9EyEVIT1rBlo9S7h2TTPeTpq6IMNiYsysx6/lBl9sL8juxF+z7e0o/sGKw
Mec+nK+wp+yHvaD/BawYbMwByqvL0tbPsoV9f1L2TzGeKbGzbU6YQZiPU/4dU/6PmFoUe/SpCvho
VcCxYFvP8aEKakX+FZB04mYuQZpbDA3UYmjg70lFEotij55tDdz8LF96AJ9EhZewekkJJf14nZUl
axwnKhATFV7CzD4sNvZ4McrE5WhRgViowHsMWKQK9l612NijF7JGi6GCWqQKfE9UEC+NPXoxBuvl
Rjkb+JPuQM8xfCOTxrofwn2XP0UbiKtoVSGuUlj1xb5gtOgqwB4xWQscrSqEl2D8iKnFUEG9BGs+
WlVwLBiPOQcGhhm32COW+8Har7i+HezX5dDEn0oOlnOyY6oMvhnBFyOpbErjITQIS6KBWCLf55hb
dwlgLkN5tZExjhUFiEnOn2NuUMy522jGnAf4IYdiDwyXmyLHEKFgblCGOlTY96+kCvv+FJVIv28C
GVWRhC/XKvf1R2XerSjzFUN0wby/12DFcvBO+0GT21LWwxbzXr6OEqzYF2MAsqpBkdtSxh1Tdk+x
Yk6MFYdg2z+g8vs6y/gDhg2OYx4/orOVEd7wRBv1TqLoQjQz/wx7UdNyahb7JJ/2zAt1Iyq/fCPW
aPnyF3hIHkogY5H39frYvmtESPgGDSr4lTIxXVvBi5BOz46FPZsLVwgtfj3BXtC6fn2nKwP1sHyR
R3vmxb7GiK9kjj+Vy/ARl+G3b3Y7fl9mfF6VPyziTyZ9vgT+9LX7y0d7sm85/4T/Tt0ww+uMT3A+
fsWtOp67j59v/+r+3Pdjwp/9AxA8TGv9YdwcmXvA/sC//hWD/BX89a2M9vfMZpha8O6vH7p/dx//
0f3tIz5ntbB6+wXcw6ncDlNJ43w6mS5PZkK0s8c1DzXsHP8N0+sRypA0lIcRdMcI8HGW03kTOh9G
YATnCOY3RXDkYMZHTB6BCvowAnKwvCmCIwfzujGC93GATIqEeKjCkQPs2hjB+zhAmrwhgiMHy9Yz
gvdxgFX3hgiOHKz4Nfa1PPjlTREcOVi3kRG8j4OmMLwjD7bpvLh9/1r4dJGDDR9Ougrv4wDVckDp
vJQLe3qNByvI8973acN/USMTnhPEz2U7bR9ub/B9zIIBBf41ClD2zHHy7pFAefFsYaFKv8H7cRXY
776Oza3oP6LgJ6RY9mYTn0d/qEGxeeVXazwRnA35hFe9sxmJg/2xTuL9ZZjqg9XX/DcYNvifeOvi
RFNa79PQD8/mi+xDM7fmkl2C6AHl/eN/Sq99x5JK+/YdfowEsHLBDz6J+Q4/RiMUvOAHUj3wA9kH
qDwgL6/4mYcHfmwups813tYe2/6HebBe94PN9GM/thDQyC7wtvX4FeDD+Rhv1/Jgm+fv8GO8oVBd
mM8+fM98bP1cy7d9PdWnbO5ZD67PZ+hxysNW47TMetkxN2goF2jD4QX/883zQ0rt46hoLMr4ki43
sNzIPtWzBys0zx255TT13ysxm0D67N3A2wKaYjnLNFV/YvnHCs491EJgF0Nqzt5MI476KnwUizke
azAWE4bwzdwxfhGgx+kqNxqrS/bHA7eH3u1x/OS+swccLjJT428S4gx5+H42aaUol3D815bWUKNs
/ZmqdO5dLqeWRQICLnVuNrRW+GcN7XpmsaG96MdItgZwrXGyob3oxxvAtZXChvaqH+PtWoFZvKG9
6geZe7Ews6E99HOxcXpDe9WPrYYf1NAe+vlBDe1VP7bKcda9UJnZ0B76ucYbG1rr51lDM32uNWhv
aA/dXJMHF7F21/fs1q0eTMBUaWjeRXI3w9ysu6FB1S6ETsC6jT2SNB0WfQSZLVmNj4Z2OLQYbbAW
hR7l3I6Buad4f7POk08RVuvtL21xI4R8wrECaT9bEYOvvrgogeaBlmlWdfB3ydsQu2RuQT+sY7TM
SsewoK9vSdkxHvr5QR3jVT+5V19awewYD/38oI7xqh/T59oKZsd41c913lbvGA/9XKuwPAI99HNN
Hx6BHvq51mnZMV71Y2v1Gm/sGK0f6Rjmw/Lg2o7LO8ZDN9Ixfv4/o829NgplbmRzdHJlYW0KZW5k
b2JqCjE2IDAgb2JqCjM1NjcKZW5kb2JqCjE0IDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQg
MyAwIFIgL1Jlc291cmNlcyAxNyAwIFIgL0NvbnRlbnRzIDE1IDAgUiAvTWVkaWFCb3gKWzAgMCA1
OTUgODQyXSAvUm90YXRlIDkwID4+CmVuZG9iagoxNyAwIG9iago8PCAvUHJvY1NldCBbIC9QREYg
L1RleHQgXSAvQ29sb3JTcGFjZSA8PCAvQ3MxIDcgMCBSID4+IC9FeHRHU3RhdGUgPDwgL0dzMQox
MCAwIFIgL0dzMiAxMSAwIFIgPj4gL0ZvbnQgPDwgL0czIDE4IDAgUiAvRzQgMTkgMCBSID4+ID4+
CmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAv
Q291bnQgMiAvS2lkcyBbIDIgMCBSIDE0IDAgUiBdID4+CmVuZG9iagoyMCAwIG9iago8PCAvVHlw
ZSAvQ2F0YWxvZyAvUGFnZXMgMyAwIFIgL1ZlcnNpb24gLzEuNCA+PgplbmRvYmoKOCAwIG9iago8
PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHlwZTAgL0VuY29kaW5nIC9JZGVudGl0eS1IIC9EZXNj
ZW5kYW50Rm9udHMgWzIxIDAgUl0KL0Jhc2VGb250IC9HTVdKU0orZm9udDAwMDAwMDAwMWY3OGRh
MWYgL1RvVW5pY29kZSAyMiAwIFIgPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9MZW5ndGggMjMgMCBS
IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AV2SzWrDMBCE734KHdNDcCTLSQvGUFIK
PvSHpn0AW1oHQy0L2Tn47bsatQlU4AF92hkvWuXH5qlxwyLy9zCZEy2iH5wNNE+XYEh0dB5cJpWw
g1l+d2BmbH2Ws/m0zguNjesnUVWZEPkHW+YlrGLzaKeO7iJ7C5bC4M5i83U8gZwu3n/TSG4Ru6yu
haWe415a/9qOJHJYt43l82FZt+y6VXyungR3xA6ZWjKTpdm3hkLrzpRVO1519cyrzsjZf8eyTK6u
v5UXdTRB1a5Gwh4IqoqEOiATVd0n1MeNlEAGSCJFoqpIWUrjHFlaoor9MeUhqi4TQryC6hSvCFVQ
3aGKI9lS4CfaJlQCHaKWKqEWCFoegDSa0Ohrn5rQ6J4tbNyn7ktklag6cBZf3989xZuMU79OyVxC
4AHhaWB2cSaDo+vr8ZOPAfh+AHmiqk0KZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iagozMzMKZW5k
b2JqCjIxIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9DSURGb250VHlwZTIgL0Jhc2VG
b250IC9HTVdKU0orZm9udDAwMDAwMDAwMWY3OGRhMWYKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lz
dHJ5IChBZG9iZSkgL09yZGVyaW5nIChJZGVudGl0eSkgL1N1cHBsZW1lbnQgMCA+PgovVyAyNCAw
IFIgL0RXIDEwMDAgL0ZvbnREZXNjcmlwdG9yIDI1IDAgUiA+PgplbmRvYmoKMjQgMCBvYmoKWyAz
IDMgMjc4IDYgNiA1NTYgMTEgMTIgMzMzIDE1IFsgMjc4IDMzMyAyNzggXSAxOSAyOCA1NTYgMzYg
MzggNzIyIDQwIFsgNjY3CjYxMSBdIDQzIDQzIDcyMiA0NiA0NiA3MjIgNDggWyA4MzMgNzIyIDc3
OCA2NjcgXSA1MyBbIDcyMiA2NjcgNjExIF0gNTggNTgKOTQ0IDY4IFsgNTU2IDYxMSA1NTYgNjEx
IDU1NiAzMzMgNjExIDYxMSAyNzggXSA3OSBbIDI3OCA4ODkgNjExIDYxMSBdIDg1IFsKMzg5IDU1
NiAzMzMgNjExIDU1NiA3NzggNTU2IDU1NiBdIF0KZW5kb2JqCjI1IDAgb2JqCjw8IC9UeXBlIC9G
b250RGVzY3JpcHRvciAvRm9udE5hbWUgL0dNV0pTSitmb250MDAwMDAwMDAxZjc4ZGExZiAvRmxh
Z3MgNCAvRm9udEJCb3gKWy02MjggLTM3NiAyMDAwIDEwMThdIC9JdGFsaWNBbmdsZSAwIC9Bc2Nl
bnQgOTA1IC9EZXNjZW50IC0yMTIgL0NhcEhlaWdodAo4MDUgL1N0ZW1WIDAgL0xlYWRpbmcgMzMg
L1hIZWlnaHQgNjA0IC9NYXhXaWR0aCAyMDAwIC9Gb250RmlsZTIgMjYgMCBSID4+CmVuZG9iagoy
NiAwIG9iago8PCAvTGVuZ3RoIDI3IDAgUiAvTGVuZ3RoMSA1MjM4OCAvRmlsdGVyIC9GbGF0ZURl
Y29kZSA+PgpzdHJlYW0KeAHcvXlglcXVPz4zz/7cfV+y3ZublQAJyQ0QiORhiyxC2CFoJCC7VQjK
ZiugRVYX3AAVBa0CotZAWAJojUtd6yvWDa1WqihuVNqiopB7f595boIhbd++7+/7/f3zSzjP7PPM
nDlzzplz5gmEEkI0soIIxHnFomsjZ/v95gPkbCFEmTxz/qyr1C8OFSB+hhDpvVm/WDrz+ucTrYTY
jhDSv3n2jKnTj13+7tWE1KxBm56zkeFe5s9GugXpnNlXXbtkwMFnAkgfJ6R8+i/mXTFVmKI/R8hN
Q5CefdXUJfN9A8RFhBxqRP3I/AUz5v9t2Gd+pNG/64/SIZJuwg6SLuaRdEKS6CcFiTnJ47yMh+wr
QmhGCtAP/9lDHifv0QIaIU30JxIgZ2iI9iBDiUh+wEyfJK3kbuIl48hG6iY5xE/Gk6FURJ0icjO9
L7ko+SW5iNxBHkoeoDcmd6H8NvIiOYMR/FmkpBcZifrjyQzypfAZqU3eS1SymlhIXzKG+slU8i5+
v8MY7iR3kd/RXyXP4K1eciP6qyT9Sf/ks8lzpAu5WdwgHdX2kdvJYSonr0jOIZkkm6xjRcl3kx+T
PFJLfkMex5iKaIs4hETJleQmspmGhBcRu5s8TBLUyuqEgdIzeNNQMoFcTRaTdWQXeZW66SjpqHQq
+cvkCSITDynAmOaQL2k5HcEeEa3JfskPyKXkIHkZ8+W/LeKl4g7p0kRV8v7kc8RHDlCdPkWflUql
W1tvSD6Y/C2xYjw9gJGReM808mvyLHmF/I38nS1PLidDyFi8+fc0g0ZoHjD+LguxZWyZ8BbpjtnW
YbQLyVbSiBU5RA6Tp4GbP5Fj5DPqpWl0GJ1Gb6d/Z1Y2nb0h3CfsFd4Wqfgo8B0jucDRteQRsp/8
gbxO3qAS+i+ho+hcOo9uovfTY6yRfcN+EFXx1+JZsVXKSxxLnE2OTH5HgiRMLiHXkeXA7W9IE9lL
/ou8Q/5O/kG+p07am86mD9JGeox+wzSWzWrYfLaRPcKeEEYKtwvPiuXiAPFK8XXxA2mVtF6ZqiTO
bU/cmXgi8WbyQPJN0I4d/eeRamD0BlDFI+QZ8hZ6f598RD7h9IP++9LJ9HK85Rq6ht5Fn6C/p2/S
rzBLYv5ms75sEN46jy0Anm5kd7K78PY38HuEfcA+Yl+z7wRJyBZ6Cg3Cg0Kj0CwcET4XnWKe2F3s
IdaIk8UkVqZUulgaK+2UHpOek07JlfJ0eb78hXKjslL9Q2uX1j8nSGJ2ojHRBNpVQUnXARMPkIdA
93uxBq8Co/+FER8jp7EKYRql+Rh3Ba2mw+kIOpFeRmfQG+lqegfdTO+jD9HfYgaYA1OArSLWn41l
U9kMtpKtZrewvfg9xF5h77Kj7CRGHhBiQpHQQxgqTBYuFa7GHK4VlgkrgdnbhV3CG8JbwgnhC+Ek
Vi0gZooLxevEe8Qd4l7xTekS6Sr8PiQ9I7VIb0rnpHMyk8Nyulwsz5V3yp8ostJTGaWsVd5W/qHO
p+m0C0YeAe2f/2Eh7MFMtot5xeX0JLIzqEgcmHkR1mEsdsU/SJWQwLrYeTnG5mMh0cOby4YI/sOu
pYdJOf09WS4zAVxRPEb20A/ZMfF5dhF5h9bTkLhDuFp6lUXJY+BGG9hT7DAdQPaySjaBbREI/Yzu
JJ+B3peQu+iV9BryGD1J+9DraS+6nLzN/MJYupJUJh9iItXoUHqKYATkBnE6ufz8FP5lhFaQD8mX
iQdEm/gr8KdmshEr+jj5mD5KfqJS8htwNwHcaCq4zM2g95sI53p12GfLsR9D4CC/kN8ge6kMLt5L
7ideR06RH8mX0iFQ1ABw0xOJOeID4qfJXslu2GHYZWQn9t1scjF2zGegkqeR5qnLsNN18JJS7OpR
ZDKZTq4H17s92Zjckvx1cmlyHnkNbX+iXelPdBt2RDNaVJKX8XsbeZ+uxz68+F9O7z9mJqaTFvIV
DdJcWor9cFJaJG2Qdkl7pd9Jr8s9gO2V5D5Q9CegZh0zuIK8Sb4iP1AVaxMiXUkc4+2NsU8iv2C1
wtNkIA2T+dizBeDjA9pmcg16uRHY24L9/DT2xinwicvI78hRymgAM7oC71fRz3DgeQq5hmzHCv6a
NiFnOrh2F/I15m2nvdm1eJ+BnjaCa7VgTB+Sz4HtpDmuruALg+gE9PUDmUim4w09ySi6Gyuwn1SA
sw4S/gB851AnGUCz6cNoV48daicZpEL6lDLSNTEy2ZvNEZ6GjEkifxukVxq5iDZgFA7Mo5X4aA0p
T4zBGN6igthI/2iO4h42I7laWJz4BXmNPIo1McRFyiBCjP7jjKp+F1X27VPRu1d5vKy0R0lx925d
i7oUFuTn5ebEsqORrMyM9LRwKBjw+7wet8vpsNusFl1TFVkSBUZJ18Gx6vpIY159o5gXGzKkG0/H
piJjaoeM+sYIsqovrNMY4e2mouiCmgZqzuxU00jVNM7XpM5IJans1jUyOBZpfH1QLNJMJ4+ehPgt
g2K1kcaTZnyEGd9gxm2IR6NoEBkcnD0o0kjrI4MbqxfNXje4flC3rnS3RR8YGzhD79aV7NYtiFoQ
awzE5u+mgX7UjLDA4D67GVFtmGJjODZocGMohqboRsgdPHV646jRkwYPSotGa7t1baQDr4hNaySx
AY2OIrMKGWi+plEe2KiYr4nMacRsyPrI7q4t625udpJp9UXW6bHpUy+b1ChMRR+DG11FeO+gxsB1
x4M/J9G5e+Ck1R1L04R1g4NzIrzyunWrI40toyd1aJsW5T3U1qIPtGW51fXrqvHqm7FSw8dG8DZ2
U+2kRnoTXhnhM+GzSs1vRmwwz6mfG2nUYgNis9fNrcfShNc1kjFLo3vCYeNg8hgJD46sGzcpFm2s
SovVTh2UvttL1o1Z2hQyIqELS7p13e10pRC72+5oi1htHSMzgPRUmRkzq/PY8DHnMUv5iGJDGw1Q
1BURjGRSDHPqzR8zepN1V/TGAuCnlqJV43SsyJxGbWD9Omcfno8p0kYp1xmLrPuOgAJiJ7+5MGdq
W46c6/yO8EJOJ+dJrZFObY83FhU1dunCSUQZiDXFGPuZ6fJuXRc1s56x+c4IAqCPjAJup9b2KQb6
o1G+wOubDTINicYVoyel0hEyLW0PMYqLahtZPS/BAqZKfON5yYr2kvPN62Og5L2EK+2+RjXv/D+H
0+8ZPLtPI/X/N8UzUuXDx8aGj548KTJ4XX0b1Q4fd0EqVc4RCryhrC3W6Bk4SUhjyOMxliaYpSDK
yyafr4LEJGujmIt/Mh80docAojQzaKS60Vk/JPWs1aPRti3zz22aFbVDo+bkKd7KDH5u1jaLxj5F
beNMjbqx7wXpC0ZnXScMHweOw4aPm7xunX5BWTV42bp11bFI9br6dVObkyumxSLO2LqDbAfbsW7+
YHCh1II2Jw+tT2usvrkWU5lN+4BsGRmwO0bXjN5t0DVjJ0866MRJZs24SXsYZQPrB9TuzkHZpIMR
sFwzl53P5XUiPEWGUxD6HqaaRWkHDUJWmHVFM8NMX9FMiZmXqoQ8Sq5oZqk8p1mvtra2G9QYThsS
fqEVKGTAXkYTstLMqgwPkcSEQHRFTFASUmUpwYSnaB7RoAwHSbDI+X1la+VI5+nKEa2VpApx5zk8
epREXVFXLh4UCsa5iNByzpDIWRIRW/Au4k6eEC+V3oIkyqJTjdWqqLiH6EPsk/RJdjloDVCvz+an
XrfNzzyZ1gDzhLQw9WZoYeYhahr1Cmoa82RZA5LTZfNLTrvNLzss1oDsSNfCklNU0ySnroVlh6Km
yQ4tHB6apnrT0lSb3z80YPUGAlaH3W6x6LqiyEPRhysrKz1dFKVmtsWYwrw+XzBI6FDmcbszMzMy
BMZUfyAQDqfpNqtVU4nX43E6Hf1s1h2Br/07bEYwHLcZOXnxKhu9zbbVxmwjo7IkMdovTdsR/lrd
UZJmpNWnCWkjIw/9iuOr7njrceCr0lmJ+IKiotNmEimOPzyreEmlu6LYrMITrW2x780SXoosM8Bz
tdS96HrnC6u7B3ng6PTTo4TWeWLlZYCop0wo4+CLAaJCzBMTYhRZ967ZW3mKZtQcq/loxBej1h2o
/EfiWM3HI/5c8wnd3PfPfehVH9L8j+iqxHUcPkq8/2EqJqxNvE/zQVBXJkaz2VhNJ6k27AWOHQJT
NUo0J3GrT9NsmAkonoTdZejaP6z3RcQSkYnNbGOT65ErTXycbD190nmSVFXxKfEB01geK3d6evYq
Y8zndQf8bMaz92y7YsLKlrWzLiqPJUafoH//EgcQduzpxJuJiX99OLHzvpkEIxmIkRjmSIYawXyW
r89is/RN2Iw77YqmOgn+uZ18TDBepMa0V/2HdJ+Vj8Y9dyAfzcnW4xcOxtNPKI8zoczv9nkVJgwe
O6hP+sy1z2zaMWD444nRe3535uOFf6WP0uL3Epln3vw2cTpxlo9kYeIgfYTys0XVPk21yLrSTDON
NHkL7Q3CW0DzlBwHySIRUoL9EbLOWhQswiaqG3G8FYgYcfJ0K3VVEFdFRY8ST9TnlWUlv2fPXrGb
aajLwsm9xg9ha2joletumR+5Nn3aeP6+/nQ1m8O2YfeWGtESakAF7YW97BQiQokgCoMkp/kugYTE
R37B33W8boTz8zpSfLIOr8Be7c8KcHgLJU7w3u7E43GMXiA5ho/1JjrL6zBa8fxoW/lYe5SUof2d
3CjAWzMyAbvbLrVA24yQO43hS/Q1+g66S9ml7bAf0F7W1AmuWn9teELWLNds/+zwrCy1glXIPbWe
tqFsqDxYq7bt0F5jr8gvaC/Y3md/kt/W3ra5nMFIkAWbky1GrtsfD25XbVmOYgdzGEg5thMp42gN
bADhbO9RSyj61nMmNkecHOn8vmEEEHqyqIEDpy1SV0dLA36XU5Fj2cTl7NUzkC0rssvp95eV9uzV
0+XMy2Ol7yy5bcPid95N/IRn2Sh/RrymLBVILZv3JqYk6vdvxGFsO31g/8Yv+4+7KoGfZ6Eb/wJo
Z8/2BwYfAvLzgAONTDC0K9kv2XomgOppYdMUiYLTXH5A1SRKrBrsOJOAM8rqDJtExCwxIjaKohjS
D9EdOBGlyKJyBOeyYA9VlafrToIoSF006pKV8p45vcqEvMSJe9+8mrKS42Jsw+Bkziur+BqW4Sxq
xQgyaJUxZV9wf/hg2qviS8EjwSOhI2F1YNrA9IEZE0L3iXcHd4nb01U5HCEFcq/wEHFgcGBoYFjN
CeaEcsKCP0+cIK4Jbknbkr4lY1f6rgzVTTKcGZGMHhmLMlZmbMh4N0PN4Ovi9/riGcxpdWRwUmOc
sg0QEIqasEakmT3YxKjV0UwnGLEsa7GVWfnaWbd7JO2o349DCCXhLMdR52IWymxfwNPmClZWjuDs
obWo4TgETFFdQ6XLXUFdZUV1UBsOkoxkyx5XBR/DHocZGHZnhag6KyTVhdBVUWT+1O6W2cBxkwyL
lhZKY2keyk/x6Aj/6mo5ZQwfPelpkgYVNR2QkTzWu3fvWtpQB3pxRXu6e4E2yuN5MRBLbs+cslKc
bkA2oqyI1nP5zm3f/K6oz4zaSbPVxBchqr74/pmLR5Qlvr/YT6XE2buo9qfdVRPHXz5j7i/Tv3j1
q99e0TSt/+lReXyVRmCvpGGVCsn7Rulq3ys+9sv09elsu/CotMO7Xzgk7fd+EPwopPq99Bb/LQEW
1W1EpAGPP5plc1r1ZppjWGts1LDdBsFjo/5mygxHlqfYwzwcvZ7taRIFyvc5QVegP6xTKbLF7fm2
RmsL1sDqdx5dnnVb1tasJ7OeyZKyjilHa3JoTrjIfzSwmB4loS7ta3EytRjgTXUnXRXFdW0LwleF
JxtOUo5MMC0TpRyrQCrQR+o8uebeMrGn9PKfR2M/VoadCK7qx4PEsnNGUKdtweiJixeM6Tk8a8GS
SUOHzLQkWtOuen7pG9fPemvZpsTnf3wp8RO9KTr76pXz5/7K95kwZ+KwSdPru9609dKVv1jz7DVp
T930bOLUZ9hPQK44CHjViY18bFRYI7YKzRqyFlnHWq+0fmKVT9qoLPrFXLHANsR2qW2H7YDtRZtG
mUqssk2RdItNIVarzdZMf2uEBdErgIkyq2gTbEzUiWLYWmxHkDhMC2AqY3TvfiKKaECa6aS90m06
xcoww+1UtirPKIISdlSx5YyxkP0QvYQOMXf18QaI/xGn68yNXQWFoLWukqPQXWHi0F3BBbuYEunt
pNvNepF1hPV160dWiaSIFugtgpZVTstckOsu6qJsWetO9qtv9u9PnEo8SfO/F35z7vIfEu+zTPpd
wgKKuxQUVy5tB19wGoWqPWLt5R7sHhq6x/aAfZP7A7vmdnncUVfMfZMb7IjadGDB7XI1s22G327z
2u02t+7lNlWDCqPoBjC8C8jrgEldaTaI1MmGLUsv1pnOCVHf7uXEZ/H64xFvidfwCt5m+pjhhfLl
LHayYmeVs8YpOHlVJ3+Xx+Gwiw4nyPFIgBoBGghn2Ztp1HDbFtOnjhBqwDr8JNgLeMVBenEbmwSv
P30cPL+ORzi7dJrcAhlFJvPgj7oG4Jij1g7UmkLWpFeTVi8g1HwP8Kr0LCsloFDIipxLadC6aMSk
65ZOXVp/fAM70frXrpdPO0zFObclXksSujRjyrzbNqxefWWUnU38+GNx4tT7+2597gPQ4kRgvAto
MQD79NNG37mWhepqdVNoh7RDfdS+y3PQvt/1tKfF9YbH5pN6ugY5r/PvY390HvEqh8kbaC5SJeh2
pkXAtDgKM4GitO0OW1a0OMqAEH88ur1Ko4Z2REtqgtZMa5qepBSrEjWys8Ri7HpeR9zuk7CdF2ce
rbFSazg3eNQdyjm/tVNy8nSKyZ6uAwLbJCYnSL6j+V4GqVEpz+SAwAq0IWxZCFACXki9XHim2KPo
SJzSxw2s/aVzzpbGs4kzb/w58Qnt8tcdf2p9cNnokbPnjxs9XxybOW7UttZfJU6//ZfEKVpL19I7
6fTD575ce/d162+7aTmodCL2bxBUaiGrDhIxeczo4XDFdUvY0kfsrQ+RJlh2WX5ned3yvkWPWqhF
UEiWpdjCii1VlhqLYOEzthzi6hB9/ABjVFRUq4qt2VSsUJxq6g07qxGoELbhSGNtwwK08YZK7Efo
NFwFP2mSDp+/Ofci6Eg+mbFA1O3uNVF4dvH3N9DE35STL4oPUukPCxPDEp7naAlb8iNocmzyczGA
9Q7CR1RCbftK1IyseF5z8ozxC0Recr3keU96TxEXOhd5VzqFPNLF2pP0tVaTS6xXi1eo0Ip8i/NX
52+ybQ4+bHs0+Gh4e+aO/O1dHy05GD6QGVjsWeVZ5V2dL27COm4CptK7b0asSOPxXKE7n3pV95ru
rPshditEWYvh9Afj89NXpLNt6TQ9XXYXcCrSUK2kwChgBc3sVsPmtlVl12SzbN46m+eEZSnrqLa4
6GiNgzrCpaGjwuLco/5Qj/Mkc14amOpVXVVrXZHTlANFJ+uKTLRx1Jm00yYJSENdURHNyyuPg3xM
8cn5vhjLzudZng4kJHSI0yFXXfHZW2+emFt/3fJE63sv33T/ooNTakbVTxk5uj68uHbigmtrZ80Q
At0frH/43Xcfnrm1S4+nfvlaYs6vji5+iY4ed/mUcTVT6lsvuvbG6xfNuv5Wrp32x+p423bjEWNS
X9dw1wzLdepa9VHpUXW7fbtnHzko7LM3u/Z6fk9edbV4XHHPBEutbYprjKfeI4ekxf57Ah85P/ZK
sz043PLNmZVWjM3JcYeNKTmjEWxMjmQncqLbSzRao32snWrbnNtSm7ODRE5DNexPW/BojZu6w7mp
fWrtsD/bkW3K3H+1P032BQS3cbBe4FesPI6tyTdoLDuPmpqLz8RrHXXq4wZPvM41d+sTZ6n2+sc0
M/Hut4+/zS6/fszIWdif8+jYzLGjtp37JbW8+zF1JXYkFiauTmw5IKSv2fjLm2+9aQWwyK0Fz8CT
qhCd9j9IlORRQ+tVEZcL8FBMAisoj8sGHkgdNUZF81GGRyHpAl5YoBdbe5NeUpV1LpnLZggzpdnq
LP0LwTFMhgjWqKBrmqholEaI4oUHQtZEMSLJXkmSVd0IZ/TT+Sss4Yy4nssEQRbB9p4y7LLCJBGu
VtWK8zo0zqmGJQt9QFitoAJtZjmGlqXREm2FxrRDLIeIqKFFoI+HLJdf0XYAaw2B+52uawi2jhw8
Y9Dn7UfyESdBzsXQPovMA/fq680DNwLFWVm5+oUXUhJ6rxbXbHFSxPXJ4Y2WscMbM2EyO0iEZGKP
KuqHkglg6txuWYRumdIuU7ppNCrgl0Y9giA9k/jditb9SxMvsr60osurL9IRiSbp0Ll1LNJ6DIcK
eAmINA2Y95AIbPZHjarFXehs+5Iun4vfi6IW9WlyQddort+d5avxsRLfkz7m83lj2blujxrx5lLC
0vLnyyvgJhtekP8kOAcw2aRZ4hDYN+Pk2N3oPqp7fff53Vd039B9W3c10r0ErMSbHSERTwmUyma2
vqlbj7Htx5JWqOZ1Dd8XcYFbB04AZYaDyQhM5dyXXLEno8KHl+wJ82DFbg/Xx2tRqV22nMeVA7ja
rUegdXOlMVqaicO/bCqHOP/KUhQqf2mvnlzM5OfFBFe0LZEX28iG/fax1ZPnTVm1oe7BRcMSnyVs
tOC5J7pcMnH4sK5v7qLubUUDxhpLX5UOZVx2z5RZjxflP7V8+tMNNpWJLyaekLSJFw8ar0mtBxNL
NGvdyAGXdeGa+dTkCely2BLC5F1j5CptrXetfyvZLL+kvS28bflO0HK1AmuBrdBb6F8oLdRWSari
UQIBTyBQyLoIuZJSIN0jbdJeEX5vkapoDfSkMU5Cj8FBw8wzkSuIMxFQr4Ne4IswAsFuomo37O64
ffgUB+Vs1/AF4zgvFRjZ7m664PjWPoF8S8yuwiVg5b78bQp1KFlKCTRMrF5T2rK2dcFqjHRCimNR
uEg/jSPT8SIe8gjEGQQ5P9ZIshiLcAYRjQT8gZRoxzkYklysolkDEq9/k/gwsYZeR+PUtnN6aeJP
4UcW/ea1l7ct2sXSLj31Jb0NHuur6d1bL2+sXrDyq8RPia++AXFS3DMg4ilQqIVsMC5SJQjfXNmd
JdES6UmJSZImiLk4JutaroXAKzRcYEN0AiEejthKbAaUalGLYOOXcESB2qwdqc2cFqR0panedSY2
CVSWUSGBykBsPPiZ2AQJ+9S0VPig1plwt1h17kt2rDUilEmHziQO/5Bo+AGj34TRr8ToNbLAqMLo
ZSlXiagl6jPqx6pYrG5QmaqS1BQ0jL9KrsFeGiPgEMDCEUuJhVkuHL/+r8ZflzrMt3IzH86zrZX/
NL5NwsnWvmx66xY+tkfOtN7OMcv3fhcTs78xcjVR0gWm6bmi+0koMwIxrY5MUVXgVVIj8humsrPe
yDZso2z1NmG+bYWNcSRvw+lFtDFLCs0tYCopRC+8cFsv+L6uzaoLu5xpmuSjNbe1YGJaSG1rHnTC
dDuyYRhK/W6kBWwQLUgcbX1KOtT6DOv/UzW7oZVrevdgTs/zOdHbjbAqU7db1yWBCSI2vQa/oS5p
qqZDeztgFCmyFzZbgQsDHcJA1zUwf13QBFjYZAW8H4tALBZVUWFgnL5HGqIiMNyKSVrs/IzbCauN
5/NJhjhlBVMbJmWExZxDmC+4VKCCAHBmCJrnMTOicpOr6qxUXxD4szLF//dpEYstDny8ukfNhxzg
goAMnGSE8uR8bYO4Wd4G406LqKyUd4pfiN9LkFvJY029xsQRthg5iOTKF+nXCquEe4R7tHv1XcIh
4RVBfxaXOc7pwkX6AIEtgBZFixrqas11kJNfNLktVXJz8gscmSxVYonNj4fVWyVGLO4qjORIkyOU
Cu2BVIgaZj4qmWFbvT12TxVGzH+o+QQb5oY92FnxT3HdgxWcQG9tPcqqEzckrsIGb13I1rf+/twN
rPG7xGCsJEgU6tEhYmVBw2IR8tQ8C07NFC9ZYWjpfeJ6pE9fPtNjTW2h8XB6d+TiIWOdP9W+0SHB
dN3D0kWnlqXHWFcxohXDiDtbnKHN1RezJeLD2i59n3ZI/177SfdvFTdoW/UXtVf099hR8V3tff0E
+0L8TPtKty3Wlui/ZjeLv9Zu1jcwZZJlBpsrztJm64vYUlEZxIaLg7Th+kR1ojZJV4J6sT3O+ohx
ra9eZVf4QV/WNN3HwmJAU9oO31lMhFoiWRWlVLZbSyGKnTB0j1JtcQt/mLO0Y/VVw54ft/AHsrYY
Th6xqAJXFZmiw1qAnVQFC1agzS5VR4tPOt+GehGowPmur9ENb4mIqqaVpswODPbiUoHBAsHQjWAV
GbOC8DVFzbJTnIltTdyzfghWWrC/pkvr4mB8LUZg7Li4VKoYynKVqk8vxyo8bYlYrKyZ9TbclBAD
FYmBSqQ0iysB6MbWA/vfeRpHvyJn5V+dleGQs7WhtaEyHMQxuggZzuMNGDw30ldVpjZE0c96UJvO
4xkLdUdNHtttiXAFB2IGPw3wchQVEVAtCArUlKIq1+30MO44KPSpxMnER4lPE3+GmhMUvvipWrzx
7DIOoKnN4A4xzo3pfxl2TZDVkBBQRbcKra85STjtIzSnzUOjC2YklCoq2IQqqIwpggZ8AVeCyGcs
8hmLpfIbpg12vREyLKMs9RZhvmWFhW2ztFhYioOrfD9yXJr70j52bFwrNUVSO6/UOa64wR68Ayoh
lCBM0mSXSAFJVaZ2A75RUbG6O588EJWiI64MHjM0UIUaSdFIywHojKphKo6oCZYx0FQZV+y3lKsr
LOXmxC4Kd4+rY/GQBL9QKhiCWC3cBGG0Td2jHhfkF4Q31A9UGPuL1bjQV61R7xC2qtuEJ9VG4RnV
klLIy+DGMPBA6phhKy6Nswh/KN5y5GwytGj3OBuHh1m7OjOCFB4qU5QgEwJKV5av9GVlykhmKJex
CYrmZWnKCDZYuVd5THmNvc++YCeUH5klnxUow5QlyhrlcSZToMVcfI6DItjeU6RQS0xK4LKBujbT
CJtEPYn3WneDALoJb/1ULTx1DpdNGG5JnpBOQAdzwFP4kDF+k7RJ3WzdbBdVqthVhxLMDy7RFruV
xa4lvlXiWnWtdZX9Jvda7xrfmsCa4KqwVXGDEsI+d9gbDvrCiqebTQt1UwR//pM6JbpTj+iCzvXe
SEmGkVGfMT9jRca2DDmScSqDZTjztxHKvR4lpny8uSl92fOpNYd6ZWq93MwE30IVPCAg9AborHGo
p716lrUpVQQuzPNmkdqBpU/MWtuEyzw3JZYlnk4cTCyjPT7fvfvTjw4cOMbePrZ5/p6iPjhm3Zu4
PzEPqtXsHxPJZPLcGXiTmKlRncEu4HhYbOTK0kHvwaBwsURnSe9KzO3KtdntJM3J1SoHUTE9LvlB
wdDruWZo+LMyStrmJ2U4HR3Vq/SO6skIZ0qXNynYVE6gmnB9scGUBVAT+bkdyngsFoLxtl0Xv5v+
idrHLNs1bdPIua88+9CTiwZePqR8m3TIH/3oydXNc1y+1vfE5xL13af1HzXbpmM+XI+BHoBbo1Fy
xrixwjHUMVGZa5lr5T6ibbH99qOaLquyHlD9ek97tb0arlyn5vLavQ6vs6e9p+Nix0L7UudbumWJ
tiS0KGONtia0KkPW/F4Nvt2x9oX2lfa77L+xS/aIzeq12awOq88W8Od6nF5a793mZV4viUQ5uoA4
H1HBRp8y8onNCSP622n52+RGuUU+Auv+6vkxGomVxFgs6uuIteweHXQHfgKqazv/mMzxZ7WOn3E4
B6jrYG009W8YxsELS0184ogT8ESF7iwWc+GI045VHGvmff3Oiueerb9+blPigXcXjLt8ZuWf3plb
WTMkZ+8J6VDNqzc+8l5671WPwb5W9VhttHWLMDJn0oBhl8I4DM45DHaOv2PvdKVHjIsOupoz9he8
2FXEIcWHQ4ovWDRDmlFwrbzEdm3B+9Z3Y9Zafbx9fHZtbLZ1pntWdE7BrK6LM1ZlbIxa3TEusTOz
4jw0ZoTC8dHZo2PPZj8bExuyG2I3ZN8Q+0v2X2Jykd7FlpOdE6uwxWPD9eG2QdkDY3NtM2JLbddl
r7Wty96u77DtzPZApbPJ2XIspIds/mwlO6bb4M+YEDRCkfi8IJ0X3Ao/3yE2A56YFsMarshKo2nd
vAIZQjl/HxqOxLnpeRSu2Wyg23AHoQVX9v4qGuEKJ/x/3bpowW+TsBYbnkA8MFzJzwt3z8rf5mx0
Mudw+q0rdaoIdftj20Fp+NhJu4nRu9Y8vcIIirBoAT8yNRSdris6ngoXFB2HtEuxLlPpygY+0jL6
AR9H2sJP93gqsoEeBMh9ZY+bp44YDneFLeKu0E1w8LwvDLsVebYKPcjBPAubrNF8tLuofH30Prby
7HLgcahtYHZ1bLv+aLZuWvzNrfiznTofR2HTfAamA5sjt84qss8b8IsmZfHz3TAaCW9dfdvtF10S
P/jX+tXLv30U13cDSuKo5/rrbxha3LU3bXxj4c1J8kziq8S79KP029csHR0fmubu3nfC0t/Of37m
31+1NVxRnl0Rzy2eedXT65d9eCWF/oB7fDgnHcQeVnBOihVrJWKJNEqbD9vKBk2RqcRy4TBRiKrB
FCMu5/KWdjN0WYE1BlesoYEj6RLso3CPegXbwEQWUlsfT/FXOOJ2M6wKt8aC/+ABS8zxNp7ET3G0
DoKjnJ/i6MeJEeItiZHic2fOnO2HUSmwFq3HqKw0abiLhCI5YimziESmFiPcJw49eUUTQqFDuCdU
Dil/wtC4NSmEBywiqRThKWhTx4xaeIDFCB4K1ELZGiY+rZDkasqX+gnrD9qP+g9W6SXpFf0l6wfk
bWih71q/Ip9p2mPib6TH9Eesh8Um6bC+z/qyqHUXs6ViPWK9T7xTuk+/26qmlIK9KrXbMLiWJnuU
Dw72WUSgREb5kLc0pfTLLYaPa5vTecoi4+qwApUSZ1ATMx00SpPppO19ziJKkeZkSZMMhbI5WWpc
JhBrhOA+S4QSLxZRx4Gx1KJ7cRVGkxUccjWvqmqixWptUz3xEsGKg61oFeARww0KWVUUiR+zwDlN
JRSsE+tbDB2zmZYYekR+2vK0Ucx1fiStEW56YzRka7euhUMjWuvCwdbWcKi1LthuYEtplPzJf83R
g2vi8oPpCuMnrxHdO2ia/KZLB73T1JhMRbMhtZPMQ0xDHTen4eDiQUgpnZF4iBZ/RK3gG/QvtEti
S+JFGDc+gsLhEr49hzsY0DqHnG0GYQ5NfoE78/3gqymlDcZsJaymSxn+8LC0IelDc//k/Nil9QxV
hybmzQzNyluVd0fozvB2uNZfCr+cZpVlm88vh/z5cqGvNrSYrWLb5X3yi7L1mfj7TpaRU9rD1dWW
YxR1j+cY2QV4hDLi83LO5bCcatOFXmJ3xC/KoNy/3pjxY4aYkdGVlhEDuVwPYWR81Eh3VUWNNCce
uHYUbWbX7hMVq03vymkHZWaIYjNEja6oYRheS2aPPLVQK7DVZlm3Whk0/iSUfsMO/3u4Jk7j9dg5
t5YATWWF0SkB+nGA1gSmBOYFhECobE7/Nq1nAbhjw8k6flCGHYmnjvM7CTguFEHhhRps8kzToFGU
Ius9xRm0ofZku+Kbk2w5kJYRH5czPYfVFdXWoQXEo2CHsYBv6gZY/Roo7rnAO+D3wQcQiHLuJsOW
zR0EUKxw45i7nyjXQExbtumUpzOSRX9846nm4UJabuIri1MRhjxc9/DTE+674/eXjJo3fBy9vOdX
Ob0mDbpkcJnTwj7pfu9dtWsPJJpvvumS9F4htbp6z5rJtwxPz42kjx7cN/FHd2kwv7LvhNK8Xjkz
gPLVoIa7TM0rndx/EBfXzhg9LBW90i5OY+4J8gR9gn9CsDb9B0UuF/va+nrK0waLw23DPYPT7lLu
0XSrHeRPwliEPZLi5WvhsVgcRA9E1fD8TJrpLGRCHkx8hYaVzifcrh7KqErhG76ok62Vn4+ERsa1
zEquZ1ZxXawBxjuYFCwz5Zn6TP/M4Jx0qQ76dBE/qwN1uHHNDf75Pg+kwHntEzd7btzzXCLRevDS
3YY7PnRp3a9XzpqxCmf4U3clTiR+hK/4g0trt7Auj9TM3/rY/gfv5xx+POZehZ0QIn8xRk9y1Lpr
/bMdc9xz/NcHl4Y2sU3WF50vBt9zvhv8Uv5S/dLzpe+M7Ont6e0b5h7mrw7WWudYlT7uXv5eQWGx
tNixWlrlWBva6d7hP+je79fsnGKDaXEe7nN74/YyG88JZcbNEN4+2yF8iaEDZ26XhRioSgzUI2Ub
QKeHwL5EFEUCCuW5NEqKbTxii9bgVBxOU6LeUHhSCpXmPSAYQ4tOnyzi5tC646BYbg1FmFJugdOU
+TPlIeklcaJr822KPRJf26+omXP98itHzfRRb9Hp179MfE39J5/7jH1TOnbc7bue3nLpvOLfPYfv
JuANork7uMY+Drib2kY3G4xu7lq5Vq91p6hlM0jjjKbNz1yRyfoIcWsfXzw0TBhkHeYbFLpH0zid
7JEsnGoMu0WxO7AUeqDQbsuDU7fQcDhI+DZOO1E1lDGp0tycfIYN36coxpQGqVMJ7LwNnFZsc+Q5
+hx3ilrkOtxrL2+bIM4nAZzBOpKKODVxtv/uyQcSZxPP7bmRhlrdxYOum7pm5azpq7dcWouPfiCr
aOgu5jw3f9clVz/y8IEHt2K+/THffNCKl6TT3xwkTuyTaksFbFi2jc6d0g79sHbY1hxWVS8dwi6W
q/WazJ22/fL+8Ev6y9Z39aPWM8oPNlu6I91ngEP4DLsr7vA943vDJ3DXQZMjs8oMYcLyNbNbDCj5
7lH2ejuzB91cL9wfSovTMrdpUM+IpAzr2YWpsKhbKgymm6HhADvdBpTiuiIjU9xuoLlJtLiDHN05
FoVEabEvRUTFmVMy52VuzRQzHVHVsDniQHgbNyy6wMJ+Emqh4Q0aBd6qoJHpwAMsOMh5NZdItVWt
ptroxkRQw80nhEpmiHo83NNeFY4n3qTIbEBQAPc7L4cJsjnZ2KTp/cxk/2gVzCno+jjnoNwka3jt
BrBk5y+189fDlRBI2fNqTbcVTuEQrWVcecJJtQjGfzkWgerI/fdEiJo3dDwp/THAfqLBnl8+mfj6
pjnU+9ZJ6pZbDeHGqQMm5wtLJlxWWUnpmOJ7H9x3+0eghaLES4mnr18/hP7iuuUDB17D+UYQG+Bz
nDz8pNmAL4F2ESPOiKtWXBGUVPGZIPP5Xczr9rvsHgdx2uFEdTKvpjosdIolCfM5Xwhdpi6Hnyb9
uNGEZCZuR+PTJ0pkj1fXyqpg4BgF+06Bs9g1xcVczVQ0bHZPHvNOIdv8LX7m5zShWeP+UGDJQTYn
dT2kCCyV300+VweVMnScBMFUue0dAO91Q0UpvzrbJoc8sJNwQRRQuMDx+fjdGlyKCW6puGfhkmvy
Bva7qPyPf0yc2CLmjVq1cmzOC86K0cM/OndAGGru/cRosd7UIIrpSGPa4ozVGcxttc3vscq2oocY
oThNCiW0jJUJBh3IBgqXOmq9tbkTCicU1RZf6TjjOuNx97WV+fsWlHXFMco/vGBQ11PW1oB+K2S2
xWqzdLHa8u3+gK+bzQpFP5jDd8A+cweYG8DuMomkyWJNhQVdUhsglpsKe8RTG0HzpZmCfwquI167
J8uRzwO73o0j3OJTgiG5S6ElLxzkTEcLhcLh23rQHmBBzYZOynKi7lDJee7D/dOc/zhPOltNRZ0L
q9bTbZafdvkPem7CxjYpGItjki81zev8lMwBp/x2Eddg8i3HHO+c3FmFM4vmFINvkbqA5OdSzZT7
5eDRbQQcKI/COMBiESgKHS8SLKX91YyCCVf3yvXYlrW8e/00Sp/5/Qqq9Jt/+LbE3z859+v6Wbeu
mT3j19X5vX2ZUX+P2OX3Pb7vtneohYafuPvcxU8dmlt58FY7+/Wj9z/4wCPb7gcB3oFTTy34up/s
MYocNAsfQGIhnQPoANef6Y9UUyS/lMMmuWa7JEqZx+tyewQvow6O1AwBDg3d69P9hFj0PFUzIjnx
JzWa1KgGNEPr92fnxDcEtwXZ/OCpIPs2iBv23jw/Z32GA3W3+egpH/WFAlUptg9jGvddQCND7Pu2
VOo0ABvtSeA0YKpXqnlmgjTgCgK8qiDluHmRR+ZR+tiap6duqclInIiMvqj66rIEbAutn20dMn/N
ba23sx47JpcPWruq9RtMGgzTvBmMKP9KYPFBomFkVS69ytBGaWyF1qi14BrSt5qUpdVry7VtyJAE
WcEnBAKkmEGOkGNoWQedSJZwc1JnCmQmn50WzYmLIbVtXuasUnLM3J6mc8x0KUGeLeBXcXDRzbxy
nDiB7yv3UzFx7uwwMe/sB1ihn0c49iA3iRuFfHzSKImtkBrxlegR6VtJypLqpeXSNmTgoj6GpEMP
o5wwzZHgkvQ/jcRkDAtMLQtXnaVDP1XjXcvg8diMnZ5P+x4khWhdh3eBs1p9st8aF+JqPBiPDWKD
1cHBQTErrLOFY7X6whWFWwsflnco26375H3WxsIjhccK7aSwuHAUCp4p/LhQLjTC6fEqpFeYhZIS
FZVwBmeFe3SFa/1Gpqjgw4X8tPT0vHzYMmWHM8/tMiaX17voPCCnmVUbjnBaXkY68ual03r4i5G3
NzcvL59rEXsIycdsmxxaFQ+Nnhh3PqrmG/0BlYCc/Hi+0eeieHH+G/kf5wuO/Kz8FfkCyY/kl+Qn
88X8UMGnKSJsM+lCGqX2fyXuTxSBzX4PRxWCdnI0D3lgC9jw5o0y4HMBHAIgyiLccAdd+gOm5o8L
oZw88znfNcnzZ0pdRoX1LTM3llQ/dNnChwpArxn5o/vO7p44kVnVs//sbokTYt7tj44bP37clMsG
bW6tZVMe6F45ZP3GBGPV903uWr3yntZzWDN4qcRarJmfbDWCiifgmazOhrtQpFgt5yB1kONLpySb
29Wl4FButVigfjGa5yfmdiUUd/3Iv9uuuiXPCmNi4R7YHDlezV1rpafAuS/ctZxT/vPGNa2H3J5s
am644v3z5OG0Tm1esTZxImd0xdBri0D80vq36u6tyWKZj8/oPWrlnkSWmLdl78DZK3/J9+oY6GT3
YqY2aPCbjCFf0BPqD54ffOJL7AsYjUNSSGO1zgmeCf7a4Ca2Wd6sbrI2a++wP0kfau9YYXiXv7A5
d6ivsT/Iz6svWqWF6lp5pSqAtkCFlgBHkVdUvBVKuD5tPu4/2aMwmHRQuVMHF9M8bh5aOEfX5jhn
Qg+dExRpHdg5vk2JuzEtXLHk93/zcjtc/BqzrnXL32g88co3dyR+WEcjG6+++u67r756I8u+mcrr
Ei99+7fE8yuTOx/YuXPblp07ud6xmhChF+brJDuNgk0S1ex0rDRTWigJxe5J9tn2+W5R1xzWLCu7
zZq0siprDS5AN7PFRqGiYI0FJusF+GxFK4EZS9TCy91b3WyKe7n7SfcRt+h2kjxu1ig0LIytgOkR
dg1X1UGanlIuoFucX9Lv60IjUuoFmDC2RwW+kuVXWhrI8MYA7gSVm/dcSnsDAVhirCswkFI0ZBfd
xld14JWD6msnXnxR3zHFYt6mKweVf9e9/67E3zDHEqypE3Pswp4zWmSXHFPzA65AbLN7s3dT/t1d
NMVb7WXuw7aD9pein8XO2L7Plgtt420zbHdbNrl3ZB+0Kv1jRs6gvFnZ0/NWu1d7V2X/OkfrlTdY
rrYMs9U4qqMDYJPNyc/rZS2PcgtkeY4i65JLiwZt+dbs7OyYkpNtdL3GusS71LeocGGXNb6VXe71
3d1lb/bemG0FvS1wc/CeLo92aewqB6J+IxqL+430rHiWn34MVa5MjY7KvS2X5RrBjHhumBspjAA4
z6iutKQrLe5Ku2ZGS5zUWUajpiYD7mSGqJLizdxHFipa0swPPefAcUyLRJv4M+8gcffSSZJSOIxy
mVKZ+mleds9odXQcrQ1Mp3MC38PnGGBiOJrNCjw2KysIT4HluLrAMipMw9UeBbog/nG1pB3qGtIO
kuzka03QpHCvzwy5tbcpM4enjzVl5eDSJELYxnnaSEPkShvtmV2dvdl2V/YL2W9ny9Fsq00UcSst
pauRMq61NQW6VSE0FXsznZ0b56GRAf5PzEvWo6hYj+trpyjsfU7T7i2aNT1+1KTUGAG/8hTxFK75
Ygp+A2qgvyxgoN+AgdNCwCjvFQ9wi1PAyC3EA/06AlmmcUcMjA8bUDgcYToqnAyztsmbpm/glh+P
uV7Mbw+Zihw/a8AO3mZl41fcwL4b8FOXuhOSk3zF0HCZwFGAR7Q5+c1+W4XVa63g0T1Wbv3+arel
wrTO4YJB7fnbivy7Cth5QHSpm6EXmLH59wHQ8/JKaNh99RVX9cr1+oYmHr902QefffB2QeIH15RJ
80oi6Xn02dpJp799v5UWF40ZX5BeHPF5XcP7Tbhn3VO3ru/Rb0CWP5bpS585bPiqO/7YiF2UlfyC
3S7dD774ulEYIVDJ9UJHH/swe61DCflIUPD7SMDtgZ3czbw0KGiKrlihCFPDQQLbAo0BoR5BC+xj
OHrsgVEAzLCJ+PgXkzizWy24tFBMSDGdAi7BDycFQSEv4B7vq/Ju9T7pFeq9K7wbvEe8p7wS8Tq9
/EK8CHPFkm3tlrbhjb3AJ/qadwe9yRZuCucnF1jCnafNkwtMQfgCEKfF4xCnrrK2k0sdxTHFy49y
vQIcadw14MLHf+W5LnZdiyU/PX9YcNqvLrmuwqLdcAMNi3nHEuNuLEpP+6BL2ejBPe6mbxx76+HE
WuDnFnCZsfhrFX6yxQhMdM1ybZQETQ7JlazSNZwNd51giqnRukSLn+g+Lw5lOJnl+Xww6xfCrGhK
ytTx7b+RlJrKSd0UkSo9BRvyhSKyo3wccZJ/8ghdoqOErEuZMXCjGBqDOW24zhAVRvZ5es6Vuy6h
oawxVUMWdKGhreOnXb5rI9uWCB6b0bdm4XHaAlUR87RAF5iMeVpomuGTCsLFcYU/ZP5Q+QO2+KNN
CE0lNQLPwb0ilXGdQ9WtFmjizC2EtbCeTbpZXrLg44/kKcMP+4NOJIuXhCz4YzSWOOljWU20FEva
q1Ob1ezLogXiuKmqURmfqFTx+yAV5q3pClwjthBdhEleg5VdRlyr4BYxI5heELfYssw7cqINVnen
XqXXmA7sEsMisgoLjHU1ooCrICVQUlYYDms5oRE4ywQasr4A2sIdJ3i1cMmpDspHXcg0v5tpU0fj
Cho+q8IpzNzaRRBYbReBYEH3BLj5FbZ0eiAxjua/3Ccg252v0mgC2Gv9ZN9gf7duLDOFUw06cW/g
1Eo/MnoAszqRma5IWhrxs0zRJYUVr5apu6xW0z0Ts1QIFfIQYYi8Wdgsm1ZBY3HXi4FCC77IFTWL
LlrTSFj0S14tpPus1hgpEPOlblqBnm/tgSvE/bRqcjG7WBqiDNUWkyXiYgkuYX2xdTVZI66W4BjW
V1vfJ++L70jvwDPzDjwzX4nHpeO4I3Tc+iP5EZewzijfw4XzvbVb2xqd98Vobb4YHyIWHAx+9rrI
Gl81fieOs0SwSq7VVpx3uYxoc7lcYpRyl8t/50aRU24UXECqgjULq6r21yj/cFJmVxELwMA3DPa9
EThRXjhIwyllg7tR2rwoKScKPsbC6rV/OvyvvSgYJV9Y8G/C+fVei2GrgHPpzB5bBaj8DJi1xbDy
nFNg1sjhAVLH9mCFELSzbi4YzAu6nCo8/B+NCgKtTTRS10sHqGP3a9SXeCzx9wN7QRlDWDOHsx+w
x1rHY79Zsd/qzf222VhfoLwsss3KQfohfUc5ZcMF2rAYlPENIumtDsFHIb+iCxU9jxYpPWkfpZoO
UzZbzshnFC1XzFO66HGxjz5QHKk/L6qX6OPEWn26eJW+hF6v3yVuVA7p74gf6ud0myAqOHP78fFb
F71MrNKrRc2Hbyv76CP1K/Ud4gHxFf17UcNdiVNN7iDf5UebfNiYXIj7rK44FfHdO3eAIVCJhutX
KNlf2C2eNK+1HTMc/py4kMdwF4ZpkmyxtBWfwnVW3kcAxZY8IuEOuwRnGzRM3OuyEBhcrtojl2kI
DIs6owZfjR/DvVeBZ7MyGMCuMtzc2gVNlnusRTLj5/3bYF5SDOECStt1RfMzcZMx8q+aihrafWOp
GAgTtkP+SFH3Pj0CQuYT3IMQwhg0wUVyXUPDAtBGw4Iyaq4rnvD90eWJ2+nEp16kwxKb6drEjqMf
sBgTEh/SnITW+iYdmjjAuagd9q4xWFUPje91F0jUw6cetMJe6ofRVOEPmT8kP/IY52VZ4KQ4Jos2
i112MuKRRQ9u1wkw6sueeiiAzfRJsEGHrdheQCK+El+9T+CGDzRtys6Lm/YQd3pm3Md9yxWCEQzF
+Q23ZppvaMxMwT/JU25aQYz0nvE2v7+Xc0GTCY5oDYEVcm6YuuYPvC0Y4TwN29XJuuLUXgInTH3N
yG1TFQq8VBxTqauRdcMbnRDQfSCg94hOciiJ1Uqe2i3g74Txe/2m9Vbizn6bq8rj9ITwcAer4Eo+
1YQED/cg3XbNMrWJFLsAc1Y+ZHfPXnZYVc/QWGLtwNyBE5ePGj0yNKB82uUhbCg7+/s5drBu2kXZ
rg9t19Ry7IO0vL9c+vfAkimOyu/UkIoMQh76tBJ/2Y6Q10b13f/TT+da8el7DuriU3yzhdlO6ZcY
SQY6yU8//XQdt6/y+j//2GrltixWgcMkh12kWXiNzBevIW5AtZJBaqWXyGR6glyGsisBA4UM/M29
x8l41F+I9DUI72QVyVbUnwB4CFAGGAHIA1wKmNgGYxH2R5tXALvQxxTejxl+SuYqr5OL8C4C2AiY
CrhLmkDuFj8lm+QKMo3n4103o48Y4vcg/355F7kd8c0or+V1zZC3n0CGobwryu6UJiSTyi1EQR5B
vBX5frz/Dj5mhHl4/zXiNcmTiHdB30NRvhrheITj2sYbNOOf8jbmXPkc1/I48LMMZbcDxgDWAy4F
fnj7EvSXhfQtiFswLg2hFWAXCclGnUp2EWlE2A3vH4hx8nlzmMrngTA1J4wfbYb+GxiP/P4dAWPi
8/oS8DrgCN7fPjY+vo5wizk2Pr7UGAcJZeb68TnbAH3Z62QA8JJA+Xrps+QPHEB5RzGvwwAJf5+s
h0qSuzC3Kmkv2Yx0KaDShGsIFbeQecJprMFecp28kTyIfMJ6AL4nuewbEpZzSS/gbxL6nwiYgT6f
N+lhOsd78hvUzxI/g15wDakHzMW7X2nHE19npIdgXSeh7jm+I4DXlYA5wMFmwAK074H3F6OtHev+
A52QeBR1j+E9wzngnXx9slA+iK8lYCHaN6Avar4ntQ6gGawHAOVzgdPfAp4BPMvH0A6of2c7mH3t
wh2MXcl/4D0eQBjwOuB2QB6gHlABEPB+HfV19D8M4yhB2o8xZHPakF4yaXUsH3tqDuZeWG/i6HFy
FdpfCggBCuTHyWVtUIC6BOOahr7Goe+b2/vG+KaibHx7yMvFK026fxl5BGVDO4R34fu50XwMfO4o
698eot396HcpD/F36vj+vFd4x5z/ZsTN/chDjhuEY9DnRtD56rZwVPt4UNYVY+dr0BXtM1F+J+K3
tIeIm7g4H75B7kWfE+TbQadfk5HiB2Qk/jLaSGkpwjtIiXQQeZiPiL8wJxSRGhVf3GMta4DPezqF
m5G3WXmHzsW7bhMfw15/h9xv4vUdli2+QyXpseSXEqGvSI+xZWb8n0KU8zrngbak6vKQQ8cy3sf/
Jr9j2/9pnL0rPUZm4r1fSe8kk5jPHXxPKF/TEkCkPUT+HsAKQBe1iG5Wr6TNynjilAk5DZgnGqSP
ZJBeYgupEn34i3CE5CJ/vHyxyXc3oP+X6NfkFqzXKsVHYsKXJMjfxd6FfADw/hGOAF7b6ekCmmun
oc5hO712DtHPRqz/HQglhCHsu0OAw4AP2uAvCD8BPQ4BXAw6jSH9EOrfg/haAOdvoNfkSeSl6PMV
sgV5t7bTZ3vI3wU67dKJPhXkX0CXndNctqAPzZQt4DUYB6dhc/6cP3Ieh/IqvHMi6P2V9vqdww7t
7wbveA9jt4mvk8lt+7oQYQmgGH08BeB85DB01dPYo1/IbyUPK1XJw8KrycPyPcntypXJl+W9yS2Y
dyEfC2Aj9rPJyzAOP09jnDcjvAfzJe1yVMojMzk+kH+vuUZ4P+p35WMz6y3F/ptLpqHfPyAvyfeh
sAX7DvhEfzeKO8kvxE/IBozdITyZyhfHkpEou1NcRG7l+eDpvNwibDDLx4j/IIvEQsR3IryP4E+e
kEXyc7xN8nUz79NUGc+TJpNNoLticS15WNpNJmFMw/g8WHnyVfQZw54PqyvI/QoBDX9C7hV/wpxb
MEeOgxZyH5+32bYp+ROfn9KXBCQB8+N1ALwNbEaRNnxsNHHBy7gM4PwTuOB9ym+b+gaRjqL+VnK9
qpN71Xzwp+9IWAEvMd+1m0xUDRPvIsY2VPwb9sfXoLHxZI3kTf6IvP7S48mk8BP20NfYXxzwp7wk
HwlJX5P7sJfW4H1j2sL1qD9e+Jr4ENoxPy6nrWizVnyELJAfIzfLLaC7dyAL3gFP/hpzuZL0Rvx2
8bHkWdQdjL4IfzfyRyNdwteEGckjwPNDSgsJKgbejzp8DCh38/cKn2G8d5I14CX91a/Jb2SuZRN+
ORR/3ZIQSHMOZno54vCV4W9lmmDmcZUTdXHOuJNcz/Nx5/dljILhb1tSvhfERyEj7iP9hR2wh8yE
/vAVuZEVk9XCSNDdScgMgVzP02JXUiCcJMOFM9B3oJ9JOull1vNDjn9BRom1aN9Cpot7yHQhiXgQ
cDfoEe2kZjJZugJ61uXopw0Y/sKmqJFR8nqymhUnH+f1zHecSfoFgLiUlJrteNs2MMfKx9s+5oc6
jBnfQwo3gMb4ePm3kR3Gy8cqtI+zbYz/anzmPDkuME8+D/FPpD/w9CEgNxXiL1/dQh4DbGMfQA9v
IcvoxiRctqS6EwzpmBaX0TWAUQBRXEYeQNgN4VeAdwBbAE8B/iqWk5vQN/7OMWni5wIO7HfgXQhR
/gjgacCf28s6hvx9HdP/Ki5+njzUMV8qxd8vBbCu4OmAjmU8Lj5A4uIS6EQlyUMchEXw3wBk+FEV
lRSyT5A/Ae06paUCskmch7pjiNC5z/9NGnMCrZ/HrdFxju3rgRCO/v8IfA15PR5GeIj91Y3L5//N
eP5v1MX6LgfM4n1J20h3k4a+gE6uJJ+nT5HL6bHkT+DnModUmoRNfD5AXO3rhPw1FH/ks/P6sd+R
nhznnfORruTQ3r7zuv6nNPqd0xHa6aA9VEqJwUH8M+gB0DkNeWBwkDmNATqn2+nr34bjSBx4qhbH
gU45zXVKy05SzIHNR/lmlH9O8jmcT48jhWhj0itvD9zGOADXhziwT0iUgzAGZQDU7cehHV+Y+ySO
V6GFtzXbm+vTTued1wdtifgC+NFxko14uHPYTkcgP5NvtKd52DkPaZOX/Ks67XURGoCSf9W+Y7v/
P8Sxd14FvAR48f/L+XB6pwS0CnAS6HRvQd/AX7aVf4Nz1mvkFkJa1xBy9llCzk0hJAEZfO4J5I1H
PA/h3wC4oXduDkJIo7PHEJ+PsrcBrwO2iWlkSZteGUJ6cKpt6/a2/nJT7Xm7n6DtnO2Zan92NeL3
If5fAFDZ2ecR3oXwO9RvRD8wVrVCBzh3I8I40qMAoLFzbyLdDwC5f64P4EsAxnkOasw5ONHOPgBY
xPURrqeBN3Y8h/7fTXc6y3K9Du87f7b9T2mMETYA3G7iOifGy/VD6CNj/tdh+3r+hxD4uODs0b7+
/ylsP0v8U9iGX+h8r3JoH3fn9/y7NNbzxzY4jfBbcW2yFTqlYurR0GVNnZvrj1z35ros17e5Hsvt
QSmbohkCz3xdrVx35vorQn4mu0N6A/i8hlyCcU3geOWyxOSDHXgr6wpbUVfY8FIAuUQGos4fMZ5T
4EMOyNfvoFtu4IA0/7k8BcnXILsc4LnP0KeS3yF8HekMegwuujaZxuVeRzjPYzvpKv9Cxl2gy/yf
lv8nmfh/Wg7+UtMGF8jWDvkzEefQubwYeRyyObTL4P+3YWdZ/Z/SnWV35/R5Gf5vZHRHOd1Zbv9v
0+1yvj3U+pFSDooBHQTQWS+FLL5AD/hP6c7t/0/TXOfg0K53dEjvRt7uDmlTL+mcxngv0Eva053D
dr3lfH4nPR50k9JnwtBN2qHTvsO7L9iH/ymNfTpAnJd8v32/to+hvV3n/Pa0vJwMAgxuD+lOUgA+
Ugi4GXwEcjAZQxwyMHkdwlr1HClVnyClSO8D7EceeE4Sco/LvuTNdC906R84y0nchLQC+w2vO6kN
ajvT9z/Rbye6FXDGM/VD4Myc0wbojLBpA/oC3IDdgKvO0wbOynj3ywIkLz/rCseT30Fv/a6zDvif
0uIy2M9x3kM9hzgO8ClJk3fDRgsbCuKrEeoIdfD3OYA2G1+yVW4y61yGsnHcPgs+PxNn4nn4X0Qe
B0+fJgVx1FjQ7keBT6bNTgdZmga+71C+hb3kpeQTaM/tcxOUIPSef8D+2J9kIm89l8+A6ah7BbeN
sb/w/9fFtCEH28Ju3D6Ffu+UsYqoZ0e7djtyH8RrxZ7w8/QkFSjjfqpLYX/JFB8y+1jP7e7CWdIo
PkEmoL9mfRe5S4MfSsV8tAmwK+ELMXEBuVPvQzar3IacDvsK5BXeZ+opwH2iPd7B9sdt8Tl8/gjH
tc8Z6Qt0B5T1wbiyuT2m43vb26kDgZsxKd8Q6nI7+4W6USddBv30AnQDnAZ83vl9aA97Z/L1VEhW
IOS6xqy28Bbgud0nkbLTP0C6w07HdbOUTRYyW7JCRgPQzsQxylJjahtL+zuBl9b2eOewXUcBHrmN
ahzgRgD3ocUB3rY8bu+6BHRwCdarhtvMpNWwm60jY2ArfeF8HejIqOcQ/8uk2XXIv4MDpy/AlUI/
+Hp2Yo++T7xcfxPfNn14N8FGywG+vOR21L8d9jNuCxsDu9oY0+6YJGOAq89/Buwt+DRSgK/wHyPr
TDD9fskX+JgA94mjTfrkPhru50gTz8C2s9OkGTfwwH2CDvF2AHw+0nyc17D+JlzDfW/wS7SFJs5g
O8R8a0Q+R26bewx0C/wID0C/gt+xva5aRcYpa0GvT5Jx8o14bzXJkjcDTpOgXA4dex3mPRhtbyRr
2N9IKQd6K2zoIuIYCAeBwBYHzRy8h3DfL/cJA1/cr7YQcBfmw31b/+D1zLopXy7353bhwHbRKMq5
n7A9zv1giJt5ryLkYPaBcHsHQL3kXwBn2UluOUT/DOP6a2pMghM02wnQdlobwOdGMjD8OeJE4OpC
GIj0BYB+eLq4MyCf5+V2hrb8MPIvAOTz9IDOgHye13kc/67evxvHv8vPQ98XAN7H0/+u///pOC7o
k7+jrd8Y4hcA8nn6341vOMouANTn6f/pOC7AMdqF0Z7n5XQG5PO8fzeOkSi7AFCfpy8YB/jTkwD8
j3mtkOuJlyGvlyDcjfAihPMAv0Uc597kzLY06pj1ZiOvDbjcT2a1wSCE/GwOeYz/iYsktwBG/wz8
XUkfb4E6be9JXon435F/MQDv4m0ThwF4twlt70z8P+2dfXgV1Z3Hz8zc3LmJJLnhJUQCzIWYBBID
4RoaFUruDcGq6a5Rgk2k1WjF6r7UPCWI6wtSK10Bgat23VqfSoBC3aLlZu5KE15KFG21fYTU1RXd
qtkHa+2Wrj7g06fbLbn7+Z07N4QUsPvyx/4xN/nO78w553vOmXN+58x5m5kdnEta2Zoz9EOQPZe0
E/8QtVbi03GTjqE9nJeBb8Hp43yeF+93sSPtQxORXRn/QzjJNaaFh3sWaap5+hr4hJ9efAqS9qEk
51uQ9JmGeoHk5VZAvCcZJ6bPBzWci/uD1FGvXVAvMU78Eu1hntyrQ8wOiMyhrdVt7m1qfPZewX1l
pW4P2Qsi7R1vRlCB+WpKkHlewsiTfoO04Xo8eVSt0+PJN/S6+s3SX8i5gPvIa5z/K21qN3pYQLv5
AGsDxKHXZWhruUduJb5rrdfU1QLd15A1Idljwf0g79Os919Kmj5m7nOzKrUPseZyPe1pZix7nn0r
51+i3yFrZKxhhZ5UD9lHcLfUZdyvFmbtJQ59b1mTTudcyN4QT4Z+q9rtn3LtD7C/ZZIqk/jsuWoJ
eVafjZt80H0t2thC7KXcRXc2ZPCHauZTPpsjaSa9yCJkqVwH8a3XefIyY3LWu+T+Sb4VMUbPD06k
Xv1BzbBz6V/sVg/mmupx+wY9dp8X2KzqhuM8qmpk/Sn4KutlX1MTdF7L2tNb5OtfU4ae5P7wUHY+
gLW0bwVeIizW1PS6ljcfQJh6XmA4DNnHw5oXujEJt9P6Ndl+lL4Omavx5giG4/CuR65L7p0jrl/n
Q1aHsvnOuuHnZG1M1vEo24LRMpsmWceTtTTCu578aw0tUNfbd3FvfYa1jhfYs7OQOeEr1cLQJBWx
t/PdHPpn9i3opvTzZK4uompynlDU8fRCyull5EogdeUzAK3Rde4N3J7O1EepX2IvP7E7SX2VX/ov
wD3gtoy7uPF9Te335IdIwtdu+JHfSWmrqGu8KJE5Gg8nkf+BPXV36HdiHpHP0p/T+zNGSa9fr74h
14//c8tR/c/h8hplT1h/TzmX6HzKhJvpT2b7laekrCvP07qi+3DpV6mjQPpy6UPYS91cO1rCkf0p
0peVdf9fe/JtT/5U1nalrzdaEs5p+1dGn4/Qo9P67Vn74XqWrW9ch/QPCedMUvar6f71J0nSPbxP
hnzT+2VGSsI/bY7wrOeyXs+6u163R/7x/gNdH8aQHqkXSL2nb+T4KTuOyspH6Ke9w/VLP7YAXEG+
b6DN+fNzgfTpvW7BE+njwRO0+cOSNvIE65rs6TkTglPxP5U9Ld9PH7fR8KwkfzaeC8FN8DZxf3HS
x0PcvU5JNZ5zGQckMkjvRl9eAO+AYyAF+i0jfZxXO6rAw+nj9NVHSO4dD+vxych9dcPm4LeJ99vE
t4R4acXtl0k3rYDe0yB7Hc4C+uzK5jYcuklf4wm5F54Th4iH3kLo68TzdTi/Jx7aNuQJQbYssnma
zSuu7Ze6vGSPgcBLTzauLO9s8pPKkTBlDHVWnL1c0icoo/+z6z5T+rNpZ67hZ+BtOadO/RzIuAQp
e/fIu9PTL3r2UPB9dBbYn8sA7mP4Pe7hBPn6C/Av4JCH55GyZ+kD8I6FDgiIxwPxjNYF2RMj8Oyl
LgqC76eP2Fem35Z6IHt/BIRTlS2zkdJelv4ZOvi2/RjyEBzZt5Ppe8n6s8zdyB7bG6UtRE7LfYX7
l+yT/bGKcJ01oSS6zbpe4Dl1S+a+carfh95IGyz7YGVP0VjmfVqtIfW54E7GtmOUk/PP6fcFxPeA
B9nzK5A9kIwD0y+Cg0DGgGL/DyNhzVJTBdhdStzEkqYm6f52GeavZCCfohL7U+kiLbqvE6AnzFhX
cW03Uv6FpHNJ4HHS9jhjcEM9JP0fruHRQCH7ctiXRJ+yQO+58cb9+K+jX3iNh2nkS2vgEfqNR9Vi
jV+h17KvBug9OVJOR9XVwQvYWzOo99dk9vwyrrfeBcfhHqPPKftvvL01AcKQfqL0i6yj5CNti7WV
8e5W5DbkkgwCfO/Luocx+lfoo76DOQmmMj6fjlwJ7sRcgbwLLAVPA7G/mz0s4wkrB7OAsXRgd0aK
WcbVAvNwBlaEOLA3f4K/B1SdeRz3y0EeuMKD+NnHnlVxa9T+ouaviOOz7LcohSvmhbi9BUKZ8bue
V8C/dsv6gZv1k/MbdVneN+lTjQNr03ty4sxx/or5iVaejVDpfEBJDtHCyaMIuh9FbU1fBZ7k/CPT
W6MYXoPo99bJPZnzEvtMHlHRYLG6P+d81cxYIB4s5L7cxl6pTXr/Na2zjImG0POhW2U/MXr/gPV6
Zn1e5sazc+bBATUrl/457ryTjbbck+ZO6jJmg5CkTqBbypDeG/by0/unqWvS5xA9szvUBnsLfckt
ain1Te/7hidzXUXgQsyXEPb0nJmqkZC4+6SRQ88gpT4spm0YnnuFf5vsaRPdwk36guL/afYc3Yus
lz0J1qcVLYbmXo68AqwCkodXEu6TI9ardjPPvJvz0/ZsjHDXe3X+t+eftH5FmZ62PpUt29Hz5+jI
OfdmjHb/xDWeUXuJhufVz7LXSM/Nj9i7Mfqc+M+4ZpJdnxjtznrF6Ws03p6ns17/0fRz6EurtKP2
FDGnXwcvMk/5nABdTuP2Fro0DX9fMz+izv6c/sR/KifThtMeHkXvngK/0/r3t5nw6J+X6z2G8pxD
p9wjsJdnCdbTp70F/ay19jDvSj8SjBFdRcqzE60ajNNoYzPztAvU1bqtpU0lLTJXu0HGaboNkraF
pwelnZF2yPiIb418RBtCO6PnJbs4p03SwGzeQW3YyHkL7rRJ0k6BqHUDnBuw+z1mwtJtprRtUg9p
r6wYuJ7zf/NAO2W+hxlYP9RpiJofyFrN0CMZyD1naLPcm3TbSVg6jf9OPJhl7KLr7bV63/qN+JM5
gnP2e7lfSv8y28eUfuZp55TB8P3+TGb8vzwSo/0Mr+m8y1542bf/Y/b50pfX90SZw/D2Rgcv0usO
ut2hLJkf8Pr5mfl2mXOu0+W1VhXRpsj8gTce8CTrOVK22TE9+fQj8NoISWkMAX2flnz8pW4rDfUF
CZvyLyJ80bug7tfIeE/GDt/LrEVgL/u99dgOc2assZz9ma2Mo+5hLoF9/oS9GOwj7CEP30F+R9Kd
w/5u+N8Uid0g/mqRkr7XQT8YAEdOx8kfeeO4pdlxEfFwRx56IlhKfr2pgqGl7PN+h4c2RScmqyUy
Ly5A9x8XYN87AvJsh7TjzMno319xPANM2vM/wgtoGdc4jB+S82MAbbUgB7ccrsGmNoQO8Z3TD5Q6
7zqlxmxUKh/3As7Ds86NoqeUGhdWajz+BRMoognkoaD4zlMo4b4jmPSYUpO/odQU8nQq1yFwSMP0
WkD5Z1FOOH8KKouVmjFWqZlcS9UCpS4kDTVgdgVdTsFLpzCnjmWGD5S66FWl6p4/hbk7lLr4mFKX
kjeXfqzU/MuVWnCzUjHyNN7rw88DXwd8HfB1wNcBXwd8HfB1wNcBXwd8HfB1wNcBXwd8HfB1wNcB
Xwd8HfB1wNcBXwd8HfB1wNcBXwd8HfB1wNcBXwd8HfB1wNcBXwd8HfB1wNcBXwd8HfB1wNcBXwd8
HfB1wNcBXwd8HfB1wNcBXwf+H+kAT73mt6vjar7axIvVTZ4eni1vz7Hnm8+rHGX2tK6O5/Nw9C6A
I8cI6AaWillPp+z8aKwXOXa8lm5xdbSPtz887V56kbav+UZ09T5eunaDugjrne4Ssd6ZijWJ952p
i+Zl5Ow5WrqhjLM9PurEJ0GbDUy+ipExXYXcBDaDAyBIgnaqd0EaWNZT1lb3MoeAtxNQYXy8tV0Z
pHK7OgzSwCL127mW7epDzyZAqralcsdI9Ns0q5THyA2i3Ebg29RqsAscBjk8wreNyLcR1jbC2sxD
57uAaW21trhhJxzP45H4+4BpfYtX5srnVPutb6bCOm8eTxWOi8biYevvVAsweWfin6l+YBLsw9Ae
Vibem92aOToLm1N5BdEw/teT6PUkZD1RdnM09HkMk/hfnxpXLIn/mltYpHl3u7V1GUMqXBJtIRfu
VIa1zPqyKlOOtQo5FflF5BTkTdbNfAZb0hlLFYajq4mvAe8NfKNoJs5xnoeOIpusSapUe1vhFmTi
WeHOqIpyxQutEu2l0MpXdXgNWbYbdSJ7eXpUMv/BVO55kr4H3fCE6H5rjWWr8fhaja+JTuF+nmOd
DeRKWlO5+dFEfIzVymW2ki0OaTTIZTnGrC+7BBQvshbxGGExbn/JY5gTkJfxWL/I71pbeDW7Y307
VTHZ6d9rPapZj0igRL8go1oLUvkF0f54Lq80NCiAjRTARh15IlVxcVTFK6wZPKM7g8gj1n2Y7sMU
ttZhWkepraOk1lFS60jUOrRPWWtxWYuf2bxHoJP3ByTAZsyiVhNcMlQqwwT3ghnRPut8q4SMCe8l
Kw1sJ6VyCyRlJe7YcdpbSWpMQbRhv7WcJ4CXE2bM6kpNLInevteq0pdyYaqkVAidLuq635qYKRpC
KpYi2W9NJiMkY6ZYU90JTjLucC6K7CjD/Ik5IJlk/pP5uhS3eZhzkT/15CuePJSR6X5zIFMpzFdF
DsYnm78gsBvMt9VmTKa51zzIhx4c8y2zV0rffNPsUw3II5zzCTKzD3kRco877SWn1+xNIUj7E25+
sVysedCtnu0ZnHLPMLHUM4wtjsbLzefN59RkgngDeQHyObNfTUceQJYg+80uvovimM+ac9U85D96
8gVzn6i4+QNzt7oYmXILJAlJ1xaxyw2K+L6rMmcts5195vfNnWoSXp9xKybh+FSq4gKncC/hGeZ2
Puo+xRkbzzO3GG3Gx3jqVkdEqrHmVrdeAkm4+yJOn5kwE7GS+lh5rCa2w6otr62p3WFFyiM1kfrI
jkg8bG6kAdlsUn/N9RzrVcREe0AMJMy1bqA+GT/JNcl1mWo1x25t6uDYqU2KY1ibxPUjbWow1/DU
/xoYCXMVuA+sBl/lNQsJ8y5wN7gH3KttujCtACtpTTphdMLohNGpGZ0wOmF0wujUDIm5E0anZnTA
6IDRAaNDMzpgdMDogNGhGZLeDhgdmtECowVGC4wWzWiB0QKjBUaLZrTAaIHRohkxGDEYMRgxzYjB
iMGIwYhpRgxGDEZMM2ph1MKohVGrGbUwamHUwqjVjFoYtTBqNSMCIwIjAiOiGREYERgRGBHNiMCI
wIhoRhhGGEYYRlgzwjDCMMIwwpoRhhGGEdaMQRiDMAZhDGrGIIxBGIMwBjVjEMYgjEFzZY81EH8R
ygCUASgDmjIAZQDKAJQBTRmAMgBlwLt0yQhRmH64/XD74fZrbj/cfrj9cPs1tx+f/XD7NTcJIwkj
CSOpGUkYSRhJGEnNSMJIwkhqRjeMbhjdMLo1oxtGN4xuGN2a0Q2jG0a3ZiRgJGAkYCQ0IwEjASMB
I6EZCRgJGAnN+G8XjflVoy3EvdZcbczU8j51TMtV6oiW96oeLe9RO7S8W92v5V2qXsuVqkJLilrL
LuWEDNepL4wX0wRcBW4At4PNYBc4AGxtOozpXZA258amBwrtq+zN9i77gJ2zyx60zcLgVcHNwV3B
A8GcXcHBoBmJl5r5uh2laVGb4Bl8Wmau+hBwE+HYoE0NZh3x1tHOzuWvzqyLFf0m8mGVcbjKOFBl
7KoyNlUZ8VzzM0ZAt3QRvutEBhhtsTEVC5wjoL6icgEt08bdxyY6bsWnnF5jX0bMjFVzegz0gB3g
flAPoqAGlAMH1FdUQWuLTfeC3IesBNNABNSrYp5GV2OLQrE+M9/YkXoxX+VKPJUz4O11K2sRvW7l
VYgfuJU3OXy/ebeqlF6R8SyVaidyl+u8h/MzGfG06+zl7CnXqUN8wa2chVjqVr7ixPONJbzDTait
nlxMgcv5Na5zLd6udp2ZiGq3skJ8VxFROa4zjTb1HhKzZl+QianMdebhe7rrXCK+Q6pSCp5Pjtfo
5OVglnMrRYI+7DPaAkbsPOc3zqPOMdL7azIW9Xgz0htAHC7vNa6N5Tn7ap7Ec9xx43nin/tDjyeT
Ip91dpSvdZ4gLKN8t/O4M8vZWNMbwnoD6V6ro3Cd+yO95s7YOGe1U+t01bznLHeudG50rnG+UI69
63ze2SfJVO1Gm7lzt9NCgFdwFeWu85ly0kISL3P+xok5lc4lkX2Sv+piiRpNrtknOcAbQHTsF5K/
VeXE7jpL6nuNoliV/ZGdsJfajfY8u8yebk+1p9jjQ2ND4VBBaEwoLxQKBUOBkBlSofHyBWNezmDw
Rk/eg8D3rgJyDGgzHyzGzIGjMg1eTXqlSo6zms3mxY1Gc7L/i6r5pkjyt4vLeo28q69L5pQ1Gsmx
zaq5tTF5cXVzr52+Jllf3Zy0W5a29RjGxnZsk+aDvYZqbes1eJ2QsXFNaXLsQhzVmg2lfbzh5/w1
G9rbVUnxHQ0lDWMXFF1yWdMZDh3asqNJPtDt/UqyhurqkuopyceaF7clvzelPRkVQ3pKe3Pyq4sj
n2/rMwvN/EVNfWaBiPa2vkCnWbjoGrEPdDa14+097Q1tLsAbXy9C4C3UqCLijfakUbxRRhl/FdDx
N00E/vLyVYX2V5GXr/0FDPHXcySyqKknwgE/vE3/iPZzpFyN8IPGwG3qqeCAr7KI0Sa+jLayiE7Y
TB2Q4+ClhgNeDPp7OiDH0JElZ5/yUu55mTvsZa6Oy8qkRwcjB4IZPyPrZ/wM/JzKyP+ZaVljtZGa
s2LVwUXLyhZ1lC1aBjqS6++4tSS5+qZIpGfVCnGIJK2Kjpu+eKvIG5clV5Qta0quKmuK9MzRvFHO
B8V5TllTjzq4qLWt52BsWZM7JzZnUdmNTe2phvlt8dPiWjscV9v8M8Q1XwJrk7gaNG9UXHFxbpC4
4hJXXOJqiDXouBbdJnrf0tYTUo3y6WstU+Z5eehwR+m09sbicOcCUei+edNKVpXuCSi+pHBedXty
TFljMh+IU028Ji5O1DNxKsC60HMqWTVvWuke4ynPKYx1UVmjfLRc/5Twm5Nzr25OTlt8XZuoSjJG
FpypzJbLTzuXqEW3NfHPeZdG1/KubIgilfj841/XmX4rVqxY3sVhRTXvs2lOVvFl8E/xZfAe2yaq
jqZ27GZl7SxL2/Xk5i7ia+Y4VpMIo0uiExPfFycHY7z1SNlmd7DbNmUU0ZWaNCV6+376DfcBBpHm
SpepBHFamZpezmgJL7PnZiTDVTl3J02LyvfS66GKLM/IWFENhkR5oiZR313eXdNdH8R19w4snR1y
K3Vn77BUV/XybGZg7Gons+Wb5sS3xZ08RUfcLQY+H1+9XH/GfLg4srxq71Pp1fCzdlyj/i3XwYu1
zmGOYiTTxZXyyMS+Qs7klzFoLvmsSdjiK3OmreRw6seZUv8FTGCPPQplbmRzdHJlYW0KZW5kb2Jq
CjI3IDAgb2JqCjI0NzA2CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9U
eXBlMCAvRW5jb2RpbmcgL0lkZW50aXR5LUggL0Rlc2NlbmRhbnRGb250cyBbMjggMCBSXQovQmFz
ZUZvbnQgL1hYUEhMTitmb250MDAwMDAwMDAxZjc4ZGExZiAvVG9Vbmljb2RlIDI5IDAgUiA+Pgpl
bmRvYmoKMjkgMCBvYmoKPDwgL0xlbmd0aCAzMCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K
c3RyZWFtCngBXZDNasUgEIX3PsUsbxcXk95tEMothSz6Q9M+gNFJEJpRJmaRt+9ob1PogILnzKfH
0df+saeQQb9xdANmmAJ5xjVu7BBGnAOp9h58cPl2qppbbFJa4GFfMy49TRG6TgHod0HWzDucHnwc
8a5or+yRA81w+rwOVRm2lL5wQcrQKGPA4yTXPdv0YhcEXdFz78UPeT8L9dfxsScESSRE+xPJRY9r
sg7Z0oyqa6RM9yRlFJL/Z9+gcTq624sRpnVlvzSV+XULXr56RHMbs6Sq86iBS5BAeIwsxVQeresb
nnpx8QplbmRzdHJlYW0KZW5kb2JqCjMwIDAgb2JqCjIyNQplbmRvYmoKMjggMCBvYmoKPDwgL1R5
cGUgL0ZvbnQgL1N1YnR5cGUgL0NJREZvbnRUeXBlMiAvQmFzZUZvbnQgL1hYUEhMTitmb250MDAw
MDAwMDAxZjc4ZGExZgovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJp
bmcgKElkZW50aXR5KSAvU3VwcGxlbWVudCAwID4+Ci9XIDMxIDAgUiAvRFcgMTAwMCAvRm9udERl
c2NyaXB0b3IgMzIgMCBSID4+CmVuZG9iagozMSAwIG9iagpbIDE5IDI4IDU1NiBdCmVuZG9iagoz
MiAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL0ZvbnROYW1lIC9YWFBITE4rZm9udDAw
MDAwMDAwMWY3OGRhMWYgL0ZsYWdzIDQgL0ZvbnRCQm94ClstNjY1IC0zMjUgMjAwMCAxMDA2XSAv
SXRhbGljQW5nbGUgMCAvQXNjZW50IDkwNSAvRGVzY2VudCAtMjEyIC9DYXBIZWlnaHQKODA1IC9T
dGVtViAwIC9MZWFkaW5nIDMzIC9YSGVpZ2h0IDYwNCAvTWF4V2lkdGggMjAwMCAvRm9udEZpbGUy
IDMzIDAgUiA+PgplbmRvYmoKMzMgMCBvYmoKPDwgL0xlbmd0aCAzNCAwIFIgL0xlbmd0aDEgMzk3
NTIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7b0JeFTV+T/+nnPvnZksk8xk30gm
DIRlgGBYA5QMkLAFZA0mlJQgYVcBgztCUGQJqKiVIioCdUGUOoSAAWzBulUsauvSal2odbcotUhV
YO7/8547NyQRavv/fb/P83t+Txg+5z37+p73vGeZCQkiiqJa0sgz8+olvm1Zf/oCPvcROSbPXjTn
8t9fV7EZ9hPAFXMuu272nKOug0TuKqKUY3Nnzag+lvT834k6BJGm71x4JPRKaQ/3tXB3mHv5kmun
9zkzBVbk16f6soUzZ4j8PgiaCvSZe/mMaxclNLhriW6fCw/foitnLer45thDcK8hivmNcYDSgQzj
EUrX8yiNyPwE+JRpeJ75KYczlZ8jdWMERDtol5hHu+gQ/VacQKonaD810O8olYrRrqX0c1pNDlTh
d7SWJuJjwP/nIt1soHzahn7YRkcR9xJaRgcoRaSZn9FyukV7DaluITe1pyE0nhbSrWKMeRVNo/f1
m6kfjaEraJGoNcvN28w7zQfpIdqv/c48SzGUQTPxOWp+afzZfIe6I8XddA+9L+6M2ktBlFKLmPfT
lbRZq9SFOcf8HjXIpWtQB53G0lFxWAaQ+yz6RKSJpdow5PJLM2Q+i1hZVElzaTMdEH3ECJlrTDPH
mkcpBWVci1zvoXrah08j/ZreFrHGCfNB8wSlUzcahfY00MvisBY+uyJchH4z0EtdqBAhC+k39AK9
KvziabnQiDUKjKBxvfk6JdFFVIbaPoKUH4t/yWX4LNee14ebQykO/XIH9zY9R38VGSJfjBNTZBe5
UG7RriQXSrwIn2qah/7ehNzfEwGxT8bKV7Rf6o/ppx3twsfMOIxIHt1L99PTwo2W+kSNuEm8Kf4m
h8np8l75gfZz/VH9j84ZaPXP6HK6lR6jf4kE0V9MED8Vc8VSsVrcIe4RR8Wr4lM5RE6WC+RX2lxt
sfZrfSg+k/Qa/WZjlbHO8Wm4PPxs+A/hf5kF5iqaAH5YgdrfTVvQsv30Cr2Fz/v0gTBEjIjDxydy
RZm4AZ9l4laxXewQj4oGlPKq+EB8Jr4W34jTkvBxyEyZK9vj45dXymvkz+V98hV8XpV/l99pqVp7
LaD10QZpFdpC1Gq1tgGfvdpf9Qz9Fd1EPxcYG40HjB3GY8ZvjROOWOdNLnL9/swvz3Y9+16YwmvC
G8P14Qbzr5SMMcxAL+TQINR+Bj7zMd4bwXFP0GsiFn2XIbqKwWIMema6mC8Wi2vRkyvFZvGQqvuv
xFPopT+Jr1Bnt8xSde4h+8ihchw+P5Oz5GK5Qd4pG+Sb8nvNqcVo8Vqy1lUboVVqs7Ql2nXaRi2k
/V57V/tAO6WdwcfUo/Ucvb2epwf0Efp0/Sp9i/6J/okxzXjJ+MgR7bjcscrR6PiHs69zsHO8c4Kz
0nm7c5/zdVcVuPMZ2ktPggOb/olj2gqtRNtLt8leerp8Wb4Mfp5O1dpYCU6VO8QaeaNokB2Max0D
5UBxMZ3Q89DXz8sH5Ck5UBsrSsUkmi8vsjJ0JOk7YRukP0PH9afQtpeR87WOWLFMfuWIpXpBspBI
PKf11APaS/S29r5w6tvoL3q0SBXH5SPaeHDBr/XBRjnlavfRr7TF4kbaK0uIok+71oOPLxY7IRcm
iwLxrWaSJi8GF/XT/kY30wL5ZzqOebyGfiGq9Tl0G/USS+kTehizootxhaOrI1m8KOfpdTJRNJDU
H0XrCkUHoRlJtFJUapsdX8m36Cp6RY+m97THUftX5K+0sfoJY6KYixlwI62ixeYKus4o1/8o5pAm
plBH/Rik21KtQM8FXQ6pMg0ybR9m9wHIgSHaWPikgXPGgC/KICE247MJckIHB83DHL8EUuxlanBM
lo00x4gTkDpE+kvhiTTVfJjuMefQFead1B3yYLW5FDnuoI/odtohbgnfQIsoGzPnPTHGGC5fMYab
3WWdfEtOkhtbji96u6NIo8/x+RVGZrBxkOr0P9EkKjLXm2+AuztDwt5Dl9Jo+hCt/BIljNQOU6/w
xXK3OVxbhPa+TxPMR8wcEU1zzctoHD1FDzkNmuEMYIxD4o9o7w00S040l2izwvPQD7ejF4Lorasg
f9YGh5VNHhIsGvyTQQMHFPbv16d3r4KLeub36N4t0LVL5055HTv42+f6crLbZWVmpKelpiQnJSZ4
PfFx7tiY6CiX02HomhTUrcQ/vMoXyqsK6Xn+kSO7s9s/Ax4zmnlUhXzwGt4yTsjH6WYgqEXMIGLO
bhUzaMUMNsUUHt8gGtS9m6/E7wsdLfb7GsXUCeWw31rsr/CFjiv7WGXfoOxu2HNzkcBXkja32BcS
Vb6S0PCr59aVVBV37yZ2x0QP8w+bFd29G+2OjoE1BrZQqn/RbpE6WCiLTC0ZsFuSy40mhjL8xSWh
dD+SIhutY8mM6tD4CeUlxZm5uRXdu4XEsJn+S0PkHxqKD6goNEwVE3IMCzlVMb55IbSG1vl2dztc
t77RQ5dWBWKr/dUzppWHtBnIoyTkDaDc4lDq9R+mnXMi84Rh5aubh2ZqdSVp83wcua5utS+0dUJ5
s7SZuZxDRQXyQFrZcXhV3XAUvR4jVTrJh9LkLRXlIXELivRxS7hVVvtm+UvYp2q+LxTlH+qfWze/
CkOTUReiidfl1mdkBPebxyijxFc3udyfGyrK9FfMKM7anUR1E6/bkx70pbcM6d5tt8drdezuuPiI
Jdbd3DILnW6FKZuKzrbSiU09K7hG/lGhIDhqpg81KfejTf3ZmNWf6mb2xwDgX4VAqlA1RmReKGpY
VZ1nAPujiSJkdPT4fXXfEDjAf/zvLX1mRHwcHT3fEAcynzSxWkjMsO2hQCDUtSuziHMYxhR1HKzc
fbp3u7pR+v2LPD4QdB+NR9/OqBiQj+7PzeUBXtcYpEvhCNVOKLfcPro0s56C+YGKkKzikMN2SHIZ
h9TaIU3Jq/zg5AZidTU55Mpr+h/vSUksmTsgJFL+TfAsK7x0kr90wtRyX0ldVYRrSye3cFnh3KHo
N4RFbKHEYeVapoQf22SmpkLBlNOmNkWBozw2pHfEf4di6upGpwtcqXyEb3jIUzXSMiuic3Mjc+bH
EjWaJziVIueSRZoRGhCIVNSqdmhgC3eL6sXWaaWTIXJk6eSpdXXRLcLAalYtR0UIOJ4ml+f6hoWo
DDOzI/43mof7MyoyQ0F0GUImYxYp74rMiLNFxMxIogr8Y+7s3m04ZGZd3XC/b3hdVd2MRrP2Ur/P
46/bL38rf1u3qATSzmKcRvPAuszQ8PUV6LG5YgCmh6Shu/1izYTdQbFm0tTy/R7sFdZMLq+XQg6r
GlqxuwPCyvf7iILKV7Ive3IUHzuoVKCR9dKl4mfuDxLVqlBdeSj3zEZBys+KBD9BMxul5eex40n4
6ZZfUPlx+1jGDJtcHhkWxTM89cBDhEWdOdbABxq7kyjXm+vtCENg0T3j0w6fCRp0mnz6YcSkMvMT
3WscJg+1k/FBd3xsbOzQsvjYmJihZY5G89Ogl91GGrudHjYz2TeGbVYsuE8GU9zuoWVZDjbjY9l0
etjcjX6ZXB6MzsjWjaRstzs1Cokb4uNlGVuC6W43bF6KZR9KiY2FidQw8wOBwFEYR6noeNHxi3pm
7nb8MKeTyMnBOX3c4HYry5fB9JgY2LyE4h1l5ImNZZP9mrI8l2eDw5fuyQKjY8hifgMhmwIkAPHm
seDFumO1XBOzJv7FOCPKGZMmSxLHJI9OH5Y5OXFa8rT0iZkLnAtiZiZelrwgvSrzOnmN4+qY6+NX
OzY5N3peTHtbvul4M+Yv8RlNDUcnNXBPpjaaXzdw58HybTCJOym1JiqY6+/dM0pQlCdKoj0nVQzV
RVkcI2pDDoYBqb1xnNTrYk9vDWF2BH1I6oOuIUnFIBfHwOqJGLQh+4V1aQHPKXRmZeA4TLZWLlbW
SMeKysXY0vXnfwKoqEAs6x8FAomehL69ClJSEpI90uFv3ykv0ZPSq6Cv15Pnb+90lC14bevV9UuG
zn9t2+vX3bH/0aVLH3102dLRlfI1oYufPD59T9h8OxwOP7Nr05Pi/vAvvjqBPdP8L+etInD5+2C9
0+C6aHo7WBxt1VyZ0aqFpMxoqxXK1IJub+8F+nJ5u7zHpT+uiyhyGFKLMkSsFEeiVVdEcy+S8CH/
RvNYg8cDRmo0Pw96FXtlKfaKU+yFMQ+mM/PYHKK4JSPWwATobXC3xnFehvBhLyqN9JgDYpC4hdIC
F3s+RP9ZXcrdBMegsWcHUVFRaqHwFl7UU1RSZUBYPZjr9zoczj59+/brJU83DHlt8i8+yF+i3zB4
ac6vRhyZjloOgqbrRC9ky7T95MTM4DF2gTHU+Dt5rvBoKh8eUPic3MOWyGyI8nrcaYmJjjI384zX
qyxfBqM8Htiyk4xsnmSpHCE7m0Ozs+IQko0pBrNRHgzGyujUVF+OxyulL8ebUJj/+lE2j1I+c0ug
iM1noaxmRiYyFxibkCBVgcGoeC9sVjnHgjEJibIsO4n9OO96ZG01QDKv/z2oev58pfEs5/K4NFVY
sO9AY6DjoHHIcdD5guvFLOeo2IrYyXELYqvjrk+4PnFtwlMJH2V8lHkiI/ZQzJOJMtOT5WnnyfY4
foPDBiemrws0CiOckR3tcTkcR7IykrKyMlxZGZqQrowszZ3taZQP7hnnFd5GkbaXW0Bc5T1Cxkbb
ExUWa6LC8m1QSbPomtTXwLw8WcVBuYJ85BH9g7HevUU4L1gol0tdHpAdKEfcvltNu8qTxzHhBnlO
cjdS0aCzg4qOn6380JvAvAJjdVyPQNyNnmfhAOeoSchzsD9VisorIzOxY3JuXj9wUN++fXpj1jmc
nfrylExOAmfhv+4800+mdvzl5q923HPDTfeJ/Ynf/uG1UyMf+e32adm7dg0ZNPPwsmc/mr3grvvq
El956/Nd5TufenDNDGxUBU0xP9ZTwHsB0bBPS1NCnofLtlhsZonvmPS0IE+btCwSPDcCsXCILv5o
rBbx2dHRXZKzs/TsLllGF7ffHZuWLijBB8kry3zOPJUnouflszw/ms8fSigsKvIc9xwHqx1/3vN8
QqHn2UABA5wW7Gy4U9wl7lVuvcR7iffqTG1iymWe+UnVKVe5r0ta5a5LWpv5kDva8GmY41iHYt1x
ulOgXMFjGkTLDmKv14Xcog8ak6ynHZAPUrqcG4xCLQ1U051gDzEs1hDDEpHFCTXTfQt90pfGU8RX
yxNOdQksVlRYIlGdNXlKbOcJyvPkSbT05JOcKm9D97RG0b8+/TVxQPTHueHhYEyTjN7QrVHcGeGO
wHHFHxF5fDJQabEJ1ruz4BF0jUcxi8UrkCyQ0BAuYnEFi5fEfiksihVTOPs1WW3+YAZxpsAkf/u8
KQ05dy9Y/sT2G3uNSUqIqWlcNX/e+qSG3M9/de2RBbOrb9oQ/vTNp01xc9o9q0M3Ld2WtEVee+PM
m1au9O19YU599fT7emT/+rbD4W8+Zm0hAxLLYxyA3HaLJ/dTrPl98HFmGbdDMY4S4bDCJ8oS58o0
lDh3KDPKEu3KdLo4pkuZTrVwuZTpVCLfpUxDmQ5lRinTWhYSymPnxm6OfTT2xVhjjDbG/XNdS8D0
pliH5jSiYzQn1kO3+4imJ2marrlJxrp1p3ZQHsTpoBRbg9Gk64hCR6L1Rjn7ScOIDrbL6Y3Jbi0c
sLBWIctg+VKpF9GNol/Q7Qy29/d21ub2cW6IlzwZYtxJvUl6oPRpcB9TaWD5cB/zgtwb1yjWq/H+
O6/BvP6exOhBKHzsUcuG5+SgU4O8hTzIhYWrewR0yIP4+HgMN3T7/eQ236tPKIR4fz0Y06tQa9+9
UNPbtRvEWVSAGRAnmBQbjCmMrR1fGBvMK4xtnwXavZAjBBSjKFszgwLQBPuIXt5eyX6v5hVy49mV
8v67nn++IdxHTH9I23dm9EPhbRBld59dwHKC9cNc42HKFmeCiYlqOBOUGaOEhlJSYngYzwmRYCq7
E5UOmaBMTemPHFctaFhhsS7x0paolMUEZcZg0kHV5Ehs4djNpNB+EuhtNw+JyIqLzk5OzkrgJSwm
Xtezs9xxgpxpWOyVcqksSmKxCskSh7VITKmzz0LKsJDpwkU6lK7qKCvNuK5dXbuNiY8kPhP7Zuxf
Ml1RiWlxXTO0qJ5Gz5gDWFA0SBpPYnRyQmLikbj4pLjEpLh4N8RNMJErEozbGifj4uKDySJSqSfj
dfEaiyIsL0EvV8873bPQs9xzu0f3/IhQSVNCJU1QmidNoiGWUEnb4Et4SvSheHE3Zl7/+ri95xMu
OS2FSwvxUgklhVcf1Q+V3sL8SkjgD1e7egQMsBypJUitPmJxJVinGccoa3N5AyGTmJucq2EhouQk
JzTDvLJfJ99z2U0Nu9Zfsr7zo7fJt84+OW7lHYeFa8mtJ393VtR66tY9u31z/biiFPmPx8NXTwuf
+sMLd9QfY4kyFvyVjHWoHXWV2n6o3yeUwPVCRVMWny2CoQVZsriTzUb+JjbKtfYnyoxTzKRiMxth
E3MyGM02pycWZkSTyYkXOTir1kRm5+ygW7jd0JYyjfbZSe7obEEdPZxKbU882ake1h9T1YqWisxh
j2xPjr5+1POczVuVxz3PVjJvdV+QLoqdweTi9GLf1ITJvgVatbPaNT+h2rfEdVXWLa5VWW+6Xk/x
On3MgWgMywxHGRqD5YxtuSoAC82xhk4+vy+XA7xcy/FuiXpmitdYd2zkJc2us+AFh/Zib2x1ESzW
cgVLZLnqWONRnOUR5IFmjAaeeJJ3R54N3SDZ+gcTs9WszlaCOVsJ2uxGURhsX5Q6PXVh6vJUPVVt
/9AP6MVUbNYcMLm+qY2yw55A007DWsdY87FXtuOqi6zFLL8SuznFZ8xWvKA1l1LYcwhnXie1vXA4
WdNJYE3H3568nn5wpYikc8ueQzu9J63bqAVThpRdKoc8Nafh7DWvrvxr+MP71366692z/cbddvGV
D26/4fqd+qS4+T3H9hz85Tszq8L/+mPd8WU4sF8qHn16x2/PvFu5s6Jxy6YnnkCPzsDaloJ7Pzct
CsY96xY6/kuXHoXFgwVNTyn0qFh3jaZJ7shxSufTZEa8qybqCxoHZpoutSKQhWI5NkDpkPxqpb/Y
c7Jy8aCxJ49f7DnFuwUPuoN1wUKvEvrojcWViX1ykx2kOZz+vgkJ/WZoe9eHj5f2jd+v3fTPtfr3
u9bfHU4In278yy7xuXgB15oaTcKsScesSSU/9dSG76csSFS1Vc9QYtmpTMydiG975c5XZneePyyh
u3Cwkt1556KrnX17NZOwNY7s9DOUm+Mr+c05BL0sv/NVQJ4yVWng4KFl7ZUkt5KzO0O5VXJ2quRK
o85XAXnKtCZmQyxlZvfghRX7FlnWo0dCbrbD6Jyd4M5mjQLHBeBxrK2wBOJZRvDchIUrZllUYHwa
1MMTaguoLBwLlsic1jokY1mSZckqx2Q1p5Mjc5oXDHDmucMHLBuB44VQ0CNnEE+qiqjjBq4ILFyR
D9VZBFuUX6R83mKi2DPB9hyRi+VpwwWyyS091z5bjqAsgRqoCtiUxUq/PimiS8qolFF5H8d+1tOI
6olroRvFUn2Ja3HMlbFXua9PXUd1Yr2+yrUiZmXsKvetqb/3Pp+Y0B7ioz7Ll8HE58tn0t0HZfVY
ML2LL5ay0ygW1djaQ5yrCbaNlhiBxRIjsHxrCdHsmkNRIuqAnEOBSKSAHQmWiKwJ1MQHfdg/xwuK
98TL+EZxRzC9ADwGpktTAiZNCZi0mpAmtEY5J5jcQQV2UIEdVGCHmmR7I+5LDibL5A0XWTLGOso4
qdRlnlvqOMNyRvqwMp87kTWqiKzhXRX2VItpcUVzcaNWtnOGyMvr05ulTDPlmeCTmJRiq9oOrbkA
EvMXXfbxocOfL7h89a3hU2+9FT51x6WrFsy9Ze3sOWsGjNowacWOXTctf0TL7LJp/ta33986+xdd
uj275imThDh8+9Ni8tyVN0+fuXrlGXPshnEP1960cwevh6xv8czOxnq4dT+Ooj4N+nnSJKtJkqwm
aidl+pXpVB2HRSIylVOwTkWO7tqxLVnNzU7K9CvTqVQyKwXP4RQl17FOWpPbCuAiU9Qc5YBmhw5P
xuRAOenohWpySvE86yhqBYPlRLAzM3iaV3G4Vx2/edO83QIxnbPj43LixsVpcXFJNF4IwWPr9uBQ
QrB+hIXXUIP3bKCyADOu8niBGj9MAJ6NHl5p332O56DakjarxDmNL9hVqXx8UibLLlBqy7JaFYWS
zhUU7D0gY0xK0P/TlEv8s7XLUi7PmOO/PuPG7PUZ67I3pzya8VTG5ykf+075En+SsiVlV4o2oEu1
Q3ZibdGPuZWW63P4OmePi5vOqmEWN0+8Nt5athu4Ejn2HIPFmmOwfKsU35wDopBiIrMrhruZRwkW
KziGV2tvSzVxQzfWAIKpUAEUO3RU86ijmkcda6BLWQdaPm/QK70bImt1ZB5hpY7Mocj+s0lJtFdq
qlwsKpudDJ6bMZZWOFj26d2JV2lQwvTB7SUfF+YJdWKRrGbPol0pS2dMunF8X9H34OX7zgjn87cf
v+H6f2x//G350kNLrq1/dOmN28Qkz/VXjFn+50WxaVMWCNef3xeezeG/hb8OfxLe86tDWu979z17
33os1ehGHG+nbx64mdpNjx/0jSvTBQ+i7X/r1JXpS+MH7vv+ibNzPOSKhTMK8TmFSuccHL6Yhnno
+ye+vx5n+pa/CmTDXeGIePEdfQQh+Sf6mV5DycAoZzu6xphC5WI1TZU7aSlDa0dB/XG6EvF3wj0E
9ACnRfwy4H1gEDAFyADYbywwA8AbESpD3P2cFnks4nwUraGprhxaaEwxz6K8jcYLNBvYAvt2/W+0
w1FIl8P9INId0on6cRzktdGxkzbB/z6Ez4TfFtByuLfBPg3pekbsUc5b8c5pCkUBDvh3QT7rAG5z
J+1p6qvXmH9FWyqQ52hgFcoYDzocKEWcRNChwGrxAq0RL5jbEQ5KN6P81ewPFEfoSORzC8KLkK4D
/G6GPQP1cIDGA7lAZ/k4Fcokego0H+2/xGo32v4CzUUdt4NabUJbkAfX6Yew6liKsCagzF8Dfllo
fgQahTC7bly/5rgZ7uYYpfWiWvgtADKBCfIoXa6PIYH+usf4iDQGOI/76T3gJ3o1XQy3QJ9PMhpo
M7uBsQo15ln9PtqqnaT+CLvesRHtqEZ/4zBOnqJ8+Xfq7uhIy8Ffxch/BbAFeX6q+KGaJqP8Hojf
S/9I8dAquNejrK/sfuLxhnsFxnUixu4M7IT0k4ARGJda4DKkvxjl53Of87iLKeFCxP0QcaYx4J+q
AD5HX+3nNJweeXWM8OH2c5S2I86t6NdjoDqQzHWwofiM+Q5A2PPIJx1wAO2AHsBHwHZgATAAKAU6
o12EcjXUj+tTxLwJ2pl5w3gBfYi6KZ612rAF7tWRObMtkheXk+t4nBZEkMt5ol6Xgw5FXXbbeaNu
s5H3eJsifLi+QPH9l9xOuEc3Ucw9/QsawXVA+u0IK7Up7BtRZ54PG3HlsAZ0M/j4ZuR7H+yrbcp9
A3cx3FzXWyJ0kF0ftLUn6teBqUbk53DE53wUtfuiic6lB5FnleNSyJStNFJfgncrd9Cl+gkq1rpQ
D6Mn/NAetDEkv6CJLrxpwViOg/ueVnQT/DY53xDzoXls0R+DDHqD7ke/LtbfkO31N4RhPGZ+ZpB4
0XhMLlP2H1CEc5wmiMNWXKaM5mGcx3/j3zztf2qXbxqPQWY+Zn5uvGGaaM+dPCecX4iegM+m8K8H
aoGuroDY5FogGp24FnIQnQQW6kEaYASpHy5Li/RkyHnMBfiXGX+lQ9qttFZ/w3xL1FKtfINWOZNp
Bt4exXNZ8k26mcH5gy5qxkcteM7modbU5tfWFLzwYISnckAdmH8vR/AhKOMU8A34qBQ8mY769mP5
jPw3wr4GYNkBfjW/R14Wf75ID8Fvnc2fNmW+4znVij9jbX68EFVrC+Q70rGMz0U91trtxxgIlnEo
YxL4eAXqud+O35o2S18nd4KPWQ4fpamRed0elDEadfyA6wlADmO8LzFNx3DzEUeDuUNLMHc4CmD/
M2CYj6Dd13JduD+McjMMyutpF7RFraWWP8XY66jRiy7n/uBwhG3Rv6afI35P2Ll9UY4naLlxGuMO
Gch+PA/VHER/ot0L9Cr0+WZaj35I11ZjPsIfmMZ9osaCKI3XBdgztLsh83hNupVu1v4CfYHT9iKv
Wi+K6BLU/UXlV4N8EOaAn3EJbXd8QQV6GWTtYapGHaahLoe4Psizn+sqcruSISfeoIvw3m+bkUzR
iLdV9UGQHkH8jSotDnth3+6cSU7w7MWIw/ltU2mClBDpD5Y3M6300EVYfnJfIE9HMk1E+ijjC3rA
wKtdzKFtzlrahitWwrzYYQTpIaQr47ogHetBo/W76aeYX2sgm9ZA5rC+VGpMNU9rj6E910KuA1ot
+PUxSjNq0YcLEI/7x5Kxq9G+8dpOygPNddyNNZ/1ibvxti9AJY4FdCv8bsUbiM4odx38VmL+9sTc
XYv0PHdYRyCUvRb+nLYIY7IG/RbF88UZpERHrdIHSNUBZXD52me0TRtNa8DHQ1x3ox9vwVtREqxH
ZgNYzRnKvQx2xnoLyo9VTsQVuZqHbmR/2Yv+iAOdGNwT8Rq6X19B8/QpVKBdhLnrpe76HzBXv6N7
tXiarh+he/VGWs9uPZE6a3i9ojVAt2T/V7Crgr/8I9ybaKo+COnX0BX6dKrRdoP3XqdofTbGGumM
28AnHZD+a+QbgfgbTdWmYG6tonvFd+bjHE+V0WBeogH6SOqu0nHaCFRdub7nqbMsRatGY0xRX7a3
qC/q2lRPu47nqZ9qJ/cF2snt0O/lG3O8aCezo0XDEyReZQNb5ds0DG9NrxM7zAPo1+GtMLK5W+8j
lgI99D70JLAC9m6gvwGesNzQ3frgRW4fugV5Pw26h/cFDDmU+jKF3xZgE/CSHdaccnnN3eezG5nm
geb+xl6sNYA4aR5gNA9ju74Cenkf4CfmAQZ4cTTDsZySnFdTktYJ/tlI18ptZGI+7aUOGpn/ap3n
f+NGm3o268dg8zba4wGa8h+Ax5DjMfUxxVwczevzf1Of/4m4GN/lQCXnpX9JyRYPUZx403xH7KAp
4k3yaFeBBwG4u8OdaPenPU7wv0v5txo/8AqOas1/tR7X1u7W4/pjbrmHpjeHzQc2ddxJgxl6EfgB
aO12vUiDGY7nEAa0duuPIN2/w1Tqqm1mXgQPMs+1cjvGUSeG7GAekBmcF/RqoMn9CuQawGlVejeN
0AGeuwzZgP0a0BTeh0rA9yV2f/Mc5H7VNlvp7fGxx8WmdnzUL6i/TKNA80ALQSeBjrapzUfMz815
mv1b+8GtZImdpnkcOy5oEMBa88P0zdP9v2DH3DkCvAA8/7/dHkHgVcADON6BHlIEPfIN6Ck/xXcf
6CxkyZl84GGi8GTQP8EPK3y4C+CG3Qu/OaD3E53+BvYr4f+GBVPqmbQ1olemw29fJC1EkspvkpX+
9O+Ivj8J4BCK05/GNz1Oz4f9HwDW89Pvgj4NugnxP0c+K0F/a4WfnQ731cBTcH8B/8uActg3gCaD
dgMSgQSk38hgfcTWm//3aMu9LHS4FnvbH3NDZ5mJeuaAHgBdau8d/mtqj+ePUOiOLfbE9vj/GEU7
1F7kh9Ta52PP9AH0vpBd79blXMiN8Qw3h15mnoVOGct6NOuyrD8r/TFCkc+Dlh6LcomScP6iKOoV
xfor687QVUtAuZ2rHYY6MyhDvargLjYi+kGTLIVcFSdpC+ABMiN0AWTfd7KT+TLkUDzW12+wN3qQ
AXccMMWC+QrWrnisdYcgd78BPQp3O9Bv7DVNi6x9NrVlK9fDrgvL2f9t94+tif+n4VhPCyJosbb+
G387Xn/EYYxi2Gvw/1/aeq3+MXfrtbu1u2kdv8Aa3Xydbr1u/7due523adRgKmA4g+YBRmu9lHWA
FnrAj7hbp/8/dbPO0Vzv+K/drfQS1lHOhyY9xA5vpcc36TMZOAOw0Wre2fPvP6W8t9D3Yl5GdH+7
Dnb61v62G31a0hyQA50h33gN3Q45Av3fbAdgjcK38ii8zHWGCly7qADuvQDWzfBx0GoOA31A3Mrn
2/hWMoVvgtuD8xuOi3VPobo1f/+Af1vxLevnSj+EDshtkht4r0T5wEAgAdgNXG7zBu8hUfZbEqsu
73X1qeY3+stAKx3wR919cBbah3YhXjx0x3i9hpIcXkoycIYC+yrQaNBoyPcJQOSMzzzruF7F4buK
4Xw+Czl/Bc5XcPZlPguZfrkepnhnrLpHuRlraA7C1Tkd1tJkrAdpTh+fl5iNSM/nc1WOr6H3XAK9
J4rXDpSLMylgAeKO47MpnCQUIx8+Q06K0J58PsXrl6MHeRAvF2HqTF3Rv+FcaBrOVKbhfNO6pyrj
8xftI3VXs5rP3bWL6Sk+Y0d+oeidtCUKZ+GuahruWq7umzbiW6o3w+8+5224owmo+5UyW19B3+OM
zVpjoUzZZ398Fp+h2o8zebvNcKvzcZuq+k3DN0dxHtO8XDudazjW0q/VOZR1jtn6zL6VLoM1vg6o
Rjtw1mKessuxKfcRzg9/b1HcO1m6xtURejPqad9JWOf002iCtgz7QftM9mHU503cFa4CIn1stx1p
lV5ll4V+OWvbW1PEVboK+ugSgM8M+cx2FcYuEbDv4fgursz4jHi8RvGYGW7s8+N5/M39COP7iKE4
QxuvS5wFfQVYZ4/qfg78lQ5cgu/7FsstmKNXUBLcN+t3qTu8lTjvYyCu+bBKd5ka12LHJPAezh1x
llSMvsLdkQ2cleBOw4L5Ic7Y6hTUuZq5XSaZuE8yr5QvoaxCile8WYM6rcfdFp9znrsTTNM7wx/n
dvpkAOMPXAd3B9X2CFV9hrNDtHeUaiOfzfXAORORSxuozglH2mmcT9JwnOcNd8XQcGMPzkEWUgec
CXZwZGHsRuN+JR7nrR9Qtt6fZmpefO8bEMPNl8UXoNDUGfi9h2rtLdA74Oa7X9wJo7/UvRoozqfp
tMIR6BEA5gvf5TJmMeROkYtwviesiNj5Hgx2+BXSPgU7j534xvY5IJ6J823ztPw5yh5K1bIRZWxF
XVAOzhE3tgbSXhpBZ1AuZ4R+CeRKSwyDuwWQD7vzWwP+7NexNSL+GfBvAfize2hrwJ/9WtfjQvEu
VI8L+ech7xZAeey+UP7/aT1a5MllRPL1w94C8Gf3hepXirAWQHx2/6f1aNHHSJeB9OzXoTXgz34X
qsfFCGsBxGd3i3pAPmEfG34ee9PHQf+M9ZrX+89Ax4CC+8LPwo79hTk74kYcFe8X8NsE3ANgr4xf
67BQDMp74NWgfwewTzcnnEP4RdizsC/BP7sc8y74dQWwX+GyOG34IICyFSJlhvfAjfRnd4Fij97C
nQL3x0iP8lTZqEcYZ8SmH9gcad+aSLkh+KHuYS43Ej+MOnEbTU6HcBumBr+JSJ8DOukcwtCDGOYz
oL8C3gFeALhebM9GGPcJ2h7G71CEQ5ifEblA3+OuaJFehXPQHjjTxekCU/0GGqNk7ivq3sy+Q16k
81qAtyBK3pmQfYOowOGGHnI/DXVCb2AZbsxSa+o6oxprE35CAmsL3+ct0I+RoT+HNyAf4V7hCtwX
78P58QjIW5Sh870M8uZ1F3K2SltLY4HxvIYZfCfEdye4m4luUPqLB3GS9E9Q33vokLEXZxbleCOB
qjt7wL0B91Tb6FrjBrredTkdwq/6rIH+MxvrVY5jOhUaN9FILgN5Fjsux/1RLPSCCHVtopnObvDf
iS+rfkxZUauh172KX8KhcD+7bKy9StfSnZQEfx6zp9C3zH/AmQAwRtUZ9TWCuBMLQB/jezy+l69E
n1Sr+lyM+hRgr65rtbgH+wr60Sjq7IyC7pVPa6LScDZ0Cu1w4Ew1oO7lrTL5nh73T845dJGxmvLs
vbvjQ/TzZNyJRShk+yH7PAC62zZ9rtIXE9S9VuQ8QOkQWMOa8uB3PLjzAm/0OKdDtNSjeDx4LOwz
ArsM9K/VHlBeP5vaz2OHflBrJ/d3pN8RPhp3YAED93gYt9wf0MiZhJPv8XCXhn5U+qzzEI12alhb
H6bZjlV48zIWY5FIk5zPUIJzBKWxfuZ0ot9Yz4UeYnyHu8JJ+M0dModhnHi+XwPwnBsB8BxfAn+c
24Uhc/gfzy/253/sdxbzlf+ZOHPDr4GQOc8K5zBzuWU/+xUo8ldhiMP/zmIemuuxekrkY5/XvA87
oPYhPvY/18+QhZZu3ZI26fWKf4ZjzJiPLkxb6Z/2eLWmPIfBI4mqn1gftvXJH9K7UB7rpeoNAPS8
9zFH70RaH8D30Wrv0JoiDZ8lLrOo0g35/p/v/Jn+EvNrE+t6rSnKsfTqC9BmfNRCb7f9UQ9rntlU
6ddN717s9y8/Qzn8ziAP8ZV+/WMU/dX0TgbtVu9l0BdmxD+O80Pbmt7NXNBtnblloDw+e8s4z/sD
60zOPpuz9fLm+yfWU203ZArqo6E8B88j1GE0+n2tzm9z/g2Y7xiOm8ADLTEF7in8nuB8cGAlYTgv
awmUy28MLgjH7UgH4H1hK5j/dOWY/0SdV1gw7wV/ML6IYDvodk1gLw3o0IVbwvynfgcA2XI+OO5H
uYCruwUnJABDZ/3/3wB9QE7MYFeCog5eC/8tpqMcwAlJoLAOVME0nevAJ5GxsPvU7iu07WO0e25T
3SN1ssuy012I/tg42uVciP7YuNj1uCD9D9t9vvrbdW9OMSf5jd7ZCOW3e47z1Z3HR+GfoAD4n8+a
EyNwoF8PAo8BRyK4C/QuzJUMzNtvtFngJ6B5mh/wA97E8LsY2x9zluWdw/ExxjYN5WIeYI/0uQWq
OF8fOVEG85+zEyj6Sr3bsXSvj9AuN+rNb2xnsywE7RA1Hm9YrHeyOSxbcH7B5yY99adpNtaNZjqf
OQl8g/003sEGyEC9vMYS3He+ZP7SuB4y4YT5O2M5dAIAbVwZwYugjK0A9oHmE6D8DhJvuvAeeCc9
2hzY22YzOA7KrgEewpr1Z1A/cKWF8CeW/7m6oS5KBmvfQtc7TenqfWlQ7a/H6/Owp5+HtyFf4J0N
9B+0YY02g4agjWu0vuQxoH+wvoC+KYZfov4eqAU3+mW8tqPZPOf3NfyuBlBvcnjuPI/7Co4PivT2
m9/OXJa2AOdNf8G90ReIhzCkW4O+W8lvnVgv0rZifMaBLyYg7gTzD9om0JERfAt6Beo7hebJlbhH
no398KvQ35LhvxhYCHsaaDxQAdwHXE0XKf/T4JPvER/QdMT7PaiBvb0Bv+8iWA8KcLjab++jaujE
1cjPiveGSsPpCjQHzgh+C8phQ5Ef4sk7UW9oFFpyxO5A+C3I85C1fxc4V+D4Kp4dJ+pcHOM4DY+e
jfcjicBanOEOwRnnZ3jXM5W8GF830Adjz/sh3j+wHvUKgN4yt8B9REbeBzTdQdj35BFq7KJ5xk/w
nucs9IV3sIc4RoOMU3Qv7lM7O8ZjPcNZH/IZCIDPw7P5PTH4bpJ8A2cikTt6mzrKKTnqOZwvQMvC
/ODzF0XlY+hn2PGbb/yui898SLD2Bn/+x2+nI3NN6bnOYroZ83g4gDNS9e6bdWw+44zmuQc7v1vt
rD+Eb4oqPY73UGH0qMnzYRJkQ9PZK/KdAH7axryFMNYFkdR8HG+ONoL24zcJcjy/11JpfwoKaWAu
A3DCYo5GvvdhH2Pfb23EOfPGZm71Nud/2v1j91cY0xb3U/bYtj4/B4/827cZrcN/9I6n1Vsi+1xd
vds4z1sjdTbf7O1Ga7d9P2LfR/you9Udjd1um/6g/TUm68jDsa4ccuw03wDvPgncAfmKNcnEHtg0
EbZf8VINrcV5eTWfyztGUQdLhqtz0mysM9k4m+Qz/VVWfjgrbMBZEmQj5PwZXiPgzzrWauR7Gv5F
Wpr6HkQG7Py9hs4I430Sn98OB0oh96xz2t5UxrIWcRLVmsHfO8A+DfKmWkK2yBepl8S9CssgATdA
LIvUueRQrDM4A4wgXeJ0JGKPwlvCapzfKmjx5otKJsVZMksj5IdzQzEUa7Alr9rhrknJL/m6JYvk
e4hj4yTsn/NdDe+n1Z4aszj8qFqbWH5CViqZuRVzG3beu/C8RTvjeV5DXgw5n57R3A9tZ92S9YLm
lHUFdh+01/oL0UhaTs9pfhg/cseDtSRRrckv4J1vOcXArvbN6P9eSLfd+FidkYxEvVkHiUe4pb/b
5+1qnDBG1t2+QHiLfQHf5/DYGngny2sX+ul54PVmFPIlzDKG12nux0+gj0Zj3R3DPIA+iwY/4PtF
5slIPXn/kg4+XYc6We+9I3u7pr0G0UB9Cz2ozcGZAd75I99JAI9VOIIHQR9kPjPwvhv53McUfkcR
D/F53VBryHOgrwJ/AL4E3gTewZ75LYxpOeox0t4XGQ/w+4HwfgNvNLCmR7nGULrjgKWvaLV0JZ+L
M9CmexjglVAT8P0PJcdr+PxG/QPn0v8Q5FbMkIeh1bXH6lOOYy7I8NidmIa9gWPo4gP829FtaOuD
Nh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYe
aOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2Hmjj
gTYeaOOBNh5o44H/a3hA8F+0oq/xq/n3kxNfx8XvePEvv+qPx/yGDJL7abLWeU9eWs6rT+HPxRwD
pNalPtAuZ7/WSWtXPzAn2Kj59yQkF8QP6Y7vMwvKV6YP5kLgCeAQoNN0LRuhHpjLgVrgCeAQ8Crg
wHezslWoD3Qh8ABwDHBo7bSsevz9+SGdtHSkTUcd47VU+gowAQ3fJU9Fqak0DpgO3A48ADhUPPZZ
CCwHDgEnAAcFtdT6O3uh7qn16xTZM/+yAuWcYTmnVSrnnksqLDp2gkWLR1nRBljRLuptefcYatFO
3Sya0LGgFpnviXYXHB6SoqWgkSmo+CKYQj6Ln9MVlIM/9JRMIUDiC+KWT1BL2NMhr+CBQ/gqp9Ak
fkCjmnLMw5qod3sLhkRLU35FCfhC/JfyuBUij++J8xY8MGS0/ICeAA4BmvwAn7/Kv+JX649xn8Ms
Ah4ADgGvAF8BDnkMn/fxeQ/f6IyX7+IvTL2LmO/il+PfRex3EftdxHyXnPJdmB75DnIjZbK9CJDy
HZge+Rc06y8w4/E3FoR8W75tHpav1fcrLNivLIH8iCWnY8SSmhmxJKQUNMo/1n/XBRyVh5EGRx3U
2tNg6qW1r+94UU6jllY/aF5Oo/zbHl8gZ+uQnvgmagiQqMnrKPl1/K7N6/hbEa9TFbAIcMCGv6YD
1AIbgK1ACACXwfQAPvwunk/+HngTvxPzJgWB8YBLvlqPYhrlK/V5Q3OGpMiX5Qv4A6o58qj8naK/
l88r+pJ8TtEXQbMRfkQ+X5+dQ0NiEE5I4wH1gOYj3JBP7+mQkGMO8eLb/Rh4mPlAETAOmA7cDjjk
Idm+vjonAZkcpCMuQsx6+kzRh2m7i4Lzc4J5w8CAPjbyBvwENhgP+B7Ik8G8jffAyUbebXfCxkbe
yvWwsZF3/QrY2Mi77GrY2Mirng8bG3lTp8PGRt64ybDBaJRbnuzQKaffuAXCNyReXoNeuga9dA16
6Rr8MuY1/KHv8A3OHHlvfdeu6LHNwUCXrjm1B0TtU6J2oqjdLmpnidplonaFqB0kan8magOiNkvU
ZovaoKg9iD97L/DTiMGGFs7CYJqoPSJqd4naGlGbJ2o7itoOotYn+gUbZW79KMw6kBJF9gzhSSdz
9/xkMKRPvMxFj+aC53MhEw7BfAUwlSuISL72VuT0bKbt93Qtstw9BhQsHDJSPoOEz2AYnqH3AR0D
9AzY6Blk8gyyi4dZBEwHDgNfASbgQOz2aMftyoyHmQ8UAdOB5cBXgENV5ytURdJCmFzFJ1TF8mEW
AePYJZ/Bpz0+uTI32M6T5Ql4Rmq3Z4n4bDEu28yW/SglBV+HTfC6vI3Cve9f7m//5aaoIVHyNnk7
fvAgR26I0Nvrv2uHP/O9qT7vYM6QZPELfEsdXIc/GJknOoL2x19JYXcfynIx7U1Z+CWGHFFQnzUF
yeLr87rlHBBxnGpfzndZH+Z8ltUoYf0062DOn3yNuqjPeQM+j+3LeT1rbc6L+Y0u+DyV1yhADvhU
1P1Z/XN2HVFRVyBgc33OMib7cm7MGpGzIEsFzLICflYDVzA+Z2Le1JyRyK8469KcYA3y3JdTlPWz
nEFWrD6cZl9OT1QhYFm7orJdslSh/myVYVm/RjE32M250VnuHOfs6yxwdnPmOnOc7ZyZziRXgsvj
inPFuqJdLpfDpbuki1xJ/CduA/hyPH6n18OEv9KNv/Gh7B5IGMFiBiZJ4ZI0mkKJWqksnTRUlIYO
z6TSS32hU5P8jSJ6wtSQ4R8qQgmlVDp5aKh/oLTRaU4M9QuUhpzjf1q+W4jbKuAbkmsaBU0ubxQm
e92SGUoYVo4/Wi+8t9yaybTzLbdWVFBaytVFaUUJg72Fw4vPY1Qpz6ric39iM5DWwt4utLF0Unlo
Z7uKUAFbzHYVpaG7Jvmmle8XX4sTJcX7xT+YVJTv1waLr0smsr82uLiiorRRTFHxyCf+gXjgGBDE
c2WTj+ORz5VtxdtsxeuI9IjXgQniRUVRRxWvY1SUiqcLjre7pkNJ8e4OMBAn1Uc1Kk5Nqq95nCMd
EacjDMRJqaUjKs6RlFqOExqsssnKQpRsGIgiMihLRckSGSqKqvluFSU/EmVtU5S1qiTNqo2Kwway
cR+z47iPIU6zjvz31llD8XfI9wysmDmtZJa/pMpfMguoCq27em5aqPZSn2/3zAoO8IW0vKpLZ85l
OmNWqMI/qzg001/s2z1QpWsVPI2DB/qLd9O0ksnlu6cFZxXXDwwOLPHPKK7YM2J8734tylrbVFbv
8ecpazxn1pvLGqHStSqrHweP4LL6cVn9uKwRwRGqLFI8Pr58t4uGVgzD+DHdI2Oiwa9VmbkVQ1M8
iwYr5h2Ym7Ys8wC0lR0UE6gIxfqHhtwA83X3Id2HcBDmFAfFwTs+EpS2bGBuJv6OSyTIA2+vfygF
llxVcxWllcwrtv7X4B+8llzFQ2GZAfY77z9EKQkFZxTX4PcBS0NdJ5WGiiZMLd/tdMK3qrgCfgNs
v5iYEvy5W8uzBzwHcERNa4rIfoPYLyoqEvGHvKDqBG/0zn4oGgf3iGC2WEI1FVoou3SyhCiYPBXd
MG1q+QHoUrxI1FSggTUiIGrs3Lgdyo6/ac//CM2usbHkqogt0hdLIlTFrAlQoMbuEuXDBneWMlRf
LUGG9P8BQEOufgplbmRzdHJlYW0KZW5kb2JqCjM0IDAgb2JqCjE0NTExCmVuZG9iagoxOCAwIG9i
ago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHlwZTAgL0VuY29kaW5nIC9JZGVudGl0eS1IIC9E
ZXNjZW5kYW50Rm9udHMgWzM1IDAgUl0KL0Jhc2VGb250IC9TU1lPWlorZm9udDAwMDAwMDAwMWY3
OGRhMWYgL1RvVW5pY29kZSAzNiAwIFIgPj4KZW5kb2JqCjM2IDAgb2JqCjw8IC9MZW5ndGggMzcg
MCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AV1SzWqEMBi8+xQ5bg+LmxjXFkQo
Wwoe+kNtH0CTz0WoUaJ78O37ZdLuQgMOZDIzGZOkp/qpdsMq0nc/mYZW0Q/OelqmizckOjoPLpFK
2MGsvzNwZmznJGVzsy0rjbXrJ1GWiRDpB1uW1W9i92inju4C9+Yt+cGdxe7r1IBpLvP8TSO5VRyS
qhKWeo57aefXdiSRwrqvLa8P67Zn103xuc0kuBE7ZKxkJkvL3BryrTtTUh54VOUzjyohZ/8tyyK6
uv4mz6pgAqpDhYQjKKDKItWBMgHVfaT6MJESlAElkSKhymKW0lgHagmVisFAHeM5MgQ/BNR5VGFH
BdRxR0VQAXUHFe/ClgwltI0USmTAPJbIcqiKgLmKqhYUMC9A6VgS7Y+xqsY/soWNx/iPObJyqArO
4kP+O81w3uFtXO/SXLzna8QDwg2HmxscXd/YPM0hAN8PW0Wx4wplbmRzdHJlYW0KZW5kb2JqCjM3
IDAgb2JqCjM0NAplbmRvYmoKMzUgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL0NJREZv
bnRUeXBlMiAvQmFzZUZvbnQgL1NTWU9aWitmb250MDAwMDAwMDAxZjc4ZGExZgovQ0lEU3lzdGVt
SW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKElkZW50aXR5KSAvU3VwcGxlbWVu
dCAwID4+Ci9XIDM4IDAgUiAvRFcgMTAwMCAvRm9udERlc2NyaXB0b3IgMzkgMCBSID4+CmVuZG9i
agozOCAwIG9iagpbIDMgMyAyNzggNiA2IDU1NiAxMSAxMiAzMzMgMTUgWyAyNzggMzMzIDI3OCBd
IDE5IDI4IDU1NiAzNiAzNiA3MjIgMzggMzggNzIyCjQwIFsgNjY3IDYxMSBdIDQzIDQzIDcyMiA0
NiA0NiA3MjIgNDggWyA4MzMgNzIyIF0gNTEgNTEgNjY3IDUzIFsgNzIyIDY2NyA2MTEKXSA1OCA1
OCA5NDQgNjggWyA1NTYgNjExIDU1NiA2MTEgNTU2IDMzMyA2MTEgNjExIDI3OCBdIDc5IFsgMjc4
IDg4OSA2MTEgNjExCl0gODUgWyAzODkgNTU2IDMzMyA2MTEgNTU2IDc3OCA1NTYgNTU2IF0gXQpl
bmRvYmoKMzkgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9Gb250TmFtZSAvU1NZT1pa
K2ZvbnQwMDAwMDAwMDFmNzhkYTFmIC9GbGFncyA0IC9Gb250QkJveApbLTYyOCAtMzc2IDIwMDAg
MTAxOF0gL0l0YWxpY0FuZ2xlIDAgL0FzY2VudCA5MDUgL0Rlc2NlbnQgLTIxMiAvQ2FwSGVpZ2h0
CjgwNSAvU3RlbVYgMCAvTGVhZGluZyAzMyAvWEhlaWdodCA2MDQgL01heFdpZHRoIDIwMDAgL0Zv
bnRGaWxlMiA0MCAwIFIgPj4KZW5kb2JqCjQwIDAgb2JqCjw8IC9MZW5ndGggNDEgMCBSIC9MZW5n
dGgxIDUyMzg4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ady9eWCVxdU/PjPP/tx9
X7Ldm5uVAAnJDRCI5GGLLELYIWgkILtVCMpmK6BFVhfcABUFrQKi1kBYAmiNS13rK9YNrVaqKG5U
2qKikHt/n3lugiFt377v7/v9/fNLOM/s88ycOXPOmXPmCYQSQjSyggjEecWiayNn+/3mA+RsIUSZ
PHP+rKvULw4VIH6GEOm9Wb9YOvP65xOthNiOENK/efaMqdOPXf7u1YTUrEGbnrOR4V7mz0a6Bemc
2Vddu2TAwWcCSB8npHz6L+ZdMVWYoj9HyE1DkJ591dQl830DxEWEHGpE/cj8BTPm/23YZ36k0b/r
j9Ihkm7CDpIu5pF0QpLoJwWJOcnjvIyH7CtCaEYK0A//2UMeJ+/RAhohTfQnEiBnaIj2IEOJSH7A
TJ8kreRu4iXjyEbqJjnET8aToVREnSJyM70vuSj5JbmI3EEeSh6gNyZ3ofw28iI5gxH8WaSkFxmJ
+uPJDPKl8BmpTd5LVLKaWEhfMob6yVTyLn6/wxjuJHeR39FfJc/grV5yI/qrJP1J/+SzyXOkC7lZ
3CAd1faR28lhKievSM4hmSSbrGNFyXeTH5M8Ukt+Qx7HmIpoiziERMmV5CaymYaEFxG7mzxMEtTK
6oSB0jN401AygVxNFpN1ZBd5lbrpKOmodCr5y+QJIhMPKcCY5pAvaTkdwR4Rrcl+yQ/IpeQgeRnz
5b8t4qXiDunSRFXy/uRzxEcOUJ0+RZ+VSqVbW29IPpj8LbFiPD2AkZF4zzTya/IseYX8jfydLU8u
J0PIWLz59zSDRmgeMP4uC7FlbJnwFumO2dZhtAvJVtKIFTlEDpOngZs/kWPkM+qlaXQYnUZvp39n
VjadvSHcJ+wV3hap+CjwHSO5wNG15BGyn/yBvE7eoBL6L6Gj6Fw6j26i99NjrJF9w34QVfHX4lmx
VcpLHEucTY5MfkeCJEwuIdeR5cDtb0gT2Uv+i7xD/k7+Qb6nTtqbzqYP0kZ6jH7DNJbNath8tpE9
wp4QRgq3C8+K5eIA8UrxdfEDaZW0XpmqJM5tT9yZeCLxZvJA8k3Qjh3955FqYPQGUMUj5BnyFnp/
n3xEPuH0g/770sn0crzlGrqG3kWfoL+nb9KvMEti/mazvmwQ3jqPLQCebmR3srvw9jfwe4R9wD5i
X7PvBEnIFnoKDcKDQqPQLBwRPhedYp7YXewh1oiTxSRWplS6WBor7ZQek56TTsmV8nR5vvyFcqOy
Uv1Da5fWPydIYnaiMdEE2lVBSdcBEw+Qh0D3e7EGrwKj/4URHyOnsQphGqX5GHcFrabD6Qg6kV5G
Z9Ab6Wp6B91M76MP0d9iBpgDU4CtItafjWVT2Qy2kq1mt7C9+D3EXmHvsqPsJEYeEGJCkdBDGCpM
Fi4VrsYcrhWWCSuB2duFXcIbwlvCCeEL4SRWLSBmigvF68R7xB3iXvFN6RLpKvw+JD0jtUhvSuek
czKTw3K6XCzPlXfKnyiy0lMZpaxV3lb+oc6n6bQLRh4B7Z//YSHswUy2i3nF5fQksjOoSByYeRHW
YSx2xT9IlZDAuth5OcbmYyHRw5vLhgj+w66lh0k5/T1ZLjMBXFE8RvbQD9kx8Xl2EXmH1tOQuEO4
WnqVRclj4EYb2FPsMB1A9rJKNoFtEQj9jO4kn4Hel5C76JX0GvIYPUn70OtpL7qcvM38wli6klQm
H2Ii1ehQeopgBOQGcTq5/PwU/mWEVpAPyZeJB0Sb+Cvwp2ayESv6OPmYPkp+olLyG3A3AdxoKrjM
zaD3mwjnenXYZ8uxH0PgIL+Q3yB7qQwu3kvuJ15HTpEfyZfSIVDUAHDTE4k54gPip8leyW7YYdhl
ZCf23WxyMXbMZ6CSp5Hmqcuw03XwklLs6lFkMplOrgfXuz3ZmNyS/HVyaXIeeQ1tf6Jd6U90G3ZE
M1pUkpfxext5n67HPrz4X07vP2YmppMW8hUN0lxaiv1wUlokbZB2SXul30mvyz2A7ZXkPlD0J6Bm
HTO4grxJviI/UBVrEyJdSRzj7Y2xTyK/YLXC02QgDZP52LMF4OMD2mZyDXq5Edjbgv38NPbGKfCJ
y8jvyFHKaAAzugLvV9HPcOB5CrmGbMcK/po2IWc6uHYX8jXmbae92bV4n4GeNoJrtWBMH5LPge2k
Oa6u4AuD6AT09QOZSKbjDT3JKLobK7CfVICzDhL+AHznUCcZQLPpw2hXjx1qJxmkQvqUMtI1MTLZ
m80RnoaMSSJ/G6RXGrmINmAUDsyjlfhoDSlPjMEY3qKC2Ej/aI7iHjYjuVpYnPgFeY08ijUxxEXK
IEKM/uOMqn4XVfbtU9G7V3m8rLRHSXH3bl2LuhQW5Ofl5sSyo5GszIz0tHAoGPD7vB63y+mw26wW
XVMVWRIFRknXwbHq+khjXn2jmBcbMqQbT8emImNqh4z6xgiyqi+s0xjh7aai6IKaBmrO7FTTSNU0
ztekzkglqezWNTI4Fml8fVAs0kwnj56E+C2DYrWRxpNmfIQZ32DGbYhHo2gQGRycPSjSSOsjgxur
F81eN7h+ULeudLdFHxgbOEPv1pXs1i2IWhBrDMTm76aBftSMsMDgPrsZUW2YYmM4NmhwYyiGpuhG
yB08dXrjqNGTBg9Ki0Zru3VtpAOviE1rJLEBjY4iswoZaL6mUR7YqJivicxpxGzI+sjuri3rbm52
kmn1RdbpselTL5vUKExFH4MbXUV476DGwHXHgz8n0bl74KTVHUvThHWDg3MivPK6dasjjS2jJ3Vo
mxblPdTWog+0ZbnV9euq8eqbsVLDx0bwNnZT7aRGehNeGeEz4bNKzW9GbDDPqZ8badRiA2Kz182t
x9KE1zWSMUuje8Jh42DyGAkPjqwbNykWbaxKi9VOHZS+20vWjVnaFDIioQtLunXd7XSlELvb7miL
WG0dIzOA9FSZGTOr89jwMecxS/mIYkMbDVDUFRGMZFIMc+rNHzN6k3VX9MYC4KeWolXjdKzInEZt
YP06Zx+ejynSRinXGYus+46AAmInv7kwZ2pbjpzr/I7wQk4n50mtkU5tjzcWFTV26cJJRBmINcUY
+5np8m5dFzWznrH5zggCoI+MAm6n1vYpBvqjUb7A65sNMg2JxhWjJ6XSETItbQ8xiotqG1k9L8EC
pkp843nJivaS883rY6DkvYQr7b5GNe/8P4fT7xk8u08j9f83xTNS5cPHxoaPnjwpMnhdfRvVDh93
QSpVzhEKvKGsLdboGThJSGPI4zGWJpilIMrLJp+vgsQka6OYi38yHzR2hwCiNDNopLrRWT8k9azV
o9G2LfPPbZoVtUOj5uQp3soMfm7WNovGPkVt40yNurHvBekLRmddJwwfB47Dho+bvG6dfkFZNXjZ
unXVsUj1uvp1U5uTK6bFIs7YuoNsB9uxbv5gcKHUgjYnD61Pa6y+uRZTmU37gGwZGbA7RteM3m3Q
NWMnTzroxElmzbhJexhlA+sH1O7OQdmkgxGwXDOXnc/ldSI8RYZTEPoepppFaQcNQlaYdUUzw0xf
0UyJmZeqhDxKrmhmqTynWa+2trYb1BhOGxJ+oRUoZMBeRhOy0syqDA+RxIRAdEVMUBJSZSnBhKdo
HtGgDAdJsMj5fWVr5Ujn6coRrZWkCnHnOTx6lERdUVcuHhQKxrmI0HLOkMhZEhFb8C7iTp4QL5Xe
giTKolON1aqouIfoQ+yT9El2OWgNUK/P5qdet83PPJnWAPOEtDD1Zmhh5iFqGvUKahrzZFkDktNl
80tOu80vOyzWgOxI18KSU1TTJKeuhWWHoqbJDi0cHpqmetPSVJvfPzRg9QYCVofdbrHouqLIQ9GH
KysrPV0UpWa2xZjCvD5fMEjoUOZxuzMzMzIExlR/IBAOp+k2q1VTidfjcTod/WzWHYGv/TtsRjAc
txk5efEqG73NttXGbCOjsiQx2i9N2xH+Wt1Rkmak1acJaSMjD/2K46vueOtx4KvSWYn4gqKi02YS
KY4/PKt4SaW7otiswhOtbbHvzRJeiiwzwHO11L3oeucLq7sHeeDo9NOjhNZ5YuVlgKinTCjj4IsB
okLMExNiFFn3rtlbeYpm1Byr+WjEF6PWHaj8R+JYzccj/lzzCd3c98996FUf0vyP6KrEdRw+Srz/
YSomrE28T/NBUFcmRrPZWE0nqTbsBY4dAlM1SjQncatP02yYCSiehN1l6No/rPdFxBKRic1sY5Pr
kStNfJxsPX3SeZJUVfEp8QHTWB4rd3p69ipjzOd1B/xsxrP3bLtiwsqWtbMuKo8lRp+gf/8SBxB2
7OnEm4mJf304sfO+mQQjGYiRGOZIhhrBfJavz2Kz9E3YjDvtiqY6Cf65nXxMMF6kxrRX/Yd0n5WP
xj13IB/NydbjFw7G008ojzOhzO/2eRUmDB47qE/6zLXPbNoxYPjjidF7fnfm44V/pY/S4vcSmWfe
/DZxOnGWj2Rh4iB9hPKzRdU+TbXIutJMM400eQvtDcJbQPOUHAfJIhFSgv0Rss5aFCzCJqobcbwV
iBhx8nQrdVUQV0VFjxJP1OeVZSW/Z89esZtpqMvCyb3GD2FraOiV626ZH7k2fdp4/r7+dDWbw7Zh
95Ya0RJqQAXthb3sFCJCiSAKgySn+S6BhMRHfsHfdbxuhPPzOlJ8sg6vwF7tzwpweAslTvDe7sTj
cYxeIDmGj/UmOsvrMFrx/Ghb+Vh7lJSh/Z3cKMBbMzIBu9sutUDbjJA7jeFL9DX6DrpL2aXtsB/Q
XtbUCa5af214QtYs12z/7PCsLLWCVcg9tZ62oWyoPFirtu3QXmOvyC9oL9jeZ3+S39betrmcwUiQ
BZuTLUau2x8PbldtWY5iB3MYSDm2EynjaA1sAOFs71FLKPrWcyY2R5wc6fy+YQQQerKogQOnLVJX
R0sDfpdTkWPZxOXs1TOQLSuyy+n3l5X27NXT5czLY6XvLLltw+J33k38hGfZKH9GvKYsFUgtm/cm
piTq92/EYWw7fWD/xi/7j7sqgZ9noRv/Amhnz/YHBh8C8vOAA41MMLQr2S/ZeiaA6mlh0xSJgtNc
fkDVJEqsGuw4k4AzyuoMm0TELDEiNoqiGNIP0R04EaXIonIE57JgD1WVp+tOgihIXTTqkpXynjm9
yoS8xIl737yaspLjYmzD4GTOK6v4GpbhLGrFCDJolTFlX3B/+GDaq+JLwSPBI6EjYXVg2sD0gRkT
QveJdwd3idvTVTkcIQVyr/AQcWBwYGhgWM0J5oRywoI/T5wgrgluSduSviVjV/quDNVNMpwZkYwe
GYsyVmZsyHg3Q83g6+L3+uIZzGl1ZHBSY5yyDRAQipqwRqSZPdjEqNXRTCcYsSxrsZVZ+dpZt3sk
7ajfj0MIJeEsx1HnYhbKbF/A0+YKVlaO4OyhtajhOARMUV1DpctdQV1lRXVQGw6SjGTLHlcFH8Me
hxkYdmeFqDorJNWF0FVRZP7U7pbZwHGTDIuWFkpjaR7KT/HoCP/qajllDB896WmSBhU1HZCRPNa7
d+9a2lAHenFFe7p7gTbK43kxEEtuz5yyUpxuQDairIjWc/nObd/8rqjPjNpJs9XEFyGqvvj+mYtH
lCW+v9hPpcTZu6j2p91VE8dfPmPuL9O/ePWr317RNK3/6VF5fJVGYK+kYZUKyftG6WrfKz72y/T1
6Wy78Ki0w7tfOCTt934Q/Cik+r30Fv8tARbVbUSkAY8/mmVzWvVmmmNYa2zUsN0GwWOj/mbKDEeW
p9jDPBy9nu1pEgXK9zlBV6A/rFMpssXt+bZGawvWwOp3Hl2edVvW1qwns57JkrKOKUdrcmhOuMh/
NLCYHiWhLu1rcTK1GOBNdSddFcV1bQvCV4UnG05SjkwwLROlHKtAKtBH6jy55t4ysaf08p9HYz9W
hp0IrurHg8Syc0ZQp23B6ImLF4zpOTxrwZJJQ4fMtCRa0656fukb1896a9mmxOd/fCnxE70pOvvq
lfPn/sr3mTBn4rBJ0+u73rT10pW/WPPsNWlP3fRs4tRn2E9ArjgIeNWJjXxsVFgjtgrNGrIWWcda
r7R+YpVP2qgs+sVcscA2xHapbYftgO1Fm0aZSqyyTZF0i00hVqvN1kx/a4QF0SuAiTKraBNsTNSJ
YthabEeQOEwLYCpjdO9+IopoQJrppL3SbTrFyjDD7VS2Ks8oghJ2VLHljLGQ/RC9hA4xd/XxBoj/
EafrzI1dBYWgta6So9BdYeLQXcEFu5gS6e2k2816kXWE9XXrR1aJpIgW6C2CllVOy1yQ6y7qomxZ
6072q2/270+cSjxJ878XfnPu8h8S77NM+l3CAoq7FBRXLm0HX3Aahao9Yu3lHuweGrrH9oB9k/sD
u+Z2edxRV8x9kxvsiNp0YMHtcjWzbYbfbvPa7Ta37uU2VYMKo+gGMLwLyOuASV1pNojUyYYtSy/W
mc4JUd/u5cRn8frjEW+J1/AK3mb6mOGF8uUsdrJiZ5Wzxik4eVUnf5fH4bCLDifI8UiAGgEaCGfZ
m2nUcNsW06eOEGrAOvwk2At4xUF6cRubBK8/fRw8v45HOLt0mtwCGUUm8+CPugbgmKPWDtSaQtak
V5NWLyDUfA/wqvQsKyWgUMiKnEtp0LpoxKTrlk5dWn98AzvR+teul087TMU5tyVeSxK6NGPKvNs2
rF59ZZSdTfz4Y3Hi1Pv7bn3uA9DiRGC8C2gxAPv000bfuZaF6mp1U2iHtEN91L7Lc9C+3/W0p8X1
hsfmk3q6Bjmv8+9jf3Qe8SqHyRtoLlIl6HamRcC0OAozgaK07Q5bVrQ4yoAQfzy6vUqjhnZES2qC
1kxrmp6kFKsSNbKzxGLsel5H3O6TsJ0XZx6tsVJrODd41B3KOb+1U3LydIrJnq4DAtskJidIvqP5
XgapUSnP5IDACrQhbFkIUAJeSL1ceKbYo+hInNLHDaz9pXPOlsaziTNv/DnxCe3y1x1/an1w2eiR
s+ePGz1fHJs5btS21l8lTr/9l8QpWkvX0jvp9MPnvlx793Xrb7tpOah0IvZvEFRqIasOEjF5zOjh
cMV1S9jSR+ytD5EmWHZZfmd53fK+RY9aqEVQSJal2MKKLVWWGotg4TO2HOLqEH38AGNUVFSriq3Z
VKxQnGrqDTurEagQtuFIY23DArTxhkrsR+g0XAU/aZIOn7859yLoSD6ZsUDU7e41UXh28fc30MTf
lJMvig9S6Q8LE8MSnudoCVvyI2hybPJzMYD1DsJHVEJt+0rUjKx4XnPyjPELRF5yveR5T3pPERc6
F3lXOoU80sXak/S1VpNLrFeLV6jQinyL81fnb7JtDj5sezT4aHh75o787V0fLTkYPpAZWOxZ5Vnl
XZ0vbsI6bgKm0rtvRqxI4/FcoTufelX3mu6s+yF2K0RZi+H0B+Pz01eks23pND1ddhdwKtJQraTA
KGAFzexWw+a2VWXXZLNs3jqb54RlKeuotrjoaI2DOsKloaPC4tyj/lCP8yRzXhqY6lVdVWtdkdOU
A0Un64pMtHHUmbTTJglIQ11REc3LK4+DfEzxyfm+GMvO51meDiQkdIjTIVdd8dlbb56YW3/d8kTr
ey/fdP+ig1NqRtVPGTm6Pry4duKCa2tnzRAC3R+sf/jddx+eubVLj6d++Vpizq+OLn6Jjh53+ZRx
NVPqWy+69sbrF826/launfbH6njbduMRY1Jf13DXDMt16lr1UelRdbt9u2cfOSjssze79np+T151
tXhccc8ES61timuMp94jh6TF/nsCHzk/9kqzPTjc8s2ZlVaMzclxh40pOaMRbEyOZCdyottLNFqj
faydatuc21Kbs4NETkM17E9b8GiNm7rDual9au2wP9uRbcrcf7U/TfYFBLdxsF7gV6w8jq3JN2gs
O4+amovPxGsdderjBk+8zjV36xNnqfb6xzQz8e63j7/NLr9+zMhZ2J/z6NjMsaO2nfsltbz7MXUl
diQWJq5ObDkgpK/Z+Mubb71pBbDIrQXPwJOqEJ32P0iU5FFD61URlwvwUEwCKyiPywYeSB01RkXz
UYZHIekCXligF1t7k15SlXUumctmCDOl2eos/QvBMUyGCNaooGuaqGiURojihQdC1kQxIsleSZJV
3Qhn9NP5KyzhjLieywRBFsH2njLsssIkEa5W1YrzOjTOqYYlC31AWK2gAm1mOYaWpdESbYXGtEMs
h4iooUWgj4csl1/RdgBrDYH7na5rCLaOHDxj0OftR/IRJ0HOxdA+i8wD9+rrzQM3AsVZWbn6hRdS
EnqvFtdscVLE9cnhjZaxwxszYTI7SIRkYo8q6oeSCWDq3G5ZhG6Z0i5Tumk0KuCXRj2CID2T+N2K
1v1LEy+yvrSiy6sv0hGJJunQuXUs0noMhwp4CYg0DZj3kAhs9keNqsVd6Gz7ki6fi9+Lohb1aXJB
12iu353lq/GxEt+TPubzeWPZuW6PGvHmUsLS8ufLK+AmG16Q/yQ4BzDZpFniENg34+TY3eg+qnt9
9/ndV3Tf0H1bdzXSvQSsxJsdIRFPCZTKZra+qVuPse3Hklao5nUN3xdxgVsHTgBlhoPJCEzl3Jdc
sSejwoeX7AnzYMVuD9fHa1GpXbacx5UDuNqtR6B1c6UxWpqJw79sKoc4/8pSFCp/aa+eXMzk58UE
V7QtkRfbyIb99rHVk+dNWbWh7sFFwxKfJWy04Lknulwycfiwrm/uou5tRQPGGktflQ5lXHbPlFmP
F+U/tXz60w02lYkvJp6QtIkXDxqvSa0HE0s0a93IAZd14Zr51OQJ6XLYEsLkXWPkKm2td61/K9ks
v6S9Lbxt+U7QcrUCa4Gt0FvoXygt1FZJquJRAgFPIFDIugi5klIg3SNt0l4Rfm+RqmgN9KQxTkKP
wUHDzDORK4gzEVCvg17gizACwW6iajfs7rh9+BQH5WzX8AXjOC8VGNnubrrg+NY+gXxLzK7CJWDl
vvxtCnUoWUoJNEysXlPasrZ1wWqMdEKKY1G4SD+NI9PxIh7yCMQZBDk/1kiyGItwBhGNBPyBlGjH
ORiSXKyiWQMSr3+T+DCxhl5H49S2c3pp4k/hRxb95rWXty3axdIuPfUlvQ0e66vp3Vsvb6xesPKr
xE+Jr74BcVLcMyDiKVCohWwwLlIlCN9c2Z0l0RLpSYlJkiaIuTgm61quhcArNFxgQ3QCIR6O2Eps
BpRqUYtg45dwRIHarB2pzZwWpHSlqd51JjYJVJZRIYHKQGw8+JnYBAn71LRU+KDWmXC3WHXuS3as
NSKUSYfOJA7/kGj4AaPfhNGvxOg1ssCowuhlKVeJqCXqM+rHqlisblCZqpLUFDSMv0quwV4aI+AQ
wMIRS4mFWS4cv/6vxl+XOsy3cjMfzrOtlf80vk3Cyda+bHrrFj62R8603s4xy/d+FxOzvzFyNVHS
BabpuaL7SSgzAjGtjkxRVeBVUiPyG6ays97INmyjbPU2Yb5thY1xJG/D6UW0MUsKzS1gKilEL7xw
Wy/4vq7Nqgu7nGma5KM1t7VgYlpIbWsedMJ0O7JhGEr9bqQFbBAtSBxtfUo61PoM6/9TNbuhlWt6
92BOz/M50duNsCpTt1vXJYEJIja9Br+hLmmqpkN7O2AUKbIXNluBCwMdwkDXNTB/XdAEWNhkBbwf
i0AsFlVRYWCcvkcaoiIw3IpJWuz8jNsJq43n80mGOGUFUxsmZYTFnEOYL7hUoIIAcGYImucxM6Jy
k6vqrFRfEPizMsX/92kRiy0OfLy6R82HHOCCgAycZITy5Hxtg7hZ3gbjTouorJR3il+I30uQW8lj
Tb3GxBG2GDmI5MoX6dcKq4R7hHu0e/VdwiHhFUF/Fpc5zunCRfoAgS2AFkWLGupqzXWQk180uS1V
cnPyCxyZLFViic2Ph9VbJUYs7iqM5EiTI5QK7YFUiBpmPiqZYVu9PXZPFUbMf6j5BBvmhj3YWfFP
cd2DFZxAb209yqoTNySuwgZvXcjWt/7+3A2s8bvEYKwkSBTq0SFiZUHDYhHy1DwLTs0UL1lhaOl9
4nqkT18+02NNbaHxcHp35OIhY50/1b7RIcF03cPSRaeWpcdYVzGiFcOIO1ucoc3VF7Ml4sPaLn2f
dkj/XvtJ928VN2hb9Re1V/T32FHxXe19/QT7QvxM+0q3LdaW6L9mN4u/1m7WNzBlkmUGmyvO0mbr
i9hSURnEhouDtOH6RHWiNklXgnqxPc76iHGtr15lV/hBX9Y03cfCYkBT2g7fWUyEWiJZFaVUtltL
IYqdMHSPUm1xC3+Ys7Rj9VXDnh+38AeythhOHrGoAlcVmaLDWoCdVAULVqDNLlVHi08634Z6EajA
+a6v0Q1viYiqppWmzA4M9uJSgcECwdCNYBUZs4LwNUXNslOciW1N3LN+CFZasL+mS+viYHwtRmDs
uLhUqhjKcpWqTy/HKjxtiVisrJn1NtyUEAMViYFKpDSLKwHoxtYD+995Gke/ImflX52V4ZCztaG1
oTIcxDG6CBnO4w0YPDfSV1WmNkTRz3pQm87jGQt1R00e222JcAUHYgY/DfByFBURUC0ICtSUoirX
7fQw7jgo9KnEycRHiU8Tf4aaExS++KlavPHsMg6gqc3gDjHOjel/GXZNkNWQEFBFtwqtrzlJOO0j
NKfNQ6MLZiSUKirYhCqojCmCBnwBV4LIZyzyGYul8humDXa9ETIsoyz1FmG+ZYWFbbO0WFiKg6t8
P3JcmvvSPnZsXCs1RVI7r9Q5rrjBHrwDKiGUIEzSZJdIAUlVpnYDvlFRsbo7nzwQlaIjrgweMzRQ
hRpJ0UjLAeiMqmEqjqgJljHQVBlX7LeUqyss5ebELgp3j6tj8ZAEv1AqGIJYLdwEYbRN3aMeF+QX
hDfUD1QY+4vVuNBXrVHvELaq24Qn1UbhGdWSUsjL4MYw8EDqmGErLo2zCH8o3nLkbDK0aPc4G4eH
Wbs6M4IUHipTlCATAkpXlq/0ZWXKSGYol7EJiuZlacoINli5V3lMeY29z75gJ5QfmSWfFSjDlCXK
GuVxJlOgxVx8joMi2N5TpFBLTErgsoG6NtMIm0Q9ifdad4MAuglv/VQtPHUOl00YbkmekE5AB3PA
U/iQMX6TtEndbN1sF1Wq2FWHEswPLtEWu5XFriW+VeJada11lf0m91rvGt+awJrgqrBVcYMSwj53
2BsO+sKKp5tNC3VTBH/+kzolulOP6ILO9d5ISYaRUZ8xP2NFxrYMOZJxKoNlOPO3Ecq9HiWmfLy5
KX3Z86k1h3plar3czATfQhU8ICD0BuiscainvXqWtSlVBC7M82aR2oGlT8xa24TLPDclliWeThxM
LKM9Pt+9+9OPDhw4xt4+tnn+nqI+OGbdm7g/MQ+q1ewfE8lk8twZeJOYqVGdwS7geFhs5MrSQe/B
oHCxRGdJ70rM7cq12e0kzcnVKgdRMT0u+UHB0Ou5Zmj4szJK2uYnZTgdHdWr9I7qyQhnSpc3KdhU
TqCacH2xwZQFUBP5uR3KeCwWgvG2XRe/m/6J2scs2zVt08i5rzz70JOLBl4+pHybdMgf/ejJ1c1z
XL7W98TnEvXdp/UfNdumYz5cj4EegFujUXLGuLHCMdQxUZlrmWvlPqJtsf32o5ouq7IeUP16T3u1
vRquXKfm8tq9Dq+zp72n42LHQvtS51u6ZYm2JLQoY422JrQqQ9b8Xg2+3bH2hfaV9rvsv7FL9ojN
6rXZrA6rzxbw53qcXlrv3eZlXi+JRDm6gDgfUcFGnzLyic0JI/rbafnb5Ea5RT4C6/7q+TEaiZXE
WCzq64i17B4ddAd+AqprO/+YzPFntY6fcTgHqOtgbTT1bxjGwQtLTXziiBPwRIXuLBZz4YjTjlUc
a+Z9/c6K556tv35uU+KBdxeMu3xm5Z/emVtZMyRn7wnpUM2rNz7yXnrvVY/Bvlb1WG20dYswMmfS
gGGXwjgMzjkMdo6/Y+90pUeMiw66mjP2F7zYVcQhxYdDii9YNEOaUXCtvMR2bcH71ndj1lp9vH18
dm1stnWme1Z0TsGsroszVmVsjFrdMS6xM7PiPDRmhMLx0dmjY89mPxsTG7IbYjdk3xD7S/ZfYnKR
3sWWk50Tq7DFY8P14bZB2QNjc20zYktt12Wvta3L3q7vsO3M9kCls8nZciykh2z+bCU7ptvgz5gQ
NEKR+LwgnRfcCj/fITYDnpgWwxquyEqjad28AhlCOX8fGo7Euel5FK7ZbKDbcAehBVf2/ioa4Qon
/H/dumjBb5OwFhueQDwwXMnPC3fPyt/mbHQy53D6rSt1qgh1+2PbQWn42Em7idG71jy9wgiKsGgB
PzI1FJ2uKzqeChcUHYe0S7EuU+nKBj7SMvoBH0fawk/3eCqygR4EyH1lj5unjhgOd4Ut4q7QTXDw
vC8MuxV5tgo9yME8C5us0Xy0u6h8ffQ+tvLscuBxqG1gdnVsu/5otm5a/M2t+LOdOh9HYdN8BqYD
myO3ziqyzxvwiyZl8fPdMBoJb1192+0XXRI/+Nf61cu/fRTXdwNK4qjn+utvGFrctTdtfGPhzUny
TOKrxLv0o/Tb1ywdHR+a5u7ed8LS385/fubfX7U1XFGeXRHPLZ551dPrl314JYX+gHt8OCcdxB5W
cE6KFWslYok0SpsP28oGTZGpxHLhMFGIqsEUIy7n8pZ2M3RZgTUGV6yhgSPpEuyjcI96BdvARBZS
Wx9P8Vc44nYzrAq3xoL/4AFLzPE2nsRPcbQOgqOcn+Lox4kR4i2JkeJzZ86c7YdRKbAWrceorDRp
uIuEIjliKbOIRKYWI9wnDj15RRNCoUO4J1QOKX/C0Lg1KYQHLCKpFOEpaFPHjFp4gMUIHgrUQtka
Jj6tkORqypf6CesP2o/6D1bpJekV/SXrB+RtaKHvWr8in2naY+JvpMf0R6yHxSbpsL7P+rKodRez
pWI9Yr1PvFO6T7/bqqaUgr0qtdswuJYme5QPDvZZRKBERvmQtzSl9Mstho9rm9N5yiLj6rAClRJn
UBMzHTRKk+mk7X3OIkqR5mRJkwyFsjlZalwmEGuE4D5LhBIvFlHHgbHUontxFUaTFRxyNa+qaqLF
am1TPfESwYqDrWgV4BHDDQpZVRSJH7PAOU0lFKwT61sMHbOZlhh6RH7a8rRRzHV+JK0RbnpjNGRr
t66FQyNa68LB1tZwqLUu2G5gS2mU/Ml/zdGDa+Lyg+kK4yevEd07aJr8pksHvdPUmExFsyG1k8xD
TEMdN6fh4OJBSCmdkXiIFn9EreAb9C+0S2JL4kUYNz6CwuESvj2HOxjQOoecbQZhDk1+gTvz/eCr
KaUNxmwlrKZLGf7wsLQh6UNz/+T82KX1DFWHJubNDM3KW5V3R+jO8Ha41l8Kv5xmlWWbzy+H/Ply
oa82tJitYtvlffKLsvWZ+PtOlpFT2sPV1ZZjFHWP5xjZBXiEMuLzcs7lsJxq04VeYnfEL8qg3L/e
mPFjhpiR0ZWWEQO5XA9hZHzUSHdVRY00Jx64dhRtZtfuExWrTe/KaQdlZohiM0SNrqhhGF5LZo88
tVArsNVmWbdaGTT+JJR+ww7/e7gmTuP12Dm3lgBNZYXRKQH6cYDWBKYE5gWEQKhsTv82rWcBuGPD
yTp+UIYdiaeO8zsJOC4UQeGFGmzyTNOgUZQi6z3FGbSh9mS74puTbDmQlhEflzM9h9UV1dahBcSj
YIexgG/qBlj9GijuucA74PfBBxCIcu4mw5bNHQRQrHDjmLufKNdATFu26ZSnM5JFf3zjqebhQlpu
4iuLUxGGPFz38NMT7rvj95eMmjd8HL2851c5vSYNumRwmdPCPul+7121aw8kmm++6ZL0XiG1unrP
msm3DE/PjaSPHtw38Ud3aTC/su+E0rxeOTOA8tWghrtMzSud3H8QF9fOGD0sFb3SLk5j7gnyBH2C
f0KwNv0HRS4X+9r6esrTBovDbcM9g9PuUu7RdKsd5E/CWIQ9kuLla+GxWBxED0TV8PxMmuksZEIe
THyFhpXOJ9yuHsqoSuEbvqiTrZWfj4RGxrXMSq5nVnFdrAHGO5gULDPlmfpM/8zgnHSpDvp0ET+r
A3W4cc0N/vk+D6TAee0TN3tu3PNcItF68NLdhjs+dGndr1fOmrEKZ/hTdyVOJH6Er/iDS2u3sC6P
1Mzf+tj+B+/nHH485l6FnRAifzFGT3LUumv9sx1z3HP81weXhjaxTdYXnS8G33O+G/xS/lL90vOl
74zs6e3p7RvmHuavDtZa51iVPu5e/l5BYbG02LFaWuVYG9rp3uE/6N7v1+ycYoNpcR7uc3vj9jIb
zwllxs0Q3j7bIXyJoQNnbpeFGKhKDNQjZRtAp4fAvkQURQIK5bk0SoptPGKL1uBUHE5Tot5QeFIK
leY9IBhDi06fLOLm0LrjoFhuDUWYUm6B05T5M+Uh6SVxomvzbYo9El/br6iZc/3yK0fN9FFv0enX
v0x8Tf0nn/uMfVM6dtztu57ecum84t89h+8m4A2iuTu4xj4OuJvaRjcbjG7uWrlWr3WnqGUzSOOM
ps3PXJHJ+ghxax9fPDRMGGQd5hsUukfTOJ3skSycagy7RbE7sBR6oNBuy4NTt9BwOEj4Nk47UTWU
ManS3Jx8hg3fpyjGlAapUwnsvA2cVmxz5Dn6HHeKWuQ63Gsvb5sgzicBnME6koo4NXG2/+7JBxJn
E8/tuZGGWt3Fg66bumblrOmrt1xai49+IKto6C7mPDd/1yVXP/LwgQe3Yr79Md980IqXpNPfHCRO
7JNqSwVsWLaNzp3SDv2wdtjWHFZVLx3CLpar9ZrMnbb98v7wS/rL1nf1o9Yzyg82W7oj3WeAQ/gM
uyvu8D3je8MncNdBkyOzygxhwvI1s1sMKPnuUfZ6O7MH3Vwv3B9Ki9Myt2lQz4ikDOvZhamwqFsq
DKaboeEAO90GlOK6IiNT3G6guUm0uIMc3TkWhURpsS9FRMWZUzLnZW7NFDMdUdWwOeJAeBs3LLrA
wn4SaqHhDRoF3qqgkenAAyw4yHk1l0i1Va2m2ujGRFDDzSeESmaIejzc014VjifepMhsQFAA9zsv
hwmyOdnYpOn9zGT/aBXMKej6OOeg3CRreO0GsGTnL7Xz18OVEEjZ82pNtxVO4RCtZVx5wkm1CMZ/
ORaB6sj990SImjd0PCn9McB+osGeXz6Z+PqmOdT71knqllsN4capAybnC0smXFZZSemY4nsf3Hf7
R6CFosRLiaevXz+E/uK65QMHXsP5RhAb4HOcPPyk2YAvgXYRI86Iq1ZcEZRU8Zkg8/ldzOv2u+we
B3Ha4UR1Mq+mOix0iiUJ8zlfCF2mLoefJv240YRkJm5H49MnSmSPV9fKqmDgGAX7ToGz2DXFxVzN
VDRsdk8e804h2/wtfubnNKFZ4/5QYMlBNid1PaQILJXfTT5XB5UydJwEwVS57R0A73VDRSm/Otsm
hzywk3BBFFC4wPH5+N0aXIoJbqm4Z+GSa/IG9ruo/I9/TJzYIuaNWrVybM4LzorRwz86d0AYau79
xGix3tQgiulIY9rijNUZzG21ze+xyraihxihOE0KJbSMlQkGHcgGCpc6ar21uRMKJxTVFl/pOOM6
43H3tZX5+xaUdcUxyj+8YFDXU9bWgH4rZLbFarN0sdry7f6Ar5vNCkU/mMN3wD5zB5gbwO4yiaTJ
Yk2FBV1SGyCWmwp7xFMbQfOlmYJ/Cq4jXrsny5HPA7vejSPc4lOCIblLoSUvHORMRwuFwuHbetAe
YEHNhk7KcqLuUMl57sP905z/OE86W01FnQur1tNtlp92+Q96bsLGNikYi2OSLzXN6/yUzAGn/HYR
12DyLccc75zcWYUzi+YUg2+RuoDk51LNlPvl4NFtBBwoj8I4wGIRKAodLxIspf3VjIIJV/fK9diW
tbx7/TRKn/n9Cqr0m3/4tsTfPzn36/pZt66ZPePX1fm9fZlRf4/Y5fc9vu+2d6iFhp+4+9zFTx2a
W3nwVjv79aP3P/jAI9vuBwHegVNPLfi6n+wxihw0Cx9AYiGdA+gA15/pj1RTJL+Uwya5ZrskSpnH
63J7BC+jDo7UDAEODd3r0/2EWPQ8VTMiOfEnNZrUqAY0Q+v3Z+fENwS3Bdn84Kkg+zaIG/bePD9n
fYYDdbf56Ckf9YUCVSm2D2Ma911AI0Ps+7ZU6jQAG+1J4DRgqleqeWaCNOAKAryqIOW4eZFH5lH6
2Jqnp26pyUiciIy+qPrqsgRsC62fbR0yf81trbezHjsmlw9au6r1G0waDNO8GYwo/0pg8UGiYWRV
Lr3K0EZpbIXWqLXgGtK3mpSl1WvLtW3IkARZwScEAqSYQY6QY2hZB51IlnBzUmcKZCafnRbNiYsh
tW1e5qxScszcnqZzzHQpQZ4t4FdxcNHNvHKcOIHvK/dTMXHu7DAx7+wHWKGfRzj2IDeJG4V8fNIo
ia2QGvGV6BHpW0nKkuql5dI2ZOCiPoakQw+jnDDNkeCS9D+NxGQMC0wtC1edpUM/VeNdy+Dx2Iyd
nk/7HiSFaF2Hd4GzWn2y3xoX4mo8GI8NYoPVwcFBMSuss4VjtfrCFYVbCx+WdyjbrfvkfdbGwiOF
xwrtpLC4cBQKnin8uFAuNMLp8SqkV5iFkhIVlXAGZ4V7dIVr/UamqODDhfy09PS8fNgyZYczz+0y
JpfXu+g8IKeZVRuOcFpeRjry5qXTeviLkbc3Ny8vn2sRewjJx2ybHFoVD42eGHc+quYb/QGVgJz8
eL7R56J4cf4b+R/nC478rPwV+QLJj+SX5CfzxfxQwacpImwz6UIapfZ/Je5PFIHNfg9HFYJ2cjQP
eWAL2PDmjTLgcwEcAiDKItxwB136A6bmjwuhnDzzOd81yfNnSl1GhfUtMzeWVD902cKHCkCvGfmj
+87unjiRWdWz/+xuiRNi3u2Pjhs/ftyUywZtbq1lUx7oXjlk/cYEY9X3Te5avfKe1nNYM3ipxFqs
mZ9sNYKKJ+CZrM6Gu1CkWC3nIHWQ40unJJvb1aXgUG61WKB+MZrnJ+Z2JRR3/ci/2666Jc8KY2Lh
HtgcOV7NXWulp8C5L9y1nFP+88Y1rYfcnmxqbrji/fPk4bRObV6xNnEiZ3TF0GuLQPzS+rfq7q3J
YpmPz+g9auWeRJaYt2XvwNkrf8n36hjoZPdipjZo8JuMIV/QE+oPnh984kvsCxiNQ1JIY7XOCZ4J
/trgJrZZ3qxusjZr77A/SR9q71hheJe/sDl3qK+xP8jPqy9apYXqWnmlKoC2QIWWAEeRV1S8FUq4
Pm0+7j/ZozCYdFC5UwcX0zxuHlo4R9fmOGdCD50TFGkd2Dm+TYm7MS1cseT3f/NyO1z8GrOudcvf
aDzxyjd3JH5YRyMbr7767ruvvnojy76ZyusSL337t8TzK5M7H9i5c9uWnTu53rGaEKEX5uskO42C
TRLV7HSsNFNaKAnF7kn22fb5blHXHNYsK7vNmrSyKmsNLkA3s8VGoaJgjQUm6wX4bEUrgRlL1MLL
3VvdbIp7uftJ9xG36HaSPG7WKDQsjK2A6RF2DVfVQZqeUi6gW5xf0u/rQiNS6gWYMLZHBb6S5Vda
GsjwxgDuBJWb91xKewMBWGKsKzCQUjRkF93GV3XglYPqaydefFHfMcVi3qYrB5V/173/rsTfMMcS
rKkTc+zCnjNaZJccU/MDrkBss3uzd1P+3V00xVvtZe7DtoP2l6Kfxc7Yvs+WC23jbTNsd1s2uXdk
H7Qq/WNGzqC8WdnT81a7V3tXZf86R+uVN1iutgyz1TiqowNgk83Jz+tlLY9yC2R5jiLrkkuLBm35
1uzs7JiSk210vca6xLvUt6hwYZc1vpVd7vXd3WVv9t6YbQW9LXBz8J4uj3Zp7CoHon4jGov7jfSs
eJaffgxVrkyNjsq9LZflGsGMeG6YGymMADjPqK60pCst7kq7ZkZLnNRZRqOmJgPuZIaokuLN3EcW
KlrSzA8958BxTItEm/gz7yBx99JJklI4jHKZUpn6aV52z2h1dBytDUyncwLfw+cYYGI4ms0KPDYr
KwhPgeW4usAyKkzD1R4FuiD+cbWkHeoa0g6S7ORrTdCkcK/PDLm1tykzh6ePNWXl4NIkQtjGedpI
Q+RKG+2ZXZ292XZX9gvZb2fL0WyrTRRxKy2lq5EyrrU1BbpVITQVezOdnRvnoZEB/k/MS9ajqFiP
62unKOx9TtPuLZo1PX7UpNQYAb/yFPEUrvliCn4DaqC/LGCg34CB00LAKO8VD3CLU8DILcQD/ToC
WaZxRwyMDxtQOBxhOiqcDLO2yZumb+CWH4+5XsxvD5mKHD9rwA7eZmXjV9zAvhvwU5e6E5KTfMXQ
cJnAUYBHtDn5zX5bhdVrreDRPVZu/f5qt6XCtM7hgkHt+duK/LsK2HlAdKmboReYsfn3AdDz8kpo
2H31FVf1yvX6hiYev3TZB5998HZB4gfXlEnzSiLpefTZ2kmnv32/lRYXjRlfkF4c8Xldw/tNuGfd
U7eu79FvQJY/lulLnzls+Ko7/tiIXZSV/ILdLt0Pvvi6URghUMn1Qkcf+zB7rUMJ+UhQ8PtIwO2B
ndzNvDQoaIquWKEIU8NBAtsCjQGhHkEL7GM4euyBUQDMsIn4+BeTOLNbLbi0UExIMZ0CLsEPJwVB
IS/gHu+r8m71PukV6r0rvBu8R7ynvBLxOr38QrwIc8WSbe2WtuGNvcAn+pp3B73JFm4K5ycXWMKd
p82TC0xB+AIQp8XjEKeusraTSx3FMcXLj3K9Ahxp3DXgwsd/5bkudl2LJT89f1hw2q8uua7Cot1w
Aw2LeccS424sSk/7oEvZ6ME97qZvHHvr4cRa4OcWcJmx+GsVfrLFCEx0zXJtlARNDsmVrNI1nA13
nWCKqdG6RIuf6D4vDmU4meX5fDDrF8KsaErK1PHtv5GUmspJ3RSRKj0FG/KFIrKjfBxxkn/yCF2i
o4SsS5kxcKMYGoM5bbjOEBVG9nl6zpW7LqGhrDFVQxZ0oaGt46ddvmsj25YIHpvRt2bhcdoCVRHz
tEAXmIx5Wmia4ZMKwsVxhT9k/lD5A7b4o00ITSU1As/BvSKVcZ1D1a0WaOLMLYS1sJ5NullesuDj
j+Qpww/7g04ki5eELPhjNJY46WNZTbQUS9qrU5vV7MuiBeK4qapRGZ+oVPH7IBXmrekKXCO2EF2E
SV6DlV1GXKvgFjEjmF4Qt9iyzDtyog1Wd6depdeYDuwSwyKyCguMdTWigKsgJVBSVhgOazmhETjL
BBqyvgDawh0neLVwyakOykddyDS/m2lTR+MKGj6rwinM3NpFEFhtF4FgQfcEuPkVtnR6IDGO5r/c
JyDbna/SaALYa/1k32B/t24sM4VTDTpxb+DUSj8yegCzOpGZrkhaGvGzTNElhRWvlqm7rFbTPROz
VAgV8hBhiLxZ2CybVkFjcdeLgUILvsgVNYsuWtNIWPRLXi2k+6zWGCkQ86VuWoGeb+2BK8T9tGpy
MbtYGqIM1RaTJeJiCS5hfbF1NVkjrpbgGNZXW98n74vvSO/AM/MOPDNficel47gjdNz6I/kRl7DO
KN/DhfO9tVvbGp33xWhtvhgfIhYcDH72usgaXzV+J46zRLBKrtVWnHe5jGhzuVxilHKXy3/nRpFT
bhRcQKqCNQurqvbXKP9wUmZXEQvAwDcM9r0ROFFeOEjDKWWDu1HavCgpJwo+xsLqtX86/K+9KBgl
X1jwb8L59V6LYauAc+nMHlsFqPwMmLXFsPKcU2DWyOEBUsf2YIUQtLNuLhjMC7qcKjz8H40KAq1N
NFLXSweoY/dr1Jd4LPH3A3tBGUNYM4ezH7DHWsdjv1mx3+rN/bbZWF+gvCyyzcpB+iF9RzllwwXa
sBiU8Q0i6a0OwUchv6ILFT2PFik9aR+lmg5TNlvOyGcULVfMU7rocbGPPlAcqT8vqpfo48Rafbp4
lb6EXq/fJW5UDunviB/q53SbICo4c/vx8VsXvUys0qtFzYdvK/voI/Ur9R3iAfEV/XtRw12JU03u
IN/lR5t82JhciPusrjgV8d07d4AhUImG61co2V/YLZ40r7UdMxz+nLiQx3AXhmmSbLG0FZ/CdVbe
RwDFljwi4Q67BGcbNEzc67IQGFyu2iOXaQgMizqjBl+NH8O9V4FnszIYwK4y3NzaBU2We6xFMuPn
/dtgXlIM4QJK23VF8zNxkzHyr5qKGtp9Y6kYCBO2Q/5IUfc+PQJC5hPcgxDCGDTBRXJdQ8MC0EbD
gjJqriue8P3R5Ynb6cSnXqTDEpvp2sSOox+wGBMSH9KchNb6Jh2aOMC5qB32rjFYVQ+N73UXSNTD
px60wl7qh9FU4Q+ZPyQ/8hjnZVngpDgmizaLXXYy4pFFD27XCTDqy556KIDN9EmwQYet2F5AIr4S
X71P4IYPNG3Kzoub9hB3embcx33LFYIRDMX5Dbdmmm9ozEzBP8lTblpBjPSe8Ta/v5dzQZMJjmgN
gRVybpi65g+8LRjhPA3b1cm64tReAidMfc3IbVMVCrxUHFOpq5F1wxudENB9IKD3iE5yKInVSp7a
LeDvhPF7/ab1VuLOfpuryuP0hPBwB6vgSj7VhAQP9yDdds0ytYkUuwBzVj5kd89edlhVz9BYYu3A
3IETl48aPTI0oHza5SFsKDv7+zl2sG7aRdmuD23X1HLsg7S8v1z698CSKY7K79SQigxCHvq0En/Z
jpDXRvXd/9NP51rx6XsO6uJTfLOF2U7plxhJBjrJTz/9dB23r/L6P//YauW2LFaBwySHXaRZeI3M
F68hbkC1kkFqpZfIZHqCXIayKwEDhQz8zb3HyXjUX4j0NQjvZBXJVtSfAHgIUAYYAcgDXAqY2AZj
EfZHm1cAu9DHFN6PGX5K5iqvk4vwLgLYCJgKuEuaQO4WPyWb5AoyjefjXTejjxji9yD/fnkXuR3x
zSiv5XXNkLefQIahvCvK7pQmJJPKLURBHkG8Ffl+vP8OPmaEeXj/NeI1yZOId0HfQ1G+GuF4hOPa
xhs045/yNuZc+RzX8jjwswxltwPGANYDLgV+ePsS9JeF9C2IWzAuDaEVYBcJyUadSnYRaUTYDe8f
iHHyeXOYyueBMDUnjB9thv4bGI/8/h0BY+Lz+hLwOuAI3t8+Nj6+jnCLOTY+vtQYBwll5vrxOdsA
fdnrZADwkkD5eumz5A8cQHlHMa/DAAl/n6yHSpK7MLcqaS/ZjHQpoNKEawgVt5B5wmmswV5ynbyR
PIh8wnoAvie57BsSlnNJL+BvEvqfCJiBPp836WE6x3vyG9TPEj+DXnANqQfMxbtfaccTX2ekh2Bd
J6HuOb4jgNeVgDnAwWbAArTvgfcXo60d6/4DnZB4FHWP4T3DOeCdfH2yUD6IryVgIdo3oC9qvie1
DqAZrAcA5XOB098CngE8y8fQDqh/ZzuYfe3CHYxdyX/gPR5AGPA64HZAHqAeUAEQ8H4d9XX0Pwzj
KEHajzFkc9qQXjJpdSwfe2oO5l5Yb+LocXIV2l8KCAEK5MfJZW1QgLoE45qGvsah75vb+8b4pqJs
fHvIy8UrTbp/GXkEZUM7hHfh+7nRfAx87ijr3x6i3f3odykP8Xfq+P68V3jHnP9mxM39yEOOG4Rj
0OdG0PnqtnBU+3hQ1hVj52vQFe0zUX4n4re0h4ibuDgfvkHuRZ8T5NtBp1+TkeIHZCT+MtpIaSnC
O0iJdBB5mI+IvzAnFJEaFV/cYy1rgM97OoWbkbdZeYfOxbtuEx/DXn+H3G/i9R2WLb5DJemx5JcS
oa9Ij7FlZvyfQpTzOueBtqTq8pBDxzLex/8mv2Pb/2mcvSs9RmbivV9J7ySTmM8dfE8oX9MSQKQ9
RP4ewApAF7WIblavpM3KeOKUCTkNmCcapI9kkF5iC6kSffiLcITkIn+8fLHJdzeg/5fo1+QWrNcq
xUdiwpckyN/F3oV8APD+EY4AXtvp6QKaa6ehzmE7vXYO0c9GrP8dCCWEIey7Q4DDgA/a4C8IPwE9
DgFcDDqNIf0Q6t+D+FoA52+g1+RJ5KXo8xWyBXm3ttNne8jfBTrt0ok+FeRfQJed01y2oA/NlC3g
NRgHp2Fz/pw/ch6H8iq8cyLo/ZX2+p3DDu3vBu94D2O3ia+TyW37uhBhCaAYfTwF4HzkMHTV09ij
X8hvJQ8rVcnDwqvJw/I9ye3KlcmX5b3JLZh3IR8LYCP2s8nLMA4/T2OcNyO8B/Ml7XJUyiMzOT6Q
f6+5Rng/6nflYzPrLcX+m0umod8/IC/J96GwBfsO+ER/N4o7yS/ET8gGjN0hPJnKF8eSkSi7U1xE
buX54Om83CJsMMvHiP8gi8RCxHcivI/gT56QRfJzvE3ydTPv01QZz5Mmk02gu2JxLXlY2k0mYUzD
+DxYefJV9BnDng+rK8j9CgENf0LuFX/CnFswR46DFnIfn7fZtin5E5+f0pcEJAHz43UAvA1sRpE2
fGw0ccHLuAzg/BO44H3Kb5v6BpGOov5Wcr2qk3vVfPCn70hYAS8x37WbTFQNE+8ixjZU/Bv2x9eg
sfFkjeRN/oi8/tLjyaTwE/bQ19hfHPCnvCQfCUlfk/uwl9bgfWPawvWoP174mvgQ2jE/LqetaLNW
fIQskB8jN8stoLt3IAveAU/+GnO5kvRG/HbxseRZ1B2Mvgh/N/JHI13C14QZySPA80NKCwkqBt6P
OnwMKHfz9wqfYbx3kjXgJf3Vr8lvZK5lE345FH/dkhBIcw5mejni8JXhb2WaYOZxlRN1cc64k1zP
83Hn92WMguFvW1K+F8RHISPuI/2FHbCHzIT+8BW5kRWT1cJI0N1JyAyBXM/TYldSIJwkw4Uz0Heg
n0k66WXW80OOf0FGibVo30Kmi3vIdCGJeBBwN+gR7aRmMlm6AnrW5einDRj+wqaokVHyerKaFScf
5/XMd5xJ+gWAuJSUmu142zYwx8rH2z7mhzqMGd9DCjeAxvh4+beRHcbLxyq0j7NtjP9qfOY8OS4w
Tz4P8U+kP/D0ISA3FeIvX91CHgNsYx9AD28hy+jGJFy2pLoTDOmYFpfRNYBRAFFcRh5A2A3hV4B3
AFsATwH+KpaTm9A3/s4xaeLnAg7sd+BdCFH+COBpwJ/byzqG/H0d0/8qLn6ePNQxXyrF3y8FsK7g
6YCOZTwuPkDi4hLoRCXJQxyERfDfAGT4URWVFLJPkD8B7TqlpQKySZyHumOI0LnP/00acwKtn8et
0XGO7euBEI7+/wh8DXk9HkZ4iP3Vjcvn/814/m/UxfouB8zifUnbSHeThr6ATq4kn6dPkcvpseRP
4Ocyh1SahE18PkBc7euE/DUUf+Sz8/qx35GeHOed85Gu5NDevvO6/qc0+p3TEdrpoD1USonBQfwz
6AHQOQ15YHCQOY0BOqfb6evfhuNIHHiqFseBTjnNdUrLTlLMgc1H+WaUf07yOZxPjyOFaGPSK28P
3MY4ANeHOLBPSJSDMAZlANTtx6EdX5j7JI5XoYW3Ndub69NO553XB22J+AL40XGSjXi4c9hORyA/
k2+0p3nYOQ9pk5f8qzrtdREagJJ/1b5ju/8/xLF3XgW8BHjx/8v5cHqnBLQKcBLodG9B38BftpV/
g3PWa+QWQlrXEHL2WULOTSEkARl87gnkjUc8D+HfALihd24OQkijs8cQn4+ytwGvA7aJaWRJm14Z
Qnpwqm3r9rb+clPtebufoO2c7Zlqf3Y14vch/l8AUNnZ5xHehfA71G9EPzBWtUIHOHcjwjjSowCg
sXNvIt0PALl/rg/gSwDGeQ5qzDk40c4+AFjE9RGup4E3djyH/t9NdzrLcr0O7zt/tv1PaYwRNgDc
buI6J8bL9UPoI2P+12H7ev6HEPi44OzRvv7/KWw/S/xT2IZf6Hyvcmgfd+f3/Ls01vPHNjiN8Ftx
bbIVOqVi6tHQZU2dm+uPXPfmuizXt7key+1BKZuiGQLPfF2tXHfm+itCfia7Q3oD+LyGXIJxTeB4
5bLE5IMdeCvrCltRV9jwUgC5RAaizh8xnlPgQw7I1++gW27ggDT/uTwFydcguxzguc/Qp5LfIXwd
6Qx6DC66NpnG5V5HOM9jO+kq/0LGXaDL/J+W/yeZ+H9aDv5S0wYXyNYO+TMR59C5vBh5HLI5tMvg
/7dhZ1n9n9KdZXfn9HkZ/m9kdEc53Vlu/2/T7XK+PdT6kVIOigEdBNBZL4UsvkAP+E/pzu3/T9Nc
5+DQrnd0SO9G3u4OaVMv6ZzGeC/QS9rTncN2veV8fic9HnST0mfC0E3aodO+w7sv2If/KY19OkCc
l3y/fb+2j6G9Xef89rS8nAwCDG4P6U5SAD5SCLgZfARyMBlDHDIweR3CWvUcKVWfIKVI7wPsRx54
ThJyj8u+5M10L3TpHzjLSdyEtAL7Da87qQ1qO9P3P9FvJ7oVcMYz9UPgzJzTBuiMsGkD+gLcgN2A
q87TBs7KePfLAiQvP+sKx5PfQW/9rrMO+J/S4jLYz3HeQz2HOA7wKUmTd8NGCxsK4qsR6gh18Pc5
gDYbX7JVbjLrXIaycdw+Cz4/E2fiefhfRB4HT58mBXHUWNDuR4FPps1OB1maBr7vUL6FveSl5BNo
z+1zE5Qg9J5/wP7Yn2Qibz2Xz4DpqHsFt42xv/D/18W0IQfbwm7cPoV+75SxiqhnR7t2O3IfxGvF
nvDz9CQVKON+qkthf8kUHzL7WM/t7sJZ0ig+QSagv2Z9F7lLgx9KxXy0CbAr4QsxcQG5U+9DNqvc
hpwO+wrkFd5n6inAfaI93sH2x23xOXz+CMe1zxnpC3QHlPXBuLK5Pabje9vbqQOBmzEp3xDqcjv7
hbpRJ10G/fQCdAOcBnze+X1oD3tn8vVUSFYg5LrGrLbwFuC53SeRstM/QLrDTsd1s5RNFjJbskJG
A9DOxDHKUmNqG0v7O4GX1vZ457BdRwEeuY1qHOBGAPehxQHetjxu77oEdHAJ1quG28yk1bCbrSNj
YCt94Xwd6Mio5xD/y6TZdci/gwOnL8CVQj/4enZij75PvFx/E982fXg3wUbLAb685HbUvx32M24L
GwO72hjT7pgkY4Crz38G7C34NFKAr/AfI+tMMP1+yRf4mAD3iaNN+uQ+Gu7nSBPPwLaz06QZN/DA
fYIO8XYAfD7SfJzXsP4mXMN9b/BLtIUmzmA7xHxrRD5Hbpt7DHQL/AgPQL+C37G9rlpFxilrQa9P
knHyjXhvNcmSNwNOk6BcDh17HeY9GG1vJGvY30gpB3orbOgi4hgIB4HAFgfNHLyHcN8v9wkDX9yv
thBwF+bDfVv/4PXMuilfLvfnduHAdtEoyrmfsD3O/WCIm3mvIuRg9oFwewdAveRfAGfZSW45RP8M
4/prakyCEzTbCdB2WhvA50YyMPw54kTg6kIYiPQFgH54urgzIJ/n5XaGtvww8i8A5PP0gM6AfJ7X
eRz/rt6/G8e/y89D3xcA3sfT/67//+k4LuiTv6Ot3xjiFwDyefrfjW84yi4A1Ofp/+k4LsAx2oXR
nufldAbk87x/N46RKLsAUJ+nLxgH+NOTAPyPea2Q64mXIa+XINyN8CKE8wC/RRzn3uTMtjTqmPVm
I68NuNxPZrXBIIT8bA55jP+JiyS3AEb/DPxdSR9vgTpt70leifjfkX8xAO/ibROHAXi3CW3vTPw/
7Z19eBXVncfPzNzcuYkkueElRALMhZgEEgPhGhoVSu4NwarprlGCTaTVaMXqvtQ8JYjrC1IrXQGB
q3bdWp9KgELdouVm7koTXkoUbbV9hNTVFd2q2Qdr7ZauPuDTp9stufv5nTs3hBSw+/LH/jE3+c7v
zDnne86Zc37nzHmbmR2cS1rZmjP0Q5A9l7QT/xC1VuLTcZOOoT2cl4FvwenjfJ4X73exI+1DE5Fd
Gf9DOMk1poWHexZpqnn6GviEn158CpL2oSTnW5D0mYZ6geTlVkC8Jxknps8HNZyL+4PUUa9dUC8x
TvwS7WGe3KtDzA6IzKGt1W3ubWp89l7BfWWlbg/ZCyLtHW9GUIH5akqQeV7CyJN+g7Thejx5VK3T
48k39Lr6zdJfyLmA+8hrnP8rbWo3elhAu/kAawPEoddlaGu5R24lvmut19TVAt3XkDUh2WPB/SDv
06z3X0qaPmbuc7MqtQ+x5nI97WlmLHuefSvnX6LfIWtkrGGFnlQP2Udwt9Rl3K8WZu0lDn1vWZNO
51zI3hBPhn6r2u2fcu0PsL9lkiqT+Oy5agl5Vp+Nm3zQfS3a2ELspdxFdzZk8Idq5lM+myNpJr3I
ImSpXAfxrdd58jJjcta75P5JvhUxRs8PTqRe/UHNsHPpX+xWD+aa6nH7Bj12nxfYrOqG4zyqamT9
Kfgq62VfUxN0Xsva01vk619Thp7k/vBQdj6AtbRvBV4iLNbU9LqWNx9AmHpeYDgM2cfDmhe6MQm3
0/o12X6Uvg6Zq/HmCIbj8K5HrkvunSOuX+dDVoey+c664edkbUzW8SjbgtEymyZZx5O1NMK7nvxr
DS1Q19t3cW99hrWOF9izs5A54SvVwtAkFbG3890c+mf2Leim9PNkri6ianKeUNTx9ELK6WXkSiB1
5TMArdF17g3cns7UR6lfYi8/sTtJfZVf+i/APeC2jLu48X1N7ffkh0jC1274kd9Jaauoa7wokTka
DyeR/4E9dXfod2Iekc/Sn9P7M0ZJr1+vviHXj/9zy1H9z+HyGmVPWH9POZfofMqEm+lPZvuVp6Ss
K8/TuqL7cOlXqaNA+nLpQ9hL3Vw7WsKR/SnSl5V1/1978m1P/lTWdqWvN1oSzmn7V0afj9Cj0/rt
Wfvhepatb1yH9A8J50xS9qvp/vUnSdI9vE+GfNP7ZUZKwj9tjvCs57Jez7q7XrdH/vH+A10fxpAe
qRdIvadv5PgpO47Kykfop73D9Us/tgBcQb5voM3583OB9Om9bsET6ePBE7T5w5I28gTrmuzpOROC
U/E/lT0t308ft9HwrCR/Np4LwU3wNnF/cdLHQ9y9Tkk1nnMZByQySO9GX14A74BjIAX6LSN9nFc7
qsDD6eP01UdI7h0P6/HJyH11w+bgt4n328S3hHhpxe2XSTetgN7TIHsdzgL67MrmNhy6SV/jCbkX
nhOHiIfeQujrxPN1OL8nHto25AlBtiyyeZrNK67tl7q8ZI+BwEtPNq4s72zyk8qRMGUMdVacvVzS
Jyij/7PrPlP6s2lnruFn4G05p079HMi4BCl798i709MvevZQ8H10FtifywDuY/g97uEE+foL8C/g
kIfnkbJn6QPwjoUOCIjHA/GM1gXZEyPw7KUuCoLvp4/YV6bflnoge38EhFOVLbOR0l6W/hk6+Lb9
GPIQHNm3k+l7yfqzzN3IHtsbpS1ETst9hfuX7JP9sYpwnTWhJLrNul7gOXVL5r5xqt+H3kgbLPtg
ZU/RWOZ9Wq0h9bngTsa2Y5ST88/p9wXE94AH2fMrkD2QjAPTL4KDQMaAYv8PI2HNUlMF2F1K3MSS
pibp/nYZ5q9kIJ+iEvtT6SItuq8ToCfMWFdxbTdS/oWkc0ngcdL2OGNwQz0k/R+u4dFAIfty2JdE
n7JA77nxxv34r6NfeI2HaeRLa+AR+o1H1WKNX6HXsq8G6D05Uk5H1dXBC9hbM6j312T2/DKut94F
x+Eeo88p+2+8vTUBwpB+ovSLrKPkI22LtZXx7lbkNuSSDAJ878u6hzH6V+ijvoM5CaYyPp+OXAnu
xFyBvAssBU8Dsb+bPSzjCSsHs4CxdGB3RopZxtUC83AGVoQ4sDd/gr8HVJ15HPfLQR64woP42cee
VXFr1P6i5q+I47PstyiFK+aFuL0FQpnxu55XwL92y/qBm/WT8xt1Wd436VONA2vTe3LizHH+ivmJ
Vp6NUOl8QEkO0cLJowi6H0VtTV8FnuT8I9Nboxheg+j31sk9mfMS+0weUdFgsbo/53zVzFggHizk
vtzGXqlNev81rbOMiYbQ86FbZT8xev+A9XpmfV7mxrNz5sEBNSuX/jnuvJONttyT5k7qMmaDkKRO
oFvKkN4b9vLT+6epa9LnED2zO9QGewt9yS1qKfVN7/uGJ3NdReBCzJcQ9vScmaqRkLj7pJFDzyCl
PiymbRiee4V/m+xpE93CTfqC4v9p9hzdi6yXPQnWpxUthuZejrwCrAKSh1cS7pMj1qt2M8+8m/PT
9myMcNd7df6355+0fkWZnrY+lS3b0fPn6Mg592aMdv/ENZ5Re4mG59XPstdIz82P2Lsx+pz4z7hm
kl2fGO3OesXpazTenqezXv/R9HPoS6u0o/YUMadfBy8yT/mcAF1O4/YWujQNf18zP6LO/pz+xH8q
J9OG0x4eRe+eAr/T+ve3mfDon5frPYbynEOn3COwl2cJ1tOnvQX9rLX2MO9KPxKMEV1FyrMTrRqM
02hjM/O0C9TVuq2lTSUtMle7QcZpug2StoWnB6WdkXbI+IhvjXxEG0I7o+cluzinTdLAbN5BbdjI
eQvutEnSToGodQOcG7D7PWbC0m2mtG1SD2mvrBi4nvN/80A7Zb6HGVg/1GmImh/IWs3QIxnIPWdo
s9ybdNtJWDqN/048mGXsouvttXrf+o34kzmCc/Z7uV9K/zLbx5R+5mnnlMHw/f5MZvy/PBKj/Qyv
6bzLXnjZt/9j9vnSl9f3RJnD8PZGBy/S6w663aEsmR/w+vmZ+XaZc67T5bVWFdGmyPyBNx7wJOs5
UrbZMT359CPw2ghJaQwBfZ+WfPylbisN9QUJm/IvInzRu6Du18h4T8YO38usRWAv+7312A5zZqyx
nP2ZrYyj7mEugX3+hL0Y7CPsIQ/fQX5H0p3D/m743xSJ3SD+apGSvtdBPxgAR07HyR9547il2XER
8XBHHnoiWEp+vamCoaXs836HhzZFJyarJTIvLkD3Hxdg3zsC8myHtOPMyejfX3E8A0za8z/CC2gZ
1ziMH5LzYwBttSAHtxyuwaY2hA7xndMPlDrvOqXGbFQqH/cCzsOzzo2ip5QaF1ZqPP4FEyiiCeSh
oPjOUyjhviOY9JhSk7+h1BTydCrXIXBIw/RaQPlnUU44fwoqi5WaMVapmVxL1QKlLiQNNWB2BV1O
wUunMKeOZYYPlLroVaXqnj+FuTuUuviYUpeSN5d+rNT8y5VacLNSMfI03uvDzwNfB3wd8HXA1wFf
B3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd
8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB/4f6QBPvea3q+NqvtrE
i9VNnh6eLW/Pseebz6scZfa0ro7n83D0LoAjxwjoBpaKWU+n7PxorBc5dryWbnF1tI+3PzztXnqR
tq/5RnT1Pl66doO6COud7hKx3pmKNYn3namL5mXk7DlauqGMsz0+6sQnQZsNTL6KkTFdhdwENoMD
IEiCdqp3QRpY1lPWVvcyh4C3E1BhfLy1XRmkcrs6DNLAIvXbuZbt6kPPJkCqtqVyx0j02zSrlMfI
DaLcRuDb1GqwCxwGOTzCt43ItxHWNsLazEPnu4BpbbW2uGEnHM/jkfj7gGl9i1fmyudU+61vpsI6
bx5PFY6LxuJh6+9UCzB5Z+KfqX5gEuzD0B5WJt6b3Zo5OgubU3kF0TD+15Po9SRkPVF2czT0eQyT
+F+fGlcsif+aW1ikeXe7tXUZQypcEm0hF+5UhrXM+rIqU461CjkV+UXkFORN1s18BlvSGUsVhqOr
ia8B7w18o2gmznGeh44im6xJqlR7W+EWZOJZ4c6oinLFC60S7aXQyld1eA1Ztht1Int5elQy/8FU
7nmSvgfd8ITofmuNZavx+FqNr4lO4X6eY50N5EpaU7n50UR8jNXKZbaSLQ5pNMhlOcasL7sEFC+y
FvEYYTFuf8ljmBOQl/FYv8jvWlt4NbtjfTtVMdnp32s9qlmPSKBEvyCjWgtS+QXR/ngurzQ0KICN
FMBGHXkiVXFxVMUrrBk8ozuDyCPWfZjuwxS21mFaR6mto6TWUVLrSNQ6tE9Za3FZi5/ZvEegk/cH
JMBmzKJWE1wyVCrDBPeCGdE+63yrhIwJ7yUrDWwnpXILJGUl7thx2ltJakxBtGG/tZwngJcTZszq
Sk0sid6+16rSl3JhqqRUCJ0u6rrfmpgpGkIqliLZb00mIyRjplhT3QlOMu5wLorsKMP8iTkgmWT+
k/m6FLd5mHORP/XkK548lJHpfnMgUynMV0UOxiebvyCwG8y31WZMprnXPMiHHhzzLbNXSt980+xT
DcgjnPMJMrMPeRFyjzvtJafX7E0hSPsTbn6xXKx50K2e7Rmccs8wsdQzjC2OxsvN583n1GSCeAN5
AfI5s19NRx5AliD7zS6+i+KYz5pz1TzkP3ryBXOfqLj5A3O3uhiZcgskCUnXFrHLDYr4vqsyZy2z
nX3m982dahJen3ErJuH4VKriAqdwL+EZ5nY+6j7FGRvPM7cYbcbHeOpWR0SqseZWt14CSbj7Ik6f
mTATsZL6WHmsJrbDqi2vrandYUXKIzWR+siOSDxsbqQB2WxSf831HOtVxER7QAwkzLVuoD4ZP8k1
yXWZajXHbm3q4NipTYpjWJvE9SNtajDX8NT/GhgJcxW4D6wGX+U1CwnzLnA3uAfcq226MK0AK2lN
OmF0wuiE0akZnTA6YXTC6NQMibkTRqdmdMDogNEBo0MzOmB0wOiA0aEZkt4OGB2a0QKjBUYLjBbN
aIHRAqMFRotmtMBogdGiGTEYMRgxGDHNiMGIwYjBiGlGDEYMRkwzamHUwqiFUasZtTBqYdTCqNWM
Whi1MGo1IwIjAiMCI6IZERgRGBEYEc2IwIjAiGhGGEYYRhhGWDPCMMIwwjDCmhGGEYYR1oxBGIMw
BmEMasYgjEEYgzAGNWMQxiCMQXNljzUQfxHKAJQBKAOaMgBlAMoAlAFNGYAyAGXAu3TJCFGYfrj9
cPvh9mtuP9x+uP1w+zW3H5/9cPs1NwkjCSMJI6kZSRhJGEkYSc1IwkjCSGpGN4xuGN0wujWjG0Y3
jG4Y3ZrRDaMbRrdmJGAkYCRgJDQjASMBIwEjoRkJGAkYCc34bxeN+VWjLcS91lxtzNTyPnVMy1Xq
iJb3qh4t71E7tLxb3a/lXapey5WqQkuKWssu5YQM16kvjBfTBFwFbgC3g81gFzgAbG06jOldkDbn
xqYHCu2r7M32LvuAnbPLHrTNwuBVwc3BXcEDwZxdwcGgGYmXmvm6HaVpUZvgGXxaZq76EHAT4dig
TQ1mHfHW0c7O5a/OrIsV/SbyYZVxuMo4UGXsqjI2VRnxXPMzRkC3dBG+60QGGG2xMRULnCOgvqJy
AS3Txt3HJjpuxaecXmNfRsyMVXN6DPSAHeB+UA+ioAaUAwfUV1RBa4tN94Lch6wE00AE1KtinkZX
Y4tCsT4z39iRejFf5Uo8lTPg7XUraxG9buVViB+4lTc5fL95t6qUXpHxLJVqJ3KX67yH8zMZ8bTr
7OXsKdepQ3zBrZyFWOpWvuLE840lvMNNqK2eXEyBy/k1rnMt3q52nZmIareyQnxXEVE5rjONNvUe
ErNmX5CJqcx15uF7uutcIr5DqlIKnk+O1+jk5WCWcytFgj7sM9oCRuw85zfOo84x0vtrMhb1eDPS
G0AcLu81ro3lOftqnsRz3HHjeeKf+0OPJ5Min3V2lK91niAso3y387gzy9lY0xvCegPpXqujcJ37
I73mztg4Z7VT63TVvOcsd650bnSucb5Qjr3rfN7ZJ8lU7UabuXO300KAV3AV5a7zmXLSQhIvc/7G
iTmVziWRfZK/6mKJGk2u2Sc5wBtAdOwXkr9V5cTuOkvqe42iWJX9kZ2wl9qN9jy7zJ5uT7Wn2OND
Y0PhUEFoTCgvFAoFQ4GQGVKh8fIFY17OYPBGT96DwPeuAnIMaDMfLMbMgaMyDV5NeqVKjrOazebF
jUZzsv+LqvmmSPK3i8t6jbyrr0vmlDUaybHNqrm1MXlxdXOvnb4mWV/dnLRblrb1GMbGdmyT5oO9
hmpt6zV4nZCxcU1pcuxCHNWaDaV9vOHn/DUb2ttVSfEdDSUNYxcUXXJZ0xkOHdqyo0k+0O39SrKG
6uqS6inJx5oXtyW/N6U9GRVDekp7c/KriyOfb+szC838RU19ZoGI9ra+QKdZuOgasQ90NrXj7T3t
DW0uwBtfL0LgLdSoIuKN9qRRvFFGGX8V0PE3TQT+8vJVhfZXkZev/QUM8ddzJLKoqSfCAT+8Tf+I
9nOkXI3wg8bAbeqp4ICvsojRJr6MtrKITthMHZDj4KWGA14M+ns6IMfQkSVnn/JS7nmZO+xlro7L
yqRHByMHghk/I+tn/Az8nMrI/5lpWWO1kZqzYtXBRcvKFnWULVoGOpLr77i1JLn6pkikZ9UKcYgk
rYqOm754q8gblyVXlC1rSq4qa4r0zNG8Uc4HxXlOWVOPOriota3nYGxZkzsnNmdR2Y1N7amG+W3x
0+JaOxxX2/wzxDVfAmuTuBo0b1RccXFukLjiEldc4mqINei4Ft0met/S1hNSjfLpay1T5nl56HBH
6bT2xuJw5wJR6L5500pWle4JKL6kcF51e3JMWWMyH4hTTbwmLk7UM3EqwLrQcypZNW9a6R7jKc8p
jHVRWaN8tFz/lPCbk3Ovbk5OW3xdm6hKMkYWnKnMlstPO5eoRbc18c95l0bX8q5siCKV+PzjX9eZ
fitWrFjexWFFNe+zaU5W8WXwT/Fl8B7bJqqOpnbsZmXtLEvb9eTmLuJr5jhWkwijS6ITE98XJwdj
vPVI2WZ3sNs2ZRTRlZo0JXr7fvoN9wEGkeZKl6kEcVqZml7OaAkvs+dmJMNVOXcnTYvK99LroYos
z8hYUQ2GRHmiJlHfXd5d010fxHX3DiydHXIrdWfvsFRX9fJsZmDsaiez5ZvmxLfFnTxFR9wtBj4f
X71cf8Z8uDiyvGrvU+nV8LN2XKP+LdfBi7XOYY5iJNPFlfLIxL5CzuSXMWgu+axJ2OIrc6at5HDq
x5lS/wVMYI89CmVuZHN0cmVhbQplbmRvYmoKNDEgMCBvYmoKMjQ3MDYKZW5kb2JqCjE5IDAgb2Jq
Cjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMCAvRW5jb2RpbmcgL0lkZW50aXR5LUggL0Rl
c2NlbmRhbnRGb250cyBbNDIgMCBSXQovQmFzZUZvbnQgL1dIR1pEWCtmb250MDAwMDAwMDAxZjc4
ZGExZiAvVG9Vbmljb2RlIDQzIDAgUiA+PgplbmRvYmoKNDMgMCBvYmoKPDwgL0xlbmd0aCA0NCAw
IFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBXZDNasUgEIX3PsUsbxcXk95tEMot
hSz6Q9M+gNFJEJpRJmaRt+9ob1PogILnzKfH0df+saeQQb9xdANmmAJ5xjVu7BBGnAOp9h58cPl2
qppbbFJa4GFfMy49TRG6TgHod0HWzDucHnwc8a5or+yRA81w+rwOVRm2lL5wQcrQKGPA4yTXPdv0
YhcEXdFz78UPeT8L9dfxsScESSRE+xPJRY9rsg7Z0oyqa6RM9yRlFJL/Z9+gcTq624sRpnVlvzSV
+XULXr56RHMbs6Sq86iBS5BAeIwsxVQeresbnnpx8QplbmRzdHJlYW0KZW5kb2JqCjQ0IDAgb2Jq
CjIyNQplbmRvYmoKNDIgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL0NJREZvbnRUeXBl
MiAvQmFzZUZvbnQgL1dIR1pEWCtmb250MDAwMDAwMDAxZjc4ZGExZgovQ0lEU3lzdGVtSW5mbyA8
PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKElkZW50aXR5KSAvU3VwcGxlbWVudCAwID4+
Ci9XIDQ1IDAgUiAvRFcgMTAwMCAvRm9udERlc2NyaXB0b3IgNDYgMCBSID4+CmVuZG9iago0NSAw
IG9iagpbIDE5IDI4IDU1NiBdCmVuZG9iago0NiAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0
b3IgL0ZvbnROYW1lIC9XSEdaRFgrZm9udDAwMDAwMDAwMWY3OGRhMWYgL0ZsYWdzIDQgL0ZvbnRC
Qm94ClstNjY1IC0zMjUgMjAwMCAxMDA2XSAvSXRhbGljQW5nbGUgMCAvQXNjZW50IDkwNSAvRGVz
Y2VudCAtMjEyIC9DYXBIZWlnaHQKODA1IC9TdGVtViAwIC9MZWFkaW5nIDMzIC9YSGVpZ2h0IDYw
NCAvTWF4V2lkdGggMjAwMCAvRm9udEZpbGUyIDQ3IDAgUiA+PgplbmRvYmoKNDcgMCBvYmoKPDwg
L0xlbmd0aCA0OCAwIFIgL0xlbmd0aDEgMzk3NTIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry
ZWFtCngB7b0JeFTV+T/+nnPvnZksk8xk30gmDIRlgGBYA5QMkLAFZA0mlJQgYVcBgztCUGQJqKiV
IioCdUGUOoSAAWzBulUsauvSal2odbcotUhVYO7/8547NyQRavv/fb/P83t+Txg+5z37+p73vGeZ
CQkiiqJa0sgz8+olvm1Zf/oCPvcROSbPXjTn8t9fV7EZ9hPAFXMuu272nKOug0TuKqKUY3Nnzag+
lvT834k6BJGm71x4JPRKaQ/3tXB3mHv5kmun9zkzBVbk16f6soUzZ4j8PgiaCvSZe/mMaxclNLhr
iW6fCw/foitnLer45thDcK8hivmNcYDSgQzjEUrX8yiNyPwE+JRpeJ75KYczlZ8jdWMERDtol5hH
u+gQ/VacQKonaD810O8olYrRrqX0c1pNDlThd7SWJuJjwP/nIt1soHzahn7YRkcR9xJaRgcoRaSZ
n9FyukV7DaluITe1pyE0nhbSrWKMeRVNo/f1m6kfjaEraJGoNcvN28w7zQfpIdqv/c48SzGUQTPx
OWp+afzZfIe6I8XddA+9L+6M2ktBlFKLmPfTlbRZq9SFOcf8HjXIpWtQB53G0lFxWAaQ+yz6RKSJ
pdow5PJLM2Q+i1hZVElzaTMdEH3ECJlrTDPHmkcpBWVci1zvoXrah08j/ZreFrHGCfNB8wSlUzca
hfY00MvisBY+uyJchH4z0EtdqBAhC+k39AK9KvziabnQiDUKjKBxvfk6JdFFVIbaPoKUH4t/yWX4
LNee14ebQykO/XIH9zY9R38VGSJfjBNTZBe5UG7RriQXSrwIn2qah/7ehNzfEwGxT8bKV7Rf6o/p
px3twsfMOIxIHt1L99PTwo2W+kSNuEm8Kf4mh8np8l75gfZz/VH9j84ZaPXP6HK6lR6jf4kE0V9M
ED8Vc8VSsVrcIe4RR8Wr4lM5RE6WC+RX2lxtsfZrfSg+k/Qa/WZjlbHO8Wm4PPxs+A/hf5kF5iqa
AH5YgdrfTVvQsv30Cr2Fz/v0gTBEjIjDxydyRZm4AZ9l4laxXewQj4oGlPKq+EB8Jr4W34jTkvBx
yEyZK9vj45dXymvkz+V98hV8XpV/l99pqVp7LaD10QZpFdpC1Gq1tgGfvdpf9Qz9Fd1EPxcYG40H
jB3GY8ZvjROOWOdNLnL9/swvz3Y9+16YwmvCG8P14Qbzr5SMMcxAL+TQINR+Bj7zMd4bwXFP0Gsi
Fn2XIbqKwWIMema6mC8Wi2vRkyvFZvGQqvuvxFPopT+Jr1Bnt8xSde4h+8ihchw+P5Oz5GK5Qd4p
G+Sb8nvNqcVo8Vqy1lUboVVqs7Ql2nXaRi2k/V57V/tAO6WdwcfUo/Ucvb2epwf0Efp0/Sp9i/6J
/okxzXjJ+MgR7bjcscrR6PiHs69zsHO8c4Kz0nm7c5/zdVcVuPMZ2ktPggOb/olj2gqtRNtLt8le
erp8Wb4Mfp5O1dpYCU6VO8QaeaNokB2Max0D5UBxMZ3Q89DXz8sH5Ck5UBsrSsUkmi8vsjJ0JOk7
YRukP0PH9afQtpeR87WOWLFMfuWIpXpBspBIPKf11APaS/S29r5w6tvoL3q0SBXH5SPaeHDBr/XB
RjnlavfRr7TF4kbaK0uIok+71oOPLxY7IRcmiwLxrWaSJi8GF/XT/kY30wL5ZzqOebyGfiGq9Tl0
G/USS+kTehizootxhaOrI1m8KOfpdTJRNJDUH0XrCkUHoRlJtFJUapsdX8m36Cp6RY+m97THUftX
5K+0sfoJY6KYixlwI62ixeYKus4o1/8o5pAmplBH/Rik21KtQM8FXQ6pMg0ybR9m9wHIgSHaWPik
gXPGgC/KICE247MJckIHB83DHL8EUuxlanBMlo00x4gTkDpE+kvhiTTVfJjuMefQFead1B3yYLW5
FDnuoI/odtohbgnfQIsoGzPnPTHGGC5fMYab3WWdfEtOkhtbji96u6NIo8/x+RVGZrBxkOr0P9Ek
KjLXm2+AuztDwt5Dl9Jo+hCt/BIljNQOU6/wxXK3OVxbhPa+TxPMR8wcEU1zzctoHD1FDzkNmuEM
YIxD4o9o7w00S040l2izwvPQD7ejF4Lorasgf9YGh5VNHhIsGvyTQQMHFPbv16d3r4KLeub36N4t
0LVL5055HTv42+f6crLbZWVmpKelpiQnJSZ4PfFx7tiY6CiX02HomhTUrcQ/vMoXyqsK6Xn+kSO7
s9s/Ax4zmnlUhXzwGt4yTsjH6WYgqEXMIGLObhUzaMUMNsUUHt8gGtS9m6/E7wsdLfb7GsXUCeWw
31rsr/CFjiv7WGXfoOxu2HNzkcBXkja32BcSVb6S0PCr59aVVBV37yZ2x0QP8w+bFd29G+2OjoE1
BrZQqn/RbpE6WCiLTC0ZsFuSy40mhjL8xSWhdD+SIhutY8mM6tD4CeUlxZm5uRXdu4XEsJn+S0Pk
HxqKD6goNEwVE3IMCzlVMb55IbSG1vl2dztct77RQ5dWBWKr/dUzppWHtBnIoyTkDaDc4lDq9R+m
nXMi84Rh5aubh2ZqdSVp83wcua5utS+0dUJ5s7SZuZxDRQXyQFrZcXhV3XAUvR4jVTrJh9LkLRXl
IXELivRxS7hVVvtm+UvYp2q+LxTlH+qfWze/CkOTUReiidfl1mdkBPebxyijxFc3udyfGyrK9FfM
KM7anUR1E6/bkx70pbcM6d5tt8drdezuuPiIJdbd3DILnW6FKZuKzrbSiU09K7hG/lGhIDhqpg81
KfejTf3ZmNWf6mb2xwDgX4VAqlA1RmReKGpYVZ1nAPujiSJkdPT4fXXfEDjAf/zvLX1mRHwcHT3f
EAcynzSxWkjMsO2hQCDUtSuziHMYxhR1HKzcfbp3u7pR+v2LPD4QdB+NR9/OqBiQj+7PzeUBXtcY
pEvhCNVOKLfcPro0s56C+YGKkKzikMN2SHIZh9TaIU3Jq/zg5AZidTU55Mpr+h/vSUksmTsgJFL+
TfAsK7x0kr90wtRyX0ldVYRrSye3cFnh3KHoN4RFbKHEYeVapoQf22SmpkLBlNOmNkWBozw2pHfE
f4di6upGpwtcqXyEb3jIUzXSMiuic3Mjc+bHEjWaJziVIueSRZoRGhCIVNSqdmhgC3eL6sXWaaWT
IXJk6eSpdXXRLcLAalYtR0UIOJ4ml+f6hoWoDDOzI/43mof7MyoyQ0F0GUImYxYp74rMiLNFxMxI
ogr8Y+7s3m04ZGZd3XC/b3hdVd2MRrP2Ur/P46/bL38rf1u3qATSzmKcRvPAuszQ8PUV6LG5YgCm
h6Shu/1izYTdQbFm0tTy/R7sFdZMLq+XQg6rGlqxuwPCyvf7iILKV7Ive3IUHzuoVKCR9dKl4mfu
DxLVqlBdeSj3zEZBys+KBD9BMxul5eex40n46ZZfUPlx+1jGDJtcHhkWxTM89cBDhEWdOdbABxq7
kyjXm+vtCENg0T3j0w6fCRp0mnz6YcSkMvMT3WscJg+1k/FBd3xsbOzQsvjYmJihZY5G89Ogl91G
GrudHjYz2TeGbVYsuE8GU9zuoWVZDjbjY9l0etjcjX6ZXB6MzsjWjaRstzs1Cokb4uNlGVuC6W43
bF6KZR9KiY2FidQw8wOBwFEYR6noeNHxi3pm7nb8MKeTyMnBOX3c4HYry5fB9JgY2LyE4h1l5ImN
ZZP9mrI8l2eDw5fuyQKjY8hifgMhmwIkAPHmseDFumO1XBOzJv7FOCPKGZMmSxLHJI9OH5Y5OXFa
8rT0iZkLnAtiZiZelrwgvSrzOnmN4+qY6+NXOzY5N3peTHtbvul4M+Yv8RlNDUcnNXBPpjaaXzdw
58HybTCJOym1JiqY6+/dM0pQlCdKoj0nVQzVRVkcI2pDDoYBqb1xnNTrYk9vDWF2BH1I6oOuIUnF
IBfHwOqJGLQh+4V1aQHPKXRmZeA4TLZWLlbWSMeKysXY0vXnfwKoqEAs6x8FAomehL69ClJSEpI9
0uFv3ykv0ZPSq6Cv15Pnb+90lC14bevV9UuGzn9t2+vX3bH/0aVLH3102dLRlfI1oYufPD59T9h8
OxwOP7Nr05Pi/vAvvjqBPdP8L+etInD5+2C90+C6aHo7WBxt1VyZ0aqFpMxoqxXK1IJub+8F+nJ5
u7zHpT+uiyhyGFKLMkSsFEeiVVdEcy+S8CH/RvNYg8cDRmo0Pw96FXtlKfaKU+yFMQ+mM/PYHKK4
JSPWwATobXC3xnFehvBhLyqN9JgDYpC4hdICF3s+RP9ZXcrdBMegsWcHUVFRaqHwFl7UU1RSZUBY
PZjr9zoczj59+/brJU83DHlt8i8+yF+i3zB4ac6vRhyZjloOgqbrRC9ky7T95MTM4DF2gTHU+Dt5
rvBoKh8eUPic3MOWyGyI8nrcaYmJjjI384zXqyxfBqM8Htiyk4xsnmSpHCE7m0Ozs+IQko0pBrNR
HgzGyujUVF+OxyulL8ebUJj/+lE2j1I+c0ugiM1noaxmRiYyFxibkCBVgcGoeC9sVjnHgjEJibIs
O4n9OO96ZG01QDKv/z2oev58pfEs5/K4NFVYsO9AY6DjoHHIcdD5guvFLOeo2IrYyXELYqvjrk+4
PnFtwlMJH2V8lHkiI/ZQzJOJMtOT5WnnyfY4foPDBiemrws0CiOckR3tcTkcR7IykrKyMlxZGZqQ
rowszZ3taZQP7hnnFd5GkbaXW0Bc5T1CxkbbExUWa6LC8m1QSbPomtTXwLw8WcVBuYJ85BH9g7He
vUU4L1gol0tdHpAdKEfcvltNu8qTxzHhBnlOcjdS0aCzg4qOn6380JvAvAJjdVyPQNyNnmfhAOeo
SchzsD9VisorIzOxY3JuXj9wUN++fXpj1jmcnfrylExOAmfhv+4800+mdvzl5q923HPDTfeJ/Ynf
/uG1UyMf+e32adm7dg0ZNPPwsmc/mr3grvvqEl956/Nd5TufenDNDGxUBU0xP9ZTwHsB0bBPS1NC
nofLtlhsZonvmPS0IE+btCwSPDcCsXCILv5orBbx2dHRXZKzs/TsLllGF7ffHZuWLijBB8kry3zO
PJUnouflszw/ms8fSigsKvIc9xwHqx1/3vN8QqHn2UABA5wW7Gy4U9wl7lVuvcR7iffqTG1iymWe
+UnVKVe5r0ta5a5LWpv5kDva8GmY41iHYt1xulOgXMFjGkTLDmKv14Xcog8ak6ynHZAPUrqcG4xC
LQ1U051gDzEs1hDDEpHFCTXTfQt90pfGU8RXyxNOdQksVlRYIlGdNXlKbOcJyvPkSbT05JOcKm9D
97RG0b8+/TVxQPTHueHhYEyTjN7QrVHcGeGOwHHFHxF5fDJQabEJ1ruz4BF0jUcxi8UrkCyQ0BAu
YnEFi5fEfiksihVTOPs1WW3+YAZxpsAkf/u8KQ05dy9Y/sT2G3uNSUqIqWlcNX/e+qSG3M9/de2R
BbOrb9oQ/vTNp01xc9o9q0M3Ld2WtEVee+PMm1au9O19YU599fT7emT/+rbD4W8+Zm0hAxLLYxyA
3HaLJ/dTrPl98HFmGbdDMY4S4bDCJ8oS58o0lDh3KDPKEu3KdLo4pkuZTrVwuZTpVCLfpUxDmQ5l
RinTWhYSymPnxm6OfTT2xVhjjDbG/XNdS8D0pliH5jSiYzQn1kO3+4imJ2marrlJxrp1p3ZQHsTp
oBRbg9Gk64hCR6L1Rjn7ScOIDrbL6Y3Jbi0csLBWIctg+VKpF9GNol/Q7Qy29/d21ub2cW6IlzwZ
YtxJvUl6oPRpcB9TaWD5cB/zgtwb1yjWq/H+O6/BvP6exOhBKHzsUcuG5+SgU4O8hTzIhYWrewR0
yIP4+HgMN3T7/eQ236tPKIR4fz0Y06tQa9+9UNPbtRvEWVSAGRAnmBQbjCmMrR1fGBvMK4xtnwXa
vZAjBBSjKFszgwLQBPuIXt5eyX6v5hVy49mV8v67nn++IdxHTH9I23dm9EPhbRBld59dwHKC9cNc
42HKFmeCiYlqOBOUGaOEhlJSYngYzwmRYCq7E5UOmaBMTemPHFctaFhhsS7x0paolMUEZcZg0kHV
5Ehs4djNpNB+EuhtNw+JyIqLzk5OzkrgJSwmXtezs9xxgpxpWOyVcqksSmKxCskSh7VITKmzz0LK
sJDpwkU6lK7qKCvNuK5dXbuNiY8kPhP7ZuxfMl1RiWlxXTO0qJ5Gz5gDWFA0SBpPYnRyQmLikbj4
pLjEpLh4N8RNMJErEozbGifj4uKDySJSqSfjdfEaiyIsL0EvV8873bPQs9xzu0f3/IhQSVNCJU1Q
midNoiGWUEnb4Et4SvSheHE3Zl7/+ri95xMuOS2FSwvxUgklhVcf1Q+V3sL8SkjgD1e7egQMsByp
JUitPmJxJVinGccoa3N5AyGTmJucq2EhouQkJzTDvLJfJ99z2U0Nu9Zfsr7zo7fJt84+OW7lHYeF
a8mtJ393VtR66tY9u31z/biiFPmPx8NXTwuf+sMLd9QfY4kyFvyVjHWoHXWV2n6o3yeUwPVCRVMW
ny2CoQVZsriTzUb+JjbKtfYnyoxTzKRiMxthE3MyGM02pycWZkSTyYkXOTir1kRm5+ygW7jd0JYy
jfbZSe7obEEdPZxKbU882ake1h9T1YqWisxhj2xPjr5+1POczVuVxz3PVjJvdV+QLoqdweTi9GLf
1ITJvgVatbPaNT+h2rfEdVXWLa5VWW+6Xk/xOn3MgWgMywxHGRqD5YxtuSoAC82xhk4+vy+XA7xc
y/FuiXpmitdYd2zkJc2us+AFh/Zib2x1ESzWcgVLZLnqWONRnOUR5IFmjAaeeJJ3R54N3SDZ+gcT
s9WszlaCOVsJ2uxGURhsX5Q6PXVh6vJUPVVt/9AP6MVUbNYcMLm+qY2yw55A007DWsdY87FXtuOq
i6zFLL8SuznFZ8xWvKA1l1LYcwhnXie1vXA4WdNJYE3H3568nn5wpYikc8ueQzu9J63bqAVThpRd
Koc8Nafh7DWvrvxr+MP71366692z/cbddvGVD26/4fqd+qS4+T3H9hz85Tszq8L/+mPd8WU4sF8q
Hn16x2/PvFu5s6Jxy6YnnkCPzsDaloJ7PzctCsY96xY6/kuXHoXFgwVNTyn0qFh3jaZJ7shxSufT
ZEa8qybqCxoHZpoutSKQhWI5NkDpkPxqpb/Yc7Jy8aCxJ49f7DnFuwUPuoN1wUKvEvrojcWViX1y
kx2kOZz+vgkJ/WZoe9eHj5f2jd+v3fTPtfr3u9bfHU4In278yy7xuXgB15oaTcKsScesSSU/9dSG
76csSFS1Vc9QYtmpTMydiG975c5XZneePyyhu3Cwkt1556KrnX17NZOwNY7s9DOUm+Mr+c05BL0s
v/NVQJ4yVWng4KFl7ZUkt5KzO0O5VXJ2quRKo85XAXnKtCZmQyxlZvfghRX7FlnWo0dCbrbD6Jyd
4M5mjQLHBeBxrK2wBOJZRvDchIUrZllUYHwa1MMTaguoLBwLlsic1jokY1mSZckqx2Q1p5Mjc5oX
DHDmucMHLBuB44VQ0CNnEE+qiqjjBq4ILFyRD9VZBFuUX6R83mKi2DPB9hyRi+VpwwWyyS091z5b
jqAsgRqoCtiUxUq/PimiS8qolFF5H8d+1tOI6olroRvFUn2Ja3HMlbFXua9PXUd1Yr2+yrUiZmXs
Kvetqb/3Pp+Y0B7ioz7Ll8HE58tn0t0HZfVYML2LL5ay0ygW1djaQ5yrCbaNlhiBxRIjsHxrCdHs
mkNRIuqAnEOBSKSAHQmWiKwJ1MQHfdg/xwuK98TL+EZxRzC9ADwGpktTAiZNCZi0mpAmtEY5J5jc
QQV2UIEdVGCHmmR7I+5LDibL5A0XWTLGOso4qdRlnlvqOMNyRvqwMp87kTWqiKzhXRX2VItpcUVz
caNWtnOGyMvr05ulTDPlmeCTmJRiq9oOrbkAEvMXXfbxocOfL7h89a3hU2+9FT51x6WrFsy9Ze3s
OWsGjNowacWOXTctf0TL7LJp/ta33986+xdduj275imThDh8+9Ni8tyVN0+fuXrlGXPshnEP1960
cwevh6xv8czOxnq4dT+Ooj4N+nnSJKtJkqwmaidl+pXpVB2HRSIylVOwTkWO7tqxLVnNzU7K9CvT
qVQyKwXP4RQl17FOWpPbCuAiU9Qc5YBmhw5PxuRAOenohWpySvE86yhqBYPlRLAzM3iaV3G4Vx2/
edO83QIxnbPj43LixsVpcXFJNF4IwWPr9uBQQrB+hIXXUIP3bKCyADOu8niBGj9MAJ6NHl5p332O
56DakjarxDmNL9hVqXx8UibLLlBqy7JaFYWSzhUU7D0gY0xK0P/TlEv8s7XLUi7PmOO/PuPG7PUZ
67I3pzya8VTG5ykf+075En+SsiVlV4o2oEu1Q3ZibdGPuZWW63P4OmePi5vOqmEWN0+8Nt5athu4
Ejn2HIPFmmOwfKsU35wDopBiIrMrhruZRwkWKziGV2tvSzVxQzfWAIKpUAEUO3RU86ijmkcda6BL
WQdaPm/QK70bImt1ZB5hpY7Mocj+s0lJtFdqqlwsKpudDJ6bMZZWOFj26d2JV2lQwvTB7SUfF+YJ
dWKRrGbPol0pS2dMunF8X9H34OX7zgjn87cfv+H6f2x//G350kNLrq1/dOmN28Qkz/VXjFn+50Wx
aVMWCNef3xeezeG/hb8OfxLe86tDWu979z1733os1ehGHG+nbx64mdpNjx/0jSvTBQ+i7X/r1JXp
S+MH7vv+ibNzPOSKhTMK8TmFSuccHL6Yhnno+ye+vx5n+pa/CmTDXeGIePEdfQQh+Sf6mV5DycAo
Zzu6xphC5WI1TZU7aSlDa0dB/XG6EvF3wj0E9ACnRfwy4H1gEDAFyADYbywwA8AbESpD3P2cFnks
4nwUraGprhxaaEwxz6K8jcYLNBvYAvt2/W+0w1FIl8P9INId0on6cRzktdGxkzbB/z6Ez4TfFtBy
uLfBPg3pekbsUc5b8c5pCkUBDvh3QT7rAG5zJ+1p6qvXmH9FWyqQ52hgFcoYDzocKEWcRNChwGrx
Aq0RL5jbEQ5KN6P81ewPFEfoSORzC8KLkK4D/G6GPQP1cIDGA7lAZ/k4Fcokego0H+2/xGo32v4C
zUUdt4NabUJbkAfX6Yew6liKsCagzF8DfllofgQahTC7bly/5rgZ7uYYpfWiWvgtADKBCfIoXa6P
IYH+usf4iDQGOI/76T3gJ3o1XQy3QJ9PMhpoM7uBsQo15ln9PtqqnaT+CLvesRHtqEZ/4zBOnqJ8
+Xfq7uhIy8Ffxch/BbAFeX6q+KGaJqP8HojfS/9I8dAquNejrK/sfuLxhnsFxnUixu4M7IT0k4AR
GJda4DKkvxjl53Of87iLKeFCxP0QcaYx4J+qAD5HX+3nNJweeXWM8OH2c5S2I86t6NdjoDqQzHWw
ofiM+Q5A2PPIJx1wAO2AHsBHwHZgATAAKAU6o12EcjXUj+tTxLwJ2pl5w3gBfYi6KZ612rAF7tWR
ObMtkheXk+t4nBZEkMt5ol6Xgw5FXXbbeaNus5H3eJsifLi+QPH9l9xOuEc3Ucw9/QsawXVA+u0I
K7Up7BtRZ54PG3HlsAZ0M/j4ZuR7H+yrbcp9A3cx3FzXWyJ0kF0ftLUn6teBqUbk53DE53wUtfui
ic6lB5FnleNSyJStNFJfgncrd9Cl+gkq1rpQD6Mn/NAetDEkv6CJLrxpwViOg/ueVnQT/DY53xDz
oXls0R+DDHqD7ke/LtbfkO31N4RhPGZ+ZpB40XhMLlP2H1CEc5wmiMNWXKaM5mGcx3/j3zztf2qX
bxqPQWY+Zn5uvGGaaM+dPCecX4iegM+m8K8HaoGuroDY5FogGp24FnIQnQQW6kEaYASpHy5Li/Rk
yHnMBfiXGX+lQ9qttFZ/w3xL1FKtfINWOZNpBt4exXNZ8k26mcH5gy5qxkcteM7modbU5tfWFLzw
YISnckAdmH8vR/AhKOMU8A34qBQ8mY769mP5jPw3wr4GYNkBfjW/R14Wf75ID8Fvnc2fNmW+4znV
ij9jbX68EFVrC+Q70rGMz0U91trtxxgIlnEoYxL4eAXqud+O35o2S18nd4KPWQ4fpamRed0elDEa
dfyA6wlADmO8LzFNx3DzEUeDuUNLMHc4CmD/M2CYj6Dd13JduD+McjMMyutpF7RFraWWP8XY66jR
iy7n/uBwhG3Rv6afI35P2Ll9UY4naLlxGuMOGch+PA/VHER/ot0L9Cr0+WZaj35I11ZjPsIfmMZ9
osaCKI3XBdgztLsh83hNupVu1v4CfYHT9iKvWi+K6BLU/UXlV4N8EOaAn3EJbXd8QQV6GWTtYapG
HaahLoe4Psizn+sqcruSISfeoIvw3m+bkUzRiLdV9UGQHkH8jSotDnth3+6cSU7w7MWIw/ltU2mC
lBDpD5Y3M6300EVYfnJfIE9HMk1E+ijjC3rAwKtdzKFtzlrahitWwrzYYQTpIaQr47ogHetBo/W7
6aeYX2sgm9ZA5rC+VGpMNU9rj6E910KuA1ot+PUxSjNq0YcLEI/7x5Kxq9G+8dpOygPNddyNNZ/1
ibvxti9AJY4FdCv8bsUbiM4odx38VmL+9sTcXYv0PHdYRyCUvRb+nLYIY7IG/RbF88UZpERHrdIH
SNUBZXD52me0TRtNa8DHQ1x3ox9vwVtREqxHZgNYzRnKvQx2xnoLyo9VTsQVuZqHbmR/2Yv+iAOd
GNwT8Rq6X19B8/QpVKBdhLnrpe76HzBXv6N7tXiarh+he/VGWs9uPZE6a3i9ojVAt2T/V7Crgr/8
I9ybaKo+COnX0BX6dKrRdoP3XqdofTbGGumM28AnHZD+a+QbgfgbTdWmYG6tonvFd+bjHE+V0WBe
ogH6SOqu0nHaCFRdub7nqbMsRatGY0xRX7a3qC/q2lRPu47nqZ9qJ/cF2snt0O/lG3O8aCezo0XD
EyReZQNb5ds0DG9NrxM7zAPo1+GtMLK5W+8jlgI99D70JLAC9m6gvwGesNzQ3frgRW4fugV5Pw26
h/cFDDmU+jKF3xZgE/CSHdaccnnN3eezG5nmgeb+xl6sNYA4aR5gNA9ju74Cenkf4CfmAQZ4cTTD
sZySnFdTktYJ/tlI18ptZGI+7aUOGpn/ap3nf+NGm3o268dg8zba4wGa8h+Ax5DjMfUxxVwczevz
f1Of/4m4GN/lQCXnpX9JyRYPUZx403xH7KAp4k3yaFeBBwG4u8OdaPenPU7wv0v5txo/8AqOas1/
tR7X1u7W4/pjbrmHpjeHzQc2ddxJgxl6EfgBaO12vUiDGY7nEAa0duuPIN2/w1Tqqm1mXgQPMs+1
cjvGUSeG7GAekBmcF/RqoMn9CuQawGlVejeN0AGeuwzZgP0a0BTeh0rA9yV2f/Mc5H7VNlvp7fGx
x8WmdnzUL6i/TKNA80ALQSeBjrapzUfMz815mv1b+8GtZImdpnkcOy5oEMBa88P0zdP9v2DH3DkC
vAA8/7/dHkHgVcADON6BHlIEPfIN6Ck/xXcf6CxkyZl84GGi8GTQP8EPK3y4C+CG3Qu/OaD3E53+
BvYr4f+GBVPqmbQ1olemw29fJC1EkspvkpX+9O+Ivj8J4BCK05/GNz1Oz4f9HwDW89Pvgj4Nugnx
P0c+K0F/a4WfnQ731cBTcH8B/8uActg3gCaDdgMSgQSk38hgfcTWm//3aMu9LHS4FnvbH3NDZ5mJ
euaAHgBdau8d/mtqj+ePUOiOLfbE9vj/GEU71F7kh9Ta52PP9AH0vpBd79blXMiN8Qw3h15mnoVO
Gct6NOuyrD8r/TFCkc+Dlh6LcomScP6iKOoVxfor687QVUtAuZ2rHYY6MyhDvargLjYi+kGTLIVc
FSdpC+ABMiN0AWTfd7KT+TLkUDzW12+wN3qQAXccMMWC+QrWrnisdYcgd78BPQp3O9Bv7DVNi6x9
NrVlK9fDrgvL2f9t94+tif+n4VhPCyJosbb+G387Xn/EYYxi2Gvw/1/aeq3+MXfrtbu1u2kdv8Aa
3Xydbr1u/7due523adRgKmA4g+YBRmu9lHWAFnrAj7hbp/8/dbPO0Vzv+K/drfQS1lHOhyY9xA5v
pcc36TMZOAOw0Wre2fPvP6W8t9D3Yl5GdH+7Dnb61v62G31a0hyQA50h33gN3Q45Av3fbAdgjcK3
8ii8zHWGCly7qADuvQDWzfBx0GoOA31A3Mrn2/hWMoVvgtuD8xuOi3VPobo1f/+Af1vxLevnSj+E
Dshtkht4r0T5wEAgAdgNXG7zBu8hUfZbEqsu73X1qeY3+stAKx3wR919cBbah3YhXjx0x3i9hpIc
XkoycIYC+yrQaNBoyPcJQOSMzzzruF7F4buK4Xw+Czl/Bc5XcPZlPguZfrkepnhnrLpHuRlraA7C
1Tkd1tJkrAdpTh+fl5iNSM/nc1WOr6H3XAK9J4rXDpSLMylgAeKO47MpnCQUIx8+Q06K0J58PsXr
l6MHeRAvF2HqTF3Rv+FcaBrOVKbhfNO6pyrj8xftI3VXs5rP3bWL6Sk+Y0d+oeidtCUKZ+Guahru
Wq7umzbiW6o3w+8+5224owmo+5UyW19B3+OMzVpjoUzZZ398Fp+h2o8zebvNcKvzcZuq+k3DN0dx
HtO8XDudazjW0q/VOZR1jtn6zL6VLoM1vg6oRjtw1mKessuxKfcRzg9/b1HcO1m6xtURejPqad9J
WOf002iCtgz7QftM9mHU503cFa4CIn1stx1plV5ll4V+OWvbW1PEVboK+ugSgM8M+cx2FcYuEbDv
4fgursz4jHi8RvGYGW7s8+N5/M39COP7iKE4QxuvS5wFfQVYZ4/qfg78lQ5cgu/7FsstmKNXUBLc
N+t3qTu8lTjvYyCu+bBKd5ka12LHJPAezh1xllSMvsLdkQ2cleBOw4L5Ic7Y6hTUuZq5XSaZuE8y
r5QvoaxCile8WYM6rcfdFp9znrsTTNM7wx/ndvpkAOMPXAd3B9X2CFV9hrNDtHeUaiOfzfXAOROR
SxuozglH2mmcT9JwnOcNd8XQcGMPzkEWUgecCXZwZGHsRuN+JR7nrR9Qtt6fZmpefO8bEMPNl8UX
oNDUGfi9h2rtLdA74Oa7X9wJo7/UvRoozqfptMIR6BEA5gvf5TJmMeROkYtwviesiNj5Hgx2+BXS
PgU7j534xvY5IJ6J823ztPw5yh5K1bIRZWxFXVAOzhE3tgbSXhpBZ1AuZ4R+CeRKSwyDuwWQD7vz
WwP+7NexNSL+GfBvAfize2hrwJ/9WtfjQvEuVI8L+ech7xZAeey+UP7/aT1a5MllRPL1w94C8Gf3
hepXirAWQHx2/6f1aNHHSJeB9OzXoTXgz34XqsfFCGsBxGd3i3pAPmEfG34ee9PHQf+M9ZrX+89A
x4CC+8LPwo79hTk74kYcFe8X8NsE3ANgr4xf67BQDMp74NWgfwewTzcnnEP4RdizsC/BP7sc8y74
dQWwX+GyOG34IICyFSJlhvfAjfRnd4Fij97CnQL3x0iP8lTZqEcYZ8SmH9gcad+aSLkh+KHuYS43
Ej+MOnEbTU6HcBumBr+JSJ8DOukcwtCDGOYzoL8C3gFeALhebM9GGPcJ2h7G71CEQ5ifEblA3+Ou
aJFehXPQHjjTxekCU/0GGqNk7ivq3sy+Q16k81qAtyBK3pmQfYOowOGGHnI/DXVCb2AZbsxSa+o6
oxprE35CAmsL3+ct0I+RoT+HNyAf4V7hCtwX78P58QjIW5Sh870M8uZ1F3K2SltLY4HxvIYZfCfE
dye4m4luUPqLB3GS9E9Q33vokLEXZxbleCOBqjt7wL0B91Tb6FrjBrredTkdwq/6rIH+MxvrVY5j
OhUaN9FILgN5Fjsux/1RLPSCCHVtopnObvDfiS+rfkxZUauh172KX8KhcD+7bKy9StfSnZQEfx6z
p9C3zH/AmQAwRtUZ9TWCuBMLQB/jezy+l69En1Sr+lyM+hRgr65rtbgH+wr60Sjq7IyC7pVPa6LS
cDZ0Cu1w4Ew1oO7lrTL5nh73T845dJGxmvLsvbvjQ/TzZNyJRShk+yH7PAC62zZ9rtIXE9S9VuQ8
QOkQWMOa8uB3PLjzAm/0OKdDtNSjeDx4LOwzArsM9K/VHlBeP5vaz2OHflBrJ/d3pN8RPhp3YAED
93gYt9wf0MiZhJPv8XCXhn5U+qzzEI12alhbH6bZjlV48zIWY5FIk5zPUIJzBKWxfuZ0ot9Yz4Ue
YnyHu8JJ+M0dModhnHi+XwPwnBsB8BxfAn+c24Uhc/gfzy/253/sdxbzlf+ZOHPDr4GQOc8K5zBz
uWU/+xUo8ldhiMP/zmIemuuxekrkY5/XvA87oPYhPvY/18+QhZZu3ZI26fWKf4ZjzJiPLkxb6Z/2
eLWmPIfBI4mqn1gftvXJH9K7UB7rpeoNAPS89zFH70RaH8D30Wrv0JoiDZ8lLrOo0g35/p/v/Jn+
EvNrE+t6rSnKsfTqC9BmfNRCb7f9UQ9rntlU6ddN717s9y8/Qzn8ziAP8ZV+/WMU/dX0TgbtVu9l
0BdmxD+O80Pbmt7NXNBtnblloDw+e8s4z/sD60zOPpuz9fLm+yfWU203ZArqo6E8B88j1GE0+n2t
zm9z/g2Y7xiOm8ADLTEF7in8nuB8cGAlYTgvawmUy28MLgjH7UgH4H1hK5j/dOWY/0SdV1gw7wV/
ML6IYDvodk1gLw3o0IVbwvynfgcA2XI+OO5HuYCruwUnJABDZ/3/3wB9QE7MYFeCog5eC/8tpqMc
wAlJoLAOVME0nevAJ5GxsPvU7iu07WO0e25T3SN1ssuy012I/tg42uVciP7YuNj1uCD9D9t9vvrb
dW9OMSf5jd7ZCOW3e47z1Z3HR+GfoAD4n8+aEyNwoF8PAo8BRyK4C/QuzJUMzNtvtFngJ6B5mh/w
A97E8LsY2x9zluWdw/ExxjYN5WIeYI/0uQWqOF8fOVEG85+zEyj6Sr3bsXSvj9AuN+rNb2xnsywE
7RA1Hm9YrHeyOSxbcH7B5yY99adpNtaNZjqfOQl8g/003sEGyEC9vMYS3He+ZP7SuB4y4YT5O2M5
dAIAbVwZwYugjK0A9oHmE6D8DhJvuvAeeCc92hzY22YzOA7KrgEewpr1Z1A/cKWF8CeW/7m6oS5K
BmvfQtc7TenqfWlQ7a/H6/Owp5+HtyFf4J0N9B+0YY02g4agjWu0vuQxoH+wvoC+KYZfov4eqAU3
+mW8tqPZPOf3NfyuBlBvcnjuPI/7Co4PivT2m9/OXJa2AOdNf8G90ReIhzCkW4O+W8lvnVgv0rZi
fMaBLyYg7gTzD9om0JERfAt6Beo7hebJlbhHno398KvQ35LhvxhYCHsaaDxQAdwHXE0XKf/T4JPv
ER/QdMT7PaiBvb0Bv+8iWA8KcLjab++jaujE1cjPiveGSsPpCjQHzgh+C8phQ5Ef4sk7UW9oFFpy
xO5A+C3I85C1fxc4V+D4Kp4dJ+pcHOM4DY+ejfcjicBanOEOwRnnZ3jXM5W8GF830Adjz/sh3j+w
HvUKgN4yt8B9REbeBzTdQdj35BFq7KJ5xk/wnucs9IV3sIc4RoOMU3Qv7lM7O8ZjPcNZH/IZCIDP
w7P5PTH4bpJ8A2cikTt6mzrKKTnqOZwvQMvC/ODzF0XlY+hn2PGbb/yui898SLD2Bn/+x2+nI3NN
6bnOYroZ83g4gDNS9e6bdWw+44zmuQc7v1vtrD+Eb4oqPY73UGH0qMnzYRJkQ9PZK/KdAH7axryF
MNYFkdR8HG+ONoL24zcJcjy/11JpfwoKaWAuA3DCYo5GvvdhH2Pfb23EOfPGZm71Nud/2v1j91cY
0xb3U/bYtj4/B4/827cZrcN/9I6n1Vsi+1xdvds4z1sjdTbf7O1Ga7d9P2LfR/you9Udjd1um/6g
/TUm68jDsa4ccuw03wDvPgncAfmKNcnEHtg0EbZf8VINrcV5eTWfyztGUQdLhqtz0mysM9k4m+Qz
/VVWfjgrbMBZEmQj5PwZXiPgzzrWauR7Gv5FWpr6HkQG7Py9hs4I430Sn98OB0oh96xz2t5UxrIW
cRLVmsHfO8A+DfKmWkK2yBepl8S9CssgATdALIvUueRQrDM4A4wgXeJ0JGKPwlvCapzfKmjx5otK
JsVZMksj5IdzQzEUa7Alr9rhrknJL/m6JYvke4hj4yTsn/NdDe+n1Z4aszj8qFqbWH5CViqZuRVz
G3beu/C8RTvjeV5DXgw5n57R3A9tZ92S9YLmlHUFdh+01/oL0UhaTs9pfhg/cseDtSRRrckv4J1v
OcXArvbN6P9eSLfd+FidkYxEvVkHiUe4pb/b5+1qnDBG1t2+QHiLfQHf5/DYGngny2sX+ul54PVm
FPIlzDKG12nux0+gj0Zj3R3DPIA+iwY/4PtF5slIPXn/kg4+XYc6We+9I3u7pr0G0UB9Cz2ozcGZ
Ad75I99JAI9VOIIHQR9kPjPwvhv53McUfkcRD/F53VBryHOgrwJ/AL4E3gTewZ75LYxpOeox0t4X
GQ/w+4HwfgNvNLCmR7nGULrjgKWvaLV0JZ+LM9CmexjglVAT8P0PJcdr+PxG/QPn0v8Q5FbMkIeh
1bXH6lOOYy7I8NidmIa9gWPo4gP829FtaOuDNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOB
Nh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYe
aOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44H/a3hA8F+0oq/xq/n3kxNfx8Xv
ePEvv+qPx/yGDJL7abLWeU9eWs6rT+HPxRwDpNalPtAuZ7/WSWtXPzAn2Kj59yQkF8QP6Y7vMwvK
V6YP5kLgCeAQoNN0LRuhHpjLgVrgCeAQ8CrgwHezslWoD3Qh8ABwDHBo7bSsevz9+SGdtHSkTUcd
47VU+gowAQ3fJU9Fqak0DpgO3A48ADhUPPZZCCwHDgEnAAcFtdT6O3uh7qn16xTZM/+yAuWcYTmn
VSrnnksqLDp2gkWLR1nRBljRLuptefcYatFO3Sya0LGgFpnviXYXHB6SoqWgkSmo+CKYQj6Ln9MV
lIM/9JRMIUDiC+KWT1BL2NMhr+CBQ/gqp9AkfkCjmnLMw5qod3sLhkRLU35FCfhC/JfyuBUij++J
8xY8MGS0/ICeAA4BmvwAn7/Kv+JX649xn8MsAh4ADgGvAF8BDnkMn/fxeQ/f6IyX7+IvTL2LmO/i
l+PfRex3EftdxHyXnPJdmB75DnIjZbK9CJDyHZge+Rc06y8w4/E3FoR8W75tHpav1fcrLNivLIH8
iCWnY8SSmhmxJKQUNMo/1n/XBRyVh5EGRx3U2tNg6qW1r+94UU6jllY/aF5Oo/zbHl8gZ+uQnvgm
agiQqMnrKPl1/K7N6/hbEa9TFbAIcMCGv6YD1AIbgK1ACACXwfQAPvwunk/+HngTvxPzJgWB8YBL
vlqPYhrlK/V5Q3OGpMiX5Qv4A6o58qj8naK/l88r+pJ8TtEXQbMRfkQ+X5+dQ0NiEE5I4wH1gOYj
3JBP7+mQkGMO8eLb/Rh4mPlAETAOmA7cDjjkIdm+vjonAZkcpCMuQsx6+kzRh2m7i4Lzc4J5w8CA
PjbyBvwENhgP+B7Ik8G8jffAyUbebXfCxkbeyvWwsZF3/QrY2Mi77GrY2Mirng8bG3lTp8PGRt64
ybDBaJRbnuzQKaffuAXCNyReXoNeuga9dA166Rr8MuY1/KHv8A3OHHlvfdeu6LHNwUCXrjm1B0Tt
U6J2oqjdLmpnidplonaFqB0kan8magOiNkvUZovaoKg9iD97L/DTiMGGFs7CYJqoPSJqd4naGlGb
J2o7itoOotYn+gUbZW79KMw6kBJF9gzhSSdz9/xkMKRPvMxFj+aC53MhEw7BfAUwlSuISL72VuT0
bKbt93Qtstw9BhQsHDJSPoOEz2AYnqH3AR0D9AzY6Blk8gyyi4dZBEwHDgNfASbgQOz2aMftyoyH
mQ8UAdOB5cBXgENV5ytURdJCmFzFJ1TF8mEWAePYJZ/Bpz0+uTI32M6T5Ql4Rmq3Z4n4bDEu28yW
/SglBV+HTfC6vI3Cve9f7m//5aaoIVHyNnk7fvAgR26I0Nvrv2uHP/O9qT7vYM6QZPELfEsdXIc/
GJknOoL2x19JYXcfynIx7U1Z+CWGHFFQnzUFyeLr87rlHBBxnGpfzndZH+Z8ltUoYf0062DOn3yN
uqjPeQM+j+3LeT1rbc6L+Y0u+DyV1yhADvhU1P1Z/XN2HVFRVyBgc33OMib7cm7MGpGzIEsFzLIC
flYDVzA+Z2Le1JyRyK8469KcYA3y3JdTlPWznEFWrD6cZl9OT1QhYFm7orJdslSh/myVYVm/RjE3
2M250VnuHOfs6yxwdnPmOnOc7ZyZziRXgsvjinPFuqJdLpfDpbuki1xJ/CduA/hyPH6n18OEv9KN
v/Gh7B5IGMFiBiZJ4ZI0mkKJWqksnTRUlIYOz6TSS32hU5P8jSJ6wtSQ4R8qQgmlVDp5aKh/oLTR
aU4M9QuUhpzjf1q+W4jbKuAbkmsaBU0ubxQme92SGUoYVo4/Wi+8t9yaybTzLbdWVFBaytVFaUUJ
g72Fw4vPY1Qpz6ric39iM5DWwt4utLF0UnloZ7uKUAFbzHYVpaG7Jvmmle8XX4sTJcX7xT+YVJTv
1waLr0smsr82uLiiorRRTFHxyCf+gXjgGBDEc2WTj+ORz5VtxdtsxeuI9IjXgQniRUVRRxWvY1SU
iqcLjre7pkNJ8e4OMBAn1Uc1Kk5Nqq95nCMdEacjDMRJqaUjKs6RlFqOExqsssnKQpRsGIgiMihL
RckSGSqKqvluFSU/EmVtU5S1qiTNqo2KwwaycR+z47iPIU6zjvz31llD8XfI9wysmDmtZJa/pMpf
MguoCq27em5aqPZSn2/3zAoO8IW0vKpLZ85lOmNWqMI/qzg001/s2z1QpWsVPI2DB/qLd9O0ksnl
u6cFZxXXDwwOLPHPKK7YM2J8734tylrbVFbv8ecpazxn1pvLGqHStSqrHweP4LL6cVn9uKwRwRGq
LFI8Pr58t4uGVgzD+DHdI2Oiwa9VmbkVQ1M8iwYr5h2Ym7Ys8wC0lR0UE6gIxfqHhtwA83X3Id2H
cBDmFAfFwTs+EpS2bGBuJv6OSyTIA2+vfygFllxVcxWllcwrtv7X4B+8llzFQ2GZAfY77z9EKQkF
ZxTX4PcBS0NdJ5WGiiZMLd/tdMK3qrgCfgNsv5iYEvy5W8uzBzwHcERNa4rIfoPYLyoqEvGHvKDq
BG/0zn4oGgf3iGC2WEI1FVoou3SyhCiYPBXdMG1q+QHoUrxI1FSggTUiIGrs3Lgdyo6/ac//CM2u
sbHkqogt0hdLIlTFrAlQoMbuEuXDBneWMlRfLUGG9P8BQEOufgplbmRzdHJlYW0KZW5kb2JqCjQ4
IDAgb2JqCjE0NTExCmVuZG9iago0OSAwIG9iagooZXhwb3J0KQplbmRvYmoKNTAgMCBvYmoKKE1h
YyBPUyBYIDEwLjEyLjYgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iago1MSAwIG9iagooQ2hyb21l
KQplbmRvYmoKNTIgMCBvYmoKKEQ6MjAxNzA5MjUwNjMxMTFaMDAnMDAnKQplbmRvYmoKMSAwIG9i
ago8PCAvVGl0bGUgNDkgMCBSIC9Qcm9kdWNlciA1MCAwIFIgL0NyZWF0b3IgNTEgMCBSIC9DcmVh
dGlvbkRhdGUgNTIgMCBSIC9Nb2REYXRlCjUyIDAgUiA+PgplbmRvYmoKeHJlZgowIDUzCjAwMDAw
MDAwMDAgNjU1MzUgZiAKMDAwMDA5NDUwMCAwMDAwMCBuIAowMDAwMDAzNjY0IDAwMDAwIG4gCjAw
MDAwMTA3MjQgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAzNjQ0IDAwMDAwIG4g
CjAwMDAwMDM3NzkgMDAwMDAgbiAKMDAwMDAwNjc1NiAwMDAwMCBuIAowMDAwMDEwODc4IDAwMDAw
IG4gCjAwMDAwMzcwMTYgMDAwMDAgbiAKMDAwMDAwMzkyNiAwMDAwMCBuIAowMDAwMDAzOTc1IDAw
MDAwIG4gCjAwMDAwMDQwMjAgMDAwMDAgbiAKMDAwMDAwNjczNSAwMDAwMCBuIAowMDAwMDEwNDU2
IDAwMDAwIG4gCjAwMDAwMDY3OTIgMDAwMDAgbiAKMDAwMDAxMDQzNSAwMDAwMCBuIAowMDAwMDEw
NTc0IDAwMDAwIG4gCjAwMDAwNTI2MDQgMDAwMDAgbiAKMDAwMDA3ODc2NiAwMDAwMCBuIAowMDAw
MDEwODE0IDAwMDAwIG4gCjAwMDAwMTE0NjEgMDAwMDAgbiAKMDAwMDAxMTAzMiAwMDAwMCBuIAow
MDAwMDExNDQxIDAwMDAwIG4gCjAwMDAwMTE2NzMgMDAwMDAgbiAKMDAwMDAxMTk1MCAwMDAwMCBu
IAowMDAwMDEyMTk3IDAwMDAwIG4gCjAwMDAwMzY5OTQgMDAwMDAgbiAKMDAwMDAzNzQ5MSAwMDAw
MCBuIAowMDAwMDM3MTcwIDAwMDAwIG4gCjAwMDAwMzc0NzEgMDAwMDAgbiAKMDAwMDAzNzcwMyAw
MDAwMCBuIAowMDAwMDM3NzMzIDAwMDAwIG4gCjAwMDAwMzc5ODAgMDAwMDAgbiAKMDAwMDA1MjU4
MiAwMDAwMCBuIAowMDAwMDUzMTk5IDAwMDAwIG4gCjAwMDAwNTI3NTkgMDAwMDAgbiAKMDAwMDA1
MzE3OSAwMDAwMCBuIAowMDAwMDUzNDExIDAwMDAwIG4gCjAwMDAwNTM3MDAgMDAwMDAgbiAKMDAw
MDA1Mzk0NyAwMDAwMCBuIAowMDAwMDc4NzQ0IDAwMDAwIG4gCjAwMDAwNzkyNDIgMDAwMDAgbiAK
MDAwMDA3ODkyMSAwMDAwMCBuIAowMDAwMDc5MjIyIDAwMDAwIG4gCjAwMDAwNzk0NTQgMDAwMDAg
biAKMDAwMDA3OTQ4NCAwMDAwMCBuIAowMDAwMDc5NzMxIDAwMDAwIG4gCjAwMDAwOTQzMzMgMDAw
MDAgbiAKMDAwMDA5NDM1NSAwMDAwMCBuIAowMDAwMDk0MzgwIDAwMDAwIG4gCjAwMDAwOTQ0MzMg
MDAwMDAgbiAKMDAwMDA5NDQ1OCAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDUzIC9Sb290IDIw
IDAgUiAvSW5mbyAxIDAgUiAvSUQgWyA8MzAxYWQzNDIxMGM4YmFmZDAxMTE5NTQ5NjZhMjhiYTY+
CjwzMDFhZDM0MjEwYzhiYWZkMDExMTk1NDk2NmEyOGJhNj4gXSA+PgpzdGFydHhyZWYKOTQ2MDUK
JSVFT0YK
</data>

          </attachment>
      

    </bug>

</bugzilla>