<?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>155921</bug_id>
          
          <creation_ts>2016-03-25 22:27:04 -0700</creation_ts>
          <short_desc>BuildbotSyncer should be able to fetch JSON from buildbot</short_desc>
          <delta_ts>2016-03-29 20:16:25 -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>Perf Dashboard</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178248</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-25 22:27:04 -0700</bug_when>
    <thetext>Add a method to fetch pending, in-progress, and finished build information from buildbot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178257</commentid>
    <comment_count>1</comment_count>
      <attachid>274976</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-25 22:44:17 -0700</bug_when>
    <thetext>Created attachment 274976
Adds a method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178787</commentid>
    <comment_count>2</comment_count>
      <attachid>274976</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-29 13:37:28 -0700</bug_when>
    <thetext>Comment on attachment 274976
Adds a method

View in context: https://bugs.webkit.org/attachment.cgi?id=274976&amp;action=review

r=me

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        with lots of unit tests as this has historically been a source of of subtle bugs in the old script.

Typo: &quot;of of&quot; =&gt; &quot;of&quot;

&gt; Websites/perf.webkit.org/ChangeLog:11
&gt; +        New implementation fixes a subtle in the old pythons script which overlooked the possibility that the

Grammar: &quot;fixes a subtle in&quot;

&gt; Websites/perf.webkit.org/ChangeLog:14
&gt; +        a pending may start running or an in-progress build finish and shift the offset by one. Thew new script

Grammar: &quot;a pending may start&quot; =&gt; &quot;a pending build may start&quot;
Typo: &quot;Thew&quot; =&gt; &quot;The&quot;

&gt; Websites/perf.webkit.org/ChangeLog:15
&gt; +        avoids this problem by requesting all previous builds by single HTTP request with multiple select query

Grammar: &quot;by single&quot; =&gt; &quot;by a single&quot;

&gt; Websites/perf.webkit.org/ChangeLog:16
&gt; +        parameters after requesting pending builds, and then letting pending requests overridden by in-progress

Grammar: &quot;then letting pending requests overridden&quot;

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:86
&gt; +            var entries = [];

Nit: `let` instead of `var`

&gt; Websites/perf.webkit.org/tools/js/v3-models.js:35
&gt; +global[&apos;RemoteAPI&apos;] = require(&apos;./remote.js&apos;).RemoteAPI;
&gt; +
&gt;  global.Statistics = require(&apos;../../public/shared/statistics.js&apos;);

Nit: Two different styles. &quot;global.RemoteAPI&quot; would be simpler.

&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:474
&gt; +            let promise = syncer.pullBuildbot(1);

This local variable is not used. Should it be? Otherwise, you can drop it.

