<?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>44055</bug_id>
          
          <creation_ts>2010-08-16 06:50:23 -0700</creation_ts>
          <short_desc>REGRESSION(r65414): GTK &amp; QT tests failing. (Requested by pfeldman on #webkit).</short_desc>
          <delta_ts>2010-08-17 10:28:22 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>44028</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265070</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-16 06:50:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65414 broke the build:
GTL &amp; QT tests failing. (Requested by pfeldman on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265071</commentid>
    <comment_count>1</comment_count>
      <attachid>64491</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-16 06:50:35 -0700</bug_when>
    <thetext>Created attachment 64491
ROLLOUT of r65414

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265074</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-16 06:56:03 -0700</bug_when>
    <thetext>It broke Leopard too: http://build.webkit.org/results/Leopard%20Intel%20Release%20%28Tests%29/r65415%20%2819363%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265076</commentid>
    <comment_count>3</comment_count>
      <attachid>64491</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-16 06:58:39 -0700</bug_when>
    <thetext>Comment on attachment 64491
ROLLOUT of r65414

Clearing flags on attachment: 64491

Committed r65423: &lt;http://trac.webkit.org/changeset/65423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265077</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-16 06:58:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64491</attachid>
            <date>2010-08-16 06:50:35 -0700</date>
            <delta_ts>2010-08-16 06:58:39 -0700</delta_ts>
            <desc>ROLLOUT of r65414</desc>
            <filename>bug-44055-20100816135034.patch</filename>
            <type>text/plain</type>
            <size>39327</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQ3MDQ1YWMwMTc5MjJlM2E1ZWU0YzNhZTY2ZWU0Zjk1NDFkZWEyZC4uNGIwZmUxNWZmZDlkYjEx
OWFkOGI3N2ZjMzNlZWFkMzBmMGJkMzFkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0xNiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjY1NDE0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC82NTQxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDQwNTUKKworICAgICAgICBHVEwgJiBRVCB0ZXN0cyBmYWlsaW5nLiAoUmVxdWVz
dGVkIGJ5IHBmZWxkbWFuIG9uICN3ZWJraXQpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0
b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3JpcHRDb25zdHJ1Y3Rvci4pOgorCiAyMDEwLTA4LTE2
ICBBcml5YSBIaWRheWF0ICA8YXJpeWFAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luamVjdGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVk
U2NyaXB0LmpzCmluZGV4IGNhZmZkM2YxYzZjZjk3YmZiYTVlYThlYTE5NzM1NTFkMDVlNmVhYTIu
LmZhMGJhNjM1YWIxYjAzYzA1MWI3NmI0OGI3YjcwMmE3NTY3MmEzOGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTI4LDQ4NiArMjgsMzI5
IEBACiAKIHZhciBpbmplY3RlZFNjcmlwdENvbnN0cnVjdG9yID0gKGZ1bmN0aW9uIChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCwganNFbmdpbmUp
IHsKIAotdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24oKQordmFyIEluamVjdGVkU2NyaXB0
ID0ge307CisKK0luamVjdGVkU2NyaXB0Lmxhc3RCb3VuZE9iamVjdElkID0gMTsKK0luamVjdGVk
U2NyaXB0LmlkVG9XcmFwcGVkT2JqZWN0ID0ge307CitJbmplY3RlZFNjcmlwdC5vYmplY3RHcm91
cHMgPSB7fTsKKworSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdEZvckNvbnNvbGUgPSBmdW5jdGlv
bihvYmplY3QsIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdykKIHsKLSAgICB0aGlzLl9sYXN0Qm91
bmRPYmplY3RJZCA9IDE7Ci0gICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSB7fTsKLSAgICB0
aGlzLl9vYmplY3RHcm91cHMgPSB7fTsKKyAgICBpZiAoY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93
KQorICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChvYmplY3QsICJjb25z
b2xlIik7CisgICAgdmFyIHJlc3VsdCA9IHt9OworICAgIHJlc3VsdC50eXBlID0gdHlwZW9mIG9i
amVjdDsKKyAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBJbmplY3RlZFNjcmlwdC5fdG9TdHJpbmco
b2JqZWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbmplY3RlZFNjcmlwdC5wcm90b3R5
cGUgPSB7Ci0gICAgd3JhcE9iamVjdEZvckNvbnNvbGU6IGZ1bmN0aW9uKG9iamVjdCwgY2FuQWNj
ZXNzSW5zcGVjdGVkV2luZG93KQotICAgIHsKLSAgICAgICAgaWYgKGNhbkFjY2Vzc0luc3BlY3Rl
ZFdpbmRvdykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgImNv
bnNvbGUiKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IHt9OwotICAgICAgICByZXN1bHQudHlwZSA9
IHR5cGVvZiBvYmplY3Q7Ci0gICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IHRoaXMuX3RvU3Ry
aW5nKG9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF93cmFw
T2JqZWN0OiBmdW5jdGlvbihvYmplY3QsIG9iamVjdEdyb3VwTmFtZSkKLSAgICB7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICB2YXIgb2JqZWN0SWQ7Ci0gICAgICAgICAgICBpZiAodHlwZW9m
IG9iamVjdCA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIiB8fCB0
aGlzLl9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iamVjdCkpIHsKLSAgICAgICAgICAgICAgICB2YXIg
aWQgPSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCsrOwotICAgICAgICAgICAgICAgIG9iamVjdElk
ID0gaWQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3RbaWRdID0gb2Jq
ZWN0OwotICAgIAotICAgICAgICAgICAgICAgIHZhciBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vw
c1tvYmplY3RHcm91cE5hbWVdOwotICAgICAgICAgICAgICAgIGlmICghZ3JvdXApIHsKLSAgICAg
ICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fb2Jq
ZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0SWQg
PSBuZXcgSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQoSW5qZWN0ZWRTY3JpcHQuUmVtb3Rl
T2JqZWN0SWQuVHlwZS5Kc09iamVjdCwgaWQpOworSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdCA9
IGZ1bmN0aW9uKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lKQoreworICAgIHRyeSB7CisgICAgICAg
IHZhciBvYmplY3RJZDsKKyAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJvYmplY3QiIHx8
IHR5cGVvZiBvYmplY3QgPT09ICJmdW5jdGlvbiIgfHwgSW5qZWN0ZWRTY3JpcHQuX2lzSFRNTEFs
bENvbGxlY3Rpb24ob2JqZWN0KSkgeworICAgICAgICAgICAgdmFyIGlkID0gSW5qZWN0ZWRTY3Jp
cHQubGFzdEJvdW5kT2JqZWN0SWQrKzsKKyAgICAgICAgICAgIG9iamVjdElkID0gaWQ7CisgICAg
ICAgICAgICBJbmplY3RlZFNjcmlwdC5pZFRvV3JhcHBlZE9iamVjdFtpZF0gPSBvYmplY3Q7CisK
KyAgICAgICAgICAgIHZhciBncm91cCA9IEluamVjdGVkU2NyaXB0Lm9iamVjdEdyb3Vwc1tvYmpl
Y3RHcm91cE5hbWVdOworICAgICAgICAgICAgaWYgKCFncm91cCkgeworICAgICAgICAgICAgICAg
IGdyb3VwID0gW107CisgICAgICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHQub2JqZWN0R3JvdXBz
W29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdChvYmplY3QsIG9iamVj
dElkKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0KCJbIEV4Y2VwdGlvbjogIiArIGUudG9TdHJp
bmcoKSArICIgXSIpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHJlbGVhc2VXcmFwcGVyT2Jq
ZWN0R3JvdXA6IGZ1bmN0aW9uKG9iamVjdEdyb3VwTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBn
cm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwotICAgICAgICBpZiAo
IWdyb3VwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGdyb3VwLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9XcmFwcGVk
T2JqZWN0W2dyb3VwW2ldXTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX29iamVjdEdyb3Vwc1tvYmpl
Y3RHcm91cE5hbWVdOwotICAgIH0sCi0KLSAgICBkaXNwYXRjaDogZnVuY3Rpb24obWV0aG9kTmFt
ZSwgYXJncykKLSAgICB7Ci0gICAgICAgIHZhciBhcmdzQXJyYXkgPSBldmFsKCIoIiArIGFyZ3Mg
KyAiKSIpOwotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpc1ttZXRob2ROYW1lXS5hcHBseSh0aGlz
LCBhcmdzQXJyYXkpOwotICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIp
IHsKLSAgICAgICAgICAgIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLmVycm9yKCJXZWIgSW5zcGVj
dG9yIGVycm9yOiBJbmplY3RlZFNjcmlwdC4lcyByZXR1cm5zIHVuZGVmaW5lZCIsIG1ldGhvZE5h
bWUpOwotICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgICAgIGdyb3VwLnB1c2go
aWQpOworICAgICAgICAgICAgb2JqZWN0SWQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2Jq
ZWN0SWQoSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQuVHlwZS5Kc09iamVjdCwgaWQpOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIGdldFByb3Rv
dHlwZXM6IGZ1bmN0aW9uKG5vZGVJZCkKLSAgICB7Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5f
bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICB2YXIgcHJv
dG90eXBlID0gbm9kZTsKLSAgICAgICAgdmFyIHByb3RvdHlwZUlkID0gbmV3IEluamVjdGVkU2Ny
aXB0LlJlbW90ZU9iamVjdElkKEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdElkLlR5cGUuTm9k
ZSwgbm9kZUlkKTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2goSW5qZWN0
ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21PYmplY3QocHJvdG90eXBlLCBwcm90b3R5cGVJZCkp
OwotICAgICAgICAgICAgcHJvdG90eXBlID0gcHJvdG90eXBlLl9fcHJvdG9fXzsKLSAgICAgICAg
ICAgIHByb3RvdHlwZUlkID0gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQuZGVyaXZlUHJv
cGVydHkocHJvdG90eXBlSWQsICJfX3Byb3RvX18iKTsKLSAgICAgICAgfSB3aGlsZSAocHJvdG90
eXBlKQotICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCisgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdChvYmplY3QsIG9iamVjdElk
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5SZW1v
dGVPYmplY3QuZnJvbU9iamVjdCgiWyBFeGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkgKyAiIF0i
KTsKKyAgICB9Cit9OworCitJbmplY3RlZFNjcmlwdC51bndyYXBPYmplY3QgPSBmdW5jdGlvbihv
YmplY3RJZCkgeworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5pZFRvV3JhcHBlZE9iamVjdFtv
YmplY3RJZF07Cit9OworCitJbmplY3RlZFNjcmlwdC5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3Vw
ID0gZnVuY3Rpb24ob2JqZWN0R3JvdXBOYW1lKSB7CisgICAgdmFyIGdyb3VwID0gSW5qZWN0ZWRT
Y3JpcHQub2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CisgICAgaWYgKCFncm91cCkKKyAg
ICAgICAgcmV0dXJuOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKysp
CisgICAgICAgIGRlbGV0ZSBJbmplY3RlZFNjcmlwdC5pZFRvV3JhcHBlZE9iamVjdFtncm91cFtp
XV07CisgICAgZGVsZXRlIEluamVjdGVkU2NyaXB0Lm9iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5h
bWVdOworfTsKKworSW5qZWN0ZWRTY3JpcHQuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRob2ROYW1l
LCBhcmdzKQoreworICAgIHZhciBhcmdzQXJyYXkgPSBldmFsKCIoIiArIGFyZ3MgKyAiKSIpOwor
ICAgIHZhciByZXN1bHQgPSBJbmplY3RlZFNjcmlwdFttZXRob2ROYW1lXS5hcHBseShJbmplY3Rl
ZFNjcmlwdCwgYXJnc0FycmF5KTsKKyAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5l
ZCIpIHsKKyAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0
b3IgZXJyb3I6IEluamVjdGVkU2NyaXB0LiVzIHJldHVybnMgdW5kZWZpbmVkIiwgbWV0aG9kTmFt
ZSk7CisgICAgICAgIHJlc3VsdCA9IG51bGw7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9
CiAKLSAgICBnZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbihvYmplY3RJZCwgaWdub3JlSGFzT3duUHJv
cGVydHksIGFiYnJldmlhdGUpCi0gICAgewotICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fb2Jq
ZWN0Rm9ySWQob2JqZWN0SWQpOwotICAgICAgICBpZiAoIXRoaXMuX2lzRGVmaW5lZChvYmplY3Qp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgcHJvcGVydGllcyA9IFtd
OwotICAgICAgICAKLSAgICAgICAgdmFyIHByb3BlcnR5TmFtZXMgPSBpZ25vcmVIYXNPd25Qcm9w
ZXJ0eSA/IHRoaXMuX2dldFByb3BlcnR5TmFtZXMob2JqZWN0KSA6IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCk7Ci0gICAgICAgIGlmICghaWdub3JlSGFzT3duUHJvcGVydHkgJiYg
b2JqZWN0Ll9fcHJvdG9fXykKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXMucHVzaCgiX19wcm90
b19fIik7Ci0gICAgCi0gICAgICAgIC8vIEdvIG92ZXIgcHJvcGVydGllcywgcHJlcGFyZSByZXN1
bHRzLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ldOwot
ICAgIAotICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0ge307Ci0gICAgICAgICAgICBwcm9wZXJ0
eS5uYW1lID0gcHJvcGVydHlOYW1lICsgIiI7Ci0gICAgICAgICAgICB2YXIgaXNHZXR0ZXIgPSBv
YmplY3RbIl9fbG9va3VwR2V0dGVyX18iXSAmJiBvYmplY3QuX19sb29rdXBHZXR0ZXJfXyhwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICAgICAgaWYgKCFpc0dldHRlcikgewotICAgICAgICAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE9iamVjdCA9IG9iamVjdFtwcm9w
ZXJ0eU5hbWVdOwotICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRPYmplY3RJZCA9IEluamVj
dGVkU2NyaXB0LlJlbW90ZU9iamVjdElkLmRlcml2ZVByb3BlcnR5KG9iamVjdElkLCBwcm9wZXJ0
eU5hbWUpOwotICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRPYmplY3RQcm94eSA9IG5ldyBJ
bmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdChjaGlsZE9iamVjdCwgY2hpbGRP
YmplY3RJZCwgYWJicmV2aWF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5LnZhbHVl
ID0gY2hpbGRPYmplY3RQcm94eTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHJvcGVydHkudmFsdWUgPSBuZXcgSW5qZWN0ZWRTY3JpcHQuUmVtb3Rl
T2JqZWN0LmZyb21FeGNlcHRpb24oZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgc2hvdyBzb21l
dGhpbmcgbGlrZSAiZ2V0dGVyIiAoYnVnIDE2NzM0KS4KLSAgICAgICAgICAgICAgICBwcm9wZXJ0
eS52YWx1ZSA9IG5ldyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdCgiXHUy
MDE0Iik7IC8vIGVtIGRhc2gKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eS5pc0dldHRlciA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICAgIH0sCitJbmplY3Rl
ZFNjcmlwdC5nZXRQcm90b3R5cGVzID0gZnVuY3Rpb24obm9kZUlkKQoreworICAgIHZhciBub2Rl
ID0gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIHZhciBwcm90
b3R5cGUgPSBub2RlOworICAgIHZhciBwcm90b3R5cGVJZCA9IG5ldyBJbmplY3RlZFNjcmlwdC5S
ZW1vdGVPYmplY3RJZChJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3RJZC5UeXBlLk5vZGUsIG5v
ZGVJZCk7CisgICAgZG8geworICAgICAgICByZXN1bHQucHVzaChJbmplY3RlZFNjcmlwdC5SZW1v
dGVPYmplY3QuZnJvbU9iamVjdChwcm90b3R5cGUsIHByb3RvdHlwZUlkKSk7CisgICAgICAgIHBy
b3RvdHlwZSA9IHByb3RvdHlwZS5fX3Byb3RvX187CisgICAgICAgIHByb3RvdHlwZUlkID0gSW5q
ZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQuZGVyaXZlUHJvcGVydHkocHJvdG90eXBlSWQsICJf
X3Byb3RvX18iKTsKKyAgICB9IHdoaWxlIChwcm90b3R5cGUpCisKKyAgICByZXR1cm4gcmVzdWx0
OworfQogCi0gICAgc2V0UHJvcGVydHlWYWx1ZTogZnVuY3Rpb24ob2JqZWN0SWQsIHByb3BlcnR5
TmFtZSwgZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBvYmplY3QgPSB0aGlzLl9vYmpl
Y3RGb3JJZChvYmplY3RJZCk7Ci0gICAgICAgIGlmICghdGhpcy5faXNEZWZpbmVkKG9iamVjdCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgICAgIHZhciBleHByZXNzaW9u
TGVuZ3RoID0gZXhwcmVzc2lvbi5sZW5ndGg7Ci0gICAgICAgIGlmICghZXhwcmVzc2lvbkxlbmd0
aCkgewotICAgICAgICAgICAgZGVsZXRlIG9iamVjdFtwcm9wZXJ0eU5hbWVdOwotICAgICAgICAg
ICAgcmV0dXJuICEocHJvcGVydHlOYW1lIGluIG9iamVjdCk7Ci0gICAgICAgIH0KLSAgICAKLSAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIFN1cnJvdW5kIHRoZSBleHByZXNzaW9uIGluIHBh
cmVudGhlc2lzIHNvIHRoZSByZXN1bHQgb2YgdGhlIGV2YWwgaXMgdGhlIHJlc3VsdAotICAgICAg
ICAgICAgLy8gb2YgdGhlIHdob2xlIGV4cHJlc3Npb24gbm90IHRoZSBsYXN0IHBvdGVudGlhbCBz
dWItZXhwcmVzc2lvbi4KK0luamVjdGVkU2NyaXB0LmdldFByb3BlcnRpZXMgPSBmdW5jdGlvbihv
YmplY3RJZCwgaWdub3JlSGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUpCit7CisgICAgdmFyIG9i
amVjdCA9IEluamVjdGVkU2NyaXB0Ll9vYmplY3RGb3JJZChvYmplY3RJZCk7CisgICAgaWYgKCFJ
bmplY3RlZFNjcmlwdC5faXNEZWZpbmVkKG9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB2YXIgcHJvcGVydGllcyA9IFtdOwogICAgIAotICAgICAgICAgICAgLy8gVGhlcmUgaXMg
YSByZWdyZXNzaW9uIGludHJvZHVjZWQgaGVyZTogZXZhbCBpcyBub3cgaGFwcGVuaW5nIGFnYWlu
c3QgZ2xvYmFsIG9iamVjdCwKLSAgICAgICAgICAgIC8vIG5vdCBjYWxsIGZyYW1lIHdoaWxlIG9u
IGEgYnJlYWtwb2ludC4KLSAgICAgICAgICAgIC8vIFRPRE86IGJyaW5nIGV2YWx1YXRpb24gYWdh
aW5zdCBjYWxsIGZyYW1lIGJhY2suCi0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5zcGVjdGVk
V2luZG93LmV2YWwoIigiICsgZXhwcmVzc2lvbiArICIpIik7Ci0gICAgICAgICAgICAvLyBTdG9y
ZSB0aGUgcmVzdWx0IGluIHRoZSBwcm9wZXJ0eS4KLSAgICAgICAgICAgIG9iamVjdFtwcm9wZXJ0
eU5hbWVdID0gcmVzdWx0OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0gY2F0
Y2goZSkgeworICAgIHZhciBwcm9wZXJ0eU5hbWVzID0gaWdub3JlSGFzT3duUHJvcGVydHkgPyBJ
bmplY3RlZFNjcmlwdC5fZ2V0UHJvcGVydHlOYW1lcyhvYmplY3QpIDogT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0KTsKKyAgICBpZiAoIWlnbm9yZUhhc093blByb3BlcnR5ICYmIG9i
amVjdC5fX3Byb3RvX18pCisgICAgICAgIHByb3BlcnR5TmFtZXMucHVzaCgiX19wcm90b19fIik7
CisKKyAgICAvLyBHbyBvdmVyIHByb3BlcnRpZXMsIHByZXBhcmUgcmVzdWx0cy4KKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFy
IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CisKKyAgICAgICAgdmFyIHByb3BlcnR5
ID0ge307CisgICAgICAgIHByb3BlcnR5Lm5hbWUgPSBwcm9wZXJ0eU5hbWUgKyAiIjsKKyAgICAg
ICAgdmFyIGlzR2V0dGVyID0gb2JqZWN0WyJfX2xvb2t1cEdldHRlcl9fIl0gJiYgb2JqZWN0Ll9f
bG9va3VwR2V0dGVyX18ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgaWYgKCFpc0dldHRlcikgewog
ICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5zcGVjdGVk
V2luZG93LmV2YWwoIlwiIiArIGV4cHJlc3Npb24ucmVwbGFjZSgvIi9nLCAiXFxcIiIpICsgIlwi
Iik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5TmFtZV0gPSByZXN1bHQ7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkT2JqZWN0
ID0gb2JqZWN0W3Byb3BlcnR5TmFtZV07CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkT2JqZWN0
SWQgPSBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3RJZC5kZXJpdmVQcm9wZXJ0eShvYmplY3RJ
ZCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGRPYmplY3RQcm94eSA9
IG5ldyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdChjaGlsZE9iamVjdCwg
Y2hpbGRPYmplY3RJZCwgYWJicmV2aWF0ZSk7CisgICAgICAgICAgICAgICAgcHJvcGVydHkudmFs
dWUgPSBjaGlsZE9iamVjdFByb3h5OwogICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwK
LQotICAgIF9wb3B1bGF0ZVByb3BlcnR5TmFtZXM6IGZ1bmN0aW9uKG9iamVjdCwgcmVzdWx0U2V0
KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgbyA9IG9iamVjdDsgbzsgbyA9IG8uX19wcm90b19f
KSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHZhciBuYW1lcyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFNldFtu
YW1lc1tpXV0gPSB0cnVlOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ICAgIHByb3BlcnR5LnZhbHVlID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9t
RXhjZXB0aW9uKGUpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHNob3cgc29tZXRoaW5nIGxpa2UgImdldHRlciIgKGJ1
ZyAxNjczNCkuCisgICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IG5ldyBJbmplY3RlZFNjcmlw
dC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdCgiXHUyMDE0Iik7IC8vIGVtIGRhc2gKKyAgICAgICAg
ICAgIHByb3BlcnR5LmlzR2V0dGVyID0gdHJ1ZTsKICAgICAgICAgfQotICAgIH0sCisgICAgICAg
IHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgfQorICAgIHJldHVybiBwcm9wZXJ0aWVz
OworfQogCi0gICAgX2dldFByb3BlcnR5TmFtZXM6IGZ1bmN0aW9uKG9iamVjdCwgcmVzdWx0U2V0
KQotICAgIHsKLSAgICAgICAgdmFyIHByb3BlcnR5TmFtZVNldCA9IHt9OwotICAgICAgICB0aGlz
Ll9wb3B1bGF0ZVByb3BlcnR5TmFtZXMob2JqZWN0LCBwcm9wZXJ0eU5hbWVTZXQpOwotICAgICAg
ICByZXR1cm4gT2JqZWN0LmtleXMocHJvcGVydHlOYW1lU2V0KTsKLSAgICB9LAorSW5qZWN0ZWRT
Y3JpcHQuc2V0UHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKG9iamVjdElkLCBwcm9wZXJ0eU5hbWUs
IGV4cHJlc3Npb24pCit7CisgICAgdmFyIG9iamVjdCA9IEluamVjdGVkU2NyaXB0Ll9vYmplY3RG
b3JJZChvYmplY3RJZCk7CisgICAgaWYgKCFJbmplY3RlZFNjcmlwdC5faXNEZWZpbmVkKG9iamVj
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciBleHByZXNzaW9uTGVuZ3RoID0g
ZXhwcmVzc2lvbi5sZW5ndGg7CisgICAgaWYgKCFleHByZXNzaW9uTGVuZ3RoKSB7CisgICAgICAg
IGRlbGV0ZSBvYmplY3RbcHJvcGVydHlOYW1lXTsKKyAgICAgICAgcmV0dXJuICEocHJvcGVydHlO
YW1lIGluIG9iamVjdCk7CisgICAgfQogCi0gICAgZ2V0Q29tcGxldGlvbnM6IGZ1bmN0aW9uKGV4
cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgY2FsbEZyYW1lSWQpCi0g
ICAgewotICAgICAgICB2YXIgcHJvcHMgPSB7fTsKKyAgICB0cnkgeworICAgICAgICAvLyBTdXJy
b3VuZCB0aGUgZXhwcmVzc2lvbiBpbiBwYXJlbnRoZXNpcyBzbyB0aGUgcmVzdWx0IG9mIHRoZSBl
dmFsIGlzIHRoZSByZXN1bHQKKyAgICAgICAgLy8gb2YgdGhlIHdob2xlIGV4cHJlc3Npb24gbm90
IHRoZSBsYXN0IHBvdGVudGlhbCBzdWItZXhwcmVzc2lvbi4KKworICAgICAgICAvLyBUaGVyZSBp
cyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBoZXJlOiBldmFsIGlzIG5vdyBoYXBwZW5pbmcgYWdh
aW5zdCBnbG9iYWwgb2JqZWN0LAorICAgICAgICAvLyBub3QgY2FsbCBmcmFtZSB3aGlsZSBvbiBh
IGJyZWFrcG9pbnQuCisgICAgICAgIC8vIFRPRE86IGJyaW5nIGV2YWx1YXRpb24gYWdhaW5zdCBj
YWxsIGZyYW1lIGJhY2suCisgICAgICAgIHZhciByZXN1bHQgPSBpbnNwZWN0ZWRXaW5kb3cuZXZh
bCgiKCIgKyBleHByZXNzaW9uICsgIikiKTsKKyAgICAgICAgLy8gU3RvcmUgdGhlIHJlc3VsdCBp
biB0aGUgcHJvcGVydHkuCisgICAgICAgIG9iamVjdFtwcm9wZXJ0eU5hbWVdID0gcmVzdWx0Owor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIHZhciBleHByZXNzaW9uUmVzdWx0OwotICAgICAgICAgICAgLy8gRXZhbHVhdGUg
b24gY2FsbCBmcmFtZSBpZiBjYWxsIGZyYW1lIGlkIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgICAg
IGlmICh0eXBlb2YgY2FsbEZyYW1lSWQgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKGNhbGxGcmFtZUlkKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNhbGxGcmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBy
b3BzOwotICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9uKQotICAgICAgICAgICAgICAgICAg
ICBleHByZXNzaW9uUmVzdWx0ID0gdGhpcy5fZXZhbHVhdGVPbihjYWxsRnJhbWUuZXZhbHVhdGUs
IGNhbGxGcmFtZSwgZXhwcmVzc2lvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIEV2YWx1YXRlIGludG8gcHJvcGVydGllcyBpbiBzY29wZSBv
ZiB0aGUgc2VsZWN0ZWQgY2FsbCBmcmFtZS4KLSAgICAgICAgICAgICAgICAgICAgdmFyIHNjb3Bl
Q2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fcG9wdWxhdGVQcm9wZXJ0eU5hbWVzKHNjb3BlQ2hhaW5baV0sIHByb3BzKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9ICJ0aGlz
IjsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uUmVzdWx0ID0gdGhpcy5fZXZhbHVhdGVPbihp
bnNwZWN0ZWRXaW5kb3cuZXZhbCwgaW5zcGVjdGVkV2luZG93LCBleHByZXNzaW9uLCBmYWxzZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGV4cHJlc3Npb25SZXN1bHQg
PT09ICJvYmplY3QiKQotICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUHJvcGVydHlOYW1l
cyhleHByZXNzaW9uUmVzdWx0LCBwcm9wcyk7Ci0gICAgCi0gICAgICAgICAgICBpZiAoaW5jbHVk
ZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJv
cCBpbiB0aGlzLl9jb21tYW5kTGluZUFQSSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcHNbcHJv
cF0gPSB0cnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGluc3Bl
Y3RlZFdpbmRvdy5ldmFsKCJcIiIgKyBleHByZXNzaW9uLnJlcGxhY2UoLyIvZywgIlxcXCIiKSAr
ICJcIiIpOworICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5TmFtZV0gPSByZXN1bHQ7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHByb3BzOwotICAgIH0sCi0K
LSAgICBldmFsdWF0ZTogZnVuY3Rpb24oZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXApCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGluc3BlY3RlZFdpbmRvdy5ldmFs
LCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwKTsKLSAgICB9LAorICAg
IH0KK30KIAotICAgIF9ldmFsdWF0ZUFuZFdyYXA6IGZ1bmN0aW9uKGV2YWxGdW5jdGlvbiwgb2Jq
ZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZG9udFVzZUNvbW1hbmRMaW5lQVBJKQotICAg
IHsKK0luamVjdGVkU2NyaXB0Ll9wb3B1bGF0ZVByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbihvYmpl
Y3QsIHJlc3VsdFNldCkKK3sKKyAgICBmb3IgKHZhciBvID0gb2JqZWN0OyBvOyBvID0gby5fX3By
b3RvX18pIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2Jq
ZWN0KHRoaXMuX2V2YWx1YXRlT24oZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIGRv
bnRVc2VDb21tYW5kTGluZUFQSSksIG9iamVjdEdyb3VwKTsKKyAgICAgICAgICAgIHZhciBuYW1l
cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICByZXN1bHRTZXRb
bmFtZXNbaV1dID0gdHJ1ZTsKICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tRXhjZXB0aW9uKGUpOwotICAgICAg
ICB9Ci0gICAgfSwKLQotICAgIF9ldmFsdWF0ZU9uOiBmdW5jdGlvbihldmFsRnVuY3Rpb24sIG9i
amVjdCwgZXhwcmVzc2lvbiwgZG9udFVzZUNvbW1hbmRMaW5lQVBJKQotICAgIHsKLSAgICAgICAg
aWYgKCFkb250VXNlQ29tbWFuZExpbmVBUEkpIHsKLSAgICAgICAgICAgIC8vIE9ubHkgaW5zdGFs
bCBjb21tYW5kIGxpbmUgYXBpIG9iamVjdCBmb3IgdGhlIHRpbWUgb2YgZXZhbHVhdGlvbi4KLSAg
ICAKLSAgICAgICAgICAgIC8vIFN1cnJvdW5kIHRoZSBleHByZXNzaW9uIGluIHdpdGggc3RhdGVt
ZW50cyB0byBpbmplY3Qgb3VyIGNvbW1hbmQgbGluZSBBUEkgc28gdGhhdAotICAgICAgICAgICAg
Ly8gdGhlIHdpbmRvdyBvYmplY3QgcHJvcGVydGllcyBzdGlsbCB0YWtlIG1vcmUgcHJlY2VkZW50
IHRoYW4gb3VyIEFQSSBmdW5jdGlvbnMuCi0gICAgICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuY29u
c29sZS5fY29tbWFuZExpbmVBUEkgPSB0aGlzLl9jb21tYW5kTGluZUFQSTsKLSAgICAKLSAgICAg
ICAgICAgIGV4cHJlc3Npb24gPSAid2l0aCAod2luZG93LmNvbnNvbGUuX2NvbW1hbmRMaW5lQVBJ
KSB7IHdpdGggKHdpbmRvdykge1xuIiArIGV4cHJlc3Npb24gKyAiXG59IH0iOwogICAgICAgICB9
Ci0gICAgCi0gICAgICAgIHZhciB2YWx1ZSA9IGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhw
cmVzc2lvbik7Ci0gICAgCi0gICAgICAgIGlmICghZG9udFVzZUNvbW1hbmRMaW5lQVBJKQotICAg
ICAgICAgICAgZGVsZXRlIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLl9jb21tYW5kTGluZUFQSTsK
LSAgICAKLSAgICAgICAgLy8gV2hlbiBldmFsdWF0aW5nIG9uIGNhbGwgZnJhbWUgZXJyb3IgaXMg
bm90IHRocm93biwgYnV0IHJldHVybmVkIGFzIGEgdmFsdWUuCi0gICAgICAgIGlmICh0aGlzLl90
eXBlKHZhbHVlKSA9PT0gImVycm9yIikKLSAgICAgICAgICAgIHRocm93IHZhbHVlLnRvU3RyaW5n
KCk7Ci0gICAgCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9LAotCi0gICAgZ2V0Tm9kZUlk
OiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9z
dC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUsIGZhbHNlLCBmYWxzZSk7Ci0gICAgfSwKLQot
ICAgIGNhbGxGcmFtZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsRnJhbWUg
PSBJbmplY3RlZFNjcmlwdEhvc3QuY3VycmVudENhbGxGcmFtZSgpOwotICAgICAgICBpZiAoIWNh
bGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAgICAgdmFyIHJl
c3VsdCA9IFtdOwotICAgICAgICB2YXIgZGVwdGggPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgr
KywgY2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVy
OwotICAgICAgICB9IHdoaWxlIChjYWxsRnJhbWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0sCi0KLSAgICBldmFsdWF0ZUluQ2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWVJZCwg
Y29kZSwgb2JqZWN0R3JvdXApCi0gICAgewotICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5f
Y2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOwotICAgICAgICBpZiAoIWNhbGxGcmFtZSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5k
V3JhcChjYWxsRnJhbWUuZXZhbHVhdGUsIGNhbGxGcmFtZSwgY29kZSwgb2JqZWN0R3JvdXAsIHRy
dWUpOwotICAgIH0sCi0KLSAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKGlkKQotICAgIHsK
LSAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZy
YW1lKCk7Ci0gICAgICAgIHdoaWxlICgtLWlkID49IDAgJiYgY2FsbEZyYW1lKQotICAgICAgICAg
ICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKLSAgICAgICAgcmV0dXJuIGNhbGxGcmFt
ZTsKLSAgICB9LAorICAgIH0KK30KIAotICAgIF9ub2RlRm9ySWQ6IGZ1bmN0aW9uKG5vZGVJZCkK
LSAgICB7Ci0gICAgICAgIGlmICghbm9kZUlkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qubm9kZUZvcklkKG5vZGVJZCk7Ci0gICAg
fSwKK0luamVjdGVkU2NyaXB0Ll9nZXRQcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24ob2JqZWN0LCBy
ZXN1bHRTZXQpCit7CisgICAgdmFyIHByb3BlcnR5TmFtZVNldCA9IHt9OworICAgIEluamVjdGVk
U2NyaXB0Ll9wb3B1bGF0ZVByb3BlcnR5TmFtZXMob2JqZWN0LCBwcm9wZXJ0eU5hbWVTZXQpOwor
ICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0eU5hbWVTZXQpOworfQogCi0gICAgX29iamVj
dEZvcklkOiBmdW5jdGlvbihvYmplY3RJZCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZXJlIGFyZSB0
aHJlZSB0eXBlcyBvZiBvYmplY3QgaWRzIHVzZWQ6Ci0gICAgICAgIC8vIC0gbnVtYmVycyBwb2lu
dCB0byBET00gTm9kZSB2aWEgdGhlIEluc3BlY3RvckRPTUFnZW50IG1hcHBpbmcKLSAgICAgICAg
Ly8gLSBzdHJpbmdzIHBvaW50IHRvIGNvbnNvbGUgb2JqZWN0cyBjYWNoZWQgaW4gSW5zcGVjdG9y
Q29udHJvbGxlciBmb3IgbGF6eSBldmFsdWF0aW9uIHVwb24gdGhlbQotICAgICAgICAvLyAtIG9i
amVjdHMgY29udGFpbiBjb21wbGV4IGlkcyBhbmQgYXJlIGN1cnJlbnRseSB1c2VkIGZvciBzY29w
ZWQgb2JqZWN0cwotICAgICAgICB2YXIgb2JqZWN0OwotICAgICAgICBpZiAob2JqZWN0SWQudHlw
ZSA9PT0gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQuVHlwZS5Ob2RlKQotICAgICAgICAg
ICAgb2JqZWN0ID0gdGhpcy5fbm9kZUZvcklkKG9iamVjdElkLnZhbHVlKTsKLSAgICAgICAgZWxz
ZSBpZiAob2JqZWN0SWQudHlwZSA9PT0gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQuVHlw
ZS5Kc09iamVjdCkKLSAgICAgICAgICAgIG9iamVjdCA9IHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0
W29iamVjdElkLnZhbHVlXTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0SWQudHlwZSA9PT0gSW5q
ZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQuVHlwZS5TY29wZU9iamVjdCkgewotICAgICAgICAg
ICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKG9iamVjdElkLnZhbHVlLmNh
bGxGcmFtZSk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0SWQudGhpc09iamVjdCkKLSAgICAgICAg
ICAgICAgICBvYmplY3QgPSBjYWxsRnJhbWUudGhpc09iamVjdDsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBvYmplY3QgPSBjYWxsRnJhbWUuc2NvcGVDaGFpbltvYmplY3RJZC52
YWx1ZS5jaGFpbkluZGV4XTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0SWQ7Ci0gICAgCi0gICAgICAgIHZhciBwYXRoID0gb2JqZWN0SWQucGF0aDsKLSAgICAKLSAg
ICAgICAgLy8gRm9sbG93IHRoZSBwcm9wZXJ0eSBwYXRoLgotICAgICAgICBmb3IgKHZhciBpID0g
MDsgdGhpcy5faXNEZWZpbmVkKG9iamVjdCkgJiYgcGF0aCAmJiBpIDwgcGF0aC5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdFtwYXRoW2ldXTsKLSAgICAKLSAgICAgICAg
cmV0dXJuIG9iamVjdDsKLSAgICB9LAorSW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMgPSBm
dW5jdGlvbihleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGNhbGxG
cmFtZUlkKQoreworICAgIHZhciBwcm9wcyA9IHt9OworICAgIHRyeSB7CisgICAgICAgIHZhciBl
eHByZXNzaW9uUmVzdWx0OworICAgICAgICAvLyBFdmFsdWF0ZSBvbiBjYWxsIGZyYW1lIGlmIGNh
bGwgZnJhbWUgaWQgaXMgYXZhaWxhYmxlLgorICAgICAgICBpZiAodHlwZW9mIGNhbGxGcmFtZUlk
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2Ny
aXB0Ll9jYWxsRnJhbWVGb3JJZChjYWxsRnJhbWVJZCk7CisgICAgICAgICAgICBpZiAoIWNhbGxG
cmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7CisgICAgICAgICAgICBpZiAoZXhw
cmVzc2lvbikKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uUmVzdWx0ID0gSW5qZWN0ZWRTY3Jp
cHQuX2V2YWx1YXRlT24oY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGV4cHJlc3Npb24s
IHRydWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUg
aW50byBwcm9wZXJ0aWVzIGluIHNjb3BlIG9mIHRoZSBzZWxlY3RlZCBjYWxsIGZyYW1lLgorICAg
ICAgICAgICAgICAgIHZhciBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgICAgICAgICBJbmplY3RlZFNjcmlwdC5fcG9wdWxhdGVQcm9wZXJ0eU5hbWVz
KHNjb3BlQ2hhaW5baV0sIHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICBleHByZXNzaW9u
ID0gInRoaXMiOworICAgICAgICAgICAgZXhwcmVzc2lvblJlc3VsdCA9IEluamVjdGVkU2NyaXB0
Ll9ldmFsdWF0ZU9uKGluc3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJl
c3Npb24sIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIGV4cHJlc3Npb25S
ZXN1bHQgPT09ICJvYmplY3QiKQorICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHQuX3BvcHVsYXRl
UHJvcGVydHlOYW1lcyhleHByZXNzaW9uUmVzdWx0LCBwcm9wcyk7CiAKLSAgICBwdXNoTm9kZVRv
RnJvbnRlbmQ6IGZ1bmN0aW9uKG9iamVjdElkKQotICAgIHsKLSAgICAgICAgdmFyIG9iamVjdCA9
IHRoaXMuX29iamVjdEZvcklkKG9iamVjdElkKTsKLSAgICAgICAgaWYgKCFvYmplY3QgfHwgdGhp
cy5fdHlwZShvYmplY3QpICE9PSAibm9kZSIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucHVzaE5vZGVQYXRoVG9Gcm9udGVuZChv
YmplY3QsIGZhbHNlLCBmYWxzZSk7Ci0gICAgfSwKKyAgICAgICAgaWYgKGluY2x1ZGVJbnNwZWN0
b3JDb21tYW5kTGluZUFQSSkgeworICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBJbmplY3Rl
ZFNjcmlwdC5fY29tbWFuZExpbmVBUEkpCisgICAgICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSB0
cnVlOworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7CisgICAgfQorICAgIHJldHVybiBwcm9w
czsKK30KIAotICAgIGV2YWx1YXRlT25TZWxmOiBmdW5jdGlvbihmdW5jQm9keSwgYXJncykKLSAg
ICB7Ci0gICAgICAgIHZhciBmdW5jID0gd2luZG93LmV2YWwoIigiICsgZnVuY0JvZHkgKyAiKSIp
OwotICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzIHx8IFtdKTsKLSAgICB9LAor
SW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUgPSBmdW5jdGlvbihleHByZXNzaW9uLCBvYmplY3RHcm91
cCkKK3sKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0
ZWRXaW5kb3cuZXZhbCwgaW5zcGVjdGVkV2luZG93LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCk7
Cit9CiAKLSAgICBfaXNEZWZpbmVkOiBmdW5jdGlvbihvYmplY3QpCi0gICAgewotICAgICAgICBy
ZXR1cm4gb2JqZWN0IHx8IHRoaXMuX2lzSFRNTEFsbENvbGxlY3Rpb24ob2JqZWN0KTsKLSAgICB9
LAorSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRlQW5kV3JhcCA9IGZ1bmN0aW9uKGV2YWxGdW5jdGlv
biwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZG9udFVzZUNvbW1hbmRMaW5lQVBJ
KQoreworICAgIHRyeSB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0
KEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZU9uKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBleHByZXNz
aW9uLCBkb250VXNlQ29tbWFuZExpbmVBUEkpLCBvYmplY3RHcm91cCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21FeGNl
cHRpb24oZSk7CisgICAgfQorfQogCi0gICAgX2lzSFRNTEFsbENvbGxlY3Rpb246IGZ1bmN0aW9u
KG9iamVjdCkKLSAgICB7Ci0gICAgICAgIC8vIGRvY3VtZW50LmFsbCBpcyByZXBvcnRlZCBhcyB1
bmRlZmluZWQsIGJ1dCB3ZSBzdGlsbCB3YW50IHRvIHByb2Nlc3MgaXQuCi0gICAgICAgIHJldHVy
biAodHlwZW9mIG9iamVjdCA9PT0gInVuZGVmaW5lZCIpICYmIGluc3BlY3RlZFdpbmRvdy5IVE1M
QWxsQ29sbGVjdGlvbiAmJiBvYmplY3QgaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuSFRNTEFs
bENvbGxlY3Rpb247Ci0gICAgfSwKK0luamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZU9uID0gZnVuY3Rp
b24oZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIGRvbnRVc2VDb21tYW5kTGluZUFQ
SSkKK3sKKyAgICBpZiAoIWRvbnRVc2VDb21tYW5kTGluZUFQSSkgeworICAgICAgICAvLyBPbmx5
IGluc3RhbGwgY29tbWFuZCBsaW5lIGFwaSBvYmplY3QgZm9yIHRoZSB0aW1lIG9mIGV2YWx1YXRp
b24uCiAKLSAgICBfdHlwZTogZnVuY3Rpb24ob2JqKQotICAgIHsKLSAgICAgICAgaWYgKG9iaiA9
PT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybiAibnVsbCI7Ci0KLSAgICAgICAgdmFyIHR5cGUg
PSB0eXBlb2Ygb2JqOwotICAgICAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlwZSAhPT0g
ImZ1bmN0aW9uIikgewotICAgICAgICAgICAgLy8gRklYTUUoMzM3MTYpOiB0eXBlb2YgZG9jdW1l
bnQuYWxsIGlzIGFsd2F5cyAndW5kZWZpbmVkJy4KLSAgICAgICAgICAgIGlmICh0aGlzLl9pc0hU
TUxBbGxDb2xsZWN0aW9uKG9iaikpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7Ci0g
ICAgICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICAgfQorICAgICAgICAvLyBTdXJyb3VuZCB0
aGUgZXhwcmVzc2lvbiBpbiB3aXRoIHN0YXRlbWVudHMgdG8gaW5qZWN0IG91ciBjb21tYW5kIGxp
bmUgQVBJIHNvIHRoYXQKKyAgICAgICAgLy8gdGhlIHdpbmRvdyBvYmplY3QgcHJvcGVydGllcyBz
dGlsbCB0YWtlIG1vcmUgcHJlY2VkZW50IHRoYW4gb3VyIEFQSSBmdW5jdGlvbnMuCisgICAgICAg
IGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLl9jb21tYW5kTGluZUFQSSA9IEluamVjdGVkU2NyaXB0
Ll9jb21tYW5kTGluZUFQSTsKIAotICAgICAgICAvLyBJZiBvd25pbmcgZnJhbWUgaGFzIG5hdmln
YXRlZCB0byBzb21ld2hlcmUgZWxzZSB3aW5kb3cgcHJvcGVydGllcyB3aWxsIGJlIHVuZGVmaW5l
ZC4KLSAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGp1c3QgcmV0dXJuIHJlc3VsdCBvZiB0aGUgdHlw
ZW9mLgotICAgICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdy5kb2N1bWVudCkKLSAgICAgICAgICAg
IHJldHVybiB0eXBlOworICAgICAgICBleHByZXNzaW9uID0gIndpdGggKHdpbmRvdy5jb25zb2xl
Ll9jb21tYW5kTGluZUFQSSkgeyB3aXRoICh3aW5kb3cpIHtcbiIgKyBleHByZXNzaW9uICsgIlxu
fSB9IjsKKyAgICB9CiAKLSAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRv
dy5Ob2RlKQotICAgICAgICAgICAgcmV0dXJuIChvYmoubm9kZVR5cGUgPT09IHVuZGVmaW5lZCA/
IHR5cGUgOiAibm9kZSIpOwotICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2lu
ZG93LlN0cmluZykKLSAgICAgICAgICAgIHJldHVybiAic3RyaW5nIjsKLSAgICAgICAgaWYgKG9i
aiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5BcnJheSkKLSAgICAgICAgICAgIHJldHVybiAi
YXJyYXkiOwotICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LkJvb2xl
YW4pCi0gICAgICAgICAgICByZXR1cm4gImJvb2xlYW4iOwotICAgICAgICBpZiAob2JqIGluc3Rh
bmNlb2YgaW5zcGVjdGVkV2luZG93Lk51bWJlcikKLSAgICAgICAgICAgIHJldHVybiAibnVtYmVy
IjsKLSAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5EYXRlKQotICAg
ICAgICAgICAgcmV0dXJuICJkYXRlIjsKLSAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3Bl
Y3RlZFdpbmRvdy5SZWdFeHApCi0gICAgICAgICAgICByZXR1cm4gInJlZ2V4cCI7Ci0gICAgICAg
IC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCi0gICAgICAgIGlmIChpc0Zpbml0ZShvYmou
bGVuZ3RoKSAmJiB0eXBlb2Ygb2JqLnNwbGljZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAg
IHJldHVybiAiYXJyYXkiOwotICAgICAgICBpZiAoaXNGaW5pdGUob2JqLmxlbmd0aCkgJiYgdHlw
ZW9mIG9iai5jYWxsZWUgPT09ICJmdW5jdGlvbiIpIC8vIGFyZ3VtZW50cy4KLSAgICAgICAgICAg
IHJldHVybiAiYXJyYXkiOwotICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2lu
ZG93Lk5vZGVMaXN0KQotICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7Ci0gICAgICAgIGlmIChv
YmogaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuSFRNTENvbGxlY3Rpb24pCi0gICAgICAgICAg
ICByZXR1cm4gImFycmF5IjsKLSAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdp
bmRvdy5FcnJvcikKLSAgICAgICAgICAgIHJldHVybiAiZXJyb3IiOwotICAgICAgICByZXR1cm4g
dHlwZTsKLSAgICB9LAorICAgIHZhciB2YWx1ZSA9IGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwg
ZXhwcmVzc2lvbik7CiAKLSAgICBfZGVzY3JpYmU6IGZ1bmN0aW9uKG9iaiwgYWJicmV2aWF0ZWQp
Ci0gICAgewotICAgICAgICB2YXIgdHlwZSA9IHRoaXMuX3R5cGUob2JqKTsKLQotICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSAib2JqZWN0IjoKLSAgICAgICAgY2FzZSAibm9k
ZSI6Ci0gICAgICAgIGNhc2UgImFycmF5IjoKLSAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSB0
aGlzLl9jbGFzc05hbWUob2JqKTsKLSAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCA9
PT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAgY2xhc3NOYW1lICs9ICJbIiArIG9iai5sZW5n
dGggKyAiXSI7Ci0gICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwotICAgICAgICBjYXNlICJz
dHJpbmciOgotICAgICAgICAgICAgaWYgKCFhYmJyZXZpYXRlZCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gb2JqOwotICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAxMDApCi0gICAgICAgICAg
ICAgICAgcmV0dXJuICJcIiIgKyBvYmouc3Vic3RyaW5nKDAsIDEwMCkgKyAiXHUyMDI2XCIiOwot
ICAgICAgICAgICAgcmV0dXJuICJcIiIgKyBvYmogKyAiXCIiOwotICAgICAgICBjYXNlICJmdW5j
dGlvbiI6Ci0gICAgICAgICAgICB2YXIgb2JqZWN0VGV4dCA9IHRoaXMuX3RvU3RyaW5nKG9iaik7
Ci0gICAgICAgICAgICBpZiAoYWJicmV2aWF0ZWQpCi0gICAgICAgICAgICAgICAgb2JqZWN0VGV4
dCA9IC8uKi8uZXhlYyhvYmplY3RUZXh0KVswXS5yZXBsYWNlKC8gKyQvZywgIiIpOwotICAgICAg
ICAgICAgcmV0dXJuIG9iamVjdFRleHQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fdG9TdHJpbmcob2JqKTsKLSAgICAgICAgfQotICAgIH0sCisgICAgaWYgKCFk
b250VXNlQ29tbWFuZExpbmVBUEkpCisgICAgICAgIGRlbGV0ZSBpbnNwZWN0ZWRXaW5kb3cuY29u
c29sZS5fY29tbWFuZExpbmVBUEk7CiAKLSAgICBfdG9TdHJpbmc6IGZ1bmN0aW9uKG9iaikKLSAg
ICB7Ci0gICAgICAgIC8vIFdlIGRvbid0IHVzZSBTdHJpbmcob2JqKSBiZWNhdXNlIGluc3BlY3Rl
ZFdpbmRvdy5TdHJpbmcgaXMgdW5kZWZpbmVkIGlmIG93bmluZyBmcmFtZSBuYXZpZ2F0ZWQgdG8g
YW5vdGhlciBwYWdlLgotICAgICAgICByZXR1cm4gIiIgKyBvYmo7Ci0gICAgfSwKKyAgICAvLyBX
aGVuIGV2YWx1YXRpbmcgb24gY2FsbCBmcmFtZSBlcnJvciBpcyBub3QgdGhyb3duLCBidXQgcmV0
dXJuZWQgYXMgYSB2YWx1ZS4KKyAgICBpZiAoSW5qZWN0ZWRTY3JpcHQuX3R5cGUodmFsdWUpID09
PSAiZXJyb3IiKQorICAgICAgICB0aHJvdyB2YWx1ZS50b1N0cmluZygpOwogCi0gICAgX2NsYXNz
TmFtZTogZnVuY3Rpb24ob2JqKQotICAgIHsKLSAgICAgICAgLy8gV2UgY2FuJ3QgdXNlIHRoZSBz
YW1lIGNvZGUgZm9yIGZldGNoaW5nIGNsYXNzIG5hbWVzIG9mIHRoZSBkb20gYmluZGluZ3MgcHJv
dG90eXBlIGNoYWluLgotICAgICAgICAvLyBCb3RoIG9mIHRoZSBtZXRob2RzIGJlbG93IHJlc3Vs
dCBpbiAiT2JqZWN0IiBuYW1lcyBvbiB0aGUgZm9yZWlnbiBlbmdpbmUgYmluZGluZ3MuCi0gICAg
ICAgIC8vIEkgZ2F2ZSB1cCBhbmQgYW0gdXNpbmcgYSBjaGVjayBiZWxvdyB0byBkaXN0aW5ndWlz
aCBiZXR3ZWVuIHRoZSBlZ2luZSBiaW5naW5ncy4KKyAgICByZXR1cm4gdmFsdWU7Cit9CiAKLSAg
ICAgICAgaWYgKGpzRW5naW5lID09ICJKU0MiKSB7Ci0gICAgICAgICAgICB2YXIgc3RyID0gaW5z
cGVjdGVkV2luZG93Lk9iamVjdCA/IGluc3BlY3RlZFdpbmRvdy5PYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLmNhbGwob2JqKSA6IHRoaXMuX3RvU3RyaW5nKG9iaik7Ci0gICAgICAgICAgICByZXR1
cm4gc3RyLnJlcGxhY2UoL15cW29iamVjdCAoLiopXF0kL2ksICIkMSIpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgLy8gVjgKLSAgICAgICAgICAgIHJldHVybiBvYmouY29uc3RydWN0
b3IgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUgfHwgIk9iamVjdCI7Ci0gICAgICAgIH0KLSAgICB9
LAorSW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZUlkID0gZnVuY3Rpb24obm9kZSkKK3sKKyAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSwgZmFsc2Us
IGZhbHNlKTsKK30KIAotICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICBjb25zb2xlLmxvZyhldmVudC50eXBlLCBldmVudCk7Ci0gICAgfSwKK0luamVjdGVkU2Ny
aXB0LmNhbGxGcmFtZXMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIGNhbGxGcmFtZSA9IEluamVj
dGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCk7CisgICAgaWYgKCFjYWxsRnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICB2YXIgZGVw
dGggPSAwOworICAgIGRvIHsKKyAgICAgICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0
LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOworICAgICAgICBjYWxsRnJhbWUg
PSBjYWxsRnJhbWUuY2FsbGVyOworICAgIH0gd2hpbGUgKGNhbGxGcmFtZSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KIAotICAgIF9ub3JtYWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykK
LSAgICB7Ci0gICAgICAgIGlmICh0eXBlb2YgdHlwZXMgPT09ICJ1bmRlZmluZWQiKQotICAgICAg
ICAgICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXkiLCAibG9hZCIsICJ1bmxvYWQiLCAiYWJvcnQi
LCAiZXJyb3IiLCAic2VsZWN0IiwgImNoYW5nZSIsICJzdWJtaXQiLCAicmVzZXQiLCAiZm9jdXMi
LCAiYmx1ciIsICJyZXNpemUiLCAic2Nyb2xsIiBdOwotICAgICAgICBlbHNlIGlmICh0eXBlb2Yg
dHlwZXMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgdHlwZXMgPSBbIHR5cGVzIF07CitJbmpl
Y3RlZFNjcmlwdC5ldmFsdWF0ZUluQ2FsbEZyYW1lID0gZnVuY3Rpb24oY2FsbEZyYW1lSWQsIGNv
ZGUsIG9iamVjdEdyb3VwKQoreworICAgIHZhciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlwdC5f
Y2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOworICAgIGlmICghY2FsbEZyYW1lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZUFuZFdy
YXAoY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGNvZGUsIG9iamVjdEdyb3VwLCB0cnVl
KTsKK30KIAotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0g
Im1vdXNlIikKLSAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJtb3VzZWRvd24i
LCAibW91c2V1cCIsICJjbGljayIsICJkYmxjbGljayIsICJtb3VzZW1vdmUiLCAibW91c2VvdmVy
IiwgIm1vdXNlb3V0Iik7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAia2V5ZG93biIsICJrZXl1cCIs
ICJrZXlwcmVzcyIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5w
dXNoKHR5cGVzW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0s
CitJbmplY3RlZFNjcmlwdC5fY2FsbEZyYW1lRm9ySWQgPSBmdW5jdGlvbihpZCkKK3sKKyAgICB2
YXIgY2FsbEZyYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxsRnJhbWUoKTsKKyAg
ICB3aGlsZSAoLS1pZCA+PSAwICYmIGNhbGxGcmFtZSkKKyAgICAgICAgY2FsbEZyYW1lID0gY2Fs
bEZyYW1lLmNhbGxlcjsKKyAgICByZXR1cm4gY2FsbEZyYW1lOworfQogCi0gICAgX2luc3BlY3Rl
ZE5vZGU6IGZ1bmN0aW9uKG51bSkKLSAgICB7Ci0gICAgICAgIHZhciBub2RlSWQgPSBJbmplY3Rl
ZFNjcmlwdEhvc3QuaW5zcGVjdGVkTm9kZShudW0pOwotICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZUZvcklkKG5vZGVJZCk7Ci0gICAgfSwKK0luamVjdGVkU2NyaXB0Ll9ub2RlRm9ySWQgPSBmdW5j
dGlvbihub2RlSWQpCit7CisgICAgaWYgKCFub2RlSWQpCisgICAgICAgIHJldHVybiBudWxsOwor
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qubm9kZUZvcklkKG5vZGVJZCk7Cit9CiAKLSAg
ICBfYmluZFRvU2NyaXB0OiBmdW5jdGlvbihmdW5jKQotICAgIHsKLSAgICAgICAgdmFyIGFyZ3Mg
PSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwotICAgICAgICBmdW5j
dGlvbiBib3VuZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KGlu
amVjdGVkU2NyaXB0LCBhcmdzLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1
bWVudHMpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgYm91bmQudG9TdHJpbmcgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHJldHVybiAiYm91bmQ6ICIgKyBmdW5jOwotICAgICAgICB9OwotICAg
ICAgICByZXR1cm4gYm91bmQ7Ci0gICAgfQorSW5qZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkID0g
ZnVuY3Rpb24ob2JqZWN0SWQpCit7CisgICAgLy8gVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG9i
amVjdCBpZHMgdXNlZDoKKyAgICAvLyAtIG51bWJlcnMgcG9pbnQgdG8gRE9NIE5vZGUgdmlhIHRo
ZSBJbnNwZWN0b3JET01BZ2VudCBtYXBwaW5nCisgICAgLy8gLSBzdHJpbmdzIHBvaW50IHRvIGNv
bnNvbGUgb2JqZWN0cyBjYWNoZWQgaW4gSW5zcGVjdG9yQ29udHJvbGxlciBmb3IgbGF6eSBldmFs
dWF0aW9uIHVwb24gdGhlbQorICAgIC8vIC0gb2JqZWN0cyBjb250YWluIGNvbXBsZXggaWRzIGFu
ZCBhcmUgY3VycmVudGx5IHVzZWQgZm9yIHNjb3BlZCBvYmplY3RzCisgICAgdmFyIG9iamVjdDsK
KyAgICBpZiAob2JqZWN0SWQudHlwZSA9PT0gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQu
VHlwZS5Ob2RlKQorICAgICAgICBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkKG9i
amVjdElkLnZhbHVlKTsKKyAgICBlbHNlIGlmIChvYmplY3RJZC50eXBlID09PSBJbmplY3RlZFNj
cmlwdC5SZW1vdGVPYmplY3RJZC5UeXBlLkpzT2JqZWN0KQorICAgICAgICBvYmplY3QgPSBJbmpl
Y3RlZFNjcmlwdC51bndyYXBPYmplY3Qob2JqZWN0SWQudmFsdWUpOworICAgIGVsc2UgaWYgKG9i
amVjdElkLnR5cGUgPT09IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdElkLlR5cGUuU2NvcGVP
YmplY3QpIHsKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0Ll9jYWxsRnJh
bWVGb3JJZChvYmplY3RJZC52YWx1ZS5jYWxsRnJhbWUpOworICAgICAgICBpZiAob2JqZWN0SWQu
dGhpc09iamVjdCkKKyAgICAgICAgICAgIG9iamVjdCA9IGNhbGxGcmFtZS50aGlzT2JqZWN0Owor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBvYmplY3QgPSBjYWxsRnJhbWUuc2NvcGVDaGFpbltv
YmplY3RJZC52YWx1ZS5jaGFpbkluZGV4XTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIG9i
amVjdElkOworCisgICAgdmFyIHBhdGggPSBvYmplY3RJZC5wYXRoOworCisgICAgLy8gRm9sbG93
IHRoZSBwcm9wZXJ0eSBwYXRoLgorICAgIGZvciAodmFyIGkgPSAwOyBJbmplY3RlZFNjcmlwdC5f
aXNEZWZpbmVkKG9iamVjdCkgJiYgcGF0aCAmJiBpIDwgcGF0aC5sZW5ndGg7ICsraSkKKyAgICAg
ICAgb2JqZWN0ID0gb2JqZWN0W3BhdGhbaV1dOworCisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAot
dmFyIGluamVjdGVkU2NyaXB0ID0gbmV3IEluamVjdGVkU2NyaXB0KCk7CitJbmplY3RlZFNjcmlw
dC5wdXNoTm9kZVRvRnJvbnRlbmQgPSBmdW5jdGlvbihvYmplY3RJZCkKK3sKKyAgICB2YXIgb2Jq
ZWN0ID0gSW5qZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkKG9iamVjdElkKTsKKyAgICBpZiAoIW9i
amVjdCB8fCBJbmplY3RlZFNjcmlwdC5fdHlwZShvYmplY3QpICE9PSAibm9kZSIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQob2JqZWN0LCBmYWxzZSwgZmFsc2UpOworfQogCiAvLyBGSVhNRTogUmVtb3Rl
T2JqZWN0SWQgYW5kIFJlbW90ZU9iamVjdCBzdHJ1Y3RzIG11c3QgbWF0Y2ggdGhlIFdlYkluc3Bl
Y3Rvci4qIG9uZXMuIFNob3VsZCByZXVzZSBzYW1lIGZpbGUgaW5zdGVhZC4KIEluamVjdGVkU2Ny
aXB0LlJlbW90ZU9iamVjdElkID0gZnVuY3Rpb24odHlwZSwgdmFsdWUsIHBhdGgpCkBAIC01NDYs
MTggKzM4OSwyNCBAQCBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbUV4Y2VwdGlvbiA9
IGZ1bmN0aW9uKGUpCiAKIEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0ID0g
ZnVuY3Rpb24ob2JqZWN0LCBvYmplY3RJZCwgYWJicmV2aWF0ZSkKIHsKLSAgICB2YXIgdHlwZSA9
IGluamVjdGVkU2NyaXB0Ll90eXBlKG9iamVjdCk7CisgICAgdmFyIHR5cGUgPSBJbmplY3RlZFNj
cmlwdC5fdHlwZShvYmplY3QpOwogICAgIHZhciByYXdUeXBlID0gdHlwZW9mIG9iamVjdDsKICAg
ICB2YXIgaGFzQ2hpbGRyZW4gPSAocmF3VHlwZSA9PT0gIm9iamVjdCIgJiYgb2JqZWN0ICE9PSBu
dWxsICYmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCB8fCAhIW9i
amVjdC5fX3Byb3RvX18pKSB8fCByYXdUeXBlID09PSAiZnVuY3Rpb24iOwogICAgIHZhciBkZXNj
cmlwdGlvbiA9ICIiOwogICAgIHRyeSB7Ci0gICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGluamVj
dGVkU2NyaXB0Ll9kZXNjcmliZShvYmplY3QsIGFiYnJldmlhdGUpOworICAgICAgICB2YXIgZGVz
Y3JpcHRpb24gPSBJbmplY3RlZFNjcmlwdC5fZGVzY3JpYmUob2JqZWN0LCBhYmJyZXZpYXRlKTsK
ICAgICAgICAgcmV0dXJuIG5ldyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3Qob2JqZWN0SWQs
IHR5cGUsIGRlc2NyaXB0aW9uLCBoYXNDaGlsZHJlbik7CiAgICAgfSBjYXRjaCAoZSkgewogICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21FeGNlcHRpb24oZSk7
CiAgICAgfQogfQogCitJbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uU2VsZiA9IGZ1bmN0aW9uKGZ1
bmNCb2R5LCBhcmdzKQoreworICAgIHZhciBmdW5jID0gd2luZG93LmV2YWwoIigiICsgZnVuY0Jv
ZHkgKyAiKSIpOworICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MgfHwgW10pOworfQor
CiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGZ1bmN0aW9uKGlkLCBjYWxsRnJhbWUp
CiB7CiAgICAgdGhpcy5pZCA9IGlkOwpAQCAtNjE2LDEwICs0NjUsMTQ0IEBAIEluamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKK0luamVjdGVkU2Ny
aXB0Ll9pc0RlZmluZWQgPSBmdW5jdGlvbihvYmplY3QpCit7CisgICAgcmV0dXJuIG9iamVjdCB8
fCBJbmplY3RlZFNjcmlwdC5faXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpOworfQorCitJbmpl
Y3RlZFNjcmlwdC5faXNIVE1MQWxsQ29sbGVjdGlvbiA9IGZ1bmN0aW9uKG9iamVjdCkKK3sKKyAg
ICAvLyBkb2N1bWVudC5hbGwgaXMgcmVwb3J0ZWQgYXMgdW5kZWZpbmVkLCBidXQgd2Ugc3RpbGwg
d2FudCB0byBwcm9jZXNzIGl0LgorICAgIHJldHVybiAodHlwZW9mIG9iamVjdCA9PT0gInVuZGVm
aW5lZCIpICYmIGluc3BlY3RlZFdpbmRvdy5IVE1MQWxsQ29sbGVjdGlvbiAmJiBvYmplY3QgaW5z
dGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuSFRNTEFsbENvbGxlY3Rpb247Cit9CisKK0luamVjdGVk
U2NyaXB0Ll90eXBlID0gZnVuY3Rpb24ob2JqKQoreworICAgIGlmIChvYmogPT09IG51bGwpCisg
ICAgICAgIHJldHVybiAibnVsbCI7CisKKyAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7CisgICAg
aWYgKHR5cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAg
Ly8gRklYTUUoMzM3MTYpOiB0eXBlb2YgZG9jdW1lbnQuYWxsIGlzIGFsd2F5cyAndW5kZWZpbmVk
Jy4KKyAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0Ll9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iaikp
CisgICAgICAgICAgICByZXR1cm4gImFycmF5IjsKKyAgICAgICAgcmV0dXJuIHR5cGU7CisgICAg
fQorCisgICAgLy8gSWYgb3duaW5nIGZyYW1lIGhhcyBuYXZpZ2F0ZWQgdG8gc29tZXdoZXJlIGVs
c2Ugd2luZG93IHByb3BlcnRpZXMgd2lsbCBiZSB1bmRlZmluZWQuCisgICAgLy8gSW4gdGhpcyBj
YXNlIGp1c3QgcmV0dXJuIHJlc3VsdCBvZiB0aGUgdHlwZW9mLgorICAgIGlmICghaW5zcGVjdGVk
V2luZG93LmRvY3VtZW50KQorICAgICAgICByZXR1cm4gdHlwZTsKKworICAgIGlmIChvYmogaW5z
dGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuTm9kZSkKKyAgICAgICAgcmV0dXJuIChvYmoubm9kZVR5
cGUgPT09IHVuZGVmaW5lZCA/IHR5cGUgOiAibm9kZSIpOworICAgIGlmIChvYmogaW5zdGFuY2Vv
ZiBpbnNwZWN0ZWRXaW5kb3cuU3RyaW5nKQorICAgICAgICByZXR1cm4gInN0cmluZyI7CisgICAg
aWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5BcnJheSkKKyAgICAgICAgcmV0dXJu
ICJhcnJheSI7CisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5Cb29sZWFu
KQorICAgICAgICByZXR1cm4gImJvb2xlYW4iOworICAgIGlmIChvYmogaW5zdGFuY2VvZiBpbnNw
ZWN0ZWRXaW5kb3cuTnVtYmVyKQorICAgICAgICByZXR1cm4gIm51bWJlciI7CisgICAgaWYgKG9i
aiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5EYXRlKQorICAgICAgICByZXR1cm4gImRhdGUi
OworICAgIGlmIChvYmogaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuUmVnRXhwKQorICAgICAg
ICByZXR1cm4gInJlZ2V4cCI7CisgICAgLy8gRmlyZUJ1ZydzIGFycmF5IGRldGVjdGlvbi4KKyAg
ICBpZiAoaXNGaW5pdGUob2JqLmxlbmd0aCkgJiYgdHlwZW9mIG9iai5zcGxpY2UgPT09ICJmdW5j
dGlvbiIpCisgICAgICAgIHJldHVybiAiYXJyYXkiOworICAgIGlmIChpc0Zpbml0ZShvYmoubGVu
Z3RoKSAmJiB0eXBlb2Ygb2JqLmNhbGxlZSA9PT0gImZ1bmN0aW9uIikgLy8gYXJndW1lbnRzLgor
ICAgICAgICByZXR1cm4gImFycmF5IjsKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVk
V2luZG93Lk5vZGVMaXN0KQorICAgICAgICByZXR1cm4gImFycmF5IjsKKyAgICBpZiAob2JqIGlu
c3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LkhUTUxDb2xsZWN0aW9uKQorICAgICAgICByZXR1cm4g
ImFycmF5IjsKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LkVycm9yKQor
ICAgICAgICByZXR1cm4gImVycm9yIjsKKyAgICByZXR1cm4gdHlwZTsKK30KKworSW5qZWN0ZWRT
Y3JpcHQuX2Rlc2NyaWJlID0gZnVuY3Rpb24ob2JqLCBhYmJyZXZpYXRlZCkKK3sKKyAgICB2YXIg
dHlwZSA9IEluamVjdGVkU2NyaXB0Ll90eXBlKG9iaik7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlICJvYmplY3QiOgorICAgIGNhc2UgIm5vZGUiOgorICAgIGNhc2UgImFycmF5IjoK
KyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IEluamVjdGVkU2NyaXB0Ll9jbGFzc05hbWUob2JqKTsK
KyAgICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoID09PSAibnVtYmVyIikKKyAgICAgICAgICAg
IGNsYXNzTmFtZSArPSAiWyIgKyBvYmoubGVuZ3RoICsgIl0iOworICAgICAgICByZXR1cm4gY2xh
c3NOYW1lOworICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIGlmICghYWJicmV2aWF0ZWQpCisg
ICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICBpZiAob2JqLmxlbmd0aCA+IDEwMCkKKyAg
ICAgICAgICAgIHJldHVybiAiXCIiICsgb2JqLnN1YnN0cmluZygwLCAxMDApICsgIlx1MjAyNlwi
IjsKKyAgICAgICAgcmV0dXJuICJcIiIgKyBvYmogKyAiXCIiOworICAgIGNhc2UgImZ1bmN0aW9u
IjoKKyAgICAgICAgdmFyIG9iamVjdFRleHQgPSBJbmplY3RlZFNjcmlwdC5fdG9TdHJpbmcob2Jq
KTsKKyAgICAgICAgaWYgKGFiYnJldmlhdGVkKQorICAgICAgICAgICAgb2JqZWN0VGV4dCA9IC8u
Ki8uZXhlYyhvYmplY3RUZXh0KVswXS5yZXBsYWNlKC8gKyQvZywgIiIpOworICAgICAgICByZXR1
cm4gb2JqZWN0VGV4dDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQuX3RvU3RyaW5nKG9iaik7CisgICAgfQorfQorCitJbmplY3RlZFNjcmlwdC5fdG9TdHJpbmcg
PSBmdW5jdGlvbihvYmopCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIFN0cmluZyhvYmopIGJlY2F1
c2UgaW5zcGVjdGVkV2luZG93LlN0cmluZyBpcyB1bmRlZmluZWQgaWYgb3duaW5nIGZyYW1lIG5h
dmlnYXRlZCB0byBhbm90aGVyIHBhZ2UuCisgICAgcmV0dXJuICIiICsgb2JqOworfQorCitJbmpl
Y3RlZFNjcmlwdC5fY2xhc3NOYW1lID0gZnVuY3Rpb24ob2JqKQoreworICAgIC8vIFdlIGNhbid0
IHVzZSB0aGUgc2FtZSBjb2RlIGZvciBmZXRjaGluZyBjbGFzcyBuYW1lcyBvZiB0aGUgZG9tIGJp
bmRpbmdzIHByb3RvdHlwZSBjaGFpbi4KKyAgICAvLyBCb3RoIG9mIHRoZSBtZXRob2RzIGJlbG93
IHJlc3VsdCBpbiAiT2JqZWN0IiBuYW1lcyBvbiB0aGUgZm9yZWlnbiBlbmdpbmUgYmluZGluZ3Mu
CisgICAgLy8gSSBnYXZlIHVwIGFuZCBhbSB1c2luZyBhIGNoZWNrIGJlbG93IHRvIGRpc3Rpbmd1
aXNoIGJldHdlZW4gdGhlIGVnaW5lIGJpbmdpbmdzLgorCisgICAgaWYgKGpzRW5naW5lID09ICJK
U0MiKSB7CisgICAgICAgIHZhciBzdHIgPSBpbnNwZWN0ZWRXaW5kb3cuT2JqZWN0ID8gaW5zcGVj
dGVkV2luZG93Lk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopIDogSW5qZWN0ZWRT
Y3JpcHQuX3RvU3RyaW5nKG9iaik7CisgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlxbb2Jq
ZWN0ICguKilcXSQvaSwgIiQxIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVjgKKyAgICAg
ICAgcmV0dXJuIG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IubmFtZSB8fCAiT2Jq
ZWN0IjsKKyAgICB9Cit9CisKK0luamVjdGVkU2NyaXB0Ll9sb2dFdmVudCA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIGNvbnNvbGUubG9nKGV2ZW50LnR5cGUsIGV2ZW50KTsKK30KKworSW5qZWN0
ZWRTY3JpcHQuX25vcm1hbGl6ZUV2ZW50VHlwZXMgPSBmdW5jdGlvbih0eXBlcykKK3sKKyAgICBp
ZiAodHlwZW9mIHR5cGVzID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgdHlwZXMgPSBbICJtb3Vz
ZSIsICJrZXkiLCAibG9hZCIsICJ1bmxvYWQiLCAiYWJvcnQiLCAiZXJyb3IiLCAic2VsZWN0Iiwg
ImNoYW5nZSIsICJzdWJtaXQiLCAicmVzZXQiLCAiZm9jdXMiLCAiYmx1ciIsICJyZXNpemUiLCAi
c2Nyb2xsIiBdOworICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCisgICAg
ICAgIHR5cGVzID0gWyB0eXBlcyBdOworCisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHR5cGVzW2ld
ID09PSAibW91c2UiKQorICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAibW91c2Vkb3du
IiwgIm1vdXNldXAiLCAiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3Zl
ciIsICJtb3VzZW91dCIpOworICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCisg
ICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJrZXlkb3duIiwgImtleXVwIiwgImtleXBy
ZXNzIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3Rl
ZE5vZGUgPSBmdW5jdGlvbihudW0pCit7CisgICAgdmFyIG5vZGVJZCA9IEluamVjdGVkU2NyaXB0
SG9zdC5pbnNwZWN0ZWROb2RlKG51bSk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0Ll9ub2Rl
Rm9ySWQobm9kZUlkKTsKK30KKwogZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoKQogewotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNTsgKytpKQotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18o
IiQiICsgaSwgaW5qZWN0ZWRTY3JpcHQuX2JpbmRUb1NjcmlwdChpbmplY3RlZFNjcmlwdC5faW5z
cGVjdGVkTm9kZSwgaSkpOwogfQogCiBDb21tYW5kTGluZUFQSS5wcm90b3R5cGUgPSB7CkBAIC02
ODYsMTAgKzY2OSwxMCBAQCBDb21tYW5kTGluZUFQSS5wcm90b3R5cGUgPSB7CiAgICAgewogICAg
ICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0eXBlcyA9
IGluamVjdGVkU2NyaXB0Ll9ub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKKyAgICAgICAgdHlw
ZXMgPSBJbmplY3RlZFNjcmlwdC5fbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIG9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBpbmplY3RlZFNjcmlwdC5fbG9nRXZl
bnQsIGZhbHNlKTsKLSAgICAgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ld
LCBpbmplY3RlZFNjcmlwdC5fbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIG9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBJbmplY3RlZFNjcmlwdC5fbG9nRXZlbnQsIGZh
bHNlKTsKKyAgICAgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBJbmpl
Y3RlZFNjcmlwdC5fbG9nRXZlbnQsIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTY5
Nyw5ICs2ODAsOSBAQCBDb21tYW5kTGluZUFQSS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1v
dmVFdmVudExpc3RlbmVyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0eXBlcyA9IGlu
amVjdGVkU2NyaXB0Ll9ub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKKyAgICAgICAgdHlwZXMg
PSBJbmplY3RlZFNjcmlwdC5fbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvYmplY3Qu
cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgaW5qZWN0ZWRTY3JpcHQuX2xvZ0V2ZW50LCBm
YWxzZSk7CisgICAgICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwg
SW5qZWN0ZWRTY3JpcHQuX2xvZ0V2ZW50LCBmYWxzZSk7CiAgICAgfSwKIAogICAgIGluc3BlY3Q6
IGZ1bmN0aW9uKG9iamVjdCkKQEAgLTcwOCwxMCArNjkxLDEwIEBAIENvbW1hbmRMaW5lQVBJLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpbnNwZWN0ZWRXaW5k
b3cuY29uc29sZS5sb2cob2JqZWN0KTsKLSAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Ll90eXBl
KG9iamVjdCkgPT09ICJub2RlIikKKyAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0Ll90eXBlKG9i
amVjdCkgPT09ICJub2RlIikKICAgICAgICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5wdXNoTm9k
ZVBhdGhUb0Zyb250ZW5kKG9iamVjdCwgZmFsc2UsIHRydWUpOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAoaW5qZWN0ZWRTY3JpcHQuX2Rlc2NyaWJlKG9iamVjdCkpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoSW5qZWN0ZWRTY3JpcHQuX2Rlc2NyaWJlKG9iamVjdCkpIHsKICAg
ICAgICAgICAgICAgICBjYXNlICJEYXRhYmFzZSI6CiAgICAgICAgICAgICAgICAgICAgIEluamVj
dGVkU2NyaXB0SG9zdC5zZWxlY3REYXRhYmFzZShvYmplY3QpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTcyNCw3ICs3MDcsNyBAQCBDb21tYW5kTGluZUFQSS5wcm90b3R5cGUgPSB7
CiAKICAgICBjb3B5OiBmdW5jdGlvbihvYmplY3QpCiAgICAgewotICAgICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuX3R5cGUob2JqZWN0KSA9PT0gIm5vZGUiKSB7CisgICAgICAgIGlmIChJbmplY3Rl
ZFNjcmlwdC5fdHlwZShvYmplY3QpID09PSAibm9kZSIpIHsKICAgICAgICAgICAgIHZhciBub2Rl
SWQgPSBJbmplY3RlZFNjcmlwdEhvc3QucHVzaE5vZGVQYXRoVG9Gcm9udGVuZChvYmplY3QsIGZh
bHNlLCBmYWxzZSk7CiAgICAgICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY29weU5vZGUobm9k
ZUlkKTsKICAgICAgICAgfSBlbHNlCkBAIC03MzQsOSArNzE3LDM1IEBAIENvbW1hbmRMaW5lQVBJ
LnByb3RvdHlwZSA9IHsKICAgICBjbGVhcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgfSwKKworICAgIGdl
dCAkMCgpCisgICAgeworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RlZE5v
ZGUoMCk7CisgICAgfSwKKworICAgIGdldCAkMSgpCisgICAgeworICAgICAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHQuX2luc3BlY3RlZE5vZGUoMSk7CisgICAgfSwKKworICAgIGdldCAkMigpCisg
ICAgeworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RlZE5vZGUoMik7Cisg
ICAgfSwKKworICAgIGdldCAkMygpCisgICAgeworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQuX2luc3BlY3RlZE5vZGUoMyk7CisgICAgfSwKKworICAgIGdldCAkNCgpCisgICAgeworICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RlZE5vZGUoNCk7CiAgICAgfQogfQog
Ci1pbmplY3RlZFNjcmlwdC5fY29tbWFuZExpbmVBUEkgPSBuZXcgQ29tbWFuZExpbmVBUEkoKTsK
LXJldHVybiBpbmplY3RlZFNjcmlwdDsKK0luamVjdGVkU2NyaXB0Ll9jb21tYW5kTGluZUFQSSA9
IG5ldyBDb21tYW5kTGluZUFQSSgpOworCityZXR1cm4gSW5qZWN0ZWRTY3JpcHQ7CiB9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>