<?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>167881</bug_id>
          
          <creation_ts>2017-02-06 08:52:02 -0800</creation_ts>
          <short_desc>Re-sync html/browsers/origin/cross-origin-objects tests</short_desc>
          <delta_ts>2017-02-06 09:48:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>167647</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1273578</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-06 08:52:02 -0800</bug_when>
    <thetext>Re-sync html/browsers/origin/cross-origin-objects tests from a052787d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273580</commentid>
    <comment_count>1</comment_count>
      <attachid>300725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-06 08:53:11 -0800</bug_when>
    <thetext>Created attachment 300725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273608</commentid>
    <comment_count>2</comment_count>
      <attachid>300725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-06 09:48:32 -0800</bug_when>
    <thetext>Comment on attachment 300725
Patch

Clearing flags on attachment: 300725

Committed r211732: &lt;http://trac.webkit.org/changeset/211732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273609</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-06 09:48:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300725</attachid>
            <date>2017-02-06 08:53:11 -0800</date>
            <delta_ts>2017-02-06 09:48:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167881-20170206085052.patch</filename>
            <type>text/plain</type>
            <size>48507</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjc2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCBiOTI3YjIxMjk1MTdjMWVlNjMwYThmNWM0MTAyNzU0ODgzY2ZmZWU1Li4zMjA5ODI2M2Yz
