<?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>191133</bug_id>
          
          <creation_ts>2018-10-31 14:01:10 -0700</creation_ts>
          <short_desc>Refresh WPT webrtc tests</short_desc>
          <delta_ts>2018-11-03 07:58:21 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1473865</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-31 14:01:10 -0700</bug_when>
    <thetext>Refresh WPT webrtc tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474054</commentid>
    <comment_count>1</comment_count>
      <attachid>353589</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-01 02:22:39 -0700</bug_when>
    <thetext>Created attachment 353589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474781</commentid>
    <comment_count>2</comment_count>
      <attachid>353589</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-03 07:57:32 -0700</bug_when>
    <thetext>Comment on attachment 353589
Patch

Clearing flags on attachment: 353589

Committed r237773: &lt;https://trac.webkit.org/changeset/237773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474782</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-03 07:57:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474783</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-03 07:58:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/45784393&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353589</attachid>
            <date>2018-11-01 02:22:39 -0700</date>
            <delta_ts>2018-11-03 07:57:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191133-20181101102227.patch</filename>
            <type>text/plain</type>
            <size>625893</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjI4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2JiNjQzYjljM2M2YTFmZjJmYzJh
ODIzMzA2Mzk0NjAyMDhlOWJiNy4uZjU3OGIyN2E0Mjc5ODkwMTc4OTA5MTBmM2Y5NTY1YWUzZjcz
MDEzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTExLTAxICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZyZXNoIFdQVCB3ZWJydGMgdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTEzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAxOC0xMC0zMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFhTTFRQcm9jZXNzb3Igc2hvdWxkIGxpbWl0IG1heCB0cmFuc2Zvcm0gZGVw
dGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDBkOTVhMTc1MWEzY2M1ZWExNjI2
MGY0NzFiYjU5ZWM3Yzc3YWZlMTAuLjQ1YzJkYzU3YmM5NWRmZmFmN2E5MjQ5MTlhYmFjMDQwNWFk
MTEzMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE4LTExLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZyZXNoIFdQVCB3ZWJydGMgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy86IFJlZnJlc2hlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3czYy1pbXBvcnQubG9nOgorCiAy
MDE4LTEwLTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
VENUcmFja0V2ZW50LnN0cmVhbXMgc2hvdWxkIGJlIFNhbWVPYmplY3QKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDljZDcyODExZDVmMmExNWE2Nzk0MDc5ZTdjYTk1NzQwYWZkNTUyZWEuLjhjYTYyNjI0
OTA1YWVmMjc0YWQ5OWUxYzgyZmZlMzZkNDhjZWE1NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTIyMCw2ICsxMjIwLDcgQEAgd2Via2l0Lm9yZy9iLzE3MTA5NCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9ydGNwZWVyY29ubmVjdGlvbi9ydGMKIHdlYmtpdC5vcmcvYi8x
NzJmMjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvZ2V0c3RhdHMuaHRt
bCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
UGVlckNvbm5lY3Rpb24tb250cmFjay5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2Ny
aXB0aW9uLW9mZmVyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVyLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KIAog
IyBVc2VzIGxlZ2FjeSBXZWJSVEMgQVBJLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvcnRjcGVlcmNvbm5lY3Rpb24vc2V0UmVtb3RlRGVzY3JpcHRpb24uaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvTUVUQS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9NRVRBLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTI4NDZlOTdhZjAxODE3ZjA2
MzQzMzIyZWZhYjNkOTQxMDYwZjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvTUVUQS55bWwKQEAgLTAsMCArMSwx
MSBAQAorc3BlYzogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8KK3N1Z2dlc3RlZF9y
ZXZpZXdlcnM6CisgIC0gc251Z2dzCisgIC0gYWdvdWFpbGxhcmQKKyAgLSBhbHZlc3RyYW5kCisg
IC0gZG9udGNhbGxtZWRvbQorICAtIGd1aWRvdQorICAtIGhlbmJvcworICAtIHBob2dsdW5kCisg
IC0geW91ZW5uZgorICAtIHJ3YWxkcm9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9PV05FUlMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9PV05FUlMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM3OGJmODdhMTA2MDdiNTFmMzBiMGQwOWY2MTI1MWJiNjM0MjNjNzgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvT1dORVJTCisrKyAvZGV2
L251bGwKQEAgLTEsOSArMCwwIEBACi1Ac251Z2dzCi1AYWdvdWFpbGxhcmQKLUBhbHZlc3RyYW5k
Ci1AZG9udGNhbGxtZWRvbQotQGd1aWRvdQotQGhlbmJvcwotQHBob2dsdW5kCi1AeW91ZW5uZgot
QHJ3YWxkcm9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENDZXJ0aWZpY2F0ZS1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVEND
ZXJ0aWZpY2F0ZS1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJmNjQzMzI1
Zjk3Y2Q0YWU3YTA5N2FhYTM5YjllZTRmNjkwZmEzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0NlcnRpZmlj
YXRlLXBvc3RNZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBDaGVj
ayBzYW1lLW9yaWdpbiBSVENDZXJ0aWZpY2F0ZSBzZXJpYWxpemF0aW9uIAorUEFTUyBDaGVjayBj
cm9zcy1vcmlnaW4gUlRDQ2VydGlmaWNhdGUgc2VyaWFsaXphdGlvbiAKK1BBU1MgQ2hlY2sgY3Jv
c3Mtb3JpZ2luIGNyZWF0ZWQgUlRDQ2VydGlmaWNhdGUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0NvbmZpZ3VyYXRp
b24taWNlU2VydmVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENDb25maWd1cmF0aW9uLWljZVNlcnZlcnMtZXhwZWN0
ZWQudHh0CmluZGV4IGNkNjgwYWE0YTdlNzE0YTg1YmFmNTBlMWI0ZDY4N2JmZmFkNmZmYTguLjk3
NjdlMDk1ZGFiMzViODMzMDc5MWZjYmI1NWFiZDVjYTEyNzcyNTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0NvbmZpZ3Vy
YXRpb24taWNlU2VydmVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDQ29uZmlndXJhdGlvbi1pY2VTZXJ2ZXJz
LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDcgQEAKIAogUEFTUyBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKSBzaG91bGQgaGF2ZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyBvZiB1bmRl
ZmluZWQgCitQQVNTIG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb25maWcpIC0ge30gc2hvdWxkIHN1
Y2NlZWQgCitQQVNTIHNldENvbmZpZ3VyYXRpb24oY29uZmlnKSAtIHt9IHNob3VsZCBzdWNjZWVk
IAogUEFTUyBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlnKSAtIHsgaWNlU2VydmVyczogbnVs
bCB9IHNob3VsZCB0aHJvdyBUeXBlRXJyb3IgCiBQQVNTIHNldENvbmZpZ3VyYXRpb24oY29uZmln
KSAtIHsgaWNlU2VydmVyczogbnVsbCB9IHNob3VsZCB0aHJvdyBUeXBlRXJyb3IgCiBQQVNTIG5l
dyBSVENQZWVyQ29ubmVjdGlvbihjb25maWcpIC0geyBpY2VTZXJ2ZXJzOiB1bmRlZmluZWQgfSBz
aG91bGQgc3VjY2VlZCAKQEAgLTEyLDggKzE0LDYgQEAgUEFTUyBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oY29uZmlnKSAtIHsgaWNlU2VydmVyczogW3VuZGVmaW5lZF0gfSBzaG91bGQgdGhyb3cgVHkK
IFBBU1Mgc2V0Q29uZmlndXJhdGlvbihjb25maWcpIC0geyBpY2VTZXJ2ZXJzOiBbdW5kZWZpbmVk
XSB9IHNob3VsZCB0aHJvdyBUeXBlRXJyb3IgCiBQQVNTIG5ldyBSVENQZWVyQ29ubmVjdGlvbihj
b25maWcpIC0geyBpY2VTZXJ2ZXJzOiBbe31dIH0gc2hvdWxkIHRocm93IFR5cGVFcnJvciAKIFBB
U1Mgc2V0Q29uZmlndXJhdGlvbihjb25maWcpIC0geyBpY2VTZXJ2ZXJzOiBbe31dIH0gc2hvdWxk
IHRocm93IFR5cGVFcnJvciAKLUZBSUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZykgLSB3
aXRoIGVtcHR5IGxpc3QgdXJscyBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAoc3RyaW5nKSAicGFzc3dvcmQiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1GQUlM
IHNldENvbmZpZ3VyYXRpb24oY29uZmlnKSAtIHdpdGggZW1wdHkgbGlzdCB1cmxzIHNob3VsZCBz
dWNjZWVkIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJwYXNzd29yZCIgYnV0IGdv
dCAodW5kZWZpbmVkKSB1bmRlZmluZWQKIEZBSUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZp
ZykgLSB3aXRoIHN0dW4gc2VydmVyIHNob3VsZCBzdWNjZWVkIGFzc2VydF9hcnJheV9lcXVhbHM6
IHZhbHVlIGlzICJzdHVuOnN0dW4xLmV4YW1wbGUubmV0IiwgZXhwZWN0ZWQgYXJyYXkKIEZBSUwg
c2V0Q29uZmlndXJhdGlvbihjb25maWcpIC0gd2l0aCBzdHVuIHNlcnZlciBzaG91bGQgc3VjY2Vl
ZCBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBpcyAic3R1bjpzdHVuMS5leGFtcGxlLm5ldCIs
IGV4cGVjdGVkIGFycmF5CiBGQUlMIG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb25maWcpIC0gd2l0
aCBzdHVuIHNlcnZlciBhcnJheSBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAoc3RyaW5nKSAicGFzc3dvcmQiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCkBAIC00
Miw0MiArNDIsNjIgQEAgUEFTUyBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlnKSAtIHdpdGgg
dHVybnMgc2VydmVyIGFuZCBvbmx5IHVzZXJuYW1lIHNob3VsZAogUEFTUyBzZXRDb25maWd1cmF0
aW9uKGNvbmZpZykgLSB3aXRoIHR1cm5zIHNlcnZlciBhbmQgb25seSB1c2VybmFtZSBzaG91bGQg
dGhyb3cgSW52YWxpZEFjY2Vzc0Vycm9yIAogUEFTUyBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29u
ZmlnKSAtIHdpdGggdHVybnMgc2VydmVyIGFuZCBvbmx5IGNyZWRlbnRpYWwgc2hvdWxkIHRocm93
IEludmFsaWRBY2Nlc3NFcnJvciAKIFBBU1Mgc2V0Q29uZmlndXJhdGlvbihjb25maWcpIC0gd2l0
aCB0dXJucyBzZXJ2ZXIgYW5kIG9ubHkgY3JlZGVudGlhbCBzaG91bGQgdGhyb3cgSW52YWxpZEFj
Y2Vzc0Vycm9yIAorRkFJTCBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlnKSAtIHdpdGggIiIg
dXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkg
PT4KKyAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7CisgICAgICAgIHVybHM6ICcnCisgICAg
ICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogSUNFIHNlcnZlciBwcm90
b2NvbCBub3Qgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0
ICJTeW50YXhFcnJvciIgKCJTeW50YXhFcnJvciIpCitGQUlMIHNldENvbmZpZ3VyYXRpb24oY29u
ZmlnKSAtIHdpdGggIiIgdXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dz
OiBmdW5jdGlvbiAiKCkgPT4KKyAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7CisgICAgICAg
IHVybHM6ICcnCisgICAgICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
SUNFIHNlcnZlciBwcm90b2NvbCBub3Qgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikg
ZXhwZWN0ZWQgb2JqZWN0ICJTeW50YXhFcnJvciIgKCJTeW50YXhFcnJvciIpCitGQUlMIG5ldyBS
VENQZWVyQ29ubmVjdGlvbihjb25maWcpIC0gd2l0aCBbInN0dW46c3R1bjEuZXhhbXBsZS5uZXQi
LCAiIl0gdXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dzOiBmdW5jdGlv
biAiKCkgPT4KKyAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7CisgICAgICAgIHVybHM6IFsn
c3R1bjpzdHVuMS5leGFtcGxlLm5ldCcsICcnXQorICAgICAgfV0gfSkiIHRocmV3IG9iamVjdCAi
Tm90U3VwcG9ydGVkRXJyb3I6IElDRSBzZXJ2ZXIgcHJvdG9jb2wgbm90IHN1cHBvcnRlZCIgKCJO
b3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiU3ludGF4RXJyb3IiICgiU3ludGF4
RXJyb3IiKQorRkFJTCBzZXRDb25maWd1cmF0aW9uKGNvbmZpZykgLSB3aXRoIFsic3R1bjpzdHVu
MS5leGFtcGxlLm5ldCIsICIiXSB1cmwgc2hvdWxkIHRocm93IFN5bnRheEVycm9yIGFzc2VydF90
aHJvd3M6IGZ1bmN0aW9uICIoKSA9PgorICAgICAgbWFrZVBjKHsgaWNlU2VydmVyczogW3sKKyAg
ICAgICAgdXJsczogWydzdHVuOnN0dW4xLmV4YW1wbGUubmV0JywgJyddCisgICAgICB9XSB9KSIg
dGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogSUNFIHNlcnZlciBwcm90b2NvbCBub3Qg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJTeW50YXhF
cnJvciIgKCJTeW50YXhFcnJvciIpCiBGQUlMIG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb25maWcp
IC0gd2l0aCByZWxhdGl2ZSB1cmwgc2hvdWxkIHRocm93IFN5bnRheEVycm9yIGFzc2VydF90aHJv
d3M6IGZ1bmN0aW9uICIoKSA9PgogICAgICAgbWFrZVBjKHsgaWNlU2VydmVyczogW3sKICAgICAg
ICAgdXJsczogJ3JlbGF0aXZlLXVybCcKLSAgICAgIH1dIH0pIiB0aHJldyBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiBJQ0Ugc2VydmVyIHByb3RvY29sIG5vdCBzdXBwb3J0ZWQiIHRoYXQgaXMg
bm90IGEgRE9NRXhjZXB0aW9uIFN5bnRheEVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwg
dG8gOSwgZXhwZWN0ZWQgMTIKKyAgICAgIH1dIH0pIiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRl
ZEVycm9yOiBJQ0Ugc2VydmVyIHByb3RvY29sIG5vdCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVk
RXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlN5bnRheEVycm9yIiAoIlN5bnRheEVycm9yIikKIEZB
SUwgc2V0Q29uZmlndXJhdGlvbihjb25maWcpIC0gd2l0aCByZWxhdGl2ZSB1cmwgc2hvdWxkIHRo
cm93IFN5bnRheEVycm9yIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PgogICAgICAgbWFr
ZVBjKHsgaWNlU2VydmVyczogW3sKICAgICAgICAgdXJsczogJ3JlbGF0aXZlLXVybCcKLSAgICAg
IH1dIH0pIiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBJQ0Ugc2VydmVyIHByb3Rv
Y29sIG5vdCBzdXBwb3J0ZWQiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIFN5bnRheEVycm9y
OiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gOSwgZXhwZWN0ZWQgMTIKKyAgICAgIH1dIH0p
IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBJQ0Ugc2VydmVyIHByb3RvY29sIG5v
dCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlN5bnRh
eEVycm9yIiAoIlN5bnRheEVycm9yIikKIEZBSUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZp
ZykgLSB3aXRoIGh0dHAgdXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dz
OiBmdW5jdGlvbiAiKCkgPT4KICAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7CiAgICAgICAg
IHVybHM6ICdodHRwOi8vZXhhbXBsZS5jb20nCi0gICAgICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogSUNFIHNlcnZlciBwcm90b2NvbCBub3Qgc3VwcG9ydGVkIiB0aGF0
IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiBTeW50YXhFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVx
dWFsIHRvIDksIGV4cGVjdGVkIDEyCisgICAgICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogSUNFIHNlcnZlciBwcm90b2NvbCBub3Qgc3VwcG9ydGVkIiAoIk5vdFN1cHBv
cnRlZEVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJTeW50YXhFcnJvciIgKCJTeW50YXhFcnJvciIp
CiBGQUlMIHNldENvbmZpZ3VyYXRpb24oY29uZmlnKSAtIHdpdGggaHR0cCB1cmwgc2hvdWxkIHRo
cm93IFN5bnRheEVycm9yIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PgogICAgICAgbWFr
ZVBjKHsgaWNlU2VydmVyczogW3sKICAgICAgICAgdXJsczogJ2h0dHA6Ly9leGFtcGxlLmNvbScK
LSAgICAgIH1dIH0pIiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBJQ0Ugc2VydmVy
IHByb3RvY29sIG5vdCBzdXBwb3J0ZWQiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gOSwgZXhwZWN0ZWQgMTIKKyAgICAg
IH1dIH0pIiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBJQ0Ugc2VydmVyIHByb3Rv
Y29sIG5vdCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBvYmplY3Qg
IlN5bnRheEVycm9yIiAoIlN5bnRheEVycm9yIikKIEZBSUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KGNvbmZpZykgLSB3aXRoIGludmFsaWQgdHVybiB1cmwgc2hvdWxkIHRocm93IFN5bnRheEVycm9y
IGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PgogICAgICAgbWFrZVBjKHsgaWNlU2VydmVy
czogW3sKICAgICAgICAgdXJsczogJ3R1cm46Ly9leGFtcGxlLm9yZy9mb28/eD15JwotICAgICAg
fV0gfSkiIHRocmV3IG9iamVjdCAiSW52YWxpZEFjY2Vzc0Vycm9yOiBUVVJOL1RVUk5TIHNlcnZl
ciByZXF1aXJlcyBib3RoIHVzZXJuYW1lIGFuZCBjcmVkZW50aWFsIiB0aGF0IGlzIG5vdCBhIERP
TUV4Y2VwdGlvbiBTeW50YXhFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVxdWFsIHRvIDE1LCBl
eHBlY3RlZCAxMgorICAgICAgfV0gfSkiIHRocmV3IG9iamVjdCAiSW52YWxpZEFjY2Vzc0Vycm9y
OiBUVVJOL1RVUk5TIHNlcnZlciByZXF1aXJlcyBib3RoIHVzZXJuYW1lIGFuZCBjcmVkZW50aWFs
IiAoIkludmFsaWRBY2Nlc3NFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiU3ludGF4RXJyb3IiICgi
U3ludGF4RXJyb3IiKQogRkFJTCBzZXRDb25maWd1cmF0aW9uKGNvbmZpZykgLSB3aXRoIGludmFs
aWQgdHVybiB1cmwgc2hvdWxkIHRocm93IFN5bnRheEVycm9yIGFzc2VydF90aHJvd3M6IGZ1bmN0
aW9uICIoKSA9PgogICAgICAgbWFrZVBjKHsgaWNlU2VydmVyczogW3sKICAgICAgICAgdXJsczog
J3R1cm46Ly9leGFtcGxlLm9yZy9mb28/eD15JwotICAgICAgfV0gfSkiIHRocmV3IG9iamVjdCAi
SW52YWxpZEFjY2Vzc0Vycm9yOiBUVVJOL1RVUk5TIHNlcnZlciByZXF1aXJlcyBib3RoIHVzZXJu
YW1lIGFuZCBjcmVkZW50aWFsIiB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogcHJvcGVydHkgImNvZGUiIGlzIGVxdWFsIHRvIDE1LCBleHBlY3RlZCAxMgorICAgICAgfV0g
fSkiIHRocmV3IG9iamVjdCAiSW52YWxpZEFjY2Vzc0Vycm9yOiBUVVJOL1RVUk5TIHNlcnZlciBy
ZXF1aXJlcyBib3RoIHVzZXJuYW1lIGFuZCBjcmVkZW50aWFsIiAoIkludmFsaWRBY2Nlc3NFcnJv
ciIpIGV4cGVjdGVkIG9iamVjdCAiU3ludGF4RXJyb3IiICgiU3ludGF4RXJyb3IiKQogRkFJTCBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlnKSAtIHdpdGggaW52YWxpZCBzdHVuIHVybCBzaG91
bGQgdGhyb3cgU3ludGF4RXJyb3IgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+CiAgICAg
ICBtYWtlUGMoeyBpY2VTZXJ2ZXJzOiBbewogICAgICAgICB1cmxzOiAnc3R1bjovL2V4YW1wbGUu
b3JnL2Zvbz94PXknCi0gICAgICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJJbnZhbGlkQWNjZXNzRXJy
b3I6IEJhZCBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0
aW9uIFN5bnRheEVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gMTUsIGV4cGVjdGVk
IDEyCisgICAgICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJJbnZhbGlkQWNjZXNzRXJyb3I6IEJhZCBD
b25maWd1cmF0aW9uIFBhcmFtZXRlcnMiICgiSW52YWxpZEFjY2Vzc0Vycm9yIikgZXhwZWN0ZWQg
b2JqZWN0ICJTeW50YXhFcnJvciIgKCJTeW50YXhFcnJvciIpCiBGQUlMIHNldENvbmZpZ3VyYXRp
b24oY29uZmlnKSAtIHdpdGggaW52YWxpZCBzdHVuIHVybCBzaG91bGQgdGhyb3cgU3ludGF4RXJy
b3IgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+CiAgICAgICBtYWtlUGMoeyBpY2VTZXJ2
ZXJzOiBbewogICAgICAgICB1cmxzOiAnc3R1bjovL2V4YW1wbGUub3JnL2Zvbz94PXknCi0gICAg
ICB9XSB9KSIgdGhyZXcgb2JqZWN0ICJJbnZhbGlkQWNjZXNzRXJyb3I6IEJhZCBDb25maWd1cmF0
aW9uIFBhcmFtZXRlcnMiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIFN5bnRheEVycm9yOiBw
cm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gMTUsIGV4cGVjdGVkIDEyCi1GQUlMIG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbihjb25maWcpIC0gd2l0aCBlbXB0eSB1cmxzIGFuZCBjcmVkZW50aWFsVHlw
ZSBwYXNzd29yZCBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5n
KSAicGFzc3dvcmQiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1GQUlMIHNldENvbmZp
Z3VyYXRpb24oY29uZmlnKSAtIHdpdGggZW1wdHkgdXJscyBhbmQgY3JlZGVudGlhbFR5cGUgcGFz
c3dvcmQgc2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgInBh
c3N3b3JkIiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAotRkFJTCBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oY29uZmlnKSAtIHdpdGggZW1wdHkgdXJscyBhbmQgY3JlZGVudGlhbFR5cGUgb2F1
dGggc2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgIm9hdXRo
IiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAotRkFJTCBzZXRDb25maWd1cmF0aW9uKGNv
bmZpZykgLSB3aXRoIGVtcHR5IHVybHMgYW5kIGNyZWRlbnRpYWxUeXBlIG9hdXRoIHNob3VsZCBz
dWNjZWVkIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJvYXV0aCIgYnV0IGdvdCAo
dW5kZWZpbmVkKSB1bmRlZmluZWQKKyAgICAgIH1dIH0pIiB0aHJldyBvYmplY3QgIkludmFsaWRB
Y2Nlc3NFcnJvcjogQmFkIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyIgKCJJbnZhbGlkQWNjZXNz
RXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlN5bnRheEVycm9yIiAoIlN5bnRheEVycm9yIikKK0ZB
SUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZykgLSB3aXRoIGVtcHR5IHVybHMgc2hvdWxk
IHRocm93IFN5bnRheEVycm9yIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PgorICAgICAg
bWFrZVBjKHsgaWNlU2VydmVyczogW3sKKyAgICAgICAgdXJsczogW10KKyAgICAgIH1dIH0pIiBk
aWQgbm90IHRocm93CitGQUlMIHNldENvbmZpZ3VyYXRpb24oY29uZmlnKSAtIHdpdGggZW1wdHkg
dXJscyBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3IgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+CisgICAgICBtYWtlUGMoeyBpY2VTZXJ2ZXJzOiBbeworICAgICAgICB1cmxzOiBbXQorICAg
ICAgfV0gfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZp
ZykgLSB3aXRoIGludmFsaWQgY3JlZGVudGlhbFR5cGUgc2hvdWxkIHRocm93IFR5cGVFcnJvciBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4KICAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6
IFt7CiAgICAgICAgIHVybHM6IFtdLApAQCAtMTQyLDggKzE2Miw0IEBAIEZBSUwgbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKGNvbmZpZykgLSB3aXRoIHN0dW4gc2VydmVyLCBjcmVkZW50aWFsVHlwZSBv
YXV0aCwgYW5kCiBGQUlMIHNldENvbmZpZ3VyYXRpb24oY29uZmlnKSAtIHdpdGggc3R1biBzZXJ2
ZXIsIGNyZWRlbnRpYWxUeXBlIG9hdXRoLCBhbmQgc3RyaW5nIGNyZWRlbnRpYWwgc2hvdWxkIHN1
Y2NlZWQgYXNzZXJ0X2FycmF5X2VxdWFsczogdmFsdWUgaXMgInN0dW46c3R1bjEuZXhhbXBsZS5u
ZXQiLCBleHBlY3RlZCBhcnJheQogRkFJTCBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlnKSAt
IHdpdGggc3R1biBzZXJ2ZXIsIGNyZWRlbnRpYWxUeXBlIHBhc3N3b3JkLCBhbmQgUlRDT0F1dGhD
cmVkZW50aWFsIGNyZWRlbnRpYWwgc2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2FycmF5X2VxdWFsczog
dmFsdWUgaXMgInN0dW46c3R1bjEuZXhhbXBsZS5uZXQiLCBleHBlY3RlZCBhcnJheQogRkFJTCBz
ZXRDb25maWd1cmF0aW9uKGNvbmZpZykgLSB3aXRoIHN0dW4gc2VydmVyLCBjcmVkZW50aWFsVHlw
ZSBwYXNzd29yZCwgYW5kIFJUQ09BdXRoQ3JlZGVudGlhbCBjcmVkZW50aWFsIHNob3VsZCBzdWNj
ZWVkIGFzc2VydF9hcnJheV9lcXVhbHM6IHZhbHVlIGlzICJzdHVuOnN0dW4xLmV4YW1wbGUubmV0
IiwgZXhwZWN0ZWQgYXJyYXkKLUZBSUwgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZykgLSB3
aXRoIGVtcHR5IHVybHMgbGlzdCwgY3JlZGVudGlhbFR5cGUgb2F1dGgsIGFuZCBzdHJpbmcgY3Jl
ZGVudGlhbCBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAi
b2F1dGgiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1GQUlMIHNldENvbmZpZ3VyYXRp
b24oY29uZmlnKSAtIHdpdGggZW1wdHkgdXJscyBsaXN0LCBjcmVkZW50aWFsVHlwZSBvYXV0aCwg
YW5kIHN0cmluZyBjcmVkZW50aWFsIHNob3VsZCBzdWNjZWVkIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkIChzdHJpbmcpICJvYXV0aCIgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKLUZBSUwg
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZykgLSB3aXRoIGVtcHR5IHVybHMgbGlzdCwgY3Jl
ZGVudGlhbFR5cGUgcGFzc3dvcmQsIGFuZCBSVENPQXV0aENyZWRlbnRpYWwgY3JlZGVudGlhbCBz
aG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAicGFzc3dvcmQi
IGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1GQUlMIHNldENvbmZpZ3VyYXRpb24oY29u
ZmlnKSAtIHdpdGggZW1wdHkgdXJscyBsaXN0LCBjcmVkZW50aWFsVHlwZSBwYXNzd29yZCwgYW5k
IFJUQ09BdXRoQ3JlZGVudGlhbCBjcmVkZW50aWFsIHNob3VsZCBzdWNjZWVkIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIChzdHJpbmcpICJwYXNzd29yZCIgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRl
ZmluZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDQ29uZmlndXJhdGlvbi1pY2VTZXJ2ZXJzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENDb25maWd1cmF0
aW9uLWljZVNlcnZlcnMuaHRtbAppbmRleCA0MmJjODk2MzQ5Y2NmNGY4MTM4NGQxNmQ3ZDQ2NWQw
YWE5MGFhNDg5Li4zZjVjMzY3ZDNhZDk4MTg2NDYxODY0YjZiMGJkZWNlZTNhMDczMTllIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENDb25maWd1cmF0aW9uLWljZVNlcnZlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENDb25maWd1cmF0aW9uLWljZVNl
cnZlcnMuaHRtbApAQCAtNTMsNiArNTMsMTAgQEAKICAgICBhc3NlcnRfZXF1YWxzKHBjLmdldENv
bmZpZ3VyYXRpb24oKS5pY2VTZXJ2ZXJzLCB1bmRlZmluZWQpOwogICB9LCAnbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCkgc2hvdWxkIGhhdmUgZGVmYXVsdCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMg
b2YgdW5kZWZpbmVkJyk7CiAKKyAgY29uZmlnX3Rlc3QobWFrZVBjID0+IHsKKyAgICBtYWtlUGMo
e30pOworICB9LCAne30gc2hvdWxkIHN1Y2NlZWQnKTsKKwogICBjb25maWdfdGVzdChtYWtlUGMg
PT4gewogICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PgogICAgICAgbWFr
ZVBjKHsgaWNlU2VydmVyczogbnVsbCB9KSk7CkBAIC04MywxOSArODcsNiBAQAogICAgICAgbWFr
ZVBjKHsgaWNlU2VydmVyczogW3t9XSB9KSk7CiAgIH0sICd7IGljZVNlcnZlcnM6IFt7fV0gfSBz
aG91bGQgdGhyb3cgVHlwZUVycm9yJyk7CiAKLSAgY29uZmlnX3Rlc3QobWFrZVBjID0+IHsKLSAg
ICBjb25zdCBwYyA9IG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7Ci0gICAgICB1cmxzOiBbXQotICAg
IH1dIH0pOwotCi0gICAgY29uc3QgeyBpY2VTZXJ2ZXJzIH0gPSBwYy5nZXRDb25maWd1cmF0aW9u
KCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhpY2VTZXJ2ZXJzLmxlbmd0aCwgMSk7Ci0KLSAgICBjb25z
dCBzZXJ2ZXIgPSBpY2VTZXJ2ZXJzWzBdOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2VydmVy
LnVybHMsIFtdKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlcnZlci5jcmVkZW50aWFsVHlwZSwgJ3Bh
c3N3b3JkJyk7Ci0gIH0sICd3aXRoIGVtcHR5IGxpc3QgdXJscyBzaG91bGQgc3VjY2VlZCcpOwot
CiAgIGNvbmZpZ190ZXN0KG1ha2VQYyA9PiB7CiAgICAgY29uc3QgcGMgPSBtYWtlUGMoeyBpY2VT
ZXJ2ZXJzOiBbewogICAgICAgdXJsczogJ3N0dW46c3R1bjEuZXhhbXBsZS5uZXQnCkBAIC0xMzks
NyArMTMwLDcgQEAKICAgfSwgYHdpdGggMiBzdHVuIHNlcnZlcnMgc2hvdWxkIHN1Y2NlZWRgKTsK
IAogICBjb25maWdfdGVzdChtYWtlUGMgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKHsgaWNlU2VydmVyczogW3sKKyAgICBjb25zdCBwYyA9IG1ha2VQYyh7IGljZVNl
cnZlcnM6IFt7CiAgICAgICB1cmxzOiAndHVybjp0dXJuLmV4YW1wbGUub3JnJywKICAgICAgIHVz
ZXJuYW1lOiAndXNlcicsCiAgICAgICBjcmVkZW50aWFsOiAnY3JlZCcKQEAgLTI5NCw2MCArMjg1
LDUzIEBACiAgICAgICB0cmFuc3BvcnQtZXh0ID0gMSp1bnJlc2VydmVkCiAgICAqLwogICBjb25m
aWdfdGVzdChtYWtlUGMgPT4gewotICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgKCkg
PT4KKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhFcnJvcigpLCAoKSA9PgorICAgICAgbWFr
ZVBjKHsgaWNlU2VydmVyczogW3sKKyAgICAgICAgdXJsczogJycKKyAgICAgIH1dIH0pKTsKKyAg
fSwgJ3dpdGggIiIgdXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcicpOworCisgIGNvbmZpZ190
ZXN0KG1ha2VQYyA9PiB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwgKCkg
PT4KKyAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7CisgICAgICAgIHVybHM6IFsnc3R1bjpz
dHVuMS5leGFtcGxlLm5ldCcsICcnXQorICAgICAgfV0gfSkpOworICB9LCAnd2l0aCBbInN0dW46
c3R1bjEuZXhhbXBsZS5uZXQiLCAiIl0gdXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcicpOwor
CisgIGNvbmZpZ190ZXN0KG1ha2VQYyA9PiB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4
RXJyb3IoKSwgKCkgPT4KICAgICAgIG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7CiAgICAgICAgIHVy
bHM6ICdyZWxhdGl2ZS11cmwnCiAgICAgICB9XSB9KSk7CiAgIH0sICd3aXRoIHJlbGF0aXZlIHVy
bCBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3InKTsKIAogICBjb25maWdfdGVzdChtYWtlUGMgPT4g
ewotICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgKCkgPT4KKyAgICBhc3NlcnRfdGhy
b3dzKG5ldyBTeW50YXhFcnJvcigpLCAoKSA9PgogICAgICAgbWFrZVBjKHsgaWNlU2VydmVyczog
W3sKICAgICAgICAgdXJsczogJ2h0dHA6Ly9leGFtcGxlLmNvbScKICAgICAgIH1dIH0pKTsKICAg
fSwgJ3dpdGggaHR0cCB1cmwgc2hvdWxkIHRocm93IFN5bnRheEVycm9yJyk7CiAKICAgY29uZmln
X3Rlc3QobWFrZVBjID0+IHsKLSAgICBhc3NlcnRfdGhyb3dzKCdTeW50YXhFcnJvcicsICgpID0+
CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwgKCkgPT4KICAgICAgIG1ha2VQ
Yyh7IGljZVNlcnZlcnM6IFt7CiAgICAgICAgIHVybHM6ICd0dXJuOi8vZXhhbXBsZS5vcmcvZm9v
P3g9eScKICAgICAgIH1dIH0pKTsKICAgfSwgJ3dpdGggaW52YWxpZCB0dXJuIHVybCBzaG91bGQg
dGhyb3cgU3ludGF4RXJyb3InKTsKIAogICBjb25maWdfdGVzdChtYWtlUGMgPT4gewotICAgIGFz
c2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgKCkgPT4KKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBT
eW50YXhFcnJvcigpLCAoKSA9PgogICAgICAgbWFrZVBjKHsgaWNlU2VydmVyczogW3sKICAgICAg
ICAgdXJsczogJ3N0dW46Ly9leGFtcGxlLm9yZy9mb28/eD15JwogICAgICAgfV0gfSkpOwogICB9
LCAnd2l0aCBpbnZhbGlkIHN0dW4gdXJsIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcicpOwogCiAg
IGNvbmZpZ190ZXN0KG1ha2VQYyA9PiB7Ci0gICAgY29uc3QgcGMgPSBtYWtlUGMoeyBpY2VTZXJ2
ZXJzOiBbewotICAgICAgdXJsczogW10sCi0gICAgICBjcmVkZW50aWFsVHlwZTogJ3Bhc3N3b3Jk
JwotICAgIH1dIH0pOwotCi0gICAgY29uc3QgeyBpY2VTZXJ2ZXJzIH0gPSBwYy5nZXRDb25maWd1
cmF0aW9uKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhpY2VTZXJ2ZXJzLmxlbmd0aCwgMSk7Ci0KLSAg
ICBjb25zdCBzZXJ2ZXIgPSBpY2VTZXJ2ZXJzWzBdOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
c2VydmVyLnVybHMsIFtdKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlcnZlci5jcmVkZW50aWFsVHlw
ZSwgJ3Bhc3N3b3JkJyk7Ci0gIH0sIGB3aXRoIGVtcHR5IHVybHMgYW5kIGNyZWRlbnRpYWxUeXBl
IHBhc3N3b3JkIHNob3VsZCBzdWNjZWVkYCk7Ci0KLSAgY29uZmlnX3Rlc3QobWFrZVBjID0+IHsK
LSAgICBjb25zdCBwYyA9IG1ha2VQYyh7IGljZVNlcnZlcnM6IFt7Ci0gICAgICB1cmxzOiBbXSwK
LSAgICAgIGNyZWRlbnRpYWxUeXBlOiAnb2F1dGgnCi0gICAgfV0gfSk7Ci0KLSAgICBjb25zdCB7
IGljZVNlcnZlcnMgfSA9IHBjLmdldENvbmZpZ3VyYXRpb24oKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGljZVNlcnZlcnMubGVuZ3RoLCAxKTsKLQotICAgIGNvbnN0IHNlcnZlciA9IGljZVNlcnZlcnNb
MF07Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzZXJ2ZXIudXJscywgW10pOwotICAgIGFzc2Vy
dF9lcXVhbHMoc2VydmVyLmNyZWRlbnRpYWxUeXBlLCAnb2F1dGgnKTsKLSAgfSwgYHdpdGggZW1w
dHkgdXJscyBhbmQgY3JlZGVudGlhbFR5cGUgb2F1dGggc2hvdWxkIHN1Y2NlZWRgKTsKKyAgICBh
c3NlcnRfdGhyb3dzKG5ldyBTeW50YXhFcnJvcigpLCAoKSA9PgorICAgICAgbWFrZVBjKHsgaWNl
U2VydmVyczogW3sKKyAgICAgICAgdXJsczogW10KKyAgICAgIH1dIH0pKTsKKyAgfSwgYHdpdGgg
ZW1wdHkgdXJscyBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3JgKTsKIAogICBjb25maWdfdGVzdCht
YWtlUGMgPT4gewogICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PgpAQCAt
NTA1LDUyICs0ODksNiBAQAogCiAgIH0sICd3aXRoIHN0dW4gc2VydmVyLCBjcmVkZW50aWFsVHlw
ZSBwYXNzd29yZCwgYW5kIFJUQ09BdXRoQ3JlZGVudGlhbCBjcmVkZW50aWFsIHNob3VsZCBzdWNj
ZWVkJyk7CiAKLSAgLy8gY3JlZGVudGlhbCB0eXBlIHZhbGlkYXRpb24gaXMgaWdub3JlZCB3aGVu
IHVybHMgaXMgZW1wdHkgYW5kIHRoZXJlIGlzIG5vIHNjaGVtZSBuYW1lCi0gIGNvbmZpZ190ZXN0
KG1ha2VQYyA9PiB7Ci0gICAgY29uc3QgcGMgPSBtYWtlUGMoeyBpY2VTZXJ2ZXJzOiBbewotICAg
ICAgdXJsczogW10sCi0gICAgICBjcmVkZW50aWFsVHlwZTogJ29hdXRoJywKLSAgICAgIHVzZXJu
YW1lOiAndXNlcicsCi0gICAgICBjcmVkZW50aWFsOiAnY3JlZCcKLSAgICB9XSB9KTsKLQotICAg
IGNvbnN0IHsgaWNlU2VydmVycyB9ID0gcGMuZ2V0Q29uZmlndXJhdGlvbigpOwotICAgIGFzc2Vy
dF9lcXVhbHMoaWNlU2VydmVycy5sZW5ndGgsIDEpOwotICAgIGNvbnN0IHNlcnZlciA9IGljZVNl
cnZlcnNbMF07Ci0KLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHNlcnZlci51cmxzLCBbXSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhzZXJ2ZXIuY3JlZGVudGlhbFR5cGUsICdvYXV0aCcpOwotICAgIGFz
c2VydF9lcXVhbHMoc2VydmVyLnVzZXJuYW1lLCAndXNlcicpOwotICAgIGFzc2VydF9lcXVhbHMo
c2VydmVyLmNyZWRlbnRpYWwsICdjcmVkJyk7Ci0KLSAgfSwgJ3dpdGggZW1wdHkgdXJscyBsaXN0
LCBjcmVkZW50aWFsVHlwZSBvYXV0aCwgYW5kIHN0cmluZyBjcmVkZW50aWFsIHNob3VsZCBzdWNj
ZWVkJyk7Ci0KLSAgLy8gY3JlZGVudGlhbCB0eXBlIHZhbGlkYXRpb24gaXMgaWdub3JlZCB3aGVu
IHVybHMgaXMgZW1wdHkgYW5kIHRoZXJlIGlzIG5vIHNjaGVtZSBuYW1lCi0gIGNvbmZpZ190ZXN0
KG1ha2VQYyA9PiB7Ci0gICAgY29uc3QgcGMgPSBtYWtlUGMoeyBpY2VTZXJ2ZXJzOiBbewotICAg
ICAgdXJsczogW10sCi0gICAgICBjcmVkZW50aWFsVHlwZTogJ3Bhc3N3b3JkJywKLSAgICAgIHVz
ZXJuYW1lOiAndXNlcicsCi0gICAgICBjcmVkZW50aWFsOiB7Ci0gICAgICAgIG1hY0tleTogJycs
Ci0gICAgICAgIGFjY2Vzc1Rva2VuOiAnJwotICAgICAgfQotICAgIH1dIH0pOwotCi0gICAgY29u
c3QgeyBpY2VTZXJ2ZXJzIH0gPSBwYy5nZXRDb25maWd1cmF0aW9uKCk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhpY2VTZXJ2ZXJzLmxlbmd0aCwgMSk7Ci0KLSAgICBjb25zdCBzZXJ2ZXIgPSBpY2VTZXJ2
ZXJzWzBdOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2VydmVyLnVybHMsIFtdKTsKLSAgICBh
c3NlcnRfZXF1YWxzKHNlcnZlci5jcmVkZW50aWFsVHlwZSwgJ3Bhc3N3b3JkJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhzZXJ2ZXIudXNlcm5hbWUsICd1c2VyJyk7Ci0KLSAgICBjb25zdCB7IGNyZWRl
bnRpYWwgfSA9IHNlcnZlcjsKLSAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwubWFjS2V5LCAn
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLmFjY2Vzc1Rva2VuLCAnJyk7Ci0KLSAg
fSwgJ3dpdGggZW1wdHkgdXJscyBsaXN0LCBjcmVkZW50aWFsVHlwZSBwYXNzd29yZCwgYW5kIFJU
Q09BdXRoQ3JlZGVudGlhbCBjcmVkZW50aWFsIHNob3VsZCBzdWNjZWVkJyk7Ci0KICAgLyoKICAg
ICBUZXN0ZWQKICAgICAgIDQuMy4yLiAgVG8gc2V0IGEgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
Q29uZmlndXJhdGlvbi1ydGNwTXV4UG9saWN5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0NvbmZpZ3VyYXRpb24tcnRj
cE11eFBvbGljeS1leHBlY3RlZC50eHQKaW5kZXggZTdlMDc4OTNjNDM5YjRlZjZkODRhODdmNmZm
OTA2MDhkYzExMDRkOC4uODYyMWQwZDI5NTMxMmI0YTlkMmMyZGEwN2FlYjllYWNlMjkyMmE3NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDQ29uZmlndXJhdGlvbi1ydGNwTXV4UG9saWN5LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENDb25m
aWd1cmF0aW9uLXJ0Y3BNdXhQb2xpY3ktZXhwZWN0ZWQudHh0CkBAIC0xNyw0ICsxNyw2IEBAIEZB
SUwgc2V0Q29uZmlndXJhdGlvbih7IHJ0Y3BNdXhQb2xpY3k6ICdyZXF1aXJlJyB9KSB3aXRoIGlu
aXRpYWwgcnRjcE11eFBvbGljeSBuCiAgICAgICBwYy5zZXRDb25maWd1cmF0aW9uKHsgcnRjcE11
eFBvbGljeTogJ3JlcXVpcmUnIH0pIiBkaWQgbm90IHRocm93CiBGQUlMIHNldENvbmZpZ3VyYXRp
b24oe30pIHdpdGggaW5pdGlhbCBydGNwTXV4UG9saWN5IG5lZ290aWF0ZSBzaG91bGQgdGhyb3cg
SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9Pgog
ICAgICAgcGMuc2V0Q29uZmlndXJhdGlvbih7fSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc2V0UmVt
b3RlRGVzY3JpcHRpb24gdGhyb3dzIEludmFsaWRBY2Nlc3NFcnJvciB3aGVuIGNhbGxlZCB3aXRo
IGFuIG9mZmVyIHdpdGhvdXQgcnRjcC1tdXggYW5kIHJ0Y3BNdXhQb2xpY3kgaXMgc2V0IHRvIHJl
cXVpcmUgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk9wZXJhdGlvbkVycm9yOiBGYWlsZWQgdG8gc2V0IHJlbW90ZSBvZmZlciBz
ZHA6IFRoZSBtPSBzZWN0aW9uOmF1ZGlvMSBpcyBpbnZhbGlkLiBSVENQLU1VWCBpcyBub3QgZW5h
YmxlZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiIgdGhhdCBpcyBub3QgYSBET01FeGNlcHRpb24gSW52
YWxpZEFjY2Vzc0Vycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gMCwgZXhwZWN0ZWQg
MTUKK0ZBSUwgc2V0UmVtb3RlRGVzY3JpcHRpb24gdGhyb3dzIEludmFsaWRBY2Nlc3NFcnJvciB3
aGVuIGNhbGxlZCB3aXRoIGFuIGFuc3dlciB3aXRob3V0IHJ0Y3AtbXV4IGFuZCBydGNwTXV4UG9s
aWN5IGlzIHNldCB0byByZXF1aXJlIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICJmdW5jdGlvbiAo
KSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJPcGVyYXRpb25FcnJvcjogRmFpbGVkIHRvIHNl
dCByZW1vdGUgYW5zd2VyIHNkcDogVGhlIG9yZGVyIG9mIG0tbGluZXMgaW4gYW5zd2VyIGRvZXNu
J3QgbWF0Y2ggb3JkZXIgaW4gb2ZmZXIuIFJlamVjdGluZyBhbnN3ZXIuIiB0aGF0IGlzIG5vdCBh
IERPTUV4Y2VwdGlvbiBJbnZhbGlkQWNjZXNzRXJyb3I6IHByb3BlcnR5ICJjb2RlIiBpcyBlcXVh
bCB0byAwLCBleHBlY3RlZCAxNQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENDb25maWd1cmF0aW9uLXJ0Y3BNdXhQb2xp
Y3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ0NvbmZpZ3VyYXRpb24tcnRjcE11eFBvbGljeS5odG1sCmluZGV4IDZiNjVhMTJmMDdm
ODAzZGE1OGVjMTY2MWJjY2M5NWZmZTFmYzBmYjEuLjFkOTlhYTI5ZDg1YTVkYWJkZGYyMWJjNGQ3
NThjNmNkZjk2ZmY5YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0NvbmZpZ3VyYXRpb24tcnRjcE11eFBvbGljeS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ0NvbmZpZ3VyYXRpb24tcnRjcE11eFBvbGljeS5odG1sCkBAIC0xNDAsNCArMTQwLDU2IEBA
CiAgICAgICBUZXN0ZWQgICAgMgogICAgICAgVG90YWwgICAgIDIKICAgICovCisgIGNvbnN0IEZJ
TkdFUlBSSU5UX1NIQTI1NiA9ICcwMDowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDow
MCcgKworICAgICAgJzowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDowMDow
MDowMDowMDowMDowMCc7CisgIGNvbnN0IElDRVVGUkFHID0gJ3NvbWV1ZnJhZyc7CisgIGNvbnN0
IElDRVBXRCA9ICdzb21lbG9uZ3B3ZHdpdGhlbm91Z2hyYW5kb21uZXNzJzsKKworICBwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgLy8gYXVkaW8tb25seSBTRFAgb2ZmZXIgd2l0aG91dCBC
VU5ETEUgYW5kIHJ0Y3AtbXV4LgorICAgIGNvbnN0IHNkcCA9ICd2PTBcclxuJyArCisgICAgICAg
ICdvPS0gMTY2ODU1MTc2NTE0NTIxOTY0IDIgSU4gSVA0IDEyNy4wLjAuMVxyXG4nICsKKyAgICAg
ICAgJ3M9LVxyXG4nICsKKyAgICAgICAgJ3Q9MCAwXHJcbicgKworICAgICAgICAnbT1hdWRpbyA5
IFVEUC9UTFMvUlRQL1NBVlBGIDExMVxyXG4nICsKKyAgICAgICAgJ2M9SU4gSVA0IDAuMC4wLjBc
clxuJyArCisgICAgICAgICdhPXJ0Y3A6OSBJTiBJUDQgMC4wLjAuMFxyXG4nICsKKyAgICAgICAg
J2E9aWNlLXVmcmFnOicgKyBJQ0VVRlJBRyArICdcclxuJyArCisgICAgICAgICdhPWljZS1wd2Q6
JyArIElDRVBXRCArICdcclxuJyArCisgICAgICAgICdhPWZpbmdlcnByaW50OnNoYS0yNTYgJyAr
IEZJTkdFUlBSSU5UX1NIQTI1NiArICdcclxuJyArCisgICAgICAgICdhPXNldHVwOmFjdHBhc3Nc
clxuJyArCisgICAgICAgICdhPW1pZDphdWRpbzFcclxuJyArCisgICAgICAgICdhPXNlbmRvbmx5
XHJcbicgKworICAgICAgICAnYT1ydGNwLXJzaXplXHJcbicgKworICAgICAgICAnYT1ydHBtYXA6
MTExIG9wdXMvNDgwMDAvMlxyXG4nOworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKHtydGNwTXV4UG9saWN5OiAncmVxdWlyZSd9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZEFj
Y2Vzc0Vycm9yJywgcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oe3R5cGU6ICdvZmZlcicsIHNkcH0p
KTsKKyAgfSwgJ3NldFJlbW90ZURlc2NyaXB0aW9uIHRocm93cyBJbnZhbGlkQWNjZXNzRXJyb3Ig
d2hlbiBjYWxsZWQgd2l0aCBhbiBvZmZlciB3aXRob3V0IHJ0Y3AtbXV4IGFuZCBydGNwTXV4UG9s
aWN5IGlzIHNldCB0byByZXF1aXJlJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIC8vIGF1ZGlvLW9ubHkgU0RQIGFuc3dlciB3aXRob3V0IEJVTkRMRSBhbmQgcnRjcC1tdXgu
CisgICAgLy8gQWxzbyBvbWl0dGluZyBhPW1pZCBpbiBvcmRlciB0byBhdm9pZCBwYXJzaW5nIGl0
IGZyb20gdGhlIG9mZmVyIGFzIHRoaXMgbmVlZHMgdG8gbWF0Y2guCisgICAgY29uc3Qgc2RwID0g
J3Y9MFxyXG4nICsKKyAgICAgICAgJ289LSAxNjY4NTUxNzY1MTQ1MjE5NjQgMiBJTiBJUDQgMTI3
LjAuMC4xXHJcbicgKworICAgICAgICAncz0tXHJcbicgKworICAgICAgICAndD0wIDBcclxuJyAr
CisgICAgICAgICdtPWF1ZGlvIDkgVURQL1RMUy9SVFAvU0FWUEYgMTExXHJcbicgKworICAgICAg
ICAnYz1JTiBJUDQgMC4wLjAuMFxyXG4nICsKKyAgICAgICAgJ2E9cnRjcDo5IElOIElQNCAwLjAu
MC4wXHJcbicgKworICAgICAgICAnYT1pY2UtdWZyYWc6JyArIElDRVVGUkFHICsgJ1xyXG4nICsK
KyAgICAgICAgJ2E9aWNlLXB3ZDonICsgSUNFUFdEICsgJ1xyXG4nICsKKyAgICAgICAgJ2E9Zmlu
Z2VycHJpbnQ6c2hhLTI1NiAnICsgRklOR0VSUFJJTlRfU0hBMjU2ICsgJ1xyXG4nICsKKyAgICAg
ICAgJ2E9c2V0dXA6YWN0aXZlXHJcbicgKworICAgICAgICAnYT1zZW5kb25seVxyXG4nICsKKyAg
ICAgICAgJ2E9cnRjcC1yc2l6ZVxyXG4nICsKKyAgICAgICAgJ2E9cnRwbWFwOjExMSBvcHVzLzQ4
MDAwLzJcclxuJzsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7cnRjcE11
eFBvbGljeTogJ3JlcXVpcmUnfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgp
KTsKKworICAgIGF3YWl0IHBjLmNyZWF0ZU9mZmVyKHtvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVl
fSkKKyAgICAgIC50aGVuKG9mZmVyID0+IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBwYy5z
ZXRSZW1vdGVEZXNjcmlwdGlvbih7dHlwZTogJ2Fuc3dlcicsIHNkcH0pKTsKKyAgfSwgJ3NldFJl
bW90ZURlc2NyaXB0aW9uIHRocm93cyBJbnZhbGlkQWNjZXNzRXJyb3Igd2hlbiBjYWxsZWQgd2l0
aCBhbiBhbnN3ZXIgd2l0aG91dCBydGNwLW11eCBhbmQgcnRjcE11eFBvbGljeSBpcyBzZXQgdG8g
cmVxdWlyZScpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENEVE1GU2VuZGVyLWhlbHBlci5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZT
ZW5kZXItaGVscGVyLmpzCmluZGV4IDcwZmM2OTE3MjI1MmIxMjZiNDkyZDNiYWUwMmYzYzQ0NGEy
YTc0MWUuLjg0Y2M3NzFkZGEyODNkYTgxYTA1NjhmZTU4YWQ1MmE3N2EyNjIzNDcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q0RUTUZTZW5kZXItaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZTZW5kZXItaGVscGVyLmpzCkBAIC0xMDksMTIg
KzEwOSwxNiBAQCBmdW5jdGlvbiB0ZXN0X3RvbmVfY2hhbmdlX2V2ZW50cyh0ZXN0RnVuYywgdG9u
ZUNoYW5nZXMsIGRlc2MpIHsKICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTsKICAgICAg
ICAgY29uc3QgZHVyYXRpb24gPSBub3cgLSBsYXN0RXZlbnRUaW1lOwogCi0gICAgICAgIGFzc2Vy
dF9hcHByb3hfZXF1YWxzKGR1cmF0aW9uLCBleHBlY3RlZER1cmF0aW9uLCAyNTAsCisgICAgICAg
IC8vIFdlIGNoZWNrIHRoYXQgdGhlIGRlbGF5IGlzIGF0IGxlYXN0IHRoZSBleHBlY3RlZCBvbmUs
IGJ1dAorICAgICAgICAvLyBzeXN0ZW0gbG9hZCBtYXkgY2F1c2UgcmFuZG9tIGRlbGF5LCBzbyB3
ZSBkbyBub3QgcHV0IGFueQorICAgICAgICAvLyByZWFsaXN0aWMgdXBwZXIgYm91bmQgb24gdGhl
IHRpbWluZyBvZiB0aGUgZXZlbnQuCisgICAgICAgIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShk
dXJhdGlvbiwgZXhwZWN0ZWREdXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkRHVyYXRpb24gKyA0MDAwLAogICAgICAgICAgIGBFeHBlY3QgdG9uZWNoYW5n
ZSBldmVudCBmb3IgIiR7dG9uZX0iIHRvIGJlIGZpcmVkIGFwcHJveGltYXRlbHkgYWZ0ZXIgJHtl
eHBlY3RlZER1cmF0aW9ufSBtaWxsaXNlY29uZHNgKTsKIAogICAgICAgICBsYXN0RXZlbnRUaW1l
ID0gbm93OwogCi0gICAgICAgIGlmKHRvbmVDaGFuZ2VzLmxlbmd0aCA9PT0gMCkgeworICAgICAg
ICBpZiAodG9uZUNoYW5nZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgLy8gV2FpdCBmb3Ig
c2FtZSBkdXJhdGlvbiBhcyBsYXN0IGV4cGVjdGVkIGR1cmF0aW9uICsgMTAwbXMKICAgICAgICAg
ICAvLyBiZWZvcmUgcGFzc2luZyB0ZXN0IGluIGNhc2UgdGhlcmUgYXJlIG5ldyB0b25lIGV2ZW50
cyBmaXJlZCwKICAgICAgICAgICAvLyBpbiB3aGljaCBjYXNlIHRoZSB0ZXN0IHNob3VsZCBmYWls
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDRFRNRlNlbmRlci1pbnNlcnREVE1GLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZT
ZW5kZXItaW5zZXJ0RFRNRi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzVkYzg0ZGU3YjVmYjFm
NzAyNTU4YjczMzk1ZmI3ZGY0M2RiZDg1NC4uZDI1OWI1MTQ5YmE2MGVmZWJiOTA3MTA2OTZkMmQ1
MjUwODM1ODZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDRFRNRlNlbmRlci1pbnNlcnREVE1GLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENEVE1GU2VuZGVyLWluc2VydERUTUYuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0yLDgg
KzIsOCBAQAogRkFJTCBpbnNlcnREVE1GKCkgc2hvdWxkIHN1Y2NlZWQgaWYgdG9uZXMgY29udGFp
bnMgdmFsaWQgRFRNRiBjaGFyYWN0ZXJzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSVENEVE1GU2VuZGVyIgogRkFJTCBpbnNlcnREVE1GKCkgc2hvdWxkIHRocm93IEludmFsaWRD
aGFyYWN0ZXJFcnJvciBpZiB0b25lcyBjb250YWlucyBpbnZhbGlkIERUTUYgY2hhcmFjdGVycyBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUlRDRFRNRlNlbmRlciIKIEZBSUwgaW5z
ZXJ0RFRNRigpIHNob3VsZCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciBpZiB0cmFuc2NlaXZlciBp
cyBzdG9wcGVkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBkdG1mU2VuZGVyLmluc2Vy
dERUTUYoJycpIiB0aHJldyBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ2R0bWZTZW5kZXIuaW5zZXJ0RFRNRicpIiB0aGF0IGlzIG5vdCBh
IERPTUV4Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVxdWFs
IHRvIHVuZGVmaW5lZCwgZXhwZWN0ZWQgMTEKLUZBSUwgaW5zZXJ0RFRNRigpIHNob3VsZCB0aHJv
dyBJbnZhbGlkU3RhdGVFcnJvciBpZiB0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIHJl
Y3Zvbmx5IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJpbmFjdGl2ZSIgYnV0IGdv
dCAob2JqZWN0KSBudWxsCi1GQUlMIGluc2VydERUTUYoKSBzaG91bGQgdGhyb3cgSW52YWxpZFN0
YXRlRXJyb3IgaWYgdHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiBpcyBpbmFjdGl2ZSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiaW5hY3RpdmUiIGJ1dCBnb3QgKG9iamVjdCkg
bnVsbAorRkFJTCBpbnNlcnREVE1GKCkgc2hvdWxkIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGlm
IHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24gaXMgcmVjdm9ubHkgYXNzZXJ0X3Rocm93czog
ZnVuY3Rpb24gIigpID0+IGR0bWZTZW5kZXIuaW5zZXJ0RFRNRignJykiIHRocmV3IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZHRtZlNl
bmRlci5pbnNlcnREVE1GJykiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRTdGF0
ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gdW5kZWZpbmVkLCBleHBlY3RlZCAx
MQorRkFJTCBpbnNlcnREVE1GKCkgc2hvdWxkIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGlmIHRy
YW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24gaXMgaW5hY3RpdmUgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IGR0bWZTZW5kZXIuaW5zZXJ0RFRNRignJykiIHRocmV3IG9iamVjdCAiVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZHRtZlNlbmRl
ci5pbnNlcnREVE1GJykiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRTdGF0ZUVy
cm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gdW5kZWZpbmVkLCBleHBlY3RlZCAxMQog
RkFJTCBpbnNlcnREVE1GKCkgc2hvdWxkIHNldCB0b25lQnVmZmVyIHRvIHByb3ZpZGVkIHRvbmVz
IG5vcm1hbGl6ZWQsIHdpdGggb2xkIHRvbmVzIG92ZXJyaWRkZW4gcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFJUQ0RUTUZTZW5kZXIiCiBGQUlMIGluc2VydERUTUYoKSBhZnRlciBy
ZW1vdmUgYW5kIGNsb3NlIHNob3VsZCByZWplY3QgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+CiAgICAgICAgICAgICAgICAgICAgICAgZHRtZlNlbmRlci5pbnNlcnREVE1GKCcxMjMnKSIg
dGhyZXcgb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdkdG1mU2VuZGVyLmluc2VydERUTUYnKSIgdGhhdCBpcyBub3QgYSBET01FeGNlcHRp
b24gSW52YWxpZFN0YXRlRXJyb3I6IHByb3BlcnR5ICJjb2RlIiBpcyBlcXVhbCB0byB1bmRlZmlu
ZWQsIGV4cGVjdGVkIDExCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENEVE1GU2VuZGVyLWluc2VydERUTUYuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q0RUTUZTZW5kZXItaW5zZXJ0RFRNRi5odHRwcy5odG1sCmluZGV4IDM4Mzk3N2M1MmUxN2YzZTg0
OTU4ZDYyYjljOWMyMGE1NThjN2UwMDkuLjhhNmQ2NDU2ZjNhOWUwMDBhODk4OTA2Y2NjZGNjYzc2
MTAyYzRlNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZTZW5kZXItaW5zZXJ0RFRNRi5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RU
TUZTZW5kZXItaW5zZXJ0RFRNRi5odHRwcy5odG1sCkBAIC0xMDcsMzggKzEwNyw0MiBAQAogICAg
IDcuMi4gIGluc2VydERUTUYKICAgICAgIDQuICBJZiB0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0
aW9uIGlzIHJlY3Zvbmx5IG9yIGluYWN0aXZlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvci4K
ICAgICovCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOwotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J2F1ZGlvJywgewotICAgICAgZGlyZWN0aW9uOiAncmVjdm9ubHknCi0gICAgfSk7CisgIHByb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjYWxsZXIgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlci5jbG9zZSgpKTsKKyAgICBj
b25zdCBjYWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBjb25zdCB0cmFuc2NlaXZlciA9CisgICAgICAg
IGNhbGxlci5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7IGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyB9
KTsKICAgICBjb25zdCBkdG1mU2VuZGVyID0gdHJhbnNjZWl2ZXIuc2VuZGVyLmR0bWY7CiAKLSAg
ICByZXR1cm4gcGMuY3JlYXRlT2ZmZXIoKQotICAgIC50aGVuKG9mZmVyID0+Ci0gICAgICBwYy5z
ZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKQotICAgICAgLnRoZW4oKCkgPT4gZ2VuZXJhdGVBbnN3
ZXIob2ZmZXIpKSkKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRyYW5z
Y2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sICdpbmFjdGl2ZScpOwotICAgICAgYXNzZXJ0X3Rocm93
cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBkdG1mU2VuZGVyLmluc2VydERUTUYoJycpKTsK
LSAgICB9KTsKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IGNhbGxlci5jcmVhdGVPZmZlcigpOwor
ICAgIGF3YWl0IGNhbGxlci5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2FpdCBj
YWxsZWUuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGNvbnN0IHN0cmVhbSA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOwor
ICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sg
PT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFja3Mo
KTsKKyAgICBjYWxsZWUuYWRkVHJhY2sodHJhY2spOworICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0
IGNhbGxlZS5jcmVhdGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBjYWxsZWUuc2V0TG9jYWxEZXNjcmlw
dGlvbihhbnN3ZXIpOworICAgIGF3YWl0IGNhbGxlci5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3
ZXIpOworICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgJ3Jl
Y3Zvbmx5Jyk7CisgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBk
dG1mU2VuZGVyLmluc2VydERUTUYoJycpKTsKICAgfSwgJ2luc2VydERUTUYoKSBzaG91bGQgdGhy
b3cgSW52YWxpZFN0YXRlRXJyb3IgaWYgdHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiBpcyBy
ZWN2b25seScpOwogCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29u
c3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7Ci0gICAgICBkaXJl
Y3Rpb246ICdpbmFjdGl2ZScKLSAgICB9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNs
b3NlKCkpOworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0KKyAgICAgICAgcGMuYWRkVHJhbnNjZWl2
ZXIoJ2F1ZGlvJywgeyBkaXJlY3Rpb246ICdpbmFjdGl2ZScgfSk7CiAgICAgY29uc3QgZHRtZlNl
bmRlciA9IHRyYW5zY2VpdmVyLnNlbmRlci5kdG1mOwogCi0gICAgcmV0dXJuIHBjLmNyZWF0ZU9m
ZmVyKCkKLSAgICAudGhlbihvZmZlciA9PgotICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihv
ZmZlcikKLSAgICAgIC50aGVuKCgpID0+IGdlbmVyYXRlQW5zd2VyKG9mZmVyKSkpCi0gICAgLnRo
ZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0
aW9uLCAnaW5hY3RpdmUnKTsKLSAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9y
JywgKCkgPT4gZHRtZlNlbmRlci5pbnNlcnREVE1GKCcnKSk7Ci0gICAgfSk7CisgICAgY29uc3Qg
b2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVz
Y3JpcHRpb24ob2ZmZXIpOworICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IGdlbmVyYXRlQW5zd2Vy
KG9mZmVyKTsKKyAgICBhd2FpdCBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworICAg
IGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgJ2luYWN0aXZlJyk7
CisgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBkdG1mU2VuZGVy
Lmluc2VydERUTUYoJycpKTsKICAgfSwgJ2luc2VydERUTUYoKSBzaG91bGQgdGhyb3cgSW52YWxp
ZFN0YXRlRXJyb3IgaWYgdHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiBpcyBpbmFjdGl2ZScp
OwogCiAgIC8qCkBAIC0xNDgsNyArMTUyLDcgQEAKIAogICAgICAgNy4gIFNldCB0aGUgb2JqZWN0
J3MgdG9uZUJ1ZmZlciBhdHRyaWJ1dGUgdG8gdG9uZXMuCiAgICAqLwotICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgcmV0dXJuIGNyZWF0ZUR0bWZTZW5k
ZXIoKQogICAgIC50aGVuKGR0bWZTZW5kZXIgPT4gewogICAgICAgZHRtZlNlbmRlci5pbnNlcnRE
VE1GKCcxMjMnKTsKQEAgLTE2Niw2ICsxNzAsNyBAQAogICAgIGxldCBkdG1mU2VuZGVyOwogICAg
IGxldCBzZW5kZXI7CiAgICAgbGV0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICByZXR1cm4gZ2V0VHJhY2tGcm9t
VXNlck1lZGlhKCdhdWRpbycpCiAgICAgICAudGhlbigoW3RyYWNrLCBtZWRpYVN0cmVhbV0pID0+
IHsKICAgICAgICAgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2ssIG1lZGlhU3RyZWFtKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ0RUTUZTZW5kZXItb250b25lY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZTZW5k
ZXItb250b25lY2hhbmdlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBlOWNlMjg2YzU5Y2MyMjUx
NTdkNTMyMDRjYzIyNGI1OWJjYzk5OTM3Li43NzNhNWNjNDc0OWI2NzczYTdmN2M2MTkwNTAwY2Vi
ZDI2NjhkODEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENEVE1GU2VuZGVyLW9udG9uZWNoYW5nZS5odHRwcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDRFRNRlNlbmRlci1vbnRvbmVjaGFuZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0x
MCw0ICsxMCw2IEBAIEZBSUwgQ2FsbGluZyBpbnNlcnREVE1GKCkgaW4gdGhlIG1pZGRsZSBvZiB0
b25lY2hhbmdlIGV2ZW50cyBzaG91bGQgY2F1c2UgZnV0dXJlCiBGQUlMIENhbGxpbmcgaW5zZXJ0
RFRNRigpIG11bHRpcGxlIHRpbWVzIGluIHRoZSBtaWRkbGUgb2YgdG9uZWNoYW5nZSBldmVudHMg
c2hvdWxkIGNhdXNlIGZ1dHVyZSB0b25lY2hhbmdlcyB0byBiZSB1cGRhdGVkIHRoZSBsYXN0IHBy
b3ZpZGVkIHRvbmVzIGFzc2VydF91bnJlYWNoZWQ6IFVuZXhwZWN0ZWQgcHJvbWlzZSByZWplY3Rp
b246IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSVENEVE1GU2VuZGVyIFJl
YWNoZWQgdW5yZWFjaGFibGUgY29kZQogRkFJTCBDYWxsaW5nIGluc2VydERUTUYoJycpIGluIHRo
ZSBtaWRkbGUgb2YgdG9uZWNoYW5nZSBldmVudHMgc2hvdWxkIHN0b3AgZnV0dXJlIHRvbmVjaGFu
Z2UgZXZlbnRzIGZyb20gZmlyaW5nIGFzc2VydF91bnJlYWNoZWQ6IFVuZXhwZWN0ZWQgcHJvbWlz
ZSByZWplY3Rpb246IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSVENEVE1G
U2VuZGVyIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogRkFJTCBTZXR0aW5nIHRyYW5zY2VpdmVy
LmN1cnJlbnREaXJlY3Rpb24gdG8gcmVjdm9ubHkgaW4gdGhlIG1pZGRsZSBvZiB0b25lY2hhbmdl
IGV2ZW50cyBzaG91bGQgc3RvcCBmdXR1cmUgdG9uZWNoYW5nZSBldmVudHMgZnJvbSBmaXJpbmcg
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2R0bWZTZW5kZXIuYWRkRXZl
bnRMaXN0ZW5lcicpCitGQUlMIFRvbmUgY2hhbmdlIGV2ZW50IGNvbnN0cnVjdG9yIHdvcmtzIENh
bid0IGZpbmQgdmFyaWFibGU6IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQKK0ZBSUwgVG9uZSBjaGFu
Z2UgZXZlbnQgd2l0aCB1bmV4cGVjdGVkIG5hbWUgc2hvdWxkIG5vdCBjcmFzaCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZTZW5kZXIt
b250b25lY2hhbmdlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENEVE1GU2VuZGVyLW9udG9uZWNoYW5nZS5odHRwcy5odG1s
CmluZGV4IDlmYTkwMGM3MzY4ZDM5OTcxNTJiYWUxMTI3ZTE4MGZkZDdiMWVkNmQuLmZmNmQxMTdi
M2M3NWRkZTcxY2M1MmI0MDg3ZjIyMzQ3N2FkMDhiYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RUTUZTZW5kZXItb250
b25lY2hhbmdlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDRFRNRlNlbmRlci1vbnRvbmVjaGFuZ2UuaHR0cHMuaHRt
bApAQCAtMTYxLDEzICsxNjEsNyBAQAogICB0ZXN0X3RvbmVfY2hhbmdlX2V2ZW50cygodCwgZHRt
ZlNlbmRlcikgPT4gewogICAgIGR0bWZTZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcigndG9uZWNoYW5n
ZScsIGV2ID0+IHsKICAgICAgIGlmKGV2LnRvbmUgPT09ICdCJykgewotICAgICAgICAvLyBTZXQg
YSB0aW1lb3V0IHRvIG1ha2Ugc3VyZSB0aGUgdG9uZUJ1ZmZlcgotICAgICAgICAvLyBpcyBjaGFu
Z2VkIGFmdGVyIHRoZSB0b25lY2hhbmdlIGV2ZW50IGxpc3RlbmVyCi0gICAgICAgIC8vIGJ5IHRl
c3RfdG9uZV9jaGFuZ2VfZXZlbnRzIGlzIGNhbGxlZC4KLSAgICAgICAgLy8gVGhpcyBpcyB0byBj
b3JyZWN0bHkgdGVzdCB0aGUgZXhwZWN0ZWQgdG9uZUJ1ZmZlci4KLSAgICAgICAgdC5zdGVwX3Rp
bWVvdXQoKCkgPT4gewotICAgICAgICAgIGR0bWZTZW5kZXIuaW5zZXJ0RFRNRignMTInLCAxMDAs
IDcwKTsKLSAgICAgICAgfSwgMTApOworICAgICAgICBkdG1mU2VuZGVyLmluc2VydERUTUYoJzEy
JywgMTAwLCA3MCk7CiAgICAgICB9CiAgICAgfSk7CiAKQEAgLTE4OSwxMCArMTgzLDggQEAKICAg
dGVzdF90b25lX2NoYW5nZV9ldmVudHMoKHQsIGR0bWZTZW5kZXIpID0+IHsKICAgICBkdG1mU2Vu
ZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvbmVjaGFuZ2UnLCBldiA9PiB7CiAgICAgICBpZihldi50
b25lID09PSAnQicpIHsKLSAgICAgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gewotICAgICAgICAg
IGR0bWZTZW5kZXIuaW5zZXJ0RFRNRignMTInLCAxMDAsIDcwKTsKLSAgICAgICAgICBkdG1mU2Vu
ZGVyLmluc2VydERUTUYoJzM0JywgMTAwLCA3MCk7Ci0gICAgICAgIH0sIDEwKTsKKyAgICAgICAg
ZHRtZlNlbmRlci5pbnNlcnREVE1GKCcxMicsIDEwMCwgNzApOworICAgICAgICBkdG1mU2VuZGVy
Lmluc2VydERUTUYoJzM0JywgMTAwLCA3MCk7CiAgICAgICB9CiAgICAgfSk7CiAKQEAgLTIxMyw5
ICsyMDUsNyBAQAogICB0ZXN0X3RvbmVfY2hhbmdlX2V2ZW50cygodCwgZHRtZlNlbmRlcikgPT4g
ewogICAgIGR0bWZTZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcigndG9uZWNoYW5nZScsIGV2ID0+IHsK
ICAgICAgIGlmKGV2LnRvbmUgPT09ICdCJykgewotICAgICAgICB0LnN0ZXBfdGltZW91dCgoKSA9
PiB7Ci0gICAgICAgICAgZHRtZlNlbmRlci5pbnNlcnREVE1GKCcnKTsKLSAgICAgICAgfSwgMTAp
OworICAgICAgICBkdG1mU2VuZGVyLmluc2VydERUTUYoJycpOwogICAgICAgfQogICAgIH0pOwog
CkBAIC0yMzIsNiArMjIyLDcgQEAKICAgICovCiAgIGFzeW5jX3Rlc3QodCA9PiB7CiAgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J2F1ZGlvJywgeyBkaXJlY3Rpb246ICdzZW5kcmVjdicgfSk7CiAgICAgY29uc3QgZHRtZlNlbmRl
ciA9IHRyYW5zY2VpdmVyLnNlbmRlci5kdG1mOwogCkBAIC0yNzksNyArMjcwLDE3IEBACiAKICAg
ICBkdG1mU2VuZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvbmVjaGFuZ2UnLCBvblRvbmVDaGFuZ2Up
OwogICAgIGR0bWZTZW5kZXIuaW5zZXJ0RFRNRignQUJDRCcsIDEwMCwgNzApOwotCiAgIH0sIGBT
ZXR0aW5nIHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24gdG8gcmVjdm9ubHkgaW4gdGhlIG1p
ZGRsZSBvZiB0b25lY2hhbmdlIGV2ZW50cyBzaG91bGQgc3RvcCBmdXR1cmUgdG9uZWNoYW5nZSBl
dmVudHMgZnJvbSBmaXJpbmdgKTsKIAorICAvKiBTZWN0aW9uIDcuMyAtIFRvbmUgY2hhbmdlIGV2
ZW50ICovCisgIHRlc3QodCA9PiB7CisgICAgbGV0IGV2ID0gbmV3IFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQoJ3RvbmVjaGFuZ2UnLCB7J3RvbmUnOiAnMSd9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGV2
LnR5cGUsICd0b25lY2hhbmdlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhldi50b25lLCAnMScpOwor
ICB9LCAnVG9uZSBjaGFuZ2UgZXZlbnQgY29uc3RydWN0b3Igd29ya3MnKTsKKworICB0ZXN0KHQg
PT4geworICAgIGxldCBldiA9IG5ldyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KCd3b3JuZ25hbWUn
LCB7fSk7CisgIH0sICdUb25lIGNoYW5nZSBldmVudCB3aXRoIHVuZXhwZWN0ZWQgbmFtZSBzaG91
bGQgbm90IGNyYXNoJyk7CisKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDRGF0YUNoYW5uZWwtaWQuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q0RhdGFDaGFubmVsLWlkLmh0bWwKaW5kZXggNzEyOGRhOGJjMDRhYmU3YTFlZDYzMDRiMDE3MTNj
YTY3YzQ4ODRiZi4uMThmNzBkOGNlOTY5ZDJmNGY1MzZlNjkwOGFlOTI3NGMzYWIyOGZlZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDRGF0YUNoYW5uZWwtaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbC1pZC5odG1sCkBAIC0xMSw2
ICsxMSw3IEBACiAvLyBoYXZlIElEcyBzZXQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBpbiBydGN3
ZWItZGF0YS1jaGFubmVsLgogcHJvbWlzZV90ZXN0KHRlc3QgPT4gewogICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbjsKKyAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgp
KTsKICAgY29uc3QgY2hhbm5lbCA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCcnKTsKICAgcmV0dXJu
IHBjLmNyZWF0ZU9mZmVyKCkKICAgLnRoZW4ob2ZmZXIgPT4gcGMuc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcikpCkBAIC0zNSw2ICszNiw3IEBAIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKIAogcHJv
bWlzZV90ZXN0KHRlc3QgPT4gewogICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbjsK
KyAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgY29uc3QgY2hhbm5lbCA9
IHBjLmNyZWF0ZURhdGFDaGFubmVsKCcnKTsKICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKICAg
LnRoZW4ob2ZmZXIgPT4gcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENE
dGxzVHJhbnNwb3J0LWdldFJlbW90ZUNlcnRpZmljYXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDRHRsc1RyYW5zcG9ydC1nZXRS
ZW1vdGVDZXJ0aWZpY2F0ZXMuaHRtbAppbmRleCA4MGQxYmZhZTQ2ZDE4Mjg1YTUxMTQzMDYxNjZh
NjU3NmM4NTM0MzQxLi4wNjE0MzY0ZTk3NTZlYzkzM2NhODQyYjk3YjFkYmQzMTQ4OWIzNWVlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENEdGxzVHJhbnNwb3J0LWdldFJlbW90ZUNlcnRpZmljYXRlcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0R0bHNU
cmFuc3BvcnQtZ2V0UmVtb3RlQ2VydGlmaWNhdGVzLmh0bWwKQEAgLTM4LDcgKzM4LDkgQEAKICAg
ICovCiAgIGFzeW5jX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25u
ZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAgY29u
c3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiBwYzIuY2xvc2UoKSk7CiAKICAgICBwYzEuY3JlYXRlRGF0YUNoYW5uZWwoJ3Rlc3QnKTsKICAg
ICBleGNoYW5nZUljZUNhbmRpZGF0ZXMocGMxLCBwYzIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDSWNlVHJhbnNwb3J0
LWV4dGVuc2lvbi1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENJY2VUcmFuc3BvcnQtZXh0ZW5zaW9uLWhlbHBlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NTllYzU5YjhkZjI4NDdlN2UyYTNjNTEzZDNkNmZkMDEwMjdmMTZkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDSWNlVHJhbnNwb3J0LWV4dGVuc2lvbi1oZWxwZXIuanMKQEAgLTAsMCArMSw0MiBA
QAorJ3VzZSBzdHJpY3QnOworCisvLyBDb25zdHJ1Y3QgYW4gUlRDSWNlVHJhbnNwb3J0IGluc3Rh
bmNlLiBUaGUgaW5zdGFuY2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGJlCisvLyBjbGVhbmVkIHVwIHdo
ZW4gdGhlIHRlc3QgZmluaXNoZXMuCitmdW5jdGlvbiBtYWtlSWNlVHJhbnNwb3J0KHQpIHsKKyAg
Y29uc3QgaWNlVHJhbnNwb3J0ID0gbmV3IFJUQ0ljZVRyYW5zcG9ydCgpOworICB0LmFkZF9jbGVh
bnVwKCgpID0+IGljZVRyYW5zcG9ydC5zdG9wKCkpOworICByZXR1cm4gaWNlVHJhbnNwb3J0Owor
fQorCisvLyBDb25zdHJ1Y3QgdHdvIFJUQ0ljZVRyYW5zcG9ydCBpbnN0YW5jZXMsIGNvbmZpZ3Vy
ZSB0aGVtIHRvIGV4Y2hhbmdlCisvLyBjYW5kaWRhdGVzLCB0aGVuIGdhdGhlcigpIHRoZW0uCisv
LyBSZXR1cm5zIGEgMi1saXN0OiBbIFJUQ0ljZVRyYW5zcG9ydCwgUlRDSWNlVHJhbnNwb3J0IF0K
K2Z1bmN0aW9uIG1ha2VBbmRHYXRoZXJUd29JY2VUcmFuc3BvcnRzKHQpIHsKKyAgY29uc3QgbG9j
YWxUcmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOworICBjb25zdCByZW1vdGVUcmFuc3Bv
cnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOworICBsb2NhbFRyYW5zcG9ydC5vbmljZWNhbmRpZGF0
ZSA9IGUgPT4geworICAgIGlmIChlLmNhbmRpZGF0ZSkgeworICAgICAgcmVtb3RlVHJhbnNwb3J0
LmFkZFJlbW90ZUNhbmRpZGF0ZShlLmNhbmRpZGF0ZSk7CisgICAgfQorICB9OworICByZW1vdGVU
cmFuc3BvcnQub25pY2VjYW5kaWRhdGUgPSBlID0+IHsKKyAgICBpZiAoZS5jYW5kaWRhdGUpIHsK
KyAgICAgIGxvY2FsVHJhbnNwb3J0LmFkZFJlbW90ZUNhbmRpZGF0ZShlLmNhbmRpZGF0ZSk7Cisg
ICAgfQorICB9OworICBsb2NhbFRyYW5zcG9ydC5nYXRoZXIoe30pOworICByZW1vdGVUcmFuc3Bv
cnQuZ2F0aGVyKHt9KTsKKyAgcmV0dXJuIFsgbG9jYWxUcmFuc3BvcnQsIHJlbW90ZVRyYW5zcG9y
dCBdOworfQorCisvLyBDb25zdHJ1Y3QgdHdvIFJUQ0ljZVRyYW5zcG9ydCBpbnN0YW5jZXMsIGNv
bmZpZ3VyZSB0aGVtIHRvIGV4Y2hhbmdlCisvLyBjYW5kaWRhdGVzIGFuZCBwYXJhbWV0ZXJzLCB0
aGVuIGdhdGhlcigpIGFuZCBzdGFydCgpIHRoZW0uCisvLyBSZXR1cm5zIGEgMi1saXN0OgorLy8g
ICAgIFsgY29udHJvbGxpbmcgUlRDSWNlVHJhbnNwb3J0LAorLy8gICAgICAgY29udHJvbGxlZCBS
VENJY2VUcmFuc3BvcnQgXQorZnVuY3Rpb24gbWFrZUdhdGhlckFuZFN0YXJ0VHdvSWNlVHJhbnNw
b3J0cyh0KSB7CisgIGNvbnN0IFsgbG9jYWxUcmFuc3BvcnQsIHJlbW90ZVRyYW5zcG9ydCBdID0g
bWFrZUFuZEdhdGhlclR3b0ljZVRyYW5zcG9ydHModCk7CisgIGxvY2FsVHJhbnNwb3J0LnN0YXJ0
KHJlbW90ZVRyYW5zcG9ydC5nZXRMb2NhbFBhcmFtZXRlcnMoKSwgJ2NvbnRyb2xsaW5nJyk7Cisg
IHJlbW90ZVRyYW5zcG9ydC5zdGFydChsb2NhbFRyYW5zcG9ydC5nZXRMb2NhbFBhcmFtZXRlcnMo
KSwgJ2NvbnRyb2xsZWQnKTsKKyAgcmV0dXJuIFsgbG9jYWxUcmFuc3BvcnQsIHJlbW90ZVRyYW5z
cG9ydCBdOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDSWNlVHJhbnNwb3J0LWV4dGVuc2lvbi5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENJY2VUcmFuc3BvcnQtZXh0ZW5zaW9uLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YzMwZjhhMDQ3MmY3ZjRlY2RkZTFkNzcwOGNiOTk4MDI2OGZhYmU5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDSWNlVHJhbnNwb3J0LWV4dGVuc2lvbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE3ODogVHlwZUVycm9yOiBUeXBlIGVycm9yCisK
K0hhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVHlwZUVycm9yOiBUeXBlIGVycm9yCisK
K0ZBSUwgUlRDSWNlVHJhbnNwb3J0IGNvbnN0cnVjdG9yIGRvZXMgbm90IHRocm93IGZ1bmN0aW9u
IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCkn
KQorRkFJTCBSVENJY2VUcmFuc3BvcnQgaW5pdGlhbCBwcm9wZXJ0aWVzIGFyZSBzZXQgZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQo
KScpCitGQUlMIGdhdGhlcigpIHdpdGggeyBpY2VTZXJ2ZXJzOiBudWxsIH0gc2hvdWxkIHRocm93
IFR5cGVFcnJvciBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3
IFJUQ0ljZVRyYW5zcG9ydCgpJykKK0ZBSUwgZ2F0aGVyKCkgd2l0aCB7IGljZVNlcnZlcnM6IHVu
ZGVmaW5lZCB9IHNob3VsZCBzdWNjZWVkIGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKQorRkFJTCBnYXRoZXIoKSB3aXRoIG9u
ZSB0dXJucyBzZXJ2ZXIsIG9uZSB0dXJuIHNlcnZlciwgdXNlcm5hbWUsIGNyZWRlbnRpYWwgc2hv
dWxkIHN1Y2NlZWQgZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25l
dyBSVENJY2VUcmFuc3BvcnQoKScpCitGQUlMIGdhdGhlcigpIHdpdGggMiBzdHVuIHNlcnZlcnMg
c2hvdWxkIHN1Y2NlZWQgZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J25ldyBSVENJY2VUcmFuc3BvcnQoKScpCitGQUlMIGdhdGhlcigpIHRocm93cyBpZiBjbG9zZWQg
ZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFu
c3BvcnQoKScpCitGQUlMIGdhdGhlcigpIHRyYW5zaXRpb25zIGdhdGhlcmluZ1N0YXRlIHRvICdn
YXRoZXJpbmcnIGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcg
UlRDSWNlVHJhbnNwb3J0KCknKQorRkFJTCBnYXRoZXIoKSB0aHJvd3MgaWYgY2FsbGVkIHR3aWNl
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRDSWNlVHJh
bnNwb3J0KCknKQorRkFJTCBldmVudHVhbGx5IHRyYW5zaXRpb24gZ2F0aGVyaW5nU3RhdGUgdG8g
J2NvbXBsZXRlJyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgb25pY2VjYW5kaWRhdGUgZmlyZXMg
d2l0aCBudWxsIGNhbmRpZGF0ZSBiZWZvcmUgZ2F0aGVyaW5nU3RhdGUgdHJhbnNpdGlvbnMgdG8g
J2NvbXBsZXRlJyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgZ2F0aGVyKCkgcmV0dXJucyBhdCBs
ZWFzdCBvbmUgaG9zdCBjYW5kaWRhdGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlMIGdhdGhlcigp
IHJldHVybnMgbm8gY2FuZGlkYXRlcyB3aXRoIHsgZ2F0aGVyUG9saWN5OiAncmVsYXknfSBhbmQg
bm8gdHVybiBzZXJ2ZXJzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJTCBzdGFydCgpIHRocm93cyBp
ZiBjbG9zZWQgZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBS
VENJY2VUcmFuc3BvcnQoKScpCitGQUlMIHN0YXJ0KCkgdGhyb3dzIGlmIHVzZXJuYW1lRnJhZ21l
bnQgb3IgcGFzc3dvcmQgbm90IHNldCBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykKK0ZBSUwgc3RhcnQoKSBkb2VzIG5vdCB0
cmFuc2l0aW9uIHN0YXRlIHRvICdjaGVja2luZycgaWYgbm8gcmVtb3RlIGNhbmRpZGF0ZXMgYWRk
ZWQgZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VU
cmFuc3BvcnQoKScpCitGQUlMIHN0YXJ0KCkgd2l0aCBkZWZhdWx0IHJvbGUgc2V0cyByb2xlIGF0
dHJpYnV0ZSB0byAnY29udHJvbGxlZCcgZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpCitGQUlMIHN0YXJ0KCkgc2V0cyByb2xl
IGF0dHJpYnV0ZSB0byAnY29udHJvbGxpbmcnIGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9y
IChldmFsdWF0aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENJY2VUcmFu
c3BvcnQtZXh0ZW5zaW9uLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENJY2VUcmFuc3BvcnQtZXh0ZW5zaW9uLmh0dHBzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzgwM2JkZTliM2FhNjFmNmFjNTAwZDYyYzhhM2FlZDc5YjFhMTQxMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ0ljZVRyYW5zcG9ydC1leHRlbnNpb24uaHR0cHMuaHRtbApAQCAtMCww
ICsxLDMwMiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxl
PlJUQ0ljZVRyYW5zcG9ydC1leHRlbnNpb25zLmh0dHBzLmh0bWw8L3RpdGxlPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJU
Q0ljZVRyYW5zcG9ydC1leHRlbnNpb24taGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cisn
dXNlIHN0cmljdCc7CisKKy8vIFRoZXNlIHRlc3RzIGFyZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5n
IGV4dGVuc2lvbiBzcGVjaWZpY2F0aW9uOgorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0
Yy1pY2UvCisKKy8vIFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZy
b20KKy8vIFJUQ0ljZVRyYW5zcG9ydC1leHRlbnNpb24taGVscGVyLmpzOgorLy8gICBtYWtlSWNl
VHJhbnNwb3J0CisvLyAgIG1ha2VHYXRoZXJBbmRTdGFydFR3b0ljZVRyYW5zcG9ydHMKKwordGVz
dCgoKSA9PiB7CisgIGNvbnN0IGljZVRyYW5zcG9ydCA9IG5ldyBSVENJY2VUcmFuc3BvcnQoKTsK
K30sICdSVENJY2VUcmFuc3BvcnQgY29uc3RydWN0b3IgZG9lcyBub3QgdGhyb3cnKTsKKwordGVz
dCgoKSA9PiB7CisgIGNvbnN0IGljZVRyYW5zcG9ydCA9IG5ldyBSVENJY2VUcmFuc3BvcnQoKTsK
KyAgYXNzZXJ0X2VxdWFscyhpY2VUcmFuc3BvcnQucm9sZSwgbnVsbCwgJ0V4cGVjdCByb2xlIHRv
IGJlIG51bGwnKTsKKyAgYXNzZXJ0X2VxdWFscyhpY2VUcmFuc3BvcnQuc3RhdGUsICduZXcnLCBg
RXhwZWN0IHN0YXRlIHRvIGJlICduZXcnYCk7CisgIGFzc2VydF9lcXVhbHMoaWNlVHJhbnNwb3J0
LmdhdGhlcmluZ1N0YXRlLCAnbmV3JywKKyAgICBgRXhwZWN0IGdhdGhlcmluZ1N0YXRlIHRvIGJl
ICduZXcnYCk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMoaWNlVHJhbnNwb3J0LmdldExvY2FsQ2Fu
ZGlkYXRlcygpLCBbXSwKKyAgICAnRXhwZWN0IG5vIGxvY2FsIGNhbmRpZGF0ZXMnKTsKKyAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhpY2VUcmFuc3BvcnQuZ2V0UmVtb3RlQ2FuZGlkYXRlcygpLCBbXSwK
KyAgICAnRXhwZWN0IG5vIHJlbW90ZSBjYW5kaWRhdGVzJyk7CisgIGFzc2VydF9lcXVhbHMoaWNl
VHJhbnNwb3J0LmdldFNlbGVjdGVkQ2FuZGlkYXRlUGFpcigpLCBudWxsLAorICAgICdFeHBlY3Qg
bm8gc2VsZWN0ZWQgY2FuZGlkYXRlIHBhaXInKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMoaWNlVHJh
bnNwb3J0LmdldExvY2FsUGFyYW1ldGVycygpLCBudWxsLAorICAgICdFeHBlY3QgbG9jYWwgcGFy
YW1ldGVycyBnZW5lcmF0ZWQnKTsKKyAgYXNzZXJ0X2VxdWFscyhpY2VUcmFuc3BvcnQuZ2V0UmVt
b3RlUGFyYW1ldGVycygpLCBudWxsLAorICAgICdFeHBlY3Qgbm8gcmVtb3RlIHBhcmFtZXRlcnMn
KTsKK30sICdSVENJY2VUcmFuc3BvcnQgaW5pdGlhbCBwcm9wZXJ0aWVzIGFyZSBzZXQnKTsKKwor
dGVzdCh0ID0+IHsKKyAgY29uc3QgaWNlVHJhbnNwb3J0ID0gbWFrZUljZVRyYW5zcG9ydCh0KTsK
KyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+CisgICAgaWNlVHJhbnNwb3J0
LmdhdGhlcih7IGljZVNlcnZlcnM6IG51bGwgfSkpOworfSwgJ2dhdGhlcigpIHdpdGggeyBpY2VT
ZXJ2ZXJzOiBudWxsIH0gc2hvdWxkIHRocm93IFR5cGVFcnJvcicpOworCit0ZXN0KHQgPT4gewor
ICBjb25zdCBpY2VUcmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOworICBpY2VUcmFuc3Bv
cnQuZ2F0aGVyKHsgaWNlU2VydmVyczogdW5kZWZpbmVkIH0pOworfSwgJ2dhdGhlcigpIHdpdGgg
eyBpY2VTZXJ2ZXJzOiB1bmRlZmluZWQgfSBzaG91bGQgc3VjY2VlZCcpOworCit0ZXN0KHQgPT4g
eworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOworICBpY2VUcmFu
c3BvcnQuZ2F0aGVyKHsgaWNlU2VydmVyczogW3sKKyAgICB1cmxzOiBbJ3R1cm5zOnR1cm4uZXhh
bXBsZS5vcmcnLCAndHVybjp0dXJuLmV4YW1wbGUubmV0J10sCisgICAgdXNlcm5hbWU6ICd1c2Vy
JywKKyAgICBjcmVkZW50aWFsOiAnY3JlZCcsCisgIH1dIH0pOworfSwgJ2dhdGhlcigpIHdpdGgg
b25lIHR1cm5zIHNlcnZlciwgb25lIHR1cm4gc2VydmVyLCB1c2VybmFtZSwgY3JlZGVudGlhbCcg
KworICAgICcgc2hvdWxkIHN1Y2NlZWQnKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3QgaWNlVHJh
bnNwb3J0ID0gbWFrZUljZVRyYW5zcG9ydCh0KTsKKyAgaWNlVHJhbnNwb3J0LmdhdGhlcih7IGlj
ZVNlcnZlcnM6IFt7CisgICAgdXJsczogWydzdHVuOnN0dW4xLmV4YW1wbGUubmV0JywgJ3N0dW46
c3R1bjIuZXhhbXBsZS5uZXQnXSwKKyAgfV0gfSk7Cit9LCAnZ2F0aGVyKCkgd2l0aCAyIHN0dW4g
c2VydmVycyBzaG91bGQgc3VjY2VlZCcpOworCit0ZXN0KHQgPT4geworICBjb25zdCBpY2VUcmFu
c3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOworICBpY2VUcmFuc3BvcnQuc3RvcCgpOworICBh
c3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsICgpID0+IGljZVRyYW5zcG9ydC5nYXRo
ZXIoe30pKTsKK30sICdnYXRoZXIoKSB0aHJvd3MgaWYgY2xvc2VkJyk7CisKK3Rlc3QodCA9PiB7
CisgIGNvbnN0IGljZVRyYW5zcG9ydCA9IG1ha2VJY2VUcmFuc3BvcnQodCk7CisgIGljZVRyYW5z
cG9ydC5nYXRoZXIoe30pOworICBhc3NlcnRfZXF1YWxzKGljZVRyYW5zcG9ydC5nYXRoZXJpbmdT
dGF0ZSwgJ2dhdGhlcmluZycpOworfSwgYGdhdGhlcigpIHRyYW5zaXRpb25zIGdhdGhlcmluZ1N0
YXRlIHRvICdnYXRoZXJpbmcnYCk7CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IGljZVRyYW5zcG9y
dCA9IG1ha2VJY2VUcmFuc3BvcnQodCk7CisgIGljZVRyYW5zcG9ydC5nYXRoZXIoe30pOworICBh
c3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsICgpID0+IGljZVRyYW5zcG9ydC5nYXRo
ZXIoe30pKTsKK30sICdnYXRoZXIoKSB0aHJvd3MgaWYgY2FsbGVkIHR3aWNlJyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgaWNlVHJhbnNwb3J0ID0gbWFrZUljZVRyYW5z
cG9ydCh0KTsKKyAgY29uc3Qgd2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgaWNlVHJhbnNw
b3J0LCAnZ2F0aGVyaW5nc3RhdGVjaGFuZ2UnKTsKKyAgaWNlVHJhbnNwb3J0LmdhdGhlcih7fSk7
CisgIGF3YWl0IHdhdGNoZXIud2FpdF9mb3IoJ2dhdGhlcmluZ3N0YXRlY2hhbmdlJyk7CisgIGFz
c2VydF9lcXVhbHMoaWNlVHJhbnNwb3J0LmdhdGhlcmluZ1N0YXRlLCAnY29tcGxldGUnKTsKK30s
IGBldmVudHVhbGx5IHRyYW5zaXRpb24gZ2F0aGVyaW5nU3RhdGUgdG8gJ2NvbXBsZXRlJ2ApOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IGljZVRyYW5zcG9ydCA9IG1ha2VJ
Y2VUcmFuc3BvcnQodCk7CisgIGNvbnN0IHdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGlj
ZVRyYW5zcG9ydCwKKyAgICAgIFsgJ2ljZWNhbmRpZGF0ZScsICdnYXRoZXJpbmdzdGF0ZWNoYW5n
ZScgXSk7CisgIGljZVRyYW5zcG9ydC5nYXRoZXIoe30pOworICBsZXQgY2FuZGlkYXRlOworICBk
byB7CisgICAgKHsgY2FuZGlkYXRlIH0gPSBhd2FpdCB3YXRjaGVyLndhaXRfZm9yKCdpY2VjYW5k
aWRhdGUnKSk7CisgIH0gd2hpbGUgKGNhbmRpZGF0ZSAhPT0gbnVsbCk7CisgIGFzc2VydF9lcXVh
bHMoaWNlVHJhbnNwb3J0LmdhdGhlcmluZ1N0YXRlLCAnZ2F0aGVyaW5nJyk7CisgIGF3YWl0IHdh
dGNoZXIud2FpdF9mb3IoJ2dhdGhlcmluZ3N0YXRlY2hhbmdlJyk7CisgIGFzc2VydF9lcXVhbHMo
aWNlVHJhbnNwb3J0LmdhdGhlcmluZ1N0YXRlLCAnY29tcGxldGUnKTsKK30sICdvbmljZWNhbmRp
ZGF0ZSBmaXJlcyB3aXRoIG51bGwgY2FuZGlkYXRlIGJlZm9yZSBnYXRoZXJpbmdTdGF0ZScgKwor
ICAgIGAgdHJhbnNpdGlvbnMgdG8gJ2NvbXBsZXRlJ2ApOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgIGNvbnN0IGljZVRyYW5zcG9ydCA9IG1ha2VJY2VUcmFuc3BvcnQodCk7CisgIGNv
bnN0IHdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGljZVRyYW5zcG9ydCwgJ2ljZWNhbmRp
ZGF0ZScpOworICBpY2VUcmFuc3BvcnQuZ2F0aGVyKHt9KTsKKyAgY29uc3QgeyBjYW5kaWRhdGUg
fSA9IGF3YWl0IHdhdGNoZXIud2FpdF9mb3IoJ2ljZWNhbmRpZGF0ZScpOworICBhc3NlcnRfbm90
X2VxdWFscyhjYW5kaWRhdGUuY2FuZGlkYXRlLCAnJyk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMo
aWNlVHJhbnNwb3J0LmdldExvY2FsQ2FuZGlkYXRlcygpLCBbY2FuZGlkYXRlXSk7Cit9LCAnZ2F0
aGVyKCkgcmV0dXJucyBhdCBsZWFzdCBvbmUgaG9zdCBjYW5kaWRhdGUnKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0
KHQpOworICBjb25zdCB3YXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBpY2VUcmFuc3BvcnQs
ICdpY2VjYW5kaWRhdGUnKTsKKyAgaWNlVHJhbnNwb3J0LmdhdGhlcih7IGdhdGhlclBvbGljeTog
J3JlbGF5JyB9KTsKKyAgY29uc3QgeyBjYW5kaWRhdGUgfSA9IGF3YWl0IHdhdGNoZXIud2FpdF9m
b3IoJ2ljZWNhbmRpZGF0ZScpOworICBhc3NlcnRfZXF1YWxzKGNhbmRpZGF0ZSwgbnVsbCk7Cisg
IGFzc2VydF9hcnJheV9lcXVhbHMoaWNlVHJhbnNwb3J0LmdldExvY2FsQ2FuZGlkYXRlcygpLCBb
XSk7Cit9LCBgZ2F0aGVyKCkgcmV0dXJucyBubyBjYW5kaWRhdGVzIHdpdGggeyBnYXRoZXJQb2xp
Y3k6ICdyZWxheSd9IGFuZCBubyB0dXJuYCArCisgICAgJyBzZXJ2ZXJzJyk7CisKK2NvbnN0IGR1
bW15UmVtb3RlUGFyYW1ldGVycyA9IHsKKyAgdXNlcm5hbWVGcmFnbWVudDogJ2R1bW15VXNlcm5h
bWVGcmFnbWVudCcsCisgIHBhc3N3b3JkOiAnZHVtbXlQYXNzd29yZCcsCit9OworCit0ZXN0KCgp
ID0+IHsKKyAgY29uc3QgaWNlVHJhbnNwb3J0ID0gbmV3IFJUQ0ljZVRyYW5zcG9ydCgpOworICBp
Y2VUcmFuc3BvcnQuc3RvcCgpOworICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcics
CisgICAgKCkgPT4gaWNlVHJhbnNwb3J0LnN0YXJ0KGR1bW15UmVtb3RlUGFyYW1ldGVycykpOwor
ICBhc3NlcnRfZXF1YWxzKGljZVRyYW5zcG9ydC5nZXRSZW1vdGVQYXJhbWV0ZXJzKCksIG51bGwp
OworfSwgYHN0YXJ0KCkgdGhyb3dzIGlmIGNsb3NlZGApOworCit0ZXN0KCgpID0+IHsKKyAgY29u
c3QgaWNlVHJhbnNwb3J0ID0gbmV3IFJUQ0ljZVRyYW5zcG9ydCgpOworICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gaWNlVHJhbnNwb3J0LnN0YXJ0KHt9KSk7CisgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLAorICAgICgpID0+IGljZVRyYW5zcG9ydC5zdGFydCh7
IHVzZXJuYW1lRnJhZ21lbnQ6ICdkdW1teScgfSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwKKyAgICAoKSA9PiBpY2VUcmFuc3BvcnQuc3RhcnQoeyBwYXNzd29yZDogJ2R1bW15
JyB9KSk7CisgIGFzc2VydF9lcXVhbHMoaWNlVHJhbnNwb3J0LmdldFJlbW90ZVBhcmFtZXRlcnMo
KSwgbnVsbCk7Cit9LCAnc3RhcnQoKSB0aHJvd3MgaWYgdXNlcm5hbWVGcmFnbWVudCBvciBwYXNz
d29yZCBub3Qgc2V0Jyk7CisKK2NvbnN0IGFzc2VydF9pY2VfcGFyYW1ldGVyc19lcXVhbHMgPSAo
YSwgYikgPT4geworICBhc3NlcnRfZXF1YWxzKGEudXNlcm5hbWVGcmFnbWVudCwgYi51c2VybmFt
ZUZyYWdtZW50LAorICAgICAgJ3VzZXJuYW1lRnJhZ21lbnRzIGFyZSBlcXVhbCcpOworICBhc3Nl
cnRfZXF1YWxzKGEucGFzc3dvcmQsIGIucGFzc3dvcmQsICdwYXNzd29yZHMgYXJlIGVxdWFsJyk7
Cit9OworCit0ZXN0KHQgPT4geworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNw
b3J0KHQpOworICBpY2VUcmFuc3BvcnQuc3RhcnQoZHVtbXlSZW1vdGVQYXJhbWV0ZXJzKTsKKyAg
YXNzZXJ0X2VxdWFscyhpY2VUcmFuc3BvcnQuc3RhdGUsICduZXcnKTsKKyAgYXNzZXJ0X2ljZV9w
YXJhbWV0ZXJzX2VxdWFscyhpY2VUcmFuc3BvcnQuZ2V0UmVtb3RlUGFyYW1ldGVycygpLAorICAg
ICAgZHVtbXlSZW1vdGVQYXJhbWV0ZXJzKTsKK30sIGBzdGFydCgpIGRvZXMgbm90IHRyYW5zaXRp
b24gc3RhdGUgdG8gJ2NoZWNraW5nJyBpZiBubyByZW1vdGUgY2FuZGlkYXRlcyBgICsKKyAgICAn
YWRkZWQnKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3QgaWNlVHJhbnNwb3J0ID0gbWFrZUljZVRy
YW5zcG9ydCh0KTsKKyAgaWNlVHJhbnNwb3J0LnN0YXJ0KGR1bW15UmVtb3RlUGFyYW1ldGVycyk7
CisgIGFzc2VydF9lcXVhbHMoaWNlVHJhbnNwb3J0LnJvbGUsICdjb250cm9sbGVkJyk7Cit9LCBg
c3RhcnQoKSB3aXRoIGRlZmF1bHQgcm9sZSBzZXRzIHJvbGUgYXR0cmlidXRlIHRvICdjb250cm9s
bGVkJ2ApOworCit0ZXN0KHQgPT4geworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBtYWtlSWNlVHJh
bnNwb3J0KHQpOworICBpY2VUcmFuc3BvcnQuc3RhcnQoZHVtbXlSZW1vdGVQYXJhbWV0ZXJzLCAn
Y29udHJvbGxpbmcnKTsKKyAgYXNzZXJ0X2VxdWFscyhpY2VUcmFuc3BvcnQucm9sZSwgJ2NvbnRy
b2xsaW5nJyk7Cit9LCBgc3RhcnQoKSBzZXRzIHJvbGUgYXR0cmlidXRlIHRvICdjb250cm9sbGlu
ZydgKTsKKworY29uc3QgY2FuZGlkYXRlMSA9IG5ldyBSVENJY2VDYW5kaWRhdGUoeworICBjYW5k
aWRhdGU6ICdjYW5kaWRhdGU6MSAxIHVkcCAyMTEzOTI5NDcxIDIwMy4wLjExMy4xMDAgMTAxMDAg
dHlwIGhvc3QnLAorfSk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBu
ZXcgUlRDSWNlVHJhbnNwb3J0KCk7CisgIGljZVRyYW5zcG9ydC5zdG9wKCk7CisgIGFzc2VydF90
aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAoKSA9PiBpY2VUcmFuc3BvcnQuYWRkUmVt
b3RlQ2FuZGlkYXRlKGNhbmRpZGF0ZTEpKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhpY2VUcmFu
c3BvcnQuZ2V0UmVtb3RlQ2FuZGlkYXRlcygpLCBbXSk7Cit9LCAnYWRkUmVtb3RlQ2FuZGlkYXRl
KCkgdGhyb3dzIGlmIGNsb3NlZCcpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgaWNlVHJhbnNw
b3J0ID0gbmV3IFJUQ0ljZVRyYW5zcG9ydCgpOworICBhc3NlcnRfdGhyb3dzKCdPcGVyYXRpb25F
cnJvcicsCisgICAgKCkgPT4gaWNlVHJhbnNwb3J0LmFkZFJlbW90ZUNhbmRpZGF0ZSgKKyAgICAg
IG5ldyBSVENJY2VDYW5kaWRhdGUoeyBjYW5kaWRhdGU6ICdpbnZhbGlkJyB9KSkpOworICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGljZVRyYW5zcG9ydC5nZXRSZW1vdGVDYW5kaWRhdGVzKCksIFtdKTsK
K30sICdhZGRSZW1vdGVDYW5kaWRhdGUoKSB0aHJvd3Mgb24gaW52YWxpZCBjYW5kaWRhdGUnKTsK
KwordGVzdCh0ID0+IHsKKyAgY29uc3QgaWNlVHJhbnNwb3J0ID0gbWFrZUljZVRyYW5zcG9ydCh0
KTsKKyAgaWNlVHJhbnNwb3J0LmFkZFJlbW90ZUNhbmRpZGF0ZShjYW5kaWRhdGUxKTsKKyAgaWNl
VHJhbnNwb3J0LnN0YXJ0KGR1bW15UmVtb3RlUGFyYW1ldGVycyk7CisgIGFzc2VydF9lcXVhbHMo
aWNlVHJhbnNwb3J0LnN0YXRlLCAnY2hlY2tpbmcnKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhp
Y2VUcmFuc3BvcnQuZ2V0UmVtb3RlQ2FuZGlkYXRlcygpLCBbY2FuZGlkYXRlMV0pOworfSwgYHN0
YXJ0KCkgdHJhbnNpdGlvbnMgc3RhdGUgdG8gJ2NoZWNraW5nJyBpZiBvbmUgcmVtb3RlIGNhbmRp
ZGF0ZSBoYWQgYmVlbiBgICsKKyAgICAnYWRkZWQnKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3Qg
aWNlVHJhbnNwb3J0ID0gbWFrZUljZVRyYW5zcG9ydCh0KTsKKyAgaWNlVHJhbnNwb3J0LnN0YXJ0
KGR1bW15UmVtb3RlUGFyYW1ldGVycyk7CisgIGljZVRyYW5zcG9ydC5hZGRSZW1vdGVDYW5kaWRh
dGUoY2FuZGlkYXRlMSk7CisgIGFzc2VydF9lcXVhbHMoaWNlVHJhbnNwb3J0LnN0YXRlLCAnY2hl
Y2tpbmcnKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhpY2VUcmFuc3BvcnQuZ2V0UmVtb3RlQ2Fu
ZGlkYXRlcygpLCBbY2FuZGlkYXRlMV0pOworfSwgYGFkZFJlbW90ZUNhbmRpZGF0ZSgpIHRyYW5z
aXRpb25zIHN0YXRlIHRvICdjaGVja2luZycgaWYgc3RhcnQoKSBoYWQgYmVlbiBgICsKKyAgICAn
Y2FsbGVkIGJlZm9yZScpOworCit0ZXN0KHQgPT4geworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBt
YWtlSWNlVHJhbnNwb3J0KHQpOworICBpY2VUcmFuc3BvcnQuc3RhcnQoZHVtbXlSZW1vdGVQYXJh
bWV0ZXJzKTsKKyAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICgpID0+
IGljZVRyYW5zcG9ydC5zdGFydChkdW1teVJlbW90ZVBhcmFtZXRlcnMsICdjb250cm9sbGluZycp
KTsKK30sICdzdGFydCgpIHRocm93cyBpZiBsYXRlciBjYWxsZWQgd2l0aCBhIGRpZmZlcmVudCBy
b2xlJyk7CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IGljZVRyYW5zcG9ydCA9IG1ha2VJY2VUcmFu
c3BvcnQodCk7CisgIGljZVRyYW5zcG9ydC5zdGFydCh7CisgICAgdXNlcm5hbWVGcmFnbWVudDog
J3VzZXInLAorICAgIHBhc3N3b3JkOiAncGFzcycsCisgIH0pOworICBpY2VUcmFuc3BvcnQuYWRk
UmVtb3RlQ2FuZGlkYXRlKGNhbmRpZGF0ZTEpOworICBjb25zdCBjaGFuZ2VkUmVtb3RlUGFyYW1l
dGVycyA9IHsKKyAgICB1c2VybmFtZUZyYWdtZW50OiAndXNlcjInLAorICAgIHBhc3N3b3JkOiAn
cGFzcycsCisgIH07CisgIGljZVRyYW5zcG9ydC5zdGFydChjaGFuZ2VkUmVtb3RlUGFyYW1ldGVy
cyk7CisgIGFzc2VydF9lcXVhbHMoaWNlVHJhbnNwb3J0LnN0YXRlLCAnbmV3Jyk7CisgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoaWNlVHJhbnNwb3J0LmdldFJlbW90ZUNhbmRpZGF0ZXMoKSwgW10pOwor
ICBhc3NlcnRfaWNlX3BhcmFtZXRlcnNfZXF1YWxzKGljZVRyYW5zcG9ydC5nZXRSZW1vdGVQYXJh
bWV0ZXJzKCksCisgICAgICBjaGFuZ2VkUmVtb3RlUGFyYW1ldGVycyk7Cit9LCBgc3RhcnQoKSBm
bHVzaGVzIHJlbW90ZSBjYW5kaWRhdGVzIGFuZCB0cmFuc2l0aW9ucyBzdGF0ZSB0byAnbmV3JyBp
ZiBgICsKKyAgICdsYXRlciBjYWxsZWQgd2l0aCBkaWZmZXJlbnQgcmVtb3RlIHBhcmFtZXRlcnMn
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBbIGxvY2FsVHJhbnNwb3J0
LCByZW1vdGVUcmFuc3BvcnQgXSA9CisgICAgICBtYWtlR2F0aGVyQW5kU3RhcnRUd29JY2VUcmFu
c3BvcnRzKHQpOworICBjb25zdCBsb2NhbFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGxv
Y2FsVHJhbnNwb3J0LCAnc3RhdGVjaGFuZ2UnKTsKKyAgY29uc3QgcmVtb3RlV2F0Y2hlciA9IG5l
dyBFdmVudFdhdGNoZXIodCwgcmVtb3RlVHJhbnNwb3J0LCAnc3RhdGVjaGFuZ2UnKTsKKyAgYXdh
aXQgUHJvbWlzZS5hbGwoWworICAgIGxvY2FsV2F0Y2hlci53YWl0X2Zvcignc3RhdGVjaGFuZ2Un
KS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMobG9jYWxUcmFuc3BvcnQuc3RhdGUs
ICdjb25uZWN0ZWQnKTsKKyAgICB9KSwKKyAgICByZW1vdGVXYXRjaGVyLndhaXRfZm9yKCdzdGF0
ZWNoYW5nZScpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZW1vdGVUcmFuc3Bv
cnQuc3RhdGUsICdjb25uZWN0ZWQnKTsKKyAgICB9KSwKKyAgXSk7Cit9LCAnVHdvIFJUQ0ljZVRy
YW5zcG9ydHMgY29ubmVjdCB0byBlYWNoIG90aGVyJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgYXN5bmMgZnVuY3Rpb24gd2FpdEZvckNvbm5lY3RlZFRoZW5TZWxlY3RlZENhbmRp
ZGF0ZVBhaXJDaGFuZ2UodCwgdHJhbnNwb3J0LAorICAgICAgdHJhbnNwb3J0TmFtZSkgeworICAg
IGNvbnN0IHdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIHRyYW5zcG9ydCwKKyAgICAgICAg
WyAnc3RhdGVjaGFuZ2UnLCAnc2VsZWN0ZWRjYW5kaWRhdGVwYWlyY2hhbmdlJyBdKTsKKyAgICBh
d2FpdCB3YXRjaGVyLndhaXRfZm9yKCdzdGF0ZWNoYW5nZScpOworICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNwb3J0LnN0YXRlLCAnY29ubmVjdGVkJywKKyAgICAgICAgYCR7dHJhbnNwb3J0TmFtZX0g
c3RhdGUgc2hvdWxkIGJlICdjb25uZWN0ZWQnYCk7CisgICAgYXdhaXQgd2F0Y2hlci53YWl0X2Zv
cignc2VsZWN0ZWRjYW5kaWRhdGVwYWlyY2hhbmdlJyk7CisgICAgY29uc3Qgc2VsZWN0ZWRDYW5k
aWRhdGVQYWlyID0gdHJhbnNwb3J0LmdldFNlbGVjdGVkQ2FuZGlkYXRlUGFpcigpOworICAgIGFz
c2VydF9ub3RfZXF1YWxzKHNlbGVjdGVkQ2FuZGlkYXRlUGFpciwgbnVsbCwKKyAgICAgICAgYCR7
dHJhbnNwb3J0TmFtZX0gc2VsZWN0ZWQgY2FuZGlkYXRlIHBhaXIgc2hvdWxkIG5vdCBiZSBudWxs
IG9uY2UgYCArCisgICAgICAgICd0aGUgc2VsZWN0ZWRjYW5kaWRhdGVwYWlyY2hhbmdlIGV2ZW50
IGZpcmVzJyk7CisgICAgYXNzZXJ0X3RydWUoCisgICAgICAgIHRyYW5zcG9ydC5nZXRMb2NhbENh
bmRpZGF0ZXMoKS5zb21lKAorICAgICAgICAgICAgKHsgY2FuZGlkYXRlIH0pID0+CisgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlID09PSBzZWxlY3RlZENhbmRpZGF0ZVBhaXIubG9jYWwuY2FuZGlk
YXRlKSwKKyAgICAgICAgYCR7dHJhbnNwb3J0TmFtZX0gc2VsZWN0ZWQgY2FuZGlkYXRlIHBhaXIg
bG9jYWwgc2hvdWxkIGJlIGluIHRoZSBgICsKKyAgICAgICAgJ2xpc3Qgb2YgbG9jYWwgY2FuZGlk
YXRlcycpOworICAgIGFzc2VydF90cnVlKAorICAgICAgICB0cmFuc3BvcnQuZ2V0UmVtb3RlQ2Fu
ZGlkYXRlcygpLnNvbWUoCisgICAgICAgICAgICAoeyBjYW5kaWRhdGUgfSkgPT4KKyAgICAgICAg
ICAgICAgICBjYW5kaWRhdGUgPT09IHNlbGVjdGVkQ2FuZGlkYXRlUGFpci5yZW1vdGUuY2FuZGlk
YXRlKSwKKyAgICAgICAgYCR7dHJhbnNwb3J0TmFtZX0gc2VsZWN0ZWQgY2FuZGlkYXRlIHBhaXIg
bG9jYWwgc2hvdWxkIGJlIGluIHRoZSBgICsKKyAgICAgICAgJ2xpc3Qgb2YgcmVtb3RlIGNhbmRp
ZGF0ZXMnKTsKKyAgfQorICBjb25zdCBbIGxvY2FsVHJhbnNwb3J0LCByZW1vdGVUcmFuc3BvcnQg
XSA9CisgICAgICBtYWtlR2F0aGVyQW5kU3RhcnRUd29JY2VUcmFuc3BvcnRzKHQpOworICBhd2Fp
dCBQcm9taXNlLmFsbChbCisgICAgd2FpdEZvckNvbm5lY3RlZFRoZW5TZWxlY3RlZENhbmRpZGF0
ZVBhaXJDaGFuZ2UodCwgbG9jYWxUcmFuc3BvcnQsCisgICAgICAgICdsb2NhbCB0cmFuc3BvcnQn
KSwKKyAgICB3YWl0Rm9yQ29ubmVjdGVkVGhlblNlbGVjdGVkQ2FuZGlkYXRlUGFpckNoYW5nZSh0
LCByZW1vdGVUcmFuc3BvcnQsCisgICAgICAgICdyZW1vdGUgdHJhbnNwb3J0JyksCisgIF0pOwor
fSwgJ1NlbGVjdGVkIGNhbmRpZGF0ZSBwYWlyIGNoYW5nZXMgb25jZSB0aGUgUlRDSWNlVHJhbnNw
b3J0cyBjb25uZWN0LicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IFsg
dHJhbnNwb3J0LCBdID0gbWFrZUdhdGhlckFuZFN0YXJ0VHdvSWNlVHJhbnNwb3J0cyh0KTsKKyAg
Y29uc3Qgd2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgdHJhbnNwb3J0LCAnc2VsZWN0ZWRj
YW5kaWRhdGVwYWlyY2hhbmdlJyk7CisgIGF3YWl0IHdhdGNoZXIud2FpdF9mb3IoJ3NlbGVjdGVk
Y2FuZGlkYXRlcGFpcmNoYW5nZScpOworICB0cmFuc3BvcnQuc3RvcCgpOworICBhc3NlcnRfZXF1
YWxzKHRyYW5zcG9ydC5nZXRTZWxlY3RlZENhbmRpZGF0ZVBhaXIoKSwgbnVsbCk7Cit9LCAnZ2V0
U2VsZWN0ZWRDYW5kaWRhdGVQYWlyKCkgcmV0dXJucyBudWxsIG9uY2UgdGhlIFJUQ0ljZVRyYW5z
cG9ydCBpcyAnICsKKyAgICAnc3RvcHBlZC4nKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENJY2VU
cmFuc3BvcnQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ0ljZVRyYW5zcG9ydC5odG1sCmluZGV4IDU3ZWNmMDdmN2IxMjhmZGZmNjc2
YzI1ZmJmMDIwNmUwMTViZGUwNjMuLjE3YWU2ZGNhMDE2ZmNkMDhjYmIzNGI0ODE5MTI5ZjYzMzhk
ZTI4YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ0ljZVRyYW5zcG9ydC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0ljZVRyYW5zcG9ydC5odG1sCkBA
IC0xMTgsOSArMTE4LDExIEBACiAgICAgdmFsaWRhdGVDYW5kaWRhdGVQYXJhbWV0ZXIoaWNlVHJh
bnNwb3J0LmdldFJlbW90ZVBhcmFtZXRlcnMoKSk7CiAgIH0KIAotICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAg
Y29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYzIuY2xvc2UoKSk7CiAKICAgICByZXR1cm4gY3JlYXRlRGF0YUNoYW5uZWxQYWlyKHBj
MSwgcGMyKQogICAgIC50aGVuKChbY2hhbm5lbDEsIGNoYW5uZWwyXSkgPT4gewpAQCAtMTYzLDkg
KzE2NSwxMSBAQAogICAgIH0pOwogICB9LCAnVHdvIGNvbm5lY3RlZCBpY2VUcmFuc3BvcnRzIHNo
b3VsZCBoYXMgbWF0Y2hpbmcgbG9jYWwvcmVtb3RlIGNhbmRpZGF0ZXMgcmV0dXJuZWQnKTsKIAot
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3Qg
cGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
YzEuY2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Cisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7CiAgICAgcGMxLmNyZWF0ZURhdGFD
aGFubmVsKCcnKTsKIAogICAgIC8vIHNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcikgd2l0aG91
dCB0aGUgb3RoZXIgcGVlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tYWRkLXRyYWNrLW5vLWRl
YWRsb2NrLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC10cmFjay1uby1kZWFk
bG9jay5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1MTYzMmQ5NjI5MWJhYmI2YThm
ZGMzZGZjZjA1NGE1NWVhZjdkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC10
cmFjay1uby1kZWFkbG9jay5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgUlRDUGVlckNvbm5lY3Rpb24gYWRkVHJhY2sgZG9lcyBub3QgZGVhZGxvY2suIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGQtdHJhY2stbm8tZGVhZGxvY2suaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLWFkZC10cmFjay1uby1kZWFkbG9jay5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgx
ZTNiNzM2NDMyZDJjODBkNjE3Y2EyYzA1ZWYwNzJlOTAxZDAyODMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQ
ZWVyQ29ubmVjdGlvbi1hZGQtdHJhY2stbm8tZGVhZGxvY2suaHR0cHMuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+UlRD
UGVlckNvbm5lY3Rpb24gYWRkVHJhY2sgZG9lcyBub3QgZGVhZGxvY2s8L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IlJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAndXNl
IHN0cmljdCc7CisKKyAgLy8gVGhpcyB0ZXN0IHNldHMgdXAgdHdvIHBlZXIgY29ubmVjdGlvbnMg
dXNpbmcgYSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zCisgIC8vIHRoYXQgdHJpZ2dlcmVkIGEgZGVh
ZGxvY2sgaW4gQ2hyb21lLiBTZWUgaHR0cHM6Ly9jcmJ1Zy5jb20vNzM2NzI1LgorICAvLyBJZiBh
IGRlYWRsb2NrIGlzIGludHJvZHVjZWQgYWdhaW4sIHRoaXMgdGVzdCB0aW1lcyBvdXQuCisgIHBy
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICBjb25z
dCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVhbSgKKyAgICAgIHthdWRpbzogZmFsc2UsIHZp
ZGVvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCku
Zm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCB2aWRlb1RyYWNrID0g
c3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CisgICAgcGMxLmFkZFRyYWNrKHZpZGVvVHJhY2ss
IHN0cmVhbSk7CisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKKyAg
ICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgY29uc3QgcGMyID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xv
c2UoKSk7CisgICAgY29uc3Qgc3JkUHJvbWlzZSA9IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihv
ZmZlcik7CisgICAgcGMyLmFkZFRyYWNrKHZpZGVvVHJhY2ssIHN0cmVhbSk7CisgICAgLy8gVGhl
IGRlYWRsb2NrIGVuY291bnRlcmVkIGluIGh0dHBzOi8vY3JidWcuY29tLzczNjcyNSBvY2N1cmVk
IGhlcmUuCisgICAgYXdhaXQgc3JkUHJvbWlzZTsKKyAgICBhd2FpdCBwYzIuY3JlYXRlQW5zd2Vy
KCk7CisgIH0sICdSVENQZWVyQ29ubmVjdGlvbiBhZGRUcmFjayBkb2VzIG5vdCBkZWFkbG9jay4n
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tYWRkSWNlQ2FuZGlkYXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENQZWVyQ29ubmVjdGlvbi1hZGRJY2VDYW5kaWRhdGUuaHRtbAppbmRleCBlNTVjYzYxYjU1OGEx
ZDk1MGE2ZjUyOTFlMjQ4MWQ2NmUxNjQ5NDZkLi41ZTMyMTY4MTMzNmVjZTc1MjAyZDljNDY5MjI3
ZDYwZGE0Y2VlZTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGRJY2VDYW5kaWRhdGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGRJY2VDYW5kaWRhdGUuaHRtbApAQCAtMTQyLDYgKzE0Miw4
IEBAIGE9cnRjcC1yc2l6ZQogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xv
c2UoKSk7CisKICAgICByZXR1cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2Mp
CiAgICAgLnRoZW4oKCkgPT4KICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksCkBAIC0xNTcsNiArMTU5LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgIHBjLmFkZEljZUNhbmRpZGF0ZSh7CiAgICAg
ICAgIGNhbmRpZGF0ZTogY2FuZGlkYXRlU3RyMSwKQEAgLTE3MCw2ICsxNzQsOCBAQCBhPXJ0Y3At
cnNpemUKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAg
ICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjKQogICAgIC50aGVu
KCgpID0+IHBjLmFkZEljZUNhbmRpZGF0ZSh7CiAgICAgICBjYW5kaWRhdGU6IGNhbmRpZGF0ZVN0
cjEsCkBAIC0xODAsNiArMTg2LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNj
cmlwdGlvbihzZXNzaW9uRGVzYykKICAgICAudGhlbigoKSA9PiBwYy5hZGRJY2VDYW5kaWRhdGUo
bmV3IFJUQ0ljZUNhbmRpZGF0ZSh7CiAgICAgICBjYW5kaWRhdGU6IGNhbmRpZGF0ZVN0cjEsCkBA
IC0xOTAsNiArMTk4LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlv
bihzZXNzaW9uRGVzYykKICAgICAgIC50aGVuKCgpID0+IHBjLmFkZEljZUNhbmRpZGF0ZSh7IHNk
cE1pZCB9KSk7CiAgIH0sICdBZGQgY2FuZGlkYXRlIHdpdGggb25seSB2YWxpZCBzZHBNaWQgc2hv
dWxkIHN1Y2NlZWQnKTsKQEAgLTE5Nyw2ICsyMDcsOCBAQCBhPXJ0Y3AtcnNpemUKICAgcHJvbWlz
ZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAK
KyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLnNl
dFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjKQogICAgICAgLnRoZW4oKCkgPT4gcGMuYWRk
SWNlQ2FuZGlkYXRlKHsgc2RwTUxpbmVJbmRleCB9KSk7CiAgIH0sICdBZGQgY2FuZGlkYXRlIHdp
dGggb25seSB2YWxpZCBzZHBNTGluZUluZGV4IHNob3VsZCBzdWNjZWVkJyk7CkBAIC0yMTIsNiAr
MjI0LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBw
YyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
Yy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZXNzaW9u
RGVzYykKICAgICAudGhlbigoKSA9PiBwYy5hZGRJY2VDYW5kaWRhdGUoewogICAgICAgY2FuZGlk
YXRlOiBjYW5kaWRhdGVTdHIxLApAQCAtMjI2LDYgKzI0MCw4IEBAIGE9cnRjcC1yc2l6ZQogICBw
cm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4g
cGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2MpCiAgICAgLnRoZW4oKCkgPT4gcGMu
YWRkSWNlQ2FuZGlkYXRlKHsKICAgICAgIGNhbmRpZGF0ZTogY2FuZGlkYXRlU3RyMiwKQEAgLTI0
Miw2ICsyNTgsOCBAQCBhPXJ0Y3AtcnNpemUKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNv
bnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNl
c3Npb25EZXNjKQogICAgIC50aGVuKCgpID0+IHBjLmFkZEljZUNhbmRpZGF0ZSh7CiAgICAgICBj
YW5kaWRhdGU6IGNhbmRpZGF0ZVN0cjEsCkBAIC0yNTcsNiArMjc1LDggQEAgYT1ydGNwLXJzaXpl
CiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJl
dHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZXNzaW9uRGVzYykKICAgICAudGhlbigoKSA9
PiBwYy5hZGRJY2VDYW5kaWRhdGUoewogICAgICAgY2FuZGlkYXRlOiBjYW5kaWRhdGVTdHIxLApA
QCAtMjkxLDYgKzMxMSw4IEBAIGE9cnRjcC1yc2l6ZQogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAg
ICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRp
b24oc2Vzc2lvbkRlc2MpCiAgICAgLnRoZW4oKCkgPT4gcGMuYWRkSWNlQ2FuZGlkYXRlKHsKICAg
ICAgIGNhbmRpZGF0ZTogY2FuZGlkYXRlU3RyMSwKQEAgLTMxOCw2ICszNDAsOCBAQCBhPXJ0Y3At
cnNpemUKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAg
ICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjKQogICAgIC50aGVu
KCgpID0+CiAgICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLApAQCAtMzMx
LDYgKzM1NSw4IEBAIGE9cnRjcC1yc2l6ZQogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2Vz
c2lvbkRlc2MpCiAgICAgLnRoZW4oKCkgPT4KICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcg
VHlwZUVycm9yKCksCkBAIC0zNDIsNiArMzY4LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5zZXRS
ZW1vdGVEZXNjcmlwdGlvbihzZXNzaW9uRGVzYykKICAgICAudGhlbigoKSA9PgogICAgICAgcHJv
bWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwKQEAgLTM1NSw2ICszODMsOCBAQCBhPXJ0
Y3AtcnNpemUKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwor
CiAgICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjKQogICAgIC50
aGVuKCgpID0+CiAgICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLApAQCAt
MzY0LDYgKzM5NCw4IEBAIGE9cnRjcC1yc2l6ZQogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
Y29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24o
c2Vzc2lvbkRlc2MpCiAgICAgLnRoZW4oKCkgPT4KICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksCkBAIC0zODUsNiArNDE3LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21p
c2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwog
CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5z
ZXRSZW1vdGVEZXNjcmlwdGlvbihzZXNzaW9uRGVzYykKICAgICAudGhlbigoKSA9PgogICAgICAg
cHJvbWlzZV9yZWplY3RzKHQsICdPcGVyYXRpb25FcnJvcicsCkBAIC00MDUsNiArNDM5LDggQEAg
YT1ydGNwLXJzaXplCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgp
KTsKKwogICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZXNzaW9uRGVzYykKICAg
ICAudGhlbigoKSA9PgogICAgICAgcHJvbWlzZV9yZWplY3RzKHQsICdPcGVyYXRpb25FcnJvcics
CkBAIC00MjAsNiArNDU2LDggQEAgYT1ydGNwLXJzaXplCiAgIHByb21pc2VfdGVzdCh0ID0+IHsK
ICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlw
dGlvbihzZXNzaW9uRGVzYykKICAgICAudGhlbigoKSA9PiBwYy5hZGRJY2VDYW5kaWRhdGUoewog
ICAgICAgY2FuZGlkYXRlOiBjYW5kaWRhdGVTdHIxLApAQCAtNDMyLDYgKzQ3MCw4IEBAIGE9cnRj
cC1yc2l6ZQogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisK
ICAgICByZXR1cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2MpCiAgICAgLnRo
ZW4oKCkgPT4gcGMuYWRkSWNlQ2FuZGlkYXRlKHsKICAgICAgIGNhbmRpZGF0ZTogY2FuZGlkYXRl
U3RyMiwKQEAgLTQ1NSw2ICs0OTUsOCBAQCBhPXJ0Y3AtcnNpemUKICAgcHJvbWlzZV90ZXN0KHQg
PT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLnNldFJlbW90ZURl
c2NyaXB0aW9uKHNlc3Npb25EZXNjKQogICAgIC50aGVuKCgpID0+CiAgICAgICBwcm9taXNlX3Jl
amVjdHModCwgJ09wZXJhdGlvbkVycm9yJywKQEAgLTQ3NSw2ICs1MTcsOCBAQCBhPXJ0Y3AtcnNp
emUKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25u
ZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAg
cmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjKQogICAgIC50aGVuKCgp
ID0+CiAgICAgICBwcm9taXNlX3JlamVjdHModCwgJ09wZXJhdGlvbkVycm9yJywKQEAgLTQ4Nyw2
ICs1MzEsOCBAQCBhPXJ0Y3AtcnNpemUKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0
IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Np
b25EZXNjKQogICAgIC50aGVuKCgpID0+CiAgICAgICBwcm9taXNlX3JlamVjdHModCwgJ09wZXJh
dGlvbkVycm9yJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYWNrLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYWNrLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAw
NjdkNjQzN2Y2NWZmMzdlNjM3N2QwZjExMmIwZTY1MjUwNjUwOGM3Li5hMjkzNzc2YjE3YmQzYjVm
NmY2ZjdhYWM3MmI3M2YxNTJjOWJiNGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFj
ay5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhY2suaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDEwICsxLDExIEBACiAKIFBBU1MgYWRkVHJhY2sgd2hlbiBwYyBpcyBj
bG9zZWQgc2hvdWxkIHRocm93IEludmFsaWRTdGF0ZUVycm9yIAotUEFTUyBhZGRUcmFjayB3aXRo
IHNpbmdsZSB0cmFjayBhcmd1bWVudCBhbmQgbm8gbWVkaWFTdHJlYW0gc2hvdWxkIHN1Y2NlZWQg
Ci1QQVNTIGFkZFRyYWNrIHdpdGggc2luZ2xlIHRyYWNrIGFyZ3VtZW50IGFuZCBzaW5nbGUgbWVk
aWFTdHJlYW0gc2hvdWxkIHN1Y2NlZWQgCi1QQVNTIGFkZFRyYWNrIHdpdGggc2luZ2xlIHRyYWNr
IGFyZ3VtZW50IGFuZCBtdWx0aXBsZSBtZWRpYVN0cmVhbXMgc2hvdWxkIHN1Y2NlZWQgCitQQVNT
IGFkZFRyYWNrIHdpdGggc2luZ2xlIHRyYWNrIGFyZ3VtZW50IGFuZCBubyBzdHJlYW0gc2hvdWxk
IHN1Y2NlZWQgCitQQVNTIGFkZFRyYWNrIHdpdGggc2luZ2xlIHRyYWNrIGFyZ3VtZW50IGFuZCBz
aW5nbGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkIAorUEFTUyBhZGRUcmFjayB3aXRoIHNpbmdsZSB0
cmFjayBhcmd1bWVudCBhbmQgbXVsdGlwbGUgc3RyZWFtcyBzaG91bGQgc3VjY2VlZCAKIFBBU1Mg
QWRkaW5nIHRoZSBzYW1lIHRyYWNrIG11bHRpcGxlIHRpbWVzIHNob3VsZCB0aHJvdyBJbnZhbGlk
QWNjZXNzRXJyb3IgCiBQQVNTIGFkZFRyYWNrIHdpdGggZXhpc3Rpbmcgc2VuZGVyIHdpdGggbnVs
bCB0cmFjaywgc2FtZSBraW5kLCBhbmQgcmVjdm9ubHkgZGlyZWN0aW9uIHNob3VsZCByZXVzZSBz
ZW5kZXIgCi1GQUlMIGFkZFRyYWNrIHdpdGggZXhpc3Rpbmcgc2VuZGVyIHdpdGggbnVsbCB0cmFj
aywgc2FtZSBraW5kLCBhbmQgc2VuZHJlY3YgZGlyZWN0aW9uIHNob3VsZCBjcmVhdGUgbmV3IHNl
bmRlciBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2Jq
ZWN0IFJUQ1J0cFNlbmRlcl0iCitQQVNTIGFkZFRyYWNrIHdpdGggZXhpc3Rpbmcgc2VuZGVyIHRo
YXQgaGFzIG5vdCBiZWVuIHVzZWQgdG8gc2VuZCBzaG91bGQgcmV1c2UgdGhlIHNlbmRlciAKK1BB
U1MgYWRkVHJhY2sgd2l0aCBleGlzdGluZyBzZW5kZXIgdGhhdCBoYXMgYmVlbiB1c2VkIHRvIHNl
bmQgc2hvdWxkIGNyZWF0ZSBuZXcgc2VuZGVyIAogUEFTUyBhZGRUcmFjayB3aXRoIGV4aXN0aW5n
IHNlbmRlciB3aXRoIG51bGwgdHJhY2ssIGRpZmZlcmVudCBraW5kLCBhbmQgcmVjdm9ubHkgZGly
ZWN0aW9uIHNob3VsZCBjcmVhdGUgbmV3IHNlbmRlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rp
b24tYWRkVHJhY2suaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYWNrLmh0dHBzLmh0bWwK
aW5kZXggNDA2ZTJkN2NlNWRhYzY0MWE2YWNjMDFiZjkwMDBhZWM1YzM1YTMwZS4uMmVjOWExZjdk
NjBkODRmY2U2ZTVhOGIyNDBiMGZhZGMzYjFkOTEwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24t
YWRkVHJhY2suaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFjay5odHRwcy5odG1s
CkBAIC0xMSw3ICsxMSw3IEBACiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMv
YXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0bWwKIAogICAvLyBUaGUgZm9sbG93aW5nIGhlbHBl
ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qczoK
LSAgLy8gZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrCisgIC8vICAgZ2V0Tm9pc2VTdHJlYW0oKQog
CiAgIC8qCiAgICAgNS4xLiAgUlRDUGVlckNvbm5lY3Rpb24gSW50ZXJmYWNlIEV4dGVuc2lvbnMK
QEAgLTM3LDIwICszNywxNiBAQAogICAgIDUuMS4gIGFkZFRyYWNrCiAgICAgICA0LiAgSWYgY29u
bmVjdGlvbidzIFtbaXNDbG9zZWRdXSBzbG90IGlzIHRydWUsIHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yLgogICAgKi8KLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogCi0gICAgcmV0dXJuIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSkKLSAgICAudGhlbihtZWRp
YVN0cmVhbSA9PiB7Ci0gICAgICBjb25zdCB0cmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3Mo
KTsKLSAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4odHJhY2tzLmxlbmd0aCwgMCwKLSAgICAgICAg
J0V4cGVjdCBnZXRVc2VyTWVkaWEgdG8gcmV0dXJuIGF0IGxlYXN0IG9uZSBhdWRpbyB0cmFjaycp
OworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IGdldE5vaXNlU3RyZWFtKHsgYXVkaW86IHRydWUg
fSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0
cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdldFRy
YWNrcygpOwogCi0gICAgICBjb25zdCB0cmFjayA9IHRyYWNrc1swXTsKLQotICAgICAgcGMuY2xv
c2UoKTsKLSAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywgKCkgPT4gcGMu
YWRkVHJhY2sodHJhY2ssIG1lZGlhU3RyZWFtKSkKLSAgICB9KTsKKyAgICBwYy5jbG9zZSgpOwor
ICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywgKCkgPT4gcGMuYWRkVHJhY2so
dHJhY2ssIHN0cmVhbSkpCiAgIH0sICdhZGRUcmFjayB3aGVuIHBjIGlzIGNsb3NlZCBzaG91bGQg
dGhyb3cgSW52YWxpZFN0YXRlRXJyb3InKTsKIAogICAvKgpAQCAtNjQsODEgKzYwLDcyIEBACiAg
ICAgICAgICAgICAgIHRyYW5zY2VpdmVyIGJlIHRoZSByZXN1bHQuCiAgICAgICAgICAgNC4gIEFk
ZCB0cmFuc2NlaXZlciB0byBjb25uZWN0aW9uJ3Mgc2V0IG9mIHRyYW5zY2VpdmVycy4KICAgICov
Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAg
IGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYy5jbG9zZSgpKTsKIAotICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pCi0gICAgLnRoZW4obWVkaWFTdHJlYW0gPT4gewot
ICAgICAgY29uc3QgdHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7Ci0gICAgICBhc3Nl
cnRfZ3JlYXRlcl90aGFuKHRyYWNrcy5sZW5ndGgsIDAsCi0gICAgICAgICdFeHBlY3QgZ2V0VXNl
ck1lZGlhIHRvIHJldHVybiBhdCBsZWFzdCBvbmUgYXVkaW8gdHJhY2snKTsKKyAgICBjb25zdCBz
dHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVhbSh7IGF1ZGlvOiB0cnVlIH0pOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2su
c3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFja3MoKTsKIAotICAg
ICAgY29uc3QgdHJhY2sgPSB0cmFja3NbMF07Ci0gICAgICBjb25zdCBzZW5kZXIgPSBwYy5hZGRU
cmFjayh0cmFjayk7CisgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2spOwogCi0g
ICAgICBhc3NlcnRfdHJ1ZShzZW5kZXIgaW5zdGFuY2VvZiBSVENSdHBTZW5kZXIsCi0gICAgICAg
ICdFeHBlY3Qgc2VuZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOworICAgIGFz
c2VydF90cnVlKHNlbmRlciBpbnN0YW5jZW9mIFJUQ1J0cFNlbmRlciwKKyAgICAgICdFeHBlY3Qg
c2VuZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOwogCi0gICAgICBhc3NlcnRf
ZXF1YWxzKHNlbmRlci50cmFjaywgdHJhY2ssCi0gICAgICAgIGBFeHBlY3Qgc2VuZGVyJ3MgdHJh
Y2sgdG8gYmUgdGhlIGFkZGVkIHRyYWNrYCk7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJh
Y2ssIHRyYWNrLAorICAgICAgYEV4cGVjdCBzZW5kZXIncyB0cmFjayB0byBiZSB0aGUgYWRkZWQg
dHJhY2tgKTsKIAotICAgICAgY29uc3QgdHJhbnNjZWl2ZXJzID0gcGMuZ2V0VHJhbnNjZWl2ZXJz
KCk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVycy5sZW5ndGgsIDEsCi0gICAgICAg
ICdFeHBlY3Qgb25seSBvbmUgdHJhbnNjZWl2ZXIgd2l0aCBzZW5kZXIgYWRkZWQnKTsKKyAgICBj
b25zdCB0cmFuc2NlaXZlcnMgPSBwYy5nZXRUcmFuc2NlaXZlcnMoKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHRyYW5zY2VpdmVycy5sZW5ndGgsIDEsCisgICAgICAnRXhwZWN0IG9ubHkgb25lIHRyYW5z
Y2VpdmVyIHdpdGggc2VuZGVyIGFkZGVkJyk7CiAKLSAgICAgIGNvbnN0IFt0cmFuc2NlaXZlcl0g
PSB0cmFuc2NlaXZlcnM7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLnNlbmRlciwg
c2VuZGVyKTsKKyAgICBjb25zdCBbdHJhbnNjZWl2ZXJdID0gdHJhbnNjZWl2ZXJzOworICAgIGFz
c2VydF9lcXVhbHModHJhbnNjZWl2ZXIuc2VuZGVyLCBzZW5kZXIpOwogCi0gICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKFtzZW5kZXJdLCBwYy5nZXRTZW5kZXJzKCksCi0gICAgICAgICdFeHBlY3Qg
b25seSBvbmUgc2VuZGVyIHdpdGggZ2l2ZW4gdHJhY2sgYWRkZWQnKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKFtzZW5kZXJdLCBwYy5nZXRTZW5kZXJzKCksCisgICAgICAnRXhwZWN0IG9ubHkg
b25lIHNlbmRlciB3aXRoIGdpdmVuIHRyYWNrIGFkZGVkJyk7CiAKLSAgICAgIGNvbnN0IHsgcmVj
ZWl2ZXIgfSA9IHRyYW5zY2VpdmVyOwotICAgICAgYXNzZXJ0X2VxdWFscyhyZWNlaXZlci50cmFj
ay5raW5kLCAnYXVkaW8nKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoW3RyYW5zY2VpdmVy
LnJlY2VpdmVyXSwgcGMuZ2V0UmVjZWl2ZXJzKCksCi0gICAgICAgICdFeHBlY3Qgb25seSBvbmUg
cmVjZWl2ZXIgYXNzb2NpYXRlZCB3aXRoIHRyYW5zY2VpdmVyIGFkZGVkJyk7Ci0gICAgfSk7Ci0g
IH0sICdhZGRUcmFjayB3aXRoIHNpbmdsZSB0cmFjayBhcmd1bWVudCBhbmQgbm8gbWVkaWFTdHJl
YW0gc2hvdWxkIHN1Y2NlZWQnKTsKKyAgICBjb25zdCB7IHJlY2VpdmVyIH0gPSB0cmFuc2NlaXZl
cjsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVyLnRyYWNrLmtpbmQsICdhdWRpbycpOworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoW3RyYW5zY2VpdmVyLnJlY2VpdmVyXSwgcGMuZ2V0UmVjZWl2
ZXJzKCksCisgICAgICAnRXhwZWN0IG9ubHkgb25lIHJlY2VpdmVyIGFzc29jaWF0ZWQgd2l0aCB0
cmFuc2NlaXZlciBhZGRlZCcpOworICB9LCAnYWRkVHJhY2sgd2l0aCBzaW5nbGUgdHJhY2sgYXJn
dW1lbnQgYW5kIG5vIHN0cmVhbSBzaG91bGQgc3VjY2VlZCcpOwogCi0gIHByb21pc2VfdGVzdCh0
ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsK
IAotICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlv
OiB0cnVlIH0pCi0gICAgLnRoZW4obWVkaWFTdHJlYW0gPT4gewotICAgICAgY29uc3QgdHJhY2tz
ID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7Ci0gICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKHRy
YWNrcy5sZW5ndGgsIDAsCi0gICAgICAgICdFeHBlY3QgZ2V0VXNlck1lZGlhIHRvIHJldHVybiBh
dCBsZWFzdCBvbmUgYXVkaW8gdHJhY2snKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBnZXRO
b2lzZVN0cmVhbSh7IGF1ZGlvOiB0cnVlIH0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3Ry
ZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29u
c3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFja3MoKTsKIAotICAgICAgY29uc3QgdHJhY2sgPSB0
cmFja3NbMF07Ci0gICAgICBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0cmFjaywgbWVkaWFT
dHJlYW0pOworICAgIGNvbnN0IHNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOwog
Ci0gICAgICBhc3NlcnRfdHJ1ZShzZW5kZXIgaW5zdGFuY2VvZiBSVENSdHBTZW5kZXIsCi0gICAg
ICAgICdFeHBlY3Qgc2VuZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOworICAg
IGFzc2VydF90cnVlKHNlbmRlciBpbnN0YW5jZW9mIFJUQ1J0cFNlbmRlciwKKyAgICAgICdFeHBl
Y3Qgc2VuZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOwogCi0gICAgICBhc3Nl
cnRfZXF1YWxzKHNlbmRlci50cmFjaywgdHJhY2ssCi0gICAgICAgIGBFeHBlY3Qgc2VuZGVyJ3Mg
dHJhY2sgdG8gYmUgdGhlIGFkZGVkIHRyYWNrYCk7Ci0gICAgfSk7Ci0gIH0sICdhZGRUcmFjayB3
aXRoIHNpbmdsZSB0cmFjayBhcmd1bWVudCBhbmQgc2luZ2xlIG1lZGlhU3RyZWFtIHNob3VsZCBz
dWNjZWVkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrLAorICAgICAg
YEV4cGVjdCBzZW5kZXIncyB0cmFjayB0byBiZSB0aGUgYWRkZWQgdHJhY2tgKTsKKyAgfSwgJ2Fk
ZFRyYWNrIHdpdGggc2luZ2xlIHRyYWNrIGFyZ3VtZW50IGFuZCBzaW5nbGUgc3RyZWFtIHNob3Vs
ZCBzdWNjZWVkJyk7CiAKLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogCi0gICAgcmV0dXJuIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSkKLSAgICAudGhlbihtZWRp
YVN0cmVhbSA9PiB7Ci0gICAgICBjb25zdCB0cmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3Mo
KTsKLSAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4odHJhY2tzLmxlbmd0aCwgMCwKLSAgICAgICAg
J0V4cGVjdCBnZXRVc2VyTWVkaWEgdG8gcmV0dXJuIGF0IGxlYXN0IG9uZSBhdWRpbyB0cmFjaycp
OworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IGdldE5vaXNlU3RyZWFtKHsgYXVkaW86IHRydWUg
fSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0
cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdldFRy
YWNrcygpOwogCi0gICAgICBjb25zdCB0cmFjayA9IHRyYWNrc1swXTsKLSAgICAgIGNvbnN0IG1l
ZGlhU3RyZWFtMiA9IG5ldyBNZWRpYVN0cmVhbShbdHJhY2tdKTsKLSAgICAgIGNvbnN0IHNlbmRl
ciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBtZWRpYVN0cmVhbSwgbWVkaWFTdHJlYW0yKTsKKyAgICBj
b25zdCBzdHJlYW0yID0gbmV3IE1lZGlhU3RyZWFtKFt0cmFja10pOworICAgIGNvbnN0IHNlbmRl
ciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0sIHN0cmVhbTIpOwogCi0gICAgICBhc3NlcnRf
dHJ1ZShzZW5kZXIgaW5zdGFuY2VvZiBSVENSdHBTZW5kZXIsCi0gICAgICAgICdFeHBlY3Qgc2Vu
ZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOworICAgIGFzc2VydF90cnVlKHNl
bmRlciBpbnN0YW5jZW9mIFJUQ1J0cFNlbmRlciwKKyAgICAgICdFeHBlY3Qgc2VuZGVyIHRvIGJl
IGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOwogCi0gICAgICBhc3NlcnRfZXF1YWxzKHNlbmRl
ci50cmFjaywgdHJhY2ssCi0gICAgICAgIGBFeHBlY3Qgc2VuZGVyJ3MgdHJhY2sgdG8gYmUgdGhl
IGFkZGVkIHRyYWNrYCk7Ci0gICAgfSk7Ci0gIH0sICdhZGRUcmFjayB3aXRoIHNpbmdsZSB0cmFj
ayBhcmd1bWVudCBhbmQgbXVsdGlwbGUgbWVkaWFTdHJlYW1zIHNob3VsZCBzdWNjZWVkJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrLAorICAgICAgYEV4cGVjdCBzZW5k
ZXIncyB0cmFjayB0byBiZSB0aGUgYWRkZWQgdHJhY2tgKTsKKyAgfSwgJ2FkZFRyYWNrIHdpdGgg
c2luZ2xlIHRyYWNrIGFyZ3VtZW50IGFuZCBtdWx0aXBsZSBzdHJlYW1zIHNob3VsZCBzdWNjZWVk
Jyk7CiAKICAgLyoKICAgICA1LjEuICBhZGRUcmFjawpAQCAtMTQ2LDIwICsxMzMsMTYgQEAKICAg
ICAgICAgICBJZiBhbiBSVENSdHBTZW5kZXIgZm9yIHRyYWNrIGFscmVhZHkgZXhpc3RzIGluIHNl
bmRlcnMsIHRocm93IGFuCiAgICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yLgogICAgKi8KLSAg
cHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOwogCi0gICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHsgYXVkaW86IHRydWUgfSkKLSAgICAudGhlbihtZWRpYVN0cmVhbSA9PiB7Ci0gICAg
ICBjb25zdCB0cmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKTsKLSAgICAgIGFzc2VydF9n
cmVhdGVyX3RoYW4odHJhY2tzLmxlbmd0aCwgMCwKLSAgICAgICAgJ0V4cGVjdCBnZXRVc2VyTWVk
aWEgdG8gcmV0dXJuIGF0IGxlYXN0IG9uZSBhdWRpbyB0cmFjaycpOwotCi0gICAgICBjb25zdCB0
cmFjayA9IHRyYWNrc1swXTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVh
bSh7IGF1ZGlvOiB0cnVlIH0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRy
YWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNr
XSA9IHN0cmVhbS5nZXRUcmFja3MoKTsKIAotICAgICAgcGMuYWRkVHJhY2sodHJhY2ssIG1lZGlh
U3RyZWFtKTsKLSAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJvcicsICgpID0+
IHBjLmFkZFRyYWNrKHRyYWNrLCBtZWRpYVN0cmVhbSkpOwotICAgIH0pOworICAgIHBjLmFkZFRy
YWNrKHRyYWNrLCBzdHJlYW0pOworICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJv
cicsICgpID0+IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pKTsKICAgfSwgJ0FkZGluZyB0aGUg
c2FtZSB0cmFjayBtdWx0aXBsZSB0aW1lcyBzaG91bGQgdGhyb3cgSW52YWxpZEFjY2Vzc0Vycm9y
Jyk7CiAKICAgLyoKQEAgLTE4MCw1NiArMTYzLDkyIEBACiAgICAgICAgICAgMy4gIEVuYWJsZSBz
ZW5kaW5nIGRpcmVjdGlvbiBvbiB0aGUgUlRDUnRwVHJhbnNjZWl2ZXIgYXNzb2NpYXRlZAogICAg
ICAgICAgICAgICB3aXRoIHNlbmRlci4KICAgICovCi0gIHRlc3QodCA9PiB7CisgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAKICAgICBjb25zdCB0cmFu
c2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsgZGlyZWN0aW9uOiAncmVjdm9u
bHknIH0pOwogICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrLCBudWxs
KTsKICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3JlY3Zvbmx5Jyk7
CiAKLSAgICBjb25zdCB0cmFjayA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRU
cmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFj
a10gPSBzdHJlYW0uZ2V0VHJhY2tzKCk7CiAgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2so
dHJhY2spOwogCiAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIsIHRyYW5zY2VpdmVyLnNlbmRlcik7
CiAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrKTsKICAgICBhc3NlcnRfZXF1
YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRyZWN2Jyk7CiAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhbc2VuZGVyXSwgcGMuZ2V0U2VuZGVycygpKTsKLQogICB9LCAnYWRkVHJhY2sgd2l0
aCBleGlzdGluZyBzZW5kZXIgd2l0aCBudWxsIHRyYWNrLCBzYW1lIGtpbmQsIGFuZCByZWN2b25s
eSBkaXJlY3Rpb24gc2hvdWxkIHJldXNlIHNlbmRlcicpOwogCi0gIHRlc3QodCA9PiB7CisgIHBy
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAKICAgICBjb25z
dCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOwogICAgIGFzc2VydF9l
cXVhbHModHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrLCBudWxsKTsKICAgICBhc3NlcnRfZXF1YWxz
KHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRyZWN2Jyk7CiAKLSAgICBjb25zdCB0cmFjayA9
IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKKyAgICBjb25zdCBzdHJlYW0gPSBh
d2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsK
KyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNr
ID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJhY2tz
KCk7CiAgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2spOwogCiAgICAgYXNzZXJ0
X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrKTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhzZW5k
ZXIsIHRyYW5zY2VpdmVyLnNlbmRlcik7Ci0KLSAgICBjb25zdCBzZW5kZXJzID0gcGMuZ2V0U2Vu
ZGVycygpOwotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVycy5sZW5ndGgsIDIsCi0gICAgICAnRXhw
ZWN0IDIgc2VuZGVycyBhZGRlZCB0byBjb25uZWN0aW9uJyk7Ci0KLSAgICBhc3NlcnRfdHJ1ZShz
ZW5kZXJzLmluY2x1ZGVzKHNlbmRlciksCi0gICAgICAnRXhwZWN0IHNlbmRlcnMgbGlzdCB0byBp
bmNsdWRlIHNlbmRlcicpOwotCi0gICAgYXNzZXJ0X3RydWUoc2VuZGVycy5pbmNsdWRlcyh0cmFu
c2NlaXZlci5zZW5kZXIpLAotICAgICAgYEV4cGVjdCBzZW5kZXJzIGxpc3QgdG8gaW5jbHVkZSBm
aXJzdCB0cmFuc2NlaXZlcidzIHNlbmRlcmApOworICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLCB0
cmFuc2NlaXZlci5zZW5kZXIpOworICB9LCAnYWRkVHJhY2sgd2l0aCBleGlzdGluZyBzZW5kZXIg
dGhhdCBoYXMgbm90IGJlZW4gdXNlZCB0byBzZW5kIHNob3VsZCByZXVzZSB0aGUgc2VuZGVyJyk7
CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNhbGxlciA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNsb3Nl
KCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkpOworCisgICAgY29uc3Qgc3RyZWFtID0g
YXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7
CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFj
ayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdldFRyYWNr
cygpOworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gY2FsbGVyLmFkZFRyYW5zY2VpdmVyKHRyYWNr
KTsKKyAgICB7CisgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IGNhbGxlci5jcmVhdGVPZmZlcigp
OworICAgICAgYXdhaXQgY2FsbGVyLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgICAg
YXdhaXQgY2FsbGVlLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgIGNvbnN0IGFu
c3dlciA9IGF3YWl0IGNhbGxlZS5jcmVhdGVBbnN3ZXIoKTsKKyAgICAgIGF3YWl0IGNhbGxlZS5z
ZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgICBhd2FpdCBjYWxsZXIuc2V0UmVtb3Rl
RGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICB9CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZl
ci5jdXJyZW50RGlyZWN0aW9uLCAnc2VuZG9ubHknKTsKKworICAgIGNhbGxlci5yZW1vdmVUcmFj
ayh0cmFuc2NlaXZlci5zZW5kZXIpOworICAgIHsKKyAgICAgIGNvbnN0IG9mZmVyID0gYXdhaXQg
Y2FsbGVyLmNyZWF0ZU9mZmVyKCk7CisgICAgICBhd2FpdCBjYWxsZXIuc2V0TG9jYWxEZXNjcmlw
dGlvbihvZmZlcik7CisgICAgICBhd2FpdCBjYWxsZWUuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2Zm
ZXIpOworICAgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgY2FsbGVlLmNyZWF0ZUFuc3dlcigpOwor
ICAgICAgYXdhaXQgY2FsbGVlLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICAgIGF3
YWl0IGNhbGxlci5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworICAgIH0KKyAgICBhc3Nl
cnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3JlY3Zvbmx5Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCAnaW5hY3RpdmUnKTsKIAotICB9
LCAnYWRkVHJhY2sgd2l0aCBleGlzdGluZyBzZW5kZXIgd2l0aCBudWxsIHRyYWNrLCBzYW1lIGtp
bmQsIGFuZCBzZW5kcmVjdiBkaXJlY3Rpb24gc2hvdWxkIGNyZWF0ZSBuZXcgc2VuZGVyJyk7Cisg
ICAgLy8gfHRyYW5zY2VpdmVyLnNlbmRlcnwgaXMgY3VycmVudGx5IG5vdCB1c2VkIGZvciBzZW5k
aW5nLCBidXQgaXQgc2hvdWxkIG5vdAorICAgIC8vIGJlIHJldXNlZCBiZWNhdXNlIGl0IGhhcyBi
ZWVuIHVzZWQgZm9yIHNlbmRpbmcgYmVmb3JlLgorICAgIGNvbnN0IHNlbmRlciA9IGNhbGxlci5h
ZGRUcmFjayh0cmFjayk7CisgICAgYXNzZXJ0X3RydWUoc2VuZGVyICE9IG51bGwpOworICAgIGFz
c2VydF9ub3RfZXF1YWxzKHNlbmRlciwgdHJhbnNjZWl2ZXIuc2VuZGVyKTsKKyAgfSwgJ2FkZFRy
YWNrIHdpdGggZXhpc3Rpbmcgc2VuZGVyIHRoYXQgaGFzIGJlZW4gdXNlZCB0byBzZW5kIHNob3Vs
ZCBjcmVhdGUgbmV3IHNlbmRlcicpOwogCi0gIHRlc3QodCA9PiB7CisgIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAKICAgICBjb25zdCB0cmFuc2NlaXZl
ciA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycsIHsgZGlyZWN0aW9uOiAncmVjdm9ubHknIH0p
OwogICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrLCBudWxsKTsKICAg
ICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3JlY3Zvbmx5Jyk7CiAKLSAg
ICBjb25zdCB0cmFjayA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKKyAgICBj
b25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3Mo
KS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10gPSBz
dHJlYW0uZ2V0VHJhY2tzKCk7CiAgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2sp
OwogCiAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrKTsKQEAgLTI0NCw3ICsy
NjMsNiBAQAogCiAgICAgYXNzZXJ0X3RydWUoc2VuZGVycy5pbmNsdWRlcyh0cmFuc2NlaXZlci5z
ZW5kZXIpLAogICAgICAgYEV4cGVjdCBzZW5kZXJzIGxpc3QgdG8gaW5jbHVkZSBmaXJzdCB0cmFu
c2NlaXZlcidzIHNlbmRlcmApOwotCiAgIH0sICdhZGRUcmFjayB3aXRoIGV4aXN0aW5nIHNlbmRl
ciB3aXRoIG51bGwgdHJhY2ssIGRpZmZlcmVudCBraW5kLCBhbmQgcmVjdm9ubHkgZGlyZWN0aW9u
IHNob3VsZCBjcmVhdGUgbmV3IHNlbmRlcicpOwogCiAgIC8qCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVj
dGlvbi1hZGRUcmFuc2NlaXZlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyMDU3MTRmMDczOWNkYzlmN2I1YjIx
ZWVjYmMzMjE2MmI2MGUzOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNDk0ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0
aXRsZT5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkVHJhbnNjZWl2ZXI8L3RpdGxlPgot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9IlJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
ICAndXNlIHN0cmljdCc7Ci0KLSAgLy8gVGVzdCBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGVk
aXRvciBkcmFmdDoKLSAgLy8gaHR0cHM6Ly9yYXdnaXQuY29tL3czYy93ZWJydGMtcGMvY2M4ZDgw
ZjQ1NWI4NmM4MDQxZDYzYmNlYjhiNDU3ZjQ1YzcyYWE4OS93ZWJydGMuaHRtbAotCi0gIC8vIFRo
ZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gUlRDUGVlckNvbm5l
Y3Rpb24taGVscGVyLmpzOgotICAvLyAgIGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygpCi0KLSAg
LyoKLSAgICA1LjEuICBSVENQZWVyQ29ubmVjdGlvbiBJbnRlcmZhY2UgRXh0ZW5zaW9ucwotCi0g
ICAgICBwYXJ0aWFsIGludGVyZmFjZSBSVENQZWVyQ29ubmVjdGlvbiB7Ci0gICAgICAgICAgc2Vx
dWVuY2U8UlRDUnRwU2VuZGVyPiAgICAgIGdldFNlbmRlcnMoKTsKLSAgICAgICAgICBzZXF1ZW5j
ZTxSVENSdHBSZWNlaXZlcj4gICAgZ2V0UmVjZWl2ZXJzKCk7Ci0gICAgICAgICAgc2VxdWVuY2U8
UlRDUnRwVHJhbnNjZWl2ZXI+IGdldFRyYW5zY2VpdmVycygpOwotICAgICAgICAgIFJUQ1J0cFRy
YW5zY2VpdmVyICAgICAgICAgICBhZGRUcmFuc2NlaXZlcigoTWVkaWFTdHJlYW1UcmFjayBvciBE
T01TdHJpbmcpIHRyYWNrT3JLaW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBSVENSdHBUcmFuc2NlaXZlckluaXQgaW5pdCk7
Ci0gICAgICAgICAgLi4uCi0gICAgICB9OwotCi0gICAgICBkaWN0aW9uYXJ5IFJUQ1J0cFRyYW5z
Y2VpdmVySW5pdCB7Ci0gICAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gICAgICAg
ICBkaXJlY3Rpb24gPSAic2VuZHJlY3YiOwotICAgICAgICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFt
PiAgICAgICAgICAgICAgc3RyZWFtczsKLSAgICAgICAgICBzZXF1ZW5jZTxSVENSdHBFbmNvZGlu
Z1BhcmFtZXRlcnM+IHNlbmRFbmNvZGluZ3M7Ci0gICAgICB9OwotCi0gICAgICBlbnVtIFJUQ1J0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uIHsKLSAgICAgICAgInNlbmRyZWN2IiwKLSAgICAgICAgInNl
bmRvbmx5IiwKLSAgICAgICAgInJlY3Zvbmx5IiwKLSAgICAgICAgImluYWN0aXZlIgotICAgICAg
fTsKLQotICAgIDUuMi4gIFJUQ1J0cFNlbmRlciBJbnRlcmZhY2UKLQotICAgICAgaW50ZXJmYWNl
IFJUQ1J0cFNlbmRlciB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRy
YWNrPyB0cmFjazsKLSAgICAgICAgLi4uCi0gICAgICB9OwotCi0gICAgNS4zLiAgUlRDUnRwUmVj
ZWl2ZXIgSW50ZXJmYWNlCi0KLSAgICAgIGludGVyZmFjZSBSVENSdHBSZWNlaXZlciB7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrICB0cmFjazsKLSAgICAgICAg
Li4uCi0gICAgICB9OwotCi0gICAgNS40LiAgUlRDUnRwVHJhbnNjZWl2ZXIgSW50ZXJmYWNlCi0K
LSAgICAgIGludGVyZmFjZSBSVENSdHBUcmFuc2NlaXZlciB7Ci0gICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmc/ICAgICAgICAgICAgICAgICAgbWlkOwotICAgICAgICBbU2FtZU9i
amVjdF0KLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFNlbmRlciAgICAgICAgICAg
ICAgICBzZW5kZXI7Ci0gICAgICAgIFtTYW1lT2JqZWN0XQotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgUlRDUnRwUmVjZWl2ZXIgICAgICAgICAgICAgIHJlY2VpdmVyOwotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgIHN0b3BwZWQ7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiAgZGlyZWN0
aW9uOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b24/IGN1cnJlbnREaXJlY3Rpb247Ci0gICAgICAgIC4uLgotICAgICAgfTsKLQotICAgICAgTm90
ZQotICAgICAgICBXaGlsZSBhZGRUcmFjayBjaGVja3MgaWYgdGhlIE1lZGlhU3RyZWFtVHJhY2sg
Z2l2ZW4gYXMgYW4gYXJndW1lbnQgaXMKLSAgICAgICAgYWxyZWFkeSBiZWluZyBzZW50IHRvIGF2
b2lkIHNlbmRpbmcgdGhlIHNhbWUgTWVkaWFTdHJlYW1UcmFjayB0d2ljZSwKLSAgICAgICAgdGhl
IG90aGVyIHdheXMgZG8gbm90LCBhbGxvd2luZyB0aGUgc2FtZSBNZWRpYVN0cmVhbVRyYWNrIHRv
IGJlIHNlbnQKLSAgICAgICAgc2V2ZXJhbCB0aW1lcyBzaW11bHRhbmVvdXNseS4KLSAgICovCi0K
LSAgLyoKLSAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgotICAgICAgMy4gIElmIHRoZSBmaXJzdCBh
cmd1bWVudCBpcyBhIHN0cmluZywgbGV0IGl0IGJlIGtpbmQgYW5kIHJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzOgotICAgICAgICAxLiAgSWYga2luZCBpcyBub3QgYSBsZWdhbCBNZWRpYVN0cmVhbVRy
YWNrIGtpbmQsIHRocm93IGEgVHlwZUVycm9yLgotICAgKi8KLSAgdGVzdCh0ID0+IHsKLSAgICBj
b25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMuY2xvc2UoKSk7Ci0KLSAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ2FkZFRyYW5z
Y2VpdmVyJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHBjLmFk
ZFRyYW5zY2VpdmVyKCdpbnZhbGlkJykpOwotICB9LCAnYWRkVHJhbnNjZWl2ZXIoKSB3aXRoIHN0
cmluZyBhcmd1bWVudCBhcyBpbnZhbGlkIGtpbmQgc2hvdWxkIHRocm93IFR5cGVFcnJvcicpOwot
Ci0gIC8qCi0gICAgNS4xLiAgYWRkVHJhbnNjZWl2ZXIKLSAgICAgIFRoZSBpbml0aWFsIHZhbHVl
IG9mIG1pZCBpcyBudWxsLgotCi0gICAgICAzLiAgSWYgdGhlIGRpY3Rpb25hcnkgYXJndW1lbnQg
aXMgcHJlc2VudCwgbGV0IGRpcmVjdGlvbiBiZSB0aGUgdmFsdWUgb2YgdGhlCi0gICAgICAgICAg
ZGlyZWN0aW9uIG1lbWJlci4gT3RoZXJ3aXNlIGxldCBkaXJlY3Rpb24gYmUgc2VuZHJlY3YuCi0g
ICAgICA0LiAgSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBsZXQgaXQgYmUga2lu
ZCBhbmQgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIDIuICBMZXQgdHJhY2sgYmUg
bnVsbC4KLSAgICAgIDguICBDcmVhdGUgYW4gUlRDUnRwU2VuZGVyIHdpdGggdHJhY2ssIHN0cmVh
bXMgYW5kIHNlbmRFbmNvZGluZ3MgYW5kIGxldAotICAgICAgICAgIHNlbmRlciBiZSB0aGUgcmVz
dWx0LgotICAgICAgOS4gIENyZWF0ZSBhbiBSVENSdHBSZWNlaXZlciB3aXRoIGtpbmQgYW5kIGxl
dCByZWNlaXZlciBiZSB0aGUgcmVzdWx0LgotICAgICAgMTAuIENyZWF0ZSBhbiBSVENSdHBUcmFu
c2NlaXZlciB3aXRoIHNlbmRlciwgcmVjZWl2ZXIgYW5kIGRpcmVjdGlvbiwgYW5kIGxldAotICAg
ICAgICAgIHRyYW5zY2VpdmVyIGJlIHRoZSByZXN1bHQuCi0gICAgICAxMS4gQWRkIHRyYW5zY2Vp
dmVyIHRvIGNvbm5lY3Rpb24ncyBzZXQgb2YgdHJhbnNjZWl2ZXJzLgotCi0gICAgNS4yLiAgUlRD
UnRwU2VuZGVyIEludGVyZmFjZQotICAgICAgQ3JlYXRlIGFuIFJUQ1J0cFNlbmRlcgotICAgICAg
ICAyLiAgU2V0IHNlbmRlci50cmFjayB0byB0cmFjay4KLQotICAgIDUuMy4gIFJUQ1J0cFJlY2Vp
dmVyIEludGVyZmFjZQotICAgICAgQ3JlYXRlIGFuIFJUQ1J0cFJlY2VpdmVyCi0gICAgICAgIDIu
ICBMZXQgdHJhY2sgYmUgYSBuZXcgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgW0dFVFVTRVJNRURJ
QV0uIFRoZSBzb3VyY2Ugb2YKLSAgICAgICAgICAgIHRyYWNrIGlzIGEgcmVtb3RlIHNvdXJjZSBw
cm92aWRlZCBieSByZWNlaXZlci4KLSAgICAgICAgMy4gIEluaXRpYWxpemUgdHJhY2sua2luZCB0
byBraW5kLgotICAgICAgICA1LiAgSW5pdGlhbGl6ZSB0cmFjay5sYWJlbCB0byB0aGUgcmVzdWx0
IG9mIGNvbmNhdGVuYXRpbmcgdGhlIHN0cmluZyAicmVtb3RlICIKLSAgICAgICAgICAgIHdpdGgg
a2luZC4KLSAgICAgICAgNi4gIEluaXRpYWxpemUgdHJhY2sucmVhZHlTdGF0ZSB0byBsaXZlLgot
ICAgICAgICA3LiAgSW5pdGlhbGl6ZSB0cmFjay5tdXRlZCB0byB0cnVlLgotICAgICAgICA4LiAg
U2V0IHJlY2VpdmVyLnRyYWNrIHRvIHRyYWNrLgotCi0gICAgNS40LiAgUlRDUnRwVHJhbnNjZWl2
ZXIgSW50ZXJmYWNlCi0gICAgICBDcmVhdGUgYW4gUlRDUnRwVHJhbnNjZWl2ZXIKLSAgICAgICAg
Mi4gIFNldCB0cmFuc2NlaXZlci5zZW5kZXIgdG8gc2VuZGVyLgotICAgICAgICAzLiAgU2V0IHRy
YW5zY2VpdmVyLnJlY2VpdmVyIHRvIHJlY2VpdmVyLgotICAgICAgICA0LiAgTGV0IHRyYW5zY2Vp
dmVyIGhhdmUgYSBbW0RpcmVjdGlvbl1dIGludGVybmFsIHNsb3QsIGluaXRpYWxpemVkIHRvIGRp
cmVjdGlvbi4KLSAgICAgICAgNS4gIExldCB0cmFuc2NlaXZlciBoYXZlIGEgW1tDdXJyZW50RGly
ZWN0aW9uXV0gaW50ZXJuYWwgc2xvdCwgaW5pdGlhbGl6ZWQKLSAgICAgICAgICAgIHRvIG51bGwu
Ci0gICAgICAgIDYuICBTZXQgdHJhbnNjZWl2ZXIuc3RvcHBlZCB0byBmYWxzZS4KLSAgICovCi0g
IHRlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwotCi0gICAgYXNzZXJ0X2lkbF9hdHRy
aWJ1dGUocGMsICdhZGRUcmFuc2NlaXZlcicpOwotCi0gICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBw
Yy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKLSAgICBhc3NlcnRfdHJ1ZSh0cmFuc2NlaXZlciBp
bnN0YW5jZW9mIFJUQ1J0cFRyYW5zY2VpdmVyLAotICAgICAgJ0V4cGVjdCB0cmFuc2NlaXZlciB0
byBiZSBpbnN0YW5jZSBvZiBSVENSdHBUcmFuc2NlaXZlcicpOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyh0cmFuc2NlaXZlci5taWQsIG51bGwpOwotICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIu
c3RvcHBlZCwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuZGlyZWN0aW9u
LCAnc2VuZHJlY3YnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJlbnREaXJl
Y3Rpb24sIG51bGwpOwotCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhbdHJhbnNjZWl2ZXJdLCBw
Yy5nZXRUcmFuc2NlaXZlcnMoKSwKLSAgICAgIGBFeHBlY3QgYWRkZWQgdHJhbnNjZWl2ZXIgdG8g
YmUgdGhlIG9ubHkgZWxlbWVudCBpbiBjb25uZWN0aW9uJ3MgbGlzdCBvZiB0cmFuc2NlaXZlcnNg
KTsKLQotICAgIGNvbnN0IHNlbmRlciA9IHRyYW5zY2VpdmVyLnNlbmRlcjsKLQotICAgIGFzc2Vy
dF90cnVlKHNlbmRlciBpbnN0YW5jZW9mIFJUQ1J0cFNlbmRlciwKLSAgICAgICdFeHBlY3Qgc2Vu
ZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhzZW5kZXIudHJhY2ssIG51bGwpOwotCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhbc2VuZGVy
XSwgcGMuZ2V0U2VuZGVycygpLAotICAgICAgYEV4cGVjdCBhZGRlZCBzZW5kZXIgdG8gYmUgdGhl
IG9ubHkgZWxlbWVudCBpbiBjb25uZWN0aW9uJ3MgbGlzdCBvZiBzZW5kZXJzYCk7Ci0KLSAgICBj
b25zdCByZWNlaXZlciA9IHRyYW5zY2VpdmVyLnJlY2VpdmVyOwotICAgIGFzc2VydF90cnVlKHJl
Y2VpdmVyIGluc3RhbmNlb2YgUlRDUnRwUmVjZWl2ZXIsCi0gICAgICAnRXhwZWN0IHJlY2VpdmVy
IHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyJyk7Ci0KLSAgICBjb25zdCB0cmFjayA9
IHJlY2VpdmVyLnRyYWNrOwotICAgIGFzc2VydF90cnVlKHRyYWNrIGluc3RhbmNlb2YgTWVkaWFT
dHJlYW1UcmFjaywKLSAgICAgICdFeHBlY3QgcmVjZWl2ZXIudHJhY2sgdG8gYmUgaW5zdGFuY2Ug
b2YgTWVkaWFTdHJlYW1UcmFjaycpOwotCi0gICAgYXNzZXJ0X2VxdWFscyh0cmFjay5raW5kLCAn
YXVkaW8nKTsKLSAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmxhYmVsLCAncmVtb3RlIGF1ZGlvJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh0cmFjay5yZWFkeVN0YXRlLCAnbGl2ZScpOwotICAgIGFzc2Vy
dF9lcXVhbHModHJhY2subXV0ZWQsIHRydWUpOwotCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhb
cmVjZWl2ZXJdLCBwYy5nZXRSZWNlaXZlcnMoKSwKLSAgICAgIGBFeHBlY3QgYWRkZWQgcmVjZWl2
ZXIgdG8gYmUgdGhlIG9ubHkgZWxlbWVudCBpbiBjb25uZWN0aW9uJ3MgbGlzdCBvZiByZWNlaXZl
cnNgKTsKLQotICB9LCBgYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykgc2hvdWxkIHJldHVybiBhbiBh
dWRpbyB0cmFuc2NlaXZlcmApOwotCi0gIHRlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkp
OwotCi0gICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUocGMsICdhZGRUcmFuc2NlaXZlcicpOwotCi0g
ICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKTsKLSAgICBh
c3NlcnRfdHJ1ZSh0cmFuc2NlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFRyYW5zY2VpdmVyLAotICAg
ICAgJ0V4cGVjdCB0cmFuc2NlaXZlciB0byBiZSBpbnN0YW5jZSBvZiBSVENSdHBUcmFuc2NlaXZl
cicpOwotCi0gICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5taWQsIG51bGwpOwotICAgIGFz
c2VydF9lcXVhbHModHJhbnNjZWl2ZXIuc3RvcHBlZCwgZmFsc2UpOwotICAgIGFzc2VydF9lcXVh
bHModHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAnc2VuZHJlY3YnKTsKLQotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoW3RyYW5zY2VpdmVyXSwgcGMuZ2V0VHJhbnNjZWl2ZXJzKCksCi0gICAgICBgRXhw
ZWN0IGFkZGVkIHRyYW5zY2VpdmVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQgaW4gY29ubmVjdGlv
bidzIGxpc3Qgb2YgdHJhbnNjZWl2ZXJzYCk7Ci0KLSAgICBjb25zdCBzZW5kZXIgPSB0cmFuc2Nl
aXZlci5zZW5kZXI7Ci0KLSAgICBhc3NlcnRfdHJ1ZShzZW5kZXIgaW5zdGFuY2VvZiBSVENSdHBT
ZW5kZXIsCi0gICAgICAnRXhwZWN0IHNlbmRlciB0byBiZSBpbnN0YW5jZSBvZiBSVENSdHBTZW5k
ZXInKTsKLQotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCBudWxsKTsKLQotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoW3NlbmRlcl0sIHBjLmdldFNlbmRlcnMoKSwKLSAgICAgIGBFeHBl
Y3QgYWRkZWQgc2VuZGVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQgaW4gY29ubmVjdGlvbidzIGxp
c3Qgb2Ygc2VuZGVyc2ApOwotCi0gICAgY29uc3QgcmVjZWl2ZXIgPSB0cmFuc2NlaXZlci5yZWNl
aXZlcjsKLSAgICBhc3NlcnRfdHJ1ZShyZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVy
LAotICAgICAgJ0V4cGVjdCByZWNlaXZlciB0byBiZSBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZl
cicpOwotCi0gICAgY29uc3QgdHJhY2sgPSByZWNlaXZlci50cmFjazsKLSAgICBhc3NlcnRfdHJ1
ZSh0cmFjayBpbnN0YW5jZW9mIE1lZGlhU3RyZWFtVHJhY2ssCi0gICAgICAnRXhwZWN0IHJlY2Vp
dmVyLnRyYWNrIHRvIGJlIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2snKTsKLQotICAgIGFz
c2VydF9lcXVhbHModHJhY2sua2luZCwgJ3ZpZGVvJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0cmFj
ay5sYWJlbCwgJ3JlbW90ZSB2aWRlbycpOwotICAgIGFzc2VydF9lcXVhbHModHJhY2sucmVhZHlT
dGF0ZSwgJ2xpdmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLm11dGVkLCB0cnVlKTsKLQot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoW3JlY2VpdmVyXSwgcGMuZ2V0UmVjZWl2ZXJzKCksCi0g
ICAgICBgRXhwZWN0IGFkZGVkIHJlY2VpdmVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQgaW4gY29u
bmVjdGlvbidzIGxpc3Qgb2YgcmVjZWl2ZXJzYCk7Ci0KLSAgfSwgYGFkZFRyYW5zY2VpdmVyKCd2
aWRlbycpIHNob3VsZCByZXR1cm4gYSB2aWRlbyB0cmFuc2NlaXZlcmApOwotCi0gIHRlc3QodCA9
PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICB0LmFkZF9j
bGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwotCi0gICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5h
ZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7IGRpcmVjdGlvbjogJ3NlbmRvbmx5JyB9KTsKLSAgICBh
c3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRvbmx5Jyk7Ci0gIH0sIGBh
ZGRUcmFuc2NlaXZlcigpIHdpdGggZGlyZWN0aW9uIHNlbmRvbmx5IHNob3VsZCBoYXZlIHJlc3Vs
dCB0cmFuc2NlaXZlci5kaXJlY3Rpb24gYmUgdGhlIHNhbWVgKTsKLQotICB0ZXN0KHQgPT4gewot
ICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKLQotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJh
bnNjZWl2ZXIoJ2F1ZGlvJywgeyBkaXJlY3Rpb246ICdpbmFjdGl2ZScgfSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdpbmFjdGl2ZScpOwotICB9LCBgYWRkVHJh
bnNjZWl2ZXIoKSB3aXRoIGRpcmVjdGlvbiBpbmFjdGl2ZSBzaG91bGQgaGF2ZSByZXN1bHQgdHJh
bnNjZWl2ZXIuZGlyZWN0aW9uIGJlIHRoZSBzYW1lYCk7Ci0KLSAgdGVzdCh0ID0+IHsKLSAgICBj
b25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMuY2xvc2UoKSk7Ci0KLSAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ2FkZFRyYW5z
Y2VpdmVyJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+Ci0gICAg
ICBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7IGRpcmVjdGlvbjogJ2ludmFsaWQnIH0pKTsK
LSAgfSwgYGFkZFRyYW5zY2VpdmVyKCkgd2l0aCBpbnZhbGlkIGRpcmVjdGlvbiBzaG91bGQgdGhy
b3cgVHlwZUVycm9yYCk7Ci0KLSAgLyoKLSAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgotICAgICAg
NS4gIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIE1lZGlhU3RyZWFtVHJhY2sgLCBsZXQgaXQg
YmUgdHJhY2sgYW5kIGxldAotICAgICAgICAgIGtpbmQgYmUgdHJhY2sua2luZC4KLSAgICovCi0g
IHRlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwotCi0gICAgY29uc3QgdHJhY2sgPSBn
ZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soJ2F1ZGlvJyk7Ci0gICAgY29uc3QgdHJhbnNjZWl2ZXIg
PSBwYy5hZGRUcmFuc2NlaXZlcih0cmFjayk7Ci0gICAgY29uc3QgeyBzZW5kZXIsIHJlY2VpdmVy
IH0gPSB0cmFuc2NlaXZlcjsKLQotICAgIGFzc2VydF90cnVlKHNlbmRlciBpbnN0YW5jZW9mIFJU
Q1J0cFNlbmRlciwKLSAgICAgICdFeHBlY3Qgc2VuZGVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0
cFNlbmRlcicpOwotCi0gICAgYXNzZXJ0X3RydWUocmVjZWl2ZXIgaW5zdGFuY2VvZiBSVENSdHBS
ZWNlaXZlciwKLSAgICAgICdFeHBlY3QgcmVjZWl2ZXIgdG8gYmUgaW5zdGFuY2Ugb2YgUlRDUnRw
UmVjZWl2ZXInKTsKLQotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCB0cmFjaywKLSAg
ICAgICdFeHBlY3Qgc2VuZGVyLnRyYWNrIHNob3VsZCBiZSB0aGUgdHJhY2sgdGhhdCBpcyBhZGRl
ZCcpOwotCi0gICAgY29uc3QgcmVjZWl2ZXJUcmFjayA9IHJlY2VpdmVyLnRyYWNrOwotICAgIGFz
c2VydF90cnVlKHJlY2VpdmVyVHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrLAotICAg
ICAgJ0V4cGVjdCByZWNlaXZlci50cmFjayB0byBiZSBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRy
YWNrJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVyVHJhY2sua2luZCwgJ2F1ZGlvJywK
LSAgICAgIGByZWNlaXZlci50cmFjayBzaG91bGQgaGF2ZSB0aGUgc2FtZSBraW5kIGFzIGFkZGVk
IHRyYWNrJ3Mga2luZGApOwotCi0gICAgYXNzZXJ0X2VxdWFscyhyZWNlaXZlclRyYWNrLmxhYmVs
LCAncmVtb3RlIGF1ZGlvJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWNlaXZlclRyYWNrLnJlYWR5
U3RhdGUsICdsaXZlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWNlaXZlclRyYWNrLm11dGVkLCB0
cnVlKTsKLQotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoW3RyYW5zY2VpdmVyXSwgcGMuZ2V0VHJh
bnNjZWl2ZXJzKCksCi0gICAgICBgRXhwZWN0IGFkZGVkIHRyYW5zY2VpdmVyIHRvIGJlIHRoZSBv
bmx5IGVsZW1lbnQgaW4gY29ubmVjdGlvbidzIGxpc3Qgb2YgdHJhbnNjZWl2ZXJzYCk7Ci0KLSAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKFtzZW5kZXJdLCBwYy5nZXRTZW5kZXJzKCksCi0gICAgICBg
RXhwZWN0IGFkZGVkIHNlbmRlciB0byBiZSB0aGUgb25seSBlbGVtZW50IGluIGNvbm5lY3Rpb24n
cyBsaXN0IG9mIHNlbmRlcnNgKTsKLQotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoW3JlY2VpdmVy
XSwgcGMuZ2V0UmVjZWl2ZXJzKCksCi0gICAgICBgRXhwZWN0IGFkZGVkIHJlY2VpdmVyIHRvIGJl
IHRoZSBvbmx5IGVsZW1lbnQgaW4gY29ubmVjdGlvbidzIGxpc3Qgb2YgcmVjZWl2ZXJzYCk7Ci0K
LSAgfSwgJ2FkZFRyYW5zY2VpdmVyKHRyYWNrKSBzaG91bGQgaGF2ZSByZXN1bHQgd2l0aCBzZW5k
ZXIudHJhY2sgYmUgZ2l2ZW4gdHJhY2snKTsKLQotICB0ZXN0KHQgPT4gewotICAgIGNvbnN0IHBj
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5j
bG9zZSgpKTsKLQotICAgIGNvbnN0IHRyYWNrID0gZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrKCdh
dWRpbycpOwotICAgIGNvbnN0IHRyYW5zY2VpdmVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNr
KTsKLSAgICBjb25zdCB0cmFuc2NlaXZlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcih0cmFjayk7Ci0K
LSAgICBhc3NlcnRfbm90X2VxdWFscyh0cmFuc2NlaXZlcjEsIHRyYW5zY2VpdmVyMik7Ci0KLSAg
ICBjb25zdCBzZW5kZXIxID0gdHJhbnNjZWl2ZXIxLnNlbmRlcjsKLSAgICBjb25zdCBzZW5kZXIy
ID0gdHJhbnNjZWl2ZXIyLnNlbmRlcjsKLQotICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlbmRlcjEs
IHNlbmRlcjIpOwotICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIxLnNlbmRlci50cmFjaywg
dHJhY2spOwotICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIyLnNlbmRlci50cmFjaywgdHJh
Y2spOwotCi0gICAgY29uc3QgdHJhbnNjZWl2ZXJzID0gcGMuZ2V0VHJhbnNjZWl2ZXJzKCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlcnMubGVuZ3RoLCAyKTsKLSAgICBhc3NlcnRfdHJ1
ZSh0cmFuc2NlaXZlcnMuaW5jbHVkZXModHJhbnNjZWl2ZXIxKSk7Ci0gICAgYXNzZXJ0X3RydWUo
dHJhbnNjZWl2ZXJzLmluY2x1ZGVzKHRyYW5zY2VpdmVyMikpOwotCi0gICAgY29uc3Qgc2VuZGVy
cyA9IHBjLmdldFNlbmRlcnMoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlcnMubGVuZ3RoLCAy
KTsKLSAgICBhc3NlcnRfdHJ1ZShzZW5kZXJzLmluY2x1ZGVzKHNlbmRlcjEpKTsKLSAgICBhc3Nl
cnRfdHJ1ZShzZW5kZXJzLmluY2x1ZGVzKHNlbmRlcjIpKTsKLQotICB9LCAnYWRkVHJhbnNjZWl2
ZXIodHJhY2spIG11bHRpcGxlIHRpbWVzIHNob3VsZCBjcmVhdGUgbXVsdGlwbGUgdHJhbnNjZWl2
ZXJzJyk7Ci0KLSAgLyoKLSAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgotICAgICAgNi4gIFZlcmlm
eSB0aGF0IGVhY2ggcmlkIHZhbHVlIGluIHNlbmRFbmNvZGluZ3MgaXMgY29tcG9zZWQgb25seSBv
ZgotICAgICAgICAgIGNhc2Utc2Vuc2l0aXZlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIChhLXos
IEEtWiwgMC05KSB1cCB0byBhIG1heGltdW0KLSAgICAgICAgICBvZiAxNiBjaGFyYWN0ZXJzLiBJ
ZiBvbmUgb2YgdGhlIFJJRHMgZG9lcyBub3QgbWVldCB0aGVzZSByZXF1aXJlbWVudHMsCi0gICAg
ICAgICAgdGhyb3cgYSBUeXBlRXJyb3IuCi0gICAqLwotICB0ZXN0KHQgPT4gewotICAgIGNvbnN0
IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
Yy5jbG9zZSgpKTsKLSAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ2FkZFRyYW5zY2VpdmVy
Jyk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4KLSAgICAgIHBj
LmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsKLSAgICAgICAgc2VuZEVuY29kaW5nczogW3sKLSAg
ICAgICAgICByaWQ6ICdASW52YWxpZCEnCi0gICAgICAgIH1dCi0gICAgICB9KSk7Ci0gIH0sICdh
ZGRUcmFuc2NlaXZlcigpIHdpdGggcmlkIGNvbnRhaW5pbmcgaW52YWxpZCBub24tYWxwaGFudW1l
cmljIGNoYXJhY3RlcnMgc2hvdWxkIHRocm93IFR5cGVFcnJvcicpOwotCi0gIHRlc3QodCA9PiB7
Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICB0LmFkZF9jbGVh
bnVwKCgpID0+IHBjLmNsb3NlKCkpOwotICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHBjLCAnYWRk
VHJhbnNjZWl2ZXInKTsKLQotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PgotICAgICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgewotICAgICAgICBzZW5kRW5jb2Rp
bmdzOiBbewotICAgICAgICAgIHJpZDogJ2EnLnJlcGVhdCgxNykKLSAgICAgICAgfV0KLSAgICAg
IH0pKTsKLSAgfSwgJ2FkZFRyYW5zY2VpdmVyKCkgd2l0aCByaWQgbG9uZ2VyIHRoYW4gMTYgY2hh
cmFjdGVycyBzaG91bGQgdGhyb3cgVHlwZUVycm9yJyk7Ci0KLSAgdGVzdCh0ID0+IHsKLSAgICBj
b25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMuY2xvc2UoKSk7Ci0gICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgewotICAgICAg
c2VuZEVuY29kaW5nczogW3sKLSAgICAgICAgcmlkOiAnZm9vJwotICAgICAgfV0KLSAgICB9KTsK
LSAgfSwgYGFkZFRyYW5zY2VpdmVyKCkgd2l0aCB2YWxpZCByaWQgdmFsdWUgc2hvdWxkIHN1Y2Nl
ZWRgKTsKLQotICAvKgotICAgIDUuMS4gIGFkZFRyYW5zY2VpdmVyCi0gICAgICA3LiAgSWYgYW55
IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyBkaWN0aW9uYXJ5IGluIHNlbmRFbmNvZGluZ3MgY29u
dGFpbnMgYQotICAgICAgICAgIHJlYWQtb25seSBwYXJhbWV0ZXIgb3RoZXIgdGhhbiByaWQsIHRo
cm93IGFuIEludmFsaWRBY2Nlc3NFcnJvci4KLQotICAgICAgLSBUaGUgc2VuZEVuY29kaW5ncyBh
cmd1bWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygb2ZmZXJlZAotICAg
ICAgICBzaW11bGNhc3QgZW5jb2RpbmdzLCBhbmQgb3B0aW9uYWxseSB0aGVpciBSSURzIGFuZCBl
bmNvZGluZyBwYXJhbWV0ZXJzLgotICAgICAgICBBc2lkZSBmcm9tIHJpZCAsIGFsbCByZWFkLW9u
bHkgcGFyYW1ldGVycyBpbiB0aGUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzCi0gICAgICAgIGRp
Y3Rpb25hcmllcywgc3VjaCBhcyBzc3JjLCBtdXN0IGJlIGxlZnQgdW5zZXQsIG9yIGFuIGVycm9y
IHdpbGwgYmUgdGhyb3duLgotICAgKi8KLSAgdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2Uo
KSk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkQWNjZXNzRXJyb3InLCAoKSA9PgotICAg
ICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgewotICAgICAgICBzZW5kRW5jb2RpbmdzOiBb
ewotICAgICAgICAgIHNzcmM6IDIKLSAgICAgICAgfV0KLSAgICAgIH0pKTsKLSAgfSwgYGFkZFRy
YW5zY2VpdmVyKCkgd2l0aCByZWFkb25seSBzc3JjIHNldCBzaG91bGQgdGhyb3cgSW52YWxpZEFj
Y2Vzc0Vycm9yYCk7Ci0KLSAgdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOwotICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7Ci0KLSAg
ICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkQWNjZXNzRXJyb3InLCAoKSA9PgotICAgICAgcGMuYWRk
VHJhbnNjZWl2ZXIoJ2F1ZGlvJywgewotICAgICAgICBzZW5kRW5jb2RpbmdzOiBbewotICAgICAg
ICAgIHJ0eDogewotICAgICAgICAgICAgc3NyYzogMgotICAgICAgICAgIH0KLSAgICAgICAgfV0K
LSAgICAgIH0pKTsKLSAgfSwgYGFkZFRyYW5zY2VpdmVyKCkgd2l0aCByZWFkb25seSBydHggc2V0
IHNob3VsZCB0aHJvdyBJbnZhbGlkQWNjZXNzRXJyb3JgKTsKLQotICB0ZXN0KHQgPT4gewotICAg
IGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYy5jbG9zZSgpKTsKLQotICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJv
cicsICgpID0+Ci0gICAgICBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7Ci0gICAgICAgIHNl
bmRFbmNvZGluZ3M6IFt7Ci0gICAgICAgICAgZmVjOiB7Ci0gICAgICAgICAgICBzc3JjOiAyCi0g
ICAgICAgICAgfQotICAgICAgICB9XQotICAgICAgfSkpOwotICB9LCBgYWRkVHJhbnNjZWl2ZXIo
KSB3aXRoIHJlYWRvbmx5IGZlYyBzZXQgc2hvdWxkIHRocm93IEludmFsaWRBY2Nlc3NFcnJvcmAp
OwotCi0gIHRlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKLSAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwotCi0gICAgcGMuYWRkVHJh
bnNjZWl2ZXIoJ2F1ZGlvJywgewotICAgICAgc2VuZEVuY29kaW5nczogW3sKLSAgICAgICAgZHR4
OiAnZW5hYmxlZCcsCi0gICAgICAgIGFjdGl2ZTogZmFsc2UsCi0gICAgICAgIHByaW9yaXR5OiAn
bG93JywKLSAgICAgICAgcHRpbWU6IDUsCi0gICAgICAgIG1heEJpdHJhdGU6IDgsCi0gICAgICAg
IG1heEZyYW1lcmF0ZTogMjUsCi0gICAgICAgIHJpZDogJ2ZvbycKLSAgICAgIH1dCi0gICAgfSk7
Ci0gIH0sIGBhZGRUcmFuc2NlaXZlcigpIHdpdGggdmFsaWQgc2VuZEVuY29kaW5ncyBzaG91bGQg
c3VjY2VlZGApOwotCi0gIC8qCi0gICAgVE9ETwotICAgICAgNS4xLiAgYWRkVHJhbnNjZWl2ZXIK
LSAgICAgICAgLSBBZGRpbmcgYSB0cmFuc2NlaXZlciB3aWxsIGNhdXNlIGZ1dHVyZSBjYWxscyB0
byBjcmVhdGVPZmZlciB0byBhZGQgYSBtZWRpYQotICAgICAgICAgIGRlc2NyaXB0aW9uIGZvciB0
aGUgY29ycmVzcG9uZGluZyB0cmFuc2NlaXZlciwgYXMgZGVmaW5lZCBpbiBbSlNFUF0KLSAgICAg
ICAgICAoc2VjdGlvbiA1LjIuMi4pLgotCi0gICAgICAgIC0gU2V0dGluZyBhIG5ldyBSVENTZXNz
aW9uRGVzY3JpcHRpb24gbWF5IGNoYW5nZSBtaWQgdG8gYSBub24tbnVsbCB2YWx1ZSwKLSAgICAg
ICAgICBhcyBkZWZpbmVkIGluIFtKU0VQXSAoc2VjdGlvbiA1LjUuIGFuZCBzZWN0aW9uIDUuNi4p
LgotCi0gICAgICAgIDEuICBJZiB0aGUgZGljdGlvbmFyeSBhcmd1bWVudCBpcyBwcmVzZW50LCBh
bmQgaXQgaGFzIGEgc3RyZWFtcyBtZW1iZXIsIGxldAotICAgICAgICAgICAgc3RyZWFtcyBiZSB0
aGF0IGxpc3Qgb2YgTWVkaWFTdHJlYW0gb2JqZWN0cy4KLQotICAgICAgNS4yLiAgUlRDUnRwU2Vu
ZGVyIEludGVyZmFjZQotICAgICAgICBDcmVhdGUgYW4gUlRDUnRwU2VuZGVyCi0gICAgICAgICAg
My4gIExldCBzZW5kZXIgaGF2ZSBhbiBbW2Fzc29jaWF0ZWQgTWVkaWFTdHJlYW1zXV0gaW50ZXJu
YWwgc2xvdCwgcmVwcmVzZW50aW5nCi0gICAgICAgICAgICAgIGEgbGlzdCBvZiBNZWRpYVN0cmVh
bSBvYmplY3RzIHRoYXQgdGhlIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IG9mIHRoaXMKLSAgICAg
ICAgICAgICAgc2VuZGVyIGlzIGFzc29jaWF0ZWQgd2l0aC4KLQotICAgICAgICAgIDQuICBTZXQg
c2VuZGVyJ3MgW1thc3NvY2lhdGVkIE1lZGlhU3RyZWFtc11dIHNsb3QgdG8gc3RyZWFtcy4KLQot
ICAgICAgICAgIDUuICBMZXQgc2VuZGVyIGhhdmUgYSBbW3NlbmQgZW5jb2RpbmdzXV0gaW50ZXJu
YWwgc2xvdCwgcmVwcmVzZW50aW5nIGEgbGlzdAotICAgICAgICAgICAgICBvZiBSVENSdHBFbmNv
ZGluZ1BhcmFtZXRlcnMgZGljdGlvbmFyaWVzLgotCi0gICAgICAgICAgNi4gIElmIHNlbmRFbmNv
ZGluZ3MgaXMgZ2l2ZW4gYXMgaW5wdXQgdG8gdGhpcyBhbGdvcml0aG0sIGFuZCBpcyBub24tZW1w
dHksCi0gICAgICAgICAgICAgIHNldCB0aGUgW1tzZW5kIGVuY29kaW5nc11dIHNsb3QgdG8gc2Vu
ZEVuY29kaW5ncy4gT3RoZXJ3aXNlLCBzZXQgaXQgdG8gYQotICAgICAgICAgICAgICBsaXN0IGNv
bnRhaW5pbmcgYSBzaW5nbGUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIHdpdGggYWN0aXZlIHNl
dCB0byB0cnVlLgotCi0gICAgICA1LjMuICBSVENSdHBSZWNlaXZlciBJbnRlcmZhY2UKLSAgICAg
ICAgQ3JlYXRlIGFuIFJUQ1J0cFJlY2VpdmVyCi0gICAgICAgICAgNC4gIElmIGFuIGlkIHN0cmlu
ZywgaWQsIHdhcyBnaXZlbiBhcyBpbnB1dCB0byB0aGlzIGFsZ29yaXRobSwgaW5pdGlhbGl6ZQot
ICAgICAgICAgICAgICB0cmFjay5pZCB0byBpZC4gKE90aGVyd2lzZSB0aGUgdmFsdWUgZ2VuZXJh
dGVkIHdoZW4gdHJhY2sgd2FzIGNyZWF0ZWQKLSAgICAgICAgICAgICAgd2lsbCBiZSB1c2VkLikK
LQotICAgIFRlc3RlZCBpbiBSVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0
bWwKLSAgICAgIDUuMS4gIGFkZFRyYW5zY2VpdmVyCi0gICAgICAgIDEyLiBVcGRhdGUgdGhlIG5l
Z290aWF0aW9uLW5lZWRlZCBmbGFnIGZvciBjb25uZWN0aW9uLgotCi0gICAgT3V0IG9mIFNjb3Bl
Ci0gICAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgotICAgICAgICA4LiAgSWYgc2VuZEVuY29kaW5n
cyBpcyBzZXQsIHRoZW4gc3Vic2VxdWVudCBjYWxscyB0byBjcmVhdGVPZmZlciB3aWxsIGJlCi0g
ICAgICAgICAgICBjb25maWd1cmVkIHRvIHNlbmQgbXVsdGlwbGUgUlRQIGVuY29kaW5ncyBhcyBk
ZWZpbmVkIGluIFtKU0VQXQotICAgICAgICAgICAgKHNlY3Rpb24gNS4yLjIuIGFuZCBzZWN0aW9u
IDUuMi4xLikuCi0KLSAgICAgICAgICAgIFdoZW4gc2V0UmVtb3RlRGVzY3JpcHRpb24gaXMgY2Fs
bGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIHJlbW90ZQotICAgICAgICAgICAgZGVzY3JpcHRpb24g
dGhhdCBpcyBhYmxlIHRvIHJlY2VpdmUgbXVsdGlwbGUgUlRQIGVuY29kaW5ncyBhcyBkZWZpbmVk
Ci0gICAgICAgICAgICBpbiBbSlNFUF0gKHNlY3Rpb24gMy43LiksIHRoZSBSVENSdHBTZW5kZXIg
bWF5IHNlbmQgbXVsdGlwbGUgUlRQCi0gICAgICAgICAgICBlbmNvZGluZ3MgYW5kIHRoZSBwYXJh
bWV0ZXJzIHJldHJpZXZlZCB2aWEgdGhlIHRyYW5zY2VpdmVyJ3MKLSAgICAgICAgICAgIHNlbmRl
ci5nZXRQYXJhbWV0ZXJzKCkgd2lsbCByZWZsZWN0IHRoZSBlbmNvZGluZ3MgbmVnb3RpYXRlZC4K
LQotICAgICAgICA5LiAgVGhpcyBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGRlZmluZSBob3cgdG8g
Y29uZmlndXJlIGNyZWF0ZU9mZmVyIHRvCi0gICAgICAgICAgICByZWNlaXZlIG11bHRpcGxlIFJU
UCBlbmNvZGluZ3MuIEhvd2V2ZXIgd2hlbiBzZXRSZW1vdGVEZXNjcmlwdGlvbiBpcwotICAgICAg
ICAgICAgY2FsbGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIHJlbW90ZSBkZXNjcmlwdGlvbiB0aGF0
IGlzIGFibGUgdG8gc2VuZAotICAgICAgICAgICAgbXVsdGlwbGUgUlRQIGVuY29kaW5ncyBhcyBk
ZWZpbmVkIGluIFtKU0VQXSwgdGhlIFJUQ1J0cFJlY2VpdmVyIG1heQotICAgICAgICAgICAgcmVj
ZWl2ZSBtdWx0aXBsZSBSVFAgZW5jb2RpbmdzIGFuZCB0aGUgcGFyYW1ldGVycyByZXRyaWV2ZWQg
dmlhIHRoZQotICAgICAgICAgICAgdHJhbnNjZWl2ZXIncyByZWNlaXZlci5nZXRQYXJhbWV0ZXJz
KCkgd2lsbCByZWZsZWN0IHRoZSBlbmNvZGluZ3MKLSAgICAgICAgICAgIG5lZ290aWF0ZWQuCi0K
LSAgICBDb3ZlcmFnZSBSZXBvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0ZWQg
ICAgTm90LVRlc3RlZCAgTm9uLVRlc3RhYmxlICBUb3RhbAotICAgICAgYWRkVHJhbnNjZWl2ZXIg
ICAgICAgICAgMTQgICAgICAgICAgMSAgICAgICAgICAgMyAgICAgICAgICAgMTgKLSAgICAgIENy
ZWF0ZSBTZW5kZXIgICAgICAgICAgICAzICAgICAgICAgIDQgICAgICAgICAgIDAgICAgICAgICAg
ICA3Ci0gICAgICBDcmVhdGUgUmVjZWl2ZXIgICAgICAgICAgOCAgICAgICAgICAxICAgICAgICAg
ICAwICAgICAgICAgICAgOQotICAgICAgQ3JlYXRlIFRyYW5zY2VpdmVyICAgICAgIDcgICAgICAg
ICAgMCAgICAgICAgICAgMCAgICAgICAgICAgIDcKLQotICAgICAgVG90YWwgICAgICAgICAgICAg
ICAgICAgMzIgICAgICAgICAgNiAgICAgICAgICAgMyAgICAgICAgICAgNDEKLSAgICovCi08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNjhhNjRmYjEwYzJiZGM0OWQ0NTAwOThkYTM4NDE3YmQ1OTRlNTZlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjQgQEAKKworUEFTUyBhZGRUcmFuc2NlaXZlcigpIHdpdGggc3RyaW5n
IGFyZ3VtZW50IGFzIGludmFsaWQga2luZCBzaG91bGQgdGhyb3cgVHlwZUVycm9yIAorUEFTUyBh
ZGRUcmFuc2NlaXZlcignYXVkaW8nKSBzaG91bGQgcmV0dXJuIGFuIGF1ZGlvIHRyYW5zY2VpdmVy
IAorUEFTUyBhZGRUcmFuc2NlaXZlcigndmlkZW8nKSBzaG91bGQgcmV0dXJuIGEgdmlkZW8gdHJh
bnNjZWl2ZXIgCitQQVNTIGFkZFRyYW5zY2VpdmVyKCkgd2l0aCBkaXJlY3Rpb24gc2VuZG9ubHkg
c2hvdWxkIGhhdmUgcmVzdWx0IHRyYW5zY2VpdmVyLmRpcmVjdGlvbiBiZSB0aGUgc2FtZSAKK1BB
U1MgYWRkVHJhbnNjZWl2ZXIoKSB3aXRoIGRpcmVjdGlvbiBpbmFjdGl2ZSBzaG91bGQgaGF2ZSBy
ZXN1bHQgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGJlIHRoZSBzYW1lIAorUEFTUyBhZGRUcmFuc2Nl
aXZlcigpIHdpdGggaW52YWxpZCBkaXJlY3Rpb24gc2hvdWxkIHRocm93IFR5cGVFcnJvciAKK1BB
U1MgYWRkVHJhbnNjZWl2ZXIodHJhY2spIHNob3VsZCBoYXZlIHJlc3VsdCB3aXRoIHNlbmRlci50
cmFjayBiZSBnaXZlbiB0cmFjayAKK1BBU1MgYWRkVHJhbnNjZWl2ZXIodHJhY2spIG11bHRpcGxl
IHRpbWVzIHNob3VsZCBjcmVhdGUgbXVsdGlwbGUgdHJhbnNjZWl2ZXJzIAorRkFJTCBhZGRUcmFu
c2NlaXZlcigpIHdpdGggcmlkIGNvbnRhaW5pbmcgaW52YWxpZCBub24tYWxwaGFudW1lcmljIGNo
YXJhY3RlcnMgc2hvdWxkIHRocm93IFR5cGVFcnJvciBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAi
KCkgPT4KKyAgICAgIHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsKKyAgICAgICAgc2VuZEVu
Y29kaW5nczogW3sKKyAgICAgICAgICByaWQ6ICdASW52YWxpZCEnCisgICAgICAgIH1dCisgICAg
ICB9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBhZGRUcmFuc2NlaXZlcigpIHdpdGggcmlkIGxvbmdl
ciB0aGFuIDE2IGNoYXJhY3RlcnMgc2hvdWxkIHRocm93IFR5cGVFcnJvciBhc3NlcnRfdGhyb3dz
OiBmdW5jdGlvbiAiKCkgPT4KKyAgICAgIHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsKKyAg
ICAgICAgc2VuZEVuY29kaW5nczogW3sKKyAgICAgICAgICByaWQ6ICdhJy5yZXBlYXQoMTcpCisg
ICAgICAgIH1dCisgICAgICB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBhZGRUcmFuc2NlaXZlcigp
IHdpdGggdmFsaWQgcmlkIHZhbHVlIHNob3VsZCBzdWNjZWVkIAorUEFTUyBhZGRUcmFuc2NlaXZl
cigpIHdpdGggdmFsaWQgc2VuZEVuY29kaW5ncyBzaG91bGQgc3VjY2VlZCAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
UGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFk
ZFRyYW5zY2VpdmVyLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRmMDU2MTE3ZDAyNDUyZTA0MGIx
NTMxNDdkYmRhZDdiZjhmYTliYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRy
YW5zY2VpdmVyLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0NDEgQEAKKzwhZG9jdHlwZSBodG1sPgor
PG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUu
YWRkVHJhbnNjZWl2ZXI8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgJ3VzZSBzdHJpY3QnOworCisgIC8vIFRlc3Qg
aXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBlZGl0b3IgZHJhZnQ6CisgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2Mvd2VicnRjLXBjL2NjOGQ4MGY0NTViODZjODA0MWQ2M2JjZWI4YjQ1N2Y0NWM3
MmFhODkvd2VicnRjLmh0bWwKKworICAvKgorICAgIDUuMS4gIFJUQ1BlZXJDb25uZWN0aW9uIElu
dGVyZmFjZSBFeHRlbnNpb25zCisKKyAgICAgIHBhcnRpYWwgaW50ZXJmYWNlIFJUQ1BlZXJDb25u
ZWN0aW9uIHsKKyAgICAgICAgICBzZXF1ZW5jZTxSVENSdHBTZW5kZXI+ICAgICAgZ2V0U2VuZGVy
cygpOworICAgICAgICAgIHNlcXVlbmNlPFJUQ1J0cFJlY2VpdmVyPiAgICBnZXRSZWNlaXZlcnMo
KTsKKyAgICAgICAgICBzZXF1ZW5jZTxSVENSdHBUcmFuc2NlaXZlcj4gZ2V0VHJhbnNjZWl2ZXJz
KCk7CisgICAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIgICAgICAgICAgIGFkZFRyYW5zY2VpdmVy
KChNZWRpYVN0cmVhbVRyYWNrIG9yIERPTVN0cmluZykgdHJhY2tPcktpbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFJUQ1J0
cFRyYW5zY2VpdmVySW5pdCBpbml0KTsKKyAgICAgICAgICAuLi4KKyAgICAgIH07CisKKyAgICAg
IGRpY3Rpb25hcnkgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IHsKKyAgICAgICAgICBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiAgICAgICAgIGRpcmVjdGlvbiA9ICJzZW5kcmVjdiI7CisgICAgICAg
ICAgc2VxdWVuY2U8TWVkaWFTdHJlYW0+ICAgICAgICAgICAgICBzdHJlYW1zOworICAgICAgICAg
IHNlcXVlbmNlPFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycz4gc2VuZEVuY29kaW5nczsKKyAgICAg
IH07CisKKyAgICAgIGVudW0gUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24geworICAgICAgICAi
c2VuZHJlY3YiLAorICAgICAgICAic2VuZG9ubHkiLAorICAgICAgICAicmVjdm9ubHkiLAorICAg
ICAgICAiaW5hY3RpdmUiCisgICAgICB9OworCisgICAgNS4yLiAgUlRDUnRwU2VuZGVyIEludGVy
ZmFjZQorCisgICAgICBpbnRlcmZhY2UgUlRDUnRwU2VuZGVyIHsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2s/IHRyYWNrOworICAgICAgICAuLi4KKyAgICAgIH07
CisKKyAgICA1LjMuICBSVENSdHBSZWNlaXZlciBJbnRlcmZhY2UKKworICAgICAgaW50ZXJmYWNl
IFJUQ1J0cFJlY2VpdmVyIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFt
VHJhY2sgIHRyYWNrOworICAgICAgICAuLi4KKyAgICAgIH07CisKKyAgICA1LjQuICBSVENSdHBU
cmFuc2NlaXZlciBJbnRlcmZhY2UKKworICAgICAgaW50ZXJmYWNlIFJUQ1J0cFRyYW5zY2VpdmVy
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gICAgICAgICAgICAgICAg
ICBtaWQ7CisgICAgICAgIFtTYW1lT2JqZWN0XQorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
UlRDUnRwU2VuZGVyICAgICAgICAgICAgICAgIHNlbmRlcjsKKyAgICAgICAgW1NhbWVPYmplY3Rd
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBSZWNlaXZlciAgICAgICAgICAgICAg
cmVjZWl2ZXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgICAg
ICAgICAgICAgc3RvcHBlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uICBkaXJlY3Rpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBS
VENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj8gY3VycmVudERpcmVjdGlvbjsKKyAgICAgICAgLi4u
CisgICAgICB9OworCisgICAgICBOb3RlCisgICAgICAgIFdoaWxlIGFkZFRyYWNrIGNoZWNrcyBp
ZiB0aGUgTWVkaWFTdHJlYW1UcmFjayBnaXZlbiBhcyBhbiBhcmd1bWVudCBpcworICAgICAgICBh
bHJlYWR5IGJlaW5nIHNlbnQgdG8gYXZvaWQgc2VuZGluZyB0aGUgc2FtZSBNZWRpYVN0cmVhbVRy
YWNrIHR3aWNlLAorICAgICAgICB0aGUgb3RoZXIgd2F5cyBkbyBub3QsIGFsbG93aW5nIHRoZSBz
YW1lIE1lZGlhU3RyZWFtVHJhY2sgdG8gYmUgc2VudAorICAgICAgICBzZXZlcmFsIHRpbWVzIHNp
bXVsdGFuZW91c2x5LgorICAgKi8KKworICAvKgorICAgIDUuMS4gIGFkZFRyYW5zY2VpdmVyCisg
ICAgICAzLiAgSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBsZXQgaXQgYmUga2lu
ZCBhbmQgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIDEuICBJZiBraW5kIGlzIG5v
dCBhIGxlZ2FsIE1lZGlhU3RyZWFtVHJhY2sga2luZCwgdGhyb3cgYSBUeXBlRXJyb3IuCisgICAq
LworICB0ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgIGFzc2VydF9pZGxf
YXR0cmlidXRlKHBjLCAnYWRkVHJhbnNjZWl2ZXInKTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gcGMuYWRkVHJhbnNjZWl2ZXIoJ2ludmFsaWQnKSk7CisgIH0sICdh
ZGRUcmFuc2NlaXZlcigpIHdpdGggc3RyaW5nIGFyZ3VtZW50IGFzIGludmFsaWQga2luZCBzaG91
bGQgdGhyb3cgVHlwZUVycm9yJyk7CisKKyAgLyoKKyAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgor
ICAgICAgVGhlIGluaXRpYWwgdmFsdWUgb2YgbWlkIGlzIG51bGwuCisKKyAgICAgIDMuICBJZiB0
aGUgZGljdGlvbmFyeSBhcmd1bWVudCBpcyBwcmVzZW50LCBsZXQgZGlyZWN0aW9uIGJlIHRoZSB2
YWx1ZSBvZiB0aGUKKyAgICAgICAgICBkaXJlY3Rpb24gbWVtYmVyLiBPdGhlcndpc2UgbGV0IGRp
cmVjdGlvbiBiZSBzZW5kcmVjdi4KKyAgICAgIDQuICBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMg
YSBzdHJpbmcsIGxldCBpdCBiZSBraW5kIGFuZCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAg
ICAgICAgMi4gIExldCB0cmFjayBiZSBudWxsLgorICAgICAgOC4gIENyZWF0ZSBhbiBSVENSdHBT
ZW5kZXIgd2l0aCB0cmFjaywgc3RyZWFtcyBhbmQgc2VuZEVuY29kaW5ncyBhbmQgbGV0CisgICAg
ICAgICAgc2VuZGVyIGJlIHRoZSByZXN1bHQuCisgICAgICA5LiAgQ3JlYXRlIGFuIFJUQ1J0cFJl
Y2VpdmVyIHdpdGgga2luZCBhbmQgbGV0IHJlY2VpdmVyIGJlIHRoZSByZXN1bHQuCisgICAgICAx
MC4gQ3JlYXRlIGFuIFJUQ1J0cFRyYW5zY2VpdmVyIHdpdGggc2VuZGVyLCByZWNlaXZlciBhbmQg
ZGlyZWN0aW9uLCBhbmQgbGV0CisgICAgICAgICAgdHJhbnNjZWl2ZXIgYmUgdGhlIHJlc3VsdC4K
KyAgICAgIDExLiBBZGQgdHJhbnNjZWl2ZXIgdG8gY29ubmVjdGlvbidzIHNldCBvZiB0cmFuc2Nl
aXZlcnMuCisKKyAgICA1LjIuICBSVENSdHBTZW5kZXIgSW50ZXJmYWNlCisgICAgICBDcmVhdGUg
YW4gUlRDUnRwU2VuZGVyCisgICAgICAgIDIuICBTZXQgc2VuZGVyLnRyYWNrIHRvIHRyYWNrLgor
CisgICAgNS4zLiAgUlRDUnRwUmVjZWl2ZXIgSW50ZXJmYWNlCisgICAgICBDcmVhdGUgYW4gUlRD
UnRwUmVjZWl2ZXIKKyAgICAgICAgMi4gIExldCB0cmFjayBiZSBhIG5ldyBNZWRpYVN0cmVhbVRy
YWNrIG9iamVjdCBbR0VUVVNFUk1FRElBXS4gVGhlIHNvdXJjZSBvZgorICAgICAgICAgICAgdHJh
Y2sgaXMgYSByZW1vdGUgc291cmNlIHByb3ZpZGVkIGJ5IHJlY2VpdmVyLgorICAgICAgICAzLiAg
SW5pdGlhbGl6ZSB0cmFjay5raW5kIHRvIGtpbmQuCisgICAgICAgIDUuICBJbml0aWFsaXplIHRy
YWNrLmxhYmVsIHRvIHRoZSByZXN1bHQgb2YgY29uY2F0ZW5hdGluZyB0aGUgc3RyaW5nICJyZW1v
dGUgIgorICAgICAgICAgICAgd2l0aCBraW5kLgorICAgICAgICA2LiAgSW5pdGlhbGl6ZSB0cmFj
ay5yZWFkeVN0YXRlIHRvIGxpdmUuCisgICAgICAgIDcuICBJbml0aWFsaXplIHRyYWNrLm11dGVk
IHRvIHRydWUuCisgICAgICAgIDguICBTZXQgcmVjZWl2ZXIudHJhY2sgdG8gdHJhY2suCisKKyAg
ICA1LjQuICBSVENSdHBUcmFuc2NlaXZlciBJbnRlcmZhY2UKKyAgICAgIENyZWF0ZSBhbiBSVENS
dHBUcmFuc2NlaXZlcgorICAgICAgICAyLiAgU2V0IHRyYW5zY2VpdmVyLnNlbmRlciB0byBzZW5k
ZXIuCisgICAgICAgIDMuICBTZXQgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgdG8gcmVjZWl2ZXIuCisg
ICAgICAgIDQuICBMZXQgdHJhbnNjZWl2ZXIgaGF2ZSBhIFtbRGlyZWN0aW9uXV0gaW50ZXJuYWwg
c2xvdCwgaW5pdGlhbGl6ZWQgdG8gZGlyZWN0aW9uLgorICAgICAgICA1LiAgTGV0IHRyYW5zY2Vp
dmVyIGhhdmUgYSBbW0N1cnJlbnREaXJlY3Rpb25dXSBpbnRlcm5hbCBzbG90LCBpbml0aWFsaXpl
ZAorICAgICAgICAgICAgdG8gbnVsbC4KKyAgICAgICAgNi4gIFNldCB0cmFuc2NlaXZlci5zdG9w
cGVkIHRvIGZhbHNlLgorICAgKi8KKyAgdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7
CisKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ2FkZFRyYW5zY2VpdmVyJyk7CisKKyAg
ICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICAgIGFz
c2VydF90cnVlKHRyYW5zY2VpdmVyIGluc3RhbmNlb2YgUlRDUnRwVHJhbnNjZWl2ZXIsCisgICAg
ICAnRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFRyYW5zY2VpdmVy
Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLm1pZCwgbnVsbCk7CisgICAgYXNz
ZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5zdG9wcGVkLCBmYWxzZSk7CisgICAgYXNzZXJ0X2VxdWFs
cyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdzZW5kcmVjdicpOworICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgbnVsbCk7CisKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKFt0cmFuc2NlaXZlcl0sIHBjLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgYEV4cGVj
dCBhZGRlZCB0cmFuc2NlaXZlciB0byBiZSB0aGUgb25seSBlbGVtZW50IGluIGNvbm5lY3Rpb24n
cyBsaXN0IG9mIHRyYW5zY2VpdmVyc2ApOworCisgICAgY29uc3Qgc2VuZGVyID0gdHJhbnNjZWl2
ZXIuc2VuZGVyOworCisgICAgYXNzZXJ0X3RydWUoc2VuZGVyIGluc3RhbmNlb2YgUlRDUnRwU2Vu
ZGVyLAorICAgICAgJ0V4cGVjdCBzZW5kZXIgdG8gYmUgaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVy
Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgbnVsbCk7CisKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKFtzZW5kZXJdLCBwYy5nZXRTZW5kZXJzKCksCisgICAgICBgRXhwZWN0
IGFkZGVkIHNlbmRlciB0byBiZSB0aGUgb25seSBlbGVtZW50IGluIGNvbm5lY3Rpb24ncyBsaXN0
IG9mIHNlbmRlcnNgKTsKKworICAgIGNvbnN0IHJlY2VpdmVyID0gdHJhbnNjZWl2ZXIucmVjZWl2
ZXI7CisgICAgYXNzZXJ0X3RydWUocmVjZWl2ZXIgaW5zdGFuY2VvZiBSVENSdHBSZWNlaXZlciwK
KyAgICAgICdFeHBlY3QgcmVjZWl2ZXIgdG8gYmUgaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXIn
KTsKKworICAgIGNvbnN0IHRyYWNrID0gcmVjZWl2ZXIudHJhY2s7CisgICAgYXNzZXJ0X3RydWUo
dHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrLAorICAgICAgJ0V4cGVjdCByZWNlaXZl
ci50cmFjayB0byBiZSBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrJyk7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKHRyYWNrLmtpbmQsICdhdWRpbycpOworICAgIGFzc2VydF9lcXVhbHModHJhY2su
cmVhZHlTdGF0ZSwgJ2xpdmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLm11dGVkLCB0cnVl
KTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoW3JlY2VpdmVyXSwgcGMuZ2V0UmVjZWl2ZXJz
KCksCisgICAgICBgRXhwZWN0IGFkZGVkIHJlY2VpdmVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQg
aW4gY29ubmVjdGlvbidzIGxpc3Qgb2YgcmVjZWl2ZXJzYCk7CisKKyAgfSwgYGFkZFRyYW5zY2Vp
dmVyKCdhdWRpbycpIHNob3VsZCByZXR1cm4gYW4gYXVkaW8gdHJhbnNjZWl2ZXJgKTsKKworICB0
ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgIGFzc2VydF9pZGxfYXR0cmli
dXRlKHBjLCAnYWRkVHJhbnNjZWl2ZXInKTsKKworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMu
YWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJyk7CisgICAgYXNzZXJ0X3RydWUodHJhbnNjZWl2ZXIgaW5z
dGFuY2VvZiBSVENSdHBUcmFuc2NlaXZlciwKKyAgICAgICdFeHBlY3QgdHJhbnNjZWl2ZXIgdG8g
YmUgaW5zdGFuY2Ugb2YgUlRDUnRwVHJhbnNjZWl2ZXInKTsKKworICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNjZWl2ZXIubWlkLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLnN0
b3BwZWQsIGZhbHNlKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwg
J3NlbmRyZWN2Jyk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKFt0cmFuc2NlaXZlcl0sIHBj
LmdldFRyYW5zY2VpdmVycygpLAorICAgICAgYEV4cGVjdCBhZGRlZCB0cmFuc2NlaXZlciB0byBi
ZSB0aGUgb25seSBlbGVtZW50IGluIGNvbm5lY3Rpb24ncyBsaXN0IG9mIHRyYW5zY2VpdmVyc2Ap
OworCisgICAgY29uc3Qgc2VuZGVyID0gdHJhbnNjZWl2ZXIuc2VuZGVyOworCisgICAgYXNzZXJ0
X3RydWUoc2VuZGVyIGluc3RhbmNlb2YgUlRDUnRwU2VuZGVyLAorICAgICAgJ0V4cGVjdCBzZW5k
ZXIgdG8gYmUgaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVyJyk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KHNlbmRlci50cmFjaywgbnVsbCk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKFtzZW5kZXJd
LCBwYy5nZXRTZW5kZXJzKCksCisgICAgICBgRXhwZWN0IGFkZGVkIHNlbmRlciB0byBiZSB0aGUg
b25seSBlbGVtZW50IGluIGNvbm5lY3Rpb24ncyBsaXN0IG9mIHNlbmRlcnNgKTsKKworICAgIGNv
bnN0IHJlY2VpdmVyID0gdHJhbnNjZWl2ZXIucmVjZWl2ZXI7CisgICAgYXNzZXJ0X3RydWUocmVj
ZWl2ZXIgaW5zdGFuY2VvZiBSVENSdHBSZWNlaXZlciwKKyAgICAgICdFeHBlY3QgcmVjZWl2ZXIg
dG8gYmUgaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXInKTsKKworICAgIGNvbnN0IHRyYWNrID0g
cmVjZWl2ZXIudHJhY2s7CisgICAgYXNzZXJ0X3RydWUodHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0
cmVhbVRyYWNrLAorICAgICAgJ0V4cGVjdCByZWNlaXZlci50cmFjayB0byBiZSBpbnN0YW5jZSBv
ZiBNZWRpYVN0cmVhbVRyYWNrJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmtpbmQsICd2
aWRlbycpOworICAgIGFzc2VydF9lcXVhbHModHJhY2sucmVhZHlTdGF0ZSwgJ2xpdmUnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRyYWNrLm11dGVkLCB0cnVlKTsKKworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoW3JlY2VpdmVyXSwgcGMuZ2V0UmVjZWl2ZXJzKCksCisgICAgICBgRXhwZWN0IGFkZGVk
IHJlY2VpdmVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQgaW4gY29ubmVjdGlvbidzIGxpc3Qgb2Yg
cmVjZWl2ZXJzYCk7CisKKyAgfSwgYGFkZFRyYW5zY2VpdmVyKCd2aWRlbycpIHNob3VsZCByZXR1
cm4gYSB2aWRlbyB0cmFuc2NlaXZlcmApOworCisgIHRlc3QodCA9PiB7CisgICAgY29uc3QgcGMg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNs
b3NlKCkpOworCisgICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVk
aW8nLCB7IGRpcmVjdGlvbjogJ3NlbmRvbmx5JyB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5z
Y2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRvbmx5Jyk7CisgIH0sIGBhZGRUcmFuc2NlaXZlcigpIHdp
dGggZGlyZWN0aW9uIHNlbmRvbmx5IHNob3VsZCBoYXZlIHJlc3VsdCB0cmFuc2NlaXZlci5kaXJl
Y3Rpb24gYmUgdGhlIHNhbWVgKTsKKworICB0ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgp
KTsKKworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywg
eyBkaXJlY3Rpb246ICdpbmFjdGl2ZScgfSk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZl
ci5kaXJlY3Rpb24sICdpbmFjdGl2ZScpOworICB9LCBgYWRkVHJhbnNjZWl2ZXIoKSB3aXRoIGRp
cmVjdGlvbiBpbmFjdGl2ZSBzaG91bGQgaGF2ZSByZXN1bHQgdHJhbnNjZWl2ZXIuZGlyZWN0aW9u
IGJlIHRoZSBzYW1lYCk7CisKKyAgdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisK
KyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ2FkZFRyYW5zY2VpdmVyJyk7CisgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+CisgICAgICBwYy5hZGRUcmFuc2NlaXZl
cignYXVkaW8nLCB7IGRpcmVjdGlvbjogJ2ludmFsaWQnIH0pKTsKKyAgfSwgYGFkZFRyYW5zY2Vp
dmVyKCkgd2l0aCBpbnZhbGlkIGRpcmVjdGlvbiBzaG91bGQgdGhyb3cgVHlwZUVycm9yYCk7CisK
KyAgLyoKKyAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgorICAgICAgNS4gIElmIHRoZSBmaXJzdCBh
cmd1bWVudCBpcyBhIE1lZGlhU3RyZWFtVHJhY2sgLCBsZXQgaXQgYmUgdHJhY2sgYW5kIGxldAor
ICAgICAgICAgIGtpbmQgYmUgdHJhY2sua2luZC4KKyAgICovCisgIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2Fp
dCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+
IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJhY2tzKCk7
CisgICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih0cmFjayk7CisgICAg
Y29uc3QgeyBzZW5kZXIsIHJlY2VpdmVyIH0gPSB0cmFuc2NlaXZlcjsKKworICAgIGFzc2VydF90
cnVlKHNlbmRlciBpbnN0YW5jZW9mIFJUQ1J0cFNlbmRlciwKKyAgICAgICdFeHBlY3Qgc2VuZGVy
IHRvIGJlIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcicpOworCisgICAgYXNzZXJ0X3RydWUocmVj
ZWl2ZXIgaW5zdGFuY2VvZiBSVENSdHBSZWNlaXZlciwKKyAgICAgICdFeHBlY3QgcmVjZWl2ZXIg
dG8gYmUgaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXInKTsKKworICAgIGFzc2VydF9lcXVhbHMo
c2VuZGVyLnRyYWNrLCB0cmFjaywKKyAgICAgICdFeHBlY3Qgc2VuZGVyLnRyYWNrIHNob3VsZCBi
ZSB0aGUgdHJhY2sgdGhhdCBpcyBhZGRlZCcpOworCisgICAgY29uc3QgcmVjZWl2ZXJUcmFjayA9
IHJlY2VpdmVyLnRyYWNrOworICAgIGFzc2VydF90cnVlKHJlY2VpdmVyVHJhY2sgaW5zdGFuY2Vv
ZiBNZWRpYVN0cmVhbVRyYWNrLAorICAgICAgJ0V4cGVjdCByZWNlaXZlci50cmFjayB0byBiZSBp
bnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2Vp
dmVyVHJhY2sua2luZCwgJ2F1ZGlvJywKKyAgICAgIGByZWNlaXZlci50cmFjayBzaG91bGQgaGF2
ZSB0aGUgc2FtZSBraW5kIGFzIGFkZGVkIHRyYWNrJ3Mga2luZGApOworCisgICAgYXNzZXJ0X2Vx
dWFscyhyZWNlaXZlclRyYWNrLnJlYWR5U3RhdGUsICdsaXZlJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZWNlaXZlclRyYWNrLm11dGVkLCB0cnVlKTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
W3RyYW5zY2VpdmVyXSwgcGMuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBgRXhwZWN0IGFkZGVk
IHRyYW5zY2VpdmVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQgaW4gY29ubmVjdGlvbidzIGxpc3Qg
b2YgdHJhbnNjZWl2ZXJzYCk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKFtzZW5kZXJdLCBw
Yy5nZXRTZW5kZXJzKCksCisgICAgICBgRXhwZWN0IGFkZGVkIHNlbmRlciB0byBiZSB0aGUgb25s
eSBlbGVtZW50IGluIGNvbm5lY3Rpb24ncyBsaXN0IG9mIHNlbmRlcnNgKTsKKworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoW3JlY2VpdmVyXSwgcGMuZ2V0UmVjZWl2ZXJzKCksCisgICAgICBgRXhw
ZWN0IGFkZGVkIHJlY2VpdmVyIHRvIGJlIHRoZSBvbmx5IGVsZW1lbnQgaW4gY29ubmVjdGlvbidz
IGxpc3Qgb2YgcmVjZWl2ZXJzYCk7CisKKyAgfSwgJ2FkZFRyYW5zY2VpdmVyKHRyYWNrKSBzaG91
bGQgaGF2ZSByZXN1bHQgd2l0aCBzZW5kZXIudHJhY2sgYmUgZ2l2ZW4gdHJhY2snKTsKKworICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgY29u
c3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1
ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCku
Zm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3Ry
ZWFtLmdldFRyYWNrcygpOworICAgIGNvbnN0IHRyYW5zY2VpdmVyMSA9IHBjLmFkZFRyYW5zY2Vp
dmVyKHRyYWNrKTsKKyAgICBjb25zdCB0cmFuc2NlaXZlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcih0
cmFjayk7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyh0cmFuc2NlaXZlcjEsIHRyYW5zY2VpdmVy
Mik7CisKKyAgICBjb25zdCBzZW5kZXIxID0gdHJhbnNjZWl2ZXIxLnNlbmRlcjsKKyAgICBjb25z
dCBzZW5kZXIyID0gdHJhbnNjZWl2ZXIyLnNlbmRlcjsKKworICAgIGFzc2VydF9ub3RfZXF1YWxz
KHNlbmRlcjEsIHNlbmRlcjIpOworICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIxLnNlbmRl
ci50cmFjaywgdHJhY2spOworICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIyLnNlbmRlci50
cmFjaywgdHJhY2spOworCisgICAgY29uc3QgdHJhbnNjZWl2ZXJzID0gcGMuZ2V0VHJhbnNjZWl2
ZXJzKCk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlcnMubGVuZ3RoLCAyKTsKKyAgICBh
c3NlcnRfdHJ1ZSh0cmFuc2NlaXZlcnMuaW5jbHVkZXModHJhbnNjZWl2ZXIxKSk7CisgICAgYXNz
ZXJ0X3RydWUodHJhbnNjZWl2ZXJzLmluY2x1ZGVzKHRyYW5zY2VpdmVyMikpOworCisgICAgY29u
c3Qgc2VuZGVycyA9IHBjLmdldFNlbmRlcnMoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlcnMu
bGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfdHJ1ZShzZW5kZXJzLmluY2x1ZGVzKHNlbmRlcjEpKTsK
KyAgICBhc3NlcnRfdHJ1ZShzZW5kZXJzLmluY2x1ZGVzKHNlbmRlcjIpKTsKKworICB9LCAnYWRk
VHJhbnNjZWl2ZXIodHJhY2spIG11bHRpcGxlIHRpbWVzIHNob3VsZCBjcmVhdGUgbXVsdGlwbGUg
dHJhbnNjZWl2ZXJzJyk7CisKKyAgLyoKKyAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgorICAgICAg
Ni4gIFZlcmlmeSB0aGF0IGVhY2ggcmlkIHZhbHVlIGluIHNlbmRFbmNvZGluZ3MgaXMgY29tcG9z
ZWQgb25seSBvZgorICAgICAgICAgIGNhc2Utc2Vuc2l0aXZlIGFscGhhbnVtZXJpYyBjaGFyYWN0
ZXJzIChhLXosIEEtWiwgMC05KSB1cCB0byBhIG1heGltdW0KKyAgICAgICAgICBvZiAxNiBjaGFy
YWN0ZXJzLiBJZiBvbmUgb2YgdGhlIFJJRHMgZG9lcyBub3QgbWVldCB0aGVzZSByZXF1aXJlbWVu
dHMsCisgICAgICAgICAgdGhyb3cgYSBUeXBlRXJyb3IuCisgICAqLworICB0ZXN0KHQgPT4gewor
ICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ2FkZFRy
YW5zY2VpdmVyJyk7CisKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4K
KyAgICAgIHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsKKyAgICAgICAgc2VuZEVuY29kaW5n
czogW3sKKyAgICAgICAgICByaWQ6ICdASW52YWxpZCEnCisgICAgICAgIH1dCisgICAgICB9KSk7
CisgIH0sICdhZGRUcmFuc2NlaXZlcigpIHdpdGggcmlkIGNvbnRhaW5pbmcgaW52YWxpZCBub24t
YWxwaGFudW1lcmljIGNoYXJhY3RlcnMgc2hvdWxkIHRocm93IFR5cGVFcnJvcicpOworCisgIHRl
c3QodCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgIGFzc2VydF9pZGxfYXR0cmlidXRl
KHBjLCAnYWRkVHJhbnNjZWl2ZXInKTsKKworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PgorICAgICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgeworICAgICAgICBz
ZW5kRW5jb2RpbmdzOiBbeworICAgICAgICAgIHJpZDogJ2EnLnJlcGVhdCgxNykKKyAgICAgICAg
fV0KKyAgICAgIH0pKTsKKyAgfSwgJ2FkZFRyYW5zY2VpdmVyKCkgd2l0aCByaWQgbG9uZ2VyIHRo
YW4gMTYgY2hhcmFjdGVycyBzaG91bGQgdGhyb3cgVHlwZUVycm9yJyk7CisKKyAgdGVzdCh0ID0+
IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywg
eworICAgICAgc2VuZEVuY29kaW5nczogW3sKKyAgICAgICAgcmlkOiAnZm9vJworICAgICAgfV0K
KyAgICB9KTsKKyAgfSwgYGFkZFRyYW5zY2VpdmVyKCkgd2l0aCB2YWxpZCByaWQgdmFsdWUgc2hv
dWxkIHN1Y2NlZWRgKTsKKworICB0ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwor
ICAgIHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsKKyAgICAgIHNlbmRFbmNvZGluZ3M6IFt7
CisgICAgICAgIGR0eDogJ2VuYWJsZWQnLAorICAgICAgICBhY3RpdmU6IGZhbHNlLAorICAgICAg
ICBwcmlvcml0eTogJ2xvdycsCisgICAgICAgIHB0aW1lOiA1LAorICAgICAgICBtYXhCaXRyYXRl
OiA4LAorICAgICAgICBtYXhGcmFtZXJhdGU6IDI1LAorICAgICAgICByaWQ6ICdmb28nCisgICAg
ICB9XQorICAgIH0pOworICB9LCBgYWRkVHJhbnNjZWl2ZXIoKSB3aXRoIHZhbGlkIHNlbmRFbmNv
ZGluZ3Mgc2hvdWxkIHN1Y2NlZWRgKTsKKworICAvKgorICAgIFRPRE8KKyAgICAgIDUuMS4gIGFk
ZFRyYW5zY2VpdmVyCisgICAgICAgIC0gQWRkaW5nIGEgdHJhbnNjZWl2ZXIgd2lsbCBjYXVzZSBm
dXR1cmUgY2FsbHMgdG8gY3JlYXRlT2ZmZXIgdG8gYWRkIGEgbWVkaWEKKyAgICAgICAgICBkZXNj
cmlwdGlvbiBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNjZWl2ZXIsIGFzIGRlZmluZWQgaW4g
W0pTRVBdCisgICAgICAgICAgKHNlY3Rpb24gNS4yLjIuKS4KKworICAgICAgICAtIFNldHRpbmcg
YSBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1heSBjaGFuZ2UgbWlkIHRvIGEgbm9uLW51bGwg
dmFsdWUsCisgICAgICAgICAgYXMgZGVmaW5lZCBpbiBbSlNFUF0gKHNlY3Rpb24gNS41LiBhbmQg
c2VjdGlvbiA1LjYuKS4KKworICAgICAgICAxLiAgSWYgdGhlIGRpY3Rpb25hcnkgYXJndW1lbnQg
aXMgcHJlc2VudCwgYW5kIGl0IGhhcyBhIHN0cmVhbXMgbWVtYmVyLCBsZXQKKyAgICAgICAgICAg
IHN0cmVhbXMgYmUgdGhhdCBsaXN0IG9mIE1lZGlhU3RyZWFtIG9iamVjdHMuCisKKyAgICAgIDUu
Mi4gIFJUQ1J0cFNlbmRlciBJbnRlcmZhY2UKKyAgICAgICAgQ3JlYXRlIGFuIFJUQ1J0cFNlbmRl
cgorICAgICAgICAgIDMuICBMZXQgc2VuZGVyIGhhdmUgYW4gW1thc3NvY2lhdGVkIE1lZGlhU3Ry
ZWFtc11dIGludGVybmFsIHNsb3QsIHJlcHJlc2VudGluZworICAgICAgICAgICAgICBhIGxpc3Qg
b2YgTWVkaWFTdHJlYW0gb2JqZWN0cyB0aGF0IHRoZSBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBv
ZiB0aGlzCisgICAgICAgICAgICAgIHNlbmRlciBpcyBhc3NvY2lhdGVkIHdpdGguCisKKyAgICAg
ICAgICA0LiAgU2V0IHNlbmRlcidzIFtbYXNzb2NpYXRlZCBNZWRpYVN0cmVhbXNdXSBzbG90IHRv
IHN0cmVhbXMuCisKKyAgICAgICAgICA1LiAgTGV0IHNlbmRlciBoYXZlIGEgW1tzZW5kIGVuY29k
aW5nc11dIGludGVybmFsIHNsb3QsIHJlcHJlc2VudGluZyBhIGxpc3QKKyAgICAgICAgICAgICAg
b2YgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGRpY3Rpb25hcmllcy4KKworICAgICAgICAgIDYu
ICBJZiBzZW5kRW5jb2RpbmdzIGlzIGdpdmVuIGFzIGlucHV0IHRvIHRoaXMgYWxnb3JpdGhtLCBh
bmQgaXMgbm9uLWVtcHR5LAorICAgICAgICAgICAgICBzZXQgdGhlIFtbc2VuZCBlbmNvZGluZ3Nd
XSBzbG90IHRvIHNlbmRFbmNvZGluZ3MuIE90aGVyd2lzZSwgc2V0IGl0IHRvIGEKKyAgICAgICAg
ICAgICAgbGlzdCBjb250YWluaW5nIGEgc2luZ2xlIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB3
aXRoIGFjdGl2ZSBzZXQgdG8gdHJ1ZS4KKworICAgICAgNS4zLiAgUlRDUnRwUmVjZWl2ZXIgSW50
ZXJmYWNlCisgICAgICAgIENyZWF0ZSBhbiBSVENSdHBSZWNlaXZlcgorICAgICAgICAgIDQuICBJ
ZiBhbiBpZCBzdHJpbmcsIGlkLCB3YXMgZ2l2ZW4gYXMgaW5wdXQgdG8gdGhpcyBhbGdvcml0aG0s
IGluaXRpYWxpemUKKyAgICAgICAgICAgICAgdHJhY2suaWQgdG8gaWQuIChPdGhlcndpc2UgdGhl
IHZhbHVlIGdlbmVyYXRlZCB3aGVuIHRyYWNrIHdhcyBjcmVhdGVkCisgICAgICAgICAgICAgIHdp
bGwgYmUgdXNlZC4pCisKKyAgICBUZXN0ZWQgaW4gUlRDUGVlckNvbm5lY3Rpb24tb25uZWdvdGlh
dGlvbm5lZWRlZC5odG1sCisgICAgICA1LjEuICBhZGRUcmFuc2NlaXZlcgorICAgICAgICAxMi4g
VXBkYXRlIHRoZSBuZWdvdGlhdGlvbi1uZWVkZWQgZmxhZyBmb3IgY29ubmVjdGlvbi4KKworICAg
IE91dCBvZiBTY29wZQorICAgICAgNS4xLiAgYWRkVHJhbnNjZWl2ZXIKKyAgICAgICAgOC4gIElm
IHNlbmRFbmNvZGluZ3MgaXMgc2V0LCB0aGVuIHN1YnNlcXVlbnQgY2FsbHMgdG8gY3JlYXRlT2Zm
ZXIgd2lsbCBiZQorICAgICAgICAgICAgY29uZmlndXJlZCB0byBzZW5kIG11bHRpcGxlIFJUUCBl
bmNvZGluZ3MgYXMgZGVmaW5lZCBpbiBbSlNFUF0KKyAgICAgICAgICAgIChzZWN0aW9uIDUuMi4y
LiBhbmQgc2VjdGlvbiA1LjIuMS4pLgorCisgICAgICAgICAgICBXaGVuIHNldFJlbW90ZURlc2Ny
aXB0aW9uIGlzIGNhbGxlZCB3aXRoIGEgY29ycmVzcG9uZGluZyByZW1vdGUKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uIHRoYXQgaXMgYWJsZSB0byByZWNlaXZlIG11bHRpcGxlIFJUUCBlbmNvZGlu
Z3MgYXMgZGVmaW5lZAorICAgICAgICAgICAgaW4gW0pTRVBdIChzZWN0aW9uIDMuNy4pLCB0aGUg
UlRDUnRwU2VuZGVyIG1heSBzZW5kIG11bHRpcGxlIFJUUAorICAgICAgICAgICAgZW5jb2Rpbmdz
IGFuZCB0aGUgcGFyYW1ldGVycyByZXRyaWV2ZWQgdmlhIHRoZSB0cmFuc2NlaXZlcidzCisgICAg
ICAgICAgICBzZW5kZXIuZ2V0UGFyYW1ldGVycygpIHdpbGwgcmVmbGVjdCB0aGUgZW5jb2Rpbmdz
IG5lZ290aWF0ZWQuCisKKyAgICAgICAgOS4gIFRoaXMgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBk
ZWZpbmUgaG93IHRvIGNvbmZpZ3VyZSBjcmVhdGVPZmZlciB0bworICAgICAgICAgICAgcmVjZWl2
ZSBtdWx0aXBsZSBSVFAgZW5jb2RpbmdzLiBIb3dldmVyIHdoZW4gc2V0UmVtb3RlRGVzY3JpcHRp
b24gaXMKKyAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgY29ycmVzcG9uZGluZyByZW1vdGUgZGVz
Y3JpcHRpb24gdGhhdCBpcyBhYmxlIHRvIHNlbmQKKyAgICAgICAgICAgIG11bHRpcGxlIFJUUCBl
bmNvZGluZ3MgYXMgZGVmaW5lZCBpbiBbSlNFUF0sIHRoZSBSVENSdHBSZWNlaXZlciBtYXkKKyAg
ICAgICAgICAgIHJlY2VpdmUgbXVsdGlwbGUgUlRQIGVuY29kaW5ncyBhbmQgdGhlIHBhcmFtZXRl
cnMgcmV0cmlldmVkIHZpYSB0aGUKKyAgICAgICAgICAgIHRyYW5zY2VpdmVyJ3MgcmVjZWl2ZXIu
Z2V0UGFyYW1ldGVycygpIHdpbGwgcmVmbGVjdCB0aGUgZW5jb2RpbmdzCisgICAgICAgICAgICBu
ZWdvdGlhdGVkLgorCisgICAgQ292ZXJhZ2UgUmVwb3J0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGVzdGVkICAgIE5vdC1UZXN0ZWQgIE5vbi1UZXN0YWJsZSAgVG90YWwKKyAgICAgIGFk
ZFRyYW5zY2VpdmVyICAgICAgICAgIDE0ICAgICAgICAgIDEgICAgICAgICAgIDMgICAgICAgICAg
IDE4CisgICAgICBDcmVhdGUgU2VuZGVyICAgICAgICAgICAgMyAgICAgICAgICA0ICAgICAgICAg
ICAwICAgICAgICAgICAgNworICAgICAgQ3JlYXRlIFJlY2VpdmVyICAgICAgICAgIDggICAgICAg
ICAgMSAgICAgICAgICAgMCAgICAgICAgICAgIDkKKyAgICAgIENyZWF0ZSBUcmFuc2NlaXZlciAg
ICAgICA3ICAgICAgICAgIDAgICAgICAgICAgIDAgICAgICAgICAgICA3CisKKyAgICAgIFRvdGFs
ICAgICAgICAgICAgICAgICAgIDMyICAgICAgICAgIDYgICAgICAgICAgIDMgICAgICAgICAgIDQx
CisgICAqLworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1jYW5Ucmlja2xlSWNl
Q2FuZGlkYXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY2FuVHJpY2tsZUljZUNhbmRpZGF0ZXMuaHRt
bAppbmRleCA2M2RhYzhmMzc3OTg2ZmYwY2RiYTczYmQ3YjQxM2I5NGEzMWJmZDI3Li4wOWFkNjc3
NTFhNzNhNjQ4MjQxNWE2ZmY2YzJkYWM3MGUwNDljODJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlv
bi1jYW5Ucmlja2xlSWNlQ2FuZGlkYXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNhblRyaWNr
bGVJY2VDYW5kaWRhdGVzLmh0bWwKQEAgLTM1LDE4ICszNSwyMiBAQAogICAgIGFzc2VydF9lcXVh
bHMocGMuY2FuVHJpY2tsZUljZUNhbmRpZGF0ZXMsIG51bGwsICdjYW5Ucmlja2xlSWNlQ2FuZGlk
YXRlcyBwcm9wZXJ0eSBpcyBudWxsJyk7CiAgIH0sICdjYW5Ucmlja2xlSWNlQ2FuZGlkYXRlcyBw
cm9wZXJ0eSBpcyBudWxsIHByaW9yIHRvIHNldFJlbW90ZURlc2NyaXB0aW9uJyk7CiAKLSAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAg
IHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihu
ZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHt0eXBlOiAnb2ZmZXInLCBzZHA6IHNkcH0pKQogICAg
IC50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgYXNzZXJ0X3RydWUocGMuY2FuVHJpY2tsZUljZUNh
bmRpZGF0ZXMsICdjYW5Ucmlja2xlSWNlQ2FuZGlkYXRlcyBwcm9wZXJ0eSBpcyB0cnVlIGFmdGVy
IHNldFJlbW90ZURlc2NyaXB0aW9uJyk7CiAgICAgfSkKICAgfSwgJ2NhblRyaWNrbGVJY2VDYW5k
aWRhdGVzIHByb3BlcnR5IGlzIHRydWUgYWZ0ZXIgc2V0UmVtb3RlRGVzY3JpcHRpb24gd2l0aCBh
PWljZS1vcHRpb25zOnRyaWNrbGUnKTsKIAotICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Cisg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25u
ZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAg
cmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24o
e3R5cGU6ICdvZmZlcicsIHNkcDogc2RwLnJlcGxhY2UoJ2E9aWNlLW9wdGlvbnM6dHJpY2tsZVxy
XG4nLCAnJyl9KSkKICAgICAudGhlbihmdW5jdGlvbigpIHsKICAgICAgIGFzc2VydF9mYWxzZShw
Yy5jYW5Ucmlja2xlSWNlQ2FuZGlkYXRlcywgJ2NhblRyaWNrbGVJY2VDYW5kaWRhdGVzIHByb3Bl
cnR5IGlzIGZhbHNlIGFmdGVyIHNldFJlbW90ZURlc2NyaXB0aW9uJyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVy
Q29ubmVjdGlvbi1jb25uZWN0aW9uU3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNvbm5lY3Rpb25T
dGF0ZS5odG1sCmluZGV4IDFmMmYxYjc2YzQxMWY3Y2NlNWMxZjhhMjJhMDMyNGVkZjNlZjJhNzAu
LmQ4ZTk0MTEyNzE4MTU1NzIwZjMxNjIyOTY2YjI3NzYwYjY1M2MzOTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLWNvbm5lY3Rpb25TdGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNvbm5lY3Rp
b25TdGF0ZS5odG1sCkBAIC0xMDcsOCArMTA3LDExIEBACiAgICAqLwogICBhc3luY190ZXN0KHQg
PT4gewogICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOwogICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7CisK
ICAgICBjb25zdCBvbkNvbm5lY3Rpb25TdGF0ZUNoYW5nZSA9IHQuc3RlcF9mdW5jKCgpID0+IHsK
ICAgICAgIGNvbnN0IHsgY29ubmVjdGlvblN0YXRlIH0gPSBwYzE7CiAgICAgICBpZihjb25uZWN0
aW9uU3RhdGUgPT09ICdjb25uZWN0ZWQnKSB7CkBAIC0xMzYsNyArMTM5LDYgQEAKIAogICAgIGV4
Y2hhbmdlSWNlQ2FuZGlkYXRlcyhwYzEsIHBjMik7CiAgICAgZG9TaWduYWxpbmdIYW5kc2hha2Uo
cGMxLCBwYzIpOwotCiAgIH0sICdjb25uZWN0aW9uIHdpdGggb25lIGRhdGEgY2hhbm5lbCBzaG91
bGQgZXZlbnR1YWxseSBoYXZlIGNvbm5lY3RlZCBjb25uZWN0aW9uIHN0YXRlJyk7CiAKICAgLyoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24t
Y3JlYXRlQW5zd2VyLmh0bWwKaW5kZXggMTliM2E0NTM3YWFmMmUxNmU5N2Y5OTU0ZDk2YTE4NDFj
NWVhM2Y5ZC4uYWJmZjFlYjczMjljY2VkYTI4NjIxNmI5MDUzMWY5OTcwNDBlZDQ3NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlQW5zd2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY3Jl
YXRlQW5zd2VyLmh0bWwKQEAgLTI0LDYgKzI0LDcgQEAKICAgICovCiAgIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0
LCAnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAgcGMuY3JlYXRlQW5zd2VyKCkpOwogICB9LCAn
Y3JlYXRlQW5zd2VyKCkgd2l0aCBudWxsIHJlbW90ZURlc2NyaXB0aW9uIHNob3VsZCByZWplY3Qg
d2l0aCBJbnZhbGlkU3RhdGVFcnJvcicpOwpAQCAtMzYsNiArMzcsOCBAQAogICBwcm9taXNlX3Rl
c3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4gcGMuY3JlYXRl
T2ZmZXIoeyBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlIH0pCiAgICAgLnRoZW4ob2ZmZXIgPT4g
cGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpKQogICAgIC50aGVuKCgpID0+IHBjLmNyZWF0
ZUFuc3dlcigpKQpAQCAtNTEsNiArNTQsOCBAQAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
Y29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4gZ2VuZXJhdGVPZmZlcih7IHBjLCBkYXRh
OiB0cnVlIH0pCiAgICAgLnRoZW4ob2ZmZXIgPT4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2Zm
ZXIpKQogICAgIC50aGVuKCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZURh
dGFDaGFubmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVEYXRhQ2hhbm5lbC5odG1sCmluZGV4
IDM1ZTIyZjkzNGYwYTc5MDEyNDBjZjE0OTE2MWU3MjNhYmVkZTgxYWUuLjQ1MGEyNTAwMmVkMjIx
MmU3ZjFkZDVjYjk3ZmY5ODVlM2Y5NTdhYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0
ZURhdGFDaGFubmVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlRGF0YUNoYW5uZWwuaHRt
bApAQCAtMzYyLDYgKzM2Miw3IEBAIHRlc3QoKCkgPT4gewogICovCiBwcm9taXNlX3Rlc3QodCA9
PiB7CiAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgIGNvbnN0IGNoYW5uZWwxID0gcGMuY3JlYXRlRGF0YUNo
YW5uZWwoJ2NoYW5uZWwnKTsKICAgYXNzZXJ0X2VxdWFscyhjaGFubmVsMS5pZCwgbnVsbCwKICAg
ICAnRXhwZWN0IGluaXRpYWwgaWQgdG8gYmUgbnVsbCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rp
b24tY3JlYXRlT2ZmZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDZjZDU1OGY2ODgwNzA2MWM2ZDgzODQ5MTIxODM0YmMxZmEyNmYxZDIu
LmY2Nzk4OTg5M2RmNjY4Y2JmYTFiN2FmYTgwYTJkZWQwNmZhZmQ3NTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLWNyZWF0ZU9mZmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1jcmVh
dGVPZmZlci1leHBlY3RlZC50eHQKQEAgLTYsNSArNiw0IEBAIEZBSUwgV2hlbiBtZWRpYSBzdHJl
YW0gaXMgYWRkZWQgd2hlbiBjcmVhdGVPZmZlcigpIGlzIHJ1bm5pbmcgaW4gcGFyYWxsZWwsIHRo
ZSByCiBGQUlMIGNyZWF0ZU9mZmVyKCkgd2l0aCBvZmZlclRvUmVjZWl2ZUF1ZGlvIHNob3VsZCBh
ZGQgYXVkaW8gbGluZSB0byBhbGwgc3Vic2VxdWVudCBjcmVhdGVkIG9mZmVycyBhc3NlcnRfZXF1
YWxzOiBFeHBlY3QgY3JlYXRlZCBvZmZlciB0byBoYXZlIGF1ZGlvIGxpbmUgZXhwZWN0ZWQgMSBi
dXQgZ290IDAKIEZBSUwgY3JlYXRlT2ZmZXIoKSB3aXRoIG9mZmVyVG9SZWNlaXZlVmlkZW8gc2hv
dWxkIGFkZCB2aWRlbyBsaW5lIHRvIGFsbCBzdWJzZXF1ZW50IGNyZWF0ZWQgb2ZmZXJzIGFzc2Vy
dF9lcXVhbHM6IEV4cGVjdCBjcmVhdGVkIG9mZmVyIHRvIGhhdmUgdmlkZW8gbGluZSBleHBlY3Rl
ZCAxIGJ1dCBnb3QgMAogRkFJTCBjcmVhdGVPZmZlcigpIHdpdGggb2ZmZXJUb1JlY2VpdmVBdWRp
bzp0cnVlIHRoZW4gb2ZmZXJUb1JlY2VpdmVWaWRlbzp0cnVlIHNob3VsZCBoYXZlIHJlc3VsdCBv
ZmZlciB3aXRoIGJvdGggYXVkaW8gYW5kIHZpZGVvIGxpbmUgYXNzZXJ0X2VxdWFsczogRXhwZWN0
IGF1ZGlvIGxpbmUgdG8gYmUgZm91bmQgaW4gY3JlYXRlZCBvZmZlciBleHBlY3RlZCAxIGJ1dCBn
b3QgMAotUEFTUyBUZXN0IG9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UgZXZlbnQgZm9yIGNyZWF0ZU9m
ZmVyKCkgYW5kIHRoZW4gc2V0TG9jYWxEZXNjcmlwdGlvbigpIHNob3VsZCBzdWNjZWVkIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci1vZmZlclRvUmVjZWl2ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci1vZmZlclRvUmVjZWl2ZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODYyZjQ2ODFkYzg1NTMzZWM2NGExYWVmZDVjYjAyZmYzODBhODgxOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLW9mZmVyVG9SZWNlaXZl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACisKK1BBU1MgY3JlYXRlT2ZmZXIoKSB3aXRo
IG9mZmVyVG9SZWNlaXZlQXVkaW8gc2V0IHRvIGZhbHNlIHNob3VsZCBub3QgY3JlYXRlIGEgdHJh
bnNjZWl2ZXIgCitGQUlMIGNyZWF0ZU9mZmVyKCkgd2l0aCBvZmZlclRvUmVjZWl2ZUF1ZGlvIHNo
b3VsZCBjcmVhdGUgYSAicmVjdm9ubHkiIHRyYW5zY2VpdmVyIGFzc2VydF9lcXVhbHM6IEV4cGVj
dCBwYyB0byBoYXZlIG9uZSB0cmFuc2NlaXZlciBleHBlY3RlZCAxIGJ1dCBnb3QgMAorRkFJTCBv
ZmZlclRvUmVjZWl2ZUF1ZGlvIG9wdGlvbiBzaG91bGQgYmUgaWdub3JlZCBpZiBhIG5vbi1zdG9w
cGVkICJyZWN2b25seSIgdHJhbnNjZWl2ZXIgZXhpc3RzIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBw
YyB0byBoYXZlIG9uZSB0cmFuc2NlaXZlciBleHBlY3RlZCAxIGJ1dCBnb3QgMAorUEFTUyBvZmZl
clRvUmVjZWl2ZUF1ZGlvIG9wdGlvbiBzaG91bGQgYmUgaWdub3JlZCBpZiBhIG5vbi1zdG9wcGVk
ICJzZW5kcmVjdiIgdHJhbnNjZWl2ZXIgZXhpc3RzIAorRkFJTCBvZmZlclRvUmVjZWl2ZUF1ZGlv
IHNldCB0byBmYWxzZSB3aXRoIGEgdHJhY2sgc2hvdWxkIGNyZWF0ZSBhICJzZW5kb25seSIgdHJh
bnNjZWl2ZXIgYXNzZXJ0X2VxdWFsczogRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGhhdmUgInNlbmRv
bmx5IiBkaXJlY3Rpb24gZXhwZWN0ZWQgInNlbmRvbmx5IiBidXQgZ290ICJzZW5kcmVjdiIKK0ZB
SUwgb2ZmZXJUb1JlY2VpdmVBdWRpbyBzZXQgdG8gZmFsc2Ugd2l0aCBhICJyZWN2b25seSIgdHJh
bnNjZWl2ZXIgc2hvdWxkIGNoYW5nZSB0aGUgZGlyZWN0aW9uIHRvICJpbmFjdGl2ZSIgYXNzZXJ0
X2VxdWFsczogRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGhhdmUgImluYWN0aXZlIiBkaXJlY3Rpb24g
ZXhwZWN0ZWQgImluYWN0aXZlIiBidXQgZ290ICJyZWN2b25seSIKK0ZBSUwgc3Vic2VxdWVudCBv
ZmZlclRvUmVjZWl2ZUF1ZGlvIHNldCB0byBmYWxzZSB3aXRoIGEgdHJhY2sgc2hvdWxkIGNoYW5n
ZSB0aGUgZGlyZWN0aW9uIHRvICJzZW5kb25seSIgYXNzZXJ0X2VxdWFsczogRXhwZWN0IHRyYW5z
Y2VpdmVyIHRvIGhhdmUgInNlbmRvbmx5IiBkaXJlY3Rpb24gZXhwZWN0ZWQgInNlbmRvbmx5IiBi
dXQgZ290ICJzZW5kcmVjdiIKK1BBU1MgY3JlYXRlT2ZmZXIoKSB3aXRoIG9mZmVyVG9SZWNlaXZl
VmlkZW8gc2V0IHRvIGZhbHNlIHNob3VsZCBub3QgY3JlYXRlIGEgdHJhbnNjZWl2ZXIgCitGQUlM
IGNyZWF0ZU9mZmVyKCkgd2l0aCBvZmZlclRvUmVjZWl2ZVZpZGVvIHNob3VsZCBjcmVhdGUgYSAi
cmVjdm9ubHkiIHRyYW5zY2VpdmVyIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBwYyB0byBoYXZlIG9u
ZSB0cmFuc2NlaXZlciBleHBlY3RlZCAxIGJ1dCBnb3QgMAorRkFJTCBvZmZlclRvUmVjZWl2ZVZp
ZGVvIG9wdGlvbiBzaG91bGQgYmUgaWdub3JlZCBpZiBhIG5vbi1zdG9wcGVkICJyZWN2b25seSIg
dHJhbnNjZWl2ZXIgZXhpc3RzIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBwYyB0byBoYXZlIG9uZSB0
cmFuc2NlaXZlciBleHBlY3RlZCAxIGJ1dCBnb3QgMAorUEFTUyBvZmZlclRvUmVjZWl2ZVZpZGVv
IG9wdGlvbiBzaG91bGQgYmUgaWdub3JlZCBpZiBhIG5vbi1zdG9wcGVkICJzZW5kcmVjdiIgdHJh
bnNjZWl2ZXIgZXhpc3RzIAorRkFJTCBvZmZlclRvUmVjZWl2ZVZpZGVvIHNldCB0byBmYWxzZSB3
aXRoIGEgdHJhY2sgc2hvdWxkIGNyZWF0ZSBhICJzZW5kb25seSIgdHJhbnNjZWl2ZXIgYXNzZXJ0
X2VxdWFsczogRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGhhdmUgInNlbmRvbmx5IiBkaXJlY3Rpb24g
ZXhwZWN0ZWQgInNlbmRvbmx5IiBidXQgZ290ICJzZW5kcmVjdiIKK0ZBSUwgb2ZmZXJUb1JlY2Vp
dmVWaWRlbyBzZXQgdG8gZmFsc2Ugd2l0aCBhICJyZWN2b25seSIgdHJhbnNjZWl2ZXIgc2hvdWxk
IGNoYW5nZSB0aGUgZGlyZWN0aW9uIHRvICJpbmFjdGl2ZSIgYXNzZXJ0X2VxdWFsczogRXhwZWN0
IHRyYW5zY2VpdmVyIHRvIGhhdmUgImluYWN0aXZlIiBkaXJlY3Rpb24gZXhwZWN0ZWQgImluYWN0
aXZlIiBidXQgZ290ICJyZWN2b25seSIKK0ZBSUwgc3Vic2VxdWVudCBvZmZlclRvUmVjZWl2ZVZp
ZGVvIHNldCB0byBmYWxzZSB3aXRoIGEgdHJhY2sgc2hvdWxkIGNoYW5nZSB0aGUgZGlyZWN0aW9u
IHRvICJzZW5kb25seSIgYXNzZXJ0X2VxdWFsczogRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGhhdmUg
InNlbmRvbmx5IiBkaXJlY3Rpb24gZXhwZWN0ZWQgInNlbmRvbmx5IiBidXQgZ290ICJzZW5kcmVj
diIKK0ZBSUwgb2ZmZXJUb1JlY2VpdmVBdWRpbyBhbmQgVmlkZW8gc2hvdWxkIGNyZWF0ZSB0d28g
InJlY3Zvbmx5IiB0cmFuc2NlaXZlcnMgYXNzZXJ0X2VxdWFsczogRXhwZWN0IHBjIHRvIGhhdmUg
dHdvIHRyYW5zY2VpdmVycyBleHBlY3RlZCAyIGJ1dCBnb3QgMAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1jcmVhdGVPZmZlci1vZmZlclRvUmVjZWl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY3Jl
YXRlT2ZmZXItb2ZmZXJUb1JlY2VpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDE4MjdhMWM4ZDYwYWJl
NjdjYWQ3MmE5ZWYzMjgwMDAzYzc5MmMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24t
Y3JlYXRlT2ZmZXItb2ZmZXJUb1JlY2VpdmUuaHRtbApAQCAtMCwwICsxLDE4NSBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPlRlc3QgbGVnYWN5IG9mZmVy
VG9SZWNlaXZlQXVkaW8vVmlkZW8gb3B0aW9uczwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2xlZ2FjeS1jb25maWd1cmF0aW9u
LWV4dGVuc2lvbnMiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorICAndXNlIHN0cmljdCc7CisKKyAgLy8gUnVuIHNvbWUgdGVzdHMgZm9y
IGJvdGggYXVkaW8gYW5kIHZpZGVvIGtpbmRzCisgIFsnYXVkaW8nLCAndmlkZW8nXS5mb3JFYWNo
KChraW5kKSA9PiB7CisgICAgY29uc3QgY2Fwc0tpbmQgPSBraW5kWzBdLnRvVXBwZXJDYXNlKCkg
KyBraW5kLnNsaWNlKDEpOworCisgICAgY29uc3Qgb2ZmZXJUb1JlY2VpdmVUcnVlID0ge307Cisg
ICAgb2ZmZXJUb1JlY2VpdmVUcnVlW2BvZmZlclRvUmVjZWl2ZSR7Y2Fwc0tpbmR9YF0gPSB0cnVl
OworCisgICAgY29uc3Qgb2ZmZXJUb1JlY2VpdmVGYWxzZSA9IHt9OworICAgIG9mZmVyVG9SZWNl
aXZlRmFsc2VbYG9mZmVyVG9SZWNlaXZlJHtjYXBzS2luZH1gXSA9IGZhbHNlOworCisgICAgLy8g
U3RhcnQgdGVzdGluZworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNs
b3NlKCkpOworICAgICAgY29uc3QgZHVtbXkgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnZm9vJyk7
IC8vIEp1c3QgdG8gaGF2ZSBzb21ldGhpbmcgdG8gb2ZmZXIKKworICAgICAgcmV0dXJuIHBjLmNy
ZWF0ZU9mZmVyKG9mZmVyVG9SZWNlaXZlRmFsc2UpCisgICAgICAudGhlbigoKSA9PiB7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoLCAwLAorICAgICAg
ICAgICdFeHBlY3QgcGMgdG8gaGF2ZSBubyB0cmFuc2NlaXZlcnMnKTsKKyAgICAgIH0pOworICAg
IH0sIGBjcmVhdGVPZmZlcigpIHdpdGggb2ZmZXJUb1JlY2VpdmUke2NhcHNLaW5kfSBzZXQgdG8g
ZmFsc2Ugc2hvdWxkIG5vdCBjcmVhdGUgYSB0cmFuc2NlaXZlcmApOworCisgICAgcHJvbWlzZV90
ZXN0KHQgPT4geworICAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKwor
ICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgICAgcmV0dXJuIHBj
LmNyZWF0ZU9mZmVyKG9mZmVyVG9SZWNlaXZlVHJ1ZSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGgsIDEsCisgICAg
ICAgICAgJ0V4cGVjdCBwYyB0byBoYXZlIG9uZSB0cmFuc2NlaXZlcicpOworCisgICAgICAgIGNv
bnN0IHRyYW5zY2VpdmVyID0gcGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF07CisgICAgICAgIGFzc2Vy
dF9lcXVhbHModHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAncmVjdm9ubHknLAorICAgICAgICAgICdF
eHBlY3QgdHJhbnNjZWl2ZXIgdG8gaGF2ZSAicmVjdm9ubHkiIGRpcmVjdGlvbicpOworICAgICAg
fSk7CisgICAgfSwgYGNyZWF0ZU9mZmVyKCkgd2l0aCBvZmZlclRvUmVjZWl2ZSR7Y2Fwc0tpbmR9
IHNob3VsZCBjcmVhdGUgYSAicmVjdm9ubHkiIHRyYW5zY2VpdmVyYCk7CisKKyAgICBwcm9taXNl
X3Rlc3QodCA9PiB7CisgICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwor
CisgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgICByZXR1cm4g
cGMuY3JlYXRlT2ZmZXIob2ZmZXJUb1JlY2VpdmVUcnVlKQorICAgICAgLnRoZW4oKCkgPT4gewor
ICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCwgMSwKKyAg
ICAgICAgICAnRXhwZWN0IHBjIHRvIGhhdmUgb25lIHRyYW5zY2VpdmVyJyk7CisKKyAgICAgICAg
Y29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5nZXRUcmFuc2NlaXZlcnMoKVswXTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdyZWN2b25seScsCisgICAgICAgICAg
J0V4cGVjdCB0cmFuc2NlaXZlciB0byBoYXZlICJyZWN2b25seSIgZGlyZWN0aW9uJyk7CisgICAg
ICB9KQorICAgICAgLnRoZW4oKCkgPT4gcGMuY3JlYXRlT2ZmZXIob2ZmZXJUb1JlY2VpdmVUcnVl
KSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5nZXRUcmFu
c2NlaXZlcnMoKS5sZW5ndGgsIDEsCisgICAgICAgICAgJ0V4cGVjdCBwYyB0byBzdGlsbCBoYXZl
IG9ubHkgb25lIHRyYW5zY2VpdmVyJyk7CisgICAgICB9KQorICAgICAgOworICAgIH0sIGBvZmZl
clRvUmVjZWl2ZSR7Y2Fwc0tpbmR9IG9wdGlvbiBzaG91bGQgYmUgaWdub3JlZCBpZiBhIG5vbi1z
dG9wcGVkICJyZWN2b25seSIgdHJhbnNjZWl2ZXIgZXhpc3RzYCk7CisKKyAgICBwcm9taXNlX3Rl
c3QodCA9PiB7CisgICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworCisg
ICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgICByZXR1cm4gZ2V0
VHJhY2tGcm9tVXNlck1lZGlhKGtpbmQpCisgICAgICAudGhlbigoW3RyYWNrLCBzdHJlYW1dKSA9
PiB7CisgICAgICAgIHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICAgICAgICByZXR1cm4g
cGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgIH0pCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoLCAxLAorICAgICAgICAg
ICdFeHBlY3QgcGMgdG8gaGF2ZSBvbmUgdHJhbnNjZWl2ZXInKTsKKworICAgICAgICBjb25zdCB0
cmFuc2NlaXZlciA9IHBjLmdldFRyYW5zY2VpdmVycygpWzBdOworICAgICAgICBhc3NlcnRfZXF1
YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRyZWN2JywKKyAgICAgICAgICAnRXhwZWN0
IHRyYW5zY2VpdmVyIHRvIGhhdmUgInNlbmRyZWN2IiBkaXJlY3Rpb24nKTsKKyAgICAgIH0pCisg
ICAgICAudGhlbigoKSA9PiBwYy5jcmVhdGVPZmZlcihvZmZlclRvUmVjZWl2ZVRydWUpKQorICAg
ICAgLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLmdldFRyYW5zY2VpdmVy
cygpLmxlbmd0aCwgMSwKKyAgICAgICAgICAnRXhwZWN0IHBjIHRvIHN0aWxsIGhhdmUgb25seSBv
bmUgdHJhbnNjZWl2ZXInKTsKKyAgICAgIH0pCisgICAgICA7CisgICAgfSwgYG9mZmVyVG9SZWNl
aXZlJHtjYXBzS2luZH0gb3B0aW9uIHNob3VsZCBiZSBpZ25vcmVkIGlmIGEgbm9uLXN0b3BwZWQg
InNlbmRyZWN2IiB0cmFuc2NlaXZlciBleGlzdHNgKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKKyAgICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisKKyAgICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKKyAgICAgIHJldHVybiBnZXRUcmFja0Zy
b21Vc2VyTWVkaWEoa2luZCkKKyAgICAgIC50aGVuKChbdHJhY2ssIHN0cmVhbV0pID0+IHsKKyAg
ICAgICAgcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisgICAgICAgIHJldHVybiBwYy5jcmVh
dGVPZmZlcihvZmZlclRvUmVjZWl2ZUZhbHNlKTsKKyAgICAgIH0pCisgICAgICAudGhlbigoKSA9
PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoLCAx
LAorICAgICAgICAgICdFeHBlY3QgcGMgdG8gaGF2ZSBvbmUgdHJhbnNjZWl2ZXInKTsKKworICAg
ICAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmdldFRyYW5zY2VpdmVycygpWzBdOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRvbmx5JywKKyAgICAg
ICAgICAnRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGhhdmUgInNlbmRvbmx5IiBkaXJlY3Rpb24nKTsK
KyAgICAgIH0pCisgICAgICA7CisgICAgfSwgYG9mZmVyVG9SZWNlaXZlJHtjYXBzS2luZH0gc2V0
IHRvIGZhbHNlIHdpdGggYSB0cmFjayBzaG91bGQgY3JlYXRlIGEgInNlbmRvbmx5IiB0cmFuc2Nl
aXZlcmApOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgY29uc3QgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9z
ZSgpKTsKKworICAgICAgcGMuYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbjogJ3JlY3Zv
bmx5J30pOworCisgICAgICByZXR1cm4gcGMuY3JlYXRlT2ZmZXIob2ZmZXJUb1JlY2VpdmVGYWxz
ZSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5nZXRUcmFu
c2NlaXZlcnMoKS5sZW5ndGgsIDEsCisgICAgICAgICAgJ0V4cGVjdCBwYyB0byBoYXZlIG9uZSB0
cmFuc2NlaXZlcicpOworCisgICAgICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuZ2V0VHJhbnNj
ZWl2ZXJzKClbMF07CisgICAgICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuZGlyZWN0aW9u
LCAnaW5hY3RpdmUnLAorICAgICAgICAgICdFeHBlY3QgdHJhbnNjZWl2ZXIgdG8gaGF2ZSAiaW5h
Y3RpdmUiIGRpcmVjdGlvbicpOworICAgICAgfSkKKyAgICAgIDsKKyAgICB9LCBgb2ZmZXJUb1Jl
Y2VpdmUke2NhcHNLaW5kfSBzZXQgdG8gZmFsc2Ugd2l0aCBhICJyZWN2b25seSIgdHJhbnNjZWl2
ZXIgc2hvdWxkIGNoYW5nZSB0aGUgZGlyZWN0aW9uIHRvICJpbmFjdGl2ZSJgKTsKKworICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKKyAgICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgICAgY29uc3Qg
cGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisKKyAgICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMyLmNsb3NlKCkpOworCisgICAgICByZXR1cm4gZ2V0VHJhY2tGcm9tVXNlck1lZGlhKGtp
bmQpCisgICAgICAudGhlbigoW3RyYWNrLCBzdHJlYW1dKSA9PiB7CisgICAgICAgIHBjLmFkZFRy
YWNrKHRyYWNrLCBzdHJlYW0pOworICAgICAgICByZXR1cm4gcGMuY3JlYXRlT2ZmZXIoKTsKKyAg
ICAgIH0pCisgICAgICAudGhlbigob2ZmZXIpID0+IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2Zm
ZXIpKQorICAgICAgLnRoZW4oKCkgPT4gcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKHBjLmxvY2Fs
RGVzY3JpcHRpb24pKQorICAgICAgLnRoZW4oKCkgPT4gcGMyLmNyZWF0ZUFuc3dlcigpKQorICAg
ICAgLnRoZW4oKGFuc3dlcikgPT4gcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKSkKKyAg
ICAgIC50aGVuKCgpID0+IHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHBjMi5sb2NhbERlc2NyaXB0
aW9uKSkKKyAgICAgIC50aGVuKCgpID0+IHBjLmNyZWF0ZU9mZmVyKG9mZmVyVG9SZWNlaXZlRmFs
c2UpKQorICAgICAgLnRoZW4oKG9mZmVyKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocGMu
Z2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoLCAxLAorICAgICAgICAgICdFeHBlY3QgcGMgdG8gaGF2
ZSBvbmUgdHJhbnNjZWl2ZXInKTsKKworICAgICAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmdl
dFRyYW5zY2VpdmVycygpWzBdOworICAgICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRp
cmVjdGlvbiwgJ3NlbmRvbmx5JywKKyAgICAgICAgICAnRXhwZWN0IHRyYW5zY2VpdmVyIHRvIGhh
dmUgInNlbmRvbmx5IiBkaXJlY3Rpb24nKTsKKyAgICAgIH0pCisgICAgICA7CisgICAgfSwgYHN1
YnNlcXVlbnQgb2ZmZXJUb1JlY2VpdmUke2NhcHNLaW5kfSBzZXQgdG8gZmFsc2Ugd2l0aCBhIHRy
YWNrIHNob3VsZCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiB0byAic2VuZG9ubHkiYCk7CisgIH0pOwor
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgIHJl
dHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsIG9mZmVyVG9S
ZWNlaXZlVmlkZW86IHRydWUgfSkKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfZXF1
YWxzKHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCwgMiwKKyAgICAgICAgJ0V4cGVjdCBwYyB0
byBoYXZlIHR3byB0cmFuc2NlaXZlcnMnKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhwYy5nZXRU
cmFuc2NlaXZlcnMoKVswXS5kaXJlY3Rpb24sICdyZWN2b25seScsCisgICAgICAgICdFeHBlY3Qg
Zmlyc3QgdHJhbnNjZWl2ZXIgdG8gaGF2ZSAicmVjdm9ubHkiIGRpcmVjdGlvbicpOworICAgICAg
YXNzZXJ0X2VxdWFscyhwYy5nZXRUcmFuc2NlaXZlcnMoKVsxXS5kaXJlY3Rpb24sICdyZWN2b25s
eScsCisgICAgICAgICdFeHBlY3Qgc2Vjb25kIHRyYW5zY2VpdmVyIHRvIGhhdmUgInJlY3Zvbmx5
IiBkaXJlY3Rpb24nKTsKKyAgICB9KTsKKyAgfSwgJ29mZmVyVG9SZWNlaXZlQXVkaW8gYW5kIFZp
ZGVvIHNob3VsZCBjcmVhdGUgdHdvICJyZWN2b25seSIgdHJhbnNjZWl2ZXJzJyk7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0
aW9uLWNyZWF0ZU9mZmVyLmh0bWwKaW5kZXggZGZhNGJkYzQzZGVjN2I1NmRhZmZiMmI2OTg4ZGQy
YjdlYzA3MDZiNi4uMmZhM2EwNWY2MGExYTUzNjY4ZTk5NzgwMDk5NThhMTljNTdlNGZjMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1j
cmVhdGVPZmZlci5odG1sCkBAIC0xNSw4ICsxNSw3IEBACiAgIC8vICAgZ2VuZXJhdGVBbnN3ZXIo
KQogICAvLyAgIGNvdW50QXVkaW9MaW5lKCkKICAgLy8gICBjb3VudFZpZGVvTGluZSgpCi0gIC8v
ICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQoKQotICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nf
ZXF1YWxzKCkKKyAgLy8gICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIoKQogCiAgIC8qCiAg
ICAqICA0LjMuMi4gIGNyZWF0ZU9mZmVyKCkKQEAgLTMxLDYgKzMwLDggQEAKICAgcHJvbWlzZV90
ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkKIAorICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4gcGMuY3JlYXRl
T2ZmZXIoKQogICAgIC50aGVuKG9mZmVyID0+IHsKICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IG9mZmVyLCAnb2JqZWN0JywKQEAgLTQzLDIxICs0NCwyNyBAQAogCiAgIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHRlc3Rf
c3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBjLCBbJ2hhdmUtbG9jYWwtb2ZmZXInXSk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0YXRlcyA9IFtdOwor
ICAgIHBjLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJywgKCkgPT4gc3Rh
dGVzLnB1c2gocGMuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAgIHJldHVybiBwYy5jcmVhdGVPZmZl
cih7IG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUgfSkKICAgICAudGhlbihvZmZlciA9PgogICAg
ICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikKICAgICAgIC50aGVuKCgpID0+IHsKICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhwYy5zaWduYWxpbmdTdGF0ZSwgJ2hhdmUtbG9jYWwtb2ZmZXIn
KTsKLSAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlv
biwgb2ZmZXIpOwotICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5wZW5kaW5n
TG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOworICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3Np
bWlsYXIocGMubG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOworICAgICAgICBhc3NlcnRfc2Vzc2lv
bl9kZXNjX3NpbWlsYXIocGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzdGF0ZXMsIFsnaGF2ZS1sb2NhbC1vZmZlciddKTsK
ICAgICAgIH0pKTsKICAgfSwgJ2NyZWF0ZU9mZmVyKCkgYW5kIHRoZW4gc2V0TG9jYWxEZXNjcmlw
dGlvbigpIHNob3VsZCBzdWNjZWVkJyk7CiAKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNv
bnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiBwYy5jbG9zZSgpKTsKICAgICBwYy5jbG9zZSgpOwogCiAgICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCAnSW52YWxpZFN0YXRlRXJyb3InLApAQCAtNzgsNiArODUsNyBAQAogICAgKi8KICAg
cHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCBwcm9t
aXNlID0gcGMuY3JlYXRlT2ZmZXIoKTsKIAogICAgIHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycp
OwpAQCAtMTIyLDYgKzEzMCw4IEBACiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBw
YyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
Yy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZl
QXVkaW86IHRydWUgfSkKICAgICAudGhlbihvZmZlcjEgPT4gewogICAgICAgYXNzZXJ0X2VxdWFs
cyhjb3VudEF1ZGlvTGluZShvZmZlcjEuc2RwKSwgMSwKQEAgLTE0OSw2ICsxNTksOCBAQAogICBw
cm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICByZXR1cm4g
cGMuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlIH0pCiAgICAgLnRoZW4o
b2ZmZXIxID0+IHsKICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRWaWRlb0xpbmUob2ZmZXIxLnNk
cCksIDEsCkBAIC0xNjUsNiArMTc3LDggQEAKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNv
bnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKHsKICAgICAgIG9m
ZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsCiAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiBmYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tZ2V0SWRlbnRpdHlBc3NlcnRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLWdldElkZW50aXR5QXNzZXJ0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJlY2NlODM2M2IzODY5OTg0Y2Q4YWM4MjJlNDk0Yjk4MjA1YmU1ZjguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tZ2V0
SWRlbnRpdHlBc3NlcnRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwMCArMCwwIEBACi08
IWRvY3R5cGUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+UlRDUGVlckNvbm5l
Y3Rpb24ucHJvdG90eXBlLmdldElkZW50aXR5QXNzZXJ0aW9uPC90aXRsZT4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJpZGVu
dGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSAgJ3VzZSBzdHJpY3QnOwotCi0g
IC8vIFRlc3QgaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBlZGl0b3IgZHJhZnQ6Ci0gIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0
bWwKLQotICAvLyBUaGUgdGVzdHMgaGVyZSBpbnRlcmFjdHMgd2l0aCB0aGUgbW9jayBpZGVudGl0
eSBwcm92aWRlciBsb2NhdGVkIGF0Ci0gIC8vICAgLy53ZWxsLWtub3duL2lkcC1wcm94eS9tb2Nr
LWlkcC5qcwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVk
IGZyb20gaWRlbnRpdHktaGVscGVyLmpzCi0gIC8vICAgcGFyc2VBc3NlcnRpb25SZXN1bHQKLSAg
Ly8gICBnZXRJZHBEb21haW5zCi0gIC8vICAgYXNzZXJ0X3J0Y2Vycm9yX3JlamVjdGlvbgotICAv
LyAgIGhvc3RTdHJpbmcKLQotICAvKgotICAgIDkuNi4gIFJUQ1BlZXJDb25uZWN0aW9uIEludGVy
ZmFjZSBFeHRlbnNpb25zCi0gICAgICBwYXJ0aWFsIGludGVyZmFjZSBSVENQZWVyQ29ubmVjdGlv
biB7Ci0gICAgICAgIHZvaWQgICAgICAgICAgICAgICBzZXRJZGVudGl0eVByb3ZpZGVyKERPTVN0
cmluZyBwcm92aWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWwgUlRDSWRlbnRpdHlQcm92aWRlck9wdGlvbnMgb3B0aW9ucyk7Ci0gICAg
ICAgIFByb21pc2U8RE9NU3RyaW5nPiBnZXRJZGVudGl0eUFzc2VydGlvbigpOwotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxSVENJZGVudGl0eUFzc2VydGlvbj4gcGVlcklkZW50
aXR5OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyAgICAgICAgICAgICAg
ICAgICAgaWRwTG9naW5Vcmw7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/
ICAgICAgICAgICAgICAgICAgICBpZHBFcnJvckluZm87Ci0gICAgICB9OwotCi0gICAgICBkaWN0
aW9uYXJ5IFJUQ0lkZW50aXR5UHJvdmlkZXJPcHRpb25zIHsKLSAgICAgICAgRE9NU3RyaW5nIHBy
b3RvY29sID0gImRlZmF1bHQiOwotICAgICAgICBET01TdHJpbmcgdXNlcm5hbWVIaW50OwotICAg
ICAgICBET01TdHJpbmcgcGVlcklkZW50aXR5OwotICAgICAgfTsKLSAgICovCi0gIHByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAg
ICBjb25zdCBwb3J0ID0gd2luZG93LmxvY2F0aW9uLnBvcnQ7Ci0KLSAgICBjb25zdCBbaWRwRG9t
YWluXSA9IGdldElkcERvbWFpbnMoKTsKLSAgICBjb25zdCBpZHBIb3N0ID0gaG9zdFN0cmluZyhp
ZHBEb21haW4sIHBvcnQpOwotCi0gICAgcGMuc2V0SWRlbnRpdHlQcm92aWRlcihpZHBIb3N0LCB7
Ci0gICAgICBwcm90b2NvbDogJ21vY2staWRwLmpzP2Zvbz1iYXInLAotICAgICAgdXNlcm5hbWVI
aW50OiBgYWxpY2VAJHtpZHBEb21haW59YCwKLSAgICAgIHBlZXJJZGVudGl0eTogJ2JvYkBleGFt
cGxlLm9yZycKLSAgICB9KTsKLQotICAgIHJldHVybiBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigp
Ci0gICAgLnRoZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+IHsKLSAgICAgIGNvbnN0IHsgaWRwLCBh
c3NlcnRpb24gfSA9IHBhcnNlQXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvblJlc3VsdFN0cik7Ci0K
LSAgICAgIGFzc2VydF9lcXVhbHMoaWRwLmRvbWFpbiwgaWRwSG9zdCwKLSAgICAgICAgJ0V4cGVj
dCBtb2NrLWlkcC5qcyB0byBjb25zdHJ1Y3QgZG9tYWluIGZyb20gaXRzIGxvY2F0aW9uLmhvc3Qn
KTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhpZHAucHJvdG9jb2wsICdtb2NrLWlkcC5qcycsCi0g
ICAgICAgICdFeHBlY3QgbW9jay1pZHAuanMgdG8gcmV0dXJuIHByb3RvY29sIG9mIGl0c2VsZiB3
aXRoIG5vIHF1ZXJ5IHN0cmluZycpOwotCi0gICAgICBjb25zdCB7Ci0gICAgICAgIHdhdGVybWFy
aywKLSAgICAgICAgYXJncywKLSAgICAgICAgZW52LAotICAgICAgICBxdWVyeSwKLSAgICAgIH0g
PSBhc3NlcnRpb247Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMod2F0ZXJtYXJrLCAnbW9jay1pZHAu
anMud2F0ZXJtYXJrJywKLSAgICAgICAgJ0V4cGVjdCBhc3NlcnRpb24gcmVzdWx0IHRvIGNvbnRh
aW4gd2F0ZXJtYXJrIGxlZnQgYnkgbW9jay1pZHAuanMnKTsKLQotICAgICAgYXNzZXJ0X2VxdWFs
cyhhcmdzLm9yaWdpbiwgd2luZG93Lm9yaWdpbiwKLSAgICAgICAgJ0V4cGVjdCBhcmdzLm9yaWdp
biBhcmd1bWVudCB0byBiZSB0aGUgb3JpZ2luIG9mIHRoaXMgd2luZG93Jyk7Ci0KLSAgICAgIGFz
c2VydF9lcXVhbHMoZW52LmxvY2F0aW9uLAotICAgICAgICBgaHR0cHM6Ly8ke2lkcEhvc3R9Ly53
ZWxsLWtub3duL2lkcC1wcm94eS9pZHAtdGVzdC5qcz9mb289YmFyYCwKLSAgICAgICAgJ0V4cGVj
dCBJZFAgcHJveHkgdG8gYmUgbG9hZGVkIHdpdGggZnVsbCB3ZWxsLWtub3duIFVSTCBjb25zdHJ1
Y3RlZCBmcm9tIHByb3ZpZGVyIGFuZCBwcm90b2NvbCcpOwotCi0gICAgICBhc3NlcnRfZXF1YWxz
KGVudi5vcmlnaW4sIGBodHRwczovLyR7aWRwSG9zdH1gLAotICAgICAgICAnRXhwZWN0IElkUCB0
byBoYXZlIGl0cyBvd24gb3JpZ2luJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoYXJncy5vcHRp
b25zLnByb3RvY29sLCAnaWRwLXRlc3QuanM/Zm9vPWJhcicsCi0gICAgICAgICdFeHBlY3Qgb3B0
aW9ucy5wcm90b2NvbCB0byBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBiZWluZyBwYXNzZWQgZnJvbSBo
ZXJlJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoYXJncy5vcHRpb25zLnVzZXJuYW1lSGludCwg
YGFsaWNlQCR7aWRwRG9tYWlufWAsCi0gICAgICAgICdFeHBlY3Qgb3B0aW9ucy51c2VybmFtZUhp
bnQgdG8gYmUgdGhlIHNhbWUgdmFsdWUgYXMgYmVpbmcgcGFzc2VkIGZyb20gaGVyZScpOwotCi0g
ICAgICBhc3NlcnRfZXF1YWxzKGFyZ3Mub3B0aW9ucy5wZWVySWRlbnRpdHksICdib2JAZXhhbXBs
ZS5vcmcnLAotICAgICAgICAnRXhwZWN0IG9wdGlvbnMucGVlcklkZW50aXR5IHRvIGJlIHRoZSBz
YW1lIHZhbHVlIGFzIGJlaW5nIHBhc3NlZCBmcm9tIGhlcmUnKTsKLQotICAgICAgYXNzZXJ0X2Vx
dWFscyhxdWVyeS5mb28sICdiYXInLAotICAgICAgICAnRXhwZWN0IHF1ZXJ5IHN0cmluZyB0byBi
ZSBwYXJzZWQgYnkgbW9jay1pZHAuanMgYW5kIHJldHVybmVkIGJhY2snKTsKLSAgICB9KTsKLSAg
fSwgJ2dldElkZW50aXR5QXNzZXJ0aW9uKCkgc2hvdWxkIGxvYWQgSWRQIHByb3h5IGFuZCByZXR1
cm4gYXNzZXJ0aW9uIGdlbmVyYXRlZCcpOwotCi0gIC8vIFdoZW4gZ2VuZXJhdGluZyBhc3NlcnRp
b24sIHRoZSBSVENQZWVyQ29ubmVjdGlvbiBkb2Vzbid0IGNhcmUgaWYgdGhlIHJldHVybmVkIGFz
c2VydGlvbgotICAvLyByZXByZXNlbnRzIGlkZW50aXR5IG9mIGRpZmZlcmVudCBkb21haW4KLSAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOwotICAgIGNvbnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24ucG9ydDsKLQotICAgIGNvbnN0
IFtpZHBEb21haW4xLCBpZHBEb21haW4yXSA9IGdldElkcERvbWFpbnMoKTsKLSAgICBhc3NlcnRf
bm90X2VxdWFscyhpZHBEb21haW4xLCBpZHBEb21haW4yLAotICAgICAgJ1Nhbml0eSBjaGVjayB0
d28gaWRwRG9tYWlucyBhcmUgZGlmZmVyZW50Jyk7Ci0KLSAgICAvLyBBc2sgbW9jay1pZHAuanMg
dG8gcmV0dXJuIGEgY3VzdG9tIGRvbWFpbiBpZHBEb21haW4yIGFuZCBjdXN0b20gcHJvdG9jb2wg
Zm9vCi0gICAgcGMuc2V0SWRlbnRpdHlQcm92aWRlcihob3N0U3RyaW5nKGlkcERvbWFpbjEsIHBv
cnQpLCB7Ci0gICAgICBwcm90b2NvbDogYG1vY2staWRwLmpzP2dlbmVyYXRvckFjdGlvbj1yZXR1
cm4tY3VzdG9tLWlkcCZkb21haW49JHtpZHBEb21haW4yfSZwcm90b2NvbD1mb29gLAotICAgICAg
dXNlcm5hbWVIaW50OiBgYWxpY2VAJHtpZHBEb21haW4yfWAsCi0gICAgfSk7Ci0KLSAgICByZXR1
cm4gcGMuZ2V0SWRlbnRpdHlBc3NlcnRpb24oKQotICAgIC50aGVuKGFzc2VydGlvblJlc3VsdFN0
ciA9PiB7Ci0gICAgICBjb25zdCB7IGlkcCwgYXNzZXJ0aW9uIH0gPSBwYXJzZUFzc2VydGlvblJl
c3VsdChhc3NlcnRpb25SZXN1bHRTdHIpOwotICAgICAgYXNzZXJ0X2VxdWFscyhpZHAuZG9tYWlu
LCBpZHBEb21haW4yKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoaWRwLnByb3RvY29sLCAnZm9vJyk7
Ci0gICAgICBhc3NlcnRfZXF1YWxzKGFzc2VydGlvbi5vcHRpb25zLnVzZXJuYW1lSGludCwgYGFs
aWNlQCR7aWRwRG9tYWluMn1gKTsKLSAgICB9KTsKLSAgfSwgJ2dldElkZW50aXR5QXNzZXJ0aW9u
KCkgc2hvdWxkIHN1Y2NlZWQgaWYgbW9jay1pZHAuanMgcmV0dXJuIGRpZmZlcmVudCBkb21haW4g
YW5kIHByb3RvY29sIGluIGFzc2VydGlvbicpOwotCi0gIC8qCi0gICAgOS4zLiAgUmVxdWVzdGlu
ZyBJZGVudGl0eSBBc3NlcnRpb25zCi0gICAgICA0LiAgSWYgdGhlIElkUCBwcm94eSBwcm9kdWNl
cyBhbiBlcnJvciBvciByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGRvZXMgbm90IHJlc29sdmUgdG8K
LSAgICAgICAgICBhIHZhbGlkIFJUQ0lkZW50aXR5VmFsaWRhdGlvblJlc3VsdCAoc2VlIDkuNSBJ
ZFAgRXJyb3IgSGFuZGxpbmcpLCB0aGVuIGlkZW50aXR5Ci0gICAgICAgICAgdmFsaWRhdGlvbiBm
YWlscy4KLQotICAgIDkuNS4gIElkUCBFcnJvciBIYW5kbGluZwotICAgICAgLSBJZiBhbiBpZGVu
dGl0eSBwcm92aWRlciB0aHJvd3MgYW4gZXhjZXB0aW9uIG9yIHJldHVybnMgYSBwcm9taXNlIHRo
YXQgaXMgdWx0aW1hdGVseQotICAgICAgICByZWplY3RlZCwgdGhlbiB0aGUgcHJvY2VkdXJlIHRo
YXQgZGVwZW5kcyBvbiB0aGUgSWRQIE1VU1QgYWxzbyBmYWlsLiBUaGVzZSB0eXBlcyBvZgotICAg
ICAgICBlcnJvcnMgd2lsbCBjYXVzZSBhbiBJZFAgZmFpbHVyZSB3aXRoIGFuIFJUQ0Vycm9yIHdp
dGggZXJyb3JEZXRhaWwgc2V0IHRvCi0gICAgICAgICJpZHAtZXhlY3V0aW9uLWZhaWx1cmUiLgot
Ci0gICAgOS42LiAgUlRDUGVlckNvbm5lY3Rpb24gSW50ZXJmYWNlIEV4dGVuc2lvbnMKLSAgICAg
IGlkcEVycm9ySW5mbwotICAgICAgICBBbiBhdHRyaWJ1dGUgdGhhdCB0aGUgSWRQIGNhbiB1c2Ug
dG8gcGFzcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGJhY2sgdG8gdGhlCi0gICAgICAgIGFwcGxp
Y2F0aW9ucyBhYm91dCB0aGUgZXJyb3IuIFRoZSBmb3JtYXQgb2YgdGhpcyBzdHJpbmcgaXMgZGVm
aW5lZCBieSB0aGUgSWRQIGFuZAotICAgICAgICBtYXkgYmUgSlNPTi4KLSAgICovCi0gIHByb21p
c2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhwYy5pZHBFcnJvckluZm8sIG51bGwsCi0gICAgICAnRXhwZWN0
IGluaXRpYWwgcGMuaWRwRXJyb3JJbmZvIHRvIGJlIG51bGwnKTsKLQotICAgIGNvbnN0IHBvcnQg
PSB3aW5kb3cubG9jYXRpb24ucG9ydDsKLSAgICBjb25zdCBbaWRwRG9tYWluXSA9IGdldElkcERv
bWFpbnMoKTsKLQotICAgIC8vIEFzayBtb2NrLWlkcC5qcyB0byB0aHJvdyBhbiBlcnJvciB3aXRo
IGVyci5lcnJvckluZm8gc2V0IHRvIGJhcgotICAgIHBjLnNldElkZW50aXR5UHJvdmlkZXIoaG9z
dFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7Ci0gICAgICBwcm90b2NvbDogYG1vY2staWRwLmpz
P2dlbmVyYXRvckFjdGlvbj10aHJvdy1lcnJvciZlcnJvckluZm89YmFyYCwKLSAgICAgIHVzZXJu
YW1lSGludDogYGFsaWNlQCR7aWRwRG9tYWlufWAsCi0gICAgfSk7Ci0KLSAgICByZXR1cm4gYXNz
ZXJ0X3J0Y2Vycm9yX3JlamVjdGlvbignaWRwLWV4ZWN1dGlvbi1mYWlsdXJlJywKLSAgICAgIHBj
LmdldElkZW50aXR5QXNzZXJ0aW9uKCkpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0
X2VxdWFscyhwYy5pZHBFcnJvckluZm8sICdiYXInLAotICAgICAgICAnRXhwZWN0IHBjLmlkcEVy
cm9ySW5mbyB0byBiZSBzZXQgdG8gdGhlIGVyci5pZHBFcnJvckluZm8gdGhyb3duIGJ5IG1vY2st
aWRwLmpzJyk7Ci0gICAgfSk7Ci0gIH0sIGBnZXRJZGVudGl0eUFzc2VydGlvbigpIHNob3VsZCBy
ZWplY3Qgd2l0aCBSVENFcnJvcignaWRwLWV4ZWN1dGlvbi1mYWlsdXJlJykgaWYgbW9jay1pZHAu
anMgdGhyb3dzIGVycm9yYCk7Ci0KLSAgLyoKLSAgICA5LjUuICBJZFAgRXJyb3IgSGFuZGxpbmcK
LSAgICAgIC0gSWYgdGhlIHNjcmlwdCBsb2FkZWQgZnJvbSB0aGUgaWRlbnRpdHkgcHJvdmlkZXIg
aXMgbm90IHZhbGlkIEphdmFTY3JpcHQgb3IgZG9lcwotICAgICAgICBub3QgaW1wbGVtZW50IHRo
ZSBjb3JyZWN0IGludGVyZmFjZXMsIGl0IGNhdXNlcyBhbiBJZFAgZmFpbHVyZSB3aXRoIGFuIFJU
Q0Vycm9yCi0gICAgICAgIHdpdGggZXJyb3JEZXRhaWwgc2V0IHRvICJpZHAtYmFkLXNjcmlwdC1m
YWlsdXJlIi4KLSAgICovCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOwotCi0gICAgY29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlv
bi5wb3J0OwotICAgIGNvbnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygpOwotCi0gICAg
Ly8gQXNrIG1vY2staWRwLmpzIHRvIG5vdCByZWdpc3RlciBpdHMgY2FsbGJhY2sgdG8gdGhlCi0g
ICAgLy8gUlRDSWRlbnRpdHlQcm92aWRlclJlZ2lzdHJhcgotICAgIHBjLnNldElkZW50aXR5UHJv
dmlkZXIoaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7Ci0gICAgICBwcm90b2NvbDogYG1v
Y2staWRwLmpzP2FjdGlvbj1kby1ub3QtcmVnaXN0ZXJgLAotICAgICAgdXNlcm5hbWVIaW50OiBg
YWxpY2VAJHtpZHBEb21haW59YCwKLSAgICB9KTsKLQotICAgIHJldHVybiBhc3NlcnRfcnRjZXJy
b3JfcmVqZWN0aW9uKCdpZHAtYmFkLXNjcmlwdC1mYWlsdXJlJywKLSAgICAgIHBjLmdldElkZW50
aXR5QXNzZXJ0aW9uKCkpOwotCi0gIH0sIGBnZXRJZGVudGl0eUFzc2VydGlvbigpIHNob3VsZCBy
ZWplY3Qgd2l0aCBSVENFcnJvcignaWRwLWJhZC1zY3JpcHQtZmFpbHVyZScpIGlmIElkUCBwcm94
eSBzY3JpcHQgZG8gbm90IHJlZ2lzdGVyIGl0cyBjYWxsYmFja2ApOwotCi0gIC8qCi0gICAgOS4z
LiAgUmVxdWVzdGluZyBJZGVudGl0eSBBc3NlcnRpb25zCi0gICAgICA0LiAgSWYgdGhlIElkUCBw
cm94eSBwcm9kdWNlcyBhbiBlcnJvciBvciByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGRvZXMgbm90
IHJlc29sdmUKLSAgICAgICAgICB0byBhIHZhbGlkIFJUQ0lkZW50aXR5QXNzZXJ0aW9uUmVzdWx0
IChzZWUgOS41IElkUCBFcnJvciBIYW5kbGluZyksIHRoZW4gYXNzZXJ0aW9uCi0gICAgICAgICAg
Z2VuZXJhdGlvbiBmYWlscy4KLSAgICovCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25z
dCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotCi0gICAgY29uc3QgcG9ydCA9IHdpbmRv
dy5sb2NhdGlvbi5wb3J0OwotICAgIGNvbnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygp
OwotCi0gICAgLy8gQXNrIG1vY2staWRwLmpzIHRvIHJldHVybiBhbiBpbnZhbGlkIHJlc3VsdCB0
aGF0IGlzIG5vdCBwcm9wZXIKLSAgICAvLyBSVENJZGVudGl0eUFzc2VydGlvblJlc3VsdAotICAg
IHBjLnNldElkZW50aXR5UHJvdmlkZXIoaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7Ci0g
ICAgICBwcm90b2NvbDogYG1vY2staWRwLmpzP2dlbmVyYXRvckFjdGlvbj1yZXR1cm4taW52YWxp
ZC1yZXN1bHRgLAotICAgICAgdXNlcm5hbWVIaW50OiBgYWxpY2VAJHtpZHBEb21haW59YCwKLSAg
ICB9KTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgJ09wZXJhdGlvbkVycm9yJywK
LSAgICAgIHBjLmdldElkZW50aXR5QXNzZXJ0aW9uKCkpOwotICB9LCBgZ2V0SWRlbnRpdHlBc3Nl
cnRpb24oKSBzaG91bGQgcmVqZWN0IHdpdGggT3BlcmF0aW9uRXJyb3IgaWYgbW9jay1pZHAuanMg
cmV0dXJuIGludmFsaWQgcmVzdWx0YCk7Ci0KLSAgLyoKLSAgICA5LjUuICBJZFAgRXJyb3IgSGFu
ZGxpbmcKLSAgICAgIC0gQSBSVENQZWVyQ29ubmVjdGlvbiBtaWdodCBiZSBjb25maWd1cmVkIHdp
dGggYW4gaWRlbnRpdHkgcHJvdmlkZXIsIGJ1dCBsb2FkaW5nIG9mCi0gICAgICAgIHRoZSBJZFAg
VVJJIGZhaWxzLiBBbnkgcHJvY2VkdXJlIHRoYXQgYXR0ZW1wdHMgdG8gaW52b2tlIHN1Y2ggYW4g
aWRlbnRpdHkgcHJvdmlkZXIKLSAgICAgICAgYW5kIGNhbm5vdCBsb2FkIHRoZSBVUkkgZmFpbHMg
d2l0aCBhbiBSVENFcnJvciB3aXRoIGVycm9yRGV0YWlsIHNldCB0bwotICAgICAgICAiaWRwLWxv
YWQtZmFpbHVyZSIgYW5kIHRoZSBodHRwUmVxdWVzdFN0YXR1c0NvZGUgYXR0cmlidXRlIG9mIHRo
ZSBlcnJvciBzZXQgdG8gdGhlCi0gICAgICAgIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3Bv
bnNlLgotICAgKi8KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7Ci0KLSAgICBwYy5zZXRJZGVudGl0eVByb3ZpZGVyKCdub25leGlz
dGVudC1vcmlnaW4ud2ViLXBsYXRmb3JtLnRlc3QnLCB7Ci0gICAgICBwcm90b2NvbDogYG5vbi1l
eGlzdGVudGAsCi0gICAgICB1c2VybmFtZUhpbnQ6IGBhbGljZUBleGFtcGxlLm9yZ2AsCi0gICAg
fSk7Ci0KLSAgICByZXR1cm4gYXNzZXJ0X3J0Y2Vycm9yX3JlamVjdGlvbignaWRwLWxvYWQtZmFp
bHVyZScsCi0gICAgICBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpKTsKLSAgfSwgYGdldElkZW50
aXR5QXNzZXJ0aW9uKCkgc2hvdWxkIHJlamVjdCB3aXRoIFJUQ0Vycm9yKCdpZHAtbG9hZC1mYWls
dXJlJykgaWYgSWRQIGNhbm5vdCBiZSBsb2FkZWRgKTsKLQotICAvKgotICAgIDkuMy4xLiAgVXNl
ciBMb2dpbiBQcm9jZWR1cmUKLSAgICAgIFJlamVjdGluZyB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSBnZW5lcmF0ZUFzc2VydGlvbiB3aWxsIGNhdXNlIHRoZSBlcnJvciB0bwotICAgICAgcHJvcGFn
YXRlIHRvIHRoZSBhcHBsaWNhdGlvbi4gTG9naW4gZXJyb3JzIGFyZSBpbmRpY2F0ZWQgYnkgcmVq
ZWN0aW5nIHRoZQotICAgICAgcHJvbWlzZSB3aXRoIGFuIFJUQ0Vycm9yIHdpdGggZXJyb3JEZXRh
aWwgc2V0IHRvICJpZHAtbmVlZC1sb2dpbiIuCi0KLSAgICAgIFRoZSBVUkwgdG8gbG9naW4gYXQg
d2lsbCBiZSBwYXNzZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGluIHRoZSBpZHBMb2dpblVybAotICAg
ICAgYXR0cmlidXRlIG9mIHRoZSBSVENQZWVyQ29ubmVjdGlvbi4KLQotICAgIDkuNS4gIElkUCBF
cnJvciBIYW5kbGluZwotICAgICAgLSBJZiB0aGUgaWRlbnRpdHkgcHJvdmlkZXIgcmVxdWlyZXMg
dGhlIHVzZXIgdG8gbG9naW4sIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsCi0gICAgICAgIFJUQ0Vy
cm9yIHdpdGggZXJyb3JEZXRhaWwgc2V0IHRvICJpZHAtbmVlZC1sb2dpbiIgYW5kIHRoZSBpZHBM
b2dpblVybCBhdHRyaWJ1dGUKLSAgICAgICAgb2YgdGhlIGVycm9yIHNldCB0byB0aGUgVVJMIHRo
YXQgY2FuIGJlIHVzZWQgdG8gbG9naW4uCi0gICAqLwotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0g
ICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLQotICAgIGFzc2VydF9lcXVh
bHMocGMuaWRwTG9naW5VcmwsIG51bGwsCi0gICAgICAnRXhwZWN0IGluaXRpYWwgcGMuaWRwTG9n
aW5VcmwgdG8gYmUgbnVsbCcpOwotCi0gICAgY29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5w
b3J0OwotICAgIGNvbnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygpOwotICAgIGNvbnN0
IGlkcEhvc3QgPSBob3N0U3RyaW5nKGlkcERvbWFpbiwgcG9ydCk7Ci0KLSAgICBwYy5zZXRJZGVu
dGl0eVByb3ZpZGVyKGlkcEhvc3QsIHsKLSAgICAgIHByb3RvY29sOiBgbW9jay1pZHAuanM/Z2Vu
ZXJhdG9yQWN0aW9uPXJlcXVpcmUtbG9naW5gLAotICAgICAgdXNlcm5hbWVIaW50OiBgYWxpY2VA
JHtpZHBEb21haW59YCwKLSAgICB9KTsKLQotICAgIHJldHVybiBhc3NlcnRfcnRjZXJyb3JfcmVq
ZWN0aW9uKCdpZHAtbmVlZC1sb2dpbicsCi0gICAgICBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigp
KQotICAgIC50aGVuKGVyciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGVyci5pZHBMb2dpblVy
bCwgYGh0dHBzOi8vJHtpZHBIb3N0fS9sb2dpbmAsCi0gICAgICAgICdFeHBlY3QgZXJyLmlkcExv
Z2luVXJsIHRvIGJlIHNldCB0byB1cmwgc2V0IGJ5IG1vY2staWRwLmpzJyk7Ci0KLSAgICAgIGFz
c2VydF9lcXVhbHMocGMuaWRwTG9naW5VcmwsIGBodHRwczovLyR7aWRwSG9zdH0vbG9naW5gLAot
ICAgICAgICAnRXhwZWN0IHBjLmlkcExvZ2luVXJsIHRvIGJlIHNldCB0byB1cmwgc2V0IGJ5IG1v
Y2staWRwLmpzJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMocGMuaWRwRXJyb3JJbmZvLCAnbG9n
aW4gcmVxdWlyZWQnLAotICAgICAgICAnRXhwZWN0IHBjLmlkcEVycm9ySW5mbyB0byBiZSBzZXQg
dG8gaW5mbyBzZXQgYnkgbW9jay1pZHAuanMnKTsKLSAgICB9KTsKLSAgfSwgYGdldElkZW50aXR5
QXNzZXJ0aW9uKCkgc2hvdWxkIHJlamVjdCB3aXRoIFJUQ0Vycm9yKCdpZHAtbmVlZC1sb2dpbicp
IHdoZW4gbW9jay1pZHAuanMgcmVxdWlyZXMgbG9naW5gKTsKLQotICAvKgotICAgIFJUQ0lkZW50
aXR5UHJvdmlkZXJPcHRpb25zIE1lbWJlcnMKLSAgICAgIHBlZXJJZGVudGl0eQotICAgICAgICBU
aGUgaWRlbnRpdHkgb2YgdGhlIHBlZXIuIEZvciBpZGVudGl0eSBwcm92aWRlcnMgdGhhdCBiaW5k
IHRoZWlyIGFzc2VydGlvbnMgdG8gYQotICAgICAgICBwYXJ0aWN1bGFyIHBhaXIgb2YgY29tbXVu
aWNhdGlvbiBwZWVycywgdGhpcyBhbGxvd3MgdGhlbSB0byBnZW5lcmF0ZSBhbiBhc3NlcnRpb24K
LSAgICAgICAgdGhhdCBpbmNsdWRlcyBib3RoIGxvY2FsIGFuZCByZW1vdGUgaWRlbnRpdGllcy4g
SWYgdGhpcyB2YWx1ZSBpcyBvbWl0dGVkLCBidXQgYQotICAgICAgICB2YWx1ZSBpcyBwcm92aWRl
ZCBmb3IgdGhlIHBlZXJJZGVudGl0eSBtZW1iZXIgb2YgUlRDQ29uZmlndXJhdGlvbiwgdGhlIHZh
bHVlIGZyb20KLSAgICAgICAgUlRDQ29uZmlndXJhdGlvbiBpcyB1c2VkLgotICAqLwotICBwcm9t
aXNlX3Rlc3QoKCkgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKHsK
LSAgICAgIHBlZXJJZGVudGl0eTogJ2JvYkBleGFtcGxlLm5ldCcKLSAgICB9KTsKLQotICAgIGNv
bnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24ucG9ydDsKLSAgICBjb25zdCBbaWRwRG9tYWluXSA9
IGdldElkcERvbWFpbnMoKTsKLSAgICBjb25zdCBpZHBIb3N0ID0gaG9zdFN0cmluZyhpZHBEb21h
aW4sIHBvcnQpOwotCi0gICAgcGMuc2V0SWRlbnRpdHlQcm92aWRlcihpZHBIb3N0LCB7Ci0gICAg
ICBwcm90b2NvbDogJ21vY2staWRwLmpzJwotICAgIH0pOwotCi0gICAgcmV0dXJuIHBjLmdldElk
ZW50aXR5QXNzZXJ0aW9uKCkKLSAgICAudGhlbihhc3NlcnRpb25SZXN1bHRTdHIgPT4gewotICAg
ICAgY29uc3QgeyBhc3NlcnRpb24gfSA9IHBhcnNlQXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvblJl
c3VsdFN0cik7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGFzc2VydGlvbi5hcmdzLm9wdGlvbnMucGVl
cklkZW50aXR5LCAnYm9iQGV4YW1wbGUubmV0Jyk7Ci0gICAgfSk7Ci0gIH0sICdzZXRJZGVudGl0
eVByb3ZpZGVyKCkgd2l0aCBubyBwZWVySWRlbnRpdHkgcHJvdmlkZWQgc2hvdWxkIHVzZSBwZWVy
SWRlbnRpdHkgdmFsdWUgZnJvbSBnZXRDb25maWd1cmF0aW9uKCknKTsKLQotICAvKgotICAgIDku
Ni4gIHNldElkZW50aXR5UHJvdmlkZXIKLSAgICAgIDMuICBJZiBhbnkgaWRlbnRpdHkgcHJvdmlk
ZXIgdmFsdWUgaGFzIGNoYW5nZWQsIGRpc2NhcmQgYW55IHN0b3JlZCBpZGVudGl0eSBhc3NlcnRp
b24uCi0gICAqLwotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5wb3J0
OwotICAgIGNvbnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygpOwotICAgIGNvbnN0IGlk
cEhvc3QgPSBob3N0U3RyaW5nKGlkcERvbWFpbiwgcG9ydCk7Ci0KLSAgICBwYy5zZXRJZGVudGl0
eVByb3ZpZGVyKGlkcEhvc3QsIHsKLSAgICAgIHByb3RvY29sOiAnbW9jay1pZHAuanM/bWFyaz1m
aXJzdCcKLSAgICB9KTsKLQotICAgIHJldHVybiBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpCi0g
ICAgLnRoZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+IHsKLSAgICAgIGNvbnN0IHsgYXNzZXJ0aW9u
IH0gPSBwYXJzZUFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1bHRTdHIpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyhhc3NlcnRpb24ucXVlcnkubWFyaywgJ2ZpcnN0Jyk7Ci0KLSAgICAgIHBjLnNl
dElkZW50aXR5UHJvdmlkZXIoaWRwSG9zdCwgewotICAgICAgICBwcm90b2NvbDogJ21vY2staWRw
LmpzP21hcms9c2Vjb25kJwotICAgICAgfSk7Ci0KLSAgICAgIHJldHVybiBwYy5nZXRJZGVudGl0
eUFzc2VydGlvbigpOwotICAgIH0pCi0gICAgLnRoZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+IHsK
LSAgICAgIGNvbnN0IHsgYXNzZXJ0aW9uIH0gPSBwYXJzZUFzc2VydGlvblJlc3VsdChhc3NlcnRp
b25SZXN1bHRTdHIpOwotICAgICAgYXNzZXJ0X2VxdWFscyhhc3NlcnRpb24ucXVlcnkubWFyaywg
J3NlY29uZCcsCi0gICAgICAgICdFeHBlY3QgZ2VuZXJhdGVkIGFzc2VydGlvbiBpcyBmcm9tIHNl
Y29uZCBJZFAgY29uZmlnJyk7Ci0gICAgfSk7Ci0gIH0sIGBDYWxsaW5nIHNldElkZW50aXR5UHJv
dmlkZXIoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgcmVzZXQgaWRlbnRpdHkgYXNzZXJ0aW9uc2Ap
OwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOwotICAgIGNvbnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24ucG9ydDsKLSAgICBj
b25zdCBbaWRwRG9tYWluXSA9IGdldElkcERvbWFpbnMoKTsKLQotICAgIHBjLnNldElkZW50aXR5
UHJvdmlkZXIoaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7Ci0gICAgICBwcm90b2NvbDog
J21vY2staWRwLmpzJywKLSAgICAgIHVzZXJuYW1lSGludDogYGFsaWNlQCR7aWRwRG9tYWlufWAK
LSAgICB9KTsKLQotICAgIHJldHVybiBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpCi0gICAgLnRo
ZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+Ci0gICAgICBwYy5jcmVhdGVPZmZlcigpCi0gICAgICAu
dGhlbihvZmZlciA9PiB7Ci0gICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmNsdWRlcyhg
XHJcbmE9aWRlbnRpdHk6JHthc3NlcnRpb25SZXN1bHRTdHJ9YCwKLSAgICAgICAgICAnRXhwZWN0
IFNEUCB0byBoYXZlIGE9aWRlbnRpdHkgbGluZSBjb250YWluaW5nIGFzc2VydGlvbiBzdHJpbmcn
KSk7Ci0gICAgICB9KSk7Ci0gIH0sICdjcmVhdGVPZmZlcigpIHNob3VsZCByZXR1cm4gU0RQIGNv
bnRhaW5pbmcgaWRlbnRpdHkgYXNzZXJ0aW9uIHN0cmluZyBpZiBpZGVudGl0eSBwcm92aWRlciBp
cyBzZXQnKTsKLQotICAvKgotICAgIDQuNC4yLiAgU3RlcHMgdG8gY3JlYXRlIGFuIG9mZmVyCi0g
ICAgICAxLiAgSWYgdGhlIG5lZWQgZm9yIGFuIGlkZW50aXR5IGFzc2VydGlvbiB3YXMgaWRlbnRp
ZmllZCB3aGVuIGNyZWF0ZU9mZmVyIHdhcwotICAgICAgICAgIGludm9rZWQsIHdhaXQgZm9yIHRo
ZSBpZGVudGl0eSBhc3NlcnRpb24gcmVxdWVzdCBwcm9jZXNzIHRvIGNvbXBsZXRlLgotICAgICAg
Mi4gIElmIHRoZSBpZGVudGl0eSBwcm92aWRlciB3YXMgdW5hYmxlIHRvIHByb2R1Y2UgYW4gaWRl
bnRpdHkgYXNzZXJ0aW9uLCByZWplY3QgcAotICAgICAgICAgIHdpdGggYSBuZXdseSBjcmVhdGVk
IE5vdFJlYWRhYmxlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgKi8KLSAgcHJvbWlz
ZV90ZXN0KHQgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0g
ICAgY29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5wb3J0OwotICAgIGNvbnN0IFtpZHBEb21h
aW5dID0gZ2V0SWRwRG9tYWlucygpOwotCi0gICAgcGMuc2V0SWRlbnRpdHlQcm92aWRlcihob3N0
U3RyaW5nKGlkcERvbWFpbiwgcG9ydCksIHsKLSAgICAgIHByb3RvY29sOiAnbW9jay1pZHAuanM/
Z2VuZXJhdG9yQWN0aW9uPXRocm93LWVycm9yJywKLSAgICAgIHVzZXJuYW1lSGludDogYGFsaWNl
QCR7aWRwRG9tYWlufWAKLSAgICB9KTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
J05vdFJlYWRhYmxlRXJyb3InLAotICAgICAgcGMuY3JlYXRlT2ZmZXIoKSk7Ci0gIH0sICdjcmVh
dGVPZmZlcigpIHNob3VsZCByZWplY3Qgd2l0aCBOb3RSZWFkYWJsZUVycm9yIGlmIGlkZW50aXRp
dHkgYXNzZXJ0aW9uIHJlcXVlc3QgZmFpbHMnKTsKLQotICAvKgotICAgIDQuNC4yLiAgU3RlcHMg
dG8gY3JlYXRlIGFuIGFuc3dlcgotICAgICAgMS4gIElmIHRoZSBuZWVkIGZvciBhbiBpZGVudGl0
eSBhc3NlcnRpb24gd2FzIGlkZW50aWZpZWQgd2hlbiBjcmVhdGVBbnN3ZXIgd2FzCi0gICAgICAg
ICAgaW52b2tlZCwgd2FpdCBmb3IgdGhlIGlkZW50aXR5IGFzc2VydGlvbiByZXF1ZXN0IHByb2Nl
c3MgdG8gY29tcGxldGUuCi0KLSAgICAgIDIuICBJZiB0aGUgaWRlbnRpdHkgcHJvdmlkZXIgd2Fz
IHVuYWJsZSB0byBwcm9kdWNlIGFuIGlkZW50aXR5IGFzc2VydGlvbiwgcmVqZWN0IHAKLSAgICAg
ICAgICB3aXRoIGEgbmV3bHkgY3JlYXRlZCBOb3RSZWFkYWJsZUVycm9yIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KLSAgICovCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24u
cG9ydDsKLSAgICBjb25zdCBbaWRwRG9tYWluXSA9IGdldElkcERvbWFpbnMoKTsKLQotICAgIHBj
LnNldElkZW50aXR5UHJvdmlkZXIoaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7Ci0gICAg
ICBwcm90b2NvbDogJ21vY2staWRwLmpzP2dlbmVyYXRvckFjdGlvbj10aHJvdy1lcnJvcicsCi0g
ICAgICB1c2VybmFtZUhpbnQ6IGBhbGljZUAke2lkcERvbWFpbn1gCi0gICAgfSk7Ci0KLSAgICBy
ZXR1cm4gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkKLSAgICAuY3JlYXRlT2ZmZXIoKQotICAgIC50
aGVuKG9mZmVyID0+IHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKSkKLSAgICAudGhlbigo
KSA9PgotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsICdOb3RSZWFkYWJsZUVycm9yJywKLSAgICAg
ICAgcGMuY3JlYXRlQW5zd2VyKCkpKTsKLQotICB9LCAnY3JlYXRlQW5zd2VyKCkgc2hvdWxkIHJl
amVjdCB3aXRoIE5vdFJlYWRhYmxlRXJyb3IgaWYgaWRlbnRpdGl0eSBhc3NlcnRpb24gcmVxdWVz
dCBmYWlscycpOwotCi08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWdldElkZW50
aXR5QXNzZXJ0aW9uLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1nZXRJZGVudGl0eUFz
c2VydGlvbi5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZDk0OGFhZGZhMTYyNjc3NDlk
ZjdlZDUyNGQ2ODA0NDYzZDkzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1nZXRJ
ZGVudGl0eUFzc2VydGlvbi5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworRkFJ
TCBnZXRJZGVudGl0eUFzc2VydGlvbigpIHNob3VsZCBsb2FkIElkUCBwcm94eSBhbmQgcmV0dXJu
IGFzc2VydGlvbiBnZW5lcmF0ZWQgdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcu
Li5wYy5zZXRJZGVudGl0eVByb3ZpZGVyLi4uJykKK0ZBSUwgZ2V0SWRlbnRpdHlBc3NlcnRpb24o
KSBzaG91bGQgc3VjY2VlZCBpZiBtb2NrLWlkcC5qcyByZXR1cm4gZGlmZmVyZW50IGRvbWFpbiBh
bmQgcHJvdG9jb2wgaW4gYXNzZXJ0aW9uIHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVh
ciAnLi4ucGMuc2V0SWRlbnRpdHlQcm92aWRlci4uLicpCitGQUlMIGdldElkZW50aXR5QXNzZXJ0
aW9uKCkgc2hvdWxkIHJlamVjdCB3aXRoIFJUQ0Vycm9yKCdpZHAtZXhlY3V0aW9uLWZhaWx1cmUn
KSBpZiBtb2NrLWlkcC5qcyB0aHJvd3MgZXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGluaXRp
YWwgcGMuaWRwRXJyb3JJbmZvIHRvIGJlIG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQg
Z290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBnZXRJZGVudGl0eUFzc2VydGlvbigpIHNo
b3VsZCByZWplY3Qgd2l0aCBSVENFcnJvcignaWRwLWJhZC1zY3JpcHQtZmFpbHVyZScpIGlmIElk
UCBwcm94eSBzY3JpcHQgZG8gbm90IHJlZ2lzdGVyIGl0cyBjYWxsYmFjayB1bmRlZmluZWQgaXMg
bm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLnBjLnNldElkZW50aXR5UHJvdmlkZXIuLi4nKQorRkFJ
TCBnZXRJZGVudGl0eUFzc2VydGlvbigpIHNob3VsZCByZWplY3Qgd2l0aCBPcGVyYXRpb25FcnJv
ciBpZiBtb2NrLWlkcC5qcyByZXR1cm4gaW52YWxpZCByZXN1bHQgdW5kZWZpbmVkIGlzIG5vdCBh
IGZ1bmN0aW9uIChuZWFyICcuLi5wYy5zZXRJZGVudGl0eVByb3ZpZGVyLi4uJykKK0ZBSUwgZ2V0
SWRlbnRpdHlBc3NlcnRpb24oKSBzaG91bGQgcmVqZWN0IHdpdGggUlRDRXJyb3IoJ2lkcC1sb2Fk
LWZhaWx1cmUnKSBpZiBJZFAgY2Fubm90IGJlIGxvYWRlZCBwYy5zZXRJZGVudGl0eVByb3ZpZGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3BjLnNldElkZW50aXR5UHJvdmlkZXIoJ25vbmV4aXN0
ZW50LmxvY2FsaG9zdCcsIHsKKyAgICAgIHByb3RvY29sOiBgbm9uLWV4aXN0ZW50YCwKKyAgICAg
IHVzZXJuYW1lSGludDogYGFsaWNlQGV4YW1wbGUub3JnYCwKKyAgICB9KScsICdwYy5zZXRJZGVu
dGl0eVByb3ZpZGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGdldElkZW50aXR5QXNzZXJ0aW9uKCkg
c2hvdWxkIHJlamVjdCB3aXRoIFJUQ0Vycm9yKCdpZHAtbmVlZC1sb2dpbicpIHdoZW4gbW9jay1p
ZHAuanMgcmVxdWlyZXMgbG9naW4gYXNzZXJ0X2VxdWFsczogRXhwZWN0IGluaXRpYWwgcGMuaWRw
TG9naW5VcmwgdG8gYmUgbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHVuZGVm
aW5lZCkgdW5kZWZpbmVkCitGQUlMIHNldElkZW50aXR5UHJvdmlkZXIoKSB3aXRoIG5vIHBlZXJJ
ZGVudGl0eSBwcm92aWRlZCBzaG91bGQgdXNlIHBlZXJJZGVudGl0eSB2YWx1ZSBmcm9tIGdldENv
bmZpZ3VyYXRpb24oKSBwYy5zZXRJZGVudGl0eVByb3ZpZGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3BjLnNldElkZW50aXR5UHJvdmlkZXIoaWRwSG9zdCwgeworICAgICAgcHJvdG9jb2w6ICdt
b2NrLWlkcC5qcycKKyAgICB9KScsICdwYy5zZXRJZGVudGl0eVByb3ZpZGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIENhbGxpbmcgc2V0SWRlbnRpdHlQcm92aWRlcigpIG11bHRpcGxlIHRpbWVzIHNo
b3VsZCByZXNldCBpZGVudGl0eSBhc3NlcnRpb25zIHBjLnNldElkZW50aXR5UHJvdmlkZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAncGMuc2V0SWRlbnRpdHlQcm92aWRlcihpZHBIb3N0LCB7Cisg
ICAgICBwcm90b2NvbDogJ21vY2staWRwLmpzP21hcms9Zmlyc3QnCisgICAgfSknLCAncGMuc2V0
SWRlbnRpdHlQcm92aWRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjcmVhdGVPZmZlcigpIHNob3Vs
ZCByZXR1cm4gU0RQIGNvbnRhaW5pbmcgaWRlbnRpdHkgYXNzZXJ0aW9uIHN0cmluZyBpZiBpZGVu
dGl0eSBwcm92aWRlciBpcyBzZXQgcGMuc2V0SWRlbnRpdHlQcm92aWRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdwYy5zZXRJZGVudGl0eVByb3ZpZGVyKGhvc3RTdHJpbmcoaWRwRG9tYWluLCBw
b3J0KSwgeworICAgICAgcHJvdG9jb2w6ICdtb2NrLWlkcC5qcycsCisgICAgICB1c2VybmFtZUhp
bnQ6IGBhbGljZUAke2lkcERvbWFpbn1gCisgICAgfSknLCAncGMuc2V0SWRlbnRpdHlQcm92aWRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBjcmVhdGVPZmZlcigpIHNob3VsZCByZWplY3Qgd2l0aCBO
b3RSZWFkYWJsZUVycm9yIGlmIGlkZW50aXRpdHkgYXNzZXJ0aW9uIHJlcXVlc3QgZmFpbHMgdW5k
ZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5wYy5zZXRJZGVudGl0eVByb3ZpZGVy
Li4uJykKK0ZBSUwgY3JlYXRlQW5zd2VyKCkgc2hvdWxkIHJlamVjdCB3aXRoIE5vdFJlYWRhYmxl
RXJyb3IgaWYgaWRlbnRpdGl0eSBhc3NlcnRpb24gcmVxdWVzdCBmYWlscyB1bmRlZmluZWQgaXMg
bm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLnBjLnNldElkZW50aXR5UHJvdmlkZXIuLi4nKQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1nZXRJZGVudGl0eUFzc2VydGlvbi5zdWIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLWdldElkZW50aXR5QXNzZXJ0aW9uLnN1Yi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZDg2
MGQ5MDFkZWQ3OGM5NjM1ZGE2NTQxM2FjNjNlN2RiZjQ0NjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVy
Q29ubmVjdGlvbi1nZXRJZGVudGl0eUFzc2VydGlvbi5zdWIuaHRtbApAQCAtMCwwICsxLDQwMCBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPlJUQ1BlZXJD
b25uZWN0aW9uLnByb3RvdHlwZS5nZXRJZGVudGl0eUFzc2VydGlvbjwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
aWRlbnRpdHktaGVscGVyLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAndXNlIHN0cmlj
dCc7CisKKyAgLy8gVGVzdCBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGVkaXRvciBkcmFmdDoK
KyAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy9hcmNoaXZlcy8yMDE3MDYwNS93
ZWJydGMuaHRtbAorCisgIC8vIFRoZSB0ZXN0cyBoZXJlIGludGVyYWN0cyB3aXRoIHRoZSBtb2Nr
IGlkZW50aXR5IHByb3ZpZGVyIGxvY2F0ZWQgYXQKKyAgLy8gICAvLndlbGwta25vd24vaWRwLXBy
b3h5L21vY2staWRwLmpzCisKKyAgLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFy
ZSBjYWxsZWQgZnJvbSBpZGVudGl0eS1oZWxwZXIuc3ViLmpzCisgIC8vICAgcGFyc2VBc3NlcnRp
b25SZXN1bHQKKyAgLy8gICBnZXRJZHBEb21haW5zCisgIC8vICAgYXNzZXJ0X3J0Y2Vycm9yX3Jl
amVjdGlvbgorICAvLyAgIGhvc3RTdHJpbmcKKworICAvKgorICAgIDkuNi4gIFJUQ1BlZXJDb25u
ZWN0aW9uIEludGVyZmFjZSBFeHRlbnNpb25zCisgICAgICBwYXJ0aWFsIGludGVyZmFjZSBSVENQ
ZWVyQ29ubmVjdGlvbiB7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICBzZXRJZGVudGl0eVBy
b3ZpZGVyKERPTVN0cmluZyBwcm92aWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgUlRDSWRlbnRpdHlQcm92aWRlck9wdGlvbnMgb3B0
aW9ucyk7CisgICAgICAgIFByb21pc2U8RE9NU3RyaW5nPiBnZXRJZGVudGl0eUFzc2VydGlvbigp
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxSVENJZGVudGl0eUFzc2VydGlv
bj4gcGVlcklkZW50aXR5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyAg
ICAgICAgICAgICAgICAgICAgaWRwTG9naW5Vcmw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmc/ICAgICAgICAgICAgICAgICAgICBpZHBFcnJvckluZm87CisgICAgICB9Owor
CisgICAgICBkaWN0aW9uYXJ5IFJUQ0lkZW50aXR5UHJvdmlkZXJPcHRpb25zIHsKKyAgICAgICAg
RE9NU3RyaW5nIHByb3RvY29sID0gImRlZmF1bHQiOworICAgICAgICBET01TdHJpbmcgdXNlcm5h
bWVIaW50OworICAgICAgICBET01TdHJpbmcgcGVlcklkZW50aXR5OworICAgICAgfTsKKyAgICov
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIGNvbnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24ucG9ydDsKKworICAgIGNv
bnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygpOworICAgIGNvbnN0IGlkcEhvc3QgPSBo
b3N0U3RyaW5nKGlkcERvbWFpbiwgcG9ydCk7CisKKyAgICBwYy5zZXRJZGVudGl0eVByb3ZpZGVy
KGlkcEhvc3QsIHsKKyAgICAgIHByb3RvY29sOiAnbW9jay1pZHAuanM/Zm9vPWJhcicsCisgICAg
ICB1c2VybmFtZUhpbnQ6IGBhbGljZUAke2lkcERvbWFpbn1gLAorICAgICAgcGVlcklkZW50aXR5
OiAnYm9iQGV4YW1wbGUub3JnJworICAgIH0pOworCisgICAgcmV0dXJuIHBjLmdldElkZW50aXR5
QXNzZXJ0aW9uKCkKKyAgICAudGhlbihhc3NlcnRpb25SZXN1bHRTdHIgPT4geworICAgICAgY29u
c3QgeyBpZHAsIGFzc2VydGlvbiB9ID0gcGFyc2VBc3NlcnRpb25SZXN1bHQoYXNzZXJ0aW9uUmVz
dWx0U3RyKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhpZHAuZG9tYWluLCBpZHBIb3N0LAorICAg
ICAgICAnRXhwZWN0IG1vY2staWRwLmpzIHRvIGNvbnN0cnVjdCBkb21haW4gZnJvbSBpdHMgbG9j
YXRpb24uaG9zdCcpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGlkcC5wcm90b2NvbCwgJ21vY2st
aWRwLmpzJywKKyAgICAgICAgJ0V4cGVjdCBtb2NrLWlkcC5qcyB0byByZXR1cm4gcHJvdG9jb2wg
b2YgaXRzZWxmIHdpdGggbm8gcXVlcnkgc3RyaW5nJyk7CisKKyAgICAgIGNvbnN0IHsKKyAgICAg
ICAgd2F0ZXJtYXJrLAorICAgICAgICBhcmdzLAorICAgICAgICBlbnYsCisgICAgICAgIHF1ZXJ5
LAorICAgICAgfSA9IGFzc2VydGlvbjsKKworICAgICAgYXNzZXJ0X2VxdWFscyh3YXRlcm1hcmss
ICdtb2NrLWlkcC5qcy53YXRlcm1hcmsnLAorICAgICAgICAnRXhwZWN0IGFzc2VydGlvbiByZXN1
bHQgdG8gY29udGFpbiB3YXRlcm1hcmsgbGVmdCBieSBtb2NrLWlkcC5qcycpOworCisgICAgICBh
c3NlcnRfZXF1YWxzKGFyZ3Mub3JpZ2luLCB3aW5kb3cub3JpZ2luLAorICAgICAgICAnRXhwZWN0
IGFyZ3Mub3JpZ2luIGFyZ3VtZW50IHRvIGJlIHRoZSBvcmlnaW4gb2YgdGhpcyB3aW5kb3cnKTsK
KworICAgICAgYXNzZXJ0X2VxdWFscyhlbnYubG9jYXRpb24sCisgICAgICAgIGBodHRwczovLyR7
aWRwSG9zdH0vLndlbGwta25vd24vaWRwLXByb3h5L2lkcC10ZXN0LmpzP2Zvbz1iYXJgLAorICAg
ICAgICAnRXhwZWN0IElkUCBwcm94eSB0byBiZSBsb2FkZWQgd2l0aCBmdWxsIHdlbGwta25vd24g
VVJMIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZXIgYW5kIHByb3RvY29sJyk7CisKKyAgICAgIGFz
c2VydF9lcXVhbHMoZW52Lm9yaWdpbiwgYGh0dHBzOi8vJHtpZHBIb3N0fWAsCisgICAgICAgICdF
eHBlY3QgSWRQIHRvIGhhdmUgaXRzIG93biBvcmlnaW4nKTsKKworICAgICAgYXNzZXJ0X2VxdWFs
cyhhcmdzLm9wdGlvbnMucHJvdG9jb2wsICdpZHAtdGVzdC5qcz9mb289YmFyJywKKyAgICAgICAg
J0V4cGVjdCBvcHRpb25zLnByb3RvY29sIHRvIGJlIHRoZSBzYW1lIHZhbHVlIGFzIGJlaW5nIHBh
c3NlZCBmcm9tIGhlcmUnKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhhcmdzLm9wdGlvbnMudXNl
cm5hbWVIaW50LCBgYWxpY2VAJHtpZHBEb21haW59YCwKKyAgICAgICAgJ0V4cGVjdCBvcHRpb25z
LnVzZXJuYW1lSGludCB0byBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBiZWluZyBwYXNzZWQgZnJvbSBo
ZXJlJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoYXJncy5vcHRpb25zLnBlZXJJZGVudGl0eSwg
J2JvYkBleGFtcGxlLm9yZycsCisgICAgICAgICdFeHBlY3Qgb3B0aW9ucy5wZWVySWRlbnRpdHkg
dG8gYmUgdGhlIHNhbWUgdmFsdWUgYXMgYmVpbmcgcGFzc2VkIGZyb20gaGVyZScpOworCisgICAg
ICBhc3NlcnRfZXF1YWxzKHF1ZXJ5LmZvbywgJ2JhcicsCisgICAgICAgICdFeHBlY3QgcXVlcnkg
c3RyaW5nIHRvIGJlIHBhcnNlZCBieSBtb2NrLWlkcC5qcyBhbmQgcmV0dXJuZWQgYmFjaycpOwor
ICAgIH0pOworICB9LCAnZ2V0SWRlbnRpdHlBc3NlcnRpb24oKSBzaG91bGQgbG9hZCBJZFAgcHJv
eHkgYW5kIHJldHVybiBhc3NlcnRpb24gZ2VuZXJhdGVkJyk7CisKKyAgLy8gV2hlbiBnZW5lcmF0
aW5nIGFzc2VydGlvbiwgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIGRvZXNuJ3QgY2FyZSBpZiB0aGUg
cmV0dXJuZWQgYXNzZXJ0aW9uCisgIC8vIHJlcHJlc2VudHMgaWRlbnRpdHkgb2YgZGlmZmVyZW50
IGRvbWFpbgorICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBwb3J0ID0gd2luZG93LmxvY2F0aW9uLnBvcnQ7CisK
KyAgICBjb25zdCBbaWRwRG9tYWluMSwgaWRwRG9tYWluMl0gPSBnZXRJZHBEb21haW5zKCk7Cisg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoaWRwRG9tYWluMSwgaWRwRG9tYWluMiwKKyAgICAgICdTYW5p
dHkgY2hlY2sgdHdvIGlkcERvbWFpbnMgYXJlIGRpZmZlcmVudCcpOworCisgICAgLy8gQXNrIG1v
Y2staWRwLmpzIHRvIHJldHVybiBhIGN1c3RvbSBkb21haW4gaWRwRG9tYWluMiBhbmQgY3VzdG9t
IHByb3RvY29sIGZvbworICAgIHBjLnNldElkZW50aXR5UHJvdmlkZXIoaG9zdFN0cmluZyhpZHBE
b21haW4xLCBwb3J0KSwgeworICAgICAgcHJvdG9jb2w6IGBtb2NrLWlkcC5qcz9nZW5lcmF0b3JB
Y3Rpb249cmV0dXJuLWN1c3RvbS1pZHAmZG9tYWluPSR7aWRwRG9tYWluMn0mcHJvdG9jb2w9Zm9v
YCwKKyAgICAgIHVzZXJuYW1lSGludDogYGFsaWNlQCR7aWRwRG9tYWluMn1gLAorICAgIH0pOwor
CisgICAgcmV0dXJuIHBjLmdldElkZW50aXR5QXNzZXJ0aW9uKCkKKyAgICAudGhlbihhc3NlcnRp
b25SZXN1bHRTdHIgPT4geworICAgICAgY29uc3QgeyBpZHAsIGFzc2VydGlvbiB9ID0gcGFyc2VB
c3NlcnRpb25SZXN1bHQoYXNzZXJ0aW9uUmVzdWx0U3RyKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
aWRwLmRvbWFpbiwgaWRwRG9tYWluMik7CisgICAgICBhc3NlcnRfZXF1YWxzKGlkcC5wcm90b2Nv
bCwgJ2ZvbycpOworICAgICAgYXNzZXJ0X2VxdWFscyhhc3NlcnRpb24ub3B0aW9ucy51c2VybmFt
ZUhpbnQsIGBhbGljZUAke2lkcERvbWFpbjJ9YCk7CisgICAgfSk7CisgIH0sICdnZXRJZGVudGl0
eUFzc2VydGlvbigpIHNob3VsZCBzdWNjZWVkIGlmIG1vY2staWRwLmpzIHJldHVybiBkaWZmZXJl
bnQgZG9tYWluIGFuZCBwcm90b2NvbCBpbiBhc3NlcnRpb24nKTsKKworICAvKgorICAgIDkuMy4g
IFJlcXVlc3RpbmcgSWRlbnRpdHkgQXNzZXJ0aW9ucworICAgICAgNC4gIElmIHRoZSBJZFAgcHJv
eHkgcHJvZHVjZXMgYW4gZXJyb3Igb3IgcmV0dXJucyBhIHByb21pc2UgdGhhdCBkb2VzIG5vdCBy
ZXNvbHZlIHRvCisgICAgICAgICAgYSB2YWxpZCBSVENJZGVudGl0eVZhbGlkYXRpb25SZXN1bHQg
KHNlZSA5LjUgSWRQIEVycm9yIEhhbmRsaW5nKSwgdGhlbiBpZGVudGl0eQorICAgICAgICAgIHZh
bGlkYXRpb24gZmFpbHMuCisKKyAgICA5LjUuICBJZFAgRXJyb3IgSGFuZGxpbmcKKyAgICAgIC0g
SWYgYW4gaWRlbnRpdHkgcHJvdmlkZXIgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvciByZXR1cm5zIGEg
cHJvbWlzZSB0aGF0IGlzIHVsdGltYXRlbHkKKyAgICAgICAgcmVqZWN0ZWQsIHRoZW4gdGhlIHBy
b2NlZHVyZSB0aGF0IGRlcGVuZHMgb24gdGhlIElkUCBNVVNUIGFsc28gZmFpbC4gVGhlc2UgdHlw
ZXMgb2YKKyAgICAgICAgZXJyb3JzIHdpbGwgY2F1c2UgYW4gSWRQIGZhaWx1cmUgd2l0aCBhbiBS
VENFcnJvciB3aXRoIGVycm9yRGV0YWlsIHNldCB0bworICAgICAgICAiaWRwLWV4ZWN1dGlvbi1m
YWlsdXJlIi4KKworICAgIDkuNi4gIFJUQ1BlZXJDb25uZWN0aW9uIEludGVyZmFjZSBFeHRlbnNp
b25zCisgICAgICBpZHBFcnJvckluZm8KKyAgICAgICAgQW4gYXR0cmlidXRlIHRoYXQgdGhlIElk
UCBjYW4gdXNlIHRvIHBhc3MgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQorICAg
ICAgICBhcHBsaWNhdGlvbnMgYWJvdXQgdGhlIGVycm9yLiBUaGUgZm9ybWF0IG9mIHRoaXMgc3Ry
aW5nIGlzIGRlZmluZWQgYnkgdGhlIElkUCBhbmQKKyAgICAgICAgbWF5IGJlIEpTT04uCisgICAq
LworICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKworICAgIGFzc2VydF9lcXVhbHMocGMuaWRwRXJyb3JJbmZvLCBudWxsLAorICAg
ICAgJ0V4cGVjdCBpbml0aWFsIHBjLmlkcEVycm9ySW5mbyB0byBiZSBudWxsJyk7CisKKyAgICBj
b25zdCBwb3J0ID0gd2luZG93LmxvY2F0aW9uLnBvcnQ7CisgICAgY29uc3QgW2lkcERvbWFpbl0g
PSBnZXRJZHBEb21haW5zKCk7CisKKyAgICAvLyBBc2sgbW9jay1pZHAuanMgdG8gdGhyb3cgYW4g
ZXJyb3Igd2l0aCBlcnIuZXJyb3JJbmZvIHNldCB0byBiYXIKKyAgICBwYy5zZXRJZGVudGl0eVBy
b3ZpZGVyKGhvc3RTdHJpbmcoaWRwRG9tYWluLCBwb3J0KSwgeworICAgICAgcHJvdG9jb2w6IGBt
b2NrLWlkcC5qcz9nZW5lcmF0b3JBY3Rpb249dGhyb3ctZXJyb3ImZXJyb3JJbmZvPWJhcmAsCisg
ICAgICB1c2VybmFtZUhpbnQ6IGBhbGljZUAke2lkcERvbWFpbn1gLAorICAgIH0pOworCisgICAg
cmV0dXJuIGFzc2VydF9ydGNlcnJvcl9yZWplY3Rpb24oJ2lkcC1leGVjdXRpb24tZmFpbHVyZScs
CisgICAgICBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpKQorICAgIC50aGVuKCgpID0+IHsKKyAg
ICAgIGFzc2VydF9lcXVhbHMocGMuaWRwRXJyb3JJbmZvLCAnYmFyJywKKyAgICAgICAgJ0V4cGVj
dCBwYy5pZHBFcnJvckluZm8gdG8gYmUgc2V0IHRvIHRoZSBlcnIuaWRwRXJyb3JJbmZvIHRocm93
biBieSBtb2NrLWlkcC5qcycpOworICAgIH0pOworICB9LCBgZ2V0SWRlbnRpdHlBc3NlcnRpb24o
KSBzaG91bGQgcmVqZWN0IHdpdGggUlRDRXJyb3IoJ2lkcC1leGVjdXRpb24tZmFpbHVyZScpIGlm
IG1vY2staWRwLmpzIHRocm93cyBlcnJvcmApOworCisgIC8qCisgICAgOS41LiAgSWRQIEVycm9y
IEhhbmRsaW5nCisgICAgICAtIElmIHRoZSBzY3JpcHQgbG9hZGVkIGZyb20gdGhlIGlkZW50aXR5
IHByb3ZpZGVyIGlzIG5vdCB2YWxpZCBKYXZhU2NyaXB0IG9yIGRvZXMKKyAgICAgICAgbm90IGlt
cGxlbWVudCB0aGUgY29ycmVjdCBpbnRlcmZhY2VzLCBpdCBjYXVzZXMgYW4gSWRQIGZhaWx1cmUg
d2l0aCBhbiBSVENFcnJvcgorICAgICAgICB3aXRoIGVycm9yRGV0YWlsIHNldCB0byAiaWRwLWJh
ZC1zY3JpcHQtZmFpbHVyZSIuCisgICAqLworICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIGNvbnN0IHBvcnQgPSB3aW5k
b3cubG9jYXRpb24ucG9ydDsKKyAgICBjb25zdCBbaWRwRG9tYWluXSA9IGdldElkcERvbWFpbnMo
KTsKKworICAgIC8vIEFzayBtb2NrLWlkcC5qcyB0byBub3QgcmVnaXN0ZXIgaXRzIGNhbGxiYWNr
IHRvIHRoZQorICAgIC8vIFJUQ0lkZW50aXR5UHJvdmlkZXJSZWdpc3RyYXIKKyAgICBwYy5zZXRJ
ZGVudGl0eVByb3ZpZGVyKGhvc3RTdHJpbmcoaWRwRG9tYWluLCBwb3J0KSwgeworICAgICAgcHJv
dG9jb2w6IGBtb2NrLWlkcC5qcz9hY3Rpb249ZG8tbm90LXJlZ2lzdGVyYCwKKyAgICAgIHVzZXJu
YW1lSGludDogYGFsaWNlQCR7aWRwRG9tYWlufWAsCisgICAgfSk7CisKKyAgICByZXR1cm4gYXNz
ZXJ0X3J0Y2Vycm9yX3JlamVjdGlvbignaWRwLWJhZC1zY3JpcHQtZmFpbHVyZScsCisgICAgICBw
Yy5nZXRJZGVudGl0eUFzc2VydGlvbigpKTsKKworICB9LCBgZ2V0SWRlbnRpdHlBc3NlcnRpb24o
KSBzaG91bGQgcmVqZWN0IHdpdGggUlRDRXJyb3IoJ2lkcC1iYWQtc2NyaXB0LWZhaWx1cmUnKSBp
ZiBJZFAgcHJveHkgc2NyaXB0IGRvIG5vdCByZWdpc3RlciBpdHMgY2FsbGJhY2tgKTsKKworICAv
KgorICAgIDkuMy4gIFJlcXVlc3RpbmcgSWRlbnRpdHkgQXNzZXJ0aW9ucworICAgICAgNC4gIElm
IHRoZSBJZFAgcHJveHkgcHJvZHVjZXMgYW4gZXJyb3Igb3IgcmV0dXJucyBhIHByb21pc2UgdGhh
dCBkb2VzIG5vdCByZXNvbHZlCisgICAgICAgICAgdG8gYSB2YWxpZCBSVENJZGVudGl0eUFzc2Vy
dGlvblJlc3VsdCAoc2VlIDkuNSBJZFAgRXJyb3IgSGFuZGxpbmcpLCB0aGVuIGFzc2VydGlvbgor
ICAgICAgICAgIGdlbmVyYXRpb24gZmFpbHMuCisgICAqLworICBwcm9taXNlX3Rlc3QodCA9PiB7
CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIGNvbnN0IHBv
cnQgPSB3aW5kb3cubG9jYXRpb24ucG9ydDsKKyAgICBjb25zdCBbaWRwRG9tYWluXSA9IGdldElk
cERvbWFpbnMoKTsKKworICAgIC8vIEFzayBtb2NrLWlkcC5qcyB0byByZXR1cm4gYW4gaW52YWxp
ZCByZXN1bHQgdGhhdCBpcyBub3QgcHJvcGVyCisgICAgLy8gUlRDSWRlbnRpdHlBc3NlcnRpb25S
ZXN1bHQKKyAgICBwYy5zZXRJZGVudGl0eVByb3ZpZGVyKGhvc3RTdHJpbmcoaWRwRG9tYWluLCBw
b3J0KSwgeworICAgICAgcHJvdG9jb2w6IGBtb2NrLWlkcC5qcz9nZW5lcmF0b3JBY3Rpb249cmV0
dXJuLWludmFsaWQtcmVzdWx0YCwKKyAgICAgIHVzZXJuYW1lSGludDogYGFsaWNlQCR7aWRwRG9t
YWlufWAsCisgICAgfSk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICdPcGVyYXRp
b25FcnJvcicsCisgICAgICBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpKTsKKyAgfSwgYGdldElk
ZW50aXR5QXNzZXJ0aW9uKCkgc2hvdWxkIHJlamVjdCB3aXRoIE9wZXJhdGlvbkVycm9yIGlmIG1v
Y2staWRwLmpzIHJldHVybiBpbnZhbGlkIHJlc3VsdGApOworCisgIC8qCisgICAgOS41LiAgSWRQ
IEVycm9yIEhhbmRsaW5nCisgICAgICAtIEEgUlRDUGVlckNvbm5lY3Rpb24gbWlnaHQgYmUgY29u
ZmlndXJlZCB3aXRoIGFuIGlkZW50aXR5IHByb3ZpZGVyLCBidXQgbG9hZGluZyBvZgorICAgICAg
ICB0aGUgSWRQIFVSSSBmYWlscy4gQW55IHByb2NlZHVyZSB0aGF0IGF0dGVtcHRzIHRvIGludm9r
ZSBzdWNoIGFuIGlkZW50aXR5IHByb3ZpZGVyCisgICAgICAgIGFuZCBjYW5ub3QgbG9hZCB0aGUg
VVJJIGZhaWxzIHdpdGggYW4gUlRDRXJyb3Igd2l0aCBlcnJvckRldGFpbCBzZXQgdG8KKyAgICAg
ICAgImlkcC1sb2FkLWZhaWx1cmUiIGFuZCB0aGUgaHR0cFJlcXVlc3RTdGF0dXNDb2RlIGF0dHJp
YnV0ZSBvZiB0aGUgZXJyb3Igc2V0IHRvIHRoZQorICAgICAgICBIVFRQIHN0YXR1cyBjb2RlIG9m
IHRoZSByZXNwb25zZS4KKyAgICovCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBw
YyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworCisgICAgcGMuc2V0SWRlbnRpdHlQcm92aWRl
cignbm9uZXhpc3RlbnQue3tkb21haW5zW119fScsIHsKKyAgICAgIHByb3RvY29sOiBgbm9uLWV4
aXN0ZW50YCwKKyAgICAgIHVzZXJuYW1lSGludDogYGFsaWNlQGV4YW1wbGUub3JnYCwKKyAgICB9
KTsKKworICAgIHJldHVybiBhc3NlcnRfcnRjZXJyb3JfcmVqZWN0aW9uKCdpZHAtbG9hZC1mYWls
dXJlJywKKyAgICAgIHBjLmdldElkZW50aXR5QXNzZXJ0aW9uKCkpOworICB9LCBgZ2V0SWRlbnRp
dHlBc3NlcnRpb24oKSBzaG91bGQgcmVqZWN0IHdpdGggUlRDRXJyb3IoJ2lkcC1sb2FkLWZhaWx1
cmUnKSBpZiBJZFAgY2Fubm90IGJlIGxvYWRlZGApOworCisgIC8qCisgICAgOS4zLjEuICBVc2Vy
IExvZ2luIFByb2NlZHVyZQorICAgICAgUmVqZWN0aW5nIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5
IGdlbmVyYXRlQXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhlIGVycm9yIHRvCisgICAgICBwcm9wYWdh
dGUgdG8gdGhlIGFwcGxpY2F0aW9uLiBMb2dpbiBlcnJvcnMgYXJlIGluZGljYXRlZCBieSByZWpl
Y3RpbmcgdGhlCisgICAgICBwcm9taXNlIHdpdGggYW4gUlRDRXJyb3Igd2l0aCBlcnJvckRldGFp
bCBzZXQgdG8gImlkcC1uZWVkLWxvZ2luIi4KKworICAgICAgVGhlIFVSTCB0byBsb2dpbiBhdCB3
aWxsIGJlIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24gaW4gdGhlIGlkcExvZ2luVXJsCisgICAg
ICBhdHRyaWJ1dGUgb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9uLgorCisgICAgOS41LiAgSWRQIEVy
cm9yIEhhbmRsaW5nCisgICAgICAtIElmIHRoZSBpZGVudGl0eSBwcm92aWRlciByZXF1aXJlcyB0
aGUgdXNlciB0byBsb2dpbiwgdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwKKyAgICAgICAgUlRDRXJy
b3Igd2l0aCBlcnJvckRldGFpbCBzZXQgdG8gImlkcC1uZWVkLWxvZ2luIiBhbmQgdGhlIGlkcExv
Z2luVXJsIGF0dHJpYnV0ZQorICAgICAgICBvZiB0aGUgZXJyb3Igc2V0IHRvIHRoZSBVUkwgdGhh
dCBjYW4gYmUgdXNlZCB0byBsb2dpbi4KKyAgICovCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworCisgICAgYXNzZXJ0X2VxdWFs
cyhwYy5pZHBMb2dpblVybCwgbnVsbCwKKyAgICAgICdFeHBlY3QgaW5pdGlhbCBwYy5pZHBMb2dp
blVybCB0byBiZSBudWxsJyk7CisKKyAgICBjb25zdCBwb3J0ID0gd2luZG93LmxvY2F0aW9uLnBv
cnQ7CisgICAgY29uc3QgW2lkcERvbWFpbl0gPSBnZXRJZHBEb21haW5zKCk7CisgICAgY29uc3Qg
aWRwSG9zdCA9IGhvc3RTdHJpbmcoaWRwRG9tYWluLCBwb3J0KTsKKworICAgIHBjLnNldElkZW50
aXR5UHJvdmlkZXIoaWRwSG9zdCwgeworICAgICAgcHJvdG9jb2w6IGBtb2NrLWlkcC5qcz9nZW5l
cmF0b3JBY3Rpb249cmVxdWlyZS1sb2dpbmAsCisgICAgICB1c2VybmFtZUhpbnQ6IGBhbGljZUAk
e2lkcERvbWFpbn1gLAorICAgIH0pOworCisgICAgcmV0dXJuIGFzc2VydF9ydGNlcnJvcl9yZWpl
Y3Rpb24oJ2lkcC1uZWVkLWxvZ2luJywKKyAgICAgIHBjLmdldElkZW50aXR5QXNzZXJ0aW9uKCkp
CisgICAgLnRoZW4oZXJyID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXJyLmlkcExvZ2luVXJs
LCBgaHR0cHM6Ly8ke2lkcEhvc3R9L2xvZ2luYCwKKyAgICAgICAgJ0V4cGVjdCBlcnIuaWRwTG9n
aW5VcmwgdG8gYmUgc2V0IHRvIHVybCBzZXQgYnkgbW9jay1pZHAuanMnKTsKKworICAgICAgYXNz
ZXJ0X2VxdWFscyhwYy5pZHBMb2dpblVybCwgYGh0dHBzOi8vJHtpZHBIb3N0fS9sb2dpbmAsCisg
ICAgICAgICdFeHBlY3QgcGMuaWRwTG9naW5VcmwgdG8gYmUgc2V0IHRvIHVybCBzZXQgYnkgbW9j
ay1pZHAuanMnKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhwYy5pZHBFcnJvckluZm8sICdsb2dp
biByZXF1aXJlZCcsCisgICAgICAgICdFeHBlY3QgcGMuaWRwRXJyb3JJbmZvIHRvIGJlIHNldCB0
byBpbmZvIHNldCBieSBtb2NrLWlkcC5qcycpOworICAgIH0pOworICB9LCBgZ2V0SWRlbnRpdHlB
c3NlcnRpb24oKSBzaG91bGQgcmVqZWN0IHdpdGggUlRDRXJyb3IoJ2lkcC1uZWVkLWxvZ2luJykg
d2hlbiBtb2NrLWlkcC5qcyByZXF1aXJlcyBsb2dpbmApOworCisgIC8qCisgICAgUlRDSWRlbnRp
dHlQcm92aWRlck9wdGlvbnMgTWVtYmVycworICAgICAgcGVlcklkZW50aXR5CisgICAgICAgIFRo
ZSBpZGVudGl0eSBvZiB0aGUgcGVlci4gRm9yIGlkZW50aXR5IHByb3ZpZGVycyB0aGF0IGJpbmQg
dGhlaXIgYXNzZXJ0aW9ucyB0byBhCisgICAgICAgIHBhcnRpY3VsYXIgcGFpciBvZiBjb21tdW5p
Y2F0aW9uIHBlZXJzLCB0aGlzIGFsbG93cyB0aGVtIHRvIGdlbmVyYXRlIGFuIGFzc2VydGlvbgor
ICAgICAgICB0aGF0IGluY2x1ZGVzIGJvdGggbG9jYWwgYW5kIHJlbW90ZSBpZGVudGl0aWVzLiBJ
ZiB0aGlzIHZhbHVlIGlzIG9taXR0ZWQsIGJ1dCBhCisgICAgICAgIHZhbHVlIGlzIHByb3ZpZGVk
IGZvciB0aGUgcGVlcklkZW50aXR5IG1lbWJlciBvZiBSVENDb25maWd1cmF0aW9uLCB0aGUgdmFs
dWUgZnJvbQorICAgICAgICBSVENDb25maWd1cmF0aW9uIGlzIHVzZWQuCisgICovCisgIHByb21p
c2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7Cisg
ICAgICBwZWVySWRlbnRpdHk6ICdib2JAZXhhbXBsZS5uZXQnCisgICAgfSk7CisKKyAgICBjb25z
dCBwb3J0ID0gd2luZG93LmxvY2F0aW9uLnBvcnQ7CisgICAgY29uc3QgW2lkcERvbWFpbl0gPSBn
ZXRJZHBEb21haW5zKCk7CisgICAgY29uc3QgaWRwSG9zdCA9IGhvc3RTdHJpbmcoaWRwRG9tYWlu
LCBwb3J0KTsKKworICAgIHBjLnNldElkZW50aXR5UHJvdmlkZXIoaWRwSG9zdCwgeworICAgICAg
cHJvdG9jb2w6ICdtb2NrLWlkcC5qcycKKyAgICB9KTsKKworICAgIHJldHVybiBwYy5nZXRJZGVu
dGl0eUFzc2VydGlvbigpCisgICAgLnRoZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+IHsKKyAgICAg
IGNvbnN0IHsgYXNzZXJ0aW9uIH0gPSBwYXJzZUFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1
bHRTdHIpOworICAgICAgYXNzZXJ0X2VxdWFscyhhc3NlcnRpb24uYXJncy5vcHRpb25zLnBlZXJJ
ZGVudGl0eSwgJ2JvYkBleGFtcGxlLm5ldCcpOworICAgIH0pOworICB9LCAnc2V0SWRlbnRpdHlQ
cm92aWRlcigpIHdpdGggbm8gcGVlcklkZW50aXR5IHByb3ZpZGVkIHNob3VsZCB1c2UgcGVlcklk
ZW50aXR5IHZhbHVlIGZyb20gZ2V0Q29uZmlndXJhdGlvbigpJyk7CisKKyAgLyoKKyAgICA5LjYu
ICBzZXRJZGVudGl0eVByb3ZpZGVyCisgICAgICAzLiAgSWYgYW55IGlkZW50aXR5IHByb3ZpZGVy
IHZhbHVlIGhhcyBjaGFuZ2VkLCBkaXNjYXJkIGFueSBzdG9yZWQgaWRlbnRpdHkgYXNzZXJ0aW9u
LgorICAgKi8KKyAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CisgICAgY29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5wb3J0Owor
ICAgIGNvbnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygpOworICAgIGNvbnN0IGlkcEhv
c3QgPSBob3N0U3RyaW5nKGlkcERvbWFpbiwgcG9ydCk7CisKKyAgICBwYy5zZXRJZGVudGl0eVBy
b3ZpZGVyKGlkcEhvc3QsIHsKKyAgICAgIHByb3RvY29sOiAnbW9jay1pZHAuanM/bWFyaz1maXJz
dCcKKyAgICB9KTsKKworICAgIHJldHVybiBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpCisgICAg
LnRoZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+IHsKKyAgICAgIGNvbnN0IHsgYXNzZXJ0aW9uIH0g
PSBwYXJzZUFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1bHRTdHIpOworICAgICAgYXNzZXJ0
X2VxdWFscyhhc3NlcnRpb24ucXVlcnkubWFyaywgJ2ZpcnN0Jyk7CisKKyAgICAgIHBjLnNldElk
ZW50aXR5UHJvdmlkZXIoaWRwSG9zdCwgeworICAgICAgICBwcm90b2NvbDogJ21vY2staWRwLmpz
P21hcms9c2Vjb25kJworICAgICAgfSk7CisKKyAgICAgIHJldHVybiBwYy5nZXRJZGVudGl0eUFz
c2VydGlvbigpOworICAgIH0pCisgICAgLnRoZW4oYXNzZXJ0aW9uUmVzdWx0U3RyID0+IHsKKyAg
ICAgIGNvbnN0IHsgYXNzZXJ0aW9uIH0gPSBwYXJzZUFzc2VydGlvblJlc3VsdChhc3NlcnRpb25S
ZXN1bHRTdHIpOworICAgICAgYXNzZXJ0X2VxdWFscyhhc3NlcnRpb24ucXVlcnkubWFyaywgJ3Nl
Y29uZCcsCisgICAgICAgICdFeHBlY3QgZ2VuZXJhdGVkIGFzc2VydGlvbiBpcyBmcm9tIHNlY29u
ZCBJZFAgY29uZmlnJyk7CisgICAgfSk7CisgIH0sIGBDYWxsaW5nIHNldElkZW50aXR5UHJvdmlk
ZXIoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgcmVzZXQgaWRlbnRpdHkgYXNzZXJ0aW9uc2ApOwor
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIGNvbnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24ucG9ydDsKKyAgICBjb25z
dCBbaWRwRG9tYWluXSA9IGdldElkcERvbWFpbnMoKTsKKworICAgIHBjLnNldElkZW50aXR5UHJv
dmlkZXIoaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7CisgICAgICBwcm90b2NvbDogJ21v
Y2staWRwLmpzJywKKyAgICAgIHVzZXJuYW1lSGludDogYGFsaWNlQCR7aWRwRG9tYWlufWAKKyAg
ICB9KTsKKworICAgIHJldHVybiBwYy5nZXRJZGVudGl0eUFzc2VydGlvbigpCisgICAgLnRoZW4o
YXNzZXJ0aW9uUmVzdWx0U3RyID0+CisgICAgICBwYy5jcmVhdGVPZmZlcigpCisgICAgICAudGhl
bihvZmZlciA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmNsdWRlcyhgXHJc
bmE9aWRlbnRpdHk6JHthc3NlcnRpb25SZXN1bHRTdHJ9YCwKKyAgICAgICAgICAnRXhwZWN0IFNE
UCB0byBoYXZlIGE9aWRlbnRpdHkgbGluZSBjb250YWluaW5nIGFzc2VydGlvbiBzdHJpbmcnKSk7
CisgICAgICB9KSk7CisgIH0sICdjcmVhdGVPZmZlcigpIHNob3VsZCByZXR1cm4gU0RQIGNvbnRh
aW5pbmcgaWRlbnRpdHkgYXNzZXJ0aW9uIHN0cmluZyBpZiBpZGVudGl0eSBwcm92aWRlciBpcyBz
ZXQnKTsKKworICAvKgorICAgIDQuNC4yLiAgU3RlcHMgdG8gY3JlYXRlIGFuIG9mZmVyCisgICAg
ICAxLiAgSWYgdGhlIG5lZWQgZm9yIGFuIGlkZW50aXR5IGFzc2VydGlvbiB3YXMgaWRlbnRpZmll
ZCB3aGVuIGNyZWF0ZU9mZmVyIHdhcworICAgICAgICAgIGludm9rZWQsIHdhaXQgZm9yIHRoZSBp
ZGVudGl0eSBhc3NlcnRpb24gcmVxdWVzdCBwcm9jZXNzIHRvIGNvbXBsZXRlLgorICAgICAgMi4g
IElmIHRoZSBpZGVudGl0eSBwcm92aWRlciB3YXMgdW5hYmxlIHRvIHByb2R1Y2UgYW4gaWRlbnRp
dHkgYXNzZXJ0aW9uLCByZWplY3QgcAorICAgICAgICAgIHdpdGggYSBuZXdseSBjcmVhdGVkIE5v
dFJlYWRhYmxlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgKi8KKyAgcHJvbWlzZV90
ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
Y29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5wb3J0OworICAgIGNvbnN0IFtpZHBEb21haW5d
ID0gZ2V0SWRwRG9tYWlucygpOworCisgICAgcGMuc2V0SWRlbnRpdHlQcm92aWRlcihob3N0U3Ry
aW5nKGlkcERvbWFpbiwgcG9ydCksIHsKKyAgICAgIHByb3RvY29sOiAnbW9jay1pZHAuanM/Z2Vu
ZXJhdG9yQWN0aW9uPXRocm93LWVycm9yJywKKyAgICAgIHVzZXJuYW1lSGludDogYGFsaWNlQCR7
aWRwRG9tYWlufWAKKyAgICB9KTsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgJ05v
dFJlYWRhYmxlRXJyb3InLAorICAgICAgcGMuY3JlYXRlT2ZmZXIoKSk7CisgIH0sICdjcmVhdGVP
ZmZlcigpIHNob3VsZCByZWplY3Qgd2l0aCBOb3RSZWFkYWJsZUVycm9yIGlmIGlkZW50aXRpdHkg
YXNzZXJ0aW9uIHJlcXVlc3QgZmFpbHMnKTsKKworICAvKgorICAgIDQuNC4yLiAgU3RlcHMgdG8g
Y3JlYXRlIGFuIGFuc3dlcgorICAgICAgMS4gIElmIHRoZSBuZWVkIGZvciBhbiBpZGVudGl0eSBh
c3NlcnRpb24gd2FzIGlkZW50aWZpZWQgd2hlbiBjcmVhdGVBbnN3ZXIgd2FzCisgICAgICAgICAg
aW52b2tlZCwgd2FpdCBmb3IgdGhlIGlkZW50aXR5IGFzc2VydGlvbiByZXF1ZXN0IHByb2Nlc3Mg
dG8gY29tcGxldGUuCisKKyAgICAgIDIuICBJZiB0aGUgaWRlbnRpdHkgcHJvdmlkZXIgd2FzIHVu
YWJsZSB0byBwcm9kdWNlIGFuIGlkZW50aXR5IGFzc2VydGlvbiwgcmVqZWN0IHAKKyAgICAgICAg
ICB3aXRoIGEgbmV3bHkgY3JlYXRlZCBOb3RSZWFkYWJsZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KKyAgICovCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHBvcnQgPSB3aW5kb3cubG9jYXRpb24ucG9y
dDsKKyAgICBjb25zdCBbaWRwRG9tYWluXSA9IGdldElkcERvbWFpbnMoKTsKKworICAgIHBjLnNl
dElkZW50aXR5UHJvdmlkZXIoaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpLCB7CisgICAgICBw
cm90b2NvbDogJ21vY2staWRwLmpzP2dlbmVyYXRvckFjdGlvbj10aHJvdy1lcnJvcicsCisgICAg
ICB1c2VybmFtZUhpbnQ6IGBhbGljZUAke2lkcERvbWFpbn1gCisgICAgfSk7CisKKyAgICByZXR1
cm4gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkKKyAgICAuY3JlYXRlT2ZmZXIoKQorICAgIC50aGVu
KG9mZmVyID0+IHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKSkKKyAgICAudGhlbigoKSA9
PgorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsICdOb3RSZWFkYWJsZUVycm9yJywKKyAgICAgICAg
cGMuY3JlYXRlQW5zd2VyKCkpKTsKKworICB9LCAnY3JlYXRlQW5zd2VyKCkgc2hvdWxkIHJlamVj
dCB3aXRoIE5vdFJlYWRhYmxlRXJyb3IgaWYgaWRlbnRpdGl0eSBhc3NlcnRpb24gcmVxdWVzdCBm
YWlscycpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWdldFN0YXRzLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWdldFN0YXRzLmh0dHBzLWV4cGVjdGVkLnR4
dAppbmRleCA1YzJkNTlkMmZmZDUyMDBkNTlkOWMzNjEyNDg3MmQ5MjZmZGUzMmRiLi4wM2NiMzJi
NWRkMTU3YjQxMDZlMjkyZDAwM2ZkNWU2OTE1NDAwNjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlv
bi1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tZ2V0U3RhdHMu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBQQVNTIGdldFN0YXRzKCkgd2l0aCBu
byBhcmd1bWVudCBzaG91bGQgc3VjY2VlZAogUEFTUyBnZXRTdGF0cyhudWxsKSBzaG91bGQgc3Vj
Y2VlZCAKIEZBSUwgZ2V0U3RhdHMoKSB3aXRoIHRyYWNrIG5vdCBhZGRlZCB0byBjb25uZWN0aW9u
IHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkQWNjZXNzRXJyb3IgYXNzZXJ0X3VucmVhY2hlZDog
U2hvdWxkIGhhdmUgcmVqZWN0ZWQ6IHVuZGVmaW5lZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUK
IFBBU1MgZ2V0U3RhdHMoKSB3aXRoIHRyYWNrIGFkZGVkIHZpYSBhZGRUcmFjayBzaG91bGQgc3Vj
Y2VlZCAKLUZBSUwgZ2V0U3RhdHMoKSB3aXRoIHRyYWNrIGFkZGVkIHZpYSBhZGRUcmFuc2NlaXZl
ciBzaG91bGQgc3VjY2VlZCBUeXBlIGVycm9yCitQQVNTIGdldFN0YXRzKCkgd2l0aCB0cmFjayBh
ZGRlZCB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHN1Y2NlZWQgCiBGQUlMIGdldFN0YXRzKCkg
d2l0aCB0cmFjayBhc3NvY2lhdGVkIHdpdGggbW9yZSB0aGFuIG9uZSBzZW5kZXIgc2hvdWxkIHJl
amVjdCB3aXRoIEludmFsaWRBY2Nlc3NFcnJvciBhc3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2
ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogRkFJTCBnZXRT
dGF0cygpIHdpdGggdHJhY2sgYXNzb2NpYXRlZCB3aXRoIGJvdGggc2VuZGVyIGFuZCByZWNlaXZl
ciBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZEFjY2Vzc0Vycm9yIGFzc2VydF91bnJlYWNoZWQ6
IFNob3VsZCBoYXZlIHJlamVjdGVkOiB1bmRlZmluZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CiBGQUlMIGdldFN0YXRzKCkgd2l0aCBubyBhcmd1bWVudCBzaG91bGQgcmV0dXJuIHN0YXRzIHJl
cG9ydCBjb250YWluaW5nIHBlZXItY29ubmVjdGlvbiBzdGF0cyBvbiBhbiBlbXB0eSBQQyBhc3Nl
cnRfdHJ1ZTogRXhwZWN0IHN0YXRzUmVwb3J0IHRvIGNvbnRhaW4gc3RhdHMgb2JqZWN0IG9mIHR5
cGUgcGVlci1jb25uZWN0aW9uIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVy
Q29ubmVjdGlvbi1nZXRTdGF0cy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tZ2V0U3RhdHMuaHR0
cHMuaHRtbAppbmRleCA3MzEzODUwN2Q0ZjEyYTJmYzkzODVhMjc5MDlmZDFhNjliZTYyMmFlLi4y
NDc0MDJiODNiZTBhMjY1NWZhOGQ0YWQ0M2ZhMTY2YjY0NTljNTg3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1nZXRTdGF0cy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWdldFN0YXRzLmh0
dHBzLmh0bWwKQEAgLTM5LDEzICszOSwxNSBAQAogICAgICAgICAxLiAgR2F0aGVyIHRoZSBzdGF0
cyBpbmRpY2F0ZWQgYnkgc2VsZWN0b3IgYWNjb3JkaW5nIHRvIHRoZSBzdGF0cyBzZWxlY3Rpb24g
YWxnb3JpdGhtLgogICAgICAgICAyLiAgUmVzb2x2ZSBwIHdpdGggdGhlIHJlc3VsdGluZyBSVENT
dGF0c1JlcG9ydCBvYmplY3QsIGNvbnRhaW5pbmcgdGhlIGdhdGhlcmVkIHN0YXRzLgogICAgKi8K
LSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0
IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
Yy5jbG9zZSgpKTsKICAgICByZXR1cm4gcGMuZ2V0U3RhdHMoKTsKICAgfSwgJ2dldFN0YXRzKCkg
d2l0aCBubyBhcmd1bWVudCBzaG91bGQgc3VjY2VlZCcpOwogCi0gIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0
dXJuIHBjLmdldFN0YXRzKG51bGwpOwogICB9LCAnZ2V0U3RhdHMobnVsbCkgc2hvdWxkIHN1Y2Nl
ZWQnKTsKIApAQCAtNTksNiArNjEsNyBAQAogICAgKi8KICAgcHJvbWlzZV90ZXN0KHQgPT4gewog
ICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICByZXR1cm4gZ2V0VHJhY2tGcm9tVXNlck1lZGlhKCdh
dWRpbycpCiAgICAgLnRoZW4oKFt0cmFjaywgbWVkaWFTdHJlYW1dKSA9PiB7CiAgICAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBwYy5nZXRTdGF0cyh0
cmFjaykpOwpAQCAtNjcsNiArNzAsNyBAQAogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBj
b25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJuIGdldFRyYWNrRnJvbVVzZXJNZWRpYSgnYXVkaW8n
KQogICAgIC50aGVuKChbdHJhY2ssIG1lZGlhU3RyZWFtXSkgPT4gewogICAgICAgcGMuYWRkVHJh
Y2sodHJhY2ssIG1lZGlhU3RyZWFtKTsKQEAgLTc0LDkgKzc4LDEzIEBACiAgICAgfSk7CiAgIH0s
ICdnZXRTdGF0cygpIHdpdGggdHJhY2sgYWRkZWQgdmlhIGFkZFRyYWNrIHNob3VsZCBzdWNjZWVk
Jyk7CiAKLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB0cmFj
ayA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4g
cGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOwor
ICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJhY2tzKCk7CiAgICAgcGMuYWRkVHJhbnNj
ZWl2ZXIodHJhY2spOwogCiAgICAgcmV0dXJuIHBjLmdldFN0YXRzKHRyYWNrKTsKQEAgLTg0LDYg
KzkyLDcgQEAKIAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwog
ICAgIHJldHVybiBnZXRUcmFja0Zyb21Vc2VyTWVkaWEoJ2F1ZGlvJykKICAgICAudGhlbigoW3Ry
YWNrLCBtZWRpYVN0cmVhbV0pID0+IHsKICAgICAgIC8vIGFkZFRyYW5zY2VpdmVyIGFsbG93cyBh
ZGRpbmcgc2FtZSB0cmFjayBtdWx0aXBsZSB0aW1lcwpAQCAtMTAwLDYgKzEwOSw3IEBACiAKICAg
cHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCB0cmFu
c2NlaXZlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKIAogICAgIC8vIENyZWF0ZSBh
bm90aGVyIHRyYW5zY2VpdmVyIHRoYXQgcmVzZW5kcyB3aGF0CkBAIC0xMTcsNiArMTI3LDcgQEAK
ICAgICovCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAg
cmV0dXJuIHBjLmdldFN0YXRzKCkKICAgICAudGhlbihzdGF0c1JlcG9ydCA9PiB7CiAgICAgICB2
YWxpZGF0ZVN0YXRzUmVwb3J0KHN0YXRzUmVwb3J0KTsKQEAgLTEyNiw2ICsxMzcsNyBAQAogCiAg
IHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJuIGdl
dFRyYWNrRnJvbVVzZXJNZWRpYSgnYXVkaW8nKQogICAgIC50aGVuKChbdHJhY2ssIG1lZGlhU3Ry
ZWFtXSkgPT4gewogICAgICAgcGMuYWRkVHJhY2sodHJhY2ssIG1lZGlhU3RyZWFtKTsKQEAgLTE0
MCw2ICsxNTIsNyBAQAogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2Uo
KSk7CiAgICAgcmV0dXJuIGdldFRyYWNrRnJvbVVzZXJNZWRpYSgnYXVkaW8nKQogICAgIC50aGVu
KChbdHJhY2ssIG1lZGlhU3RyZWFtXSkgPT4gewogICAgICAgcGMuYWRkVHJhY2sodHJhY2spOwpA
QCAtMTYwLDggKzE3Myw5IEBACiAgICAgICAgIC0gQWxsIHN0YXRzIG9iamVjdHMgcmVmZXJlbmNl
ZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGJ5IHRoZSBSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRz
CiAgICAgICAgICAgb2JqZWN0cyBhZGRlZC4KICAgICovCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJu
IGdldFRyYWNrRnJvbVVzZXJNZWRpYSgnYXVkaW8nKQogICAgIC50aGVuKChbdHJhY2ssIG1lZGlh
U3RyZWFtXSkgPT4gewogICAgICAgcGMuYWRkVHJhY2sodHJhY2ssIG1lZGlhU3RyZWFtKTsKQEAg
LTE4Myw4ICsxOTcsOSBAQAogICAgICAgICAtIEFsbCBzdGF0cyBvYmplY3RzIHJlZmVyZW5jZWQg
ZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBieSB0aGUgUlRDSW5ib3VuZFJUUFN0cmVhbVN0YXRzCiAg
ICAgICAgICAgYWRkZWQuCiAgICAqLwotICBwcm9taXNlX3Rlc3QoKCkgPT4geworICBwcm9taXNl
X3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHRyYW5zY2VpdmVy
ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CiAKICAgICByZXR1cm4gcGMuZ2V0U3RhdHMo
dHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2spCkBAIC0yMjYsMzIgKzI0MSwxOCBAQAogCiAgICAg
Y29uc3QgZGF0YUNoYW5uZWwgPSBwYzEuY3JlYXRlRGF0YUNoYW5uZWwoJ3Rlc3QtY2hhbm5lbCcp
OwogCi0gICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsKKyAg
ICByZXR1cm4gZ2V0Tm9pc2VTdHJlYW0oewogICAgICAgYXVkaW86IHRydWUsCiAgICAgICB2aWRl
bzogdHJ1ZQogICAgIH0pCiAgICAgLnRoZW4odC5zdGVwX2Z1bmMobWVkaWFTdHJlYW0gPT4gewog
ICAgICAgY29uc3QgdHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKHRyYWNrcy5sZW5ndGgsIDIsCi0gICAgICAgICdFeHBlY3QgbWVkaWEgc3RyZWFt
IHRvIGhhdmUgb25lIGF1ZGlvIGFuZCBvbmUgdmlkZW8gdHJhY2snKTsKKyAgICAgIGNvbnN0IFth
dWRpb1RyYWNrXSA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgICBjb25zdCBb
dmlkZW9UcmFja10gPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpOwogCi0gICAgICBsZXQg
YXVkaW9UcmFjazsKLSAgICAgIGxldCB2aWRlb1RyYWNrOwotCi0gICAgICBmb3IgKGNvbnN0IHRy
YWNrIG9mIHRyYWNrcykgeworICAgICAgZm9yIChjb25zdCB0cmFjayBvZiBtZWRpYVN0cmVhbS5n
ZXRUcmFja3MoKSkgewogICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHRyYWNrLnN0b3AoKSk7
Ci0KICAgICAgICAgcGMxLmFkZFRyYWNrKHRyYWNrLCBtZWRpYVN0cmVhbSk7Ci0KLSAgICAgICAg
aWYgKHRyYWNrLmtpbmQgPT09ICdhdWRpbycpIHsKLSAgICAgICAgICBhdWRpb1RyYWNrID0gdHJh
Y2s7Ci0gICAgICAgIH0gZWxzZSBpZiAodHJhY2sua2luZCA9PT0gJ3ZpZGVvJykgewotICAgICAg
ICAgIHZpZGVvVHJhY2sgPSB0cmFjazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAo
IWF1ZGlvVHJhY2sgfHwgISB2aWRlb1RyYWNrKSB7Ci0gICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J0V4cGVjdCBtZWRpYVN0cmVhbSB0byBoYXZlIGJvdGggYXVkaW8gYW5kIHZpZGVvIHN0cmVhbXMn
KTsKICAgICAgIH0KIAogICAgICAgY29uc3QgdGVzdFN0YXRzUmVwb3J0ID0gKHBjLCBzdGF0c1Jl
cG9ydCkgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taGVscGVyLmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rp
b24taGVscGVyLmpzCmluZGV4IDhjY2ViYmQ4NjdmMDVhMjY3OWRhNWQxNjQxYmQ4OGY0OTZkYjBm
YTYuLmIxM2U1ODA5OThlZmNlODNjOGJiMTU4YmNlM2Q3NzQ3ZWM2ZjhiZDkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanMKQEAgLTkz
LDEyICs5MywxMiBAQCBmdW5jdGlvbiBpc1NpbWlsYXJTZXNzaW9uRGVzY3JpcHRpb24oc2Vzc2lv
bkRlc2MxLCBzZXNzaW9uRGVzYzIpIHsKICAgfQogfQogCi1mdW5jdGlvbiBhc3NlcnRfc2Vzc2lv
bl9kZXNjX2VxdWFscyhzZXNzaW9uRGVzYzEsIHNlc3Npb25EZXNjMikgeworZnVuY3Rpb24gYXNz
ZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHNlc3Npb25EZXNjMSwgc2Vzc2lvbkRlc2MyKSB7CiAg
IGFzc2VydF90cnVlKGlzU2ltaWxhclNlc3Npb25EZXNjcmlwdGlvbihzZXNzaW9uRGVzYzEsIHNl
c3Npb25EZXNjMiksCiAgICAgJ0V4cGVjdCBib3RoIHNlc3Npb24gZGVzY3JpcHRpb25zIHRvIGhh
dmUgdGhlIHNhbWUgY291bnQgb2YgbWVkaWEgbGluZXMnKTsKIH0KIAotZnVuY3Rpb24gYXNzZXJ0
X3Nlc3Npb25fZGVzY19ub3RfZXF1YWxzKHNlc3Npb25EZXNjMSwgc2Vzc2lvbkRlc2MyKSB7Citm
dW5jdGlvbiBhc3NlcnRfc2Vzc2lvbl9kZXNjX25vdF9zaW1pbGFyKHNlc3Npb25EZXNjMSwgc2Vz
c2lvbkRlc2MyKSB7CiAgIGFzc2VydF9mYWxzZShpc1NpbWlsYXJTZXNzaW9uRGVzY3JpcHRpb24o
c2Vzc2lvbkRlc2MxLCBzZXNzaW9uRGVzYzIpLAogICAgICdFeHBlY3QgYm90aCBzZXNzaW9uIGRl
c2NyaXB0aW9ucyB0byBoYXZlIGRpZmZlcmVudCBjb3VudCBvZiBtZWRpYSBsaW5lcycpOwogfQpA
QCAtMTY1LDM3ICsxNjUsMTEgQEAgZnVuY3Rpb24gZ2VuZXJhdGVPZmZlcihvcHRpb25zPXt9KSB7
CiBmdW5jdGlvbiBnZW5lcmF0ZUFuc3dlcihvZmZlcikgewogICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOwogICByZXR1cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIp
Ci0gIC50aGVuKCgpID0+IHBjLmNyZWF0ZUFuc3dlcigpKTsKLX0KLQotLy8gV2FpdCBmb3IgcGVl
ciBjb25uZWN0aW9uIHRvIGZpcmUgb25zaWduYWxpbmdzdGF0ZWNoYW5nZQotLy8gZXZlbnQsIGNv
bXBhcmUgYW5kIG1ha2Ugc3VyZSB0aGUgbmV3IHN0YXRlIGlzIHRoZSBzYW1lCi0vLyBhcyBleHBl
Y3RlZCBzdGF0ZS4gSXQgYWNjZXB0cyBhbiBSVENQZWVyQ29ubmVjdGlvbiBvYmplY3QKLS8vIGFu
ZCBhbiBhcnJheSBvZiBleHBlY3RlZCBzdGF0ZSBjaGFuZ2VzLiBUaGUgdGVzdCBwYXNzZXMKLS8v
IGlmIGFsbCBleHBlY3RlZCBzdGF0ZSBjaGFuZ2UgZXZlbnRzIGhhdmUgYmVlbiBmaXJlZCwgYW5k
Ci0vLyBmYWlsIGlmIHRoZSBuZXcgc3RhdGUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGV4cGVjdGVk
IHN0YXRlLgotLy8KLS8vIE5vdGUgdGhhdCB0aGUgcHJvbWlzZSBpcyBuZXZlciByZXNvbHZlZCBp
ZiBubyBjaGFuZ2UKLS8vIGV2ZW50IGlzIGZpcmVkLiBUbyBhdm9pZCBjb25mdXNpb24gd2l0aCB0
aGUgbWFpbiB0ZXN0Ci0vLyBnZXR0aW5nIHRpbWVkIG91dCwgdGhpcyBpcyBkb25lIGluIHBhcmFs
bGVsIGFzIGEgc2VwYXJhdGUKLS8vIHRlc3QKLWZ1bmN0aW9uIHRlc3Rfc3RhdGVfY2hhbmdlX2V2
ZW50KHBhcmVudFRlc3QsIHBjLCBleHBlY3RlZFN0YXRlcykgewotICByZXR1cm4gYXN5bmNfdGVz
dCh0ID0+IHsKLSAgICBwYy5vbnNpZ25hbGluZ3N0YXRlY2hhbmdlID0gdC5zdGVwX2Z1bmMoKCkg
PT4gewotICAgICAgaWYoZXhwZWN0ZWRTdGF0ZXMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIHJl
dHVybjsKLSAgICAgIH0KLQotICAgICAgY29uc3QgbmV3U3RhdGUgPSBwYy5zaWduYWxpbmdTdGF0
ZTsKLSAgICAgIGNvbnN0IGV4cGVjdGVkU3RhdGUgPSBleHBlY3RlZFN0YXRlcy5zaGlmdCgpOwot
Ci0gICAgICBhc3NlcnRfZXF1YWxzKG5ld1N0YXRlLCBleHBlY3RlZFN0YXRlLCAnTmV3IHNpZ25h
bGluZyBzdGF0ZSBpcyBkaWZmZXJlbnQgZnJvbSBleHBlY3RlZC4nKTsKLQotICAgICAgaWYoZXhw
ZWN0ZWRTdGF0ZXMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIHQuZG9uZSgpOwotICAgICAgfQot
ICAgIH0pOwotICB9LCBgVGVzdCBvbnNpZ25hbGluZ3N0YXRlY2hhbmdlIGV2ZW50IGZvciAke3Bh
cmVudFRlc3QubmFtZX1gKTsKKyAgLnRoZW4oKCkgPT4gcGMuY3JlYXRlQW5zd2VyKCkpCisgIC50
aGVuKChhbnN3ZXIpID0+IHsKKyAgICBwYy5jbG9zZSgpOworICAgIHJldHVybiBhbnN3ZXI7Cisg
IH0pOwogfQogCiAvLyBSdW4gYSB0ZXN0IGZ1bmN0aW9uIHRoYXQgcmV0dXJuIGEgcHJvbWlzZSB0
aGF0IHNob3VsZApAQCAtMjI5LDcgKzIwMyw3IEBAIGZ1bmN0aW9uIGV4Y2hhbmdlSWNlQ2FuZGlk
YXRlcyhwYzEsIHBjMikgewogICAgICAgLy8gVGhlcmUgaXMgb25nb2luZyBkaXNjdXNzaW9uIG9u
IHczYy93ZWJydGMtcGMjMTIxMwogICAgICAgLy8gdGhhdCB0aGVyZSBzaG91bGQgYmUgYW4gZW1w
dHkgY2FuZGlkYXRlIHN0cmluZyBldmVudAogICAgICAgLy8gZm9yIGVuZCBvZiBjYW5kaWRhdGUg
Zm9yIGVhY2ggbT0gc2VjdGlvbi4KLSAgICAgIGlmKGNhbmRpZGF0ZSkgeworICAgICAgaWYoY2Fu
ZGlkYXRlICYmIHJlbW90ZVBjLnNpZ25hbGluZ1N0YXRlICE9PSAnY2xvc2VkJykgewogICAgICAg
ICByZW1vdGVQYy5hZGRJY2VDYW5kaWRhdGUoY2FuZGlkYXRlKTsKICAgICAgIH0KICAgICB9KTsK
QEAgLTM1Niw0MSArMzMwLDExMiBAQCBmdW5jdGlvbiBhc3NlcnRfZXF1YWxzX2FycmF5X2J1ZmZl
cihidWZmZXIxLCBidWZmZXIyKSB7CiAgIH0KIH0KIAotLy8gR2VuZXJhdGUgYSBNZWRpYVN0cmVh
bVRyYWNrIGZvciB0ZXN0aW5nIHVzZS4KLS8vIFdlIGdlbmVyYXRlIGl0IGJ5IGNyZWF0aW5nIGFu
IGFub255bW91cyBSVENQZWVyQ29ubmVjdGlvbiwKLS8vIGNhbGwgYWRkVHJhbnNjZWl2ZXIoKSwg
YW5kIHVzZSB0aGUgcmVtb3RlIHRyYWNrCi0vLyBmcm9tIFJUQ1J0cFJlY2VpdmVyLiBUaGlzIHRy
YWNrIGlzIHN1cHBvc2VkIHRvCi0vLyByZWNlaXZlIG1lZGlhIGZyb20gYSByZW1vdGUgcGVlciBh
bmQgYmUgcGxheWVkIGxvY2FsbHkuCi0vLyBXZSB1c2UgdGhpcyBhcHByb2FjaCBpbnN0ZWFkIG9m
IGdldFVzZXJNZWRpYSgpCi0vLyB0byBieXBhc3MgdGhlIHBlcm1pc3Npb24gZGlhbG9nIGFuZCBm
YWtlIG1lZGlhIGRldmljZXMsCi0vLyBhcyB3ZWxsIGFzIGJlaW5nIGFibGUgdG8gZ2VuZXJhdGUg
bWFueSB1bmlxdWUgdHJhY2tzLgotZnVuY3Rpb24gZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrKGtp
bmQpIHsKLSAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKy8vIFRoZXNlIG1l
ZGlhIHRyYWNrcyB3aWxsIGJlIGNvbnRpbnVhbGx5IHVwZGF0ZWQgd2l0aCBkZXRlcm1pbmlzdGlj
ICJub2lzZSIgaW4KKy8vIG9yZGVyIHRvIGVuc3VyZSBVQXMgZG8gbm90IGNlYXNlIHRyYW5zbWlz
c2lvbiBpbiByZXNwb25zZSB0byBhcHBhcmVudAorLy8gc2lsZW5jZS4KKy8vCisvLyA+IE1hbnkg
Y29kZWNzIGFuZCBzeXN0ZW1zIGFyZSBjYXBhYmxlIG9mIGRldGVjdGluZyAic2lsZW5jZSIgYW5k
IGNoYW5naW5nCisvLyA+IHRoZWlyIGJlaGF2aW9yIGluIHRoaXMgY2FzZSBieSBkb2luZyB0aGlu
Z3Mgc3VjaCBhcyBub3QgdHJhbnNtaXR0aW5nIGFueQorLy8gPiBtZWRpYS4KKy8vCisvLyBTb3Vy
Y2U6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI29mZmVyLWFuc3dlci1vcHRpb25z
Citjb25zdCB0cmFja0ZhY3RvcmllcyA9IHsKKyAgLy8gU2hhcmUgYSBzaW5nbGUgY29udGV4dCBi
ZXR3ZWVuIHRlc3RzIHRvIGF2b2lkIGV4Y2VlZGluZyByZXNvdXJjZSBsaW1pdHMKKyAgLy8gd2l0
aG91dCByZXF1aXJpbmcgZXhwbGljaXQgZGVzdHJ1Y3Rpb24uCisgIGF1ZGlvQ29udGV4dDogbnVs
bCwKKworICAvKioKKyAgICogR2l2ZW4gYSBzZXQgb2YgcmVxdWVzdGVkIG1lZGlhIHR5cGVzLCBk
ZXRlcm1pbmUgaWYgdGhlIHVzZXIgYWdlbnQgaXMKKyAgICogY2FwYWJsZSBvZiBwcm9jZWR1cmFs
bHkgZ2VuZXJhdGluZyBhIHN1aXRhYmxlIG1lZGlhIHN0cmVhbS4KKyAgICoKKyAgICogQHBhcmFt
IHtvYmplY3R9IHJlcXVlc3RlZAorICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXF1ZXN0ZWQuYXVk
aW9dIC0gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGRlc2lyZWQKKyAgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBzaG91bGQgaW5jbHVkZSBhbiBhdWRp
byB0cmFjaworICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXF1ZXN0ZWQudmlkZW9dIC0gZmxhZyBp
bmRpY2F0aW5nIHdoZXRoZXIgdGhlIGRlc2lyZWQKKyAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbSBzaG91bGQgaW5jbHVkZSBhIHZpZGVvIHRyYWNrCisgICAq
CisgICAqIEByZXR1cm5zIHtib29sZWFufQorICAgKi8KKyAgY2FuQ3JlYXRlKHJlcXVlc3RlZCkg
eworICAgIGNvbnN0IHN1cHBvcnRlZCA9IHsKKyAgICAgIGF1ZGlvOiAhIXdpbmRvdy5NZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLAorICAgICAgdmlkZW86ICEhSFRNTENhbnZhc0VsZW1l
bnQucHJvdG90eXBlLmNhcHR1cmVTdHJlYW0KKyAgICB9OworCisgICAgcmV0dXJuICghcmVxdWVz
dGVkLmF1ZGlvIHx8IHN1cHBvcnRlZC5hdWRpbykgJiYKKyAgICAgICghcmVxdWVzdGVkLnZpZGVv
IHx8IHN1cHBvcnRlZC52aWRlbyk7CisgIH0sCisKKyAgYXVkaW8oKSB7CisgICAgY29uc3QgY3R4
ID0gdHJhY2tGYWN0b3JpZXMuYXVkaW9Db250ZXh0ID0gdHJhY2tGYWN0b3JpZXMuYXVkaW9Db250
ZXh0IHx8CisgICAgICBuZXcgQXVkaW9Db250ZXh0KCk7CisgICAgY29uc3Qgb3NjaWxsYXRvciA9
IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgY29uc3QgZHN0ID0gb3NjaWxsYXRvci5jb25u
ZWN0KGN0eC5jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkpOworICAgIG9zY2lsbGF0b3Iu
c3RhcnQoKTsKKyAgICByZXR1cm4gZHN0LnN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICB9
LAorCisgIHZpZGVvKHt3aWR0aCA9IDY0MCwgaGVpZ2h0ID0gNDgwfSA9IHt9KSB7CisgICAgY29u
c3QgY2FudmFzID0gT2JqZWN0LmFzc2lnbigKKyAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpLCB7d2lkdGgsIGhlaWdodH0KKyAgICApOworICAgIGNvbnN0IGN0eCA9IGNhbnZh
cy5nZXRDb250ZXh0KCcyZCcpOworICAgIGNvbnN0IHN0cmVhbSA9IGNhbnZhcy5jYXB0dXJlU3Ry
ZWFtKCk7CisKKyAgICBsZXQgY291bnQgPSAwOworICAgIHNldEludGVydmFsKCgpID0+IHsKKyAg
ICAgIGN0eC5maWxsU3R5bGUgPSBgcmdiKCR7Y291bnQlMjU1fSwgJHtjb3VudCpjb3VudCUyNTV9
LCAke2NvdW50JTI1NX0pYDsKKyAgICAgIGNvdW50ICs9IDE7CisKKyAgICAgIGN0eC5maWxsUmVj
dCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9LCAxMDApOworCisgICAgaWYgKGRvY3VtZW50
LmJvZHkpIHsKKyAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICB9
IGVsc2UgeworICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRl
ZCcsICgpID0+IHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOwor
ICAgICAgfSk7CisgICAgfQogCi0gIGFzc2VydF9pZGxfYXR0cmlidXRlKHBjLCAnYWRkVHJhbnNj
ZWl2ZXInLAotICAgICdFeHBlY3QgcGMgdG8gaGF2ZSBhZGRUcmFuc2NlaXZlcigpIG1ldGhvZCcp
OworICAgIHJldHVybiBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsKKyAgfQorfTsKKworLy8g
R2VuZXJhdGUgYSBNZWRpYVN0cmVhbSBiZWFyaW5nIHRoZSBzcGVjaWZpZWQgdHJhY2tzLgorLy8K
Ky8vIEBwYXJhbSB7b2JqZWN0fSBbY2Fwc10KKy8vIEBwYXJhbSB7Ym9vbGVhbn0gW2NhcHMuYXVk
aW9dIC0gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGdlbmVyYXRlZCBzdHJlYW0KKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGluY2x1ZGUgYW4gYXVkaW8gdHJh
Y2sKKy8vIEBwYXJhbSB7Ym9vbGVhbn0gW2NhcHMudmlkZW9dIC0gZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgdGhlIGdlbmVyYXRlZCBzdHJlYW0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkIGluY2x1ZGUgYSB2aWRlbyB0cmFjaworYXN5bmMgZnVuY3Rpb24gZ2V0Tm9p
c2VTdHJlYW0oY2FwcyA9IHt9KSB7CisgIGlmICghdHJhY2tGYWN0b3JpZXMuY2FuQ3JlYXRlKGNh
cHMpKSB7CisgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKGNh
cHMpOworICB9CisgIGNvbnN0IHRyYWNrcyA9IFtdOwogCi0gIGNvbnN0IHRyYW5zY2VpdmVyID0g
cGMuYWRkVHJhbnNjZWl2ZXIoa2luZCk7Ci0gIGNvbnN0IHsgcmVjZWl2ZXIgfSA9IHRyYW5zY2Vp
dmVyOwotICBjb25zdCB7IHRyYWNrIH0gPSByZWNlaXZlcjsKKyAgaWYgKGNhcHMuYXVkaW8pIHsK
KyAgICB0cmFja3MucHVzaCh0cmFja0ZhY3Rvcmllcy5hdWRpbygpKTsKKyAgfQogCi0gIGFzc2Vy
dF90cnVlKHRyYWNrIGluc3RhbmNlb2YgTWVkaWFTdHJlYW1UcmFjaywKLSAgICAnRXhwZWN0IHJl
Y2VpdmVyIHRyYWNrIHRvIGJlIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2snKTsKKyAgaWYg
KGNhcHMudmlkZW8pIHsKKyAgICB0cmFja3MucHVzaCh0cmFja0ZhY3Rvcmllcy52aWRlbygpKTsK
KyAgfQogCi0gIHJldHVybiB0cmFjazsKKyAgcmV0dXJuIG5ldyBNZWRpYVN0cmVhbSh0cmFja3Mp
OwogfQogCi0vLyBPYnRhaW4gYSBNZWRpYVN0cmVhbVRyYWNrIG9mIGtpbmQgdXNpbmcgZ2V0VXNl
ck1lZGlhLgorLy8gT2J0YWluIGEgTWVkaWFTdHJlYW1UcmFjayBvZiBraW5kIHVzaW5nIHByb2Nl
ZHVyYWxseS1nZW5lcmF0ZWQgc3RyZWFtcyAoYW5kCisvLyBmYWxsaW5nIGJhY2sgdG8gYGdldFVz
ZXJNZWRpYWAgd2hlbiB0aGUgdXNlciBhZ2VudCBjYW5ub3QgZ2VuZXJhdGUgdGhlCisvLyByZXF1
ZXN0ZWQgc3RyZWFtcykuCiAvLyBSZXR1cm4gUHJvbWlzZSBvZiBwYWlyIG9mIHRyYWNrIGFuZCBh
c3NvY2lhdGVkIG1lZGlhU3RyZWFtLgogLy8gQXNzdW1lcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBhdmFpbGFibGUgZGV2aWNlCiAvLyB0byBnZW5lcmF0ZSB0aGUgdHJhY2suCiBmdW5jdGlv
biBnZXRUcmFja0Zyb21Vc2VyTWVkaWEoa2luZCkgewotICByZXR1cm4gbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBba2luZF06IHRydWUgfSkKKyAgcmV0dXJuIGdldE5vaXNl
U3RyZWFtKHsgW2tpbmRdOiB0cnVlIH0pCiAgIC50aGVuKG1lZGlhU3RyZWFtID0+IHsKLSAgICBj
b25zdCB0cmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKTsKLSAgICBhc3NlcnRfZ3JlYXRl
cl90aGFuKHRyYWNrcy5sZW5ndGgsIDAsCi0gICAgICBgRXhwZWN0IGdldFVzZXJNZWRpYSB0byBy
ZXR1cm4gYXQgbGVhc3Qgb25lIHRyYWNrIG9mIGtpbmQgJHtraW5kfWApOwotICAgIGNvbnN0IFsg
dHJhY2sgXSA9IHRyYWNrczsKKyAgICBjb25zdCBbdHJhY2tdID0gbWVkaWFTdHJlYW0uZ2V0VHJh
Y2tzKCk7CiAgICAgcmV0dXJuIFt0cmFjaywgbWVkaWFTdHJlYW1dOwogICB9KTsKIH0KQEAgLTQx
OCwxOCArNDYzLDM0IEBAIGZ1bmN0aW9uIGdldFVzZXJNZWRpYVRyYWNrc0FuZFN0cmVhbXMoY291
bnQsIHR5cGUgPSAnYXVkaW8nKSB7CiAgIH0pOwogfQogCi0vLyBDcmVhdGVzIGFuIG9mZmVyIGZv
ciB0aGUgY2FsbGVyLCBzZXQgaXQgYXMgdGhlIGNhbGxlcidzIGxvY2FsIGRlc2NyaXB0aW9uIGFu
ZAotLy8gdGhlbiBzZXRzIHRoZSBjYWxsZWUncyByZW1vdGUgZGVzY3JpcHRpb24gdG8gdGhlIG9m
ZmVyLiBSZXR1cm5zIHRoZSBQcm9taXNlCi0vLyBvZiB0aGUgc2V0UmVtb3RlRGVzY3JpcHRpb24g
Y2FsbC4KLWZ1bmN0aW9uIHBlcmZvcm1PZmZlcihjYWxsZXIsIGNhbGxlZSkgewotICBsZXQgc2Vz
c2lvbkRlc2NyaXB0aW9uOwotICByZXR1cm4gY2FsbGVyLmNyZWF0ZU9mZmVyKCkKLSAgLnRoZW4o
b2ZmZXIgPT4gewotICAgIHNlc3Npb25EZXNjcmlwdGlvbiA9IG9mZmVyOwotICAgIHJldHVybiBj
YWxsZXIuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7Ci0gIH0pLnRoZW4oKCkgPT4gY2FsbGVl
LnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbikpOworLy8gUGVyZm9ybXMg
YW4gb2ZmZXIgZXhjaGFuZ2UgY2FsbGVyIC0+IGNhbGxlZS4KK2FzeW5jIGZ1bmN0aW9uIGV4Y2hh
bmdlT2ZmZXIoY2FsbGVyLCBjYWxsZWUpIHsKKyAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBjYWxsZXIu
Y3JlYXRlT2ZmZXIoKTsKKyAgYXdhaXQgY2FsbGVyLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
OworICByZXR1cm4gY2FsbGVlLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTsKK30KKy8vIFBl
cmZvcm1zIGFuIGFuc3dlciBleGNoYW5nZSBjYWxsZXIgLT4gY2FsbGVlLgorYXN5bmMgZnVuY3Rp
b24gZXhjaGFuZ2VBbnN3ZXIoY2FsbGVyLCBjYWxsZWUpIHsKKyAgY29uc3QgYW5zd2VyID0gYXdh
aXQgY2FsbGVlLmNyZWF0ZUFuc3dlcigpOworICBhd2FpdCBjYWxsZWUuc2V0TG9jYWxEZXNjcmlw
dGlvbihhbnN3ZXIpOworICByZXR1cm4gY2FsbGVyLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dl
cik7Cit9Cithc3luYyBmdW5jdGlvbiBleGNoYW5nZU9mZmVyQW5zd2VyKGNhbGxlciwgY2FsbGVl
KSB7CisgIGF3YWl0IGV4Y2hhbmdlT2ZmZXIoY2FsbGVyLCBjYWxsZWUpOworICByZXR1cm4gZXhj
aGFuZ2VBbnN3ZXIoY2FsbGVyLCBjYWxsZWUpOworfQorLy8gVGhlIHJldHVybmVkIHByb21pc2Ug
aXMgcmVzb2x2ZWQgd2l0aCBjYWxsZXIncyBvbnRyYWNrIGV2ZW50LgorYXN5bmMgZnVuY3Rpb24g
ZXhjaGFuZ2VBbnN3ZXJBbmRMaXN0ZW5Ub09udHJhY2sodCwgY2FsbGVyLCBjYWxsZWUpIHsKKyAg
Y29uc3Qgb250cmFja1Byb21pc2UgPSBhZGRFdmVudExpc3RlbmVyUHJvbWlzZSh0LCBjYWxsZXIs
ICd0cmFjaycpOworICBhd2FpdCBleGNoYW5nZUFuc3dlcihjYWxsZXIsIGNhbGxlZSk7CisgIHJl
dHVybiBvbnRyYWNrUHJvbWlzZTsKK30KKy8vIFRoZSByZXR1cm5lZCBwcm9taXNlIGlzIHJlc29s
dmVkIHdpdGggY2FsbGVlJ3Mgb250cmFjayBldmVudC4KK2FzeW5jIGZ1bmN0aW9uIGV4Y2hhbmdl
T2ZmZXJBbmRMaXN0ZW5Ub09udHJhY2sodCwgY2FsbGVyLCBjYWxsZWUpIHsKKyAgY29uc3Qgb250
cmFja1Byb21pc2UgPSBhZGRFdmVudExpc3RlbmVyUHJvbWlzZSh0LCBjYWxsZWUsICd0cmFjaycp
OworICBhd2FpdCBleGNoYW5nZU9mZmVyKGNhbGxlciwgY2FsbGVlKTsKKyAgcmV0dXJuIG9udHJh
Y2tQcm9taXNlOwogfQotCiAKIC8vIFRoZSByZXNvbHZlciBoYXMgYSB8cHJvbWlzZXwgdGhhdCBj
YW4gYmUgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQgdXNpbmcgfHJlc29sdmV8CiAvLyBvciB8cmVqZWN0
fC4KQEAgLTQ0NSwzICs1MDYsMzcgQEAgY2xhc3MgUmVzb2x2ZXIgewogICAgIHRoaXMucmVqZWN0
ID0gcHJvbWlzZVJlamVjdDsKICAgfQogfQorCitmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyUHJv
bWlzZSh0LCB0YXJnZXQsIHR5cGUsIGxpc3RlbmVyKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwg
dC5zdGVwX2Z1bmMoZSA9PiB7CisgICAgICBpZiAobGlzdGVuZXIgIT0gdW5kZWZpbmVkKQorICAg
ICAgICBlID0gbGlzdGVuZXIoZSk7CisgICAgICByZXNvbHZlKGUpOworICAgIH0pKTsKKyAgfSk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCkgeworICBj
b25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOworICByZXR1cm4gcGM7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRy
YWNrQW5kU3RyZWFtV2l0aENsZWFudXAodCwga2luZCA9ICdhdWRpbycpIHsKKyAgbGV0IGNvbnN0
cmFpbnRzID0ge307CisgIGNvbnN0cmFpbnRzW2tpbmRdID0gdHJ1ZTsKKyAgY29uc3Qgc3RyZWFt
ID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMp
OworICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdldFRyYWNrcygpOworICB0LmFkZF9jbGVhbnVw
KCgpID0+IHRyYWNrLnN0b3AoKSk7CisgIHJldHVybiBbdHJhY2ssIHN0cmVhbV07Cit9CisKK2Z1
bmN0aW9uIGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYywgc2VuZGVyKSB7CisgIGNvbnN0IHRy
YW5zY2VpdmVycyA9IHBjLmdldFRyYW5zY2VpdmVycygpOworICBmb3IgKGxldCBpID0gMDsgaSA8
IHRyYW5zY2VpdmVycy5sZW5ndGg7ICsraSkgeworICAgIGlmICh0cmFuc2NlaXZlcnNbaV0uc2Vu
ZGVyID09IHNlbmRlcikKKyAgICAgIHJldHVybiB0cmFuc2NlaXZlcnNbaV07CisgIH0KKyAgcmV0
dXJuIG51bGw7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1pY2VDb25uZWN0aW9uU3RhdGUu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odG1sCmluZGV4IDU5Yzk2NGM2
NDViOWRjMDMzMjgxNTZmMTJkZmVkYWNjNmZlZjI1Y2IuLjQwNzEwMzNhM2M5ZWZmNmU1Yjg0ODUz
MTEyN2MxYjcwZWU5MGJiMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25T
dGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odG1sCkBAIC0x
MDQsOCArMTA0LDExIEBACiAgICAqLwogICBhc3luY190ZXN0KHQgPT4gewogICAgIGNvbnN0IHBj
MSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMx
LmNsb3NlKCkpOwogICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7CisKICAgICBjb25zdCBvbkljZUNv
bm5lY3Rpb25TdGF0ZUNoYW5nZSA9IHQuc3RlcF9mdW5jKCgpID0+IHsKICAgICAgIGNvbnN0IHsg
aWNlQ29ubmVjdGlvblN0YXRlIH0gPSBwYzE7CiAKQEAgLTEzOCw3ICsxNDEsNiBAQAogCiAgICAg
ZXhjaGFuZ2VJY2VDYW5kaWRhdGVzKHBjMSwgcGMyKTsKICAgICBkb1NpZ25hbGluZ0hhbmRzaGFr
ZShwYzEsIHBjMik7Ci0KICAgfSwgJ2Nvbm5lY3Rpb24gd2l0aCBvbmUgZGF0YSBjaGFubmVsIHNo
b3VsZCBldmVudHVhbGx5IGhhdmUgY29ubmVjdGVkIGNvbm5lY3Rpb24gc3RhdGUnKTsKIAogICAv
KgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlR2F0aGVyaW5nU3RhdGUuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25u
ZWN0aW9uLWljZUdhdGhlcmluZ1N0YXRlLmh0bWwKaW5kZXggNDI2NWI4YmY4MDYxYmNmNmU2NTUy
Nzg0NzEyMWFjNDI1MzY3NDZlMy4uZmI5ZTUxNDE5NGI5ODA2MmFjYzNmZGQzMzExMWEyZDc0MGJi
OWQ1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlR2F0aGVyaW5nU3RhdGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQ
ZWVyQ29ubmVjdGlvbi1pY2VHYXRoZXJpbmdTdGF0ZS5odG1sCkBAIC01Nyw2ICs1Nyw4IEBACiAg
IGFzeW5jX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKICAgICBjb25zdCBv
bkljZUdhdGhlcmluZ1N0YXRlQ2hhbmdlID0gdC5zdGVwX2Z1bmMoKCkgPT4gewogICAgICAgY29u
c3QgeyBpY2VHYXRoZXJpbmdTdGF0ZSB9ID0gcGM7CiAKQEAgLTc0LDcgKzc2LDYgQEAKICAgICAu
dGhlbihvZmZlciA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKSkKICAgICAudGhlbihl
cnIgPT4gdC5zdGVwX2Z1bmMoZXJyID0+CiAgICAgICBhc3NlcnRfdW5yZWFjaGVkKGBVbmhhbmRs
ZWQgcmVqZWN0aW9uICR7ZXJyLm5hbWV9OiAke2Vyci5tZXNzYWdlfWApKSk7Ci0KICAgfSwgJ2lj
ZUdhdGhlcmluZ1N0YXRlIHNob3VsZCBldmVudHVhbGx5IGJlY29tZSBjb21wbGV0ZSBhZnRlciBz
ZXRMb2NhbERlc2NyaXB0aW9uJyk7CiAKICAgLyoKQEAgLTk3LDggKzk4LDExIEBACiAgICAqLwog
ICBhc3luY190ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOwogICAgIGNvbnN0IHBj
MiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
YzIuY2xvc2UoKSk7CisKICAgICBjb25zdCBvbkljZUdhdGhlcmluZ1N0YXRlQ2hhbmdlID0gdC5z
dGVwX2Z1bmMoKCkgPT4gewogICAgICAgY29uc3QgeyBpY2VHYXRoZXJpbmdTdGF0ZSB9ID0gcGMy
OwogCkBAIC0xMzEsNyArMTM1LDYgQEAKIAogICAgIGV4Y2hhbmdlSWNlQ2FuZGlkYXRlcyhwYzEs
IHBjMik7CiAgICAgZG9TaWduYWxpbmdIYW5kc2hha2UocGMxLCBwYzIpOwotCiAgIH0sICdjb25u
ZWN0aW9uIHdpdGggb25lIGRhdGEgY2hhbm5lbCBzaG91bGQgZXZlbnR1YWxseSBoYXZlIGNvbm5l
Y3RlZCBjb25uZWN0aW9uIHN0YXRlJyk7CiAKICAgLyoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9u
LW9uZGF0YWNoYW5uZWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLW9uZGF0YWNoYW5uZWwuaHRtbAppbmRl
eCA0OTQ4ZDExZGFhNmY2MWYzYjg5YmZkNmY0YWJiNTI5MWMwZjViOGIxLi4xMDcwZWU3MDFkMjMz
NmNmYjE0YzczNzBmOWRiMjVkYWY1OTIyZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1vbmRh
dGFjaGFubmVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tb25kYXRhY2hhbm5lbC5odG1sCkBAIC0z
Niw4ICszNiwxMSBAQAogICAgKi8KICAgYXN5bmNfdGVzdCh0ID0+IHsKICAgICBjb25zdCBsb2Nh
bFBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBs
b2NhbFBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHJlbW90ZVBjID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHJlbW90ZVBjLmNsb3NlKCkpOworCiAg
ICAgbGV0IGV2ZW50Q291bnQgPSAwOwogCiAgICAgY29uc3Qgb25EYXRhQ2hhbm5lbCA9IHQuc3Rl
cF9mdW5jX2RvbmUoZXZlbnQgPT4gewpAQCAtNjksNyArNzIsNiBAQAogICAgIHJlbW90ZVBjLmFk
ZEV2ZW50TGlzdGVuZXIoJ2RhdGFjaGFubmVsJywgb25EYXRhQ2hhbm5lbCk7CiAgICAgZXhjaGFu
Z2VJY2VDYW5kaWRhdGVzKGxvY2FsUGMsIHJlbW90ZVBjKTsKICAgICBkb1NpZ25hbGluZ0hhbmRz
aGFrZShsb2NhbFBjLCByZW1vdGVQYyk7Ci0KICAgfSwgJ2RhdGFjaGFubmVsIGV2ZW50IHNob3Vs
ZCBmaXJlIHdoZW4gbmV3IGRhdGEgY2hhbm5lbCBpcyBhbm5vdW5jZWQgdG8gdGhlIHJlbW90ZSBw
ZWVyJyk7CiAKICAgLyoKQEAgLTk4LDggKzEwMCwxMSBAQAogICAgKi8KICAgYXN5bmNfdGVzdCh0
ID0+IHsKICAgICBjb25zdCBsb2NhbFBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHJlbW90ZVBj
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHJl
bW90ZVBjLmNsb3NlKCkpOworCiAgICAgY29uc3Qgb25EYXRhQ2hhbm5lbCA9IHQuc3RlcF9mdW5j
X2RvbmUoZXZlbnQgPT4gewogICAgICAgY29uc3QgcmVtb3RlQ2hhbm5lbCA9IGV2ZW50LmNoYW5u
ZWw7CiAgICAgICBhc3NlcnRfdHJ1ZShyZW1vdGVDaGFubmVsIGluc3RhbmNlb2YgUlRDRGF0YUNo
YW5uZWwsCkBAIC0xNDUsOCArMTUwLDExIEBACiAgICAqLwogICBhc3luY190ZXN0KHQgPT4gewog
ICAgIGNvbnN0IGxvY2FsUGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9j
bGVhbnVwKCgpID0+IGxvY2FsUGMuY2xvc2UoKSk7CiAgICAgY29uc3QgcmVtb3RlUGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcmVtb3RlUGMu
Y2xvc2UoKSk7CisKICAgICBjb25zdCBvbkRhdGFDaGFubmVsID0gdC51bnJlYWNoZWRfZnVuYygn
ZGF0YWNoYW5uZWwgZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZCcpOwogCiAgICAgbG9jYWxQYy5j
cmVhdGVEYXRhQ2hhbm5lbCgndGVzdCcsIHsKQEAgLTE1OCw3ICsxNjYsNiBAQAogICAgIGRvU2ln
bmFsaW5nSGFuZHNoYWtlKGxvY2FsUGMsIHJlbW90ZVBjKTsKIAogICAgIHQuc3RlcF90aW1lb3V0
KHQuc3RlcF9mdW5jX2RvbmUoKSwgMjAwKTsKLQogICB9LCAnRGF0YSBjaGFubmVsIGNyZWF0ZWQg
d2l0aCBuZWdvdGlhdGVkIHNldCB0byB0cnVlIHNob3VsZCBub3QgZmlyZSBkYXRhY2hhbm5lbCBl
dmVudCBvbiByZW1vdGUgcGVlcicpOwogCiAgIC8qCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1v
bm5lZ290aWF0aW9ubmVlZGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVk
Lmh0bWwKaW5kZXggYTcxNjI1YzA3MTUyZDA1YjQzNDYxOTBlODIyYmVlOWQ3YzJlY2VhYy4uOGY5
ZWEyYmU3ODA2ZWZjMThiNzUxMWQyNzYzNGQ0YzFmNWRhY2YwYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5l
Y3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLW9ubmVnb3Rp
YXRpb25uZWVkZWQuaHRtbApAQCAtODIsNiArODIsNyBAQAogICAgKi8KICAgcHJvbWlzZV90ZXN0
KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCBuZWdvdGlhdGVkID0gYXdh
aXROZWdvdGlhdGlvbihwYyk7CiAKICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgndGVzdCcpOwpA
QCAtMTE0LDYgKzExNSw3IEBACiAgICAqLwogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IG5lZ290aWF0ZWQgPSBhd2FpdE5lZ290aWF0aW9uKHBj
KTsKIAogICAgIHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOwpAQCAtMTg0LDYgKzE4Niw4IEBA
CiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJl
dHVybiBhc3NlcnRfZmlyc3RfcHJvbWlzZV9mdWxmaWxsX2FmdGVyX3NlY29uZCgKICAgICAgIGF3
YWl0TmVnb3RpYXRpb24ocGMpLAogICAgICAgcGMuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2
ZUF1ZGlvOiB0cnVlIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1vbnRyYWNrLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENQZWVyQ29ubmVjdGlvbi1vbnRyYWNrLmh0dHBzLmh0bWwKaW5kZXggNjYxMDEzOThlYzM2MTJk
OWUwZjUwOWNmODE2MWM4MTcxMDExMmM4My4uMTAyMTAxMjlhY2Q1OThmZDk1OTEyNGZiZTUxNDYy
ZGU4YTFjZGIwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tb250cmFjay5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLW9udHJhY2suaHR0cHMuaHRtbApAQCAtOTgsNiArOTgsOCBAQAogICBh
c3luY190ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAgLy8gRmFpbCB0
aGUgdGVzdCBpZiB0aGUgb250cmFjayBldmVudCBoYW5kbGVyIGlzIG5vdCBpbXBsZW1lbnRlZAog
ICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHBjLCAnb250cmFjaycsICdFeHBlY3QgcGMgdG8gaGF2
ZSBvbnRyYWNrIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlJyk7CiAKQEAgLTE1MSw2ICsxNTMsOCBA
QCBhPXNzcmM6MTAwMSBjbmFtZTpzb21lCiAgIGFzeW5jX3Rlc3QodCA9PiB7CiAgICAgY29uc3Qg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4g
cGMuY2xvc2UoKSk7CisKICAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShwYywgJ29udHJhY2snLCAn
RXhwZWN0IHBjIHRvIGhhdmUgb250cmFjayBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZScpOwogCiAg
ICAgY29uc3Qgc2RwID0gYHY9MApAQCAtMTgyLDEzICsxODYsMTUgQEAgYT1zc3JjOjEwMDEgY25h
bWU6c29tZQogICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsKICAgICAgIHQuc3RlcF90aW1l
b3V0KHQuc3RlcF9mdW5jX2RvbmUoKSwgMTAwKTsKICAgICB9KSk7Ci0KICAgfSwgJ3NldFJlbW90
ZURlc2NyaXB0aW9uKCkgd2l0aCBtPSBsaW5lIG9mIHJlY3Zvbmx5IGRpcmVjdGlvbiBzaG91bGQg
bm90IHRyaWdnZXIgdHJhY2sgZXZlbnQnKTsKIAogICBhc3luY190ZXN0KHQgPT4gewogICAgIGNv
bnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMxLmNsb3NlKCkpOwogICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7CisKICAgICBwYzIub250
cmFjayA9IHQuc3RlcF9mdW5jKHRyYWNrRXZlbnQgPT4gewogICAgICAgY29uc3QgeyB0cmFjayB9
ID0gdHJhY2tFdmVudDsKIApAQCAtMjEwLDEzICsyMTYsMTUgQEAgYT1zc3JjOjEwMDEgY25hbWU6
c29tZQogICAgIC5jYXRjaCh0LnN0ZXBfZnVuYyhlcnIgPT4gewogICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgnRXJyb3IgJyArIGVyci5uYW1lICsgJzogJyArIGVyci5tZXNzYWdlKTsKICAgICB9KSk7
Ci0KICAgfSwgJ2FkZFRyYWNrKCkgc2hvdWxkIGNhdXNlIHJlbW90ZSBjb25uZWN0aW9uIHRvIGZp
cmUgb250cmFjayB3aGVuIHNldFJlbW90ZURlc2NyaXB0aW9uKCknKTsKIAogICBhc3luY190ZXN0
KHQgPT4gewogICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOwogICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7
CisKICAgICBwYzIub250cmFjayA9IHQuc3RlcF9mdW5jKHRyYWNrRXZlbnQgPT4gewogICAgICAg
Y29uc3QgeyB0cmFjayB9ID0gdHJhY2tFdmVudDsKIApAQCAtMjM1LDEzICsyNDMsMTUgQEAgYT1z
c3JjOjEwMDEgY25hbWU6c29tZQogICAgIC5jYXRjaCh0LnN0ZXBfZnVuYyhlcnIgPT4gewogICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgnRXJyb3IgJyArIGVyci5uYW1lICsgJzogJyArIGVyci5tZXNz
YWdlKTsKICAgICB9KSk7Ci0KICAgfSwgYGFkZFRyYW5zY2VpdmVyKCd2aWRlbycpIHNob3VsZCBj
YXVzZSByZW1vdGUgY29ubmVjdGlvbiB0byBmaXJlIG9udHJhY2sgd2hlbiBzZXRSZW1vdGVEZXNj
cmlwdGlvbigpYCk7CiAKICAgYXN5bmNfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYzEgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgp
KTsKICAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkpOworCiAgICAgcGMyLm9udHJhY2sgPSB0LnN0ZXBf
ZnVuYyh0cmFja0V2ZW50ID0+IHsKICAgICAgIGNvbnN0IHsgdHJhY2sgfSA9IHRyYWNrRXZlbnQ7
CiAKQEAgLTI2NCw3ICsyNzQsNiBAQCBhPXNzcmM6MTAwMSBjbmFtZTpzb21lCiAgICAgLnRoZW4o
dC5zdGVwX2Z1bmMoKCkgPT4gewogICAgICAgdC5zdGVwX3RpbWVvdXQodC5zdGVwX2Z1bmNfZG9u
ZSgpLCAxMDApOwogICAgIH0pKTsKLQogICB9LCBgYWRkVHJhbnNjZWl2ZXIoKSB3aXRoIGluYWN0
aXZlIGRpcmVjdGlvbiBzaG91bGQgbm90IGNhdXNlIHJlbW90ZSBjb25uZWN0aW9uIHRvIGZpcmUg
b250cmFjayB3aGVuIHNldFJlbW90ZURlc2NyaXB0aW9uKClgKTsKIAogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1wZWVySWRlbnRpdHkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXBlZXJJ
ZGVudGl0eS5odG1sCmluZGV4IGQ1ZjlkYjlkNWQwODg3YjcwYjdiMmJhYmQ0OWE1YmJhZGFkMDc4
NTYuLjY0YWQyMTJhNWJhNGUwYzZiZjU1ODlmNGNkYTNhNGM3YTUwOGNkYzIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLXBlZXJJZGVudGl0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXBlZXJJZGVu
dGl0eS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPHRpdGxlPlJUQ1BlZXJDb25uZWN0aW9uLnByb3Rv
dHlwZS5wZWVySWRlbnRpdHk8L3RpdGxlPgogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImlkZW50aXR5LWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iaWRlbnRpdHktaGVscGVyLnN1Yi5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogICAndXNlIHN0cmljdCc7CiAKQEAgLTEzLDcgKzEzLDcgQEAKICAgLy8gVGhlIHRl
c3RzIGhlcmUgaW50ZXJhY3RzIHdpdGggdGhlIG1vY2sgaWRlbnRpdHkgcHJvdmlkZXIgbG9jYXRl
ZCBhdAogICAvLyAgIC8ud2VsbC1rbm93bi9pZHAtcHJveHkvbW9jay1pZHAuanMKIAotICAvLyBU
aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIGlkZW50aXR5LWhl
bHBlci5qcworICAvLyBUaGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBm
cm9tIGlkZW50aXR5LWhlbHBlci5zdWIuanMKICAgLy8gICBwYXJzZUFzc2VydGlvblJlc3VsdAog
ICAvLyAgIGdldElkcERvbWFpbnMKICAgLy8gICBhc3NlcnRfcnRjZXJyb3JfcmVqZWN0aW9uCkBA
IC01NCwxMCArNTQsMTMgQEAKICAgICAgIGlzLCB0aGVyZSBpcyBhIGN1cnJlbnQgdmFsdWUgZm9y
IHBlZXJJZGVudGl0eSApLCB0aGVuIHRoaXMgYWxzbyBlc3RhYmxpc2hlcyBhCiAgICAgICB0YXJn
ZXQgcGVlciBpZGVudGl0eS4KICAgICovCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7CisgIHByb21p
c2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
KyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKICAgICBjb25zdCBwYzIgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNs
b3NlKCkpOworCiAgICAgY29uc3QgcG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5wb3J0OwogICAgIGNv
bnN0IFtpZHBEb21haW5dID0gZ2V0SWRwRG9tYWlucygpOwogICAgIGNvbnN0IGlkcEhvc3QgPSBo
b3N0U3RyaW5nKGlkcERvbWFpbiwgcG9ydCk7CkBAIC05MiwxMCArOTUsMTMgQEAKICAgICBjb25z
dCBpZHBIb3N0ID0gaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpOwogCiAgICAgY29uc3QgcGMx
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEu
Y2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKHsKICAgICAg
IHBlZXJJZGVudGl0eTogYGJvYkAke2lkcERvbWFpbn1gCiAgICAgfSk7CiAKKyAgICB0LmFkZF9j
bGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKwogICAgIHBjMS5zZXRJZGVudGl0eVByb3ZpZGVy
KGlkcEhvc3QsIHsKICAgICAgIHByb3RvY29sOiAnbW9jay1pZHAuanMnLAogICAgICAgdXNlcm5h
bWVIaW50OiBgYWxpY2VAJHtpZHBEb21haW59YApAQCAtMTMxLDEwICsxMzcsMTMgQEAKICAgICBj
b25zdCBpZHBIb3N0ID0gaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQpOwogCiAgICAgY29uc3Qg
cGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
YzEuY2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKHsKICAg
ICAgIHBlZXJJZGVudGl0eTogYGFsaWNlQCR7aWRwRG9tYWlufWAKICAgICB9KTsKIAorICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkpOworCiAgICAgLy8gQXNrIG1vY2tpZHAuanMg
dG8gcmV0dXJuIGN1c3RvbSBjb250ZW50cyBpbiB2YWxpZGF0aW9uIHJlc3VsdAogICAgIHBjMS5z
ZXRJZGVudGl0eVByb3ZpZGVyKGlkcEhvc3QsIHsKICAgICAgIHByb3RvY29sOiAnbW9jay1pZHAu
anM/dmFsaWRhdG9yQWN0aW9uPXJldHVybi1jdXN0b20tY29udGVudHMmY29udGVudHM9Ym9ndXMn
LApAQCAtMTY3LDEwICsxNzYsMTMgQEAKICAgICBjb25zdCBpZHBIb3N0MSA9IGhvc3RTdHJpbmco
aWRwRG9tYWluMSwgcG9ydCk7CiAKICAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKICAgICBjb25zdCBw
YzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oewogICAgICAgcGVlcklkZW50aXR5OiBgYWxpY2VA
JHtpZHBEb21haW4yfWAKICAgICB9KTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNs
b3NlKCkpOworCiAgICAgLy8gbW9jay1pZHAuanMgd2lsbCByZXR1cm4gYXNzZXJ0aW9uIG9mIGRv
bWFpbjIgaWRlbnRpdHkKICAgICAvLyB3aXRoIGRvbWFpbjEgaW4gdGhlIGlkcC5kb21haW4gZmll
bGQKICAgICBwYzEuc2V0SWRlbnRpdHlQcm92aWRlcihpZHBIb3N0MSwgewpAQCAtMjIwLDEwICsy
MzIsMTMgQEAKICAgICBjb25zdCBpZHBIb3N0ID0gaG9zdFN0cmluZyhpZHBEb21haW4sIHBvcnQp
OwogCiAgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKHsKICAgICAgIHBlZXJJZGVudGl0eTogYGFsaWNlQCR7aWRwRG9tYWlufWAKICAg
ICB9KTsKIAorICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkpOworCiAgICAgLy8g
QXNrIG1vY2staWRwLmpzIHRvIHRocm93IGVycm9yIGR1cmluZyB2YWxpZGF0aW9uLAogICAgIC8v
IGkuZS4gZHVyaW5nIHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbigpCiAgICAgcGMxLnNldElkZW50
aXR5UHJvdmlkZXIoaWRwSG9zdCwgewpAQCAtMjYzLDggKzI3OCwxMSBAQAogICAgKi8KICAgcHJv
bWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOwogICAgIGNvbnN0IHBjMiA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIu
Y2xvc2UoKSk7CisKICAgICBjb25zdCBwb3J0ID0gd2luZG93LmxvY2F0aW9uLnBvcnQ7CiAgICAg
Y29uc3QgW2lkcERvbWFpbl0gPSBnZXRJZHBEb21haW5zKCk7CiAgICAgY29uc3QgaWRwSG9zdCA9
IGhvc3RTdHJpbmcoaWRwRG9tYWluLCBwb3J0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXJl
bW90ZS10cmFjay1tdXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXJlbW90ZS10
cmFjay1tdXRlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTdjZjg5MjA5MDU5NWQ4
OTkxZjQxMDdiYjI0ZmEyYjRkNmI2MGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24t
cmVtb3RlLXRyYWNrLW11dGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworRkFJTCBvbnRyYWNrOiB0
cmFjayBnb2VzIGZyb20gbXV0ZWQgdG8gdW5tdXRlZCBhc3NlcnRfdHJ1ZTogdHJhY2sgaXMgbXV0
ZWQgaW4gb250cmFjayBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBDaGFuZ2luZyB0cmFu
c2NlaXZlciBkaXJlY3Rpb24gdG8gJ2luYWN0aXZlJyBtdXRlcyB0aGUgcmVtb3RlIHRyYWNrIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iCitGQUlMIENo
YW5naW5nIHRyYW5zY2VpdmVyIGRpcmVjdGlvbiB0byAnc2VuZHJlY3YnIHVubXV0ZXMgdGhlIHJl
bW90ZSB0cmFjayBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuIgorVElNRU9VVCBwYy5jbG9zZSgpIG11dGVzIHJlbW90ZSB0cmFja3MgVGVzdCB0aW1lZCBv
dXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tcmVtb3RlLXRyYWNrLW11dGUuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLXJlbW90ZS10cmFjay1tdXRlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTZmZTc2MTQyNTA5NmU5NjM1ODkzMDliODI4YThhN2Y3ZDM2YTliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLXJlbW90ZS10cmFjay1tdXRlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw5
OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPlJUQ1Bl
ZXJDb25uZWN0aW9uLXRyYW5zY2VpdmVycy5odHRwcy5odG1sPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSVENQ
ZWVyQ29ubmVjdGlvbi1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0
JzsKKworLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZnJvbSBS
VENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanM6CisvLyAgIGV4Y2hhbmdlT2ZmZXIKKy8vICAgZXhj
aGFuZ2VPZmZlckFuZExpc3RlblRvT250cmFjaworLy8gICBleGNoYW5nZUFuc3dlcgorLy8gICBl
eGNoYW5nZUFuc3dlckFuZExpc3RlblRvT250cmFjaworLy8gICBhZGRFdmVudExpc3RlbmVyUHJv
bWlzZQorLy8gICBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwCisvLyAgIGNyZWF0ZVRy
YWNrQW5kU3RyZWFtV2l0aENsZWFudXAKKy8vICAgZmluZFRyYW5zY2VpdmVyRm9yU2VuZGVyCisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5l
Y3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgcGMxLmFkZFRyYWNrKC4uLiBhd2FpdCBjcmVhdGVUcmFj
a0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpKTsKKyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5l
Y3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgZXhjaGFuZ2VJY2VDYW5kaWRhdGVzKHBjMSwgcGMyKTsK
KworICBjb25zdCB1bm11dGVSZXNvbHZlciA9IG5ldyBSZXNvbHZlcigpOworICBsZXQgcmVtb3Rl
VHJhY2sgPSBudWxsOworICAvLyBUaGUgdW5tdXRpbmcgaXQgdGltaW5nIHNlbnNpdGl2ZSBzbyB3
ZSBob29rIHVwIHRvIHRoZSBldmVudCBkaXJlY3RseQorICAvLyBpbnN0ZWFkIG9mIHdyYXBwaW5n
IGl0IGluIGFuIEV2ZW50V2F0Y2hlciB3aGljaCB1c2VzIHByb21pc2VzLgorICBwYzIub250cmFj
ayA9IHQuc3RlcF9mdW5jKGUgPT4geworICAgIHJlbW90ZVRyYWNrID0gZS50cmFjazsKKyAgICBh
c3NlcnRfdHJ1ZShyZW1vdGVUcmFjay5tdXRlZCwgJ3RyYWNrIGlzIG11dGVkIGluIG9udHJhY2sn
KTsKKyAgICByZW1vdGVUcmFjay5vbnVubXV0ZSA9IHQuc3RlcF9mdW5jKGUgPT4geworICAgICAg
YXNzZXJ0X2ZhbHNlKHJlbW90ZVRyYWNrLm11dGVkLCAndHJhY2sgaXMgdW5tdXRlZCBpbiBvbnVu
bXV0ZScpOworICAgICAgdW5tdXRlUmVzb2x2ZXIucmVzb2x2ZSgpOworICAgIH0pOworICAgIHBj
Mi5vbnRyYWNrID0gdC5zdGVwX2Z1bmMoZSA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdv
bnRyYWNrIGZpcmVkIHVuZXhwZWN0ZWRseScpOworICAgIH0pOworICB9KTsKKyAgYXdhaXQgZXhj
aGFuZ2VPZmZlckFuc3dlcihwYzEsIHBjMik7CisgIGF3YWl0IHVubXV0ZVJlc29sdmVyLnByb21p
c2U7Cit9LCAnb250cmFjazogdHJhY2sgZ29lcyBmcm9tIG11dGVkIHRvIHVubXV0ZWQnKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBwYzEgPSBjcmVhdGVQZWVyQ29ubmVj
dGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBwYzFTZW5kZXIgPSBwYzEuYWRkVHJhY2soLi4u
IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFudXAodCkpOworICBjb25zdCBsb2Nh
bFRyYW5zY2VpdmVyID0gZmluZFRyYW5zY2VpdmVyRm9yU2VuZGVyKHBjMSwgcGMxU2VuZGVyKTsK
KyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgZXhj
aGFuZ2VJY2VDYW5kaWRhdGVzKHBjMSwgcGMyKTsKKworICBjb25zdCBlID0gYXdhaXQgZXhjaGFu
Z2VPZmZlckFuZExpc3RlblRvT250cmFjayh0LCBwYzEsIHBjMik7CisgIGF3YWl0IGV4Y2hhbmdl
QW5zd2VyKHBjMSwgcGMyKTsKKworICBjb25zdCBtdXRlV2F0Y2hlciA9IG5ldyBFdmVudFdhdGNo
ZXIodCwgZS50cmFjaywgWydtdXRlJ10pOworICBjb25zdCBtdXRlUHJvbWlzZSA9IG11dGVXYXRj
aGVyLndhaXRfZm9yKCdtdXRlJyk7CisgIGxvY2FsVHJhbnNjZWl2ZXIuZGlyZWN0aW9uID0gJ2lu
YWN0aXZlJzsKKyAgYXdhaXQgZXhjaGFuZ2VPZmZlckFuc3dlcihwYzEsIHBjMik7CisKKyAgYXdh
aXQgbXV0ZVByb21pc2U7Cit9LCAnQ2hhbmdpbmcgdHJhbnNjZWl2ZXIgZGlyZWN0aW9uIHRvIFwn
aW5hY3RpdmVcJyBtdXRlcyB0aGUgcmVtb3RlIHRyYWNrJyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0
KTsKKyAgY29uc3QgcGMxU2VuZGVyID0gcGMxLmFkZFRyYWNrKC4uLiBhd2FpdCBjcmVhdGVUcmFj
a0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpKTsKKyAgY29uc3QgbG9jYWxUcmFuc2NlaXZlciA9IGZp
bmRUcmFuc2NlaXZlckZvclNlbmRlcihwYzEsIHBjMVNlbmRlcik7CisgIGNvbnN0IHBjMiA9IGNy
ZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGV4Y2hhbmdlSWNlQ2FuZGlkYXRl
cyhwYzEsIHBjMik7CisKKyAgY29uc3QgZSA9IGF3YWl0IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5U
b09udHJhY2sodCwgcGMxLCBwYzIpOworICBhd2FpdCBleGNoYW5nZUFuc3dlcihwYzEsIHBjMik7
CisgIGxvY2FsVHJhbnNjZWl2ZXIuZGlyZWN0aW9uID0gJ2luYWN0aXZlJzsKKyAgYXdhaXQgZXhj
aGFuZ2VPZmZlckFuc3dlcihwYzEsIHBjMik7CisKKyAgY29uc3QgdW5tdXRlV2F0Y2hlciA9IG5l
dyBFdmVudFdhdGNoZXIodCwgZS50cmFjaywgWyd1bm11dGUnXSk7CisgIGNvbnN0IHVubXV0ZVBy
b21pc2UgPSB1bm11dGVXYXRjaGVyLndhaXRfZm9yKCd1bm11dGUnKTsKKyAgbG9jYWxUcmFuc2Nl
aXZlci5kaXJlY3Rpb24gPSAnc2VuZHJlY3YnOworICBhd2FpdCBleGNoYW5nZU9mZmVyQW5zd2Vy
KHBjMSwgcGMyKTsKKworICBhd2FpdCB1bm11dGVQcm9taXNlOworfSwgJ0NoYW5naW5nIHRyYW5z
Y2VpdmVyIGRpcmVjdGlvbiB0byBcJ3NlbmRyZWN2XCcgdW5tdXRlcyB0aGUgcmVtb3RlIHRyYWNr
Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVl
ckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgcGMxU2VuZGVyID0gcGMxLmFkZFRy
YWNrKC4uLiBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpKTsKKyAgY29u
c3QgbG9jYWxUcmFuc2NlaXZlciA9IGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYzEsIHBjMVNl
bmRlcik7CisgIGNvbnN0IHBjMiA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7
CisgIGV4Y2hhbmdlSWNlQ2FuZGlkYXRlcyhwYzEsIHBjMik7CisKKyAgY29uc3QgZSA9IGF3YWl0
IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5Ub09udHJhY2sodCwgcGMxLCBwYzIpOworICBhd2FpdCBl
eGNoYW5nZUFuc3dlcihwYzEsIHBjMik7CisgIGNvbnN0IG11dGVXYXRjaGVyID0gbmV3IEV2ZW50
V2F0Y2hlcih0LCBlLnRyYWNrLCBbJ211dGUnXSk7CisgIGNvbnN0IG11dGVQcm9taXNlID0gbXV0
ZVdhdGNoZXIud2FpdF9mb3IoJ211dGUnKTsKKyAgcGMyLmNsb3NlKCk7CisgIGF3YWl0IG11dGVQ
cm9taXNlOworfSwgJ3BjLmNsb3NlKCkgbXV0ZXMgcmVtb3RlIHRyYWNrcycpOworCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXJlbW92ZVRyYWNrLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLXJlbW92ZVRyYWNrLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBiMDk0
M2RkZmM2ODNmZWVlMzhjMmZiZTE2NzMwZmMxYjFkNzQ5ODFiLi4zY2E0MTY3YjY5OGFhYjM1ZmUw
YzdiYmZmMzU3YTEyYjdmM2QwM2M5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1yZW1vdmVUcmFj
ay5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tcmVtb3ZlVHJhY2suaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC01LDEwICs1LDEwIEBAIFBBU1MgYWRkVHJhbnNjZWl2ZXIgLSBDYWxs
aW5nIHJlbW92ZVRyYWNrIG9uIGRpZmZlcmVudCBjb25uZWN0aW9uIHRoYXQgaXMgY2xvc2VkCiBQ
QVNTIGFkZFRyYWNrIC0gQ2FsbGluZyByZW1vdmVUcmFjayBvbiBkaWZmZXJlbnQgY29ubmVjdGlv
biB0aGF0IGlzIGNsb3NlZCBzaG91bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3IgCiBGQUlMIGFk
ZFRyYW5zY2VpdmVyIC0gQ2FsbGluZyByZW1vdmVUcmFjayBvbiBkaWZmZXJlbnQgY29ubmVjdGlv
biBzaG91bGQgdGhyb3cgSW52YWxpZEFjY2Vzc0Vycm9yIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9u
ICIoKSA9PiBwYzIucmVtb3ZlVHJhY2soc2VuZGVyKSIgZGlkIG5vdCB0aHJvdwogRkFJTCBhZGRU
cmFjayAtIENhbGxpbmcgcmVtb3ZlVHJhY2sgb24gZGlmZmVyZW50IGNvbm5lY3Rpb24gc2hvdWxk
IHRocm93IEludmFsaWRBY2Nlc3NFcnJvciBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
cGMyLnJlbW92ZVRyYWNrKHNlbmRlcikiIGRpZCBub3QgdGhyb3cKLUZBSUwgYWRkVHJhbnNjZWl2
ZXIgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggdmFsaWQgc2VuZGVyIHNob3VsZCBzZXQgc2Vu
ZGVyLnRyYWNrIHRvIG51bGwgYXNzZXJ0X2VxdWFsczogZGlyZWN0aW9uIHNob3VsZCBub3QgYmUg
YWx0ZXJlZCBleHBlY3RlZCAic2VuZHJlY3YiIGJ1dCBnb3QgInJlY3Zvbmx5IgorUEFTUyBhZGRU
cmFuc2NlaXZlciAtIENhbGxpbmcgcmVtb3ZlVHJhY2sgd2l0aCB2YWxpZCBzZW5kZXIgc2hvdWxk
IHNldCBzZW5kZXIudHJhY2sgdG8gbnVsbCAKIFBBU1MgYWRkVHJhY2sgLSBDYWxsaW5nIHJlbW92
ZVRyYWNrIHdpdGggdmFsaWQgc2VuZGVyIHNob3VsZCBzZXQgc2VuZGVyLnRyYWNrIHRvIG51bGwg
Ci1GQUlMIENhbGxpbmcgcmVtb3ZlVHJhY2sgd2l0aCBjdXJyZW50RGlyZWN0aW9uIHNlbmRyZWN2
IHNob3VsZCBzZXQgZGlyZWN0aW9uIHRvIHJlY3Zvbmx5IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJzZW5kcmVjdiIgYnV0IGdvdCAic2VuZG9ubHkiCitQQVNTIENhbGxpbmcgcmVtb3ZlVHJhY2sg
d2l0aCBjdXJyZW50RGlyZWN0aW9uIHNlbmRyZWN2IHNob3VsZCBzZXQgZGlyZWN0aW9uIHRvIHJl
Y3Zvbmx5IAogUEFTUyBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggY3VycmVudERpcmVjdGlvbiBz
ZW5kb25seSBzaG91bGQgc2V0IGRpcmVjdGlvbiB0byBpbmFjdGl2ZSAKLUZBSUwgQ2FsbGluZyBy
ZW1vdmVUcmFjayB3aXRoIGN1cnJlbnREaXJlY3Rpb24gcmVjdm9ubHkgc2hvdWxkIG5vdCBjaGFu
Z2UgZGlyZWN0aW9uIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJyZWN2b25seSIgYnV0IGdvdCAi
aW5hY3RpdmUiCitQQVNTIENhbGxpbmcgcmVtb3ZlVHJhY2sgd2l0aCBjdXJyZW50RGlyZWN0aW9u
IHJlY3Zvbmx5IHNob3VsZCBub3QgY2hhbmdlIGRpcmVjdGlvbiAKIFBBU1MgQ2FsbGluZyByZW1v
dmVUcmFjayB3aXRoIGN1cnJlbnREaXJlY3Rpb24gaW5hY3RpdmUgc2hvdWxkIG5vdCBjaGFuZ2Ug
ZGlyZWN0aW9uIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1yZW1vdmVUcmFjay5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tcmVtb3ZlVHJhY2suaHR0cHMuaHRtbAppbmRleCBlMmRhMDJiOWRj
ZjY5Y2IxYTE2OGM0Y2M4Zjc3MzQwMTRlZmFmNWNjLi5jOThkYmRiZDhmM2ZhMDUwMTEzMWE5YTU5
ZGRjODk4MmQzNDBlYmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1yZW1vdmVUcmFjay5odHRw
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXJlbW92ZVRyYWNrLmh0dHBzLmh0bWwKQEAgLTEyLDcg
KzEyLDYgQEAKIAogICAvLyBUaGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxl
ZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qczoKICAgLy8gZ2VuZXJhdGVBbnN3ZXIK
LSAgLy8gZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrCiAKICAgLyoKICAgICA1LjEuICBSVENQZWVy
Q29ubmVjdGlvbiBJbnRlcmZhY2UgRXh0ZW5zaW9ucwpAQCAtMzUsMTAzICszNCw5NiBAQAogICAg
IDUuMS4gIHJlbW92ZVRyYWNrCiAgICAgICAzLiAgSWYgY29ubmVjdGlvbidzIFtbaXNDbG9zZWRd
XSBzbG90IGlzIHRydWUsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgKi8KLSAgdGVz
dCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3QgdHJhY2sgPSBnZW5lcmF0ZU1lZGlhU3Ry
ZWFtVHJhY2soJ2F1ZGlvJyk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkp
KTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdldFRyYWNrcygpOwogICAgIGNvbnN0IHRy
YW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodHJhY2spOwogICAgIGNvbnN0IHsgc2VuZGVy
IH0gPSB0cmFuc2NlaXZlcjsKIAogICAgIHBjLmNsb3NlKCk7CiAgICAgYXNzZXJ0X3Rocm93cygn
SW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBwYy5yZW1vdmVUcmFjayhzZW5kZXIpKTsKLQogICB9
LCAnYWRkVHJhbnNjZWl2ZXIgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIHdoZW4gY29ubmVjdGlvbiBp
cyBjbG9zZWQgc2hvdWxkIHRocm93IEludmFsaWRTdGF0ZUVycm9yJyk7CiAKLSAgcHJvbWlzZV90
ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3Nl
KCkpOwogCi0gICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsg
YXVkaW86IHRydWUgfSkKLSAgICAudGhlbihtZWRpYVN0cmVhbSA9PiB7Ci0gICAgICBjb25zdCB0
cmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKTsKLSAgICAgIGFzc2VydF9ncmVhdGVyX3Ro
YW4odHJhY2tzLmxlbmd0aCwgMCwKLSAgICAgICAgJ0V4cGVjdCBnZXRVc2VyTWVkaWEgdG8gcmV0
dXJuIGF0IGxlYXN0IG9uZSBhdWRpbyB0cmFjaycpOwotCi0gICAgICBjb25zdCB0cmFjayA9IHRy
YWNrc1swXTsKLSAgICAgIGNvbnN0IHNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBtZWRpYVN0
cmVhbSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgZ2V0Tm9pc2VTdHJlYW0oeyBhdWRpbzog
dHJ1ZSB9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JF
YWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0u
Z2V0VHJhY2tzKCk7CisgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVh
bSk7CiAKLSAgICAgIHBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3Rh
dGVFcnJvcicsICgpID0+IHBjLnJlbW92ZVRyYWNrKHNlbmRlcikpOwotICAgIH0pOworICAgIHBj
LmNsb3NlKCk7CisgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBw
Yy5yZW1vdmVUcmFjayhzZW5kZXIpKTsKICAgfSwgJ2FkZFRyYWNrIC0gQ2FsbGluZyByZW1vdmVU
cmFjayB3aGVuIGNvbm5lY3Rpb24gaXMgY2xvc2VkIHNob3VsZCB0aHJvdyBJbnZhbGlkU3RhdGVF
cnJvcicpOwogCi0gIHRlc3QodCA9PiB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0IHRyYWNrID0g
Z2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrKCdhdWRpbycpOworICAgIGNvbnN0IHN0cmVhbSA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOwor
ICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sg
PT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFja3Mo
KTsKICAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrKTsKICAg
ICBjb25zdCB7IHNlbmRlciB9ID0gdHJhbnNjZWl2ZXI7CiAKICAgICBjb25zdCBwYzIgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKICAgICBwYzIuY2xvc2UoKTsKICAgICBhc3NlcnRfdGhyb3dz
KCdJbnZhbGlkU3RhdGVFcnJvcicsICgpID0+IHBjMi5yZW1vdmVUcmFjayhzZW5kZXIpKTsKLQog
ICB9LCAnYWRkVHJhbnNjZWl2ZXIgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIG9uIGRpZmZlcmVudCBj
b25uZWN0aW9uIHRoYXQgaXMgY2xvc2VkIHNob3VsZCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvcicp
OwogCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewog
ICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKIAotICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pCi0gICAgLnRoZW4obWVkaWFTdHJlYW0gPT4g
ewotICAgICAgY29uc3QgdHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7Ci0gICAgICBh
c3NlcnRfZ3JlYXRlcl90aGFuKHRyYWNrcy5sZW5ndGgsIDAsCi0gICAgICAgICdFeHBlY3QgZ2V0
VXNlck1lZGlhIHRvIHJldHVybiBhdCBsZWFzdCBvbmUgYXVkaW8gdHJhY2snKTsKKyAgICBjb25z
dCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVhbSh7IGF1ZGlvOiB0cnVlIH0pOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJh
Y2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFja3MoKTsKKyAg
ICBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKIAotICAgICAgY29u
c3QgdHJhY2sgPSB0cmFja3NbMF07Ci0gICAgICBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0
cmFjaywgbWVkaWFTdHJlYW0pOwotCi0gICAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKLSAgICAgIHBjMi5jbG9zZSgpOwotICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxp
ZFN0YXRlRXJyb3InLCAoKSA9PiBwYzIucmVtb3ZlVHJhY2soc2VuZGVyKSk7Ci0gICAgfSk7Cisg
ICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMyLmNsb3NlKCk7
CisgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBwYzIucmVtb3Zl
VHJhY2soc2VuZGVyKSk7CiAgIH0sICdhZGRUcmFjayAtIENhbGxpbmcgcmVtb3ZlVHJhY2sgb24g
ZGlmZmVyZW50IGNvbm5lY3Rpb24gdGhhdCBpcyBjbG9zZWQgc2hvdWxkIHRocm93IEludmFsaWRT
dGF0ZUVycm9yJyk7CiAKICAgLyoKICAgICA1LjEuICByZW1vdmVUcmFjawogICAgICAgNC4gIElm
IHNlbmRlciB3YXMgbm90IGNyZWF0ZWQgYnkgY29ubmVjdGlvbiwgdGhyb3cgYW4gSW52YWxpZEFj
Y2Vzc0Vycm9yLgogICAgKi8KLSAgdGVzdCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3Qg
dHJhY2sgPSBnZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soJ2F1ZGlvJyk7CisgICAgY29uc3Qgc3Ry
ZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0
cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFj
aCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdl
dFRyYWNrcygpOwogICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodHJh
Y2spOwogICAgIGNvbnN0IHsgc2VuZGVyIH0gPSB0cmFuc2NlaXZlcjsKIAogICAgIGNvbnN0IHBj
MiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRB
Y2Nlc3NFcnJvcicsICgpID0+IHBjMi5yZW1vdmVUcmFjayhzZW5kZXIpKTsKLQogICB9LCAnYWRk
VHJhbnNjZWl2ZXIgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIG9uIGRpZmZlcmVudCBjb25uZWN0aW9u
IHNob3VsZCB0aHJvdyBJbnZhbGlkQWNjZXNzRXJyb3InKTsKIAotICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAK
LSAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzog
dHJ1ZSB9KQotICAgIC50aGVuKG1lZGlhU3RyZWFtID0+IHsKLSAgICAgIGNvbnN0IHRyYWNrcyA9
IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpOwotICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbih0cmFj
a3MubGVuZ3RoLCAwLAotICAgICAgICAnRXhwZWN0IGdldFVzZXJNZWRpYSB0byByZXR1cm4gYXQg
bGVhc3Qgb25lIGF1ZGlvIHRyYWNrJyk7Ci0KLSAgICAgIGNvbnN0IHRyYWNrID0gdHJhY2tzWzBd
OwotICAgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2ssIG1lZGlhU3RyZWFtKTsK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVhbSh7IGF1ZGlvOiB0cnVlIH0p
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJh
Y2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFj
a3MoKTsKKyAgICBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKIAot
ICAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgICBhc3NlcnRf
dGhyb3dzKCdJbnZhbGlkQWNjZXNzRXJyb3InLCAoKSA9PiBwYzIucmVtb3ZlVHJhY2soc2VuZGVy
KSk7Ci0gICAgfSk7CisgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Cisg
ICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZEFjY2Vzc0Vycm9yJywgKCkgPT4gcGMyLnJlbW92ZVRy
YWNrKHNlbmRlcikpOwogICB9LCAnYWRkVHJhY2sgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIG9uIGRp
ZmZlcmVudCBjb25uZWN0aW9uIHNob3VsZCB0aHJvdyBJbnZhbGlkQWNjZXNzRXJyb3InKQogCiAg
IC8qCiAgICAgNS4xLiAgcmVtb3ZlVHJhY2sKICAgICAgIDcuICBTZXQgc2VuZGVyLnRyYWNrIHRv
IG51bGwuCiAgICAqLwotICB0ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB0cmFj
ayA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKKyAgICBjb25zdCBzdHJlYW0g
PSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9
KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRy
YWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJh
Y2tzKCk7CiAgICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih0cmFjayk7
CiAgICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwogCkBAIC0xNDEsMjggKzEzMywy
MiBAQAogCiAgICAgcGMucmVtb3ZlVHJhY2soc2VuZGVyKTsKICAgICBhc3NlcnRfZXF1YWxzKHNl
bmRlci50cmFjaywgbnVsbCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5kaXJlY3Rp
b24sICdzZW5kcmVjdicsCi0gICAgICAnZGlyZWN0aW9uIHNob3VsZCBub3QgYmUgYWx0ZXJlZCcp
OwotCisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdyZWN2b25seScp
OwogICB9LCAnYWRkVHJhbnNjZWl2ZXIgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggdmFsaWQg
c2VuZGVyIHNob3VsZCBzZXQgc2VuZGVyLnRyYWNrIHRvIG51bGwnKTsKIAotICBwcm9taXNlX3Rl
c3QodCA9PiB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2Uo
KSk7CiAKLSAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBh
dWRpbzogdHJ1ZSB9KQotICAgIC50aGVuKG1lZGlhU3RyZWFtID0+IHsKLSAgICAgIGNvbnN0IHRy
YWNrcyA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpOwotICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhh
bih0cmFja3MubGVuZ3RoLCAwLAotICAgICAgICAnRXhwZWN0IGdldFVzZXJNZWRpYSB0byByZXR1
cm4gYXQgbGVhc3Qgb25lIGF1ZGlvIHRyYWNrJyk7Ci0KLSAgICAgIGNvbnN0IHRyYWNrID0gdHJh
Y2tzWzBdOwotICAgICAgY29uc3Qgc2VuZGVyID0gcGMuYWRkVHJhY2sodHJhY2ssIG1lZGlhU3Ry
ZWFtKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVhbSh7IGF1ZGlvOiB0
cnVlIH0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVh
Y2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5n
ZXRUcmFja3MoKTsKKyAgICBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFt
KTsKIAotICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNlbmRlci50cmFjaywgdHJhY2spOwogCi0gICAgICBwYy5yZW1vdmVUcmFjayhz
ZW5kZXIpOwotICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIG51bGwpOwotICAgIH0p
OworICAgIHBjLnJlbW92ZVRyYWNrKHNlbmRlcik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIu
dHJhY2ssIG51bGwpOwogICB9LCAnYWRkVHJhY2sgLSBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGgg
dmFsaWQgc2VuZGVyIHNob3VsZCBzZXQgc2VuZGVyLnRyYWNrIHRvIG51bGwnKTsKIAogICAvKgpA
QCAtMTcxLDMwICsxNTcsMzUgQEAKICAgICAgIDEwLiBJZiB0cmFuc2NlaXZlci5jdXJyZW50RGly
ZWN0aW9uIGlzIHNlbmRyZWN2IHNldCB0cmFuc2NlaXZlci5kaXJlY3Rpb24KICAgICAgICAgICB0
byByZWN2b25seS4KICAgICovCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0IHRyYWNrID0gZ2VuZXJhdGVNZWRp
YVN0cmVhbVRyYWNrKCdhdWRpbycpOwotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJh
bnNjZWl2ZXIodHJhY2spOworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3Qg
Y2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7CisgICAgY29u
c3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1
ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCku
Zm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3Ry
ZWFtLmdldFRyYWNrcygpOworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gY2FsbGVyLmFkZFRyYW5z
Y2VpdmVyKHRyYWNrKTsKICAgICBjb25zdCB7IHNlbmRlciB9ID0gdHJhbnNjZWl2ZXI7CiAKICAg
ICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgdHJhY2spOwogICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAnc2VuZHJlY3YnKTsKICAgICBhc3NlcnRfZXF1YWxzKHRy
YW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sIG51bGwpOwogCi0gICAgcmV0dXJuIHBjLmNyZWF0
ZU9mZmVyKCkKLSAgICAudGhlbihvZmZlciA9PgotICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcikKLSAgICAgIC50aGVuKCgpID0+IGdlbmVyYXRlQW5zd2VyKG9mZmVyKSkpCi0gICAg
LnRoZW4oYW5zd2VyID0+IHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcikpCi0gICAgLnRo
ZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0
aW9uLCAnc2VuZHJlY3YnKTsKLQotICAgICAgcGMucmVtb3ZlVHJhY2soc2VuZGVyKTsKLSAgICAg
IGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCBudWxsKTsKLSAgICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAncmVjdm9ubHknKTsKLSAgICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgJ3NlbmRyZWN2JywKLSAgICAgICAgJ0V4cGVj
dCBjdXJyZW50RGlyZWN0aW9uIHRvIG5vdCBjaGFuZ2UnKTsKLSAgICB9KTsKKyAgICBjb25zdCBv
ZmZlciA9IGF3YWl0IGNhbGxlci5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IGNhbGxlci5zZXRM
b2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2FpdCBjYWxsZWUuc2V0UmVtb3RlRGVzY3Jp
cHRpb24ob2ZmZXIpOworICAgIGNhbGxlZS5hZGRUcmFjayh0cmFjayk7CisgICAgY29uc3QgYW5z
d2VyID0gYXdhaXQgY2FsbGVlLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IGNhbGxlZS5zZXRM
b2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgY2FsbGVyLnNldFJlbW90ZURlc2Ny
aXB0aW9uKGFuc3dlcik7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGly
ZWN0aW9uLCAnc2VuZHJlY3YnKTsKKworICAgIGNhbGxlci5yZW1vdmVUcmFjayhzZW5kZXIpOwor
ICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3JlY3Zvbmx5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0
cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCAnc2VuZHJlY3YnLAorICAgICAgJ0V4cGVjdCBj
dXJyZW50RGlyZWN0aW9uIHRvIG5vdCBjaGFuZ2UnKTsKICAgfSwgJ0NhbGxpbmcgcmVtb3ZlVHJh
Y2sgd2l0aCBjdXJyZW50RGlyZWN0aW9uIHNlbmRyZWN2IHNob3VsZCBzZXQgZGlyZWN0aW9uIHRv
IHJlY3Zvbmx5Jyk7CiAKICAgLyoKQEAgLTIwMyw5ICsxOTQsMTIgQEAKICAgICAgIDExLiBJZiB0
cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIHNlbmRvbmx5IHNldCB0cmFuc2NlaXZlci5k
aXJlY3Rpb24KICAgICAgICAgICB0byBpbmFjdGl2ZS4KICAgICovCi0gIHByb21pc2VfdGVzdCh0
ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3QgdHJhY2sgPSBnZW5lcmF0ZU1lZGlhU3RyZWFt
VHJhY2soJ2F1ZGlvJyk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAg
ICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFj
a3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10g
PSBzdHJlYW0uZ2V0VHJhY2tzKCk7CiAgICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFu
c2NlaXZlcih0cmFjaywgeyBkaXJlY3Rpb246ICdzZW5kb25seScgfSk7CiAgICAgY29uc3QgeyBz
ZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwogCkBAIC0yMTMsMjAgKzIwNywxNyBAQAogICAgIGFzc2Vy
dF9lcXVhbHModHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAnc2VuZG9ubHknKTsKICAgICBhc3NlcnRf
ZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sIG51bGwpOwogCi0gICAgcmV0dXJu
IHBjLmNyZWF0ZU9mZmVyKCkKLSAgICAudGhlbihvZmZlciA9PgotICAgICAgcGMuc2V0TG9jYWxE
ZXNjcmlwdGlvbihvZmZlcikKLSAgICAgIC50aGVuKCgpID0+IGdlbmVyYXRlQW5zd2VyKG9mZmVy
KSkpCi0gICAgLnRoZW4oYW5zd2VyID0+IHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcikp
Ci0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJy
ZW50RGlyZWN0aW9uLCAnc2VuZG9ubHknKTsKLQotICAgICAgcGMucmVtb3ZlVHJhY2soc2VuZGVy
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCBudWxsKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHModHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAnaW5hY3RpdmUnKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHModHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgJ3NlbmRvbmx5JywKLSAgICAg
ICAgJ0V4cGVjdCBjdXJyZW50RGlyZWN0aW9uIHRvIG5vdCBjaGFuZ2UnKTsKLSAgICB9KTsKKyAg
ICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgZ2VuZXJh
dGVBbnN3ZXIob2ZmZXIpOworICAgIGF3YWl0IHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dl
cik7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCAnc2Vu
ZG9ubHknKTsKKworICAgIHBjLnJlbW92ZVRyYWNrKHNlbmRlcik7CisgICAgYXNzZXJ0X2VxdWFs
cyhzZW5kZXIudHJhY2ssIG51bGwpOworICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuZGly
ZWN0aW9uLCAnaW5hY3RpdmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJl
bnREaXJlY3Rpb24sICdzZW5kb25seScsCisgICAgICAnRXhwZWN0IGN1cnJlbnREaXJlY3Rpb24g
dG8gbm90IGNoYW5nZScpOwogICB9LCAnQ2FsbGluZyByZW1vdmVUcmFjayB3aXRoIGN1cnJlbnRE
aXJlY3Rpb24gc2VuZG9ubHkgc2hvdWxkIHNldCBkaXJlY3Rpb24gdG8gaW5hY3RpdmUnKTsKIAog
ICAvKgpAQCAtMjM1LDI5ICsyMjYsMzQgQEAKICAgICAgIDkuICBJZiB0cmFuc2NlaXZlci5jdXJy
ZW50RGlyZWN0aW9uIGlzIHJlY3Zvbmx5IG9yIGluYWN0aXZlLAogICAgICAgICAgIHRoZW4gYWJv
cnQgdGhlc2Ugc3RlcHMuCiAgICAqLwotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgY29uc3Qg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB0cmFjayA9IGdlbmVyYXRl
TWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKLSAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFk
ZFRyYW5zY2VpdmVyKHRyYWNrLCB7IGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyB9KTsKKyAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNv
bnN0IGNhbGxlZSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gY2FsbGVlLmNsb3NlKCkpOworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3Rv
cCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVhbS5nZXRUcmFja3MoKTsKKyAgICBjb25z
dCB0cmFuc2NlaXZlciA9IGNhbGxlci5hZGRUcmFuc2NlaXZlcih0cmFjaywgeyBkaXJlY3Rpb246
ICdyZWN2b25seScgfSk7CiAgICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwogCiAg
ICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrKTsKICAgICBhc3NlcnRfZXF1YWxz
KHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3JlY3Zvbmx5Jyk7CiAgICAgYXNzZXJ0X2VxdWFscyh0
cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCBudWxsKTsKIAotICAgIHJldHVybiBwYy5jcmVh
dGVPZmZlcigpCi0gICAgLnRoZW4ob2ZmZXIgPT4KLSAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRp
b24ob2ZmZXIpCi0gICAgICAudGhlbigoKSA9PiBnZW5lcmF0ZUFuc3dlcihvZmZlcikpKQotICAg
IC50aGVuKGFuc3dlciA9PiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpKQotICAgIC50
aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuY3VycmVudERpcmVj
dGlvbiwgJ3JlY3Zvbmx5Jyk7Ci0KLSAgICAgIHBjLnJlbW92ZVRyYWNrKHNlbmRlcik7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgbnVsbCk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3JlY3Zvbmx5Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sICdyZWN2b25seScpOwotICAgIH0pOworICAg
IGNvbnN0IG9mZmVyID0gYXdhaXQgY2FsbGVyLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgY2Fs
bGVyLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGF3YWl0IGNhbGxlZS5zZXRSZW1v
dGVEZXNjcmlwdGlvbihvZmZlcik7CisgICAgY2FsbGVlLmFkZFRyYWNrKHRyYWNrKTsKKyAgICBj
b25zdCBhbnN3ZXIgPSBhd2FpdCBjYWxsZWUuY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgY2Fs
bGVlLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBhd2FpdCBjYWxsZXIuc2V0UmVt
b3RlRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmN1
cnJlbnREaXJlY3Rpb24sICdyZWN2b25seScpOworCisgICAgY2FsbGVyLnJlbW92ZVRyYWNrKHNl
bmRlcik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIG51bGwpOworICAgIGFzc2Vy
dF9lcXVhbHModHJhbnNjZWl2ZXIuZGlyZWN0aW9uLCAncmVjdm9ubHknKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sICdyZWN2b25seScpOwogICB9LCAn
Q2FsbGluZyByZW1vdmVUcmFjayB3aXRoIGN1cnJlbnREaXJlY3Rpb24gcmVjdm9ubHkgc2hvdWxk
IG5vdCBjaGFuZ2UgZGlyZWN0aW9uJyk7CiAKICAgLyoKQEAgLTI2Niw5ICsyNjIsMTIgQEAKICAg
ICAgIDkuICBJZiB0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIHJlY3Zvbmx5IG9yIGlu
YWN0aXZlLAogICAgICAgICAgIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAqLwotICBwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBw
YyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0IHRyYWNrID0gZ2VuZXJhdGVN
ZWRpYVN0cmVhbVRyYWNrKCdhdWRpbycpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xv
c2UoKSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJl
YW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25z
dCBbdHJhY2tdID0gc3RyZWFtLmdldFRyYWNrcygpOwogICAgIGNvbnN0IHRyYW5zY2VpdmVyID0g
cGMuYWRkVHJhbnNjZWl2ZXIodHJhY2ssIHsgZGlyZWN0aW9uOiAnaW5hY3RpdmUnIH0pOwogICAg
IGNvbnN0IHsgc2VuZGVyIH0gPSB0cmFuc2NlaXZlcjsKIApAQCAtMjc2LDE5ICsyNzUsMTYgQEAK
ICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ2luYWN0aXZlJyk7CiAg
ICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCBudWxsKTsKIAot
ICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcigpCi0gICAgLnRoZW4ob2ZmZXIgPT4KLSAgICAgIHBj
LnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpCi0gICAgICAudGhlbigoKSA9PiBnZW5lcmF0ZUFu
c3dlcihvZmZlcikpKQotICAgIC50aGVuKGFuc3dlciA9PiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlv
bihhbnN3ZXIpKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHModHJhbnNj
ZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgJ2luYWN0aXZlJyk7Ci0KLSAgICAgIHBjLnJlbW92ZVRy
YWNrKHNlbmRlcik7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgbnVsbCk7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ2luYWN0aXZlJyk7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sICdpbmFjdGl2
ZScpOwotICAgIH0pOworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsK
KyAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBjb25zdCBhbnN3
ZXIgPSBhd2FpdCBnZW5lcmF0ZUFuc3dlcihvZmZlcik7CisgICAgYXdhaXQgcGMuc2V0UmVtb3Rl
RGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJl
bnREaXJlY3Rpb24sICdpbmFjdGl2ZScpOworCisgICAgcGMucmVtb3ZlVHJhY2soc2VuZGVyKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFs
cyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdpbmFjdGl2ZScpOworICAgIGFzc2VydF9lcXVhbHMo
dHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiwgJ2luYWN0aXZlJyk7CiAgIH0sICdDYWxsaW5n
IHJlbW92ZVRyYWNrIHdpdGggY3VycmVudERpcmVjdGlvbiBpbmFjdGl2ZSBzaG91bGQgbm90IGNo
YW5nZSBkaXJlY3Rpb24nKTsKIAogICAvKgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0RGVz
Y3JpcHRpb24tdHJhbnNjZWl2ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0RGVzY3Jp
cHRpb24tdHJhbnNjZWl2ZXItZXhwZWN0ZWQudHh0CmluZGV4IDdiMGQxM2Q5MzRkZTYzZTA2ZDE2
ODRhMTdhMmQ3ZTVlNGE5MThlMjUuLjZiODhhZTZiZGM5NjhhYzE2NjA4MGIzNmVlODRlNzFkNjE5
M2JlZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldERlc2NyaXB0aW9uLXRyYW5zY2VpdmVy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXREZXNjcmlwdGlvbi10cmFuc2NlaXZl
ci1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAKIFBBU1Mgc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcikgd2l0aCBtPSBzZWN0aW9uIHNob3VsZCBhc3NpZ24gbWlkIHRvIGNvcnJlc3BvbmRp
bmcgdHJhbnNjZWl2ZXIgCi1GQUlMIHNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKSB3aXRoIG09
IHNlY3Rpb24gYW5kIG5vIGV4aXN0aW5nIHRyYW5zY2VpdmVyIHNob3VsZCBjcmVhdGUgY29ycmVz
cG9uZGluZyB0cmFuc2NlaXZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHBjMi5zZXRSZW1vdGVEZXNjcnB0aW9uIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3BjMi5zZXRSZW1vdGVEZXNjcnB0aW9uKG9mZmVyKScsICdwYzIu
c2V0UmVtb3RlRGVzY3JwdGlvbicgaXMgdW5kZWZpbmVkKSIKK1BBU1Mgc2V0UmVtb3RlRGVzY3Jp
cHRpb24ob2ZmZXIpIHdpdGggbT0gc2VjdGlvbiBhbmQgbm8gZXhpc3RpbmcgdHJhbnNjZWl2ZXIg
c2hvdWxkIGNyZWF0ZSBjb3JyZXNwb25kaW5nIHRyYW5zY2VpdmVyIAogRkFJTCBzZXRMb2NhbERl
c2NyaXB0aW9uKHJvbGxiYWNrKSBzaG91bGQgdW5zZXQgdHJhbnNjZWl2ZXIubWlkIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkludmFsaWRTdGF0
ZUVycm9yOiBEZXNjcmlwdGlvbiB0eXBlIGluY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgc2lnbmFs
aW5nIHN0YXRlIgogRkFJTCBzZXRMb2NhbERlc2NyaXB0aW9uKHJvbGxiYWNrKSBzaG91bGQgb25s
eSB1bnNldCB0cmFuc2NlaXZlciBtaWRzIGFzc29jaWF0ZWQgd2l0aCBjdXJyZW50IHJvdW5kIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkludmFs
aWRTdGF0ZUVycm9yOiBEZXNjcmlwdGlvbiB0eXBlIGluY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQg
c2lnbmFsaW5nIHN0YXRlIgogRkFJTCBzZXRSZW1vdGVEZXNjcmlwdGlvbihyb2xsYmFjaykgc2hv
dWxkIHJlbW92ZSBuZXdseSBjcmVhdGVkIHRyYW5zY2VpdmVyIGZyb20gdHJhbnNjZWl2ZXIgbGlz
dCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJJ
bnZhbGlkU3RhdGVFcnJvcjogRGVzY3JpcHRpb24gdHlwZSBpbmNvbXBhdGlibGUgd2l0aCBjdXJy
ZW50IHNpZ25hbGluZyBzdGF0ZSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldERlc2NyaXB0
aW9uLXRyYW5zY2VpdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXREZXNjcmlwdGlvbi10cmFuc2Nl
aXZlci5odG1sCmluZGV4IGVkNDFkNjYzMTllMTRhNTQyODdlZDZlYzM3MjZlY2I2NjdlZjhkODQu
LjVmYzk1N2RmOGZiOGQ5MzM4NWZiMDliMzdiMzg4Mzk5ZGRlZjY0ZDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLXNldERlc2NyaXB0aW9uLXRyYW5zY2VpdmVyLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rp
b24tc2V0RGVzY3JpcHRpb24tdHJhbnNjZWl2ZXIuaHRtbApAQCAtNjQsOCArNjQsOSBAQAogICAg
ICAgICAyLiAgU2V0IHRyYW5zY2VpdmVyJ3MgbWlkIHZhbHVlIHRvIHRoZSBtaWQgb2YgdGhlIGNv
cnJlc3BvbmRpbmcgbWVkaWEKICAgICAgICAgICAgIGRlc2NyaXB0aW9uLgogICAgKi8KLSAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9z
ZSgpKTsKICAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycp
OwogICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIubWlkLCBudWxsKTsKIApAQCAtOTcsMTAg
Kzk4LDEzIEBACiAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyIGJlIHRoZSByZXN1bHQuCiAgICAg
ICAgIDMuICBTZXQgdHJhbnNjZWl2ZXIncyBtaWQgdmFsdWUgdG8gdGhlIG1pZCBvZiB0aGUgY29y
cmVzcG9uZGluZyBtZWRpYSBkZXNjcmlwdGlvbi4KICAgICovCi0gIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKICAgICBj
b25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gcGMyLmNsb3NlKCkpOworCiAgICAgY29uc3QgdHJhbnNjZWl2ZXIxID0gcGMxLmFkZFRy
YW5zY2VpdmVyKCdhdWRpbycpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGMxLmdldFRyYW5z
Y2VpdmVycygpLCBbdHJhbnNjZWl2ZXIxXSk7CiAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwYzIu
Z2V0VHJhbnNjZWl2ZXJzKCksIFtdKTsKQEAgLTEwOSw3ICsxMTMsNyBAQAogICAgIC50aGVuKG9m
ZmVyID0+IHsKICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgIHBjMS5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKSwKLSAgICAgICAgcGMyLnNldFJlbW90ZURlc2NycHRpb24ob2Zm
ZXIpCisgICAgICAgIHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikKICAgICAgIF0pCiAg
ICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgIGNvbnN0IHRyYW5zY2VpdmVycyA9IHBjMi5nZXRU
cmFuc2NlaXZlcnMoKTsKQEAgLTEzNyw4ICsxNDEsOSBAQAogICAgICAgICAgICAgdGhlIFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiB0aGF0IGlzIGJlaW5nIHJvbGxlZCBiYWNrLCBzZXQgdGhlIG1pZCB2
YWx1ZQogICAgICAgICAgICAgb2YgdGhhdCB0cmFuc2NlaXZlciB0byBudWxsLCBhcyBkZXNjcmli
ZWQgYnkgW0pTRVBdIChzZWN0aW9uIDQuMS44LjIuKS4KICAgICovCi0gIHByb21pc2VfdGVzdCgo
KSA9PiB7CisgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAg
Y29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKICAgICBhc3Nl
cnRfZXF1YWxzKHRyYW5zY2VpdmVyLm1pZCwgbnVsbCk7CiAKQEAgLTE1Nyw4ICsxNjIsOSBAQAog
ICAgIH0pOwogICB9LCAnc2V0TG9jYWxEZXNjcmlwdGlvbihyb2xsYmFjaykgc2hvdWxkIHVuc2V0
IHRyYW5zY2VpdmVyLm1pZCcpOwogCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7CisgIHByb21pc2Vf
dGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgY29uc3QgdHJhbnNjZWl2ZXIx
ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CiAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2Nl
aXZlcjEubWlkLCBudWxsKTsKIApAQCAtMjAyLDEwICsyMDgsMTMgQEAKICAgICAgICAgICAgIGFk
ZFRyYWNrLCByZW1vdmUgdGhhdCB0cmFuc2NlaXZlciBmcm9tIGNvbm5lY3Rpb24ncyBzZXQgb2Yg
dHJhbnNjZWl2ZXJzLAogICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGJ5IFtKU0VQXSAoc2VjdGlv
biA0LjEuOC4yLikuCiAgICAqLwotICBwcm9taXNlX3Rlc3QoKCkgPT4geworICBwcm9taXNlX3Rl
c3QodCA9PiB7CiAgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgp
KTsKKwogICAgIHBjMS5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKIAogICAgIHJldHVybiBwYzEu
Y3JlYXRlT2ZmZXIoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlv
bi1hbnN3ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1h
bnN3ZXItZXhwZWN0ZWQudHh0CmluZGV4IGVmMmZlOTBkNWI0ZWFkNGRhYzlmYTVhMWM4M2I4OTcx
ZTJkOTBhOWUuLmIxOWNjMGY3MmViNDQwNjIyMTg5NTdkY2I2MjYxN2IzMjFiOGU1ODkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tYW5zd2VyLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLWFuc3dlci1leHBlY3RlZC50
eHQKQEAgLTQsNSArNCw0IEBAIEZBSUwgc2V0TG9jYWxEZXNjcmlwdGlvbigpIHdpdGggdHlwZSBh
bnN3ZXIgYW5kIG51bGwgc2RwIHNob3VsZCB1c2UgbGFzdEFuc3dlciBnCiBGQUlMIHNldExvY2Fs
RGVzY3JpcHRpb24oKSB3aXRoIGFuc3dlciBub3QgY3JlYXRlZCBieSBvd24gY3JlYXRlQW5zd2Vy
KCkgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRNb2RpZmljYXRpb25FcnJvciBhc3NlcnRfdW5y
ZWFjaGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFjaGFi
bGUgY29kZQogUEFTUyBDYWxsaW5nIHNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKSBmcm9tIHN0
YWJsZSBzdGF0ZSBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZFN0YXRlRXJyb3IgCiBQQVNTIENh
bGxpbmcgc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpIGZyb20gaGF2ZS1sb2NhbC1vZmZlciBz
dGF0ZSBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZFN0YXRlRXJyb3IgCi1QQVNTIFRlc3Qgb25z
aWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBmb3Igc2V0TG9jYWxEZXNjcmlwdGlvbigpIHdpdGgg
dmFsaWQgYW5zd2VyIHNob3VsZCBzdWNjZWVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1z
ZXRMb2NhbERlc2NyaXB0aW9uLWFuc3dlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNj
cmlwdGlvbi1hbnN3ZXIuaHRtbAppbmRleCA5OWYwZDQ4ZDIwYTgxNjhkZjg3NTg1ODJkOTYwZDdj
MGY1ZGM5ZGI0Li40YTUwNDU2ZjIxNjEzYTM5OTQ2YzU0Nzc0Mzc3YWVmMTc2YzA0NDg2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLWFuc3dlci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tYW5zd2VyLmh0bWwKQEAgLTEzLDggKzEz
LDcgQEAKICAgLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZnJv
bSBSVENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanM6CiAgIC8vICAgZ2VuZXJhdGVPZmZlcgogICAv
LyAgIGdlbmVyYXRlQW5zd2VyCi0gIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMKLSAg
Ly8gICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudAorICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nf
c2ltaWxhcgogCiAgIC8qCiAgICAgNC4zLjIuICBJbnRlcmZhY2UgRGVmaW5pdGlvbgpAQCAtNjEs
NyArNjAsMTAgQEAKICAgICovCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2ZW50KHQs
IHBjLCBbJ2hhdmUtcmVtb3RlLW9mZmVyJywgJ3N0YWJsZSddKTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgY29uc3Qgc3RhdGVzID0gW107CisgICAgcGMuYWRk
RXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3RhdGVjaGFuZ2UnLCAoKSA9PiBzdGF0ZXMucHVzaChw
Yy5zaWduYWxpbmdTdGF0ZSkpOwogCiAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJU
b1JlY2VpdmVWaWRlbzogdHJ1ZSB9KQogICAgIC50aGVuKG9mZmVyID0+CkBAIC03MSwxNCArNzMs
MTYgQEAKICAgICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpCiAgICAgICAgIC50
aGVuKCgpID0+IHsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnNpZ25hbGluZ1N0YXRlLCAn
c3RhYmxlJyk7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMubG9jYWxE
ZXNjcmlwdGlvbiwgYW5zd2VyKTsKLSAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFs
cyhwYy5yZW1vdGVEZXNjcmlwdGlvbiwgb2ZmZXIpOworICAgICAgICAgIGFzc2VydF9zZXNzaW9u
X2Rlc2Nfc2ltaWxhcihwYy5sb2NhbERlc2NyaXB0aW9uLCBhbnN3ZXIpOworICAgICAgICAgIGFz
c2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxhcihwYy5yZW1vdGVEZXNjcmlwdGlvbiwgb2ZmZXIpOwog
Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMuY3VycmVudExvY2FsRGVz
Y3JpcHRpb24sIGFuc3dlcik7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMo
cGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLCBvZmZlcik7CisgICAgICAgICAgYXNzZXJ0X3Nl
c3Npb25fZGVzY19zaW1pbGFyKHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLCBhbnN3ZXIpOwor
ICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxhcihwYy5jdXJyZW50UmVtb3RlRGVz
Y3JpcHRpb24sIG9mZmVyKTsKIAogICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMucGVuZGluZ0xv
Y2FsRGVzY3JpcHRpb24sIG51bGwpOwogICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMucGVuZGlu
Z1JlbW90ZURlc2NyaXB0aW9uLCBudWxsKTsKKworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoc3RhdGVzLCBbJ2hhdmUtcmVtb3RlLW9mZmVyJywgJ3N0YWJsZSddKTsKICAgICAgICAgfSkp
KTsKICAgfSwgJ3NldExvY2FsRGVzY3JpcHRpb24oKSB3aXRoIHZhbGlkIGFuc3dlciBzaG91bGQg
c3VjY2VlZCcpOwogCkBAIC05MSw2ICs5NSw4IEBACiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVy
VG9SZWNlaXZlVmlkZW86IHRydWUgfSkKICAgICAudGhlbihvZmZlciA9PgogICAgICAgcGMuc2V0
UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpCkBAIC05OSwxMSArMTA1LDExIEBACiAgICAgICAgIHBj
LnNldExvY2FsRGVzY3JpcHRpb24oeyB0eXBlOiAnYW5zd2VyJyB9KQogICAgICAgICAudGhlbigo
KSA9PiB7CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5zaWduYWxpbmdTdGF0ZSwgJ3N0YWJs
ZScpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmxvY2FsRGVzY3Jp
cHRpb24sIGFuc3dlcik7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMu
cmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNj
X3NpbWlsYXIocGMubG9jYWxEZXNjcmlwdGlvbiwgYW5zd2VyKTsKKyAgICAgICAgICBhc3NlcnRf
c2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyKTsKIAotICAg
ICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0
aW9uLCBhbnN3ZXIpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmN1
cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiwgb2ZmZXIpOworICAgICAgICAgIGFzc2VydF9zZXNzaW9u
X2Rlc2Nfc2ltaWxhcihwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiwgYW5zd2VyKTsKKyAgICAg
ICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMuY3VycmVudFJlbW90ZURlc2NyaXB0
aW9uLCBvZmZlcik7CiAKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uLCBudWxsKTsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnBlbmRpbmdSZW1v
dGVEZXNjcmlwdGlvbiwgbnVsbCk7CkBAIC0xMjAsNiArMTI2LDggQEAKICAgcHJvbWlzZV90ZXN0
KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLmNyZWF0ZU9m
ZmVyKHsgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZSB9KQogICAgIC50aGVuKG9mZmVyID0+CiAg
ICAgICBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikKQEAgLTE0MiwxNiArMTUwLDE5IEBA
CiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJl
dHVybiBwYy5jcmVhdGVPZmZlcigpCiAgICAgLnRoZW4ob2ZmZXIgPT4KICAgICAgIHByb21pc2Vf
cmVqZWN0cyh0LCAnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAgICBwYy5zZXRMb2NhbERlc2Ny
aXB0aW9uKHsgdHlwZTogJ2Fuc3dlcicsIHNkcDogb2ZmZXIuc2RwIH0pKSk7Ci0KICAgfSwgJ0Nh
bGxpbmcgc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpIGZyb20gc3RhYmxlIHN0YXRlIHNob3Vs
ZCByZWplY3Qgd2l0aCBJbnZhbGlkU3RhdGVFcnJvcicpOwogCiAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcigp
CiAgICAgLnRoZW4ob2ZmZXIgPT4KICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGNk
MTgyODBiZjA5MWY1OGM3MjRmMTBkOWQxNmY4MDkzYTY5OTNiNjIuLmM2Y2ZjZWRmYWZiNjFiOGMw
NzkxZDY0ODUxMzgzNjY5YTYyNTVkM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2Fs
RGVzY3JpcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3Jp
cHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNSBAQAogCiBQQVNTIENhbGxpbmcgY3JlYXRl
T2ZmZXIoKSBhbmQgc2V0TG9jYWxEZXNjcmlwdGlvbigpIGFnYWluIGFmdGVyIG9uZSByb3VuZCBv
ZiBsb2NhbC1vZmZlci9yZW1vdGUtYW5zd2VyIHNob3VsZCBzdWNjZWVkIAogUEFTUyBTd2l0Y2hp
bmcgcm9sZSBmcm9tIGFuc3dlcmVyIHRvIG9mZmVyZXIgYWZ0ZXIgZ29pbmcgYmFjayB0byBzdGFi
bGUgc3RhdGUgc2hvdWxkIHN1Y2NlZWQgCi1QQVNTIFRlc3Qgb25zaWduYWxpbmdzdGF0ZWNoYW5n
ZSBldmVudCBmb3IgQ2FsbGluZyBjcmVhdGVPZmZlcigpIGFuZCBzZXRMb2NhbERlc2NyaXB0aW9u
KCkgYWdhaW4gYWZ0ZXIgb25lIHJvdW5kIG9mIGxvY2FsLW9mZmVyL3JlbW90ZS1hbnN3ZXIgc2hv
dWxkIHN1Y2NlZWQgCi1QQVNTIFRlc3Qgb25zaWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBmb3Ig
U3dpdGNoaW5nIHJvbGUgZnJvbSBhbnN3ZXJlciB0byBvZmZlcmVyIGFmdGVyIGdvaW5nIGJhY2sg
dG8gc3RhYmxlIHN0YXRlIHNob3VsZCBzdWNjZWVkIAorUEFTUyBvbnNpZ25hbGluZ3N0YXRlY2hh
bmdlIGZpcmVzIGJlZm9yZSBzZXRMb2NhbERlc2NyaXB0aW9uIHJlc29sdmVzIAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLW9mZmVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0CmluZGV4
IGE4ZTMyNzBhNzliOTNlY2FmMjE0YmY1MTc2Y2FmNmNhMDRjZDI1YTcuLmZkZjk3OWE4YTAwYThk
MmE4MmRjYTkxYjFkNzI2NTJjNWUxNTZjNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExv
Y2FsRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExv
Y2FsRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsNyBAQAogCiBQQVNT
IHNldExvY2FsRGVzY3JpcHRpb24gd2l0aCB2YWxpZCBvZmZlciBzaG91bGQgc3VjY2VlZCAKIEZB
SUwgc2V0TG9jYWxEZXNjcmlwdGlvbiB3aXRoIHR5cGUgb2ZmZXIgYW5kIG51bGwgc2RwIHNob3Vs
ZCB1c2UgbGFzdE9mZmVyIGdlbmVyYXRlZCBmcm9tIGNyZWF0ZU9mZmVyIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk9wZXJhdGlvbkVycm9yOiBF
eHBlY3QgbGluZTogdj0iCi1GQUlMIHNldExvY2FsRGVzY3JpcHRpb24oKSB3aXRoIG9mZmVyIG5v
dCBjcmVhdGVkIGJ5IG93biBjcmVhdGVPZmZlcigpIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlk
TW9kaWZpY2F0aW9uRXJyb3IgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsg
dGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk9wZXJhdGlvbkVycm9yOiBGYWlsZWQgdG8gc2V0IGxv
Y2FsIG9mZmVyIHNkcDogRmFpbGVkIHRvIHB1c2ggZG93biB0cmFuc3BvcnQgZGVzY3JpcHRpb24g
Zm9yIGRhdGE6IExvY2FsIGZpbmdlcnByaW50IGRvZXMgbm90IG1hdGNoIGlkZW50aXR5LiBFeHBl
Y3RlZDogc2hhLTI1NiAwRDpFODo2RDoxMzo0NzpEMzowRDo0MDo0MzoxNzo4NDowQjozNDo1NTox
QzoxNTo5Nzo0QTo0NjpGRTo4QTpGMjo2RTozQjowQTpBMjpDQzo2QTo3MDpCQzoxNDoxRCBHb3Q6
IHNoYS0yNTYgM0Q6RjI6NEU6QzQ6QzA6QUM6QTE6MDQ6QzU6RDM6M0E6MTk6QzQ6OTI6OEY6OTg6
QUE6RTA6NTI6OUU6MDU6ODQ6MjA6MTk6NzE6NzY6RUM6QzQ6MDI6NDU6Mjc6MjEiIHRoYXQgaXMg
bm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRNb2RpZmljYXRpb25FcnJvcjogcHJvcGVydHkgImNv
ZGUiIGlzIGVxdWFsIHRvIDAsIGV4cGVjdGVkIDEzCitGQUlMIHNldExvY2FsRGVzY3JpcHRpb24o
KSB3aXRoIG9mZmVyIG5vdCBjcmVhdGVkIGJ5IG93biBjcmVhdGVPZmZlcigpIHNob3VsZCByZWpl
Y3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk9wZXJhdGlvbkVycm9yOiBG
YWlsZWQgdG8gc2V0IGxvY2FsIG9mZmVyIHNkcDogRmFpbGVkIHRvIGFwcGx5IHRoZSBkZXNjcmlw
dGlvbiBmb3IgMDogTG9jYWwgZmluZ2VycHJpbnQgZG9lcyBub3QgbWF0Y2ggaWRlbnRpdHkuIEV4
cGVjdGVkOiBzaGEtMjU2IEFEOjZCOkNBOjA1OjEyOkU1OjQ3OjcxOjQxOjY4OkVEOjUyOjlCOjg1
OkYyOjBBOkI5OkJFOkZFOjI4OkJFOkZGOjM4OjE3OkQ2OjRBOjZBOjdGOkExOkYyOjJFOkFDIEdv
dDogc2hhLTI1NiAzRjpBODowOTpBNjpBODpBRDpBOTpGODpBODo1ODowQTo3OTowQzowNDpCNDpB
QTpFMTo1Njo5RToyNTowNzpDODo4NDozNDo5QzpBNTo3ODpDMDpFODoyMjo4NDpERiIgdGhhdCBp
cyBub3QgYSBET01FeGNlcHRpb24gSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOiBwcm9wZXJ0eSAi
Y29kZSIgaXMgZXF1YWwgdG8gMCwgZXhwZWN0ZWQgMTMKIEZBSUwgU2V0IGNyZWF0ZWQgb2ZmZXIg
b3RoZXIgdGhhbiBsYXN0IG9mZmVyIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0
aW9uRXJyb3IgYXNzZXJ0X2ZhbHNlOiBFeHBlY3QgYm90aCBzZXNzaW9uIGRlc2NyaXB0aW9ucyB0
byBoYXZlIGRpZmZlcmVudCBjb3VudCBvZiBtZWRpYSBsaW5lcyBleHBlY3RlZCBmYWxzZSBnb3Qg
dHJ1ZQogRkFJTCBDcmVhdGluZyBhbmQgc2V0dGluZyBvZmZlciBtdWx0aXBsZSB0aW1lcyBzaG91
bGQgc3VjY2VlZCBhc3NlcnRfbm90X2VxdWFsczogRXhwZWN0IHNlc3Npb24gZGVzY3JpcHRpb24g
dG8gYmUgZGVmaW5lZCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSB1bmRlZmluZWQKLVBBU1MgVGVzdCBv
bnNpZ25hbGluZ3N0YXRlY2hhbmdlIGV2ZW50IGZvciBzZXRMb2NhbERlc2NyaXB0aW9uIHdpdGgg
dmFsaWQgb2ZmZXIgc2hvdWxkIHN1Y2NlZWQgCi1QQVNTIFRlc3Qgb25zaWduYWxpbmdzdGF0ZWNo
YW5nZSBldmVudCBmb3IgQ3JlYXRpbmcgYW5kIHNldHRpbmcgb2ZmZXIgbXVsdGlwbGUgdGltZXMg
c2hvdWxkIHN1Y2NlZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3Jp
cHRpb24tb2ZmZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tb2ZmZXIu
aHRtbAppbmRleCA3NmRmNjNhOGE4MDUwMDAyODJiZjkwMDQ2M2RmMjRkY2VkNmQ4ZDdiLi45NTAy
ZjI4M2Y1NTA4MTMwMGY4MGEwZjA2NjUwZjI4ZWI0NmNlNTA2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVj
dGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLW9mZmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0
TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1sCkBAIC0xMiw5ICsxMiw4IEBACiAKICAgLy8gVGhl
IGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZnJvbSBSVENQZWVyQ29ubmVj
dGlvbi1oZWxwZXIuanM6CiAgIC8vICAgZ2VuZXJhdGVPZmZlcgotICAvLyAgIGFzc2VydF9zZXNz
aW9uX2Rlc2Nfbm90X2VxdWFscwotICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzCi0g
IC8vICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQKKyAgLy8gICBhc3NlcnRfc2Vzc2lvbl9kZXNj
X25vdF9zaW1pbGFyCisgIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyCiAKICAgLyoK
ICAgICA0LjMuMi4gIEludGVyZmFjZSBEZWZpbml0aW9uCkBAIC01OCwxNiArNTcsMjEgQEAKICAg
ICovCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOwotICAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBjLCBbJ2hhdmUtbG9j
YWwtb2ZmZXInXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAg
IGNvbnN0IHN0YXRlcyA9IFtdOworICAgIHBjLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25hbGluZ3N0
YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVzLnB1c2gocGMuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAg
IHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUgfSkKICAg
ICAudGhlbihvZmZlciA9PgogICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikKICAg
ICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5zaWduYWxpbmdTdGF0
ZSwgJ2hhdmUtbG9jYWwtb2ZmZXInKTsKLSAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVh
bHMocGMubG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOwotICAgICAgICBhc3NlcnRfc2Vzc2lvbl9k
ZXNjX2VxdWFscyhwYy5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOworICAgICAgICBh
c3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMubG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOwor
ICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucGVuZGluZ0xvY2FsRGVzY3Jp
cHRpb24sIG9mZmVyKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5jdXJyZW50TG9jYWxEZXNj
cmlwdGlvbiwgbnVsbCk7CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzdGF0ZXMsIFsn
aGF2ZS1sb2NhbC1vZmZlciddKTsKICAgICAgIH0pKTsKICAgfSwgJ3NldExvY2FsRGVzY3JpcHRp
b24gd2l0aCB2YWxpZCBvZmZlciBzaG91bGQgc3VjY2VlZCcpOwogCkBAIC03OSwxMyArODMsMTQg
QEAKICAgICovCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAg
ICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSB9KQog
ICAgIC50aGVuKG9mZmVyID0+CiAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKHsgdHlwZTog
J29mZmVyJyB9KQogICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKHBj
LnNpZ25hbGluZ1N0YXRlLCAnaGF2ZS1sb2NhbC1vZmZlcicpOwotICAgICAgICBhc3NlcnRfc2Vz
c2lvbl9kZXNjX2VxdWFscyhwYy5sb2NhbERlc2NyaXB0aW9uLCBvZmZlcik7Ci0gICAgICAgIGFz
c2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uLCBvZmZl
cik7CisgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxhcihwYy5sb2NhbERlc2NyaXB0
aW9uLCBvZmZlcik7CisgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxhcihwYy5wZW5k
aW5nTG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLmN1
cnJlbnRMb2NhbERlc2NyaXB0aW9uLCBudWxsKTsKICAgICAgIH0pKTsKICAgfSwgJ3NldExvY2Fs
RGVzY3JpcHRpb24gd2l0aCB0eXBlIG9mZmVyIGFuZCBudWxsIHNkcCBzaG91bGQgdXNlIGxhc3RP
ZmZlciBnZW5lcmF0ZWQgZnJvbSBjcmVhdGVPZmZlcicpOwpAQCAtOTksOCArMTA0LDExIEBACiAg
ICAqLwogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNv
bnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYzIuY2xvc2UoKSk7CisKICAgICByZXR1cm4gZ2VuZXJhdGVPZmZlcih7IHBjLCBkYXRh
OiB0cnVlIH0pCiAgICAgLnRoZW4ob2ZmZXIgPT4KICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCAn
SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKQEAgLTExMywxMSArMTIxLDEyIEBACiAgICAgLy8g
bGFzdCBvZmZlciwgc2V0TG9jYWxEZXNjcmlwdGlvbiB3b3VsZCByZWplY3Qgd2hlbiBzZXR0aW5n
CiAgICAgLy8gd2l0aCB0aGUgZmlyc3Qgb2ZmZXIKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAg
cmV0dXJuIHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSB9KQogICAg
IC50aGVuKG9mZmVyMSA9PgogICAgICAgcGMuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2ZVZp
ZGVvOiB0cnVlIH0pCiAgICAgICAudGhlbihvZmZlcjIgPT4gewotICAgICAgICBhc3NlcnRfc2Vz
c2lvbl9kZXNjX25vdF9lcXVhbHMob2ZmZXIxLCBvZmZlcjIpOworICAgICAgICBhc3NlcnRfc2Vz
c2lvbl9kZXNjX25vdF9zaW1pbGFyKG9mZmVyMSwgb2ZmZXIyKTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKICAgICAgICAgICBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyMSkpOwogICAgICAgfSkpOwpAQCAtMTI1LDkgKzEz
NCwxMCBAQAogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAK
LSAgICAvLyBPbmx5IG9uZSBzdGF0ZSBjaGFuZ2UgZXZlbnQgc2hvdWxkIGJlIGZpcmVkCi0gICAg
dGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQodCwgcGMsIFsnaGF2ZS1sb2NhbC1vZmZlciddKTsKKyAg
ICBjb25zdCBzdGF0ZXMgPSBbXTsKKyAgICBwYy5hZGRFdmVudExpc3RlbmVyKCdzaWduYWxpbmdz
dGF0ZWNoYW5nZScsICgpID0+IHN0YXRlcy5wdXNoKHBjLnNpZ25hbGluZ1N0YXRlKSk7CiAKICAg
ICByZXR1cm4gcGMuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlIH0pCiAg
ICAgLnRoZW4ob2ZmZXIxID0+CkBAIC0xMzcsMTEgKzE0NywxMyBAQAogICAgICAgICAudGhlbihv
ZmZlcjIgPT4KICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyMikKICAgICAg
ICAgICAudGhlbihvZmZlcjIgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19u
b3RfZXF1YWxzKG9mZmVyMSwgb2ZmZXIyKTsKKyAgICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rl
c2Nfbm90X3NpbWlsYXIob2ZmZXIxLCBvZmZlcjIpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwYy5zaWduYWxpbmdTdGF0ZSwgJ2hhdmUtbG9jYWwtb2ZmZXInKTsKLSAgICAgICAgICAgIGFz
c2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmxvY2FsRGVzY3JpcHRpb24sIG9mZmVyMik7Ci0g
ICAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5wZW5kaW5nTG9jYWxEZXNj
cmlwdGlvbiwgb2ZmZXIyKTsKKyAgICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxh
cihwYy5sb2NhbERlc2NyaXB0aW9uLCBvZmZlcjIpOworICAgICAgICAgICAgYXNzZXJ0X3Nlc3Np
b25fZGVzY19zaW1pbGFyKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uLCBvZmZlcjIpOwogICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiwgbnVsbCk7
CisKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc3RhdGVzLCBbJ2hhdmUtbG9jYWwt
b2ZmZXInXSk7CiAgICAgICAgICAgfSkpKSk7CiAgIH0sICdDcmVhdGluZyBhbmQgc2V0dGluZyBv
ZmZlciBtdWx0aXBsZSB0aW1lcyBzaG91bGQgc3VjY2VlZCcpOwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLXByYW5zd2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25u
ZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tcHJhbnN3ZXItZXhwZWN0ZWQudHh0CmluZGV4IDhm
YjYwZWIyYWU0YTM3MjllMzg0YTcxNzFhZTdkODc0YmRjODM3NjkuLjMzYWFhMTQ2ZmUyMWY5NTQw
OTc2YzhiNjJkNGVhZjk3NjE3MjdiZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2Fs
RGVzY3JpcHRpb24tcHJhbnN3ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExv
Y2FsRGVzY3JpcHRpb24tcHJhbnN3ZXItZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNCBAQCBQQVNT
IHNldExvY2FsRGVzY3JpcHRpb24ocHJhbnN3ZXIpIGZyb20gc3RhYmxlIHN0YXRlIHNob3VsZCBy
ZWplY3Qgd2l0aCBJbnZhbGlkUwogRkFJTCBzZXRMb2NhbERlc2NyaXB0aW9uKHByYW5zd2VyKSBz
aG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBudWxsIGJ1dCBnb3Qgb2JqZWN0
ICJbb2JqZWN0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbl0iCiBQQVNTIHNldExvY2FsRGVzY3JpcHRp
b24ocHJhbnN3ZXIpIGNhbiBiZSBhcHBsaWVkIG11bHRpcGxlIHRpbWVzIHdoaWxlIHN0aWxsIGlu
IGhhdmUtbG9jYWwtcHJhbnN3ZXIgCiBQQVNTIHNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKSBm
cm9tIGhhdmUtbG9jYWwtcHJhbnN3ZXIgc3RhdGUgc2hvdWxkIHN1Y2NlZWQgCi1QQVNTIFRlc3Qg
b25zaWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBmb3Igc2V0TG9jYWxEZXNjcmlwdGlvbihwcmFu
c3dlcikgc2hvdWxkIHN1Y2NlZWQgCi1QQVNTIFRlc3Qgb25zaWduYWxpbmdzdGF0ZWNoYW5nZSBl
dmVudCBmb3Igc2V0TG9jYWxEZXNjcmlwdGlvbihwcmFuc3dlcikgY2FuIGJlIGFwcGxpZWQgbXVs
dGlwbGUgdGltZXMgd2hpbGUgc3RpbGwgaW4gaGF2ZS1sb2NhbC1wcmFuc3dlciAKLVBBU1MgVGVz
dCBvbnNpZ25hbGluZ3N0YXRlY2hhbmdlIGV2ZW50IGZvciBzZXRMb2NhbERlc2NyaXB0aW9uKGFu
c3dlcikgZnJvbSBoYXZlLWxvY2FsLXByYW5zd2VyIHN0YXRlIHNob3VsZCBzdWNjZWVkIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLXByYW5zd2VyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQ
ZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLXByYW5zd2VyLmh0bWwKaW5kZXggNGQ2
YjAxMWJlZTY1MDk3N2ViODA2MzY5M2MwNDdjMTQwMjM5ZjUwNi4uYTE0NWY5NWFmYTM1MjFkNmVj
ODQ0NmUxMmRhNDFkMTlkMzM4YjlhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxE
ZXNjcmlwdGlvbi1wcmFuc3dlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3Jp
cHRpb24tcHJhbnN3ZXIuaHRtbApAQCAtMTMsOCArMTMsNyBAQAogICAvLyBUaGUgZm9sbG93aW5n
IGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBl
ci5qczoKICAgLy8gICBnZW5lcmF0ZU9mZmVyCiAgIC8vICAgZ2VuZXJhdGVBbnN3ZXIKLSAgLy8g
ICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscwotICAvLyAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2
ZW50CisgIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyCiAKICAgLyoKICAgICA0LjMu
Mi4gIEludGVyZmFjZSBEZWZpbml0aW9uCkBAIC02NCwxMSArNjMsMTIgQEAKICAgcHJvbWlzZV90
ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAgcmV0dXJuIHBjLmNyZWF0
ZU9mZmVyKCkKICAgICAudGhlbihvZmZlciA9PgogICAgICAgcHJvbWlzZV9yZWplY3RzKHQsICdJ
bnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24oeyB0eXBl
OiAncHJhbnN3ZXInLCBzZHA6IG9mZmVyLnNkcCB9KSkpOwotCiAgIH0sICdzZXRMb2NhbERlc2Ny
aXB0aW9uKHByYW5zd2VyKSBmcm9tIHN0YWJsZSBzdGF0ZSBzaG91bGQgcmVqZWN0IHdpdGggSW52
YWxpZFN0YXRlRXJyb3InKTsKIAogICAvKgpAQCAtODEsNyArODEsMTAgQEAKICAgICovCiAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OwotICAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBjLCBbJ2hhdmUtcmVtb3RlLW9mZmVy
JywgJ2hhdmUtbG9jYWwtcHJhbnN3ZXInXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5j
bG9zZSgpKTsKKworICAgIGNvbnN0IHN0YXRlcyA9IFtdOworICAgIHBjLmFkZEV2ZW50TGlzdGVu
ZXIoJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVzLnB1c2gocGMuc2lnbmFsaW5n
U3RhdGUpKTsKIAogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZlVmlk
ZW86IHRydWUgfSkKICAgICAudGhlbihvZmZlciA9PgpAQCAtOTQsMjIgKzk3LDI3IEBACiAgICAg
ICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnNpZ25hbGluZ1N0
YXRlLCAnaGF2ZS1sb2NhbC1wcmFuc3dlcicpOwogCi0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25f
ZGVzY19lcXVhbHMocGMucmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyKTsKLSAgICAgICAgICBhc3Nl
cnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24sIG9mZmVy
KTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucmVtb3RlRGVzY3Jp
cHRpb24sIG9mZmVyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMu
cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBvZmZlcik7CiAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwYy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24sIG51bGwpOwogCi0gICAgICAgICAgYXNzZXJ0
X3Nlc3Npb25fZGVzY19lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbiwgcHJhbnN3ZXIpOwotICAg
ICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0
aW9uLCBwcmFuc3dlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBj
LmxvY2FsRGVzY3JpcHRpb24sIHByYW5zd2VyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9k
ZXNjX3NpbWlsYXIocGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24sIHByYW5zd2VyKTsKICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLCBudWxsKTsKIAog
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBudWxs
KTsKKworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc3RhdGVzLCBbJ2hhdmUtcmVtb3Rl
LW9mZmVyJywgJ2hhdmUtbG9jYWwtcHJhbnN3ZXInXSk7CiAgICAgICAgIH0pOwogICAgICAgfSkp
OwogICB9LCAnc2V0TG9jYWxEZXNjcmlwdGlvbihwcmFuc3dlcikgc2hvdWxkIHN1Y2NlZWQnKTsK
IAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKLSAgICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudCh0LCBwYywgWydoYXZlLXJlbW90
ZS1vZmZlcicsICdoYXZlLWxvY2FsLXByYW5zd2VyJ10pOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdGF0ZXMgPSBbXTsKKyAgICBwYy5hZGRFdmVu
dExpc3RlbmVyKCdzaWduYWxpbmdzdGF0ZWNoYW5nZScsICgpID0+IHN0YXRlcy5wdXNoKHBjLnNp
Z25hbGluZ1N0YXRlKSk7CiAKICAgICByZXR1cm4gcGMuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVj
ZWl2ZVZpZGVvOiB0cnVlIH0pCiAgICAgLnRoZW4ob2ZmZXIgPT4KQEAgLTExOSwxMyArMTI3LDE5
IEBACiAgICAgICAgIGNvbnN0IHByYW5zd2VyID0geyB0eXBlOiAncHJhbnN3ZXInLCBzZHA6IGFu
c3dlci5zZHAgfTsKIAogICAgICAgICByZXR1cm4gcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihwcmFu
c3dlcikKLSAgICAgICAgLnRoZW4oKCkgPT4gcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihwcmFuc3dl
cikpOworICAgICAgICAudGhlbigoKSA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKHByYW5zd2Vy
KSkKKyAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
c3RhdGVzLCBbJ2hhdmUtcmVtb3RlLW9mZmVyJywgJ2hhdmUtbG9jYWwtcHJhbnN3ZXInXSk7Cisg
ICAgICAgIH0pOwogICAgICAgfSkpOwogICB9LCAnc2V0TG9jYWxEZXNjcmlwdGlvbihwcmFuc3dl
cikgY2FuIGJlIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMgd2hpbGUgc3RpbGwgaW4gaGF2ZS1sb2Nh
bC1wcmFuc3dlcicpOwogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBj
LCBbJ2hhdmUtcmVtb3RlLW9mZmVyJywgJ2hhdmUtbG9jYWwtcHJhbnN3ZXInLCAnc3RhYmxlJ10p
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdGF0
ZXMgPSBbXTsKKyAgICBwYy5hZGRFdmVudExpc3RlbmVyKCdzaWduYWxpbmdzdGF0ZWNoYW5nZScs
ICgpID0+IHN0YXRlcy5wdXNoKHBjLnNpZ25hbGluZ1N0YXRlKSk7CiAKICAgICByZXR1cm4gcGMu
Y3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlIH0pCiAgICAgLnRoZW4ob2Zm
ZXIgPT4KQEAgLTEzOCwxNCArMTUyLDE2IEBACiAgICAgICAgIC50aGVuKCgpID0+IHBjLnNldExv
Y2FsRGVzY3JpcHRpb24oYW5zd2VyKSkKICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAg
IGFzc2VydF9lcXVhbHMocGMuc2lnbmFsaW5nU3RhdGUsICdzdGFibGUnKTsKLSAgICAgICAgICBh
c3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5sb2NhbERlc2NyaXB0aW9uLCBhbnN3ZXIpOwot
ICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnJlbW90ZURlc2NyaXB0aW9u
LCBvZmZlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjLmxvY2Fs
RGVzY3JpcHRpb24sIGFuc3dlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1p
bGFyKHBjLnJlbW90ZURlc2NyaXB0aW9uLCBvZmZlcik7CiAKLSAgICAgICAgICBhc3NlcnRfc2Vz
c2lvbl9kZXNjX2VxdWFscyhwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiwgYW5zd2VyKTsKLSAg
ICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5jdXJyZW50UmVtb3RlRGVzY3Jp
cHRpb24sIG9mZmVyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMu
Y3VycmVudExvY2FsRGVzY3JpcHRpb24sIGFuc3dlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Np
b25fZGVzY19zaW1pbGFyKHBjLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiwgb2ZmZXIpOwogCiAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiwgbnVsbCk7
CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24sIG51
bGwpOworCisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzdGF0ZXMsIFsnaGF2ZS1yZW1v
dGUtb2ZmZXInLCAnaGF2ZS1sb2NhbC1wcmFuc3dlcicsICdzdGFibGUnXSk7CiAgICAgICAgIH0p
OwogICAgICAgfSkpOwogICB9LCAnc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpIGZyb20gaGF2
ZS1sb2NhbC1wcmFuc3dlciBzdGF0ZSBzaG91bGQgc3VjY2VlZCcpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNv
bm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1yb2xsYmFjay1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLXJvbGxiYWNrLWV4cGVjdGVkLnR4dAppbmRleCAw
Yjc4NmRjOGExNDBkMmQxMjM2ODk0YmQ3OTJhNDliM2IxM2YwMjg3Li45NTY2ZTRiOGE4MmRlNjdj
N2Y2NzYwY2IxZTFhZDM2ZWQ2YTI0YzI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2Nh
bERlc2NyaXB0aW9uLXJvbGxiYWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRM
b2NhbERlc2NyaXB0aW9uLXJvbGxiYWNrLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDYgQEAKIAot
SGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KIEZBSUwgc2V0TG9jYWxE
ZXNjcmlwdGlvbihyb2xsYmFjaykgZnJvbSBoYXZlLWxvY2FsLW9mZmVyIHN0YXRlIHNob3VsZCBy
ZXNldCBiYWNrIHRvIHN0YWJsZSBzdGF0ZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJJbnZhbGlkU3RhdGVFcnJvcjogRGVzY3JpcHRpb24gdHlw
ZSBpbmNvbXBhdGlibGUgd2l0aCBjdXJyZW50IHNpZ25hbGluZyBzdGF0ZSIKIFBBU1Mgc2V0TG9j
YWxEZXNjcmlwdGlvbihyb2xsYmFjaykgZnJvbSBzdGFibGUgc3RhdGUgc2hvdWxkIHJlamVjdCB3
aXRoIEludmFsaWRTdGF0ZUVycm9yIAogUEFTUyBzZXRMb2NhbERlc2NyaXB0aW9uKHJvbGxiYWNr
KSBhZnRlciBzZXR0aW5nIGFuc3dlciBkZXNjcmlwdGlvbiBzaG91bGQgcmVqZWN0IHdpdGggSW52
YWxpZFN0YXRlRXJyb3IgCiBGQUlMIHNldExvY2FsRGVzY3JpcHRpb24ocm9sbGJhY2spIHNob3Vs
ZCBpZ25vcmUgaW52YWxpZCBzZHAgY29udGVudCBhbmQgc3VjY2VlZCBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJJbnZhbGlkU3RhdGVFcnJvcjog
RGVzY3JpcHRpb24gdHlwZSBpbmNvbXBhdGlibGUgd2l0aCBjdXJyZW50IHNpZ25hbGluZyBzdGF0
ZSIKLVRJTUVPVVQgVGVzdCBvbnNpZ25hbGluZ3N0YXRlY2hhbmdlIGV2ZW50IGZvciBzZXRMb2Nh
bERlc2NyaXB0aW9uKHJvbGxiYWNrKSBmcm9tIGhhdmUtbG9jYWwtb2ZmZXIgc3RhdGUgc2hvdWxk
IHJlc2V0IGJhY2sgdG8gc3RhYmxlIHN0YXRlIFRlc3QgdGltZWQgb3V0CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tcm9sbGJhY2suaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0
aW9uLXNldExvY2FsRGVzY3JpcHRpb24tcm9sbGJhY2suaHRtbAppbmRleCA1Y2FmYjFlM2QyZGM2
ZjJjNmM4NDk3MTMyNzZmZWY0ODcxYmRlYWNiLi4wMTQ3YjMxODVjY2UyMGM3MzQ1ZmU2NDBkZDZl
NDY2MjA5ZDBlM2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9u
LXJvbGxiYWNrLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1yb2xs
YmFjay5odG1sCkBAIC0xMSw4ICsxMSw3IEBACiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93
ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0bWwKIAogICAvLyBUaGUgZm9sbG93
aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhl
bHBlci5qczoKLSAgLy8gICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscwotICAvLyAgIHRlc3Rf
c3RhdGVfY2hhbmdlX2V2ZW50CisgIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyCiAK
ICAgLyoKICAgICA0LjMuMi4gIEludGVyZmFjZSBEZWZpbml0aW9uCkBAIC01OCw4ICs1NywxMCBA
QAogICAgKi8KICAgcHJvbWlzZV90ZXN0KHQ9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogCi0g
ICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQodCwgcGMsIFsnaGF2ZS1sb2NhbC1vZmZlcicsICdz
dGFibGUnXSk7CisgICAgY29uc3Qgc3RhdGVzID0gW107CisgICAgcGMuYWRkRXZlbnRMaXN0ZW5l
cignc2lnbmFsaW5nc3RhdGVjaGFuZ2UnLCAoKSA9PiBzdGF0ZXMucHVzaChwYy5zaWduYWxpbmdT
dGF0ZSkpOwogCiAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKICAgICAudGhlbihvZmZlciA9
PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKSkKQEAgLTc2LDYgKzc3LDggQEAKICAgICAg
IGFzc2VydF9lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbiwgbnVsbCk7CiAgICAgICBhc3NlcnRf
ZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uLCBudWxsKTsKICAgICAgIGFzc2VydF9l
cXVhbHMocGMuY3VycmVudExvY2FsRGVzY3JpcHRpb24sIG51bGwpOworCisgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHN0YXRlcywgWydoYXZlLWxvY2FsLW9mZmVyJywgJ3N0YWJsZSddKTsKICAg
ICB9KTsKICAgfSwgJ3NldExvY2FsRGVzY3JpcHRpb24ocm9sbGJhY2spIGZyb20gaGF2ZS1sb2Nh
bC1vZmZlciBzdGF0ZSBzaG91bGQgcmVzZXQgYmFjayB0byBzdGFibGUgc3RhdGUnKTsKIApAQCAt
OTQsMTIgKzk3LDE0IEBACiAgICAqLwogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3Qg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBj
LmNsb3NlKCkpOwogICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgJ0ludmFsaWRTdGF0ZUVy
cm9yJywKICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24oeyB0eXBlOiAncm9sbGJhY2snIH0p
KTsKICAgfSwgYHNldExvY2FsRGVzY3JpcHRpb24ocm9sbGJhY2spIGZyb20gc3RhYmxlIHN0YXRl
IHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkU3RhdGVFcnJvcmApOwogCiAgIHByb21pc2VfdGVz
dCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVy
KHsgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSB9KQogICAgIC50aGVuKG9mZmVyID0+CiAgICAg
ICBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikKQEAgLTExMyw2ICsxMTgsNyBAQAogCiAg
IHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJuIHBj
LmNyZWF0ZU9mZmVyKCkKICAgICAudGhlbihvZmZlciA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9u
KG9mZmVyKSkKICAgICAudGhlbigoKSA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9u
LXNldExvY2FsRGVzY3JpcHRpb24uaHRtbAppbmRleCA3MjY4NWJkN2IwOTYyNzk3MDgwOWE3YjFh
ZjUwMTI2NDA3YWZiNzg0Li4wYWIyZGIxZDU2ZDQxNjNhYTA4ODc3NmM1MWQ2NTJjZWRlY2UxNWE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVl
ckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi5odG1sCkBAIC0xMiw5ICsxMiw4IEBACiAK
ICAgLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZnJvbSBSVENQ
ZWVyQ29ubmVjdGlvbi1oZWxwZXIuanM6CiAgIC8vICAgZ2VuZXJhdGVPZmZlcgotICAvLyAgIGFz
c2VydF9zZXNzaW9uX2Rlc2Nfbm90X2VxdWFscwotICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nf
ZXF1YWxzCi0gIC8vICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQKKyAgLy8gICBhc3NlcnRfc2Vz
c2lvbl9kZXNjX25vdF9zaW1pbGFyCisgIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFy
CiAKICAgLyoKICAgICA0LjMuMi4gIEludGVyZmFjZSBEZWZpbml0aW9uCkBAIC00Niw3ICs0NSwx
MCBAQAogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOwotICAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBjLCBbJ2hhdmUt
bG9jYWwtb2ZmZXInLCAnc3RhYmxlJywgJ2hhdmUtbG9jYWwtb2ZmZXInXSk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0YXRlcyA9IFtdOworICAg
IHBjLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVz
LnB1c2gocGMuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcih7
IG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUgfSkKICAgICAudGhlbihvZmZlcjEgPT4KQEAgLTYx
LDE3ICs2MywyMSBAQAogICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyMikKICAg
ICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMuc2lnbmFsaW5n
U3RhdGUsICdoYXZlLWxvY2FsLW9mZmVyJyk7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVz
Y19ub3RfZXF1YWxzKG9mZmVyMSwgb2ZmZXIyKTsKLSAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9k
ZXNjX2VxdWFscyhwYy5sb2NhbERlc2NyaXB0aW9uLCBvZmZlcjIpOwotICAgICAgICAgIGFzc2Vy
dF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLCBvZmZlcjEp
OwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uLCBvZmZlcjIpOworICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfbm90X3Np
bWlsYXIob2ZmZXIxLCBvZmZlcjIpOworICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2lt
aWxhcihwYy5sb2NhbERlc2NyaXB0aW9uLCBvZmZlcjIpOworICAgICAgICAgIGFzc2VydF9zZXNz
aW9uX2Rlc2Nfc2ltaWxhcihwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIxKTsKKyAg
ICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucGVuZGluZ0xvY2FsRGVzY3Jp
cHRpb24sIG9mZmVyMik7CisKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0YXRlcywg
WydoYXZlLWxvY2FsLW9mZmVyJywgJ3N0YWJsZScsICdoYXZlLWxvY2FsLW9mZmVyJ10pOwogICAg
ICAgICB9KSkpOwogICB9LCAnQ2FsbGluZyBjcmVhdGVPZmZlcigpIGFuZCBzZXRMb2NhbERlc2Ny
aXB0aW9uKCkgYWdhaW4gYWZ0ZXIgb25lIHJvdW5kIG9mIGxvY2FsLW9mZmVyL3JlbW90ZS1hbnN3
ZXIgc2hvdWxkIHN1Y2NlZWQnKTsKIAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3Qg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVu
dCh0LCBwYywKLSAgICAgIFsnaGF2ZS1yZW1vdGUtb2ZmZXInLCAnc3RhYmxlJywgJ2hhdmUtbG9j
YWwtb2ZmZXInXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAg
IGNvbnN0IHN0YXRlcyA9IFtdOworICAgIHBjLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25hbGluZ3N0
YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVzLnB1c2gocGMuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAg
IHJldHVybiBnZW5lcmF0ZU9mZmVyKHsgcGMsIGRhdGE6IHRydWUgfSkKICAgICAudGhlbihvZmZl
ciA9PiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikpCkBAIC04MywxMyArODksMjkgQEAK
ICAgICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikKICAgICAgICAgLnRoZW4oKCkg
PT4gewogICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMuc2lnbmFsaW5nU3RhdGUsICdoYXZlLWxv
Y2FsLW9mZmVyJyk7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMubG9j
YWxEZXNjcmlwdGlvbiwgb2ZmZXIpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1
YWxzKHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLCBhbnN3ZXIpOwotICAgICAgICAgIGFzc2Vy
dF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uLCBvZmZlcik7
Ci0gICAgICAgIH0pKSk7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBj
LmxvY2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNj
X3NpbWlsYXIocGMuY3VycmVudExvY2FsRGVzY3JpcHRpb24sIGFuc3dlcik7CisgICAgICAgICAg
YXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uLCBv
ZmZlcik7CiAKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0YXRlcywgWydoYXZlLXJl
bW90ZS1vZmZlcicsICdzdGFibGUnLCAnaGF2ZS1sb2NhbC1vZmZlciddKTsKKyAgICAgICAgfSkp
KTsKICAgfSwgJ1N3aXRjaGluZyByb2xlIGZyb20gYW5zd2VyZXIgdG8gb2ZmZXJlciBhZnRlciBn
b2luZyBiYWNrIHRvIHN0YWJsZSBzdGF0ZSBzaG91bGQgc3VjY2VlZCcpOwogCisgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBsZXQgZXZl
bnRTZXF1ZW5jZSA9ICcnOworICAgIGNvbnN0IHNpZ25hbGluZ3N0YXRlY2hhbmdlUmVzb2x2ZXIg
PSBuZXcgUmVzb2x2ZXIoKTsKKyAgICBwYy5vbnNpZ25hbGluZ3N0YXRlY2hhbmdlID0gKCkgPT4g
eworICAgICAgZXZlbnRTZXF1ZW5jZSArPSAnb25zaWduYWxpbmdzdGF0ZWNoYW5nZTsnOworICAg
ICAgc2lnbmFsaW5nc3RhdGVjaGFuZ2VSZXNvbHZlci5yZXNvbHZlKCk7CisgICAgfTsKKyAgICBh
d2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBldmVudFNlcXVlbmNlICs9
ICdzZXRMb2NhbERlc2NyaXB0aW9uOyc7CisgICAgYXdhaXQgc2lnbmFsaW5nc3RhdGVjaGFuZ2VS
ZXNvbHZlci5wcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoZXZlbnRTZXF1ZW5jZSwgJ29uc2ln
bmFsaW5nc3RhdGVjaGFuZ2U7c2V0TG9jYWxEZXNjcmlwdGlvbjsnKTsKKyAgfSwgJ29uc2lnbmFs
aW5nc3RhdGVjaGFuZ2UgZmlyZXMgYmVmb3JlIHNldExvY2FsRGVzY3JpcHRpb24gcmVzb2x2ZXMn
KTsKKwogICAvKgogICAgIFRPRE8KICAgICAgIDQuMy4yLiAgc2V0TG9jYWxEZXNjcmlwdGlvbgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tYW5zd2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLWFuc3dlci1leHBlY3Rl
ZC50eHQKaW5kZXggYWIyYmVlMjFmOTBjNGJlOTFmYmI5MmI3ZjJmM2MwZjY2Yzk1NWE2Ni4uZDEz
MzM0MTU1OWQ3ZjM2ODc1ODU4OWJmY2VlNDdlYzZjMDkwY2U3NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5l
Y3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tYW5zd2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1hbnN3ZXItZXhwZWN0ZWQudHh0CkBAIC0yLDUg
KzIsNCBAQAogUEFTUyBzZXRSZW1vdGVEZXNjcmlwdGlvbigpIHdpdGggdmFsaWQgc3RhdGUgYW5k
IGFuc3dlciBzaG91bGQgc3VjY2VlZCAKIFBBU1MgQ2FsbGluZyBzZXRSZW1vdGVEZXNjcmlwdGlv
bihhbnN3ZXIpIGZyb20gc3RhYmxlIHN0YXRlIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkU3Rh
dGVFcnJvciAKIFBBU1MgQ2FsbGluZyBzZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpIGZyb20g
aGF2ZS1yZW1vdGUtb2ZmZXIgc3RhdGUgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRTdGF0ZUVy
cm9yIAotUEFTUyBUZXN0IG9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UgZXZlbnQgZm9yIHNldFJlbW90
ZURlc2NyaXB0aW9uKCkgd2l0aCB2YWxpZCBzdGF0ZSBhbmQgYW5zd2VyIHNob3VsZCBzdWNjZWVk
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1hbnN3ZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLWFuc3dlci5odG1sCmluZGV4
IDc1YmJlYzgwYzI4M2VlYWQ2MzEwNzIwNTY1MDAzODgwZDgzZTNkYmQuLmZmNTU0NDc4YWY4MzNh
MmE5YjU2YTdhODYzZDM3YTAyNTViY2E3YjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJl
bW90ZURlc2NyaXB0aW9uLWFuc3dlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURl
c2NyaXB0aW9uLWFuc3dlci5odG1sCkBAIC0xMyw4ICsxMyw3IEBACiAgIC8vIFRoZSBmb2xsb3dp
bmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gUlRDUGVlckNvbm5lY3Rpb24taGVs
cGVyLmpzOgogICAvLyAgIGdlbmVyYXRlT2ZmZXIoKQogICAvLyAgIGdlbmVyYXRlQW5zd2VyKCkK
LSAgLy8gICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscygpCi0gIC8vICAgdGVzdF9zdGF0ZV9j
aGFuZ2VfZXZlbnQoKQorICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxhcigpCiAKICAg
LyoKICAgICA0LjMuMi4gIEludGVyZmFjZSBEZWZpbml0aW9uCkBAIC02MCw3ICs1OSwxMCBAQAog
ICAgKi8KICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7Ci0gICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQodCwgcGMsIFsnaGF2ZS1s
b2NhbC1vZmZlcicsICdzdGFibGUnXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9z
ZSgpKTsKKworICAgIGNvbnN0IHN0YXRlcyA9IFtdOworICAgIHBjLmFkZEV2ZW50TGlzdGVuZXIo
J3NpZ25hbGluZ3N0YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVzLnB1c2gocGMuc2lnbmFsaW5nU3Rh
dGUpKTsKIAogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZlVmlkZW86
IHRydWUgfSkKICAgICAudGhlbihvZmZlciA9PgpAQCAtNzEsMTQgKzczLDE2IEBACiAgICAgICAg
IC50aGVuKCgpID0+IHsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnNpZ25hbGluZ1N0YXRl
LCAnc3RhYmxlJyk7CiAKLSAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5s
b2NhbERlc2NyaXB0aW9uLCBvZmZlcik7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19l
cXVhbHMocGMucmVtb3RlRGVzY3JpcHRpb24sIGFuc3dlcik7CisgICAgICAgICAgYXNzZXJ0X3Nl
c3Npb25fZGVzY19zaW1pbGFyKHBjLmxvY2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICAgICAg
ICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucmVtb3RlRGVzY3JpcHRpb24sIGFuc3dl
cik7CiAKLSAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5jdXJyZW50TG9j
YWxEZXNjcmlwdGlvbiwgb2ZmZXIpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1
YWxzKHBjLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiwgYW5zd2VyKTsKKyAgICAgICAgICBhc3Nl
cnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMuY3VycmVudExvY2FsRGVzY3JpcHRpb24sIG9mZmVy
KTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMuY3VycmVudFJlbW90
ZURlc2NyaXB0aW9uLCBhbnN3ZXIpOwogCiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5wZW5k
aW5nTG9jYWxEZXNjcmlwdGlvbiwgbnVsbCk7CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5w
ZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24sIG51bGwpOworCisgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhzdGF0ZXMsIFsnaGF2ZS1sb2NhbC1vZmZlcicsICdzdGFibGUnXSk7CiAgICAgICAg
IH0pKSk7CiAgIH0sICdzZXRSZW1vdGVEZXNjcmlwdGlvbigpIHdpdGggdmFsaWQgc3RhdGUgYW5k
IGFuc3dlciBzaG91bGQgc3VjY2VlZCcpOwogCkBAIC05NSw2ICs5OSw4IEBACiAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5jcmVh
dGVPZmZlcigpCiAgICAgLnRoZW4ob2ZmZXIgPT4KICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCAn
SW52YWxpZFN0YXRlRXJyb3InLApAQCAtMTA0LDYgKzExMCw4IEBACiAgIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKwogICAgIHJldHVybiBwYy5jcmVhdGVPZmZl
cigpCiAgICAgLnRoZW4ob2ZmZXIgPT4KICAgICAgIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG9m
ZmVyKQpAQCAtMTExLDcgKzExOSw2IEBACiAgICAgLnRoZW4oYW5zd2VyID0+CiAgICAgICBwcm9t
aXNlX3JlamVjdHModCwgJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgcGMuc2V0UmVtb3Rl
RGVzY3JpcHRpb24oYW5zd2VyKSkpOwotCiAgIH0sICdDYWxsaW5nIHNldFJlbW90ZURlc2NyaXB0
aW9uKGFuc3dlcikgZnJvbSBoYXZlLXJlbW90ZS1vZmZlciBzdGF0ZSBzaG91bGQgcmVqZWN0IHdp
dGggSW52YWxpZFN0YXRlRXJyb3InKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVj
dGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRS
ZW1vdGVEZXNjcmlwdGlvbi1leHBlY3RlZC50eHQKaW5kZXggYzJkOWRkMTk5YmZmYmNmOTE2MGQ2
Y2NiOGQ5NDNjMDFlMGYxODI3Zi4uMDQ1NDk5M2M0OWY4Yjc4MDY3M2VlYzdmMzQ1YjBkZWIwNDBm
MzFjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMSw4ICsxLDcgQEAKIAogUEFTUyBzZXRSZW1vdGVEZXNjcmlwdGlvbiB3aXRoIGludmFs
aWQgdHlwZSBhbmQgaW52YWxpZCBTRFAgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVFcnJvciAKIFBB
U1Mgc2V0UmVtb3RlRGVzY3JpcHRpb24oKSB3aXRoIGludmFsaWQgU0RQIGFuZCBzdGFibGUgc3Rh
dGUgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRTdGF0ZUVycm9yIAorUEFTUyBOZWdvdGlhdGlv
biBzaG91bGQgZmlyZSBzaWduYWxpbmdzc3RhdGUgZXZlbnRzIAogRkFJTCBDYWxsaW5nIHNldFJl
bW90ZURlc2NyaXB0aW9uKCkgYWdhaW4gYWZ0ZXIgb25lIHJvdW5kIG9mIHJlbW90ZS1vZmZlci9s
b2NhbC1hbnN3ZXIgc2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2ZhbHNlOiBFeHBlY3QgYm90aCBzZXNz
aW9uIGRlc2NyaXB0aW9ucyB0byBoYXZlIGRpZmZlcmVudCBjb3VudCBvZiBtZWRpYSBsaW5lcyBl
eHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQogUEFTUyBTd2l0Y2hpbmcgcm9sZSBmcm9tIG9mZmVyZXIg
dG8gYW5zd2VyZXIgYWZ0ZXIgZ29pbmcgYmFjayB0byBzdGFibGUgc3RhdGUgc2hvdWxkIHN1Y2Nl
ZWQgCi1QQVNTIFRlc3Qgb25zaWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBmb3IgQ2FsbGluZyBz
ZXRSZW1vdGVEZXNjcmlwdGlvbigpIGFnYWluIGFmdGVyIG9uZSByb3VuZCBvZiByZW1vdGUtb2Zm
ZXIvbG9jYWwtYW5zd2VyIHNob3VsZCBzdWNjZWVkIAotUEFTUyBUZXN0IG9uc2lnbmFsaW5nc3Rh
dGVjaGFuZ2UgZXZlbnQgZm9yIFN3aXRjaGluZyByb2xlIGZyb20gb2ZmZXJlciB0byBhbnN3ZXJl
ciBhZnRlciBnb2luZyBiYWNrIHRvIHN0YWJsZSBzdGF0ZSBzaG91bGQgc3VjY2VlZCAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0
CmluZGV4IDYwZThhOThmMDQwNGFhY2ZkYjc0NmE1NTNlYjA0YjEzOWM3M2RjZDEuLmViOGU5NTZh
ZjRiNGYyYjNkNTU4NTdhOWNmZjJmNjdmYzU0MDgzMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9u
LXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlv
bi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsNyBA
QAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQogUEFTUyBzZXRS
ZW1vdGVEZXNjcmlwdGlvbiB3aXRoIHZhbGlkIG9mZmVyIHNob3VsZCBzdWNjZWVkIAogUEFTUyBz
ZXRSZW1vdGVEZXNjcmlwdGlvbiBtdWx0aXBsZSB0aW1lcyBzaG91bGQgc3VjY2VlZCAKIEZBSUwg
c2V0UmVtb3RlRGVzY3JpcHRpb24gbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgb2ZmZXIg
c2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2ZhbHNlOiBFeHBlY3QgYm90aCBzZXNzaW9uIGRlc2NyaXB0
aW9ucyB0byBoYXZlIGRpZmZlcmVudCBjb3VudCBvZiBtZWRpYSBsaW5lcyBleHBlY3RlZCBmYWxz
ZSBnb3QgdHJ1ZQogRkFJTCBzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikgd2l0aCBpbnZhbGlk
IFNEUCBzaG91bGQgcmVqZWN0IHdpdGggUlRDRXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGVy
cm9yIGRldGFpbCBmaWVsZCB0byBzZXQgdG8gc2RwLXN5bnRheC1lcnJvciBleHBlY3RlZCAoc3Ry
aW5nKSAic2RwLXN5bnRheC1lcnJvciIgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKIFBB
U1Mgc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpIGZyb20gaGF2ZS1sb2NhbC1vZmZlciBzdGF0
ZSBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZFN0YXRlRXJyb3IgCi1QQVNTIFRlc3Qgb25zaWdu
YWxpbmdzdGF0ZWNoYW5nZSBldmVudCBmb3Igc2V0UmVtb3RlRGVzY3JpcHRpb24gd2l0aCB2YWxp
ZCBvZmZlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgVGVzdCBvbnNpZ25hbGluZ3N0YXRlY2hhbmdl
IGV2ZW50IGZvciBzZXRSZW1vdGVEZXNjcmlwdGlvbiBtdWx0aXBsZSB0aW1lcyBzaG91bGQgc3Vj
Y2VlZCAKLVRJTUVPVVQgVGVzdCBvbnNpZ25hbGluZ3N0YXRlY2hhbmdlIGV2ZW50IGZvciBzZXRS
ZW1vdGVEZXNjcmlwdGlvbiBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBvZmZlciBzaG91
bGQgc3VjY2VlZCBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRS
ZW1vdGVEZXNjcmlwdGlvbi1vZmZlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3Jp
cHRpb24tb2ZmZXIuaHRtbAppbmRleCA0NDk5MjVjYjFkYjI5YmI3ZDE1OTk5YWI4ZWE4ZDNhOGZh
YjkyNjA3Li41NjVmZGRjNTliZTAyYzQwOTgzNTc0OWFhYzA5MGRiMWFmN2EzOGFmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZlci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJD
b25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwKQEAgLTExLDggKzExLDcg
QEAKICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy9hcmNoaXZlcy8yMDE3MDYw
NS93ZWJydGMuaHRtbAogCiAgIC8vIFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUg
Y2FsbGVkIGZyb20gUlRDUGVlckNvbm5lY3Rpb24taGVscGVyLmpzOgotICAvLyAgIGFzc2VydF9z
ZXNzaW9uX2Rlc2NfZXF1YWxzKCkKLSAgLy8gICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudCgpCisg
IC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKCkKIAogICAvKgogICAgIDQuMy4yLiAg
SW50ZXJmYWNlIERlZmluaXRpb24KQEAgLTUyLDMyICs1MSwzOSBAQAogCiAgIHByb21pc2VfdGVz
dCh0ID0+IHsKICAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKICAgICBwYzEuY3JlYXRlRGF0YUNoYW5u
ZWwoJ2RhdGFjaGFubmVsJyk7CiAKICAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKIAotICAgIHRlc3Rf
c3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBjMiwgWydoYXZlLXJlbW90ZS1vZmZlciddKTsKKyAgICBj
b25zdCBzdGF0ZXMgPSBbXTsKKyAgICBwYzIuYWRkRXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3Rh
dGVjaGFuZ2UnLCAoKSA9PiBzdGF0ZXMucHVzaChwYzIuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAg
IHJldHVybiBwYzEuY3JlYXRlT2ZmZXIoKQogICAgICAudGhlbihvZmZlciA9PiB7CiAgICAgICBy
ZXR1cm4gcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKQogICAgICAgLnRoZW4oKCkgPT4g
ewogICAgICAgICBhc3NlcnRfZXF1YWxzKHBjMi5zaWduYWxpbmdTdGF0ZSwgJ2hhdmUtcmVtb3Rl
LW9mZmVyJyk7Ci0gICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjMi5yZW1vdGVE
ZXNjcmlwdGlvbiwgb2ZmZXIpOwotICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhw
YzIucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBvZmZlcik7CisgICAgICAgIGFzc2VydF9zZXNz
aW9uX2Rlc2Nfc2ltaWxhcihwYzIucmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICAgICAg
YXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjMi5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24s
IG9mZmVyKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYzIuY3VycmVudFJlbW90ZURlc2NyaXB0
aW9uLCBudWxsKTsKKworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0YXRlcywgWydoYXZl
LXJlbW90ZS1vZmZlciddKTsKICAgICAgIH0pOwogICAgIH0pOwotICAgfSwgJ3NldFJlbW90ZURl
c2NyaXB0aW9uIHdpdGggdmFsaWQgb2ZmZXIgc2hvdWxkIHN1Y2NlZWQnKTsKKyAgfSwgJ3NldFJl
bW90ZURlc2NyaXB0aW9uIHdpdGggdmFsaWQgb2ZmZXIgc2hvdWxkIHN1Y2NlZWQnKTsKIAogICBw
cm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAgcGMxLmNyZWF0
ZURhdGFDaGFubmVsKCdkYXRhY2hhbm5lbCcpOwogCiAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7CiAK
LSAgICAvLyBoYXZlLXJlbW90ZS1vZmZlciBldmVudCBzaG91bGQgb25seSBmaXJlIG9uY2UKLSAg
ICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudCh0LCBwYzIsIFsnaGF2ZS1yZW1vdGUtb2ZmZXInXSk7
CisgICAgY29uc3Qgc3RhdGVzID0gW107CisgICAgcGMyLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25h
bGluZ3N0YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVzLnB1c2gocGMyLnNpZ25hbGluZ1N0YXRlKSk7
CiAKICAgICByZXR1cm4gcGMxLmNyZWF0ZU9mZmVyKCkKICAgICAudGhlbihvZmZlciA9PiB7CkBA
IC04NSwyMSArOTEsMjUgQEAKICAgICAgIC50aGVuKCgpID0+IHBjMi5zZXRSZW1vdGVEZXNjcmlw
dGlvbihvZmZlcikpCiAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMo
cGMyLnNpZ25hbGluZ1N0YXRlLCAnaGF2ZS1yZW1vdGUtb2ZmZXInKTsKLSAgICAgICAgYXNzZXJ0
X3Nlc3Npb25fZGVzY19lcXVhbHMocGMyLnJlbW90ZURlc2NyaXB0aW9uLCBvZmZlcik7Ci0gICAg
ICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjMi5wZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b24sIG9mZmVyKTsKKyAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjMi5yZW1v
dGVEZXNjcmlwdGlvbiwgb2ZmZXIpOworICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWls
YXIocGMyLnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbiwgb2ZmZXIpOwogICAgICAgICBhc3NlcnRf
ZXF1YWxzKHBjMi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24sIG51bGwpOworCisgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoc3RhdGVzLCBbJ2hhdmUtcmVtb3RlLW9mZmVyJ10pOwogICAgICAg
fSk7CiAgICAgfSk7CiAgIH0sICdzZXRSZW1vdGVEZXNjcmlwdGlvbiBtdWx0aXBsZSB0aW1lcyBz
aG91bGQgc3VjY2VlZCcpOwogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYzEg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5j
bG9zZSgpKTsKICAgICBwYzEuY3JlYXRlRGF0YUNoYW5uZWwoJ2RhdGFjaGFubmVsJyk7CiAKICAg
ICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHBjMi5jbG9zZSgpKTsKIAotICAgIC8vIGhhdmUtcmVtb3RlLW9mZmVyIGV2ZW50IHNo
b3VsZCBvbmx5IGZpcmUgb25jZQotICAgIHRlc3Rfc3RhdGVfY2hhbmdlX2V2ZW50KHQsIHBjMiwg
WydoYXZlLXJlbW90ZS1vZmZlciddKTsKKyAgICBjb25zdCBzdGF0ZXMgPSBbXTsKKyAgICBwYzIu
YWRkRXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3RhdGVjaGFuZ2UnLCAoKSA9PiBzdGF0ZXMucHVz
aChwYzIuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAgIHJldHVybiBwYzEuY3JlYXRlT2ZmZXIoKQog
ICAgIC50aGVuKG9mZmVyMSA9PiB7CkBAIC0xMDcsMTUgKzExNywxNyBAQAogICAgICAgIC50aGVu
KCgpPT4gewogICAgICAgICByZXR1cm4gcGMxLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1JlY2VpdmVB
dWRpbzogdHJ1ZSB9KQogICAgICAgICAudGhlbihvZmZlcjIgPT4gewotICAgICAgICAgIGFzc2Vy
dF9zZXNzaW9uX2Rlc2Nfbm90X2VxdWFscyhvZmZlcjEsIG9mZmVyMik7CisgICAgICAgICAgYXNz
ZXJ0X3Nlc3Npb25fZGVzY19ub3Rfc2ltaWxhcihvZmZlcjEsIG9mZmVyMik7CiAKICAgICAgICAg
ICByZXR1cm4gcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyMSkKICAgICAgICAgICAudGhl
bigoKSA9PiBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIyKSkKICAgICAgICAgICAudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjMi5zaWduYWxpbmdTdGF0ZSwg
J2hhdmUtcmVtb3RlLW9mZmVyJyk7Ci0gICAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2Vx
dWFscyhwYzIucmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyMik7Ci0gICAgICAgICAgICBhc3NlcnRf
c2Vzc2lvbl9kZXNjX2VxdWFscyhwYzIucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBvZmZlcjIp
OworICAgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjMi5yZW1vdGVEZXNj
cmlwdGlvbiwgb2ZmZXIyKTsKKyAgICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfc2ltaWxh
cihwYzIucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBvZmZlcjIpOwogICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwYzIuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLCBudWxsKTsKKworICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzdGF0ZXMsIFsnaGF2ZS1yZW1vdGUtb2ZmZXInXSk7
CiAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgICAgfSk7CkBAIC0xMzIsNiArMTQ0LDgg
QEAKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25u
ZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAgICAg
cmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHsKICAgICAgIHR5cGU6ICdvZmZlcicsCiAg
ICAgICBzZHA6ICdJbnZhbGlkIFNEUCcKQEAgLTE1OSw2ICsxNzMsNyBAQAogICAgKi8KICAgcHJv
bWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICByZXR1cm4gcGMuY3Jl
YXRlT2ZmZXIoKQogICAgIC50aGVuKG9mZmVyID0+IHsKICAgICAgIHJldHVybiBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVz
Y3JpcHRpb24tcHJhbnN3ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVz
Y3JpcHRpb24tcHJhbnN3ZXItZXhwZWN0ZWQudHh0CmluZGV4IGM2ODJmMzY4YWE4MWZmZTk1ZDY1
ZWQ5YTQzNTAwZDEzN2FiMWM1MjQuLjRmZjdlYWJhODNlMzM5NmI0MTlkMTQ1MGMzNzYwNGU2Yzc5
MmU0MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXByYW5z
d2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1w
cmFuc3dlci1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw0IEBAIFBBU1Mgc2V0UmVtb3RlRGVzY3Jp
cHRpb24ocHJhbnN3ZXIpIGZyb20gc3RhYmxlIHN0YXRlIHNob3VsZCByZWplY3Qgd2l0aCBJbnZh
bGlkCiBQQVNTIHNldFJlbW90ZURlc2NyaXB0aW9uKHByYW5zd2VyKSBmcm9tIGhhdmUtbG9jYWwt
b2ZmZXIgc3RhdGUgc2hvdWxkIHN1Y2NlZWQgCiBQQVNTIHNldFJlbW90ZURlc2NyaXB0aW9uKHBy
YW5zd2VyKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgc3VjY2VlZCAKIFBBU1Mgc2V0UmVtb3RlRGVz
Y3JpcHRpb24oYW5zd2VyKSBmcm9tIGhhdmUtcmVtb3RlLXByYW5zd2VyIHN0YXRlIHNob3VsZCBz
dWNjZWVkIAotUEFTUyBUZXN0IG9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UgZXZlbnQgZm9yIHNldFJl
bW90ZURlc2NyaXB0aW9uKHByYW5zd2VyKSBmcm9tIGhhdmUtbG9jYWwtb2ZmZXIgc3RhdGUgc2hv
dWxkIHN1Y2NlZWQgCi1QQVNTIFRlc3Qgb25zaWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBmb3Ig
c2V0UmVtb3RlRGVzY3JpcHRpb24ocHJhbnN3ZXIpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBzdWNj
ZWVkIAotUEFTUyBUZXN0IG9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UgZXZlbnQgZm9yIHNldFJlbW90
ZURlc2NyaXB0aW9uKGFuc3dlcikgZnJvbSBoYXZlLXJlbW90ZS1wcmFuc3dlciBzdGF0ZSBzaG91
bGQgc3VjY2VlZCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRp
b24tcHJhbnN3ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXByYW5z
d2VyLmh0bWwKaW5kZXggNTIxMjkwZmM5NTU0NmM0MDA3MTE3MmNhNTYwYjdjNDBiMjBlMzkyNS4u
OTE5N2EzNTk2NzFiZDFkOGYyODA5OGIyYThkYjFiOTNlZTE4MWNlZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNv
bm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tcHJhbnN3ZXIuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVj
dGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1wcmFuc3dlci5odG1sCkBAIC0xMyw4ICsxMyw3IEBA
CiAgIC8vIFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gUlRD
UGVlckNvbm5lY3Rpb24taGVscGVyLmpzOgogICAvLyAgIGdlbmVyYXRlT2ZmZXIKICAgLy8gICBn
ZW5lcmF0ZUFuc3dlcgotICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzCi0gIC8vICAg
dGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQKKyAgLy8gICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWls
YXIKIAogICAvKgogICAgIDQuMy4yLiAgSW50ZXJmYWNlIERlZmluaXRpb24KQEAgLTY0LDYgKzYz
LDggQEAKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCiAg
ICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKICAgICAudGhlbihvZmZlciA9PgogICAgICAgcHJv
bWlzZV9yZWplY3RzKHQsICdJbnZhbGlkU3RhdGVFcnJvcicsCkBAIC04MCw3ICs4MSwxMCBAQAog
ICAgKi8KICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7Ci0gICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQodCwgcGMsIFsnaGF2ZS1s
b2NhbC1vZmZlcicsICdoYXZlLXJlbW90ZS1wcmFuc3dlciddKTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgY29uc3Qgc3RhdGVzID0gW107CisgICAgcGMuYWRk
RXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3RhdGVjaGFuZ2UnLCAoKSA9PiBzdGF0ZXMucHVzaChw
Yy5zaWduYWxpbmdTdGF0ZSkpOwogCiAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJU
b1JlY2VpdmVWaWRlbzogdHJ1ZSB9KQogICAgIC50aGVuKG9mZmVyID0+CkBAIC05MywyMCArOTcs
MjUgQEAKICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMu
c2lnbmFsaW5nU3RhdGUsICdoYXZlLXJlbW90ZS1wcmFuc3dlcicpOwogCi0gICAgICAgICAgYXNz
ZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbiwgb2ZmZXIpOwotICAg
ICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0
aW9uLCBvZmZlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjLmxv
Y2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3Np
bWlsYXIocGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLCBudWxsKTsKIAotICAgICAgICAg
IGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnJlbW90ZURlc2NyaXB0aW9uLCBwcmFuc3dl
cik7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMucGVuZGluZ1JlbW90
ZURlc2NyaXB0aW9uLCBwcmFuc3dlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19z
aW1pbGFyKHBjLnJlbW90ZURlc2NyaXB0aW9uLCBwcmFuc3dlcik7CisgICAgICAgICAgYXNzZXJ0
X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjLnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbiwgcHJhbnN3
ZXIpOwogICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9u
LCBudWxsKTsKKworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc3RhdGVzLCBbJ2hhdmUt
bG9jYWwtb2ZmZXInLCAnaGF2ZS1yZW1vdGUtcHJhbnN3ZXInXSk7CiAgICAgICAgIH0pOwogICAg
ICAgfSkpOwogICB9LCAnc2V0UmVtb3RlRGVzY3JpcHRpb24ocHJhbnN3ZXIpIGZyb20gaGF2ZS1s
b2NhbC1vZmZlciBzdGF0ZSBzaG91bGQgc3VjY2VlZCcpOwogCiAgIHByb21pc2VfdGVzdCh0ID0+
IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHRlc3Rfc3Rh
dGVfY2hhbmdlX2V2ZW50KHQsIHBjLCBbJ2hhdmUtbG9jYWwtb2ZmZXInLCAnaGF2ZS1yZW1vdGUt
cHJhbnN3ZXInXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAg
IGNvbnN0IHN0YXRlcyA9IFtdOworICAgIHBjLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25hbGluZ3N0
YXRlY2hhbmdlJywgKCkgPT4gc3RhdGVzLnB1c2gocGMuc2lnbmFsaW5nU3RhdGUpKTsKIAogICAg
IHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWUgfSkKICAg
ICAudGhlbihvZmZlciA9PgpAQCAtMTE2LDEzICsxMjUsMTkgQEAKICAgICAgICAgY29uc3QgcHJh
bnN3ZXIgPSB7IHR5cGU6ICdwcmFuc3dlcicsIHNkcDogYW5zd2VyLnNkcCB9OwogCiAgICAgICAg
IHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihwcmFuc3dlcikKLSAgICAgICAgLnRoZW4o
KCkgPT4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ocHJhbnN3ZXIpKTsKKyAgICAgICAgLnRoZW4o
KCkgPT4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ocHJhbnN3ZXIpKQorICAgICAgICAudGhlbigo
KSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzdGF0ZXMsIFsnaGF2ZS1sb2Nh
bC1vZmZlcicsICdoYXZlLXJlbW90ZS1wcmFuc3dlciddKTsKKyAgICAgICAgfSk7CiAgICAgICB9
KSk7CiAgIH0sICdzZXRSZW1vdGVEZXNjcmlwdGlvbihwcmFuc3dlcikgbXVsdGlwbGUgdGltZXMg
c2hvdWxkIHN1Y2NlZWQnKTsKIAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudCh0
LCBwYywgWydoYXZlLWxvY2FsLW9mZmVyJywgJ2hhdmUtcmVtb3RlLXByYW5zd2VyJywgJ3N0YWJs
ZSddKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgY29uc3Qg
c3RhdGVzID0gW107CisgICAgcGMuYWRkRXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3RhdGVjaGFu
Z2UnLCAoKSA9PiBzdGF0ZXMucHVzaChwYy5zaWduYWxpbmdTdGF0ZSkpOwogCiAgICAgcmV0dXJu
IHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZSB9KQogICAgIC50aGVu
KG9mZmVyID0+CkBAIC0xMzYsMTMgKzE1MSwxNSBAQAogICAgICAgICAudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5zaWduYWxpbmdTdGF0ZSwgJ3N0YWJsZScpOwogCi0g
ICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbiwg
b2ZmZXIpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmN1cnJlbnRM
b2NhbERlc2NyaXB0aW9uLCBvZmZlcik7CisgICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19z
aW1pbGFyKHBjLmxvY2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vz
c2lvbl9kZXNjX3NpbWlsYXIocGMuY3VycmVudExvY2FsRGVzY3JpcHRpb24sIG9mZmVyKTsKICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uLCBudWxsKTsK
IAotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLnJlbW90ZURlc2NyaXB0
aW9uLCBhbnN3ZXIpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2NfZXF1YWxzKHBjLmN1
cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiwgYW5zd2VyKTsKKyAgICAgICAgICBhc3NlcnRfc2Vzc2lv
bl9kZXNjX3NpbWlsYXIocGMucmVtb3RlRGVzY3JpcHRpb24sIGFuc3dlcik7CisgICAgICAgICAg
YXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiwg
YW5zd2VyKTsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnBlbmRpbmdSZW1vdGVEZXNjcmlw
dGlvbiwgbnVsbCk7CisKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0YXRlcywgWydo
YXZlLWxvY2FsLW9mZmVyJywgJ2hhdmUtcmVtb3RlLXByYW5zd2VyJywgJ3N0YWJsZSddKTsKICAg
ICAgICAgfSk7CiAgICAgICB9KSk7CiAgIH0sICdzZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIp
IGZyb20gaGF2ZS1yZW1vdGUtcHJhbnN3ZXIgc3RhdGUgc2hvdWxkIHN1Y2NlZWQnKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXJlcGxhY2VUcmFjay5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1yZXBsYWNl
VHJhY2suaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmOTYzNmM0YmMzMGRjZWRiOTdl
NjJlM2E3NDUyNTI2YjNmNzk2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRS
ZW1vdGVEZXNjcmlwdGlvbi1yZXBsYWNlVHJhY2suaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1BB
U1MgcmVwbGFjZVRyYWNrKCkgc2V0cyB0aGUgdHJhY2sgYXR0cmlidXRlIHRvIGEgbmV3IHRyYWNr
LiAKK1BBU1MgcmVwbGFjZVRyYWNrKCkgc2V0cyB0aGUgdHJhY2sgYXR0cmlidXRlIHRvIG51bGwu
IAorUEFTUyByZXBsYWNlVHJhY2soKSBkb2VzIG5vdCBzZXQgdGhlIHRyYWNrIHN5bmNocm9ub3Vz
bHkuIAorUEFTUyByZXBsYWNlVHJhY2soKSByZWplY3RzIHdoZW4gdGhlIHBlZXIgY29ubmVjdGlv
biBpcyBjbG9zZWQuIAorRkFJTCByZXBsYWNlVHJhY2soKSByZWplY3RzIHdoZW4gaW52b2tlZCBh
ZnRlciByZW1vdmVUcmFjaygpLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiSW52YWxpZE1vZGlm
aWNhdGlvbkVycm9yIiBidXQgZ290ICJJbnZhbGlkU3RhdGVFcnJvciIKK1RJTUVPVVQgcmVwbGFj
ZVRyYWNrKCkgcmVqZWN0cyBhZnRlciBhIHN1YnNlcXVlbnQgcmVtb3ZlVHJhY2soKS4gVGVzdCB0
aW1lZCBvdXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24t
cmVwbGFjZVRyYWNrLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlv
bi1yZXBsYWNlVHJhY2suaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yzk4ZWFlNTJjZDRjZTc4NzY1
NjcxY2NiZWE5ZWJlNTIzYmRlMTdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0
UmVtb3RlRGVzY3JpcHRpb24tcmVwbGFjZVRyYWNrLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNDUg
QEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5SVENQZWVy
Q29ubmVjdGlvbi5wcm90b3R5cGUuc2V0UmVtb3RlRGVzY3JpcHRpb24gLSByZXBsYWNlVHJhY2s8
L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorICAndXNlIHN0cmljdCc7CisKKyAgLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVu
Y3Rpb25zIGFyZSBjYWxsZWQgZnJvbSBSVENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanM6CisgIC8v
ICAgZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcworCisgIGFzeW5jX3Rlc3QodCA9PiB7Cisg
ICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgcmV0dXJuIGdldFVzZXJNZWRpYVRyYWNr
c0FuZFN0cmVhbXMoMikKKyAgICAudGhlbih0LnN0ZXBfZnVuYygoW3RyYWNrcywgc3RyZWFtc10p
ID0+IHsKKyAgICAgIGNvbnN0IHNlbmRlciA9IGNhbGxlci5hZGRUcmFjayh0cmFja3NbMF0sIHN0
cmVhbXNbMF0pOworICAgICAgcmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2sodHJhY2tzWzFdKQor
ICAgICAgLnRoZW4odC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKHNl
bmRlci50cmFjaywgdHJhY2tzWzFdKTsKKyAgICAgICAgdC5kb25lKCk7CisgICAgICB9KSk7Cisg
ICAgfSkpCisgICAgLmNhdGNoKHQuc3RlcF9mdW5jKHJlYXNvbiA9PiB7CisgICAgICBhc3NlcnRf
dW5yZWFjaGVkKHJlYXNvbik7CisgICAgfSkpOworICB9LCAncmVwbGFjZVRyYWNrKCkgc2V0cyB0
aGUgdHJhY2sgYXR0cmlidXRlIHRvIGEgbmV3IHRyYWNrLicpOworCisgIGFzeW5jX3Rlc3QodCA9
PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgcmV0dXJuIGdldFVzZXJNZWRp
YVRyYWNrc0FuZFN0cmVhbXMoMSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYygoW3RyYWNrcywgc3Ry
ZWFtc10pID0+IHsKKyAgICAgIGNvbnN0IHNlbmRlciA9IGNhbGxlci5hZGRUcmFjayh0cmFja3Nb
MF0sIHN0cmVhbXNbMF0pOworICAgICAgcmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2sobnVsbCkK
KyAgICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhz
ZW5kZXIudHJhY2ssIG51bGwpOworICAgICAgICB0LmRvbmUoKTsKKyAgICAgIH0pKTsKKyAgICB9
KSkKKyAgICAuY2F0Y2godC5zdGVwX2Z1bmMocmVhc29uID0+IHsKKyAgICAgIGFzc2VydF91bnJl
YWNoZWQocmVhc29uKTsKKyAgICB9KSk7CisgIH0sICdyZXBsYWNlVHJhY2soKSBzZXRzIHRoZSB0
cmFjayBhdHRyaWJ1dGUgdG8gbnVsbC4nKTsKKworICBhc3luY190ZXN0KHQgPT4geworICAgIGNv
bnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIHJldHVybiBnZXRVc2VyTWVkaWFUcmFja3NBbmRT
dHJlYW1zKDIpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMoKFt0cmFja3MsIHN0cmVhbXNdKSA9PiB7
CisgICAgICBjb25zdCBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2sodHJhY2tzWzBdLCBzdHJlYW1z
WzBdKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCB0cmFja3NbMF0pOworICAg
ICAgc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFja3NbMV0pOworICAgICAgLy8gcmVwbGFjZVRyYWNr
KCkgaXMgYXN5bmNocm9ub3VzLCB0aGVyZSBzaG91bGQgYmUgbm8gc3luY2hyb25vdXNseQorICAg
ICAgLy8gb2JzZXJ2YWJsZSBlZmZlY3RzLgorICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJh
Y2ssIHRyYWNrc1swXSk7CisgICAgICB0LmRvbmUoKTsKKyAgICB9KSkKKyAgICAuY2F0Y2godC5z
dGVwX2Z1bmMocmVhc29uID0+IHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQocmVhc29uKTsKKyAg
ICB9KSk7CisgIH0sICdyZXBsYWNlVHJhY2soKSBkb2VzIG5vdCBzZXQgdGhlIHRyYWNrIHN5bmNo
cm9ub3VzbHkuJyk7CisKKyAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBleHBlY3RlZEV4
Y2VwdGlvbiA9ICdJbnZhbGlkU3RhdGVFcnJvcic7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2Uo
KSk7CisgICAgcmV0dXJuIGdldFVzZXJNZWRpYVRyYWNrc0FuZFN0cmVhbXMoMikKKyAgICAudGhl
bih0LnN0ZXBfZnVuYygoW3RyYWNrcywgc3RyZWFtc10pID0+IHsKKyAgICAgIGNvbnN0IHNlbmRl
ciA9IGNhbGxlci5hZGRUcmFjayh0cmFja3NbMF0sIHN0cmVhbXNbMF0pOworICAgICAgY2FsbGVy
LmNsb3NlKCk7CisgICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFja3NbMV0pCisg
ICAgICAudGhlbih0LnN0ZXBfZnVuYygoKSA9PiB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J0V4cGVjdGVkIHJlcGxhY2VUcmFjaygpIHRvIGJlIHJlamVjdGVkIHdpdGggJyArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRFeGNlcHRpb24gKyAnIGJ1dCB0aGUgcHJvbWlzZSB3
YXMgcmVzb2x2ZWQuJyk7CisgICAgICB9KSwKKyAgICAgIHQuc3RlcF9mdW5jKGUgPT4geworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGUubmFtZSwgZXhwZWN0ZWRFeGNlcHRpb24pOworICAgICAgICB0
LmRvbmUoKTsKKyAgICAgIH0pKTsKKyAgICB9KSkKKyAgICAuY2F0Y2godC5zdGVwX2Z1bmMocmVh
c29uID0+IHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQocmVhc29uKTsKKyAgICB9KSk7CisgIH0s
ICdyZXBsYWNlVHJhY2soKSByZWplY3RzIHdoZW4gdGhlIHBlZXIgY29ubmVjdGlvbiBpcyBjbG9z
ZWQuJyk7CisKKyAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBleHBlY3RlZEV4Y2VwdGlv
biA9ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InOworICAgIGNvbnN0IGNhbGxlciA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNsb3Nl
KCkpOworICAgIHJldHVybiBnZXRVc2VyTWVkaWFUcmFja3NBbmRTdHJlYW1zKDIpCisgICAgLnRo
ZW4odC5zdGVwX2Z1bmMoKFt0cmFja3MsIHN0cmVhbXNdKSA9PiB7CisgICAgICBjb25zdCBzZW5k
ZXIgPSBjYWxsZXIuYWRkVHJhY2sodHJhY2tzWzBdLCBzdHJlYW1zWzBdKTsKKyAgICAgIGNhbGxl
ci5yZW1vdmVUcmFjayhzZW5kZXIpOworICAgICAgLy8gcmVwbGFjZVRyYWNrKCkgc2hvdWxkIGZh
aWwgYmVjYXVzZSB0aGUgc2VuZGVyIHNob3VsZCBiZSBpbmFjdGl2ZSBhZnRlcgorICAgICAgLy8g
cmVtb3ZlVHJhY2soKS4KKyAgICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNrKHRyYWNrc1sx
XSkKKyAgICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgnRXhwZWN0ZWQgcmVwbGFjZVRyYWNrKCkgdG8gYmUgcmVqZWN0ZWQgd2l0aCAnICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZEV4Y2VwdGlvbiArICcgYnV0IHRoZSBwcm9t
aXNlIHdhcyByZXNvbHZlZC4nKTsKKyAgICAgIH0pLAorICAgICAgdC5zdGVwX2Z1bmMoZSA9PiB7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5uYW1lLCBleHBlY3RlZEV4Y2VwdGlvbik7CisgICAg
ICAgIHQuZG9uZSgpOworICAgICAgfSkpOworICAgIH0pKQorICAgIC5jYXRjaCh0LnN0ZXBfZnVu
YyhyZWFzb24gPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZChyZWFzb24pOworICAgIH0pKTsK
KyAgfSwgJ3JlcGxhY2VUcmFjaygpIHJlamVjdHMgd2hlbiBpbnZva2VkIGFmdGVyIHJlbW92ZVRy
YWNrKCkuJyk7CisKKyAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBleHBlY3RlZEV4Y2Vw
dGlvbiA9ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InOworICAgIGNvbnN0IGNhbGxlciA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNs
b3NlKCkpOworICAgIHJldHVybiBnZXRVc2VyTWVkaWFUcmFja3NBbmRTdHJlYW1zKDIpCisgICAg
LnRoZW4odC5zdGVwX2Z1bmMoKFt0cmFja3MsIHN0cmVhbXNdKSA9PiB7CisgICAgICBjb25zdCBz
ZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2sodHJhY2tzWzBdLCBzdHJlYW1zWzBdKTsKKyAgICAgIGxl
dCBwID0gc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFja3NbMV0pCisgICAgICBjYWxsZXIucmVtb3Zl
VHJhY2soc2VuZGVyKTsKKyAgICAgIC8vIHJlcGxhY2VUcmFjaygpIHNob3VsZCBmYWlsIGJlY2F1
c2UgaXQgZXhlY3V0ZXMgc3RlcHMgaW4gcGFyYWxsZWwgYW5kCisgICAgICAvLyBxdWV1ZXMgYSB0
YXNrIHRvIGV4ZWN1dGUgYWZ0ZXIgcmVtb3ZlVHJhY2soKSBoYXMgb2NjdXJyZWQuIFRoZSBzZW5k
ZXIKKyAgICAgIC8vIHNob3VsZCBiZSBpbmFjdGl2ZS4gSWYgdGhpcyBjYW4gYmUgcmFjeSwgdXBk
YXRlIG9yIHJlbW92ZSB0aGUgdGVzdC4KKyAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mv
d2VicnRjLXBjL2lzc3Vlcy8xNzI4CisgICAgICByZXR1cm4gcC50aGVuKHQuc3RlcF9mdW5jKCgp
ID0+IHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnRXhwZWN0ZWQgcmVwbGFjZVRyYWNrKCkg
dG8gYmUgcmVqZWN0ZWQgd2l0aCAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZEV4Y2VwdGlvbiArICcgYnV0IHRoZSBwcm9taXNlIHdhcyByZXNvbHZlZC4nKTsKKyAgICAgIH0p
LAorICAgICAgdC5zdGVwX2Z1bmMoZSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5uYW1l
LCBleHBlY3RlZEV4Y2VwdGlvbik7CisgICAgICAgIHQuZG9uZSgpOworICAgICAgfSkpOworICAg
IH0pKQorICAgIC5jYXRjaCh0LnN0ZXBfZnVuYyhyZWFzb24gPT4geworICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZChyZWFzb24pOworICAgIH0pKTsKKyAgfSwgJ3JlcGxhY2VUcmFjaygpIHJlamVjdHMg
YWZ0ZXIgYSBzdWJzZXF1ZW50IHJlbW92ZVRyYWNrKCkuJyk7CisKKyAgLy8gVE9ETyhoYm9zKTog
VmVyaWZ5IHRoYXQgcmVwbGFjZVRyYWNrKCkgY2hhbmdlcyB3aGF0IG1lZGlhIGlzIHJlY2VpdmVk
IG9uCisgIC8vIHRoZSByZW1vdGUgZW5kIG9mIHR3byBjb25uZWN0ZWQgcGVlciBjb25uZWN0aW9u
cy4gRm9yIHZpZGVvIHRyYWNrcywgdGhpcworICAvLyByZXF1aXJlcyBDaHJvbWl1bSdzIHZpZGVv
IHRhZyB0byB1cGRhdGUgb24gcmVjZWl2aW5nIGZyYW1lcyB3aGVuIHJ1bm5pbmcKKyAgLy8gY29u
dGVudF9zaGVsbC4gaHR0cHM6Ly9jcmJ1Zy5jb20vNzkzODA4CisKKzwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tcm9sbGJhY2stZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tcm9sbGJhY2stZXhwZWN0ZWQu
dHh0CmluZGV4IDA1MGE5ZWVjMDljYjBkNTY2NmExNmE1NzRjZDJhMzU3Yzg2NTIyNjguLjM4ODdm
Mzg2ZDYzMzJlYzliOWE1ZmNhYWZiYzFiNjNkMjgxZjllMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0
aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXJvbGxiYWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1yb2xsYmFjay1leHBlY3RlZC50eHQKQEAgLTEs
OCArMSw1IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCiBG
QUlMIHNldFJlbW90ZURlc2NyaXB0aW9uKHJvbGxiYWNrKSBpbiBoYXZlLXJlbW90ZS1vZmZlciBz
dGF0ZSBzaG91bGQgcmV2ZXJ0IHRvIHN0YWJsZSBzdGF0ZSB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAncGMuY3JlYXRlRGF0YUNoYW5uZWwnKQogUEFTUyBzZXRSZW1vdGVE
ZXNjcmlwdGlvbihyb2xsYmFjaykgZnJvbSBzdGFibGUgc3RhdGUgc2hvdWxkIHJlamVjdCB3aXRo
IEludmFsaWRTdGF0ZUVycm9yIAogRkFJTCBzZXRSZW1vdGVEZXNjcmlwdGlvbihyb2xsYmFjaykg
c2hvdWxkIGlnbm9yZSBpbnZhbGlkIHNkcCBjb250ZW50IGFuZCBzdWNjZWVkIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkludmFsaWRTdGF0ZUVy
cm9yOiBEZXNjcmlwdGlvbiB0eXBlIGluY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgc2lnbmFsaW5n
IHN0YXRlIgotVElNRU9VVCBUZXN0IG9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UgZXZlbnQgZm9yIHNl
dFJlbW90ZURlc2NyaXB0aW9uKHJvbGxiYWNrKSBpbiBoYXZlLXJlbW90ZS1vZmZlciBzdGF0ZSBz
aG91bGQgcmV2ZXJ0IHRvIHN0YWJsZSBzdGF0ZSBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQ
ZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1yb2xsYmFjay5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5l
Y3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tcm9sbGJhY2suaHRtbAppbmRleCA5MzFhMjVmOTJi
MGJkOWE3ZGNjMTIwZmE1OTQwYjlkOGU4MTBlZTA3Li4wMTk2OWRjZTMxMGM3ODU2MWQ5N2YyMmEw
Y2M2ZGE5MzkwYmYwYzI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlw
dGlvbi1yb2xsYmFjay5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9u
LXJvbGxiYWNrLmh0bWwKQEAgLTEyLDggKzEyLDcgQEAKIAogICAvLyBUaGUgZm9sbG93aW5nIGhl
bHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5q
czoKICAgLy8gICBnZW5lcmF0ZU9mZmVyCi0gIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVh
bHMKLSAgLy8gICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudAorICAvLyAgIGFzc2VydF9zZXNzaW9u
X2Rlc2Nfc2ltaWxhcgogCiAgIC8qCiAgICAgNC4zLjIuICBJbnRlcmZhY2UgRGVmaW5pdGlvbgpA
QCAtNTksOCArNTgsMTAgQEAKICAgICovCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25z
dCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4g
cGMuY2xvc2UoKSk7CiAKLSAgICB0ZXN0X3N0YXRlX2NoYW5nZV9ldmVudCh0LCBwYywgWydoYXZl
LXJlbW90ZS1vZmZlcicsICdzdGFibGUnXSk7CisgICAgY29uc3Qgc3RhdGVzID0gW107CisgICAg
cGMuYWRkRXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3RhdGVjaGFuZ2UnLCAoKSA9PiBzdGF0ZXMu
cHVzaChwYy5zaWduYWxpbmdTdGF0ZSkpOwogCiAgICAgcmV0dXJuIGdlbmVyYXRlT2ZmZXIoeyBk
YXRhOiB0cnVlIH0pCiAgICAgLnRoZW4ob2ZmZXIgPT4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24o
b2ZmZXIpKQpAQCAtNzcsNiArNzgsOCBAQAogICAgICAgYXNzZXJ0X2VxdWFscyhwYy5yZW1vdGVE
ZXNjcmlwdGlvbiwgbnVsbCk7CiAgICAgICBhc3NlcnRfZXF1YWxzKHBjLnBlbmRpbmdSZW1vdGVE
ZXNjcmlwdGlvbiwgbnVsbCk7CiAgICAgICBhc3NlcnRfZXF1YWxzKHBjLmN1cnJlbnRSZW1vdGVE
ZXNjcmlwdGlvbiwgbnVsbCk7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc3RhdGVzLCBb
J2hhdmUtcmVtb3RlLW9mZmVyJywgJ3N0YWJsZSddKTsKICAgICB9KTsKICAgfSwgJ3NldFJlbW90
ZURlc2NyaXB0aW9uKHJvbGxiYWNrKSBpbiBoYXZlLXJlbW90ZS1vZmZlciBzdGF0ZSBzaG91bGQg
cmV2ZXJ0IHRvIHN0YWJsZSBzdGF0ZScpOwogCkBAIC05NCwxMiArOTcsMTQgQEAKICAgICovCiAg
IHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAgcGMuc2V0UmVtb3Rl
RGVzY3JpcHRpb24oeyB0eXBlOiAncm9sbGJhY2snIH0pKTsKICAgfSwgYHNldFJlbW90ZURlc2Ny
aXB0aW9uKHJvbGxiYWNrKSBmcm9tIHN0YWJsZSBzdGF0ZSBzaG91bGQgcmVqZWN0IHdpdGggSW52
YWxpZFN0YXRlRXJyb3JgKTsKIAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNs
b3NlKCkpOwogICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNlaXZlQXVkaW86
IHRydWUgfSkKICAgICAudGhlbihvZmZlciA9PiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZl
cikpCiAgICAgLnRoZW4oKCkgPT4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
UGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tdHJhY2tzLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXRyYWNrcy5odHRwcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhmY2U1Zjk2ZDRjNGRkMzY5ODFiOWNmODNiNmFiODMzOWVk
MmIzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9u
LXRyYWNrcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitIYXJuZXNzIEVy
cm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBhZGRUcmFjaygpIHdpdGggYSB0
cmFjayBhbmQgbm8gc3RyZWFtIG1ha2VzIG9udHJhY2sgZmlyZSB3aXRoIGEgdHJhY2sgYW5kIG5v
IHN0cmVhbS4gCitQQVNTIGFkZFRyYWNrKCkgd2l0aCBhIHRyYWNrIGFuZCBhIHN0cmVhbSBtYWtl
cyBvbnRyYWNrIGZpcmUgd2l0aCBhIHRyYWNrIGFuZCBhIHN0cmVhbS4gCitQQVNTIG9udHJhY2sg
ZmlyZXMgYmVmb3JlIHNldFJlbW90ZURlc2NyaXB0aW9uIHJlc29sdmVzLiAKK0ZBSUwgYWRkVHJh
Y2soKSB3aXRoIHR3byB0cmFja3MgYW5kIG9uZSBzdHJlYW0gbWFrZXMgb250cmFjayBmaXJlIHR3
aWNlIHdpdGggdGhlIHRyYWNrcyBhbmQgc2hhcmVkIHN0cmVhbS4gYXNzZXJ0X2FycmF5X2VxdWFs
czogVGhlIHJlbW90ZSBzdHJlYW0gPT0gW2ZpcnN0IHRyYWNrLCBzZWNvbmQgdHJhY2tdLiBwcm9w
ZXJ0eSAwLCBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgTWVkaWFTdHJlYW1UcmFja10iIGJ1dCBn
b3Qgb2JqZWN0ICJbb2JqZWN0IE1lZGlhU3RyZWFtVHJhY2tdIgorUEFTUyBhZGRUcmFjaygpIGZv
ciBhbiBleGlzdGluZyBzdHJlYW0gbWFrZXMgc3RyZWFtLm9uYWRkdHJhY2sgZmlyZS4gCitQQVNT
IHN0cmVhbS5vbmFkZHRyYWNrIGZpcmVzIGJlZm9yZSBzZXRSZW1vdGVEZXNjcmlwdGlvbiByZXNv
bHZlcy4gCitQQVNTIGFkZFRyYWNrKCkgd2l0aCBhIHRyYWNrIGFuZCB0d28gc3RyZWFtcyBtYWtl
cyBvbnRyYWNrIGZpcmUgd2l0aCBhIHRyYWNrIGFuZCB0d28gc3RyZWFtcy4gCitQQVNTIG9udHJh
Y2sncyByZWNlaXZlciBtYXRjaGVzIGdldFJlY2VpdmVycygpLiAKK1BBU1MgcmVtb3ZlVHJhY2so
KSBkb2VzIG5vdCByZW1vdmUgdGhlIHJlY2VpdmVyLiAKK1RJTUVPVVQgcmVtb3ZlVHJhY2soKSBt
YWtlcyBzdHJlYW0ub25yZW1vdmV0cmFjayBmaXJlIGFuZCB0aGUgdHJhY2sgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBzdHJlYW0uIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gc3RyZWFtLm9ucmVtb3Zl
dHJhY2sgZmlyZXMgYmVmb3JlIHNldFJlbW90ZURlc2NyaXB0aW9uIHJlc29sdmVzLiAKK05PVFJV
TiByZW1vdmVUcmFjaygpIG1ha2VzIHRyYWNrLm9ubXV0ZSBmaXJlIGFuZCB0aGUgdHJhY2sgdG8g
YmUgbXV0ZWQuIAorTk9UUlVOIHRyYWNrLm9ubXV0ZSBmaXJlcyBiZWZvcmUgc2V0UmVtb3RlRGVz
Y3JpcHRpb24gcmVzb2x2ZXMuIAorTk9UUlVOIHJlbW92ZVRyYWNrKCkgdHdpY2UgaXMgc2FmZS4g
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXRyYWNrcy5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tdHJhY2tzLmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzE3OWYxZWY3OGNjZDViNWI5NTZkZjYyNDFkMGIyYjQ3Yzc0MjVh
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLXRy
YWNrcy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMzczIEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRh
IGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnNldFJl
bW90ZURlc2NyaXB0aW9uIC0gYWRkL3JlbW92ZSByZW1vdGUgdHJhY2tzPC90aXRsZT4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJSVENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgJ3Vz
ZSBzdHJpY3QnOworCisgIC8vIFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2Fs
bGVkIGZyb20gUlRDUGVlckNvbm5lY3Rpb24taGVscGVyLmpzOgorICAvLyAgIGFkZEV2ZW50TGlz
dGVuZXJQcm9taXNlCisgIC8vICAgZXhjaGFuZ2VPZmZlcgorICAvLyAgIGV4Y2hhbmdlT2ZmZXJB
bnN3ZXIKKyAgLy8gICBSZXNvbHZlcgorCisgIC8vIFRoZXNlIHRlc3RzIGFyZSBjb25jZXJuZWQg
d2l0aCB0aGUgb2JzZXJ2YWJsZSBjb25zZXF1ZW5jZXMgb2YgcHJvY2Vzc2luZworICAvLyB0aGUg
YWRkaXRpb24gb3IgcmVtb3ZhbCBvZiByZW1vdGUgdHJhY2tzLCBpbmNsdWRpbmcgZXZlbnRzIGZp
cmluZyBhbmQgdGhlCisgIC8vIHN0YXRlcyBvZiBSVENQZWVyQ29ubmVjdGlvbiwgTWVkaWFTdHJl
YW0gYW5kIE1lZGlhU3RyZWFtVHJhY2suCisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkp
OworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0KKyAgICAgICAgYXdhaXQgZ2V0Tm9pc2VTdHJlYW0o
e2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0cmVhbS5nZXRU
cmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNhbGxlci5hZGRU
cmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSk7CisgICAgY29uc3Qgb250cmFja1Byb21p
c2UgPSBhZGRFdmVudExpc3RlbmVyUHJvbWlzZSh0LCBjYWxsZWUsICd0cmFjaycsIGUgPT4gewor
ICAgICAgYXNzZXJ0X2VxdWFscyhlLnRyYWNrLmlkLCBsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVsw
XS5pZCwKKyAgICAgICAgICAgICAgICAgICAgJ0xvY2FsIGFuZCByZW1vdGUgdHJhY2sgSURzIG1h
dGNoLicpOworICAgICAgYXNzZXJ0X2VxdWFscyhlLnN0cmVhbXMubGVuZ3RoLCAwLCAnTm8gcmVt
b3RlIHN0cmVhbSBjcmVhdGVkLicpOworICAgIH0pOworICAgIGF3YWl0IGV4Y2hhbmdlT2ZmZXIo
Y2FsbGVyLCBjYWxsZWUpOworICAgIGF3YWl0IG9udHJhY2tQcm9taXNlOworICB9LCAnYWRkVHJh
Y2soKSB3aXRoIGEgdHJhY2sgYW5kIG5vIHN0cmVhbSBtYWtlcyBvbnRyYWNrIGZpcmUgd2l0aCBh
IHRyYWNrIGFuZCBubyBzdHJlYW0uJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkp
OworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0KKyAgICAgICAgYXdhaXQgZ2V0Tm9pc2VTdHJlYW0o
e2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0cmVhbS5nZXRU
cmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNhbGxlci5hZGRU
cmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgIGNvbnN0
IG9udHJhY2tQcm9taXNlID0gYWRkRXZlbnRMaXN0ZW5lclByb21pc2UodCwgY2FsbGVlLCAndHJh
Y2snLCBlID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZS50cmFjay5pZCwgbG9jYWxTdHJlYW0u
Z2V0VHJhY2tzKClbMF0uaWQsCisgICAgICAgICAgICAgICAgICAgICdMb2NhbCBhbmQgcmVtb3Rl
IHRyYWNrIElEcyBtYXRjaC4nKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZS5zdHJlYW1zLmxlbmd0
aCwgMSwgJ0NyZWF0ZWQgYSBzaW5nbGUgcmVtb3RlIHN0cmVhbS4nKTsKKyAgICAgIGFzc2VydF9l
cXVhbHMoZS5zdHJlYW1zWzBdLmlkLCBsb2NhbFN0cmVhbS5pZCwKKyAgICAgICAgICAgICAgICAg
ICAgJ0xvY2FsIGFuZCByZW1vdGUgc3RyZWFtIElEcyBtYXRjaC4nKTsKKyAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoZS5zdHJlYW1zWzBdLmdldFRyYWNrcygpLCBbZS50cmFja10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICdUaGUgcmVtb3RlIHN0cmVhbSBjb250YWlucyB0aGUgcmVtb3Rl
IHRyYWNrLicpOworICAgIH0pOworICAgIGF3YWl0IGV4Y2hhbmdlT2ZmZXIoY2FsbGVyLCBjYWxs
ZWUpOworICAgIGF3YWl0IG9udHJhY2tQcm9taXNlOworICB9LCAnYWRkVHJhY2soKSB3aXRoIGEg
dHJhY2sgYW5kIGEgc3RyZWFtIG1ha2VzIG9udHJhY2sgZmlyZSB3aXRoIGEgdHJhY2sgYW5kIGEg
c3RyZWFtLicpOworCisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjYWxs
ZXIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNh
bGxlci5jbG9zZSgpKTsKKyAgICBjb25zdCBjYWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBsZXQgZXZl
bnRTZXF1ZW5jZSA9ICcnOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0KKyAgICAgICAgYXdhaXQg
Z2V0Tm9pc2VTdHJlYW0oe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBs
b2NhbFN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOwor
ICAgIGNhbGxlci5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJl
YW0pOworICAgIGNvbnN0IG9udHJhY2tQcm9taXNlID0gYWRkRXZlbnRMaXN0ZW5lclByb21pc2Uo
dCwgY2FsbGVlLCAndHJhY2snLCBlID0+IHsKKyAgICAgIGV2ZW50U2VxdWVuY2UgKz0gJ29udHJh
Y2s7JzsKKyAgICB9KTsKKyAgICBhd2FpdCBleGNoYW5nZU9mZmVyKGNhbGxlciwgY2FsbGVlKTsK
KyAgICBldmVudFNlcXVlbmNlICs9ICdzZXRSZW1vdGVEZXNjcmlwdGlvbjsnOworICAgIGF3YWl0
IG9udHJhY2tQcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoZXZlbnRTZXF1ZW5jZSwgJ29udHJh
Y2s7c2V0UmVtb3RlRGVzY3JpcHRpb247Jyk7CisgIH0sICdvbnRyYWNrIGZpcmVzIGJlZm9yZSBz
ZXRSZW1vdGVEZXNjcmlwdGlvbiByZXNvbHZlcy4nKTsKKworICBwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUu
Y2xvc2UoKSk7CisgICAgY29uc3QgbG9jYWxTdHJlYW1zID0gYXdhaXQgUHJvbWlzZS5hbGwoWwor
ICAgICAgZ2V0Tm9pc2VTdHJlYW0oe2F1ZGlvOiB0cnVlfSksCisgICAgICBnZXROb2lzZVN0cmVh
bSh7YXVkaW86IHRydWV9KSwKKyAgICBdKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGxvY2Fs
U3RyZWFtcy5mb3JFYWNoKChzdHJlYW0pID0+CisgICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9y
RWFjaCgodHJhY2spID0+IHRyYWNrLnN0b3AoKSkpKTsKKyAgICBjYWxsZXIuYWRkVHJhY2sobG9j
YWxTdHJlYW1zWzBdLmdldFRyYWNrcygpWzBdLCBsb2NhbFN0cmVhbXNbMF0pOworICAgIGNhbGxl
ci5hZGRUcmFjayhsb2NhbFN0cmVhbXNbMV0uZ2V0VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtc1sw
XSk7CisgICAgbGV0IG9udHJhY2tFdmVudHNGaXJlZCA9IDA7CisgICAgY29uc3Qgb250cmFja0V2
ZW50UmVzb2x2ZXJzID0gWyBuZXcgUmVzb2x2ZXIoKSwgbmV3IFJlc29sdmVyKCkgXTsKKyAgICBj
YWxsZWUub250cmFjayA9IHQuc3RlcF9mdW5jKGUgPT4geworICAgICAgb250cmFja0V2ZW50UmVz
b2x2ZXJzW29udHJhY2tFdmVudHNGaXJlZCsrXS5yZXNvbHZlKGUpOworICAgIH0pOworICAgIGF3
YWl0IGV4Y2hhbmdlT2ZmZXIoY2FsbGVyLCBjYWxsZWUpOworICAgIGxldCBmaXJzdFRyYWNrRXZl
bnQgPSBhd2FpdCBvbnRyYWNrRXZlbnRSZXNvbHZlcnNbMF0ucHJvbWlzZTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGZpcnN0VHJhY2tFdmVudC50cmFjay5pZCwKKyAgICAgICAgICAgICAgICAgIGxvY2Fs
U3RyZWFtc1swXS5nZXRUcmFja3MoKVswXS5pZCwKKyAgICAgICAgICAgICAgICAgICdGaXJzdCBv
bnRyYWNrXCdzIHRyYWNrIElEIG1hdGNoZXMgZmlyc3QgbG9jYWwgdHJhY2suJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhmaXJzdFRyYWNrRXZlbnQuc3RyZWFtcy5sZW5ndGgsIDEsCisgICAgICAgICAg
ICAgICAgICAnRmlyc3Qgb250cmFjayBmaXJlcyB3aXRoIGEgc2luZ2xlIHN0cmVhbS4nKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGZpcnN0VHJhY2tFdmVudC5zdHJlYW1zWzBdLmlkLAorICAgICAgICAg
ICAgICAgICAgbG9jYWxTdHJlYW1zWzBdLmlkLAorICAgICAgICAgICAgICAgICAgJ0ZpcnN0IG9u
dHJhY2tcJ3Mgc3RyZWFtIElEIG1hdGNoZXMgbG9jYWwgc3RyZWFtLicpOworICAgIGxldCBzZWNv
bmRUcmFja0V2ZW50ID0gYXdhaXQgb250cmFja0V2ZW50UmVzb2x2ZXJzWzFdLnByb21pc2U7Cisg
ICAgYXNzZXJ0X2VxdWFscyhzZWNvbmRUcmFja0V2ZW50LnRyYWNrLmlkLAorICAgICAgICAgICAg
ICAgICAgbG9jYWxTdHJlYW1zWzFdLmdldFRyYWNrcygpWzBdLmlkLAorICAgICAgICAgICAgICAg
ICAgJ1NlY29uZCBvbnRyYWNrXCdzIHRyYWNrIElEIG1hdGNoZXMgc2Vjb25kIGxvY2FsIHRyYWNr
LicpOworICAgIGFzc2VydF9lcXVhbHMoc2Vjb25kVHJhY2tFdmVudC5zdHJlYW1zLmxlbmd0aCwg
MSwKKyAgICAgICAgICAgICAgICAgICdTZWNvbmQgb250cmFjayBmaXJlcyB3aXRoIGEgc2luZ2xl
IHN0cmVhbS4nKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlY29uZFRyYWNrRXZlbnQuc3RyZWFtc1sw
XS5pZCwKKyAgICAgICAgICAgICAgICAgIGxvY2FsU3RyZWFtc1swXS5pZCwKKyAgICAgICAgICAg
ICAgICAgICdTZWNvbmQgb250cmFja1wncyBzdHJlYW0gSUQgbWF0Y2hlcyBsb2NhbCBzdHJlYW0u
Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhmaXJzdFRyYWNrRXZlbnQuc3RyZWFtcywgc2Vj
b25kVHJhY2tFdmVudC5zdHJlYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgJ29udHJhY2sg
d2FzIGZpcmVkIHdpdGggdGhlIHNhbWUgc3RyZWFtcyBib3RoIHRpbWVzLicpOworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoZmlyc3RUcmFja0V2ZW50LnN0cmVhbXNbMF0uZ2V0VHJhY2tzKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBbZmlyc3RUcmFja0V2ZW50LnRyYWNrLCBzZWNvbmRUcmFj
a0V2ZW50LnRyYWNrXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgcmVtb3RlIHN0cmVh
bSA9PSBbZmlyc3QgdHJhY2ssIHNlY29uZCB0cmFja10uJyk7CisgICAgYXNzZXJ0X2VxdWFscyhv
bnRyYWNrRXZlbnRzRmlyZWQsIDIsICdVbmV4cGVjdGVkIG51bWJlciBvZiB0cmFjayBldmVudHMu
Jyk7CisgIH0sICdhZGRUcmFjaygpIHdpdGggdHdvIHRyYWNrcyBhbmQgb25lIHN0cmVhbSBtYWtl
cyBvbnRyYWNrIGZpcmUgdHdpY2Ugd2l0aCB0aGUgdHJhY2tzIGFuZCBzaGFyZWQgc3RyZWFtLicp
OworCisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjYWxsZXIgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlci5jbG9z
ZSgpKTsKKyAgICBjb25zdCBjYWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBsZXQgZXZlbnRTZXF1ZW5j
ZSA9ICcnOworICAgIGNvbnN0IGxvY2FsU3RyZWFtcyA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAg
ICAgIGdldE5vaXNlU3RyZWFtKHthdWRpbzogdHJ1ZX0pLAorICAgICAgZ2V0Tm9pc2VTdHJlYW0o
e2F1ZGlvOiB0cnVlfSksCisgICAgXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0
cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PgorICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVh
Y2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpKSk7CisgICAgY2FsbGVyLmFkZFRyYWNrKGxvY2Fs
U3RyZWFtc1swXS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW1zWzBdKTsKKyAgICBjb25zdCBy
ZW1vdGVTdHJlYW1zID0gW107CisgICAgY2FsbGVlLm9udHJhY2sgPSBlID0+IHsKKyAgICAgIGlm
ICghcmVtb3RlU3RyZWFtcy5pbmNsdWRlcyhlLnN0cmVhbXNbMF0pKQorICAgICAgICByZW1vdGVT
dHJlYW1zLnB1c2goZS5zdHJlYW1zWzBdKTsKKyAgICB9OworICAgIGF3YWl0IGV4Y2hhbmdlT2Zm
ZXJBbnN3ZXIoY2FsbGVyLCBjYWxsZWUpOworICAgIGFzc2VydF9lcXVhbHMocmVtb3RlU3RyZWFt
cy5sZW5ndGgsIDEsICdPbmUgcmVtb3RlIHN0cmVhbSBjcmVhdGVkLicpOworICAgIGFzc2VydF9l
cXVhbHMocmVtb3RlU3RyZWFtc1swXS5nZXRUcmFja3MoKVswXS5pZCwKKyAgICAgICAgICAgICAg
ICAgIGxvY2FsU3RyZWFtc1swXS5nZXRUcmFja3MoKVswXS5pZCwKKyAgICAgICAgICAgICAgICAg
ICdGaXJzdCBsb2NhbCBhbmQgcmVtb3RlIHRyYWNrcyBoYXZlIHRoZSBzYW1lIElELicpOworICAg
IGNvbnN0IG9uYWRkdHJhY2tQcm9taXNlID0KKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lclByb21p
c2UodCwgcmVtb3RlU3RyZWFtc1swXSwgJ2FkZHRyYWNrJywgZSA9PiB7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGUudHJhY2suaWQsIGxvY2FsU3RyZWFtc1sxXS5nZXRUcmFja3MoKVswXS5pZCwKKyAg
ICAgICAgICAgICAgICAgICAgJ1NlY29uZCBsb2NhbCBhbmQgcmVtb3RlIHRyYWNrcyBoYXZlIHRo
ZSBzYW1lIElELicpOworICAgIH0pOworICAgIGNhbGxlci5hZGRUcmFjayhsb2NhbFN0cmVhbXNb
MV0uZ2V0VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtc1swXSk7CisgICAgYXdhaXQgZXhjaGFuZ2VP
ZmZlcihjYWxsZXIsIGNhbGxlZSk7CisgICAgYXdhaXQgb25hZGR0cmFja1Byb21pc2U7CisgICAg
YXNzZXJ0X2VxdWFscyhyZW1vdGVTdHJlYW1zLmxlbmd0aCwgMSwgJ1N0aWxsIGEgc2luZ2xlIHJl
bW90ZSBzdHJlYW0uJyk7CisgIH0sICdhZGRUcmFjaygpIGZvciBhbiBleGlzdGluZyBzdHJlYW0g
bWFrZXMgc3RyZWFtLm9uYWRkdHJhY2sgZmlyZS4nKTsKKworICBwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUu
Y2xvc2UoKSk7CisgICAgbGV0IGV2ZW50U2VxdWVuY2UgPSAnJzsKKyAgICBjb25zdCBsb2NhbFN0
cmVhbXMgPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICBnZXROb2lzZVN0cmVhbSh7YXVkaW86
IHRydWV9KSwKKyAgICAgIGdldE5vaXNlU3RyZWFtKHthdWRpbzogdHJ1ZX0pLAorICAgIF0pOwor
ICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gbG9jYWxTdHJlYW1zLmZvckVhY2goKHN0cmVhbSkgPT4K
KyAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjaykgPT4gdHJhY2suc3RvcCgp
KSkpOworICAgIGNhbGxlci5hZGRUcmFjayhsb2NhbFN0cmVhbXNbMF0uZ2V0VHJhY2tzKClbMF0s
IGxvY2FsU3RyZWFtc1swXSk7CisgICAgY29uc3QgcmVtb3RlU3RyZWFtcyA9IFtdOworICAgIGNh
bGxlZS5vbnRyYWNrID0gZSA9PiB7CisgICAgICBpZiAoIXJlbW90ZVN0cmVhbXMuaW5jbHVkZXMo
ZS5zdHJlYW1zWzBdKSkKKyAgICAgICAgcmVtb3RlU3RyZWFtcy5wdXNoKGUuc3RyZWFtc1swXSk7
CisgICAgfTsKKyAgICBhd2FpdCBleGNoYW5nZU9mZmVyQW5zd2VyKGNhbGxlciwgY2FsbGVlKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHJlbW90ZVN0cmVhbXMubGVuZ3RoLCAxLCAnT25lIHJlbW90ZSBz
dHJlYW0gY3JlYXRlZC4nKTsKKyAgICBjb25zdCBvbmFkZHRyYWNrUHJvbWlzZSA9CisgICAgICAg
IGFkZEV2ZW50TGlzdGVuZXJQcm9taXNlKHQsIHJlbW90ZVN0cmVhbXNbMF0sICdhZGR0cmFjaycs
IGUgPT4geworICAgICAgZXZlbnRTZXF1ZW5jZSArPSAnc3RyZWFtLm9uYWRkdHJhY2s7JzsKKyAg
ICB9KTsKKyAgICBjYWxsZXIuYWRkVHJhY2sobG9jYWxTdHJlYW1zWzFdLmdldFRyYWNrcygpWzBd
LCBsb2NhbFN0cmVhbXNbMF0pOworICAgIGF3YWl0IGV4Y2hhbmdlT2ZmZXIoY2FsbGVyLCBjYWxs
ZWUpOworICAgIGV2ZW50U2VxdWVuY2UgKz0gJ3NldFJlbW90ZURlc2NyaXB0aW9uOyc7CisgICAg
YXdhaXQgb25hZGR0cmFja1Byb21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyhyZW1vdGVTdHJlYW1z
Lmxlbmd0aCwgMSwgJ1N0aWxsIGEgc2luZ2xlIHJlbW90ZSBzdHJlYW0uJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhldmVudFNlcXVlbmNlLCAnc3RyZWFtLm9uYWRkdHJhY2s7c2V0UmVtb3RlRGVzY3Jp
cHRpb247Jyk7CisgIH0sICdzdHJlYW0ub25hZGR0cmFjayBmaXJlcyBiZWZvcmUgc2V0UmVtb3Rl
RGVzY3JpcHRpb24gcmVzb2x2ZXMuJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkp
OworICAgIGNvbnN0IGxvY2FsU3RyZWFtcyA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgIGdl
dE5vaXNlU3RyZWFtKHthdWRpbzogdHJ1ZX0pLAorICAgICAgZ2V0Tm9pc2VTdHJlYW0oe2F1ZGlv
OiB0cnVlfSksCisgICAgXSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0cmVhbXMu
Zm9yRWFjaCgoc3RyZWFtKSA9PgorICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRy
YWNrKSA9PiB0cmFjay5zdG9wKCkpKSk7CisgICAgY2FsbGVyLmFkZFRyYWNrKGxvY2FsU3RyZWFt
c1swXS5nZXRUcmFja3MoKVswXSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxTdHJlYW1zWzBd
LCBsb2NhbFN0cmVhbXNbMV0pOworICAgIGNvbnN0IG9udHJhY2tQcm9taXNlID0gYWRkRXZlbnRM
aXN0ZW5lclByb21pc2UodCwgY2FsbGVlLCAndHJhY2snLCBlID0+IHsKKyAgICAgIGFzc2VydF9l
cXVhbHMoZS50cmFjay5pZCwgbG9jYWxTdHJlYW1zWzBdLmdldFRyYWNrcygpWzBdLmlkLAorICAg
ICAgICAgICAgICAgICAgICAnTG9jYWwgYW5kIHJlbW90ZSB0cmFjayBJRHMgbWF0Y2guJyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGUuc3RyZWFtcy5sZW5ndGgsIDIsICdUd28gcmVtb3RlIHN0cmVh
bSBjcmVhdGVkLicpOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhlLnN0cmVhbXNbMF0uZ2V0
VHJhY2tzKCksIFtlLnRyYWNrXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpcnN0IHJl
bW90ZSBzdHJlYW0gPT0gW3JlbW90ZSB0cmFja10uJyk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGUuc3RyZWFtc1sxXS5nZXRUcmFja3MoKSwgW2UudHJhY2tdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAnU2Vjb25kIHJlbW90ZSBzdHJlYW0gPT0gW3JlbW90ZSB0cmFja10uJyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGUuc3RyZWFtc1swXS5pZCwgbG9jYWxTdHJlYW1zWzBdLmlkLAor
ICAgICAgICAgICAgICAgICAgICAnRmlyc3QgbG9jYWwgYW5kIHJlbW90ZSBzdHJlYW0gSURzIG1h
dGNoLicpOworICAgICAgYXNzZXJ0X2VxdWFscyhlLnN0cmVhbXNbMV0uaWQsIGxvY2FsU3RyZWFt
c1sxXS5pZCwKKyAgICAgICAgICAgICAgICAgICAgJ1NlY29uZCBsb2NhbCBhbmQgcmVtb3RlIHN0
cmVhbSBJRHMgbWF0Y2guJyk7CisgICAgfSk7CisgICAgYXdhaXQgZXhjaGFuZ2VPZmZlcihjYWxs
ZXIsIGNhbGxlZSk7CisgICAgYXdhaXQgb250cmFja1Byb21pc2U7CisgIH0sICdhZGRUcmFjaygp
IHdpdGggYSB0cmFjayBhbmQgdHdvIHN0cmVhbXMgbWFrZXMgb250cmFjayBmaXJlIHdpdGggYSB0
cmFjayBhbmQgdHdvIHN0cmVhbXMuJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkp
OworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0KKyAgICAgICAgYXdhaXQgZ2V0Tm9pc2VTdHJlYW0o
e2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0cmVhbS5nZXRU
cmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNhbGxlci5hZGRU
cmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSk7CisgICAgY29uc3Qgb250cmFja1Byb21p
c2UgPSBhZGRFdmVudExpc3RlbmVyUHJvbWlzZSh0LCBjYWxsZWUsICd0cmFjaycsIGUgPT4gewor
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxsZWUuZ2V0UmVjZWl2ZXJzKCksIFtlLnJlY2Vp
dmVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldFJlY2VpdmVycygpID09IFtlLnJl
Y2VpdmVyXS4nKTsKKyAgICB9KTsKKyAgICBhd2FpdCBleGNoYW5nZU9mZmVyKGNhbGxlciwgY2Fs
bGVlKTsKKyAgICBhd2FpdCBvbnRyYWNrUHJvbWlzZTsKKyAgfSwgJ29udHJhY2tcJ3MgcmVjZWl2
ZXIgbWF0Y2hlcyBnZXRSZWNlaXZlcnMoKS4nKTsKKworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xv
c2UoKSk7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPQorICAgICAgICBhd2FpdCBnZXROb2lzZVN0
cmVhbSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGxvY2FsU3RyZWFt
LmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3Qg
c2VuZGVyID0gY2FsbGVyLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFRyYWNrcygpWzBdKTsKKyAg
ICBjb25zdCBvbnRyYWNrUHJvbWlzZSA9IGFkZEV2ZW50TGlzdGVuZXJQcm9taXNlKHQsIGNhbGxl
ZSwgJ3RyYWNrJyk7CisgICAgYXdhaXQgZXhjaGFuZ2VPZmZlckFuc3dlcihjYWxsZXIsIGNhbGxl
ZSk7CisgICAgYXdhaXQgb250cmFja1Byb21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxsZWUu
Z2V0UmVjZWl2ZXJzKCkubGVuZ3RoLCAxLCAnT25lIHJlY2VpdmVyIGNyZWF0ZWQuJyk7CisgICAg
Y2FsbGVyLnJlbW92ZVRyYWNrKHNlbmRlcik7CisgICAgYXdhaXQgZXhjaGFuZ2VPZmZlcihjYWxs
ZXIsIGNhbGxlZSk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxsZWUuZ2V0UmVjZWl2ZXJzKCkubGVu
Z3RoLCAxLCAnUmVjZWl2ZXIgbm90IHJlbW92ZWQuJyk7CisgIH0sICdyZW1vdmVUcmFjaygpIGRv
ZXMgbm90IHJlbW92ZSB0aGUgcmVjZWl2ZXIuJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4geworICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNs
b3NlKCkpOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0KKyAgICAgICAgYXdhaXQgZ2V0Tm9pc2VT
dHJlYW0oe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0cmVh
bS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0
IFt0cmFja10gPSBsb2NhbFN0cmVhbS5nZXRUcmFja3MoKTsKKyAgICBjb25zdCBzZW5kZXIgPSBj
YWxsZXIuYWRkVHJhY2sodHJhY2ssIGxvY2FsU3RyZWFtKTsKKyAgICBjb25zdCBvbnRyYWNrUHJv
bWlzZSA9IGFkZEV2ZW50TGlzdGVuZXJQcm9taXNlKHQsIGNhbGxlZSwgJ3RyYWNrJywgZSA9PiB7
CisgICAgICBhc3NlcnRfZXF1YWxzKGUuc3RyZWFtcy5sZW5ndGgsIDEpOworICAgICAgcmV0dXJu
IGUuc3RyZWFtc1swXTsKKyAgICB9KTsKKyAgICBhd2FpdCBleGNoYW5nZU9mZmVyQW5zd2VyKGNh
bGxlciwgY2FsbGVlKTsKKyAgICBjb25zdCByZW1vdGVTdHJlYW0gPSBhd2FpdCBvbnRyYWNrUHJv
bWlzZTsKKyAgICBjb25zdCByZW1vdGVUcmFjayA9IHJlbW90ZVN0cmVhbS5nZXRUcmFja3MoKVsw
XTsKKyAgICBjb25zdCBvbnJlbW92ZXRyYWNrUHJvbWlzZSA9CisgICAgICAgIGFkZEV2ZW50TGlz
dGVuZXJQcm9taXNlKHQsIHJlbW90ZVN0cmVhbSwgJ3JlbW92ZXRyYWNrJywgZSA9PiB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGUudHJhY2ssIHJlbW90ZVRyYWNrKTsKKyAgICAgIGFzc2VydF9lcXVh
bHMocmVtb3RlU3RyZWFtLmdldFRyYWNrcygpLmxlbmd0aCwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgJ1JlbW90ZSBzdHJlYW0gZW1wdGllZCBvZiB0cmFja3MuJyk7CisgICAgfSk7CisgICAgY2Fs
bGVyLnJlbW92ZVRyYWNrKHNlbmRlcik7CisgICAgYXdhaXQgZXhjaGFuZ2VPZmZlcihjYWxsZXIs
IGNhbGxlZSk7CisgICAgYXdhaXQgb25yZW1vdmV0cmFja1Byb21pc2U7CisgIH0sICdyZW1vdmVU
cmFjaygpIG1ha2VzIHN0cmVhbS5vbnJlbW92ZXRyYWNrIGZpcmUgYW5kIHRoZSB0cmFjayB0byBi
ZSByZW1vdmVkIGZyb20gdGhlIHN0cmVhbS4nKTsKKworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xv
c2UoKSk7CisgICAgbGV0IGV2ZW50U2VxdWVuY2UgPSAnJzsKKyAgICBjb25zdCBsb2NhbFN0cmVh
bSA9CisgICAgICAgIGF3YWl0IGdldE5vaXNlU3RyZWFtKHthdWRpbzogdHJ1ZX0pOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gbG9jYWxTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9
PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2sobG9j
YWxTdHJlYW0uZ2V0VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICBjb25zdCBvbnRyYWNr
UHJvbWlzZSA9IGFkZEV2ZW50TGlzdGVuZXJQcm9taXNlKHQsIGNhbGxlZSwgJ3RyYWNrJywgZSA9
PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGUuc3RyZWFtcy5sZW5ndGgsIDEpOworICAgICAgcmV0
dXJuIGUuc3RyZWFtc1swXTsKKyAgICB9KTsKKyAgICBhd2FpdCBleGNoYW5nZU9mZmVyQW5zd2Vy
KGNhbGxlciwgY2FsbGVlKTsKKyAgICBjb25zdCByZW1vdGVTdHJlYW0gPSBhd2FpdCBvbnRyYWNr
UHJvbWlzZTsKKyAgICBjb25zdCByZW1vdGVUcmFjayA9IHJlbW90ZVN0cmVhbS5nZXRUcmFja3Mo
KVswXTsKKyAgICBjb25zdCBvbnJlbW92ZXRyYWNrUHJvbWlzZSA9CisgICAgICAgIGFkZEV2ZW50
TGlzdGVuZXJQcm9taXNlKHQsIHJlbW90ZVN0cmVhbSwgJ3JlbW92ZXRyYWNrJywgZSA9PiB7Cisg
ICAgICBldmVudFNlcXVlbmNlICs9ICdzdHJlYW0ub25yZW1vdmV0cmFjazsnOworICAgIH0pOwor
ICAgIGNhbGxlci5yZW1vdmVUcmFjayhzZW5kZXIpOworICAgIGF3YWl0IGV4Y2hhbmdlT2ZmZXIo
Y2FsbGVyLCBjYWxsZWUpOworICAgIGV2ZW50U2VxdWVuY2UgKz0gJ3NldFJlbW90ZURlc2NyaXB0
aW9uOyc7CisgICAgYXdhaXQgb25yZW1vdmV0cmFja1Byb21pc2U7CisgICAgYXNzZXJ0X2VxdWFs
cyhldmVudFNlcXVlbmNlLCAnc3RyZWFtLm9ucmVtb3ZldHJhY2s7c2V0UmVtb3RlRGVzY3JpcHRp
b247Jyk7CisgIH0sICdzdHJlYW0ub25yZW1vdmV0cmFjayBmaXJlcyBiZWZvcmUgc2V0UmVtb3Rl
RGVzY3JpcHRpb24gcmVzb2x2ZXMuJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkp
OworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0KKyAgICAgICAgYXdhaXQgZ2V0Tm9pc2VTdHJlYW0o
e2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBsb2NhbFN0cmVhbS5nZXRU
cmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IHNlbmRl
ciA9IGNhbGxlci5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJl
YW0pOworICAgIGNvbnN0IG9udHJhY2tQcm9taXNlID0gYWRkRXZlbnRMaXN0ZW5lclByb21pc2Uo
dCwgY2FsbGVlLCAndHJhY2snLCBlID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZS5zdHJlYW1z
Lmxlbmd0aCwgMSk7CisgICAgICByZXR1cm4gZS5zdHJlYW1zWzBdOworICAgIH0pOworICAgIGF3
YWl0IGV4Y2hhbmdlT2ZmZXJBbnN3ZXIoY2FsbGVyLCBjYWxsZWUpOworICAgIGNvbnN0IHJlbW90
ZVN0cmVhbSA9IGF3YWl0IG9udHJhY2tQcm9taXNlOworICAgIGNvbnN0IHJlbW90ZVRyYWNrID0g
cmVtb3RlU3RyZWFtLmdldFRyYWNrcygpWzBdOworICAgIGNvbnN0IG9ubXV0ZVByb21pc2UgPQor
ICAgICAgICBhZGRFdmVudExpc3RlbmVyUHJvbWlzZSh0LCByZW1vdGVUcmFjaywgJ211dGUnLCAo
KSA9PiB7CisgICAgICBhc3NlcnRfdHJ1ZShyZW1vdGVUcmFjay5tdXRlZCk7CisgICAgfSk7Cisg
ICAgY2FsbGVyLnJlbW92ZVRyYWNrKHNlbmRlcik7CisgICAgYXdhaXQgZXhjaGFuZ2VPZmZlcihj
YWxsZXIsIGNhbGxlZSk7CisgICAgYXdhaXQgb25tdXRlUHJvbWlzZTsKKyAgfSwgJ3JlbW92ZVRy
YWNrKCkgbWFrZXMgdHJhY2sub25tdXRlIGZpcmUgYW5kIHRoZSB0cmFjayB0byBiZSBtdXRlZC4n
KTsKKworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xv
c2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7CisgICAgbGV0IGV2ZW50U2VxdWVu
Y2UgPSAnJzsKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9CisgICAgICAgIGF3YWl0IGdldE5vaXNl
U3RyZWFtKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gbG9jYWxTdHJl
YW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25z
dCBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VHJhY2tzKClbMF0sIGxv
Y2FsU3RyZWFtKTsKKyAgICBjb25zdCBvbnRyYWNrUHJvbWlzZSA9IGFkZEV2ZW50TGlzdGVuZXJQ
cm9taXNlKHQsIGNhbGxlZSwgJ3RyYWNrJywgZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGUu
c3RyZWFtcy5sZW5ndGgsIDEpOworICAgICAgcmV0dXJuIGUuc3RyZWFtc1swXTsKKyAgICB9KTsK
KyAgICBhd2FpdCBleGNoYW5nZU9mZmVyQW5zd2VyKGNhbGxlciwgY2FsbGVlKTsKKyAgICBjb25z
dCByZW1vdGVTdHJlYW0gPSBhd2FpdCBvbnRyYWNrUHJvbWlzZTsKKyAgICBjb25zdCByZW1vdGVU
cmFjayA9IHJlbW90ZVN0cmVhbS5nZXRUcmFja3MoKVswXTsKKyAgICBjb25zdCBvbm11dGVQcm9t
aXNlID0KKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lclByb21pc2UodCwgcmVtb3RlVHJhY2ssICdt
dXRlJywgKCkgPT4geworICAgICAgZXZlbnRTZXF1ZW5jZSArPSAndHJhY2sub25tdXRlOyc7Cisg
ICAgfSk7CisgICAgY2FsbGVyLnJlbW92ZVRyYWNrKHNlbmRlcik7CisgICAgYXdhaXQgZXhjaGFu
Z2VPZmZlcihjYWxsZXIsIGNhbGxlZSk7CisgICAgZXZlbnRTZXF1ZW5jZSArPSAnc2V0UmVtb3Rl
RGVzY3JpcHRpb247JzsKKyAgICBhd2FpdCBvbm11dGVQcm9taXNlOworICAgIGFzc2VydF9lcXVh
bHMoZXZlbnRTZXF1ZW5jZSwgJ3RyYWNrLm9ubXV0ZTtzZXRSZW1vdGVEZXNjcmlwdGlvbjsnKTsK
KyAgfSwgJ3RyYWNrLm9ubXV0ZSBmaXJlcyBiZWZvcmUgc2V0UmVtb3RlRGVzY3JpcHRpb24gcmVz
b2x2ZXMuJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9z
ZSgpKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0cmVhbSh7YXVkaW86IHRy
dWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNo
KHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IHNlbmRlciA9IHBjLmFkZFRyYWNr
KHN0cmVhbS5nZXRUcmFja3MoKVswXSk7CisgICAgcGMucmVtb3ZlVHJhY2soc2VuZGVyKTsKKyAg
ICBwYy5yZW1vdmVUcmFjayhzZW5kZXIpOworICB9LCAncmVtb3ZlVHJhY2soKSB0d2ljZSBpcyBz
YWZlLicpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNj
cmlwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24uaHRtbAppbmRl
eCAyZWZkMzAxOTAwMzFmOGY1YTJlMWI2ZDZiYWIxMmQ1YWYxMTFlMTIzLi5hZDljZGZmNWZiMGE0
Y2Y5MGU5NzdmZDBjZGRlN2QzZDY4NWU5ZjRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRS
ZW1vdGVEZXNjcmlwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0
aW9uLmh0bWwKQEAgLTExLDExICsxMSw4IEBACiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93
ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0bWwKIAogICAvLyBUaGUgZm9sbG93
aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhl
bHBlci5qczoKLSAgLy8gICBnZW5lcmF0ZU9mZmVyKCkKLSAgLy8gICBnZW5lcmF0ZUFuc3dlcigp
Ci0gIC8vICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19ub3RfZXF1YWxzKCkKLSAgLy8gICBhc3NlcnRf
c2Vzc2lvbl9kZXNjX2VxdWFscygpCi0gIC8vICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQoKQor
ICAvLyAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfbm90X3NpbWlsYXIoKQorICAvLyAgIGFzc2VydF9z
ZXNzaW9uX2Rlc2Nfc2ltaWxhcigpCiAKICAgLyoKICAgICA0LjMuMi4gIEludGVyZmFjZSBEZWZp
bml0aW9uCkBAIC00OCw3NiArNDUsOTkgQEAKICAgLyoKICAgICA0LjYuMS4gIGVudW0gUlRDU2Rw
VHlwZQogICAgKi8KLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogCiAgICAgLy8gU0RQIGlzIHZhbGlkYXRlZCBh
ZnRlciBXZWJJREwgdmFsaWRhdGlvbgotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3
IFR5cGVFcnJvcigpLAotICAgICAgcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oewotICAgICAgICB0
eXBlOiAnYm9ndXMnLAotICAgICAgICBzZHA6ICdib2d1cycKLSAgICAgIH0pKTsKKyAgICB0cnkg
eworICAgICAgYXdhaXQgcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oeyB0eXBlOiAnYm9ndXMnLCBz
ZHA6ICdib2d1cycgfSk7CisgICAgICB0LnVucmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWpl
Y3RlZC4iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4geyB0aHJvdyBlIH0pOworICAgIH0KICAgfSwgJ3NldFJlbW90ZURlc2Ny
aXB0aW9uIHdpdGggaW52YWxpZCB0eXBlIGFuZCBpbnZhbGlkIFNEUCBzaG91bGQgcmVqZWN0IHdp
dGggVHlwZUVycm9yJyk7CiAKLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogCiAgICAgLy8gU0RQIGlzIHZhbGlk
YXRlZCBhZnRlciB2YWxpZGF0aW5nIHR5cGUKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQs
ICdJbnZhbGlkU3RhdGVFcnJvcicsCi0gICAgICBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbih7Ci0g
ICAgICAgIHR5cGU6ICdhbnN3ZXInLAotICAgICAgICBzZHA6ICdpbnZhbGlkJwotICAgICAgfSkp
OworICAgIHRyeSB7CisgICAgICBhd2FpdCBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbih7IHR5cGU6
ICdhbnN3ZXInLCBzZHA6ICdpbnZhbGlkJyB9KTsKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoIlNo
b3VsZCBoYXZlIHJlamVjdGVkLiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGFzc2VydF90
aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywgKCkgPT4geyB0aHJvdyBlIH0pOworICAgIH0KICAg
fSwgJ3NldFJlbW90ZURlc2NyaXB0aW9uKCkgd2l0aCBpbnZhbGlkIFNEUCBhbmQgc3RhYmxlIHN0
YXRlIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkU3RhdGVFcnJvcicpOwogCi0gIC8qIE9wZXJh
dGlvbnMgYWZ0ZXIgcmV0dXJuaW5nIHRvIHN0YWJsZSBzdGF0ZSAqLworICAvKiBEZWRpY2F0ZWQg
c2lnbmFsaW5nc3RhdGUgZXZlbnRzIHRlc3QuICovCiAKLSAgcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKICAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gcGMyLmNsb3NlKCkpOworCisgICAgbGV0IGV2ZW50Q291bnQgPSAwOworICAgIGNvbnN0IHN0
YXRlcyA9IFsKKyAgICAgICdzdGFibGUnLCAnaGF2ZS1sb2NhbC1vZmZlcicsICdzdGFibGUnLCAn
aGF2ZS1yZW1vdGUtb2ZmZXInLAorICAgIF07CisgICAgcGMub25zaWduYWxpbmdzdGF0ZWNoYW5n
ZSA9IHQuc3RlcF9mdW5jKCgpID0+CisgICAgICAgIGFzc2VydF9lcXVhbHMocGMuc2lnbmFsaW5n
U3RhdGUsIHN0YXRlc1srK2V2ZW50Q291bnRdKSk7CisKKyAgICBjb25zdCBhc3NlcnRfc3RhdGUg
PSBzdGF0ZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHN0YXRlLCBwYy5zaWduYWxpbmdTdGF0
ZSk7CisgICAgICBhc3NlcnRfZXF1YWxzKHN0YXRlLCBzdGF0ZXNbZXZlbnRDb3VudF0pOworICAg
IH07CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1Jl
Y2VpdmVBdWRpbzogdHJ1ZSB9KTsKKyAgICBhc3NlcnRfc3RhdGUoJ3N0YWJsZScpOworICAgIGF3
YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGFzc2VydF9zdGF0ZSgnaGF2
ZS1sb2NhbC1vZmZlcicpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZl
cik7CisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYXdhaXQgcGMyLmNyZWF0ZUFu
c3dlcigpKTsKKyAgICBhd2FpdCBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihwYzIubG9jYWxEZXNj
cmlwdGlvbik7CisgICAgYXNzZXJ0X3N0YXRlKCdzdGFibGUnKTsKKyAgICBhd2FpdCBwYy5zZXRS
ZW1vdGVEZXNjcmlwdGlvbihhd2FpdCBwYzIuY3JlYXRlT2ZmZXIoKSk7CisgICAgYXNzZXJ0X3N0
YXRlKCdoYXZlLXJlbW90ZS1vZmZlcicpOworICB9LCAnTmVnb3RpYXRpb24gc2hvdWxkIGZpcmUg
c2lnbmFsaW5nc3N0YXRlIGV2ZW50cycpOwogCi0gICAgdGVzdF9zdGF0ZV9jaGFuZ2VfZXZlbnQo
dCwgcGMsCi0gICAgICBbJ2hhdmUtcmVtb3RlLW9mZmVyJywgJ3N0YWJsZScsICdoYXZlLXJlbW90
ZS1vZmZlciddKTsKLQotICAgIHJldHVybiBwYzIuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2
ZUF1ZGlvOiB0cnVlIH0pCi0gICAgLnRoZW4ob2ZmZXIxID0+Ci0gICAgICBwYy5zZXRSZW1vdGVE
ZXNjcmlwdGlvbihvZmZlcjEpCi0gICAgICAudGhlbigoKSA9PiBwYy5jcmVhdGVBbnN3ZXIoKSkK
LSAgICAgIC50aGVuKGFuc3dlciA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcikpCi0g
ICAgICAudGhlbigoKSA9PiBwYzIuY3JlYXRlT2ZmZXIoeyBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0
cnVlIH0pKQotICAgICAgLnRoZW4ob2ZmZXIyID0+IHsKLSAgICAgICAgcmV0dXJuIHBjLnNldFJl
bW90ZURlc2NyaXB0aW9uKG9mZmVyMikKLSAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAg
IGFzc2VydF9lcXVhbHMocGMuc2lnbmFsaW5nU3RhdGUsICdoYXZlLXJlbW90ZS1vZmZlcicpOwot
ICAgICAgICAgIGFzc2VydF9zZXNzaW9uX2Rlc2Nfbm90X2VxdWFscyhvZmZlcjEsIG9mZmVyMik7
Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMucmVtb3RlRGVzY3JpcHRp
b24sIG9mZmVyMik7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMuY3Vy
cmVudFJlbW90ZURlc2NyaXB0aW9uLCBvZmZlcjEpOwotICAgICAgICAgIGFzc2VydF9zZXNzaW9u
X2Rlc2NfZXF1YWxzKHBjLnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbiwgb2ZmZXIyKTsKLSAgICAg
ICAgfSk7Ci0gICAgICB9KSk7Ci0gIH0sICdDYWxsaW5nIHNldFJlbW90ZURlc2NyaXB0aW9uKCkg
YWdhaW4gYWZ0ZXIgb25lIHJvdW5kIG9mIHJlbW90ZS1vZmZlci9sb2NhbC1hbnN3ZXIgc2hvdWxk
IHN1Y2NlZWQnKTsKKyAgLyogT3BlcmF0aW9ucyBhZnRlciByZXR1cm5pbmcgdG8gc3RhYmxlIHN0
YXRlICovCiAKLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBw
YzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBj
LmNsb3NlKCkpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkpOworCisgICAg
Y29uc3Qgb2ZmZXIxID0gYXdhaXQgcGMyLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1JlY2VpdmVBdWRp
bzogdHJ1ZSB9KTsKKyAgICBhd2FpdCBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcjEpOwor
ICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24oYXdhaXQgcGMuY3JlYXRlQW5zd2VyKCkp
OworICAgIGNvbnN0IG9mZmVyMiA9IGF3YWl0IHBjMi5jcmVhdGVPZmZlcih7IG9mZmVyVG9SZWNl
aXZlVmlkZW86IHRydWUgfSk7CisgICAgYXdhaXQgcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2Zm
ZXIyKTsKKyAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX25vdF9zaW1pbGFyKG9mZmVyMSwgb2ZmZXIy
KTsKKyAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucmVtb3RlRGVzY3JpcHRpb24s
IG9mZmVyMik7CisgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19zaW1pbGFyKHBjLmN1cnJlbnRSZW1v
dGVEZXNjcmlwdGlvbiwgb2ZmZXIxKTsKKyAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIo
cGMucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBvZmZlcjIpOworICB9LCAnQ2FsbGluZyBzZXRS
ZW1vdGVEZXNjcmlwdGlvbigpIGFnYWluIGFmdGVyIG9uZSByb3VuZCBvZiByZW1vdGUtb2ZmZXIv
bG9jYWwtYW5zd2VyIHNob3VsZCBzdWNjZWVkJyk7CiAKLSAgICB0ZXN0X3N0YXRlX2NoYW5nZV9l
dmVudCh0LCBwYywKLSAgICAgICBbJ2hhdmUtbG9jYWwtb2ZmZXInLCAnc3RhYmxlJywgJ2hhdmUt
cmVtb3RlLW9mZmVyJ10pOwotCi0gICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKHsgb2ZmZXJUb1Jl
Y2VpdmVBdWRpbzogdHJ1ZSB9KQotICAgIC50aGVuKG9mZmVyID0+Ci0gICAgICBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKQotICAgICAgLnRoZW4oKCkgPT4gZ2VuZXJhdGVBbnN3ZXIob2Zm
ZXIpKSkKLSAgICAudGhlbihhbnN3ZXIgPT4KLSAgICAgIHBjLnNldFJlbW90ZURlc2NyaXB0aW9u
KGFuc3dlcikKLSAgICAgIC50aGVuKCgpID0+IGdlbmVyYXRlT2ZmZXIoeyBwYywgZGF0YTogdHJ1
ZSB9KSkKLSAgICAgIC50aGVuKG9mZmVyID0+Ci0gICAgICAgIHBjLnNldFJlbW90ZURlc2NyaXB0
aW9uKG9mZmVyKQotICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwYy5zaWduYWxpbmdTdGF0ZSwgJ2hhdmUtcmVtb3RlLW9mZmVyJyk7Ci0gICAgICAgICAgYXNz
ZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMucmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyKTsKLSAg
ICAgICAgICBhc3NlcnRfc2Vzc2lvbl9kZXNjX2VxdWFscyhwYy5jdXJyZW50UmVtb3RlRGVzY3Jp
cHRpb24sIGFuc3dlcik7Ci0gICAgICAgICAgYXNzZXJ0X3Nlc3Npb25fZGVzY19lcXVhbHMocGMu
cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uLCBvZmZlcik7Ci0gICAgICAgIH0pKSk7CisgIHByb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIu
Y2xvc2UoKSk7CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKHsgb2Zm
ZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSB9KTsKKyAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0
aW9uKG9mZmVyKTsKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOwor
ICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHBjMi5jcmVhdGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBw
YzIuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpOworICAgIGF3YWl0IHBjLnNldFJlbW90ZURl
c2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oYXdh
aXQgcGMyLmNyZWF0ZU9mZmVyKCkpOworICAgIGFzc2VydF9lcXVhbHMocGMucmVtb3RlRGVzY3Jp
cHRpb24uc2RwLCBwYy5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24uc2RwKTsKKyAgICBhc3NlcnRf
c2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMucmVtb3RlRGVzY3JpcHRpb24sIG9mZmVyKTsKKyAgICBh
c3NlcnRfc2Vzc2lvbl9kZXNjX3NpbWlsYXIocGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLCBh
bnN3ZXIpOwogICB9LCAnU3dpdGNoaW5nIHJvbGUgZnJvbSBvZmZlcmVyIHRvIGFuc3dlcmVyIGFm
dGVyIGdvaW5nIGJhY2sgdG8gc3RhYmxlIHN0YXRlIHNob3VsZCBzdWNjZWVkJyk7CiAKICAgLyoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXRyYWNrLXN0YXRzLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLXRyYWNrLXN0YXRzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YWViYzgwYjUxZjQzZjZjNDUyNTk2YjljMzAwNGI1ZDAxOWEwOWNjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
UGVlckNvbm5lY3Rpb24tdHJhY2stc3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjAgQEAKKworUEFTUyBhZGRUcmFjaygpIHdpdGhvdXQgc2V0TG9jYWxEZXNjcmlwdGlvbigpIHlp
ZWxkcyB0cmFjayBzdGF0cyAKK0ZBSUwgYWRkVHJhY2soKSB3aXRob3V0IHNldExvY2FsRGVzY3Jp
cHRpb24oKSB5aWVsZHMgbWVkaWEgc3RyZWFtIHN0YXRzIGFzc2VydF90cnVlOiBIYXMgc3RhdHMg
Zm9yIHN0cmVhbSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBhZGRUcmFjaygpIHdpdGgg
c2V0TG9jYWxEZXNjcmlwdGlvbigpIHlpZWxkcyB0cmFjayBzdGF0cyAKK0ZBSUwgYWRkVHJhY2so
KSB3aXRoIHNldExvY2FsRGVzY3JpcHRpb24oKSB5aWVsZHMgbWVkaWEgc3RyZWFtIHN0YXRzIGFz
c2VydF90cnVlOiBIYXMgc3RhdHMgZm9yIHN0cmVhbSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQor
RkFJTCBhZGRUcmFjaygpOiBNZWRpYSBzdHJlYW0gc3RhdHMgcmVmZXJlbmNlcyB0cmFjayBzdGF0
cyBhc3NlcnRfdHJ1ZTogSGFzIHN0YXRzIGZvciB0cmFjayBhbmQgc3RyZWFtIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCitGQUlMIExlZ2FjeSBhZGRTdHJlYW0oKTogTWVkaWEgc3RyZWFtIHN0YXRz
IHJlZmVyZW5jZXMgdHJhY2sgc3RhdHMgcGMuYWRkU3RyZWFtIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3BjLmFkZFN0cmVhbShzdHJlYW0pJywgJ3BjLmFkZFN0cmVhbScgaXMgdW5kZWZpbmVkKQor
UEFTUyBPL0EgZXhjaGFuZ2UgeWllbGRzIG91dGJvdW5kIFJUUCBzdHJlYW0gc3RhdHMgZm9yIHNl
bmRpbmcgdHJhY2sgCitQQVNTIE8vQSBleGNoYW5nZSB5aWVsZHMgaW5ib3VuZCBSVFAgc3RyZWFt
IHN0YXRzIGZvciByZWNlaXZpbmcgdHJhY2sgCitGQUlMIHJlcGxhY2VUcmFjaygpIGJlZm9yZSBv
ZmZlcjogbmV3IHRyYWNrIGF0dGFjaG1lbnQgc3RhdHMgcHJlc2VudCBhc3NlcnRfdHJ1ZTogSGFz
IHN0YXRzIGZvciByZXBsYWNlZCB0cmFjayBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBy
ZXBsYWNlVHJhY2soKSBhZnRlciBvZmZlciwgYmVmb3JlIGFuc3dlcjogbmV3IHRyYWNrIGF0dGFj
aG1lbnQgc3RhdHMgcHJlc2VudCBhc3NlcnRfdHJ1ZTogSGFzIHN0YXRzIGZvciByZXBsYWNlZCB0
cmFjayBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCByZXBsYWNlVHJhY2soKSBhZnRlciBh
bnN3ZXI6IG5ldyB0cmFjayBhdHRhY2htZW50IHN0YXRzIHByZXNlbnQgYXNzZXJ0X3RydWU6IEhh
cyBzdGF0cyBmb3IgcmVwbGFjZWQgdHJhY2sgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwg
cmVwbGFjZVRyYWNrKCk6IG9yaWdpbmFsIHRyYWNrIGF0dGFjaG1lbnQgc3RhdHMgcHJlc2VudCBh
ZnRlciByZXBsYWNpbmcgYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IHVuZGVmaW5lZAor
RkFJTCBSVENSdHBTZW5kZXIuZ2V0U3RhdHMoKSBjb250YWlucyBvbmx5IG91dGJvdW5kLXJ0cCBh
bmQgcmVsYXRlZCBzdGF0cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnaW5ib3VuZFRyYWNrU3RhdHMuaWQnKSIKK0ZBSUwgUlRDUnRwUmVjZWl2ZXIuZ2V0U3RhdHMo
KSBjb250YWlucyBvbmx5IGluYm91bmQtcnRwIGFuZCByZWxhdGVkIHN0YXRzIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogbnVs
bCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdpbmJvdW5kVHJhY2tTdGF0cy5pZCcpIgor
UEFTUyBSVENQZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZW5kaW5nVHJhY2spIGlzIHRoZSBzYW1l
IGFzIFJUQ1J0cFNlbmRlci5nZXRTdGF0cygpIAorUEFTUyBSVENQZWVyQ29ubmVjdGlvbi5nZXRT
dGF0cyhyZWNlaXZpbmdUcmFjaykgaXMgdGhlIHNhbWUgYXMgUlRDUnRwUmVjZWl2ZXIuZ2V0U3Rh
dHMoKSAKK0ZBSUwgUlRDUGVlckNvbm5lY3Rpb24uZ2V0U3RhdHModHJhY2spIHRocm93cyBJbnZh
bGlkQWNjZXNzRXJyb3Igd2hlbiB0aGVyZSBhcmUgemVybyBzZW5kZXJzIG9yIHJlY2VpdmVycyBm
b3IgdGhlIHRyYWNrIGFzc2VydF91bnJlYWNoZWQ6IFNob3VsZCBoYXZlIHJlamVjdGVkOiB1bmRl
ZmluZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFJUQ1BlZXJDb25uZWN0aW9uLmdl
dFN0YXRzKHRyYWNrKSB0aHJvd3MgSW52YWxpZEFjY2Vzc0Vycm9yIHdoZW4gdGhlcmUgYXJlIG11
bHRpcGxlIHNlbmRlcnMgZm9yIHRoZSB0cmFjayBhc3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2
ZSByZWplY3RlZDogdW5kZWZpbmVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENQZWVyQ29ubmVjdGlvbi10cmFjay1zdGF0cy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tdHJh
Y2stc3RhdHMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODJlN2U1N2U0NjVjY2RlNzdjM2Q4ODg3
Y2U4MGNiNWVhMDFiZjU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tdHJhY2stc3Rh
dHMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDY1NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBj
aGFyc2V0PXV0Zi04PgorPHRpdGxlPlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5nZXRTdGF0
czwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iUlRDUGVlckNvbm5lY3Rpb24taGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJkaWN0aW9uYXJ5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iUlRDU3RhdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICd1c2Ugc3RyaWN0
JzsKKworICAvLyBUaGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9t
IFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qczoKKyAgLy8gICBkb1NpZ25hbGluZ0hhbmRzaGFr
ZQorICAvLyAgIGdldFVzZXJNZWRpYVRyYWNrc0FuZFN0cmVhbXMKKworICAvLyBUaGUgZm9sbG93
aW5nIGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1N0YXRzLWhlbHBlci5qcwor
ICAvLyAoZGVwZW5kcyBvbiBkaWN0aW9uYXJ5LWhlbHBlci5qcyk6CisgIC8vICAgdmFsaWRhdGVS
dGNTdGF0cworCisgIGFzeW5jX3Rlc3QodCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAg
IGxldCB0cmFjazsKKyAgICByZXR1cm4gZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygxKQor
ICAgIC50aGVuKHQuc3RlcF9mdW5jKChbdHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAgICAgdHJh
Y2sgPSB0cmFja3NbMF07CisgICAgICBwYy5hZGRUcmFjayh0cmFjayk7CisgICAgICByZXR1cm4g
cGMuZ2V0U3RhdHMoKTsKKyAgICB9KSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYyhyZXBvcnQgPT4g
eworICAgICAgbGV0IHRyYWNrU3RhdHMgPSBmaW5kU3RhdHNCeVR5cGVBbmRJZChyZXBvcnQsICd0
cmFjaycsIHRyYWNrLmlkKTsKKyAgICAgIGFzc2VydF90cnVlKHRyYWNrU3RhdHMgIT0gbnVsbCwg
J0hhcyBzdGF0cyBmb3IgdHJhY2snKTsKKyAgICAgIC8vIFRPRE8oaGJvcyk6IEhlcmUgYW5kIGVs
c2V3aGVyZSwgdmFsaWRhdGVSdGNTdGF0cygpIG9ubHkgdGVzdHMgaWQsCisgICAgICAvLyB0aW1l
c3RhbXAgYW5kIHR5cGUgaXMgY29ycmVjdCB0eXBlLiBTaG91bGQgdmFsaWRhdGUgYmFzZWQgb24g
c3RhdHMgdHlwZQorICAgICAgLy8gYnV0IGl0IGV4cGVjdHMgYm90aCBhdWRpbyBhbmQgdmlkZW8g
bWVtYmVycy4KKyAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0L2lzc3Vlcy85MDEwCisgICAgICB2YWxpZGF0ZVJ0Y1N0YXRzKHJlcG9ydCwgdHJhY2tTdGF0
cyk7CisgICAgICB0LmRvbmUoKTsKKyAgICB9KSkKKyAgICAuY2F0Y2godC5zdGVwX2Z1bmMocmVh
c29uID0+IHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQocmVhc29uKTsKKyAgICB9KSk7CisgIH0s
ICdhZGRUcmFjaygpIHdpdGhvdXQgc2V0TG9jYWxEZXNjcmlwdGlvbigpIHlpZWxkcyB0cmFjayBz
dGF0cycpOworCisgIGFzeW5jX3Rlc3QodCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAg
IGxldCBzdHJlYW07CisgICAgcmV0dXJuIGdldFVzZXJNZWRpYVRyYWNrc0FuZFN0cmVhbXMoMSkK
KyAgICAudGhlbih0LnN0ZXBfZnVuYygoW3RyYWNrcywgc3RyZWFtc10pID0+IHsKKyAgICAgIGxl
dCB0cmFjayA9IHRyYWNrc1swXTsKKyAgICAgIHN0cmVhbSA9IHN0cmVhbXNbMF07CisgICAgICBw
Yy5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKyAgICAgIHJldHVybiBwYy5nZXRTdGF0cygpOwor
ICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKHJlcG9ydCA9PiB7CisgICAgICBsZXQgc3Ry
ZWFtU3RhdHMgPSBmaW5kU3RhdHNCeVR5cGVBbmRJZChyZXBvcnQsICdzdHJlYW0nLCBzdHJlYW0u
aWQpOworICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtU3RhdHMgIT0gbnVsbCwgJ0hhcyBzdGF0cyBm
b3Igc3RyZWFtJyk7CisgICAgICB2YWxpZGF0ZVJ0Y1N0YXRzKHJlcG9ydCwgc3RyZWFtU3RhdHMp
OworICAgICAgdC5kb25lKCk7CisgICAgfSkpCisgICAgLmNhdGNoKHQuc3RlcF9mdW5jKHJlYXNv
biA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKHJlYXNvbik7CisgICAgfSkpOworICB9LCAn
YWRkVHJhY2soKSB3aXRob3V0IHNldExvY2FsRGVzY3JpcHRpb24oKSB5aWVsZHMgbWVkaWEgc3Ry
ZWFtIHN0YXRzJyk7CisKKyAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7
CisgICAgbGV0IHRyYWNrOworICAgIHJldHVybiBnZXRVc2VyTWVkaWFUcmFja3NBbmRTdHJlYW1z
KDEpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMoKFt0cmFja3MsIHN0cmVhbXNdKSA9PiB7CisgICAg
ICB0cmFjayA9IHRyYWNrc1swXTsKKyAgICAgIHBjLmFkZFRyYWNrKHRyYWNrKTsKKyAgICAgIHJl
dHVybiBwYy5jcmVhdGVPZmZlcigpOworICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKG9m
ZmVyID0+IHsKKyAgICAgIHJldHVybiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAg
ICB9KSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYygoKSA9PiB7CisgICAgICByZXR1cm4gcGMuZ2V0
U3RhdHMoKTsKKyAgICB9KSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYyhyZXBvcnQgPT4geworICAg
ICAgbGV0IHRyYWNrU3RhdHMgPSBmaW5kU3RhdHNCeVR5cGVBbmRJZChyZXBvcnQsICd0cmFjaycs
IHRyYWNrLmlkKTsKKyAgICAgIGFzc2VydF90cnVlKHRyYWNrU3RhdHMgIT0gbnVsbCwgJ0hhcyBz
dGF0cyBmb3IgdHJhY2snKTsKKyAgICAgIHZhbGlkYXRlUnRjU3RhdHMocmVwb3J0LCB0cmFja1N0
YXRzKTsKKyAgICAgIHQuZG9uZSgpOworICAgIH0pKQorICAgIC5jYXRjaCh0LnN0ZXBfZnVuYyhy
ZWFzb24gPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZChyZWFzb24pOworICAgIH0pKTsKKyAg
fSwgJ2FkZFRyYWNrKCkgd2l0aCBzZXRMb2NhbERlc2NyaXB0aW9uKCkgeWllbGRzIHRyYWNrIHN0
YXRzJyk7CisKKyAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAg
bGV0IHN0cmVhbTsKKyAgICByZXR1cm4gZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygxKQor
ICAgIC50aGVuKHQuc3RlcF9mdW5jKChbdHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAgICAgbGV0
IHRyYWNrID0gdHJhY2tzWzBdOworICAgICAgc3RyZWFtID0gc3RyZWFtc1swXTsKKyAgICAgIHBj
LmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCk7
CisgICAgfSkpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMob2ZmZXIgPT4geworICAgICAgcmV0dXJu
IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIH0pKQorICAgIC50aGVuKHQuc3Rl
cF9mdW5jKCgpID0+IHsKKyAgICAgIHJldHVybiBwYy5nZXRTdGF0cygpOworICAgIH0pKQorICAg
IC50aGVuKHQuc3RlcF9mdW5jKHJlcG9ydCA9PiB7CisgICAgICBsZXQgc3RyZWFtU3RhdHMgPSBm
aW5kU3RhdHNCeVR5cGVBbmRJZChyZXBvcnQsICdzdHJlYW0nLCBzdHJlYW0uaWQpOworICAgICAg
YXNzZXJ0X3RydWUoc3RyZWFtU3RhdHMgIT0gbnVsbCwgJ0hhcyBzdGF0cyBmb3Igc3RyZWFtJyk7
CisgICAgICB2YWxpZGF0ZVJ0Y1N0YXRzKHJlcG9ydCwgc3RyZWFtU3RhdHMpOworICAgICAgdC5k
b25lKCk7CisgICAgfSkpCisgICAgLmNhdGNoKHQuc3RlcF9mdW5jKHJlYXNvbiA9PiB7CisgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKHJlYXNvbik7CisgICAgfSkpOworICB9LCAnYWRkVHJhY2soKSB3
aXRoIHNldExvY2FsRGVzY3JpcHRpb24oKSB5aWVsZHMgbWVkaWEgc3RyZWFtIHN0YXRzJyk7CisK
KyAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAgbGV0IHRyYWNr
OworICAgIGxldCBzdHJlYW07CisgICAgcmV0dXJuIGdldFVzZXJNZWRpYVRyYWNrc0FuZFN0cmVh
bXMoMSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYygoW3RyYWNrcywgc3RyZWFtc10pID0+IHsKKyAg
ICAgIHRyYWNrID0gdHJhY2tzWzBdOworICAgICAgc3RyZWFtID0gc3RyZWFtc1swXTsKKyAgICAg
IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVy
KCk7CisgICAgfSkpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMob2ZmZXIgPT4geworICAgICAgcmV0
dXJuIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIH0pKQorICAgIC50aGVuKHQu
c3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIHJldHVybiBwYy5nZXRTdGF0cygpOworICAgIH0pKQor
ICAgIC50aGVuKHQuc3RlcF9mdW5jKHJlcG9ydCA9PiB7CisgICAgICBsZXQgdHJhY2tTdGF0cyA9
IGZpbmRTdGF0c0J5VHlwZUFuZElkKHJlcG9ydCwgJ3RyYWNrJywgdHJhY2suaWQpOworICAgICAg
bGV0IHN0cmVhbVN0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kSWQocmVwb3J0LCAnc3RyZWFtJywg
c3RyZWFtLmlkKTsKKyAgICAgIGFzc2VydF90cnVlKHRyYWNrU3RhdHMgIT0gbnVsbCAmJiBzdHJl
YW1TdGF0cyAhPSBudWxsLAorICAgICAgICAgICAgICAgICAgJ0hhcyBzdGF0cyBmb3IgdHJhY2sg
YW5kIHN0cmVhbScpOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzdHJlYW1TdGF0cy50cmFj
a0lkcywgWyB0cmFja1N0YXRzLmlkIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJl
YW1TdGF0cy50cmFja0lkcyA9PSBbIHRyYWNrU3RhdHMuaWQgXScpOworICAgICAgdmFsaWRhdGVS
dGNTdGF0cyhyZXBvcnQsIHRyYWNrU3RhdHMpOworICAgICAgdmFsaWRhdGVSdGNTdGF0cyhyZXBv
cnQsIHN0cmVhbVN0YXRzKTsKKyAgICAgIHQuZG9uZSgpOworICAgIH0pKQorICAgIC5jYXRjaCh0
LnN0ZXBfZnVuYyhyZWFzb24gPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZChyZWFzb24pOwor
ICAgIH0pKTsKKyAgfSwgJ2FkZFRyYWNrKCk6IE1lZGlhIHN0cmVhbSBzdGF0cyByZWZlcmVuY2Vz
IHRyYWNrIHN0YXRzJyk7CisKKyAgLy8gVE9ETyhoYm9zKTogYWRkU3RyZWFtKCkgaXMgbGVnYWN5
IEFQSSBub3QgaW4gdGhlIHNwZWMuIEJhc2VkIG9uIGRpc2N1c3Npb24KKyAgLy8gd2hldGhlciB0
byBzdGFuZGFyZGl6ZSBpbiBsZWdhY3kgc2VjdGlvbiwgY29uc2lkZXIgcmVtb3ZpbmcgdGhpcyB0
ZXN0IG9yCisgIC8vIGtlZXBpbmcgaXQgdW50aWwgYWRkVHJhY2soKSBoYXMgd2lkZSBzdXBwb3J0
LgorICAvLyBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYnJ0Yy1wYy9pc3N1ZXMvMTcwNQorICAv
LyBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYnJ0Yy1wYy9pc3N1ZXMvMTEyNQorICBhc3luY190
ZXN0KHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAgICBsZXQgdHJhY2s7CisgICAgbGV0
IHN0cmVhbTsKKyAgICByZXR1cm4gZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygxKQorICAg
IC50aGVuKHQuc3RlcF9mdW5jKChbdHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAgICAgdHJhY2sg
PSB0cmFja3NbMF07CisgICAgICBzdHJlYW0gPSBzdHJlYW1zWzBdOworICAgICAgc3RyZWFtLmFk
ZFRyYWNrKHRyYWNrKTsKKyAgICAgIHBjLmFkZFN0cmVhbShzdHJlYW0pOworICAgICAgcmV0dXJu
IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgfSkpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMob2ZmZXIg
PT4geworICAgICAgcmV0dXJuIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIH0p
KQorICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIHJldHVybiBwYy5nZXRTdGF0
cygpOworICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKHJlcG9ydCA9PiB7CisgICAgICBs
ZXQgdHJhY2tTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZElkKHJlcG9ydCwgJ3RyYWNrJywgdHJh
Y2suaWQpOworICAgICAgbGV0IHN0cmVhbVN0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kSWQocmVw
b3J0LCAnc3RyZWFtJywgc3RyZWFtLmlkKTsKKyAgICAgIGFzc2VydF90cnVlKHRyYWNrU3RhdHMg
IT0gbnVsbCAmJiBzdHJlYW1TdGF0cyAhPSBudWxsLAorICAgICAgICAgICAgICAgICAgJ0hhcyBz
dGF0cyBmb3IgdHJhY2sgYW5kIHN0cmVhbScpOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhz
dHJlYW1TdGF0cy50cmFja0lkcywgWyB0cmFja1N0YXRzLmlkIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICdzdHJlYW1TdGF0cy50cmFja0lkcyA9PSBbIHRyYWNrU3RhdHMuaWQgXScpOwor
ICAgICAgdmFsaWRhdGVSdGNTdGF0cyhyZXBvcnQsIHRyYWNrU3RhdHMpOworICAgICAgdmFsaWRh
dGVSdGNTdGF0cyhyZXBvcnQsIHN0cmVhbVN0YXRzKTsKKyAgICAgIHQuZG9uZSgpOworICAgIH0p
KQorICAgIC5jYXRjaCh0LnN0ZXBfZnVuYyhyZWFzb24gPT4geworICAgICAgYXNzZXJ0X3VucmVh
Y2hlZChyZWFzb24pOworICAgIH0pKTsKKyAgfSwgJ0xlZ2FjeSBhZGRTdHJlYW0oKTogTWVkaWEg
c3RyZWFtIHN0YXRzIHJlZmVyZW5jZXMgdHJhY2sgc3RhdHMnKTsKKworICBhc3luY190ZXN0KHQg
PT4geworICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNs
b3NlKCkpOworICAgIGxldCBzZW5kaW5nVHJhY2s7CisgICAgcmV0dXJuIGdldFVzZXJNZWRpYVRy
YWNrc0FuZFN0cmVhbXMoMSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYygoW3RyYWNrcywgc3RyZWFt
c10pID0+IHsKKyAgICAgIHNlbmRpbmdUcmFjayA9IHRyYWNrc1swXTsKKyAgICAgIGNhbGxlci5h
ZGRUcmFjayhzZW5kaW5nVHJhY2spOworICAgICAgcmV0dXJuIGRvU2lnbmFsaW5nSGFuZHNoYWtl
KGNhbGxlciwgY2FsbGVlKTsKKyAgICB9KSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYygoKSA9PiB7
CisgICAgICByZXR1cm4gY2FsbGVyLmdldFN0YXRzKCk7CisgICAgfSkpCisgICAgLnRoZW4odC5z
dGVwX2Z1bmMocmVwb3J0ID0+IHsKKyAgICAgIGxldCB0cmFja1N0YXRzID0gZmluZFN0YXRzQnlU
eXBlQW5kSWQocmVwb3J0LCAndHJhY2snLCBzZW5kaW5nVHJhY2suaWQpOworICAgICAgYXNzZXJ0
X3RydWUodHJhY2tTdGF0cyAhPSBudWxsLCAnSGFzIHN0YXRzIGZvciBzZW5kaW5nIHRyYWNrJyk7
CisgICAgICBsZXQgb3V0Ym91bmRTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZE1lbWJlcihyZXBv
cnQsICdvdXRib3VuZC1ydHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RyYWNrSWQnLCB0cmFja1N0YXRzLmlkKTsKKyAgICAgIGFzc2VydF90
cnVlKG91dGJvdW5kU3RhdHMgIT0gbnVsbCwgJ0hhcyBzdGF0cyBmb3Igb3V0Ym91bmQgUlRQIHN0
cmVhbScpOworICAgICAgdmFsaWRhdGVSdGNTdGF0cyhyZXBvcnQsIHRyYWNrU3RhdHMpOworICAg
ICAgdmFsaWRhdGVSdGNTdGF0cyhyZXBvcnQsIG91dGJvdW5kU3RhdHMpOworICAgICAgdC5kb25l
KCk7CisgICAgfSkpCisgICAgLmNhdGNoKHQuc3RlcF9mdW5jKHJlYXNvbiA9PiB7CisgICAgICBh
c3NlcnRfdW5yZWFjaGVkKHJlYXNvbik7CisgICAgfSkpOworICB9LCAnTy9BIGV4Y2hhbmdlIHlp
ZWxkcyBvdXRib3VuZCBSVFAgc3RyZWFtIHN0YXRzIGZvciBzZW5kaW5nIHRyYWNrJyk7CisKKyAg
YXN5bmNfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBjYWxsZXIgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlci5jbG9zZSgpKTsKKyAgICBjb25z
dCBjYWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBsZXQgcmVjZWl2aW5nVHJhY2s7CisgICAgY2FsbGVl
Lm9udHJhY2sgPSB0cmFja0V2ZW50ID0+IHsKKyAgICAgIGFzc2VydF90cnVlKHJlY2VpdmluZ1Ry
YWNrID09IHVuZGVmaW5lZCwgJ29udHJhY2sgaGFzIG5vdCBmaXJlZCBiZWZvcmUnKTsKKyAgICAg
IHJlY2VpdmluZ1RyYWNrID0gdHJhY2tFdmVudC50cmFjazsKKyAgICB9OworICAgIHJldHVybiBn
ZXRVc2VyTWVkaWFUcmFja3NBbmRTdHJlYW1zKDEpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMoKFt0
cmFja3MsIHN0cmVhbXNdKSA9PiB7CisgICAgICBjYWxsZXIuYWRkVHJhY2sodHJhY2tzWzBdKTsK
KyAgICAgIHJldHVybiBkb1NpZ25hbGluZ0hhbmRzaGFrZShjYWxsZXIsIGNhbGxlZSk7CisgICAg
fSkpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgcmV0dXJuIGNhbGxlZS5n
ZXRTdGF0cygpOworICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKHJlcG9ydCA9PiB7Cisg
ICAgICBhc3NlcnRfdHJ1ZShyZWNlaXZpbmdUcmFjayAhPSBudWxsLCAnSGFzIGEgcmVjZWl2aW5n
IHRyYWNrJyk7CisgICAgICBsZXQgdHJhY2tTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZElkKHJl
cG9ydCwgJ3RyYWNrJywgcmVjZWl2aW5nVHJhY2suaWQpOworICAgICAgYXNzZXJ0X3RydWUodHJh
Y2tTdGF0cyAhPSBudWxsLCAnSGFzIHN0YXRzIGZvciByZWNlaXZpbmcgdHJhY2snKTsKKyAgICAg
IGxldCBpbmJvdW5kU3RhdHMgPSBmaW5kU3RhdHNCeVR5cGVBbmRNZW1iZXIocmVwb3J0LCAnaW5i
b3VuZC1ydHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndHJhY2tJZCcsIHRyYWNrU3RhdHMuaWQpOworICAgICAgYXNzZXJ0X3RydWUoaW5ib3Vu
ZFN0YXRzICE9IG51bGwsICdIYXMgc3RhdHMgZm9yIG91dGJvdW5kIFJUUCBzdHJlYW0nKTsKKyAg
ICAgIHZhbGlkYXRlUnRjU3RhdHMocmVwb3J0LCB0cmFja1N0YXRzKTsKKyAgICAgIHZhbGlkYXRl
UnRjU3RhdHMocmVwb3J0LCBpbmJvdW5kU3RhdHMpOworICAgICAgdC5kb25lKCk7CisgICAgfSkp
CisgICAgLmNhdGNoKHQuc3RlcF9mdW5jKHJlYXNvbiA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFj
aGVkKHJlYXNvbik7CisgICAgfSkpOworICB9LCAnTy9BIGV4Y2hhbmdlIHlpZWxkcyBpbmJvdW5k
IFJUUCBzdHJlYW0gc3RhdHMgZm9yIHJlY2VpdmluZyB0cmFjaycpOworCisgIGFzeW5jX3Rlc3Qo
dCA9PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUu
Y2xvc2UoKSk7CisgICAgbGV0IHNlbmRpbmdUcmFjazE7CisgICAgbGV0IHNlbmRpbmdUcmFjazI7
CisgICAgbGV0IHNlbmRlcjsKKyAgICByZXR1cm4gZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFt
cygyKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKChbdHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAg
ICAgc2VuZGluZ1RyYWNrMSA9IHRyYWNrc1swXTsKKyAgICAgIHNlbmRpbmdUcmFjazIgPSB0cmFj
a3NbMV07CisgICAgICBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2soc2VuZGluZ1RyYWNrMSk7Cisg
ICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayhzZW5kaW5nVHJhY2syKTsKKyAgICB9KSkK
KyAgICAudGhlbih0LnN0ZXBfZnVuYygoKSA9PiB7CisgICAgICByZXR1cm4gY2FsbGVyLmdldFN0
YXRzKCk7CisgICAgfSkpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMocmVwb3J0ID0+IHsKKyAgICAg
IGxldCB0cmFja1N0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kSWQocmVwb3J0LCAndHJhY2snLCBz
ZW5kaW5nVHJhY2syLmlkKTsKKyAgICAgIGFzc2VydF90cnVlKHRyYWNrU3RhdHMgIT0gbnVsbCwg
J0hhcyBzdGF0cyBmb3IgcmVwbGFjZWQgdHJhY2snKTsKKyAgICAgIHZhbGlkYXRlUnRjU3RhdHMo
cmVwb3J0LCB0cmFja1N0YXRzKTsKKyAgICAgIHQuZG9uZSgpOworICAgIH0pKQorICAgIC5jYXRj
aCh0LnN0ZXBfZnVuYyhyZWFzb24gPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZChyZWFzb24p
OworICAgIH0pKTsKKyAgfSwgJ3JlcGxhY2VUcmFjaygpIGJlZm9yZSBvZmZlcjogbmV3IHRyYWNr
IGF0dGFjaG1lbnQgc3RhdHMgcHJlc2VudCcpOworCisgIGFzeW5jX3Rlc3QodCA9PiB7CisgICAg
Y29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7Cisg
ICAgbGV0IHNlbmRpbmdUcmFjazE7CisgICAgbGV0IHNlbmRpbmdUcmFjazI7CisgICAgbGV0IHNl
bmRlcjsKKyAgICByZXR1cm4gZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygyKQorICAgIC50
aGVuKHQuc3RlcF9mdW5jKChbdHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAgICAgc2VuZGluZ1Ry
YWNrMSA9IHRyYWNrc1swXTsKKyAgICAgIHNlbmRpbmdUcmFjazIgPSB0cmFja3NbMV07CisgICAg
ICBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2soc2VuZGluZ1RyYWNrMSk7CisgICAgICByZXR1cm4g
ZXhjaGFuZ2VPZmZlcihjYWxsZXIsIGNhbGxlZSk7CisgICAgfSkpCisgICAgLnRoZW4odC5zdGVw
X2Z1bmMoKCkgPT4geworICAgICAgcmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2soc2VuZGluZ1Ry
YWNrMik7CisgICAgfSkpCisgICAgLnRoZW4odC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgcmV0
dXJuIGNhbGxlci5nZXRTdGF0cygpOworICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKHJl
cG9ydCA9PiB7CisgICAgICBsZXQgdHJhY2tTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZElkKHJl
cG9ydCwgJ3RyYWNrJywgc2VuZGluZ1RyYWNrMi5pZCk7CisgICAgICBhc3NlcnRfdHJ1ZSh0cmFj
a1N0YXRzICE9IG51bGwsICdIYXMgc3RhdHMgZm9yIHJlcGxhY2VkIHRyYWNrJyk7CisgICAgICBs
ZXQgb3V0Ym91bmRTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZE1lbWJlcihyZXBvcnQsICdvdXRi
b3VuZC1ydHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RyYWNrSWQnLCB0cmFja1N0YXRzLmlkKTsKKyAgICAgIGFzc2VydF90cnVlKG91dGJv
dW5kU3RhdHMgIT0gbnVsbCwgJ0hhcyBzdGF0cyBmb3Igb3V0Ym91bmQgUlRQIHN0cmVhbScpOwor
ICAgICAgdmFsaWRhdGVSdGNTdGF0cyhyZXBvcnQsIHRyYWNrU3RhdHMpOworICAgICAgdmFsaWRh
dGVSdGNTdGF0cyhyZXBvcnQsIG91dGJvdW5kU3RhdHMpOworICAgICAgdC5kb25lKCk7CisgICAg
fSkpCisgICAgLmNhdGNoKHQuc3RlcF9mdW5jKHJlYXNvbiA9PiB7CisgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKHJlYXNvbik7CisgICAgfSkpOworICB9LCAncmVwbGFjZVRyYWNrKCkgYWZ0ZXIgb2Zm
ZXIsIGJlZm9yZSBhbnN3ZXI6IG5ldyB0cmFjayBhdHRhY2htZW50IHN0YXRzICcgKworICAgICAn
cHJlc2VudCcpOworCisgIGFzeW5jX3Rlc3QodCA9PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xv
c2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7CisgICAgbGV0IHNlbmRpbmdUcmFj
azE7CisgICAgbGV0IHNlbmRpbmdUcmFjazI7CisgICAgbGV0IHNlbmRlcjsKKyAgICByZXR1cm4g
Z2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygyKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKChb
dHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAgICAgc2VuZGluZ1RyYWNrMSA9IHRyYWNrc1swXTsK
KyAgICAgIHNlbmRpbmdUcmFjazIgPSB0cmFja3NbMV07CisgICAgICBzZW5kZXIgPSBjYWxsZXIu
YWRkVHJhY2soc2VuZGluZ1RyYWNrMSk7CisgICAgICByZXR1cm4gZG9TaWduYWxpbmdIYW5kc2hh
a2UoY2FsbGVyLCBjYWxsZWUpOworICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+
IHsKKyAgICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNrKHNlbmRpbmdUcmFjazIpOworICAg
IH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIHJldHVybiBjYWxsZXIu
Z2V0U3RhdHMoKTsKKyAgICB9KSkKKyAgICAudGhlbih0LnN0ZXBfZnVuYyhyZXBvcnQgPT4gewor
ICAgICAgbGV0IHRyYWNrU3RhdHMgPSBmaW5kU3RhdHNCeVR5cGVBbmRJZChyZXBvcnQsICd0cmFj
aycsIHNlbmRpbmdUcmFjazIuaWQpOworICAgICAgYXNzZXJ0X3RydWUodHJhY2tTdGF0cyAhPSBu
dWxsLCAnSGFzIHN0YXRzIGZvciByZXBsYWNlZCB0cmFjaycpOworICAgICAgbGV0IG91dGJvdW5k
U3RhdHMgPSBmaW5kU3RhdHNCeVR5cGVBbmRNZW1iZXIocmVwb3J0LCAnb3V0Ym91bmQtcnRwJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFj
a0lkJywgdHJhY2tTdGF0cy5pZCk7CisgICAgICBhc3NlcnRfdHJ1ZShvdXRib3VuZFN0YXRzICE9
IG51bGwsICdIYXMgc3RhdHMgZm9yIG91dGJvdW5kIFJUUCBzdHJlYW0nKTsKKyAgICAgIHZhbGlk
YXRlUnRjU3RhdHMocmVwb3J0LCB0cmFja1N0YXRzKTsKKyAgICAgIHZhbGlkYXRlUnRjU3RhdHMo
cmVwb3J0LCBvdXRib3VuZFN0YXRzKTsKKyAgICAgIHQuZG9uZSgpOworICAgIH0pKQorICAgIC5j
YXRjaCh0LnN0ZXBfZnVuYyhyZWFzb24gPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZChyZWFz
b24pOworICAgIH0pKTsKKyAgfSwgJ3JlcGxhY2VUcmFjaygpIGFmdGVyIGFuc3dlcjogbmV3IHRy
YWNrIGF0dGFjaG1lbnQgc3RhdHMgcHJlc2VudCcpOworCisgIGFzeW5jX3Rlc3QodCA9PiB7Cisg
ICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7
CisgICAgbGV0IHNlbmRpbmdUcmFjazE7CisgICAgbGV0IHNlbmRpbmdUcmFjazI7CisgICAgbGV0
IHNlbmRlcjsKKyAgICByZXR1cm4gZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygyKQorICAg
IC50aGVuKHQuc3RlcF9mdW5jKChbdHJhY2tzLCBzdHJlYW1zXSkgPT4geworICAgICAgc2VuZGlu
Z1RyYWNrMSA9IHRyYWNrc1swXTsKKyAgICAgIHNlbmRpbmdUcmFjazIgPSB0cmFja3NbMV07Cisg
ICAgICBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2soc2VuZGluZ1RyYWNrMSk7CisgICAgICByZXR1
cm4gZG9TaWduYWxpbmdIYW5kc2hha2UoY2FsbGVyLCBjYWxsZWUpOworICAgIH0pKQorICAgIC50
aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNr
KHNlbmRpbmdUcmFjazIpOworICAgIH0pKQorICAgIC50aGVuKHQuc3RlcF9mdW5jKCgpID0+IHsK
KyAgICAgIHJldHVybiBjYWxsZXIuZ2V0U3RhdHMoKTsKKyAgICB9KSkKKyAgICAudGhlbih0LnN0
ZXBfZnVuYyhyZXBvcnQgPT4geworICAgICAgbGV0IHRyYWNrU3RhdHMgPSBmaW5kU3RhdHNCeVR5
cGVBbmRJZChyZXBvcnQsICd0cmFjaycsIHNlbmRpbmdUcmFjazEuaWQpOworICAgICAgYXNzZXJ0
X3RydWUodHJhY2tTdGF0cyAhPSBudWxsLCAnSGFzIHN0YXRzIGZvciBvcmlnaW5hbCB0cmFjaycp
OworICAgICAgYXNzZXJ0X3RydWUodHJhY2tTdGF0cy5vYmplY3REZWxldGVkKTsKKyAgICAgIGxl
dCBvdXRib3VuZFN0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kTWVtYmVyKHJlcG9ydCwgJ291dGJv
dW5kLXJ0cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndHJhY2tJZCcsIHRyYWNrU3RhdHMuaWQpOworICAgICAgYXNzZXJ0X3RydWUob3V0Ym91
bmRTdGF0cyA9PSBudWxsLAorICAgICAgICAgICAgICAgICAgJ1RoZSBvdXRib3VuZCBSVFAgc3Ry
ZWFtIHNob3VsZCBubyBsb25nZXIgcmVmZXJlbmNlIHRoZSAnICsKKyAgICAgICAgICAgICAgICAg
ICdvcmlnaW5hbCBhdHRhY2htZW50Jyk7CisgICAgICB0LmRvbmUoKTsKKyAgICB9KSkKKyAgICAu
Y2F0Y2godC5zdGVwX2Z1bmMocmVhc29uID0+IHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQocmVh
c29uKTsKKyAgICB9KSk7CisgIH0sICdyZXBsYWNlVHJhY2soKTogb3JpZ2luYWwgdHJhY2sgYXR0
YWNobWVudCBzdGF0cyBwcmVzZW50IGFmdGVyIHJlcGxhY2luZycpOworCisgIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjYWxsZXIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlci5jbG9zZSgpKTsKKyAgICBjb25zdCBj
YWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBsZXQgW3RyYWNrcywgc3RyZWFtc10gPSBhd2FpdCBnZXRV
c2VyTWVkaWFUcmFja3NBbmRTdHJlYW1zKDIpOworICAgIGxldCBzZW5kZXIgPSBjYWxsZXIuYWRk
VHJhY2sodHJhY2tzWzBdLCBzdHJlYW1zWzBdKTsKKyAgICBjYWxsZWUuYWRkVHJhY2sodHJhY2tz
WzFdLCBzdHJlYW1zWzFdKTsKKyAgICBleGNoYW5nZUljZUNhbmRpZGF0ZXMoY2FsbGVyLCBjYWxs
ZWUpOworICAgIGF3YWl0IGRvU2lnbmFsaW5nSGFuZHNoYWtlKGNhbGxlciwgY2FsbGVlKTsKKyAg
ICBhd2FpdCBvbkljZUNvbm5lY3Rpb25TdGF0ZUNvbXBsZXRlZChjYWxsZXIpOworICAgIGxldCBy
ZWNlaXZlciA9IGNhbGxlci5nZXRSZWNlaXZlcnMoKVswXTsKKworICAgIC8vIE9idGFpbiBpbmJv
dW5kIGFuZCBvdXRib3VuZCBSVFAgc3RyZWFtIHN0YXRzIG9uIGEgZnVsbCBzdGF0cyByZXBvcnQu
CisgICAgbGV0IGZ1bGxSZXBvcnQgPSBhd2FpdCBjYWxsZXIuZ2V0U3RhdHMoKTsKKyAgICBsZXQg
b3V0Ym91bmRUcmFja1N0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kSWQoCisgICAgICAgIGZ1bGxS
ZXBvcnQsICd0cmFjaycsIHNlbmRlci50cmFjay5pZCk7CisgICAgbGV0IG91dGJvdW5kU3RhdHMg
PSBmaW5kU3RhdHNCeVR5cGVBbmRNZW1iZXIoCisgICAgICAgIGZ1bGxSZXBvcnQsICdvdXRib3Vu
ZC1ydHAnLCAndHJhY2tJZCcsIG91dGJvdW5kVHJhY2tTdGF0cy5pZCk7CisgICAgYXNzZXJ0X3Ry
dWUob3V0Ym91bmRTdGF0cyAhPSBudWxsLCAnSGFzIHN0YXRzIGZvciBvdXRib3VuZCBSVFAgc3Ry
ZWFtJyk7CisgICAgbGV0IGluYm91bmRUcmFja1N0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kSWQo
CisgICAgICAgIGZ1bGxSZXBvcnQsICd0cmFjaycsIHJlY2VpdmVyLnRyYWNrLmlkKTsKKyAgICBs
ZXQgaW5ib3VuZFN0YXRzID0gZmluZFN0YXRzQnlUeXBlQW5kTWVtYmVyKAorICAgICAgICBmdWxs
UmVwb3J0LCAnaW5ib3VuZC1ydHAnLCAndHJhY2tJZCcsIGluYm91bmRUcmFja1N0YXRzLmlkKTsK
KyAgICBhc3NlcnRfdHJ1ZShpbmJvdW5kU3RhdHMgIT0gbnVsbCwgJ0hhcyBzdGF0cyBmb3IgaW5i
b3VuZCBSVFAgc3RyZWFtJyk7CisKKyAgICAvLyBQZXJmb3JtIHN0YXRzIHNlbGVjdGlvbiBhbGdv
cml0aG0gd2l0aCBzZW5kZXIgc2VsZWN0b3IuIFRoZSByZXN1bHQgc2hvdWxkCisgICAgLy8gY29u
dGFpbiB0aGUgb3V0Ym91bmQtcnRwIGJ1dCBub3QgdGhlIGluYm91bmQtcnRwLgorICAgIGxldCBz
ZW5kZXJSZXBvcnQgPSBhd2FpdCBzZW5kZXIuZ2V0U3RhdHMoKTsKKyAgICBhc3NlcnRfdHJ1ZShz
ZW5kZXJSZXBvcnQuaGFzKG91dGJvdW5kU3RhdHMuaWQpKTsKKyAgICBhc3NlcnRfZmFsc2Uoc2Vu
ZGVyUmVwb3J0LmhhcyhpbmJvdW5kU3RhdHMuaWQpKTsKKworICAgIC8vIFZhbGlkYXRlIHRoZSBz
dGF0cyBncmFwaCwgZW5zdXJpbmcgYWxsIHN0YXRzIG9iamVjdHMgYXJlIHJlYWNoYWJsZSBhbmQK
KyAgICAvLyB2YWxpZCBmcm9tIHRoZSBvdXRib3VuZC1ydHAgc3RhdHMuCisgICAgdmFsaWRhdGVT
dGF0c0dyYXBoKHNlbmRlclJlcG9ydCwgc2VuZGVyUmVwb3J0LmdldChvdXRib3VuZFN0YXRzLmlk
KSk7CisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHN0YXRzIGdyYXBoIGNvbnRhaW5zIHNvbWUgZXhw
ZWN0ZWQgZGljdGlvbmFyaWVzLgorICAgIGFzc2VydF9lcXVhbHMoZmluZFN0YXRzT2ZUeXBlKHNl
bmRlclJlcG9ydCwgJ3RyYWNrJykubGVuZ3RoLCAxLAorICAgICAgICAnc2VuZGVyUmVwb3J0IHNo
b3VsZCBjb250YWluIHRyYWNrIHN0YXRzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhmaW5kU3RhdHNP
ZlR5cGUoc2VuZGVyUmVwb3J0LCAndHJhbnNwb3J0JykubGVuZ3RoLCAxLAorICAgICAgICAnc2Vu
ZGVyUmVwb3J0IHNob3VsZCBjb250YWluIHRyYW5zcG9ydCBzdGF0cycpOworICAgIGFzc2VydF9l
cXVhbHMoZmluZFN0YXRzT2ZUeXBlKHNlbmRlclJlcG9ydCwgJ2NhbmRpZGF0ZS1wYWlyJykubGVu
Z3RoLCAxLAorICAgICAgICAnc2VuZGVyUmVwb3J0IHNob3VsZCBjb250YWluIGNhbmRpZGF0ZS1w
YWlyIHN0YXRzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhmaW5kU3RhdHNPZlR5cGUoc2VuZGVyUmVw
b3J0LCAnbG9jYWwtY2FuZGlkYXRlJykubGVuZ3RoLCAxLAorICAgICAgICAnc2VuZGVyUmVwb3J0
IHNob3VsZCBjb250YWluIGxvY2FsLWNhbmRpZGF0ZSBzdGF0cycpOworICAgIGFzc2VydF9lcXVh
bHMoZmluZFN0YXRzT2ZUeXBlKHNlbmRlclJlcG9ydCwgJ3JlbW90ZS1jYW5kaWRhdGUnKS5sZW5n
dGgsIDEsCisgICAgICAgICdzZW5kZXJSZXBvcnQgc2hvdWxkIGNvbnRhaW4gcmVtb3RlLWNhbmRp
ZGF0ZSBzdGF0cycpOworICB9LCAnUlRDUnRwU2VuZGVyLmdldFN0YXRzKCkgY29udGFpbnMgb25s
eSBvdXRib3VuZC1ydHAgYW5kIHJlbGF0ZWQgc3RhdHMnKTsKKworICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Cisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CisgICAgY29uc3QgY2FsbGVl
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxs
ZWUuY2xvc2UoKSk7CisgICAgbGV0IFt0cmFja3MsIHN0cmVhbXNdID0gYXdhaXQgZ2V0VXNlck1l
ZGlhVHJhY2tzQW5kU3RyZWFtcygyKTsKKyAgICBsZXQgc2VuZGVyID0gY2FsbGVyLmFkZFRyYWNr
KHRyYWNrc1swXSwgc3RyZWFtc1swXSk7CisgICAgY2FsbGVlLmFkZFRyYWNrKHRyYWNrc1sxXSwg
c3RyZWFtc1sxXSk7CisgICAgZXhjaGFuZ2VJY2VDYW5kaWRhdGVzKGNhbGxlciwgY2FsbGVlKTsK
KyAgICBhd2FpdCBkb1NpZ25hbGluZ0hhbmRzaGFrZShjYWxsZXIsIGNhbGxlZSk7CisgICAgYXdh
aXQgb25JY2VDb25uZWN0aW9uU3RhdGVDb21wbGV0ZWQoY2FsbGVyKTsKKyAgICBsZXQgcmVjZWl2
ZXIgPSBjYWxsZXIuZ2V0UmVjZWl2ZXJzKClbMF07CisKKyAgICAvLyBPYnRhaW4gaW5ib3VuZCBh
bmQgb3V0Ym91bmQgUlRQIHN0cmVhbSBzdGF0cyBvbiBhIGZ1bGwgc3RhdHMgcmVwb3J0LgorICAg
IGxldCBmdWxsUmVwb3J0ID0gYXdhaXQgY2FsbGVyLmdldFN0YXRzKCk7CisgICAgbGV0IG91dGJv
dW5kVHJhY2tTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZElkKAorICAgICAgICBmdWxsUmVwb3J0
LCAndHJhY2snLCBzZW5kZXIudHJhY2suaWQpOworICAgIGxldCBvdXRib3VuZFN0YXRzID0gZmlu
ZFN0YXRzQnlUeXBlQW5kTWVtYmVyKAorICAgICAgICBmdWxsUmVwb3J0LCAnb3V0Ym91bmQtcnRw
JywgJ3RyYWNrSWQnLCBvdXRib3VuZFRyYWNrU3RhdHMuaWQpOworICAgIGFzc2VydF90cnVlKG91
dGJvdW5kU3RhdHMgIT0gbnVsbCwgJ0hhcyBzdGF0cyBmb3Igb3V0Ym91bmQgUlRQIHN0cmVhbScp
OworICAgIGxldCBpbmJvdW5kVHJhY2tTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZElkKAorICAg
ICAgICBmdWxsUmVwb3J0LCAndHJhY2snLCByZWNlaXZlci50cmFjay5pZCk7CisgICAgbGV0IGlu
Ym91bmRTdGF0cyA9IGZpbmRTdGF0c0J5VHlwZUFuZE1lbWJlcigKKyAgICAgICAgZnVsbFJlcG9y
dCwgJ2luYm91bmQtcnRwJywgJ3RyYWNrSWQnLCBpbmJvdW5kVHJhY2tTdGF0cy5pZCk7CisgICAg
YXNzZXJ0X3RydWUoaW5ib3VuZFN0YXRzICE9IG51bGwsICdIYXMgc3RhdHMgZm9yIGluYm91bmQg
UlRQIHN0cmVhbScpOworCisgICAgLy8gUGVyZm9ybSBzdGF0cyBzZWxlY3Rpb24gYWxnb3JpdGht
IHdpdGggcmVjZWl2ZXIgc2VsZWN0b3IuIFRoZSByZXN1bHQKKyAgICAvLyBzaG91bGQgY29udGFp
biB0aGUgaW5ib3VuZC1ydHAgYnV0IG5vdCB0aGUgb3V0Ym91bmQtcnRwLgorICAgIGxldCByZWNl
aXZlclJlcG9ydCA9IGF3YWl0IHJlY2VpdmVyLmdldFN0YXRzKCk7CisgICAgYXNzZXJ0X3RydWUo
cmVjZWl2ZXJSZXBvcnQuaGFzKGluYm91bmRTdGF0cy5pZCkpOworICAgIGFzc2VydF9mYWxzZShy
ZWNlaXZlclJlcG9ydC5oYXMob3V0Ym91bmRTdGF0cy5pZCkpOworCisgICAgLy8gVmFsaWRhdGUg
dGhlIHN0YXRzIGdyYXBoLCBlbnN1cmluZyBhbGwgc3RhdHMgb2JqZWN0cyBhcmUgcmVhY2hhYmxl
IGFuZAorICAgIC8vIHZhbGlkIGZyb20gdGhlIG91dGJvdW5kLXJ0cCBzdGF0cy4KKyAgICB2YWxp
ZGF0ZVN0YXRzR3JhcGgocmVjZWl2ZXJSZXBvcnQsIHJlY2VpdmVyUmVwb3J0LmdldChpbmJvdW5k
U3RhdHMuaWQpKTsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc3RhdHMgZ3JhcGggY29udGFpbnMg
c29tZSBleHBlY3RlZCBkaWN0aW9uYXJpZXMuCisgICAgYXNzZXJ0X2VxdWFscyhmaW5kU3RhdHNP
ZlR5cGUocmVjZWl2ZXJSZXBvcnQsICd0cmFjaycpLmxlbmd0aCwgMSwKKyAgICAgICAgJ3JlY2Vp
dmVyUmVwb3J0IHNob3VsZCBjb250YWluIHRyYWNrIHN0YXRzJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhmaW5kU3RhdHNPZlR5cGUocmVjZWl2ZXJSZXBvcnQsICd0cmFuc3BvcnQnKS5sZW5ndGgsIDEs
CisgICAgICAgICdyZWNlaXZlclJlcG9ydCBzaG91bGQgY29udGFpbiB0cmFuc3BvcnQgc3RhdHMn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGZpbmRTdGF0c09mVHlwZShyZWNlaXZlclJlcG9ydCwgJ2Nh
bmRpZGF0ZS1wYWlyJykubGVuZ3RoLCAxLAorICAgICAgICAncmVjZWl2ZXJSZXBvcnQgc2hvdWxk
IGNvbnRhaW4gY2FuZGlkYXRlLXBhaXIgc3RhdHMnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGZpbmRT
dGF0c09mVHlwZShyZWNlaXZlclJlcG9ydCwgJ2xvY2FsLWNhbmRpZGF0ZScpLmxlbmd0aCwgMSwK
KyAgICAgICAgJ3JlY2VpdmVyUmVwb3J0IHNob3VsZCBjb250YWluIGxvY2FsLWNhbmRpZGF0ZSBz
dGF0cycpOworICAgIGFzc2VydF9lcXVhbHMoZmluZFN0YXRzT2ZUeXBlKHJlY2VpdmVyUmVwb3J0
LCAncmVtb3RlLWNhbmRpZGF0ZScpLmxlbmd0aCwgMSwKKyAgICAgICAgJ3JlY2VpdmVyUmVwb3J0
IHNob3VsZCBjb250YWluIHJlbW90ZS1jYW5kaWRhdGUgc3RhdHMnKTsKKyAgfSwgJ1JUQ1J0cFJl
Y2VpdmVyLmdldFN0YXRzKCkgY29udGFpbnMgb25seSBpbmJvdW5kLXJ0cCBhbmQgcmVsYXRlZCBz
dGF0cycpOworCisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBjYWxsZXIg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxl
ci5jbG9zZSgpKTsKKyAgICBjb25zdCBjYWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
KyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBsZXQgW3RyYWNr
cywgc3RyZWFtc10gPSBhd2FpdCBnZXRVc2VyTWVkaWFUcmFja3NBbmRTdHJlYW1zKDIpOworICAg
IGxldCBzZW5kZXIgPSBjYWxsZXIuYWRkVHJhY2sodHJhY2tzWzBdLCBzdHJlYW1zWzBdKTsKKyAg
ICBjYWxsZWUuYWRkVHJhY2sodHJhY2tzWzFdLCBzdHJlYW1zWzFdKTsKKyAgICBleGNoYW5nZUlj
ZUNhbmRpZGF0ZXMoY2FsbGVyLCBjYWxsZWUpOworICAgIGF3YWl0IGRvU2lnbmFsaW5nSGFuZHNo
YWtlKGNhbGxlciwgY2FsbGVlKTsKKyAgICBhd2FpdCBvbkljZUNvbm5lY3Rpb25TdGF0ZUNvbXBs
ZXRlZChjYWxsZXIpOworCisgICAgbGV0IHNlbmRlclJlcG9ydCA9IGF3YWl0IHNlbmRlci5nZXRT
dGF0cygpOworICAgIGxldCB0cmFja1JlcG9ydCA9IGF3YWl0IGNhbGxlci5nZXRTdGF0cyhzZW5k
ZXIudHJhY2spOworCisgICAgLy8gVmVyaWZ5IHRoZSBzYW1lIHN0YXRzIG9iamVjdHMgYXJlIHJl
dHVybmVkIGJ1dCBkb24ndCBjb21wYXJlIGVhY2gKKyAgICAvLyBpbmRpdmlkdWFsIG1ldHJpYyBi
ZWNhdXNlIHRpbWVzdGFtcHMgYW5kIGNvdW50ZXJzIGNvdWxkIGhhdmUgZ29uZSB1cAorICAgIC8v
IGJldHdlZW4gdGhlIHR3byBnZXRTdGF0cygpIGNhbGxzLgorICAgIHNlbmRlclJlcG9ydC5mb3JF
YWNoKHNlbmRlclJlcG9ydFN0YXQgPT4geworICAgICAgYXNzZXJ0X3RydWUodHJhY2tSZXBvcnQu
aGFzKHNlbmRlclJlcG9ydFN0YXQuaWQpKTsKKyAgICB9KTsKKyAgICB0cmFja1JlcG9ydC5mb3JF
YWNoKHRyYWNrUmVwb3J0U3RhdCA9PiB7CisgICAgICBhc3NlcnRfdHJ1ZShzZW5kZXJSZXBvcnQu
aGFzKHRyYWNrUmVwb3J0U3RhdC5pZCkpOworICAgIH0pOworICB9LCAnUlRDUGVlckNvbm5lY3Rp
b24uZ2V0U3RhdHMoc2VuZGluZ1RyYWNrKSBpcyB0aGUgc2FtZSBhcyAnICsKKyAgICAgJ1JUQ1J0
cFNlbmRlci5nZXRTdGF0cygpJyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOworICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkpOwor
ICAgIGxldCBbdHJhY2tzLCBzdHJlYW1zXSA9IGF3YWl0IGdldFVzZXJNZWRpYVRyYWNrc0FuZFN0
cmVhbXMoMik7CisgICAgbGV0IHNlbmRlciA9IGNhbGxlci5hZGRUcmFjayh0cmFja3NbMF0sIHN0
cmVhbXNbMF0pOworICAgIGNhbGxlZS5hZGRUcmFjayh0cmFja3NbMV0sIHN0cmVhbXNbMV0pOwor
ICAgIGV4Y2hhbmdlSWNlQ2FuZGlkYXRlcyhjYWxsZXIsIGNhbGxlZSk7CisgICAgYXdhaXQgZG9T
aWduYWxpbmdIYW5kc2hha2UoY2FsbGVyLCBjYWxsZWUpOworICAgIGF3YWl0IG9uSWNlQ29ubmVj
dGlvblN0YXRlQ29tcGxldGVkKGNhbGxlcik7CisgICAgbGV0IHJlY2VpdmVyID0gY2FsbGVyLmdl
dFJlY2VpdmVycygpWzBdOworCisgICAgbGV0IHJlY2VpdmVyUmVwb3J0ID0gYXdhaXQgcmVjZWl2
ZXIuZ2V0U3RhdHMoKTsKKyAgICBsZXQgdHJhY2tSZXBvcnQgPSBhd2FpdCBjYWxsZXIuZ2V0U3Rh
dHMocmVjZWl2ZXIudHJhY2spOworCisgICAgLy8gVmVyaWZ5IHRoZSBzYW1lIHN0YXRzIG9iamVj
dHMgYXJlIHJldHVybmVkIGJ1dCBkb24ndCBjb21wYXJlIGVhY2gKKyAgICAvLyBpbmRpdmlkdWFs
IG1ldHJpYyBiZWNhdXNlIHRpbWVzdGFtcHMgYW5kIGNvdW50ZXJzIGNvdWxkIGhhdmUgZ29uZSB1
cAorICAgIC8vIGJldHdlZW4gdGhlIHR3byBnZXRTdGF0cygpIGNhbGxzLgorICAgIHJlY2VpdmVy
UmVwb3J0LmZvckVhY2gocmVjZWl2ZXJSZXBvcnRTdGF0ID0+IHsKKyAgICAgIGFzc2VydF90cnVl
KHRyYWNrUmVwb3J0LmhhcyhyZWNlaXZlclJlcG9ydFN0YXQuaWQpKTsKKyAgICB9KTsKKyAgICB0
cmFja1JlcG9ydC5mb3JFYWNoKHRyYWNrUmVwb3J0U3RhdCA9PiB7CisgICAgICBhc3NlcnRfdHJ1
ZShyZWNlaXZlclJlcG9ydC5oYXModHJhY2tSZXBvcnRTdGF0LmlkKSk7CisgICAgfSk7CisgIH0s
ICdSVENQZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZWNlaXZpbmdUcmFjaykgaXMgdGhlIHNhbWUg
YXMgJyArCisgICAgICdSVENSdHBSZWNlaXZlci5nZXRTdGF0cygpJyk7CisKKyAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAgICBsZXQgW3RyYWNrcywg
c3RyZWFtc10gPSBhd2FpdCBnZXRVc2VyTWVkaWFUcmFja3NBbmRTdHJlYW1zKDEpOworICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywgcGMuZ2V0U3RhdHMo
dHJhY2tzWzBdKSk7CisgIH0sICdSVENQZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyh0cmFjaykgdGhy
b3dzIEludmFsaWRBY2Nlc3NFcnJvciB3aGVuIHRoZXJlICcgKworICAgICAnYXJlIHplcm8gc2Vu
ZGVycyBvciByZWNlaXZlcnMgZm9yIHRoZSB0cmFjaycpOworCisgIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAgbGV0IFt0cmFja3MsIHN0cmVhbXNd
ID0gYXdhaXQgZ2V0VXNlck1lZGlhVHJhY2tzQW5kU3RyZWFtcygyKTsKKyAgICBsZXQgc2VuZGVy
MSA9IHBjLmFkZFRyYWNrKHRyYWNrc1swXSk7CisgICAgbGV0IHNlbmRlcjIgPSBwYy5hZGRUcmFj
ayh0cmFja3NbMV0pOworICAgIGF3YWl0IHNlbmRlcjIucmVwbGFjZVRyYWNrKHNlbmRlcjEudHJh
Y2spOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywg
cGMuZ2V0U3RhdHMoc2VuZGVyMS50cmFjaykpOworICB9LCAnUlRDUGVlckNvbm5lY3Rpb24uZ2V0
U3RhdHModHJhY2spIHRocm93cyBJbnZhbGlkQWNjZXNzRXJyb3Igd2hlbiB0aGVyZSAnICsKKyAg
ICAgJ2FyZSBtdWx0aXBsZSBzZW5kZXJzIGZvciB0aGUgdHJhY2snKTsKKworICAvLyBIZWxwZXJz
LgorCisgIGZ1bmN0aW9uIGZpbmRTdGF0c0J5VHlwZUFuZElkKHJlcG9ydCwgdHlwZSwgaWRlbnRp
ZmllcikgeworICAgIHJldHVybiBmaW5kU3RhdHMocmVwb3J0LCBzdGF0cyA9PiB7CisgICAgICBy
ZXR1cm4gc3RhdHMudHlwZSA9PSB0eXBlICYmIHN0YXRzW3R5cGUgKyAnSWRlbnRpZmllciddID09
IGlkZW50aWZpZXI7CisgICAgfSk7CisgIH0KKworICBmdW5jdGlvbiBmaW5kU3RhdHNCeVR5cGVB
bmRNZW1iZXIocmVwb3J0LCB0eXBlLCBtZW1iZXIsIHZhbHVlKSB7CisgICAgcmV0dXJuIGZpbmRT
dGF0cyhyZXBvcnQsIHN0YXRzID0+IHsKKyAgICAgIHJldHVybiBzdGF0cy50eXBlID09IHR5cGUg
JiYgc3RhdHNbbWVtYmVyXSA9PSB2YWx1ZTsKKyAgICB9KTsKKyAgfQorCisgIGZ1bmN0aW9uIGZp
bmRTdGF0cyhyZXBvcnQsIGZpbmRGdW5jKSB7CisgICAgZm9yIChsZXQgaXQgPSByZXBvcnQudmFs
dWVzKCksIG4gPSBpdC5uZXh0KCk7ICFuLmRvbmU7IG4gPSBpdC5uZXh0KCkpIHsKKyAgICAgIGlm
IChmaW5kRnVuYyhuLnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG4udmFsdWU7CisgICAgfQorICAg
IHJldHVybiBudWxsOworICB9CisKKyAgZnVuY3Rpb24gZmluZFN0YXRzT2ZUeXBlKHJlcG9ydCwg
dHlwZSkgeworICAgIGxldCBzdGF0cyA9IFtdOworICAgIGZvciAobGV0IGl0ID0gcmVwb3J0LnZh
bHVlcygpLCBuID0gaXQubmV4dCgpOyAhbi5kb25lOyBuID0gaXQubmV4dCgpKSB7CisgICAgICBp
ZiAobi52YWx1ZS50eXBlID09IHR5cGUpCisgICAgICAgIHN0YXRzLnB1c2gobi52YWx1ZSk7Cisg
ICAgfQorICAgIHJldHVybiBzdGF0czsKKyAgfQorCisgIC8vIFJldHVybnMgYSBwcm9taXNlIHRo
YXQgaXMgcmVzb2x2ZWQgd2hlbiBwYy5pY2VDb25uZWN0aW9uU3RhdGUgcmVhY2hlcyB0aGUKKyAg
Ly8gJ2Nvbm5lY3RlZCcgb3IgJ2NvbXBsZXRlZCcgc3RhdGUuIFRoaXMgaXMgd2hlbiB0cmFuc3Bv
cnQgc3RhdHMgY2FuIGJlCisgIC8vIGV4cGVjdGVkIHRvIGhhdmUgaXRzIHNlbGVjdGVkQ2FuZGlk
YXRlUGFpcklkIGRlZmluZWQuCisgIGFzeW5jIGZ1bmN0aW9uIG9uSWNlQ29ubmVjdGlvblN0YXRl
Q29tcGxldGVkKHBjKSB7CisgICAgaWYgKHBjLmljZUNvbm5lY3Rpb25TdGF0ZSA9PSAnY29ubmVj
dGVkJyB8fAorICAgICAgICBwYy5pY2VDb25uZWN0aW9uU3RhdGUgPT0gJ2NvbXBsZXRlZCcpIHsK
KyAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB9CisgICAgbGV0IHJlc29sdmVy
ID0gbmV3IFJlc29sdmVyKCk7CisgICAgcGMub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBl
ID0+IHsKKyAgICAgIGlmIChwYy5pY2VDb25uZWN0aW9uU3RhdGUgPT0gJ2Nvbm5lY3RlZCcgfHwK
KyAgICAgICAgICBwYy5pY2VDb25uZWN0aW9uU3RhdGUgPT0gJ2NvbXBsZXRlZCcpIHsKKyAgICAg
ICAgcmVzb2x2ZXIucmVzb2x2ZSgpOworICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIHJlc29s
dmVyLnByb21pc2U7CisgIH0KKworICAvLyBFeHBsb3JlcyB0aGUgc3RhdHMgZ3JhcGggc3RhcnRp
bmcgZnJvbSB8c3RhdHwsIHZhbGlkYXRpbmcgZWFjaCBzdGF0CisgIC8vICh2YWxpZGF0ZVJ0Y1N0
YXRzKSBhbmQgYXNzZXJ0aW5nIHRoYXQgYWxsIHN0YXRzIG9mIHRoZSByZXBvcnQgd2VyZSB2aXNp
dGVkLgorICBmdW5jdGlvbiB2YWxpZGF0ZVN0YXRzR3JhcGgocmVwb3J0LCBzdGF0KSB7CisgICAg
bGV0IHZpc2l0ZWRJZHMgPSBuZXcgU2V0KCk7CisgICAgdmFsaWRhdGVTdGF0c0dyYXBoUmVjdXJz
aXZlbHkocmVwb3J0LCBzdGF0LmlkLCB2aXNpdGVkSWRzKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZp
c2l0ZWRJZHMuc2l6ZSwgcmVwb3J0LnNpemUsCisgICAgICAgICAgICAgICAgICAnRW50aXJlIHN0
YXRzIGdyYXBoIHNob3VsZCBoYXZlIGJlZW4gZXhwbG9yZWQuJykKKyAgfQorCisgIGZ1bmN0aW9u
IHZhbGlkYXRlU3RhdHNHcmFwaFJlY3Vyc2l2ZWx5KHJlcG9ydCwgY3VycmVudElkLCB2aXNpdGVk
SWRzKSB7CisgICAgaWYgKHZpc2l0ZWRJZHMuaGFzKGN1cnJlbnRJZCkpCisgICAgICByZXR1cm47
CisgICAgdmlzaXRlZElkcy5hZGQoY3VycmVudElkKTsKKyAgICBhc3NlcnRfdHJ1ZShyZXBvcnQu
aGFzKGN1cnJlbnRJZCksICdCcm9rZW4gcmVmZXJlbmNlLicpOworICAgIGxldCBzdGF0ID0gcmVw
b3J0LmdldChjdXJyZW50SWQpOworICAgIHZhbGlkYXRlUnRjU3RhdHMocmVwb3J0LCBzdGF0KTsK
KyAgICBmb3IgKGxldCBtZW1iZXIgaW4gc3RhdCkgeworICAgICAgaWYgKG1lbWJlci5lbmRzV2l0
aCgnSWQnKSkgeworICAgICAgICB2YWxpZGF0ZVN0YXRzR3JhcGhSZWN1cnNpdmVseShyZXBvcnQs
IHN0YXRbbWVtYmVyXSwgdmlzaXRlZElkcyk7CisgICAgICB9IGVsc2UgaWYgKG1lbWJlci5lbmRz
V2l0aCgnSWRzJykpIHsKKyAgICAgICAgbGV0IGlkcyA9IHN0YXRbbWVtYmVyXTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICB2YWxpZGF0
ZVN0YXRzR3JhcGhSZWN1cnNpdmVseShyZXBvcnQsIGlkc1tpXSwgdmlzaXRlZElkcyk7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICBhc3luYyBmdW5jdGlvbiBhc3luY19hc3Nl
cnRfdGhyb3dzKGV4Y2VwdGlvbk5hbWUsIHByb21pc2UsIGRlc2NyaXB0aW9uKSB7CisgICAgdHJ5
IHsKKyAgICAgIGF3YWl0IHByb21pc2U7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgYXNzZXJ0
X2VxdWFscyhlLm5hbWUsIGV4Y2VwdGlvbk5hbWUpOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdObyBleGNlcHRpb24gd2FzIHRocm93bi4nKTsKKyAgfQorCis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXRyYW5zY2VpdmVycy5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi10cmFuc2NlaXZlcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1ZDViNzNjMzhkZjExYjVkNzlmMTkyOWQ1ZDFmY2JkYWNlMGFmMDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi10cmFuc2NlaXZlcnMuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNDQgQEAKKworUEFTUyBhZGRUcmFjazogY3JlYXRlcyBhIHRyYW5zY2VpdmVy
IGZvciB0aGUgc2VuZGVyIAorUEFTUyBhZGRUcmFjazogInRyYW5zY2VpdmVyID09IHtzZW5kZXIs
cmVjZWl2ZXJ9IiAKK1BBU1MgYWRkVHJhY2s6IHRyYW5zY2VpdmVyLnNlbmRlciBpcyBhc3NvY2lh
dGVkIHdpdGggdGhlIHRyYWNrIAorUEFTUyBhZGRUcmFjazogdHJhbnNjZWl2ZXIucmVjZWl2ZXIg
aGFzIGl0cyBvd24gdHJhY2sgCitQQVNTIGFkZFRyYWNrOiB0cmFuc2NlaXZlci5yZWNlaXZlcidz
IHRyYWNrIGlzIG11dGVkIAorUEFTUyBhZGRUcmFjazogdHJhbnNjZWl2ZXIgaXMgbm90IGFzc29j
aWF0ZWQgd2l0aCBhbiBtLXNlY3Rpb24gCitQQVNTIGFkZFRyYWNrOiB0cmFuc2NlaXZlciBpcyBu
b3Qgc3RvcHBlZCAKK1BBU1MgYWRkVHJhY2s6IHRyYW5zY2VpdmVyJ3MgZGlyZWN0aW9uIGlzIHNl
bmRyZWN2IAorUEFTUyBhZGRUcmFjazogdHJhbnNjZWl2ZXIncyBjdXJyZW50RGlyZWN0aW9uIGlz
IG51bGwgCitQQVNTIHNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOiB0cmFuc2NlaXZlciBnZXRz
IGFzc29jaWF0ZWQgd2l0aCBhbiBtLXNlY3Rpb24gCitQQVNTIHNldExvY2FsRGVzY3JpcHRpb24o
b2ZmZXIpOiB0cmFuc2NlaXZlci5taWQgbWF0Y2hlcyB0aGUgb2ZmZXIgU0RQIAorUEFTUyBzZXRS
ZW1vdGVEZXNjcmlwdGlvbihvZmZlcik6IG9udHJhY2sgZmlyZXMgd2l0aCBhIHRyYWNrIAorUEFT
UyBzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik6IG9udHJhY2sncyB0cmFjay5pZCBpcyB0aGUg
c2FtZSBhcyB0cmFjay5pZCAKK1BBU1Mgc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOiBvbnRy
YWNrIGZpcmVzIHdpdGggYSB0cmFuc2NlaXZlci4gCitQQVNTIHNldFJlbW90ZURlc2NyaXB0aW9u
KG9mZmVyKTogdHJhbnNjZWl2ZXIubWlkIGlzIHRoZSBzYW1lIG9uIGJvdGggZW5kcyAKK1BBU1Mg
c2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOiAidHJhbnNjZWl2ZXIgPT0ge3NlbmRlcixyZWNl
aXZlcn0iIAorUEFTUyBzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik6IHRyYW5zY2VpdmVyLmRp
cmVjdGlvbiBpcyByZWN2b25seSAKK1BBU1Mgc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOiB0
cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIG51bGwgCitQQVNTIHNldFJlbW90ZURlc2Ny
aXB0aW9uKG9mZmVyKTogdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZSAKK1BBU1Mgc2V0TG9j
YWxEZXNjcmlwdGlvbihhbnN3ZXIpOiB0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIHJl
Y3Zvbmx5IAorUEFTUyBzZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik6IHRyYW5zY2VpdmVyLmN1
cnJlbnREaXJlY3Rpb24gaXMgc2VuZG9ubHkgCitQQVNTIGFkZFRyYW5zY2VpdmVyKHRyYWNrKTog
Y3JlYXRlcyBhIHRyYW5zY2VpdmVyIGZvciB0aGUgdHJhY2sgCitQQVNTIGFkZFRyYW5zY2VpdmVy
KHRyYWNrKTogInRyYW5zY2VpdmVyID09IHtzZW5kZXIscmVjZWl2ZXJ9IiAKK1BBU1MgYWRkVHJh
bnNjZWl2ZXIodHJhY2ssIGluaXQpOiBpbml0aWFsaXplIGRpcmVjdGlvbiB0byBpbmFjdGl2ZSAK
K0ZBSUwgYWRkVHJhbnNjZWl2ZXIodHJhY2ssIGluaXQpOiBpbml0aWFsaXplIHNlbmRFbmNvZGlu
Z3NbMF0uYWN0aXZlIHRvIGZhbHNlIGFzc2VydF9mYWxzZTogZXhwZWN0ZWQgZmFsc2UgZ290IHRy
dWUKK1BBU1MgYWRkVHJhbnNjZWl2ZXIoMCBzdHJlYW1zKTogb250cmFjayBmaXJlcyB3aXRoIG5v
IHN0cmVhbSAKK0ZBSUwgYWRkVHJhbnNjZWl2ZXIoMSBzdHJlYW0pOiBvbnRyYWNrIGZpcmVzIHdp
dGggY29ycmVzcG9uZGluZyBzdHJlYW0gYXNzZXJ0X2VxdWFsczogdHJhY2tFdmVudC5zdHJlYW1z
Lmxlbmd0aCA9PSAxIGV4cGVjdGVkIDEgYnV0IGdvdCAwCitGQUlMIGFkZFRyYW5zY2VpdmVyKDIg
c3RyZWFtcyk6IG9udHJhY2sgZmlyZXMgd2l0aCBjb3JyZXNwb25kaW5nIHR3byBzdHJlYW1zIGFz
c2VydF9lcXVhbHM6IHRyYWNrRXZlbnQuc3RyZWFtcy5sZW5ndGggPT0gMiBleHBlY3RlZCAyIGJ1
dCBnb3QgMAorUEFTUyBhZGRUcmFjaygwIHN0cmVhbXMpOiBvbnRyYWNrIGZpcmVzIHdpdGggbm8g
c3RyZWFtIAorUEFTUyBhZGRUcmFjaygxIHN0cmVhbSk6IG9udHJhY2sgZmlyZXMgd2l0aCBjb3Jy
ZXNwb25kaW5nIHN0cmVhbSAKK1BBU1MgYWRkVHJhY2soMiBzdHJlYW1zKTogb250cmFjayBmaXJl
cyB3aXRoIGNvcnJlc3BvbmRpbmcgdHdvIHN0cmVhbXMgCitQQVNTIGFkZFRyYW5zY2VpdmVyKCdh
dWRpbycpOiBjcmVhdGVzIGEgdHJhbnNjZWl2ZXIgd2l0aCBkaXJlY3Rpb24gc2VuZHJlY3YgCitQ
QVNTIGFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOiB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5r
aW5kID09ICdhdWRpbycgCitQQVNTIGFkZFRyYW5zY2VpdmVyKCd2aWRlbycpOiB0cmFuc2NlaXZl
ci5yZWNlaXZlci50cmFjay5raW5kID09ICd2aWRlbycgCitQQVNTIGFkZFRyYW5zY2VpdmVyKCdh
dWRpbycpOiB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgPT0gbnVsbCAKK1BBU1MgYWRkVHJhbnNj
ZWl2ZXIoJ2F1ZGlvJyk6IHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24gaXMgbnVsbCAKK1BB
U1MgYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk6IHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2Ug
CitQQVNTIGFkZFRyYWNrIHJldXNlcyByZXVzYWJsZSB0cmFuc2NlaXZlcnMgCitQQVNTIGFkZFRy
YW5zY2VpdmVyIGRvZXMgbm90IHJldXNlIHJldXNhYmxlIHRyYW5zY2VpdmVycyAKK1BBU1MgQ2Fu
IHNldHVwIHR3by13YXkgY2FsbCB1c2luZyBhIHNpbmdsZSB0cmFuc2NlaXZlciAKK1BBU1MgQ2xv
c2luZyB0aGUgUEMgc3RvcHMgdGhlIHRyYW5zY2VpdmVycyAKK0ZBSUwgQ2hhbmdpbmcgdHJhbnNj
ZWl2ZXIgZGlyZWN0aW9uIHRvICdzZW5kcmVjdicgbWFrZXMgb250cmFjayBmaXJlIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Bl
ZXJDb25uZWN0aW9uLXRyYW5zY2VpdmVycy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tdHJhbnNj
ZWl2ZXJzLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY5ODBlYTM4OWE3NzU1MWEzMzc1MGQzMzM0
OTExMGUzYjAyYjcyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXRyYW5zY2VpdmVy
cy5odHRwcy5odG1sCkBAIC0wLDAgKzEsNDY3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+Cis8dGl0bGU+UlRDUGVlckNvbm5lY3Rpb24tdHJhbnNjZWl2ZXJzLmh0dHBz
Lmh0bWw8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCisvLyBUaGUgZm9sbG93aW5nIGhlbHBlciBm
dW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qczoKKy8v
ICAgZXhjaGFuZ2VPZmZlcgorLy8gICBleGNoYW5nZU9mZmVyQW5kTGlzdGVuVG9PbnRyYWNrCisv
LyAgIGV4Y2hhbmdlQW5zd2VyCisvLyAgIGV4Y2hhbmdlQW5zd2VyQW5kTGlzdGVuVG9PbnRyYWNr
CisvLyAgIGFkZEV2ZW50TGlzdGVuZXJQcm9taXNlCisvLyAgIGNyZWF0ZVBlZXJDb25uZWN0aW9u
V2l0aENsZWFudXAKKy8vICAgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cAorLy8gICBm
aW5kVHJhbnNjZWl2ZXJGb3JTZW5kZXIKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBj
b25zdCBwYyA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IFt0
cmFjaywgc3RyZWFtXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFudXAodCk7
CisgIGNvbnN0IHNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICBjb25zdCB0
cmFuc2NlaXZlciA9IGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYywgc2VuZGVyKTsKKyAgYXNz
ZXJ0X3RydWUodHJhbnNjZWl2ZXIgaW5zdGFuY2VvZiBSVENSdHBUcmFuc2NlaXZlcik7CisgIGFz
c2VydF90cnVlKHRyYW5zY2VpdmVyLnNlbmRlciBpbnN0YW5jZW9mIFJUQ1J0cFNlbmRlcik7Cisg
IGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuc2VuZGVyLCBzZW5kZXIpOworfSwgJ2FkZFRyYWNr
OiBjcmVhdGVzIGEgdHJhbnNjZWl2ZXIgZm9yIHRoZSBzZW5kZXInKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICBjb25zdCBwYyA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFu
dXAodCk7CisgIGNvbnN0IFt0cmFjaywgc3RyZWFtXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3Ry
ZWFtV2l0aENsZWFudXAodCk7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0gZmluZFRyYW5zY2VpdmVy
Rm9yU2VuZGVyKHBjLCBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFtKSk7CisgIGFzc2VydF9hcnJh
eV9lcXVhbHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCksIFt0cmFuc2NlaXZlcl0sCisgICAgICAgICAg
ICAgICAgICAgICAgJ3BjLmdldFRyYW5zY2VpdmVycygpIGVxdWFscyBbdHJhbnNjZWl2ZXJdJyk7
CisgIGFzc2VydF9hcnJheV9lcXVhbHMocGMuZ2V0U2VuZGVycygpLCBbdHJhbnNjZWl2ZXIuc2Vu
ZGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAncGMuZ2V0U2VuZGVycygpIGVxdWFscyBbdHJh
bnNjZWl2ZXIuc2VuZGVyXScpOworICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBjLmdldFJlY2VpdmVy
cygpLCBbdHJhbnNjZWl2ZXIucmVjZWl2ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICdwYy5n
ZXRSZWNlaXZlcnMoKSBlcXVhbHMgW3RyYW5zY2VpdmVyLnJlY2VpdmVyXScpOworfSwgJ2FkZFRy
YWNrOiAidHJhbnNjZWl2ZXIgPT0ge3NlbmRlcixyZWNlaXZlcn0iJyk7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVh
bnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0
cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFuc2NlaXZlciA9IGZpbmRUcmFuc2NlaXZl
ckZvclNlbmRlcihwYywgcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSkpOworICBhc3NlcnRfdHJ1
ZSh0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrLAor
ICAgICAgICAgICAgICAndHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIGluc3RhbmNlb2YgTWVkaWFT
dHJlYW1UcmFjaycpOworICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLnNlbmRlci50cmFjaywg
dHJhY2ssCisgICAgICAgICAgICAgICAgJ3RyYW5zY2VpdmVyLnNlbmRlci50cmFjayA9PSB0cmFj
aycpOworfSwgJ2FkZFRyYWNrOiB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYXNzb2NpYXRlZCB3aXRo
IHRoZSB0cmFjaycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0g
Y3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJl
YW1dID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3Qg
dHJhbnNjZWl2ZXIgPSBmaW5kVHJhbnNjZWl2ZXJGb3JTZW5kZXIocGMsIHBjLmFkZFRyYWNrKHRy
YWNrLCBzdHJlYW0pKTsKKyAgYXNzZXJ0X3RydWUodHJhbnNjZWl2ZXIucmVjZWl2ZXIgaW5zdGFu
Y2VvZiBSVENSdHBSZWNlaXZlciwKKyAgICAgICAgICAgICAgJ3RyYW5zY2VpdmVyLnJlY2VpdmVy
IGluc3RhbmNlb2YgUlRDUnRwUmVjZWl2ZXInKTsKKyAgYXNzZXJ0X3RydWUodHJhbnNjZWl2ZXIu
cmVjZWl2ZXIudHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrLAorICAgICAgICAgICAg
ICAndHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNr
Jyk7CisgIGFzc2VydF9ub3RfZXF1YWxzKHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLCB0cmFj
aywKKyAgICAgICAgICAgICAgICAgICAgJ3RyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrICE9IHRy
YWNrJyk7Cit9LCAnYWRkVHJhY2s6IHRyYW5zY2VpdmVyLnJlY2VpdmVyIGhhcyBpdHMgb3duIHRy
YWNrJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMgPSBjcmVhdGVQ
ZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0cmVhbV0gPSBh
d2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFuc2Nl
aXZlciA9IGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYywgcGMuYWRkVHJhY2sodHJhY2ssIHN0
cmVhbSkpOworICBhc3NlcnRfdHJ1ZSh0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5tdXRlZCk7
Cit9LCAnYWRkVHJhY2s6IHRyYW5zY2VpdmVyLnJlY2VpdmVyXCdzIHRyYWNrIGlzIG11dGVkJyk7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMgPSBjcmVhdGVQZWVyQ29u
bmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0cmVhbV0gPSBhd2FpdCBj
cmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFuc2NlaXZlciA9
IGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYywgcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSkp
OworICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLm1pZCwgbnVsbCk7Cit9LCAnYWRkVHJhY2s6
IHRyYW5zY2VpdmVyIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gbS1zZWN0aW9uJyk7CisKK3By
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMgPSBjcmVhdGVQZWVyQ29ubmVjdGlv
bldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0cmVhbV0gPSBhd2FpdCBjcmVhdGVU
cmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFuc2NlaXZlciA9IGZpbmRU
cmFuc2NlaXZlckZvclNlbmRlcihwYywgcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSkpOworICBh
c3NlcnRfZmFsc2UodHJhbnNjZWl2ZXIuc3RvcHBlZCk7Cit9LCAnYWRkVHJhY2s6IHRyYW5zY2Vp
dmVyIGlzIG5vdCBzdG9wcGVkJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29u
c3QgcGMgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJh
Y2ssIHN0cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOwor
ICBjb25zdCB0cmFuc2NlaXZlciA9IGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYywgcGMuYWRk
VHJhY2sodHJhY2ssIHN0cmVhbSkpOworICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmRpcmVj
dGlvbiwgJ3NlbmRyZWN2Jyk7Cit9LCAnYWRkVHJhY2s6IHRyYW5zY2VpdmVyXCdzIGRpcmVjdGlv
biBpcyBzZW5kcmVjdicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBj
ID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBz
dHJlYW1dID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29u
c3QgdHJhbnNjZWl2ZXIgPSBmaW5kVHJhbnNjZWl2ZXJGb3JTZW5kZXIocGMsIHBjLmFkZFRyYWNr
KHRyYWNrLCBzdHJlYW0pKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGly
ZWN0aW9uLCBudWxsKTsKK30sICdhZGRUcmFjazogdHJhbnNjZWl2ZXJcJ3MgY3VycmVudERpcmVj
dGlvbiBpcyBudWxsJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMg
PSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0
cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25z
dCB0cmFuc2NlaXZlciA9IGZpbmRUcmFuc2NlaXZlckZvclNlbmRlcihwYywgcGMuYWRkVHJhY2so
dHJhY2ssIHN0cmVhbSkpOworICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKGF3YWl0IHBj
LmNyZWF0ZU9mZmVyKCkpOworICBhc3NlcnRfbm90X2VxdWFscyh0cmFuc2NlaXZlci5taWQsIG51
bGwsICd0cmFuc2NlaXZlci5taWQgIT0gbnVsbCcpOworfSwgJ3NldExvY2FsRGVzY3JpcHRpb24o
b2ZmZXIpOiB0cmFuc2NlaXZlciBnZXRzIGFzc29jaWF0ZWQgd2l0aCBhbiBtLXNlY3Rpb24nKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBwYyA9IGNyZWF0ZVBlZXJDb25u
ZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IFt0cmFjaywgc3RyZWFtXSA9IGF3YWl0IGNy
ZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFudXAodCk7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0g
ZmluZFRyYW5zY2VpdmVyRm9yU2VuZGVyKHBjLCBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFtKSk7
CisgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgYXdhaXQgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgIGxldCBzZHAgPSBvZmZlci5zZHA7CisgIGxldCBz
ZHBNaWRMaW5lU3RhcnQgPSBzZHAuaW5kZXhPZignYT1taWQ6Jyk7CisgIGxldCBzZHBNaWRMaW5l
RW5kID0gc2RwLmluZGV4T2YoJ1xyXG4nLCBzZHBNaWRMaW5lU3RhcnQpOworICBhc3NlcnRfdHJ1
ZShzZHBNaWRMaW5lU3RhcnQgIT0gLTEgJiYgc2RwTWlkTGluZUVuZCAhPSAtMSwKKyAgICAgICAg
ICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBvZmZlciBTRFAgZm9yIGE9bWlkJyk7CisgIGxldCBwYXJz
ZWRNaWQgPSBzZHAuc3Vic3RyaW5nKHNkcE1pZExpbmVTdGFydCArIDYsIHNkcE1pZExpbmVFbmQp
OworICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLm1pZCwgcGFyc2VkTWlkLCAndHJhbnNjZWl2
ZXIubWlkID09IHBhcnNlZE1pZCcpOworfSwgJ3NldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOiB0
cmFuc2NlaXZlci5taWQgbWF0Y2hlcyB0aGUgb2ZmZXIgU0RQJyk7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51
cCh0KTsKKyAgcGMxLmFkZFRyYWNrKC4uLiBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhD
bGVhbnVwKHQpKTsKKyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51
cCh0KTsKKyAgY29uc3QgdHJhY2tFdmVudCA9IGF3YWl0IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5U
b09udHJhY2sodCwgcGMxLCBwYzIpOworICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50IGluc3RhbmNl
b2YgUlRDVHJhY2tFdmVudCwKKyAgICAgICAgICAgICAgJ3RyYWNrRXZlbnQgaW5zdGFuY2VvZiBS
VENUcmFja0V2ZW50Jyk7CisgIGFzc2VydF90cnVlKHRyYWNrRXZlbnQudHJhY2sgaW5zdGFuY2Vv
ZiBNZWRpYVN0cmVhbVRyYWNrLAorICAgICAgICAgICAgICAndHJhY2tFdmVudC50cmFjayBpbnN0
YW5jZW9mIE1lZGlhU3RyZWFtVHJhY2snKTsKK30sICdzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZl
cik6IG9udHJhY2sgZmlyZXMgd2l0aCBhIHRyYWNrJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsK
KyAgY29uc3QgW3RyYWNrLCBzdHJlYW1dID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRo
Q2xlYW51cCh0KTsKKyAgcGMxLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICBjb25zdCBwYzIg
PSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFja0V2ZW50
ID0gYXdhaXQgZXhjaGFuZ2VPZmZlckFuZExpc3RlblRvT250cmFjayh0LCBwYzEsIHBjMik7Cisg
IGFzc2VydF90cnVlKHRyYWNrRXZlbnQudHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNr
LAorICAgICAgICAgICAgICAndHJhY2tFdmVudC50cmFjayBpbnN0YW5jZW9mIE1lZGlhU3RyZWFt
VHJhY2snKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFja0V2ZW50LnRyYWNrLmlkLCB0cmFjay5pZCwK
KyAgICAgICAgICAgICAgICAndHJhY2tFdmVudC50cmFjay5pZCA9PSB0cmFjay5pZCcpOworfSwg
J3NldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTogb250cmFja1wncyB0cmFjay5pZCBpcyB0aGUg
c2FtZSBhcyB0cmFjay5pZCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0
IHBjMSA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIHBjMS5hZGRUcmFj
ayguLi4gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KSk7CisgIGNvbnN0
IHBjMiA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IHRyYWNr
RXZlbnQgPSBhd2FpdCBleGNoYW5nZU9mZmVyQW5kTGlzdGVuVG9PbnRyYWNrKHQsIHBjMSwgcGMy
KTsKKyAgYXNzZXJ0X3RydWUodHJhY2tFdmVudC50cmFuc2NlaXZlciBpbnN0YW5jZW9mIFJUQ1J0
cFRyYW5zY2VpdmVyLAorICAgICAgICAgICAgICAndHJhY2tFdmVudC50cmFuc2NlaXZlciBpbnN0
YW5jZW9mIFJUQ1J0cFRyYW5zY2VpdmVyJyk7Cit9LCAnc2V0UmVtb3RlRGVzY3JpcHRpb24ob2Zm
ZXIpOiBvbnRyYWNrIGZpcmVzIHdpdGggYSB0cmFuc2NlaXZlci4nKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICBjb25zdCBwYzEgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVh
bnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0
cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFuc2NlaXZlciA9IGZpbmRUcmFuc2NlaXZl
ckZvclNlbmRlcihwYzEsIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKSk7CisgIGNvbnN0IHBj
MiA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IHRyYWNrRXZl
bnQgPSBhd2FpdCBleGNoYW5nZU9mZmVyQW5kTGlzdGVuVG9PbnRyYWNrKHQsIHBjMSwgcGMyKTsK
KyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5taWQsIHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIu
bWlkKTsKK30sICdzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik6IHRyYW5zY2VpdmVyLm1pZCBp
cyB0aGUgc2FtZSBvbiBib3RoIGVuZHMnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICBjb25zdCBwYzEgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBwYzEu
YWRkVHJhY2soLi4uIGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFudXAodCkpOwor
ICBjb25zdCBwYzIgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25z
dCB0cmFja0V2ZW50ID0gYXdhaXQgZXhjaGFuZ2VPZmZlckFuZExpc3RlblRvT250cmFjayh0LCBw
YzEsIHBjMik7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0gdHJhY2tFdmVudC50cmFuc2NlaXZlcjsK
KyAgYXNzZXJ0X2FycmF5X2VxdWFscyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksIFt0cmFuc2NlaXZl
cl0sCisgICAgICAgICAgICAgICAgICAgICAgJ3BjMi5nZXRUcmFuc2NlaXZlcnMoKSBlcXVhbHMg
W3RyYW5zY2VpdmVyXScpOworICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBjMi5nZXRTZW5kZXJzKCks
IFt0cmFuc2NlaXZlci5zZW5kZXJdLAorICAgICAgICAgICAgICAgICAgICAgICdwYzIuZ2V0U2Vu
ZGVycygpIGVxdWFscyBbdHJhbnNjZWl2ZXIuc2VuZGVyXScpOworICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHBjMi5nZXRSZWNlaXZlcnMoKSwgW3RyYW5zY2VpdmVyLnJlY2VpdmVyXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAncGMyLmdldFJlY2VpdmVycygpIGVxdWFscyBbdHJhbnNjZWl2ZXIucmVj
ZWl2ZXJdJyk7Cit9LCAnc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOiAidHJhbnNjZWl2ZXIg
PT0ge3NlbmRlcixyZWNlaXZlcn0iJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
Y29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgcGMxLmFk
ZFRyYWNrKC4uLiBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpKTsKKyAg
Y29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3Qg
dHJhY2tFdmVudCA9IGF3YWl0IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5Ub09udHJhY2sodCwgcGMx
LCBwYzIpOworICBhc3NlcnRfZXF1YWxzKHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIuZGlyZWN0aW9u
LCAncmVjdm9ubHknKTsKK30sICdzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik6IHRyYW5zY2Vp
dmVyLmRpcmVjdGlvbiBpcyByZWN2b25seScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgIGNvbnN0IHBjMSA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIHBj
MS5hZGRUcmFjayguLi4gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KSk7
CisgIGNvbnN0IHBjMiA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNv
bnN0IHRyYWNrRXZlbnQgPSBhd2FpdCBleGNoYW5nZU9mZmVyQW5kTGlzdGVuVG9PbnRyYWNrKHQs
IHBjMSwgcGMyKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFja0V2ZW50LnRyYW5zY2VpdmVyLmN1cnJl
bnREaXJlY3Rpb24sIG51bGwpOworfSwgJ3NldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTogdHJh
bnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiBpcyBudWxsJyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0
KTsKKyAgcGMxLmFkZFRyYWNrKC4uLiBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVh
bnVwKHQpKTsKKyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0
KTsKKyAgY29uc3QgdHJhY2tFdmVudCA9IGF3YWl0IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5Ub09u
dHJhY2sodCwgcGMxLCBwYzIpOworICBhc3NlcnRfZmFsc2UodHJhY2tFdmVudC50cmFuc2NlaXZl
ci5zdG9wcGVkKTsKK30sICdzZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik6IHRyYW5zY2VpdmVy
LnN0b3BwZWQgaXMgZmFsc2UnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25z
dCBwYzEgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBwYzEuYWRkVHJh
Y2soLi4uIGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFudXAodCkpOworICBjb25z
dCBwYzIgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCB0cmFj
a0V2ZW50ID0gYXdhaXQgZXhjaGFuZ2VPZmZlckFuZExpc3RlblRvT250cmFjayh0LCBwYzEsIHBj
Mik7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0gdHJhY2tFdmVudC50cmFuc2NlaXZlcjsKKyAgYXNz
ZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCBudWxsLAorICAgICAgICAg
ICAgICAgICdTUkQob2ZmZXIpOiB0cmFuc2NpZXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIG51bGwn
KTsKKyAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYXdhaXQgcGMyLmNyZWF0ZUFuc3dl
cigpKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCAncmVj
dm9ubHknLAorICAgICAgICAgICAgICAgICdTTEQoYW5zd2VyKTogdHJhbnNjaWV2ZXIuY3VycmVu
dERpcmVjdGlvbiBpcyByZWN2b25seScpOworfSwgJ3NldExvY2FsRGVzY3JpcHRpb24oYW5zd2Vy
KTogdHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiBpcyByZWN2b25seScpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjMSA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0
aENsZWFudXAodCk7CisgIGNvbnN0IFt0cmFjaywgc3RyZWFtXSA9IGF3YWl0IGNyZWF0ZVRyYWNr
QW5kU3RyZWFtV2l0aENsZWFudXAodCk7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0gZmluZFRyYW5z
Y2VpdmVyRm9yU2VuZGVyKHBjMSwgcGMxLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pKTsKKyAgY29u
c3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgYXdhaXQgZXhj
aGFuZ2VPZmZlcihwYzEsIHBjMik7CisgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuY3VycmVu
dERpcmVjdGlvbiwgbnVsbCwKKyAgICAgICAgICAgICAgICAnU0xEKG9mZmVyKTogdHJhbnNjaWV2
ZXIuY3VycmVudERpcmVjdGlvbiBpcyBudWxsJyk7CisgIGF3YWl0IGV4Y2hhbmdlQW5zd2VyKHBj
MSwgcGMyKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCAn
c2VuZG9ubHknLAorICAgICAgICAgICAgICAgICdTUkQoYW5zd2VyKTogdHJhbnNjaWV2ZXIuY3Vy
cmVudERpcmVjdGlvbiBpcyBzZW5kb25seScpOworfSwgJ3NldExvY2FsRGVzY3JpcHRpb24oYW5z
d2VyKTogdHJhbnNjZWl2ZXIuY3VycmVudERpcmVjdGlvbiBpcyBzZW5kb25seScpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0gY3JlYXRlUGVlckNvbm5lY3Rpb25X
aXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJlYW1dID0gYXdhaXQgY3JlYXRlVHJh
Y2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRU
cmFuc2NlaXZlcih0cmFjayk7CisgIGFzc2VydF90cnVlKHRyYW5zY2VpdmVyIGluc3RhbmNlb2Yg
UlRDUnRwVHJhbnNjZWl2ZXIpOworICBhc3NlcnRfdHJ1ZSh0cmFuc2NlaXZlci5zZW5kZXIgaW5z
dGFuY2VvZiBSVENSdHBTZW5kZXIpOworICBhc3NlcnRfdHJ1ZSh0cmFuc2NlaXZlci5yZWNlaXZl
ciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZl
ci5zZW5kZXIudHJhY2ssIHRyYWNrKTsKK30sICdhZGRUcmFuc2NlaXZlcih0cmFjayk6IGNyZWF0
ZXMgYSB0cmFuc2NlaXZlciBmb3IgdGhlIHRyYWNrJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgY29uc3QgcGMgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOwor
ICBjb25zdCBbdHJhY2ssIHN0cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhD
bGVhbnVwKHQpOworICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNr
KTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhwYy5nZXRUcmFuc2NlaXZlcnMoKSwgW3RyYW5zY2Vp
dmVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAncGMuZ2V0VHJhbnNjZWl2ZXJzKCkgZXF1YWxz
IFt0cmFuc2NlaXZlcl0nKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhwYy5nZXRTZW5kZXJzKCks
IFt0cmFuc2NlaXZlci5zZW5kZXJdLAorICAgICAgICAgICAgICAgICAgICAgICdwYy5nZXRTZW5k
ZXJzKCkgZXF1YWxzIFt0cmFuc2NlaXZlci5zZW5kZXJdJyk7CisgIGFzc2VydF9hcnJheV9lcXVh
bHMocGMuZ2V0UmVjZWl2ZXJzKCksIFt0cmFuc2NlaXZlci5yZWNlaXZlcl0sCisgICAgICAgICAg
ICAgICAgICAgICAgJ3BjLmdldFJlY2VpdmVycygpIGVxdWFscyBbdHJhbnNjZWl2ZXIucmVjZWl2
ZXJdJyk7Cit9LCAnYWRkVHJhbnNjZWl2ZXIodHJhY2spOiAidHJhbnNjZWl2ZXIgPT0ge3NlbmRl
cixyZWNlaXZlcn0iJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMg
PSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0
cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25z
dCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrLCB7ZGlyZWN0aW9uOidpbmFj
dGl2ZSd9KTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdpbmFjdGl2
ZScpOworfSwgJ2FkZFRyYW5zY2VpdmVyKHRyYWNrLCBpbml0KTogaW5pdGlhbGl6ZSBkaXJlY3Rp
b24gdG8gaW5hY3RpdmUnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBw
YyA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IG90aGVyUGMg
PSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0
cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25z
dCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrLCB7CisgICAgc2VuZEVuY29k
aW5nczogW3thY3RpdmU6ZmFsc2V9XQorICB9KTsKKworICAvLyBOZWdvdGlhdGUgcGFyYW1ldGVy
cy4KKyAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICBhd2FpdCBwYy5z
ZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgYXdhaXQgb3RoZXJQYy5zZXRSZW1vdGVEZXNj
cmlwdGlvbihvZmZlcik7CisgIGNvbnN0IGFuc3dlciA9IGF3YWl0IG90aGVyUGMuY3JlYXRlQW5z
d2VyKCk7CisgIGF3YWl0IG90aGVyUGMuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpOworICBh
d2FpdCBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworCisgIGNvbnN0IHBhcmFtcyA9
IHRyYW5zY2VpdmVyLnNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CisgIGFzc2VydF9mYWxzZShwYXJh
bXMuZW5jb2RpbmdzWzBdLmFjdGl2ZSk7Cit9LCAnYWRkVHJhbnNjZWl2ZXIodHJhY2ssIGluaXQp
OiBpbml0aWFsaXplIHNlbmRFbmNvZGluZ3NbMF0uYWN0aXZlIHRvIGZhbHNlJyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25X
aXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xl
YW51cCh0KTsKKyAgY29uc3QgW3RyYWNrXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0
aENsZWFudXAodCk7CisgIHBjMS5hZGRUcmFuc2NlaXZlcih0cmFjaywge3N0cmVhbXM6W119KTsK
KyAgY29uc3QgdHJhY2tFdmVudCA9IGF3YWl0IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5Ub09udHJh
Y2sodCwgcGMxLCBwYzIpOworICBhc3NlcnRfZXF1YWxzKHRyYWNrRXZlbnQuc3RyZWFtcy5sZW5n
dGgsIDAsICd0cmFja0V2ZW50LnN0cmVhbXMubGVuZ3RoID09IDAnKTsKK30sICdhZGRUcmFuc2Nl
aXZlcigwIHN0cmVhbXMpOiBvbnRyYWNrIGZpcmVzIHdpdGggbm8gc3RyZWFtJyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25X
aXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xl
YW51cCh0KTsKKyAgY29uc3QgW3RyYWNrXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0
aENsZWFudXAodCk7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpOworICBwYzEu
YWRkVHJhbnNjZWl2ZXIodHJhY2ssIHtzdHJlYW1zOltzdHJlYW1dfSk7CisgIGNvbnN0IHRyYWNr
RXZlbnQgPSBhd2FpdCBleGNoYW5nZU9mZmVyQW5kTGlzdGVuVG9PbnRyYWNrKHQsIHBjMSwgcGMy
KTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFja0V2ZW50LnN0cmVhbXMubGVuZ3RoLCAxLCAndHJhY2tF
dmVudC5zdHJlYW1zLmxlbmd0aCA9PSAxJyk7CisgIGFzc2VydF9lcXVhbHModHJhY2tFdmVudC5z
dHJlYW1zWzBdLmlkLCBzdHJlYW0uaWQsCisgICAgICAgICAgICAgICAgJ3RyYWNrRXZlbnQuc3Ry
ZWFtc1swXS5pZCA9PSBzdHJlYW0uaWQnKTsKK30sICdhZGRUcmFuc2NlaXZlcigxIHN0cmVhbSk6
IG9udHJhY2sgZmlyZXMgd2l0aCBjb3JyZXNwb25kaW5nIHN0cmVhbScpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjMSA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENs
ZWFudXAodCk7CisgIGNvbnN0IHBjMiA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAo
dCk7CisgIGNvbnN0IFt0cmFja10gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVh
bnVwKHQpOworICBjb25zdCBzdHJlYW0wID0gbmV3IE1lZGlhU3RyZWFtKCk7CisgIGNvbnN0IHN0
cmVhbTEgPSBuZXcgTWVkaWFTdHJlYW0oKTsKKyAgcGMxLmFkZFRyYW5zY2VpdmVyKHRyYWNrLCB7
c3RyZWFtczpbc3RyZWFtMCwgc3RyZWFtMV19KTsKKyAgY29uc3QgdHJhY2tFdmVudCA9IGF3YWl0
IGV4Y2hhbmdlT2ZmZXJBbmRMaXN0ZW5Ub09udHJhY2sodCwgcGMxLCBwYzIpOworICBhc3NlcnRf
ZXF1YWxzKHRyYWNrRXZlbnQuc3RyZWFtcy5sZW5ndGgsIDIsICd0cmFja0V2ZW50LnN0cmVhbXMu
bGVuZ3RoID09IDInKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFja0V2ZW50LnN0cmVhbXNbMF0uaWQs
IHN0cmVhbTAuaWQsCisgICAgICAgICAgICAgICAgJ3RyYWNrRXZlbnQuc3RyZWFtc1swXS5pZCA9
PSBzdHJlYW0wLmlkJyk7CisgIGFzc2VydF9lcXVhbHModHJhY2tFdmVudC5zdHJlYW1zWzFdLmlk
LCBzdHJlYW0xLmlkLAorICAgICAgICAgICAgICAgICd0cmFja0V2ZW50LnN0cmVhbXNbMV0uaWQg
PT0gc3RyZWFtMS5pZCcpOworfSwgJ2FkZFRyYW5zY2VpdmVyKDIgc3RyZWFtcyk6IG9udHJhY2sg
ZmlyZXMgd2l0aCBjb3JyZXNwb25kaW5nIHR3byBzdHJlYW1zJyk7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51
cCh0KTsKKyAgY29uc3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsK
KyAgY29uc3QgW3RyYWNrXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFudXAo
dCk7CisgIHBjMS5hZGRUcmFjayh0cmFjayk7CisgIGNvbnN0IHRyYWNrRXZlbnQgPSBhd2FpdCBl
eGNoYW5nZU9mZmVyQW5kTGlzdGVuVG9PbnRyYWNrKHQsIHBjMSwgcGMyKTsKKyAgYXNzZXJ0X2Vx
dWFscyh0cmFja0V2ZW50LnN0cmVhbXMubGVuZ3RoLCAwLCAndHJhY2tFdmVudC5zdHJlYW1zLmxl
bmd0aCA9PSAwJyk7Cit9LCAnYWRkVHJhY2soMCBzdHJlYW1zKTogb250cmFjayBmaXJlcyB3aXRo
IG5vIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjMSA9
IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IHBjMiA9IGNyZWF0
ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNvbnN0IFt0cmFja10gPSBhd2FpdCBj
cmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQpOworICBjb25zdCBzdHJlYW0gPSBuZXcg
TWVkaWFTdHJlYW0oKTsKKyAgcGMxLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICBjb25zdCB0
cmFja0V2ZW50ID0gYXdhaXQgZXhjaGFuZ2VPZmZlckFuZExpc3RlblRvT250cmFjayh0LCBwYzEs
IHBjMik7CisgIGFzc2VydF9lcXVhbHModHJhY2tFdmVudC5zdHJlYW1zLmxlbmd0aCwgMSwgJ3Ry
YWNrRXZlbnQuc3RyZWFtcy5sZW5ndGggPT0gMScpOworICBhc3NlcnRfZXF1YWxzKHRyYWNrRXZl
bnQuc3RyZWFtc1swXS5pZCwgc3RyZWFtLmlkLAorICAgICAgICAgICAgICAgICd0cmFja0V2ZW50
LnN0cmVhbXNbMF0uaWQgPT0gc3RyZWFtLmlkJyk7Cit9LCAnYWRkVHJhY2soMSBzdHJlYW0pOiBv
bnRyYWNrIGZpcmVzIHdpdGggY29ycmVzcG9uZGluZyBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICBjb25zdCBwYzEgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVh
bnVwKHQpOworICBjb25zdCBwYzIgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQp
OworICBjb25zdCBbdHJhY2tdID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51
cCh0KTsKKyAgY29uc3Qgc3RyZWFtMCA9IG5ldyBNZWRpYVN0cmVhbSgpOworICBjb25zdCBzdHJl
YW0xID0gbmV3IE1lZGlhU3RyZWFtKCk7CisgIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtMCwg
c3RyZWFtMSk7CisgIGNvbnN0IHRyYWNrRXZlbnQgPSBhd2FpdCBleGNoYW5nZU9mZmVyQW5kTGlz
dGVuVG9PbnRyYWNrKHQsIHBjMSwgcGMyKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFja0V2ZW50LnN0
cmVhbXMubGVuZ3RoLCAyLCAndHJhY2tFdmVudC5zdHJlYW1zLmxlbmd0aCA9PSAyJyk7CisgIGFz
c2VydF9lcXVhbHModHJhY2tFdmVudC5zdHJlYW1zWzBdLmlkLCBzdHJlYW0wLmlkLAorICAgICAg
ICAgICAgICAgICd0cmFja0V2ZW50LnN0cmVhbXNbMF0uaWQgPT0gc3RyZWFtMC5pZCcpOworICBh
c3NlcnRfZXF1YWxzKHRyYWNrRXZlbnQuc3RyZWFtc1sxXS5pZCwgc3RyZWFtMS5pZCwKKyAgICAg
ICAgICAgICAgICAndHJhY2tFdmVudC5zdHJlYW1zWzFdLmlkID09IHN0cmVhbTEuaWQnKTsKK30s
ICdhZGRUcmFjaygyIHN0cmVhbXMpOiBvbnRyYWNrIGZpcmVzIHdpdGggY29ycmVzcG9uZGluZyB0
d28gc3RyZWFtcycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0g
Y3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJl
YW1dID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3Qg
dHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgYXNzZXJ0X2VxdWFs
cyh0cmFuc2NlaXZlci5kaXJlY3Rpb24sICdzZW5kcmVjdicpOworfSwgJ2FkZFRyYW5zY2VpdmVy
KFwnYXVkaW9cJyk6IGNyZWF0ZXMgYSB0cmFuc2NlaXZlciB3aXRoIGRpcmVjdGlvbiBzZW5kcmVj
dicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0gY3JlYXRlUGVl
ckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJlYW1dID0gYXdh
aXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgdHJhbnNjZWl2
ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2Nl
aXZlci5yZWNlaXZlci50cmFjay5raW5kLCAnYXVkaW8nKTsKK30sICdhZGRUcmFuc2NlaXZlcihc
J2F1ZGlvXCcpOiB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kID09IFwnYXVkaW9cJycp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0gY3JlYXRlUGVlckNv
bm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJlYW1dID0gYXdhaXQg
Y3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgdHJhbnNjZWl2ZXIg
PSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZl
ci5yZWNlaXZlci50cmFjay5raW5kLCAndmlkZW8nKTsKK30sICdhZGRUcmFuc2NlaXZlcihcJ3Zp
ZGVvXCcpOiB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kID09IFwndmlkZW9cJycpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0gY3JlYXRlUGVlckNvbm5l
Y3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJlYW1dID0gYXdhaXQgY3Jl
YXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgdHJhbnNjZWl2ZXIgPSBw
Yy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5z
ZW5kZXIudHJhY2ssIG51bGwpOworfSwgJ2FkZFRyYW5zY2VpdmVyKFwnYXVkaW9cJyk6IHRyYW5z
Y2VpdmVyLnNlbmRlci50cmFjayA9PSBudWxsJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgY29uc3QgcGMgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBj
b25zdCBbdHJhY2ssIHN0cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVh
bnVwKHQpOworICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycp
OworICBhc3NlcnRfZXF1YWxzKHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sIG51bGwpOwor
fSwgJ2FkZFRyYW5zY2VpdmVyKFwnYXVkaW9cJyk6IHRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rp
b24gaXMgbnVsbCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjID0g
Y3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3RyYWNrLCBzdHJl
YW1dID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3Qg
dHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgYXNzZXJ0X2ZhbHNl
KHRyYW5zY2VpdmVyLnN0b3BwZWQpOworfSwgJ2FkZFRyYW5zY2VpdmVyKFwnYXVkaW9cJyk6IHRy
YW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICBjb25zdCBwYyA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNv
bnN0IFt0cmFjaywgc3RyZWFtXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFu
dXAodCwgJ2F1ZGlvJyk7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J2F1ZGlvJyk7CisgIGNvbnN0IHNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOwor
ICBhc3NlcnRfZXF1YWxzKHNlbmRlciwgdHJhbnNjZWl2ZXIuc2VuZGVyLCAnc2VuZGVyID09IHRy
YW5zY2VpdmVyLnNlbmRlcicpOworICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgdHJhY2ss
ICdzZW5kZXIudHJhY2sgPT0gdHJhY2snKTsKK30sICdhZGRUcmFjayByZXVzZXMgcmV1c2FibGUg
dHJhbnNjZWl2ZXJzJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcGMg
PSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBjb25zdCBbdHJhY2ssIHN0
cmVhbV0gPSBhd2FpdCBjcmVhdGVUcmFja0FuZFN0cmVhbVdpdGhDbGVhbnVwKHQsICdhdWRpbycp
OworICBjb25zdCB0MSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICBjb25zdCB0MiA9
IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHModDIsIHQxLCAn
dDIgIT0gdDEnKTsKKyAgYXNzZXJ0X2VxdWFscyh0Mi5zZW5kZXIudHJhY2ssIHRyYWNrLCAndDIu
c2VuZGVyLnRyYWNrID09IHRyYWNrJyk7Cit9LCAnYWRkVHJhbnNjZWl2ZXIgZG9lcyBub3QgcmV1
c2UgcmV1c2FibGUgdHJhbnNjZWl2ZXJzJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgY29uc3QgcGMxID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29u
c3QgcGMyID0gY3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQ2xlYW51cCh0KTsKKyAgY29uc3QgW3Ry
YWNrLCBzdHJlYW1dID0gYXdhaXQgY3JlYXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KTsK
KyAgY29uc3QgcGMxVHJhbnNjZWl2ZXIgPSBmaW5kVHJhbnNjZWl2ZXJGb3JTZW5kZXIocGMxLCBw
YzEuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSkpOworICBjb25zdCBwYzJUcmFja0V2ZW50ID0gYXdh
aXQgZXhjaGFuZ2VPZmZlckFuZExpc3RlblRvT250cmFjayh0LCBwYzEsIHBjMik7CisgIGNvbnN0
IHBjMlRyYW5zY2VpdmVyID0gcGMyVHJhY2tFdmVudC50cmFuc2NlaXZlcjsKKyAgYXNzZXJ0X2Vx
dWFscyhwYzJUcmFuc2NlaXZlci5kaXJlY3Rpb24sICdyZWN2b25seScsCisgICAgICAgICAgICAg
ICAgJ3BjMlRyYW5zY2VpdmVyLmRpcmVjdGlvbiBpcyByZWN2b25seSBhZnRlciBTUkQob2ZmZXIp
Jyk7CisgIGNvbnN0IHBjMlNlbmRlciA9IHBjMi5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKyAg
YXNzZXJ0X2VxdWFscyhwYzJUcmFuc2NlaXZlci5zZW5kZXIsIHBjMlNlbmRlciwKKyAgICAgICAg
ICAgICAgICAncGMyVHJhbnNjZWl2ZXIuc2VuZGVyID09IHNlbmRlcicpOworICBhc3NlcnRfZXF1
YWxzKHBjMlRyYW5zY2VpdmVyLmRpcmVjdGlvbiwgJ3NlbmRyZWN2JywKKyAgICAgICAgICAgICAg
ICAncGMyVHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzIHNlbmRyZWN2IGFmdGVyIGFkZFRyYWNrKCkn
KTsKKyAgYXNzZXJ0X2VxdWFscyhwYzJUcmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCBudWxs
LAorICAgICAgICAgICAgICAgICdwYzJUcmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIG51
bGwgYmVmb3JlIGFuc3dlcicpOworICBjb25zdCBwYzFUcmFja0V2ZW50ID0gYXdhaXQgZXhjaGFu
Z2VBbnN3ZXJBbmRMaXN0ZW5Ub09udHJhY2sodCwgcGMxLCBwYzIpOworICBhc3NlcnRfZXF1YWxz
KHBjMlRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24sICdzZW5kcmVjdicsCisgICAgICAgICAg
ICAgICAgJ3BjMlRyYW5zY2VpdmVyLmN1cnJlbnREaXJlY3Rpb24gaXMgc2VuZHJlY3YgYWZ0ZXIg
U0xEKGFuc3dlciknKTsKKyAgYXNzZXJ0X2VxdWFscyhwYzFUcmFja0V2ZW50LnRyYW5zY2VpdmVy
LCBwYzFUcmFuc2NlaXZlciwKKyAgICAgICAgICAgICAgICAnQW5zd2VyOiBwYzEub250cmFjayBm
aXJlcyB3aXRoIHRoZSBleGlzdGluZyB0cmFuc2NlaXZlci4nKTsKKyAgYXNzZXJ0X2VxdWFscyhw
YzFUcmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uLCAnc2VuZHJlY3YnLAorICAgICAgICAgICAg
ICAgICdwYzFUcmFuc2NlaXZlci5jdXJyZW50RGlyZWN0aW9uIGlzIHNlbmRyZWN2Jyk7CisgIGFz
c2VydF9lcXVhbHMocGMyLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCwgMSwKKyAgICAgICAgICAg
ICAgICAncGMyLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCA9PSAxJyk7CisgIGFzc2VydF9lcXVh
bHMocGMxLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCwgMSwKKyAgICAgICAgICAgICAgICAncGMx
LmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCA9PSAxJyk7Cit9LCAnQ2FuIHNldHVwIHR3by13YXkg
Y2FsbCB1c2luZyBhIHNpbmdsZSB0cmFuc2NlaXZlcicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgIGNvbnN0IHBjMSA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7
CisgIGNvbnN0IHBjMiA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENsZWFudXAodCk7CisgIGNv
bnN0IFt0cmFjaywgc3RyZWFtXSA9IGF3YWl0IGNyZWF0ZVRyYWNrQW5kU3RyZWFtV2l0aENsZWFu
dXAodCwgJ2F1ZGlvJyk7CisgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMxLmFkZFRyYW5zY2VpdmVy
KHRyYWNrKTsKKyAgYXdhaXQgZXhjaGFuZ2VPZmZlcihwYzEsIHBjMik7CisgIGF3YWl0IGV4Y2hh
bmdlQW5zd2VyKHBjMSwgcGMyKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50
RGlyZWN0aW9uLCAnc2VuZG9ubHknKTsKKyAgYXNzZXJ0X2ZhbHNlKHRyYW5zY2VpdmVyLnN0b3Bw
ZWQpOworICBwYzEuY2xvc2UoKTsKKyAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5jdXJyZW50
RGlyZWN0aW9uLCBudWxsKTsKKyAgYXNzZXJ0X3RydWUodHJhbnNjZWl2ZXIuc3RvcHBlZCk7Cit9
LCAnQ2xvc2luZyB0aGUgUEMgc3RvcHMgdGhlIHRyYW5zY2VpdmVycycpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHBjMSA9IGNyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aENs
ZWFudXAodCk7CisgIGNvbnN0IHBjMVNlbmRlciA9IHBjMS5hZGRUcmFjayguLi4gYXdhaXQgY3Jl
YXRlVHJhY2tBbmRTdHJlYW1XaXRoQ2xlYW51cCh0KSk7CisgIGNvbnN0IGxvY2FsVHJhbnNjZWl2
ZXIgPSBmaW5kVHJhbnNjZWl2ZXJGb3JTZW5kZXIocGMxLCBwYzFTZW5kZXIpOworICBjb25zdCBw
YzIgPSBjcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhDbGVhbnVwKHQpOworICBleGNoYW5nZUljZUNh
bmRpZGF0ZXMocGMxLCBwYzIpOworCisgIGNvbnN0IGUgPSBhd2FpdCBleGNoYW5nZU9mZmVyQW5k
TGlzdGVuVG9PbnRyYWNrKHQsIHBjMSwgcGMyKTsKKyAgYXdhaXQgZXhjaGFuZ2VBbnN3ZXIocGMx
LCBwYzIpOworICBsb2NhbFRyYW5zY2VpdmVyLmRpcmVjdGlvbiA9ICdpbmFjdGl2ZSc7CisgIGF3
YWl0IGV4Y2hhbmdlT2ZmZXJBbnN3ZXIocGMxLCBwYzIpOworCisgIGxvY2FsVHJhbnNjZWl2ZXIu
ZGlyZWN0aW9uID0gJ3NlbmRyZWN2JzsKKyAgYXdhaXQgZXhjaGFuZ2VPZmZlckFuZExpc3RlblRv
T250cmFjayh0LCBwYzEsIHBjMik7Cit9LCAnQ2hhbmdpbmcgdHJhbnNjZWl2ZXIgZGlyZWN0aW9u
IHRvIFwnc2VuZHJlY3ZcJyBtYWtlcyBvbnRyYWNrIGZpcmUnKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENRdWljU3RyZWFtLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1F1aWNTdHJlYW0uaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhZmE0OTUwN2E4MDliM2QzNGEzZjBkM2M0NmQ3NjJjZTA1ZjQw
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENRdWljU3RyZWFtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACisKK0ZBSUwgY3JlYXRlU3RyZWFtKCkgcmV0dXJucyBhbiBSVENRdWljU3RyZWFt
IHdpdGggaW5pdGlhbCBwcm9wZXJ0aWVzIHNldC4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlMIGNy
ZWF0ZVN0cmVhbSgpIHRocm93cyBpZiB0aGUgdHJhbnNwb3J0IGlzIG5vdCBjb25uZWN0ZWQuIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJ
Y2VUcmFuc3BvcnQoKScpIgorRkFJTCBjcmVhdGVTdHJlYW0oKSB0aHJvd3MgaWYgdGhlIHRyYW5z
cG9ydCBpcyBjbG9zZWQuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJTCBSVENRdWljVHJhbnNwb3J0
LnN0b3AoKSBjbG9zZXMgYWxsIGxvY2FsIHN0cmVhbXMuIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90
IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJ
TCBSVENRdWljVHJhbnNwb3J0LnN0b3AoKSBjbG9zZXMgYWxsIHJlbW90ZSBzdHJlYW1zLiBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRDSWNl
VHJhbnNwb3J0KCknKSIKK0ZBSUwgZmluaXNoKCkgY2hhbmdlcyBzdGF0ZSB0byAnY2xvc2luZycu
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBS
VENJY2VUcmFuc3BvcnQoKScpIgorRkFJTCBmaW5pc2goKSB0d2ljZSBkb2VzIG5vdCBjaGFuZ2Ug
c3RhdGUuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJTCByZXNldCgpIGNoYW5nZXMgc3RhdGUgdG8g
J2Nsb3NlZCcuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJTCByZXNldCgpIGZvbGxvd2luZyBmaW5p
c2goKSBjaGFuZ2VzIHN0YXRlIHRvICdjbG9zZWQnLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBh
IGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwg
Y3JlYXRlU3RyZWFtKCkgZm9sbG93ZWQgYnkgZmluaXNoKCkgZmlyZXMgYSBxdWljc3RyZWFtIGV2
ZW50IGZvbGxvd2VkIGJ5IGEgc3RhdGVjaGFuZ2UgZXZlbnQgdG8gJ2Nsb3NpbmcnIG9uIHRoZSBy
ZW1vdGUgc2lkZS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlMIGNyZWF0ZVN0cmVhbSgpIGZvbGxv
d2VkIGJ5IHJlc2V0KCkgZmlyZXMgYSBxdWljc3RyZWFtIGV2ZW50IGZvbGxvd2VkIGJ5IGEgc3Rh
dGVjaGFuZ2UgZXZlbnQgdG8gJ2Nsb3NlZCcgb24gdGhlIHJlbW90ZSBzaWRlLiBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IGZ1
bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRDSWNlVHJhbnNw
b3J0KCknKSIKK0ZBSUwgZmluaXNoKCkgb24gYSByZW1vdGUgc3RyZWFtIHRoYXQgaGFzIGFscmVh
ZHkgZmluaXNoZWQgZmlyZXMgYSBzdGF0ZWNoYW5nZSBldmVudCB0byAnY2xvc2VkJyBvbiB0aGUg
cmVtb3RlIHNpZGUuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJTCBmaW5pc2goKSB0aGVuIHJlc2V0
KCkgZmlyZXMgdHdvIHN0YXRlY2hhbmdlIGV2ZW50cyBvbiB0aGUgcmVtb3RlIHNpZGUuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VU
cmFuc3BvcnQoKScpIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENRdWljU3RyZWFtLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENRdWljU3RyZWFt
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhjODhlMjc1N2MyYWIzNTczNmQzNDgwZGZiYzYwOTU1
ODBiMDZkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1F1aWNTdHJlYW0uaHR0cHMuaHRtbApAQCAtMCwwICsx
LDE1OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPlJU
Q1F1aWNTdHJlYW0uaHR0cHMuaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUlRDSWNlVHJhbnNwb3J0LWV4
dGVuc2lvbi1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJUQ1F1aWNUcmFuc3Bv
cnQtaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKKy8vIFRo
ZXNlIHRlc3RzIGFyZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHNwZWNpZmljYXRpb246CisvLyBo
dHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXF1aWMvCisKKy8vIFRoZSBmb2xsb3dpbmcgaGVs
cGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gUlRDUXVpY1RyYW5zcG9ydC1oZWxwZXIuanM6
CisvLyAgIG1ha2VTdGFuZGFsb25lUXVpY1RyYW5zcG9ydAorLy8gICBtYWtlVHdvQ29ubmVjdGVk
UXVpY1RyYW5zcG9ydHMKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBbIHF1
aWNUcmFuc3BvcnQsIF0gPSBhd2FpdCBtYWtlVHdvQ29ubmVjdGVkUXVpY1RyYW5zcG9ydHModCk7
CisgIGNvbnN0IHF1aWNTdHJlYW0gPSBxdWljVHJhbnNwb3J0LmNyZWF0ZVN0cmVhbSgpOworICBh
c3NlcnRfZXF1YWxzKHF1aWNTdHJlYW0udHJhbnNwb3J0LCBxdWljVHJhbnNwb3J0LAorICAgICAg
J0V4cGVjdCB0cmFuc3BvcnQgdG8gYmUgc2V0IHRvIHRoZSBjcmVhdGluZyBSVENRdWljVHJhbnNw
b3J0LicpOworICBhc3NlcnRfZXF1YWxzKHF1aWNTdHJlYW0uc3RhdGUsICdvcGVuJywgYEV4cGVj
dCBzdGF0ZSB0byBiZSAnb3BlbicuYCk7CisgIGFzc2VydF9lcXVhbHMocXVpY1N0cmVhbS5yZWFk
QnVmZmVyZWRBbW91bnQsIDAsCisgICAgICAnRXhwZWN0IHJlYWQgYnVmZmVyZWQgYW1vdW50IHRv
IGJlIDAuJyk7CisgIGFzc2VydF9lcXVhbHMocXVpY1N0cmVhbS53cml0ZUJ1ZmZlcmVkQW1vdW50
LCAwLAorICAgICAgJ0V4cGVjdCB3cml0ZSBidWZmZXJlZCBhbW91bnQgdG8gYmUgMC4nKTsKK30s
ICdjcmVhdGVTdHJlYW0oKSByZXR1cm5zIGFuIFJUQ1F1aWNTdHJlYW0gd2l0aCBpbml0aWFsIHBy
b3BlcnRpZXMgc2V0LicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHF1
aWNUcmFuc3BvcnQgPSBhd2FpdCBtYWtlU3RhbmRhbG9uZVF1aWNUcmFuc3BvcnQodCk7CisgIGFz
c2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywgKCkgPT4gcXVpY1RyYW5zcG9ydC5jcmVh
dGVTdHJlYW0oKSk7Cit9LCAnY3JlYXRlU3RyZWFtKCkgdGhyb3dzIGlmIHRoZSB0cmFuc3BvcnQg
aXMgbm90IGNvbm5lY3RlZC4nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25z
dCBxdWljVHJhbnNwb3J0ID0gYXdhaXQgbWFrZVN0YW5kYWxvbmVRdWljVHJhbnNwb3J0KHQpOwor
ICBxdWljVHJhbnNwb3J0LnN0b3AoKTsKKyAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJy
b3InLCAoKSA9PiBxdWljVHJhbnNwb3J0LmNyZWF0ZVN0cmVhbSgpKTsKK30sICdjcmVhdGVTdHJl
YW0oKSB0aHJvd3MgaWYgdGhlIHRyYW5zcG9ydCBpcyBjbG9zZWQuJyk7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgY29uc3QgWyBxdWljVHJhbnNwb3J0LCBdID0gYXdhaXQgbWFrZVR3
b0Nvbm5lY3RlZFF1aWNUcmFuc3BvcnRzKHQpOworICBjb25zdCBmaXJzdFF1aWNTdHJlYW0gPSBx
dWljVHJhbnNwb3J0LmNyZWF0ZVN0cmVhbSgpOworICBjb25zdCBzZWNvbmRRdWljU3RyZWFtID0g
cXVpY1RyYW5zcG9ydC5jcmVhdGVTdHJlYW0oKTsKKyAgcXVpY1RyYW5zcG9ydC5zdG9wKCk7Cisg
IGFzc2VydF9lcXVhbHMoZmlyc3RRdWljU3RyZWFtLnN0YXRlLCAnY2xvc2VkJyk7CisgIGFzc2Vy
dF9lcXVhbHMoc2Vjb25kUXVpY1N0cmVhbS5zdGF0ZSwgJ2Nsb3NlZCcpOworfSwgJ1JUQ1F1aWNU
cmFuc3BvcnQuc3RvcCgpIGNsb3NlcyBhbGwgbG9jYWwgc3RyZWFtcy4nKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBbIGxvY2FsUXVpY1RyYW5zcG9ydCwgcmVtb3RlUXVp
Y1RyYW5zcG9ydCBdID0KKyAgICAgIGF3YWl0IG1ha2VUd29Db25uZWN0ZWRRdWljVHJhbnNwb3J0
cyh0KTsKKyAgY29uc3QgZmlyc3RMb2NhbFN0cmVhbSA9IGxvY2FsUXVpY1RyYW5zcG9ydC5jcmVh
dGVTdHJlYW0oKTsKKyAgZmlyc3RMb2NhbFN0cmVhbS5maW5pc2goKTsKKyAgY29uc3Qgc2Vjb25k
TG9jYWxTdHJlYW0gPSBsb2NhbFF1aWNUcmFuc3BvcnQuY3JlYXRlU3RyZWFtKCk7CisgIHNlY29u
ZExvY2FsU3RyZWFtLmZpbmlzaCgpOworICBjb25zdCByZW1vdGVXYXRjaGVyID0KKyAgICAgIG5l
dyBFdmVudFdhdGNoZXIodCwgcmVtb3RlUXVpY1RyYW5zcG9ydCwgWyAncXVpY3N0cmVhbScsICdz
dGF0ZWNoYW5nZScgXSk7CisgIGNvbnN0IHsgc3RyZWFtOiBmaXJzdFJlbW90ZVN0cmVhbSB9ID0K
KyAgICAgIGF3YWl0IHJlbW90ZVdhdGNoZXIud2FpdF9mb3IoJ3F1aWNzdHJlYW0nKTsKKyAgY29u
c3QgeyBzdHJlYW06IHNlY29uZFJlbW90ZVN0cmVhbSB9ID0KKyAgICAgIGF3YWl0IHJlbW90ZVdh
dGNoZXIud2FpdF9mb3IoJ3F1aWNzdHJlYW0nKTsKKyAgbG9jYWxRdWljVHJhbnNwb3J0LnN0b3Ao
KTsKKyAgYXdhaXQgcmVtb3RlV2F0Y2hlci53YWl0X2Zvcignc3RhdGVjaGFuZ2UnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhmaXJzdFJlbW90ZVN0cmVhbS5zdGF0ZSwgJ2Nsb3NlZCcpOworICBhc3NlcnRf
ZXF1YWxzKHNlY29uZFJlbW90ZVN0cmVhbS5zdGF0ZSwgJ2Nsb3NlZCcpOworfSwgJ1JUQ1F1aWNU
cmFuc3BvcnQuc3RvcCgpIGNsb3NlcyBhbGwgcmVtb3RlIHN0cmVhbXMuJyk7CisKK3Byb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgWyBsb2NhbFF1aWNUcmFuc3BvcnQsIHJlbW90ZVF1
aWNUcmFuc3BvcnQgXSA9CisgICAgICBhd2FpdCBtYWtlVHdvQ29ubmVjdGVkUXVpY1RyYW5zcG9y
dHModCk7CisgIGNvbnN0IGxvY2FsU3RyZWFtID0gbG9jYWxRdWljVHJhbnNwb3J0LmNyZWF0ZVN0
cmVhbSgpOworICBsb2NhbFN0cmVhbS5maW5pc2goKTsKKyAgYXNzZXJ0X2VxdWFscyhsb2NhbFN0
cmVhbS5zdGF0ZSwgJ2Nsb3NpbmcnKTsKK30sIGBmaW5pc2goKSBjaGFuZ2VzIHN0YXRlIHRvICdj
bG9zaW5nJy5gKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBbIGxvY2Fs
UXVpY1RyYW5zcG9ydCwgcmVtb3RlUXVpY1RyYW5zcG9ydCBdID0KKyAgICAgIGF3YWl0IG1ha2VU
d29Db25uZWN0ZWRRdWljVHJhbnNwb3J0cyh0KTsKKyAgY29uc3QgbG9jYWxTdHJlYW0gPSBsb2Nh
bFF1aWNUcmFuc3BvcnQuY3JlYXRlU3RyZWFtKCk7CisgIGxvY2FsU3RyZWFtLmZpbmlzaCgpOwor
ICBsb2NhbFN0cmVhbS5maW5pc2goKTsKKyAgYXNzZXJ0X2VxdWFscyhsb2NhbFN0cmVhbS5zdGF0
ZSwgJ2Nsb3NpbmcnKTsKK30sIGBmaW5pc2goKSB0d2ljZSBkb2VzIG5vdCBjaGFuZ2Ugc3RhdGUu
YCk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgWyBsb2NhbFF1aWNUcmFu
c3BvcnQsIHJlbW90ZVF1aWNUcmFuc3BvcnQgXSA9CisgICAgICBhd2FpdCBtYWtlVHdvQ29ubmVj
dGVkUXVpY1RyYW5zcG9ydHModCk7CisgIGNvbnN0IGxvY2FsU3RyZWFtID0gbG9jYWxRdWljVHJh
bnNwb3J0LmNyZWF0ZVN0cmVhbSgpOworICBsb2NhbFN0cmVhbS5yZXNldCgpOworICBhc3NlcnRf
ZXF1YWxzKGxvY2FsU3RyZWFtLnN0YXRlLCAnY2xvc2VkJyk7Cit9LCBgcmVzZXQoKSBjaGFuZ2Vz
IHN0YXRlIHRvICdjbG9zZWQnLmApOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNv
bnN0IFsgbG9jYWxRdWljVHJhbnNwb3J0LCByZW1vdGVRdWljVHJhbnNwb3J0IF0gPQorICAgICAg
YXdhaXQgbWFrZVR3b0Nvbm5lY3RlZFF1aWNUcmFuc3BvcnRzKHQpOworICBjb25zdCBsb2NhbFN0
cmVhbSA9IGxvY2FsUXVpY1RyYW5zcG9ydC5jcmVhdGVTdHJlYW0oKTsKKyAgbG9jYWxTdHJlYW0u
ZmluaXNoKCk7CisgIGxvY2FsU3RyZWFtLnJlc2V0KCk7CisgIGFzc2VydF9lcXVhbHMobG9jYWxT
dHJlYW0uc3RhdGUsICdjbG9zZWQnKTsKK30sIGByZXNldCgpIGZvbGxvd2luZyBmaW5pc2goKSBj
aGFuZ2VzIHN0YXRlIHRvICdjbG9zZWQnLmApOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgIGNvbnN0IFsgbG9jYWxRdWljVHJhbnNwb3J0LCByZW1vdGVRdWljVHJhbnNwb3J0IF0gPQor
ICAgICAgYXdhaXQgbWFrZVR3b0Nvbm5lY3RlZFF1aWNUcmFuc3BvcnRzKHQpOworICBjb25zdCBs
b2NhbFN0cmVhbSA9IGxvY2FsUXVpY1RyYW5zcG9ydC5jcmVhdGVTdHJlYW0oKTsKKyAgbG9jYWxT
dHJlYW0uZmluaXNoKCk7CisgIGNvbnN0IHJlbW90ZVdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVy
KHQsIHJlbW90ZVF1aWNUcmFuc3BvcnQsICdxdWljc3RyZWFtJyk7CisgIGNvbnN0IHsgc3RyZWFt
OiByZW1vdGVTdHJlYW0gfSA9IGF3YWl0IHJlbW90ZVdhdGNoZXIud2FpdF9mb3IoJ3F1aWNzdHJl
YW0nKTsKKyAgYXNzZXJ0X2VxdWFscyhyZW1vdGVTdHJlYW0uc3RhdGUsICdvcGVuJyk7CisgIGNv
bnN0IHJlbW90ZVN0cmVhbVdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIHJlbW90ZVN0cmVh
bSwgJ3N0YXRlY2hhbmdlJyk7CisgIGF3YWl0IHJlbW90ZVN0cmVhbVdhdGNoZXIud2FpdF9mb3Io
J3N0YXRlY2hhbmdlJyk7CisgIGFzc2VydF9lcXVhbHMocmVtb3RlU3RyZWFtLnN0YXRlLCAnY2xv
c2luZycpOworfSwgJ2NyZWF0ZVN0cmVhbSgpIGZvbGxvd2VkIGJ5IGZpbmlzaCgpIGZpcmVzIGEg
cXVpY3N0cmVhbSBldmVudCBmb2xsb3dlZCBieSAnICsKKyAgICBgYSBzdGF0ZWNoYW5nZSBldmVu
dCB0byAnY2xvc2luZycgb24gdGhlIHJlbW90ZSBzaWRlLmApOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgIGNvbnN0IFsgbG9jYWxRdWljVHJhbnNwb3J0LCByZW1vdGVRdWljVHJhbnNw
b3J0IF0gPQorICAgICAgYXdhaXQgbWFrZVR3b0Nvbm5lY3RlZFF1aWNUcmFuc3BvcnRzKHQpOwor
ICBjb25zdCBsb2NhbFN0cmVhbSA9IGxvY2FsUXVpY1RyYW5zcG9ydC5jcmVhdGVTdHJlYW0oKTsK
KyAgbG9jYWxTdHJlYW0ucmVzZXQoKTsKKyAgY29uc3QgcmVtb3RlV2F0Y2hlciA9IG5ldyBFdmVu
dFdhdGNoZXIodCwgcmVtb3RlUXVpY1RyYW5zcG9ydCwgJ3F1aWNzdHJlYW0nKTsKKyAgY29uc3Qg
eyBzdHJlYW06IHJlbW90ZVN0cmVhbSB9ID0gYXdhaXQgcmVtb3RlV2F0Y2hlci53YWl0X2Zvcign
cXVpY3N0cmVhbScpOworICBhc3NlcnRfZXF1YWxzKHJlbW90ZVN0cmVhbS5zdGF0ZSwgJ29wZW4n
KTsKKyAgY29uc3QgcmVtb3RlU3RyZWFtV2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgcmVt
b3RlU3RyZWFtLCAnc3RhdGVjaGFuZ2UnKTsKKyAgYXdhaXQgcmVtb3RlU3RyZWFtV2F0Y2hlci53
YWl0X2Zvcignc3RhdGVjaGFuZ2UnKTsKKyAgYXNzZXJ0X2VxdWFscyhyZW1vdGVTdHJlYW0uc3Rh
dGUsICdjbG9zZWQnKTsKK30sICdjcmVhdGVTdHJlYW0oKSBmb2xsb3dlZCBieSByZXNldCgpIGZp
cmVzIGEgcXVpY3N0cmVhbSBldmVudCBmb2xsb3dlZCAnICsKKyAgICBgYnkgYSBzdGF0ZWNoYW5n
ZSBldmVudCB0byAnY2xvc2VkJyBvbiB0aGUgcmVtb3RlIHNpZGUuYCk7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgY29uc3QgWyBsb2NhbFF1aWNUcmFuc3BvcnQsIHJlbW90ZVF1aWNU
cmFuc3BvcnQgXSA9CisgICAgICBhd2FpdCBtYWtlVHdvQ29ubmVjdGVkUXVpY1RyYW5zcG9ydHMo
dCk7CisgIHJlbW90ZVF1aWNUcmFuc3BvcnQub25xdWljc3RyZWFtID0gKHsgc3RyZWFtIH0pID0+
IHN0cmVhbS5yZXNldCgpOworICBjb25zdCBsb2NhbFN0cmVhbSA9IGxvY2FsUXVpY1RyYW5zcG9y
dC5jcmVhdGVTdHJlYW0oKTsKKyAgbG9jYWxTdHJlYW0uZmluaXNoKCk7CisgIGNvbnN0IGxvY2Fs
V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgbG9jYWxTdHJlYW0sICdzdGF0ZWNoYW5nZScp
OworICBhd2FpdCBsb2NhbFdhdGNoZXIud2FpdF9mb3IoJ3N0YXRlY2hhbmdlJyk7CisgIGFzc2Vy
dF9lcXVhbHMobG9jYWxTdHJlYW0uc3RhdGUsICdjbG9zZWQnKTsKK30sICdmaW5pc2goKSBvbiBh
IHJlbW90ZSBzdHJlYW0gdGhhdCBoYXMgYWxyZWFkeSBmaW5pc2hlZCBmaXJlcyBhICcgKworICAg
IGBzdGF0ZWNoYW5nZSBldmVudCB0byAnY2xvc2VkJyBvbiB0aGUgcmVtb3RlIHNpZGUuYCk7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgWyBsb2NhbFF1aWNUcmFuc3BvcnQs
IHJlbW90ZVF1aWNUcmFuc3BvcnQgXSA9CisgICAgICBhd2FpdCBtYWtlVHdvQ29ubmVjdGVkUXVp
Y1RyYW5zcG9ydHModCk7CisgIGNvbnN0IGxvY2FsU3RyZWFtID0gbG9jYWxRdWljVHJhbnNwb3J0
LmNyZWF0ZVN0cmVhbSgpOworICBsb2NhbFN0cmVhbS5maW5pc2goKTsKKyAgbG9jYWxTdHJlYW0u
cmVzZXQoKTsKKyAgY29uc3QgcmVtb3RlV2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgcmVt
b3RlUXVpY1RyYW5zcG9ydCwgJ3F1aWNzdHJlYW0nKTsKKyAgY29uc3QgeyBzdHJlYW06IHJlbW90
ZVN0cmVhbSB9ID0gYXdhaXQgcmVtb3RlV2F0Y2hlci53YWl0X2ZvcigncXVpY3N0cmVhbScpOwor
ICBjb25zdCByZW1vdGVTdHJlYW1XYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCByZW1vdGVT
dHJlYW0sICdzdGF0ZWNoYW5nZScpOworICBhd2FpdCByZW1vdGVTdHJlYW1XYXRjaGVyLndhaXRf
Zm9yKCdzdGF0ZWNoYW5nZScpOworICBhc3NlcnRfZXF1YWxzKHJlbW90ZVN0cmVhbS5zdGF0ZSwg
J2Nsb3NpbmcnKTsKKyAgYXdhaXQgcmVtb3RlU3RyZWFtV2F0Y2hlci53YWl0X2Zvcignc3RhdGVj
aGFuZ2UnKTsKKyAgYXNzZXJ0X2VxdWFscyhyZW1vdGVTdHJlYW0uc3RhdGUsICdjbG9zZWQnKTsK
K30sICdmaW5pc2goKSB0aGVuIHJlc2V0KCkgZmlyZXMgdHdvIHN0YXRlY2hhbmdlIGV2ZW50cyBv
biB0aGUgcmVtb3RlIHNpZGUuJyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUXVpY1RyYW5zcG9y
dC1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy9SVENRdWljVHJhbnNwb3J0LWhlbHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTI4ZmVhZTA5
MzdkNGEyODcxMGJlNWYwZTgwN2M0YWYwZjdjMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUXVpY1RyYW5z
cG9ydC1oZWxwZXIuanMKQEAgLTAsMCArMSw4MSBAQAorJ3VzZSBzdHJpY3QnOworCisvLyBUaGlz
IGZpbGUgZGVwZW5kcyBvbiBSVENJY2VUcmFuc3BvcnQtZXh0ZW5zaW9uLWhlbHBlci5qcyB3aGlj
aCBzaG91bGQgYmUKKy8vIGxvYWRlZCBmcm9tIHRoZSBtYWluIEhUTUwgZmlsZS4KKy8vIFRoZSBm
b2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20KKy8vIFJUQ0ljZVRyYW5z
cG9ydC1leHRlbnNpb24taGVscGVyLmpzOgorLy8gICBtYWtlSWNlVHJhbnNwb3J0CisvLyAgIG1h
a2VHYXRoZXJBbmRTdGFydFR3b0ljZVRyYW5zcG9ydHMKKworLy8gUmV0dXJuIGEgcHJvbWlzZSB0
byBnZW5lcmF0ZSBhbiBSVENDZXJ0aWZpY2F0ZSB3aXRoIHRoZSBnaXZlbiBrZXlnZW4KKy8vIGFs
Z29yaXRobSBvciBhIGRlZmF1bHQgb25lIGlmIG5vbmUgcHJvdmlkZWQuCitmdW5jdGlvbiBnZW5l
cmF0ZUNlcnRpZmljYXRlKGtleWdlbkFsZ29yaXRobSkgeworICByZXR1cm4gUlRDUGVlckNvbm5l
Y3Rpb24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZSh7CisgICAgbmFtZTogJ0VDRFNBJywKKyAgICBuYW1l
ZEN1cnZlOiAnUC0yNTYnLAorICAgIC4uLmtleWdlbkFsZ29yaXRobSwKKyAgfSk7Cit9CisKKy8v
IENvbnN0cnVjdCBhbiBSVENRdWljVHJhbnNwb3J0IGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIFJU
Q0ljZVRyYW5zcG9ydAorLy8gaW5zdGFuY2UgYW5kIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZXMuIFRo
ZSBSVENRdWljVHJhbnNwb3J0IGluc3RhbmNlIHdpbGwgYmUKKy8vIGF1dG9tYXRpY2FsbHkgY2xl
YW5lZCB1cCB3aGVuIHRoZSB0ZXN0IGZpbmlzaGVzLgorZnVuY3Rpb24gbWFrZVF1aWNUcmFuc3Bv
cnQodCwgaWNlVHJhbnNwb3J0LCBjZXJ0aWZpY2F0ZXMpIHsKKyAgY29uc3QgcXVpY1RyYW5zcG9y
dCA9IG5ldyBSVENRdWljVHJhbnNwb3J0KGljZVRyYW5zcG9ydCwgY2VydGlmaWNhdGVzKTsKKyAg
dC5hZGRfY2xlYW51cCgoKSA9PiBxdWljVHJhbnNwb3J0LnN0b3AoKSk7CisgIHJldHVybiBxdWlj
VHJhbnNwb3J0OworfQorCisvLyBDb25zdHJ1Y3QgYW4gUlRDUXVpY1RyYW5zcG9ydCBpbnN0YW5j
ZSB3aXRoIGEgbmV3IFJUQ0ljZVRyYW5zcG9ydCBpbnN0YW5jZQorLy8gYW5kIGEgc2luZ2xlLCBu
ZXdseS1nZW5lcmF0ZWQgY2VydGlmaWNhdGUuIFRoZSBSVENRdWljVHJhbnNwb3J0IGFuZAorLy8g
UlRDSWNlVHJhbnNwb3J0IGluc3RhbmNlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2xlYW5lZCB1
cCB3aGVuIHRoZSB0ZXN0CisvLyBmaW5pc2hlcy4KK2FzeW5jIGZ1bmN0aW9uIG1ha2VTdGFuZGFs
b25lUXVpY1RyYW5zcG9ydCh0KSB7CisgIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgZ2VuZXJh
dGVDZXJ0aWZpY2F0ZSgpOworICByZXR1cm4gbWFrZVF1aWNUcmFuc3BvcnQodCwgbWFrZUljZVRy
YW5zcG9ydCh0KSwgWyBjZXJ0aWZpY2F0ZSBdKTsKK30KKworLy8gQ29uc3RydWN0IHR3byBSVENR
dWljVHJhbnNwb3J0IGluc3RhbmNlcyBhbmQgZWFjaCBjYWxsIHN0YXJ0KCkgd2l0aCB0aGUgb3Ro
ZXIKKy8vIHRyYW5zcG9ydCdzIGxvY2FsIHBhcmFtZXRlcnMuCisvLyBSZXR1cm5zIGEgMi1saXN0
OgorLy8gICAgIFsgc2VydmVyIFJUQ1F1aWNUcmFuc3BvcnQsCisvLyAgICAgICBjbGllbnQgUlRD
UXVpY1RyYW5zcG9ydCBdCithc3luYyBmdW5jdGlvbiBtYWtlQW5kU3RhcnRUd29RdWljVHJhbnNw
b3J0cyh0KSB7CisgIGNvbnN0IFsgbG9jYWxDZXJ0aWZpY2F0ZSwgcmVtb3RlQ2VydGlmaWNhdGUg
XSA9CisgICAgICBhd2FpdCBQcm9taXNlLmFsbChbIGdlbmVyYXRlQ2VydGlmaWNhdGUoKSwgZ2Vu
ZXJhdGVDZXJ0aWZpY2F0ZSgpIF0pOworICBjb25zdCBbIGxvY2FsSWNlVHJhbnNwb3J0LCByZW1v
dGVJY2VUcmFuc3BvcnQgXSA9CisgICAgICBtYWtlR2F0aGVyQW5kU3RhcnRUd29JY2VUcmFuc3Bv
cnRzKHQpOworICBjb25zdCBsb2NhbFF1aWNUcmFuc3BvcnQgPQorICAgICAgbWFrZVF1aWNUcmFu
c3BvcnQodCwgbG9jYWxJY2VUcmFuc3BvcnQsIFsgbG9jYWxDZXJ0aWZpY2F0ZSBdKTsKKyAgY29u
c3QgcmVtb3RlUXVpY1RyYW5zcG9ydCA9CisgICAgICBtYWtlUXVpY1RyYW5zcG9ydCh0LCByZW1v
dGVJY2VUcmFuc3BvcnQsIFsgcmVtb3RlQ2VydGlmaWNhdGUgXSk7CisgIGxvY2FsUXVpY1RyYW5z
cG9ydC5zdGFydChyZW1vdGVRdWljVHJhbnNwb3J0LmdldExvY2FsUGFyYW1ldGVycygpKTsKKyAg
cmVtb3RlUXVpY1RyYW5zcG9ydC5zdGFydChsb2NhbFF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJh
bWV0ZXJzKCkpOworICByZXR1cm4gWyBsb2NhbFF1aWNUcmFuc3BvcnQsIHJlbW90ZVF1aWNUcmFu
c3BvcnQgXTsKK30KKworLy8gQ29uc3RydWN0IHR3byBSVENRdWljVHJhbnNwb3J0IGluc3RhbmNl
cyBhbmQgd2FpdCBmb3IgdGhlbSB0byBjb25uZWN0LgorLy8gUmV0dXJucyBhIDItbGlzdDoKKy8v
ICAgICBbIHNlcnZlciBSVENRdWljVHJhbnNwb3J0LAorLy8gICAgICAgY2xpZW50IFJUQ1F1aWNU
cmFuc3BvcnQgXQorYXN5bmMgZnVuY3Rpb24gbWFrZVR3b0Nvbm5lY3RlZFF1aWNUcmFuc3BvcnRz
KHQpIHsKKyAgLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0cmFu
c3BvcnQgZmlyZXMgYSAnc3RhdGVjaGFuZ2UnCisgIC8vIGV2ZW50IHRvICdjb25uZWN0ZWQnLgor
ICBmdW5jdGlvbiB3YWl0Rm9yQ29ubmVjdGVkKHRyYW5zcG9ydCkgeworICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICBjb25zdCBldmVudEhhbmRsZXIg
PSB0LnN0ZXBfZnVuYygoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHModHJhbnNwb3J0LnN0
YXRlLCAnY29ubmVjdGVkJyk7CisgICAgICAgIHRyYW5zcG9ydC5yZW1vdmVFdmVudExpc3RlbmVy
KCdzdGF0ZWNoYW5nZScsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgICAgICByZXNvbHZlKCk7
CisgICAgICB9KTsKKyAgICAgIHRyYW5zcG9ydC5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5n
ZScsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIH0pOworICB9CisgIGNvbnN0IFsgbG9jYWxR
dWljVHJhbnNwb3J0LCByZW1vdGVRdWljVHJhbnNwb3J0IF0gPQorICAgICAgYXdhaXQgbWFrZUFu
ZFN0YXJ0VHdvUXVpY1RyYW5zcG9ydHModCk7CisgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICB3
YWl0Rm9yQ29ubmVjdGVkKGxvY2FsUXVpY1RyYW5zcG9ydCksCisgICAgd2FpdEZvckNvbm5lY3Rl
ZChyZW1vdGVRdWljVHJhbnNwb3J0KSwKKyAgXSk7CisgIHJldHVybiBbIGxvY2FsUXVpY1RyYW5z
cG9ydCwgcmVtb3RlUXVpY1RyYW5zcG9ydCBdOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUXVpY1RyYW5zcG9ydC5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy9SVENRdWljVHJhbnNwb3J0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYWQ1Zjg3NWM4Njg4MTc5MDcwYTI0NjZmNTZhYmQwY2UyYzYwYWY1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUXVpY1RyYW5zcG9ydC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
CitGQUlMIFJUQ1F1aWNUcmFuc3BvcnQgaW5pdGlhbCBwcm9wZXJ0aWVzIGFyZSBzZXQuIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VU
cmFuc3BvcnQoKScpIgorRkFJTCBnZXRDZXJ0aWZpY2F0ZXMoKSByZXR1cm5zIHRoZSBjZXJ0aWZp
Y2F0ZXMgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3Rvci4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlM
IGdldExvY2FsUGFyYW1ldGVycygpIGhhcyBmaW5nZXJwcmludHMgZm9yIGFsbCBjZXJ0aWZpY2F0
ZXMgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3Rvci4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitQQVNTIFJU
Q1F1aWNUcmFuc3BvcnQgY29uc3RydWN0b3IgdGhyb3dzIGlmIHBhc3NlZCBhbiBleHBpcmVkIGNl
cnRpZmljYXRlLiAKK0ZBSUwgUlRDUXVpY1RyYW5zcG9ydCBjb25zdHJ1Y3RvciB0aHJvd3MgaWYg
cGFzc2VkIGEgY2xvc2VkIFJUQ0ljZVRyYW5zcG9ydC4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlM
IFJUQ1F1aWNUcmFuc3BvcnQgY29uc3RydWN0b3IgdGhyb3dzIGlmIHBhc3NlZCBhbiBSVENJY2VU
cmFuc3BvcnQgdGhhdCBhbHJlYWR5IGhhcyBhbiBhY3RpdmUgUlRDUXVpY1RyYW5zcG9ydC4gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0lj
ZVRyYW5zcG9ydCgpJykiCitGQUlMIHN0b3AoKSBjaGFuZ2VzIHN0YXRlIHRvICdjbG9zZWQnLiBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRD
SWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgUlRDSWNlVHJhbnNwb3J0LnN0b3AoKSBjaGFuZ2VzIFJU
Q1F1aWNUcmFuc3BvcnQuc3RhdGUgdG8gJ2Nsb3NlZCcuIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90
IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBSVENJY2VUcmFuc3BvcnQoKScpIgorRkFJ
TCBzdGFydCgpIHdpdGggYSBub24tc3RhcnRlZCBSVENJY2VUcmFuc3BvcnQgZG9lcyBub3QgY2hh
bmdlIHN0YXRlLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgc3RhcnQoKSB3aXRoIGEgbm9uLXN0
YXJ0ZWQgUlRDSWNlVHJhbnNwb3J0IGxhdGVyIGNoYW5nZXMgc3RhdGUgdG8gJ2Nvbm5lY3Rpbmcn
IG9uY2UgdGhlIFJUQ0ljZVRyYW5zcG9ydC5zdGFydCgpIGlzIGNhbGxlZC4gcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5j
dGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9y
dCgpJykiCitGQUlMIHN0YXJ0KCkgd2l0aCBhIHN0YXJ0ZWQgUlRDSWNlVHJhbnNwb3J0IGNoYW5n
ZXMgc3RhdGUgdG8gJ2Nvbm5lY3RpbmcnLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0
cnVjdG9yIChldmFsdWF0aW5nICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgc3RhcnQo
KSB0aHJvd3MgaWYgY2FsbGVkIGFmdGVyIHN0b3AoKS4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlM
IHN0YXJ0KCkgdGhyb3dzIGlmIGNhbGxlZCBhZnRlciB0aGUgUlRDSWNlVHJhbnNwb3J0IGhhcyBz
dG9wcGVkLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5n
ICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgc3RhcnQoKSB0aHJvd3MgaWYgY2FsbGVk
IHR3aWNlLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5n
ICduZXcgUlRDSWNlVHJhbnNwb3J0KCknKSIKK0ZBSUwgVHdvIFJUQ1F1aWNUcmFuc3BvcnRzIGNv
bm5lY3QgdG8gZWFjaCBvdGhlci4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3Rv
ciAoZXZhbHVhdGluZyAnbmV3IFJUQ0ljZVRyYW5zcG9ydCgpJykiCitGQUlMIHN0b3AoKSBmaXJl
cyBhIHN0YXRlY2hhbmdlIGV2ZW50IHRvICdjbG9zZWQnIG9uIHRoZSByZW1vdGUgdHJhbnNwb3J0
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBS
VENJY2VUcmFuc3BvcnQoKScpIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENRdWljVHJhbnNwb3J0Lmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENR
dWljVHJhbnNwb3J0Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JjYzkzZDk1Mzc1Y2NmMGJiYWE4
YmE4OTI2MDYwOTllYzhmMGJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1F1aWNUcmFuc3BvcnQuaHR0cHMu
aHRtbApAQCAtMCwwICsxLDE4OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0
Zi04PgorPHRpdGxlPlJUQ1F1aWNUcmFuc3BvcnQuaHR0cHMuaHRtbDwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
UlRDSWNlVHJhbnNwb3J0LWV4dGVuc2lvbi1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IlJUQ1F1aWNUcmFuc3BvcnQtaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNl
IHN0cmljdCc7CisKKy8vIFRoZXNlIHRlc3RzIGFyZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHNw
ZWNpZmljYXRpb246CisvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXF1aWMvCisKKy8v
IFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20KKy8vIFJUQ0lj
ZVRyYW5zcG9ydC1leHRlbnNpb24taGVscGVyLmpzOgorLy8gICBtYWtlSWNlVHJhbnNwb3J0Cisv
LyAgIG1ha2VBbmRHYXRoZXJUd29JY2VUcmFuc3BvcnRzCisKKy8vIFRoZSBmb2xsb3dpbmcgaGVs
cGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gUlRDUXVpY1RyYW5zcG9ydC1oZWxwZXIuanM6
CisvLyAgIGdlbmVyYXRlQ2VydGlmaWNhdGUKKy8vICAgbWFrZVF1aWNUcmFuc3BvcnQKKy8vICAg
bWFrZVN0YW5kYWxvbmVRdWljVHJhbnNwb3J0CisvLyAgIG1ha2VBbmRTdGFydFR3b1F1aWNUcmFu
c3BvcnRzCisvLyAgIG1ha2VUd29Db25uZWN0ZWRRdWljVHJhbnNwb3J0cworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgZ2VuZXJhdGVDZXJ0
aWZpY2F0ZSgpOworICBjb25zdCBpY2VUcmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOwor
ICBjb25zdCBxdWljVHJhbnNwb3J0ID0gbWFrZVF1aWNUcmFuc3BvcnQodCwgaWNlVHJhbnNwb3J0
LCBbIGNlcnRpZmljYXRlIF0pOworICBhc3NlcnRfZXF1YWxzKHF1aWNUcmFuc3BvcnQudHJhbnNw
b3J0LCBpY2VUcmFuc3BvcnQsCisgICAgICAnRXhwZWN0IHRyYW5zcG9ydCB0byBiZSB0aGUgc2Ft
ZSBhcyB0aGUgb25lIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3IuJyk7CisgIGFzc2VydF9lcXVh
bHMocXVpY1RyYW5zcG9ydC5zdGF0ZSwgJ25ldycsIGBFeHBlY3Qgc3RhdGUgdG8gYmUgJ25ldycu
YCk7CisgIGFzc2VydF9vYmplY3RfZXF1YWxzKHF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0
ZXJzKCksCisgICAgICB7IHJvbGU6ICdhdXRvJywgZmluZ2VycHJpbnRzOiBjZXJ0aWZpY2F0ZS5n
ZXRGaW5nZXJwcmludHMoKSB9LAorICAgICAgJ0V4cGVjdCBsb2NhbCBwYXJhbWV0ZXJzIHRvIGJl
IGluaXRpYWxpemVkLicpOworICBhc3NlcnRfZXF1YWxzKHF1aWNUcmFuc3BvcnQuZ2V0UmVtb3Rl
UGFyYW1ldGVycygpLCBudWxsLAorICAgICAgJ0V4cGVjdCBubyByZW1vdGUgcGFyYW1ldGVycy4n
KTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhxdWljVHJhbnNwb3J0LmdldENlcnRpZmljYXRlcygp
LCBbIGNlcnRpZmljYXRlIF0sCisgICAgICAnRXhwZWN0IG9uZSBjZXJ0aWZpY2F0ZS4nKTsKKyAg
YXNzZXJ0X2FycmF5X2VxdWFscyhxdWljVHJhbnNwb3J0LmdldFJlbW90ZUNlcnRpZmljYXRlcygp
LCBbXSwKKyAgICAgICdFeHBlY3Qgbm8gcmVtb3RlIGNlcnRpZmljYXRlcy4nKTsKK30sICdSVENR
dWljVHJhbnNwb3J0IGluaXRpYWwgcHJvcGVydGllcyBhcmUgc2V0LicpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IFsgZmlyc3RDZXJ0aWZpY2F0ZSwgc2Vjb25kQ2VydGlm
aWNhdGUgXSA9CisgICAgICBhd2FpdCBQcm9taXNlLmFsbChbIGdlbmVyYXRlQ2VydGlmaWNhdGUo
KSwgZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgpIF0pOworICBjb25zdCBxdWljVHJhbnNwb3J0ID0KKyAg
ICAgIG1ha2VRdWljVHJhbnNwb3J0KHQsIG1ha2VJY2VUcmFuc3BvcnQodCksCisgICAgICAgICAg
WyBmaXJzdENlcnRpZmljYXRlLCBzZWNvbmRDZXJ0aWZpY2F0ZSBdKTsKKyAgYXNzZXJ0X2FycmF5
X2VxdWFscyhxdWljVHJhbnNwb3J0LmdldENlcnRpZmljYXRlcygpLAorICAgICAgWyBmaXJzdENl
cnRpZmljYXRlLCBzZWNvbmRDZXJ0aWZpY2F0ZSBdKTsKK30sICdnZXRDZXJ0aWZpY2F0ZXMoKSBy
ZXR1cm5zIHRoZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3Rvci4nKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBbIGZpcnN0Q2VydGlmaWNhdGUsIHNl
Y29uZENlcnRpZmljYXRlIF0gPQorICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWyBnZW5lcmF0ZUNl
cnRpZmljYXRlKCksIGdlbmVyYXRlQ2VydGlmaWNhdGUoKSBdKTsKKyAgY29uc3QgcXVpY1RyYW5z
cG9ydCA9CisgICAgICBtYWtlUXVpY1RyYW5zcG9ydCh0LCBtYWtlSWNlVHJhbnNwb3J0KHQpLAor
ICAgICAgICAgIFsgZmlyc3RDZXJ0aWZpY2F0ZSwgc2Vjb25kQ2VydGlmaWNhdGUgXSk7CisgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0ZXJzKCksIHsK
KyAgICByb2xlOiAnYXV0bycsCisgICAgZmluZ2VycHJpbnRzOgorICAgICAgICBbIGZpcnN0Q2Vy
dGlmaWNhdGUuZ2V0RmluZ2VycHJpbnRzKClbMF0sCisgICAgICAgICAgICBzZWNvbmRDZXJ0aWZp
Y2F0ZS5nZXRGaW5nZXJwcmludHMoKVswXSBdLAorICB9KTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhxdWljVHJhbnNwb3J0LmdldENlcnRpZmljYXRlcygpLAorICAgICAgWyBmaXJzdENlcnRpZmlj
YXRlLCBzZWNvbmRDZXJ0aWZpY2F0ZSBdKTsKK30sICdnZXRMb2NhbFBhcmFtZXRlcnMoKSBoYXMg
ZmluZ2VycHJpbnRzIGZvciBhbGwgY2VydGlmaWNhdGVzIHBhc3NlZCBpbiB0aGUgJyArCisgICAg
J2NvbnN0cnVjdG9yLicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IGV4
cGlyZWRDZXJ0aWZpY2F0ZSA9IGF3YWl0IGdlbmVyYXRlQ2VydGlmaWNhdGUoeyBleHBpcmVzOiAw
IH0pOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgICgpID0+IG1ha2VR
dWljVHJhbnNwb3J0KHQsIG1ha2VJY2VUcmFuc3BvcnQodCksIFsgZXhwaXJlZENlcnRpZmljYXRl
IF0pKTsKK30sICdSVENRdWljVHJhbnNwb3J0IGNvbnN0cnVjdG9yIHRocm93cyBpZiBwYXNzZWQg
YW4gZXhwaXJlZCBjZXJ0aWZpY2F0ZS4nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IGdlbmVyYXRlQ2VydGlmaWNhdGUoKTsKKyAgY29u
c3QgaWNlVHJhbnNwb3J0ID0gbWFrZUljZVRyYW5zcG9ydCh0KTsKKyAgaWNlVHJhbnNwb3J0LnN0
b3AoKTsKKyAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgKCkgPT4g
bWFrZVF1aWNUcmFuc3BvcnQodCwgaWNlVHJhbnNwb3J0LCBbIGNlcnRpZmljYXRlIF0pKTsKK30s
ICdSVENRdWljVHJhbnNwb3J0IGNvbnN0cnVjdG9yIHRocm93cyBpZiBwYXNzZWQgYSBjbG9zZWQg
UlRDSWNlVHJhbnNwb3J0LicpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0
IGNlcnRpZmljYXRlID0gYXdhaXQgZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgpOworICBjb25zdCBpY2VU
cmFuc3BvcnQgPSBtYWtlSWNlVHJhbnNwb3J0KHQpOworICBjb25zdCBmaXJzdFF1aWNUcmFuc3Bv
cnQgPQorICAgICAgbWFrZVF1aWNUcmFuc3BvcnQodCwgaWNlVHJhbnNwb3J0LCBbIGNlcnRpZmlj
YXRlIF0pOworICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAoKSA9
PiBtYWtlUXVpY1RyYW5zcG9ydCh0LCBpY2VUcmFuc3BvcnQsIFsgY2VydGlmaWNhdGUgXSkpOwor
fSwgJ1JUQ1F1aWNUcmFuc3BvcnQgY29uc3RydWN0b3IgdGhyb3dzIGlmIHBhc3NlZCBhbiBSVENJ
Y2VUcmFuc3BvcnQgdGhhdCAnICsKKyAgICAnYWxyZWFkeSBoYXMgYW4gYWN0aXZlIFJUQ1F1aWNU
cmFuc3BvcnQuJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcXVpY1Ry
YW5zcG9ydCA9IGF3YWl0IG1ha2VTdGFuZGFsb25lUXVpY1RyYW5zcG9ydCh0KTsKKyAgcXVpY1Ry
YW5zcG9ydC5zdG9wKCk7CisgIGFzc2VydF9lcXVhbHMocXVpY1RyYW5zcG9ydC5zdGF0ZSwgJ2Ns
b3NlZCcpOworfSwgYHN0b3AoKSBjaGFuZ2VzIHN0YXRlIHRvICdjbG9zZWQnLmApOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHF1aWNUcmFuc3BvcnQgPSBhd2FpdCBtYWtl
U3RhbmRhbG9uZVF1aWNUcmFuc3BvcnQodCk7CisgIHF1aWNUcmFuc3BvcnQudHJhbnNwb3J0LnN0
b3AoKTsKKyAgYXNzZXJ0X2VxdWFscyhxdWljVHJhbnNwb3J0LnN0YXRlLCAnY2xvc2VkJyk7Cit9
LCBgUlRDSWNlVHJhbnNwb3J0LnN0b3AoKSBjaGFuZ2VzIFJUQ1F1aWNUcmFuc3BvcnQuc3RhdGUg
dG8gJ2Nsb3NlZCcuYCk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcXVp
Y1RyYW5zcG9ydCA9IGF3YWl0IG1ha2VTdGFuZGFsb25lUXVpY1RyYW5zcG9ydCh0KTsKKyAgcXVp
Y1RyYW5zcG9ydC5zdGFydChxdWljVHJhbnNwb3J0LmdldExvY2FsUGFyYW1ldGVycygpKTsKKyAg
YXNzZXJ0X2VxdWFscyhxdWljVHJhbnNwb3J0LnN0YXRlLCAnbmV3Jyk7Cit9LCAnc3RhcnQoKSB3
aXRoIGEgbm9uLXN0YXJ0ZWQgUlRDSWNlVHJhbnNwb3J0IGRvZXMgbm90IGNoYW5nZSBzdGF0ZS4n
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3
YWl0IGdlbmVyYXRlQ2VydGlmaWNhdGUoKTsKKyAgY29uc3QgWyBsb2NhbEljZVRyYW5zcG9ydCwg
cmVtb3RlSWNlVHJhbnNwb3J0IF0gPQorICAgICAgbWFrZUFuZEdhdGhlclR3b0ljZVRyYW5zcG9y
dHModCk7CisgIGNvbnN0IHF1aWNUcmFuc3BvcnQgPQorICAgICAgbWFrZVF1aWNUcmFuc3BvcnQo
dCwgbG9jYWxJY2VUcmFuc3BvcnQsIFsgY2VydGlmaWNhdGUgXSk7CisgIHF1aWNUcmFuc3BvcnQu
c3RhcnQocXVpY1RyYW5zcG9ydC5nZXRMb2NhbFBhcmFtZXRlcnMoKSk7CisgIGNvbnN0IGljZVRy
YW5zcG9ydFdhdGNoZXIgPQorICAgICAgbmV3IEV2ZW50V2F0Y2hlcih0LCByZW1vdGVJY2VUcmFu
c3BvcnQsICdpY2VjYW5kaWRhdGUnKTsKKyAgYXdhaXQgaWNlVHJhbnNwb3J0V2F0Y2hlci53YWl0
X2ZvcignaWNlY2FuZGlkYXRlJyk7CisgIGxvY2FsSWNlVHJhbnNwb3J0LnN0YXJ0KHJlbW90ZUlj
ZVRyYW5zcG9ydC5nZXRMb2NhbFBhcmFtZXRlcnMoKSwKKyAgICAgICdjb250cm9sbGluZycpOwor
ICBhc3NlcnRfZXF1YWxzKHF1aWNUcmFuc3BvcnQuc3RhdGUsICdjb25uZWN0aW5nJyk7Cit9LCAn
c3RhcnQoKSB3aXRoIGEgbm9uLXN0YXJ0ZWQgUlRDSWNlVHJhbnNwb3J0IGxhdGVyIGNoYW5nZXMg
c3RhdGUgdG8gJyArCisgICAgYCdjb25uZWN0aW5nJyBvbmNlIHRoZSBSVENJY2VUcmFuc3BvcnQu
c3RhcnQoKSBpcyBjYWxsZWQuYCk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29u
c3QgY2VydGlmaWNhdGUgPSBhd2FpdCBnZW5lcmF0ZUNlcnRpZmljYXRlKCk7CisgIGNvbnN0IFsg
bG9jYWxJY2VUcmFuc3BvcnQsIHJlbW90ZUljZVRyYW5zcG9ydCBdID0KKyAgICAgIG1ha2VBbmRH
YXRoZXJUd29JY2VUcmFuc3BvcnRzKHQpOworICBjb25zdCBxdWljVHJhbnNwb3J0ID0KKyAgICAg
IG1ha2VRdWljVHJhbnNwb3J0KHQsIGxvY2FsSWNlVHJhbnNwb3J0LCBbIGNlcnRpZmljYXRlIF0p
OworICBjb25zdCBpY2VUcmFuc3BvcnRXYXRjaGVyID0KKyAgICAgIG5ldyBFdmVudFdhdGNoZXIo
dCwgcmVtb3RlSWNlVHJhbnNwb3J0LCAnaWNlY2FuZGlkYXRlJyk7CisgIGF3YWl0IGljZVRyYW5z
cG9ydFdhdGNoZXIud2FpdF9mb3IoJ2ljZWNhbmRpZGF0ZScpOworICBsb2NhbEljZVRyYW5zcG9y
dC5zdGFydChyZW1vdGVJY2VUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0ZXJzKCkpOworICBxdWlj
VHJhbnNwb3J0LnN0YXJ0KHF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0ZXJzKCkpOworICBh
c3NlcnRfZXF1YWxzKHF1aWNUcmFuc3BvcnQuc3RhdGUsICdjb25uZWN0aW5nJyk7Cit9LCBgc3Rh
cnQoKSB3aXRoIGEgc3RhcnRlZCBSVENJY2VUcmFuc3BvcnQgY2hhbmdlcyBzdGF0ZSB0byAnY29u
bmVjdGluZycuYCk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcXVpY1Ry
YW5zcG9ydCA9IGF3YWl0IG1ha2VTdGFuZGFsb25lUXVpY1RyYW5zcG9ydCh0KTsKKyAgcXVpY1Ry
YW5zcG9ydC5zdG9wKCk7CisgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAg
ICAgICgpID0+IHF1aWNUcmFuc3BvcnQuc3RhcnQocXVpY1RyYW5zcG9ydC5nZXRMb2NhbFBhcmFt
ZXRlcnMoKSkpOworfSwgJ3N0YXJ0KCkgdGhyb3dzIGlmIGNhbGxlZCBhZnRlciBzdG9wKCkuJyk7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcXVpY1RyYW5zcG9ydCA9IGF3
YWl0IG1ha2VTdGFuZGFsb25lUXVpY1RyYW5zcG9ydCh0KTsKKyAgcXVpY1RyYW5zcG9ydC50cmFu
c3BvcnQuc3RvcCgpOworICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAg
ICAoKSA9PiBxdWljVHJhbnNwb3J0LnN0YXJ0KHF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0
ZXJzKCkpKTsKK30sICdzdGFydCgpIHRocm93cyBpZiBjYWxsZWQgYWZ0ZXIgdGhlIFJUQ0ljZVRy
YW5zcG9ydCBoYXMgc3RvcHBlZC4nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBj
b25zdCBxdWljVHJhbnNwb3J0ID0gYXdhaXQgbWFrZVN0YW5kYWxvbmVRdWljVHJhbnNwb3J0KHQp
OworICBxdWljVHJhbnNwb3J0LnN0YXJ0KHF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0ZXJz
KCkpOworICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAoKSA9PiBx
dWljVHJhbnNwb3J0LnN0YXJ0KHF1aWNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0ZXJzKCkpKTsK
K30sICdzdGFydCgpIHRocm93cyBpZiBjYWxsZWQgdHdpY2UuJyk7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgY29uc3QgWyBsb2NhbFF1aWNUcmFuc3BvcnQsIHJlbW90ZVF1aWNUcmFu
c3BvcnQgXSA9CisgICAgICBhd2FpdCBtYWtlQW5kU3RhcnRUd29RdWljVHJhbnNwb3J0cyh0KTsK
KyAgY29uc3QgbG9jYWxXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBsb2NhbFF1aWNUcmFu
c3BvcnQsICdzdGF0ZWNoYW5nZScpOworICBjb25zdCByZW1vdGVXYXRjaGVyID0gbmV3IEV2ZW50
V2F0Y2hlcih0LCByZW1vdGVRdWljVHJhbnNwb3J0LCAnc3RhdGVjaGFuZ2UnKTsKKyAgYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgIGxvY2FsV2F0Y2hlci53YWl0X2Zvcignc3RhdGVjaGFuZ2UnKS50
aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMobG9jYWxRdWljVHJhbnNwb3J0LnN0YXRl
LCAnY29ubmVjdGVkJyk7CisgICAgfSksCisgICAgcmVtb3RlV2F0Y2hlci53YWl0X2Zvcignc3Rh
dGVjaGFuZ2UnKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVtb3RlUXVpY1Ry
YW5zcG9ydC5zdGF0ZSwgJ2Nvbm5lY3RlZCcpOworICAgIH0pLAorICBdKTsKK30sICdUd28gUlRD
UXVpY1RyYW5zcG9ydHMgY29ubmVjdCB0byBlYWNoIG90aGVyLicpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgIGNvbnN0IFsgbG9jYWxRdWljVHJhbnNwb3J0LCByZW1vdGVRdWljVHJh
bnNwb3J0IF0gPQorICAgICAgYXdhaXQgbWFrZVR3b0Nvbm5lY3RlZFF1aWNUcmFuc3BvcnRzKHQp
OworICBsb2NhbFF1aWNUcmFuc3BvcnQuc3RvcCgpOworICBjb25zdCByZW1vdGVXYXRjaGVyID0g
bmV3IEV2ZW50V2F0Y2hlcih0LCByZW1vdGVRdWljVHJhbnNwb3J0LCAnc3RhdGVjaGFuZ2UnKTsK
KyAgYXdhaXQgcmVtb3RlV2F0Y2hlci53YWl0X2Zvcignc3RhdGVjaGFuZ2UnKTsKKyAgYXNzZXJ0
X2VxdWFscyhyZW1vdGVRdWljVHJhbnNwb3J0LnN0YXRlLCAnY2xvc2VkJyk7Cit9LCBgc3RvcCgp
IGZpcmVzIGEgc3RhdGVjaGFuZ2UgZXZlbnQgdG8gJ2Nsb3NlZCcgb24gdGhlIHJlbW90ZSB0cmFu
c3BvcnRgKTsKKworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cENhcGFiaWxpdGllcy1oZWxwZXIu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENSdHBDYXBhYmlsaXRpZXMtaGVscGVyLmpzCmluZGV4IDcyZjU0NDA1OWZmOTM0ZWY1MjE3MmU4
Njg5ODE2ODkxOTM3Mzg1M2IuLmZiMjk3YzM1ZmIxMTI2ZTg5ODVmZjJmMmEwZGQxZGQ4MjRjYTVj
MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ1J0cENhcGFiaWxpdGllcy1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwQ2FwYWJpbGl0aWVz
LWhlbHBlci5qcwpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiB2YWxpZGF0ZVJ0cENhcGFiaWxp
dGllcyhjYXBhYmlsaXRpZXMpIHsKICAgICB2YWxpZGF0ZUNvZGVjQ2FwYWJpbGl0eShjb2RlYyk7
CiAgIH0KIAotICBhc3NlcnRfZ3JlYXRlcl90aGFuKGNhcGFiaWxpdGllcy5jb2RlYywgMCwKKyAg
YXNzZXJ0X2dyZWF0ZXJfdGhhbihjYXBhYmlsaXRpZXMuY29kZWNzLmxlbmd0aCwgMCwKICAgICAn
RXhwZWN0IGF0IGxlYXN0IG9uZSBjb2RlYyBjYXBhYmlsaXR5IGF2YWlsYWJsZScpOwogCiAgIGFz
c2VydF9hcnJheV9maWVsZChjYXBhYmlsaXRpZXMsICdoZWFkZXJFeHRlbnNpb25zJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENSdHBQYXJhbWV0ZXJzLWNvZGVjcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWNvZGVj
cy1leHBlY3RlZC50eHQKaW5kZXggNDM4NDE2NzU4NzNlNzY0OTViM2IwNzlmMGE5ZTNmZDBkYTE1
MWIyOC4uYTQxOTZiMzkyYTlkOGZkMzg0YzYwOWZkMDYwMjUwYjgyNWI3NWE3NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
UnRwUGFyYW1ldGVycy1jb2RlY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtY29kZWNz
LWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDQgQEAgRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0aCBj
b2RlYy5jbG9ja1JhdGUgbW9kaWZpZWQgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRNb2QKIEZB
SUwgc2V0UGFyYW1ldGVycygpIHdpdGggY29kZWMuY2hhbm5lbHMgbW9kaWZpZWQgc2hvdWxkIHJl
amVjdCB3aXRoIEludmFsaWRNb2RpZmljYXRpb25FcnJvciBhc3NlcnRfZXF1YWxzOiBFeHBlY3Qg
ZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQg
Z290ICJ1bmRlZmluZWQiCiBGQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIGNvZGVjLnNkcEZtdHBM
aW5lIG1vZGlmaWVkIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ig
YXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3Qg
ZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgogRkFJTCBzZXRQYXJhbWV0ZXJz
KCkgd2l0aCBuZXcgY29kZWNzIGluc2VydGVkIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9k
aWZpY2F0aW9uRXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBi
ZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgotRkFJ
TCBzZXRQYXJhbWV0ZXJzIHdpdGggcmVvcmRlcmVkIGNvZGVjcyBzaG91bGQgc3VjY2VlZCBhc3Nl
cnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBl
Y3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCi1GQUlMIHNldFBhcmFtZXRlcnMgd2l0
aCBkcm9wcGVkIGNvZGVjIHNob3VsZCBzdWNjZWVkIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBkaWN0
aW9uYXJ5LnJ0Y3AgdG8gYmUgcGxhaW4gb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3Qg
InVuZGVmaW5lZCIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1jb2RlY3MuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFt
ZXRlcnMtY29kZWNzLmh0bWwKaW5kZXggNThjYWQ4YWUxYzNmZmU5NjEwNTZlNmNmYmUwNTYzZDBi
Y2Y2ZmUwZC4uMDIzMzkwNTFjOWNmNTMyMjRkN2U0N2U4ZTcxYzIxNWNkMWUxNDlkZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUnRwUGFyYW1ldGVycy1jb2RlY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWNvZGVjcy5odG1s
CkBAIC0xMiw2ICsxMiw3IEBACiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMv
YXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0bWwKIAogICAvLyBUaGUgZm9sbG93aW5nIGhlbHBl
ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1J0cFBhcmFtZXRlcnMtaGVscGVyLmpzOgor
ICAvLyAgIGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZQogICAvLyAgIHZhbGlkYXRlU2VuZGVyUnRwUGFy
YW1ldGVycwogCiAgIC8qCkBAIC04MCw5ICs4MSwxMyBAQAogICAgICAgICAgIHdpdGggYSBuZXds
eSBjcmVhdGVkIEludmFsaWRNb2RpZmljYXRpb25FcnJvci4gTm90ZSB0aGF0IHRoaXMgYWxzbyBh
cHBsaWVzCiAgICAgICAgICAgdG8gdHJhbnNhY3Rpb25JZC4KICAgICovCi0gIHByb21pc2VfdGVz
dCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgp
KTsKKwogICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsK
KyAgICBhd2FpdCBkb09mZmVyQW5zd2VyRXhjaGFuZ2UodCwgcGMpOworCiAgICAgY29uc3QgcGFy
YW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1l
dGVycyhwYXJhbSk7CiAKQEAgLTk2LDEyICsxMDEsMTMgQEAKIAogICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcicsCiAgICAgICBzZW5kZXIuc2V0
UGFyYW1ldGVycyhwYXJhbSkpOwotCiAgIH0sICdzZXRQYXJhbWV0ZXJzKCkgd2l0aCBjb2RlYy5w
YXlsb2FkVHlwZSBtb2RpZmllZCBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlv
bkVycm9yJyk7CiAKLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5h
ZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgICBhd2FpdCBkb09mZmVyQW5zd2VyRXhjaGFuZ2Uo
dCwgcGMpOwogICAgIGNvbnN0IHBhcmFtID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsKICAgICB2
YWxpZGF0ZVNlbmRlclJ0cFBhcmFtZXRlcnMocGFyYW0pOwogCkBAIC0xMTUsMTIgKzEyMSwxMyBA
QAogCiAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yJywKICAgICAgIHNlbmRlci5zZXRQYXJhbWV0ZXJzKHBhcmFtKSk7Ci0KICAgfSwgJ3NldFBh
cmFtZXRlcnMoKSB3aXRoIGNvZGVjLm1pbWVUeXBlIG1vZGlmaWVkIHNob3VsZCByZWplY3Qgd2l0
aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InKTsKIAotICBwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgY29u
c3QgeyBzZW5kZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICAgIGF3YWl0IGRv
T2ZmZXJBbnN3ZXJFeGNoYW5nZSh0LCBwYyk7CiAgICAgY29uc3QgcGFyYW0gPSBzZW5kZXIuZ2V0
UGFyYW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbSk7CiAK
QEAgLTEzNCwxMiArMTQxLDEzIEBACiAKICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICdJ
bnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAogICAgICAgc2VuZGVyLnNldFBhcmFtZXRlcnMocGFy
YW0pKTsKLQogICB9LCAnc2V0UGFyYW1ldGVycygpIHdpdGggY29kZWMuY2xvY2tSYXRlIG1vZGlm
aWVkIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InKTsKIAotICBw
cm9taXNlX3Rlc3QodCA9PiB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25z
dCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4g
cGMuY2xvc2UoKSk7CiAgICAgY29uc3QgeyBzZW5kZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdh
dWRpbycpOworICAgIGF3YWl0IGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZSh0LCBwYyk7CiAgICAgY29u
c3QgcGFyYW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVyUnRw
UGFyYW1ldGVycyhwYXJhbSk7CiAKQEAgLTE1MywxMyArMTYxLDEzIEBACiAKICAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAogICAgICAgc2Vu
ZGVyLnNldFBhcmFtZXRlcnMocGFyYW0pKTsKLQogICB9LCAnc2V0UGFyYW1ldGVycygpIHdpdGgg
Y29kZWMuY2hhbm5lbHMgbW9kaWZpZWQgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRNb2RpZmlj
YXRpb25FcnJvcicpOwogCi0KLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHsgc2VuZGVyIH0g
PSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgICBhd2FpdCBkb09mZmVyQW5zd2VyRXhj
aGFuZ2UodCwgcGMpOwogICAgIGNvbnN0IHBhcmFtID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsK
ICAgICB2YWxpZGF0ZVNlbmRlclJ0cFBhcmFtZXRlcnMocGFyYW0pOwogCkBAIC0xNzMsMTMgKzE4
MSwxMyBAQAogCiAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZE1vZGlmaWNh
dGlvbkVycm9yJywKICAgICAgIHNlbmRlci5zZXRQYXJhbWV0ZXJzKHBhcmFtKSk7Ci0KICAgfSwg
J3NldFBhcmFtZXRlcnMoKSB3aXRoIGNvZGVjLnNkcEZtdHBMaW5lIG1vZGlmaWVkIHNob3VsZCBy
ZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InKTsKIAotCi0gIHByb21pc2VfdGVz
dCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgp
KTsKICAgICBjb25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7Cisg
ICAgYXdhaXQgZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsKICAgICBjb25zdCBwYXJhbSA9
IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CiAgICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJz
KHBhcmFtKTsKIApAQCAtMTk0LDQwICsyMDIsNiBAQAogCiAgICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKICAgICAgIHNlbmRlci5zZXRQYXJh
bWV0ZXJzKHBhcmFtKSk7Ci0KICAgfSwgJ3NldFBhcmFtZXRlcnMoKSB3aXRoIG5ldyBjb2RlY3Mg
aW5zZXJ0ZWQgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRNb2RpZmljYXRpb25FcnJvcicpOwog
Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwotICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8n
KTsKLSAgICBjb25zdCBwYXJhbSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7Ci0gICAgdmFsaWRh
dGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtKTsKLQotICAgIGNvbnN0IHsgY29kZWNzIH0gPSBw
YXJhbTsKLQotICAgIC8vIHNraXAgYW5kIHBhc3MgdGVzdCBpZiB0aGVyZSBpcyBsZXNzIHRoYW4g
MiBjb2RlY3MKLSAgICBpZihjb2RlY3MubGVuZ3RoID49IDIpIHsKLSAgICAgIGNvbnN0IHRtcCA9
IGNvZGVjc1swXTsKLSAgICAgIGNvZGVjc1swXSA9IGNvZGVjc1sxXTsKLSAgICAgIGNvZGVjc1sx
XSA9IHRtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2VuZGVyLnNldFBhcmFtZXRlcnMocGFyYW0p
OwotCi0gIH0sICdzZXRQYXJhbWV0ZXJzIHdpdGggcmVvcmRlcmVkIGNvZGVjcyBzaG91bGQgc3Vj
Y2VlZCcpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2NlaXZl
cignYXVkaW8nKTsKLSAgICBjb25zdCBwYXJhbSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7Ci0g
ICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtKTsKLQotICAgIGNvbnN0IHsgY29k
ZWNzIH0gPSBwYXJhbTsKLQotICAgIHBhcmFtLmNvZGVjcyA9IGNvZGVjcy5zbGljZSgxKTsKLQot
ICAgIHJldHVybiBzZW5kZXIuc2V0UGFyYW1ldGVycyhwYXJhbSk7Ci0KLSAgfSwgJ3NldFBhcmFt
ZXRlcnMgd2l0aCBkcm9wcGVkIGNvZGVjIHNob3VsZCBzdWNjZWVkJyk7Ci0KIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1kZWdyYWRhdGlvblByZWZlcmVuY2UuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFt
ZXRlcnMtZGVncmFkYXRpb25QcmVmZXJlbmNlLmh0bWwKaW5kZXggOGQwYWI3ZTJiMmMyNjliZDkz
ODlhMDZiZjFjMmQ4MWMzODA0OWM5NC4uZTJjOTJiYzFjMDgxNGYyOTRlMWI5MTUzZmViYzc2ODg2
Y2YyZmRiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1kZWdyYWRhdGlvblByZWZlcmVuY2UuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENSdHBQYXJhbWV0ZXJzLWRlZ3JhZGF0aW9uUHJlZmVyZW5jZS5odG1sCkBAIC00Miw2ICs0
Miw3IEBACiAKICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAg
ICBjb25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CiAKICAgICBj
b25zdCBwYXJhbSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CkBAIC02Myw2ICs2NCw3IEBACiAK
ICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCB7
IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CiAKICAgICBjb25zdCBwYXJh
bSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWVuY29k
aW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWVuY29kaW5ncy1leHBlY3RlZC50eHQKaW5k
ZXggYjc4OTk5YzMyNTk3YmE1NjlmMzZmM2I1ODRmMWRhMDAwZWVlZWIxMS4uMWZkNjQxNzIyYzk3
YzVhMzZkNGZiYTVmZjc0ZDkyMWE3ZTY1YzAxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1lbmNv
ZGluZ3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtZW5jb2RpbmdzLWV4cGVjdGVkLnR4
dApAQCAtMywxOCArMywyMiBAQCBGQUlMIGFkZFRyYW5zY2VpdmVyKCkgd2l0aCB1bmRlZmluZWQg
c2VuZEVuY29kaW5ncyBzaG91bGQgaGF2ZSBkZWZhdWx0IGVuY29kaW5nCiBGQUlMIGFkZFRyYW5z
Y2VpdmVyKCkgd2l0aCBlbXB0eSBsaXN0IHNlbmRFbmNvZGluZ3Mgc2hvdWxkIGhhdmUgZGVmYXVs
dCBlbmNvZGluZyBwYXJhbWV0ZXIgd2l0aCBhY3RpdmUgc2V0IHRvIHRydWUgYXNzZXJ0X2VxdWFs
czogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9i
amVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgogRkFJTCBzZW5kZXIuZ2V0UGFyYW1ldGVycygpIHNo
b3VsZCByZXR1cm4gc2VuZEVuY29kaW5ncyBzZXQgYnkgYWRkVHJhbnNjZWl2ZXIoKSBhc3NlcnRf
ZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3Rl
ZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCiBGQUlMIHNlbmRlci5zZXRQYXJhbWV0ZXJz
KCkgd2l0aCBtaXNtYXRjaCBudW1iZXIgb2YgZW5jb2RpbmdzIHNob3VsZCByZWplY3Qgd2l0aCBJ
bnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnku
cnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZp
bmVkIgotRkFJTCBzZW5kZXIuc2V0UGFyYW1ldGVycygpIHdpdGggZW5jb2RpbmdzIHVuc2V0IHNo
b3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgYXNzZXJ0X2VxdWFsczog
RXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVj
dCIgYnV0IGdvdCAidW5kZWZpbmVkIgotRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0aCBtb2RpZmll
ZCBlbmNvZGluZy5zc3JjIGZpZWxkIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0
aW9uRXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFp
biBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgotRkFJTCBzZXRQ
YXJhbWV0ZXJzKCkgd2l0aCBtb2RpZmllZCBlbmNvZGluZy5ydHggZmllbGQgc2hvdWxkIHJlamVj
dCB3aXRoIEludmFsaWRNb2RpZmljYXRpb25FcnJvciBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGlj
dGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290
ICJ1bmRlZmluZWQiCi1GQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5n
LmZlYyBmaWVsZCBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yIGFz
c2VydF9lcXVhbHM6IEV4cGVjdCBkaWN0aW9uYXJ5LnJ0Y3AgdG8gYmUgcGxhaW4gb2JqZWN0IGV4
cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgc2VuZGVyLnNldFBhcmFt
ZXRlcnMoKSB3aXRoIGVuY29kaW5ncyB1bnNldCBzaG91bGQgcmVqZWN0IHdpdGggVHlwZUVycm9y
IGFzc2VydF9lcXVhbHM6IEV4cGVjdCBkaWN0aW9uYXJ5LnJ0Y3AgdG8gYmUgcGxhaW4gb2JqZWN0
IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKIEZBSUwgc2V0UGFyYW1ldGVy
cygpIHdpdGggbW9kaWZpZWQgZW5jb2RpbmcucmlkIGZpZWxkIHNob3VsZCByZWplY3Qgd2l0aCBJ
bnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnku
cnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZp
bmVkIgogRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0aCBlbmNvZGluZy5zY2FsZVJlc29sdXRpb25E
b3duQnkgZmllbGQgc2V0IHRvIGxlc3MgdGhhbiAxLjAgc2hvdWxkIHJlamVjdCB3aXRoIFJhbmdl
RXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBv
YmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgogRkFJTCBzZXRQYXJh
bWV0ZXJzKCkgd2l0aCBlbmNvZGluZy5zY2FsZVJlc29sdXRpb25Eb3duQnkgZmllbGQgc2V0IHRv
IGdyZWF0ZXIgdGhhbiAxLjAgc2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRp
Y3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdv
dCAidW5kZWZpbmVkIgotRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0aCBtb2RpZmllZCBlbmNvZGlu
Zy5kdHggc2hvdWxkIHN1Y2NlZWQgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRj
cCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVk
IgotRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0aCB1bnNldCBlbmNvZGluZy5kdHggc2hvdWxkIHN1
Y2NlZWQgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBv
YmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgotRkFJTCBzZXRQYXJh
bWV0ZXJzKCkgd2l0aCBtb2RpZmllZCBlbmNvZGluZy5hY3RpdmUgc2hvdWxkIHN1Y2NlZWQgYXNz
ZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhw
ZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgotRkFJTCBzZXRQYXJhbWV0ZXJzKCkg
d2l0aCBtb2RpZmllZCBlbmNvZGluZy5wcmlvcml0eSBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1
YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAi
b2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCi1GQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1v
ZGlmaWVkIGVuY29kaW5nLnB0aW1lIHNob3VsZCBzdWNjZWVkIGFzc2VydF9lcXVhbHM6IEV4cGVj
dCBkaWN0aW9uYXJ5LnJ0Y3AgdG8gYmUgcGxhaW4gb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1
dCBnb3QgInVuZGVmaW5lZCIKLUZBSUwgc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQgZW5j
b2RpbmcubWF4Qml0cmF0ZSBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGlj
dGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290
ICJ1bmRlZmluZWQiCi1GQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5n
Lm1heEZyYW1lcmF0ZSBzaG91bGQgc3VjY2VlZCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlv
bmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1
bmRlZmluZWQiCitGQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5nLmR0
eCBzaG91bGQgc3VjY2VlZCB3aXRoIFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBhc3NlcnRfZXF1YWxz
OiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2Jq
ZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlm
aWVkIGVuY29kaW5nLmR0eCBzaG91bGQgc3VjY2VlZCB3aXRob3V0IFJUQ1J0cFRyYW5zY2VpdmVy
SW5pdCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9i
amVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIHNldFBhcmFt
ZXRlcnMoKSB3aXRoIHVuc2V0IGVuY29kaW5nLmR0eCBzaG91bGQgc3VjY2VlZCB3aXRoIFJUQ1J0
cFRyYW5zY2VpdmVySW5pdCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRv
IGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitG
QUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIHVuc2V0IGVuY29kaW5nLmR0eCBzaG91bGQgc3VjY2Vl
ZCB3aXRob3V0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGlj
dGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290
ICJ1bmRlZmluZWQiCitGQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5n
LmFjdGl2ZSBzaG91bGQgc3VjY2VlZCB3aXRoIFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBhc3NlcnRf
ZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVjdCBleHBlY3Rl
ZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIHNldFBhcmFtZXRlcnMoKSB3aXRo
IG1vZGlmaWVkIGVuY29kaW5nLmFjdGl2ZSBzaG91bGQgc3VjY2VlZCB3aXRob3V0IFJUQ1J0cFRy
YW5zY2VpdmVySW5pdCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJl
IHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlM
IHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5nLnByaW9yaXR5IHNob3VsZCBz
dWNjZWVkIHdpdGggUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGFzc2VydF9lcXVhbHM6IEV4cGVjdCBk
aWN0aW9uYXJ5LnJ0Y3AgdG8gYmUgcGxhaW4gb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBn
b3QgInVuZGVmaW5lZCIKK0ZBSUwgc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQgZW5jb2Rp
bmcucHJpb3JpdHkgc2hvdWxkIHN1Y2NlZWQgd2l0aG91dCBSVENSdHBUcmFuc2NlaXZlckluaXQg
YXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3Qg
ZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBzZXRQYXJhbWV0ZXJz
KCkgd2l0aCBtb2RpZmllZCBlbmNvZGluZy5wdGltZSBzaG91bGQgc3VjY2VlZCB3aXRoIFJUQ1J0
cFRyYW5zY2VpdmVySW5pdCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRv
IGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitG
QUlMIHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5nLnB0aW1lIHNob3VsZCBz
dWNjZWVkIHdpdGhvdXQgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGFzc2VydF9lcXVhbHM6IEV4cGVj
dCBkaWN0aW9uYXJ5LnJ0Y3AgdG8gYmUgcGxhaW4gb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1
dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQgZW5j
b2RpbmcubWF4Qml0cmF0ZSBzaG91bGQgc3VjY2VlZCB3aXRoIFJUQ1J0cFRyYW5zY2VpdmVySW5p
dCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWluIG9iamVj
dCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIHNldFBhcmFtZXRl
cnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5nLm1heEJpdHJhdGUgc2hvdWxkIHN1Y2NlZWQgd2l0
aG91dCBSVENSdHBUcmFuc2NlaXZlckluaXQgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25h
cnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5k
ZWZpbmVkIgorRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0aCBtb2RpZmllZCBlbmNvZGluZy5tYXhG
cmFtZXJhdGUgc2hvdWxkIHN1Y2NlZWQgd2l0aCBSVENSdHBUcmFuc2NlaXZlckluaXQgYXNzZXJ0
X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0
ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBzZXRQYXJhbWV0ZXJzKCkgd2l0
aCBtb2RpZmllZCBlbmNvZGluZy5tYXhGcmFtZXJhdGUgc2hvdWxkIHN1Y2NlZWQgd2l0aG91dCBS
VENSdHBUcmFuc2NlaXZlckluaXQgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRj
cCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVk
IgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWVuY29kaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1l
bmNvZGluZ3MuaHRtbAppbmRleCA1YTk2MzBlMTUzMmQzYzQ3NmIyYmZkYTNlZTc4ODA2MmFkODJh
NWI2Li5iNDQ2ZGRlMjMwZWZiYmRiMTk3YzdmMjRmMTZlMjQ5MDI3MTU2M2M0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENS
dHBQYXJhbWV0ZXJzLWVuY29kaW5ncy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtZW5jb2RpbmdzLmh0
bWwKQEAgLTEyLDYgKzEyLDcgQEAKICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1w
Yy9hcmNoaXZlcy8yMDE3MDYwNS93ZWJydGMuaHRtbAogCiAgIC8vIFRoZSBmb2xsb3dpbmcgaGVs
cGVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gUlRDUnRwUGFyYW1ldGVycy1oZWxwZXIuanM6
CisgIC8vICAgZG9PZmZlckFuc3dlckV4Y2hhbmdlCiAgIC8vICAgdmFsaWRhdGVTZW5kZXJSdHBQ
YXJhbWV0ZXJzCiAKICAgLyoKQEAgLTQ0LDE1ICs0NSw2IEBACiAgICAgICB9OwogCiAgICAgICBk
aWN0aW9uYXJ5IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB7Ci0gICAgICAgIFtyZWFkb25seV0K
LSAgICAgICAgdW5zaWduZWQgbG9uZyAgICAgICBzc3JjOwotCi0gICAgICAgIFtyZWFkb25seV0K
LSAgICAgICAgUlRDUnRwUnR4UGFyYW1ldGVycyBydHg7Ci0KLSAgICAgICAgW3JlYWRvbmx5XQot
ICAgICAgICBSVENSdHBGZWNQYXJhbWV0ZXJzIGZlYzsKLQogICAgICAgICBSVENEdHhTdGF0dXMg
ICAgICAgIGR0eDsKICAgICAgICAgYm9vbGVhbiAgICAgICAgICAgICBhY3RpdmU7CiAgICAgICAg
IFJUQ1ByaW9yaXR5VHlwZSAgICAgcHJpb3JpdHk7CkBAIC02NiwxNiArNTgsNiBAQAogICAgICAg
ICBkb3VibGUgICAgICAgICAgICAgIHNjYWxlUmVzb2x1dGlvbkRvd25CeTsKICAgICAgIH07CiAK
LSAgICAgIGRpY3Rpb25hcnkgUlRDUnRwUnR4UGFyYW1ldGVycyB7Ci0gICAgICAgIFtyZWFkb25s
eV0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBzc3JjOwotICAgICAgfTsKLQotICAgICAgZGljdGlv
bmFyeSBSVENSdHBGZWNQYXJhbWV0ZXJzIHsKLSAgICAgICAgW3JlYWRvbmx5XQotICAgICAgICB1
bnNpZ25lZCBsb25nIHNzcmM7Ci0gICAgICB9OwotCiAgICAgICBlbnVtIFJUQ0R0eFN0YXR1cyB7
CiAgICAgICAgICJkaXNhYmxlZCIsCiAgICAgICAgICJlbmFibGVkIgpAQCAtMTE0LDkgKzk2LDEy
IEBACiAgICAgICAgICAgT3RoZXJ3aXNlLCBzZXQgaXQgdG8gYSBsaXN0IGNvbnRhaW5pbmcgYSBz
aW5nbGUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzCiAgICAgICAgICAgd2l0aCBhY3RpdmUgc2V0
IHRvIHRydWUuCiAgICAqLwotICB0ZXN0KCgpID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFk
ZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICAgIGF3YWl0IGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZSh0
LCBwYyk7CisKICAgICBjb25zdCBwYXJhbSA9IHRyYW5zY2VpdmVyLnNlbmRlci5nZXRQYXJhbWV0
ZXJzKCk7CiAgICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtKTsKICAgICBjb25z
dCB7IGVuY29kaW5ncyB9ID0gcGFyYW07CkBAIC0xMjUsOSArMTEwLDExIEBACiAgICAgYXNzZXJ0
X2VxdWFscyhlbmNvZGluZy5hY3RpdmUsIHRydWUpOwogICB9LCAnYWRkVHJhbnNjZWl2ZXIoKSB3
aXRoIHVuZGVmaW5lZCBzZW5kRW5jb2RpbmdzIHNob3VsZCBoYXZlIGRlZmF1bHQgZW5jb2Rpbmcg
cGFyYW1ldGVyIHdpdGggYWN0aXZlIHNldCB0byB0cnVlJyk7CiAKLSAgdGVzdCgoKSA9PiB7Cisg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgY29u
c3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7IHNlbmRFbmNvZGlu
Z3M6IFtdIH0pOworICAgIGF3YWl0IGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZSh0LCBwYyk7CiAKICAg
ICBjb25zdCBwYXJhbSA9IHRyYW5zY2VpdmVyLnNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CiAgICAg
dmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtKTsKQEAgLTE1MSw4ICsxMzgsOSBAQAog
ICAgIDUuMi4gIGdldFBhcmFtZXRlcnMKICAgICAgIC0gZW5jb2RpbmdzIGlzIHNldCB0byB0aGUg
dmFsdWUgb2YgdGhlIFtbc2VuZCBlbmNvZGluZ3NdXSBpbnRlcm5hbCBzbG90LgogICAgKi8KLSAg
dGVzdCgoKSA9PiB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xv
c2UoKSk7CiAgICAgY29uc3QgeyBzZW5kZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycs
IHsKICAgICAgIHNlbmRFbmNvZGluZ3M6IFt7CiAgICAgICAgIGR0eDogJ2VuYWJsZWQnLApAQCAt
MTY0LDYgKzE1Miw3IEBACiAgICAgICAgIHJpZDogJ2ZvbycKICAgICAgIH1dCiAgICAgfSk7Cisg
ICAgYXdhaXQgZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsKIAogICAgIGNvbnN0IHBhcmFt
ID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsKICAgICB2YWxpZGF0ZVNlbmRlclJ0cFBhcmFtZXRl
cnMocGFyYW0pOwpAQCAtMTkwLDkgKzE3OSwxMiBAQAogICAgICAgICAgIHdpdGggYSBuZXdseSBj
cmVhdGVkIEludmFsaWRNb2RpZmljYXRpb25FcnJvci4gTm90ZSB0aGF0IHRoaXMgYWxzbyBhcHBs
aWVzCiAgICAgICAgICAgdG8gdHJhbnNhY3Rpb25JZC4KICAgICovCi0gIHByb21pc2VfdGVzdCh0
ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsK
ICAgICBjb25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CisgICAg
YXdhaXQgZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsKKwogICAgIGNvbnN0IHBhcmFtID0g
c2VuZGVyLmdldFBhcmFtZXRlcnMoKTsKICAgICB2YWxpZGF0ZVNlbmRlclJ0cFBhcmFtZXRlcnMo
cGFyYW0pOwogCkBAIC0yMDUsOTMgKzE5NywzMCBAQAogCiAgICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKICAgICAgIHNlbmRlci5zZXRQYXJh
bWV0ZXJzKHBhcmFtKSk7Ci0KICAgfSwgYHNlbmRlci5zZXRQYXJhbWV0ZXJzKCkgd2l0aCBtaXNt
YXRjaCBudW1iZXIgb2YgZW5jb2RpbmdzIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZp
Y2F0aW9uRXJyb3JgKTsKIAotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJh
bnNjZWl2ZXIoJ2F1ZGlvJyk7Ci0gICAgY29uc3QgcGFyYW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVy
cygpOwotICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbSk7Ci0KLSAgICBwYXJh
bS5lbmNvZGluZ3MgPSB1bmRlZmluZWQ7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQs
ICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAotICAgICAgc2VuZGVyLnNldFBhcmFtZXRlcnMo
cGFyYW0pKTsKLQotICB9LCBgc2VuZGVyLnNldFBhcmFtZXRlcnMoKSB3aXRoIGVuY29kaW5ncyB1
bnNldCBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yYCk7Ci0KLSAg
cHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2NlaXZlcign
YXVkaW8nKTsKKyAgICBhd2FpdCBkb09mZmVyQW5zd2VyRXhjaGFuZ2UodCwgcGMpOwogCiAgICAg
Y29uc3QgcGFyYW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVy
UnRwUGFyYW1ldGVycyhwYXJhbSk7Ci0gICAgY29uc3QgZW5jb2RpbmcgPSBnZXRGaXJzdEVuY29k
aW5nKHBhcmFtKTsKLSAgICBjb25zdCB7IHNzcmMgfSA9IGVuY29kaW5nOwotCi0gICAgLy8gc3Ny
YyBtYXkgbm90IGJlIHNldCBzaW5jZSBpdCBpcyBvcHRpb25hbAotICAgIGlmKHNzcmMgPT09IHVu
ZGVmaW5lZCkgewotICAgICAgZW5jb2Rpbmcuc3NyYyA9IDI7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IC8vIElmIGl0IGlzIHNldCwgaW5jcmVhc2UgdGhlIG51bWJlciBieSAxIHRvIG1ha2UgaXQgZGlm
ZmVyZW50IGZyb20gb3JpZ2luYWwKLSAgICAgIGVuY29kaW5nLnNzcmMgPSBzc3JjICsgMTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9u
RXJyb3InLAotICAgICAgc2VuZGVyLnNldFBhcmFtZXRlcnMocGFyYW0pKTsKLQotICB9LCBgc2V0
UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQgZW5jb2Rpbmcuc3NyYyBmaWVsZCBzaG91bGQgcmVq
ZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yYCk7CiAKLSAgcHJvbWlzZV90ZXN0KHQg
PT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3Qg
eyBzZW5kZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOwotCi0gICAgY29uc3QgcGFy
YW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwotICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1l
dGVycyhwYXJhbSk7Ci0gICAgY29uc3QgZW5jb2RpbmcgPSBnZXRGaXJzdEVuY29kaW5nKHBhcmFt
KTsKLSAgICBjb25zdCB7IHJ0eCB9ID0gZW5jb2Rpbmc7Ci0KLSAgICBpZihydHggPT09IHVuZGVm
aW5lZCkgewotICAgICAgZW5jb2RpbmcucnR4ID0geyBzc3JjOiAyIH07Ci0gICAgfSBlbHNlIGlm
KHJ0eC5zc3JjID09PSB1bmRlZmluZWQpIHsKLSAgICAgIHJ0eC5zc3JjID0gMjsKLSAgICB9IGVs
c2UgewotICAgICAgcnR4LnNzcmMgKz0gMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAotICAgICAgc2VuZGVyLnNldFBh
cmFtZXRlcnMocGFyYW0pKTsKLQotICB9LCBgc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQg
ZW5jb2RpbmcucnR4IGZpZWxkIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9u
RXJyb3JgKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2
ZXIoJ2F1ZGlvJyk7Ci0KLSAgICBjb25zdCBwYXJhbSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7
Ci0gICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtKTsKLSAgICBjb25zdCBlbmNv
ZGluZyA9IGdldEZpcnN0RW5jb2RpbmcocGFyYW0pOwotICAgIGNvbnN0IHsgZmVjIH0gPSBlbmNv
ZGluZzsKLQotICAgIGlmKGZlYyA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICBlbmNvZGluZy5mZWMg
PSB7IHNzcmM6IDIgfTsKLSAgICB9IGVsc2UgaWYoZmVjLnNzcmMgPT09IHVuZGVmaW5lZCkgewot
ICAgICAgZmVjLnNzcmMgPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICBmZWMuc3NyYyArPSAxOwot
ICAgIH0KKyAgICBwYXJhbS5lbmNvZGluZ3MgPSB1bmRlZmluZWQ7CiAKLSAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAorICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLAogICAgICAgc2VuZGVyLnNldFBhcmFt
ZXRlcnMocGFyYW0pKTsKKyAgfSwgYHNlbmRlci5zZXRQYXJhbWV0ZXJzKCkgd2l0aCBlbmNvZGlu
Z3MgdW5zZXQgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVFcnJvcmApOwogCi0gIH0sIGBzZXRQYXJh
bWV0ZXJzKCkgd2l0aCBtb2RpZmllZCBlbmNvZGluZy5mZWMgZmllbGQgc2hvdWxkIHJlamVjdCB3
aXRoIEludmFsaWRNb2RpZmljYXRpb25FcnJvcmApOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsK
KyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBj
b25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgewogICAgICAgc2Vu
ZEVuY29kaW5nczogW3sgcmlkOiAnZm9vJyB9XSwKICAgICB9KTsKKyAgICBhd2FpdCBkb09mZmVy
QW5zd2VyRXhjaGFuZ2UodCwgcGMpOwogCiAgICAgY29uc3QgcGFyYW0gPSBzZW5kZXIuZ2V0UGFy
YW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbSk7CkBAIC0z
MDIsNyArMjMxLDYgQEAKICAgICBlbmNvZGluZy5yaWQgPSAnYmFyJzsKICAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAogICAgICAgc2VuZGVy
LnNldFBhcmFtZXRlcnMocGFyYW0pKTsKLQogICB9LCBgc2V0UGFyYW1ldGVycygpIHdpdGggbW9k
aWZpZWQgZW5jb2RpbmcucmlkIGZpZWxkIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZp
Y2F0aW9uRXJyb3JgKTsKIAogICAvKgpAQCAtMzExLDkgKzIzOSwxMSBAQAogICAgICAgICAgIHZh
bHVlIGxlc3MgdGhhbiAxLjAsIGFib3J0IHRoZXNlIHN0ZXBzIGFuZCByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGgKICAgICAgICAgICBhIG5ld2x5IGNyZWF0ZWQgUmFuZ2VFcnJvci4KICAg
ICovCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewog
ICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNj
ZWl2ZXIoJ2F1ZGlvJyk7CisgICAgYXdhaXQgZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsK
IAogICAgIGNvbnN0IHBhcmFtID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsKICAgICB2YWxpZGF0
ZVNlbmRlclJ0cFBhcmFtZXRlcnMocGFyYW0pOwpAQCAtMzIyLDEyICsyNTIsMTMgQEAKICAgICBl
bmNvZGluZy5zY2FsZVJlc29sdXRpb25Eb3duQnkgPSAwLjU7CiAgICAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCAnUmFuZ2VFcnJvcicsCiAgICAgICBzZW5kZXIuc2V0UGFyYW1ldGVycyhwYXJh
bSkpOwotCiAgIH0sIGBzZXRQYXJhbWV0ZXJzKCkgd2l0aCBlbmNvZGluZy5zY2FsZVJlc29sdXRp
b25Eb3duQnkgZmllbGQgc2V0IHRvIGxlc3MgdGhhbiAxLjAgc2hvdWxkIHJlamVjdCB3aXRoIFJh
bmdlRXJyb3JgKTsKIAotICBwcm9taXNlX3Rlc3QodCA9PiB7CisgIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAgY29uc3QgeyBzZW5kZXIgfSA9IHBj
LmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICAgIGF3YWl0IGRvT2ZmZXJBbnN3ZXJFeGNoYW5n
ZSh0LCBwYyk7CiAKICAgICBjb25zdCBwYXJhbSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CiAg
ICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtKTsKQEAgLTM0Miw1NSArMjczLDc5
IEBACiAKICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGVuY29kaW5nLnNjYWxlUmVzb2x1dGlv
bkRvd25CeSwgMS41LCAwLjAxKTsKICAgICB9KTsKLQogICB9LCBgc2V0UGFyYW1ldGVycygpIHdp
dGggZW5jb2Rpbmcuc2NhbGVSZXNvbHV0aW9uRG93bkJ5IGZpZWxkIHNldCB0byBncmVhdGVyIHRo
YW4gMS4wIHNob3VsZCBzdWNjZWVkYCk7CiAKICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHRlc3Qg
dGhhdCBtb2RpZnlpbmcgYW4gZW5jb2RpbmcgZmllbGQgc2hvdWxkIHN1Y2NlZWQKLSAgZnVuY3Rp
b24gdGVzdF9tb2RpZmllZF9lbmNvZGluZyhmaWVsZCwgdmFsdWUxLCB2YWx1ZTIsIGRlc2MpIHsK
LSAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgIGZ1bmN0aW9uIHRlc3RfbW9kaWZpZWRfZW5jb2Rp
bmcoa2luZCwgZmllbGQsIHZhbHVlMSwgdmFsdWUyLCBkZXNjKSB7CisgICAgcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4gewogICAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
LSAgICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7Cisg
ICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgICAgY29uc3QgeyBzZW5k
ZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKGtpbmQsIHsKICAgICAgICAgc2VuZEVuY29kaW5nczog
W3sKICAgICAgICAgICBbZmllbGRdOiB2YWx1ZTEKICAgICAgICAgfV0KICAgICAgIH0pOworICAg
ICAgYXdhaXQgZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsKIAotICAgICAgY29uc3QgcGFy
YW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwotICAgICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJh
bWV0ZXJzKHBhcmFtKTsKLSAgICAgIGNvbnN0IGVuY29kaW5nID0gZ2V0Rmlyc3RFbmNvZGluZyhw
YXJhbSk7CisgICAgICBjb25zdCBwYXJhbTEgPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOworICAg
ICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFtMSk7CisgICAgICBjb25zdCBlbmNv
ZGluZzEgPSBnZXRGaXJzdEVuY29kaW5nKHBhcmFtMSk7CiAKLSAgICAgIGFzc2VydF9lcXVhbHMo
ZW5jb2RpbmdbZmllbGRdLCB2YWx1ZTEpOwotICAgICAgZW5jb2RpbmdbZmllbGRdID0gdmFsdWUy
OworICAgICAgYXNzZXJ0X2VxdWFscyhlbmNvZGluZzFbZmllbGRdLCB2YWx1ZTEpOworICAgICAg
ZW5jb2RpbmcxW2ZpZWxkXSA9IHZhbHVlMjsKIAotICAgICAgcmV0dXJuIHNlbmRlci5zZXRQYXJh
bWV0ZXJzKHBhcmFtKQotICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICBjb25zdCBwYXJhbSA9
IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1l
dGVycyhwYXJhbSk7Ci0gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZ2V0Rmlyc3RFbmNvZGluZyhw
YXJhbSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5jb2RpbmdbZmllbGRdLCB2YWx1ZTIpOwot
ICAgICAgfSk7Ci0gICAgfSwgZGVzYyk7CisgICAgICBhd2FpdCBzZW5kZXIuc2V0UGFyYW1ldGVy
cyhwYXJhbTEpOworICAgICAgY29uc3QgcGFyYW0yID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsK
KyAgICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbTIpOworICAgICAgY29uc3Qg
ZW5jb2RpbmcyID0gZ2V0Rmlyc3RFbmNvZGluZyhwYXJhbTIpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhlbmNvZGluZzJbZmllbGRdLCB2YWx1ZTIpOworICAgIH0sIGRlc2MgKyAnIHdpdGggUlRDUnRw
VHJhbnNjZWl2ZXJJbml0Jyk7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAgICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFu
c2NlaXZlcihraW5kKTsKKyAgICAgIGF3YWl0IGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZSh0LCBwYyk7
CisKKyAgICAgIGNvbnN0IGluaXRQYXJhbSA9IHNlbmRlci5nZXRQYXJhbWV0ZXJzKCk7CisgICAg
ICB2YWxpZGF0ZVNlbmRlclJ0cFBhcmFtZXRlcnMoaW5pdFBhcmFtKTsKKyAgICAgIGluaXRQYXJh
bS5lbmNvZGluZ3NbMF1bZmllbGRdID0gdmFsdWUxOworICAgICAgYXdhaXQgc2VuZGVyLnNldFBh
cmFtZXRlcnMoaW5pdFBhcmFtKTsKKworICAgICAgY29uc3QgcGFyYW0xID0gc2VuZGVyLmdldFBh
cmFtZXRlcnMoKTsKKyAgICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbTEpOwor
ICAgICAgY29uc3QgZW5jb2RpbmcxID0gZ2V0Rmlyc3RFbmNvZGluZyhwYXJhbTEpOworCisgICAg
ICBhc3NlcnRfZXF1YWxzKGVuY29kaW5nMVtmaWVsZF0sIHZhbHVlMSk7CisgICAgICBlbmNvZGlu
ZzFbZmllbGRdID0gdmFsdWUyOworCisgICAgICBhd2FpdCBzZW5kZXIuc2V0UGFyYW1ldGVycyhw
YXJhbTEpOworICAgICAgY29uc3QgcGFyYW0yID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsKKyAg
ICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbTIpOworICAgICAgY29uc3QgZW5j
b2RpbmcyID0gZ2V0Rmlyc3RFbmNvZGluZyhwYXJhbTIpOworICAgICAgYXNzZXJ0X2VxdWFscyhl
bmNvZGluZzJbZmllbGRdLCB2YWx1ZTIpOworICAgIH0sIGRlc2MgKyAnIHdpdGhvdXQgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0Jyk7CiAgIH0KIAotICB0ZXN0X21vZGlmaWVkX2VuY29kaW5nKCdkdHgn
LCAnZW5hYmxlZCcsICdkaXNhYmxlZCcsCisgIHRlc3RfbW9kaWZpZWRfZW5jb2RpbmcoJ2F1ZGlv
JywgJ2R0eCcsICdlbmFibGVkJywgJ2Rpc2FibGVkJywKICAgICAnc2V0UGFyYW1ldGVycygpIHdp
dGggbW9kaWZpZWQgZW5jb2RpbmcuZHR4IHNob3VsZCBzdWNjZWVkJyk7CiAKLSAgdGVzdF9tb2Rp
ZmllZF9lbmNvZGluZygnZHR4JywgJ2VuYWJsZWQnLCB1bmRlZmluZWQsCisgIHRlc3RfbW9kaWZp
ZWRfZW5jb2RpbmcoJ2F1ZGlvJywgJ2R0eCcsICdlbmFibGVkJywgdW5kZWZpbmVkLAogICAgICdz
ZXRQYXJhbWV0ZXJzKCkgd2l0aCB1bnNldCBlbmNvZGluZy5kdHggc2hvdWxkIHN1Y2NlZWQnKTsK
IAotICB0ZXN0X21vZGlmaWVkX2VuY29kaW5nKCdhY3RpdmUnLCB0cnVlLCBmYWxzZSwKKyAgdGVz
dF9tb2RpZmllZF9lbmNvZGluZygnYXVkaW8nLCAnYWN0aXZlJywgZmFsc2UsIHRydWUsCiAgICAg
J3NldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlmaWVkIGVuY29kaW5nLmFjdGl2ZSBzaG91bGQgc3Vj
Y2VlZCcpOwogCi0gIHRlc3RfbW9kaWZpZWRfZW5jb2RpbmcoJ3ByaW9yaXR5JywgJ3ZlcnktbG93
JywgJ2hpZ2gnLAorICB0ZXN0X21vZGlmaWVkX2VuY29kaW5nKCdhdWRpbycsICdwcmlvcml0eScs
ICd2ZXJ5LWxvdycsICdoaWdoJywKICAgICAnc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQg
ZW5jb2RpbmcucHJpb3JpdHkgc2hvdWxkIHN1Y2NlZWQnKTsKIAotICB0ZXN0X21vZGlmaWVkX2Vu
Y29kaW5nKCdwdGltZScsIDIsIDQsCisgIHRlc3RfbW9kaWZpZWRfZW5jb2RpbmcoJ2F1ZGlvJywg
J3B0aW1lJywgMiwgNCwKICAgICAnc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQgZW5jb2Rp
bmcucHRpbWUgc2hvdWxkIHN1Y2NlZWQnKTsKIAotICB0ZXN0X21vZGlmaWVkX2VuY29kaW5nKCdt
YXhCaXRyYXRlJywgMiwgNCwKKyAgdGVzdF9tb2RpZmllZF9lbmNvZGluZygnYXVkaW8nLCAnbWF4
Qml0cmF0ZScsIDEwMDAwLCAyMDAwMCwKICAgICAnc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZp
ZWQgZW5jb2RpbmcubWF4Qml0cmF0ZSBzaG91bGQgc3VjY2VlZCcpOwogCi0gIHRlc3RfbW9kaWZp
ZWRfZW5jb2RpbmcoJ21heEJpdHJhdGUnLCAyNCwgMTYsCisgIHRlc3RfbW9kaWZpZWRfZW5jb2Rp
bmcoJ3ZpZGVvJywgJ21heEZyYW1lcmF0ZScsIDI0LCAxNiwKICAgICAnc2V0UGFyYW1ldGVycygp
IHdpdGggbW9kaWZpZWQgZW5jb2RpbmcubWF4RnJhbWVyYXRlIHNob3VsZCBzdWNjZWVkJyk7CiAK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1oZWFkZXJFeHRlbnNpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENS
dHBQYXJhbWV0ZXJzLWhlYWRlckV4dGVuc2lvbnMuaHRtbAppbmRleCBlZDZiMWU2ODJhN2I5ZjNm
Y2E4NjZmZjhiN2MzYjZiMzFkMzhjMThmLi41Y2VjMDU5ZWI3ZmNiMDhjOTRjOWVkZjQ1OWMxOTE2
MTQwMDQwNzE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWhlYWRlckV4dGVuc2lvbnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENSdHBQYXJhbWV0ZXJzLWhlYWRlckV4dGVuc2lvbnMuaHRtbApAQCAtNTcsNiArNTcsNyBAQAog
ICAgKi8KICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBj
b25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CiAgICAgY29uc3Qg
cGFyYW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFy
YW1ldGVycyhwYXJhbSk7CkBAIC02OSw3ICs3MCw2IEBACiAKICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAogICAgICAgc2VuZGVyLnNldFBh
cmFtZXRlcnMocGFyYW0pKTsKLQogICB9LCBgc2V0UGFyYW1ldGVycygpIHdpdGggbW9kaWZpZWQg
aGVhZGVyRXh0ZW5zaW9ucyBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlvbkVy
cm9yYCk7CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1oZWxwZXIuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQ
YXJhbWV0ZXJzLWhlbHBlci5qcwppbmRleCBhNDZmMTViMjkxZGI0N2E0NTlhZDM2MzFjZDczNzgx
NDY5ZjM5OWRiLi5jNDEwNWRlY2RmY2IxMjI4NmQ0YjE1M2FiMDdmN2JlMjViYWYxYWFkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENSdHBQYXJhbWV0ZXJzLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJhbWV0ZXJzLWhlbHBlci5qcwpA
QCAtOCw2ICs4LDE5IEBACiAvLyBUaGlzIGZpbGUgZGVwZW5kcyBvbiBkaWN0aW9uYXJ5LWhlbHBl
ci5qcyB3aGljaCBzaG91bGQKIC8vIGJlIGxvYWRlZCBmcm9tIHRoZSBtYWluIEhUTUwgZmlsZS4K
IAorLy8gQW4gb2ZmZXIvYW5zd2VyIGV4Y2hhbmdlIGlzIG5lY2Vzc2FyeSBmb3IgZ2V0UGFyYW1l
dGVycygpIHRvIGhhdmUgYW55CisvLyBuZWdvdGlhdGVkIHBhcmFtZXRlcnMgdG8gcmV0dXJuLgor
YXN5bmMgZnVuY3Rpb24gZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIGNhbGxlcikgeworICBjb25z
dCBjYWxsZWUgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9
PiBjYWxsZWUuY2xvc2UoKSk7CisgIGNvbnN0IG9mZmVyID0gYXdhaXQgY2FsbGVyLmNyZWF0ZU9m
ZmVyKCk7CisgIGF3YWl0IGNhbGxlci5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgYXdh
aXQgY2FsbGVlLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTsKKyAgY29uc3QgYW5zd2VyID0g
YXdhaXQgY2FsbGVlLmNyZWF0ZUFuc3dlcigpOworICBhd2FpdCBjYWxsZWUuc2V0TG9jYWxEZXNj
cmlwdGlvbihhbnN3ZXIpOworICBhd2FpdCBjYWxsZXIuc2V0UmVtb3RlRGVzY3JpcHRpb24oYW5z
d2VyKTsKK30KKwogLyoKICAgVmFsaWRhdGVzIHRoZSBSVENSdHBQYXJhbWV0ZXJzIHJldHVybmVk
IGZyb20gUlRDUnRwU2VuZGVyLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzCiAKQEAgLTU2LDExICs2
OSw2IEBAIGZ1bmN0aW9uIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbSkgewogICAg
ICAgV2hlbiBnZXRQYXJhbWV0ZXJzIGlzIGNhbGxlZCwgdGhlIFJUQ1J0cFBhcmFtZXRlcnMgZGlj
dGlvbmFyeSBpcyBjb25zdHJ1Y3RlZAogICAgICAgYXMgZm9sbG93czoKIAotICAgICAgLSBlbmNv
ZGluZ3MgaXMgcG9wdWxhdGVkIGJhc2VkIG9uIFNTUkNzIGFuZCBSSURzIHByZXNlbnQgaW4gdGhl
IGN1cnJlbnQgcmVtb3RlCi0gICAgICAgIGRlc2NyaXB0aW9uLCBpbmNsdWRpbmcgU1NSQ3MgdXNl
ZCBmb3IgUlRYIGFuZCBGRUMsIGlmIHNpZ25hbGVkLiBFdmVyeSBtZW1iZXIKLSAgICAgICAgb2Yg
dGhlIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyBkaWN0aW9uYXJpZXMgb3RoZXIgdGhhbiB0aGUg
U1NSQyBhbmQgUklEIGZpZWxkcwotICAgICAgICBpcyBsZWZ0IHVuZGVmaW5lZC4KLQogICAgICAg
LSBUaGUgaGVhZGVyRXh0ZW5zaW9ucyBzZXF1ZW5jZSBpcyBwb3B1bGF0ZWQgYmFzZWQgb24gdGhl
IGhlYWRlciBleHRlbnNpb25zIHRoYXQKICAgICAgICAgdGhlIHJlY2VpdmVyIGlzIGN1cnJlbnRs
eSBwcmVwYXJlZCB0byByZWNlaXZlLgogCkBAIC0xMzEsMTUgKzEzOSw2IEBAIGZ1bmN0aW9uIHZh
bGlkYXRlUnRwUGFyYW1ldGVycyhwYXJhbSkgewogCiAvKgogICBkaWN0aW9uYXJ5IFJUQ1J0cEVu
Y29kaW5nUGFyYW1ldGVycyB7Ci0gICAgW3JlYWRvbmx5XQotICAgIHVuc2lnbmVkIGxvbmcgICAg
ICAgc3NyYzsKLQotICAgIFtyZWFkb25seV0KLSAgICBSVENSdHBSdHhQYXJhbWV0ZXJzIHJ0eDsK
LQotICAgIFtyZWFkb25seV0KLSAgICBSVENSdHBGZWNQYXJhbWV0ZXJzIGZlYzsKLQogICAgIFJU
Q0R0eFN0YXR1cyAgICAgICAgZHR4OwogICAgIGJvb2xlYW4gICAgICAgICAgICAgYWN0aXZlOwog
ICAgIFJUQ1ByaW9yaXR5VHlwZSAgICAgcHJpb3JpdHk7CkBAIC0xNTMsMTYgKzE1Miw2IEBAIGZ1
bmN0aW9uIHZhbGlkYXRlUnRwUGFyYW1ldGVycyhwYXJhbSkgewogICAgIGRvdWJsZSAgICAgICAg
ICAgICAgc2NhbGVSZXNvbHV0aW9uRG93bkJ5OwogICB9OwogCi0gIGRpY3Rpb25hcnkgUlRDUnRw
UnR4UGFyYW1ldGVycyB7Ci0gICAgW3JlYWRvbmx5XQotICAgIHVuc2lnbmVkIGxvbmcgc3NyYzsK
LSAgfTsKLQotICBkaWN0aW9uYXJ5IFJUQ1J0cEZlY1BhcmFtZXRlcnMgewotICAgIFtyZWFkb25s
eV0KLSAgICB1bnNpZ25lZCBsb25nIHNzcmM7Ci0gIH07Ci0KICAgZW51bSBSVENEdHhTdGF0dXMg
ewogICAgICJkaXNhYmxlZCIsCiAgICAgImVuYWJsZWQiCkBAIC0xNzYsMTggKzE2NSw2IEBAIGZ1
bmN0aW9uIHZhbGlkYXRlUnRwUGFyYW1ldGVycyhwYXJhbSkgewogICB9OwogICovCiBmdW5jdGlv
biB2YWxpZGF0ZUVuY29kaW5nUGFyYW1ldGVycyhlbmNvZGluZykgewotICBhc3NlcnRfb3B0aW9u
YWxfdW5zaWduZWRfaW50X2ZpZWxkKGVuY29kaW5nLCAnc3NyYycpOwotCi0gIGFzc2VydF9vcHRp
b25hbF9kaWN0X2ZpZWxkKGVuY29kaW5nLCAncnR4Jyk7Ci0gIGlmKGVuY29kaW5nLnJ0eCkgewot
ICAgIGFzc2VydF91bnNpZ25lZF9pbnRfZmllbGQoZW5jb2RpbmcucnR4LCAnc3NyYycpOwotICB9
Ci0KLSAgYXNzZXJ0X29wdGlvbmFsX2RpY3RfZmllbGQoZW5jb2RpbmcsICdmZWMnKTsKLSAgaWYo
ZW5jb2RpbmcuZmVjKSB7Ci0gICAgYXNzZXJ0X3Vuc2lnbmVkX2ludF9maWVsZChlbmNvZGluZy5m
ZWMsICdzc3JjJyk7Ci0gIH0KLQogICBhc3NlcnRfb3B0aW9uYWxfZW51bV9maWVsZChlbmNvZGlu
ZywgJ2R0eCcsCiAgICAgWydkaXNhYmxlZCcsICdlbmFibGVkJ10pOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQ
YXJhbWV0ZXJzLXJ0Y3AuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtcnRjcC5odG1sCmluZGV4IDk0ZDVhZmRi
MTgwZWJiYmIzOTc0M2U5MDI0NGFlZDEwNTliMzE1NzkuLmM0MGVkZjI1Njk4ODQyY2I4ZTdhMDI2
YjE1NjNkZDVjNjAyZjY2ODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtcnRjcC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0
cFBhcmFtZXRlcnMtcnRjcC5odG1sCkBAIC01Niw2ICs1Niw3IEBACiAgICAqLwogICBwcm9taXNl
X3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAg
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHsgc2VuZGVyIH0g
PSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKIAogICAgIGNvbnN0IHBhcmFtID0gc2VuZGVy
LmdldFBhcmFtZXRlcnMoKTsKQEAgLTc1LDExICs3NiwxMSBAQAogCiAgICAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCAnSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yJywKICAgICAgIHNlbmRlci5z
ZXRQYXJhbWV0ZXJzKHBhcmFtKSk7Ci0KICAgfSwgYHNldFBhcmFtZXRlcnMoKSB3aXRoIG1vZGlm
aWVkIHJ0Y3AuY25hbWUgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRNb2RpZmljYXRpb25FcnJv
cmApOwogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAg
Y29uc3QgeyBzZW5kZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOwogCiAgICAgY29u
c3QgcGFyYW0gPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwpAQCAtOTksNyArMTAwLDYgQEAKIAog
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcics
CiAgICAgICBzZW5kZXIuc2V0UGFyYW1ldGVycyhwYXJhbSkpOwotCiAgIH0sIGBzZXRQYXJhbWV0
ZXJzKCkgd2l0aCBtb2RpZmllZCBydGNwLnJlZHVjZWRTaXplIHNob3VsZCByZWplY3Qgd2l0aCBJ
bnZhbGlkTW9kaWZpY2F0aW9uRXJyb3JgKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQYXJh
bWV0ZXJzLXRyYW5zYWN0aW9uSWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy10cmFuc2FjdGlv
bklkLWV4cGVjdGVkLnR4dAppbmRleCBiMTVjMWEwZWE5ZDc2NjgxOWYxM2Q1ZGM2YTZjY2UyMTU0
MjEzM2I2Li41ZmFkZTMzNTM4YjI4M2M0NmU1OGRkZmMyZGE4ZGI3ZTZjMDU3ZTZkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9S
VENSdHBQYXJhbWV0ZXJzLXRyYW5zYWN0aW9uSWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRl
cnMtdHJhbnNhY3Rpb25JZC1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIEZBSUwgc2Vu
ZGVyLmdldFBhcmFtZXRlcnMoKSBzaG91bGQgcmV0dXJuIGRpZmZlcmVudCB0cmFuc2FjdGlvbiBJ
RHMgZm9yIGVhY2ggY2FsbCBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRv
IGJlIHBsYWluIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCiBG
QUlMIHNlbmRlci5zZXRQYXJhbWV0ZXJzKCkgd2l0aCB0cmFuc2FjdGlvbiBJRCBkaWZmZXJlbnQg
ZnJvbSBsYXN0IGdldFBhcmFtZXRlcnMoKSBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlm
aWNhdGlvbkVycm9yIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBkaWN0aW9uYXJ5LnJ0Y3AgdG8gYmUg
cGxhaW4gb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKLUZBSUwg
c2VuZGVyLnNldFBhcmFtZXRlcnMoKSB3aXRoIHRyYW5zYWN0aW9uIElEIHVuc2V0IHNob3VsZCBy
ZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0
IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0
IGdvdCAidW5kZWZpbmVkIgotRkFJTCBzZXRQYXJhbWV0ZXJzKCkgdHdpY2Ugd2l0aCB0aGUgc2Ft
ZSBwYXJhbWV0ZXJzIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ig
YXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmplY3Qg
ZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBzZW5kZXIuc2V0UGFy
YW1ldGVycygpIHdpdGggdHJhbnNhY3Rpb24gSUQgdW5zZXQgc2hvdWxkIHJlamVjdCB3aXRoIFR5
cGVFcnJvciBhc3NlcnRfZXF1YWxzOiBFeHBlY3QgZGljdGlvbmFyeS5ydGNwIHRvIGJlIHBsYWlu
IG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIHNldFBh
cmFtZXRlcnMoKSB0d2ljZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgc2hvdWxkIHJlamVjdCB3
aXRoIEludmFsaWRTdGF0ZUVycm9yIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBkaWN0aW9uYXJ5LnJ0
Y3AgdG8gYmUgcGxhaW4gb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5l
ZCIKIEZBSUwgc2V0UGFyYW1ldGVycygpIHdpdGggcGFyYW1ldGVycyBvbGRlciB0aGFuIGxhc3Qg
Z2V0UGFyYW1ldGVycygpIHNob3VsZCByZWplY3Qgd2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJy
b3IgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkucnRjcCB0byBiZSBwbGFpbiBvYmpl
Y3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBQ
YXJhbWV0ZXJzLXRyYW5zYWN0aW9uSWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtdHJhbnNhY3Rpb25JZC5o
dG1sCmluZGV4IDE4NGNkYjVhNzE1ZWVkZTkxNzZlNTZhMDY3MDhkZTYyYmI4N2Y1OTMuLjQ3MmIw
NDM5YjVjYzc3ZDU1M2I0ODAwMGY2YTdkZTNkZGE5MGI3ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRl
cnMtdHJhbnNhY3Rpb25JZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFBhcmFtZXRlcnMtdHJhbnNhY3Rpb25JZC5odG1s
CkBAIC0xMiw2ICsxMiw3IEBACiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMv
YXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0bWwKIAogICAvLyBUaGUgZm9sbG93aW5nIGhlbHBl
ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1J0cFBhcmFtZXRlcnMtaGVscGVyLmpzOgor
ICAvLyAgIGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZQogICAvLyAgIHZhbGlkYXRlU2VuZGVyUnRwUGFy
YW1ldGVycwogCiAgIC8qCkBAIC02MCw5ICs2MSwxMCBAQAogICAgICAgLSB0cmFuc2FjdGlvbklk
IGlzIHNldCB0byBhIG5ldyB1bmlxdWUgaWRlbnRpZmllciwgdXNlZCB0byBtYXRjaCB0aGlzCiAg
ICAgICAgIGdldFBhcmFtZXRlcnMgY2FsbCB0byBhIHNldFBhcmFtZXRlcnMgY2FsbCB0aGF0IG1h
eSBvY2N1ciBsYXRlci4KICAgICovCi0gIHRlc3QoKCkgPT4geworICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKICAgICBj
b25zdCB7IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CisgICAgYXdhaXQg
ZG9PZmZlckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsKIAogICAgIGNvbnN0IHBhcmFtMSA9IHNlbmRl
ci5nZXRQYXJhbWV0ZXJzKCk7CiAgICAgY29uc3QgcGFyYW0yID0gc2VuZGVyLmdldFBhcmFtZXRl
cnMoKTsKQEAgLTgzLDkgKzg1LDExIEBACiAgICAgICAgICAgd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLiBOb3RlIHRoYXQgdGhpcyBhbHNvIGFwcGxpZXMKICAg
ICAgICAgICB0byB0cmFuc2FjdGlvbklkLgogICAgKi8KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNv
bnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTsKKyAgICBhd2FpdCBk
b09mZmVyQW5zd2VyRXhjaGFuZ2UodCwgcGMpOwogCiAgICAgY29uc3QgcGFyYW0gPSBzZW5kZXIu
Z2V0UGFyYW1ldGVycygpOwogICAgIHZhbGlkYXRlU2VuZGVyUnRwUGFyYW1ldGVycyhwYXJhbSk7
CkBAIC05NSw0MCArOTksNDMgQEAKIAogICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgJ0lu
dmFsaWRNb2RpZmljYXRpb25FcnJvcicsCiAgICAgICBzZW5kZXIuc2V0UGFyYW1ldGVycyhwYXJh
bSkpOwotCiAgIH0sIGBzZW5kZXIuc2V0UGFyYW1ldGVycygpIHdpdGggdHJhbnNhY3Rpb24gSUQg
ZGlmZmVyZW50IGZyb20gbGFzdCBnZXRQYXJhbWV0ZXJzKCkgc2hvdWxkIHJlamVjdCB3aXRoIElu
dmFsaWRNb2RpZmljYXRpb25FcnJvcmApOwogCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBjb25zdCB7
IHNlbmRlciB9ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CisgICAgYXdhaXQgZG9PZmZl
ckFuc3dlckV4Y2hhbmdlKHQsIHBjKTsKIAogICAgIGNvbnN0IHBhcmFtID0gc2VuZGVyLmdldFBh
cmFtZXRlcnMoKTsKICAgICB2YWxpZGF0ZVNlbmRlclJ0cFBhcmFtZXRlcnMocGFyYW0pOwogCiAg
ICAgcGFyYW0udHJhbnNhY3Rpb25JZCA9IHVuZGVmaW5lZDsKIAotICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgJ0ludmFsaWRNb2RpZmljYXRpb25FcnJvcicsCisgICAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksCiAgICAgICBzZW5kZXIuc2V0UGFyYW1ldGVy
cyhwYXJhbSkpOworICB9LCBgc2VuZGVyLnNldFBhcmFtZXRlcnMoKSB3aXRoIHRyYW5zYWN0aW9u
IElEIHVuc2V0IHNob3VsZCByZWplY3Qgd2l0aCBUeXBlRXJyb3JgKTsKIAotICB9LCBgc2VuZGVy
LnNldFBhcmFtZXRlcnMoKSB3aXRoIHRyYW5zYWN0aW9uIElEIHVuc2V0IHNob3VsZCByZWplY3Qg
d2l0aCBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3JgKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7
CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CiAgICAg
Y29uc3QgeyBzZW5kZXIgfSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICAgIGF3YWl0
IGRvT2ZmZXJBbnN3ZXJFeGNoYW5nZSh0LCBwYyk7CiAKICAgICBjb25zdCBwYXJhbSA9IHNlbmRl
ci5nZXRQYXJhbWV0ZXJzKCk7CiAgICAgdmFsaWRhdGVTZW5kZXJSdHBQYXJhbWV0ZXJzKHBhcmFt
KTsKIAogICAgIHJldHVybiBzZW5kZXIuc2V0UGFyYW1ldGVycyhwYXJhbSkKICAgICAudGhlbigo
KSA9PgotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3In
LAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAg
IHNlbmRlci5zZXRQYXJhbWV0ZXJzKHBhcmFtKSkpOworICB9LCBgc2V0UGFyYW1ldGVycygpIHR3
aWNlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZFN0
YXRlRXJyb3JgKTsKIAotICB9LCBgc2V0UGFyYW1ldGVycygpIHR3aWNlIHdpdGggdGhlIHNhbWUg
cGFyYW1ldGVycyBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yYCk7
Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
ICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHsgc2VuZGVyIH0gPSBwYy5hZGRUcmFuc2Nl
aXZlcignYXVkaW8nKTsKKyAgICBhd2FpdCBkb09mZmVyQW5zd2VyRXhjaGFuZ2UodCwgcGMpOwog
CiAgICAgY29uc3QgcGFyYW0xID0gc2VuZGVyLmdldFBhcmFtZXRlcnMoKTsKICAgICBjb25zdCBw
YXJhbTIgPSBzZW5kZXIuZ2V0UGFyYW1ldGVycygpOwpAQCAtMTQwLDcgKzE0Nyw2IEBACiAKICAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3InLAog
ICAgICAgc2VuZGVyLnNldFBhcmFtZXRlcnMocGFyYW0xKSk7Ci0KICAgfSwgYHNldFBhcmFtZXRl
cnMoKSB3aXRoIHBhcmFtZXRlcnMgb2xkZXIgdGhhbiBsYXN0IGdldFBhcmFtZXRlcnMoKSBzaG91
bGQgcmVqZWN0IHdpdGggSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yYCk7CiAKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0Q2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2Vp
dmVyLWdldENhcGFiaWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggMGU1NzJhODUyMTk1NmZkY2Uz
MzBhNjRkZDA0MTY3NWNjZDlmZTM3NC4uYWI5MzE3YTg1ZGY1ZWUxMmVjZWNjYzJiYzUyYjljZmQ5
MjRjZGI4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0Q2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9SVENSdHBSZWNlaXZlci1nZXRDYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NSBAQAogCiBGQUlMIFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoJ2F1ZGlvJykgc2hvdWxk
IHJldHVybiBSVENSdHBDYXBhYmlsaXRpZXMgZGljdGlvbmFyeSBSVENSdHBSZWNlaXZlci5nZXRD
YXBhYmlsaXRpZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnUlRDUnRwUmVjZWl2ZXIuZ2V0Q2Fw
YWJpbGl0aWVzKCdhdWRpbycpJywgJ1JUQ1J0cFJlY2VpdmVyLmdldENhcGFiaWxpdGllcycgaXMg
dW5kZWZpbmVkKQogRkFJTCBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRlbycpIHNo
b3VsZCByZXR1cm4gUlRDUnRwQ2FwYWJpbGl0aWVzIGRpY3Rpb25hcnkgUlRDUnRwUmVjZWl2ZXIu
Z2V0Q2FwYWJpbGl0aWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ1JUQ1J0cFJlY2VpdmVyLmdl
dENhcGFiaWxpdGllcygndmlkZW8nKScsICdSVENSdHBSZWNlaXZlci5nZXRDYXBhYmlsaXRpZXMn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgUlRDUnRwU2VuZGVyLmdldENhcGFiaWxpdGllcygnZHVtbXkn
KSBzaG91bGQgcmV0dXJuIG51bGwgUlRDUnRwUmVjZWl2ZXIuZ2V0Q2FwYWJpbGl0aWVzIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ1JUQ1J0cFJlY2VpdmVyLmdldENhcGFiaWxpdGllcygnZHVtbXkn
KScsICdSVENSdHBSZWNlaXZlci5nZXRDYXBhYmlsaXRpZXMnIGlzIHVuZGVmaW5lZCkKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUnRwUmVjZWl2ZXItZ2V0Q2FwYWJpbGl0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRDYXBh
YmlsaXRpZXMuaHRtbAppbmRleCBmZGE3MTY5MGMyZTRmMmMwZmI1ODdlY2NmM2M1YjVkOGU5MTBm
Y2MwLi4yMWRjYWUyMDhhZmM0NTZlNGNhNTZiNjkwYTdlNzVmNDQ2NTc0NTdjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENS
dHBSZWNlaXZlci1nZXRDYXBhYmlsaXRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRDYXBhYmls
aXRpZXMuaHRtbApAQCAtMzEsNCArMzEsOSBAQAogICAgIHZhbGlkYXRlUnRwQ2FwYWJpbGl0aWVz
KGNhcGFiaWxpdGllcyk7CiAgIH0sIGBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRl
bycpIHNob3VsZCByZXR1cm4gUlRDUnRwQ2FwYWJpbGl0aWVzIGRpY3Rpb25hcnlgKTsKIAorICB0
ZXN0KCgpID0+IHsKKyAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBSVENSdHBSZWNlaXZlci5nZXRD
YXBhYmlsaXRpZXMoJ2R1bW15Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYXBhYmlsaXRpZXMsIG51
bGwpOworICB9LCBgUlRDUnRwU2VuZGVyLmdldENhcGFiaWxpdGllcygnZHVtbXknKSBzaG91bGQg
cmV0dXJuIG51bGxgKTsKKwogIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0Q29u
dHJpYnV0aW5nU291cmNlcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0Q29udHJpYnV0aW5nU291
cmNlcy5odHRwcy5odG1sCmluZGV4IGRlMWUxNDNhNmFkM2ViMDEyMDk1MDgwN2E0MThlNzFmMWU2
NDk3OGIuLjhkZGZmNWJlNDEwZDkwNGZlZjU3MmY4NGU5OGY3NjA2NjgwNzhiYjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1J0cFJlY2VpdmVyLWdldENvbnRyaWJ1dGluZ1NvdXJjZXMuaHR0cHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNl
aXZlci1nZXRDb250cmlidXRpbmdTb3VyY2VzLmh0dHBzLmh0bWwKQEAgLTM4LDEwICszOCwxMyBA
QAogICAgICAgICBwb3NzaWJseSBlbmNvZGUsIGFuZCAxMjcgcmVwcmVzZW50cyBzaWxlbmNlLgog
ICAgKi8KIAotICBwcm9taXNlX3Rlc3QoKCkgPT4geworICBwcm9taXNlX3Rlc3QodCA9PiB7CiAg
ICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKwogICAgIGNv
bnN0IG9udHJhY2tQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICBwYzIu
YWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0V2ZW50ID0+IHsKICAgICAgICAgY29uc3Qg
eyByZWNlaXZlciB9ID0gdHJhY2tFdmVudDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFBhcmFt
ZXRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFBhcmFtZXRlcnMuaHRtbAppbmRleCA4YjZkNjQ4YmY2
MTZjODQ3ZDlkODMwMGEwOWY4YWIwNzhhYzAyNmNlLi45N2U1ZDEwZDFlNTNiMThkM2M5ZGVjYTk2
OWQyMDQ2ODgxNDE4NTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRQYXJhbWV0ZXJzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUnRwUmVjZWl2ZXItZ2V0UGFyYW1ldGVycy5odG1sCkBAIC0yMiwxMSArMjIsNiBAQAogICAg
ICAgICBXaGVuIGdldFBhcmFtZXRlcnMgaXMgY2FsbGVkLCB0aGUgUlRDUnRwUGFyYW1ldGVycyBk
aWN0aW9uYXJ5IGlzIGNvbnN0cnVjdGVkCiAgICAgICAgIGFzIGZvbGxvd3M6CiAKLSAgICAgICAg
LSBlbmNvZGluZ3MgaXMgcG9wdWxhdGVkIGJhc2VkIG9uIFNTUkNzIGFuZCBSSURzIHByZXNlbnQg
aW4gdGhlIGN1cnJlbnQgcmVtb3RlCi0gICAgICAgICAgZGVzY3JpcHRpb24sIGluY2x1ZGluZyBT
U1JDcyB1c2VkIGZvciBSVFggYW5kIEZFQywgaWYgc2lnbmFsZWQuIEV2ZXJ5IG1lbWJlcgotICAg
ICAgICAgIG9mIHRoZSBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZGljdGlvbmFyaWVzIG90aGVy
IHRoYW4gdGhlIFNTUkMgYW5kIFJJRCBmaWVsZHMKLSAgICAgICAgICBpcyBsZWZ0IHVuZGVmaW5l
ZC4KLQogICAgICAgICAtIFRoZSBoZWFkZXJFeHRlbnNpb25zIHNlcXVlbmNlIGlzIHBvcHVsYXRl
ZCBiYXNlZCBvbiB0aGUgaGVhZGVyIGV4dGVuc2lvbnMgdGhhdAogICAgICAgICAgIHRoZSByZWNl
aXZlciBpcyBjdXJyZW50bHkgcHJlcGFyZWQgdG8gcmVjZWl2ZS4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVj
ZWl2ZXItZ2V0U3RhdHMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN0YXRzLmh0dHBzLmh0bWwK
aW5kZXggZjM2Yzg1OTY3YmJhMzNjYmU0NWZiZDA5OWYzYmVlODQ5MmI4YTQ0MC4uNGEyZTZhMGJk
OGIwYWM5NTI4ZWQ0ZWViMGI0N2ZlYTgzYjI2YzU0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0
U3RhdHMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy5odG1sCkBAIC00
NCw5ICs0NCwxMSBAQAogICAgICAgICAgIGFkZGVkLgogICAgKi8KIAotICBwcm9taXNlX3Rlc3Qo
YXN5bmMgKCkgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgY2Fs
bGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBj
YWxsZXIuY2xvc2UoKSk7CiAgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7CiAgICAgY29uc3Qg
eyByZWNlaXZlciB9ID0gY2FsbGVyLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOwogCiAgICAgYXdh
aXQgZG9TaWduYWxpbmdIYW5kc2hha2UoY2FsbGVyLCBjYWxsZWUpOwpAQCAtNTUsMTAgKzU3LDEz
IEBACiAgICAgYXNzZXJ0X3N0YXRzX3JlcG9ydF9oYXNfc3RhdHMoc3RhdHNSZXBvcnQsIFsnaW5i
b3VuZC1ydHAnXSk7CiAgIH0sICdyZWNlaXZlci5nZXRTdGF0cygpIHZpYSBhZGRUcmFuc2NlaXZl
ciBzaG91bGQgcmV0dXJuIHN0YXRzIHJlcG9ydCBjb250YWluaW5nIGluYm91bmQtcnRwIHN0YXRz
Jyk7CiAKLSAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4gewogICAgIGNvbnN0IGNhbGxlciA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNsb3NlKCkpOwogICAgIGNvbnN0IGNhbGxlZSA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBjYWxsZWUuY2xvc2UoKSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQg
Z2V0Tm9pc2VTdHJlYW0oe2F1ZGlvOnRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0
cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOwogICAgIGNv
bnN0IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJhY2tzKCk7CiAgICAgY2FsbGVyLmFkZFRyYWNrKHRy
YWNrLCBzdHJlYW0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTeW5jaHJvbml6YXRpb25T
b3VyY2VzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTeW5jaHJvbml6YXRpb25Tb3VyY2VzLmh0
dHBzLmh0bWwKaW5kZXggMzQ5NGE5MTFjODc0YmNhYzY0ZjA5OTFiM2I2MDhjNjBhNzBmN2EzNy4u
ODA2ODU1ODBlMjI3ZWM3MTE2YWQ4ZmE2Y2Y4ODU1YmU2NmQyMGQ0NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVj
ZWl2ZXItZ2V0U3luY2hyb25pemF0aW9uU291cmNlcy5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVy
LWdldFN5bmNocm9uaXphdGlvblNvdXJjZXMuaHR0cHMuaHRtbApAQCAtMjUsMTAgKzI1LDEzIEBA
CiAgICAgICB9OwogICAgKi8KIAotICBwcm9taXNlX3Rlc3QoKCkgPT4geworICBwcm9taXNlX3Rl
c3QodCA9PiB7CiAgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CiAgICAgY29uc3QgcGMyID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CiAKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgp
KTsKKwogICAgIGNvbnN0IG9udHJhY2tQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CiAgICAgICBwYzIuYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0V2ZW50ID0+IHsKICAg
ICAgICAgY29uc3QgeyByZWNlaXZlciB9ID0gdHJhY2tFdmVudDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRl
ci1nZXRDYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldENhcGFiaWxpdGllcy1l
eHBlY3RlZC50eHQKaW5kZXggNzQ0MjkxNGRiMmFlNGVmNjQyNGNiN2M4OGRhZTdiMzNkNTc2ODE4
Yy4uNDYxZTAyODcxZTJmMmEwNGQ5NDczZWM2YjJkZDI0MTg3OTBiY2E0MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRw
U2VuZGVyLWdldENhcGFiaWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldENhcGFi
aWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiAKIEZBSUwgUlRDUnRwU2VuZGVy
LmdldENhcGFiaWxpdGllcygnYXVkaW8nKSBzaG91bGQgcmV0dXJuIFJUQ1J0cENhcGFiaWxpdGll
cyBkaWN0aW9uYXJ5IFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnUlRDUnRwU2VuZGVyLmdldENhcGFiaWxpdGllcygnYXVkaW8nKScsICdSVENSdHBT
ZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzJyBpcyB1bmRlZmluZWQpCiBGQUlMIFJUQ1J0cFNlbmRlci5n
ZXRDYXBhYmlsaXRpZXMoJ3ZpZGVvJykgc2hvdWxkIHJldHVybiBSVENSdHBDYXBhYmlsaXRpZXMg
ZGljdGlvbmFyeSBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ1JUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoJ3ZpZGVvJyknLCAnUlRDUnRwU2Vu
ZGVyLmdldENhcGFiaWxpdGllcycgaXMgdW5kZWZpbmVkKQorRkFJTCBSVENSdHBTZW5kZXIuZ2V0
Q2FwYWJpbGl0aWVzKCdkdW1teScpIHNob3VsZCByZXR1cm4gbnVsbCBSVENSdHBTZW5kZXIuZ2V0
Q2FwYWJpbGl0aWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ1JUQ1J0cFNlbmRlci5nZXRDYXBh
YmlsaXRpZXMoJ2R1bW15JyknLCAnUlRDUnRwU2VuZGVyLmdldENhcGFiaWxpdGllcycgaXMgdW5k
ZWZpbmVkKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItZ2V0Q2FwYWJpbGl0aWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5k
ZXItZ2V0Q2FwYWJpbGl0aWVzLmh0bWwKaW5kZXggZDQ1NDRmZmVjY2RmZTdmZGFjNzg5YTExNzAw
ZmM2NWQyYzY1YjljYy4uM2Q0MWM2MjAxNjFlMDYxMmMzYmM2MTk1ZDMyNTZlY2I0ZWFiOTQwYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUnRwU2VuZGVyLWdldENhcGFiaWxpdGllcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1nZXRD
YXBhYmlsaXRpZXMuaHRtbApAQCAtMzcsNCArMzcsOSBAQAogICAgIHZhbGlkYXRlUnRwQ2FwYWJp
bGl0aWVzKGNhcGFiaWxpdGllcyk7CiAgIH0sIGBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVz
KCd2aWRlbycpIHNob3VsZCByZXR1cm4gUlRDUnRwQ2FwYWJpbGl0aWVzIGRpY3Rpb25hcnlgKTsK
IAorICB0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBSVENSdHBTZW5kZXIu
Z2V0Q2FwYWJpbGl0aWVzKCdkdW1teScpOworICAgIGFzc2VydF9lcXVhbHMoY2FwYWJpbGl0aWVz
LCBudWxsKTsKKyAgfSwgYFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoJ2R1bW15Jykgc2hv
dWxkIHJldHVybiBudWxsYCk7CisKICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1nZXRT
dGF0cy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldFN0YXRzLmh0dHBzLmh0bWwKaW5kZXggNTM0MjYy
NWVhMGNjZjJhYTliOTQzNzY2NmM2ZDYxZjNjN2IyMTM1OC4uMThhYjgyNTU1NDQ3MTk0ZGJhY2Zi
MDdhYTU3MTU5NTNjMGYxN2RkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldFN0YXRzLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUnRwU2VuZGVyLWdldFN0YXRzLmh0dHBzLmh0bWwKQEAgLTM5LDkgKzM5LDExIEBACiAg
ICAgICAgICAgb2JqZWN0cyBhZGRlZC4KICAgICovCiAKLSAgcHJvbWlzZV90ZXN0KGFzeW5jICgp
ID0+IHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IGNhbGxlciA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVyLmNs
b3NlKCkpOwogICAgIGNvbnN0IGNhbGxlZSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gY2FsbGVlLmNsb3NlKCkpOwogICAgIGNvbnN0IHsgc2VuZGVy
IH0gPSBjYWxsZXIuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7CiAKICAgICBhd2FpdCBkb1NpZ25h
bGluZ0hhbmRzaGFrZShjYWxsZXIsIGNhbGxlZSk7CkBAIC01MCwxMCArNTIsMTMgQEAKICAgICBh
c3NlcnRfc3RhdHNfcmVwb3J0X2hhc19zdGF0cyhzdGF0c1JlcG9ydCwgWydvdXRib3VuZC1ydHAn
XSk7CiAgIH0sICdzZW5kZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHJl
dHVybiBzdGF0cyByZXBvcnQgY29udGFpbmluZyBvdXRib3VuZC1ydHAgc3RhdHMnKTsKIAotICBw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
ICAgY29uc3QgY2FsbGVyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBjYWxsZXIuY2xvc2UoKSk7CiAgICAgY29uc3QgY2FsbGVlID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IGNhbGxlZS5jbG9zZSgpKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBnZXROb2lzZVN0
cmVhbSh7YXVkaW86dHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRy
YWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CiAgICAgY29uc3QgW3RyYWNr
XSA9IHN0cmVhbS5nZXRUcmFja3MoKTsKICAgICBjb25zdCBzZW5kZXIgPSBjYWxsZXIuYWRkVHJh
Y2sodHJhY2ssIHN0cmVhbSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1yZXBsYWNlVHJhY2suaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1J0cFNlbmRlci1yZXBsYWNlVHJhY2suaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTg3Y2E1NzJlNGU0N2YzMWY5MzM0NjdmNDM3MTU1YWUzYjA1NzJmMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItcmVwbGFjZVRyYWNrLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNDkgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PXV0Zi04PgotPHRpdGxlPlJUQ1J0cFNlbmRlci5wcm90b3R5cGUucmVwbGFjZVRy
YWNrPC90aXRsZT4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJSVENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLSAgJ3VzZSBzdHJpY3QnOwotCi0gIC8vIFRlc3QgaXMgYmFzZWQgb24gdGhl
IGZvbGxvd2luZyBlZGl0b3IgZHJhZnQ6Ci0gIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJy
dGMtcGMvYXJjaGl2ZXMvMjAxNzA2MDUvd2VicnRjLmh0bWwKLQotICAvLyBUaGUgZm9sbG93aW5n
IGhlbHBlciBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uLWhlbHBl
ci5qczoKLSAgLy8gZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrCi0KLSAgLyoKLSAgICA1LjIuICBS
VENSdHBTZW5kZXIgSW50ZXJmYWNlCi0gICAgICBpbnRlcmZhY2UgUlRDUnRwU2VuZGVyIHsKLSAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2s/IHRyYWNrOwotICAgICAg
ICBQcm9taXNlPHZvaWQ+ICAgICAgICAgICByZXBsYWNlVHJhY2soTWVkaWFTdHJlYW1UcmFjaz8g
d2l0aFRyYWNrKTsKLSAgICAgICAgLi4uCi0gICAgICB9OwotCi0gICAgICByZXBsYWNlVHJhY2sK
LSAgICAgICAgQXR0ZW1wdHMgdG8gcmVwbGFjZSB0aGUgdHJhY2sgYmVpbmcgc2VudCB3aXRoIGFu
b3RoZXIgdHJhY2sgcHJvdmlkZWQKLSAgICAgICAgKG9yIHdpdGggYSBudWxsIHRyYWNrKSwgd2l0
aG91dCByZW5lZ290aWF0aW9uLgotICAgKi8KLQotICAvKgotICAgIDUuMi4gIHJlcGxhY2VUcmFj
awotICAgICAgNC4gIElmIGNvbm5lY3Rpb24ncyBbW2lzQ2xvc2VkXV0gc2xvdCBpcyB0cnVlLCBy
ZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkCi0gICAgICAgICAgd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
SW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgKi8KLSAgcHJvbWlz
ZV90ZXN0KHQgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0g
ICAgY29uc3QgdHJhY2sgPSBnZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soJ2F1ZGlvJyk7Ci0KLSAg
ICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOwotICAgIGNv
bnN0IHsgc2VuZGVyIH0gPSB0cmFuc2NlaXZlcjsKLSAgICBwYy5jbG9zZSgpOwotCi0gICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZFN0YXRlRXJyb3InLAotICAgICAgc2VuZGVy
LnJlcGxhY2VUcmFjayh0cmFjaykpOwotCi0gIH0sICdDYWxsaW5nIHJlcGxhY2VUcmFjayBvbiBj
bG9zZWQgY29ubmVjdGlvbiBzaG91bGQgcmVqZWN0IHdpdGggSW52YWxpZFN0YXRlRXJyb3InKTsK
LQotICAvKgotICAgIDUuMi4gIHJlcGxhY2VUcmFjawotICAgICAgNy4gIElmIHdpdGhUcmFjayBp
cyBub24tbnVsbCBhbmQgd2l0aFRyYWNrLmtpbmQgZGlmZmVycyBmcm9tIHRoZQotICAgICAgICAg
IHRyYW5zY2VpdmVyIGtpbmQgb2YgdHJhbnNjZWl2ZXIsIHJldHVybiBhIHByb21pc2UgcmVqZWN0
ZWQgd2l0aCBhCi0gICAgICAgICAgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCi0gICAqLwotICBw
cm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKLSAgICBjb25zdCB0cmFjayA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygndmlkZW8nKTsK
LQotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7Ci0g
ICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwotCi0gICAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksCi0gICAgICBzZW5kZXIucmVwbGFjZVRyYWNrKHRy
YWNrKSk7Ci0KLSAgfSwgJ0NhbGxpbmcgcmVwbGFjZVRyYWNrIHdpdGggdHJhY2sgb2YgZGlmZmVy
ZW50IGtpbmQgc2hvdWxkIHJlamVjdCB3aXRoIFR5cGVFcnJvcicpOwotCi0gIC8qCi0gICAgNS4y
LiAgcmVwbGFjZVRyYWNrCi0gICAgICA1LiAgSWYgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyB0cnVl
LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseQotICAgICAgICAgIGNyZWF0
ZWQgSW52YWxpZFN0YXRlRXJyb3IuCi0gICAqLwotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAg
Y29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB0cmFjayA9IGdl
bmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKLQotICAgIGNvbnN0IHRyYW5zY2VpdmVy
ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyk7Ci0gICAgY29uc3QgeyBzZW5kZXIgfSA9IHRy
YW5zY2VpdmVyOwotICAgIHRyYW5zY2VpdmVyLnN0b3AoKTsKLQotICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgJ0ludmFsaWRTdGF0ZUVycm9yJywKLSAgICAgIHNlbmRlci5yZXBsYWNlVHJh
Y2sodHJhY2spKTsKLQotICB9LCAnQ2FsbGluZyByZXBsYWNlVHJhY2sgb24gc3RvcHBlZCBzZW5k
ZXIgc2hvdWxkIHJlamVjdCB3aXRoIEludmFsaWRTdGF0ZUVycm9yJyk7Ci0KLSAgLyoKLSAgICA1
LjIuICByZXBsYWNlVHJhY2sKLSAgICAgIDguICBJZiB0cmFuc2NlaXZlciBpcyBub3QgeWV0IGFz
c29jaWF0ZWQgd2l0aCBhIG1lZGlhIGRlc2NyaXB0aW9uIFtKU0VQXQotICAgICAgICAgIChzZWN0
aW9uIDMuNC4xLiksIHRoZW4gc2V0IHNlbmRlcidzIHRyYWNrIGF0dHJpYnV0ZSB0byB3aXRoVHJh
Y2ssIGFuZAotICAgICAgICAgIHJldHVybiBhIHByb21pc2UgcmVzb2x2ZWQgd2l0aCB1bmRlZmlu
ZWQuCi0gICAqLwotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB0cmFjayA9IGdlbmVyYXRlTWVkaWFTdHJlYW1U
cmFjaygnYXVkaW8nKTsKLQotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2
ZXIoJ2F1ZGlvJyk7Ci0gICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwotICAgIGFz
c2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCBudWxsKTsKLQotICAgIHJldHVybiBzZW5kZXIucmVw
bGFjZVRyYWNrKHRyYWNrKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMo
c2VuZGVyLnRyYWNrLCB0cmFjayk7Ci0gICAgfSk7Ci0gIH0sICdDYWxsaW5nIHJlcGxhY2VUcmFj
ayBvbiBzZW5kZXIgd2l0aCBudWxsIHRyYWNrIGFuZCBub3Qgc2V0IHRvIHNlc3Npb24gZGVzY3Jp
cHRpb24gc2hvdWxkIHJlc29sdmUgd2l0aCBzZW5kZXIudHJhY2sgc2V0IHRvIGdpdmVuIHRyYWNr
Jyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7Ci0gICAgY29uc3QgdHJhY2sxID0gZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNr
KCdhdWRpbycpOwotICAgIGNvbnN0IHRyYWNrMiA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygn
YXVkaW8nKTsKLQotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodHJh
Y2sxKTsKLSAgICBjb25zdCB7IHNlbmRlciB9ID0gdHJhbnNjZWl2ZXI7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKHNlbmRlci50cmFjaywgdHJhY2sxKTsKLQotICAgIHJldHVybiBzZW5kZXIucmVwbGFj
ZVRyYWNrKHRyYWNrMikKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHNl
bmRlci50cmFjaywgdHJhY2syKTsKLSAgICB9KTsKLSAgfSwgJ0NhbGxpbmcgcmVwbGFjZVRyYWNr
IG9uIHNlbmRlciBub3Qgc2V0IHRvIHNlc3Npb24gZGVzY3JpcHRpb24gc2hvdWxkIHJlc29sdmUg
d2l0aCBzZW5kZXIudHJhY2sgc2V0IHRvIGdpdmVuIHRyYWNrJyk7Ci0KLSAgcHJvbWlzZV90ZXN0
KHQgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29u
c3QgdHJhY2sgPSBnZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soJ2F1ZGlvJyk7Ci0KLSAgICBjb25z
dCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrKTsKLSAgICBjb25zdCB7IHNl
bmRlciB9ID0gdHJhbnNjZWl2ZXI7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywg
dHJhY2spOwotCi0gICAgcmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2sobnVsbCkKLSAgICAudGhl
bigoKSA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgbnVsbCk7Ci0gICAg
fSk7Ci0gIH0sICdDYWxsaW5nIHJlcGxhY2VUcmFjayhudWxsKSBvbiBzZW5kZXIgbm90IHNldCB0
byBzZXNzaW9uIGRlc2NyaXB0aW9uIHNob3VsZCByZXNvbHZlIHdpdGggc2VuZGVyLnRyYWNrIHNl
dCB0byBudWxsJyk7Ci0KLSAgLyoKLSAgICA1LjIuICByZXBsYWNlVHJhY2sKLSAgICAgIDEwLiBS
dW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICAgICAgICAxLiAgRGV0ZXJt
aW5lIGlmIG5lZ290aWF0aW9uIGlzIG5lZWRlZCB0byB0cmFuc21pdCB3aXRoVHJhY2sgaW4gcGxh
Y2UKLSAgICAgICAgICAgICAgb2YgdGhlIHNlbmRlcidzIGV4aXN0aW5nIHRyYWNrLgotCi0gICAg
ICAgICAgICAgIE5lZ290aWF0aW9uIGlzIG5vdCBuZWVkZWQgaWYgd2l0aFRyYWNrIGlzIG51bGwu
Ci0KLSAgICAgICAgICAzLiAgUXVldWUgYSB0YXNrIHRoYXQgcnVucyB0aGUgZm9sbG93aW5nIHN0
ZXBzOgotICAgICAgICAgICAgICAyLiAgU2V0IHNlbmRlcidzIHRyYWNrIGF0dHJpYnV0ZSB0byB3
aXRoVHJhY2suCi0gICAqLwotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgY29uc3QgcGMgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCB0cmFjayA9IGdlbmVyYXRlTWVkaWFT
dHJlYW1UcmFjaygnYXVkaW8nKTsKLQotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJh
bnNjZWl2ZXIodHJhY2spOwotICAgIGNvbnN0IHsgc2VuZGVyIH0gPSB0cmFuc2NlaXZlcjsKLQot
ICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCB0cmFjayk7Ci0KLSAgICByZXR1cm4gcGMu
Y3JlYXRlT2ZmZXIoKQotICAgIC50aGVuKG9mZmVyID0+IHBjLnNldExvY2FsRGVzY3JpcHRpb24o
b2ZmZXIpKQotICAgIC50aGVuKCgpID0+IHNlbmRlci5yZXBsYWNlVHJhY2sobnVsbCkpCi0gICAg
LnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIG51bGwpOwot
ICAgIH0pOwotICB9LCAnQ2FsbGluZyByZXBsYWNlVHJhY2sobnVsbCkgb24gc2VuZGVyIHNldCB0
byBzZXNzaW9uIGRlc2NyaXB0aW9uIHNob3VsZCByZXNvbHZlIHdpdGggc2VuZGVyLnRyYWNrIHNl
dCB0byBudWxsJyk7Ci0KLSAgLyoKLSAgICA1LjIuICByZXBsYWNlVHJhY2sKLSAgICAgIDEwLiBS
dW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICAgICAgICAxLiAgRGV0ZXJt
aW5lIGlmIG5lZ290aWF0aW9uIGlzIG5lZWRlZCB0byB0cmFuc21pdCB3aXRoVHJhY2sgaW4gcGxh
Y2UKLSAgICAgICAgICAgICAgb2YgdGhlIHNlbmRlcidzIGV4aXN0aW5nIHRyYWNrLgotCi0gICAg
ICAgICAgICAgIE5lZ290aWF0aW9uIGlzIG5vdCBuZWVkZWQgaWYgdGhlIHNlbmRlcidzIGV4aXN0
aW5nIHRyYWNrIGlzCi0gICAgICAgICAgICAgIGVuZGVkICh3aGljaCBhcHBlYXJzIGFzIHRob3Vn
aCB0aGUgdHJhY2sgd2FzIG11dGVkKS4KLQotICAgICAgICAgIDMuICBRdWV1ZSBhIHRhc2sgdGhh
dCBydW5zIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICAgIDIuICBTZXQgc2VuZGVy
J3MgdHJhY2sgYXR0cmlidXRlIHRvIHdpdGhUcmFjay4KLSAgICovCi0gIHByb21pc2VfdGVzdCh0
ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0
IHRyYWNrMSA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKLSAgICBjb25zdCB0
cmFjazIgPSBnZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soJ2F1ZGlvJyk7Ci0KLSAgICBjb25zdCB0
cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrMSk7Ci0gICAgY29uc3QgeyBzZW5k
ZXIgfSA9IHRyYW5zY2VpdmVyOwotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCB0cmFj
azEpOwotCi0gICAgdHJhY2sxLnN0b3AoKTsKLQotICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcigp
Ci0gICAgLnRoZW4ob2ZmZXIgPT4gcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikpCi0gICAg
LnRoZW4oKCkgPT4gc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFjazIpKQotICAgIC50aGVuKCgpID0+
IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCB0cmFjazIpOwotICAgIH0pOwot
ICB9LCAnQ2FsbGluZyByZXBsYWNlVHJhY2sgb24gc2VuZGVyIHdpdGggc3RvcHBlZCB0cmFjayBh
bmQgYW5kIHNldCB0byBzZXNzaW9uIGRlc2NyaXB0aW9uIHNob3VsZCByZXNvbHZlIHdpdGggc2Vu
ZGVyLnRyYWNrIHNldCB0byBnaXZlbiB0cmFjaycpOwotCi0gIC8qCi0gICAgNS4yLiAgcmVwbGFj
ZVRyYWNrCi0gICAgICAxMC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0g
ICAgICAgICAgMS4gIERldGVybWluZSBpZiBuZWdvdGlhdGlvbiBpcyBuZWVkZWQgdG8gdHJhbnNt
aXQgd2l0aFRyYWNrIGluIHBsYWNlCi0gICAgICAgICAgICAgIG9mIHRoZSBzZW5kZXIncyBleGlz
dGluZyB0cmFjay4KLQotICAgICAgICAgICAgICAodHJhY2tzIGdlbmVyYXRlZCB3aXRoIGRlZmF1
bHQgcGFyYW1ldGVycyAqc2hvdWxkKiBiZSBzaW1pbGFyCi0gICAgICAgICAgICAgIGVub3VnaCB0
byBub3QgcmVxdWlyZSByZS1uZWdvdGlhdGlvbikKLQotICAgICAgICAgIDMuICBRdWV1ZSBhIHRh
c2sgdGhhdCBydW5zIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICAgIDIuICBTZXQg
c2VuZGVyJ3MgdHJhY2sgYXR0cmlidXRlIHRvIHdpdGhUcmFjay4KLSAgICovCi0gIHByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAg
IGNvbnN0IHRyYWNrMSA9IGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVkaW8nKTsKLSAgICBj
b25zdCB0cmFjazIgPSBnZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soJ2F1ZGlvJyk7Ci0KLSAgICBj
b25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrMSk7Ci0gICAgY29uc3Qg
eyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyLnRyYWNr
LCB0cmFjazEpOwotCi0gICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKLSAgICAudGhlbihvZmZl
ciA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKSkKLSAgICAudGhlbigoKSA9PiBzZW5k
ZXIucmVwbGFjZVRyYWNrKHRyYWNrMikpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0
X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrMik7Ci0gICAgfSk7Ci0gIH0sICdDYWxsaW5nIHJl
cGxhY2VUcmFjayBvbiBzZW5kZXIgd2l0aCBzaW1pbGFyIHRyYWNrIGFuZCBhbmQgc2V0IHRvIHNl
c3Npb24gZGVzY3JpcHRpb24gc2hvdWxkIHJlc29sdmUgd2l0aCBzZW5kZXIudHJhY2sgc2V0IHRv
IG5ldyB0cmFjaycpOwotCi0gIC8qCi0gICAgVE9ETwotICAgICAgNS4yLiAgcmVwbGFjZVRyYWNr
Ci0gICAgICAgIFRvIGF2b2lkIHRyYWNrIGlkZW50aWZpZXJzIGNoYW5naW5nIG9uIHRoZSByZW1v
dGUgcmVjZWl2aW5nIGVuZCB3aGVuCi0gICAgICAgIGEgdHJhY2sgaXMgcmVwbGFjZWQsIHRoZSBz
ZW5kZXIgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIHRyYWNrCi0gICAgICAgIGlkZW50aWZpZXIg
YW5kIHN0cmVhbSBhc3NvY2lhdGlvbnMgYW5kIHVzZSB0aGVzZSBpbiBzdWJzZXF1ZW50Ci0gICAg
ICAgIG5lZ290aWF0aW9ucy4KLQotICAgIE5vbi1UZXN0YWJsZQotICAgICAgNS4yLiAgcmVwbGFj
ZVRyYWNrCi0gICAgICAgIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoK
LSAgICAgICAgICAgIDEuICBEZXRlcm1pbmUgaWYgbmVnb3RpYXRpb24gaXMgbmVlZGVkIHRvIHRy
YW5zbWl0IHdpdGhUcmFjayBpbiBwbGFjZQotICAgICAgICAgICAgICAgIG9mIHRoZSBzZW5kZXIn
cyBleGlzdGluZyB0cmFjay4KLQotICAgICAgICAgICAgICAgIElnbm9yZSB3aGljaCBNZWRpYVN0
cmVhbSB0aGUgdHJhY2sgcmVzaWRlcyBpbiBhbmQgdGhlIGlkIGF0dHJpYnV0ZQotICAgICAgICAg
ICAgICAgIG9mIHRoZSB0cmFjayBpbiB0aGlzIGRldGVybWluYXRpb24uCi0KLSAgICAgICAgICAg
ICAgICBJZiBuZWdvdGlhdGlvbiBpcyBuZWVkZWQsIHRoZW4gcmVqZWN0IHAgd2l0aCBhIG5ld2x5
IGNyZWF0ZWQKLSAgICAgICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgotCi0gICAgICAgICAgICAyLiAgSWYgd2l0aFRyYWNrIGlzIG51bGws
IGhhdmUgdGhlIHNlbmRlciBzdG9wIHNlbmRpbmcsIHdpdGhvdXQKLSAgICAgICAgICAgICAgICBu
ZWdvdGlhdGluZy4gT3RoZXJ3aXNlLCBoYXZlIHRoZSBzZW5kZXIgc3dpdGNoIHNlYW1sZXNzbHkg
dG8KLSAgICAgICAgICAgICAgICB0cmFuc21pdHRpbmcgd2l0aFRyYWNrIGluc3RlYWQgb2YgdGhl
IHNlbmRlcidzIGV4aXN0aW5nIHRyYWNrLAotICAgICAgICAgICAgICAgIHdpdGhvdXQgbmVnb3Rp
YXRpbmcuCi0gICAgICAgICAgICAzLiAgUXVldWUgYSB0YXNrIHRoYXQgcnVucyB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICAgICAgICAxLiAgSWYgY29ubmVjdGlvbidzIFtbaXNDbG9zZWRd
XSBzbG90IGlzIHRydWUsIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgKi8KLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUnRwU2VuZGVyLXJlcGxhY2VUcmFjay5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXIt
cmVwbGFjZVRyYWNrLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzY0YjUwMTEzNTAy
OTg5ZTVmMmI1YzNlNTJmNmM4ZWZkZDVmM2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLXJl
cGxhY2VUcmFjay5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitQQVNTIENh
bGxpbmcgcmVwbGFjZVRyYWNrIG9uIGNsb3NlZCBjb25uZWN0aW9uIHNob3VsZCByZWplY3Qgd2l0
aCBJbnZhbGlkU3RhdGVFcnJvciAKK1BBU1MgQ2FsbGluZyByZXBsYWNlVHJhY2sgd2l0aCB0cmFj
ayBvZiBkaWZmZXJlbnQga2luZCBzaG91bGQgcmVqZWN0IHdpdGggVHlwZUVycm9yIAorUEFTUyBD
YWxsaW5nIHJlcGxhY2VUcmFjayBvbiBzdG9wcGVkIHNlbmRlciBzaG91bGQgcmVqZWN0IHdpdGgg
SW52YWxpZFN0YXRlRXJyb3IgCitQQVNTIENhbGxpbmcgcmVwbGFjZVRyYWNrIG9uIHNlbmRlciB3
aXRoIG51bGwgdHJhY2sgYW5kIG5vdCBzZXQgdG8gc2Vzc2lvbiBkZXNjcmlwdGlvbiBzaG91bGQg
cmVzb2x2ZSB3aXRoIHNlbmRlci50cmFjayBzZXQgdG8gZ2l2ZW4gdHJhY2sgCitQQVNTIENhbGxp
bmcgcmVwbGFjZVRyYWNrIG9uIHNlbmRlciBub3Qgc2V0IHRvIHNlc3Npb24gZGVzY3JpcHRpb24g
c2hvdWxkIHJlc29sdmUgd2l0aCBzZW5kZXIudHJhY2sgc2V0IHRvIGdpdmVuIHRyYWNrIAorUEFT
UyBDYWxsaW5nIHJlcGxhY2VUcmFjayhudWxsKSBvbiBzZW5kZXIgbm90IHNldCB0byBzZXNzaW9u
IGRlc2NyaXB0aW9uIHNob3VsZCByZXNvbHZlIHdpdGggc2VuZGVyLnRyYWNrIHNldCB0byBudWxs
IAorUEFTUyBDYWxsaW5nIHJlcGxhY2VUcmFjayhudWxsKSBvbiBzZW5kZXIgc2V0IHRvIHNlc3Np
b24gZGVzY3JpcHRpb24gc2hvdWxkIHJlc29sdmUgd2l0aCBzZW5kZXIudHJhY2sgc2V0IHRvIG51
bGwgCitQQVNTIENhbGxpbmcgcmVwbGFjZVRyYWNrIG9uIHNlbmRlciB3aXRoIHN0b3BwZWQgdHJh
Y2sgYW5kIGFuZCBzZXQgdG8gc2Vzc2lvbiBkZXNjcmlwdGlvbiBzaG91bGQgcmVzb2x2ZSB3aXRo
IHNlbmRlci50cmFjayBzZXQgdG8gZ2l2ZW4gdHJhY2sgCitQQVNTIENhbGxpbmcgcmVwbGFjZVRy
YWNrIG9uIHNlbmRlciB3aXRoIHNpbWlsYXIgdHJhY2sgYW5kIGFuZCBzZXQgdG8gc2Vzc2lvbiBk
ZXNjcmlwdGlvbiBzaG91bGQgcmVzb2x2ZSB3aXRoIHNlbmRlci50cmFjayBzZXQgdG8gbmV3IHRy
YWNrIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItcmVwbGFjZVRyYWNrLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5k
ZXItcmVwbGFjZVRyYWNrLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIyNzA4NTVkNzM1NzEyZTNh
ZGUxYmE3ZmZkM2I3ZDJjMzdkYzE1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1yZXBsYWNl
VHJhY2suaHR0cHMuaHRtbApAQCAtMCwwICsxLDI3NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0
YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPlJUQ1J0cFNlbmRlci5wcm90b3R5cGUucmVwbGFjZVRy
YWNrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisgICd1c2Ugc3RyaWN0JzsKKworICAvLyBUZXN0IGlzIGJhc2VkIG9u
IHRoZSBmb2xsb3dpbmcgZWRpdG9yIGRyYWZ0OgorICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
d2VicnRjLXBjL2FyY2hpdmVzLzIwMTcwNjA1L3dlYnJ0Yy5odG1sCisKKyAgLyoKKyAgICA1LjIu
ICBSVENSdHBTZW5kZXIgSW50ZXJmYWNlCisgICAgICBpbnRlcmZhY2UgUlRDUnRwU2VuZGVyIHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2s/IHRyYWNrOworICAg
ICAgICBQcm9taXNlPHZvaWQ+ICAgICAgICAgICByZXBsYWNlVHJhY2soTWVkaWFTdHJlYW1UcmFj
az8gd2l0aFRyYWNrKTsKKyAgICAgICAgLi4uCisgICAgICB9OworCisgICAgICByZXBsYWNlVHJh
Y2sKKyAgICAgICAgQXR0ZW1wdHMgdG8gcmVwbGFjZSB0aGUgdHJhY2sgYmVpbmcgc2VudCB3aXRo
IGFub3RoZXIgdHJhY2sgcHJvdmlkZWQKKyAgICAgICAgKG9yIHdpdGggYSBudWxsIHRyYWNrKSwg
d2l0aG91dCByZW5lZ290aWF0aW9uLgorICAgKi8KKworICAvKgorICAgIDUuMi4gIHJlcGxhY2VU
cmFjaworICAgICAgNC4gIElmIGNvbm5lY3Rpb24ncyBbW2lzQ2xvc2VkXV0gc2xvdCBpcyB0cnVl
LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkCisgICAgICAgICAgd2l0aCBhIG5ld2x5IGNyZWF0
ZWQgSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgKi8KKyAgcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAgICBjb25zdCBz
dHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86
IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JF
YWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0u
Z2V0VHJhY2tzKCk7CisKKyAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVy
KCdhdWRpbycpOworICAgIGNvbnN0IHsgc2VuZGVyIH0gPSB0cmFuc2NlaXZlcjsKKyAgICBwYy5j
bG9zZSgpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAnSW52YWxpZFN0YXRlRXJy
b3InLAorICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFjaykpOworICB9LCAnQ2FsbGluZyBy
ZXBsYWNlVHJhY2sgb24gY2xvc2VkIGNvbm5lY3Rpb24gc2hvdWxkIHJlamVjdCB3aXRoIEludmFs
aWRTdGF0ZUVycm9yJyk7CisKKyAgLyoKKyAgICA1LjIuICByZXBsYWNlVHJhY2sKKyAgICAgIDcu
ICBJZiB3aXRoVHJhY2sgaXMgbm9uLW51bGwgYW5kIHdpdGhUcmFjay5raW5kIGRpZmZlcnMgZnJv
bSB0aGUKKyAgICAgICAgICB0cmFuc2NlaXZlciBraW5kIG9mIHRyYW5zY2VpdmVyLCByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggYQorICAgICAgICAgIG5ld2x5IGNyZWF0ZWQgVHlwZUVy
cm9yLgorICAgKi8KKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9z
ZSgpKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVh
bS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkpOworICAgIGNvbnN0
IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJhY2tzKCk7CisKKyAgICBjb25zdCB0cmFuc2NlaXZlciA9
IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpOworICAgIGNvbnN0IHsgc2VuZGVyIH0gPSB0cmFu
c2NlaXZlcjsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LAorICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFjaykpOworICB9LCAnQ2FsbGluZyByZXBs
YWNlVHJhY2sgd2l0aCB0cmFjayBvZiBkaWZmZXJlbnQga2luZCBzaG91bGQgcmVqZWN0IHdpdGgg
VHlwZUVycm9yJyk7CisKKyAgLyoKKyAgICA1LjIuICByZXBsYWNlVHJhY2sKKyAgICAgIDUuICBJ
ZiB0cmFuc2NlaXZlci5zdG9wcGVkIGlzIHRydWUsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQg
d2l0aCBhIG5ld2x5CisgICAgICAgICAgY3JlYXRlZCBJbnZhbGlkU3RhdGVFcnJvci4KKyAgICov
CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAg
Y29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tz
KCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0g
c3RyZWFtLmdldFRyYWNrcygpOworCisgICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFu
c2NlaXZlcignYXVkaW8nKTsKKyAgICBjb25zdCB7IHNlbmRlciB9ID0gdHJhbnNjZWl2ZXI7Cisg
ICAgdHJhbnNjZWl2ZXIuc3RvcCgpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCAn
SW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayh0cmFjaykpOwor
ICB9LCAnQ2FsbGluZyByZXBsYWNlVHJhY2sgb24gc3RvcHBlZCBzZW5kZXIgc2hvdWxkIHJlamVj
dCB3aXRoIEludmFsaWRTdGF0ZUVycm9yJyk7CisKKyAgLyoKKyAgICA1LjIuICByZXBsYWNlVHJh
Y2sKKyAgICAgIDguICBJZiB0cmFuc2NlaXZlciBpcyBub3QgeWV0IGFzc29jaWF0ZWQgd2l0aCBh
IG1lZGlhIGRlc2NyaXB0aW9uIFtKU0VQXQorICAgICAgICAgIChzZWN0aW9uIDMuNC4xLiksIHRo
ZW4gc2V0IHNlbmRlcidzIHRyYWNrIGF0dHJpYnV0ZSB0byB3aXRoVHJhY2ssIGFuZAorICAgICAg
ICAgIHJldHVybiBhIHByb21pc2UgcmVzb2x2ZWQgd2l0aCB1bmRlZmluZWQuCisgICAqLworICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgIGNvbnN0
IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRp
bzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtLmdldFRyYWNrcygpLmZv
ckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNrXSA9IHN0cmVh
bS5nZXRUcmFja3MoKTsKKworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2
ZXIoJ2F1ZGlvJyk7CisgICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOworICAgIGFz
c2VydF9lcXVhbHMoc2VuZGVyLnRyYWNrLCBudWxsKTsKKworICAgIHJldHVybiBzZW5kZXIucmVw
bGFjZVRyYWNrKHRyYWNrKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMo
c2VuZGVyLnRyYWNrLCB0cmFjayk7CisgICAgfSk7CisgIH0sICdDYWxsaW5nIHJlcGxhY2VUcmFj
ayBvbiBzZW5kZXIgd2l0aCBudWxsIHRyYWNrIGFuZCBub3Qgc2V0IHRvIHNlc3Npb24gZGVzY3Jp
cHRpb24gc2hvdWxkIHJlc29sdmUgd2l0aCBzZW5kZXIudHJhY2sgc2V0IHRvIGdpdmVuIHRyYWNr
Jyk7CisKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsK
KyAgICBjb25zdCBzdHJlYW0xID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0xLmdl
dFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3Ry
YWNrMV0gPSBzdHJlYW0xLmdldFRyYWNrcygpOworICAgIGNvbnN0IHN0cmVhbTIgPSBhd2FpdCBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbTIuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0
cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2syXSA9IHN0cmVhbTIuZ2V0VHJhY2tzKCk7
CisKKyAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrMSk7Cisg
ICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOworCisgICAgYXNzZXJ0X2VxdWFscyhz
ZW5kZXIudHJhY2ssIHRyYWNrMSk7CisKKyAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayh0
cmFjazIpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJh
Y2ssIHRyYWNrMik7CisgICAgfSk7CisgIH0sICdDYWxsaW5nIHJlcGxhY2VUcmFjayBvbiBzZW5k
ZXIgbm90IHNldCB0byBzZXNzaW9uIGRlc2NyaXB0aW9uIHNob3VsZCByZXNvbHZlIHdpdGggc2Vu
ZGVyLnRyYWNrIHNldCB0byBnaXZlbiB0cmFjaycpOworCisgIHByb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFj
ay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2tdID0gc3RyZWFtLmdldFRyYWNrcygpOworCisg
ICAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih0cmFjayk7CisgICAgY29u
c3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOworCisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIu
dHJhY2ssIHRyYWNrKTsKKworICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNrKG51bGwpCisg
ICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIG51bGwp
OworICAgIH0pOworICB9LCAnQ2FsbGluZyByZXBsYWNlVHJhY2sobnVsbCkgb24gc2VuZGVyIG5v
dCBzZXQgdG8gc2Vzc2lvbiBkZXNjcmlwdGlvbiBzaG91bGQgcmVzb2x2ZSB3aXRoIHNlbmRlci50
cmFjayBzZXQgdG8gbnVsbCcpOworCisgIC8qCisgICAgNS4yLiAgcmVwbGFjZVRyYWNrCisgICAg
ICAxMC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CisgICAgICAgICAgMS4g
IERldGVybWluZSBpZiBuZWdvdGlhdGlvbiBpcyBuZWVkZWQgdG8gdHJhbnNtaXQgd2l0aFRyYWNr
IGluIHBsYWNlCisgICAgICAgICAgICAgIG9mIHRoZSBzZW5kZXIncyBleGlzdGluZyB0cmFjay4K
KworICAgICAgICAgICAgICBOZWdvdGlhdGlvbiBpcyBub3QgbmVlZGVkIGlmIHdpdGhUcmFjayBp
cyBudWxsLgorCisgICAgICAgICAgMy4gIFF1ZXVlIGEgdGFzayB0aGF0IHJ1bnMgdGhlIGZvbGxv
d2luZyBzdGVwczoKKyAgICAgICAgICAgICAgMi4gIFNldCBzZW5kZXIncyB0cmFjayBhdHRyaWJ1
dGUgdG8gd2l0aFRyYWNrLgorICAgKi8KKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYy5jbG9zZSgpKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSkp
OworICAgIGNvbnN0IFt0cmFja10gPSBzdHJlYW0uZ2V0VHJhY2tzKCk7CisKKyAgICBjb25zdCB0
cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrKTsKKyAgICBjb25zdCB7IHNlbmRl
ciB9ID0gdHJhbnNjZWl2ZXI7CisKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlci50cmFjaywgdHJh
Y2spOworCisgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKKyAgICAudGhlbihvZmZlciA9PiBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKSkKKyAgICAudGhlbigoKSA9PiBzZW5kZXIucmVw
bGFjZVRyYWNrKG51bGwpKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMo
c2VuZGVyLnRyYWNrLCBudWxsKTsKKyAgICB9KTsKKyAgfSwgJ0NhbGxpbmcgcmVwbGFjZVRyYWNr
KG51bGwpIG9uIHNlbmRlciBzZXQgdG8gc2Vzc2lvbiBkZXNjcmlwdGlvbiBzaG91bGQgcmVzb2x2
ZSB3aXRoIHNlbmRlci50cmFjayBzZXQgdG8gbnVsbCcpOworCisgIC8qCisgICAgNS4yLiAgcmVw
bGFjZVRyYWNrCisgICAgICAxMC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6
CisgICAgICAgICAgMS4gIERldGVybWluZSBpZiBuZWdvdGlhdGlvbiBpcyBuZWVkZWQgdG8gdHJh
bnNtaXQgd2l0aFRyYWNrIGluIHBsYWNlCisgICAgICAgICAgICAgIG9mIHRoZSBzZW5kZXIncyBl
eGlzdGluZyB0cmFjay4KKworICAgICAgICAgICAgICBOZWdvdGlhdGlvbiBpcyBub3QgbmVlZGVk
IGlmIHRoZSBzZW5kZXIncyBleGlzdGluZyB0cmFjayBpcworICAgICAgICAgICAgICBlbmRlZCAo
d2hpY2ggYXBwZWFycyBhcyB0aG91Z2ggdGhlIHRyYWNrIHdhcyBtdXRlZCkuCisKKyAgICAgICAg
ICAzLiAgUXVldWUgYSB0YXNrIHRoYXQgcnVucyB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAg
ICAgICAgICAyLiAgU2V0IHNlbmRlcidzIHRyYWNrIGF0dHJpYnV0ZSB0byB3aXRoVHJhY2suCisg
ICAqLworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwor
ICAgIGNvbnN0IHN0cmVhbTEgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0cmVhbTEuZ2V0
VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJh
Y2sxXSA9IHN0cmVhbTEuZ2V0VHJhY2tzKCk7CisgICAgY29uc3Qgc3RyZWFtMiA9IGF3YWl0IG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gc3RyZWFtMi5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRy
YWNrLnN0b3AoKSkpOworICAgIGNvbnN0IFt0cmFjazJdID0gc3RyZWFtMS5nZXRUcmFja3MoKTsK
KworICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodHJhY2sxKTsKKyAg
ICBjb25zdCB7IHNlbmRlciB9ID0gdHJhbnNjZWl2ZXI7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5k
ZXIudHJhY2ssIHRyYWNrMSk7CisKKyAgICB0cmFjazEuc3RvcCgpOworCisgICAgcmV0dXJuIHBj
LmNyZWF0ZU9mZmVyKCkKKyAgICAudGhlbihvZmZlciA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9u
KG9mZmVyKSkKKyAgICAudGhlbigoKSA9PiBzZW5kZXIucmVwbGFjZVRyYWNrKHRyYWNrMikpCisg
ICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNr
Mik7CisgICAgfSk7CisgIH0sICdDYWxsaW5nIHJlcGxhY2VUcmFjayBvbiBzZW5kZXIgd2l0aCBz
dG9wcGVkIHRyYWNrIGFuZCBhbmQgc2V0IHRvIHNlc3Npb24gZGVzY3JpcHRpb24gc2hvdWxkIHJl
c29sdmUgd2l0aCBzZW5kZXIudHJhY2sgc2V0IHRvIGdpdmVuIHRyYWNrJyk7CisKKyAgLyoKKyAg
ICA1LjIuICByZXBsYWNlVHJhY2sKKyAgICAgIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBp
biBwYXJhbGxlbDoKKyAgICAgICAgICAxLiAgRGV0ZXJtaW5lIGlmIG5lZ290aWF0aW9uIGlzIG5l
ZWRlZCB0byB0cmFuc21pdCB3aXRoVHJhY2sgaW4gcGxhY2UKKyAgICAgICAgICAgICAgb2YgdGhl
IHNlbmRlcidzIGV4aXN0aW5nIHRyYWNrLgorCisgICAgICAgICAgICAgICh0cmFja3MgZ2VuZXJh
dGVkIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzICpzaG91bGQqIGJlIHNpbWlsYXIKKyAgICAgICAg
ICAgICAgZW5vdWdoIHRvIG5vdCByZXF1aXJlIHJlLW5lZ290aWF0aW9uKQorCisgICAgICAgICAg
My4gIFF1ZXVlIGEgdGFzayB0aGF0IHJ1bnMgdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAg
ICAgICAgMi4gIFNldCBzZW5kZXIncyB0cmFjayBhdHRyaWJ1dGUgdG8gd2l0aFRyYWNrLgorICAg
Ki8KKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAg
ICBjb25zdCBzdHJlYW0xID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdHJlYW0xLmdldFRy
YWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKSk7CisgICAgY29uc3QgW3RyYWNr
MV0gPSBzdHJlYW0xLmdldFRyYWNrcygpOworICAgIGNvbnN0IHN0cmVhbTIgPSBhd2FpdCBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHN0cmVhbTIuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFj
ay5zdG9wKCkpKTsKKyAgICBjb25zdCBbdHJhY2syXSA9IHN0cmVhbTEuZ2V0VHJhY2tzKCk7CisK
KyAgICBjb25zdCB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHRyYWNrMSk7CisgICAg
Y29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOworICAgIGFzc2VydF9lcXVhbHMoc2VuZGVy
LnRyYWNrLCB0cmFjazEpOworCisgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKKyAgICAudGhl
bihvZmZlciA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKSkKKyAgICAudGhlbigoKSA9
PiBzZW5kZXIucmVwbGFjZVRyYWNrKHRyYWNrMikpCisgICAgLnRoZW4oKCkgPT4geworICAgICAg
YXNzZXJ0X2VxdWFscyhzZW5kZXIudHJhY2ssIHRyYWNrMik7CisgICAgfSk7CisgIH0sICdDYWxs
aW5nIHJlcGxhY2VUcmFjayBvbiBzZW5kZXIgd2l0aCBzaW1pbGFyIHRyYWNrIGFuZCBhbmQgc2V0
IHRvIHNlc3Npb24gZGVzY3JpcHRpb24gc2hvdWxkIHJlc29sdmUgd2l0aCBzZW5kZXIudHJhY2sg
c2V0IHRvIG5ldyB0cmFjaycpOworCisgIC8qCisgICAgVE9ETworICAgICAgNS4yLiAgcmVwbGFj
ZVRyYWNrCisgICAgICAgIFRvIGF2b2lkIHRyYWNrIGlkZW50aWZpZXJzIGNoYW5naW5nIG9uIHRo
ZSByZW1vdGUgcmVjZWl2aW5nIGVuZCB3aGVuCisgICAgICAgIGEgdHJhY2sgaXMgcmVwbGFjZWQs
IHRoZSBzZW5kZXIgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIHRyYWNrCisgICAgICAgIGlkZW50
aWZpZXIgYW5kIHN0cmVhbSBhc3NvY2lhdGlvbnMgYW5kIHVzZSB0aGVzZSBpbiBzdWJzZXF1ZW50
CisgICAgICAgIG5lZ290aWF0aW9ucy4KKworICAgIE5vbi1UZXN0YWJsZQorICAgICAgNS4yLiAg
cmVwbGFjZVRyYWNrCisgICAgICAgIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJh
bGxlbDoKKyAgICAgICAgICAgIDEuICBEZXRlcm1pbmUgaWYgbmVnb3RpYXRpb24gaXMgbmVlZGVk
IHRvIHRyYW5zbWl0IHdpdGhUcmFjayBpbiBwbGFjZQorICAgICAgICAgICAgICAgIG9mIHRoZSBz
ZW5kZXIncyBleGlzdGluZyB0cmFjay4KKworICAgICAgICAgICAgICAgIElnbm9yZSB3aGljaCBN
ZWRpYVN0cmVhbSB0aGUgdHJhY2sgcmVzaWRlcyBpbiBhbmQgdGhlIGlkIGF0dHJpYnV0ZQorICAg
ICAgICAgICAgICAgIG9mIHRoZSB0cmFjayBpbiB0aGlzIGRldGVybWluYXRpb24uCisKKyAgICAg
ICAgICAgICAgICBJZiBuZWdvdGlhdGlvbiBpcyBuZWVkZWQsIHRoZW4gcmVqZWN0IHAgd2l0aCBh
IG5ld2x5IGNyZWF0ZWQKKyAgICAgICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorCisgICAgICAgICAgICAyLiAgSWYgd2l0aFRyYWNrIGlz
IG51bGwsIGhhdmUgdGhlIHNlbmRlciBzdG9wIHNlbmRpbmcsIHdpdGhvdXQKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGluZy4gT3RoZXJ3aXNlLCBoYXZlIHRoZSBzZW5kZXIgc3dpdGNoIHNlYW1s
ZXNzbHkgdG8KKyAgICAgICAgICAgICAgICB0cmFuc21pdHRpbmcgd2l0aFRyYWNrIGluc3RlYWQg
b2YgdGhlIHNlbmRlcidzIGV4aXN0aW5nIHRyYWNrLAorICAgICAgICAgICAgICAgIHdpdGhvdXQg
bmVnb3RpYXRpbmcuCisgICAgICAgICAgICAzLiAgUXVldWUgYSB0YXNrIHRoYXQgcnVucyB0aGUg
Zm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgICAxLiAgSWYgY29ubmVjdGlvbidzIFtbaXND
bG9zZWRdXSBzbG90IGlzIHRydWUsIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgKi8KKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUnRwU2VuZGVyLXNldFBhcmFtZXRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1zZXRQYXJh
bWV0ZXJzLmh0bWwKaW5kZXggZDhmYmUzNWU3NWEzODUzODNlN2Q0NDUyMjIyYTUyZGE5OTQ0NmM5
MC4uMTI3ODczNzQxNGM0MThhMmIxNjA0ZWFlMzI1OTBjMDk5OWUwZDY0NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRw
U2VuZGVyLXNldFBhcmFtZXRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItc2V0UGFyYW1ldGVycy5odG1s
CkBAIC0xNiw2ICsxNiw3IEBACiAgICAqLwogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOwogICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J2F1ZGlvJyk7CiAgICAgY29uc3QgeyBzZW5kZXIgfSA9IHRyYW5zY2VpdmVyOwogCkBAIC0yNCw3
ICsyNSw2IEBACiAKICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsICdJbnZhbGlkU3RhdGVF
cnJvcicsCiAgICAgICBzZW5kZXIuc2V0UGFyYW1ldGVycyhwYXJhbSkpOwotCiAgIH0sIGBzZXRQ
YXJhbWV0ZXJzKCkgd2hlbiB0cmFuc2NlaXZlciBpcyBzdG9wcGVkIHNob3VsZCByZWplY3Qgd2l0
aCBJbnZhbGlkU3RhdGVFcnJvcmApOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2Vp
dmVyLXNldERpcmVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwVHJhbnNjZWl2ZXItc2V0RGlyZWN0aW9uLmh0bWwKaW5k
ZXggMDBjZGRjZTdkNDBkNjE5ZDA5YjU0ZGI1NWQ3ZmU0MzAxYzAzODE4Ny4uMzJjYmZmNWQ5ODU4
Njg0MGFiOWMzN2ExZTFlMDVmMjYyNTYwODQ4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwVHJhbnNjZWl2ZXItc2V0
RGlyZWN0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUnRwVHJhbnNjZWl2ZXItc2V0RGlyZWN0aW9uLmh0bWwKQEAgLTU2
LDYgKzU2LDcgQEAKIAogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgY29uc3QgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkp
OwogICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgeyBk
aXJlY3Rpb246ICdyZWN2b25seScgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2NlaXZlci5k
aXJlY3Rpb24sICdyZWN2b25seScpOwogICAgIGFzc2VydF9lcXVhbHModHJhbnNjZWl2ZXIuY3Vy
cmVudERpcmVjdGlvbiwgbnVsbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBUcmFuc2NlaXZlci5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENSdHBUcmFuc2NlaXZlci5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNm
YTRlYmUzZDJmNTBkOGVhNmFmNDQ2YTcyOTFhOWIzYTU5ZjFjZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0
cFRyYW5zY2VpdmVyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACisKK0hhcm5l
c3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitQQVNTIGNoZWNrQWRkVHJhbnNj
ZWl2ZXJOb1RyYWNrIAorUEFTUyBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aFRyYWNrIAorUEFTUyBj
aGVja0FkZFRyYW5zY2VpdmVyV2l0aEFkZFRyYWNrIAorUEFTUyBjaGVja0FkZFRyYW5zY2VpdmVy
V2l0aERpcmVjdGlvbiAKK0ZBSUwgY2hlY2tBZGRUcmFuc2NlaXZlcldpdGhTdHJlYW0gYXNzZXJ0
X3RydWU6IG9mZmVyIGNvbnRhaW5zIHRoZSBleHBlY3RlZCBhdWRpbyBtc2lkIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCitGQUlMIGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoT2ZmZXJUb1JlY2VpdmVB
dWRpbyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiW3tjdXJyZW50RGlyZWN0aW9uOm51bGwsZGly
ZWN0aW9uOlwicmVjdm9ubHlcIixtaWQ6bnVsbCxyZWNlaXZlcjp7dHJhY2s6e2tpbmQ6XCJhdWRp
b1wifX0sc2VuZGVyOnt0cmFjazpudWxsfSxzdG9wcGVkOmZhbHNlfV0iIGJ1dCBnb3QgIltdIgor
RkFJTCBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aE9mZmVyVG9SZWNlaXZlVmlkZW8gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIlt7Y3VycmVudERpcmVjdGlvbjpudWxsLGRpcmVjdGlvbjpcInJlY3Zv
bmx5XCIsbWlkOm51bGwscmVjZWl2ZXI6e3RyYWNrOntraW5kOlwidmlkZW9cIn19LHNlbmRlcjp7
dHJhY2s6bnVsbH0sc3RvcHBlZDpmYWxzZX1dIiBidXQgZ290ICJbXSIKK0ZBSUwgY2hlY2tBZGRU
cmFuc2NlaXZlcldpdGhPZmZlclRvUmVjZWl2ZUJvdGggYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
Ilt7Y3VycmVudERpcmVjdGlvbjpudWxsLGRpcmVjdGlvbjpcInJlY3Zvbmx5XCIsbWlkOm51bGws
cmVjZWl2ZXI6e3RyYWNrOntraW5kOlwiYXVkaW9cIn19LHNlbmRlcjp7dHJhY2s6bnVsbH0sc3Rv
cHBlZDpmYWxzZX0se2N1cnJlbnREaXJlY3Rpb246bnVsbCxkaXJlY3Rpb246XCJyZWN2b25seVwi
LG1pZDpudWxsLHJlY2VpdmVyOnt0cmFjazp7a2luZDpcInZpZGVvXCJ9fSxzZW5kZXI6e3RyYWNr
Om51bGx9LHN0b3BwZWQ6ZmFsc2V9XSIgYnV0IGdvdCAiW10iCitGQUlMIGNoZWNrQWRkVHJhbnNj
ZWl2ZXJXaXRoU2V0UmVtb3RlT2ZmZXJTZW5kaW5nIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJb
e3N0cmVhbXM6W3tpZDpcIjJmNjM2ZDY5LWU1ZDAtNDZkNi1iNDliLWJhZDU0N2QzMjIyOVwifV0s
dHJhY2s6e319XSIgYnV0IGdvdCAiW3tzdHJlYW1zOltdLHRyYWNrOnt9fV0iCitGQUlMIGNoZWNr
QWRkVHJhbnNjZWl2ZXJXaXRoU2V0UmVtb3RlT2ZmZXJOb1NlbmQgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQg
dG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIKK1BBU1MgY2hlY2tBZGRUcmFuc2NlaXZl
ckJhZEtpbmQgCitGQUlMIGNoZWNrTm9NaWRPZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJPcGVyYXRpb25FcnJvcjogRmFpbGVkIHRvIHNl
dCByZW1vdGUgb2ZmZXIgc2RwOiBUaGUgQlVORExFIGdyb3VwIGNvbnRhaW5zIE1JRDowIG1hdGNo
aW5nIG5vIG09IHNlY3Rpb24uIgorRkFJTCBjaGVja1NldERpcmVjdGlvbiBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IEF0dGVt
cHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIgorRkFJTCBjaGVja0N1cnJlbnRE
aXJlY3Rpb24gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5
LiIKK0ZBSUwgY2hlY2tTZW5kcmVjdldpdGhOb1NlbmRUcmFjayBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0
byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIgorRkFJTCBjaGVja1NlbmRyZWN2V2l0aFRy
YWNrbGVzc1N0cmVhbSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiW3tzdHJlYW1zOlt7aWQ6XCJi
ZDQ5NGI4Yi1jMmEyLTRjMDgtYjJhNS1lY2RhNWJhY2Y0ZTRcIn1dLHRyYWNrOnt9fV0iIGJ1dCBn
b3QgIlt7c3RyZWFtczpbXSx0cmFjazp7fX1dIgorUEFTUyBjaGVja0FkZFRyYW5zY2VpdmVyTm9U
cmFja0RvZXNudFBhaXIgCitQQVNTIGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoVHJhY2tEb2VzbnRQ
YWlyIAorUEFTUyBjaGVja0FkZFRyYW5zY2VpdmVyVGhlblJlcGxhY2VUcmFja0RvZXNudFBhaXIg
CitGQUlMIGNoZWNrQWRkVHJhbnNjZWl2ZXJUaGVuQWRkVHJhY2tQYWlycyBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiW3tzZW5kZXI6e3RyYWNrOnt9fX1dIiBidXQgZ290ICJbe3NlbmRlcjp7dHJh
Y2s6e319fSx7fV0iCitQQVNTIGNoZWNrQWRkVHJhY2tQYWlycyAKK1BBU1MgY2hlY2tSZXBsYWNl
VHJhY2tOdWxsRG9lc250UHJldmVudFBhaXJpbmcgCitQQVNTIGNoZWNrUmVtb3ZlQW5kUmVhZGQg
CitQQVNTIGNoZWNrQWRkVHJhY2tFeGlzdGluZ1RyYW5zY2VpdmVyVGhlblJlbW92ZSAKK0ZBSUwg
Y2hlY2tSZW1vdmVUcmFja05lZ290aWF0aW9uIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS4iCitUSU1FT1VUIGNoZWNrTXV0ZSBUZXN0IHRpbWVkIG91dAor
Tk9UUlVOIGNoZWNrT25BZGRTdHJlYW0gCitOT1RSVU4gY2hlY2tTdG9wIAorTk9UUlVOIGNoZWNr
U3RvcEFmdGVyQ3JlYXRlT2ZmZXIgCitOT1RSVU4gY2hlY2tTdG9wQWZ0ZXJTZXRMb2NhbE9mZmVy
IAorTk9UUlVOIGNoZWNrU3RvcEFmdGVyU2V0UmVtb3RlT2ZmZXIgCitOT1RSVU4gY2hlY2tTdG9w
QWZ0ZXJDcmVhdGVBbnN3ZXIgCitOT1RSVU4gY2hlY2tTdG9wQWZ0ZXJTZXRMb2NhbEFuc3dlciAK
K05PVFJVTiBjaGVja1N0b3BBZnRlckNsb3NlIAorTk9UUlVOIGNoZWNrTG9jYWxSb2xsYmFjayAK
K05PVFJVTiBjaGVja1JvbGxiYWNrQW5kU2V0UmVtb3RlT2ZmZXJXaXRoRGlmZmVyZW50VHlwZSAK
K05PVFJVTiBjaGVja1JlbW90ZVJvbGxiYWNrIAorTk9UUlVOIGNoZWNrTXNlY3Rpb25SZXVzZSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUnRwVHJhbnNjZWl2ZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVyLmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODYwZjVkZTJkMmFjYTRiM2NiY2M2ZTIwMWM4ZGM3NzRmMTU0MzQ2
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVyLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwy
MzU3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+UlRD
UnRwVHJhbnNjZWl2ZXI8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAndXNlIHN0cmljdCc7CisKKyAgY29uc3QgY2hlY2tU
aHJvd3MgPSBhc3luYyAoZnVuYywgZXhjZXB0aW9uTmFtZSwgZGVzY3JpcHRpb24pID0+IHsKKyAg
ICB0cnkgeworICAgICAgYXdhaXQgZnVuYygpOworICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGRl
c2NyaXB0aW9uICsgIiB0aHJvd3MgIiArIGV4Y2VwdGlvbk5hbWUpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZS5uYW1lLCBleGNlcHRpb25OYW1lLCBkZXNjcmlwdGlv
biArICIgdGhyb3dzICIgKyBleGNlcHRpb25OYW1lKTsKKyAgICB9CisgIH07CisKKyAgY29uc3Qg
c3RvcFRyYWNrcyA9ICguLi5zdHJlYW1zKSA9PiB7CisgICAgc3RyZWFtcy5mb3JFYWNoKHN0cmVh
bSA9PiBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpKTsK
KyAgfTsKKworICBjb25zdCBjb2xsZWN0RXZlbnRzID0gKHRhcmdldCwgbmFtZSwgY2hlY2spID0+
IHsKKyAgICBjb25zdCBldmVudHMgPSBbXTsKKyAgICBjb25zdCBoYW5kbGVyID0gZSA9PiB7Cisg
ICAgICBjaGVjayhlKTsKKyAgICAgIGV2ZW50cy5wdXNoKGUpOworICAgIH07CisKKyAgICB0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKTsKKworICAgIGNvbnN0IGZpbmlzaENv
bGxlY3RpbmcgPSAoKSA9PiB7CisgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1l
LCBoYW5kbGVyKTsKKyAgICAgIHJldHVybiBldmVudHM7CisgICAgfTsKKworICAgIHJldHVybiB7
ZmluaXNoOiBmaW5pc2hDb2xsZWN0aW5nfTsKKyAgfTsKKworICBjb25zdCBjb2xsZWN0QWRkVHJh
Y2tFdmVudHMgPSBzdHJlYW0gPT4geworICAgIGNvbnN0IGNoZWNrRXZlbnQgPSBlID0+IHsKKyAg
ICAgIGFzc2VydF90cnVlKGUudHJhY2sgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrLCAiVHJh
Y2sgaXMgc2V0IG9uIGV2ZW50Iik7CisgICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0uZ2V0VHJhY2tz
KCkuaW5jbHVkZXMoZS50cmFjayksCisgICAgICAgICJ0cmFjayBpbiBhZGR0cmFjayBldmVudCBp
cyBpbiB0aGUgc3RyZWFtIik7CisgICAgfTsKKyAgICByZXR1cm4gY29sbGVjdEV2ZW50cyhzdHJl
YW0sICJhZGR0cmFjayIsIGNoZWNrRXZlbnQpOworICB9OworCisgIGNvbnN0IGNvbGxlY3RSZW1v
dmVUcmFja0V2ZW50cyA9IHN0cmVhbSA9PiB7CisgICAgY29uc3QgY2hlY2tFdmVudCA9IGUgPT4g
eworICAgICAgYXNzZXJ0X3RydWUoZS50cmFjayBpbnN0YW5jZW9mIE1lZGlhU3RyZWFtVHJhY2ss
ICJUcmFjayBpcyBzZXQgb24gZXZlbnQiKTsKKyAgICAgIGFzc2VydF90cnVlKCFzdHJlYW0uZ2V0
VHJhY2tzKCkuaW5jbHVkZXMoZS50cmFjayksCisgICAgICAgICJ0cmFjayBpbiByZW1vdmV0cmFj
ayBldmVudCBpcyBub3QgaW4gdGhlIHN0cmVhbSIpOworICAgIH07CisgICAgcmV0dXJuIGNvbGxl
Y3RFdmVudHMoc3RyZWFtLCAicmVtb3ZldHJhY2siLCBjaGVja0V2ZW50KTsKKyAgfTsKKworICBj
b25zdCBjb2xsZWN0VHJhY2tFdmVudHMgPSBwYyA9PiB7CisgICAgY29uc3QgY2hlY2tFdmVudCA9
IGUgPT4geworICAgICAgYXNzZXJ0X3RydWUoZS50cmFjayBpbnN0YW5jZW9mIE1lZGlhU3RyZWFt
VHJhY2ssICJUcmFjayBpcyBzZXQgb24gZXZlbnQiKTsKKyAgICAgIGFzc2VydF90cnVlKGUucmVj
ZWl2ZXIgaW5zdGFuY2VvZiBSVENSdHBSZWNlaXZlciwgIlJlY2VpdmVyIGlzIHNldCBvbiBldmVu
dCIpOworICAgICAgYXNzZXJ0X3RydWUoZS50cmFuc2NlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFRy
YW5zY2VpdmVyLCAiVHJhbnNjZWl2ZXIgaXMgc2V0IG9uIGV2ZW50Iik7CisgICAgICBhc3NlcnRf
dHJ1ZShBcnJheS5pc0FycmF5KGUuc3RyZWFtcyksICJTdHJlYW1zIGlzIHNldCBvbiBldmVudCIp
OworICAgICAgZS5zdHJlYW1zLmZvckVhY2goc3RyZWFtID0+IHsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUoc3RyZWFtLmdldFRyYWNrcygpLmluY2x1ZGVzKGUudHJhY2spLAorICAgICAgICAgICAiRWFj
aCBzdHJlYW0gaW4gZXZlbnQgY29udGFpbnMgdGhlIHRyYWNrIik7CisgICAgICB9KTsKKyAgICAg
IGFzc2VydF9lcXVhbHMoZS5yZWNlaXZlciwgZS50cmFuc2NlaXZlci5yZWNlaXZlciwKKyAgICAg
ICAgICAgICAgICAgICAgIlJlY2VpdmVyIGJlbG9uZ3MgdG8gdHJhbnNjZWl2ZXIiKTsKKyAgICAg
IGFzc2VydF9lcXVhbHMoZS50cmFjaywgZS5yZWNlaXZlci50cmFjaywKKyAgICAgICAgICAgICAg
ICAgICAgIlRyYWNrIGJlbG9uZ3MgdG8gcmVjZWl2ZXIiKTsKKyAgICB9OworCisgICAgcmV0dXJu
IGNvbGxlY3RFdmVudHMocGMsICJ0cmFjayIsIGNoZWNrRXZlbnQpOworICB9OworCisgIGNvbnN0
IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMgPSBhc3luYyAocGMsIGRlc2Mp
ID0+IHsKKyAgICBjb25zdCB0cmFja0V2ZW50Q29sbGVjdG9yID0gY29sbGVjdFRyYWNrRXZlbnRz
KHBjKTsKKyAgICBhd2FpdCBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjKTsKKyAgICByZXR1
cm4gdHJhY2tFdmVudENvbGxlY3Rvci5maW5pc2goKTsKKyAgfTsKKworICBjb25zdCBvZmZlckFu
c3dlciA9IGFzeW5jIChvZmZlcmVyLCBhbnN3ZXJlcikgPT4geworICAgIGNvbnN0IG9mZmVyID0g
YXdhaXQgb2ZmZXJlci5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IGFuc3dlcmVyLnNldFJlbW90
ZURlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2FpdCBvZmZlcmVyLnNldExvY2FsRGVzY3JpcHRp
b24ob2ZmZXIpOworICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IGFuc3dlcmVyLmNyZWF0ZUFuc3dl
cigpOworICAgIGF3YWl0IG9mZmVyZXIuc2V0UmVtb3RlRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAg
ICBhd2FpdCBhbnN3ZXJlci5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgIH07CisKKyAg
Y29uc3QgdHJpY2tsZSA9ICh0LCBwYzEsIHBjMikgPT4geworICAgIHBjMS5vbmljZWNhbmRpZGF0
ZSA9IHQuc3RlcF9mdW5jKGFzeW5jIGUgPT4geworICAgICAgaWYgKGUuY2FuZGlkYXRlKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgYXdhaXQgcGMyLmFkZEljZUNhbmRpZGF0ZShlLmNhbmRp
ZGF0ZSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZShmYWxz
ZSwgImFkZEljZUNhbmRpZGF0ZSB0aHJldyBlcnJvcjogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9KTsKKyAgfTsKKworICBjb25zdCBpY2VDb25uZWN0ZWQgPSBwYyA9PiB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgIGNv
bnN0IGljZUNoZWNrID0gKCkgPT4geworICAgICAgICBpZiAocGMuaWNlQ29ubmVjdGlvblN0YXRl
ID09ICJjb25uZWN0ZWQiKSB7CisgICAgICAgICAgYXNzZXJ0X3RydWUodHJ1ZSwgIklDRSBjb25u
ZWN0ZWQiKTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
cGMuaWNlQ29ubmVjdGlvblN0YXRlID09ICJmYWlsZWQiKSB7CisgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZmFsc2UsICJJQ0UgZmFpbGVkIik7CisgICAgICAgICAgcmVqZWN0KCk7CisgICAgICAgIH0K
KyAgICAgIH07CisKKyAgICAgIGljZUNoZWNrKCk7CisgICAgICBwYy5vbmljZWNvbm5lY3Rpb25z
dGF0ZWNoYW5nZSA9IGljZUNoZWNrOworICAgIH0pOworICB9OworCisgIGNvbnN0IG5lZ290aWF0
aW9uTmVlZGVkID0gcGMgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHBj
Lm9ubmVnb3RpYXRpb25uZWVkZWQgPSByZXNvbHZlKTsKKyAgfTsKKworICBjb25zdCBjb3VudEV2
ZW50cyA9ICh0YXJnZXQsIG5hbWUpID0+IHsKKyAgICBjb25zdCByZXN1bHQgPSB7Y291bnQ6IDB9
OworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGUgPT4gcmVzdWx0LmNvdW50Kysp
OworICAgIHJldHVybiByZXN1bHQ7CisgIH07CisKKyAgY29uc3QgZ290TXV0ZUV2ZW50ID0gYXN5
bmMgdHJhY2sgPT4geworICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gdHJhY2suYWRkRXZlbnRM
aXN0ZW5lcigibXV0ZSIsIHIsIHtvbmNlOiB0cnVlfSkpOworCisgICAgYXNzZXJ0X3RydWUodHJh
Y2subXV0ZWQsICJ0cmFjayBzaG91bGQgYmUgbXV0ZWQgYWZ0ZXIgb25tdXRlIik7CisgIH07CisK
KyAgY29uc3QgZ290VW5tdXRlRXZlbnQgPSBhc3luYyB0cmFjayA9PiB7CisgICAgYXdhaXQgbmV3
IFByb21pc2UociA9PiB0cmFjay5hZGRFdmVudExpc3RlbmVyKCJ1bm11dGUiLCByLCB7b25jZTog
dHJ1ZX0pKTsKKworICAgIGFzc2VydF90cnVlKCF0cmFjay5tdXRlZCwgInRyYWNrIHNob3VsZCBu
b3QgYmUgbXV0ZWQgYWZ0ZXIgb251bm11dGUiKTsKKyAgfTsKKworICAvLyBjb21wYXJhYmxlKCkg
LSBwcm9kdWNlcyBjb3B5IG9mIG9iamVjdCB0aGF0IGlzIEpTT04gY29tcGFyYWJsZS4KKyAgLy8g
byA9IG9yaWdpbmFsIG9iamVjdCAocmVxdWlyZWQpCisgIC8vIHQgPSB0ZW1wbGF0ZSBvZiB3aGF0
IHRvIGV4YW1pbmUuIFVzZWZ1bCBpZiBvIGlzIG5vbi1lbnVtZXJhYmxlIChvcHRpb25hbCkKKwor
ICBjb25zdCBjb21wYXJhYmxlID0gKG8sIHQgPSBvKSA9PiB7CisgICAgaWYgKHR5cGVvZiBvICE9
ICdvYmplY3QnIHx8ICFvKSB7CisgICAgICByZXR1cm4gbzsKKyAgICB9CisgICAgaWYgKEFycmF5
LmlzQXJyYXkodCkgJiYgQXJyYXkuaXNBcnJheShvKSkgeworICAgICAgcmV0dXJuIG8ubWFwKChu
LCBpKSA9PiBjb21wYXJhYmxlKG4sIHRbaV0pKTsKKyAgICB9CisgICAgcmV0dXJuIE9iamVjdC5r
ZXlzKHQpLnNvcnQoKQorICAgICAgICAucmVkdWNlKChyLCBrZXkpID0+IChyW2tleV0gPSBjb21w
YXJhYmxlKG9ba2V5XSwgdFtrZXldKSwgciksIHt9KTsKKyAgfTsKKworICBjb25zdCBzdHJpcEtl
eVF1b3RlcyA9IHMgPT4gcy5yZXBsYWNlKC8iKFx3KykiOi9nLCAiJDE6Iik7CisKKyAgY29uc3Qg
aGFzUHJvcHMgPSAob2JzZXJ2ZWQsIGV4cGVjdGVkKSA9PiB7CisgICAgY29uc3Qgb2JzZXJ2YWJs
ZSA9IGNvbXBhcmFibGUob2JzZXJ2ZWQsIGV4cGVjdGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0
cmlwS2V5UXVvdGVzKEpTT04uc3RyaW5naWZ5KG9ic2VydmFibGUpKSwKKyAgICAgICBzdHJpcEtl
eVF1b3RlcyhKU09OLnN0cmluZ2lmeShjb21wYXJhYmxlKGV4cGVjdGVkKSkpKTsKKyAgfTsKKwor
ICBjb25zdCBoYXNQcm9wc0FuZFVuaXF1ZU1pZHMgPSAob2JzZXJ2ZWQsIGV4cGVjdGVkKSA9PiB7
CisgICAgaGFzUHJvcHMob2JzZXJ2ZWQsIGV4cGVjdGVkKTsKKworICAgIGNvbnN0IG1pZHMgPSBb
XTsKKyAgICBvYnNlcnZlZC5mb3JFYWNoKCh0cmFuc2NlaXZlciwgaSkgPT4geworICAgICAgaWYg
KCEoIm1pZCIgaW4gZXhwZWN0ZWRbaV0pKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHRy
YW5zY2VpdmVyLm1pZCwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHRyYW5z
Y2VpdmVyLm1pZCwgInN0cmluZyIpOworICAgICAgfQorICAgICAgaWYgKHRyYW5zY2VpdmVyLm1p
ZCkgeworICAgICAgICBhc3NlcnRfZmFsc2UobWlkcy5pbmNsdWRlcyh0cmFuc2NlaXZlci5taWQp
LCAibWlkIG11c3QgYmUgdW5pcXVlIik7CisgICAgICAgIG1pZHMucHVzaCh0cmFuc2NlaXZlci5t
aWQpOworICAgICAgfQorICAgIH0pOworICB9OworCisgIGNvbnN0IGNoZWNrQWRkVHJhbnNjZWl2
ZXJOb1RyYWNrID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworCisgICAgaGFz
UHJvcHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCksIFtdKTsKKworICAgIHBjLmFkZFRyYW5zY2VpdmVy
KCJhdWRpbyIpOworICAgIHBjLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpOworCisgICAgaGFzUHJv
cHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICBy
ZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIiwgcmVhZHlTdGF0ZTogImxpdmUiLCBtdXRl
ZDogdHJ1ZX19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBk
aXJlY3Rpb246ICJzZW5kcmVjdiIsCisgICAgICAgICAgbWlkOiBudWxsLAorICAgICAgICAgIGN1
cnJlbnREaXJlY3Rpb246IG51bGwsCisgICAgICAgICAgc3RvcHBlZDogZmFsc2UKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgIHJlY2VpdmVyOiB7dHJhY2s6IHtraW5kOiAidmlkZW8i
LCByZWFkeVN0YXRlOiAibGl2ZSIsIG11dGVkOiB0cnVlfX0sCisgICAgICAgICAgc2VuZGVyOiB7
dHJhY2s6IG51bGx9LAorICAgICAgICAgIGRpcmVjdGlvbjogInNlbmRyZWN2IiwKKyAgICAgICAg
ICBtaWQ6IG51bGwsCisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogbnVsbCwKKyAgICAgICAg
ICBzdG9wcGVkOiBmYWxzZQorICAgICAgICB9CisgICAgICBdKTsKKyAgfTsKKworICBjb25zdCBj
aGVja0FkZFRyYW5zY2VpdmVyV2l0aFRyYWNrID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNs
b3NlKCkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZX0pOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCBhdWRpbyA9IHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIGNvbnN0IHZpZGVvID0gc3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF07CisKKyAgICBwYy5hZGRUcmFuc2NlaXZlcihhdWRpbyk7CisgICAgcGMuYWRk
VHJhbnNjZWl2ZXIodmlkZW8pOworCisgICAgaGFzUHJvcHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCks
CisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDog
ImF1ZGlvIn19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBhdWRpb30sCisgICAgICAgICAg
ZGlyZWN0aW9uOiAic2VuZHJlY3YiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBj
dXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVv
In19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiB2aWRlb30sCisgICAgICAgICAgZGlyZWN0
aW9uOiAic2VuZHJlY3YiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50
RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0KKyAg
ICAgIF0pOworICB9OworCisgIGNvbnN0IGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoQWRkVHJhY2sg
PSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwor
ICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdHJlYW0g
PSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWUs
IHZpZGVvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdG9wVHJhY2tzKHN0cmVh
bSkpOworICAgIGNvbnN0IGF1ZGlvID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAg
Y29uc3QgdmlkZW8gPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsKKworICAgIHBjLmFkZFRy
YWNrKGF1ZGlvLCBzdHJlYW0pOworICAgIHBjLmFkZFRyYWNrKHZpZGVvLCBzdHJlYW0pOworCisg
ICAgaGFzUHJvcHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAg
ICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIn19LAorICAgICAgICAgIHNl
bmRlcjoge3RyYWNrOiBhdWRpb30sCisgICAgICAgICAgZGlyZWN0aW9uOiAic2VuZHJlY3YiLAor
ICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAor
ICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIn19LAorICAgICAgICAgIHNlbmRlcjog
e3RyYWNrOiB2aWRlb30sCisgICAgICAgICAgZGlyZWN0aW9uOiAic2VuZHJlY3YiLAorICAgICAg
ICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAg
ICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0KKyAgICAgIF0pOworICB9OworCisgIGNvbnN0
IGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoRGlyZWN0aW9uID0gYXN5bmMgdCA9PiB7CisgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjLmNsb3NlKCkpOworCisgICAgcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwge2RpcmVjdGlv
bjogInJlY3Zvbmx5In0pOworICAgIHBjLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIsIHtkaXJlY3Rp
b246ICJyZWN2b25seSJ9KTsKKworICAgIGhhc1Byb3BzKHBjLmdldFRyYW5zY2VpdmVycygpLAor
ICAgICAgWworICAgICAgICB7CisgICAgICAgICAgcmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJh
dWRpbyJ9fSwKKyAgICAgICAgICBzZW5kZXI6IHt0cmFjazogbnVsbH0sCisgICAgICAgICAgZGly
ZWN0aW9uOiAicmVjdm9ubHkiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJy
ZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIn19
LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246
ICJyZWN2b25seSIsCisgICAgICAgICAgbWlkOiBudWxsLAorICAgICAgICAgIGN1cnJlbnREaXJl
Y3Rpb246IG51bGwsCisgICAgICAgICAgc3RvcHBlZDogZmFsc2UKKyAgICAgICAgfQorICAgICAg
XSk7CisgIH07CisKKyAgY29uc3QgY2hlY2tBZGRUcmFuc2NlaXZlcldpdGhTdHJlYW0gPSBhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBhdWRpb1N0cmVhbSA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0p
OworICAgIGNvbnN0IHZpZGVvU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdG9w
VHJhY2tzKGF1ZGlvU3RyZWFtLCB2aWRlb1N0cmVhbSkpOworCisgICAgY29uc3QgYXVkaW8gPSBh
dWRpb1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIGNvbnN0IHZpZGVvID0gdmlkZW9T
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsKKworICAgIHBjLmFkZFRyYW5zY2VpdmVyKGF1ZGlv
LCB7c3RyZWFtczogW2F1ZGlvU3RyZWFtXX0pOworICAgIHBjLmFkZFRyYW5zY2VpdmVyKHZpZGVv
LCB7c3RyZWFtczogW3ZpZGVvU3RyZWFtXX0pOworCisgICAgaGFzUHJvcHMocGMuZ2V0VHJhbnNj
ZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNr
OiB7a2luZDogImF1ZGlvIn19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBhdWRpb30sCisg
ICAgICAgICAgZGlyZWN0aW9uOiAic2VuZHJlY3YiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAg
ICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNl
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2lu
ZDogInZpZGVvIn19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiB2aWRlb30sCisgICAgICAg
ICAgZGlyZWN0aW9uOiAic2VuZHJlY3YiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAg
ICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAg
ICAgIH0KKyAgICAgIF0pOworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZl
cigpOworICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmNsdWRlcygiYT1tc2lkOiIgKyBhdWRp
b1N0cmVhbS5pZCArICIgIiArIGF1ZGlvLmlkKSwKKyAgICAgICJvZmZlciBjb250YWlucyB0aGUg
ZXhwZWN0ZWQgYXVkaW8gbXNpZCIpOworICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmNsdWRl
cygiYT1tc2lkOiIgKyB2aWRlb1N0cmVhbS5pZCArICIgIiArIHZpZGVvLmlkKSwKKyAgICAgICJv
ZmZlciBjb250YWlucyB0aGUgZXhwZWN0ZWQgdmlkZW8gbXNpZCIpOworICB9OworCisgIGNvbnN0
IGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoT2ZmZXJUb1JlY2VpdmUgPSBhc3luYyAodCwga2luZHMp
ID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisKKyAgICBjb25zdCBwcm9wc1RvU2V0ID0ga2lu
ZHMubWFwKGtpbmQgPT4geworICAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIikgeworICAgICAgICBy
ZXR1cm4gIm9mZmVyVG9SZWNlaXZlQXVkaW8iOworICAgICAgfSBlbHNlIGlmIChraW5kID09ICJ2
aWRlbyIpIHsKKyAgICAgICAgcmV0dXJuICJvZmZlclRvUmVjZWl2ZVZpZGVvIjsKKyAgICAgIH0K
KyAgICB9KTsKKworICAgIGNvbnN0IG9wdGlvbnMgPSB7fTsKKworICAgIGZvciAoY29uc3QgcHJv
cCBvZiBwcm9wc1RvU2V0KSB7CisgICAgICBvcHRpb25zW3Byb3BdID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBsZXQgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcihvcHRpb25zKTsKKworICAgIGNv
bnN0IGV4cGVjdGVkID0gW107CisKKyAgICBpZiAob3B0aW9ucy5vZmZlclRvUmVjZWl2ZUF1ZGlv
KSB7CisgICAgICBleHBlY3RlZC5wdXNoKAorICAgICAgICB7CisgICAgICAgICAgcmVjZWl2ZXI6
IHt0cmFjazoge2tpbmQ6ICJhdWRpbyJ9fSwKKyAgICAgICAgICBzZW5kZXI6IHt0cmFjazogbnVs
bH0sCisgICAgICAgICAgZGlyZWN0aW9uOiAicmVjdm9ubHkiLAorICAgICAgICAgIG1pZDogbnVs
bCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6
IGZhbHNlCisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChvcHRpb25zLm9mZmVyVG9SZWNl
aXZlVmlkZW8pIHsKKyAgICAgIGV4cGVjdGVkLnB1c2goCisgICAgICAgIHsKKyAgICAgICAgICBy
ZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIn19LAorICAgICAgICAgIHNlbmRlcjoge3Ry
YWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJyZWN2b25seSIsCisgICAgICAgICAg
bWlkOiBudWxsLAorICAgICAgICAgIGN1cnJlbnREaXJlY3Rpb246IG51bGwsCisgICAgICAgICAg
c3RvcHBlZDogZmFsc2UKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaGFzUHJvcHMocGMuZ2V0
VHJhbnNjZWl2ZXJzKCksIGV4cGVjdGVkKTsKKworICAgIC8vIFRlc3Qgb2ZmZXJUb1JlY2VpdmU6
IGZhbHNlCisgICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzVG9TZXQpIHsKKyAgICAgIG9wdGlv
bnNbcHJvcF0gPSBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGF0IHNlbmRyZWN2IGdv
ZXMgdG8gc2VuZG9ubHkKKyAgICBmb3IgKGNvbnN0IHRyYW5zY2VpdmVyIG9mIHBjLmdldFRyYW5z
Y2VpdmVycygpKSB7CisgICAgICB0cmFuc2NlaXZlci5kaXJlY3Rpb24gPSAic2VuZHJlY3YiOwor
ICAgIH0KKworICAgIGZvciAoY29uc3QgdHJhbnNjZWl2ZXJDaGVjayBvZiBleHBlY3RlZCkgewor
ICAgICAgdHJhbnNjZWl2ZXJDaGVjay5kaXJlY3Rpb24gPSAic2VuZG9ubHkiOworICAgIH0KKwor
ICAgIG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIob3B0aW9ucyk7CisgICAgaGFzUHJvcHMo
cGMuZ2V0VHJhbnNjZWl2ZXJzKCksIGV4cGVjdGVkKTsKKworICAgIC8vIENoZWNrIHRoYXQgcmVj
dm9ubHkgZ29lcyB0byBpbmFjdGl2ZQorICAgIGZvciAoY29uc3QgdHJhbnNjZWl2ZXIgb2YgcGMu
Z2V0VHJhbnNjZWl2ZXJzKCkpIHsKKyAgICAgIHRyYW5zY2VpdmVyLmRpcmVjdGlvbiA9ICJyZWN2
b25seSI7CisgICAgfQorCisgICAgZm9yIChjb25zdCB0cmFuc2NlaXZlckNoZWNrIG9mIGV4cGVj
dGVkKSB7CisgICAgICB0cmFuc2NlaXZlckNoZWNrLmRpcmVjdGlvbiA9ICJpbmFjdGl2ZSI7Cisg
ICAgfQorCisgICAgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcihvcHRpb25zKTsKKyAgICBo
YXNQcm9wcyhwYy5nZXRUcmFuc2NlaXZlcnMoKSwgZXhwZWN0ZWQpOworICB9OworCisgIGNvbnN0
IGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoU2V0UmVtb3RlT2ZmZXJTZW5kaW5nID0gYXN5bmMgdCA9
PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgY29uc3Qg
cGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
YzEuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7CisKKyAg
ICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFja3Moc3Ry
ZWFtKSk7CisgICAgY29uc3QgdHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAg
ICBwYzEuYWRkVHJhbnNjZWl2ZXIodHJhY2ssIHtzdHJlYW1zOiBbc3RyZWFtXX0pOworCisgICAg
Y29uc3Qgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKKworICAgIGNvbnN0IHRyYWNr
RXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5UcmFja0V2ZW50cyhwYzIs
IG9mZmVyKTsKKyAgICBoYXNQcm9wcyh0cmFja0V2ZW50cywKKyAgICAgIFsKKyAgICAgICAgewor
ICAgICAgICAgIHRyYWNrOiBwYzIuZ2V0VHJhbnNjZWl2ZXJzKClbMF0ucmVjZWl2ZXIudHJhY2ss
CisgICAgICAgICAgc3RyZWFtczogW3tpZDogc3RyZWFtLmlkfV0KKyAgICAgICAgfQorICAgICAg
XSk7CisKKworICAgIGhhc1Byb3BzQW5kVW5pcXVlTWlkcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCks
CisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDog
ImF1ZGlvIn19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBk
aXJlY3Rpb246ICJyZWN2b25seSIsCisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogbnVsbCwK
KyAgICAgICAgICBzdG9wcGVkOiBmYWxzZQorICAgICAgICB9CisgICAgICBdKTsKKyAgfTsKKwor
ICBjb25zdCBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aFNldFJlbW90ZU9mZmVyTm9TZW5kID0gYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
Y29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYzEuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7
CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFj
a3Moc3RyZWFtKSk7CisgICAgY29uc3QgdHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVsw
XTsKKyAgICBwYzEuYWRkVHJhbnNjZWl2ZXIodHJhY2spOworICAgIHBjMS5nZXRUcmFuc2NlaXZl
cnMoKVswXS5kaXJlY3Rpb24gPSAicmVjdm9ubHkiOworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2Fp
dCBwYzEuY3JlYXRlT2ZmZXIoKTsKKyAgICBjb25zdCB0cmFja0V2ZW50cyA9IGF3YWl0IHNldFJl
bW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMocGMyLCBvZmZlcik7CisgICAgaGFzUHJv
cHModHJhY2tFdmVudHMsIFtdKTsKKworICAgIGhhc1Byb3BzQW5kVW5pcXVlTWlkcyhwYzIuZ2V0
VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjog
e3RyYWNrOiB7a2luZDogImF1ZGlvIn19LAorICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxs
fSwKKyAgICAgICAgICAvLyBydGN3ZWItanNlcCBzYXlzIHRoaXMgaXMgcmVjdm9ubHksIHczYy13
ZWJydGMgZG9lcyBub3QuLi4KKyAgICAgICAgICBkaXJlY3Rpb246ICJyZWN2b25seSIsCisgICAg
ICAgICAgY3VycmVudERpcmVjdGlvbjogbnVsbCwKKyAgICAgICAgICBzdG9wcGVkOiBmYWxzZQor
ICAgICAgICB9CisgICAgICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja0FkZFRyYW5zY2VpdmVy
QmFkS2luZCA9IGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0
aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKKyAgICB0cnkgewor
ICAgICAgcGMuYWRkVHJhbnNjZWl2ZXIoImZvbyIpOworICAgICAgYXNzZXJ0X3RydWUoZmFsc2Us
ICdhZGRUcmFuc2NlaXZlcigiZm9vIikgdGhyb3dzJyk7CisgICAgfQorICAgIGNhdGNoIChlKSB7
CisgICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgeworICAgICAgICBhc3NlcnRfdHJ1
ZSh0cnVlLCAnYWRkVHJhbnNjZWl2ZXIoImZvbyIpIHRocm93cyBhIFR5cGVFcnJvcicpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsICdhZGRUcmFuc2NlaXZlcigi
Zm9vIikgdGhyb3dzIGEgVHlwZUVycm9yJyk7CisgICAgICB9CisgICAgfQorCisgICAgaGFzUHJv
cHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCksIFtdKTsKKyAgfTsKKworICBjb25zdCBjaGVja05vTWlk
T2ZmZXIgPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBj
Mi5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpWzBdOworICAgIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKworICAgIGNv
bnN0IG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMxLnNldExv
Y2FsRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgLy8gUmVtb3ZlIG1pZCBhdHRyCisgICAgb2Zm
ZXIuc2RwID0gb2ZmZXIuc2RwLnJlcGxhY2UoImE9bWlkOiIsICJhPXVua25vd25hdHRyOiIpOwor
ICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICBoYXNQcm9w
c0FuZFVuaXF1ZU1pZHMocGMyLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7
CisgICAgICAgICAgcmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJhdWRpbyJ9fSwKKyAgICAgICAg
ICBzZW5kZXI6IHt0cmFjazogbnVsbH0sCisgICAgICAgICAgZGlyZWN0aW9uOiAicmVjdm9ubHki
LAorICAgICAgICAgIGN1cnJlbnREaXJlY3Rpb246IG51bGwsCisgICAgICAgICAgc3RvcHBlZDog
ZmFsc2UKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICBjb25zdCBhbnN3ZXIgPSBhd2FpdCBw
YzIuY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5z
d2VyKTsKKyAgICBhd2FpdCBwYzEuc2V0UmVtb3RlRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgfTsK
KworICBjb25zdCBjaGVja0FkZFRyYW5zY2VpdmVyTm9UcmFja0RvZXNudFBhaXIgPSBhc3luYyB0
ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25z
dCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKwor
ICAgIHBjMS5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsKKyAgICBwYzIuYWRkVHJhbnNjZWl2ZXIo
ImF1ZGlvIik7CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOwor
ICAgIGNvbnN0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5U
cmFja0V2ZW50cyhwYzIsIG9mZmVyKTsKKyAgICBoYXNQcm9wcyh0cmFja0V2ZW50cywKKyAgICAg
IFsKKyAgICAgICAgeworICAgICAgICAgIHRyYWNrOiBwYzIuZ2V0VHJhbnNjZWl2ZXJzKClbMV0u
cmVjZWl2ZXIudHJhY2ssCisgICAgICAgICAgc3RyZWFtczogW10KKyAgICAgICAgfQorICAgICAg
XSk7CisKKyAgICBoYXNQcm9wc0FuZFVuaXF1ZU1pZHMocGMyLmdldFRyYW5zY2VpdmVycygpLAor
ICAgICAgWworICAgICAgICB7bWlkOiBudWxsfSwgLy8gbm8gYWRkVHJhY2sgbWFnaWMsIGRvZXNu
J3QgYXV0by1wYWlyCisgICAgICAgIHt9IC8vIENyZWF0ZWQgYnkgU1JECisgICAgICBdKTsKKyAg
fTsKKworICBjb25zdCBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aFRyYWNrRG9lc250UGFpciA9IGFz
eW5jIHQgPT4geworICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAg
IGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gcGMxLmNsb3NlKCkpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkp
OworICAgIHBjMS5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsKKworICAgIGNvbnN0IHN0cmVhbSA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0p
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25z
dCB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjMi5hZGRUcmFuc2Nl
aXZlcih0cmFjayk7CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigp
OworICAgIGNvbnN0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1
cm5UcmFja0V2ZW50cyhwYzIsIG9mZmVyKTsKKyAgICBoYXNQcm9wcyh0cmFja0V2ZW50cywKKyAg
ICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHRyYWNrOiBwYzIuZ2V0VHJhbnNjZWl2ZXJzKClb
MV0ucmVjZWl2ZXIudHJhY2ssCisgICAgICAgICAgc3RyZWFtczogW10KKyAgICAgICAgfQorICAg
ICAgXSk7CisKKyAgICBoYXNQcm9wc0FuZFVuaXF1ZU1pZHMocGMyLmdldFRyYW5zY2VpdmVycygp
LAorICAgICAgWworICAgICAgICB7bWlkOiBudWxsLCBzZW5kZXI6IHt0cmFja319LAorICAgICAg
ICB7c2VuZGVyOiB7dHJhY2s6IG51bGx9fSAvLyBDcmVhdGVkIGJ5IFNSRAorICAgICAgXSk7Cisg
IH07CisKKyAgY29uc3QgY2hlY2tBZGRUcmFuc2NlaXZlclRoZW5SZXBsYWNlVHJhY2tEb2VzbnRQ
YWlyID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIu
Y2xvc2UoKSk7CisgICAgcGMxLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIpOworICAgIHBjMi5hZGRU
cmFuc2NlaXZlcigiYXVkaW8iKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5zZW5k
ZXIucmVwbGFjZVRyYWNrKHRyYWNrKTsKKworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMxLmNy
ZWF0ZU9mZmVyKCk7CisgICAgY29uc3QgdHJhY2tFdmVudHMgPSBhd2FpdCBzZXRSZW1vdGVEZXNj
cmlwdGlvblJldHVyblRyYWNrRXZlbnRzKHBjMiwgb2ZmZXIpOworICAgIGhhc1Byb3BzKHRyYWNr
RXZlbnRzLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgdHJhY2s6IHBjMi5nZXRUcmFu
c2NlaXZlcnMoKVsxXS5yZWNlaXZlci50cmFjaywKKyAgICAgICAgICBzdHJlYW1zOiBbXQorICAg
ICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1Byb3BzQW5kVW5pcXVlTWlkcyhwYzIuZ2V0VHJh
bnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHttaWQ6IG51bGwsIHNlbmRlcjoge3RyYWNr
fX0sCisgICAgICAgIHtzZW5kZXI6IHt0cmFjazogbnVsbH19IC8vIENyZWF0ZWQgYnkgU1JECisg
ICAgICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja0FkZFRyYW5zY2VpdmVyVGhlbkFkZFRyYWNr
UGFpcnMgPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBj
Mi5jbG9zZSgpKTsKKyAgICBwYzEuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIik7CisgICAgcGMyLmFk
ZFRyYW5zY2VpdmVyKCJhdWRpbyIpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBzdG9wVHJhY2tzKHN0cmVhbSkpOworICAgIGNvbnN0IHRyYWNrID0gc3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgcGMyLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0p
OworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKKyAgICBjb25z
dCB0cmFja0V2ZW50cyA9IGF3YWl0IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVu
dHMocGMyLCBvZmZlcik7CisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsCisgICAgICBbCisgICAg
ICAgIHsKKyAgICAgICAgICB0cmFjazogcGMyLmdldFRyYW5zY2VpdmVycygpWzBdLnJlY2VpdmVy
LnRyYWNrLAorICAgICAgICAgIHN0cmVhbXM6IFtdCisgICAgICAgIH0KKyAgICAgIF0pOworCisg
ICAgaGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsK
KyAgICAgICAge3NlbmRlcjoge3RyYWNrfX0KKyAgICAgIF0pOworICB9OworCisgIGNvbnN0IGNo
ZWNrQWRkVHJhY2tQYWlycyA9IGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOworICAgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gcGMyLmNsb3NlKCkpOworICAgIHBjMS5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsK
KworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNr
cyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
OworICAgIHBjMi5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKworICAgIGNvbnN0IG9mZmVyID0g
YXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgY29uc3QgdHJhY2tFdmVudHMgPSBhd2FpdCBz
ZXRSZW1vdGVEZXNjcmlwdGlvblJldHVyblRyYWNrRXZlbnRzKHBjMiwgb2ZmZXIpOworICAgIGhh
c1Byb3BzKHRyYWNrRXZlbnRzLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgdHJhY2s6
IHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5yZWNlaXZlci50cmFjaywKKyAgICAgICAgICBzdHJl
YW1zOiBbXQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1Byb3BzQW5kVW5pcXVlTWlk
cyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHtzZW5kZXI6IHt0cmFj
a319CisgICAgICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja1JlcGxhY2VUcmFja051bGxEb2Vz
bnRQcmV2ZW50UGFpcmluZyA9IGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOworICAgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gcGMyLmNsb3NlKCkpOworICAgIHBjMS5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsK
KworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNr
cyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
OworICAgIHBjMi5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKyAgICBwYzIuZ2V0VHJhbnNjZWl2
ZXJzKClbMF0uc2VuZGVyLnJlcGxhY2VUcmFjayhudWxsKTsKKworICAgIGNvbnN0IG9mZmVyID0g
YXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgY29uc3QgdHJhY2tFdmVudHMgPSBhd2FpdCBz
ZXRSZW1vdGVEZXNjcmlwdGlvblJldHVyblRyYWNrRXZlbnRzKHBjMiwgb2ZmZXIpOworICAgIGhh
c1Byb3BzKHRyYWNrRXZlbnRzLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgdHJhY2s6
IHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5yZWNlaXZlci50cmFjaywKKyAgICAgICAgICBzdHJl
YW1zOiBbXQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1Byb3BzQW5kVW5pcXVlTWlk
cyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHtzZW5kZXI6IHt0cmFj
azogbnVsbH19CisgICAgICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja1JlbW92ZUFuZFJlYWRk
ID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xv
c2UoKSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdG9w
VHJhY2tzKHN0cmVhbSkpOworICAgIGNvbnN0IHRyYWNrID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KClbMF07CisgICAgcGMxLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworCisgICAgYXdhaXQgb2Zm
ZXJBbnN3ZXIocGMxLCBwYzIpOworCisgICAgcGMxLnJlbW92ZVRyYWNrKHBjMS5nZXRTZW5kZXJz
KClbMF0pOworICAgIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKworICAgIGhhc1Byb3Bz
KHBjMS5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHNl
bmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJyZWN2b25seSIKKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIHNlbmRlcjoge3RyYWNrfSwKKyAgICAgICAg
ICBkaXJlY3Rpb246ICJzZW5kcmVjdiIKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICAvLyBw
YzEgaXMgb2ZmZXJlcgorICAgIGF3YWl0IG9mZmVyQW5zd2VyKHBjMSwgcGMyKTsKKworICAgIGhh
c1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAge2N1cnJlbnRE
aXJlY3Rpb246ICJpbmFjdGl2ZSJ9LAorICAgICAgICB7Y3VycmVudERpcmVjdGlvbjogInJlY3Zv
bmx5In0KKyAgICAgIF0pOworCisgICAgcGMxLnJlbW92ZVRyYWNrKHBjMS5nZXRTZW5kZXJzKClb
MV0pOworICAgIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKworICAgIGhhc1Byb3BzKHBj
MS5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHNlbmRl
cjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJyZWN2b25seSIKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAg
ICAgICBkaXJlY3Rpb246ICJyZWN2b25seSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgIHNlbmRlcjoge3RyYWNrfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJzZW5kcmVjdiIKKyAg
ICAgICAgfQorICAgICAgXSk7CisKKyAgICAvLyBwYzEgaXMgYW5zd2VyZXIuIFdlIG5lZWQgdG8g
Y3JlYXRlIGEgbmV3IHRyYW5zY2VpdmVyIHNvIHBjMSB3aWxsIGhhdmUKKyAgICAvLyBzb21ldGhp
bmcgdG8gYXR0YWNoIHRoZSByZS1hZGRlZCB0cmFjayB0bworICAgIHBjMi5hZGRUcmFuc2NlaXZl
cigiYXVkaW8iKTsKKworICAgIGF3YWl0IG9mZmVyQW5zd2VyKHBjMiwgcGMxKTsKKworICAgIGhh
c1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAge2N1cnJlbnRE
aXJlY3Rpb246ICJpbmFjdGl2ZSJ9LAorICAgICAgICB7Y3VycmVudERpcmVjdGlvbjogImluYWN0
aXZlIn0sCisgICAgICAgIHtjdXJyZW50RGlyZWN0aW9uOiAic2VuZHJlY3YifQorICAgICAgXSk7
CisgIH07CisKKyAgY29uc3QgY2hlY2tBZGRUcmFja0V4aXN0aW5nVHJhbnNjZWl2ZXJUaGVuUmVt
b3ZlID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgIHBjLmFkZFRyYW5z
Y2VpdmVyKCJhdWRpbyIpOworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGNvbnN0IGF1ZGlvID0g
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgbGV0IHNlbmRlciA9IHBjLmFkZFRyYWNr
KGF1ZGlvLCBzdHJlYW0pOworICAgIHBjLnJlbW92ZVRyYWNrKHNlbmRlcik7CisKKyAgICAvLyBD
YXVzZSB0cmFuc2NlaXZlciB0byBiZSBhc3NvY2lhdGVkCisgICAgYXdhaXQgcGMuc2V0TG9jYWxE
ZXNjcmlwdGlvbihhd2FpdCBwYy5jcmVhdGVPZmZlcigpKTsKKworICAgIC8vIE1ha2Ugc3VyZSBh
ZGQvcmVtb3ZlIHdvcmtzIHN0aWxsCisgICAgc2VuZGVyID0gcGMuYWRkVHJhY2soYXVkaW8sIHN0
cmVhbSk7CisgICAgcGMucmVtb3ZlVHJhY2soc2VuZGVyKTsKKworICAgIHN0b3BUcmFja3Moc3Ry
ZWFtKTsKKyAgfTsKKworICBjb25zdCBjaGVja1JlbW92ZVRyYWNrTmVnb3RpYXRpb24gPSBhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBj
b25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86IHRydWUsIHZpZGVvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiBzdG9wVHJhY2tzKHN0cmVhbSkpOworICAgIGNvbnN0IGF1ZGlvID0gc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKClbMF07CisgICAgcGMxLmFkZFRyYWNrKGF1ZGlvLCBzdHJlYW0pOworICAgIGNvbnN0
IHZpZGVvID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CisgICAgcGMxLmFkZFRyYWNrKHZp
ZGVvLCBzdHJlYW0pOworICAgIC8vIFdlIHdhbnQgYm90aCBhIHNlbmRyZWN2IGFuZCBzZW5kb25s
eSB0cmFuc2NlaXZlciB0byB0ZXN0IHRoYXQgdGhlCisgICAgLy8gYXBwcm9wcmlhdGUgZGlyZWN0
aW9uIGNoYW5nZXMgaGFwcGVuLgorICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMoKVsxXS5kaXJlY3Rp
b24gPSAic2VuZG9ubHkiOworCisgICAgbGV0IG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVy
KCk7CisKKyAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmVhbQorICAgIGxldCB0cmFj
a0V2ZW50Q29sbGVjdG9yID0gY29sbGVjdFRyYWNrRXZlbnRzKHBjMik7CisgICAgYXdhaXQgcGMy
LnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBsZXQgcGMyVHJhY2tFdmVudHMgPSB0
cmFja0V2ZW50Q29sbGVjdG9yLmZpbmlzaCgpOworICAgIGhhc1Byb3BzKHBjMlRyYWNrRXZlbnRz
LAorICAgICAgWworICAgICAgICB7c3RyZWFtczogW3tpZDogc3RyZWFtLmlkfV19LAorICAgICAg
ICB7c3RyZWFtczogW3tpZDogc3RyZWFtLmlkfV19CisgICAgICBdKTsKKyAgICBjb25zdCByZWNl
aXZlU3RyZWFtID0gcGMyVHJhY2tFdmVudHNbMF0uc3RyZWFtc1swXTsKKworICAgIC8vIFZlcmlm
eSB0aGF0IHJvbGxiYWNrIGNhdXNlcyBvbnJlbW92ZXRyYWNrIHRvIGZpcmUgZm9yIHRoZSBhZGRl
ZCB0cmFja3MKKyAgICBsZXQgcmVtb3ZldHJhY2tFdmVudENvbGxlY3RvciA9IGNvbGxlY3RSZW1v
dmVUcmFja0V2ZW50cyhyZWNlaXZlU3RyZWFtKTsKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVz
Y3JpcHRpb24oe3R5cGU6ICJyb2xsYmFjayJ9KTsKKyAgICBsZXQgcmVtb3ZlZHRyYWNrcyA9IHJl
bW92ZXRyYWNrRXZlbnRDb2xsZWN0b3IuZmluaXNoKCkubWFwKGUgPT4gZS50cmFjayk7CisgICAg
YXNzZXJ0X2VxdWFscyhyZW1vdmVkdHJhY2tzLmxlbmd0aCwgMiwKKyAgICAgICAgICAgICAgICAg
ICJSb2xsYmFjayBzaG91bGQgaGF2ZSByZW1vdmVkIHR3byB0cmFja3MiKTsKKyAgICBhc3NlcnRf
dHJ1ZShyZW1vdmVkdHJhY2tzLmluY2x1ZGVzKHBjMlRyYWNrRXZlbnRzWzBdLnRyYWNrKSwKKyAg
ICAgICAgICAgICAgICAiRmlyc3QgdHJhY2sgc2hvdWxkIGJlIHJlbW92ZWQiKTsKKyAgICBhc3Nl
cnRfdHJ1ZShyZW1vdmVkdHJhY2tzLmluY2x1ZGVzKHBjMlRyYWNrRXZlbnRzWzFdLnRyYWNrKSwK
KyAgICAgICAgICAgICAgICAiU2Vjb25kIHRyYWNrIHNob3VsZCBiZSByZW1vdmVkIik7CisKKyAg
ICBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworCisgICAgbGV0IGFkZHRyYWNrRXZl
bnRDb2xsZWN0b3IgPSBjb2xsZWN0QWRkVHJhY2tFdmVudHMocmVjZWl2ZVN0cmVhbSk7CisgICAg
dHJhY2tFdmVudENvbGxlY3RvciA9IGNvbGxlY3RUcmFja0V2ZW50cyhwYzIpOworICAgIGF3YWl0
IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik7CisgICAgcGMyVHJhY2tFdmVudHMgPSB0
cmFja0V2ZW50Q29sbGVjdG9yLmZpbmlzaCgpOworICAgIGxldCBhZGRlZHRyYWNrcyA9IGFkZHRy
YWNrRXZlbnRDb2xsZWN0b3IuZmluaXNoKCkubWFwKGUgPT4gZS50cmFjayk7CisgICAgYXNzZXJ0
X2VxdWFscyhhZGRlZHRyYWNrcy5sZW5ndGgsIDIsCisgICAgICAicGMyLnNldFJlbW90ZURlc2Ny
aXB0aW9uKG9mZmVyKSBzaG91bGQndmUgYWRkZWQgMiB0cmFja3MgdG8gcmVjZWl2ZSBzdHJlYW0i
KTsKKyAgICBhc3NlcnRfdHJ1ZShhZGRlZHRyYWNrcy5pbmNsdWRlcyhwYzJUcmFja0V2ZW50c1sw
XS50cmFjayksCisgICAgICAgICAgICAgICAgIkZpcnN0IHRyYWNrIHNob3VsZCBiZSBhZGRlZCIp
OworICAgIGFzc2VydF90cnVlKGFkZGVkdHJhY2tzLmluY2x1ZGVzKHBjMlRyYWNrRXZlbnRzWzFd
LnRyYWNrKSwKKyAgICAgICAgICAgICAgICAiU2Vjb25kIHRyYWNrIHNob3VsZCBiZSBhZGRlZCIp
OworCisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGxldCBh
bnN3ZXIgPSBhd2FpdCBwYzIuY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcGMxLnNldFJlbW90
ZURlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24o
YW5zd2VyKTsKKyAgICBwYzEucmVtb3ZlVHJhY2socGMxLmdldFNlbmRlcnMoKVswXSk7CisKKyAg
ICBoYXNQcm9wcyhwYzEuZ2V0U2VuZGVycygpLAorICAgICAgWworICAgICAgICB7dHJhY2s6IG51
bGx9LAorICAgICAgICB7dHJhY2s6IHZpZGVvfQorICAgICAgXSk7CisKKyAgICBoYXNQcm9wcyhw
YzEuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICBzZW5k
ZXI6IHt0cmFjazogbnVsbH0sCisgICAgICAgICAgZGlyZWN0aW9uOiAicmVjdm9ubHkiCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBzZW5kZXI6IHt0cmFjazogdmlkZW99LAorICAg
ICAgICAgIGRpcmVjdGlvbjogInNlbmRvbmx5IgorICAgICAgICB9CisgICAgICBdKTsKKworICAg
IGF3YWl0IG5lZ290aWF0aW9uTmVlZGVkKHBjMSk7CisKKyAgICBwYzEucmVtb3ZlVHJhY2socGMx
LmdldFNlbmRlcnMoKVsxXSk7CisKKyAgICBoYXNQcm9wcyhwYzEuZ2V0U2VuZGVycygpLAorICAg
ICAgWworICAgICAgICB7dHJhY2s6IG51bGx9LAorICAgICAgICB7dHJhY2s6IG51bGx9CisgICAg
ICBdKTsKKworICAgIGhhc1Byb3BzKHBjMS5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAg
ICAgICAgeworICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJl
Y3Rpb246ICJyZWN2b25seSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIHNlbmRl
cjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJpbmFjdGl2ZSIKKyAgICAg
ICAgfQorICAgICAgXSk7CisKKyAgICAvLyBwYzEgYXMgb2ZmZXJlcgorICAgIG9mZmVyID0gYXdh
aXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisKKyAgICByZW1vdmV0cmFja0V2ZW50Q29sbGVjdG9yID0g
Y29sbGVjdFJlbW92ZVRyYWNrRXZlbnRzKHJlY2VpdmVTdHJlYW0pOworICAgIGF3YWl0IHBjMi5z
ZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik7CisgICAgcmVtb3ZlZHRyYWNrcyA9IHJlbW92ZXRy
YWNrRXZlbnRDb2xsZWN0b3IuZmluaXNoKCkubWFwKGUgPT4gZS50cmFjayk7CisgICAgYXNzZXJ0
X2VxdWFscyhyZW1vdmVkdHJhY2tzLmxlbmd0aCwgMiwgIlNob3VsZCBoYXZlIHR3byByZW1vdmVk
IHRyYWNrcyIpOworICAgIGFzc2VydF90cnVlKHJlbW92ZWR0cmFja3MuaW5jbHVkZXMocGMyVHJh
Y2tFdmVudHNbMF0udHJhY2spLAorICAgICAgICAgICAgICAgICJGaXJzdCB0cmFjayBzaG91bGQg
YmUgcmVtb3ZlZCIpOworICAgIGFzc2VydF90cnVlKHJlbW92ZWR0cmFja3MuaW5jbHVkZXMocGMy
VHJhY2tFdmVudHNbMV0udHJhY2spLAorICAgICAgICAgICAgICAgICJTZWNvbmQgdHJhY2sgc2hv
dWxkIGJlIHJlbW92ZWQiKTsKKworICAgIGFkZHRyYWNrRXZlbnRDb2xsZWN0b3IgPSBjb2xsZWN0
QWRkVHJhY2tFdmVudHMocmVjZWl2ZVN0cmVhbSk7CisgICAgYXdhaXQgcGMyLnNldFJlbW90ZURl
c2NyaXB0aW9uKHt0eXBlOiAicm9sbGJhY2sifSk7CisgICAgYWRkZWR0cmFja3MgPSBhZGR0cmFj
a0V2ZW50Q29sbGVjdG9yLmZpbmlzaCgpLm1hcChlID0+IGUudHJhY2spOworICAgIGFzc2VydF9l
cXVhbHMoYWRkZWR0cmFja3MubGVuZ3RoLCAyLCAiUm9sbGJhY2sgc2hvdWxkIGhhdmUgYWRkZWQg
dHdvIHRyYWNrcyIpOworCisgICAgLy8gcGMyIGFzIG9mZmVyZXIKKyAgICBvZmZlciA9IGF3YWl0
IHBjMi5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKG9m
ZmVyKTsKKyAgICBhd2FpdCBwYzEuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGFu
c3dlciA9IGF3YWl0IHBjMS5jcmVhdGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxE
ZXNjcmlwdGlvbihhbnN3ZXIpOworCisgICAgcmVtb3ZldHJhY2tFdmVudENvbGxlY3RvciA9IGNv
bGxlY3RSZW1vdmVUcmFja0V2ZW50cyhyZWNlaXZlU3RyZWFtKTsKKyAgICBhd2FpdCBwYzIuc2V0
UmVtb3RlRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICByZW1vdmVkdHJhY2tzID0gcmVtb3ZldHJh
Y2tFdmVudENvbGxlY3Rvci5maW5pc2goKS5tYXAoZSA9PiBlLnRyYWNrKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlbW92ZWR0cmFja3MubGVuZ3RoLCAyLCAiU2hvdWxkIGhhdmUgdHdvIHJlbW92ZWQg
dHJhY2tzIik7CisKKyAgICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBb
CisgICAgICAgIHsKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiAiaW5hY3RpdmUiCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiAiaW5hY3RpdmUi
CisgICAgICAgIH0KKyAgICAgIF0pOworICB9OworCisgIGNvbnN0IGNoZWNrU2V0RGlyZWN0aW9u
ID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
KyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOworICAgIHBjLmFkZFRyYW5zY2Vp
dmVyKCJhdWRpbyIpOworCisgICAgcGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uZGlyZWN0aW9uID0g
InNlbmRvbmx5IjsKKyAgICBoYXNQcm9wcyhwYy5nZXRUcmFuc2NlaXZlcnMoKSxbe2RpcmVjdGlv
bjogInNlbmRvbmx5In1dKTsKKyAgICBwYy5nZXRUcmFuc2NlaXZlcnMoKVswXS5kaXJlY3Rpb24g
PSAicmVjdm9ubHkiOworICAgIGhhc1Byb3BzKHBjLmdldFRyYW5zY2VpdmVycygpLFt7ZGlyZWN0
aW9uOiAicmVjdm9ubHkifV0pOworICAgIHBjLmdldFRyYW5zY2VpdmVycygpWzBdLmRpcmVjdGlv
biA9ICJpbmFjdGl2ZSI7CisgICAgaGFzUHJvcHMocGMuZ2V0VHJhbnNjZWl2ZXJzKCksW3tkaXJl
Y3Rpb246ICJpbmFjdGl2ZSJ9XSk7CisgICAgcGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uZGlyZWN0
aW9uID0gInNlbmRyZWN2IjsKKyAgICBoYXNQcm9wcyhwYy5nZXRUcmFuc2NlaXZlcnMoKSxbe2Rp
cmVjdGlvbjogInNlbmRyZWN2In1dKTsKKyAgfTsKKworICBjb25zdCBjaGVja0N1cnJlbnREaXJl
Y3Rpb24gPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBj
Mi5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpWzBdOworICAgIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKyAgICBwYzIu
YWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisgICAgaGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVy
cygpLCBbe2N1cnJlbnREaXJlY3Rpb246IG51bGx9XSk7CisKKyAgICBsZXQgb2ZmZXIgPSBhd2Fp
dCBwYzEuY3JlYXRlT2ZmZXIoKTsKKyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCks
IFt7Y3VycmVudERpcmVjdGlvbjogbnVsbH1dKTsKKworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERl
c2NyaXB0aW9uKG9mZmVyKTsKKyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCksIFt7
Y3VycmVudERpcmVjdGlvbjogbnVsbH1dKTsKKworICAgIGxldCB0cmFja0V2ZW50cyA9IGF3YWl0
IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMocGMyLCBvZmZlcik7CisgICAg
aGFzUHJvcHModHJhY2tFdmVudHMsCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICB0cmFj
azogcGMyLmdldFRyYW5zY2VpdmVycygpWzBdLnJlY2VpdmVyLnRyYWNrLAorICAgICAgICAgIHN0
cmVhbXM6IFt7aWQ6IHN0cmVhbS5pZH1dCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgaGFz
UHJvcHMocGMyLmdldFRyYW5zY2VpdmVycygpLCBbe2N1cnJlbnREaXJlY3Rpb246IG51bGx9XSk7
CisKKyAgICBsZXQgYW5zd2VyID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGhhc1By
b3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiBudWxsfV0pOwor
CisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBoYXNQcm9w
cyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksIFt7Y3VycmVudERpcmVjdGlvbjogInNlbmRyZWN2In1d
KTsKKworICAgIHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5U
cmFja0V2ZW50cyhwYzEsIGFuc3dlcik7CisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsCisgICAg
ICBbCisgICAgICAgIHsKKyAgICAgICAgICB0cmFjazogcGMxLmdldFRyYW5zY2VpdmVycygpWzBd
LnJlY2VpdmVyLnRyYWNrLAorICAgICAgICAgIHN0cmVhbXM6IFt7aWQ6IHN0cmVhbS5pZH1dCisg
ICAgICAgIH0KKyAgICAgIF0pOworCisgICAgaGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVycygp
LCBbe2N1cnJlbnREaXJlY3Rpb246ICJzZW5kcmVjdiJ9XSk7CisKKyAgICBwYzIuZ2V0VHJhbnNj
ZWl2ZXJzKClbMF0uZGlyZWN0aW9uID0gInNlbmRvbmx5IjsKKworICAgIG9mZmVyID0gYXdhaXQg
cGMyLmNyZWF0ZU9mZmVyKCk7CisgICAgaGFzUHJvcHMocGMyLmdldFRyYW5zY2VpdmVycygpLCBb
e2N1cnJlbnREaXJlY3Rpb246ICJzZW5kcmVjdiJ9XSk7CisKKyAgICBhd2FpdCBwYzIuc2V0TG9j
YWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgaGFzUHJvcHMocGMyLmdldFRyYW5zY2VpdmVycygp
LCBbe2N1cnJlbnREaXJlY3Rpb246ICJzZW5kcmVjdiJ9XSk7CisKKyAgICB0cmFja0V2ZW50cyA9
IGF3YWl0IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMocGMxLCBvZmZlcik7
CisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsIFtdKTsKKworICAgIGhhc1Byb3BzKHBjMS5nZXRU
cmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiAic2VuZHJlY3YifV0pOworCisgICAg
YW5zd2VyID0gYXdhaXQgcGMxLmNyZWF0ZUFuc3dlcigpOworICAgIGhhc1Byb3BzKHBjMS5nZXRU
cmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiAic2VuZHJlY3YifV0pOworCisgICAg
YXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBoYXNQcm9wcyhwYzEu
Z2V0VHJhbnNjZWl2ZXJzKCksIFt7Y3VycmVudERpcmVjdGlvbjogInJlY3Zvbmx5In1dKTsKKwor
ICAgIHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5UcmFja0V2
ZW50cyhwYzIsIGFuc3dlcik7CisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsIFtdKTsKKworICAg
IGhhc1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiAic2Vu
ZG9ubHkifV0pOworCisgICAgcGMyLmdldFRyYW5zY2VpdmVycygpWzBdLmRpcmVjdGlvbiA9ICJz
ZW5kcmVjdiI7CisKKyAgICBvZmZlciA9IGF3YWl0IHBjMi5jcmVhdGVPZmZlcigpOworICAgIGhh
c1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiAic2VuZG9u
bHkifV0pOworCisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAg
IGhhc1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiAic2Vu
ZG9ubHkifV0pOworCisgICAgdHJhY2tFdmVudHMgPSBhd2FpdCBzZXRSZW1vdGVEZXNjcmlwdGlv
blJldHVyblRyYWNrRXZlbnRzKHBjMSwgb2ZmZXIpOworICAgIGhhc1Byb3BzKHRyYWNrRXZlbnRz
LCBbXSk7CisKKyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCksIFt7Y3VycmVudERp
cmVjdGlvbjogInJlY3Zvbmx5In1dKTsKKworICAgIGFuc3dlciA9IGF3YWl0IHBjMS5jcmVhdGVB
bnN3ZXIoKTsKKyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCksIFt7Y3VycmVudERp
cmVjdGlvbjogInJlY3Zvbmx5In1dKTsKKworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0
aW9uKGFuc3dlcik7CisgICAgaGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVycygpLCBbe2N1cnJl
bnREaXJlY3Rpb246ICJzZW5kcmVjdiJ9XSk7CisKKyAgICB0cmFja0V2ZW50cyA9IGF3YWl0IHNl
dFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMocGMyLCBhbnN3ZXIpOworICAgIGhh
c1Byb3BzKHRyYWNrRXZlbnRzLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgdHJhY2s6
IHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5yZWNlaXZlci50cmFjaywKKyAgICAgICAgICBzdHJl
YW1zOiBbe2lkOiBzdHJlYW0uaWR9XQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1By
b3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwgW3tjdXJyZW50RGlyZWN0aW9uOiAic2VuZHJlY3Yi
fV0pOworICB9OworCisgIGNvbnN0IGNoZWNrU2VuZHJlY3ZXaXRoTm9TZW5kVHJhY2sgPSBhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBj
b25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsK
KworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNr
cyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
OworICAgIHBjMS5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsKKyAgICBwYzEuZ2V0VHJhbnNjZWl2
ZXJzKClbMF0uZGlyZWN0aW9uID0gInNlbmRyZWN2IjsKKyAgICBwYzIuYWRkVHJhY2sodHJhY2ss
IHN0cmVhbSk7CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOwor
CisgICAgbGV0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5U
cmFja0V2ZW50cyhwYzIsIG9mZmVyKTsKKyAgICBoYXNQcm9wcyh0cmFja0V2ZW50cywKKyAgICAg
IFsKKyAgICAgICAgeworICAgICAgICAgIHRyYWNrOiBwYzIuZ2V0VHJhbnNjZWl2ZXJzKClbMF0u
cmVjZWl2ZXIudHJhY2ssCisgICAgICAgICAgc3RyZWFtczogW10KKyAgICAgICAgfQorICAgICAg
XSk7CisKKyAgICB0cmlja2xlKHQsIHBjMSwgcGMyKTsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxE
ZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICBjb25zdCBhbnN3ZXIgPSBhd2FpdCBwYzIuY3JlYXRl
QW5zd2VyKCk7CisgICAgdHJhY2tFdmVudHMgPSBhd2FpdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJl
dHVyblRyYWNrRXZlbnRzKHBjMSwgYW5zd2VyKTsKKyAgICAvLyBTcGVjIGxhbmd1YWdlIGRvZXNu
J3Qgc2F5IGFueXRoaW5nIGFib3V0IGNoZWNraW5nIHdoZXRoZXIgdGhlIHRyYW5zY2VpdmVyCisg
ICAgLy8gaXMgc3RvcHBlZCBoZXJlLgorICAgIGhhc1Byb3BzKHRyYWNrRXZlbnRzLAorICAgICAg
WworICAgICAgICB7CisgICAgICAgICAgdHJhY2s6IHBjMS5nZXRUcmFuc2NlaXZlcnMoKVswXS5y
ZWNlaXZlci50cmFjaywKKyAgICAgICAgICBzdHJlYW1zOiBbe2lkOiBzdHJlYW0uaWR9XQorICAg
ICAgICB9CisgICAgICBdKTsKKworICAgIHRyaWNrbGUodCwgcGMyLCBwYzEpOworICAgIGF3YWl0
IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisKKyAgICBhd2FpdCBpY2VDb25uZWN0
ZWQocGMxKTsKKyAgICBhd2FpdCBpY2VDb25uZWN0ZWQocGMyKTsKKyAgfTsKKworICBjb25zdCBj
aGVja1NlbmRyZWN2V2l0aFRyYWNrbGVzc1N0cmVhbSA9IGFzeW5jIHQgPT4geworICAgIGNvbnN0
IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOwor
ICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkpOworCisgICAgY29uc3Qgc3RyZWFt
ID0gbmV3IE1lZGlhU3RyZWFtKCk7CisgICAgcGMxLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHtz
dHJlYW1zOiBbc3RyZWFtXX0pOworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRl
T2ZmZXIoKTsKKworICAgIGNvbnN0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3Jp
cHRpb25SZXR1cm5UcmFja0V2ZW50cyhwYzIsIG9mZmVyKTsKKyAgICBoYXNQcm9wcyh0cmFja0V2
ZW50cywKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHRyYWNrOiBwYzIuZ2V0VHJhbnNj
ZWl2ZXJzKClbMF0ucmVjZWl2ZXIudHJhY2ssCisgICAgICAgICAgc3RyZWFtczogW3tpZDogc3Ry
ZWFtLmlkfV0KKyAgICAgICAgfQorICAgICAgXSk7CisgIH07CisKKyAgY29uc3QgY2hlY2tNdXRl
ID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CisgICAgY29uc3Qgc3RyZWFt
MSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1
ZSwgdmlkZW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFja3Moc3Ry
ZWFtMSkpOworICAgIGNvbnN0IGF1ZGlvMSA9IHN0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKVswXTsK
KyAgICBwYzEuYWRkVHJhY2soYXVkaW8xLCBzdHJlYW0xKTsKKyAgICBjb25zdCBjb3VudE11dGVB
dWRpbzEgPSBjb3VudEV2ZW50cyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF0ucmVjZWl2ZXIudHJh
Y2ssICJtdXRlIik7CisgICAgY29uc3QgY291bnRVbm11dGVBdWRpbzEgPSBjb3VudEV2ZW50cyhw
YzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF0ucmVjZWl2ZXIudHJhY2ssICJ1bm11dGUiKTsKKworICAg
IGNvbnN0IHZpZGVvMSA9IHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKVswXTsKKyAgICBwYzEuYWRk
VHJhY2sodmlkZW8xLCBzdHJlYW0xKTsKKyAgICBjb25zdCBjb3VudE11dGVWaWRlbzEgPSBjb3Vu
dEV2ZW50cyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMV0ucmVjZWl2ZXIudHJhY2ssICJtdXRlIik7
CisgICAgY29uc3QgY291bnRVbm11dGVWaWRlbzEgPSBjb3VudEV2ZW50cyhwYzEuZ2V0VHJhbnNj
ZWl2ZXJzKClbMV0ucmVjZWl2ZXIudHJhY2ssICJ1bm11dGUiKTsKKworICAgIGNvbnN0IHBjMiA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNs
b3NlKCkpOworICAgIGNvbnN0IHN0cmVhbTIgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWUsIHZpZGVvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBzdG9wVHJhY2tzKHN0cmVhbTIpKTsKKyAgICBjb25zdCBhdWRpbzIgPSBzdHJl
YW0yLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgcGMyLmFkZFRyYWNrKGF1ZGlvMiwgc3RyZWFt
Mik7CisgICAgY29uc3QgY291bnRNdXRlQXVkaW8yID0gY291bnRFdmVudHMocGMyLmdldFRyYW5z
Y2VpdmVycygpWzBdLnJlY2VpdmVyLnRyYWNrLCAibXV0ZSIpOworICAgIGNvbnN0IGNvdW50VW5t
dXRlQXVkaW8yID0gY291bnRFdmVudHMocGMyLmdldFRyYW5zY2VpdmVycygpWzBdLnJlY2VpdmVy
LnRyYWNrLCAidW5tdXRlIik7CisKKyAgICBjb25zdCB2aWRlbzIgPSBzdHJlYW0yLmdldFZpZGVv
VHJhY2tzKClbMF07CisgICAgcGMyLmFkZFRyYWNrKHZpZGVvMiwgc3RyZWFtMik7CisgICAgY29u
c3QgY291bnRNdXRlVmlkZW8yID0gY291bnRFdmVudHMocGMyLmdldFRyYW5zY2VpdmVycygpWzFd
LnJlY2VpdmVyLnRyYWNrLCAibXV0ZSIpOworICAgIGNvbnN0IGNvdW50VW5tdXRlVmlkZW8yID0g
Y291bnRFdmVudHMocGMyLmdldFRyYW5zY2VpdmVycygpWzFdLnJlY2VpdmVyLnRyYWNrLCAidW5t
dXRlIik7CisKKworICAgIC8vIENoZWNrIHRoYXQgcmVjZWl2ZSB0cmFja3Mgc3RhcnQgbXV0ZWQK
KyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHty
ZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIiwgbXV0ZWQ6IHRydWV9fX0sCisgICAgICAg
IHtyZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIiwgbXV0ZWQ6IHRydWV9fX0KKyAgICAg
IF0pOworCisgICAgaGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAg
ICAgICB7cmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJhdWRpbyIsIG11dGVkOiB0cnVlfX19LAor
ICAgICAgICB7cmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJ2aWRlbyIsIG11dGVkOiB0cnVlfX19
CisgICAgICBdKTsKKworICAgIGxldCBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOwor
ICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik7CisgICAgdHJpY2tsZSh0
LCBwYzEsIHBjMik7CisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwor
ICAgIGxldCBhbnN3ZXIgPSBhd2FpdCBwYzIuY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcGMx
LnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgdHJpY2tsZSh0LCBwYzIsIHBjMSk7
CisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKworICAgIGxldCBn
b3RVbm11dGVBdWRpbzEgPSBnb3RVbm11dGVFdmVudChwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF0u
cmVjZWl2ZXIudHJhY2spOworICAgIGxldCBnb3RVbm11dGVWaWRlbzEgPSBnb3RVbm11dGVFdmVu
dChwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMV0ucmVjZWl2ZXIudHJhY2spOworCisgICAgbGV0IGdv
dFVubXV0ZUF1ZGlvMiA9IGdvdFVubXV0ZUV2ZW50KHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5y
ZWNlaXZlci50cmFjayk7CisgICAgbGV0IGdvdFVubXV0ZVZpZGVvMiA9IGdvdFVubXV0ZUV2ZW50
KHBjMi5nZXRUcmFuc2NlaXZlcnMoKVsxXS5yZWNlaXZlci50cmFjayk7CisKKyAgICBhd2FpdCBp
Y2VDb25uZWN0ZWQocGMxKTsKKyAgICBhd2FpdCBpY2VDb25uZWN0ZWQocGMyKTsKKworICAgIC8v
IENoZWNrIHRoYXQgcmVjZWl2ZSB0cmFja3MgYXJlIHVubXV0ZWQgd2hlbiBSVFAgc3RhcnRzIGZs
b3dpbmcKKyAgICBhd2FpdCBnb3RVbm11dGVBdWRpbzE7CisgICAgYXdhaXQgZ290VW5tdXRlVmlk
ZW8xOworICAgIGF3YWl0IGdvdFVubXV0ZUF1ZGlvMjsKKyAgICBhd2FpdCBnb3RVbm11dGVWaWRl
bzI7CisKKyAgICAvLyBDaGVjayB3aGV0aGVyIGRpc2FibGluZyByZWN2IGxvY2FsbHkgY2F1c2Vz
IG9ubXV0ZQorICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMoKVswXS5kaXJlY3Rpb24gPSAic2VuZG9u
bHkiOworICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMoKVsxXS5kaXJlY3Rpb24gPSAic2VuZG9ubHki
OworICAgIG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMyLnNl
dFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlw
dGlvbihvZmZlcik7CisgICAgYW5zd2VyID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAg
IGNvbnN0IGdvdE11dGVBdWRpbzEgPSBnb3RNdXRlRXZlbnQocGMxLmdldFRyYW5zY2VpdmVycygp
WzBdLnJlY2VpdmVyLnRyYWNrKTsKKyAgICBjb25zdCBnb3RNdXRlVmlkZW8xID0gZ290TXV0ZUV2
ZW50KHBjMS5nZXRUcmFuc2NlaXZlcnMoKVsxXS5yZWNlaXZlci50cmFjayk7CisgICAgYXdhaXQg
cGMxLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMyLnNldExvY2Fs
RGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBhd2FpdCBnb3RNdXRlQXVkaW8xOworICAgIGF3YWl0
IGdvdE11dGVWaWRlbzE7CisKKyAgICAvLyBDaGVjayB3aGV0aGVyIGRpc2FibGluZyBvbiByZW1v
dGUgY2F1c2VzIG9ubXV0ZQorICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMoKVswXS5kaXJlY3Rpb24g
PSAiaW5hY3RpdmUiOworICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMoKVsxXS5kaXJlY3Rpb24gPSAi
aW5hY3RpdmUiOworICAgIG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgY29u
c3QgZ290TXV0ZUF1ZGlvMiA9IGdvdE11dGVFdmVudChwYzIuZ2V0VHJhbnNjZWl2ZXJzKClbMF0u
cmVjZWl2ZXIudHJhY2spOworICAgIGNvbnN0IGdvdE11dGVWaWRlbzIgPSBnb3RNdXRlRXZlbnQo
cGMyLmdldFRyYW5zY2VpdmVycygpWzFdLnJlY2VpdmVyLnRyYWNrKTsKKyAgICBhd2FpdCBwYzIu
c2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGF3YWl0IGdvdE11dGVBdWRpbzI7Cisg
ICAgYXdhaXQgZ290TXV0ZVZpZGVvMjsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcik7CisgICAgYW5zd2VyID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3
YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworICAgIGF3YWl0IHBjMi5zZXRM
b2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisKKyAgICAvLyBDaGVjayB3aGV0aGVyIG9udW5tdXRl
IGZpcmVzIHdoZW4gd2UgdHVybiBldmVyeXRoaW5nIG9uIGFnYWluCisgICAgcGMxLmdldFRyYW5z
Y2VpdmVycygpWzBdLmRpcmVjdGlvbiA9ICJzZW5kcmVjdiI7CisgICAgcGMxLmdldFRyYW5zY2Vp
dmVycygpWzFdLmRpcmVjdGlvbiA9ICJzZW5kcmVjdiI7CisgICAgb2ZmZXIgPSBhd2FpdCBwYzEu
Y3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIp
OworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhbnN3ZXIg
PSBhd2FpdCBwYzIuY3JlYXRlQW5zd2VyKCk7CisgICAgZ290VW5tdXRlQXVkaW8xID0gZ290VW5t
dXRlRXZlbnQocGMxLmdldFRyYW5zY2VpdmVycygpWzBdLnJlY2VpdmVyLnRyYWNrKTsKKyAgICBn
b3RVbm11dGVWaWRlbzEgPSBnb3RVbm11dGVFdmVudChwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMV0u
cmVjZWl2ZXIudHJhY2spOworICAgIGdvdFVubXV0ZUF1ZGlvMiA9IGdvdFVubXV0ZUV2ZW50KHBj
Mi5nZXRUcmFuc2NlaXZlcnMoKVswXS5yZWNlaXZlci50cmFjayk7CisgICAgZ290VW5tdXRlVmlk
ZW8yID0gZ290VW5tdXRlRXZlbnQocGMyLmdldFRyYW5zY2VpdmVycygpWzFdLnJlY2VpdmVyLnRy
YWNrKTsKKyAgICBhd2FpdCBwYzEuc2V0UmVtb3RlRGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgICBh
d2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpOworICAgIGF3YWl0IGdvdFVubXV0
ZUF1ZGlvMTsKKyAgICBhd2FpdCBnb3RVbm11dGVWaWRlbzE7CisgICAgYXdhaXQgZ290VW5tdXRl
QXVkaW8yOworICAgIGF3YWl0IGdvdFVubXV0ZVZpZGVvMjsKKworICAgIC8vIFdhaXQgYSBsaXR0
bGUsIGp1c3QgaW4gY2FzZSBzb21lIHN0cmF5IGV2ZW50cyBmaXJlCisgICAgYXdhaXQgbmV3IFBy
b21pc2UociA9PiB0LnN0ZXBfdGltZW91dChyLCAxMDApKTsKKworICAgIGFzc2VydF9lcXVhbHMo
MSwgY291bnRNdXRlQXVkaW8xLmNvdW50LCAiR290IDEgbXV0ZSBldmVudCBmb3IgcGMxJ3MgYXVk
aW8gdHJhY2siKTsKKyAgICBhc3NlcnRfZXF1YWxzKDEsIGNvdW50TXV0ZVZpZGVvMS5jb3VudCwg
IkdvdCAxIG11dGUgZXZlbnQgZm9yIHBjMSdzIHZpZGVvIHRyYWNrIik7CisgICAgYXNzZXJ0X2Vx
dWFscygxLCBjb3VudE11dGVBdWRpbzIuY291bnQsICJHb3QgMSBtdXRlIGV2ZW50IGZvciBwYzIn
cyBhdWRpbyB0cmFjayIpOworICAgIGFzc2VydF9lcXVhbHMoMSwgY291bnRNdXRlVmlkZW8yLmNv
dW50LCAiR290IDEgbXV0ZSBldmVudCBmb3IgcGMyJ3MgdmlkZW8gdHJhY2siKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKDIsIGNvdW50VW5tdXRlQXVkaW8xLmNvdW50LCAiR290IDIgdW5tdXRlIGV2ZW50
cyBmb3IgcGMxJ3MgYXVkaW8gdHJhY2siKTsKKyAgICBhc3NlcnRfZXF1YWxzKDIsIGNvdW50VW5t
dXRlVmlkZW8xLmNvdW50LCAiR290IDIgdW5tdXRlIGV2ZW50cyBmb3IgcGMxJ3MgdmlkZW8gdHJh
Y2siKTsKKyAgICBhc3NlcnRfZXF1YWxzKDIsIGNvdW50VW5tdXRlQXVkaW8yLmNvdW50LCAiR290
IDIgdW5tdXRlIGV2ZW50cyBmb3IgcGMyJ3MgYXVkaW8gdHJhY2siKTsKKyAgICBhc3NlcnRfZXF1
YWxzKDIsIGNvdW50VW5tdXRlVmlkZW8yLmNvdW50LCAiR290IDIgdW5tdXRlIGV2ZW50cyBmb3Ig
cGMyJ3MgdmlkZW8gdHJhY2siKTsKKyAgfTsKKworICBjb25zdCBjaGVja09uQWRkU3RyZWFtID0g
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Cisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CisgICAgY29uc3Qgc3RyZWFtMSA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZSwg
dmlkZW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFja3Moc3RyZWFt
MSkpOworICAgIGNvbnN0IGF1ZGlvMSA9IHN0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAg
ICBwYzEuYWRkVHJhY2soYXVkaW8xLCBzdHJlYW0xKTsKKyAgICBjb25zdCB2aWRlbzEgPSBzdHJl
YW0xLmdldFZpZGVvVHJhY2tzKClbMF07CisgICAgcGMxLmFkZFRyYWNrKHZpZGVvMSwgc3RyZWFt
MSk7CisKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKyAgICBjb25zdCBzdHJlYW0yID0gYXdhaXQg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlLCB2aWRlbzog
dHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0yKSk7Cisg
ICAgY29uc3QgYXVkaW8yID0gc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjMi5h
ZGRUcmFjayhhdWRpbzIsIHN0cmVhbTIpOworICAgIGNvbnN0IHZpZGVvMiA9IHN0cmVhbTIuZ2V0
VmlkZW9UcmFja3MoKVswXTsKKyAgICBwYzIuYWRkVHJhY2sodmlkZW8yLCBzdHJlYW0yKTsKKwor
ICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisKKyAgICBsZXQgdHJh
Y2tFdmVudENvbGxlY3RvciA9IGNvbGxlY3RUcmFja0V2ZW50cyhwYzIpOworICAgIGxldCBhZGRz
dHJlYW1FdmVudENvbGxlY3RvciA9IGNvbGxlY3RFdmVudHMocGMyLCAiYWRkc3RyZWFtIiwgZSA9
PiB7CisgICAgICBoYXNQcm9wcyhlLCB7c3RyZWFtOiB7aWQ6IHN0cmVhbTEuaWR9fSk7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGUuc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiT25l
IGF1ZGlvIHRyYWNrIik7CisgICAgICBhc3NlcnRfZXF1YWxzKGUuc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoLCAxLCAiT25lIHZpZGVvIHRyYWNrIik7CisgICAgfSk7CisKKyAgICBhd2Fp
dCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgbGV0IGFkZHN0cmVhbUV2
ZW50cyA9IGFkZHN0cmVhbUV2ZW50Q29sbGVjdG9yLmZpbmlzaCgpOworICAgIGFzc2VydF9lcXVh
bHMoYWRkc3RyZWFtRXZlbnRzLmxlbmd0aCwgMSwgIlNob3VsZCBoYXZlIDEgYWRkc3RyZWFtIGV2
ZW50Iik7CisKKyAgICBsZXQgdHJhY2tFdmVudHMgPSB0cmFja0V2ZW50Q29sbGVjdG9yLmZpbmlz
aCgpOworCisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsCisgICAgICBbCisgICAgICAgIHtzdHJl
YW1zOiBbYWRkc3RyZWFtRXZlbnRzWzBdLnN0cmVhbV19LAorICAgICAgICB7c3RyZWFtczogW2Fk
ZHN0cmVhbUV2ZW50c1swXS5zdHJlYW1dfQorICAgICAgXSk7CisKKyAgICBhd2FpdCBwYzEuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcGMyLmNy
ZWF0ZUFuc3dlcigpOworCisgICAgdHJhY2tFdmVudENvbGxlY3RvciA9IGNvbGxlY3RUcmFja0V2
ZW50cyhwYzEpOworICAgIGFkZHN0cmVhbUV2ZW50Q29sbGVjdG9yID0gY29sbGVjdEV2ZW50cyhw
YzEsICJhZGRzdHJlYW0iLCBlID0+IHsKKyAgICAgIGhhc1Byb3BzKGUsIHtzdHJlYW06IHtpZDog
c3RyZWFtMi5pZH19KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZS5zdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGgsIDEsICJPbmUgYXVkaW8gdHJhY2siKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
ZS5zdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgsIDEsICJPbmUgdmlkZW8gdHJhY2siKTsK
KyAgICB9KTsKKworICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOwor
ICAgIGFkZHN0cmVhbUV2ZW50cyA9IGFkZHN0cmVhbUV2ZW50Q29sbGVjdG9yLmZpbmlzaCgpOwor
ICAgIGFzc2VydF9lcXVhbHMoYWRkc3RyZWFtRXZlbnRzLmxlbmd0aCwgMSwgIlNob3VsZCBoYXZl
IDEgYWRkc3RyZWFtIGV2ZW50Iik7CisKKyAgICB0cmFja0V2ZW50cyA9IHRyYWNrRXZlbnRDb2xs
ZWN0b3IuZmluaXNoKCk7CisKKyAgICBoYXNQcm9wcyh0cmFja0V2ZW50cywKKyAgICAgIFsKKyAg
ICAgICAge3N0cmVhbXM6IFthZGRzdHJlYW1FdmVudHNbMF0uc3RyZWFtXX0sCisgICAgICAgIHtz
dHJlYW1zOiBbYWRkc3RyZWFtRXZlbnRzWzBdLnN0cmVhbV19CisgICAgICBdKTsKKyAgfTsKKwor
ICBjb25zdCBjaGVja1N0b3AgPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFja3Mo
c3RyZWFtKSk7CisgICAgY29uc3QgdHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsK
KyAgICBwYzEuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisKKyAgICBsZXQgb2ZmZXIgPSBhd2Fp
dCBwYzEuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlvbihv
ZmZlcik7CisKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3Rl
RGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgcGMyLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOwor
CisgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0
IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMxLnNldFJlbW90
ZURlc2NyaXB0aW9uKGFuc3dlcik7CisKKyAgICBsZXQgc3RvcHBlZFRyYW5zY2VpdmVyID0gcGMx
LmdldFRyYW5zY2VpdmVycygpWzBdOworICAgIGxldCBvbmVuZGVkID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7CisgICAgICBzdG9wcGVkVHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sub25lbmRl
ZCA9IHJlc29sdmU7CisgICAgfSk7CisgICAgc3RvcHBlZFRyYW5zY2VpdmVyLnN0b3AoKTsKKwor
ICAgIGF3YWl0IG9uZW5kZWQ7CisKKyAgICBoYXNQcm9wc0FuZFVuaXF1ZU1pZHMocGMxLmdldFRy
YW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgc2VuZGVyOiB7dHJh
Y2s6IHtraW5kOiAiYXVkaW8ifX0sCisgICAgICAgICAgcmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6
ICJhdWRpbyIsIHJlYWR5U3RhdGU6ICJlbmRlZCJ9fSwKKyAgICAgICAgICBzdG9wcGVkOiB0cnVl
LAorICAgICAgICAgIGN1cnJlbnREaXJlY3Rpb246IG51bGwsCisgICAgICAgICAgZGlyZWN0aW9u
OiAic2VuZHJlY3YiCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgY29uc3QgdHJhbnNjZWl2
ZXIgPSBwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF07CisKKyAgICBjaGVja1Rocm93cygoKSA9PiB0
cmFuc2NlaXZlci5zZW5kZXIuc2V0UGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zY2VpdmVyLnNlbmRlci5nZXRQYXJhbWV0ZXJzKCkpLAorICAgICAgICAgICAgICAgICJJ
bnZhbGlkU3RhdGVFcnJvciIsICJzZXRQYXJhbWV0ZXJzIG9uIHN0b3BwZWQgdHJhbnNjZWl2ZXIi
KTsKKworICAgIGNvbnN0IHN0cmVhbTIgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICBjb25zdCB0cmFjazIgPSBzdHJlYW0uZ2V0
QXVkaW9UcmFja3MoKVswXTsKKyAgICBjaGVja1Rocm93cygoKSA9PiB0cmFuc2NlaXZlci5zZW5k
ZXIucmVwbGFjZVRyYWNrKHRyYWNrMiksCisgICAgICAgICAgICAgICAgIkludmFsaWRTdGF0ZUVy
cm9yIiwgInJlcGxhY2VUcmFjayBvbiBzdG9wcGVkIHRyYW5zY2VpdmVyIik7CisKKyAgICBjaGVj
a1Rocm93cygoKSA9PiB0cmFuc2NlaXZlci5kaXJlY3Rpb24gPSAic2VuZHJlY3YiLAorICAgICAg
ICAgICAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIsICJzZXREaXJlY3Rpb24gb24gc3RvcHBlZCB0
cmFuc2NlaXZlciIpOworCisgICAgY2hlY2tUaHJvd3MoKCkgPT4gdHJhbnNjZWl2ZXIuc2VuZGVy
LmR0bWYuaW5zZXJ0RFRNRigiMTExIiksCisgICAgICAgICAgICAgICAgIkludmFsaWRTdGF0ZUVy
cm9yIiwgImluc2VydERUTUYgb24gc3RvcHBlZCB0cmFuc2NlaXZlciIpOworCisgICAgLy8gU2hv
dWxkbid0IHRocm93CisgICAgc3RvcHBlZFRyYW5zY2VpdmVyLnN0b3AoKTsKKworICAgIG9mZmVy
ID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3Jp
cHRpb24ob2ZmZXIpOworCisgICAgc3RvcHBlZFRyYW5zY2VpdmVyID0gcGMyLmdldFRyYW5zY2Vp
dmVycygpWzBdOworICAgIG9uZW5kZWQgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAg
IHN0b3BwZWRUcmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5vbmVuZGVkID0gcmVzb2x2ZTsKKyAg
ICB9KTsKKworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik7CisKKyAg
ICBhd2FpdCBvbmVuZGVkOworCisgICAgaGFzUHJvcHMocGMyLmdldFRyYW5zY2VpdmVycygpLAor
ICAgICAgWworICAgICAgICB7CisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IHtraW5kOiAiYXVk
aW8ifX0sCisgICAgICAgICAgcmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJhdWRpbyIsIHJlYWR5
U3RhdGU6ICJlbmRlZCJ9fSwKKyAgICAgICAgICBzdG9wcGVkOiB0cnVlLAorICAgICAgICAgIG1p
ZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIGRp
cmVjdGlvbjogInNlbmRyZWN2IgorICAgICAgICB9CisgICAgICBdKTsKKworICAgIC8vIFNob3Vs
ZG4ndCB0aHJvdyBlaXRoZXIKKyAgICBzdG9wcGVkVHJhbnNjZWl2ZXIuc3RvcCgpOworCisgICAg
cGMxLmNsb3NlKCk7CisgICAgcGMyLmNsb3NlKCk7CisKKyAgICAvLyBTdGlsbCBzaG91bGRuJ3Qg
dGhyb3cKKyAgICBzdG9wcGVkVHJhbnNjZWl2ZXIuc3RvcCgpOworICB9OworCisgIGNvbnN0IGNo
ZWNrU3RvcEFmdGVyQ3JlYXRlT2ZmZXIgPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFk
ZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAg
IHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFj
ayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjMS5hZGRUcmFjayh0cmFjaywg
c3RyZWFtKTsKKyAgICBwYzIuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisKKyAgICBsZXQgb2Zm
ZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKKworICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMo
KVswXS5zdG9wKCk7CisKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIp
CisgICAgdHJpY2tsZSh0LCBwYzEsIHBjMik7CisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3Jp
cHRpb24ob2ZmZXIpOworCisgICAgbGV0IGFuc3dlciA9IGF3YWl0IHBjMi5jcmVhdGVBbnN3ZXIo
KTsKKyAgICBjb25zdCB0cmFja0V2ZW50cyA9IGF3YWl0IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0
dXJuVHJhY2tFdmVudHMocGMxLCBhbnN3ZXIpOworICAgIC8vIFNwZWMgbGFuZ3VhZ2UgZG9lc24n
dCBzYXkgYW55dGhpbmcgYWJvdXQgY2hlY2tpbmcgd2hldGhlciB0aGUgdHJhbnNjZWl2ZXIKKyAg
ICAvLyBpcyBzdG9wcGVkIGhlcmUuCisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsCisgICAgICBb
CisgICAgICAgIHsKKyAgICAgICAgICB0cmFjazogcGMxLmdldFRyYW5zY2VpdmVycygpWzBdLnJl
Y2VpdmVyLnRyYWNrLAorICAgICAgICAgIHN0cmVhbXM6IFt7aWQ6IHN0cmVhbS5pZH1dCisgICAg
ICAgIH0KKyAgICAgIF0pOworCisgICAgaGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMS5nZXRUcmFu
c2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHN0b3BwZWQ6IHRydWUs
CisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgdHJpY2tsZSh0LCBwYzIsIHBjMSk7CisgICAg
YXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKworICAgIGF3YWl0IG5lZ290
aWF0aW9uTmVlZGVkKHBjMSk7CisgICAgYXdhaXQgaWNlQ29ubmVjdGVkKHBjMSk7CisgICAgYXdh
aXQgaWNlQ29ubmVjdGVkKHBjMik7CisKKyAgICBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZl
cigpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2Fp
dCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGFuc3dlciA9IGF3YWl0IHBj
Mi5jcmVhdGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3
ZXIpOworICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworCisgICAg
aGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7CisgICAg
ICAgICAgc3RvcHBlZDogdHJ1ZSwKKyAgICAgICAgICBtaWQ6IG51bGwKKyAgICAgICAgfQorICAg
ICAgXSk7CisKKyAgICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisg
ICAgICAgIHsKKyAgICAgICAgICBzdG9wcGVkOiB0cnVlLAorICAgICAgICAgIG1pZDogbnVsbAor
ICAgICAgICB9CisgICAgICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja1N0b3BBZnRlclNldExv
Y2FsT2ZmZXIgPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjMi5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRB
dWRpb1RyYWNrcygpWzBdOworICAgIHBjMS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKyAgICBw
YzIuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisKKyAgICBsZXQgb2ZmZXIgPSBhd2FpdCBwYzEu
Y3JlYXRlT2ZmZXIoKTsKKworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZl
cikKKyAgICB0cmlja2xlKHQsIHBjMSwgcGMyKTsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNj
cmlwdGlvbihvZmZlcik7CisKKyAgICBwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc3RvcCgpOwor
CisgICAgbGV0IGFuc3dlciA9IGF3YWl0IHBjMi5jcmVhdGVBbnN3ZXIoKTsKKyAgICBjb25zdCB0
cmFja0V2ZW50cyA9IGF3YWl0IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMo
cGMxLCBhbnN3ZXIpOworICAgIC8vIFNwZWMgbGFuZ3VhZ2UgZG9lc24ndCBzYXkgYW55dGhpbmcg
YWJvdXQgY2hlY2tpbmcgd2hldGhlciB0aGUgdHJhbnNjZWl2ZXIKKyAgICAvLyBpcyBzdG9wcGVk
IGhlcmUuCisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsCisgICAgICBbCisgICAgICAgIHsKKyAg
ICAgICAgICB0cmFjazogcGMxLmdldFRyYW5zY2VpdmVycygpWzBdLnJlY2VpdmVyLnRyYWNrLAor
ICAgICAgICAgIHN0cmVhbXM6IFt7aWQ6IHN0cmVhbS5pZH1dCisgICAgICAgIH0KKyAgICAgIF0p
OworCisgICAgaGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMS5nZXRUcmFuc2NlaXZlcnMoKSwKKyAg
ICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHN0b3BwZWQ6IHRydWUsCisgICAgICAgIH0KKyAg
ICAgIF0pOworICAgIGF3YWl0IG5lZ290aWF0aW9uTmVlZGVkKHBjMSk7CisKKyAgICB0cmlja2xl
KHQsIHBjMiwgcGMxKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIp
OworCisgICAgYXdhaXQgaWNlQ29ubmVjdGVkKHBjMSk7CisgICAgYXdhaXQgaWNlQ29ubmVjdGVk
KHBjMik7CisKKyAgICBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0
IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3Rl
RGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGFuc3dlciA9IGF3YWl0IHBjMi5jcmVhdGVBbnN3ZXIo
KTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpOworICAgIGF3YWl0
IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworCisgICAgaGFzUHJvcHMocGMxLmdl
dFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgc3RvcHBlZDog
dHJ1ZSwKKyAgICAgICAgICBtaWQ6IG51bGwKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICBo
YXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAg
ICAgICBzdG9wcGVkOiB0cnVlLAorICAgICAgICAgIG1pZDogbnVsbAorICAgICAgICB9CisgICAg
ICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja1N0b3BBZnRlclNldFJlbW90ZU9mZmVyID0gYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAg
Y29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYzEuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzIuY2xvc2UoKSk7
CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFj
a3Moc3RyZWFtKSk7CisgICAgY29uc3QgdHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVsw
XTsKKyAgICBwYzEuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisgICAgcGMyLmFkZFRyYWNrKHRy
YWNrLCBzdHJlYW0pOworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIo
KTsKKworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikKKyAgICBhd2Fp
dCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICAvLyBTdG9wIG9uIF9hbnN3
ZXJlcl9zaWRlIG5vdy4gU2hvdWxkIHRha2UgZWZmZWN0IGluIGFuc3dlci4KKyAgICBwYzIuZ2V0
VHJhbnNjZWl2ZXJzKClbMF0uc3RvcCgpOworCisgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcGMy
LmNyZWF0ZUFuc3dlcigpOworICAgIGNvbnN0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3Rl
RGVzY3JpcHRpb25SZXR1cm5UcmFja0V2ZW50cyhwYzEsIGFuc3dlcik7CisgICAgaGFzUHJvcHMo
dHJhY2tFdmVudHMsIFtdKTsKKworICAgIGhhc1Byb3BzKHBjMS5nZXRUcmFuc2NlaXZlcnMoKSwK
KyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHN0b3BwZWQ6IHRydWUsCisgICAgICAgICAg
bWlkOiBudWxsCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgYXdhaXQgcGMyLnNldExvY2Fs
RGVzY3JpcHRpb24oYW5zd2VyKTsKKyAgfTsKKworICBjb25zdCBjaGVja1N0b3BBZnRlckNyZWF0
ZUFuc3dlciA9IGFzeW5jIHQgPT4geworICAgIGNvbnN0IHBjMSA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4gcGMxLmNsb3NlKCkpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4g
cGMyLmNsb3NlKCkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBzdG9wVHJhY2tzKHN0cmVhbSkpOworICAgIGNvbnN0IHRyYWNrID0gc3RyZWFtLmdldEF1
ZGlvVHJhY2tzKClbMF07CisgICAgcGMxLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworICAgIHBj
Mi5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKworICAgIGxldCBvZmZlciA9IGF3YWl0IHBjMS5j
cmVhdGVPZmZlcigpOworCisgICAgYXdhaXQgcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVy
KQorICAgIHRyaWNrbGUodCwgcGMxLCBwYzIpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2Ny
aXB0aW9uKG9mZmVyKTsKKworICAgIGxldCBhbnN3ZXIgPSBhd2FpdCBwYzIuY3JlYXRlQW5zd2Vy
KCk7CisKKyAgICAvLyBUb28gbGF0ZSBmb3IgdGhpcyB0byBnbyBpbiB0aGUgYW5zd2VyLiBJQ0Ug
c2hvdWxkIHN1Y2NlZWQuCisgICAgcGMyLmdldFRyYW5zY2VpdmVycygpWzBdLnN0b3AoKTsKKwor
ICAgIGNvbnN0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5U
cmFja0V2ZW50cyhwYzEsIGFuc3dlcik7CisgICAgaGFzUHJvcHModHJhY2tFdmVudHMsCisgICAg
ICBbCisgICAgICAgIHsKKyAgICAgICAgICB0cmFjazogcGMxLmdldFRyYW5zY2VpdmVycygpWzBd
LnJlY2VpdmVyLnRyYWNrLAorICAgICAgICAgIHN0cmVhbXM6IFt7aWQ6IHN0cmVhbS5pZH1dCisg
ICAgICAgIH0KKyAgICAgIF0pOworCisgICAgaGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMi5nZXRU
cmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHN0b3BwZWQ6IHRy
dWUsCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgdHJpY2tsZSh0LCBwYzIsIHBjMSk7Cisg
ICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKworICAgIGF3YWl0IG5l
Z290aWF0aW9uTmVlZGVkKHBjMik7CisgICAgYXdhaXQgaWNlQ29ubmVjdGVkKHBjMSk7CisgICAg
YXdhaXQgaWNlQ29ubmVjdGVkKHBjMik7CisKKyAgICBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVP
ZmZlcigpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICBh
d2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGFuc3dlciA9IGF3YWl0
IHBjMi5jcmVhdGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihh
bnN3ZXIpOworICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworCisg
ICAgaGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7Cisg
ICAgICAgICAgc3RvcHBlZDogdHJ1ZSwKKyAgICAgICAgICBtaWQ6IG51bGwKKyAgICAgICAgfQor
ICAgICAgXSk7CisKKyAgICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBb
CisgICAgICAgIHsKKyAgICAgICAgICBzdG9wcGVkOiB0cnVlLAorICAgICAgICAgIG1pZDogbnVs
bAorICAgICAgICB9CisgICAgICBdKTsKKyAgfTsKKworICBjb25zdCBjaGVja1N0b3BBZnRlclNl
dExvY2FsQW5zd2VyID0gYXN5bmMgdCA9PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgICAgY29uc3QgcGMyID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Cisg
ICAgdC5hZGRfY2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CisgICAgdC5hZGRfY2xlYW51cCgo
KSA9PiBwYzIuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVh
bnVwKCgpID0+IHN0b3BUcmFja3Moc3RyZWFtKSk7CisgICAgY29uc3QgdHJhY2sgPSBzdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKVswXTsKKyAgICBwYzEuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7Cisg
ICAgcGMyLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOworCisgICAgbGV0IG9mZmVyID0gYXdhaXQg
cGMxLmNyZWF0ZU9mZmVyKCk7CisKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24o
b2ZmZXIpCisgICAgdHJpY2tsZSh0LCBwYzEsIHBjMik7CisgICAgYXdhaXQgcGMxLnNldExvY2Fs
RGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgbGV0IGFuc3dlciA9IGF3YWl0IHBjMi5jcmVhdGVB
bnN3ZXIoKTsKKworICAgIGNvbnN0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3Jp
cHRpb25SZXR1cm5UcmFja0V2ZW50cyhwYzEsIGFuc3dlcik7CisgICAgaGFzUHJvcHModHJhY2tF
dmVudHMsCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICB0cmFjazogcGMxLmdldFRyYW5z
Y2VpdmVycygpWzBdLnJlY2VpdmVyLnRyYWNrLAorICAgICAgICAgIHN0cmVhbXM6IFt7aWQ6IHN0
cmVhbS5pZH1dCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgdHJpY2tsZSh0LCBwYzIsIHBj
MSk7CisgICAgYXdhaXQgcGMyLnNldExvY2FsRGVzY3JpcHRpb24oYW5zd2VyKTsKKworICAgIC8v
IElDRSBzaG91bGQgc3VjY2VlZC4KKyAgICBwYzIuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc3RvcCgp
OworCisgICAgaGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAg
ICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHN0b3BwZWQ6IHRydWUsCisgICAgICAgIH0KKyAg
ICAgIF0pOworCisgICAgYXdhaXQgbmVnb3RpYXRpb25OZWVkZWQocGMyKTsKKyAgICBhd2FpdCBp
Y2VDb25uZWN0ZWQocGMxKTsKKyAgICBhd2FpdCBpY2VDb25uZWN0ZWQocGMyKTsKKworICAgIG9m
ZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVz
Y3JpcHRpb24ob2ZmZXIpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZl
cik7CisgICAgYW5zd2VyID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IHBj
Mi5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMxLnNldFJlbW90ZURl
c2NyaXB0aW9uKGFuc3dlcik7CisKKyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCks
CisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICBzdG9wcGVkOiB0cnVlLAorICAgICAgICAg
IG1pZDogbnVsbAorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1Byb3BzKHBjMi5nZXRU
cmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHN0b3BwZWQ6IHRy
dWUsCisgICAgICAgICAgbWlkOiBudWxsCisgICAgICAgIH0KKyAgICAgIF0pOworICB9OworCisg
IGNvbnN0IGNoZWNrU3RvcEFmdGVyQ2xvc2UgPSBhc3luYyB0ID0+IHsKKyAgICBjb25zdCBwYzEg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5jbG9zZSgpKTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOwor
ICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0
cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjMS5hZGRUcmFjayh0cmFj
aywgc3RyZWFtKTsKKyAgICBwYzIuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisKKyAgICBjb25z
dCBvZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjMi5zZXRSZW1v
dGVEZXNjcmlwdGlvbihvZmZlcikKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlvbihv
ZmZlcik7CisgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAg
IGF3YWl0IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMxLnNl
dFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcik7CisKKyAgICBwYzEuY2xvc2UoKTsKKyAgICBhd2Fp
dCBjaGVja1Rocm93cygoKSA9PiBwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc3RvcCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgICAgICAgICAgICAg
ICAgICAgIlN0b3BwaW5nIGEgdHJhbnNjZWl2ZXIgb24gYSBjbG9zZWQgUEMgc2hvdWxkIHRocm93
LiIpOworICB9OworCisgIGNvbnN0IGNoZWNrTG9jYWxSb2xsYmFjayA9IGFzeW5jIHQgPT4gewor
ICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiBwYy5jbG9zZSgpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0pKTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pOwor
CisgICAgbGV0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYy5z
ZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIGhhc1Byb3BzQW5kVW5pcXVlTWlkcyhw
Yy5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHJlY2Vp
dmVyOiB7dHJhY2s6IHtraW5kOiAiYXVkaW8ifX0sCisgICAgICAgICAgc2VuZGVyOiB7dHJhY2t9
LAorICAgICAgICAgIGRpcmVjdGlvbjogInNlbmRyZWN2IiwKKyAgICAgICAgICBjdXJyZW50RGly
ZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0KKyAgICAg
IF0pOworCisgICAgLy8gVmVyaWZ5IHRoYXQgcm9sbGJhY2sgZG9lc24ndCBzdG9tcCB0aGluZ3Mg
aXQgc2hvdWxkIG5vdAorICAgIHBjLmdldFRyYW5zY2VpdmVycygpWzBdLmRpcmVjdGlvbiA9ICJz
ZW5kb25seSI7CisgICAgY29uc3Qgc3RyZWFtMiA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGNvbnN0IHRyYWNrMiA9IHN0cmVh
bTIuZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAgICBhd2FpdCBwYy5nZXRUcmFuc2NlaXZlcnMoKVsw
XS5zZW5kZXIucmVwbGFjZVRyYWNrKHRyYWNrMik7CisKKyAgICBhd2FpdCBwYy5zZXRMb2NhbERl
c2NyaXB0aW9uKHt0eXBlOiAicm9sbGJhY2sifSk7CisKKyAgICBoYXNQcm9wcyhwYy5nZXRUcmFu
c2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHJlY2VpdmVyOiB7dHJh
Y2s6IHtraW5kOiAiYXVkaW8ifX0sCisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IHRyYWNrMn0s
CisgICAgICAgICAgZGlyZWN0aW9uOiAic2VuZG9ubHkiLAorICAgICAgICAgIG1pZDogbnVsbCwK
KyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZh
bHNlCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgLy8gTWFrZSBzdXJlIHN0b3AoKSBpc24n
dCByb2xsZWQgYmFjayBlaXRoZXIuCisgICAgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigp
OworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIHBjLmdldFRy
YW5zY2VpdmVycygpWzBdLnN0b3AoKTsKKyAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9u
KHt0eXBlOiAicm9sbGJhY2sifSk7CisKKyAgICBoYXNQcm9wcyhwYy5nZXRUcmFuc2NlaXZlcnMo
KSwgW3sgc3RvcHBlZDogdHJ1ZSB9XSk7CisgIH07CisKKyAgY29uc3QgY2hlY2tSb2xsYmFja0Fu
ZFNldFJlbW90ZU9mZmVyV2l0aERpZmZlcmVudFR5cGUgPSBhc3luYyB0ID0+IHsKKyAgICBjb25z
dCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHBjMS5jbG9zZSgpKTsKKworICAgIGNvbnN0IGF1ZGlvU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiBzdG9wVHJhY2tzKGF1ZGlvU3RyZWFtKSk7CisgICAgY29uc3QgYXVkaW9UcmFj
ayA9IGF1ZGlvU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgcGMxLmFkZFRyYWNrKGF1
ZGlvVHJhY2ssIGF1ZGlvU3RyZWFtKTsKKworICAgIGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMyLmNsb3NlKCkpOworCisgICAg
Y29uc3QgdmlkZW9TdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7dmlkZW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFja3Mo
dmlkZW9TdHJlYW0pKTsKKyAgICBjb25zdCB2aWRlb1RyYWNrID0gdmlkZW9TdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKVswXTsKKyAgICBwYzIuYWRkVHJhY2sodmlkZW9UcmFjaywgdmlkZW9TdHJlYW0p
OworCisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRpb24oYXdhaXQgcGMxLmNyZWF0ZU9m
ZmVyKCkpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKHt0eXBlOiAicm9sbGJh
Y2sifSk7CisKKyAgICBoYXNQcm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisg
ICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIn19LAor
ICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiBhdWRpb1RyYWNrfSwKKyAgICAgICAgICBkaXJlY3Rp
b246ICJzZW5kcmVjdiIsCisgICAgICAgICAgbWlkOiBudWxsLAorICAgICAgICAgIGN1cnJlbnRE
aXJlY3Rpb246IG51bGwsCisgICAgICAgICAgc3RvcHBlZDogZmFsc2UKKyAgICAgICAgfQorICAg
ICAgXSk7CisKKyAgICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisg
ICAgICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIn19LAor
ICAgICAgICAgIHNlbmRlcjoge3RyYWNrOiB2aWRlb1RyYWNrfSwKKyAgICAgICAgICBkaXJlY3Rp
b246ICJzZW5kcmVjdiIsCisgICAgICAgICAgbWlkOiBudWxsLAorICAgICAgICAgIGN1cnJlbnRE
aXJlY3Rpb246IG51bGwsCisgICAgICAgICAgc3RvcHBlZDogZmFsc2UKKyAgICAgICAgfQorICAg
ICAgXSk7CisKKyAgICBhd2FpdCBvZmZlckFuc3dlcihwYzIsIHBjMSk7CisKKyAgICBoYXNQcm9w
c0FuZFVuaXF1ZU1pZHMocGMxLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7
CisgICAgICAgICAgcmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJhdWRpbyJ9fSwKKyAgICAgICAg
ICBzZW5kZXI6IHt0cmFjazogYXVkaW9UcmFja30sCisgICAgICAgICAgZGlyZWN0aW9uOiAic2Vu
ZHJlY3YiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9u
OiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIn19LAorICAgICAgICAg
IHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJyZWN2b25seSIs
CisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogInJlY3Zvbmx5IiwKKyAgICAgICAgICBzdG9w
cGVkOiBmYWxzZQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1Byb3BzQW5kVW5pcXVl
TWlkcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAg
ICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogInZpZGVvIn19LAorICAgICAgICAgIHNlbmRlcjog
e3RyYWNrOiB2aWRlb1RyYWNrfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJzZW5kcmVjdiIsCisg
ICAgICAgICAgY3VycmVudERpcmVjdGlvbjogInNlbmRvbmx5IiwKKyAgICAgICAgICBzdG9wcGVk
OiBmYWxzZQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGF3YWl0IG9mZmVyQW5zd2VyKHBj
MSwgcGMyKTsKKyAgfTsKKworICBjb25zdCBjaGVja1JlbW90ZVJvbGxiYWNrID0gYXN5bmMgdCA9
PiB7CisgICAgY29uc3QgcGMxID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYzEuY2xvc2UoKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHN0b3BUcmFja3Moc3RyZWFtKSk7CisgICAgY29uc3QgdHJhY2sg
PSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAgICBwYzEuYWRkVHJhY2sodHJhY2ssIHN0
cmVhbSk7CisKKyAgICBsZXQgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKKworICAg
IGNvbnN0IHBjMiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4gcGMyLmNsb3NlKCkpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihv
ZmZlcik7CisKKyAgICBjb25zdCByZW1vdmVkVHJhbnNjZWl2ZXIgPSBwYzIuZ2V0VHJhbnNjZWl2
ZXJzKClbMF07CisKKyAgICBjb25zdCBvbmVuZGVkID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICByZW1vdmVkVHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sub25lbmRlZCA9IHJlc29s
dmU7CisgICAgfSk7CisKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24oe3R5cGU6
ICJyb2xsYmFjayJ9KTsKKworICAgIC8vIFRyYW5zY2VpdmVyIHNob3VsZCBiZSBfZ29uZV8KKyAg
ICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksIFtdKTsKKworICAgIGhhc1Byb3BzKHJl
bW92ZWRUcmFuc2NlaXZlciwKKyAgICAgIHsKKyAgICAgICAgc3RvcHBlZDogdHJ1ZSwKKyAgICAg
ICAgbWlkOiBudWxsLAorICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsCisgICAgICB9Cisg
ICAgKTsKKworICAgIGF3YWl0IG9uZW5kZWQ7CisKKyAgICBoYXNQcm9wcyhyZW1vdmVkVHJhbnNj
ZWl2ZXIsCisgICAgICB7CisgICAgICAgIHJlY2VpdmVyOiB7dHJhY2s6IHtyZWFkeVN0YXRlOiAi
ZW5kZWQifX0sCisgICAgICAgIHN0b3BwZWQ6IHRydWUsCisgICAgICAgIG1pZDogbnVsbCwKKyAg
ICAgICAgY3VycmVudERpcmVjdGlvbjogbnVsbAorICAgICAgfQorICAgICk7CisKKyAgICAvLyBT
ZXR0aW5nIHRoZSBzYW1lIG9mZmVyIGFnYWluIHNob3VsZCBkbyB0aGUgc2FtZSB0aGluZyBhcyBi
ZWZvcmUKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGhh
c1Byb3BzQW5kVW5pcXVlTWlkcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAg
ICAgIHsKKyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIn19LAorICAg
ICAgICAgIHNlbmRlcjoge3RyYWNrOiBudWxsfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJyZWN2
b25seSIsCisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogbnVsbCwKKyAgICAgICAgICBzdG9w
cGVkOiBmYWxzZQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGNvbnN0IG1pZDAgPSBwYzIu
Z2V0VHJhbnNjZWl2ZXJzKClbMF0ubWlkOworCisgICAgLy8gR2l2ZSBwYzIgYSB0cmFjayB3aXRo
IHJlcGxhY2VUcmFjaworICAgIGNvbnN0IHN0cmVhbTIgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHN0b3BUcmFja3Moc3RyZWFtMikpOworICAgIGNvbnN0IHRyYWNrMiA9IHN0cmVhbTIuZ2V0
QXVkaW9UcmFja3MoKVswXTsKKyAgICBhd2FpdCBwYzIuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc2Vu
ZGVyLnJlcGxhY2VUcmFjayh0cmFjazIpOworICAgIHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5k
aXJlY3Rpb24gPSAic2VuZHJlY3YiOworICAgIGhhc1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMo
KSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHJlY2VpdmVyOiB7dHJhY2s6IHtraW5k
OiAiYXVkaW8ifX0sCisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IHRyYWNrMn0sCisgICAgICAg
ICAgZGlyZWN0aW9uOiAic2VuZHJlY3YiLAorICAgICAgICAgIG1pZDogbWlkMCwKKyAgICAgICAg
ICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAg
ICAgIH0KKyAgICAgIF0pOworCisgICAgYXdhaXQgcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKHt0
eXBlOiAicm9sbGJhY2sifSk7CisKKyAgICAvLyBUcmFuc2NlaXZlciBzaG91bGQgYmUgX2dvbmVf
LCBhZ2Fpbi4gcmVwbGFjZVRyYWNrIGRvZXNuJ3QgcHJldmVudCB0aGlzLAorICAgIC8vIG5vciBk
b2VzIHNldERpcmVjdGlvbi4KKyAgICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksIFtd
KTsKKworICAgIC8vIFNldHRpbmcgdGhlIHNhbWUgb2ZmZXIgZm9yIGEgX3RoaXJkXyB0aW1lIHNo
b3VsZCBkbyB0aGUgc2FtZSB0aGluZworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlv
bihvZmZlcik7CisgICAgaGFzUHJvcHMocGMyLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWwor
ICAgICAgICB7CisgICAgICAgICAgcmVjZWl2ZXI6IHt0cmFjazoge2tpbmQ6ICJhdWRpbyJ9fSwK
KyAgICAgICAgICBzZW5kZXI6IHt0cmFjazogbnVsbH0sCisgICAgICAgICAgZGlyZWN0aW9uOiAi
cmVjdm9ubHkiLAorICAgICAgICAgIG1pZDogbWlkMCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0
aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IGZhbHNlCisgICAgICAgIH0KKyAgICAgIF0p
OworCisgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRoZSBzYW1lIHRyYWNrIGFnYWlu
CisgICAgcGMyLmFkZFRyYWNrKHRyYWNrMiwgc3RyZWFtMik7CisgICAgaGFzUHJvcHMocGMyLmdl
dFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgcmVjZWl2ZXI6
IHt0cmFjazoge2tpbmQ6ICJhdWRpbyJ9fSwKKyAgICAgICAgICBzZW5kZXI6IHt0cmFjazogdHJh
Y2syfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJzZW5kcmVjdiIsCisgICAgICAgICAgbWlkOiBt
aWQwLAorICAgICAgICAgIGN1cnJlbnREaXJlY3Rpb246IG51bGwsCisgICAgICAgICAgc3RvcHBl
ZDogZmFsc2UKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3Rl
RGVzY3JpcHRpb24oe3R5cGU6ICJyb2xsYmFjayJ9KTsKKyAgICAvLyBUcmFuc2NlaXZlciBzaG91
bGQgX25vdF8gYmUgZ29uZSB0aGlzIHRpbWUsIGJlY2F1c2UgYWRkVHJhY2sgdG91Y2hlZCBpdC4K
KyAgICBoYXNQcm9wcyhwYzIuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsK
KyAgICAgICAgICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIn19LAorICAgICAgICAg
IHNlbmRlcjoge3RyYWNrOiB0cmFjazJ9LAorICAgICAgICAgIGRpcmVjdGlvbjogInNlbmRyZWN2
IiwKKyAgICAgICAgICBtaWQ6IG51bGwsCisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogbnVs
bCwKKyAgICAgICAgICBzdG9wcGVkOiBmYWxzZQorICAgICAgICB9CisgICAgICBdKTsKKworICAg
IC8vIENvbXBsZXRlIG5lZ290aWF0aW9uIHNvIHdlIGNhbiB0ZXN0IGludGVyYWN0aW9ucyB3aXRo
IHRyYW5zY2VpdmVyLnN0b3AoKQorICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKG9m
ZmVyKTsKKworICAgIC8vIEFmdGVyIGFsbCB0aGlzIFNSRC9yb2xsYmFjaywgd2Ugc2hvdWxkIHN0
aWxsIGdldCB0aGUgdHJhY2sgZXZlbnQKKyAgICBsZXQgdHJhY2tFdmVudHMgPSBhd2FpdCBzZXRS
ZW1vdGVEZXNjcmlwdGlvblJldHVyblRyYWNrRXZlbnRzKHBjMiwgb2ZmZXIpOworICAgIGhhc1By
b3BzKHRyYWNrRXZlbnRzLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgdHJhY2s6IHBj
Mi5nZXRUcmFuc2NlaXZlcnMoKVswXS5yZWNlaXZlci50cmFjaywKKyAgICAgICAgICBzdHJlYW1z
OiBbe2lkOiBzdHJlYW0uaWR9XQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGNvbnN0IGFu
c3dlciA9IGF3YWl0IHBjMi5jcmVhdGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxE
ZXNjcmlwdGlvbihhbnN3ZXIpOworCisgICAgLy8gTWFrZSBzdXJlIGFsbCB0aGlzIHJvbGxiYWNr
IGhhc24ndCBtZXNzZWQgdXAgdGhlIHNpZ25hbGluZworICAgIHRyYWNrRXZlbnRzID0gYXdhaXQg
c2V0UmVtb3RlRGVzY3JpcHRpb25SZXR1cm5UcmFja0V2ZW50cyhwYzEsIGFuc3dlcik7CisgICAg
aGFzUHJvcHModHJhY2tFdmVudHMsCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAgICB0cmFj
azogcGMxLmdldFRyYW5zY2VpdmVycygpWzBdLnJlY2VpdmVyLnRyYWNrLAorICAgICAgICAgIHN0
cmVhbXM6IFt7aWQ6IHN0cmVhbTIuaWR9XQorICAgICAgICB9CisgICAgICBdKTsKKyAgICBoYXNQ
cm9wcyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKCksCisgICAgICBbCisgICAgICAgIHsKKyAgICAgICAg
ICByZWNlaXZlcjoge3RyYWNrOiB7a2luZDogImF1ZGlvIn19LAorICAgICAgICAgIHNlbmRlcjog
e3RyYWNrfSwKKyAgICAgICAgICBkaXJlY3Rpb246ICJzZW5kcmVjdiIsCisgICAgICAgICAgbWlk
OiBtaWQwLAorICAgICAgICAgIGN1cnJlbnREaXJlY3Rpb246ICJzZW5kcmVjdiIsCisgICAgICAg
ICAgc3RvcHBlZDogZmFsc2UKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICAvLyBEb24ndCBi
b3RoZXIgd2FpdGluZyBmb3IgSUNFIGFuZCBzdWNoCisKKyAgICAvLyBDaGVjayB0byBzZWUgd2hl
dGhlciByb2xsaW5nIGJhY2sgYSByZW1vdGUgdHJhY2sgcmVtb3ZhbCB3b3JrcworICAgIHBjMS5n
ZXRUcmFuc2NlaXZlcnMoKVswXS5kaXJlY3Rpb24gPSAicmVjdm9ubHkiOworICAgIG9mZmVyID0g
YXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisKKyAgICB0cmFja0V2ZW50cyA9IGF3YWl0IHNldFJl
bW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMocGMyLCBvZmZlcik7CisgICAgaGFzUHJv
cHModHJhY2tFdmVudHMsIFtdKTsKKworICAgIHRyYWNrRXZlbnRzID0KKyAgICAgIGF3YWl0IHNl
dFJlbW90ZURlc2NyaXB0aW9uUmV0dXJuVHJhY2tFdmVudHMocGMyLCB7dHlwZTogInJvbGxiYWNr
In0pOworICAgIGhhc1Byb3BzKHRyYWNrRXZlbnRzLAorICAgICAgWworICAgICAgICB7CisgICAg
ICAgICAgdHJhY2s6IHBjMi5nZXRUcmFuc2NlaXZlcnMoKVswXS5yZWNlaXZlci50cmFjaywKKyAg
ICAgICAgICBzdHJlYW1zOiBbe2lkOiBzdHJlYW0uaWR9XQorICAgICAgICB9CisgICAgICBdKTsK
KworICAgIC8vIENoZWNrIHRvIHNlZSB0aGF0IHN0b3AoKSBjYW5ub3QgYmUgcm9sbGVkIGJhY2sK
KyAgICBwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc3RvcCgpOworICAgIG9mZmVyID0gYXdhaXQg
cGMxLmNyZWF0ZU9mZmVyKCk7CisKKyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24o
b2ZmZXIpOworICAgIGhhc1Byb3BzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAg
ICAgICAgeworICAgICAgICAgIHJlY2VpdmVyOiB7dHJhY2s6IHtraW5kOiAiYXVkaW8ifX0sCisg
ICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IHRyYWNrMn0sCisgICAgICAgICAgZGlyZWN0aW9uOiAi
c2VuZHJlY3YiLAorICAgICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0
aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6IHRydWUKKyAgICAgICAgfQorICAgICAgXSk7
CisKKyAgICAvLyBzdG9wKCkgY2Fubm90IGJlIHJvbGxlZCBiYWNrIQorICAgIGF3YWl0IHBjMi5z
ZXRSZW1vdGVEZXNjcmlwdGlvbih7dHlwZTogInJvbGxiYWNrIn0pOworICAgIGhhc1Byb3BzKHBj
Mi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHJlY2Vp
dmVyOiB7dHJhY2s6IHtraW5kOiAiYXVkaW8ifX0sCisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6
IHtraW5kOiAiYXVkaW8ifX0sCisgICAgICAgICAgZGlyZWN0aW9uOiAic2VuZHJlY3YiLAorICAg
ICAgICAgIG1pZDogbnVsbCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAg
ICAgICAgIHN0b3BwZWQ6IHRydWUKKyAgICAgICAgfQorICAgICAgXSk7CisgIH07CisKKyAgY29u
c3QgY2hlY2tNc2VjdGlvblJldXNlID0gYXN5bmMgdCA9PiB7CisgICAgLy8gVXNlIG1heC1jb21w
YXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY2hlY2sgZm9yIGRpc2FibGVkIG0tc2VjdGlvbnMKKyAg
ICBjb25zdCBwYzEgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oeyBidW5kbGVQb2xpY3k6ICJtYXgt
Y29tcGF0IiB9KTsKKyAgICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oeyBidW5k
bGVQb2xpY3k6ICJtYXgtY29tcGF0IiB9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMS5j
bG9zZSgpKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjMi5jbG9zZSgpKTsKKworICAgIGNv
bnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0p
KTsKKyAgICBjb25zdCB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBj
MS5hZGRUcmFjayh0cmFjaywgc3RyZWFtKTsKKworICAgIGxldCBvZmZlciA9IGF3YWl0IHBjMS5j
cmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsK
KyAgICBhd2FpdCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgLy8gYW5z
d2VyZXIgc3RvcHMgdHJhbnNjZWl2ZXIgdG8gcmVqZWN0IG0tc2VjdGlvbgorICAgIGNvbnN0IHN0
b3BwZWRNaWQwID0gcGMyLmdldFRyYW5zY2VpdmVycygpWzBdLm1pZDsKKyAgICBwYzIuZ2V0VHJh
bnNjZWl2ZXJzKClbMF0uc3RvcCgpOworCisgICAgbGV0IGFuc3dlciA9IGF3YWl0IHBjMi5jcmVh
dGVBbnN3ZXIoKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpOwor
ICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworCisgICAgaGFzUHJv
cHMocGMxLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAg
bWlkOiBudWxsLAorICAgICAgICAgIGN1cnJlbnREaXJlY3Rpb246IG51bGwsCisgICAgICAgICAg
c3RvcHBlZDogdHJ1ZQorICAgICAgICB9CisgICAgICBdKTsKKworICAgIGhhc1Byb3BzKHBjMi5n
ZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIG1pZDogbnVs
bCwKKyAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiBudWxsLAorICAgICAgICAgIHN0b3BwZWQ6
IHRydWUKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICAvLyBDaGVjayB0aGF0IG0tc2VjdGlv
biBpcyByZXVzZWQgb24gYm90aCBlbmRzCisgICAgY29uc3Qgc3RyZWFtMiA9IGF3YWl0IG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0yKSk7CisgICAgY29uc3QgdHJhY2syID0g
c3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpWzBdOworCisgICAgcGMxLmFkZFRyYWNrKHRyYWNrMiwg
c3RyZWFtMik7CisgICAgb2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKG9mZmVyLnNkcC5tYXRjaCgvbT0vZykubGVuZ3RoLCAxLAorICAgICAgICAgICAg
ICAgICAgIkV4YWN0bHkgb25lIG0tbGluZSBpbiBvZmZlciwgYmVjYXVzZSBpdCB3YXMgcmV1c2Vk
Iik7CisgICAgaGFzUHJvcHMocGMxLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAg
ICB7CisgICAgICAgICAgc3RvcHBlZDogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgc2VuZGVyOiB7dHJhY2s6IHRyYWNrMn0KKyAgICAgICAgfQorICAgICAgXSk7CisKKyAg
ICBhc3NlcnRfbm90X2VxdWFscyhwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMV0ubWlkLCBzdG9wcGVk
TWlkMCk7CisKKyAgICBwYzIuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSk7CisgICAgb2ZmZXIgPSBh
d2FpdCBwYzIuY3JlYXRlT2ZmZXIoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5tYXRj
aCgvbT0vZykubGVuZ3RoLCAxLAorICAgICAgICAgICAgICAgICAgIkV4YWN0bHkgb25lIG0tbGlu
ZSBpbiBvZmZlciwgYmVjYXVzZSBpdCB3YXMgcmV1c2VkIik7CisgICAgaGFzUHJvcHMocGMyLmdl
dFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7CisgICAgICAgICAgc3RvcHBlZDog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgc2VuZGVyOiB7dHJhY2t9Cisg
ICAgICAgIH0KKyAgICAgIF0pOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHMocGMyLmdldFRyYW5z
Y2VpdmVycygpWzFdLm1pZCwgc3RvcHBlZE1pZDApOworCisgICAgYXdhaXQgcGMyLnNldExvY2Fs
RGVzY3JpcHRpb24ob2ZmZXIpOworICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihv
ZmZlcik7CisgICAgYW5zd2VyID0gYXdhaXQgcGMxLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0
IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgcGMyLnNldFJlbW90
ZURlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgaGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMS5nZXRU
cmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIG1pZDogbnVsbAor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IHRyYWNrMn0s
CisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogInNlbmRyZWN2IgorICAgICAgICB9CisgICAg
ICBdKTsKKworICAgIGNvbnN0IG1pZDAgPSBwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMV0ubWlkOwor
CisgICAgaGFzUHJvcHMocGMyLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7
CisgICAgICAgICAgbWlkOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBz
ZW5kZXI6IHt0cmFja30sCisgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogInNlbmRyZWN2IiwK
KyAgICAgICAgICBtaWQ6IG1pZDAKKyAgICAgICAgfQorICAgICAgXSk7CisKKyAgICAvLyBzdG9w
IHRoZSB0cmFuc2NlaXZlciwgYW5kIGFkZCBhIHRyYWNrLiBWZXJpZnkgdGhhdCB3ZSBkb24ndCBy
ZXVzZQorICAgIC8vIHByZW1hdHVyZWx5IGluIG91ciBvZmZlci4gKFRoZXJlIHNob3VsZCBiZSBv
bmUgcmVqZWN0ZWQgbS1zZWN0aW9uLCBhbmQgYQorICAgIC8vIG5ldyBvbmUgZm9yIHRoZSBuZXcg
dHJhY2spCisgICAgY29uc3Qgc3RvcHBlZE1pZDEgPSBwYzEuZ2V0VHJhbnNjZWl2ZXJzKClbMV0u
bWlkOworICAgIHBjMS5nZXRUcmFuc2NlaXZlcnMoKVsxXS5zdG9wKCk7CisgICAgY29uc3Qgc3Ry
ZWFtMyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzog
dHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gc3RvcFRyYWNrcyhzdHJlYW0zKSk7Cisg
ICAgY29uc3QgdHJhY2szID0gc3RyZWFtMy5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgIHBjMS5h
ZGRUcmFjayh0cmFjazMsIHN0cmVhbTMpOworICAgIG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9m
ZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAubWF0Y2goL209L2cpLmxlbmd0aCwg
MiwKKyAgICAgICAgICAgICAgICAgICJFeGFjdGx5IDIgbS1saW5lcyBpbiBvZmZlciwgYmVjYXVz
ZSBpdCBpcyB0b28gZWFybHkgdG8gcmV1c2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNk
cC5tYXRjaCgvbT1hdWRpbyAwIC9nKS5sZW5ndGgsIDEsCisgICAgICAgICAgICAgICAgICAiT25l
IG0tbGluZSBpcyByZWplY3RlZCIpOworCisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRp
b24ob2ZmZXIpOworCisgICAgbGV0IHRyYWNrRXZlbnRzID0gYXdhaXQgc2V0UmVtb3RlRGVzY3Jp
cHRpb25SZXR1cm5UcmFja0V2ZW50cyhwYzIsIG9mZmVyKTsKKyAgICBoYXNQcm9wcyh0cmFja0V2
ZW50cywKKyAgICAgIFsKKyAgICAgICAgeworICAgICAgICAgIHRyYWNrOiBwYzIuZ2V0VHJhbnNj
ZWl2ZXJzKClbMl0ucmVjZWl2ZXIudHJhY2ssCisgICAgICAgICAgc3RyZWFtczogW3tpZDogc3Ry
ZWFtMy5pZH1dCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgYW5zd2VyID0gYXdhaXQgcGMy
LmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dl
cik7CisKKyAgICB0cmFja0V2ZW50cyA9IGF3YWl0IHNldFJlbW90ZURlc2NyaXB0aW9uUmV0dXJu
VHJhY2tFdmVudHMocGMxLCBhbnN3ZXIpOworICAgIGhhc1Byb3BzKHRyYWNrRXZlbnRzLCBbXSk7
CisKKyAgICBoYXNQcm9wc0FuZFVuaXF1ZU1pZHMocGMyLmdldFRyYW5zY2VpdmVycygpLAorICAg
ICAgWworICAgICAgICB7CisgICAgICAgICAgbWlkOiBudWxsCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICBtaWQ6IG51bGwsCisgICAgICAgICAgc3RvcHBlZDogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IG51bGx9LAorICAgICAg
ICAgIGN1cnJlbnREaXJlY3Rpb246ICJyZWN2b25seSIKKyAgICAgICAgfQorICAgICAgXSk7CisK
KyAgICAvLyBWZXJpZnkgdGhhdCB3ZSBkb24ndCByZXVzZSB0aGUgbWlkIGZyb20gdGhlIHN0b3Bw
ZWQgdHJhbnNjZWl2ZXIKKyAgICBjb25zdCBtaWQxID0gcGMyLmdldFRyYW5zY2VpdmVycygpWzJd
Lm1pZDsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhtaWQxLCBzdG9wcGVkTWlkMSk7CisKKyAgICBw
YzIuYWRkVHJhY2sodHJhY2szLCBzdHJlYW0zKTsKKyAgICAvLyBUaGVyZSBhcmUgdHdvIHdheXMg
dG8gaGFuZGxlIHRoaXMgbmV3IHRyYWNrOyByZXVzZSB0aGUgcmVjdm9ubHkKKyAgICAvLyB0cmFu
c2NlaXZlciBjcmVhdGVkIGFib3ZlLCBvciBjcmVhdGUgYSBuZXcgdHJhbnNjZWl2ZXIgYW5kIHJl
dXNlIHRoZQorICAgIC8vIGRpc2FibGVkIG0tc2VjdGlvbi4gV2UncmUgc3VwcG9zZWQgdG8gZG8g
dGhlIGZvcm1lci4KKyAgICBvZmZlciA9IGF3YWl0IHBjMi5jcmVhdGVPZmZlcigpOworICAgIGFz
c2VydF9lcXVhbHMob2ZmZXIuc2RwLm1hdGNoKC9tPS9nKS5sZW5ndGgsIDIsICJFeGFjdGx5IDIg
bS1saW5lcyBpbiBvZmZlciIpOworICAgIGFzc2VydF9lcXVhbHMob2ZmZXIuc2RwLm1hdGNoKC9t
PWF1ZGlvIDAgL2cpLmxlbmd0aCwgMSwKKyAgICAgICAgICAgICAgICAgICJPbmUgbS1saW5lIGlz
IHJlamVjdGVkLCBiZWNhdXNlIHRoZSBvdGhlciB3YXMgdXNlZCIpOworCisgICAgaGFzUHJvcHMo
cGMyLmdldFRyYW5zY2VpdmVycygpLAorICAgICAgWworICAgICAgICB7fSwKKyAgICAgICAgewor
ICAgICAgICAgIHN0b3BwZWQ6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
IG1pZDogbWlkMSwKKyAgICAgICAgICBzZW5kZXI6IHt0cmFjazogdHJhY2szfSwKKyAgICAgICAg
ICBjdXJyZW50RGlyZWN0aW9uOiAicmVjdm9ubHkiLAorICAgICAgICAgIGRpcmVjdGlvbjogInNl
bmRyZWN2IgorICAgICAgICB9CisgICAgICBdKTsKKworICAgIC8vIEFkZCBfYW5vdGhlcl8gdHJh
Y2s7IHRoaXMgc2hvdWxkIHJldXNlIHRoZSBkaXNhYmxlZCBtLXNlY3Rpb24KKyAgICBjb25zdCBz
dHJlYW00ID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OiB0cnVlfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiBzdG9wVHJhY2tzKHN0cmVhbTQpKTsK
KyAgICBjb25zdCB0cmFjazQgPSBzdHJlYW00LmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgcGMy
LmFkZFRyYWNrKHRyYWNrNCwgc3RyZWFtNCk7CisgICAgb2ZmZXIgPSBhd2FpdCBwYzIuY3JlYXRl
T2ZmZXIoKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAg
aGFzUHJvcHNBbmRVbmlxdWVNaWRzKHBjMi5nZXRUcmFuc2NlaXZlcnMoKSwKKyAgICAgIFsKKyAg
ICAgICAgeworICAgICAgICAgICBtaWQ6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICBtaWQ6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIG1pZDog
bWlkMQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgc2VuZGVyOiB7dHJhY2s6IHRy
YWNrNH0sCisgICAgICAgIH0KKyAgICAgIF0pOworCisgICAgLy8gRm91cnRoIHRyYW5zY2VpdmVy
IHNob3VsZCBoYXZlIGEgbmV3IG1pZAorICAgIGFzc2VydF9ub3RfZXF1YWxzKHBjMi5nZXRUcmFu
c2NlaXZlcnMoKVszXS5taWQsIHN0b3BwZWRNaWQwKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhw
YzIuZ2V0VHJhbnNjZWl2ZXJzKClbM10ubWlkLCBzdG9wcGVkTWlkMSk7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKG9mZmVyLnNkcC5tYXRjaCgvbT0vZykubGVuZ3RoLCAyLAorICAgICAgICAgICAgICAg
ICAgIkV4YWN0bHkgMiBtLWxpbmVzIGluIG9mZmVyLCBiZWNhdXNlIG0tc2VjdGlvbiB3YXMgcmV1
c2VkIik7CisgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAubWF0Y2goL209YXVkaW8gMCAvZyks
IG51bGwsCisgICAgICAgICAgICAgICAgICAiTm8gcmVqZWN0ZWQgbS1saW5lLCBiZWNhdXNlIGl0
IHdhcyByZXVzZWQiKTsKKyAgfTsKKworY29uc3QgdGVzdHMgPSBbCisgIGNoZWNrQWRkVHJhbnNj
ZWl2ZXJOb1RyYWNrLAorICBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aFRyYWNrLAorICBjaGVja0Fk
ZFRyYW5zY2VpdmVyV2l0aEFkZFRyYWNrLAorICBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aERpcmVj
dGlvbiwKKyAgY2hlY2tBZGRUcmFuc2NlaXZlcldpdGhTdHJlYW0sCisgIGZ1bmN0aW9uIGNoZWNr
QWRkVHJhbnNjZWl2ZXJXaXRoT2ZmZXJUb1JlY2VpdmVBdWRpbyh0KSB7CisgICAgcmV0dXJuIGNo
ZWNrQWRkVHJhbnNjZWl2ZXJXaXRoT2ZmZXJUb1JlY2VpdmUodCwgWyJhdWRpbyJdKTsKKyAgfSwK
KyAgZnVuY3Rpb24gY2hlY2tBZGRUcmFuc2NlaXZlcldpdGhPZmZlclRvUmVjZWl2ZVZpZGVvKHQp
IHsKKyAgICByZXR1cm4gY2hlY2tBZGRUcmFuc2NlaXZlcldpdGhPZmZlclRvUmVjZWl2ZSh0LCBb
InZpZGVvIl0pOworICB9LAorICBmdW5jdGlvbiBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aE9mZmVy
VG9SZWNlaXZlQm90aCh0KSB7CisgICAgcmV0dXJuIGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoT2Zm
ZXJUb1JlY2VpdmUodCwgWyJhdWRpbyIsICJ2aWRlbyJdKTsKKyAgfSwKKyAgY2hlY2tBZGRUcmFu
c2NlaXZlcldpdGhTZXRSZW1vdGVPZmZlclNlbmRpbmcsCisgIGNoZWNrQWRkVHJhbnNjZWl2ZXJX
aXRoU2V0UmVtb3RlT2ZmZXJOb1NlbmQsCisgIGNoZWNrQWRkVHJhbnNjZWl2ZXJCYWRLaW5kLAor
ICBjaGVja05vTWlkT2ZmZXIsCisgIGNoZWNrU2V0RGlyZWN0aW9uLAorICBjaGVja0N1cnJlbnRE
aXJlY3Rpb24sCisgIGNoZWNrU2VuZHJlY3ZXaXRoTm9TZW5kVHJhY2ssCisgIGNoZWNrU2VuZHJl
Y3ZXaXRoVHJhY2tsZXNzU3RyZWFtLAorICBjaGVja0FkZFRyYW5zY2VpdmVyTm9UcmFja0RvZXNu
dFBhaXIsCisgIGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoVHJhY2tEb2VzbnRQYWlyLAorICBjaGVj
a0FkZFRyYW5zY2VpdmVyVGhlblJlcGxhY2VUcmFja0RvZXNudFBhaXIsCisgIGNoZWNrQWRkVHJh
bnNjZWl2ZXJUaGVuQWRkVHJhY2tQYWlycywKKyAgY2hlY2tBZGRUcmFja1BhaXJzLAorICBjaGVj
a1JlcGxhY2VUcmFja051bGxEb2VzbnRQcmV2ZW50UGFpcmluZywKKyAgY2hlY2tSZW1vdmVBbmRS
ZWFkZCwKKyAgY2hlY2tBZGRUcmFja0V4aXN0aW5nVHJhbnNjZWl2ZXJUaGVuUmVtb3ZlLAorICBj
aGVja1JlbW92ZVRyYWNrTmVnb3RpYXRpb24sCisgIGNoZWNrTXV0ZSwKKyAgY2hlY2tPbkFkZFN0
cmVhbSwKKyAgY2hlY2tTdG9wLAorICBjaGVja1N0b3BBZnRlckNyZWF0ZU9mZmVyLAorICBjaGVj
a1N0b3BBZnRlclNldExvY2FsT2ZmZXIsCisgIGNoZWNrU3RvcEFmdGVyU2V0UmVtb3RlT2ZmZXIs
CisgIGNoZWNrU3RvcEFmdGVyQ3JlYXRlQW5zd2VyLAorICBjaGVja1N0b3BBZnRlclNldExvY2Fs
QW5zd2VyLAorICBjaGVja1N0b3BBZnRlckNsb3NlLAorICBjaGVja0xvY2FsUm9sbGJhY2ssCisg
IGNoZWNrUm9sbGJhY2tBbmRTZXRSZW1vdGVPZmZlcldpdGhEaWZmZXJlbnRUeXBlLAorICBjaGVj
a1JlbW90ZVJvbGxiYWNrLAorICBjaGVja01zZWN0aW9uUmV1c2UKK10uZm9yRWFjaCh0ZXN0ID0+
IHByb21pc2VfdGVzdCh0ZXN0LCB0ZXN0Lm5hbWUpKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENT
Y3RwVHJhbnNwb3J0LWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENTY3RwVHJhbnNwb3J0LWNvbnN0cnVjdG9yLmh0
bWwKaW5kZXggMzQ3YWEwZWY0YmQyNGQyYTIyNjBjNzYyMDEwOTE4ZTg2OGYzMDc0Ny4uYzQxNWMz
ZmUxODBiNjcxOGZhMTFjMjBiMWJjOWExZWNkODhhNDU0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDU2N0cFRyYW5zcG9y
dC1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1NjdHBUcmFuc3BvcnQtY29uc3RydWN0b3IuaHRtbApAQCAt
NDEsNiArNDEsNyBAQAogCiAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICBjb25zdCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2Uo
KSk7CiAgICAgYXNzZXJ0X2VxdWFscyhwYy5zY3RwLCBudWxsKTsKICAgICBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgndGVzdCcpOwogCkBAIC02NSw2ICs2Niw3IEBACiAKICAgcHJvbWlzZV90ZXN0KHQg
PT4gewogICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBwYy5jbG9zZSgpKTsKICAgICBhc3NlcnRfZXF1YWxzKHBjLnNjdHAsIG51
bGwpOwogCiAgICAgcmV0dXJuIGdlbmVyYXRlT2ZmZXIoeyBwYywgZGF0YTogdHJ1ZSB9KQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDU2N0cFRyYW5zcG9ydC1tYXhNZXNzYWdlU2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENTY3RwVHJhbnNw
b3J0LW1heE1lc3NhZ2VTaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGUzZGUwOTI4YWVk
Yzg0NGY2NzMzYzRkZDZjNDY3N2Q3YTM1NTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDU2N0cFRyYW5zcG9y
dC1tYXhNZXNzYWdlU2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK0ZBSUwgRGV0
ZXJtaW5lIHRoZSBsb2NhbCBzaWRlIHNlbmQgbGltaXRhdGlvbiAoY2FuU2VuZFNpemUpIGJ5IG9m
ZmVyaW5nIGEgbWF4LW1lc3NhZ2Utc2l6ZSBvZiAwIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChv
YmplY3QpIG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVtb3RlIG9m
ZmVyIFNEUCBtaXNzaW5nIG1heC1tZXNzYWdlLXNpemUgYXR0cmlidXRlIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZB
SUwgbWF4LW1lc3NhZ2Utc2l6ZSB3aXRoIGEgKG5vbi16ZXJvKSB2YWx1ZSBwcm92aWRlZCBieSB0
aGUgcmVtb3RlIHBlZXIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQg
Z290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBSZW5lZ290aWF0ZSBtYXgtbWVzc2FnZS1z
aXplIHdpdGggYSAobm9uLXplcm8pIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSByZW1vdGUgcGVlciBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHVuZGVmaW5lZCkg
dW5kZWZpbmVkCitGQUlMIG1heC1tZXNzYWdlLXNpemUgd2l0aCBhIChub24temVybykgdmFsdWUg
bGFyZ2VyIHRoYW4gY2FuU2VuZFNpemUgcHJvdmlkZWQgYnkgdGhlIHJlbW90ZSBwZWVyIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRl
ZmluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDU2N0cFRyYW5zcG9ydC1tYXhNZXNzYWdlU2l6ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDU2N0cFRy
YW5zcG9ydC1tYXhNZXNzYWdlU2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDE3ZWVhY2NmM2YyNmFh
Y2E5M2M5ZTFmMWVhYjllZGM2NDNhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENTY3RwVHJhbnNwb3J0LW1h
eE1lc3NhZ2VTaXplLmh0bWwKQEAgLTAsMCArMSwxODYgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1l
dGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5SVENTY3RwVHJhbnNwb3J0LnByb3RvdHlwZS5tYXhN
ZXNzYWdlU2l6ZTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdp
dGh1Yi5pby93ZWJydGMtcGMvI3J0Y3NjdHB0cmFuc3BvcnQtaW50ZXJmYWNlIj4KKzxzY3JpcHQg
c3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJUQ1Bl
ZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3Qn
OworCisvLyBUaGlzIHRlc3QgaGFzIGFuIGFzc2VydF91bnJlYWNoZWQoKSB0aGF0IHJlcXVpcmVz
IHRoYXQgdGhlIHZhcmlhYmxlCisvLyBjYW5TZW5kU2l6ZSAoaW5pdGlhdGVkIGJlbG93KSBpcyBn
cmVhdGVyIHRoYW4gMiwgaWYgbm9uLXplcm8uIFRoZSByZWFzb24KKy8vIGlzIHRoYXQgd2UgbmVl
ZCB0d28gbm9uLXplcm8gdmFsdWVzIHRoYXQgYXJlIGxlc3MgdGhhdCB0aGF0IHZhbHVlIGZvcgor
Ly8gdGVzdGluZyB3aXRoIHByZWRpY3RhYmxlIHJlc3VsdHMuIFRoaXMgaXMgYSBiaXQgdW5mb3J0
dW5hdGUgYnV0IHNob3VsZG4ndAorLy8gaGF2ZSBhbnkgcHJhY3RpY2FsIGltcGFjdC4KKworLy8g
SGVscGVyIGNsYXNzIHRvIHJlYWQgU0RQIGF0dHJpYnV0ZXMgYW5kIGdlbmVyYXRlIFNEUHMgd2l0
aCBtb2RpZmllZCBhdHRyaWJ1dGUgdmFsdWVzCitjbGFzcyBTRFBBdHRyaWJ1dGVIZWxwZXIgewor
ICBjb25zdHJ1Y3RvcihhdHRyTmFtZSwgdmFsdWVSZWdFeHBTdHIpIHsKKyAgICB0aGlzLmF0dHJO
YW1lID0gYXR0ck5hbWU7CisgICAgdGhpcy5yZSA9IG5ldyBSZWdFeHAoYF5hPSR7YXR0ck5hbWV9
Oigke3ZhbHVlUmVnRXhwU3RyfSlcXHJcXG5gLCAnbScpOworICB9CisKKyAgZ2V0VmFsdWUoc2Rw
KSB7CisgICAgY29uc3QgbWF0Y2hlcyA9IHNkcC5tYXRjaCh0aGlzLnJlKTsKKyAgICByZXR1cm4g
bWF0Y2hlcyA/IG1hdGNoZXNbMV0gOiBudWxsOworICB9CisKKyAgc2RwV2l0aFZhbHVlKHNkcCwg
dmFsdWUpIHsKKyAgICBjb25zdCBtYXRjaGVzID0gc2RwLm1hdGNoKHRoaXMucmUpOworICAgIGNv
bnN0IHNkcFBhcnRzID0gc2RwLnNwbGl0KG1hdGNoZXNbMF0pOworICAgIGNvbnN0IGF0dHJpYnV0
ZUxpbmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGBhPSR7dGhpcy5hdHRyTmFtZX06JHt2YWx1
ZX1cclxuYCA6ICcnOworICAgIHJldHVybiBgJHtzZHBQYXJ0c1swXX0ke2F0dHJpYnV0ZUxpbmV9
JHtzZHBQYXJ0c1sxXX1gOworICB9CisKKyAgc2RwV2l0aG91dEF0dHJpYnV0ZShzZHApIHsKKyAg
ICByZXR1cm4gdGhpcy5zZHBXaXRoVmFsdWUoc2RwKTsKKyAgfQorfQorCitjb25zdCBtbXNBdHRy
aWJ1dGVIZWxwZXIgPSBuZXcgU0RQQXR0cmlidXRlSGVscGVyKCdtYXgtbWVzc2FnZS1zaXplJywg
J1xcZCsnKTsKK2xldCBjYW5TZW5kU2l6ZTsKK2NvbnN0IHJlbW90ZVZhbHVlMSA9IDE7Citjb25z
dCByZW1vdGVWYWx1ZTIgPSAyOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2Uo
KSk7CisgIGFzc2VydF9lcXVhbHMocGMuc2N0cCwgbnVsbCk7CisgIGxldCBtYXhNZXNzYWdlU2l6
ZTsKKworICByZXR1cm4gZ2VuZXJhdGVPZmZlcih7IHBjLCBkYXRhOiB0cnVlIH0pCisgIC50aGVu
KChvZmZlcikgPT4geworICAgIGFzc2VydF9ub3RfZXF1YWxzKG1tc0F0dHJpYnV0ZUhlbHBlci5n
ZXRWYWx1ZShvZmZlci5zZHApLCBudWxsLAorICAgICAgJ1NEUCBzaG91bGQgaGF2ZSBtYXgtbWVz
c2FnZS1zaXplIGF0dHJpYnV0ZScpOworCisgICAgb2ZmZXIgPSB7IHR5cGU6ICdvZmZlcicsIHNk
cDogbW1zQXR0cmlidXRlSGVscGVyLnNkcFdpdGhWYWx1ZShvZmZlci5zZHAsIDApIH07CisgICAg
cmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKTsKKyAgfSkKKyAgLnRoZW4oKCkg
PT4gcGMuY3JlYXRlQW5zd2VyKCkpCisgIC50aGVuKChhbnN3ZXIpID0+IHBjLnNldExvY2FsRGVz
Y3JpcHRpb24oYW5zd2VyKSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9ub3RfZXF1YWxz
KHBjLnNjdHAsIG51bGwpOworICAgIGNhblNlbmRTaXplID0gcGMuc2N0cC5tYXhNZXNzYWdlU2l6
ZSA9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPyAwIDogcGMuc2N0cC5tYXhNZXNzYWdlU2l6
ZTsKKyAgICBpZiAoY2FuU2VuZFNpemUgIT0gMCAmJiBjYW5TZW5kU2l6ZSA8IHJlbW90ZVZhbHVl
MikgeworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnVGhpcyB0ZXN0IG5lZWRzIHR3byB2YWx1ZXMg
dGhhdCBhcmUgbGVzcyB0aGFuIGNhblNlbmRTaXplICh1bmxlc3MgaXQgaXMgemVybyknKTsKKyAg
ICB9CisgIH0pOworfSwgJ0RldGVybWluZSB0aGUgbG9jYWwgc2lkZSBzZW5kIGxpbWl0YXRpb24g
KGNhblNlbmRTaXplKSBieSBvZmZlcmluZyBhIG1heC1tZXNzYWdlLXNpemUgb2YgMCcpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgIGFzc2VydF9lcXVhbHMocGMu
c2N0cCwgbnVsbCk7CisKKyAgcmV0dXJuIGdlbmVyYXRlT2ZmZXIoeyBwYywgZGF0YTogdHJ1ZSB9
KQorICAudGhlbigob2ZmZXIpID0+IHsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhtbXNBdHRyaWJ1
dGVIZWxwZXIuZ2V0VmFsdWUob2ZmZXIuc2RwKSwgbnVsbCwKKyAgICAgICdTRFAgc2hvdWxkIGhh
dmUgbWF4LW1lc3NhZ2Utc2l6ZSBhdHRyaWJ1dGUnKTsKKworICAgIC8vIFJlbW92ZSB0aGUgbWF4
LW1lc3NhZ2Utc2l6ZSBTRFAgYXR0cmlidXRlCisgICAgb2ZmZXIgPSB7IHR5cGU6ICdvZmZlcics
IHNkcDogbW1zQXR0cmlidXRlSGVscGVyLnNkcFdpdGhvdXRBdHRyaWJ1dGUob2ZmZXIuc2RwKSB9
OworICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikKKyAgfSkKKyAgLnRo
ZW4oKCkgPT4gcGMuY3JlYXRlQW5zd2VyKCkpCisgIC50aGVuKChhbnN3ZXIpID0+IHBjLnNldExv
Y2FsRGVzY3JpcHRpb24oYW5zd2VyKSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKHBjLnNjdHAsIG51bGwpOworICAgIC8vIFRlc3Qgb3V0Y29tZSBkZXBlbmRzIG9uIGNh
blNlbmRTaXplIHZhbHVlCisgICAgaWYgKGNhblNlbmRTaXplKSB7CisgICAgICBhc3NlcnRfZXF1
YWxzKHBjLnNjdHAubWF4TWVzc2FnZVNpemUsIE1hdGgubWluKDY1NTM2LCBjYW5TZW5kU2l6ZSks
CisgICAgICAgICdNaXNzaW5nIFNEUCBhdHRyaWJ1dGUgYW5kIGEgbm9uLXplcm8gY2FuU2VuZFNp
emUgc2hvdWxkIGdpdmUgYW4gbWF4TWVzc2FnZVNpemUgb2YgbWluKDY1NTM2LCBjYW5TZW5kU2l6
ZSknKTsKKyAgICB9IGVsc2UgeworICAgICAgYXNzZXJ0X2VxdWFscyhwYy5zY3RwLm1heE1lc3Nh
Z2VTaXplLCA2NTUzNiwKKyAgICAgICAgJ01pc3NpbmcgU0RQIGF0dHJpYnV0ZSBhbmQgYSBjYW5T
ZW5kU2l6ZSBvZiAwIHNob3VsZCBnaXZlIGFuIG1heE1lc3NhZ2VTaXplIG9mIDY1NTM2Jyk7Cisg
ICAgfQorICB9KTsKK30sICdSZW1vdGUgb2ZmZXIgU0RQIG1pc3NpbmcgbWF4LW1lc3NhZ2Utc2l6
ZSBhdHRyaWJ1dGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBwYyA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICB0LmFkZF9jbGVhbnVwKCgpID0+IHBjLmNsb3NlKCkpOwor
ICBhc3NlcnRfZXF1YWxzKHBjLnNjdHAsIG51bGwpOworCisgIHJldHVybiBnZW5lcmF0ZU9mZmVy
KHsgcGMsIGRhdGE6IHRydWUgfSkKKyAgLnRoZW4oKG9mZmVyKSA9PiB7CisgICAgYXNzZXJ0X25v
dF9lcXVhbHMobW1zQXR0cmlidXRlSGVscGVyLmdldFZhbHVlKG9mZmVyLnNkcCksIG51bGwsCisg
ICAgICAnU0RQIHNob3VsZCBoYXZlIG1heC1tZXNzYWdlLXNpemUgYXR0cmlidXRlJyk7CisKKyAg
ICBvZmZlciA9IHsgdHlwZTogJ29mZmVyJywgc2RwOiBtbXNBdHRyaWJ1dGVIZWxwZXIuc2RwV2l0
aFZhbHVlKG9mZmVyLnNkcCwgcmVtb3RlVmFsdWUxKSB9OworICAgIHJldHVybiBwYy5zZXRSZW1v
dGVEZXNjcmlwdGlvbihvZmZlcik7CisgIH0pCisgIC50aGVuKCgpID0+IHBjLmNyZWF0ZUFuc3dl
cigpKQorICAudGhlbigoYW5zd2VyKSA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcikp
CisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhwYy5zY3RwLCBudWxsKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHBjLnNjdHAubWF4TWVzc2FnZVNpemUsIHJlbW90ZVZhbHVlMSwK
KyAgICAgICdtYXhNZXNzYWdlU2l6ZSBzaG91bGQgYmUgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRo
ZSByZW1vdGUgcGVlciAoYXMgbG9uZyBhcyBpdCBpcyBsZXNzIHRoYW4gY2FuU2VuZFNpemUpJyk7
CisgIH0pOworfSwgJ21heC1tZXNzYWdlLXNpemUgd2l0aCBhIChub24temVybykgdmFsdWUgcHJv
dmlkZWQgYnkgdGhlIHJlbW90ZSBwZWVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiBw
Yy5jbG9zZSgpKTsKKyAgYXNzZXJ0X2VxdWFscyhwYy5zY3RwLCBudWxsKTsKKworICByZXR1cm4g
Z2VuZXJhdGVPZmZlcih7IHBjLCBkYXRhOiB0cnVlIH0pCisgIC50aGVuKChvZmZlcikgPT4gewor
ICAgIGFzc2VydF9ub3RfZXF1YWxzKG1tc0F0dHJpYnV0ZUhlbHBlci5nZXRWYWx1ZShvZmZlci5z
ZHApLCBudWxsLAorICAgICAgJ1NEUCBzaG91bGQgaGF2ZSBtYXgtbWVzc2FnZS1zaXplIGF0dHJp
YnV0ZScpOworCisgICAgb2ZmZXIgPSB7IHR5cGU6ICdvZmZlcicsIHNkcDogbW1zQXR0cmlidXRl
SGVscGVyLnNkcFdpdGhWYWx1ZShvZmZlci5zZHAsIHJlbW90ZVZhbHVlMSkgfTsKKyAgICByZXR1
cm4gcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpCisgIH0pCisgIC50aGVuKCgpID0+IHBj
LmNyZWF0ZUFuc3dlcigpKQorICAudGhlbigoYW5zd2VyKSA9PiBwYy5zZXRMb2NhbERlc2NyaXB0
aW9uKGFuc3dlcikpCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhwYy5z
Y3RwLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKHBjLnNjdHAubWF4TWVzc2FnZVNpemUsIHJl
bW90ZVZhbHVlMSwKKyAgICAgICdtYXhNZXNzYWdlU2l6ZSBzaG91bGQgYmUgdGhlIHZhbHVlIHBy
b3ZpZGVkIGJ5IHRoZSByZW1vdGUgcGVlciAoYXMgbG9uZyBhcyBpdCBpcyBsZXNzIHRoYW4gY2Fu
U2VuZFNpemUpJyk7CisgIH0pCisgIC50aGVuKCgpID0+IHBjLmNyZWF0ZU9mZmVyKCkpIC8vIFN0
YXJ0IG5ldyBPL0EgZXhjaGFuZ2UgdGhhdCB1cGRhdGVzIG1heC1tZXNzYWdlLXNpemUKKyAgLnRo
ZW4oKG9mZmVyKSA9PiB7CisgICAgb2ZmZXIgPSB7IHR5cGU6ICdvZmZlcicsIHNkcDogbW1zQXR0
cmlidXRlSGVscGVyLnNkcFdpdGhWYWx1ZShvZmZlci5zZHAsIHJlbW90ZVZhbHVlMil9OworICAg
IHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikKKyAgfSkKKyAgLnRoZW4oKCkg
PT4gcGMuY3JlYXRlQW5zd2VyKCkpCisgIC50aGVuKChhbnN3ZXIpID0+IHBjLnNldExvY2FsRGVz
Y3JpcHRpb24oYW5zd2VyKSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9ub3RfZXF1YWxz
KHBjLnNjdHAsIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMocGMuc2N0cC5tYXhNZXNzYWdlU2l6
ZSwgcmVtb3RlVmFsdWUyLAorICAgICAgJ21heE1lc3NhZ2VTaXplIHNob3VsZCBiZSB0aGUgbmV3
IHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSByZW1vdGUgcGVlciAoYXMgbG9uZyBhcyBpdCBpcyBsZXNz
IHRoYW4gY2FuU2VuZFNpemUpJyk7CisgIH0pCisgIDsKK30sICdSZW5lZ290aWF0ZSBtYXgtbWVz
c2FnZS1zaXplIHdpdGggYSAobm9uLXplcm8pIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSByZW1vdGUg
cGVlcicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gcGMuY2xvc2UoKSk7CisgIGFzc2Vy
dF9lcXVhbHMocGMuc2N0cCwgbnVsbCk7CisgIGNvbnN0IGxhcmdlclRoYW5DYW5TZW5kU2l6ZSA9
IGNhblNlbmRTaXplICsgMTsKKworICByZXR1cm4gZ2VuZXJhdGVPZmZlcih7IHBjLCBkYXRhOiB0
cnVlIH0pCisgIC50aGVuKChvZmZlcikgPT4geworICAgIGFzc2VydF9ub3RfZXF1YWxzKG1tc0F0
dHJpYnV0ZUhlbHBlci5nZXRWYWx1ZShvZmZlci5zZHApLCBudWxsLAorICAgICAgJ1NEUCBzaG91
bGQgaGF2ZSBtYXgtbWVzc2FnZS1zaXplIGF0dHJpYnV0ZScpOworCisgICAgb2ZmZXIgPSB7IHR5
cGU6ICdvZmZlcicsIHNkcDogbW1zQXR0cmlidXRlSGVscGVyLnNkcFdpdGhWYWx1ZShvZmZlci5z
ZHAsIGxhcmdlclRoYW5DYW5TZW5kU2l6ZSkgfTsKKyAgICByZXR1cm4gcGMuc2V0UmVtb3RlRGVz
Y3JpcHRpb24ob2ZmZXIpCisgIH0pCisgIC50aGVuKCgpID0+IHBjLmNyZWF0ZUFuc3dlcigpKQor
ICAudGhlbigoYW5zd2VyKSA9PiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcikpCisgIC50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhwYy5zY3RwLCBudWxsKTsKKyAgICAv
LyBUZXN0IG91dGNvbWUgZGVwZW5kcyBvbiBjYW5TZW5kU2l6ZSB2YWx1ZQorICAgIGlmIChjYW5T
ZW5kU2l6ZSkgeworICAgICAgYXNzZXJ0X2VxdWFscyhwYy5zY3RwLm1heE1lc3NhZ2VTaXplLCBj
YW5TZW5kU2l6ZSwKKyAgICAgICAgJ0EgcmVtb3RlIHZhbHVlIGxhcmdlciB0aGFuIGEgbm9uLXpl
cm8gY2FuU2VuZFNpemUgc2hvdWxkIGxpbWl0IG1heE1lc3NhZ2VTaXplIHRvIGNhblNlbmRTaXpl
Jyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFzc2VydF9lcXVhbHMocGMuc2N0cC5tYXhNZXNzYWdl
U2l6ZSwgNjU1MzYsCisgICAgICAgICdBIGNhblNlbmRTaXplIG9mIHplcm8gc2hvdWxkIGxldCB0
aGUgcmVtb3RlIHZhbHVlIHNldCBtYXhNZXNzYWdlU2l6ZScpOworICAgIH0KKyAgfSk7Cit9LCAn
bWF4LW1lc3NhZ2Utc2l6ZSB3aXRoIGEgKG5vbi16ZXJvKSB2YWx1ZSBsYXJnZXIgdGhhbiBjYW5T
ZW5kU2l6ZSBwcm92aWRlZCBieSB0aGUgcmVtb3RlIHBlZXInKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy9jb3ZlcmFnZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL2NvdmVyYWdlL3czYy1pbXBvcnQubG9nCmluZGV4IGY2YThk
ODQ1ODA5MWYyMjVhOWVjMzdhMzgzM2E3NzUxZjdiYjBjYTAuLjBiZDEyYmU1NDhkNjUzYTQ0ZTg2
ZDk2ZDcxNDk3NGVjOGUxZmQxZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2NvdmVyYWdlL3czYy1pbXBvcnQubG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2NvdmVy
YWdlL3czYy1pbXBvcnQubG9nCkBAIC0xLDcgKzEsNyBAQAogVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCiBEbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KIEluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cworCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0CiAKIFRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2dldHN0YXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2dldHN0YXRzLWV4cGVj
dGVkLnR4dAppbmRleCA0YTJjNjk1YTYzNDU4Y2Y3N2E1YjUxNDI0NjBlOGNhNGVjMjdiOWFhLi42
NDQ1NDE5NTc0NmYxNzdjMzYwZDNjOGQzMDIzNTVkN2EyY2ZkOTYzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9nZXRzdGF0cy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvZ2V0c3RhdHMtZXhwZWN0ZWQudHh0CkBAIC00LDI1ICs0LDI1IEBAIFJldHJp
ZXZlZCBzdGF0cyBpbmZvCiAKICAgCiB7Ci0gICJSVENDZXJ0aWZpY2F0ZV81QzozRjoxMjoxODoz
QTpBNTo2Nzo5RTo4OTowRjo5NDo3NDpCNzpBNToyMzo4Njo3RTo2OTo1ODo2Qjo3ODo1MTozNDpB
MDpBMzo5NDowMzpBMjo2RjpDNzo4MTozMyI6IHsKLSAgICAiaWQiOiAiUlRDQ2VydGlmaWNhdGVf
NUM6M0Y6MTI6MTg6M0E6QTU6Njc6OUU6ODk6MEY6OTQ6NzQ6Qjc6QTU6MjM6ODY6N0U6Njk6NTg6
NkI6Nzg6NTE6MzQ6QTA6QTM6OTQ6MDM6QTI6NkY6Qzc6ODE6MzMiLAotICAgICJ0aW1lc3RhbXAi
OiAxNTA1NzcxMDYwOTQwLjAwNCwKKyAgIlJUQ0NlcnRpZmljYXRlXzhEOjQ3OjZFOjhGOjc4OjMz
Ojk1OkM1OkUxOjhEOkQ2OjU5OjA3OjYxOkQxOjEyOkQ5OkVEOkU1OjNEOkQzOjZFOjlFOjg2OkI0
OkYzOjRCOkFEOjdDOjZEOkQ1Ojc5IjogeworICAgICJpZCI6ICJSVENDZXJ0aWZpY2F0ZV84RDo0
Nzo2RTo4Rjo3ODozMzo5NTpDNTpFMTo4RDpENjo1OTowNzo2MTpEMToxMjpEOTpFRDpFNTozRDpE
Mzo2RTo5RTo4NjpCNDpGMzo0QjpBRDo3Qzo2RDpENTo3OSIsCisgICAgInRpbWVzdGFtcCI6IDE1
NDEwMTkzMjczOTcsCiAgICAgInR5cGUiOiAiY2VydGlmaWNhdGUiLAotICAgICJiYXNlNjRDZXJ0
aWZpY2F0ZSI6ICJNSUlCRlRDQnZhQURBZ0VDQWdrQWpjVnNXUHY0MXdNd0NnWUlLb1pJemowRUF3
SXdFVEVQTUEwR0ExVUVBd3dHVjJWaVVsUkRNQjRYRFRFM01Ea3hOekl4TkRReU1Gb1hEVEUzTVRB
eE9ESXhORFF5TUZvd0VURVBNQTBHQTFVRUF3d0dWMlZpVWxSRE1Ga3dFd1lIS29aSXpqMENBUVlJ
S29aSXpqMERBUWNEUWdBRStGNGVCcEc0dVpTbis5eFBnS054OVpCbWFCS2NxUVhnQXVmcHJrUkpE
SllrYVBRSU1DVXFPN25tS1ZUclYzRCthWnFXU1JBOUI1SkNEQzVySkZYQjVqQUtCZ2dxaGtqT1BR
UURBZ05IQURCRUFpQmhGcGU4dnJlUHVKM0NhQ2ZUTEM2VjZMZEQrbjBBZjNmTHN1VFJWcW5jbmdJ
Z1dma3ZjdW5KaWhzY2dwZXBkc1VleXVPeVRlbU1vQU9GeEtOd3owUDF1Wmc9IiwKLSAgICAiZmlu
Z2VycHJpbnQiOiAiNUM6M0Y6MTI6MTg6M0E6QTU6Njc6OUU6ODk6MEY6OTQ6NzQ6Qjc6QTU6MjM6
ODY6N0U6Njk6NTg6NkI6Nzg6NTE6MzQ6QTA6QTM6OTQ6MDM6QTI6NkY6Qzc6ODE6MzMiLAorICAg
ICJiYXNlNjRDZXJ0aWZpY2F0ZSI6ICJNSUlCRmpDQnZhQURBZ0VDQWdrQThUc2psRVBEbURNd0Nn
WUlLb1pJemowRUF3SXdFVEVQTUEwR0ExVUVBd3dHVjJWaVVsUkRNQjRYRFRFNE1UQXpNREl3TlRV
eU4xb1hEVEU0TVRFek1ESXdOVFV5TjFvd0VURVBNQTBHQTFVRUF3d0dWMlZpVWxSRE1Ga3dFd1lI
S29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWY1ZEtFSnhab21HZzBGM3pyNE1aQUFaMnA5RXVv
VGpaYnYwY1RoMEpiNlhibHZTQXN3R1c0T3VOSW5KYmZFeGprTXlOOTRWMGovMWJyV0FmMGtrdVZq
QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQURhUjhuMWlCNERYTC9UOEZCNzh6T2JzZ05kTXB4VEEr
Skl1UUwvNE8rUHdJaEFNQU1IMC9CdXc0ODJDM28rdW5zK2VlSExoQndCaGdyNE5sYmdvV2FyZVMr
IiwKKyAgICAiZmluZ2VycHJpbnQiOiAiOEQ6NDc6NkU6OEY6Nzg6MzM6OTU6QzU6RTE6OEQ6RDY6
NTk6MDc6NjE6RDE6MTI6RDk6RUQ6RTU6M0Q6RDM6NkU6OUU6ODY6QjQ6RjM6NEI6QUQ6N0M6NkQ6
RDU6NzkiLAogICAgICJmaW5nZXJwcmludEFsZ29yaXRobSI6ICJzaGEtMjU2IgogICB9LAotICAi
UlRDQ2VydGlmaWNhdGVfRDE6NjE6Q0E6Q0I6MEI6MjE6RjM6OUE6QUE6RjQ6ODc6NTA6QTM6RTg6
MjU6MjQ6RDk6RTc6OTE6RDg6MDY6OUQ6MUM6QkQ6RkI6NTc6Qzc6QzI6NDI6MjA6RTQ6RTQiOiB7
Ci0gICAgImlkIjogIlJUQ0NlcnRpZmljYXRlX0QxOjYxOkNBOkNCOjBCOjIxOkYzOjlBOkFBOkY0
Ojg3OjUwOkEzOkU4OjI1OjI0OkQ5OkU3OjkxOkQ4OjA2OjlEOjFDOkJEOkZCOjU3OkM3OkMyOjQy
OjIwOkU0OkU0IiwKLSAgICAidGltZXN0YW1wIjogMTUwNTc3MTA2MDk0MC4wMDQsCisgICJSVEND
ZXJ0aWZpY2F0ZV85RjoyRTpENjozNzozRjo3QTpGMDoyODpGRjo4MzpBQTpGQjo1QzpEODo4QTo2
NTo1NDozRTo2RTo2NzpCRjozODo5NTozNjowOTpGRDpDNDowMjpDODoyQzoxNzpFMSI6IHsKKyAg
ICAiaWQiOiAiUlRDQ2VydGlmaWNhdGVfOUY6MkU6RDY6Mzc6M0Y6N0E6RjA6Mjg6RkY6ODM6QUE6
RkI6NUM6RDg6OEE6NjU6NTQ6M0U6NkU6Njc6QkY6Mzg6OTU6MzY6MDk6RkQ6QzQ6MDI6Qzg6MkM6
MTc6RTEiLAorICAgICJ0aW1lc3RhbXAiOiAxNTQxMDE5MzI3Mzk3LAogICAgICJ0eXBlIjogImNl
cnRpZmljYXRlIiwKLSAgICAiYmFzZTY0Q2VydGlmaWNhdGUiOiAiTUlJQkZqQ0J2YUFEQWdFQ0Fn
a0F5ZDViMWYrQWIwd3dDZ1lJS29aSXpqMEVBd0l3RVRFUE1BMEdBMVVFQXd3R1YyVmlVbFJETUI0
WERURTNNRGt4TnpJeE5EUXlNRm9YRFRFM01UQXhPREl4TkRReU1Gb3dFVEVQTUEwR0ExVUVBd3dH
VjJWaVVsUkRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV4cG8vWmo0QVAwalE5
b0NtNGcySWFEM2tSYkhMRTZyMUFPcTRPZ0VUOEdoTkVjK1NTNnMweGN1ZzB0Y1llV3JUNElDSFZL
NituTTJrYS9vYmMwWHhnakFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBejNGdVYwb1g0REpMeVFs
KzJiZkIzUzNkMTdhUlpxcUh2bm8vdngzRzAvQUNJRWV1YnNOanBlREhrUGN2ZFc4eVJOR05wY25u
WEtRaXhvdXBGeFl1eW9IRCIsCi0gICAgImZpbmdlcnByaW50IjogIkQxOjYxOkNBOkNCOjBCOjIx
OkYzOjlBOkFBOkY0Ojg3OjUwOkEzOkU4OjI1OjI0OkQ5OkU3OjkxOkQ4OjA2OjlEOjFDOkJEOkZC
OjU3OkM3OkMyOjQyOjIwOkU0OkU0IiwKKyAgICAiYmFzZTY0Q2VydGlmaWNhdGUiOiAiTUlJQkZq
Q0J2YUFEQWdFQ0Fna0E5bzBCZ1I4RDFmZ3dDZ1lJS29aSXpqMEVBd0l3RVRFUE1BMEdBMVVFQXd3
R1YyVmlVbFJETUI0WERURTRNVEF6TURJd05UVXlOMW9YRFRFNE1URXpNREl3TlRVeU4xb3dFVEVQ
TUEwR0ExVUVBd3dHVjJWaVVsUkRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVZ
U0Y5b1JwdENteHZpempjVzdWUHp5OHJsMkV3THdQcWszbWEvSFBzMzNieTNBek9RUW8zb203Rkhi
YjkyTVViS2d0akZvNGpUU0VrbHoyM2VOSDdoREFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBbVdo
M0hET3ZDUFE4em5OeUNwL0piRTdqSHdJM0JxbytyVGp6N3dxTGdkc0NJR2JFOXh6a29odENyejNO
UGtoWTU3R3QvY0FXK0NUVFc0UGJGbktsRzZhVyIsCisgICAgImZpbmdlcnByaW50IjogIjlGOjJF
OkQ2OjM3OjNGOjdBOkYwOjI4OkZGOjgzOkFBOkZCOjVDOkQ4OjhBOjY1OjU0OjNFOjZFOjY3OkJG
OjM4Ojk1OjM2OjA5OkZEOkM0OjAyOkM4OjJDOjE3OkUxIiwKICAgICAiZmluZ2VycHJpbnRBbGdv
cml0aG0iOiAic2hhLTI1NiIKICAgfSwKICAgIlJUQ0RhdGFDaGFubmVsXzEiOiB7CiAgICAgImlk
IjogIlJUQ0RhdGFDaGFubmVsXzEiLAotICAgICJ0aW1lc3RhbXAiOiAxNTA1NzcxMDYwOTQwLjAw
NCwKKyAgICAidGltZXN0YW1wIjogMTU0MTAxOTMyNzM5NywKICAgICAidHlwZSI6ICJkYXRhLWNo
YW5uZWwiLAogICAgICJieXRlc1JlY2VpdmVkIjogMCwKICAgICAiYnl0ZXNTZW50IjogMCwKQEAg
LTMxLDUzICszMSw3OSBAQCBSZXRyaWV2ZWQgc3RhdHMgaW5mbwogICAgICJtZXNzYWdlc1JlY2Vp
dmVkIjogMCwKICAgICAibWVzc2FnZXNTZW50IjogMCwKICAgICAicHJvdG9jb2wiOiAiIiwKLSAg
ICAic3RhdGUiOiAiY29ubmVjdGluZyIKKyAgICAic3RhdGUiOiAib3BlbiIKICAgfSwKLSAgIlJU
Q0ljZUNhbmRpZGF0ZVBhaXJfMDBEUW9GWlpfVVVaamVOWkkiOiB7Ci0gICAgImlkIjogIlJUQ0lj
ZUNhbmRpZGF0ZVBhaXJfMDBEUW9GWlpfVVVaamVOWkkiLAotICAgICJ0aW1lc3RhbXAiOiAxNTA1
NzcxMDYwOTQwLjAwNCwKKyAgIlJUQ0ljZUNhbmRpZGF0ZVBhaXJfODBhU1NHVHFfOG1FUFdMN1Yi
OiB7CisgICAgImlkIjogIlJUQ0ljZUNhbmRpZGF0ZVBhaXJfODBhU1NHVHFfOG1FUFdMN1YiLAor
ICAgICJ0aW1lc3RhbXAiOiAxNTQxMDE5MzI3Mzk3LAogICAgICJ0eXBlIjogImNhbmRpZGF0ZS1w
YWlyIiwKLSAgICAiYXZhaWxhYmxlSW5jb21pbmdCaXRyYXRlIjogMCwKLSAgICAiYXZhaWxhYmxl
T3V0Z29pbmdCaXRyYXRlIjogMCwKICAgICAiYnl0ZXNSZWNlaXZlZCI6IDAsCiAgICAgImJ5dGVz
U2VudCI6IDAsCi0gICAgImN1cnJlbnRSb3VuZFRyaXBUaW1lIjogMCwKLSAgICAibG9jYWxDYW5k
aWRhdGVJZCI6ICJSVENJY2VDYW5kaWRhdGVfMDBEUW9GWloiLAorICAgICJsb2NhbENhbmRpZGF0
ZUlkIjogIlJUQ0ljZUNhbmRpZGF0ZV84MGFTU0dUcSIsCiAgICAgIm5vbWluYXRlZCI6IGZhbHNl
LAotICAgICJwcmlvcml0eSI6IDkwNzkzMDE5Mjg2ODg1NzAwMDAsCi0gICAgInJlYWRhYmxlIjog
ZmFsc2UsCi0gICAgInJlbW90ZUNhbmRpZGF0ZUlkIjogIlJUQ0ljZUNhbmRpZGF0ZV9VVVpqZU5a
SSIsCisgICAgInByaW9yaXR5IjogOTA3OTI5MDkzMzU3MjI4NzAwMCwKKyAgICAicmVtb3RlQ2Fu
ZGlkYXRlSWQiOiAiUlRDSWNlQ2FuZGlkYXRlXzhtRVBXTDdWIiwKICAgICAicmVxdWVzdHNSZWNl
aXZlZCI6IDAsCiAgICAgInJlcXVlc3RzU2VudCI6IDAsCiAgICAgInJlc3BvbnNlc1JlY2VpdmVk
IjogMCwKICAgICAicmVzcG9uc2VzU2VudCI6IDAsCiAgICAgInN0YXRlIjogIndhaXRpbmciLAog
ICAgICJ0b3RhbFJvdW5kVHJpcFRpbWUiOiAwLAotICAgICJ0cmFuc3BvcnRJZCI6ICJSVENUcmFu
c3BvcnRfZGF0YV8xIiwKKyAgICAidHJhbnNwb3J0SWQiOiAiUlRDVHJhbnNwb3J0XzBfMSIsCiAg
ICAgIndyaXRhYmxlIjogZmFsc2UKICAgfSwKLSAgIlJUQ0ljZUNhbmRpZGF0ZVBhaXJfQzdETDRS
OU5fMEF6Y2oxRGEiOiB7Ci0gICAgImlkIjogIlJUQ0ljZUNhbmRpZGF0ZVBhaXJfQzdETDRSOU5f
MEF6Y2oxRGEiLAotICAgICJ0aW1lc3RhbXAiOiAxNTA1NzcxMDYwOTQwLjAwNCwKKyAgIlJUQ0lj
ZUNhbmRpZGF0ZVBhaXJfODBhU1NHVHFfV0VCVnpFREoiOiB7CisgICAgImlkIjogIlJUQ0ljZUNh
bmRpZGF0ZVBhaXJfODBhU1NHVHFfV0VCVnpFREoiLAorICAgICJ0aW1lc3RhbXAiOiAxNTQxMDE5
MzI3Mzk3LAogICAgICJ0eXBlIjogImNhbmRpZGF0ZS1wYWlyIiwKLSAgICAiYXZhaWxhYmxlSW5j
b21pbmdCaXRyYXRlIjogMCwKLSAgICAiYXZhaWxhYmxlT3V0Z29pbmdCaXRyYXRlIjogMzAwMDAw
LAotICAgICJieXRlc1JlY2VpdmVkIjogNjk0LAotICAgICJieXRlc1NlbnQiOiAxMzA4LAotICAg
ICJjdXJyZW50Um91bmRUcmlwVGltZSI6IDAuMDAxLAotICAgICJsb2NhbENhbmRpZGF0ZUlkIjog
IlJUQ0ljZUNhbmRpZGF0ZV9DN0RMNFI5TiIsCi0gICAgIm5vbWluYXRlZCI6IGZhbHNlLAorICAg
ICJieXRlc1JlY2VpdmVkIjogNjkzLAorICAgICJieXRlc1NlbnQiOiAxMzA3LAorICAgICJjdXJy
ZW50Um91bmRUcmlwVGltZSI6IDAuMDAzLAorICAgICJsb2NhbENhbmRpZGF0ZUlkIjogIlJUQ0lj
ZUNhbmRpZGF0ZV84MGFTU0dUcSIsCisgICAgIm5vbWluYXRlZCI6IHRydWUsCiAgICAgInByaW9y
aXR5IjogOTA3OTI5MDkzMzU3MjI4NzAwMCwKLSAgICAicmVhZGFibGUiOiBmYWxzZSwKLSAgICAi
cmVtb3RlQ2FuZGlkYXRlSWQiOiAiUlRDSWNlQ2FuZGlkYXRlXzBBemNqMURhIiwKKyAgICAicmVt
b3RlQ2FuZGlkYXRlSWQiOiAiUlRDSWNlQ2FuZGlkYXRlX1dFQlZ6RURKIiwKICAgICAicmVxdWVz
dHNSZWNlaXZlZCI6IDEsCiAgICAgInJlcXVlc3RzU2VudCI6IDEsCiAgICAgInJlc3BvbnNlc1Jl
Y2VpdmVkIjogMSwKICAgICAicmVzcG9uc2VzU2VudCI6IDEsCiAgICAgInN0YXRlIjogInN1Y2Nl
ZWRlZCIsCi0gICAgInRvdGFsUm91bmRUcmlwVGltZSI6IDAuMDAxLAotICAgICJ0cmFuc3BvcnRJ
ZCI6ICJSVENUcmFuc3BvcnRfZGF0YV8xIiwKKyAgICAidG90YWxSb3VuZFRyaXBUaW1lIjogMC4w
MDMsCisgICAgInRyYW5zcG9ydElkIjogIlJUQ1RyYW5zcG9ydF8wXzEiLAogICAgICJ3cml0YWJs
ZSI6IHRydWUKKyAgfSwKKyAgIlJUQ0ljZUNhbmRpZGF0ZV84MGFTU0dUcSI6IHsKKyAgICAiaWQi
OiAiUlRDSWNlQ2FuZGlkYXRlXzgwYVNTR1RxIiwKKyAgICAidGltZXN0YW1wIjogMTU0MTAxOTMy
NzM5NywKKyAgICAidHlwZSI6ICJsb2NhbC1jYW5kaWRhdGUiLAorICAgICJjYW5kaWRhdGVUeXBl
IjogImhvc3QiLAorICAgICJkZWxldGVkIjogZmFsc2UsCisgICAgInBvcnQiOiA1MzY4MiwKKyAg
ICAicHJpb3JpdHkiOiAyMTEzOTM3MTUxLAorICAgICJwcm90b2NvbCI6ICJ1ZHAiLAorICAgICJ0
cmFuc3BvcnRJZCI6ICJSVENUcmFuc3BvcnRfMF8xIgorICB9LAorICAiUlRDSWNlQ2FuZGlkYXRl
XzhtRVBXTDdWIjogeworICAgICJpZCI6ICJSVENJY2VDYW5kaWRhdGVfOG1FUFdMN1YiLAorICAg
ICJ0aW1lc3RhbXAiOiAxNTQxMDE5MzI3Mzk3LAorICAgICJ0eXBlIjogInJlbW90ZS1jYW5kaWRh
dGUiLAorICAgICJjYW5kaWRhdGVUeXBlIjogImhvc3QiLAorICAgICJkZWxldGVkIjogZmFsc2Us
CisgICAgInBvcnQiOiA1MDY4MywKKyAgICAicHJpb3JpdHkiOiAyMTEzOTM3MTUxLAorICAgICJw
cm90b2NvbCI6ICJ1ZHAiLAorICAgICJ0cmFuc3BvcnRJZCI6ICJSVENUcmFuc3BvcnRfMF8xIgor
ICB9LAorICAiUlRDSWNlQ2FuZGlkYXRlX1dFQlZ6RURKIjogeworICAgICJpZCI6ICJSVENJY2VD
YW5kaWRhdGVfV0VCVnpFREoiLAorICAgICJ0aW1lc3RhbXAiOiAxNTQxMDE5MzI3Mzk3LAorICAg
ICJ0eXBlIjogInJlbW90ZS1jYW5kaWRhdGUiLAorICAgICJjYW5kaWRhdGVUeXBlIjogImhvc3Qi
LAorICAgICJkZWxldGVkIjogZmFsc2UsCisgICAgInBvcnQiOiA1NTgzMSwKKyAgICAicHJpb3Jp
dHkiOiAyMTEzOTM3MTUxLAorICAgICJwcm90b2NvbCI6ICJ1ZHAiLAorICAgICJ0cmFuc3BvcnRJ
ZCI6ICJSVENUcmFuc3BvcnRfMF8xIgogICB9CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2dldHN0YXRzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9nZXRzdGF0
cy5odG1sCmluZGV4IDk3NzVmMjA5MGYyMjAzNDczZDBhNzVhMmVkZWZmOGUzYjc4NWRkYzEuLjkz
N2Y1NGI3NGVjODI2NmY4OTBkNjBhNGM2N2U3NWMzZDY3MTQ4MjYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2dldHN0YXRzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvZ2V0c3RhdHMuaHRtbApAQCAtNzEsNyArNzEsNyBAQCBUaGlzIHRlc3QgdXNlcyBkYXRhIG9u
bHksIGFuZCB0aHVzIGRvZXMgbm90IHJlcXVpcmUgZmFrZSBtZWRpYSBkZXZpY2VzLgogICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMocmVwb3J0LCBudWxsLCAnTm8gcmVwb3J0Jyk7CiAgICAgICBsZXQg
c2Vzc2lvblN0YXQgPSBnZXRTdGF0c1JlY29yZEJ5VHlwZShyZXBvcnQsICdwZWVyLWNvbm5lY3Rp
b24nKTsKICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb25TdGF0LCBudWxsLCAnRGlkIG5v
dCBmaW5kIHBlZXItY29ubmVjdGlvbiBzdGF0cycpOwotICAgICAgYXNzZXJ0X2V4aXN0cyhzZXNz
aW9uU3RhdCwgJ2RhdGFDaGFubmVsc09wZW5lZCcsICdubyBkYXRhQ2hhbm5lbHNPcGVuZWQgc3Rh
dCcpOworICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZXNzaW9uU3RhdCwgJ2RhdGFDaGFubmVs
c09wZW5lZCcsICdubyBkYXRhQ2hhbm5lbHNPcGVuZWQgc3RhdCcpOwogICAgICAgLy8gT25jZSBl
dmVyeSA0MDAwIG9yIHNvIHRlc3RzLCB0aGUgZGF0YWNoYW5uZWwgd29uJ3QgYmUgb3BlbmVkIHdo
ZW4gdGhlIGdldFN0YXRzCiAgICAgICAvLyBmdW5jdGlvbiBpcyBkb25lLCBzbyBhbGxvdyBib3Ro
IDAgYW5kIDEgZGF0YWNoYW5uZWxzLgogICAgICAgYXNzZXJ0X3RydWUoc2Vzc2lvblN0YXQuZGF0
YUNoYW5uZWxzT3BlbmVkID09IDEgfHwgc2Vzc2lvblN0YXQuZGF0YUNoYW5uZWxzT3BlbmVkID09
IDAsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9pZGVudGl0eS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9pZGVudGl0eS1oZWxwZXIuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJkMzVkMGZiYmU5MzExNTc2OWM5YTQzZGQ4YWNiMWY2MzRjMGI3
YTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaWRlbnRpdHktaGVs
cGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi0v
KgotICBJbiB3ZWItcGxhdGZvcm0tdGVzdCwgdGhlIGZvbGxvd2luZyBkb21haW5zIGFyZSByZXF1
aXJlZCB0byBiZSBzZXQgdXAgbG9jYWxseToKLSAgICAxMjcuMC4wLjEgICB3ZWItcGxhdGZvcm0u
dGVzdAotICAgIDEyNy4wLjAuMSAgIHd3dy53ZWItcGxhdGZvcm0udGVzdAotICAgIDEyNy4wLjAu
MSAgIHd3dzEud2ViLXBsYXRmb3JtLnRlc3QKLSAgICAxMjcuMC4wLjEgICB3d3cyLndlYi1wbGF0
Zm9ybS50ZXN0Ci0gICAgMTI3LjAuMC4xICAgeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QKLSAgICAxMjcuMC4wLjEgICB4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRl
c3QKLSAgICAwLjAuMC4wICAgICBub25leGlzdGVudC1vcmlnaW4ud2ViLXBsYXRmb3JtLnRlc3QK
LSAqLwotCi0vKgotICAgIGRpY3Rpb25hcnkgUlRDSWRlbnRpdHlQcm92aWRlckRldGFpbHMgewot
ICAgICAgcmVxdWlyZWQgRE9NU3RyaW5nIGRvbWFpbjsKLSAgICAgICAgICAgICAgIERPTVN0cmlu
ZyBwcm90b2NvbCA9ICJkZWZhdWx0IjsKLSAgICB9OwotICovCi0KLS8vIFBhcnNlIGEgYmFzZTY0
IEpTT04gZW5jb2RlZCBzdHJpbmcgcmV0dXJuZWQgZnJvbSBnZXRJZGVudGl0eUFzc2VydGlvbigp
LgotLy8gVGhpcyBpcyBhbHNvIHRoZSBzdHJpbmcgdGhhdCBpcyBzZXQgaW4gdGhlIGE9aWRlbnRp
dHkgbGluZS4KLS8vIFJldHVybnMgYSB7IGlkcCwgYXNzZXJ0aW9uIH0gd2hlcmUgaWRwIGlzIG9m
IHR5cGUgUlRDSWRlbnRpdHlQcm92aWRlckRldGFpbHMKLS8vIGFuZCBhc3NlcnRpb24gaXMgdGhl
IGRlc2VyaWFsaXplZCBKU09OIHRoYXQgd2FzIHJldHVybmVkIGJ5IHRoZQotLy8gSWRQIHByb3h5
J3MgZ2VuZXJhdGVBc3NlcnRpb24oKSBmdW5jdGlvbi4KLWZ1bmN0aW9uIHBhcnNlQXNzZXJ0aW9u
UmVzdWx0KGFzc2VydGlvblJlc3VsdFN0cikgewotICBjb25zdCBhc3NlcnRpb25SZXN1bHQgPSBK
U09OLnBhcnNlKGF0b2IoYXNzZXJ0aW9uUmVzdWx0U3RyKSk7Ci0KLSAgY29uc3QgeyBpZHAgfSA9
IGFzc2VydGlvblJlc3VsdDsKLSAgY29uc3QgYXNzZXJ0aW9uID0gSlNPTi5wYXJzZShhc3NlcnRp
b25SZXN1bHQuYXNzZXJ0aW9uKTsKLQotICByZXR1cm4geyBpZHAsIGFzc2VydGlvbiB9OwotfQot
Ci0vLyBSZXR1cm4gdHdvIGRpc3RpbmN0IElkUCBkb21haW5zIHRoYXQgYXJlIGRpZmZlcmVudCBm
cm9tIGN1cnJlbnQgZG9tYWluCi1mdW5jdGlvbiBnZXRJZHBEb21haW5zKCkgewotICBpZih3aW5k
b3cubG9jYXRpb24uaG9zdG5hbWUgPT09ICd3d3cxLndlYi1wbGF0Zm9ybS50ZXN0JykgewotICAg
IHJldHVybiBbJ3d3dy53ZWItcGxhdGZvcm0udGVzdCcsICd3d3cyLndlYi1wbGF0Zm9ybS50ZXN0
J107Ci0gIH0gZWxzZSBpZih3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT09ICd3d3cyLndlYi1w
bGF0Zm9ybS50ZXN0JykgewotICAgIHJldHVybiBbJ3d3dy53ZWItcGxhdGZvcm0udGVzdCcsICd3
d3cxLndlYi1wbGF0Zm9ybS50ZXN0J107Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIFsnd3d3MS53
ZWItcGxhdGZvcm0udGVzdCcsICd3d3cyLndlYi1wbGF0Zm9ybS50ZXN0J107Ci0gIH0KLX0KLQot
ZnVuY3Rpb24gYXNzZXJ0X3J0Y2Vycm9yX3JlamVjdGlvbihlcnJvckRldGFpbCwgcHJvbWlzZSwg
ZGVzYykgewotICByZXR1cm4gcHJvbWlzZS50aGVuKAotICAgIHJlcyA9PiB7Ci0gICAgICBhc3Nl
cnRfdW5yZWFjaGVkKGBFeHBlY3QgcHJvbWlzZSB0byBiZSByZWplY3RlZCB3aXRoIFJUQ0Vycm9y
LCBidXQgaW5zdGVhZCBnb3QgJHtyZXN9YCk7Ci0gICAgfSwgZXJyID0+IHsKLSAgICAgIGFzc2Vy
dF90cnVlKGVyciBpbnN0YW5jZW9mIFJUQ0Vycm9yLAotICAgICAgICAnRXhwZWN0IGVycm9yIG9i
amVjdCB0byBiZSBpbnN0YW5jZSBvZiBSVENFcnJvcicpOwotCi0gICAgICBhc3NlcnRfZXF1YWxz
KGVyci5lcnJvckRldGFpbCwgZXJyb3JEZXRhaWwsCi0gICAgICAgIGBFeHBlY3QgUlRDRXJyb3Ig
b2JqZWN0IGhhdmUgZXJyb3JEZXRhaWwgc2V0IHRvICR7ZXJyb3JEZXRhaWx9YCk7Ci0KLSAgICAg
IHJldHVybiBlcnI7Ci0gICAgfSk7Ci19Ci0KLS8vIGNvbnN0cnVjdCBhIGhvc3Qgc3RyaW5nIGNv
bnNpc3Qgb2YgZG9tYWluIGFuZCBvcHRpb25hbGx5IHBvcnQKLS8vIElmIHRoZSBkZWZhdWx0IEhU
VFAvSFRUUFMgcG9ydCBpcyB1c2VkLCB3aW5kb3cubG9jYXRpb24ucG9ydCByZXR1cm5zCi0vLyBl
bXB0eSBzdHJpbmcuCi1mdW5jdGlvbiBob3N0U3RyaW5nKGRvbWFpbiwgcG9ydCkgewotICBpZihw
b3J0ID09PSAnJykgewotICAgIHJldHVybiBkb21haW47Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJu
IGAke2RvbWFpbn06JHtwb3J0fWA7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2lkZW50aXR5LWhlbHBlci5zdWIu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9p
ZGVudGl0eS1oZWxwZXIuc3ViLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMzYzNjYyZjc0MmZiZjFkMzE2MzQw
MzBkMmI0NzBlMDhmZTE0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9pZGVudGl0eS1oZWxwZXIuc3ViLmpzCkBA
IC0wLDAgKzEsNzAgQEAKKyd1c2Ugc3RyaWN0JzsKKworLyoKKyAgSW4gd2ViLXBsYXRmb3JtLXRl
c3QsIGEgbnVtYmVyIG9mIGRvbWFpbnMgYXJlIHJlcXVpcmVkIHRvIGJlIHNldCB1cCBsb2NhbGx5
LgorICBUaGUgbGlzdCBpcyBhdmFpbGFibGUgYXQgZG9jcy9fd3JpdGluZy10ZXN0cy9zZXJ2ZXIt
ZmVhdHVyZXMubWQuIFRoZQorICBhcHByb3ByaWF0ZSBob3N0cyBmaWxlIGVudHJpZXMgY2FuIGJl
IGdlbmVyYXRlZCB3aXRoIHRoZSBXUFQgQ0xJIHZpYSB0aGUKKyAgZm9sbG93aW5nIGNvbW1hbmQ6
IGB3cHQgbWFrZS1ob3N0cy1maWxlYC4KKyAqLworCisvKgorICAgIGRpY3Rpb25hcnkgUlRDSWRl
bnRpdHlQcm92aWRlckRldGFpbHMgeworICAgICAgcmVxdWlyZWQgRE9NU3RyaW5nIGRvbWFpbjsK
KyAgICAgICAgICAgICAgIERPTVN0cmluZyBwcm90b2NvbCA9ICJkZWZhdWx0IjsKKyAgICB9Owor
ICovCisKKy8vIFBhcnNlIGEgYmFzZTY0IEpTT04gZW5jb2RlZCBzdHJpbmcgcmV0dXJuZWQgZnJv
bSBnZXRJZGVudGl0eUFzc2VydGlvbigpLgorLy8gVGhpcyBpcyBhbHNvIHRoZSBzdHJpbmcgdGhh
dCBpcyBzZXQgaW4gdGhlIGE9aWRlbnRpdHkgbGluZS4KKy8vIFJldHVybnMgYSB7IGlkcCwgYXNz
ZXJ0aW9uIH0gd2hlcmUgaWRwIGlzIG9mIHR5cGUgUlRDSWRlbnRpdHlQcm92aWRlckRldGFpbHMK
Ky8vIGFuZCBhc3NlcnRpb24gaXMgdGhlIGRlc2VyaWFsaXplZCBKU09OIHRoYXQgd2FzIHJldHVy
bmVkIGJ5IHRoZQorLy8gSWRQIHByb3h5J3MgZ2VuZXJhdGVBc3NlcnRpb24oKSBmdW5jdGlvbi4K
K2Z1bmN0aW9uIHBhcnNlQXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvblJlc3VsdFN0cikgeworICBj
b25zdCBhc3NlcnRpb25SZXN1bHQgPSBKU09OLnBhcnNlKGF0b2IoYXNzZXJ0aW9uUmVzdWx0U3Ry
KSk7CisKKyAgY29uc3QgeyBpZHAgfSA9IGFzc2VydGlvblJlc3VsdDsKKyAgY29uc3QgYXNzZXJ0
aW9uID0gSlNPTi5wYXJzZShhc3NlcnRpb25SZXN1bHQuYXNzZXJ0aW9uKTsKKworICByZXR1cm4g
eyBpZHAsIGFzc2VydGlvbiB9OworfQorCisvLyBSZXR1cm4gdHdvIGRpc3RpbmN0IElkUCBkb21h
aW5zIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIGN1cnJlbnQgZG9tYWluCitmdW5jdGlvbiBnZXRJ
ZHBEb21haW5zKCkgeworICBjb25zdCBkb21haW5BID0gJ3t7ZG9tYWluc1t3d3ddfX0nOworICBj
b25zdCBkb21haW5CID0gJ3t7ZG9tYWluc1t3d3cxXX19JzsKKyAgY29uc3QgZG9tYWluQyA9ICd7
e2RvbWFpbnNbd3d3Ml19fSc7CisKKyAgaWYod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lID09PSBk
b21haW5BKSB7CisgICAgcmV0dXJuIFtkb21haW5CLCBkb21haW5DXTsKKyAgfSBlbHNlIGlmKHdp
bmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gZG9tYWluQikgeworICAgIHJldHVybiBbZG9tYWlu
QSwgZG9tYWluQ107CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIFtkb21haW5BLCBkb21haW5CXTsK
KyAgfQorfQorCitmdW5jdGlvbiBhc3NlcnRfcnRjZXJyb3JfcmVqZWN0aW9uKGVycm9yRGV0YWls
LCBwcm9taXNlLCBkZXNjKSB7CisgIHJldHVybiBwcm9taXNlLnRoZW4oCisgICAgcmVzID0+IHsK
KyAgICAgIGFzc2VydF91bnJlYWNoZWQoYEV4cGVjdCBwcm9taXNlIHRvIGJlIHJlamVjdGVkIHdp
dGggUlRDRXJyb3IsIGJ1dCBpbnN0ZWFkIGdvdCAke3Jlc31gKTsKKyAgICB9LCBlcnIgPT4gewor
ICAgICAgYXNzZXJ0X3RydWUoZXJyIGluc3RhbmNlb2YgUlRDRXJyb3IsCisgICAgICAgICdFeHBl
Y3QgZXJyb3Igb2JqZWN0IHRvIGJlIGluc3RhbmNlIG9mIFJUQ0Vycm9yJyk7CisKKyAgICAgIGFz
c2VydF9lcXVhbHMoZXJyLmVycm9yRGV0YWlsLCBlcnJvckRldGFpbCwKKyAgICAgICAgYEV4cGVj
dCBSVENFcnJvciBvYmplY3QgaGF2ZSBlcnJvckRldGFpbCBzZXQgdG8gJHtlcnJvckRldGFpbH1g
KTsKKworICAgICAgcmV0dXJuIGVycjsKKyAgICB9KTsKK30KKworLy8gY29uc3RydWN0IGEgaG9z
dCBzdHJpbmcgY29uc2lzdCBvZiBkb21haW4gYW5kIG9wdGlvbmFsbHkgcG9ydAorLy8gSWYgdGhl
IGRlZmF1bHQgSFRUUC9IVFRQUyBwb3J0IGlzIHVzZWQsIHdpbmRvdy5sb2NhdGlvbi5wb3J0IHJl
dHVybnMKKy8vIGVtcHR5IHN0cmluZy4KK2Z1bmN0aW9uIGhvc3RTdHJpbmcoZG9tYWluLCBwb3J0
KSB7CisgIGlmKHBvcnQgPT09ICcnKSB7CisgICAgcmV0dXJuIGRvbWFpbjsKKyAgfSBlbHNlIHsK
KyAgICByZXR1cm4gYCR7ZG9tYWlufToke3BvcnR9YDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaWRsaGFybmVz
cy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaWRsaGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE3ZWEzMjc5MWNiMDA2OTNmMzc5NGEyM2QzMjg0YTkyNjc5YzUyZmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzMCBAQAorCitGQUlMIGlkbF90ZXN0IHNldHVwIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkdvdCBhbiBlcnJvciBiZWZvcmUgcGFyc2lu
ZyBhbnkgbmFtZWQgZGVmaW5pdGlvbjogVW5yZWNvZ25pc2VkIHRva2VucywgbGluZSAxICh0b2tl
bnM6ICJ7XCJlcnJvclwiOiB7XCJtZXNzYWdlXCIiKQorWworICAgIHsKKyAgICAgICAgInR5cGUi
OiAieyIsCisgICAgICAgICJ2YWx1ZSI6ICJ7IiwKKyAgICAgICAgInRyaXZpYSI6ICIiCisgICAg
fSwKKyAgICB7CisgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICJ2YWx1ZSI6ICJc
ImVycm9yXCIiLAorICAgICAgICAidHJpdmlhIjogIiIKKyAgICB9LAorICAgIHsKKyAgICAgICAg
InR5cGUiOiAiOiIsCisgICAgICAgICJ2YWx1ZSI6ICI6IiwKKyAgICAgICAgInRyaXZpYSI6ICIi
CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0eXBlIjogInsiLAorICAgICAgICAidmFsdWUiOiAi
eyIsCisgICAgICAgICJ0cml2aWEiOiAiICIKKyAgICB9LAorICAgIHsKKyAgICAgICAgInR5cGUi
OiAic3RyaW5nIiwKKyAgICAgICAgInZhbHVlIjogIlwibWVzc2FnZVwiIiwKKyAgICAgICAgInRy
aXZpYSI6ICIiCisgICAgfQorXSIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2lk
bGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2lkbGhhcm5lc3MuaHR0cHMud2lu
ZG93Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaWRsaGFybmVzcy5odHRwcy53aW5kb3cu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9p
ZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzU3YTAyMmNhYmZiZWRjZjRh
MDE1MDI0YWM4OGVjZDMwODBmYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaWRsaGFybmVzcy5odHRwcy53aW5k
b3cuanMKQEAgLTAsMCArMSwxNDMgQEAKKy8vIE1FVEE6IHNjcmlwdD0vcmVzb3VyY2VzL1dlYklE
TFBhcnNlci5qcworLy8gTUVUQTogc2NyaXB0PS9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcworLy8g
TUVUQTogc2NyaXB0PS4vUlRDUGVlckNvbm5lY3Rpb24taGVscGVyLmpzCisKKyd1c2Ugc3RyaWN0
JzsKKworLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZnJvbSBS
VENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanM6CisvLyAgIGdlbmVyYXRlQW5zd2VyKCkKKy8vICAg
Z2V0Tm9pc2VTdHJlYW0oKQorCisvLyBQdXQgdGhlIGdsb2JhbCBJREwgdGVzdCBvYmplY3RzIHVu
ZGVyIGEgcGFyZW50IG9iamVjdC4KKy8vIFRoaXMgYWxsb3dzIGVhc2llciBzZWFyY2ggZm9yIHRo
ZSB0ZXN0IGNhc2VzIHdoZW4KKy8vIHZpZXdpbmcgdGhlIHdlYiBwYWdlCitjb25zdCBpZGxUZXN0
T2JqZWN0cyA9IHt9OworCisvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIFJUQ1RyYWNrRXZl
bnQgb2JqZWN0CitmdW5jdGlvbiBpbml0VHJhY2tFdmVudCgpIHsKKyAgY29uc3QgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgY29uc3QgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2Nl
aXZlcignYXVkaW8nKTsKKyAgY29uc3QgeyBzZW5kZXIsIHJlY2VpdmVyIH0gPSB0cmFuc2NlaXZl
cjsKKyAgY29uc3QgeyB0cmFjayB9ID0gcmVjZWl2ZXI7CisgIHJldHVybiBuZXcgUlRDVHJhY2tF
dmVudCgndHJhY2snLCB7CisgICAgcmVjZWl2ZXIsIHRyYWNrLCB0cmFuc2NlaXZlcgorICB9KTsK
K30KKworLy8gTGlzdCBvZiBhc3luYyB0ZXN0IGRyaXZlciBmdW5jdGlvbnMKK2NvbnN0IGFzeW5j
SW5pdFRhc2tzID0gWworICBhc3luY0luaXRDZXJ0aWZpY2F0ZSwKKyAgYXN5bmNJbml0VHJhbnNw
b3J0cywKKyAgYXN5bmNJbml0TWVkaWFTdHJlYW1UcmFjaywKK107CisKKy8vIEFzeW5jaHJvbm91
c2x5IGdlbmVyYXRlIGFuIFJUQ0NlcnRpZmljYXRlCitmdW5jdGlvbiBhc3luY0luaXRDZXJ0aWZp
Y2F0ZSgpIHsKKyAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uLmdlbmVyYXRlQ2VydGlmaWNhdGUo
eworICAgIG5hbWU6ICdSU0FTU0EtUEtDUzEtdjFfNScsCisgICAgbW9kdWx1c0xlbmd0aDogMjA0
OCwKKyAgICBwdWJsaWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzEsIDAsIDFdKSwKKyAgICBo
YXNoOiAnU0hBLTI1NicKKyAgfSkudGhlbihjZXJ0ID0+IHsKKyAgICBpZGxUZXN0T2JqZWN0cy5j
ZXJ0aWZpY2F0ZSA9IGNlcnQ7CisgIH0pOworfQorCisvLyBBc3luY2hyb25vdXNseSBnZW5lcmF0
ZSBpbnN0YW5jZXMgb2YKKy8vIFJUQ1NjdHBUcmFuc3BvcnQsIFJUQ0R0bHNUcmFuc3BvcnQsCisv
LyBhbmQgUlRDSWNlVHJhbnNwb3J0CitmdW5jdGlvbiBhc3luY0luaXRUcmFuc3BvcnRzKCkgewor
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICBwYy5jcmVhdGVEYXRhQ2hh
bm5lbCgndGVzdCcpOworCisgIC8vIHNldHRpbmcgYW5zd2VyIGRlc2NyaXB0aW9uIGluaXRpYWxp
emVzIHBjLnNjdHAKKyAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKKyAgLnRoZW4ob2ZmZXIgPT4K
KyAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKQorICAgIC50aGVuKCgpID0+IGdlbmVy
YXRlQW5zd2VyKG9mZmVyKSkpCisgIC50aGVuKGFuc3dlciA9PiBwYy5zZXRSZW1vdGVEZXNjcmlw
dGlvbihhbnN3ZXIpKQorICAudGhlbigoKSA9PiB7CisgICAgY29uc3Qgc2N0cFRyYW5zcG9ydCA9
IHBjLnNjdHA7CisgICAgYXNzZXJ0X3RydWUoc2N0cFRyYW5zcG9ydCBpbnN0YW5jZW9mIFJUQ1Nj
dHBUcmFuc3BvcnQsCisgICAgICAnRXhwZWN0IHBjLnNjdHAgdG8gYmUgaW5zdGFuY2Ugb2YgUlRD
U2N0cFRyYW5zcG9ydCcpOworICAgIGlkbFRlc3RPYmplY3RzLnNjdHBUcmFuc3BvcnQgPSBzY3Rw
VHJhbnNwb3J0OworCisgICAgY29uc3QgZHRsc1RyYW5zcG9ydCA9IHNjdHBUcmFuc3BvcnQudHJh
bnNwb3J0OworICAgIGFzc2VydF90cnVlKGR0bHNUcmFuc3BvcnQgaW5zdGFuY2VvZiBSVENEdGxz
VHJhbnNwb3J0LAorICAgICAgJ0V4cGVjdCBzY3RwVHJhbnNwb3J0LnRyYW5zcG9ydCB0byBiZSBp
bnN0YW5jZSBvZiBSVENEdGxzVHJhbnNwb3J0Jyk7CisgICAgaWRsVGVzdE9iamVjdHMuZHRsc1Ry
YW5zcG9ydCA9IGR0bHNUcmFuc3BvcnQ7CisKKyAgICBjb25zdCBpY2VUcmFuc3BvcnQgPSBkdGxz
VHJhbnNwb3J0LnRyYW5zcG9ydDsKKyAgICBpZGxUZXN0T2JqZWN0cy5pY2VUcmFuc3BvcnQgPSBp
Y2VUcmFuc3BvcnQ7CisgIH0pOworfQorCisvLyBBc3luY2hvcm9ub3VzbHkgZ2VuZXJhdGUgTWVk
aWFTdHJlYW1UcmFjayBmcm9tIGdldFVzZXJNZWRpYQorZnVuY3Rpb24gYXN5bmNJbml0TWVkaWFT
dHJlYW1UcmFjaygpIHsKKyAgcmV0dXJuIGdldE5vaXNlU3RyZWFtKHsgYXVkaW86IHRydWUgfSkK
KyAgICAudGhlbihtZWRpYVN0cmVhbSA9PiB7CisgICAgICBpZGxUZXN0T2JqZWN0cy5tZWRpYVN0
cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKClbMF07CisgICAgfSk7Cit9CisKKy8v
IFJ1biBhbGwgYXN5bmMgdGVzdCBkcml2ZXJzLCByZXBvcnQgYW5kIHN3YWxsb3cgYW55IGVycm9y
CisvLyB0aHJvd24vcmVqZWN0ZWQuIFByb3BlciB0ZXN0IGZvciBjb3JyZWN0IGluaXRpYWxpemF0
aW9uCisvLyBvZiB0aGUgb2JqZWN0cyBhcmUgZG9uZSBpbiB0aGVpciByZXNwZWN0aXZlIHRlc3Qg
ZmlsZXMuCitmdW5jdGlvbiBhc3luY0luaXQoKSB7CisgIHJldHVybiBQcm9taXNlLmFsbChhc3lu
Y0luaXRUYXNrcy5tYXAoCisgICAgdGFzayA9PiB7CisgICAgICBjb25zdCB0ID0gYXN5bmNfdGVz
dChgVGVzdCBkcml2ZXIgZm9yICR7dGFzay5uYW1lfWApOworICAgICAgbGV0IHByb21pc2U7Cisg
ICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICBwcm9taXNlID0gdGFzaygpLnRoZW4oCisgICAg
ICAgICAgdC5zdGVwX2Z1bmNfZG9uZSgpLAorICAgICAgICAgIHQuc3RlcF9mdW5jKGVyciA9Pgor
ICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChgRmFpbGVkIHRvIHJ1biAke3Rhc2submFtZX06
ICR7ZXJyfWApKSk7CisgICAgICB9KTsKKyAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0pKTsK
K30KKworaWRsX3Rlc3QoCisgIFsnd2VicnRjJ10sCisgIFsnbWVkaWFjYXB0dXJlLXN0cmVhbXMn
LCAnZG9tJ10sCisgIGFzeW5jIGlkbEFycmF5ID0+IHsKKyAgICBpZGxBcnJheS5hZGRfb2JqZWN0
cyh7CisgICAgICBSVENQZWVyQ29ubmVjdGlvbjogW2BuZXcgUlRDUGVlckNvbm5lY3Rpb24oKWBd
LAorICAgICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOiBbYG5ldyBSVENTZXNzaW9uRGVzY3JpcHRp
b24oeyB0eXBlOiAnb2ZmZXInIH0pYF0sCisgICAgICBSVENJY2VDYW5kaWRhdGU6IFtgbmV3IFJU
Q0ljZUNhbmRpZGF0ZSh7IHNkcE1pZDogMSB9KWBdLAorICAgICAgUlRDRGF0YUNoYW5uZWw6IFtg
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkuY3JlYXRlRGF0YUNoYW5uZWwoJycpYF0sCisgICAgICBS
VENSdHBUcmFuc2NlaXZlcjogW2BuZXcgUlRDUGVlckNvbm5lY3Rpb24oKS5hZGRUcmFuc2NlaXZl
cignYXVkaW8nKWBdLAorICAgICAgUlRDUnRwU2VuZGVyOiBbYG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcmBdLAorICAgICAgUlRDUnRwUmVjZWl2
ZXI6IFtgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykucmVj
ZWl2ZXJgXSwKKyAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6IFtgbmV3IFJUQ1BlZXJD
b25uZWN0aW9uSWNlRXZlbnQoJ2ljZScpYF0sCisgICAgICBSVENQZWVyQ29ubmVjdGlvbkljZUVy
cm9yRXZlbnQ6IFsKKyAgICAgICAgYG5ldyBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQo
J2ljZS1lcnJvcicsIHsgZXJyb3JDb2RlOiA3MDEgfSk7YAorICAgICAgXSwKKyAgICAgIFJUQ1Ry
YWNrRXZlbnQ6IFtgaW5pdFRyYWNrRXZlbnQoKWBdLAorICAgICAgUlRDRXJyb3JFdmVudDogW2Bu
ZXcgUlRDRXJyb3JFdmVudCgnZXJyb3InKWBdLAorICAgICAgUlRDRGF0YUNoYW5uZWxFdmVudDog
WworICAgICAgICBgbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoJ2NoYW5uZWwnLCB7CisgICAgICAg
ICAgY2hhbm5lbDogbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkuY3JlYXRlRGF0YUNoYW5uZWwoJycp
CisgICAgICAgIH0pYAorICAgICAgXSwKKyAgICAgIC8vIEFzeW5jIGluaXRpYWxpemVkIG9iamVj
dHMgYmVsb3cKKyAgICAgIFJUQ0NlcnRpZmljYXRlOiBbJ2lkbFRlc3RPYmplY3RzLmNlcnRpZmlj
YXRlJ10sCisgICAgICBSVENTY3RwVHJhbnNwb3J0OiBbJ2lkbFRlc3RPYmplY3RzLnNjdHBUcmFu
c3BvcnQnXSwKKyAgICAgIFJUQ0R0bHNUcmFuc3BvcnQ6IFsnaWRsVGVzdE9iamVjdHMuZHRsc1Ry
YW5zcG9ydCddLAorICAgICAgUlRDSWNlVHJhbnNwb3J0OiBbJ2lkbFRlc3RPYmplY3RzLmljZVRy
YW5zcG9ydCddLAorICAgICAgTWVkaWFTdHJlYW1UcmFjazogWydpZGxUZXN0T2JqZWN0cy5tZWRp
YVN0cmVhbVRyYWNrJ10sCisgICAgfSk7CisgICAgLyoKKyAgICAgIFRPRE8KKyAgICAgICAgUlRD
UnRwQ29udHJpYnV0aW5nU291cmNlCisgICAgICAgIFJUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJj
ZQorICAgICAgICBSVENEVE1GU2VuZGVyCisgICAgICAgIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQK
KyAgICAgICAgUlRDSWRlbnRpdHlQcm92aWRlclJlZ2lzdHJhcgorICAgICAgICBSVENJZGVudGl0
eUFzc2VydGlvbgorICAgICovCisKKyAgICBhd2FpdCBhc3luY0luaXQoKTsKKyAgfQorKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL2ludGVyZmFjZXMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaW50ZXJmYWNlcy5odHRwcy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmODI4ZmRkYTdkM2IxMDk5NmY0NzJk
YzhkMzRiM2JiNjk3NzQzMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvaW50ZXJmYWNlcy5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMiAr
MCwwIEBACi0KLVBBU1MgTWFpbiB0ZXN0IGRyaXZlciAKLVBBU1MgVGVzdCBkcml2ZXIgZm9yIGFz
eW5jSW5pdENlcnRpZmljYXRlIAotRkFJTCBUZXN0IGRyaXZlciBmb3IgYXN5bmNJbml0VHJhbnNw
b3J0cyBhc3NlcnRfdW5yZWFjaGVkOiBGYWlsZWQgdG8gcnVuIGFzeW5jSW5pdFRyYW5zcG9ydHM6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSVENTY3RwVHJhbnNwb3J0IFJl
YWNoZWQgdW5yZWFjaGFibGUgY29kZQotUEFTUyBUZXN0IGRyaXZlciBmb3IgYXN5bmNJbml0TWVk
aWFTdHJlYW1UcmFjayAKLVBBU1MgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5k
IHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCAKLVBBU1MgRXZlbnRUYXJnZXQgaW50ZXJm
YWNlIG9iamVjdCBsZW5ndGggCi1QQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZSBvYmplY3QgbmFt
ZSAKLVBBU1MgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMg
b2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCi1QQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKLVBBU1MgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBA
QHVuc2NvcGFibGVzIHByb3BlcnR5IAotUEFTUyBNZWRpYVN0cmVhbVRyYWNrIGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCi1QQVNTIE1lZGlh
U3RyZWFtVHJhY2sgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggCi1QQVNTIE1lZGlhU3RyZWFtVHJh
Y2sgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAotUEFTUyBNZWRpYVN0cmVhbVRyYWNrIGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IAotUEFTUyBNZWRpYVN0cmVhbVRyYWNrIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0
eSAKLVBBU1MgTWVkaWFTdHJlYW1UcmFjayBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVy
dHkgCi1QQVNTIE1lZGlhU3RyZWFtVHJhY2sgbXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiBp
ZGxUZXN0T2JqZWN0cy5tZWRpYVN0cmVhbVRyYWNrIAotUEFTUyBTdHJpbmdpZmljYXRpb24gb2Yg
aWRsVGVzdE9iamVjdHMubWVkaWFTdHJlYW1UcmFjayAKLVBBU1MgTWVkaWFTdHJlYW1UcmFjayBt
dXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygnYXVk
aW8nKSAKLVBBU1MgU3RyaW5naWZpY2F0aW9uIG9mIGdlbmVyYXRlTWVkaWFTdHJlYW1UcmFjaygn
YXVkaW8nKSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvaW50ZXJmYWNlcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvaW50ZXJmYWNlcy5odHRwcy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2IxZWNmYTNlNDhmMzBjNTNmNWJmNTU4
NTczODJkNzhiOWUxYTQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L2ludGVyZmFjZXMuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi08
IWRvY3R5cGUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9dXRmLTg+Ci08dGl0bGU+V2ViUlRDIElETCBU
ZXN0czwvdGl0bGU+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi9SVENQZWVyQ29ubmVjdGlvbi1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLSAgJ3VzZSBzdHJpY3QnOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9u
cyBhcmUgY2FsbGVkIGZyb20gUlRDUGVlckNvbm5lY3Rpb24taGVscGVyLmpzOgotICAvLyAgIGdl
bmVyYXRlQW5zd2VyKCkKLSAgLy8gICBnZW5lcmF0ZU1lZGlhU3RyZWFtVHJhY2soKQotCi0gIC8v
IFB1dCB0aGUgZ2xvYmFsIElETCB0ZXN0IG9iamVjdHMgdW5kZXIgYSBwYXJlbnQgb2JqZWN0Lgot
ICAvLyBUaGlzIGFsbG93cyBlYXNpZXIgc2VhcmNoIGZvciB0aGUgdGVzdCBjYXNlcyB3aGVuCi0g
IC8vIHZpZXdpbmcgdGhlIHdlYiBwYWdlCi0gIGNvbnN0IGlkbFRlc3RPYmplY3RzID0ge307Ci0K
LSAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBSVENUcmFja0V2ZW50IG9iamVjdAotICBm
dW5jdGlvbiBpbml0VHJhY2tFdmVudCgpIHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOwotICAgIGNvbnN0IHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1
ZGlvJyk7Ci0gICAgY29uc3QgeyBzZW5kZXIsIHJlY2VpdmVyIH0gPSB0cmFuc2NlaXZlcjsKLSAg
ICBjb25zdCB7IHRyYWNrIH0gPSByZWNlaXZlcjsKLSAgICByZXR1cm4gbmV3IFJUQ1RyYWNrRXZl
bnQoJ3RyYWNrJywgewotICAgICAgcmVjZWl2ZXIsIHRyYWNrLCB0cmFuc2NlaXZlcgotICAgIH0p
OwotICB9Ci0KLSAgLy8gTGlzdCBvZiBhc3luYyB0ZXN0IGRyaXZlciBmdW5jdGlvbnMKLSAgY29u
c3QgYXN5bmNJbml0VGFza3MgPSBbCi0gICAgYXN5bmNJbml0Q2VydGlmaWNhdGUsCi0gICAgYXN5
bmNJbml0VHJhbnNwb3J0cywKLSAgICBhc3luY0luaXRNZWRpYVN0cmVhbVRyYWNrLAotICBdOwot
Ci0gIC8vIEFzeW5jaHJvbm91c2x5IGdlbmVyYXRlIGFuIFJUQ0NlcnRpZmljYXRlCi0gIGZ1bmN0
aW9uIGFzeW5jSW5pdENlcnRpZmljYXRlKCkgewotICAgIHJldHVybiBSVENQZWVyQ29ubmVjdGlv
bi5nZW5lcmF0ZUNlcnRpZmljYXRlKHsKLSAgICAgIG5hbWU6ICdSU0FTU0EtUEtDUzEtdjFfNScs
Ci0gICAgICBtb2R1bHVzTGVuZ3RoOiAyMDQ4LAotICAgICAgcHVibGljRXhwb25lbnQ6IG5ldyBV
aW50OEFycmF5KFsxLCAwLCAxXSksCi0gICAgICBoYXNoOiAnU0hBLTI1NicKLSAgICB9KS50aGVu
KGNlcnQgPT4gewotICAgICAgaWRsVGVzdE9iamVjdHMuY2VydGlmaWNhdGUgPSBjZXJ0OwotICAg
IH0pOwotICB9Ci0KLSAgLy8gQXN5bmNocm9ub3VzbHkgZ2VuZXJhdGUgaW5zdGFuY2VzIG9mCi0g
IC8vIFJUQ1NjdHBUcmFuc3BvcnQsIFJUQ0R0bHNUcmFuc3BvcnQsCi0gIC8vIGFuZCBSVENJY2VU
cmFuc3BvcnQKLSAgZnVuY3Rpb24gYXN5bmNJbml0VHJhbnNwb3J0cygpIHsKLSAgICBjb25zdCBw
YyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCd0
ZXN0Jyk7Ci0KLSAgICAvLyBzZXR0aW5nIGFuc3dlciBkZXNjcmlwdGlvbiBpbml0aWFsaXplcyBw
Yy5zY3RwCi0gICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCkKLSAgICAudGhlbihvZmZlciA9Pgot
ICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikKLSAgICAgIC50aGVuKCgpID0+IGdl
bmVyYXRlQW5zd2VyKG9mZmVyKSkpCi0gICAgLnRoZW4oYW5zd2VyID0+IHBjLnNldFJlbW90ZURl
c2NyaXB0aW9uKGFuc3dlcikpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgY29uc3Qgc2N0cFRy
YW5zcG9ydCA9IHBjLnNjdHA7Ci0gICAgICBhc3NlcnRfdHJ1ZShzY3RwVHJhbnNwb3J0IGluc3Rh
bmNlb2YgUlRDU2N0cFRyYW5zcG9ydCwKLSAgICAgICAgJ0V4cGVjdCBwYy5zY3RwIHRvIGJlIGlu
c3RhbmNlIG9mIFJUQ1NjdHBUcmFuc3BvcnQnKTsKLSAgICAgIGlkbFRlc3RPYmplY3RzLnNjdHBU
cmFuc3BvcnQgPSBzY3RwVHJhbnNwb3J0OwotCi0gICAgICBjb25zdCBkdGxzVHJhbnNwb3J0ID0g
c2N0cFRyYW5zcG9ydC50cmFuc3BvcnQ7Ci0gICAgICBhc3NlcnRfdHJ1ZShkdGxzVHJhbnNwb3J0
IGluc3RhbmNlb2YgUlRDRHRsc1RyYW5zcG9ydCwKLSAgICAgICAgJ0V4cGVjdCBzY3RwVHJhbnNw
b3J0LnRyYW5zcG9ydCB0byBiZSBpbnN0YW5jZSBvZiBSVENEdGxzVHJhbnNwb3J0Jyk7Ci0gICAg
ICBpZGxUZXN0T2JqZWN0cy5kdGxzVHJhbnNwb3J0ID0gZHRsc1RyYW5zcG9ydDsKLQotICAgICAg
Y29uc3QgaWNlVHJhbnNwb3J0ID0gZHRsc1RyYW5zcG9ydC50cmFuc3BvcnQ7Ci0gICAgICBpZGxU
ZXN0T2JqZWN0cy5pY2VUcmFuc3BvcnQgPSBpY2VUcmFuc3BvcnQ7Ci0gICAgfSk7Ci0gIH0KLQot
ICAvLyBBc3luY2hvcm9ub3VzbHkgZ2VuZXJhdGUgTWVkaWFTdHJlYW1UcmFjayBmcm9tIGdldFVz
ZXJNZWRpYQotICBmdW5jdGlvbiBhc3luY0luaXRNZWRpYVN0cmVhbVRyYWNrKCkgewotICAgIHJl
dHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0p
Ci0gICAgLnRoZW4obWVkaWFTdHJlYW0gPT4gewotICAgICAgY29uc3QgdHJhY2tzID0gbWVkaWFT
dHJlYW0uZ2V0VHJhY2tzKCk7Ci0gICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKHRyYWNrcy5sZW5n
dGgsIDAsCi0gICAgICAgICdFeHBlY3QgbWVkaWEgc3RyZWFtIHRvIGhhdmUgYXQgbGVhc3Qgb25l
IHRyYWNrJyk7Ci0KLSAgICAgIGlkbFRlc3RPYmplY3RzLm1lZGlhU3RyZWFtVHJhY2sgPSB0cmFj
a3NbMF07Ci0gICAgfSk7Ci0gIH0KLQotICAvLyBSdW4gYWxsIGFzeW5jIHRlc3QgZHJpdmVycywg
cmVwb3J0IGFuZCBzd2FsbG93IGFueSBlcnJvcgotICAvLyB0aHJvd24vcmVqZWN0ZWQuIFByb3Bl
ciB0ZXN0IGZvciBjb3JyZWN0IGluaXRpYWxpemF0aW9uCi0gIC8vIG9mIHRoZSBvYmplY3RzIGFy
ZSBkb25lIGluIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBmaWxlcy4KLSAgZnVuY3Rpb24gYXN5bmNJ
bml0KCkgewotICAgIHJldHVybiBQcm9taXNlLmFsbChhc3luY0luaXRUYXNrcy5tYXAoCi0gICAg
ICB0YXNrID0+IHsKLSAgICAgICAgY29uc3QgdCA9IGFzeW5jX3Rlc3QoYFRlc3QgZHJpdmVyIGZv
ciAke3Rhc2submFtZX1gKTsKLSAgICAgICAgbGV0IHByb21pc2U7Ci0gICAgICAgIHQuc3RlcCgo
KSA9PiB7Ci0gICAgICAgICAgcHJvbWlzZSA9IHRhc2soKS50aGVuKAotICAgICAgICAgICAgdC5z
dGVwX2Z1bmNfZG9uZSgpLAotICAgICAgICAgICAgdC5zdGVwX2Z1bmMoZXJyID0+Ci0gICAgICAg
ICAgICAgIGFzc2VydF91bnJlYWNoZWQoYEZhaWxlZCB0byBydW4gJHt0YXNrLm5hbWV9OiAke2Vy
cn1gKSkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHByb21pc2U7Ci0gICAgICB9KSk7
Ci0gIH0KLQotICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Ci0gICAgYXdhaXQgYXN5bmNJbml0
KCk7Ci0KLSAgICBjb25zdCBpZGxBcnJheSA9IG5ldyBJZGxBcnJheSgpOwotCi0gICAgbGV0IHdl
YnJ0Y0lkbCA9IGZldGNoKCcvaW50ZXJmYWNlcy93ZWJydGMtcGMuaWRsJykudGhlbihyID0+IHIu
dGV4dCgpKTsKLSAgICBsZXQgbWVkaWFjYXB0dXJlTWFpbklkbCA9IGZldGNoKCcvaW50ZXJmYWNl
cy9tZWRpYWNhcHR1cmUtbWFpbi5pZGwnKS50aGVuKHIgPT4gci50ZXh0KCkpOwotCi0gICAgaWRs
QXJyYXkuYWRkX3VudGVzdGVkX2lkbHMobWVkaWFjYXB0dXJlTWFpbklkbCwgeyBvbmx5OiBbJ01l
ZGlhU3RyZWFtQ29uc3RyYWludHMnXSB9KTsKLSAgICBpZGxBcnJheS5hZGRfaWRscyh3ZWJydGNJ
ZGwpOwotCi0gICAgaWRsQXJyYXkuYWRkX3VudGVzdGVkX2lkbHMoJ2ludGVyZmFjZSBFdmVudEhh
bmRsZXIge307Jyk7Ci0gICAgaWRsQXJyYXkuYWRkX2lkbHMoJ2ludGVyZmFjZSBFdmVudFRhcmdl
dCB7fTsnKTsKLSAgICBpZGxBcnJheS5hZGRfaWRscygnaW50ZXJmYWNlIE1lZGlhU3RyZWFtVHJh
Y2sgOiBFdmVudFRhcmdldCB7fTsnKTsKLQotICAgIGlkbEFycmF5LmFkZF9vYmplY3RzKHsKLSAg
ICAgICdSVENQZWVyQ29ubmVjdGlvbic6IFtgbmV3IFJUQ1BlZXJDb25uZWN0aW9uKClgXSwKLQot
ICAgICAgJ1JUQ1Nlc3Npb25EZXNjcmlwdGlvbic6IFtgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bih7IHR5cGU6ICdvZmZlcicgfSlgXSwKLQotICAgICAgJ1JUQ0ljZUNhbmRpZGF0ZSc6IFtgbmV3
IFJUQ0ljZUNhbmRpZGF0ZSh7IHNkcE1pZDogMSB9KWBdLAotCi0gICAgICAnUlRDRGF0YUNoYW5u
ZWwnOiBbYG5ldyBSVENQZWVyQ29ubmVjdGlvbigpLmNyZWF0ZURhdGFDaGFubmVsKCcnKWBdLAot
Ci0gICAgICAnUlRDUnRwVHJhbnNjZWl2ZXInOiBbYG5ldyBSVENQZWVyQ29ubmVjdGlvbigpLmFk
ZFRyYW5zY2VpdmVyKCdhdWRpbycpYF0sCi0KLSAgICAgICdSVENSdHBTZW5kZXInOiBbYG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcmBdLAotCi0g
ICAgICAnUlRDUnRwUmVjZWl2ZXInOiBbYG5ldyBSVENQZWVyQ29ubmVjdGlvbigpLmFkZFRyYW5z
Y2VpdmVyKCdhdWRpbycpLnJlY2VpdmVyYF0sCi0KLSAgICAgICdSVENQZWVyQ29ubmVjdGlvbklj
ZUV2ZW50JzogW2BuZXcgUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCgnaWNlJylgXSwKLQotICAg
ICAgJ1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudCc6Ci0gICAgICAgIFtgbmV3IFJUQ1Bl
ZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudCgnaWNlLWVycm9yJywgeyBlcnJvckNvZGU6IDcwMSB9
KTtgXSwKLQotICAgICAgJ1JUQ1RyYWNrRXZlbnQnOiBbYGluaXRUcmFja0V2ZW50KClgXSwKLQot
ICAgICAgJ1JUQ0Vycm9yRXZlbnQnOiBbYG5ldyBSVENFcnJvckV2ZW50KCdlcnJvcicpYF0sCi0K
LSAgICAgICdSVENEYXRhQ2hhbm5lbEV2ZW50JzogW2BuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgn
Y2hhbm5lbCcsCi0gICAgICAgIHsgY2hhbm5lbDogbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCkuY3Jl
YXRlRGF0YUNoYW5uZWwoJycpIH0pYF0sCi0KLSAgICAgIC8vIEFzeW5jIGluaXRpYWxpemVkIG9i
amVjdHMgYmVsb3cKLQotICAgICAgJ1JUQ0NlcnRpZmljYXRlJzogWydpZGxUZXN0T2JqZWN0cy5j
ZXJ0aWZpY2F0ZSddLAotCi0gICAgICAnUlRDU2N0cFRyYW5zcG9ydCc6IFsnaWRsVGVzdE9iamVj
dHMuc2N0cFRyYW5zcG9ydCddLAotCi0gICAgICAnUlRDRHRsc1RyYW5zcG9ydCc6IFsnaWRsVGVz
dE9iamVjdHMuZHRsc1RyYW5zcG9ydCddLAotCi0gICAgICAnUlRDSWNlVHJhbnNwb3J0JzogWydp
ZGxUZXN0T2JqZWN0cy5pY2VUcmFuc3BvcnQnXSwKLQotICAgICAgLy8gVGVzdCBvbiBib3RoIE1l
ZGlhU3RyZWFtVHJhY2sgZnJvbSBnZXRVc2VyTWVkaWEgYW5kIHRyYW5zY2VpdmVyCi0gICAgICAn
TWVkaWFTdHJlYW1UcmFjayc6IFsKLSAgICAgICAgYGlkbFRlc3RPYmplY3RzLm1lZGlhU3RyZWFt
VHJhY2tgLAotICAgICAgICBgZ2VuZXJhdGVNZWRpYVN0cmVhbVRyYWNrKCdhdWRpbycpYF0KLSAg
ICB9KTsKLQotICAgIGlkbEFycmF5LnRlc3QoKTsKLSAgfSwgJ01haW4gdGVzdCBkcml2ZXInKTsK
LQotICAvKgotICAgIFRPRE8KLSAgICAgIFJUQ1J0cENvbnRyaWJ1dGluZ1NvdXJjZQotICAgICAg
UlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlCi0gICAgICBSVENEVE1GU2VuZGVyCi0gICAgICBS
VENEVE1GVG9uZUNoYW5nZUV2ZW50Ci0gICAgICBSVENJZGVudGl0eVByb3ZpZGVyUmVnaXN0cmFy
Ci0gICAgICBSVENJZGVudGl0eUFzc2VydGlvbgotICAgKi8KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvbm8t
bWVkaWEtY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvbm8tbWVkaWEtY2FsbC5odG1sCmluZGV4IGM5NzM5MzJiZjJmYzM2NTI5YWJm
MGZhODE5ZDAxOWUzOTRkZjZmZTcuLjhmNGY1OTYyZDRhZjlkZThmZDI1YjlhNjRhZWRiNDljN2Iw
YTA4MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL25vLW1lZGlhLWNhbGwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9uby1tZWRpYS1jYWxsLmh0bWwKQEAgLTEy
NSw4ICsxMjUsOCBAQCBUaGlzIHRlc3QgdXNlcyB0aGUgbGVnYWN5IGNhbGxiYWNrIEFQSSB3aXRo
IG5vIG1lZGlhLCBhbmQgdGh1cyBkb2VzIG5vdCByZXF1aXJlCiAKICAgICAvLyBUaGUgb2ZmZXJU
b1JlY2VpdmVWaWRlbyBpcyBuZWNlc3NhcnkgYW5kIHN1ZmZpY2llbnQgdG8gbWFrZQogICAgIC8v
IGFuIGFjdHVhbCBjb25uZWN0aW9uLgotICAgIGdGaXJzdENvbm5lY3Rpb24uY3JlYXRlT2ZmZXIo
KS50aGVuKG9uT2ZmZXJDcmVhdGVkLCBmYWlsZWQoJ2NyZWF0ZU9mZmVyJyksCi0gICAgICAgIHtv
ZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlfSk7CisgICAgZ0ZpcnN0Q29ubmVjdGlvbi5jcmVhdGVP
ZmZlcih7b2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZX0pCisgICAgICAudGhlbihvbk9mZmVyQ3Jl
YXRlZCwgZmFpbGVkKCdjcmVhdGVPZmZlcicpKTsKICAgfSk7CiA8L3NjcmlwdD4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
cHJvdG9jb2wvUkVBRE1FLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL3Byb3RvY29sL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYyZGI4NTQw
ZjQzMjc4YjdhNDlhOTRjM2ZhMjU2NDdmMDM4ZWY4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Byb3RvY29sL1JF
QURNRS50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZmlsZXMg
dGhhdCB0ZXN0IGZvciBiZWhhdmlvciByZWxldmFudCB0byB3ZWJydGMsCitidXQgd2hpY2ggaXMg
c3BlY2lmaWVkIGluIHByb3RvY29sIHNwZWNpZmljYXRpb25zIGZyb20gdGhlIElFVEYsIG5vdCBp
bgorQVBJIHJlY29tbWVuZGF0aW9ucyBmcm9tIHRoZSBXM0MuCisKK1RoZSBtYWluIHNwZWNpZmlj
YXRpb25zIGFyZSBnaXZlbiBpbiB0aGUgZm9sbG93aW5nIGludGVybmV0LWRyYWZ0czoKKworLSBk
cmFmdC1pZXRmLXJ0Y3dlYi1vdmVydmlldworLSBkcmFmdC1pZXRmLXJ0Y3dlYi10cmFuc3BvcnRz
CistIGRyYWZ0LWlldGYtcnRjd2ViLXNlY3VyaXR5LWFyY2gKKy0gZHJhZnQtaWV0Zi1ydGN3ZWIt
c2VjdXJpdHkKKy0gZHJhZnQtaWV0Zi1ydGN3ZWItcnRwLXVzYWdlCistIGRyYWZ0LWlldGYtcnRj
d2ViLWpzZXAKKy0gZHJhZnQtaWV0Zi1ydGN3ZWItaXAtaGFuZGxpbmcKKy0gZHJhZnQtaWV0Zi1y
dGN3ZWItZmVjCistIGRyYWZ0LWlldGYtcnRjd2ViLWRhdGEtcHJvdG9jb2wKKy0gZHJhZnQtaWV0
Zi1ydGN3ZWItZGF0YS1jaGFubmVsCisKKy0gUkZDIDc3NDIsICJXZWJSVEMgVmlkZW8gUHJvY2Vz
c2luZyBhbmQgQ29kZWMgUmVxdWlyZW1lbnRzIgorLSBSRkMgNzg3NCwgIldlYlJUQyBBdWRpbyBD
b2RlYyBhbmQgUHJvY2Vzc2luZyBSZXF1aXJlbWVudHMiCisKK0FuIG92ZXJ2aWV3IG9mIHRoZSBk
ZXBlbmRlbmNpZXMgaW52b2x2ZWQgaXMgaW4gZHJhZnQtamVubmluZ3MtcnRjd2ViLWRlcHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL3Byb3RvY29sL3ZpZGVvLWNvZGVjcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9wcm90b2NvbC92aWRlby1j
b2RlY3MuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNjdkYzgzZDRkNzVmNDljMDdk
MTUyOGEwMWVjMWJkMzliYWVkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9wcm90b2NvbC92aWRlby1jb2RlY3Mu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIEguMjY0IGFuZCBWUDgg
c2hvdWxkIGJlIHN1cHBvcnRlZCBpbiBpbml0aWFsIG9mZmVyIGFzc2VydF90cnVlOiBleHBlY3Rl
ZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBILjI2NCBhbmQgVlA4IHNob3VsZCBiZSBuZWdvdGlhdGVk
IGFmdGVyIGhhbmRzaGFrZSAKK0ZBSUwgQWxsIEguMjY0IGNvZGVjcyBNVVNUIGluY2x1ZGUgcHJv
ZmlsZS1sZXZlbC1pZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdmbXRwLnNwbGl0JykiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Byb3RvY29sL3ZpZGVvLWNvZGVjcy5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
cHJvdG9jb2wvdmlkZW8tY29kZWNzLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ3ODU2ZjJhMjcx
YjVjMzQ5YjUyOWVjN2YxZmUxYWNiNWE0OGVmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Byb3RvY29sL3ZpZGVv
LWNvZGVjcy5odHRwcy5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1l
dGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuY3Jl
YXRlT2ZmZXI8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL1JUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCisvLyBUZXN0cyBmb3IgY29uZm9y
bWFuY2UgdG8gUkZDIDc3NDIsCisvLyAiV2ViUlRDIFZpZGVvIFByb2Nlc3NpbmcgYW5kIENvZGVj
IFJlcXVpcmVtZW50cyIKKy8vIFRoZSBkb2N1bWVudCB3YXMgZm9ybWVybHkga25vd24gYXMgZHJh
ZnQtaWV0Zi1ydGN3ZWItdmlkZW8tY29kZWNzLgorLy8KKy8vIFRoaXMgdGVzdHMgdGhhdCB0aGUg
YnJvd3NlciBpcyBhIFdlYlJUQyBCcm93c2VyIGFzIGRlZmluZWQgdGhlcmUuCisKKy8vIFRPRE86
IFNlY3Rpb24gMy4yOiBzY3JlZW4gY2FwdHVyZSB2aWRlbyBNVVNUIGJlIHByZXBhcmVkCisvLyB0
byBoYW5kbGUgcmVzb2x1dGlvbiBjaGFuZ2VzLgorCisvLyBUT0RPOiBTZWN0aW9uIDQ6IE1VU1Qg
c3VwcG9ydCBnZW5lcmF0aW5nIENWTyAob3JpZW50YXRpb24pCisKKy8vIFNlY3Rpb24gNTogQnJv
d3NlcnMgTVVTVCBpbXBsZW1lbnQgVlA4IGFuZCBILjI2NCBDb25zdHJhaW5lZCBCYXNlbGluZQor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKHtvZmZlclRvUmVj
ZWl2ZVZpZGVvOiB0cnVlfSk7CisgIGxldCB2aWRlb19zZWN0aW9uX2ZvdW5kID0gZmFsc2U7Cisg
IGZvciAobGV0IHNlY3Rpb24gb2Ygb2ZmZXIuc2RwLnNwbGl0KC9cclxubT0vKSkgeworICAgIGlm
IChzZWN0aW9uLnNlYXJjaCgndmlkZW8nKSAhPSAwKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9
CisgICAgdmlkZW9fc2VjdGlvbl9mb3VuZCA9IHRydWU7CisgICAgLy8gUlRQTUFQIGxpbmVzIGhh
dmUgdGhlIGZvcm1hdCBhPXJ0cG1hcDo8cHQ+IDxjb2RlYz4vPGNsb2NrIHJhdGU+CisgICAgbGV0
IHJ0cG1hcF9yZWdleCA9IC9cclxuYT1ydHBtYXA6KFxkKykgKFxTKylcL1xkK1xyXG4vZzsKKyAg
ICBsZXQgbWF0Y2ggPSBydHBtYXBfcmVnZXguZXhlYyhvZmZlci5zZHApOworICAgIGxldCBwYXls
b2FkX3R5cGVfbWFwID0gbmV3IEFycmF5KCk7CisgICAgd2hpbGUgKG1hdGNoKSB7CisgICAgICBw
YXlsb2FkX3R5cGVfbWFwW21hdGNoWzFdXSA9IG1hdGNoWzJdOworICAgICAgbWF0Y2ggPSBydHBt
YXBfcmVnZXguZXhlYyhvZmZlci5zZHApOworICAgIH0KKyAgICBhc3NlcnRfdHJ1ZShwYXlsb2Fk
X3R5cGVfbWFwLmluZGV4T2YoJ1ZQOCcpID4gLTEsCisgICAgICAgICAgICAgICAgJ1ZQOCBpcyBz
dXBwb3J0ZWQnKTsKKyAgICBhc3NlcnRfdHJ1ZShwYXlsb2FkX3R5cGVfbWFwLmluZGV4T2YoJ0gy
NjQnKSA+IC0xLAorICAgICAgICAgICAgICAgICdILjI2NCBpcyBzdXBwb3J0ZWQnKTsKKyAgICAv
LyBUT0RPOiBWZXJpZnkgdGhhdCBvbmUgb2YgdGhlIEguMjY0IFBUcyBzdXBwb3J0cyBjb25zdHJh
aW5lZCBiYXNlbGluZQorICB9CisgIGFzc2VydF90cnVlKHZpZGVvX3NlY3Rpb25fZm91bmQpOwor
fSwgJ0guMjY0IGFuZCBWUDggc2hvdWxkIGJlIHN1cHBvcnRlZCBpbiBpbml0aWFsIG9mZmVyJyk7
CisKK2FzeW5jIGZ1bmN0aW9uIG5lZ290aWF0ZVBhcmFtZXRlcnMoKSB7CisgIGNvbnN0IHBjMSA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICBjb25zdCBwYzIgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKKyAgbGV0IFt0cmFjaywgc3RyZWFtc10gPSBhd2FpdCBnZXRUcmFja0Zyb21Vc2Vy
TWVkaWEoJ3ZpZGVvJyk7CisgIGNvbnN0IHNlbmRlciA9IHBjMS5hZGRUcmFjayh0cmFjayk7Cisg
IGF3YWl0IGRvU2lnbmFsaW5nSGFuZHNoYWtlKHBjMSwgcGMyKTsKKyAgcmV0dXJuIHNlbmRlci5n
ZXRQYXJhbWV0ZXJzKCk7Cit9CisKK2Z1bmN0aW9uIHBhcnNlRm10cChmbXRwKSB7CisgIGNvbnN0
IHBhcmFtcyA9IGZtdHAuc3BsaXQoJzsnKTsKKyAgcmV0dXJuIHBhcmFtcy5tYXAocGFyYW0gPT4g
cGFyYW0uc3BsaXQoJz0nKSk7Cit9Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0
IHBhcmFtcyA9IGF3YWl0IG5lZ290aWF0ZVBhcmFtZXRlcnMoKTsKKyAgYXNzZXJ0X3RydWUoISFw
YXJhbXMuY29kZWNzLmZpbmQoY29kZWMgPT4gY29kZWMubWltZVR5cGUgPT09ICd2aWRlby9IMjY0
JykpOworICBhc3NlcnRfdHJ1ZSghIXBhcmFtcy5jb2RlY3MuZmluZChjb2RlYyA9PiBjb2RlYy5t
aW1lVHlwZSA9PT0gJ3ZpZGVvL1ZQOCcpKTsKK30sICdILjI2NCBhbmQgVlA4IHNob3VsZCBiZSBu
ZWdvdGlhdGVkIGFmdGVyIGhhbmRzaGFrZScpOworCisvLyBUT0RPOiBTZWN0aW9uIDY6IFJlY2lw
aWVudHMgTVVTVCBiZSBhYmxlIHRvIGRlY29kZSAzMjB4MjQwQDIwIGZwcworLy8gVE9ETzogU2Vj
dGlvbiA2LjE6IFZQOCBNVVNUIHN1cHBvcnQgUkZDIDc3NDEgcGF5bG9hZCBmb3JtYXRzCisvLyBU
T0RPOiBTZWN0aW9uIDYuMTogVlA4IE1VU1QgcmVzcGVjdCBtYXgtZnIvbWF4LWZzCisvLyBUT0RP
OiBTZWN0aW9uIDYuMTogVlA4IE1VU1QgZW5jb2RlIGFuZCBkZWNvZGUgc3F1YXJlIHBpeGVscwor
Ly8gVE9ETzogU2VjdGlvbiA2LjI6IEguMjY0IE1VU1Qgc3VwcG9ydCBSRkMgNjE4NCBwYXlsb2Fk
IGZvcm1hdHMKKy8vIFRPRE86IFNlY3Rpb24gNi4yOiBNVVNUIHN1cHBvcnQgQ29uc3RyYWluZWQg
QmFzZWxpbmUgbGV2ZWwgMS4yCisvLyBUT0RPOiBTZWN0aW9uIDYuMjogU0hPVUxEIHN1cHBvcnQg
Q29uc3RyYWluZWQgSGlnaCBsZXZlbCAxLjMKKy8vIFRPRE86IFNlY3Rpb24gNi4yOiBNVVNUIHN1
cHBvcnQgcGFja2V0aXphdGlvbiBtb2RlIDEuCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
IGNvbnN0IHBhcmFtcyA9IGF3YWl0IG5lZ290aWF0ZVBhcmFtZXRlcnMoKTsKKyAgY29uc3QgaDI2
NCA9IHBhcmFtcy5jb2RlY3MuZmlsdGVyKGNvZGVjID0+IGNvZGVjLm1pbWVUeXBlID09PSAndmlk
ZW8vSDI2NCcpOworICBoMjY0Lm1hcChjb2RlYyA9PiB7CisgICAgY29uc3QgY29kZWNfcGFyYW1z
ID0gcGFyc2VGbXRwKGNvZGVjLnNkcEZtdHBMaW5lKTsKKyAgICBhc3NlcnRfdHJ1ZSghIWNvZGVj
X3BhcmFtcy5maW5kKHggPT4geFswXSA9PT0gJ3Byb2ZpbGUtbGV2ZWwtaWQnKSk7CisgIH0pCit9
LCAnQWxsIEguMjY0IGNvZGVjcyBNVVNUIGluY2x1ZGUgcHJvZmlsZS1sZXZlbC1pZCcpOworCisv
LyBUT0RPOiBTZWN0aW9uIDYuMjogU0hPVUxEIGludGVycHJldCBtYXgtbWJwcywgbWF4LXNtYnBz
LCBtYXgtZnMgZXQgYWwKKy8vIFRPRE86IFNlY3Rpb24gNi4yOiBNVVNUIE5PVCBpbmNsdWRlIHNw
cm9wLXBhcmFtZXRlci1zZXRzCisvLyBUT0RPOiBTZWN0aW9uIDYuMjogTVVTVCBzdXBwb3J0IFNF
SSAiZmlsbGVyIHBheWxvYWQiCisvLyBUT0RPOiBTZWN0aW9uIDYuMjogTVVTVCBzdXBwb3J0IFNF
SSAiZnVsbCBmcmFtZSBmcmVlemUiCisvLyBUT0RPOiBTZWN0aW9uIDYuMjogTVVTVCBiZSBwcmVw
YXJlZCB0byByZWNlaXZlIFVzZXIgRGF0YSBtZXNzYWdlcworLy8gVE9ETzogU2VjdGlvbiA2LjI6
IE1VU1QgZW5jb2RlIGFuZCBkZWNvZGUgc3F1YXJlIHBpeGVscyB1bmxlc3Mgc2lnbmFsZWQKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvcHJvdG9jb2wvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9wcm90b2NvbC93M2MtaW1wb3J0Lmxv
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZGNkMWM0MmNmYTAyNmRmMGE0ZmY3MDA2NmFmOWQxMmRjNzM1NDRiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvcHJvdG9jb2wvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxOCBAQAorVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0lu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmls
ZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
cHJvdG9jb2wvUkVBRE1FLnR4dAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL3Byb3RvY29sL3ZpZGVvLWNvZGVjcy5odHRwcy5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9y
dGNwZWVyY29ubmVjdGlvbi9ydGNwZWVyY29ubmVjdGlvbi1pZGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvcnRjcGVlcmNv
bm5lY3Rpb24vcnRjcGVlcmNvbm5lY3Rpb24taWRsLWV4cGVjdGVkLnR4dAppbmRleCAxNzY2YjJm
YjkwZjc1ODVhZjM3ZjJhOWUzNzUwMjJlMzBhMmFmNTgwLi4yMzQ5YmJjYmU3MzRkYjg4MWNmZThh
ZGU4ZTVjYWZjMTYwMzk2ZmE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9ydGNwZWVyY29ubmVjdGlvbi9ydGNwZWVyY29ubmVj
dGlvbi1pZGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL3J0Y3BlZXJjb25uZWN0aW9uL3J0Y3BlZXJjb25uZWN0aW9u
LWlkbC1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTUgQEAKLUNPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IENhbiBvbmx5IGNhbGwgUlRDUGVl
ckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIgb24gaW5zdGFuY2VzIG9mIFJUQ1BlZXJDb25uZWN0aW9u
Ci1DT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9y
OiBDYW4gb25seSBjYWxsIFJUQ1BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlciBvbiBpbnN0YW5j
ZXMgb2YgUlRDUGVlckNvbm5lY3Rpb24KLUNPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IENhbiBvbmx5IGNhbGwgUlRDUGVlckNvbm5lY3Rpb24u
YWRkSWNlQ2FuZGlkYXRlIG9uIGluc3RhbmNlcyBvZiBSVENQZWVyQ29ubmVjdGlvbgotQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogQ2FuIG9u
bHkgY2FsbCBSVENQZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyBvbiBpbnN0YW5jZXMgb2YgUlRDUGVl
ckNvbm5lY3Rpb24KLUNPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkZXNjcmlwdGlvbicpIHRvIFJUQ1BlZXJDb25uZWN0
aW9uLnNldExvY2FsRGVzY3JpcHRpb24gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBSVENTZXNzaW9u
RGVzY3JpcHRpb24KLUNPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkZXNjcmlwdGlvbicpIHRvIFJUQ1BlZXJDb25uZWN0
aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uCi1DT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlv
bjogVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cwogRGVzY3JpcHRpb24KIAogVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIGlu
dGVyZmFjZS4KIAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IE5vdCBlbm91Z2gg
YXJndW1lbnRzCi0KK1BBU1MgUGFydGlhbCBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb246IG9y
aWdpbmFsIGludGVyZmFjZSBkZWZpbmVkIAorUEFTUyBQYXJ0aWFsIGludGVyZmFjZSBSVENQZWVy
Q29ubmVjdGlvblsyXTogb3JpZ2luYWwgaW50ZXJmYWNlIGRlZmluZWQgCitQQVNTIFBhcnRpYWwg
aW50ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9uWzNdOiBvcmlnaW5hbCBpbnRlcmZhY2UgZGVmaW5l
ZCAKK1BBU1MgUGFydGlhbCBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb25bNF06IG9yaWdpbmFs
IGludGVyZmFjZSBkZWZpbmVkIAorUEFTUyBQYXJ0aWFsIGludGVyZmFjZSBSVENQZWVyQ29ubmVj
dGlvbls1XTogb3JpZ2luYWwgaW50ZXJmYWNlIGRlZmluZWQgCitQQVNTIFBhcnRpYWwgaW50ZXJm
YWNlIFJUQ1BlZXJDb25uZWN0aW9uWzZdOiBvcmlnaW5hbCBpbnRlcmZhY2UgZGVmaW5lZCAKK1BB
U1MgUGFydGlhbCBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb25bN106IG9yaWdpbmFsIGludGVy
ZmFjZSBkZWZpbmVkIAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZh
Y2Ugb2JqZWN0IGxlbmd0aCAKIFBBU1MgRXZlbnRUYXJnZXQgaW50ZXJmYWNlIG9iamVjdCBuYW1l
IApAQCAtMjUsOTkgKzIzLDU2IEBAIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwCiBQQVNTIFJUQ1Bl
ZXJDb25uZWN0aW9uIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgUlRD
UGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IAogUEFTUyBS
VENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVPZmZlcihSVENPZmZl
ck9wdGlvbnMpIAotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBjcmVhdGVP
ZmZlcihSVENPZmZlck9wdGlvbnMpIG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogUEFTUyBSVENQZWVy
Q29ubmVjdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0
aW9ucykgCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIGNyZWF0ZUFuc3dl
cihSVENBbnN3ZXJPcHRpb25zKSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIEZBSUwgUlRDUGVlckNv
bm5lY3Rpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24pIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3Ro
IGV4cGVjdGVkIDEgYnV0IGdvdCAwCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkg
Zm9yIHNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKSBvbiBSVENQZWVy
Q29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUg
bG9jYWxEZXNjcmlwdGlvbiAKLVBBU1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3Ig
bG9jYWxEZXNjcmlwdGlvbiBwcm9wZXJ0eSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIFBBU1MgUlRD
UGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgY3VycmVudExvY2FsRGVzY3JpcHRp
b24gCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIGN1cnJlbnRMb2NhbERl
c2NyaXB0aW9uIHByb3BlcnR5IG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogUEFTUyBSVENQZWVyQ29u
bmVjdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBwZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiAKLVBB
U1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3IgcGVuZGluZ0xvY2FsRGVzY3JpcHRp
b24gcHJvcGVydHkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBGQUlMIFJUQ1BlZXJDb25uZWN0aW9u
IGludGVyZmFjZTogb3BlcmF0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbikgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0
ZWQgMSBidXQgZ290IDAKLVBBU1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3Igc2V0
UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKSBvbiBSVENQZWVyQ29ubmVj
dGlvbiAKIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcmVtb3Rl
RGVzY3JpcHRpb24gCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIHJlbW90
ZURlc2NyaXB0aW9uIHByb3BlcnR5IG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogUEFTUyBSVENQZWVy
Q29ubmVjdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24g
Ci1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIGN1cnJlbnRSZW1vdGVEZXNj
cmlwdGlvbiBwcm9wZXJ0eSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5l
Y3Rpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uIAotUEFT
UyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBwZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b24gcHJvcGVydHkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNTIFJUQ1BlZXJDb25uZWN0aW9u
IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUpIAot
UEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBhZGRJY2VDYW5kaWRhdGUoUlRD
SWNlQ2FuZGlkYXRlKSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5lY3Rp
b24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgc2lnbmFsaW5nU3RhdGUgCi1QQVNTIFVuc2NvcGFibGUg
aGFuZGxlZCBjb3JyZWN0bHkgZm9yIHNpZ25hbGluZ1N0YXRlIHByb3BlcnR5IG9uIFJUQ1BlZXJD
b25uZWN0aW9uIAogUEFTUyBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBp
Y2VHYXRoZXJpbmdTdGF0ZSAKLVBBU1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3Ig
aWNlR2F0aGVyaW5nU3RhdGUgcHJvcGVydHkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNTIFJU
Q1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogYXR0cmlidXRlIGljZUNvbm5lY3Rpb25TdGF0ZSAK
LVBBU1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3IgaWNlQ29ubmVjdGlvblN0YXRl
IHByb3BlcnR5IG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogRkFJTCBSVENQZWVyQ29ubmVjdGlvbiBp
bnRlcmZhY2U6IGF0dHJpYnV0ZSBjYW5Ucmlja2xlSWNlQ2FuZGlkYXRlcyBhc3NlcnRfdHJ1ZTog
VGhlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBoYXZlIGEgcHJvcGVydHkgImNhblRyaWNrbGVJY2VD
YW5kaWRhdGVzIiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotUEFTUyBVbnNjb3BhYmxlIGhhbmRs
ZWQgY29ycmVjdGx5IGZvciBjYW5Ucmlja2xlSWNlQ2FuZGlkYXRlcyBwcm9wZXJ0eSBvbiBSVENQ
ZWVyQ29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBvcGVyYXRp
b24gZ2V0Q29uZmlndXJhdGlvbigpIAotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5
IGZvciBnZXRDb25maWd1cmF0aW9uKCkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNTIFJUQ1Bl
ZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIHNldENvbmZpZ3VyYXRpb24oUlRDQ29u
ZmlndXJhdGlvbikgCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIHNldENv
bmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlvbikgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNT
IFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGNsb3NlKCkgCi1QQVNTIFVu
c2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIGNsb3NlKCkgb24gUlRDUGVlckNvbm5lY3Rp
b24gCiBQQVNTIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogYXR0cmlidXRlIG9ubmVnb3Rp
YXRpb25uZWVkZWQgCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIG9ubmVn
b3RpYXRpb25uZWVkZWQgcHJvcGVydHkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNTIFJUQ1Bl
ZXJDb25uZWN0aW9uIGludGVyZmFjZTogYXR0cmlidXRlIG9uaWNlY2FuZGlkYXRlIAotUEFTUyBV
bnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBvbmljZWNhbmRpZGF0ZSBwcm9wZXJ0eSBv
biBSVENQZWVyQ29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBh
dHRyaWJ1dGUgb25zaWduYWxpbmdzdGF0ZWNoYW5nZSAKLVBBU1MgVW5zY29wYWJsZSBoYW5kbGVk
IGNvcnJlY3RseSBmb3Igb25zaWduYWxpbmdzdGF0ZWNoYW5nZSBwcm9wZXJ0eSBvbiBSVENQZWVy
Q29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUg
b25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3Jy
ZWN0bHkgZm9yIG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIHByb3BlcnR5IG9uIFJUQ1BlZXJD
b25uZWN0aW9uIAogUEFTUyBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBv
bmljZWdhdGhlcmluZ3N0YXRlY2hhbmdlIAotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVj
dGx5IGZvciBvbmljZWdhdGhlcmluZ3N0YXRlY2hhbmdlIHByb3BlcnR5IG9uIFJUQ1BlZXJDb25u
ZWN0aW9uIAogRkFJTCBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVh
dGVPZmZlcihSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaywgUlRDUGVlckNvbm5lY3Rpb25F
cnJvckNhbGxiYWNrLCBSVENPZmZlck9wdGlvbnMpIGFzc2VydF90aHJvd3M6IGNhbGxpbmcgb3Bl
cmF0aW9uIHdpdGggdGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJvciBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgZm4uYXBwbHkob2JqLCBhcmdzKTsKICAgICAgICAg
fSIgZGlkIG5vdCB0aHJvdwotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBj
cmVhdGVPZmZlcihSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaywgUlRDUGVlckNvbm5lY3Rp
b25FcnJvckNhbGxiYWNrLCBSVENPZmZlck9wdGlvbnMpIG9uIFJUQ1BlZXJDb25uZWN0aW9uIAog
RkFJTCBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzZXRMb2NhbERlc2Ny
aXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiwgVm9pZEZ1bmN0aW9uLCBSVENQZWVyQ29ubmVj
dGlvbkVycm9yQ2FsbGJhY2spIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVu
Z3RoIGV4cGVjdGVkIDEgYnV0IGdvdCAwCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0
bHkgZm9yIHNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLCBWb2lkRnVu
Y3Rpb24sIFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaykgb24gUlRDUGVlckNvbm5lY3Rp
b24gCiBGQUlMIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZUFu
c3dlcihSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaywgUlRDUGVlckNvbm5lY3Rpb25FcnJv
ckNhbGxiYWNrKSBhc3NlcnRfdGhyb3dzOiBjYWxsaW5nIG9wZXJhdGlvbiB3aXRoIHRoaXMgPSBu
dWxsIGRpZG4ndCB0aHJvdyBUeXBlRXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGZuLmFwcGx5KG9iaiwgYXJncyk7CiAgICAgICAgIH0iIGRpZCBub3QgdGhyb3cKLVBB
U1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3IgY3JlYXRlQW5zd2VyKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkNhbGxiYWNrLCBSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2spIG9u
IFJUQ1BlZXJDb25uZWN0aW9uIAogRkFJTCBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IG9w
ZXJhdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24sIFZvaWRG
dW5jdGlvbiwgUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrKSBhc3NlcnRfZXF1YWxzOiBw
cm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAxIGJ1dCBnb3QgMAotUEFTUyBVbnNj
b3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNz
aW9uRGVzY3JpcHRpb24sIFZvaWRGdW5jdGlvbiwgUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxi
YWNrKSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIEZBSUwgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJm
YWNlOiBvcGVyYXRpb24gYWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSwgVm9pZEZ1bmN0
aW9uLCBSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2spIGFzc2VydF90aHJvd3M6IGNhbGxp
bmcgb3BlcmF0aW9uIHdpdGggdGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJvciBmdW5j
dGlvbiAiZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgZm4uYXBwbHkob2JqLCBhcmdzKTsKICAg
ICAgICAgfSIgZGlkIG5vdCB0aHJvdwotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5
IGZvciBhZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlLCBWb2lkRnVuY3Rpb24sIFJUQ1Bl
ZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaykgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBGQUlMIFJU
Q1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGdldFN0YXRzKE1lZGlhU3RyZWFt
VHJhY2ssIFJUQ1N0YXRzQ2FsbGJhY2ssIFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaykg
YXNzZXJ0X3Rocm93czogY2FsbGluZyBvcGVyYXRpb24gd2l0aCB0aGlzID0gbnVsbCBkaWRuJ3Qg
dGhyb3cgVHlwZUVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBmbi5h
cHBseShvYmosIGFyZ3MpOwogICAgICAgICB9IiBkaWQgbm90IHRocm93Ci1QQVNTIFVuc2NvcGFi
bGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2ssIFJUQ1N0
YXRzQ2FsbGJhY2ssIFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaykgb24gUlRDUGVlckNv
bm5lY3Rpb24gCi1GQUlMIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGdl
bmVyYXRlQ2VydGlmaWNhdGUoQWxnb3JpdGhtSWRlbnRpZmllcikgYXNzZXJ0X293bl9wcm9wZXJ0
eTogaW50ZXJmYWNlIG9iamVjdCBtaXNzaW5nIHN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJv
cGVydHkgImdlbmVyYXRlQ2VydGlmaWNhdGUiIG1pc3NpbmcKLVBBU1MgVW5zY29wYWJsZSBoYW5k
bGVkIGNvcnJlY3RseSBmb3IgZ2VuZXJhdGVDZXJ0aWZpY2F0ZShBbGdvcml0aG1JZGVudGlmaWVy
KSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKK1BBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNl
OiBvcGVyYXRpb24gZ2VuZXJhdGVDZXJ0aWZpY2F0ZShBbGdvcml0aG1JZGVudGlmaWVyKSAKIFBB
U1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0U2VuZGVycygpIAot
UEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBnZXRTZW5kZXJzKCkgb24gUlRD
UGVlckNvbm5lY3Rpb24gCiBQQVNTIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0
aW9uIGdldFJlY2VpdmVycygpIAotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZv
ciBnZXRSZWNlaXZlcnMoKSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIFBBU1MgUlRDUGVlckNvbm5l
Y3Rpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjaywgTWVk
aWFTdHJlYW0pIAotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBhZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrLCBNZWRpYVN0cmVhbSkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQ
QVNTIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIHJlbW92ZVRyYWNrKFJU
Q1J0cFNlbmRlcikgCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIHJlbW92
ZVRyYWNrKFJUQ1J0cFNlbmRlcikgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNTIFJUQ1BlZXJD
b25uZWN0aW9uIGludGVyZmFjZTogYXR0cmlidXRlIG9udHJhY2sgCi1QQVNTIFVuc2NvcGFibGUg
aGFuZGxlZCBjb3JyZWN0bHkgZm9yIG9udHJhY2sgcHJvcGVydHkgb24gUlRDUGVlckNvbm5lY3Rp
b24gCiBQQVNTIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZURh
dGFDaGFubmVsKERPTVN0cmluZywgUlRDRGF0YUNoYW5uZWxJbml0KSAKLVBBU1MgVW5zY29wYWJs
ZSBoYW5kbGVkIGNvcnJlY3RseSBmb3IgY3JlYXRlRGF0YUNoYW5uZWwoRE9NU3RyaW5nLCBSVENE
YXRhQ2hhbm5lbEluaXQpIG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogUEFTUyBSVENQZWVyQ29ubmVj
dGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbmRhdGFjaGFubmVsIAotUEFTUyBVbnNjb3BhYmxl
IGhhbmRsZWQgY29ycmVjdGx5IGZvciBvbmRhdGFjaGFubmVsIHByb3BlcnR5IG9uIFJUQ1BlZXJD
b25uZWN0aW9uIAogRkFJTCBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBk
dG1mIGFzc2VydF90cnVlOiBUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0
eSAiZHRtZiIgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLVBBU1MgVW5zY29wYWJsZSBoYW5kbGVk
IGNvcnJlY3RseSBmb3IgZHRtZiBwcm9wZXJ0eSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIFBBU1Mg
UlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0U3RhdHMoTWVkaWFTdHJl
YW1UcmFjaykgCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIGdldFN0YXRz
KE1lZGlhU3RyZWFtVHJhY2spIG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogRkFJTCBSVENQZWVyQ29u
bmVjdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzZXRJZGVudGl0eVByb3ZpZGVyKERPTVN0cmlu
ZywgRE9NU3RyaW5nLCBET01TdHJpbmcpIGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBw
cm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJv
cGVydHkgInNldElkZW50aXR5UHJvdmlkZXIiIG1pc3NpbmcKLVBBU1MgVW5zY29wYWJsZSBoYW5k
bGVkIGNvcnJlY3RseSBmb3Igc2V0SWRlbnRpdHlQcm92aWRlcihET01TdHJpbmcsIERPTVN0cmlu
ZywgRE9NU3RyaW5nKSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIEZBSUwgUlRDUGVlckNvbm5lY3Rp
b24gaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0SWRlbnRpdHlBc3NlcnRpb24oKSBhc3NlcnRfb3du
X3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMg
b3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJnZXRJZGVudGl0eUFzc2VydGlvbiIgbWlzc2lu
ZwotUEFTUyBVbnNjb3BhYmxlIGhhbmRsZWQgY29ycmVjdGx5IGZvciBnZXRJZGVudGl0eUFzc2Vy
dGlvbigpIG9uIFJUQ1BlZXJDb25uZWN0aW9uIAogRkFJTCBSVENQZWVyQ29ubmVjdGlvbiBpbnRl
cmZhY2U6IGF0dHJpYnV0ZSBwZWVySWRlbnRpdHkgYXNzZXJ0X3RydWU6IFRoZSBwcm90b3R5cGUg
b2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJwZWVySWRlbnRpdHkiIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCi1QQVNTIFVuc2NvcGFibGUgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIHBlZXJJZGVu
dGl0eSBwcm9wZXJ0eSBvbiBSVENQZWVyQ29ubmVjdGlvbiAKIEZBSUwgUlRDUGVlckNvbm5lY3Rp
b24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgaWRwTG9naW5VcmwgYXNzZXJ0X3RydWU6IFRoZSBwcm90
b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJpZHBMb2dpblVybCIgZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKLVBBU1MgVW5zY29wYWJsZSBoYW5kbGVkIGNvcnJlY3RseSBmb3IgaWRw
TG9naW5VcmwgcHJvcGVydHkgb24gUlRDUGVlckNvbm5lY3Rpb24gCiBQQVNTIFJUQ1BlZXJDb25u
ZWN0aW9uIG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgcGMgCiBQQVNTIFN0cmluZ2lmaWNh
dGlvbiBvZiBwYyAKIFBBU1MgUlRDUGVlckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBwYyBtdXN0IGlu
aGVyaXQgcHJvcGVydHkgImNyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucykiIHdpdGggdGhlIHBy
b3BlciB0eXBlIApAQCAtMTY4LDcgKzEyMyw3IEBAIEZBSUwgUlRDUGVlckNvbm5lY3Rpb24gaW50
ZXJmYWNlOiBjYWxsaW5nIGFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUsIFZvaWRGCiBQ
QVNTIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogcGMgbXVzdCBpbmhlcml0IHByb3BlcnR5
ICJnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrLCBSVENTdGF0c0NhbGxiYWNrLCBSVENQZWVyQ29u
bmVjdGlvbkVycm9yQ2FsbGJhY2spIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKIFBBU1MgUlRDUGVl
ckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBjYWxsaW5nIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2ss
IFJUQ1N0YXRzQ2FsbGJhY2ssIFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaykgb24gcGMg
d2l0aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciAKIFBBU1MgUlRDUGVl
ckNvbm5lY3Rpb24gaW50ZXJmYWNlOiBwYyBtdXN0IGluaGVyaXQgcHJvcGVydHkgImdlbmVyYXRl
Q2VydGlmaWNhdGUoQWxnb3JpdGhtSWRlbnRpZmllcikiIHdpdGggdGhlIHByb3BlciB0eXBlIAot
RkFJTCBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6IGNhbGxpbmcgZ2VuZXJhdGVDZXJ0aWZp
Y2F0ZShBbGdvcml0aG1JZGVudGlmaWVyKSBvbiBwYyB3aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11
c3QgdGhyb3cgVHlwZUVycm9yIGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBvYmplY3Qg
bXVzdCBoYXZlIHN0YXRpYyBvcGVyYXRpb24gYXMgb3duIHByb3BlcnR5IGV4cGVjdGVkIHByb3Bl
cnR5ICJnZW5lcmF0ZUNlcnRpZmljYXRlIiBtaXNzaW5nCitQQVNTIFJUQ1BlZXJDb25uZWN0aW9u
IGludGVyZmFjZTogY2FsbGluZyBnZW5lcmF0ZUNlcnRpZmljYXRlKEFsZ29yaXRobUlkZW50aWZp
ZXIpIG9uIHBjIHdpdGggdG9vIGZldyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IgCiBQ
QVNTIFJUQ1BlZXJDb25uZWN0aW9uIGludGVyZmFjZTogcGMgbXVzdCBpbmhlcml0IHByb3BlcnR5
ICJnZXRTZW5kZXJzKCkiIHdpdGggdGhlIHByb3BlciB0eXBlIAogUEFTUyBSVENQZWVyQ29ubmVj
dGlvbiBpbnRlcmZhY2U6IHBjIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZ2V0UmVjZWl2ZXJzKCki
IHdpdGggdGhlIHByb3BlciB0eXBlIAogUEFTUyBSVENQZWVyQ29ubmVjdGlvbiBpbnRlcmZhY2U6
IHBjIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjaywgTWVk
aWFTdHJlYW0pIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3NpbXBsZWNhbGwuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvc2ltcGxlY2FsbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggOWM5MWNhOGM3MDdi
MDI4NjE5N2JhZWMzMGVhMDI4ZTA0NTE2NzBjNy4uMzE1ODU1ODU1ZDFhYjZkOTBjNzYwNWQzOWM3
MTdmMWYxNWVkMjc0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvc2ltcGxlY2FsbC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvc2ltcGxl
Y2FsbC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACiAKIFBBU1MgQ2FuIHNldCB1
cCBhIGJhc2ljIFdlYlJUQyBjYWxsLiAKICAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvc2ltcGxlY2FsbC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvc2lt
cGxlY2FsbC5odHRwcy5odG1sCmluZGV4IDg2NTFmNTQ4NzdkYzU1ZDE0NzIzODZjYzJiNzdkMzEw
Njc0ZmUzOWQuLjY4MWM0MmQ0Y2Q4NTVkY2Y1MzU0M2E3YWRkMjMxZDI2NjVjMzgxYTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L3NpbXBsZWNhbGwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9zaW1wbGVjYWxsLmh0dHBzLmh0bWwKQEAgLTEsMjMgKzEs
MTUgQEAKIDwhZG9jdHlwZSBodG1sPgotPCEtLQotVG8gcnVuIHRoaXMgdGVzdCwgeW91IG11c3Qg
aGF2ZSBhIHdlYmNhbSBhbmQgYSBtaWNyb3Bob25lIG9yIHVzZQotZmFrZSBkZXZpY2VzIGJ5IHNw
ZWNpZnlpbmcKLSAgLS11c2UtZmFrZS1kZXZpY2UtZm9yLW1lZGlhLXN0cmVhbSAtLXVzZS1mYWtl
LXVpLWZvci1tZWRpYS1zdHJlYW0KLWZvciBDaHJvbWUgb3IgYnkgc2V0dGluZyB0aGUKLSAgbWVk
aWEubmF2aWdhdG9yLnN0cmVhbXMuZmFrZQotcHJvcGVydHkgdG8gdHJ1ZSBpbiBGaXJlZm94Lgot
LS0+Ci0KIDxodG1sPgogPGhlYWQ+CiAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgPHRpdGxlPlJUQ1BlZXJDb25u
ZWN0aW9uIENvbm5lY3Rpb24gVGVzdDwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJSVENQZWVyQ29u
bmVjdGlvbi1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiAgIDxkaXYgaWQ9
ImxvZyI+PC9kaXY+CiAgIDxkaXY+Ci0gICAgPHZpZGVvIGlkPSJsb2NhbC12aWV3IiBhdXRvcGxh
eT0iYXV0b3BsYXkiPjwvdmlkZW8+Ci0gICAgPHZpZGVvIGlkPSJyZW1vdGUtdmlldyIgYXV0b3Bs
YXk9ImF1dG9wbGF5Ii8+CisgICAgPHZpZGVvIGlkPSJsb2NhbC12aWV3IiBtdXRlZCBhdXRvcGxh
eT0iYXV0b3BsYXkiPjwvdmlkZW8+CisgICAgPHZpZGVvIGlkPSJyZW1vdGUtdmlldyIgbXV0ZWQg
YXV0b3BsYXk9ImF1dG9wbGF5Ii8+CiAgICAgPC92aWRlbz4KICAgPC9kaXY+CiAKQEAgLTM4LDcg
KzMwLDcgQEAgcHJvcGVydHkgdG8gdHJ1ZSBpbiBGaXJlZm94LgogICAgIHRlc3QuZG9uZSgpOwog
ICB9KTsKIAotICBmdW5jdGlvbiBnZXRVc2VyTWVkaWFPa0NhbGxiYWNrKGxvY2FsU3RyZWFtKSB7
CisgIGZ1bmN0aW9uIGdldE5vaXNlU3RyZWFtT2tDYWxsYmFjayhsb2NhbFN0cmVhbSkgewogICAg
IGdGaXJzdENvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24obnVsbCk7CiAgICAgZ0Zp
cnN0Q29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IG9uSWNlQ2FuZGlkYXRlVG9GaXJzdDsKICAg
ICBsb2NhbFN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKGZ1bmN0aW9uKHRyYWNrKSB7CkBAIC0x
MTEsOCArMTAzLDggQEAgcHJvcGVydHkgdG8gdHJ1ZSBpbiBGaXJlZm94LgogCiAgIC8vIFRoaXMg
ZnVuY3Rpb24gc3RhcnRzIHRoZSB0ZXN0LgogICB0ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZSwgYXVkaW86
IHRydWUgfSkKLSAgICAgIC50aGVuKHRlc3Quc3RlcF9mdW5jKGdldFVzZXJNZWRpYU9rQ2FsbGJh
Y2spLCBmYWlsZWQoJ2dldFVzZXJNZWRpYScpKTsKKyAgICBnZXROb2lzZVN0cmVhbSh7IHZpZGVv
OiB0cnVlLCBhdWRpbzogdHJ1ZSB9KQorICAgICAgLnRoZW4odGVzdC5zdGVwX2Z1bmMoZ2V0Tm9p
c2VTdHJlYW1Pa0NhbGxiYWNrKSwgZmFpbGVkKCdnZXROb2lzZVN0cmVhbScpKTsKICAgfSk7CiA8
L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvdG9vbHMvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvdG9vbHMvUkVBRE1FLm1kCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY4YmMyODRmZGZhNzIyNTY3YzEzNmU2MDAxYWFhNDc2Njg5NDE4YTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90
b29scy9SRUFETUUubWQKQEAgLTAsMCArMSwxNCBAQAorV2ViUlRDIFRvb2xzCis9PT09PT09PT09
PT0KKworVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBzaW1wbGUgTm9kZS5qcyBwcm9qZWN0IHRv
IGFpZCB0aGUgZGV2ZWxvcG1lbnQgb2YKK1dlYlJUQyB0ZXN0cy4KKworIyMgTGludAorCitgYGBi
YXNoCitucG0gcnVuIGxpbnQKK2BgYAorCitEb2VzIGJhc2ljIGxpbnRpbmcgb2YgdGhlIEphdmFT
Y3JpcHQgY29kZS4gTWFpbmx5IGZvciBjYXRjaGluZyB1c2FnZSBvZgordW5kZWZpbmVkIHZhcmlh
Ymxlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL3Rvb2xzL2NvZGVtb2QtcGVlcmNvbm5lY3Rpb24tYWRkY2xlYW51cCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Rvb2xzL2Nv
ZGVtb2QtcGVlcmNvbm5lY3Rpb24tYWRkY2xlYW51cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjA5MjFkMmU0ZWJi
NzRmMjIzN2E2MWEwM2YyOTVhNmJjZDMxMjM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvdG9vbHMvY29kZW1vZC1w
ZWVyY29ubmVjdGlvbi1hZGRjbGVhbnVwCkBAIC0wLDAgKzEsNTggQEAKKy8qIGEgY29kZW1vZCBm
b3IgZW5zdXJpbmcgUlRDUGVlckNvbm5lY3Rpb24gaXMgY2xlYW5lZCB1cCBpbiB0ZXN0cy4KKyAq
IEZvciBlYWNoIGBuZXcgUlRDUGVlckNvbm5lY3Rpb25gIGFkZCBhCisgKiBgdGVzdC5hZGRfY2xl
YW51cCgoKSA9PiBwYy5jbG9zZSgpKWAKKyAqIE9ubHkgYXBwbGllcyBpbiBwcm9taXNlX3Rlc3Rz
IGlmIHRoZXJlIGlzIG5vIGFkZF9jbGVhbnVwIGluIHRoZQorICogdGVzdCBmdW5jdGlvbiBib2R5
LgorICovCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2Zvcm1lcihmaWxlLCBhcGkpIHsK
KyAgY29uc3QgaiA9IGFwaS5qc2NvZGVzaGlmdDsKKyAgcmV0dXJuIGooZmlsZS5zb3VyY2UpCisg
ICAgLy8gZmluZCBlYWNoIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yCisgICAgLmZpbmQo
ai5OZXdFeHByZXNzaW9uLCB7Y2FsbGVlOiB7dHlwZTogJ0lkZW50aWZpZXInLCBuYW1lOiAnUlRD
UGVlckNvbm5lY3Rpb24nfX0pCisKKyAgICAvLyBjaGVjayBpdCBpcyBpbnNpZGUgYSBwcm9taXNl
X3Rlc3QKKyAgICAuZmlsdGVyKHBhdGggPT4geworICAgICAgLy8gaXRlcmF0ZSBwYXJlbnRQYXRo
IHVudGlsIHlvdSBmaW5kIGEgQ2FsbEV4cHJlc3Npb24KKyAgICAgIGxldCBuZXh0UGF0aCA9IHBh
dGgucGFyZW50UGF0aDsKKyAgICAgIHdoaWxlIChuZXh0UGF0aCAmJiBuZXh0UGF0aC52YWx1ZS50
eXBlICE9PSAnQ2FsbEV4cHJlc3Npb24nKSB7CisgICAgICAgIG5leHRQYXRoID0gbmV4dFBhdGgu
cGFyZW50UGF0aDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBuZXh0UGF0aCAmJiBuZXh0UGF0aC52
YWx1ZS5jYWxsZWUubmFtZSA9PT0gJ3Byb21pc2VfdGVzdCc7CisgICAgfSkKKyAgICAvLyBjaGVj
ayB0aGVyZSBpcyBubyBhZGRfY2xlYW51cCBpbiB0aGUgZnVuY3Rpb24gYm9keQorICAgIC5maWx0
ZXIocGF0aCA9PiB7CisgICAgICBsZXQgbmV4dFBhdGggPSBwYXRoLnBhcmVudFBhdGg7CisgICAg
ICB3aGlsZSAobmV4dFBhdGggJiYgbmV4dFBhdGgudmFsdWUudHlwZSAhPT0gJ0NhbGxFeHByZXNz
aW9uJykgeworICAgICAgICBuZXh0UGF0aCA9IG5leHRQYXRoLnBhcmVudFBhdGg7CisgICAgICB9
CisgICAgICBjb25zdCBib2R5ID0gbmV4dFBhdGgudmFsdWUuYXJndW1lbnRzWzBdLmJvZHk7Cisg
ICAgICByZXR1cm4gaihib2R5KS5maW5kKGouSWRlbnRpZmllciwge25hbWU6ICdhZGRfY2xlYW51
cCd9KS5sZW5ndGggPT09IDA7CisgICAgfSkKKyAgICAuZm9yRWFjaChwYXRoID0+IHsKKyAgICAg
IC8vIGl0ZXJhdGUgcGFyZW50UGF0aCB1bnRpbCB5b3UgZmluZCBhIENhbGxFeHByZXNzaW9uCisg
ICAgICBsZXQgbmV4dFBhdGggPSBwYXRoLnBhcmVudFBhdGg7CisgICAgICB3aGlsZSAobmV4dFBh
dGggJiYgbmV4dFBhdGgudmFsdWUudHlwZSAhPT0gJ0NhbGxFeHByZXNzaW9uJykgeworICAgICAg
ICBuZXh0UGF0aCA9IG5leHRQYXRoLnBhcmVudFBhdGg7CisgICAgICB9CisgICAgICBjb25zdCBk
ZWNsYXJhdGlvbiA9IHBhdGgucGFyZW50UGF0aC5wYXJlbnRQYXRoLnBhcmVudFBhdGg7CisgICAg
ICBjb25zdCBwYyA9IHBhdGgucGFyZW50UGF0aC52YWx1ZS5pZDsKKworICAgICAgZGVjbGFyYXRp
b24uaW5zZXJ0QWZ0ZXIoCisgICAgICAgIGouZXhwcmVzc2lvblN0YXRlbWVudCgKKyAgICAgICAg
ICBqLmNhbGxFeHByZXNzaW9uKAorICAgICAgICAgICAgai5tZW1iZXJFeHByZXNzaW9uKAorICAg
ICAgICAgICAgICBuZXh0UGF0aC5ub2RlLmFyZ3VtZW50c1swXS5wYXJhbXNbMF0sCisgICAgICAg
ICAgICAgIGouaWRlbnRpZmllcignYWRkX2NsZWFudXAnKQorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgIFtqLmFycm93RnVuY3Rpb25FeHByZXNzaW9uKFtdLAorICAgICAgICAgICAgICBqLmNh
bGxFeHByZXNzaW9uKAorICAgICAgICAgICAgICAgIGoubWVtYmVyRXhwcmVzc2lvbihwYywgai5p
ZGVudGlmaWVyKCdjbG9zZScpLCBmYWxzZSksCisgICAgICAgICAgICAgICAgW10KKyAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKV0KKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICk7
CisgICAgfSkKKyAgICAudG9Tb3VyY2UoKTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90b29scy9odG1sLWNvZGVtb2Qu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90
b29scy9odG1sLWNvZGVtb2QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzMWU4YzRjNjA1ZjA2MTFjYTEyYzNm
MzcyN2M4OTBhOTM4NDI2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Rvb2xzL2h0bWwtY29kZW1vZC5qcwpAQCAt
MCwwICsxLDM0IEBACisvKgorICogZXh0cmFjdCBzY3JpcHQgY29udGVudCBmcm9tIGEgc2VyaWVz
IG9mIGh0bWwgZmlsZXMsIHJ1biBhCisgKiBqc2NvZGVzaGlmdCBjb2RlbW9kIG9uIHRoZW0gYW5k
IG92ZXJ3cml0ZSB0aGUgb3JpZ2luYWwgZmlsZS4KKyAqCisgKiBVc2FnZTogbm9kZSBodG1sLWNv
ZGVtb2QuanMgY29kZW1vZC1maWxlIGxpc3Qgb2YgZmlsZXMgdG8gcHJvY2VzcworICovCitjb25z
dCB7IEpTRE9NIH0gPSByZXF1aXJlKCdqc2RvbScpOworY29uc3QgZnMgPSByZXF1aXJlKCdmcycp
OworY29uc3Qge2V4ZWNGaWxlU3luY30gPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7CisKK2Nv
bnN0IGNvZGVtb2QgPSBwcm9jZXNzLmFyZ3ZbMl07Citjb25zdCBmaWxlbmFtZXMgPSBwcm9jZXNz
LmFyZ3Yuc2xpY2UoMyk7CitmaWxlbmFtZXMuZm9yRWFjaCgoZmlsZW5hbWUpID0+IHsKKyAgICBj
b25zdCBvcmlnaW5hbENvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUsICd1dGYtOCcp
OworICAgIGNvbnN0IGRvbSA9IG5ldyBKU0RPTShvcmlnaW5hbENvbnRlbnQpOworICAgIGNvbnN0
IGRvY3VtZW50ID0gZG9tLndpbmRvdy5kb2N1bWVudDsKKyAgICBjb25zdCBzY3JpcHRUYWdzID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0Jyk7CisgICAgY29uc3QgbGFzdFRhZyA9
IHNjcmlwdFRhZ3Nbc2NyaXB0VGFncy5sZW5ndGggLSAxXTsKKyAgICBjb25zdCBzY3JpcHQgPSBs
YXN0VGFnLmlubmVySFRNTDsKKyAgICBpZiAoIXNjcmlwdCkgeworICAgICAgICBjb25zb2xlLmxv
ZygnTk8gU0NSSVBUIEZPVU5EJywgZmlsZW5hbWUpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNvbnN0IHNjcmlwdEZpbGVuYW1lID0gZmlsZW5hbWUgKyAnLmNvZGVtb2QuanMnOworICAg
IGNvbnN0IHNjcmlwdEZpbGUgPSBmcy53cml0ZUZpbGVTeW5jKHNjcmlwdEZpbGVuYW1lLCBzY3Jp
cHQpOworICAgIC8vIGV4ZWMganNjb2Rlc2hpZnQKKyAgICBjb25zdCBvdXRwdXQgPSBleGVjRmls
ZVN5bmMoJy4vbm9kZV9tb2R1bGVzLy5iaW4vanNjb2Rlc2hpZnQnLCBbJy10JywgY29kZW1vZCwg
c2NyaXB0RmlsZW5hbWVdKTsKKyAgICBjb25zb2xlLmxvZyhmaWxlbmFtZSwgb3V0cHV0LnRvU3Ry
aW5nKCkpOyAvLyBvdXRwdXQganNjb2Rlc2hpZnQgb3V0cHV0LgorICAgIC8vIHJlYWQgYmFjayBm
aWxlLCByZXN1YnN0aXR1dGUKKyAgICBjb25zdCBuZXdTY3JpcHQgPSBmcy5yZWFkRmlsZVN5bmMo
c2NyaXB0RmlsZW5hbWUsICd1dGYtOCcpLnRvU3RyaW5nKCk7CisgICAgY29uc3QgbW9kaWZpZWRD
b250ZW50ID0gb3JpZ2luYWxDb250ZW50LnNwbGl0KHNjcmlwdCkuam9pbihuZXdTY3JpcHQpOwor
ICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZW5hbWUsIG1vZGlmaWVkQ29udGVudCk7CisgICAgZnMu
dW5saW5rU3luYyhzY3JpcHRGaWxlbmFtZSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Rvb2xzL3BhY2thZ2UuanNv
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL3Rv
b2xzL3BhY2thZ2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGMxY2ZkYTNlODE4YWVlZDUzOTg3OGQ4ZWY2
N2VjMmRkOTkxNjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvdG9vbHMvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEs
MTYgQEAKK3sKKyAgIm5hbWUiOiAid2VicnRjLXRlc3RpbmctdG9vbHMiLAorICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICJkZXNjcmlwdGlvbiI6ICJUb29scyBmb3IgV2ViUlRDIHRlc3RpbmciLAor
ICAic2NyaXB0cyI6IHsKKyAgICAibGludCI6ICJlc2xpbnQgLWMgLmVzbGludHJjLmpzIC4uLyou
aHRtbCAuLi8qLmpzIgorICB9LAorICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJlc2xpbnQi
OiAiXjQuMTEuMCIsCisgICAgImVzbGludC1wbHVnaW4taHRtbCI6ICJeNC4wLjAiLAorICAgICJq
c2NvZGVzaGlmdCI6ICJeMC41LjEiLAorICAgICJqc2RvbSI6ICJeMTEuMTEuMCIKKyAgfSwKKyAg
ImxpY2Vuc2UiOiAiQlNEIiwKKyAgInByaXZhdGUiOiB0cnVlCit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90b29scy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL3Rvb2xzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZDc3OTExYzgzNjM5YTc0
ODAxYmZlYWVjMWU1M2ZmNGNjZGZlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90b29scy93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDIwIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90b29scy9SRUFETUUubWQKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90b29scy9jb2RlbW9kLXBlZXJjb25u
ZWN0aW9uLWFkZGNsZWFudXAKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy90b29scy9odG1sLWNvZGVtb2QuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy90b29scy9wYWNrYWdlLmpzb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvdzNjLWltcG9ydC5sb2cKaW5kZXggZmI5YmVhZWFiYWUyNTM0M2VmZmE5M2M2
OGNhYjk4NWI1NTUyM2Y0Yy4uNzU3MWY5YTRlY2I5ODU1ZjMzN2E3N2I0NWJmNjcwNWNkN2Q5Zjdm
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvdzNjLWltcG9ydC5sb2cKQEAgLTEsNyArMSw3IEBACiBU
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KIERvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgog
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCisJaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKIAogVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKIApAQCAtMTQsNyArMTQsNyBAQCBQ
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9PV05FUlMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9NRVRBLnltbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0NlcnRpZmljYXRlLmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENDb25maWd1cmF0
aW9uLWJ1bmRsZVBvbGljeS5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMvUlRDQ29uZmlndXJhdGlvbi1oZWxwZXIuanMKQEAgLTMyLDE5ICsz
MiwyMyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ0RhdGFDaGFubmVsRXZlbnQtY29uc3RydWN0b3IuaHRtbAog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ0R0
bHNUcmFuc3BvcnQtZ2V0UmVtb3RlQ2VydGlmaWNhdGVzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENJY2VDYW5kaWRhdGUtY29uc3Ry
dWN0b3IuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ0ljZVRyYW5zcG9ydC1leHRlbnNpb24taGVscGVyLmpzCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDSWNlVHJhbnNwb3J0LWV4
dGVuc2lvbi5odHRwcy5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDSWNlVHJhbnNwb3J0Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGQtdHJh
Y2stbm8tZGVhZGxvY2suaHR0cHMuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZEljZUNhbmRpZGF0ZS5o
dG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMv
UlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhY2suaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRy
YW5zY2VpdmVyLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci5odHRwcy5odG1sCiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVl
ckNvbm5lY3Rpb24tY2FuVHJpY2tsZUljZUNhbmRpZGF0ZXMuaHRtbAogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWNv
bm5lY3Rpb25TdGF0ZS5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY29uc3RydWN0b3IuaHRtbAogL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25u
ZWN0aW9uLWNyZWF0ZUFuc3dlci5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlRGF0YUNoYW5uZWwu
aHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLW9mZmVyVG9SZWNlaXZlLmh0bWwKIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1jcmVhdGVPZmZlci5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tZ2VuZXJhdGVDZXJ0aWZpY2F0
ZS5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvUlRDUGVlckNvbm5lY3Rpb24tZ2V0RGVmYXVsdEljZVNlcnZlcnMuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0
aW9uLWdldElkZW50aXR5QXNzZXJ0aW9uLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1nZXRJZGVudGl0eUFz
c2VydGlvbi5zdWIuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWdldFN0YXRzLmh0dHBzLmh0bWwKIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1nZXRUcmFuc2NlaXZlcnMuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWhlbHBlci5qcwpAQCAt
NTQsNiArNTgsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLW9ubmVnb3RpYXRpb25u
ZWVkZWQuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLW9udHJhY2suaHR0cHMuaHRtbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9u
LXBlZXJJZGVudGl0eS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tcmVtb3RlLXRyYWNrLW11dGUuaHR0cHMu
aHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
L1JUQ1BlZXJDb25uZWN0aW9uLXJlbW92ZVRyYWNrLmh0dHBzLmh0bWwKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1z
ZXREZXNjcmlwdGlvbi10cmFuc2NlaXZlci5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNj
cmlwdGlvbi1hbnN3ZXIuaHRtbApAQCAtNjQsOSArNjksMTYgQEAgTGlzdCBvZiBmaWxlczoKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVy
Q29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1hbnN3ZXIuaHRtbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9u
LXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVE
ZXNjcmlwdGlvbi1wcmFuc3dlci5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRp
b24tcmVwbGFjZVRyYWNrLmh0dHBzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlw
dGlvbi1yb2xsYmFjay5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tdHJh
Y2tzLmh0dHBzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi5odG1sCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVl
ckNvbm5lY3Rpb24tdHJhY2stc3RhdHMuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLXRyYW5zY2Vp
dmVycy5odHRwcy5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC1jb25zdHJ1Y3Rvci5odG1sCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUXVp
Y1N0cmVhbS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvUlRDUXVpY1RyYW5zcG9ydC1oZWxwZXIuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENRdWljVHJhbnNwb3J0Lmh0
dHBzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENSdHBDYXBhYmlsaXRpZXMtaGVscGVyLmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUGFyYW1ldGVycy1jb2RlY3MuaHRt
bAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1J0cFBhcmFtZXRlcnMtZGVncmFkYXRpb25QcmVmZXJlbmNlLmh0bWwKQEAgLTgyLDE5ICs5NCwy
MSBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN5bmNocm9uaXphdGlvblNvdXJjZXMu
aHR0cHMuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1J0cFNlbmRlci1nZXRDYXBhYmlsaXRpZXMuaHRtbAogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1nZXRTdGF0
cy5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUnRwU2VuZGVyLXJlcGxhY2VUcmFjay5odG1sCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLXJlcGxhY2VU
cmFjay5odHRwcy5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLXNldFBhcmFtZXRlcnMuaHRtbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVy
LXNldENvZGVjUHJlZmVyZW5jZXMuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVyLXNldERpcmVjdGlvbi5odG1s
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRD
UnRwVHJhbnNjZWl2ZXIuaHR0cHMuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1NjdHBUcmFuc3BvcnQtY29uc3RydWN0b3IuaHRtbAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1Nj
dHBUcmFuc3BvcnQtbWF4TWVzc2FnZVNpemUuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1N0YXRzLWhlbHBlci5qcwogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1RyYWNrRXZlbnQt
Y29uc3RydWN0b3IuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL2RhdGFjaGFubmVsLWVtcHR5c3RyaW5nLmh0bWwKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9kaWN0aW9uYXJ5LWhlbHBlci5q
cwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL2dl
dHN0YXRzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy9oaXN0b3JpY2FsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy9pZGVudGl0eS1oZWxwZXIuanMKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9pbnRlcmZhY2VzLmh0dHBzLmh0bWwK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9pZGVu
dGl0eS1oZWxwZXIuc3ViLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuanMKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9uby1tZWRpYS1jYWxsLmh0bWwK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9wcm9t
aXNlcy1jYWxsLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy9zaW1wbGVjYWxsLmh0dHBzLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>