&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:524
&gt; +            Promise.resolve().then(function (entries) {

You probably don&apos;t want the parameter &quot;entries&quot; here. There are bunch of these &quot;Promise.resolve().then(function (xxx) {&quot; lines where the &quot;xxx&quot; portion can be dropped.

&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:620
&gt; +        it(&apos;should overrde BuildbotBuildEntry for pending builds by in-progress builds&apos;, function (done) {

Typo: &quot;overdue&quot; =&gt; &quot;override&quot;

&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:650
&gt; +        it(&apos;should overrde BuildbotBuildEntry for pending builds by finished builds&apos;, function (done) {

Typo: &quot;overdue&quot; =&gt; &quot;override&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178934</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-29 20:08:31 -0700</bug_when>
    <thetext>Thanks for the review! Will address the comment &amp; land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178937</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-29 20:16:25 -0700</bug_when>
    <thetext>Committed r198824: &lt;http://trac.webkit.org/changeset/198824&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274976</attachid>
            <date>2016-03-25 22:44:17 -0700</date>
            <delta_ts>2016-03-29 13:37:28 -0700</delta_ts>
            <desc>Adds a method</desc>
            <filename>bug-155921-20160325224420.patch</filename>
            <type>text/plain</type>
            <size>36051</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NzEwKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUwIEBACisyMDE2LTAzLTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEJ1aWxkYm90U3luY2VyIHNob3VsZCBiZSBhYmxlIHRvIGZldGNoIEpTT04gZnJv
bSBidWlsZGJvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgQnVpbGRib3RTeW5jZXIucHVsbEJ1aWxkYm90IHdoaWNoIGZldGNoZXMgcGVuZGlu
ZywgaW4tcHJvZ3Jlc3MsIGFuZCBmaW5pc2hlZCBidWlsZHMgZnJvbSBidWlsZGJvdAorICAgICAg
ICB3aXRoIGxvdHMgb2YgdW5pdCB0ZXN0cyBhcyB0aGlzIGhhcyBoaXN0b3JpY2FsbHkgYmVlbiBh
IHNvdXJjZSBvZiBvZiBzdWJ0bGUgYnVncyBpbiB0aGUgb2xkIHNjcmlwdC4KKworICAgICAgICBO
ZXcgaW1wbGVtZW50YXRpb24gZml4ZXMgYSBzdWJ0bGUgaW4gdGhlIG9sZCBweXRob25zIHNjcmlw
dCB3aGljaCBvdmVybG9va2VkIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZQorICAgICAgICB0aGUg
c3RhdGUgb2Ygc29tZSBidWlsZHMgbWF5IGNoYW5nZSBiZXR3ZWVuIGVhY2ggSFRUUCByZXF1ZXN0
LiBJbiB0aGUgb2xkIHNjcmlwdCwgd2UgZmV0Y2hlZCB0aGUgbGlzdAorICAgICAgICBvZiB0aGUg
cGVuZGluZyBidWlsZHMsIGFuZCByZXF1ZXN0ZWQgLTEsIC0yLCBldGMuLi4gYnVpbGRzIGZvciBO
IHRpbWVzLiBCdXQgYmV0d2VlbiBlYWNoIHJlcXVlc3QsCisgICAgICAgIGEgcGVuZGluZyBtYXkg
c3RhcnQgcnVubmluZyBvciBhbiBpbi1wcm9ncmVzcyBidWlsZCBmaW5pc2ggYW5kIHNoaWZ0IHRo
ZSBvZmZzZXQgYnkgb25lLiBUaGV3IG5ldyBzY3JpcHQKKyAgICAgICAgYXZvaWRzIHRoaXMgcHJv
YmxlbSBieSByZXF1ZXN0aW5nIGFsbCBwcmV2aW91cyBidWlsZHMgYnkgc2luZ2xlIEhUVFAgcmVx
dWVzdCB3aXRoIG11bHRpcGxlIHNlbGVjdCBxdWVyeQorICAgICAgICBwYXJhbWV0ZXJzIGFmdGVy
IHJlcXVlc3RpbmcgcGVuZGluZyBidWlsZHMsIGFuZCB0aGVuIGxldHRpbmcgcGVuZGluZyByZXF1
ZXN0cyBvdmVycmlkZGVuIGJ5IGluLXByb2dyZXNzCisgICAgICAgIGFuZCBmaW5pc2hlZCBidWls
ZHMuCisKKyAgICAgICAgQWxzbyByZW5hbWVkIFJlbW90ZUFQSS5mZXRjaEpTT04gdG8gUmVtb3Rl
QVBJLmdldEpTT04gdG8gbWF0Y2ggdjMgVUkncyBSZW1vdGVBUEkuIFRoaXMgY2hhbmdlIG1ha2Vz
CisgICAgICAgIHRoZSBjbGFzcyBpbnRlcmNoYW5nZWFibGUgYmV0d2VlbiBmcm9udGVuZCAocHVi
bGljL3YzL3JlbW90ZS5qcykgYW5kIGJhY2tlbmQgKHRvb2xzL2pzL3JlbW90ZS5qcykuCisKKyAg
ICAgICAgKiBzZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzOgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanM6CisgICAgICAgICogdG9vbHMvanMvYnVp
bGRib3Qtc3luY2VyLmpzOgorICAgICAgICAoQnVpbGRib3RCdWlsZEVudHJ5KTogUmVtb3ZlZCB0
aGUgdW51c2VkIGFyZ3VtZW50ICJ0eXBlIi4gU3RvcmUgdGhlIHN5bmNlciBhcyBhbiBpbnN0YW5j
ZSB2YXJpYWJsZSBhcworICAgICAgICB3ZSdkIG5lZWQgdG8gcXVlcnkgZm9yIHRoZSBidWlsZGJv
dCBVUkwuIEFsc28gZml4ZWQgYSBidWcgdGhhdCBfaXNJblByb2dyZXNzIHdhcyB0cnVlIGZvciBm
aW5pc2hlZAorICAgICAgICBidWlsZHMgYXMgJ2N1cnJlbnRTdGVwJyBpcyBhbHdheXMgZGVmaW5l
ZCBidXQgbnVsbCBpbiB0aG9zZSBidWlsZHMuCisgICAgICAgIChCdWlsZGJvdEJ1aWxkRW50cnku
cHJvdG90eXBlLmJ1aWxkTnVtYmVyKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdEJ1aWxkRW50
cnkucHJvdG90eXBlLmlzUGVuZGluZyk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RCdWlsZEVu
dHJ5LnByb3RvdHlwZS5oYXNGaW5pc2hlZCk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RTeW5j
ZXIucHJvdG90eXBlLnB1bGxCdWlsZGJvdCk6IEFkZGVkLiBGZXRjaGVzIHBlbmRpbmcgYnVpbGRz
IGZpcnN0IGFuZCB0aGVuIGZpbmlzaGVkIGJ1aWxkcy4KKyAgICAgICAgKEJ1aWxkYm90U3luY2Vy
LnByb3RvdHlwZS5fcHVsbFJlY2VudEJ1aWxkcyk6IEFkZGVkLiBGZXRjaGVzIGluLXByb2dyZXNz
IGFuZCBmaW5pc2hlZCBidWlsZHMuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUu
dXJsRm9yUGVuZGluZ0J1aWxkc0pTT04pOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90U3luY2Vy
LnByb3RvdHlwZS51cmxGb3JCdWlsZEpTT04pOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90U3lu
Y2VyLnByb3RvdHlwZS51cmwpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3Rv
dHlwZS51cmxGb3JCdWlsZE51bWJlcik6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2pzL3JlbW90
ZS5qczoKKyAgICAgICAgKFJlbW90ZUFQSS5wcm90b3R5cGUuZ2V0SlNPTik6IFJlbmFtZWQgZnJv
bSBmZXRjaEpTT04uCisgICAgICAgIChSZW1vdGVBUEkucHJvdG90eXBlLmdldEpTT05XaXRoU3Rh
dHVzKTogUmVuYW1lZCBmcm9tIGZldGNoSlNPTldpdGhTdGF0dXMuCisgICAgICAgICogdG9vbHMv
anMvdjMtbW9kZWxzLmpzOiBMb2FkIHRvb2xzL2pzL3JlbW90ZS5qcyBpbnN0ZWFkIG9mIHB1Ymxp
Yy92My9yZW1vdGUuanMgaW5zaWRlIG5vZGUuCisgICAgICAgICogdW5pdC10ZXN0cy9idWlsZGJv
dC1zeW5jZXItdGVzdHMuanM6IEFkZGVkIGEgbG90IG9mIHVuaXQgdGVzdHMgZm9yIEJ1aWxkYm90
U3luY2VyLnB1bGxCdWlsZGJvdAorICAgICAgICAoc2FtcGxlUGVuZGluZ0J1aWxkKToKKyAgICAg
ICAgKHNhbXBsZUluUHJvZ3Jlc3NCdWlsZCk6IEFkZGVkLgorICAgICAgICAoc2FtcGxlRmluaXNo
ZWRCdWlsZCk6IEFkZGVkLgorICAgICAgICAqIHVuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stcmVt
b3RlLWFwaS5qczoKKyAgICAgICAgKGdsb2JhbC5SZW1vdGVBUEkuZ2V0SlNPTik6IFVzZSB0aGUg
c2FtZSBtb2NrIGFzIGdldEpTT05XaXRoU3RhdHVzLgorCiAyMDE2LTAzLTI0ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1pZ3JhdGUgYWRtaW4tcmVnZW5lcmF0
ZS1tYW5pZmVzdC5qcyB0byBtb2NoYS5qcyBhbmQgdGVzdCB2MyBVSSBjb2RlCkluZGV4OiBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwkocmV2aXNpb24gMTk4NzEwKQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJl
cXVlc3RzJywgZnVuY3Rpb24KICAgICBUZXN0U2VydmVyLmluamVjdCgpOwogCiAgICAgaXQoJ3No
b3VsZCByZXR1cm4gIlRyaWdnZXJhYmxlTm90Rm91bmQiIHdoZW4gdGhlIGRhdGFiYXNlIGlzIGVt
cHR5JywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5m
ZXRjaEpTT04oJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0JykudGhlbihmdW5jdGlv
biAoY29udGVudCkgeworICAgICAgICBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9h
cGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0JykudGhlbihmdW5jdGlvbiAoY29udGVudCkg
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnVHJpZ2dlcmFi
bGVOb3RGb3VuZCcpOwogICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICB9KS5jYXRjaChkb25l
KTsKQEAgLTE4LDcgKzE4LDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5j
dGlvbgogICAgICAgICBUZXN0U2VydmVyLmRhdGFiYXNlKCkuY29ubmVjdCgpLnRoZW4oZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQo
J2J1aWxkX3RyaWdnZXJhYmxlcycsIHtuYW1lOiAnYnVpbGQtd2Via2l0J30pOwogICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmZldGNoSlNPTignL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQnKTsKKyAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvYnVp
bGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jyk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNv
bnRlbnQpIHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50WydzdGF0dXMnXSwgJ09L
Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XSwgW10pOwpAQCAtNjEsNyArNjEsNyBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycs
IGZ1bmN0aW9uCiAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIHJldHVybiBhZGRNb2NrRGF0YShkYik7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZmV0Y2hKU09O
V2l0aFN0YXR1cygnL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQnKTsKKyAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBp
L2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChjb250ZW50KSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNv
bnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ3Jvb3RTZXRzJywgJ3Jvb3RzJywgJ3N0
YXR1cyddKTsKIApAQCAtMTE5LDcgKzExOSw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVl
c3RzJywgZnVuY3Rpb24KICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgcmV0dXJuIGFkZE1vY2tEYXRhKGRiKTsKICAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5mZXRj
aEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdD91c2VMZWdh
Y3lJZFJlc29sdXRpb249dHJ1ZScpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Vi
a2l0P3VzZUxlZ2FjeUlkUmVzb2x1dGlvbj10cnVlJyk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKGNvbnRlbnQpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMo
Y29udGVudCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAncm9vdFNldHMnLCAncm9vdHMnLCAn
c3RhdHVzJ10pOwogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FwaS1tYW5pZmVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FwaS1tYW5pZmVzdC5qcwkocmV2aXNpb24gMTk4NzEwKQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDcgKzIwLDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBm
dW5jdGlvbgogICAgIH0pOwogCiAgICAgaXQoInNob3VsZCBnZW5lcmF0ZSBhbiBlbXB0eSBtYW5p
ZmVzdCB3aGVuIGRhdGFiYXNlIGlzIGVtcHR5IiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAg
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5mZXRjaEpTT04oJy9hcGkvbWFuaWZlc3QnKS50aGVuKGZ1
bmN0aW9uIChtYW5pZmVzdCkgeworICAgICAgICBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T04oJy9hcGkvbWFuaWZlc3QnKS50aGVuKGZ1bmN0aW9uIChtYW5pZmVzdCkgewogICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhtYW5pZmVzdCkuc29ydCgpLCBbJ2FsbCcs
ICdidWdUcmFja2VycycsICdidWlsZGVycycsICdkYXNoYm9hcmQnLCAnZGFzaGJvYXJkcycsCiAg
ICAgICAgICAgICAgICAgJ2VsYXBzZWRUaW1lJywgJ21ldHJpY3MnLCAncmVwb3NpdG9yaWVzJywg
J3NpdGVUaXRsZScsICdzdGF0dXMnLCAndGVzdHMnXSk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgZGVz
Y3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbgogICAgIGl0KCJzaG91bGQgZ2Vu
ZXJhdGUgbWFuaWZlc3Qgd2l0aCBidWcgdHJhY2tlcnMgd2l0aG91dCByZXBvc2l0b3JpZXMiLCBm
dW5jdGlvbiAoZG9uZSkgewogICAgICAgICBUZXN0U2VydmVyLmRhdGFiYXNlKCkuY29ubmVjdCgp
OwogICAgICAgICBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCBi
dWd6aWxsYURhdGEpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuZmV0Y2hKU09OKCcvYXBpL21hbmlmZXN0Jyk7CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL21hbmlmZXN0Jyk7
CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudC5idWdUcmFja2VycywgezE6IHtuYW1lOiAnQnVnemlsbGEnLCBi
dWdVcmw6ICdodHRwczovL3dlYmtpdC5vcmcvYi8kbnVtYmVyJywKICAgICAgICAgICAgICAgICBu
ZXdCdWdVcmw6ICdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8nLCByZXBvc2l0b3JpZXM6IG51bGx9
fSk7CkBAIC03OCw3ICs3OCw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVu
Y3Rpb24KICAgICAgICAgICAgIGRiLmluc2VydCgndHJhY2tlcl9yZXBvc2l0b3JpZXMnLCB7dHJh
Y2tlcjogcmFkYXJEYXRhLmlkLCByZXBvc2l0b3J5OiA5fSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3RyYWNrZXJfcmVwb3NpdG9yaWVzJywge3RyYWNrZXI6IHJhZGFyRGF0YS5pZCwgcmVwb3Np
dG9yeTogMjJ9KSwKICAgICAgICAgXSkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5mZXRjaEpTT04oJy9hcGkvbWFuaWZlc3QnKTsK
KyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkv
bWFuaWZlc3QnKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgewogICAgICAg
ICAgICAgbGV0IG1hbmlmZXN0ID0gTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZlc3QoY29udGVudCk7
CiAKQEAgLTExOSw3ICsxMTksNyBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1
bmN0aW9uCiAgICAgICAgICAgICAgICAgYnVpbGRfdXJsOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQu
b3JnL2J1aWxkZXJzLyRidWlsZGVyTmFtZS9idWlsZC8kYnVpbGROdW1iZXInfSksCiAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2J1aWxkZXJzJywge2lkOiAyLCBuYW1lOiAnU29tZU90aGVyQnVpbGRl
cicsIHBhc3N3b3JkX2hhc2g6ICdiJ30pCiAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZmV0Y2hKU09OKCcvYXBp
L21hbmlmZXN0Jyk7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5n
ZXRKU09OKCcvYXBpL21hbmlmZXN0Jyk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbnRl
bnQpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC5idWlsZGVycywgewog
ICAgICAgICAgICAgICAgICcxJzoge25hbWU6ICdTb21lQnVpbGRlcicsIGJ1aWxkVXJsOiAnaHR0
cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWlsZGVyTmFtZS9idWlsZC8kYnVpbGRO
dW1iZXInfSwKQEAgLTE2Niw3ICsxNjYsNyBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0
cycsIGZ1bmN0aW9uCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMn
LCB7aWQ6IDEwNiwgbWV0cmljOiA1LCBwbGF0Zm9ybTogMjMsIHR5cGU6ICdjdXJyZW50J30pLAog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDcsIG1l
dHJpYzogNSwgcGxhdGZvcm06IDIzLCB0eXBlOiAnYmFzZWxpbmUnfSksCiAgICAgICAgIF0pLnRo
ZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZmV0Y2hKU09OKCcvYXBpL21hbmlmZXN0Jyk7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL21hbmlmZXN0Jyk7CiAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29u
dGVudC50ZXN0cywgewogICAgICAgICAgICAgICAgICIxIjogeyJuYW1lIjogIlNvbWVUZXN0Iiwg
InBhcmVudElkIjogbnVsbCwgInVybCI6IG51bGx9LApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCShyZXZpc2lvbiAx
OTg3MTApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3lu
Y2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01LDE5ICs1LDIwIEBAIGxldCBhc3NlcnQgPSByZXF1
aXJlKCdhc3NlcnQnKTsKIHJlcXVpcmUoJy4vdjMtbW9kZWxzLmpzJyk7CiAKIGNsYXNzIEJ1aWxk
Ym90QnVpbGRFbnRyeSB7Ci0gICAgY29uc3RydWN0b3Ioc3luY2VyLCB0eXBlLCByYXdEYXRhKQor
ICAgIGNvbnN0cnVjdG9yKHN5bmNlciwgcmF3RGF0YSkKICAgICB7CiAgICAgICAgIGFzc2VydC5l
cXVhbChzeW5jZXIuYnVpbGRlck5hbWUoKSwgcmF3RGF0YVsnYnVpbGRlck5hbWUnXSk7CiAKKyAg
ICAgICAgdGhpcy5fc3luY2VyID0gc3luY2VyOwogICAgICAgICB0aGlzLl9zbGF2ZU5hbWUgPSBu
dWxsOwogICAgICAgICB0aGlzLl9idWlsZFJlcXVlc3RJZCA9IG51bGw7Ci0gICAgICAgIHRoaXMu
X2lzSW5Qcm9ncmVzcyA9ICdjdXJyZW50U3RlcCcgaW4gcmF3RGF0YTsKKyAgICAgICAgdGhpcy5f
aXNJblByb2dyZXNzID0gcmF3RGF0YVsnY3VycmVudFN0ZXAnXSB8fCAocmF3RGF0YVsndGltZXMn
XSAmJiAhcmF3RGF0YVsndGltZXMnXVsxXSk7CiAgICAgICAgIHRoaXMuX2J1aWxkTnVtYmVyID0g
cmF3RGF0YVsnbnVtYmVyJ107CiAKLSAgICAgICAgZm9yICh2YXIgcHJvcGVydHlUdXBsZSBvZiAo
cmF3RGF0YVsncHJvcGVydGllcyddIHx8IFtdKSkgeworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0
eVR1cGxlIG9mIChyYXdEYXRhWydwcm9wZXJ0aWVzJ10gfHwgW10pKSB7CiAgICAgICAgICAgICAv
LyBlLmcuIFsnYnVpbGRfcmVxdWVzdF9pZCcsICcxNjczMycsICdGb3JjZSBCdWlsZCBGb3JtJ10K
LSAgICAgICAgICAgIHZhciBuYW1lID0gcHJvcGVydHlUdXBsZVswXTsKLSAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IHByb3BlcnR5VHVwbGVbMV07CisgICAgICAgICAgICBsZXQgbmFtZSA9IHByb3Bl
cnR5VHVwbGVbMF07CisgICAgICAgICAgICBsZXQgdmFsdWUgPSBwcm9wZXJ0eVR1cGxlWzFdOwog
ICAgICAgICAgICAgaWYgKG5hbWUgPT0gc3luY2VyLl9zbGF2ZVByb3BlcnR5TmFtZSkKICAgICAg
ICAgICAgICAgICB0aGlzLl9zbGF2ZU5hbWUgPSB2YWx1ZTsKICAgICAgICAgICAgIGVsc2UgaWYg
KG5hbWUgPT0gc3luY2VyLl9idWlsZFJlcXVlc3RQcm9wZXJ0eU5hbWUpCkBAIC0yNSw5ICsyNiwx
MyBAQCBjbGFzcyBCdWlsZGJvdEJ1aWxkRW50cnkgewogICAgICAgICB9CiAgICAgfQogCisgICAg
YnVpbGROdW1iZXIoKSB7IHJldHVybiB0aGlzLl9idWlsZE51bWJlcjsgfQogICAgIHNsYXZlTmFt
ZSgpIHsgcmV0dXJuIHRoaXMuX3NsYXZlTmFtZTsgfQogICAgIGJ1aWxkUmVxdWVzdElkKCkgeyBy
ZXR1cm4gdGhpcy5fYnVpbGRSZXF1ZXN0SWQ7IH0KKyAgICBpc1BlbmRpbmcoKSB7IHJldHVybiAh
dGhpcy5fYnVpbGROdW1iZXI7IH0KICAgICBpc0luUHJvZ3Jlc3MoKSB7IHJldHVybiB0aGlzLl9p
c0luUHJvZ3Jlc3M7IH0KKyAgICBoYXNGaW5pc2hlZCgpIHsgcmV0dXJuICF0aGlzLmlzUGVuZGlu
ZygpICYmICF0aGlzLmlzSW5Qcm9ncmVzcygpOyB9CisgICAgdXJsKCkgeyByZXR1cm4gdGhpcy5p
c1BlbmRpbmcoKSA/IHRoaXMuX3N5bmNlci51cmwoKSA6IHRoaXMuX3N5bmNlci51cmxGb3JCdWls
ZE51bWJlcih0aGlzLl9idWlsZE51bWJlcik7IH0KIH0KIAogY2xhc3MgQnVpbGRib3RTeW5jZXIg
ewpAQCAtNDcsMjQgKzUyLDU3IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICBidWlsZGVy
TmFtZSgpIHsgcmV0dXJuIHRoaXMuX2J1aWxkZXJOYW1lOyB9CiAgICAgcGxhdGZvcm1OYW1lKCkg
eyByZXR1cm4gdGhpcy5fcGxhdGZvcm1OYW1lOyB9CiAKLSAgICBmZXRjaFBlbmRpbmdSZXF1ZXN0
cygpCisgICAgcHVsbEJ1aWxkYm90KGNvdW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUFQSS5mZXRjaEpTT04oYCR7dGhpcy5fdXJsfS9qc29uL2J1aWxkZXJzLyR7dGhpcy5fbmFtZX0v
cGVuZGluZ0J1aWxkc2ApLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKLSAgICAgICAgICAgIHZh
ciByZXF1ZXN0cyA9IFtdOwotICAgICAgICAgICAgZm9yICh2YXIgZW50cnkgb2YgY29udGVudCkg
ewotICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZW50cnlbJ3Byb3BlcnRpZXMnXTsK
LSAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5VHVwbGUgb2YgcHJvcGVy
dGllcykgewotICAgICAgICAgICAgICAgICAgICAvLyBlLmcuIFsnYnVpbGRfcmVxdWVzdF9pZCcs
ICcxNjczMycsICdGb3JjZSBCdWlsZCBGb3JtJ10KLSAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b3BlcnR5VHVwbGVbMF0gPT0gdGhpcy5fYnVpbGRSZXF1ZXN0UHJvcGVydHlOYW1lKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdHMucHVzaChwcm9wZXJ0eVR1cGxlWzFdKTsKLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJuIFJl
bW90ZUFQSS5nZXRKU09OKHRoaXMudXJsRm9yUGVuZGluZ0J1aWxkc0pTT04oKSkudGhlbihmdW5j
dGlvbiAoY29udGVudCkgeworICAgICAgICAgICAgbGV0IHBlbmRpbmdFbnRyaWVzID0gY29udGVu
dC5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBuZXcgQnVpbGRib3RCdWlsZEVudHJ5KHNl
bGYsIGVudHJ5KTsgfSk7CisKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wdWxsUmVjZW50QnVp
bGRzKGNvdW50KS50aGVuKGZ1bmN0aW9uIChlbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgbGV0
IGVudHJ5QnlSZXF1ZXN0ID0ge307CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBv
ZiBwZW5kaW5nRW50cmllcykKKyAgICAgICAgICAgICAgICAgICAgZW50cnlCeVJlcXVlc3RbZW50
cnkuYnVpbGRSZXF1ZXN0SWQoKV0gPSBlbnRyeTsKKworICAgICAgICAgICAgICAgIGZvciAobGV0
IGVudHJ5IG9mIGVudHJpZXMpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5QnlSZXF1ZXN0W2Vu
dHJ5LmJ1aWxkUmVxdWVzdElkKCldID0gZW50cnk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZW50cnlCeVJlcXVlc3Q7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgX3B1bGxSZWNlbnRCdWlsZHMoY291bnQpCisgICAgeworICAgICAgICBpZiAoIWNvdW50KQor
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7CisKKyAgICAgICAgbGV0IHNl
bGVjdGVkQnVpbGRzID0gbmV3IEFycmF5KGNvdW50KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgc2VsZWN0ZWRCdWlsZHNbaV0gPSAtaSAtIDE7
CisKKyAgICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICByZXR1cm4gUmVtb3RlQVBJLmdl
dEpTT04odGhpcy51cmxGb3JCdWlsZEpTT04oc2VsZWN0ZWRCdWlsZHMpKS50aGVuKGZ1bmN0aW9u
IChjb250ZW50KSB7CisgICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOworICAgICAgICAgICAg
Zm9yIChsZXQgaW5kZXggb2Ygc2VsZWN0ZWRCdWlsZHMpIHsKKyAgICAgICAgICAgICAgICBsZXQg
ZW50cnkgPSBjb250ZW50W2luZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkgJiYgIWVu
dHJ5WydlcnJvciddKQorICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3IEJ1aWxk
Ym90QnVpbGRFbnRyeShzZWxmLCBlbnRyeSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHJlcXVlc3RzOworICAgICAgICAgICAgcmV0dXJuIGVudHJpZXM7CiAgICAgICAgIH0p
OwogICAgIH0KIAorICAgIHVybEZvclBlbmRpbmdCdWlsZHNKU09OKCkgeyByZXR1cm4gYCR7dGhp
cy5fdXJsfS9qc29uL2J1aWxkZXJzLyR7dGhpcy5fYnVpbGRlck5hbWV9L3BlbmRpbmdCdWlsZHNg
OyB9CisgICAgdXJsRm9yQnVpbGRKU09OKHNlbGVjdGVkQnVpbGRzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGAke3RoaXMuX3VybH0vanNvbi9idWlsZGVycy8ke3RoaXMuX2J1aWxkZXJOYW1lfS9i
dWlsZHMvP2AKKyAgICAgICAgICAgICsgc2VsZWN0ZWRCdWlsZHMubWFwKGZ1bmN0aW9uIChudW1i
ZXIpIHsgcmV0dXJuICdzZWxlY3Q9JyArIG51bWJlcjsgfSkuam9pbignJicpOworICAgIH0KKwor
ICAgIHVybCgpIHsgcmV0dXJuIGAke3RoaXMuX3VybH0vYnVpbGRlcnMvJHt0aGlzLl9idWlsZGVy
TmFtZX0vYDsgfQorICAgIHVybEZvckJ1aWxkTnVtYmVyKG51bWJlcikgeyByZXR1cm4gYCR7dGhp
cy5fdXJsfS9idWlsZGVycy8ke3RoaXMuX2J1aWxkZXJOYW1lfS9idWlsZHMvJHtudW1iZXJ9YDsg
fQorCiAgICAgX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QoYnVpbGRSZXF1ZXN0KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoYnVpbGRSZXF1ZXN0IGluc3RhbmNlb2YgQnVpbGRSZXF1
ZXN0KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9yZW1vdGUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JlbW90ZS5q
cwkocmV2aXNpb24gMTk4NzEwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pz
L3JlbW90ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQCBsZXQgUmVtb3RlQVBJ
ID0gbmV3IChjbGFzcyBSZW1vdGVBUEkgewogICAgICAgICB0aGlzLl9zZXJ2ZXIgPSBzZXJ2ZXI7
CiAgICAgfQogCi0gICAgZmV0Y2hKU09OKHBhdGgsIGRhdGEpCisgICAgZ2V0SlNPTihwYXRoLCBk
YXRhKQogICAgIHsKICAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gbnVsbDsKICAgICAgICAgaWYg
KGRhdGEpIHsKQEAgLTM0LDkgKzM0LDkgQEAgbGV0IFJlbW90ZUFQSSA9IG5ldyAoY2xhc3MgUmVt
b3RlQVBJIHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgZmV0Y2hKU09OV2l0aFN0YXR1cyhw
YXRoLCBkYXRhKQorICAgIGdldEpTT05XaXRoU3RhdHVzKHBhdGgsIGRhdGEpCiAgICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5mZXRjaEpTT04ocGF0aCwgZGF0YSkudGhlbihmdW5jdGlvbiAocmVz
dWx0KSB7CisgICAgICAgIHJldHVybiB0aGlzLmdldEpTT04ocGF0aCwgZGF0YSkudGhlbihmdW5j
dGlvbiAocmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0WydzdGF0dXMnXSAhPSAnT0sn
KQogICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy92My1tb2RlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkocmV2aXNpb24gMTk4NzEwKQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjks
NCArMjksNyBAQCBpbXBvcnRGcm9tVjMoJ21vZGVscy90ZXN0LWdyb3VwLmpzJywgJ1RlCiAKIGlt
cG9ydEZyb21WMygnaW5zdHJ1bWVudGF0aW9uLmpzJywgJ0luc3RydW1lbnRhdGlvbicpOwogCisv
LyBSZW1vdGVBUEkgaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGluIG5vZGUgc2luY2Ug
WEhSIGlzbid0IGF2YWlsYWJsZS4KK2dsb2JhbFsnUmVtb3RlQVBJJ10gPSByZXF1aXJlKCcuL3Jl
bW90ZS5qcycpLlJlbW90ZUFQSTsKKwogZ2xvYmFsLlN0YXRpc3RpY3MgPSByZXF1aXJlKCcuLi8u
Li9wdWJsaWMvc2hhcmVkL3N0YXRpc3RpY3MuanMnKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVz
dHMuanMJKHJldmlzaW9uIDE5ODcxMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIAogbGV0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwogCi1yZXF1aXJlKCcuL3Jl
c291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMnKTsKIHJlcXVpcmUoJy4uL3Rvb2xzL2pzL3YzLW1v
ZGVscy5qcycpOworcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJyk7CiBy
ZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcycpOwogCiBsZXQgQnVpbGRib3RC
dWlsZEVudHJ5ID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzJykuQnVp
bGRib3RCdWlsZEVudHJ5OwpAQCAtODMsMTIgKzgzLDEzIEBAIGZ1bmN0aW9uIGNyZWF0ZVNhbXBs
ZUJ1aWxkUmVxdWVzdCgpCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLWxldCBzYW1wbGVQZW5k
aW5nQnVpbGRzID0gWwotICAgIHsKK2Z1bmN0aW9uIHNhbXBsZVBlbmRpbmdCdWlsZChidWlsZFJl
cXVlc3RJZCkKK3sKKyAgICByZXR1cm4gewogICAgICAgICAnYnVpbGRlck5hbWUnOiAnQUJUZXN0
LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzJywKICAgICAgICAgJ2J1aWxkcyc6IFtdLAogICAgICAg
ICAncHJvcGVydGllcyc6IFsKLSAgICAgICAgICAgIFsnYnVpbGRfcmVxdWVzdF9pZCcsICcxNjcz
MycsICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAgICAgICAgICBbJ2J1aWxkX3JlcXVlc3RfaWQn
LCBidWlsZFJlcXVlc3RJZCB8fCAnMTY3MzMnLCAnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAg
ICAgICAgWydkZXNpcmVkX2ltYWdlJywgJzEzQTQ1MicsICdGb3JjZSBCdWlsZCBGb3JtJ10sCiAg
ICAgICAgICAgICBbJ293bmVyJywgJzx1bmtub3duPicsICdGb3JjZSBCdWlsZCBGb3JtJ10sCiAg
ICAgICAgICAgICBbJ3Rlc3RfbmFtZScsICdzcGVlZG9tZXRlcicsICdGb3JjZSBCdWlsZCBGb3Jt
J10sCkBAIC05OCw3ICs5OSw3IEBAIGxldCBzYW1wbGVQZW5kaW5nQnVpbGRzID0gWwogICAgICAg
ICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNhbXBsZVJvb3RTZXREYXRhKSwKICAgICAgICAgICAg
ICAgICAnRm9yY2UgQnVpbGQgRm9ybScKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBbJ3Nj
aGVkdWxlcicsICdBQlRlc3QtaVBhZC1QZXJmb3JtYW5jZS1UZXN0cy1Gb3JjZVNjaGVkdWxlcics
ICdTY2hlZHVsZXInXQorICAgICAgICAgICAgWydzY2hlZHVsZXInLCAnQUJUZXN0LWlQYWQtUnVu
QmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJywgJ1NjaGVkdWxlciddCiAgICAgICAgIF0s
CiAgICAgICAgICdzb3VyY2UnOiB7CiAgICAgICAgICAgICAnYnJhbmNoJzogJycsCkBAIC0xMTAs
MTQgKzExMSwxNzYgQEAgbGV0IHNhbXBsZVBlbmRpbmdCdWlsZHMgPSBbCiAgICAgICAgICAgICAn
cmV2aXNpb24nOiAnJwogICAgICAgICB9LAogICAgICAgICAnc3VibWl0dGVkQXQnOiAxNDU4NzA0
OTgzCi0gICAgfQotXTsKKyAgICB9OworfQogCi1kZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBm
dW5jdGlvbiAoKSB7Ci0gICAgZGVzY3JpYmUoJ2ZldGNoUGVuZGluZ0J1aWxkcycsIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgQnVpbGRib3RTeW5jZXIuZmV0Y2hQZW5kaW5nQnVpbGRzCi0gICAgfSk7
CitmdW5jdGlvbiBzYW1wbGVJblByb2dyZXNzQnVpbGQoKQoreworICAgIHJldHVybiB7CisgICAg
ICAgICdibGFtZSc6IFtdLAorICAgICAgICAnYnVpbGRlck5hbWUnOiAnQUJUZXN0LWlQYWQtUnVu
QmVuY2htYXJrLVRlc3RzJywKKyAgICAgICAgJ2N1cnJlbnRTdGVwJzogeworICAgICAgICAgICAg
J2V0YSc6IDAuMjY1NDgwNjc2OTg0NjA1NjUsCisgICAgICAgICAgICAnZXhwZWN0YXRpb25zJzog
W1snb3V0cHV0JywgODQ1LCAxMzE1LjBdXSwKKyAgICAgICAgICAgICdoaWRkZW4nOiBmYWxzZSwK
KyAgICAgICAgICAgICdpc0ZpbmlzaGVkJzogZmFsc2UsCisgICAgICAgICAgICAnaXNTdGFydGVk
JzogdHJ1ZSwKKyAgICAgICAgICAgICdsb2dzJzogW1snc3RkaW8nLCAnaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMv
NjE0L3N0ZXBzL1NvbWUlMjBzdGVwL2xvZ3Mvc3RkaW8nXV0sCisgICAgICAgICAgICAnbmFtZSc6
ICdTb21lIHN0ZXAnLAorICAgICAgICAgICAgJ3Jlc3VsdHMnOiBbbnVsbCxbXV0sCisgICAgICAg
ICAgICAnc3RhdGlzdGljcyc6IHt9LAorICAgICAgICAgICAgJ3N0ZXBfbnVtYmVyJzogMSwKKyAg
ICAgICAgICAgICd0ZXh0JzogWycnXSwKKyAgICAgICAgICAgICd0aW1lcyc6IFsxNDU4NzE4NjU3
LjU4MTYyOCwgbnVsbF0sCisgICAgICAgICAgICAndXJscyc6IHt9CisgICAgICAgIH0sCisgICAg
ICAgICdldGEnOiA2NDk3Ljk5MTYxMjQzNDM4NywKKyAgICAgICAgJ2xvZ3MnOiBbWydzdGRpbycs
J2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1h
cmstVGVzdHMvYnVpbGRzLzYxNC9zdGVwcy9zaGVsbC9sb2dzL3N0ZGlvJ11dLAorICAgICAgICAn
bnVtYmVyJzogNjE0LAorICAgICAgICAncHJvcGVydGllcyc6IFsKKyAgICAgICAgICAgIFsnYnVp
bGRfcmVxdWVzdF9pZCcsICcxNjczMycsICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAgICAgICAg
ICBbJ2J1aWxkZXJuYW1lJywgJ0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cycsICdCdWls
ZGVyJ10sCisgICAgICAgICAgICBbJ2J1aWxkbnVtYmVyJywgNjE0LCAnQnVpbGQnXSwKKyAgICAg
ICAgICAgIFsnZGVzaXJlZF9pbWFnZScsICcxM0E0NTInLCAnRm9yY2UgQnVpbGQgRm9ybSddLAor
ICAgICAgICAgICAgWydvd25lcicsICc8dW5rbm93bj4nLCAnRm9yY2UgQnVpbGQgRm9ybSddLAor
ICAgICAgICAgICAgWydyZWFzb24nLCAnZm9yY2UgYnVpbGQnLCAnRm9yY2UgQnVpbGQgRm9ybSdd
LAorICAgICAgICAgICAgWydyb290c19kaWN0JywgSlNPTi5zdHJpbmdpZnkoc2FtcGxlUm9vdFNl
dERhdGEpLCAnRm9yY2UgQnVpbGQgRm9ybSddLAorICAgICAgICAgICAgWydzY2hlZHVsZXInLCAn
QUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJywgJ1NjaGVkdWxl
ciddLAorICAgICAgICAgICAgWydzbGF2ZW5hbWUnLCAnQUJUZXN0LWlQYWQtMCcsICdCdWlsZFNs
YXZlJ10sCisgICAgICAgIF0sCisgICAgICAgICdyZWFzb24nOiAnQSBidWlsZCB3YXMgZm9yY2Vk
IGJ5IFwnPHVua25vd24+XCc6IGZvcmNlIGJ1aWxkJywKKyAgICAgICAgJ3Jlc3VsdHMnOiBudWxs
LAorICAgICAgICAnc2xhdmUnOiAnQUJUZXN0LWlQYWQtMCcsCisgICAgICAgICdzb3VyY2VTdGFt
cHMnOiBbeydicmFuY2gnOiAnJywgJ2NoYW5nZXMnOiBbXSwgJ2NvZGViYXNlJzogJ2NvbXBpbGVy
LXJ0JywgJ2hhc1BhdGNoJzogZmFsc2UsICdwcm9qZWN0JzogJycsICdyZXBvc2l0b3J5JzogJycs
ICdyZXZpc2lvbic6ICcnfV0sCisgICAgICAgICdzdGVwcyc6IFsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAnZXRhJzogbnVsbCwKKyAgICAgICAgICAgICAgICAnZXhwZWN0YXRpb25z
JzogW1snb3V0cHV0JywyMzA5LDIzMDkuMF1dLAorICAgICAgICAgICAgICAgICdoaWRkZW4nOiBm
YWxzZSwKKyAgICAgICAgICAgICAgICAnaXNGaW5pc2hlZCc6IHRydWUsCisgICAgICAgICAgICAg
ICAgJ2lzU3RhcnRlZCc6IHRydWUsCisgICAgICAgICAgICAgICAgJ2xvZ3MnOiBbWydzdGRpbycs
ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvQUJUZXN0LWlQYWQtUnVuQmVuY2ht
YXJrLVRlc3RzL2J1aWxkcy82MTQvc3RlcHMvc2hlbGwvbG9ncy9zdGRpbyddXSwKKyAgICAgICAg
ICAgICAgICAnbmFtZSc6ICdGaW5pc2hlZCBzdGVwJywKKyAgICAgICAgICAgICAgICAncmVzdWx0
cyc6IFswLCBbXV0sCisgICAgICAgICAgICAgICAgJ3N0YXRpc3RpY3MnOiB7fSwKKyAgICAgICAg
ICAgICAgICAnc3RlcF9udW1iZXInOiAwLAorICAgICAgICAgICAgICAgICd0ZXh0JzogWycnXSwK
KyAgICAgICAgICAgICAgICAndGltZXMnOiBbMTQ1ODcxODY1NS40MTk4NjUsIDE0NTg3MTg2NTUu
NDUzNjMzXSwKKyAgICAgICAgICAgICAgICAndXJscyc6IHt9CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICdldGEnOiAwLjI2NTQ4MDY3Njk4NDYwNTY1LAor
ICAgICAgICAgICAgICAgICdleHBlY3RhdGlvbnMnOiBbWydvdXRwdXQnLCA4NDUsIDEzMTUuMF1d
LAorICAgICAgICAgICAgICAgICdoaWRkZW4nOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAnaXNG
aW5pc2hlZCc6IGZhbHNlLAorICAgICAgICAgICAgICAgICdpc1N0YXJ0ZWQnOiB0cnVlLAorICAg
ICAgICAgICAgICAgICdsb2dzJzogW1snc3RkaW8nLCAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3Jn
L2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMvNjE0L3N0ZXBz
L1NvbWUlMjBzdGVwL2xvZ3Mvc3RkaW8nXV0sCisgICAgICAgICAgICAgICAgJ25hbWUnOiAnU29t
ZSBzdGVwJywKKyAgICAgICAgICAgICAgICAncmVzdWx0cyc6IFtudWxsLFtdXSwKKyAgICAgICAg
ICAgICAgICAnc3RhdGlzdGljcyc6IHt9LAorICAgICAgICAgICAgICAgICdzdGVwX251bWJlcic6
IDEsCisgICAgICAgICAgICAgICAgJ3RleHQnOiBbJyddLAorICAgICAgICAgICAgICAgICd0aW1l
cyc6IFsxNDU4NzE4NjU3LjU4MTYyOCwgbnVsbF0sCisgICAgICAgICAgICAgICAgJ3VybHMnOiB7
fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnZXRhJzog
bnVsbCwKKyAgICAgICAgICAgICAgICAnZXhwZWN0YXRpb25zJzogW1snb3V0cHV0JywgbnVsbCwg
bnVsbF1dLAorICAgICAgICAgICAgICAgICdoaWRkZW4nOiBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAnaXNGaW5pc2hlZCc6IGZhbHNlLAorICAgICAgICAgICAgICAgICdpc1N0YXJ0ZWQnOiBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAnbG9ncyc6IFtdLAorICAgICAgICAgICAgICAgICduYW1lJzog
J1NvbWUgb3RoZXIgc3RlcCcsCisgICAgICAgICAgICAgICAgJ3Jlc3VsdHMnOiBbbnVsbCwgW11d
LAorICAgICAgICAgICAgICAgICdzdGF0aXN0aWNzJzoge30sCisgICAgICAgICAgICAgICAgJ3N0
ZXBfbnVtYmVyJzogMiwKKyAgICAgICAgICAgICAgICAndGV4dCc6IFtdLAorICAgICAgICAgICAg
ICAgICd0aW1lcyc6IFtudWxsLCBudWxsXSwKKyAgICAgICAgICAgICAgICAndXJscyc6IHt9Cisg
ICAgICAgICAgICB9LAorICAgICAgICBdLAorICAgICAgICAndGV4dCc6IFtdLAorICAgICAgICAn
dGltZXMnOiBbMTQ1ODcxODY1NS40MTU4MjEsIG51bGxdCisgICAgfTsKK30KIAorZnVuY3Rpb24g
c2FtcGxlRmluaXNoZWRCdWlsZChidWlsZFJlcXVlc3RJZCkKK3sKKyAgICByZXR1cm4geworICAg
ICAgICAnYmxhbWUnOiBbXSwKKyAgICAgICAgJ2J1aWxkZXJOYW1lJzogJ0FCVGVzdC1pUGFkLVJ1
bkJlbmNobWFyay1UZXN0cycsCisgICAgICAgICdjdXJyZW50U3RlcCc6IG51bGwsCisgICAgICAg
ICdldGEnOiBudWxsLAorICAgICAgICAnbG9ncyc6IFtbJ3N0ZGlvJywnaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMv
MTc1NS9zdGVwcy9zaGVsbC9sb2dzL3N0ZGlvJ11dLAorICAgICAgICAnbnVtYmVyJzogMTc1NSwK
KyAgICAgICAgJ3Byb3BlcnRpZXMnOiBbCisgICAgICAgICAgICBbJ2J1aWxkX3JlcXVlc3RfaWQn
LCBidWlsZFJlcXVlc3RJZCB8fCAnMTg5MzUnLCAnRm9yY2UgQnVpbGQgRm9ybSddLAorICAgICAg
ICAgICAgWydidWlsZGVybmFtZScsICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMnLCAn
QnVpbGRlciddLAorICAgICAgICAgICAgWydidWlsZG51bWJlcicsIDE3NTUsICdCdWlsZCddLAor
ICAgICAgICAgICAgWydkZXNpcmVkX2ltYWdlJywgJzEzQTQ1MicsICdGb3JjZSBCdWlsZCBGb3Jt
J10sCisgICAgICAgICAgICBbJ293bmVyJywgJzx1bmtub3duPicsICdGb3JjZSBCdWlsZCBGb3Jt
J10sCisgICAgICAgICAgICBbJ3JlYXNvbicsICdmb3JjZSBidWlsZCcsICdGb3JjZSBCdWlsZCBG
b3JtJ10sCisgICAgICAgICAgICBbJ3Jvb3RzX2RpY3QnLCBKU09OLnN0cmluZ2lmeShzYW1wbGVS
b290U2V0RGF0YSksICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAgICAgICAgICBbJ3NjaGVkdWxl
cicsICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVsZXInLCAnU2No
ZWR1bGVyJ10sCisgICAgICAgICAgICBbJ3NsYXZlbmFtZScsICdBQlRlc3QtaVBhZC0wJywgJ0J1
aWxkU2xhdmUnXSwKKyAgICAgICAgXSwKKyAgICAgICAgJ3JlYXNvbic6ICdBIGJ1aWxkIHdhcyBm
b3JjZWQgYnkgXCc8dW5rbm93bj5cJzogZm9yY2UgYnVpbGQnLAorICAgICAgICAncmVzdWx0cyc6
IDIsCisgICAgICAgICdzbGF2ZSc6ICdBQlRlc3QtaVBhZC0wJywKKyAgICAgICAgJ3NvdXJjZVN0
YW1wcyc6IFt7J2JyYW5jaCc6ICcnLCAnY2hhbmdlcyc6IFtdLCAnY29kZWJhc2UnOiAnY29tcGls
ZXItcnQnLCAnaGFzUGF0Y2gnOiBmYWxzZSwgJ3Byb2plY3QnOiAnJywgJ3JlcG9zaXRvcnknOiAn
JywgJ3JldmlzaW9uJzogJyd9XSwKKyAgICAgICAgJ3N0ZXBzJzogWworICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICdldGEnOiBudWxsLAorICAgICAgICAgICAgICAgICdleHBlY3RhdGlv
bnMnOiBbWydvdXRwdXQnLDIzMDksMjMwOS4wXV0sCisgICAgICAgICAgICAgICAgJ2hpZGRlbic6
IGZhbHNlLAorICAgICAgICAgICAgICAgICdpc0ZpbmlzaGVkJzogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAnaXNTdGFydGVkJzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAnbG9ncyc6IFtbJ3N0ZGlv
JywgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5j
aG1hcmstVGVzdHMvYnVpbGRzLzYxNC9zdGVwcy9zaGVsbC9sb2dzL3N0ZGlvJ11dLAorICAgICAg
ICAgICAgICAgICduYW1lJzogJ0ZpbmlzaGVkIHN0ZXAnLAorICAgICAgICAgICAgICAgICdyZXN1
bHRzJzogWzAsIFtdXSwKKyAgICAgICAgICAgICAgICAnc3RhdGlzdGljcyc6IHt9LAorICAgICAg
ICAgICAgICAgICdzdGVwX251bWJlcic6IDAsCisgICAgICAgICAgICAgICAgJ3RleHQnOiBbJydd
LAorICAgICAgICAgICAgICAgICd0aW1lcyc6IFsxNDU4NzE4NjU1LjQxOTg2NSwgMTQ1ODcxODY1
NS40NTM2MzNdLAorICAgICAgICAgICAgICAgICd1cmxzJzoge30KKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2V0YSc6IG51bGwsCisgICAgICAgICAgICAg
ICAgJ2V4cGVjdGF0aW9ucyc6IFtbJ291dHB1dCcsIDg0NSwgMTMxNS4wXV0sCisgICAgICAgICAg
ICAgICAgJ2hpZGRlbic6IGZhbHNlLAorICAgICAgICAgICAgICAgICdpc0ZpbmlzaGVkJzogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAnaXNTdGFydGVkJzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAn
bG9ncyc6IFtbJ3N0ZGlvJywgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BQlRl
c3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzYxNC9zdGVwcy9Tb21lJTIwc3RlcC9s
b2dzL3N0ZGlvJ11dLAorICAgICAgICAgICAgICAgICduYW1lJzogJ1NvbWUgc3RlcCcsCisgICAg
ICAgICAgICAgICAgJ3Jlc3VsdHMnOiBbbnVsbCxbXV0sCisgICAgICAgICAgICAgICAgJ3N0YXRp
c3RpY3MnOiB7fSwKKyAgICAgICAgICAgICAgICAnc3RlcF9udW1iZXInOiAxLAorICAgICAgICAg
ICAgICAgICd0ZXh0JzogWycnXSwKKyAgICAgICAgICAgICAgICAndGltZXMnOiBbMTQ1ODcxODY1
Ny41ODE2MjgsIG51bGxdLAorICAgICAgICAgICAgICAgICd1cmxzJzoge30KKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2V0YSc6IG51bGwsCisgICAgICAg
ICAgICAgICAgJ2V4cGVjdGF0aW9ucyc6IFtbJ291dHB1dCcsIG51bGwsIG51bGxdXSwKKyAgICAg
ICAgICAgICAgICAnaGlkZGVuJzogZmFsc2UsCisgICAgICAgICAgICAgICAgJ2lzRmluaXNoZWQn
OiB0cnVlLAorICAgICAgICAgICAgICAgICdpc1N0YXJ0ZWQnOiB0cnVlLAorICAgICAgICAgICAg
ICAgICdsb2dzJzogW10sCisgICAgICAgICAgICAgICAgJ25hbWUnOiAnU29tZSBvdGhlciBzdGVw
JywKKyAgICAgICAgICAgICAgICAncmVzdWx0cyc6IFtudWxsLCBbXV0sCisgICAgICAgICAgICAg
ICAgJ3N0YXRpc3RpY3MnOiB7fSwKKyAgICAgICAgICAgICAgICAnc3RlcF9udW1iZXInOiAyLAor
ICAgICAgICAgICAgICAgICd0ZXh0JzogW10sCisgICAgICAgICAgICAgICAgJ3RpbWVzJzogW251
bGwsIG51bGxdLAorICAgICAgICAgICAgICAgICd1cmxzJzoge30KKyAgICAgICAgICAgIH0sCisg
ICAgICAgIF0sCisgICAgICAgICd0ZXh0JzogW10sCisgICAgICAgICd0aW1lcyc6IFsxNDU4OTM3
NDc4LjI1ODM3LCAxNDU4OTQ2MTQ3LjE3Mzc4NV0KKyAgICB9OworfQorCitkZXNjcmliZSgnQnVp
bGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgZGVzY3JpYmUoJ19sb2FkQ29uZmlnJywg
ZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGZ1bmN0aW9uIHNtYWxsQ29uZmlndXJhdGlvbigpCkBA
IC0yOTIsNCArNDU1LDIyNiBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCi19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCisgICAgZGVzY3JpYmUoJ3B1bGxCdWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
aXQoJ3Nob3VsZCBmZXRjaCBwZW5kaW5nIGJ1aWxkcyBmcm9tIHRoZSByaWdodCBVUkwnLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRD
b25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnJywgc2FtcGxlaU9TQ29uZmlnKCkpWzNdOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNlci5idWlsZGVyTmFtZSgpLCAnQUJUZXN0LWlQ
YWQtUnVuQmVuY2htYXJrLVRlc3RzJyk7CisgICAgICAgICAgICBsZXQgZXhwZWN0ZWRVUkwgPSAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvanNvbi9idWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5j
aG1hcmstVGVzdHMvcGVuZGluZ0J1aWxkcyc7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3lu
Y2VyLnVybEZvclBlbmRpbmdCdWlsZHNKU09OKCksIGV4cGVjdGVkVVJMKTsKKyAgICAgICAgICAg
IHN5bmNlci5wdWxsQnVpbGRib3QoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
ZXhwZWN0ZWRVUkwpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGZldGNoIHJl
Y2VudCBidWlsZHMgb25jZSBwZW5kaW5nIGJ1aWxkcyBoYXZlIGJlZW4gZmV0Y2hlZCcsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnJywgc2FtcGxlaU9TQ29uZmlnKCkpWzNd
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNlci5idWlsZGVyTmFtZSgpLCAnQUJUZXN0
LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzJyk7CisKKyAgICAgICAgICAgIGxldCBwcm9taXNlID0g
c3luY2VyLnB1bGxCdWlsZGJvdCgxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2pzb24vYnVpbGRlcnMvQUJUZXN0LWlQYWQtUnVuQmVu
Y2htYXJrLVRlc3RzL3BlbmRpbmdCdWlsZHMnKTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJl
c29sdmUoW10pOworICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJ2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnL2pzb24vYnVpbGRlcnMvQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3Rz
L2J1aWxkcy8/c2VsZWN0PS0xJyk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgZmV0
Y2ggdGhlIHJpZ2h0IG51bWJlciBvZiByZWNlbnQgYnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107CisKKyAgICAgICAg
ICAgIHN5bmNlci5wdWxsQnVpbGRib3QoMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1
bkJlbmNobWFyay1UZXN0cy9wZW5kaW5nQnVpbGRzJyk7CisgICAgICAgICAgICByZXF1ZXN0c1sw
XS5yZXNvbHZlKFtdKTsKKyAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1U
ZXN0cy9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTImc2VsZWN0PS0zJyk7CisgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxkYm90QnVpbGRFbnRyeSBmb3IgcGVuZGlu
ZyBidWlsZHMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1
aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZycsIHNhbXBs
ZWlPU0NvbmZpZygpKVszXTsKKyAgICAgICAgICAgIGxldCBwcm9taXNlID0gc3luY2VyLnB1bGxC
dWlsZGJvdCgpOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShbc2FtcGxlUGVuZGlu
Z0J1aWxkKCldKTsKKyAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoZW50cmllcykg
eworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoZW50cmllcyks
IFsnMTY3MzMnXSk7CisgICAgICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1snMTY3MzMn
XTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2soZW50cnkgaW5zdGFuY2VvZiBCdWlsZGJvdEJ1
aWxkRW50cnkpOworICAgICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuYnVpbGROdW1iZXIo
KSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFlbnRyeS5zbGF2ZU5hbWUoKSk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkUmVxdWVzdElkKCksIDE2NzMzKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQub2soZW50cnkuaXNQZW5kaW5nKCkpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5vayghZW50cnkuaXNJblByb2dyZXNzKCkpOworICAgICAgICAgICAgICAg
IGFzc2VydC5vayghZW50cnkuaGFzRmluaXNoZWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGVudHJ5LnVybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvQUJU
ZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLycpOworICAgICAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIGNyZWF0ZSBCdWlsZGJvdEJ1aWxkRW50cnkgZm9yIGluLXByb2dyZXNzIGJ1aWxkcycs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5j
ZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnJywgc2FtcGxlaU9TQ29uZmln
KCkpWzNdOworCisgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVpbGRib3Qo
MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoW10pOworICAgICAgICAgICAgUHJvbWlzZS5yZXNv
bHZlKCkudGhlbihmdW5jdGlvbiAoZW50cmllcykgeworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIHJlcXVlc3RzWzFdLnJl
c29sdmUoe1stMV06IHNhbXBsZUluUHJvZ3Jlc3NCdWlsZCgpfSk7CisgICAgICAgICAgICB9KS5j
YXRjaChkb25lKTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChlbnRyaWVz
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhlbnRyaWVz
KSwgWycxNjczMyddKTsKKyAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWycxNjcz
MyddOworICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90
QnVpbGRFbnRyeSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVt
YmVyKCksIDYxNCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LnNsYXZlTmFt
ZSgpLCAnQUJUZXN0LWlQYWQtMCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRy
eS5idWlsZFJlcXVlc3RJZCgpLCAxNjczMyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFl
bnRyeS5pc1BlbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5LmlzSW5Q
cm9ncmVzcygpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5Lmhhc0ZpbmlzaGVk
KCkpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS51cmwoKSwgJ2h0dHA6Ly9i
dWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9i
dWlsZHMvNjE0Jyk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSkuY2F0
Y2goZG9uZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxk
Ym90QnVpbGRFbnRyeSBmb3IgZmluaXNoZWQgYnVpbGRzJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAg
ICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDov
L2J1aWxkLndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107CisKKyAgICAgICAgICAg
IGxldCBwcm9taXNlID0gc3luY2VyLnB1bGxCdWlsZGJvdCgxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZShbXSk7CisgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uIChl
bnRyaWVzKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7CisgICAgICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogc2FtcGxlRmlu
aXNoZWRCdWlsZCgpfSk7CisgICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKworICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChlbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhlbnRyaWVzKSwgWycxODkzNSddKTsKKyAgICAgICAg
ICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWycxODkzNSddOworICAgICAgICAgICAgICAgIGFz
c2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVtYmVyKCksIDE3NTUpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSwgMTg5
MzUpOworICAgICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNQZW5kaW5nKCkpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNJblByb2dyZXNzKCkpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5vayhlbnRyeS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVy
cy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzE3NTUnKTsKKyAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgQnVpbGRib3RCdWlsZEVudHJ5IGZvciBtaXhl
ZCBwZW5kaW5nLCBpbi1wcm9ncmVzcywgZmluaXNoZWQsIGFuZCBtaXNzaW5nIGJ1aWxkcycsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIu
X2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnJywgc2FtcGxlaU9TQ29uZmlnKCkp
WzNdOworCisgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVpbGRib3QoNSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKworICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShbc2FtcGxlUGVuZGluZ0J1aWxkKDEyMywgNDU2KV0p
OworCisgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uIChlbnRyaWVz
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7Cisg
ICAgICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogc2FtcGxlRmluaXNoZWRC
dWlsZCgpLCBbLTJdOiB7J2Vycm9yJzogJ05vdCBhdmFpbGFibGUnfSwgWy00XTogc2FtcGxlSW5Q
cm9ncmVzc0J1aWxkKCl9KTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworCisgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGVudHJpZXMpLCBbJzEyMycsICcxNjczMycsICcx
ODkzNSddKTsKKworICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJpZXNbJzEyMyddOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRF
bnRyeSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVtYmVyKCks
IG51bGwpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwg
bnVsbCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkUmVxdWVzdElk
KCksIDEyMyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5LmlzUGVuZGluZygpKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5LmlzSW5Qcm9ncmVzcygpKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5Lmhhc0ZpbmlzaGVkKCkpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChlbnRyeS51cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1
aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy8nKTsKKworICAgICAgICAgICAg
ICAgIGVudHJ5ID0gZW50cmllc1snMTY3MzMnXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2so
ZW50cnkgaW5zdGFuY2VvZiBCdWlsZGJvdEJ1aWxkRW50cnkpOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChlbnRyeS5idWlsZE51bWJlcigpLCA2MTQpOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSwgMTY3MzMpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNQZW5kaW5nKCkpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5vayhlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Lm9rKCFlbnRyeS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BQlRlc3Qt
aVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzYxNCcpOworCisgICAgICAgICAgICAgICAg
ZW50cnkgPSBlbnRyaWVzWycxODkzNSddOworICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRy
eSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGVudHJ5LmJ1aWxkTnVtYmVyKCksIDE3NTUpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChlbnRyeS5zbGF2ZU5hbWUoKSwgJ0FCVGVzdC1pUGFkLTAnKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoZW50cnkuYnVpbGRSZXF1ZXN0SWQoKSwgMTg5MzUpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNQZW5kaW5nKCkpOworICAgICAgICAgICAgICAg
IGFzc2VydC5vayghZW50cnkuaXNJblByb2dyZXNzKCkpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5vayhlbnRyeS5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
ZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9BQlRlc3QtaVBh
ZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzE3NTUnKTsKKworICAgICAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIG92ZXJyZGUgQnVpbGRib3RCdWlsZEVudHJ5IGZvciBwZW5kaW5nIGJ1aWxk
cyBieSBpbi1wcm9ncmVzcyBidWlsZHMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAg
bGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Vi
a2l0Lm9yZycsIHNhbXBsZWlPU0NvbmZpZygpKVszXTsKKworICAgICAgICAgICAgbGV0IHByb21p
c2UgPSBzeW5jZXIucHVsbEJ1aWxkYm90KDUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoW3Nh
bXBsZVBlbmRpbmdCdWlsZCgpXSk7CisKKyAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRo
ZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHtb
LTFdOiBzYW1wbGVJblByb2dyZXNzQnVpbGQoKX0pOworICAgICAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoZW50cmllcykgeworICAg
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoZW50cmllcyksIFsnMTY3
MzMnXSk7CisKKyAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWycxNjczMyddOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRF
bnRyeSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkTnVtYmVyKCks
IDYxNCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LnNsYXZlTmFtZSgpLCAn
QUJUZXN0LWlQYWQtMCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS5idWls
ZFJlcXVlc3RJZCgpLCAxNjczMyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFlbnRyeS5p
c1BlbmRpbmcoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVudHJ5LmlzSW5Qcm9ncmVz
cygpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5Lmhhc0ZpbmlzaGVkKCkpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS51cmwoKSwgJ2h0dHA6Ly9idWlsZC53
ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMv
NjE0Jyk7CisKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChk
b25lKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBvdmVycmRlIEJ1aWxkYm90
QnVpbGRFbnRyeSBmb3IgcGVuZGluZyBidWlsZHMgYnkgZmluaXNoZWQgYnVpbGRzJywgZnVuY3Rp
b24gKGRvbmUpIHsKKyAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9h
ZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcnLCBzYW1wbGVpT1NDb25maWcoKSlbM107
CisKKyAgICAgICAgICAgIGxldCBwcm9taXNlID0gc3luY2VyLnB1bGxCdWlsZGJvdCg1KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKFtzYW1wbGVQZW5kaW5nQnVpbGQoKV0pOworCisgICAgICAg
ICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uIChlbnRyaWVzKSB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAg
ICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogc2FtcGxlRmluaXNoZWRCdWlsZCgxNjczMyl9
KTsKKyAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworCisgICAgICAgICAgICBwcm9taXNlLnRo
ZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KE9iamVjdC5rZXlzKGVudHJpZXMpLCBbJzE2NzMzJ10pOworCisgICAgICAgICAgICAgICAgbGV0
IGVudHJ5ID0gZW50cmllc1snMTY3MzMnXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQub2soZW50
cnkgaW5zdGFuY2VvZiBCdWlsZGJvdEJ1aWxkRW50cnkpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChlbnRyeS5idWlsZE51bWJlcigpLCAxNzU1KTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZW50cnkuc2xhdmVOYW1lKCksICdBQlRlc3QtaVBhZC0wJyk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGVudHJ5LmJ1aWxkUmVxdWVzdElkKCksIDE2NzMzKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQub2soIWVudHJ5LmlzUGVuZGluZygpKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQub2soIWVudHJ5LmlzSW5Qcm9ncmVzcygpKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQub2soZW50cnkuaGFzRmluaXNoZWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGVudHJ5LnVybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvQUJUZXN0LWlQ
YWQtUnVuQmVuY2htYXJrLVRlc3RzL2J1aWxkcy8xNzU1Jyk7CisKKyAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CisKKyAgICB9
KTsKK30pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3Vy
Y2VzL21vY2stcmVtb3RlLWFwaS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzCShyZXZpc2lvbiAx
OTg3MTApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMv
bW9jay1yZW1vdGUtYXBpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQCBpZiAoIWFz
c2VydC5ub3RSZWFjaGVkKQogCiBnbG9iYWwucmVxdWVzdHMgPSBbXTsKIGdsb2JhbC5SZW1vdGVB
UEkgPSB7Ci0gICAgZ2V0SlNPTjogZnVuY3Rpb24gKCkKKyAgICBnZXRKU09OOiBmdW5jdGlvbiAo
dXJsKQogICAgIHsKLSAgICAgICAgYXNzZXJ0Lm5vdFJlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZ2V0SlNPTldpdGhTdGF0dXModXJsKTsKICAgICB9LAogICAgIGdldEpTT05XaXRoU3Rh
dHVzOiBmdW5jdGlvbiAodXJsKQogICAgIHsK
</data>
<flag name="review"
          id="299374"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>