OWFjMzdkMDg0MzJjZWQ5M2M1ZTZjNjg1Y2Q3NTdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlLXN5bmMgaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mt
b3JpZ2luLW9iamVjdHMgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2Nzg4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlLXN5bmMgaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMgdGVzdHMgZnJvbSB1cHN0cmVhbSBhMDUyNzg3ZC4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9z
cy1vcmlnaW4tb2JqZWN0cy1leGNlcHRpb25zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZXhjZXB0aW9ucy5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1v
cmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2ZyYW1lLmh0
bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL3czYy1pbXBvcnQubG9nOgorCiAyMDE3LTAyLTAzICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IHdlYi1wbGF0
Zm9ybS10ZXN0cy9oci10aW1lIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdp
bi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1leGNlcHRp
b25zLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEzMDk0YTMy
NGU4ZGIxMjhhYmE2ZTIxZmM0MzQ1MjBiOWU2YWRiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMjIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzODA6IEJsb2NrZWQgYSBmcmFt
ZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBmcm9tIGFjY2Vzc2luZyBhIGZy
YW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjg4MDAiLiBQcm90b2NvbHMsIGRvbWFp
bnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzODA6IEJs
b2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBmcm9tIGFj
Y2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjg4MDAiLiBQcm90
b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotCi1QQVNTIEJhc2ljIHNhbml0
eS1jaGVja2luZyAKLVBBU1MgT25seSB3aGl0ZWxpc3RlZCBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3Np
YmxlIGNyb3NzLW9yaWdpbiAKLVBBU1MgW1tHZXRQcm90b3R5cGVPZl1dIHNob3VsZCByZXR1cm4g
bnVsbCAKLVBBU1MgW1tTZXRQcm90b3R5cGVPZl1dIHNob3VsZCB0aHJvdyAKLVBBU1MgW1tJc0V4
dGVuc2libGVdXSBzaG91bGQgcmV0dXJuIHRydWUgZm9yIGNyb3NzLW9yaWdpbiBvYmplY3RzIAot
RkFJTCBbW1ByZXZlbnRFeHRlbnNpb25zXV0gc2hvdWxkIHRocm93IGZvciBjcm9zcy1vcmlnaW4g
b2JqZWN0cyBhc3NlcnRfdGhyb3dzOiBwcmV2ZW50RXh0ZW5zaW9ucyBvbiBjcm9zcy1vcmlnaW4g
TG9jYXRpb24gc2hvdWxkIHRocm93IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IE9iamVjdC5wcmV2
ZW50RXh0ZW5zaW9ucyhDLmxvY2F0aW9uKSB9IiB0aHJldyBvYmplY3QgIlNlY3VyaXR5RXJyb3Ig
KERPTSBFeGNlcHRpb24gMTgpOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvci4uLiIgKCJTZWN1cml0
eUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikKLVBBU1Mg
W1tHZXRPd25Qcm9wZXJ0eV1dIC0gUHJvcGVydGllcyBvbiBjcm9zcy1vcmlnaW4gb2JqZWN0cyBz
aG91bGQgYmUgcmVwb3J0ZWQgfG93bnwgCi1QQVNTIFtbR2V0T3duUHJvcGVydHldXSAtIFByb3Bl
cnR5IGRlc2NyaXB0b3JzIGZvciBjcm9zcy1vcmlnaW4gcHJvcGVydGllcyBzaG91bGQgYmUgc2V0
IHVwIGNvcnJlY3RseSAKLVBBU1MgW1tEZWxldGVdXSBTaG91bGQgdGhyb3cgb24gY3Jvc3Mtb3Jp
Z2luIG9iamVjdHMgCi1QQVNTIFtbRGVmaW5lT3duUHJvcGVydHldXSBTaG91bGQgdGhyb3cgZm9y
IGNyb3NzLW9yaWdpbiBvYmplY3RzIAotUEFTUyBbW0VudW1lcmF0ZV1dIHNob3VsZCByZXR1cm4g
YW4gZW1wdHkgaXRlcmF0b3IgCi1QQVNTIFtbT3duUHJvcGVydHlLZXlzXV0gc2hvdWxkIHJldHVy
biBhbGwgcHJvcGVydGllcyBmcm9tIGNyb3NzLW9yaWdpbiBvYmplY3RzIAotUEFTUyBBIGFuZCBC
IGpvaW50bHkgb2JzZXJ2ZSB0aGUgc2FtZSBpZGVudGl0eSBmb3IgY3Jvc3Mtb3JpZ2luIFdpbmRv
dyBhbmQgTG9jYXRpb24gCi1QQVNTIENyb3NzLW9yaWdpbiBmdW5jdGlvbnMgZ2V0IGxvY2FsIEZ1
bmN0aW9uLnByb3RvdHlwZSAKLVBBU1MgQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3NvcnMgZ2V0
IGxvY2FsIEZ1bmN0aW9uLnByb3RvdHlwZSAKLVBBU1MgU2FtZS1vcmlnaW4gb2JzZXJ2ZXJzIGdl
dCBkaWZmZXJlbnQgZnVuY3Rpb25zIGZvciBjcm9zcy1vcmlnaW4gb2JqZWN0cyAKLVBBU1MgU2Ft
ZS1vcmlnaW4gb2JzZXJ2ZXJzIGdldCBkaWZmZXJlbnQgYWNjZXNzb3JzIGZvciBjcm9zcy1vcmln
aW4gV2luZG93IAotUEFTUyBTYW1lLW9yaWdpbiBvYnNlcnZlcnMgZ2V0IGRpZmZlcmVudCBhY2Nl
c3NvcnMgZm9yIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiAKLSAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZXhjZXB0aW9ucy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1leGNl
cHRpb25zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMTA4NDhkNzU3ZDQ0
NGQwMTllOWNkMjZhNmNmMGQxMDA0NTA2NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmln
aW4tb2JqZWN0cy1leGNlcHRpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBA
QAotPCEtLSAgT25jZSBtb3N0IGJyb3dzZXJzIHBhc3MgdGhpcyB0ZXN0IGl0IGNhbiByZXBsYWNl
IGNyb3NzLW9yaWdpbi1vYmplY3RzLmh0bWwuIEl0IGlzIG1lYW50IHRvIGJlCi0gICAgIGlkZW50
aWNhbCAocGxlYXNlIHZlcmlmeSksIGV4Y2VwdCBmb3IgYWxzbyBjaGVja2luZyB0aGF0IHRoZSBl
eGNlcHRpb25zIGFyZSBjb3JyZWN0LiAgLS0+Ci08IWRvY3R5cGUgaHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Ci08bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLTx0aXRsZT5D
cm9zcy1vcmlnaW4gYmVoYXZpb3Igb2YgV2luZG93IGFuZCBMb2NhdGlvbjwvdGl0bGU+Ci08bGlu
ayByZWw9ImF1dGhvciIgdGl0bGU9IkJvYmJ5IEhvbGxleSAoOmJob2xsZXkpIiBocmVmPSJib2Ji
eWhvbGxleUBnbWFpbC5jb20iPgotPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS8jc2VjdXJpdHktd2luZG93Ij4KLTxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvI3NlY3Vy
aXR5LWxvY2F0aW9uIj4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3Nj
cmlwdD4KLTxkaXYgaWQ9bG9nPjwvZGl2PgotPGlmcmFtZSBpZD0iQiI+PC9pZnJhbWU+Ci08aWZy
YW1lIGlkPSJDIj48L2lmcmFtZT4KLTxzY3JpcHQ+Ci0vKgotICogU2V0dXAgYm9pbGVycGxhdGUu
IFRoaXMgZ2l2ZXMgdXMgYSBzYW1lLW9yaWdpbiB3aW5kb3cgIkIiIGFuZCBhIGNyb3NzLW9yaWdp
bgotICogd2luZG93ICJDIi4KLSAqLwotdmFyIGhvc3RfaW5mbyA9IGdldF9ob3N0X2luZm8oKTsK
LQotc2V0dXAoe2V4cGxpY2l0X2RvbmU6IHRydWV9KTsKLXBhdGggPSBsb2NhdGlvbi5wYXRobmFt
ZS5zdWJzdHJpbmcoMCwgbG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKSkgKyAnL2Zy
YW1lLmh0bWwnOwotdmFyIEIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQicpLmNvbnRlbnRX
aW5kb3c7Ci12YXIgQyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdDJykuY29udGVudFdpbmRv
dzsKLUIuZnJhbWVFbGVtZW50LnVyaVRvTG9hZCA9IHBhdGg7Ci1DLmZyYW1lRWxlbWVudC51cmlU
b0xvYWQgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOICsgcGF0aDsKLQotZnVu
Y3Rpb24gcmVsb2FkU3ViZnJhbWVzKGNiKSB7Ci0gIHZhciBpZnJhbWVzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpOwotICBpZnJhbWVzLmZvckVhY2ggPSBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaDsKLSAgdmFyIGNvdW50ID0gMDsKLSAgZnVuY3Rpb24gZnJhbWVMb2Fk
ZWQoKSB7Ci0gICAgdGhpcy5vbmxvYWQgPSBudWxsOwotICAgIGlmICgrK2NvdW50ID09IGlmcmFt
ZXMubGVuZ3RoKQotICAgICAgY2IoKTsKLSAgfQotICBpZnJhbWVzLmZvckVhY2goZnVuY3Rpb24o
aWZyKSB7IGlmci5vbmxvYWQgPSBmcmFtZUxvYWRlZDsgaWZyLnNldEF0dHJpYnV0ZSgnc3JjJywg
aWZyLnVyaVRvTG9hZCk7IH0pOwotfQotZnVuY3Rpb24gaXNPYmplY3QoeCkgeyByZXR1cm4gT2Jq
ZWN0KHgpID09PSB4OyB9Ci0KLS8qCi0gKiBOb3RlOiB3ZSBlc2NoZXcgYXNzZXJ0X2VxdWFscyBp
biBhIGxvdCBvZiB0aGVzZSB0ZXN0cywgc2luY2UgdGhlIGhhcm5lc3MgZW5kcwotICogdXAgdGhy
b3dpbmcgd2hlbiBpdCB0cmllcyB0byBmb3JtYXQgYSBtZXNzYWdlIGludm9sdmluZyBhIGNyb3Nz
LW9yaWdpbiBvYmplY3QuCi0gKi8KLQotdmFyIHRlc3RMaXN0ID0gW107Ci1mdW5jdGlvbiBhZGRU
ZXN0KGZ1biwgZGVzYykgeyB0ZXN0TGlzdC5wdXNoKFtmdW4sIGRlc2NdKTsgfQotCi0KLS8qCi0g
KiBCYXNpYyBzYW5pdHkgdGVzdGluZy4KLSAqLwotCi1hZGRUZXN0KGZ1bmN0aW9uKCkgewotICAv
LyBOb3RlOiB3ZSBkbyBub3QgY2hlY2sgbG9jYXRpb24uaG9zdCBhcyBpdHMgZGVmYXVsdCBwb3J0
IHNlbWFudGljcyBhcmUgaGFyZCB0byByZWZsZWN0IHN0YXRpY2FsbHkKLSAgYXNzZXJ0X2VxdWFs
cyhsb2NhdGlvbi5ob3N0bmFtZSwgaG9zdF9pbmZvLk9SSUdJTkFMX0hPU1QsICdOZWVkIHRvIHJ1
biB0aGUgdG9wLWxldmVsIHRlc3QgZnJvbSBkb21haW4gJyArIGhvc3RfaW5mby5PUklHSU5BTF9I
T1NUKTsKLSAgYXNzZXJ0X2VxdWFscyhnZXRfcG9ydChsb2NhdGlvbiksIGhvc3RfaW5mby5IVFRQ
X1BPUlQsICdOZWVkIHRvIHJ1biB0aGUgdG9wLWxldmVsIHRlc3QgZnJvbSBwb3J0ICcgKyBob3N0
X2luZm8uSFRUUF9QT1JUKTsKLSAgYXNzZXJ0X2VxdWFscyhCLnBhcmVudCwgd2luZG93LCAid2lu
ZG93LnBhcmVudCB3b3JrcyBzYW1lLW9yaWdpbiIpOwotICBhc3NlcnRfZXF1YWxzKEMucGFyZW50
LCB3aW5kb3csICJ3aW5kb3cucGFyZW50IHdvcmtzIGNyb3NzLW9yaWdpbiIpOwotICBhc3NlcnRf
ZXF1YWxzKEIubG9jYXRpb24ucGF0aG5hbWUsIHBhdGgsICJsb2NhdGlvbi5ocmVmIHdvcmtzIHNh
bWUtb3JpZ2luIik7Ci0gIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigp
IHsgQy5sb2NhdGlvbi5wYXRobmFtZTsgfSwgImxvY2F0aW9uLnBhdGhuYW1lIHRocm93cyBjcm9z
cy1vcmlnaW4iKTsKLSAgYXNzZXJ0X2VxdWFscyhCLmZyYW1lcywgJ292ZXJyaWRlJywgIk92ZXJy
aWRlcyB2aXNpYmxlIGluIHRoZSBzYW1lLW9yaWdpbiBjYXNlIik7Ci0gIGFzc2VydF9lcXVhbHMo
Qy5mcmFtZXMsIEMsICJPdmVycmlkZXMgaW52aXNpYmxlIGluIHRoZSBjcm9zcy1vcmlnaW4gY2Fz
ZSIpOwotfSwgIkJhc2ljIHNhbml0eS1jaGVja2luZyIpOwotCi0vKgotICogV2hpdGVsaXN0IGJl
aGF2aW9yLgotICoKLSAqIEFsc28gdGVzdHMgZm9yIFtbR2V0T3duUHJvcGVydHldXSBhbmQgW1tI
YXNPd25Qcm9wZXJ0eV1dIGJlaGF2aW9yLgotICovCi0KLXZhciB3aGl0ZWxpc3RlZFdpbmRvd1By
b3BzID0gWydsb2NhdGlvbicsICdwb3N0TWVzc2FnZScsICd3aW5kb3cnLCAnZnJhbWVzJywgJ3Nl
bGYnLCAndG9wJywgJ3BhcmVudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3Bl
bmVyJywgJ2Nsb3NlZCcsICdjbG9zZScsICdibHVyJywgJ2ZvY3VzJywgJ2xlbmd0aCddOwotYWRk
VGVzdChmdW5jdGlvbigpIHsKLSAgZm9yICh2YXIgcHJvcCBpbiB3aW5kb3cpIHsKLSAgICBpZiAo
d2hpdGVsaXN0ZWRXaW5kb3dQcm9wcy5pbmRleE9mKHByb3ApICE9IC0xKSB7Ci0gICAgICBDW3By
b3BdOyAvLyBTaG91bGRuJ3QgdGhyb3cuCi0gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEMsIHByb3ApOyAvLyBTaG91bGRuJ3QgdGhyb3cuCi0gICAgICBhc3NlcnRfdHJ1ZShP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQywgcHJvcCksICJoYXNPd25Qcm9w
ZXJ0eSBmb3IgIiArIHByb3ApOwotICAgIH0gZWxzZSB7Ci0gICAgICBhc3NlcnRfdGhyb3dzKCJT
ZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IENbcHJvcF07IH0sICJTaG91bGQgdGhyb3cgd2hl
biBhY2Nlc3NpbmcgIiArIHByb3AgKyAiIG9uIFdpbmRvdyIpOwotICAgICAgYXNzZXJ0X3Rocm93
cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEMsIHByb3ApOyB9LAotICAgICAgICAgICAgICAgICAgICAiU2hvdWxkIHRocm93IHdo
ZW4gYWNjZXNzaW5nIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yICIgKyBwcm9wICsgIiBvbiBXaW5k
b3ciKTsKLSAgICAgIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsg
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEMsIHByb3ApOyB9LAotICAgICAg
ICAgICAgICAgICAgICAiU2hvdWxkIHRocm93IHdoZW4gaW52b2tpbmcgaGFzT3duUHJvcGVydHkg
Zm9yICIgKyBwcm9wICsgIiBvbiBXaW5kb3ciKTsKLSAgICB9Ci0gICAgaWYgKHByb3AgIT0gJ2xv
Y2F0aW9uJykKLSAgICAgIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigp
IHsgQ1twcm9wXSA9IHVuZGVmaW5lZDsgfSwgIlNob3VsZCB0aHJvdyB3aGVuIHdyaXRpbmcgdG8g
IiArIHByb3AgKyAiIG9uIFdpbmRvdyIpOwotICB9Ci0gIGZvciAodmFyIHByb3AgaW4gbG9jYXRp
b24pIHsKLSAgICBpZiAocHJvcCA9PSAncmVwbGFjZScpIHsKLSAgICAgIEMubG9jYXRpb25bcHJv
cF07IC8vIFNob3VsZG4ndCB0aHJvdy4KLSAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoQy5sb2NhdGlvbiwgcHJvcCk7IC8vIFNob3VsZG4ndCB0aHJvdy4KLSAgICAgIGFzc2Vy
dF90cnVlKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChDLmxvY2F0aW9uLCBw
cm9wKSwgImhhc093blByb3BlcnR5IGZvciAiICsgcHJvcCk7Ci0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgYXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBDW3Byb3Bd
OyB9LCAiU2hvdWxkIHRocm93IHdoZW4gYWNjZXNzaW5nICIgKyBwcm9wICsgIiBvbiBMb2NhdGlv
biIpOwotICAgICAgYXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMsIHByb3ApOyB9LAotICAgICAgICAgICAg
ICAgICAgICAiU2hvdWxkIHRocm93IHdoZW4gYWNjZXNzaW5nIHByb3BlcnR5IGRlc2NyaXB0b3Ig
Zm9yICIgKyBwcm9wICsgIiBvbiBMb2NhdGlvbiIpOwotICAgICAgYXNzZXJ0X3Rocm93cygiU2Vj
dXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwoQywgcHJvcCk7IH0sCi0gICAgICAgICAgICAgICAgICAgICJTaG91bGQgdGhyb3cgd2hl
biBpbnZva2luZyBoYXNPd25Qcm9wZXJ0eSBmb3IgIiArIHByb3AgKyAiIG9uIExvY2F0aW9uIik7
Ci0gICAgfQotICAgIGlmIChwcm9wICE9ICdocmVmJykKLSAgICAgIGFzc2VydF90aHJvd3MoIlNl
Y3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgQ1twcm9wXSA9IHVuZGVmaW5lZDsgfSwgIlNob3Vs
ZCB0aHJvdyB3aGVuIHdyaXRpbmcgdG8gIiArIHByb3AgKyAiIG9uIExvY2F0aW9uIik7Ci0gIH0K
LX0sICJPbmx5IHdoaXRlbGlzdGVkIHByb3BlcnRpZXMgYXJlIGFjY2Vzc2libGUgY3Jvc3Mtb3Jp
Z2luIik7Ci0KLS8qCi0gKiBFUyBJbnRlcm5hbCBNZXRob2RzLgotICovCi0KLS8qCi0gKiBbW0dl
dFByb3RvdHlwZU9mXV0KLSAqLwotYWRkVGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3RydWUo
T2JqZWN0LmdldFByb3RvdHlwZU9mKEMpID09PSBudWxsLCAiY3Jvc3Mtb3JpZ2luIFdpbmRvdyBw
cm90byBpcyBudWxsIik7Ci0gIGFzc2VydF90cnVlKE9iamVjdC5nZXRQcm90b3R5cGVPZihDLmxv
Y2F0aW9uKSA9PT0gbnVsbCwgImNyb3NzLW9yaWdpbiBMb2NhdGlvbiBwcm90byBpcyBudWxsIChf
X3Byb3RvX18pIik7Ci0gIHZhciBwcm90b0dldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLmdldDsKLSAgYXNzZXJ0X3Ry
dWUocHJvdG9HZXR0ZXIuY2FsbChDKSA9PT0gbnVsbCwgImNyb3NzLW9yaWdpbiBXaW5kb3cgcHJv
dG8gaXMgbnVsbCIpOwotICBhc3NlcnRfdHJ1ZShwcm90b0dldHRlci5jYWxsKEMubG9jYXRpb24p
ID09PSBudWxsLCAiY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIHByb3RvIGlzIG51bGwgKF9fcHJvdG9f
XykiKTsKLSAgYXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBDLl9f
cHJvdG9fXzsgfSwgIl9fcHJvdG9fXyBwcm9wZXJ0eSBub3QgYXZhaWxhYmxlIGNyb3NzLW9yaWdp
biIpOwotICBhc3NlcnRfdGhyb3dzKCJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IEMubG9j
YXRpb24uX19wcm90b19fOyB9LCAiX19wcm90b19fIHByb3BlcnR5IG5vdCBhdmFpbGFibGUgY3Jv
c3Mtb3JpZ2luIik7Ci0KLX0sICJbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxkIHJldHVybiBudWxs
Iik7Ci0KLS8qCi0gKiBbW1NldFByb3RvdHlwZU9mXV0KLSAqLwotYWRkVGVzdChmdW5jdGlvbigp
IHsKLSAgYXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBDLl9fcHJv
dG9fXyA9IG5ldyBPYmplY3QoKTsgfSwgInByb3RvIHNldCBvbiBjcm9zcy1vcmlnaW4gV2luZG93
Iik7Ci0gIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgQy5sb2Nh
dGlvbi5fX3Byb3RvX18gPSBuZXcgT2JqZWN0KCk7IH0sICJwcm90byBzZXQgb24gY3Jvc3Mtb3Jp
Z2luIExvY2F0aW9uIik7Ci0gIHZhciBzZXR0ZXJzID0gW09iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldF07Ci0gIGlmIChPYmpl
Y3Quc2V0UHJvdG90eXBlT2YpCi0gICAgc2V0dGVycy5wdXNoKGZ1bmN0aW9uKHApIHsgT2JqZWN0
LnNldFByb3RvdHlwZU9mKHRoaXMsIHApOyB9KTsKLSAgc2V0dGVycy5mb3JFYWNoKGZ1bmN0aW9u
KHByb3RvU2V0dGVyKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsgcHJvdG9TZXR0ZXIuY2FsbChDLCBuZXcgT2JqZWN0KCkpOyB9LCAicHJvdG8gc2V0dGVy
IHxjYWxsfCBvbiBjcm9zcy1vcmlnaW4gV2luZG93Iik7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsgcHJvdG9TZXR0ZXIuY2FsbChDLmxvY2F0aW9uLCBuZXcg
T2JqZWN0KCkpOyB9LCAicHJvdG8gc2V0dGVyIHxjYWxsfCBvbiBjcm9zcy1vcmlnaW4gTG9jYXRp
b24iKTsKLSAgfSk7Ci19LCAiW1tTZXRQcm90b3R5cGVPZl1dIHNob3VsZCB0aHJvdyIpOwotCi0v
KgotICogW1tJc0V4dGVuc2libGVdXQotICovCi1hZGRUZXN0KGZ1bmN0aW9uKCkgewotICBhc3Nl
cnRfdHJ1ZShPYmplY3QuaXNFeHRlbnNpYmxlKEMpLCAiY3Jvc3Mtb3JpZ2luIFdpbmRvdyBzaG91
bGQgYmUgZXh0ZW5zaWJsZSIpOwotICBhc3NlcnRfdHJ1ZShPYmplY3QuaXNFeHRlbnNpYmxlKEMu
bG9jYXRpb24pLCAiY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIHNob3VsZCBiZSBleHRlbnNpYmxlIik7
Ci19LCAiW1tJc0V4dGVuc2libGVdXSBzaG91bGQgcmV0dXJuIHRydWUgZm9yIGNyb3NzLW9yaWdp
biBvYmplY3RzIik7Ci0KLS8qCi0gKiBbW1ByZXZlbnRFeHRlbnNpb25zXV0KLSAqLwotYWRkVGVz
dChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKEMpIH0sCi0gICAgICAgICAgICAgICAgInByZXZl
bnRFeHRlbnNpb25zIG9uIGNyb3NzLW9yaWdpbiBXaW5kb3cgc2hvdWxkIHRocm93Iik7Ci0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IE9iamVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyhDLmxvY2F0aW9uKSB9LAotICAgICAgICAgICAgICAgICJwcmV2ZW50RXh0ZW5zaW9u
cyBvbiBjcm9zcy1vcmlnaW4gTG9jYXRpb24gc2hvdWxkIHRocm93Iik7Ci19LCAiW1tQcmV2ZW50
RXh0ZW5zaW9uc11dIHNob3VsZCB0aHJvdyBmb3IgY3Jvc3Mtb3JpZ2luIG9iamVjdHMiKTsKLQot
LyoKLSAqIFtbR2V0T3duUHJvcGVydHldXQotICovCi0KLWFkZFRlc3QoZnVuY3Rpb24oKSB7Ci0g
IGFzc2VydF90cnVlKGlzT2JqZWN0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQywg
J2Nsb3NlJykpLCAiQy5jbG9zZSBpcyB8b3dufCIpOwotICBhc3NlcnRfdHJ1ZShpc09iamVjdChP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMsICd0b3AnKSksICJDLnRvcCBpcyB8b3du
fCIpOwotICBhc3NlcnRfdHJ1ZShpc09iamVjdChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEMubG9jYXRpb24sICdocmVmJykpLCAiQy5sb2NhdGlvbi5ocmVmIGlzIHxvd258Iik7Ci0g
IGFzc2VydF90cnVlKGlzT2JqZWN0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQy5s
b2NhdGlvbiwgJ3JlcGxhY2UnKSksICJDLmxvY2F0aW9uLnJlcGxhY2UgaXMgfG93bnwiKTsKLX0s
ICJbW0dldE93blByb3BlcnR5XV0gLSBQcm9wZXJ0aWVzIG9uIGNyb3NzLW9yaWdpbiBvYmplY3Rz
IHNob3VsZCBiZSByZXBvcnRlZCB8b3dufCIpOwotCi1mdW5jdGlvbiBjaGVja1Byb3BlcnR5RGVz
Y3JpcHRvcihkZXNjLCBwcm9wTmFtZSwgZXhwZWN0V3JpdGFibGUpIHsKLSAgYXNzZXJ0X3RydWUo
aXNPYmplY3QoZGVzYyksICJwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciAiICsgcHJvcE5hbWUgKyAi
IHNob3VsZCBleGlzdCIpOwotICBhc3NlcnRfZXF1YWxzKGRlc2MuZW51bWVyYWJsZSwgZmFsc2Us
ICJwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciAiICsgcHJvcE5hbWUgKyAiIHNob3VsZCBiZSBub24t
ZW51bWVyYWJsZSIpOwotICBhc3NlcnRfZXF1YWxzKGRlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAi
cHJvcGVydHkgZGVzY3JpcHRvciBmb3IgIiArIHByb3BOYW1lICsgIiBzaG91bGQgYmUgY29uZmln
dXJhYmxlIik7Ci0gIGlmICgndmFsdWUnIGluIGRlc2MpCi0gICAgYXNzZXJ0X2VxdWFscyhkZXNj
LndyaXRhYmxlLCBleHBlY3RXcml0YWJsZSwgInByb3BlcnR5IGRlc2NyaXB0b3IgZm9yICIgKyBw
cm9wTmFtZSArICIgc2hvdWxkIGhhdmUgd3JpdGFibGU6ICIgKyBleHBlY3RXcml0YWJsZSk7Ci0g
IGVsc2UKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNjLnNldCAhPSAndW5kZWZpbmVkJywg
ZXhwZWN0V3JpdGFibGUsCi0gICAgICAgICAgICAgICAgICAicHJvcGVydHkgZGVzY3JpcHRvciBm
b3IgIiArIHByb3BOYW1lICsgIiBzaG91bGQgIiArIChleHBlY3RXcml0YWJsZSA/ICIiIDogIm5v
dCAiKSArICJoYXZlIHNldHRlciIpOwotfQotCi1hZGRUZXN0KGZ1bmN0aW9uKCkgewotICB3aGl0
ZWxpc3RlZFdpbmRvd1Byb3BzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkgewotICAgIHZhciBkZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLCBwcm9wKTsKLSAgICBjaGVja1By
b3BlcnR5RGVzY3JpcHRvcihkZXNjLCBwcm9wLCBwcm9wID09ICdsb2NhdGlvbicpOwotICB9KTsK
LSAgY2hlY2tQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihDLmxvY2F0aW9uLCAncmVwbGFjZScpLCAncmVwbGFjZScsIGZhbHNlKTsKLSAgY2hlY2tQcm9w
ZXJ0eURlc2NyaXB0b3IoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLmxvY2F0aW9u
LCAnaHJlZicpLCAnaHJlZicsIHRydWUpOwotICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMubG9jYXRpb24sICdocmVmJykuZ2V0LCAndW5kZWZp
bmVkJywgIkNyb3NzLW9yaWdpbiBsb2NhdGlvbiBzaG91bGQgaGF2ZSBubyBocmVmIGdldHRlciIp
OwotfSwgIltbR2V0T3duUHJvcGVydHldXSAtIFByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciBjcm9z
cy1vcmlnaW4gcHJvcGVydGllcyBzaG91bGQgYmUgc2V0IHVwIGNvcnJlY3RseSIpOwotCi0vKgot
ICogW1tEZWxldGVdXQotICovCi1hZGRUZXN0KGZ1bmN0aW9uKCkgewotICBhc3NlcnRfdGhyb3dz
KCJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDWzBdOyB9LCAiQ2FuJ3QgZGVs
ZXRlIGNyb3NzLW9yaWdpbiBpbmRleGVkIHByb3BlcnR5Iik7Ci0gIGFzc2VydF90aHJvd3MoIlNl
Y3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgZGVsZXRlIENbMTAwXTsgfSwgIkNhbid0IGRlbGV0
ZSBjcm9zcy1vcmlnaW4gaW5kZXhlZCBwcm9wZXJ0eSIpOwotICBhc3NlcnRfdGhyb3dzKCJTZWN1
cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLmxvY2F0aW9uOyB9LCAiQ2FuJ3QgZGVs
ZXRlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIpOwotICBhc3NlcnRfdGhyb3dzKCJTZWN1cml0eUVy
cm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLnBhcmVudDsgfSwgIkNhbid0IGRlbGV0ZSBjcm9z
cy1vcmlnaW4gcHJvcGVydHkiKTsKLSAgYXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1
bmN0aW9uKCkgeyBkZWxldGUgQy5sZW5ndGg7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2lu
IHByb3BlcnR5Iik7Ci0gIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigp
IHsgZGVsZXRlIEMuZG9jdW1lbnQ7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2luIHByb3Bl
cnR5Iik7Ci0gIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgZGVs
ZXRlIEMuZm9vcHk7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2luIHByb3BlcnR5Iik7Ci0g
IGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgZGVsZXRlIEMubG9j
YXRpb24uaHJlZjsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmlnaW4gcHJvcGVydHkiKTsKLSAg
YXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQy5sb2Nh
dGlvbi5yZXBsYWNlOyB9LCAiQ2FuJ3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIpOwot
ICBhc3NlcnRfdGhyb3dzKCJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLmxv
Y2F0aW9uLnBvcnQ7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2luIHByb3BlcnR5Iik7Ci0g
IGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgZGVsZXRlIEMubG9j
YXRpb24uZm9vcHk7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2luIHByb3BlcnR5Iik7Ci19
LCAiW1tEZWxldGVdXSBTaG91bGQgdGhyb3cgb24gY3Jvc3Mtb3JpZ2luIG9iamVjdHMiKTsKLQot
LyoKLSAqIFtbRGVmaW5lT3duUHJvcGVydHldXQotICovCi1mdW5jdGlvbiBjaGVja0RlZmluZShv
YmosIHByb3ApIHsKLSAgdmFyIHZhbHVlRGVzYyA9IHsgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVt
ZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IGZhbHNlLCB2YWx1ZTogMiB9OwotICB2YXIgYWNjZXNz
b3JEZXNjID0geyBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBnZXQ6IGZ1
bmN0aW9uKCkge30gfTsKLSAgYXNzZXJ0X3Rocm93cygiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9u
KCkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCB2YWx1ZURlc2MpOyB9LCAiQ2Fu
J3QgZGVmaW5lIGNyb3NzLW9yaWdpbiB2YWx1ZSBwcm9wZXJ0eSAiICsgcHJvcCk7Ci0gIGFzc2Vy
dF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KG9iaiwgcHJvcCwgYWNjZXNzb3JEZXNjKTsgfSwgIkNhbid0IGRlZmluZSBjcm9zcy1vcmln
aW4gYWNjZXNzb3IgcHJvcGVydHkgIiArIHByb3ApOwotfQotYWRkVGVzdChmdW5jdGlvbigpIHsK
LSAgY2hlY2tEZWZpbmUoQywgJ2xlbmd0aCcpOwotICBjaGVja0RlZmluZShDLCAncGFyZW50Jyk7
Ci0gIGNoZWNrRGVmaW5lKEMsICdsb2NhdGlvbicpOwotICBjaGVja0RlZmluZShDLCAnZG9jdW1l
bnQnKTsKLSAgY2hlY2tEZWZpbmUoQywgJ2Zvb3B5Jyk7Ci0gIGNoZWNrRGVmaW5lKEMubG9jYXRp
b24sICdocmVmJyk7Ci0gIGNoZWNrRGVmaW5lKEMubG9jYXRpb24sICdyZXBsYWNlJyk7Ci0gIGNo
ZWNrRGVmaW5lKEMubG9jYXRpb24sICdwb3J0Jyk7Ci0gIGNoZWNrRGVmaW5lKEMubG9jYXRpb24s
ICdmb29weScpOwotfSwgIltbRGVmaW5lT3duUHJvcGVydHldXSBTaG91bGQgdGhyb3cgZm9yIGNy
b3NzLW9yaWdpbiBvYmplY3RzIik7Ci0KLS8qCi0gKiBbW0VudW1lcmF0ZV1dCi0gKi8KLQotYWRk
VGVzdChmdW5jdGlvbigpIHsKLSAgZm9yICh2YXIgcHJvcCBpbiBDKQotICAgIGFzc2VydF91bnJl
YWNoZWQoIlNob3VsZG4ndCBoYXZlIGJlZW4gYWJsZSB0byBlbnVtZXJhdGUgIiArIHByb3AgKyAi
IG9uIGNyb3NzLW9yaWdpbiBXaW5kb3ciKTsKLSAgZm9yICh2YXIgcHJvcCBpbiBDLmxvY2F0aW9u
KQotICAgIGFzc2VydF91bnJlYWNoZWQoIlNob3VsZG4ndCBoYXZlIGJlZW4gYWJsZSB0byBlbnVt
ZXJhdGUgIiArIHByb3AgKyAiIG9uIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiIpOwotfSwgIltbRW51
bWVyYXRlXV0gc2hvdWxkIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvciIpOwotCi0vKgotICogW1tP
d25Qcm9wZXJ0eUtleXNdXQotICovCi0KLWFkZFRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFzc2VydF9h
cnJheV9lcXVhbHMod2hpdGVsaXN0ZWRXaW5kb3dQcm9wcy5zb3J0KCksIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKEMpLnNvcnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAiT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoKSBnaXZlcyB0aGUgcmlnaHQgYW5zd2VyIGZvciBjcm9zcy1vcmln
aW4gV2luZG93Iik7Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXMoQy5sb2NhdGlvbikuc29ydCgpLCBbJ2hyZWYnLCAncmVwbGFjZSddLAotICAgICAgICAg
ICAgICAgICAgICAgICJPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIGdpdmVzIHRoZSByaWdo
dCBhbnN3ZXIgZm9yIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiIpOwotfSwgIltbT3duUHJvcGVydHlL
ZXlzXV0gc2hvdWxkIHJldHVybiBhbGwgcHJvcGVydGllcyBmcm9tIGNyb3NzLW9yaWdpbiBvYmpl
Y3RzIik7Ci0KLWFkZFRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFzc2VydF90cnVlKEIuZXZhbCgncGFy
ZW50LkMnKSA9PT0gQywgIkEgYW5kIEIgb2JzZXJ2ZSB0aGUgc2FtZSBpZGVudGl0eSBmb3IgQydz
IFdpbmRvdyIpOwotICBhc3NlcnRfdHJ1ZShCLmV2YWwoJ3BhcmVudC5DLmxvY2F0aW9uJykgPT09
IEMubG9jYXRpb24sICJBIGFuZCBCIG9ic2VydmUgdGhlIHNhbWUgaWRlbnRpdHkgZm9yIEMncyBM
b2NhdGlvbiIpOwotfSwgIkEgYW5kIEIgam9pbnRseSBvYnNlcnZlIHRoZSBzYW1lIGlkZW50aXR5
IGZvciBjcm9zcy1vcmlnaW4gV2luZG93IGFuZCBMb2NhdGlvbiIpOwotCi1mdW5jdGlvbiBjaGVj
a0Z1bmN0aW9uKGYsIHByb3RvKSB7Ci0gIHZhciBuYW1lID0gZi5uYW1lIHx8ICc8bWlzc2luZyBu
YW1lPic7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIGYsICdmdW5jdGlvbicsIG5hbWUgKyAiIGlz
IGEgZnVuY3Rpb24iKTsKLSAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoZiks
IHByb3RvLCBmLm5hbWUgKyAiIGhhcyB0aGUgcmlnaHQgcHJvdG90eXBlIik7Ci19Ci0KLWFkZFRl
c3QoZnVuY3Rpb24oKSB7Ci0gIGNoZWNrRnVuY3Rpb24oQy5jbG9zZSwgRnVuY3Rpb24ucHJvdG90
eXBlKTsKLSAgY2hlY2tGdW5jdGlvbihDLmxvY2F0aW9uLnJlcGxhY2UsIEZ1bmN0aW9uLnByb3Rv
dHlwZSk7Ci19LCAiQ3Jvc3Mtb3JpZ2luIGZ1bmN0aW9ucyBnZXQgbG9jYWwgRnVuY3Rpb24ucHJv
dG90eXBlIik7Ci0KLWFkZFRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFzc2VydF90cnVlKGlzT2JqZWN0
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQywgJ3BhcmVudCcpKSwKLSAgICAgICAg
ICAgICAgIk5lZWQgdG8gYmUgYWJsZSB0byB1c2UgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvciBkbyB0aGlzIHRlc3QiKTsKLSAgY2hlY2tGdW5jdGlvbihPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEMsICdwYXJlbnQnKS5nZXQsIEZ1bmN0aW9uLnByb3RvdHlwZSk7Ci0gIGNo
ZWNrRnVuY3Rpb24oT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLmxvY2F0aW9uLCAn
aHJlZicpLnNldCwgRnVuY3Rpb24ucHJvdG90eXBlKTsKLX0sICJDcm9zcy1vcmlnaW4gV2luZG93
IGFjY2Vzc29ycyBnZXQgbG9jYWwgRnVuY3Rpb24ucHJvdG90eXBlIik7Ci0KLWFkZFRlc3QoZnVu
Y3Rpb24oKSB7Ci0gIGNoZWNrRnVuY3Rpb24oY2xvc2UsIEZ1bmN0aW9uLnByb3RvdHlwZSk7Ci0g
IGFzc2VydF90cnVlKGNsb3NlICE9IEIuY2xvc2UsICdzYW1lLW9yaWdpbiBXaW5kb3cgZnVuY3Rp
b25zIGdldCB0aGVpciBvd24gb2JqZWN0Jyk7Ci0gIGFzc2VydF90cnVlKGNsb3NlICE9IEMuY2xv
c2UsICdjcm9zcy1vcmlnaW4gV2luZG93IGZ1bmN0aW9ucyBnZXQgdGhlaXIgb3duIG9iamVjdCcp
OwotICB2YXIgY2xvc2VfQiA9IEIuZXZhbCgncGFyZW50LkMuY2xvc2UnKTsKLSAgYXNzZXJ0X3Ry
dWUoY2xvc2UgIT0gY2xvc2VfQiwgJ2Nsb3NlX0IgaXMgdW5pcXVlIHdoZW4gdmlld2VkIGJ5IHRo
ZSBwYXJlbnQnKTsKLSAgYXNzZXJ0X3RydWUoY2xvc2VfQiAhPSBDLmNsb3NlLCAnZGlmZmVyZW50
IFdpbmRvdyBmdW5jdGlvbnMgcGVyLWluY3VtYmVudCBzY3JpcHQgc2V0dGluZ3Mgb2JqZWN0Jyk7
Ci0gIGNoZWNrRnVuY3Rpb24oY2xvc2VfQiwgQi5GdW5jdGlvbi5wcm90b3R5cGUpOwotCi0gIGNo
ZWNrRnVuY3Rpb24obG9jYXRpb24ucmVwbGFjZSwgRnVuY3Rpb24ucHJvdG90eXBlKTsKLSAgYXNz
ZXJ0X3RydWUobG9jYXRpb24ucmVwbGFjZSAhPSBDLmxvY2F0aW9uLnJlcGxhY2UsICJjcm9zcy1v
cmlnaW4gTG9jYXRpb24gZnVuY3Rpb25zIGdldCB0aGVpciBvd24gb2JqZWN0Iik7Ci0gIHZhciBy
ZXBsYWNlX0IgPSBCLmV2YWwoJ3BhcmVudC5DLmxvY2F0aW9uLnJlcGxhY2UnKTsKLSAgYXNzZXJ0
X3RydWUocmVwbGFjZV9CICE9IEMubG9jYXRpb24ucmVwbGFjZSwgJ2RpZmZlcmVudCBMb2NhdGlv
biBmdW5jdGlvbnMgcGVyLWluY3VtYmVudCBzY3JpcHQgc2V0dGluZ3Mgb2JqZWN0Jyk7Ci0gIGNo
ZWNrRnVuY3Rpb24ocmVwbGFjZV9CLCBCLkZ1bmN0aW9uLnByb3RvdHlwZSk7Ci19LCAiU2FtZS1v
cmlnaW4gb2JzZXJ2ZXJzIGdldCBkaWZmZXJlbnQgZnVuY3Rpb25zIGZvciBjcm9zcy1vcmlnaW4g
b2JqZWN0cyIpOwotCi1hZGRUZXN0KGZ1bmN0aW9uKCkgewotICBhc3NlcnRfdHJ1ZShpc09iamVj
dChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMsICdwYXJlbnQnKSksCi0gICAgICAg
ICAgICAgICJOZWVkIHRvIGJlIGFibGUgdG8gdXNlIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IgZG8gdGhpcyB0ZXN0Iik7Ci0gIHZhciBnZXRfc2VsZl9wYXJlbnQgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ3BhcmVudCcpLmdldDsKLSAgdmFyIGdldF9w
YXJlbnRfQSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQywgJ3BhcmVudCcpLmdl
dDsKLSAgdmFyIGdldF9wYXJlbnRfQiA9IEIuZXZhbCgnT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihwYXJlbnQuQywgInBhcmVudCIpLmdldCcpOwotICBhc3NlcnRfdHJ1ZShnZXRfc2Vs
Zl9wYXJlbnQgIT0gZ2V0X3BhcmVudF9BLCAnZGlmZmVyZW50IFdpbmRvdyBhY2Nlc3NvcnMgcGVy
LWluY3VtYmVudCBzY3JpcHQgc2V0dGluZ3Mgb2JqZWN0Jyk7Ci0gIGFzc2VydF90cnVlKGdldF9w
YXJlbnRfQSAhPSBnZXRfcGFyZW50X0IsICdkaWZmZXJlbnQgV2luZG93IGFjY2Vzc29ycyBwZXIt
aW5jdW1iZW50IHNjcmlwdCBzZXR0aW5ncyBvYmplY3QnKTsKLSAgY2hlY2tGdW5jdGlvbihnZXRf
c2VsZl9wYXJlbnQsIEZ1bmN0aW9uLnByb3RvdHlwZSk7Ci0gIGNoZWNrRnVuY3Rpb24oZ2V0X3Bh
cmVudF9BLCBGdW5jdGlvbi5wcm90b3R5cGUpOwotICBjaGVja0Z1bmN0aW9uKGdldF9wYXJlbnRf
QiwgQi5GdW5jdGlvbi5wcm90b3R5cGUpOwotfSwgIlNhbWUtb3JpZ2luIG9ic2VydmVycyBnZXQg
ZGlmZmVyZW50IGFjY2Vzc29ycyBmb3IgY3Jvc3Mtb3JpZ2luIFdpbmRvdyIpOwotCi1hZGRUZXN0
KGZ1bmN0aW9uKCkgewotICB2YXIgc2V0X3NlbGZfaHJlZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iod2luZG93LmxvY2F0aW9uLCAnaHJlZicpLnNldDsKLSAgdmFyIHNldF9ocmVm
X0EgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMubG9jYXRpb24sICdocmVmJyku
c2V0OwotICB2YXIgc2V0X2hyZWZfQiA9IEIuZXZhbCgnT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihwYXJlbnQuQy5sb2NhdGlvbiwgImhyZWYiKS5zZXQnKTsKLSAgYXNzZXJ0X3RydWUo
c2V0X3NlbGZfaHJlZiAhPSBzZXRfaHJlZl9BLCAnZGlmZmVyZW50IExvY2F0aW9uIGFjY2Vzc29y
cyBwZXItaW5jdW1iZW50IHNjcmlwdCBzZXR0aW5ncyBvYmplY3QnKTsKLSAgYXNzZXJ0X3RydWUo
c2V0X2hyZWZfQSAhPSBzZXRfaHJlZl9CLCAnZGlmZmVyZW50IExvY2F0aW9uIGFjY2Vzc29ycyBw
ZXItaW5jdW1iZW50IHNjcmlwdCBzZXR0aW5ncyBvYmplY3QnKTsKLSAgY2hlY2tGdW5jdGlvbihz
ZXRfc2VsZl9ocmVmLCBGdW5jdGlvbi5wcm90b3R5cGUpOwotICBjaGVja0Z1bmN0aW9uKHNldF9o
cmVmX0EsIEZ1bmN0aW9uLnByb3RvdHlwZSk7Ci0gIGNoZWNrRnVuY3Rpb24oc2V0X2hyZWZfQiwg
Qi5GdW5jdGlvbi5wcm90b3R5cGUpOwotfSwgIlNhbWUtb3JpZ2luIG9ic2VydmVycyBnZXQgZGlm
ZmVyZW50IGFjY2Vzc29ycyBmb3IgY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIik7Ci0KLS8vIFdlIGRv
IGEgZnJlc2ggbG9hZCBvZiB0aGUgc3ViZnJhbWVzIGZvciBlYWNoIHRlc3QgdG8gbWluaW1pemUg
c2lkZS1lZmZlY3RzLgotLy8gSXQgd291bGQgYmUgbmljZSB0byByZWxvYWQgb3Vyc2VsdmVzIGFz
IHdlbGwsIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0IHdpdGhvdXQKLS8vIGRpc3J1cHRpbmcgdGhlIHRl
c3QgaGFybmVzcy4KLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgewotICB2YXIgZW50cnkgPSB0ZXN0
TGlzdC5zaGlmdCgpOwotICB0ZXN0KGVudHJ5WzBdLCBlbnRyeVsxXSk7Ci0gIGlmICh0ZXN0TGlz
dC5sZW5ndGggIT0gMCkKLSAgICByZWxvYWRTdWJmcmFtZXMocnVuTmV4dFRlc3QpOwotICBlbHNl
Ci0gICAgZG9uZSgpOwotfQotcmVsb2FkU3ViZnJhbWVzKHJ1bk5leHRUZXN0KTsKLQotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdp
bi1vYmplY3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jv
c3Mtb3JpZ2luLW9iamVjdHMtZXhwZWN0ZWQudHh0CmluZGV4IDI5MTJkOTA0YWQ4MzI1OGE0MjQ4
YjE5NGJkNTVjZjQ4ODM5ZDg4YTYuLmJiZWRiNmU0YzA1Yjk2MDExYWY5ZmExYThhMTcxNGFlMzhh
YzFiZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVj
dHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZXhwZWN0ZWQudHh0CkBAIC0xLDI1ICsxLDQ2IEBACi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTM4MDogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJo
dHRwOi8vbG9jYWxob3N0Ojg4MDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4g
Imh0dHA6Ly8xMjcuMC4wLjE6ODgwMCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11
c3QgbWF0Y2guCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM4MDogQmxvY2tlZCBhIGZyYW1lIHdp
dGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0Ojg4MDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUg
d2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODgwMCIuIFByb3RvY29scywgZG9tYWlucywg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzk3OiBCbG9ja2Vk
IGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCIgZnJvbSBhY2Nlc3Np
bmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4ODAwIi4gUHJvdG9jb2xz
LCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAz
OTc6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBm
cm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjg4MDAi
LiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCiBQQVNTIEJhc2lj
IHNhbml0eS1jaGVja2luZyAKK1BBU1MgQmFzaWMgc2FuaXR5LWNoZWNraW5nIChleGNlcHRpb24g
dHlwZSkgCiBQQVNTIE9ubHkgd2hpdGVsaXN0ZWQgcHJvcGVydGllcyBhcmUgYWNjZXNzaWJsZSBj
cm9zcy1vcmlnaW4gCitQQVNTIE9ubHkgd2hpdGVsaXN0ZWQgcHJvcGVydGllcyBhcmUgYWNjZXNz
aWJsZSBjcm9zcy1vcmlnaW4gKGV4Y2VwdGlvbiB0eXBlKSAKIFBBU1MgW1tHZXRQcm90b3R5cGVP
Zl1dIHNob3VsZCByZXR1cm4gbnVsbCAKK1BBU1MgW1tHZXRQcm90b3R5cGVPZl1dIHNob3VsZCBy
ZXR1cm4gbnVsbCAoZXhjZXB0aW9uIHR5cGUpIAogUEFTUyBbW1NldFByb3RvdHlwZU9mXV0gc2hv
dWxkIHRocm93IAorUEFTUyBbW1NldFByb3RvdHlwZU9mXV0gc2hvdWxkIHRocm93IChleGNlcHRp
b24gdHlwZSkgCiBQQVNTIFtbSXNFeHRlbnNpYmxlXV0gc2hvdWxkIHJldHVybiB0cnVlIGZvciBj
cm9zcy1vcmlnaW4gb2JqZWN0cyAKK1BBU1MgW1tJc0V4dGVuc2libGVdXSBzaG91bGQgcmV0dXJu
IHRydWUgZm9yIGNyb3NzLW9yaWdpbiBvYmplY3RzIChleGNlcHRpb24gdHlwZSkgCiBQQVNTIFtb
UHJldmVudEV4dGVuc2lvbnNdXSBzaG91bGQgdGhyb3cgZm9yIGNyb3NzLW9yaWdpbiBvYmplY3Rz
IAorRkFJTCBbW1ByZXZlbnRFeHRlbnNpb25zXV0gc2hvdWxkIHRocm93IGZvciBjcm9zcy1vcmln
aW4gb2JqZWN0cyAoZXhjZXB0aW9uIHR5cGUpIGFzc2VydF90aHJvd3M6IHByZXZlbnRFeHRlbnNp
b25zIG9uIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiBzaG91bGQgdGhyb3cgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKEMubG9jYXRpb24pIH0iIHRocmV3IG9i
amVjdCAiU2VjdXJpdHlFcnJvciAoRE9NIEV4Y2VwdGlvbiAxOCk6IEJsb2NrZWQgYSBmcmFtZSB3
aXRoIG9yLi4uIiAoIlNlY3VyaXR5RXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIg
KCJUeXBlRXJyb3IiKQogUEFTUyBbW0dldE93blByb3BlcnR5XV0gLSBQcm9wZXJ0aWVzIG9uIGNy
b3NzLW9yaWdpbiBvYmplY3RzIHNob3VsZCBiZSByZXBvcnRlZCB8b3dufCAKK1BBU1MgW1tHZXRP
d25Qcm9wZXJ0eV1dIC0gUHJvcGVydGllcyBvbiBjcm9zcy1vcmlnaW4gb2JqZWN0cyBzaG91bGQg
YmUgcmVwb3J0ZWQgfG93bnwgKGV4Y2VwdGlvbiB0eXBlKSAKIEZBSUwgW1tHZXRPd25Qcm9wZXJ0
eV1dIC0gUHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIGNyb3NzLW9yaWdpbiBwcm9wZXJ0aWVzIHNo
b3VsZCBiZSBzZXQgdXAgY29ycmVjdGx5IGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGRlc2NyaXB0
b3IgZm9yIDAgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFs
c2UKK0ZBSUwgW1tHZXRPd25Qcm9wZXJ0eV1dIC0gUHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIGNy
b3NzLW9yaWdpbiBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzZXQgdXAgY29ycmVjdGx5IChleGNlcHRp
b24gdHlwZSkgYXNzZXJ0X3VucmVhY2hlZDogTWFpbiB0ZXN0IGZhaWxlZCBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKIFBBU1MgW1tEZWxldGVdXSBTaG91bGQgdGhyb3cgb24gY3Jvc3Mtb3JpZ2lu
IG9iamVjdHMgCitQQVNTIFtbRGVsZXRlXV0gU2hvdWxkIHRocm93IG9uIGNyb3NzLW9yaWdpbiBv
YmplY3RzIChleGNlcHRpb24gdHlwZSkgCiBQQVNTIFtbRGVmaW5lT3duUHJvcGVydHldXSBTaG91
bGQgdGhyb3cgZm9yIGNyb3NzLW9yaWdpbiBvYmplY3RzIAorUEFTUyBbW0RlZmluZU93blByb3Bl
cnR5XV0gU2hvdWxkIHRocm93IGZvciBjcm9zcy1vcmlnaW4gb2JqZWN0cyAoZXhjZXB0aW9uIHR5
cGUpIAogUEFTUyBbW0VudW1lcmF0ZV1dIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3Ig
CitQQVNTIFtbRW51bWVyYXRlXV0gc2hvdWxkIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvciAoZXhj
ZXB0aW9uIHR5cGUpIAogRkFJTCBbW093blByb3BlcnR5S2V5c11dIHNob3VsZCByZXR1cm4gYWxs
IHByb3BlcnRpZXMgZnJvbSBjcm9zcy1vcmlnaW4gb2JqZWN0cyBhc3NlcnRfYXJyYXlfZXF1YWxz
OiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIGdpdmVzIHRoZSByaWdodCBhbnN3ZXIgZm9y
IGNyb3NzLW9yaWdpbiBXaW5kb3cgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDE1IGdvdCAxMwor
RkFJTCBbW093blByb3BlcnR5S2V5c11dIHNob3VsZCByZXR1cm4gYWxsIHByb3BlcnRpZXMgZnJv
bSBjcm9zcy1vcmlnaW4gb2JqZWN0cyAoZXhjZXB0aW9uIHR5cGUpIGFzc2VydF91bnJlYWNoZWQ6
IE1haW4gdGVzdCBmYWlsZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIFtbT3duUHJv
cGVydHlLZXlzXV0gc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgc3ltYm9sLW5hbWVkIHByb3BlcnRp
ZXMgZm9yIGNyb3NzLW9yaWdpbiBvYmplY3RzIGFzc2VydF9hcnJheV9lcXVhbHM6IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMoKSBzaG91bGQgcmV0dXJuIHRoZSB0aHJlZSBzeW1ib2wtbmFt
ZWQgcHJvcGVydGllcyB0aGF0IGFyZSBleHBvc2VkIG9uIGEgY3Jvc3Mtb3JpZ2luIFdpbmRvdyBs
ZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMyBnb3QgMAorRkFJTCBbW093blByb3BlcnR5S2V5c11d
IHNob3VsZCByZXR1cm4gdGhlIHJpZ2h0IHN5bWJvbC1uYW1lZCBwcm9wZXJ0aWVzIGZvciBjcm9z
cy1vcmlnaW4gb2JqZWN0cyAoZXhjZXB0aW9uIHR5cGUpIGFzc2VydF91bnJlYWNoZWQ6IE1haW4g
dGVzdCBmYWlsZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIFtbT3duUHJvcGVydHlL
ZXlzXV0gc2hvdWxkIHBsYWNlIHRoZSBzeW1ib2xzIGFmdGVyIHRoZSBwcm9wZXJ0eSBuYW1lcyBh
ZnRlciB0aGUgc3ViZnJhbWUgaW5kaWNlcyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZWZsZWN0Lm93
bktleXMgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGluZGljZXMgZXhwb3NlZCBvbiB0aGUgY3Jvc3Mt
b3JpZ2luIHdpbmRvdy4gcHJvcGVydHkgMCwgZXhwZWN0ZWQgIjAiIGJ1dCBnb3QgImJsdXIiCitG
QUlMIFtbT3duUHJvcGVydHlLZXlzXV0gc2hvdWxkIHBsYWNlIHRoZSBzeW1ib2xzIGFmdGVyIHRo
ZSBwcm9wZXJ0eSBuYW1lcyBhZnRlciB0aGUgc3ViZnJhbWUgaW5kaWNlcyAoZXhjZXB0aW9uIHR5
cGUpIGFzc2VydF91bnJlYWNoZWQ6IE1haW4gdGVzdCBmYWlsZWQgUmVhY2hlZCB1bnJlYWNoYWJs
ZSBjb2RlCiBQQVNTIEEgYW5kIEIgam9pbnRseSBvYnNlcnZlIHRoZSBzYW1lIGlkZW50aXR5IGZv
ciBjcm9zcy1vcmlnaW4gV2luZG93IGFuZCBMb2NhdGlvbiAKK1BBU1MgQSBhbmQgQiBqb2ludGx5
IG9ic2VydmUgdGhlIHNhbWUgaWRlbnRpdHkgZm9yIGNyb3NzLW9yaWdpbiBXaW5kb3cgYW5kIExv
Y2F0aW9uIChleGNlcHRpb24gdHlwZSkgCiBQQVNTIENyb3NzLW9yaWdpbiBmdW5jdGlvbnMgZ2V0
IGxvY2FsIEZ1bmN0aW9uLnByb3RvdHlwZSAKK1BBU1MgQ3Jvc3Mtb3JpZ2luIGZ1bmN0aW9ucyBn
ZXQgbG9jYWwgRnVuY3Rpb24ucHJvdG90eXBlIChleGNlcHRpb24gdHlwZSkgCiBQQVNTIENyb3Nz
LW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGdldCBsb2NhbCBGdW5jdGlvbi5wcm90b3R5cGUgCitQ
QVNTIENyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGdldCBsb2NhbCBGdW5jdGlvbi5wcm90
b3R5cGUgKGV4Y2VwdGlvbiB0eXBlKSAKIFBBU1MgU2FtZS1vcmlnaW4gb2JzZXJ2ZXJzIGdldCBk
aWZmZXJlbnQgZnVuY3Rpb25zIGZvciBjcm9zcy1vcmlnaW4gb2JqZWN0cyAKK1BBU1MgU2FtZS1v
cmlnaW4gb2JzZXJ2ZXJzIGdldCBkaWZmZXJlbnQgZnVuY3Rpb25zIGZvciBjcm9zcy1vcmlnaW4g
b2JqZWN0cyAoZXhjZXB0aW9uIHR5cGUpIAogUEFTUyBTYW1lLW9yaWdpbiBvYnNlcnZlcnMgZ2V0
IGRpZmZlcmVudCBhY2Nlc3NvcnMgZm9yIGNyb3NzLW9yaWdpbiBXaW5kb3cgCitQQVNTIFNhbWUt
b3JpZ2luIG9ic2VydmVycyBnZXQgZGlmZmVyZW50IGFjY2Vzc29ycyBmb3IgY3Jvc3Mtb3JpZ2lu
IFdpbmRvdyAoZXhjZXB0aW9uIHR5cGUpIAogUEFTUyBTYW1lLW9yaWdpbiBvYnNlcnZlcnMgZ2V0
IGRpZmZlcmVudCBhY2Nlc3NvcnMgZm9yIGNyb3NzLW9yaWdpbiBMb2NhdGlvbiAKK1BBU1MgU2Ft
ZS1vcmlnaW4gb2JzZXJ2ZXJzIGdldCBkaWZmZXJlbnQgYWNjZXNzb3JzIGZvciBjcm9zcy1vcmln
aW4gTG9jYXRpb24gKGV4Y2VwdGlvbiB0eXBlKSAKIFBBU1Mge30udG9TdHJpbmcuY2FsbCgpIGRv
ZXMgdGhlIHJpZ2h0IHRoaW5nIG9uIGNyb3NzLW9yaWdpbiBvYmplY3RzIAorUEFTUyB7fS50b1N0
cmluZy5jYWxsKCkgZG9lcyB0aGUgcmlnaHQgdGhpbmcgb24gY3Jvc3Mtb3JpZ2luIG9iamVjdHMg
KGV4Y2VwdGlvbiB0eXBlKSAKICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbAppbmRleCA3NTYwZmNkMTM3Nzg4MTk5ZGEw
ZTM5ZTA4YzY1NjI5NTBlYTZhMTBkLi43ZmZkNDc0MTZlZGNhYjQwMGYyNjNmODJhNjM1NzcwODdi
NTdkNTVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9y
aWdpbi1vYmplY3RzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9z
cy1vcmlnaW4tb2JqZWN0cy5odG1sCkBAIC01MiwxNCArNTIsMTQgQEAgZnVuY3Rpb24gYWRkVGVz
dChmdW4sIGRlc2MpIHsgdGVzdExpc3QucHVzaChbZnVuLCBkZXNjXSk7IH0KICAqIEJhc2ljIHNh
bml0eSB0ZXN0aW5nLgogICovCiAKLWFkZFRlc3QoZnVuY3Rpb24oKSB7CithZGRUZXN0KGZ1bmN0
aW9uKGV4Y2VwdGlvbl90KSB7CiAgIC8vIE5vdGU6IHdlIGRvIG5vdCBjaGVjayBsb2NhdGlvbi5o
b3N0IGFzIGl0cyBkZWZhdWx0IHBvcnQgc2VtYW50aWNzIGFyZSBoYXJkIHRvIHJlZmxlY3Qgc3Rh
dGljYWxseQogICBhc3NlcnRfZXF1YWxzKGxvY2F0aW9uLmhvc3RuYW1lLCBob3N0X2luZm8uT1JJ
R0lOQUxfSE9TVCwgJ05lZWQgdG8gcnVuIHRoZSB0b3AtbGV2ZWwgdGVzdCBmcm9tIGRvbWFpbiAn
ICsgaG9zdF9pbmZvLk9SSUdJTkFMX0hPU1QpOwogICBhc3NlcnRfZXF1YWxzKGdldF9wb3J0KGxv
Y2F0aW9uKSwgaG9zdF9pbmZvLkhUVFBfUE9SVCwgJ05lZWQgdG8gcnVuIHRoZSB0b3AtbGV2ZWwg
dGVzdCBmcm9tIHBvcnQgJyArIGhvc3RfaW5mby5IVFRQX1BPUlQpOwogICBhc3NlcnRfZXF1YWxz
KEIucGFyZW50LCB3aW5kb3csICJ3aW5kb3cucGFyZW50IHdvcmtzIHNhbWUtb3JpZ2luIik7CiAg
IGFzc2VydF9lcXVhbHMoQy5wYXJlbnQsIHdpbmRvdywgIndpbmRvdy5wYXJlbnQgd29ya3MgY3Jv
c3Mtb3JpZ2luIik7CiAgIGFzc2VydF9lcXVhbHMoQi5sb2NhdGlvbi5wYXRobmFtZSwgcGF0aCwg
ImxvY2F0aW9uLmhyZWYgd29ya3Mgc2FtZS1vcmlnaW4iKTsKLSAgYXNzZXJ0X3Rocm93cyhudWxs
LCBmdW5jdGlvbigpIHsgQy5sb2NhdGlvbi5wYXRobmFtZTsgfSwgImxvY2F0aW9uLnBhdGhuYW1l
IHRocm93cyBjcm9zcy1vcmlnaW4iKTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1
cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IEMubG9jYXRpb24ucGF0aG5hbWU7IH0sICJsb2NhdGlv
bi5wYXRobmFtZSB0aHJvd3MgY3Jvc3Mtb3JpZ2luIik7CiAgIGFzc2VydF9lcXVhbHMoQi5mcmFt
ZXMsICdvdmVycmlkZScsICJPdmVycmlkZXMgdmlzaWJsZSBpbiB0aGUgc2FtZS1vcmlnaW4gY2Fz
ZSIpOwogICBhc3NlcnRfZXF1YWxzKEMuZnJhbWVzLCBDLCAiT3ZlcnJpZGVzIGludmlzaWJsZSBp
biB0aGUgY3Jvc3Mtb3JpZ2luIGNhc2UiKTsKIH0sICJCYXNpYyBzYW5pdHktY2hlY2tpbmciKTsK
QEAgLTgxLDIxICs4MSwyMSBAQCB2YXIgd2hpdGVsaXN0ZWRTeW1ib2xzID0gW1N5bWJvbC50b1N0
cmluZ1RhZywgU3ltYm9sLmhhc0luc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBT
eW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlXTsKIHZhciB3aGl0ZWxpc3RlZFdpbmRvd1Byb3BzID0g
d2hpdGVsaXN0ZWRXaW5kb3dQcm9wTmFtZXMuY29uY2F0KHdoaXRlbGlzdGVkU3ltYm9scyk7CiAK
LWFkZFRlc3QoZnVuY3Rpb24oKSB7CithZGRUZXN0KGZ1bmN0aW9uKGV4Y2VwdGlvbl90KSB7CiAg
IGZvciAodmFyIHByb3AgaW4gd2luZG93KSB7CiAgICAgaWYgKHdoaXRlbGlzdGVkV2luZG93UHJv
cHMuaW5kZXhPZihwcm9wKSAhPSAtMSkgewogICAgICAgQ1twcm9wXTsgLy8gU2hvdWxkbid0IHRo
cm93LgogICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLCBwcm9wKTsgLy8g
U2hvdWxkbid0IHRocm93LgogICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKEMsIHByb3ApLCAiaGFzT3duUHJvcGVydHkgZm9yICIgKyBTdHJpbmco
cHJvcCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9u
KCkgeyBDW3Byb3BdOyB9LCAiU2hvdWxkIHRocm93IHdoZW4gYWNjZXNzaW5nICIgKyBTdHJpbmco
cHJvcCkgKyAiIG9uIFdpbmRvdyIpOwotICAgICAgYXNzZXJ0X3Rocm93cyhudWxsLCBmdW5jdGlv
bigpIHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLCBwcm9wKTsgfSwKKyAgICAg
IHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCAiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBD
W3Byb3BdOyB9LCAiU2hvdWxkIHRocm93IHdoZW4gYWNjZXNzaW5nICIgKyBTdHJpbmcocHJvcCkg
KyAiIG9uIFdpbmRvdyIpOworICAgICAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0
eUVycm9yIiwgZnVuY3Rpb24oKSB7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQywg
cHJvcCk7IH0sCiAgICAgICAgICAgICAgICAgICAgICJTaG91bGQgdGhyb3cgd2hlbiBhY2Nlc3Np
bmcgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgIiArIHByb3AgKyAiIG9uIFdpbmRvdyIpOwotICAg
ICAgYXNzZXJ0X3Rocm93cyhudWxsLCBmdW5jdGlvbigpIHsgT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKEMsIHByb3ApOyB9LAorICAgICAgdGVzdF90aHJvd3MoZXhjZXB0aW9u
X3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IE9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChDLCBwcm9wKTsgfSwKICAgICAgICAgICAgICAgICAgICAgIlNob3VsZCB0
aHJvdyB3aGVuIGludm9raW5nIGhhc093blByb3BlcnR5IGZvciAiICsgcHJvcCArICIgb24gV2lu
ZG93Iik7CiAgICAgfQogICAgIGlmIChwcm9wICE9ICdsb2NhdGlvbicpCi0gICAgICBhc3NlcnRf
dGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBDW3Byb3BdID0gdW5kZWZpbmVkOyB9LCAiU2hvdWxk
IHRocm93IHdoZW4gd3JpdGluZyB0byAiICsgcHJvcCArICIgb24gV2luZG93Iik7CisgICAgICB0
ZXN0X3Rocm93cyhleGNlcHRpb25fdCwgIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgQ1tw
cm9wXSA9IHVuZGVmaW5lZDsgfSwgIlNob3VsZCB0aHJvdyB3aGVuIHdyaXRpbmcgdG8gIiArIHBy
b3AgKyAiIG9uIFdpbmRvdyIpOwogICB9CiAgIGZvciAodmFyIHByb3AgaW4gbG9jYXRpb24pIHsK
ICAgICBpZiAocHJvcCA9PSAncmVwbGFjZScpIHsKQEAgLTEwNCwxNCArMTA0LDE0IEBAIGFkZFRl
c3QoZnVuY3Rpb24oKSB7CiAgICAgICBhc3NlcnRfdHJ1ZShPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwoQy5sb2NhdGlvbiwgcHJvcCksICJoYXNPd25Qcm9wZXJ0eSBmb3IgIiAr
IHByb3ApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgIGFzc2VydF90aHJvd3MobnVsbCwgZnVu
Y3Rpb24oKSB7IENbcHJvcF07IH0sICJTaG91bGQgdGhyb3cgd2hlbiBhY2Nlc3NpbmcgIiArIHBy
b3AgKyAiIG9uIExvY2F0aW9uIik7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9u
KCkgeyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMsIHByb3ApOyB9LAorICAgICAg
dGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IENb
cHJvcF07IH0sICJTaG91bGQgdGhyb3cgd2hlbiBhY2Nlc3NpbmcgIiArIHByb3AgKyAiIG9uIExv
Y2F0aW9uIik7CisgICAgICB0ZXN0X3Rocm93cyhleGNlcHRpb25fdCwgIlNlY3VyaXR5RXJyb3Ii
LCBmdW5jdGlvbigpIHsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLCBwcm9wKTsg
fSwKICAgICAgICAgICAgICAgICAgICAgIlNob3VsZCB0aHJvdyB3aGVuIGFjY2Vzc2luZyBwcm9w
ZXJ0eSBkZXNjcmlwdG9yIGZvciAiICsgcHJvcCArICIgb24gTG9jYXRpb24iKTsKLSAgICAgIGFz
c2VydF90aHJvd3MobnVsbCwgZnVuY3Rpb24oKSB7IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkuY2FsbChDLCBwcm9wKTsgfSwKKyAgICAgIHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCAi
U2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwoQywgcHJvcCk7IH0sCiAgICAgICAgICAgICAgICAgICAgICJTaG91bGQgdGhyb3cg
d2hlbiBpbnZva2luZyBoYXNPd25Qcm9wZXJ0eSBmb3IgIiArIHByb3AgKyAiIG9uIExvY2F0aW9u
Iik7CiAgICAgfQogICAgIGlmIChwcm9wICE9ICdocmVmJykKLSAgICAgIGFzc2VydF90aHJvd3Mo
bnVsbCwgZnVuY3Rpb24oKSB7IENbcHJvcF0gPSB1bmRlZmluZWQ7IH0sICJTaG91bGQgdGhyb3cg
d2hlbiB3cml0aW5nIHRvICIgKyBwcm9wICsgIiBvbiBMb2NhdGlvbiIpOworICAgICAgdGVzdF90
aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IENbcHJvcF0g
PSB1bmRlZmluZWQ7IH0sICJTaG91bGQgdGhyb3cgd2hlbiB3cml0aW5nIHRvICIgKyBwcm9wICsg
IiBvbiBMb2NhdGlvbiIpOwogICB9CiB9LCAiT25seSB3aGl0ZWxpc3RlZCBwcm9wZXJ0aWVzIGFy
ZSBhY2Nlc3NpYmxlIGNyb3NzLW9yaWdpbiIpOwogCkBAIC0xMjIsMzYgKzEyMiwzNiBAQCBhZGRU
ZXN0KGZ1bmN0aW9uKCkgewogLyoKICAqIFtbR2V0UHJvdG90eXBlT2ZdXQogICovCi1hZGRUZXN0
KGZ1bmN0aW9uKCkgeworYWRkVGVzdChmdW5jdGlvbihleGNlcHRpb25fdCkgewogICBhc3NlcnRf
dHJ1ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoQykgPT09IG51bGwsICJjcm9zcy1vcmlnaW4gV2lu
ZG93IHByb3RvIGlzIG51bGwiKTsKICAgYXNzZXJ0X3RydWUoT2JqZWN0LmdldFByb3RvdHlwZU9m
KEMubG9jYXRpb24pID09PSBudWxsLCAiY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIHByb3RvIGlzIG51
bGwgKF9fcHJvdG9fXykiKTsKICAgdmFyIHByb3RvR2V0dGVyID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuZ2V0OwogICBhc3Nl
cnRfdHJ1ZShwcm90b0dldHRlci5jYWxsKEMpID09PSBudWxsLCAiY3Jvc3Mtb3JpZ2luIFdpbmRv
dyBwcm90byBpcyBudWxsIik7CiAgIGFzc2VydF90cnVlKHByb3RvR2V0dGVyLmNhbGwoQy5sb2Nh
dGlvbikgPT09IG51bGwsICJjcm9zcy1vcmlnaW4gTG9jYXRpb24gcHJvdG8gaXMgbnVsbCAoX19w
cm90b19fKSIpOwotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBDLl9fcHJvdG9f
XzsgfSwgIl9fcHJvdG9fXyBwcm9wZXJ0eSBub3QgYXZhaWxhYmxlIGNyb3NzLW9yaWdpbiIpOwot
ICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBDLmxvY2F0aW9uLl9fcHJvdG9fXzsg
fSwgIl9fcHJvdG9fXyBwcm9wZXJ0eSBub3QgYXZhaWxhYmxlIGNyb3NzLW9yaWdpbiIpOworICB0
ZXN0X3Rocm93cyhleGNlcHRpb25fdCwgIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgQy5f
X3Byb3RvX187IH0sICJfX3Byb3RvX18gcHJvcGVydHkgbm90IGF2YWlsYWJsZSBjcm9zcy1vcmln
aW4iKTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rp
b24oKSB7IEMubG9jYXRpb24uX19wcm90b19fOyB9LCAiX19wcm90b19fIHByb3BlcnR5IG5vdCBh
dmFpbGFibGUgY3Jvc3Mtb3JpZ2luIik7CiAKIH0sICJbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxk
IHJldHVybiBudWxsIik7CiAKIC8qCiAgKiBbW1NldFByb3RvdHlwZU9mXV0KICAqLwotYWRkVGVz
dChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyhudWxsLCBmdW5jdGlvbigpIHsgQy5fX3By
b3RvX18gPSBuZXcgT2JqZWN0KCk7IH0sICJwcm90byBzZXQgb24gY3Jvc3Mtb3JpZ2luIFdpbmRv
dyIpOwotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBDLmxvY2F0aW9uLl9fcHJv
dG9fXyA9IG5ldyBPYmplY3QoKTsgfSwgInByb3RvIHNldCBvbiBjcm9zcy1vcmlnaW4gTG9jYXRp
b24iKTsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9uX3QpIHsKKyAgdGVzdF90aHJvd3MoZXhj
ZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IEMuX19wcm90b19fID0gbmV3
IE9iamVjdCgpOyB9LCAicHJvdG8gc2V0IG9uIGNyb3NzLW9yaWdpbiBXaW5kb3ciKTsKKyAgdGVz
dF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IEMubG9j
YXRpb24uX19wcm90b19fID0gbmV3IE9iamVjdCgpOyB9LCAicHJvdG8gc2V0IG9uIGNyb3NzLW9y
aWdpbiBMb2NhdGlvbiIpOwogICB2YXIgc2V0dGVycyA9IFtPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXRdOwogICBpZiAoT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKQogICAgIHNldHRlcnMucHVzaChmdW5jdGlvbihwKSB7IE9iamVj
dC5zZXRQcm90b3R5cGVPZih0aGlzLCBwKTsgfSk7CiAgIHNldHRlcnMuZm9yRWFjaChmdW5jdGlv
bihwcm90b1NldHRlcikgewotICAgIGFzc2VydF90aHJvd3MobnVsbCwgZnVuY3Rpb24oKSB7IHBy
b3RvU2V0dGVyLmNhbGwoQywgbmV3IE9iamVjdCgpKTsgfSwgInByb3RvIHNldHRlciB8Y2FsbHwg
b24gY3Jvc3Mtb3JpZ2luIFdpbmRvdyIpOwotICAgIGFzc2VydF90aHJvd3MobnVsbCwgZnVuY3Rp
b24oKSB7IHByb3RvU2V0dGVyLmNhbGwoQy5sb2NhdGlvbiwgbmV3IE9iamVjdCgpKTsgfSwgInBy
b3RvIHNldHRlciB8Y2FsbHwgb24gY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIik7CisgICAgdGVzdF90
aHJvd3MoZXhjZXB0aW9uX3QsIG5ldyBUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBwcm90b1NldHRl
ci5jYWxsKEMsIG5ldyBPYmplY3QoKSk7IH0sICJwcm90byBzZXR0ZXIgfGNhbGx8IG9uIGNyb3Nz
LW9yaWdpbiBXaW5kb3ciKTsKKyAgICB0ZXN0X3Rocm93cyhleGNlcHRpb25fdCwgbmV3IFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7IHByb3RvU2V0dGVyLmNhbGwoQy5sb2NhdGlvbiwgbmV3IE9iamVj
dCgpKTsgfSwgInByb3RvIHNldHRlciB8Y2FsbHwgb24gY3Jvc3Mtb3JpZ2luIExvY2F0aW9uIik7
CiAgIH0pOwogfSwgIltbU2V0UHJvdG90eXBlT2ZdXSBzaG91bGQgdGhyb3ciKTsKIAogLyoKICAq
IFtbSXNFeHRlbnNpYmxlXV0KICAqLwotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVu
Y3Rpb24oZXhjZXB0aW9uX3QpIHsKICAgYXNzZXJ0X3RydWUoT2JqZWN0LmlzRXh0ZW5zaWJsZShD
KSwgImNyb3NzLW9yaWdpbiBXaW5kb3cgc2hvdWxkIGJlIGV4dGVuc2libGUiKTsKICAgYXNzZXJ0
X3RydWUoT2JqZWN0LmlzRXh0ZW5zaWJsZShDLmxvY2F0aW9uKSwgImNyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBzaG91bGQgYmUgZXh0ZW5zaWJsZSIpOwogfSwgIltbSXNFeHRlbnNpYmxlXV0gc2hvdWxk
IHJldHVybiB0cnVlIGZvciBjcm9zcy1vcmlnaW4gb2JqZWN0cyIpOwpAQCAtMTU5LDEwICsxNTks
MTAgQEAgYWRkVGVzdChmdW5jdGlvbigpIHsKIC8qCiAgKiBbW1ByZXZlbnRFeHRlbnNpb25zXV0K
ICAqLwotYWRkVGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X3Rocm93cyhudWxsLCBmdW5jdGlv
bigpIHsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKEMpIH0sCithZGRUZXN0KGZ1bmN0aW9uKGV4
Y2VwdGlvbl90KSB7CisgIHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCBuZXcgVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKEMpIH0sCiAgICAgICAgICAgICAg
ICAgInByZXZlbnRFeHRlbnNpb25zIG9uIGNyb3NzLW9yaWdpbiBXaW5kb3cgc2hvdWxkIHRocm93
Iik7Ci0gIGFzc2VydF90aHJvd3MobnVsbCwgZnVuY3Rpb24oKSB7IE9iamVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyhDLmxvY2F0aW9uKSB9LAorICB0ZXN0X3Rocm93cyhleGNlcHRpb25fdCwgbmV3IFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhDLmxvY2F0aW9u
KSB9LAogICAgICAgICAgICAgICAgICJwcmV2ZW50RXh0ZW5zaW9ucyBvbiBjcm9zcy1vcmlnaW4g
TG9jYXRpb24gc2hvdWxkIHRocm93Iik7CiB9LCAiW1tQcmV2ZW50RXh0ZW5zaW9uc11dIHNob3Vs
ZCB0aHJvdyBmb3IgY3Jvc3Mtb3JpZ2luIG9iamVjdHMiKTsKIApAQCAtMTcwLDcgKzE3MCw3IEBA
IGFkZFRlc3QoZnVuY3Rpb24oKSB7CiAgKiBbW0dldE93blByb3BlcnR5XV0KICAqLwogCi1hZGRU
ZXN0KGZ1bmN0aW9uKCkgeworYWRkVGVzdChmdW5jdGlvbihleGNlcHRpb25fdCkgewogICBhc3Nl
cnRfdHJ1ZShpc09iamVjdChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMsICdjbG9z
ZScpKSwgIkMuY2xvc2UgaXMgfG93bnwiKTsKICAgYXNzZXJ0X3RydWUoaXNPYmplY3QoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLCAndG9wJykpLCAiQy50b3AgaXMgfG93bnwiKTsK
ICAgYXNzZXJ0X3RydWUoaXNPYmplY3QoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihD
LmxvY2F0aW9uLCAnaHJlZicpKSwgIkMubG9jYXRpb24uaHJlZiBpcyB8b3dufCIpOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIGZ1bmN0aW9uIGNoZWNrUHJvcGVydHlEZXNjcmlwdG9yKGRlc2MsIHByb3BO
YW1lLCBleHBlY3RXcml0YWJsZSkgewogICAgICAgICAgICAgICAgICAgInByb3BlcnR5IGRlc2Ny
aXB0b3IgZm9yICIgKyBwcm9wTmFtZSArICIgc2hvdWxkICIgKyAoZXhwZWN0V3JpdGFibGUgPyAi
IiA6ICJub3QgIikgKyAiaGF2ZSBzZXR0ZXIiKTsKIH0KIAotYWRkVGVzdChmdW5jdGlvbigpIHsK
K2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9uX3QpIHsKICAgd2hpdGVsaXN0ZWRXaW5kb3dQcm9w
cy5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHsKICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoQywgcHJvcCk7CiAgICAgY2hlY2tQcm9wZXJ0eURlc2NyaXB0b3Io
ZGVzYywgcHJvcCwgcHJvcCA9PSAnbG9jYXRpb24nKTsKQEAgLTIxNCw0NiArMjE0LDQ2IEBAIGFk
ZFRlc3QoZnVuY3Rpb24oKSB7CiAvKgogICogW1tEZWxldGVdXQogICovCi1hZGRUZXN0KGZ1bmN0
aW9uKCkgewotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQ1swXTsg
fSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmlnaW4gaW5kZXhlZCBwcm9wZXJ0eSIpOwotICBhc3Nl
cnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQ1sxMDBdOyB9LCAiQ2FuJ3QgZGVs
ZXRlIGNyb3NzLW9yaWdpbiBpbmRleGVkIHByb3BlcnR5Iik7Ci0gIGFzc2VydF90aHJvd3MobnVs
bCwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLmxvY2F0aW9uOyB9LCAiQ2FuJ3QgZGVsZXRlIGNyb3Nz
LW9yaWdpbiBwcm9wZXJ0eSIpOwotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBk
ZWxldGUgQy5wYXJlbnQ7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2luIHByb3BlcnR5Iik7
Ci0gIGFzc2VydF90aHJvd3MobnVsbCwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLmxlbmd0aDsgfSwg
IkNhbid0IGRlbGV0ZSBjcm9zcy1vcmlnaW4gcHJvcGVydHkiKTsKLSAgYXNzZXJ0X3Rocm93cyhu
dWxsLCBmdW5jdGlvbigpIHsgZGVsZXRlIEMuZG9jdW1lbnQ7IH0sICJDYW4ndCBkZWxldGUgY3Jv
c3Mtb3JpZ2luIHByb3BlcnR5Iik7Ci0gIGFzc2VydF90aHJvd3MobnVsbCwgZnVuY3Rpb24oKSB7
IGRlbGV0ZSBDLmZvb3B5OyB9LCAiQ2FuJ3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIp
OwotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQy5sb2NhdGlvbi5o
cmVmOyB9LCAiQ2FuJ3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIpOwotICBhc3NlcnRf
dGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQy5sb2NhdGlvbi5yZXBsYWNlOyB9LCAi
Q2FuJ3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIpOwotICBhc3NlcnRfdGhyb3dzKG51
bGwsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQy5sb2NhdGlvbi5wb3J0OyB9LCAiQ2FuJ3QgZGVsZXRl
IGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIpOwotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9u
KCkgeyBkZWxldGUgQy5sb2NhdGlvbi5mb29weTsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmln
aW4gcHJvcGVydHkiKTsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9uX3QpIHsKKyAgdGVzdF90
aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBD
WzBdOyB9LCAiQ2FuJ3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBpbmRleGVkIHByb3BlcnR5Iik7Cisg
IHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCAiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBk
ZWxldGUgQ1sxMDBdOyB9LCAiQ2FuJ3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBpbmRleGVkIHByb3Bl
cnR5Iik7CisgIHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCAiU2VjdXJpdHlFcnJvciIsIGZ1bmN0
aW9uKCkgeyBkZWxldGUgQy5sb2NhdGlvbjsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmlnaW4g
cHJvcGVydHkiKTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwg
ZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLnBhcmVudDsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmln
aW4gcHJvcGVydHkiKTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9y
IiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLmxlbmd0aDsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1v
cmlnaW4gcHJvcGVydHkiKTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVy
cm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBDLmRvY3VtZW50OyB9LCAiQ2FuJ3QgZGVsZXRlIGNy
b3NzLW9yaWdpbiBwcm9wZXJ0eSIpOworICB0ZXN0X3Rocm93cyhleGNlcHRpb25fdCwgIlNlY3Vy
aXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgZGVsZXRlIEMuZm9vcHk7IH0sICJDYW4ndCBkZWxldGUg
Y3Jvc3Mtb3JpZ2luIHByb3BlcnR5Iik7CisgIHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCAiU2Vj
dXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkgeyBkZWxldGUgQy5sb2NhdGlvbi5ocmVmOyB9LCAiQ2Fu
J3QgZGVsZXRlIGNyb3NzLW9yaWdpbiBwcm9wZXJ0eSIpOworICB0ZXN0X3Rocm93cyhleGNlcHRp
b25fdCwgIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgZGVsZXRlIEMubG9jYXRpb24ucmVw
bGFjZTsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmlnaW4gcHJvcGVydHkiKTsKKyAgdGVzdF90
aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGRlbGV0ZSBD
LmxvY2F0aW9uLnBvcnQ7IH0sICJDYW4ndCBkZWxldGUgY3Jvc3Mtb3JpZ2luIHByb3BlcnR5Iik7
CisgIHRlc3RfdGhyb3dzKGV4Y2VwdGlvbl90LCAiU2VjdXJpdHlFcnJvciIsIGZ1bmN0aW9uKCkg
eyBkZWxldGUgQy5sb2NhdGlvbi5mb29weTsgfSwgIkNhbid0IGRlbGV0ZSBjcm9zcy1vcmlnaW4g
cHJvcGVydHkiKTsKIH0sICJbW0RlbGV0ZV1dIFNob3VsZCB0aHJvdyBvbiBjcm9zcy1vcmlnaW4g
b2JqZWN0cyIpOwogCiAvKgogICogW1tEZWZpbmVPd25Qcm9wZXJ0eV1dCiAgKi8KLWZ1bmN0aW9u
IGNoZWNrRGVmaW5lKG9iaiwgcHJvcCkgeworZnVuY3Rpb24gY2hlY2tEZWZpbmUoZXhjZXB0aW9u
X3QsIG9iaiwgcHJvcCkgewogICB2YXIgdmFsdWVEZXNjID0geyBjb25maWd1cmFibGU6IHRydWUs
IGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIHZhbHVlOiAyIH07CiAgIHZhciBh
Y2Nlc3NvckRlc2MgPSB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGdl
dDogZnVuY3Rpb24oKSB7fSB9OwotICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0aW9uKCkgeyBP
YmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCB2YWx1ZURlc2MpOyB9LCAiQ2FuJ3QgZGVm
aW5lIGNyb3NzLW9yaWdpbiB2YWx1ZSBwcm9wZXJ0eSAiICsgcHJvcCk7Ci0gIGFzc2VydF90aHJv
d3MobnVsbCwgZnVuY3Rpb24oKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIGFj
Y2Vzc29yRGVzYyk7IH0sICJDYW4ndCBkZWZpbmUgY3Jvc3Mtb3JpZ2luIGFjY2Vzc29yIHByb3Bl
cnR5ICIgKyBwcm9wKTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9y
IiwgZnVuY3Rpb24oKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHZhbHVlRGVz
Yyk7IH0sICJDYW4ndCBkZWZpbmUgY3Jvc3Mtb3JpZ2luIHZhbHVlIHByb3BlcnR5ICIgKyBwcm9w
KTsKKyAgdGVzdF90aHJvd3MoZXhjZXB0aW9uX3QsICJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24o
KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIGFjY2Vzc29yRGVzYyk7IH0sICJD
YW4ndCBkZWZpbmUgY3Jvc3Mtb3JpZ2luIGFjY2Vzc29yIHByb3BlcnR5ICIgKyBwcm9wKTsKIH0K
LWFkZFRlc3QoZnVuY3Rpb24oKSB7Ci0gIGNoZWNrRGVmaW5lKEMsICdsZW5ndGgnKTsKLSAgY2hl
Y2tEZWZpbmUoQywgJ3BhcmVudCcpOwotICBjaGVja0RlZmluZShDLCAnbG9jYXRpb24nKTsKLSAg
Y2hlY2tEZWZpbmUoQywgJ2RvY3VtZW50Jyk7Ci0gIGNoZWNrRGVmaW5lKEMsICdmb29weScpOwot
ICBjaGVja0RlZmluZShDLmxvY2F0aW9uLCAnaHJlZicpOwotICBjaGVja0RlZmluZShDLmxvY2F0
aW9uLCAncmVwbGFjZScpOwotICBjaGVja0RlZmluZShDLmxvY2F0aW9uLCAncG9ydCcpOwotICBj
aGVja0RlZmluZShDLmxvY2F0aW9uLCAnZm9vcHknKTsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0
aW9uX3QpIHsKKyAgY2hlY2tEZWZpbmUoZXhjZXB0aW9uX3QsIEMsICdsZW5ndGgnKTsKKyAgY2hl
Y2tEZWZpbmUoZXhjZXB0aW9uX3QsIEMsICdwYXJlbnQnKTsKKyAgY2hlY2tEZWZpbmUoZXhjZXB0
aW9uX3QsIEMsICdsb2NhdGlvbicpOworICBjaGVja0RlZmluZShleGNlcHRpb25fdCwgQywgJ2Rv
Y3VtZW50Jyk7CisgIGNoZWNrRGVmaW5lKGV4Y2VwdGlvbl90LCBDLCAnZm9vcHknKTsKKyAgY2hl
Y2tEZWZpbmUoZXhjZXB0aW9uX3QsIEMubG9jYXRpb24sICdocmVmJyk7CisgIGNoZWNrRGVmaW5l
KGV4Y2VwdGlvbl90LCBDLmxvY2F0aW9uLCAncmVwbGFjZScpOworICBjaGVja0RlZmluZShleGNl
cHRpb25fdCwgQy5sb2NhdGlvbiwgJ3BvcnQnKTsKKyAgY2hlY2tEZWZpbmUoZXhjZXB0aW9uX3Qs
IEMubG9jYXRpb24sICdmb29weScpOwogfSwgIltbRGVmaW5lT3duUHJvcGVydHldXSBTaG91bGQg
dGhyb3cgZm9yIGNyb3NzLW9yaWdpbiBvYmplY3RzIik7CiAKIC8qCiAgKiBbW0VudW1lcmF0ZV1d
CiAgKi8KIAotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9u
X3QpIHsKICAgZm9yICh2YXIgcHJvcCBpbiBDKQogICAgIGFzc2VydF91bnJlYWNoZWQoIlNob3Vs
ZG4ndCBoYXZlIGJlZW4gYWJsZSB0byBlbnVtZXJhdGUgIiArIHByb3AgKyAiIG9uIGNyb3NzLW9y
aWdpbiBXaW5kb3ciKTsKICAgZm9yICh2YXIgcHJvcCBpbiBDLmxvY2F0aW9uKQpAQCAtMjY0LDcg
KzI2NCw3IEBAIGFkZFRlc3QoZnVuY3Rpb24oKSB7CiAgKiBbW093blByb3BlcnR5S2V5c11dCiAg
Ki8KIAotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9uX3Qp
IHsKICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhDKS5z
b3J0KCksCiAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0ZWRXaW5kb3dQcm9wTmFtZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgIk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKCkgZ2l2
ZXMgdGhlIHJpZ2h0IGFuc3dlciBmb3IgY3Jvc3Mtb3JpZ2luIFdpbmRvdyIpOwpAQCAtMjczLDcg
KzI3Myw3IEBAIGFkZFRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIk9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKCkgZ2l2ZXMgdGhlIHJpZ2h0IGFuc3dlciBmb3IgY3Jv
c3Mtb3JpZ2luIExvY2F0aW9uIik7CiB9LCAiW1tPd25Qcm9wZXJ0eUtleXNdXSBzaG91bGQgcmV0
dXJuIGFsbCBwcm9wZXJ0aWVzIGZyb20gY3Jvc3Mtb3JpZ2luIG9iamVjdHMiKTsKIAotYWRkVGVz
dChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9uX3QpIHsKICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKEMpLCB3aGl0ZWxpc3Rl
ZFN5bWJvbHMsCiAgICAgIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoKSBzaG91bGQgcmV0
dXJuIHRoZSB0aHJlZSBzeW1ib2wtbmFtZWQgcHJvcGVydGllcyB0aGF0IGFyZSBleHBvc2VkIG9u
IGEgY3Jvc3Mtb3JpZ2luIFdpbmRvdyIpOwogICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMoQy5sb2NhdGlvbiksCkBAIC0yODEsNyArMjgxLDcgQEAgYWRk
VGVzdChmdW5jdGlvbigpIHsKICAgICAiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scygpIHNo
b3VsZCByZXR1cm4gdGhlIHRocmVlIHN5bWJvbC1uYW1lZCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGV4
cG9zZWQgb24gYSBjcm9zcy1vcmlnaW4gTG9jYXRpb24iKTsKIH0sICJbW093blByb3BlcnR5S2V5
c11dIHNob3VsZCByZXR1cm4gdGhlIHJpZ2h0IHN5bWJvbC1uYW1lZCBwcm9wZXJ0aWVzIGZvciBj
cm9zcy1vcmlnaW4gb2JqZWN0cyIpOwogCi1hZGRUZXN0KGZ1bmN0aW9uKCkgeworYWRkVGVzdChm
dW5jdGlvbihleGNlcHRpb25fdCkgewogICB2YXIgYWxsV2luZG93UHJvcHMgPSBSZWZsZWN0Lm93
bktleXMoQyk7CiAgIGluZGV4ZWRXaW5kb3dQcm9wcyA9IGFsbFdpbmRvd1Byb3BzLnNsaWNlKDAs
IHdoaXRlbGlzdGVkV2luZG93SW5kaWNlcy5sZW5ndGgpOwogICBzdHJpbmdXaW5kb3dQcm9wcyA9
IGFsbFdpbmRvd1Byb3BzLnNsaWNlKDAsIC0xICogd2hpdGVsaXN0ZWRTeW1ib2xzLmxlbmd0aCk7
CkBAIC0zMDIsNyArMzAyLDcgQEAgYWRkVGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAiUmVmbGVjdC5vd25LZXlzIHNob3VsZCBlbmQgd2l0aCB0aGUgY3Jvc3Mtb3JpZ2lu
IHN5bWJvbHMgZm9yIGEgY3Jvc3Mtb3JpZ2luIExvY2F0aW9uLiIpCiB9LCAiW1tPd25Qcm9wZXJ0
eUtleXNdXSBzaG91bGQgcGxhY2UgdGhlIHN5bWJvbHMgYWZ0ZXIgdGhlIHByb3BlcnR5IG5hbWVz
IGFmdGVyIHRoZSBzdWJmcmFtZSBpbmRpY2VzIik7CiAKLWFkZFRlc3QoZnVuY3Rpb24oKSB7Cith
ZGRUZXN0KGZ1bmN0aW9uKGV4Y2VwdGlvbl90KSB7CiAgIGFzc2VydF90cnVlKEIuZXZhbCgncGFy
ZW50LkMnKSA9PT0gQywgIkEgYW5kIEIgb2JzZXJ2ZSB0aGUgc2FtZSBpZGVudGl0eSBmb3IgQydz
IFdpbmRvdyIpOwogICBhc3NlcnRfdHJ1ZShCLmV2YWwoJ3BhcmVudC5DLmxvY2F0aW9uJykgPT09
IEMubG9jYXRpb24sICJBIGFuZCBCIG9ic2VydmUgdGhlIHNhbWUgaWRlbnRpdHkgZm9yIEMncyBM
b2NhdGlvbiIpOwogfSwgIkEgYW5kIEIgam9pbnRseSBvYnNlcnZlIHRoZSBzYW1lIGlkZW50aXR5
IGZvciBjcm9zcy1vcmlnaW4gV2luZG93IGFuZCBMb2NhdGlvbiIpOwpAQCAtMzEzLDE5ICszMTMs
MTkgQEAgZnVuY3Rpb24gY2hlY2tGdW5jdGlvbihmLCBwcm90bykgewogICBhc3NlcnRfZXF1YWxz
KE9iamVjdC5nZXRQcm90b3R5cGVPZihmKSwgcHJvdG8sIGYubmFtZSArICIgaGFzIHRoZSByaWdo
dCBwcm90b3R5cGUiKTsKIH0KIAotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVuY3Rp
b24oZXhjZXB0aW9uX3QpIHsKICAgY2hlY2tGdW5jdGlvbihDLmNsb3NlLCBGdW5jdGlvbi5wcm90
b3R5cGUpOwogICBjaGVja0Z1bmN0aW9uKEMubG9jYXRpb24ucmVwbGFjZSwgRnVuY3Rpb24ucHJv
dG90eXBlKTsKIH0sICJDcm9zcy1vcmlnaW4gZnVuY3Rpb25zIGdldCBsb2NhbCBGdW5jdGlvbi5w
cm90b3R5cGUiKTsKIAotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVuY3Rpb24oZXhj
ZXB0aW9uX3QpIHsKICAgYXNzZXJ0X3RydWUoaXNPYmplY3QoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihDLCAncGFyZW50JykpLAogICAgICAgICAgICAgICAiTmVlZCB0byBiZSBhYmxl
IHRvIHVzZSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIGRvIHRoaXMgdGVzdCIpOwog
ICBjaGVja0Z1bmN0aW9uKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQywgJ3BhcmVu
dCcpLmdldCwgRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgY2hlY2tGdW5jdGlvbihPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEMubG9jYXRpb24sICdocmVmJykuc2V0LCBGdW5jdGlvbi5w
cm90b3R5cGUpOwogfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGdldCBsb2NhbCBG
dW5jdGlvbi5wcm90b3R5cGUiKTsKIAotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVu
Y3Rpb24oZXhjZXB0aW9uX3QpIHsKICAgY2hlY2tGdW5jdGlvbihjbG9zZSwgRnVuY3Rpb24ucHJv
dG90eXBlKTsKICAgYXNzZXJ0X3RydWUoY2xvc2UgIT0gQi5jbG9zZSwgJ3NhbWUtb3JpZ2luIFdp
bmRvdyBmdW5jdGlvbnMgZ2V0IHRoZWlyIG93biBvYmplY3QnKTsKICAgYXNzZXJ0X3RydWUoY2xv
c2UgIT0gQy5jbG9zZSwgJ2Nyb3NzLW9yaWdpbiBXaW5kb3cgZnVuY3Rpb25zIGdldCB0aGVpciBv
d24gb2JqZWN0Jyk7CkBAIC0zNDEsNyArMzQxLDcgQEAgYWRkVGVzdChmdW5jdGlvbigpIHsKICAg
Y2hlY2tGdW5jdGlvbihyZXBsYWNlX0IsIEIuRnVuY3Rpb24ucHJvdG90eXBlKTsKIH0sICJTYW1l
LW9yaWdpbiBvYnNlcnZlcnMgZ2V0IGRpZmZlcmVudCBmdW5jdGlvbnMgZm9yIGNyb3NzLW9yaWdp
biBvYmplY3RzIik7CiAKLWFkZFRlc3QoZnVuY3Rpb24oKSB7CithZGRUZXN0KGZ1bmN0aW9uKGV4
Y2VwdGlvbl90KSB7CiAgIGFzc2VydF90cnVlKGlzT2JqZWN0KE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoQywgJ3BhcmVudCcpKSwKICAgICAgICAgICAgICAgIk5lZWQgdG8gYmUgYWJs
ZSB0byB1c2UgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciBkbyB0aGlzIHRlc3QiKTsK
ICAgdmFyIGdldF9zZWxmX3BhcmVudCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
d2luZG93LCAncGFyZW50JykuZ2V0OwpAQCAtMzU0LDcgKzM1NCw3IEBAIGFkZFRlc3QoZnVuY3Rp
b24oKSB7CiAgIGNoZWNrRnVuY3Rpb24oZ2V0X3BhcmVudF9CLCBCLkZ1bmN0aW9uLnByb3RvdHlw
ZSk7CiB9LCAiU2FtZS1vcmlnaW4gb2JzZXJ2ZXJzIGdldCBkaWZmZXJlbnQgYWNjZXNzb3JzIGZv
ciBjcm9zcy1vcmlnaW4gV2luZG93Iik7CiAKLWFkZFRlc3QoZnVuY3Rpb24oKSB7CithZGRUZXN0
KGZ1bmN0aW9uKGV4Y2VwdGlvbl90KSB7CiAgIHZhciBzZXRfc2VsZl9ocmVmID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cubG9jYXRpb24sICdocmVmJykuc2V0OwogICB2
YXIgc2V0X2hyZWZfQSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQy5sb2NhdGlv
biwgJ2hyZWYnKS5zZXQ7CiAgIHZhciBzZXRfaHJlZl9CID0gQi5ldmFsKCdPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHBhcmVudC5DLmxvY2F0aW9uLCAiaHJlZiIpLnNldCcpOwpAQCAt
MzY1LDE3ICszNjUsMzkgQEAgYWRkVGVzdChmdW5jdGlvbigpIHsKICAgY2hlY2tGdW5jdGlvbihz
ZXRfaHJlZl9CLCBCLkZ1bmN0aW9uLnByb3RvdHlwZSk7CiB9LCAiU2FtZS1vcmlnaW4gb2JzZXJ2
ZXJzIGdldCBkaWZmZXJlbnQgYWNjZXNzb3JzIGZvciBjcm9zcy1vcmlnaW4gTG9jYXRpb24iKTsK
IAotYWRkVGVzdChmdW5jdGlvbigpIHsKK2FkZFRlc3QoZnVuY3Rpb24oZXhjZXB0aW9uX3QpIHsK
ICAgYXNzZXJ0X2VxdWFscyh7fS50b1N0cmluZy5jYWxsKEMpLCAiW29iamVjdCBPYmplY3RdIik7
CiAgIGFzc2VydF9lcXVhbHMoe30udG9TdHJpbmcuY2FsbChDLmxvY2F0aW9uKSwgIltvYmplY3Qg
T2JqZWN0XSIpOwogfSwgInt9LnRvU3RyaW5nLmNhbGwoKSBkb2VzIHRoZSByaWdodCB0aGluZyBv
biBjcm9zcy1vcmlnaW4gb2JqZWN0cyIpOwogCisvLyBTZXBhcmF0ZSB0ZXN0IGZvciB0aHJvd2lu
ZyBhdCBhbGwgYW5kIHRocm93aW5nIHRoZSByaWdodCBleGNlcHRpb24gdHlwZQorLy8gc28gdGhh
dCB3ZSBjYW4gdGVzdCB0aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgY291bGQgcGFzcyB3aGlsZSBp
bXBsZW1lbnRpbmcKKy8vIHRoZSBvYnNlcnZhYmxlcyB0aGF0IGFyZSBhY3R1YWxseSBpbXBvcnRh
bnQgZm9yIHNlY3VyaXR5IGFuZCBpbnRlcm9wLCBzbworLy8gdGhleSB3b3VsZCBub3RpY2UgaWYg
dGhleSBldmVyIHJlZ3Jlc3NlZCB0aGVtLgorZnVuY3Rpb24gdGVzdF90aHJvd3MoZXhjZXB0aW9u
X3QsIGNvZGUsIGZ1bmMsIGRlc2NyaXB0aW9uKSB7CisgIGFzc2VydF90aHJvd3MobnVsbCwgZnVu
YywgZGVzY3JpcHRpb24pOworICBleGNlcHRpb25fdC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF90aHJvd3MoY29kZSwgZnVuYywgZGVzY3JpcHRpb24pOworICB9KTsKK30KKwogLy8gV2Ug
ZG8gYSBmcmVzaCBsb2FkIG9mIHRoZSBzdWJmcmFtZXMgZm9yIGVhY2ggdGVzdCB0byBtaW5pbWl6
ZSBzaWRlLWVmZmVjdHMuCiAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIHJlbG9hZCBvdXJzZWx2ZXMg
YXMgd2VsbCwgYnV0IHdlIGNhbid0IGRvIHRoYXQgd2l0aG91dAogLy8gZGlzcnVwdGluZyB0aGUg
dGVzdCBoYXJuZXNzLgogZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CiAgIHZhciBlbnRyeSA9IHRl
c3RMaXN0LnNoaWZ0KCk7Ci0gIHRlc3QoZW50cnlbMF0sIGVudHJ5WzFdKTsKKyAgdmFyIGZ1biA9
IGVudHJ5WzBdOworICB2YXIgZGVzYyA9IGVudHJ5WzFdOworICB2YXIgbWFpbl90ID0gYXN5bmNf
dGVzdChkZXNjKTsKKyAgdmFyIGV4Y2VwdGlvbl90ID0gYXN5bmNfdGVzdChkZXNjICsgJyAoZXhj
ZXB0aW9uIHR5cGUpJyk7CisgIG1haW5fdC5hZGRfY2xlYW51cChmdW5jdGlvbigpIHsKKyAgICBl
eGNlcHRpb25fdC51bnJlYWNoZWRfZnVuYygnTWFpbiB0ZXN0IGZhaWxlZCcpKCk7CisgIH0pOwor
ICBtYWluX3Quc3RlcChmdW5jdGlvbigpIHsKKyAgICBmdW4oZXhjZXB0aW9uX3QpOworICB9KTsK
KyAgZXhjZXB0aW9uX3QuZG9uZSgpOworICBtYWluX3QuZG9uZSgpOwogICBpZiAodGVzdExpc3Qu
bGVuZ3RoICE9IDApCiAgICAgcmVsb2FkU3ViZnJhbWVzKHJ1bk5leHRUZXN0KTsKICAgZWxzZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9mcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9mcmFtZS5odG1sCmluZGV4IGVjNjNjMmJmOWNhZjQ4
YThmMjRmZGJkZGIwNmU3ZGM1MjM2M2FjMjcuLjBhNzc2OWRjOTY3MThlZjMwMGE3YWU5ZGY2ZDIw
MWUwNTNlOWU5ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvZnJh
bWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2ZyYW1lLmh0bWwKQEAg
LTM1LDcgKzM1LDcgQEAKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci0gIDwhLS0gIFR3byBz
dWJmcmFtZXMgdG8gZ2l2ZSB1cyBzb21lIGluZGV4ZWQgcHJvcGVydGllcyAgLS0+CisgIDwhLS0g
VHdvIHN1YmZyYW1lcyB0byBnaXZlIHVzIHNvbWUgaW5kZXhlZCBwcm9wZXJ0aWVzIC0tPgogICA8
aWZyYW1lPjwvaWZyYW1lPgogICA8aWZyYW1lPjwvaWZyYW1lPgogPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvdzNjLWltcG9ydC5sb2cKaW5kZXggNzVhNzI5MWZhYjkxYTUx
MGJlODljYThlOGQxMzYwYmNlZWFhZWYxZC4uMWNmMjBhMjdmMzA2NjZjNTdmNDY1YWMwN2Q1NWIz
MDA1M2ViYjAzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy93M2Mt
aW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL3czYy1pbXBvcnQu
bG9nCkBAIC0xNSw3ICsxNSw2IEBAIFByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZXhjZXB0aW9ucy5odG1s
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1vbi1u
ZXctd2luZG93Lmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdp
bi1vYmplY3RzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2ZyYW1lLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>