<?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>155673</bug_id>
          
          <creation_ts>2016-03-18 17:14:16 -0700</creation_ts>
          <short_desc>Add unit tests for measurement-set.js and measurement-adapter.js</short_desc>
          <delta_ts>2016-03-18 19:50:48 -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>1176394</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 17:14:16 -0700</bug_when>
    <thetext>Add mocha unit tests for measurement-set.js and measurement-adapter.js
as these two files are responsible for fetching and formatting data on v3 UI
and new syncing / regression detection scripts to be (re)written.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176410</commentid>
    <comment_count>1</comment_count>
      <attachid>274486</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 18:52:52 -0700</bug_when>
    <thetext>Created attachment 274486
Adds tests and refactors code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176417</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 19:17:08 -0700</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176418</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 19:17:50 -0700</bug_when>
    <thetext>Committed r198462: &lt;http://trac.webkit.org/changeset/198462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176423</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 19:22:14 -0700</bug_when>
    <thetext>Oops, my patch didn&apos;t have actual tests :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176424</commentid>
    <comment_count>5</comment_count>
      <attachid>274491</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 19:22:22 -0700</bug_when>
    <thetext>Created attachment 274491
Add tests for real</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176427</commentid>
    <comment_count>6</comment_count>
      <attachid>274491</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-18 19:42:44 -0700</bug_when>
    <thetext>Comment on attachment 274491
Add tests for real

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

rs=me. Feel free to ask someone more familiar with measurement-set.js and measurement-adapter.js for a more through review.

&gt; Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js:1
&gt; +&apos;use strict&apos;;

This file alternates between using single quoted string literals and double quoted string literals. We should pick one style and stick with it for consistency.

&gt; Websites/perf.webkit.org/unit-tests/measurement-set-tests.js:1
&gt; +&apos;use strict&apos;;

This file alternates between using single quoted string literals and double quoted string literals. We should pick one style and stick with it for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176428</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 19:49:49 -0700</bug_when>
    <thetext>Will fix. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176429</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 19:50:48 -0700</bug_when>
    <thetext>Committed r198463: &lt;http://trac.webkit.org/changeset/198463&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274486</attachid>
            <date>2016-03-18 18:52:52 -0700</date>
            <delta_ts>2016-03-18 19:08:59 -0700</delta_ts>
            <desc>Adds tests and refactors code</desc>
            <filename>bug-155673-20160318185251.patch</filename>
            <type>text/plain</type>
            <size>31423</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NDU3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg2IEBACisyMDE2LTAzLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciBtZWFzdXJlbWVudC1zZXQuanMgYW5kIG1lYXN1
cmVtZW50LWFkYXB0ZXIuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIG1vY2hhIHVuaXQgdGVzdHMgZm9yIE1lYXN1cmVtZW50U2V0IGFuZCBN
ZWFzdXJlbWVudEFkYXB0ZXIgY2xhc3NlcyBhbG9uZyB3aXRoIHRoZSBuZWNlc3NhcnkKKyAgICAg
ICAgcmVmYWN0b3JpbmcgdG8gcnVuIHRoZXNlIHRlc3RzIGluIG5vZGUuCisKKyAgICAgICAgZ2V0
SlNPTiBhbmQgZ2V0SlNPTlN0YXR1cyBhcmUgbm93IHVuZGVyIFJlbW90ZUFQSSBzbyB0aGF0IHVu
aXQgdGVzdHMgY2FuIG1vY2sgdGhlbS4KKworICAgICAgICBSZW1vdmVkIHRoZSBkZXBlbmRlbmN5
IG9uIHYyIFVJJ3MgVGltZVNlcmllcyBhbmQgTWVhc3VyZW1lbnQgY2xhc3MgYnkgYWRkaW5nIGEg
bmV3IGltcGxlbWVudGF0aW9uCisgICAgICAgIG9mIFRpbWVTZXJpZXMgaW4gdjMgYW5kIHJlbW92
aW5nIHRoZSBkZXBlbmRlbmN5IG9uIE1lYXN1cmVtZW50IGluIGNoYXJ0LXBhbmUtc3RhdHVzLXZp
ZXcuanMgd2l0aAorICAgICAgICBuZXcgaGVscGVyIG1ldGhvZHMgb24gQnVpbGQgYW5kIENvbW1p
dExvZy4KKworICAgICAgICBNYW55IGpzIGZpbGVzIG5vdyB1c2UgJ3VzZSBzdHJpY3QnIChub2Rl
IGRvZXNuJ3Qgc3VwcG9ydCBjbGFzcyBzeW50YXggaW4gbm9uLXN0cmljdCBtb2RlKSBhbmQKKyAg
ICAgICAgbW9kdWxlLmV4cG9ydHMgdG8gZXhwb3J0IHN5bWJvbHMgaW4gbm9kZSdzIHJlcXVpcmUg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBwdWJsaWMvdjMvaW5kZXguaHRtbDoKKyAgICAgICAgKiBw
dWJsaWMvdjMvbWFpbi5qczoKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXJl
c3VsdHMuanM6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHMuZmV0Y2gpOgorICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvYW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFzay5m
ZXRjaEFsbCk6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZGVyLmpzOgorICAgICAg
ICAoQnVpbGQpOgorICAgICAgICAoQnVpbGQucHJvdG90eXBlLmJ1aWxkZXIpOiBBZGRlZC4gVXNl
ZCBieSBDaGFydFBhbmVTdGF0dXNWaWV3LgorICAgICAgICAoQnVpbGQucHJvdG90eXBlLmJ1aWxk
TnVtYmVyKTogRGl0dG8uCisgICAgICAgIChCdWlsZC5wcm90b3R5cGUuYnVpbGRUaW1lKTogRGl0
dG8uCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9jb21taXQtbG9nLmpzOgorICAgICAgICAo
Q29tbWl0TG9nLnByb3RvdHlwZS5kaWZmKTogRGl0dG8uCisgICAgICAgIChDb21taXRMb2cuZmV0
Y2hCZXR3ZWVuUmV2aXNpb25zKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2RhdGEtbW9k
ZWwuanM6CisgICAgICAgIChEYXRhTW9kZWxPYmplY3QuY2FjaGVkRmV0Y2gpOgorICAgICAgICAq
IHB1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5qczoKKyAgICAgICAgKE1lYXN1
cmVtZW50QWRhcHRvci5wcm90b3R5cGUuYXBwbHlUb0FuYWx5c2lzUmVzdWx0cyk6IFJlbmFtZWQg
ZnJvbSBhZG9wdFRvQW5hbHlzaXNSZXN1bHRzLgorICAgICAgICAoTWVhc3VyZW1lbnRBZGFwdG9y
LnByb3RvdHlwZS5hcHBseVRvKTogUmVuYW1lZCBmcm9tIGFkb3B0VG9TZXJpZXMuIE5vdyBzaGFy
ZXMgYSBsb3QgbW9yZQorICAgICAgICBjb2RlIHdpdGggYXBwbHlUb0FuYWx5c2lzUmVzdWx0cy4g
VGhlIGNvZGUgdG8gc2V0ICdzZXJpZXMnIGFuZCAnc2VyaWVzSW5kZXgnIGhhcyBiZWVuIG1vdmVk
CisgICAgICAgIHRvIFRpbWVTZXJpZXMuYXBwZW5kLiAnbWVhc3VyZW1lbnQnIGlzIG5vIGxvbmdl
ciBuZWVkZWQgYXMgdGhpcyBwYXRjaCByZW1vdmVzIGl0cyBvbmx5IHVzZQorICAgICAgICBpbiBD
aGFydFBhbmVTdGF0dXNWaWV3LgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1l
bnQtY2x1c3Rlci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50Q2x1c3Rlci5wcm90b3R5cGUuYWRk
VG9TZXJpZXMpOiBVc2UgVGltZVNlcmllcy5hcHBlbmQgaW5zdGVhZCBvZiBkaXJlY3RseSBtdXRh
dGluZworICAgICAgICBzZXJpZXMuX3Nlcmllcy4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxz
L21lYXN1cmVtZW50LXNldC5qczoKKyAgICAgICAgKEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyk6
IEFkZGVkIGEgcG9seWZpbGwgZm9yIG5vZGUuCisgICAgICAgIChNZWFzdXJlbWVudFNldC5wcm90
b3R5cGUuX2ZldGNoU2Vjb25kYXJ5Q2x1c3RlcnMpOiBSZW1vdmVkIGEgYm9ndXMgYXNzZXJ0aW9u
LiBXaGVuIGZldGNoQmV0d2VlbgorICAgICAgICBpcyBjYWxsZWQgd2l0aCBhIG1peHR1cmUgb2Yg
Y2x1c3RlcnMgdGhhdCBoYXZlIGJlZW4gZmV0Y2hlZCBhbmQgbm90IGZldGNoZWQsIHRoaXMgYXNz
ZXJ0aW9uIGZhaWxzLgorICAgICAgICAoTWVhc3VyZW1lbnRTZXQucHJvdG90eXBlLl9mZXRjaCk6
CisgICAgICAgIChUaW1lU2VyaWVzLnByb3RvdHlwZS5maW5kQnlJZCk6IE1vdmVkIHRvIHRpbWUt
c2VyaWVzLmpzLgorICAgICAgICAoVGltZVNlcmllcy5wcm90b3R5cGUuZGF0YUJldHdlZW5Qb2lu
dHMpOiBEaXR0by4KKyAgICAgICAgKFRpbWVTZXJpZXMucHJvdG90eXBlLmZpcnN0UG9pbnQpOiBE
aXR0by4KKyAgICAgICAgKFRpbWVTZXJpZXMucHJvdG90eXBlLmZldGNoZWRUaW1lU2VyaWVzKTog
TW92ZWQgdGhlIGNvZGUgdG8gZXh0ZW5kIHRoZSBsYXN0IHBvaW50IHRvIFRpbWVTZXJpZXMnCisg
ICAgICAgIGV4dGVuZFRvRnV0dXJlLgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvcmVwb3Np
dG9yeS5qczoKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzOgorICAgICAg
ICAoTWVhc3VyZW1lbnRSb290U2V0KTogSWdub3JlIHJlcG9zaXRvcmllcyB0aGF0IGhhZCBub3Qg
YmVlbiBkZWZpbmVkIChlLmcuIGl0IGNvdWxkIGJlIGFkZGVkIGFmdGVyCisgICAgICAgIG1hbmlm
ZXN0Lmpzb24gaGFkIGJlZW4gZG93bmxvYWRlZCBidXQgYmVmb3JlIGEgZ2l2ZW4gcm9vdCBzZXQg
aXMgY3JlYXRlZCBmb3IgYW4gQS9CIHRlc3RpbmcpLgorICAgICAgICAqIHB1YmxpYy92My9tb2Rl
bHMvdGltZS1zZXJpZXMuanM6CisgICAgICAgIChUaW1lU2VyaWVzKTogQWRkZWQuCisgICAgICAg
IChUaW1lU2VyaWVzLnByb3RvdHlwZS5hcHBlbmQpOiBBZGRlZC4KKyAgICAgICAgKFRpbWVTZXJp
ZXMucHJvdG90eXBlLmV4dGVuZFRvRnV0dXJlKTogQWRkZWQuCisgICAgICAgIChUaW1lU2VyaWVz
LnByb3RvdHlwZS5maXJzdFBvaW50KTogTW92ZWQgZnJvbSBtZWFzdXJlbWVudC1zZXQuanMuCisg
ICAgICAgIChUaW1lU2VyaWVzLnByb3RvdHlwZS5sYXN0UG9pbnQpOiBBZGRlZC4KKyAgICAgICAg
KFRpbWVTZXJpZXMucHJvdG90eXBlLnByZXZpb3VzUG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFRp
bWVTZXJpZXMucHJvdG90eXBlLm5leHRQb2ludCk6IEFkZGVkLgorICAgICAgICAoVGltZVNlcmll
cy5wcm90b3R5cGUuZmluZFBvaW50QnlJbmRleCk6IEFkZGVkLgorICAgICAgICAoVGltZVNlcmll
cy5wcm90b3R5cGUuZmluZEJ5SWQpOiBNb3ZlZCBmcm9tIG1lYXN1cmVtZW50LXNldC5qcy4KKyAg
ICAgICAgKFRpbWVTZXJpZXMucHJvdG90eXBlLmZpbmRQb2ludEFmdGVyVGltZSk6IEFkZGVkLgor
ICAgICAgICAoVGltZVNlcmllcy5wcm90b3R5cGUuZGF0YUJldHdlZW5Qb2ludHMpOiBNb3ZlZCBm
cm9tIG1lYXN1cmVtZW50LXNldC5qcy4KKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQt
cGFuZS1zdGF0dXMtdmlldy5qczoKKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90
eXBlLnJlbmRlcik6IFVzZSBuZXdseSBhZGRlZCBoZWxwZXIgZnVuY3Rpb25zIG9uIEJ1aWxkLgor
ICAgICAgICAoQ2hhcnRQYW5lU3RhdHVzVmlldy5wcm90b3R5cGUuX2Zvcm1hdFRpbWUpOiBBZGRl
ZC4KKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLnNldEN1cnJlbnRSZXBv
c2l0b3J5KToKKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLmNvbXB1dGVD
aGFydFN0YXR1c0xhYmVscyk6IFJld3JvdGUgdGhlIGNvZGUgdXNpbmcgUm9vdFNldCBvYmplY3Qg
b24KKyAgICAgICAgY3VycmVudFBvaW50IGFuZCBwcmV2aW91c1BvaW50IGluc3RlYWQgb2YgTWVh
c3VyZW1lbnQgY2xhc3MgZnJvbSB2MiBVSS4gQWxzbyBzb3J0IHRoZSByZXN1bHRzIHVzaW5nCisg
ICAgICAgIHNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwuCisgICAgICAgICogcHVibGlj
L3YzL3JlbW90ZS5qczoKKyAgICAgICAgKFJlbW90ZUFQSS5nZXRKU09OKTogTW92ZWQgdW5kZXIg
UmVtb3RlQVBJLgorICAgICAgICAoUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKTogRGl0dG8u
CisgICAgICAgIChQcml2aWxlZ2VkQVBJKToKKyAgICAgICAgKFByaXZpbGVnZWRBUEkucmVxdWVz
dENTUkZUb2tlbik6CisKIDIwMTYtMDMtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIHVuaXQgdGVzdHMgZm9yIGNvbmZpZy5qc29uIGFuZCBzdGF0aXN0
aWNzLmpzCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9pbmRl
eC5odG1sCShyZXZpc2lvbiAxOTg0NTcpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgUnVuIHRv
b2xzL2J1bmRsZS12My1zY3JpcHRzIHRvIHNwZWVkIHVwIAogICAgICAgICA8c2NyaXB0IHNyYz0i
aW5zdHJ1bWVudGF0aW9uLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9InJlbW90
ZS5qcyI+PC9zY3JpcHQ+CiAKKyAgICAgICAgPHNjcmlwdCBzcmM9Im1vZGVscy90aW1lLXNlcmll
cy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvbWVhc3VyZW1lbnQt
YWRhcHRvci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvbWVhc3Vy
ZW1lbnQtY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMv
bWVhc3VyZW1lbnQtc2V0LmpzIj48L3NjcmlwdD4KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21haW4uanMJKHJldmlzaW9uIDE5ODQ1NykKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbWFpbi5qcwkod29ya2luZyBjb3B5KQpAQCAtNTYsOCAr
NTYsOCBAQCBmdW5jdGlvbiBtYWluKCkgewogCiBmdW5jdGlvbiBmZXRjaE1hbmlmZXN0KCkKIHsK
LSAgICByZXR1cm4gZ2V0SlNPTignLi4vZGF0YS9tYW5pZmVzdC5qc29uJykudGhlbihkaWRGZXRj
aE1hbmlmZXN0LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJldHVybiBnZXRKU09OKCcuLi9hcGkv
bWFuaWZlc3QvJykudGhlbihkaWRGZXRjaE1hbmlmZXN0LCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAg
ICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT04oJy4uL2RhdGEvbWFuaWZlc3QuanNvbicpLnRoZW4o
ZGlkRmV0Y2hNYW5pZmVzdCwgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gUmVtb3RlQVBJ
LmdldEpTT04oJy4uL2FwaS9tYW5pZmVzdC8nKS50aGVuKGRpZEZldGNoTWFuaWZlc3QsIGZ1bmN0
aW9uIChlcnJvcikgewogICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBsb2FkIHRoZSBzaXRl
IG1hbmlmZXN0OiAnICsgZXJyb3IpOwogICAgICAgICB9KTsKICAgICB9KTsKSW5kZXg6IFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCShyZXZpc2lvbiAxOTg0
NTcpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3JlbW90ZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDcgQEAKIAotZnVuY3Rpb24gZ2V0SlNPTihwYXRoLCBkYXRh
KQordmFyIFJlbW90ZUFQSSA9IHt9OworCitSZW1vdGVBUEkuZ2V0SlNPTiA9IGZ1bmN0aW9uKHBh
dGgsIGRhdGEpCiB7CiAgICAgY29uc29sZS5hc3NlcnQoIXBhdGguc3RhcnRzV2l0aCgnaHR0cDon
KSAmJiAhcGF0aC5zdGFydHNXaXRoKCdodHRwczonKSAmJiAhcGF0aC5zdGFydHNXaXRoKCdmaWxl
OicpKTsKIApAQCAtNDMsOSArNDUsOSBAQCBmdW5jdGlvbiBnZXRKU09OKHBhdGgsIGRhdGEpCiAg
ICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGdldEpTT05XaXRoU3RhdHVzKHBhdGgsIGRhdGEpCitSZW1v
dGVBUEkuZ2V0SlNPTldpdGhTdGF0dXMgPSBmdW5jdGlvbihwYXRoLCBkYXRhKQogewotICAgIHJl
dHVybiBnZXRKU09OKHBhdGgsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgICBy
ZXR1cm4gdGhpcy5nZXRKU09OKHBhdGgsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsK
ICAgICAgICAgaWYgKGNvbnRlbnRbJ3N0YXR1cyddICE9ICdPSycpCiAgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoY29udGVudFsnc3RhdHVzJ10pOwogICAgICAgICByZXR1cm4gY29u
dGVudDsKQEAgLTYyLDcgKzY0LDcgQEAgUHJpdmlsZWdlZEFQSSA9IGNsYXNzIHsKICAgICAgICAg
ICAgIGZvciAodmFyIGtleSBpbiBkYXRhKQogICAgICAgICAgICAgICAgIGNsb25lZERhdGFba2V5
XSA9IGRhdGFba2V5XTsKICAgICAgICAgICAgIGNsb25lZERhdGFbJ3Rva2VuJ10gPSB0b2tlbjsK
LSAgICAgICAgICAgIHJldHVybiBnZXRKU09OV2l0aFN0YXR1cygnLi4vcHJpdmlsZWdlZC1hcGkv
JyArIHBhdGgsIGNsb25lZERhdGEpOworICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUFQSS5nZXRK
U09OV2l0aFN0YXR1cygnLi4vcHJpdmlsZWdlZC1hcGkvJyArIHBhdGgsIGNsb25lZERhdGEpOwog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTcyLDcgKzc0LDcgQEAgUHJpdmlsZWdlZEFQSSA9IGNs
YXNzIHsKICAgICAgICAgaWYgKHRoaXMuX3Rva2VuICYmIHRoaXMuX2V4cGlyYXRpb24gPiBEYXRl
Lm5vdygpICsgbWF4TmV0d29ya0xhdGVuY3kpCiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKHRoaXMuX3Rva2VuKTsKIAotICAgICAgICByZXR1cm4gZ2V0SlNPTldpdGhTdGF0dXMo
Jy4uL3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nLCB7fSkudGhlbihmdW5jdGlv
biAocmVzdWx0KSB7CisgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTldpdGhTdGF0dXMo
Jy4uL3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYtdG9rZW4nLCB7fSkudGhlbihmdW5jdGlv
biAocmVzdWx0KSB7CiAgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLl90b2tlbiA9IHJlc3VsdFsn
dG9rZW4nXTsKICAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuX2V4cGlyYXRpb24gPSBuZXcgRGF0
ZShyZXN1bHRbJ2V4cGlyYXRpb24nXSk7CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQ
SS5fdG9rZW47CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9hbmFseXNpcy1yZXN1bHRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXJlc3VsdHMuanMJKHJldmlzaW9uIDE5ODQ1
NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lz
LXJlc3VsdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBAQCBjbGFzcyBBbmFs
eXNpc1Jlc3VsdHMgewogICAgIHN0YXRpYyBmZXRjaCh0YXNrSWQpCiAgICAgewogICAgICAgICB0
YXNrSWQgPSBwYXJzZUludCh0YXNrSWQpOwotICAgICAgICByZXR1cm4gZ2V0SlNPTldpdGhTdGF0
dXMoYC4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/YW5hbHlzaXNUYXNrPSR7dGFza0lkfWApLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTldp
dGhTdGF0dXMoYC4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/YW5hbHlzaXNUYXNrPSR7dGFza0lkfWAp
LnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAKICAgICAgICAgICAgIEluc3RydW1lbnRhdGlv
bi5zdGFydE1lYXN1cmluZ1RpbWUoJ0FuYWx5c2lzUmVzdWx0cycsICdmZXRjaCcpOwogCiAgICAg
ICAgICAgICB2YXIgYWRhcHRvciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0b3IocmVzcG9uc2VbJ2Zv
cm1hdE1hcCddKTsKICAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFuYWx5c2lzUmVzdWx0
czsKICAgICAgICAgICAgIGZvciAodmFyIHJhd01lYXN1cmVtZW50IG9mIHJlc3BvbnNlWydtZWFz
dXJlbWVudHMnXSkKLSAgICAgICAgICAgICAgICByZXN1bHRzLmFkZChhZGFwdG9yLmFkb3B0VG9B
bmFseXNpc1Jlc3VsdHMocmF3TWVhc3VyZW1lbnQpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRz
LmFkZChhZGFwdG9yLmFwcGx5VG9BbmFseXNpc1Jlc3VsdHMocmF3TWVhc3VyZW1lbnQpKTsKIAog
ICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ0FuYWx5c2lzUmVz
dWx0cycsICdmZXRjaCcpOwogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMJKHJldmlzaW9uIDE5
ODQ1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5
c2lzLXRhc2suanMJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBjbGFzcyBBbmFs
eXNpc1Rhc2sgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0CiAgICAgc3RhdGljIGZldGNoQWxsKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fZmV0Y2hBbGxQcm9taXNlKQotICAgICAgICAgICAgdGhp
cy5fZmV0Y2hBbGxQcm9taXNlID0gZ2V0SlNPTldpdGhTdGF0dXMoJy4uL2FwaS9hbmFseXNpcy10
YXNrcycpLnRoZW4odGhpcy5fY29uc3RydWN0QW5hbHlzaXNUYXNrc0Zyb21SYXdEYXRhLmJpbmQo
dGhpcykpOworICAgICAgICAgICAgdGhpcy5fZmV0Y2hBbGxQcm9taXNlID0gUmVtb3RlQVBJLmdl
dEpTT05XaXRoU3RhdHVzKCcuLi9hcGkvYW5hbHlzaXMtdGFza3MnKS50aGVuKHRoaXMuX2NvbnN0
cnVjdEFuYWx5c2lzVGFza3NGcm9tUmF3RGF0YS5iaW5kKHRoaXMpKTsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2ZldGNoQWxsUHJvbWlzZTsKICAgICB9CiAKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkZXIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGRlci5qcwkocmV2aXNpb24g
MTk4NDU3KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVp
bGRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyd1c2Ugc3RyaWN0JzsKIAog
Y2xhc3MgQnVpbGRlciBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgIGNvbnN0cnVjdG9yKGlk
LCBvYmplY3QpCkBAIC0xNSwxNCArMTYsMjMgQEAgY2xhc3MgQnVpbGRlciBleHRlbmRzIExhYmVs
ZWRPYmplY3QgewogfQogCiBjbGFzcyBCdWlsZCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7Ci0g
ICAgY29uc3RydWN0b3IoaWQsIGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKQorICAgIGNvbnN0cnVjdG9y
KGlkLCBidWlsZGVyLCBidWlsZE51bWJlciwgYnVpbGRUaW1lKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoYnVpbGRlciBpbnN0YW5jZW9mIEJ1aWxkZXIpOwogICAgICAgICBzdXBlcihp
ZCk7CiAgICAgICAgIHRoaXMuX2J1aWxkZXIgPSBidWlsZGVyOwogICAgICAgICB0aGlzLl9idWls
ZE51bWJlciA9IGJ1aWxkTnVtYmVyOworICAgICAgICB0aGlzLl9idWlsZFRpbWUgPSBuZXcgRGF0
ZShidWlsZFRpbWUpOwogICAgIH0KIAorICAgIGJ1aWxkZXIoKSB7IHJldHVybiB0aGlzLl9idWls
ZGVyOyB9CisgICAgYnVpbGROdW1iZXIoKSB7IHJldHVybiB0aGlzLl9idWlsZE51bWJlcjsgfQor
ICAgIGJ1aWxkVGltZSgpIHsgcmV0dXJuIHRoaXMuX2J1aWxkVGltZTsgfQogICAgIGxhYmVsKCkg
eyByZXR1cm4gYEJ1aWxkICR7dGhpcy5fYnVpbGROdW1iZXJ9IG9uICR7dGhpcy5fYnVpbGRlci5s
YWJlbCgpfWA7IH0KICAgICB1cmwoKSB7IHJldHVybiB0aGlzLl9idWlsZGVyLnVybEZvckJ1aWxk
KHRoaXMuX2J1aWxkTnVtYmVyKTsgfQogfQorCitpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZp
bmVkJykgeworICAgIG1vZHVsZS5leHBvcnRzLkJ1aWxkZXIgPSBCdWlsZGVyOworICAgIG1vZHVs
ZS5leHBvcnRzLkJ1aWxkID0gQnVpbGQ7Cit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9jb21taXQtbG9nLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cuanMJKHJldmlzaW9u
IDE5ODQ1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2Nv
bW1pdC1sb2cuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisndXNlIHN0cmljdCc7
CiAKIGNsYXNzIENvbW1pdExvZyBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgY29uc3Ry
dWN0b3IoaWQsIHJhd0RhdGEpCkBAIC01Niw2ICs1NywyOSBAQCBjbGFzcyBDb21taXRMb2cgZXh0
ZW5kcyBEYXRhTW9kZWxPYmplY3QgCiAgICAgfQogICAgIHRpdGxlKCkgeyByZXR1cm4gdGhpcy5f
cmVwb3NpdG9yeS5uYW1lKCkgKyAnIGF0ICcgKyB0aGlzLmxhYmVsKCk7IH0KIAorICAgIGRpZmYo
cHJldmlvdXNDb21taXQpCisgICAgeworICAgICAgICBpZiAodGhpcyA9PSBwcmV2aW91c0NvbW1p
dCkKKyAgICAgICAgICAgIHByZXZpb3VzQ29tbWl0ID0gbnVsbDsKKworICAgICAgICB2YXIgcmVw
b3NpdG9yeSA9IHRoaXMuX3JlcG9zaXRvcnk7CisgICAgICAgIGlmICghcHJldmlvdXNDb21taXQp
CisgICAgICAgICAgICByZXR1cm4ge2Zyb206IG51bGwsIHRvOiB0aGlzLnJldmlzaW9uKCksIHJl
cG9zaXRvcnk6IHJlcG9zaXRvcnksIGxhYmVsOiB0aGlzLmxhYmVsKCksIHVybDogdGhpcy51cmwo
KX07CisKKyAgICAgICAgdmFyIHRvID0gdGhpcy5yZXZpc2lvbigpOworICAgICAgICB2YXIgZnJv
bSA9IHByZXZpb3VzQ29tbWl0LnJldmlzaW9uKCk7CisgICAgICAgIHZhciBsYWJlbCA9IG51bGw7
CisgICAgICAgIGlmIChwYXJzZUludCh0bykgPT0gdG8pIHsgLy8gZS5nLiByMTIzNDUuCisgICAg
ICAgICAgICBmcm9tID0gcGFyc2VJbnQoZnJvbSkgKyAxOworICAgICAgICAgICAgbGFiZWwgPSBg
ciR7ZnJvbX0tciR7dGhpcy5yZXZpc2lvbigpfWA7CisgICAgICAgIH0gZWxzZSBpZiAodG8ubGVu
Z3RoID09IDQwKSB7IC8vIGUuZy4gZ2l0IGhhc2gKKyAgICAgICAgICAgIGxhYmVsID0gYCR7ZnJv
bX0uLiR7dG99YDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBsYWJlbCA9IGAke2Zyb219
IC0gJHt0b31gOworCisgICAgICAgIHJldHVybiB7ZnJvbTogZnJvbSwgdG86IHRvLCByZXBvc2l0
b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogbGFiZWwsIHVybDogcmVwb3NpdG9yeS51cmxGb3JSZXZp
c2lvblJhbmdlKGZyb20sIHRvKX07CisgICAgfQorCiAgICAgc3RhdGljIGZldGNoQmV0d2VlblJl
dmlzaW9ucyhyZXBvc2l0b3J5LCBmcm9tLCB0bykKICAgICB7CiAgICAgICAgIHZhciBwYXJhbXMg
PSBbXTsKQEAgLTc0LDcgKzk4LDcgQEAgY2xhc3MgQ29tbWl0TG9nIGV4dGVuZHMgRGF0YU1vZGVs
T2JqZWN0IAogICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZl
KSB7IHJlc29sdmUoY2FjaGVkTG9ncyk7IH0pOwogCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsK
LSAgICAgICAgcmV0dXJuIGdldEpTT05XaXRoU3RhdHVzKHVybCkudGhlbihmdW5jdGlvbiAoZGF0
YSkgeworICAgICAgICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHVybCkudGhl
bihmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICAgdmFyIGNvbW1pdHMgPSBkYXRhWydjb21t
aXRzJ10ubWFwKGZ1bmN0aW9uIChyYXdEYXRhKSB7IHJldHVybiBDb21taXRMb2cuZW5zdXJlU2lu
Z2xldG9uKHJlcG9zaXRvcnksIHJhd0RhdGEpOyB9KTsKICAgICAgICAgICAgIHNlbGYuX2NhY2hl
Q29tbWl0TG9ncyhyZXBvc2l0b3J5LCBmcm9tLCB0bywgY29tbWl0cyk7CiAgICAgICAgICAgICBy
ZXR1cm4gY29tbWl0czsKQEAgLTEwMSwzICsxMjUsNiBAQCBjbGFzcyBDb21taXRMb2cgZXh0ZW5k
cyBEYXRhTW9kZWxPYmplY3QgCiAgICAgICAgIHRoaXMuX2NhY2hlc1tyZXBvc2l0b3J5LmlkKCld
W2Zyb20gKyAnfCcgKyB0b10gPSBsb2dzOwogICAgIH0KIH0KKworaWYgKHR5cGVvZiBtb2R1bGUg
IT0gJ3VuZGVmaW5lZCcpCisgICAgbW9kdWxlLmV4cG9ydHMuQ29tbWl0TG9nID0gQ29tbWl0TG9n
OwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1t
b2RlbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9kYXRhLW1vZGVsLmpzCShyZXZpc2lvbiAxOTg0NTcpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNCBAQAorJ3VzZSBzdHJpY3QnOwogCiBjbGFzcyBEYXRhTW9kZWxPYmplY3Qg
ewogICAgIGNvbnN0cnVjdG9yKGlkKQpAQCAtNjYsMTEgKzY3LDExIEBAIGNsYXNzIERhdGFNb2Rl
bE9iamVjdCB7CiAgICAgICAgICAgICBwYXRoICs9ICc/JyArIHF1ZXJ5LmpvaW4oJyYnKTsKIAog
ICAgICAgICBpZiAobm9DYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBnZXRKU09OV2l0aFN0YXR1
cyhwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTldpdGhTdGF0dXMo
cGF0aCk7CiAKICAgICAgICAgdmFyIGNhY2hlTWFwID0gdGhpcy5lbnN1cmVOYW1lZFN0YXRpY01h
cChEYXRhTW9kZWxPYmplY3QuQ2FjaGVNYXBTeW1ib2wpOwogICAgICAgICBpZiAoIWNhY2hlTWFw
W3BhdGhdKQotICAgICAgICAgICAgY2FjaGVNYXBbcGF0aF0gPSBnZXRKU09OV2l0aFN0YXR1cyhw
YXRoKTsKKyAgICAgICAgICAgIGNhY2hlTWFwW3BhdGhdID0gUmVtb3RlQVBJLmdldEpTT05XaXRo
U3RhdHVzKHBhdGgpOwogCiAgICAgICAgIHJldHVybiBjYWNoZU1hcFtwYXRoXTsKICAgICB9CkBA
IC0xMDMsMyArMTA0LDggQEAgY2xhc3MgTGFiZWxlZE9iamVjdCBleHRlbmRzIERhdGFNb2RlbE9i
agogICAgIG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAgbGFiZWwoKSB7IHJldHVy
biB0aGlzLm5hbWUoKTsgfQogfQorCitpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykg
eworICAgIG1vZHVsZS5leHBvcnRzLkRhdGFNb2RlbE9iamVjdCA9IERhdGFNb2RlbE9iamVjdDsK
KyAgICBtb2R1bGUuZXhwb3J0cy5MYWJlbGVkT2JqZWN0ID0gTGFiZWxlZE9iamVjdDsKK30KSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50
LWFkYXB0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5qcwkocmV2aXNpb24gMTk4NDU3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRh
cHRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyd1c2Ugc3RyaWN0JzsKIAog
Y2xhc3MgTWVhc3VyZW1lbnRBZGFwdG9yIHsKICAgICBjb25zdHJ1Y3Rvcihmb3JtYXRNYXApCkBA
IC0yNywzMiArMjgsMzggQEAgY2xhc3MgTWVhc3VyZW1lbnRBZGFwdG9yIHsKICAgICAgICAgcmV0
dXJuIHJvd1t0aGlzLl9pZEluZGV4XTsKICAgICB9CiAKLSAgICBhZG9wdFRvQW5hbHlzaXNSZXN1
bHRzKHJvdykKKyAgICBhcHBseVRvQW5hbHlzaXNSZXN1bHRzKHJvdykKKyAgICB7CisgICAgICAg
IHZhciBhZGFwdGVkUm93ID0gdGhpcy5hcHBseVRvKHJvdyk7CisgICAgICAgIGFkYXB0ZWRSb3cu
bWV0cmljSWQgPSByb3dbdGhpcy5fbWV0cmljSW5kZXhdOworICAgICAgICBhZGFwdGVkUm93LmNv
bmZpZ1R5cGUgPSByb3dbdGhpcy5fY29uZmlnVHlwZUluZGV4XTsKKyAgICAgICAgcmV0dXJuIGFk
YXB0ZWRSb3c7CisgICAgfQorCisgICAgYXBwbHlUbyhyb3cpCiAgICAgewogICAgICAgICB2YXIg
aWQgPSByb3dbdGhpcy5faWRJbmRleF07CiAgICAgICAgIHZhciBtZWFuID0gcm93W3RoaXMuX21l
YW5JbmRleF07CiAgICAgICAgIHZhciBzdW0gPSByb3dbdGhpcy5fc3VtSW5kZXhdOwogICAgICAg
ICB2YXIgc3F1YXJlU3VtID0gcm93W3RoaXMuX3NxdWFyZVN1bUluZGV4XTsKLSAgICAgICAgdmFy
IGl0ZXJhdGlvbkNvdW50ID0gcm93W3RoaXMuX2NvdW50SW5kZXhdOwogICAgICAgICB2YXIgcmV2
aXNpb25MaXN0ID0gcm93W3RoaXMuX3JldmlzaW9uc0luZGV4XTsKICAgICAgICAgdmFyIGJ1aWxk
SWQgPSByb3dbdGhpcy5fYnVpbGRJbmRleF07Ci0gICAgICAgIHZhciBtZXRyaWNJZCA9IHJvd1t0
aGlzLl9tZXRyaWNJbmRleF07Ci0gICAgICAgIHZhciBjb25maWdUeXBlID0gcm93W3RoaXMuX2Nv
bmZpZ1R5cGVJbmRleF07CisgICAgICAgIHZhciBidWlsZGVySWQgPSByb3dbdGhpcy5fYnVpbGRl
ckluZGV4XTsKKyAgICAgICAgdmFyIGJ1aWxkTnVtYmVyID0gcm93W3RoaXMuX2J1aWxkTnVtYmVy
SW5kZXhdOworICAgICAgICB2YXIgYnVpbGRUaW1lID0gcm93W3RoaXMuX2J1aWxkVGltZUluZGV4
XTsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICByZXR1cm4gewogICAgICAgICAg
ICAgaWQ6IGlkLAogICAgICAgICAgICAgYnVpbGRJZDogYnVpbGRJZCwKLSAgICAgICAgICAgIG1l
dHJpY0lkOiBtZXRyaWNJZCwKLSAgICAgICAgICAgIGNvbmZpZ1R5cGU6IGNvbmZpZ1R5cGUsCisg
ICAgICAgICAgICBtZXRyaWNJZDogbnVsbCwKKyAgICAgICAgICAgIGNvbmZpZ1R5cGU6IG51bGws
CiAgICAgICAgICAgICByb290U2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNZWFzdXJlbWVudFJv
b3RTZXQuZW5zdXJlU2luZ2xldG9uKGlkLCByZXZpc2lvbkxpc3QpOyB9LAotICAgICAgICAgICAg
YnVpbGQ6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICB2YXIgYnVpbGRlciA9IEJ1aWxk
ZXIuZmluZEJ5SWQocm93W3NlbGYuX2J1aWxkZXJJbmRleF0pOwotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQnVpbGQoaWQsIGJ1aWxkZXIsIHJvd1tzZWxmLl9idWlsZE51bWJlckluZGV4XSk7
Ci0gICAgICAgICAgICB9LAorICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IG5ldyBCdWlsZChidWlsZElkLCBCdWlsZGVyLmZpbmRCeUlkKGJ1aWxkZXJJZCksIGJ1aWxkTnVt
YmVyLCBidWlsZFRpbWUpOyB9LAorICAgICAgICAgICAgdGltZTogcm93W3RoaXMuX2NvbW1pdFRp
bWVJbmRleF0sCiAgICAgICAgICAgICB2YWx1ZTogbWVhbiwKICAgICAgICAgICAgIHN1bTogc3Vt
LAotICAgICAgICAgICAgc3F1YXJlU3VtLAotICAgICAgICAgICAgaXRlcmF0aW9uQ291bnQ6IGl0
ZXJhdGlvbkNvdW50LAorICAgICAgICAgICAgc3F1YXJlU3VtOiBzcXVhcmVTdW0sCisgICAgICAg
ICAgICBpdGVyYXRpb25Db3VudDogcm93W3RoaXMuX2NvdW50SW5kZXhdLAogICAgICAgICAgICAg
aW50ZXJ2YWw6IE1lYXN1cmVtZW50QWRhcHRvci5jb21wdXRlQ29uZmlkZW5jZUludGVydmFsKHJv
d1t0aGlzLl9jb3VudEluZGV4XSwgbWVhbiwgc3VtLCBzcXVhcmVTdW0pCiAgICAgICAgIH07CiAg
ICAgfQpAQCAtNzksNDUgKzg2LDEyIEBAIGNsYXNzIE1lYXN1cmVtZW50QWRhcHRvciB7CiAgICAg
ICAgIHJldHVybiB7IHZhbHVlOiBtZWFuLCBpbnRlcnZhbDogaW50ZXJ2YWwgfTsKICAgICB9CiAK
LSAgICBhZG9wdFRvU2VyaWVzKHJvdywgc2VyaWVzLCBzZXJpZXNJbmRleCkKLSAgICB7Ci0gICAg
ICAgIHZhciBpZCA9IHJvd1t0aGlzLl9pZEluZGV4XTsKLSAgICAgICAgdmFyIG1lYW4gPSByb3db
dGhpcy5fbWVhbkluZGV4XTsKLSAgICAgICAgdmFyIHN1bSA9IHJvd1t0aGlzLl9zdW1JbmRleF07
Ci0gICAgICAgIHZhciBzcXVhcmVTdW0gPSByb3dbdGhpcy5fc3F1YXJlU3VtSW5kZXhdOwotICAg
ICAgICB2YXIgcmV2aXNpb25MaXN0ID0gcm93W3RoaXMuX3JldmlzaW9uc0luZGV4XTsKLSAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWQ6IGlk
LAotICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAg
ICAvLyBDcmVhdGUgYSBuZXcgTWVhc3VyZW1lbnQgY2xhc3MgdGhhdCBkb2Vzbid0IHJlcXVpcmUg
bWltaWNraW5nIHdoYXQgcnVucy5waHAgZ2VuZXJhdGVzLgotICAgICAgICAgICAgICAgIHZhciBy
ZXZpc2lvbnNNYXAgPSB7fTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciByZXZpc2lvblJvdyBv
ZiByZXZpc2lvbkxpc3QpCi0gICAgICAgICAgICAgICAgICAgIHJldmlzaW9uc01hcFtyZXZpc2lv
blJvd1swXV0gPSByZXZpc2lvblJvdy5zbGljZSgxKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IE1lYXN1cmVtZW50KHsKLSAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLAotICAgICAgICAg
ICAgICAgICAgICBtZWFuOiBtZWFuLAotICAgICAgICAgICAgICAgICAgICBzdW06IHN1bSwKLSAg
ICAgICAgICAgICAgICAgICAgc3F1YXJlU3VtOiBzcXVhcmVTdW0sCi0gICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uczogcmV2aXNpb25zTWFwLAotICAgICAgICAgICAgICAgICAgICBidWlsZDog
cm93W3NlbGYuX2J1aWxkSW5kZXhdLAotICAgICAgICAgICAgICAgICAgICBidWlsZFRpbWU6IHJv
d1tzZWxmLl9idWlsZFRpbWVJbmRleF0sCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkTnVtYmVy
OiByb3dbc2VsZi5fYnVpbGROdW1iZXJJbmRleF0sCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXI6IHJvd1tzZWxmLl9idWlsZGVySW5kZXhdLAotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIHJvb3RTZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1lYXN1
cmVtZW50Um9vdFNldC5lbnN1cmVTaW5nbGV0b24oaWQsIHJldmlzaW9uTGlzdCk7IH0sCi0gICAg
ICAgICAgICBzZXJpZXM6IHNlcmllcywKLSAgICAgICAgICAgIHNlcmllc0luZGV4OiBzZXJpZXNJ
bmRleCwKLSAgICAgICAgICAgIHRpbWU6IHJvd1t0aGlzLl9jb21taXRUaW1lSW5kZXhdLAotICAg
ICAgICAgICAgdmFsdWU6IG1lYW4sCi0gICAgICAgICAgICBpbnRlcnZhbDogTWVhc3VyZW1lbnRB
ZGFwdG9yLmNvbXB1dGVDb25maWRlbmNlSW50ZXJ2YWwocm93W3RoaXMuX2NvdW50SW5kZXhdLCBt
ZWFuLCBzdW0sIHNxdWFyZVN1bSkKLSAgICAgICAgfTsKLSAgICB9Ci0KICAgICBzdGF0aWMgY29t
cHV0ZUNvbmZpZGVuY2VJbnRlcnZhbChpdGVyYXRpb25Db3VudCwgbWVhbiwgc3VtLCBzcXVhcmVT
dW0pCiAgICAgewogICAgICAgICB2YXIgZGVsdGEgPSBTdGF0aXN0aWNzLmNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhKDAuOTUsIGl0ZXJhdGlvbkNvdW50LCBzdW0sIHNxdWFyZVN1bSk7CiAgICAgICAg
IHJldHVybiBpc05hTihkZWx0YSkgPyBudWxsIDogW21lYW4gLSBkZWx0YSwgbWVhbiArIGRlbHRh
XTsKICAgICB9CiB9CisKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1v
ZHVsZS5leHBvcnRzLk1lYXN1cmVtZW50QWRhcHRvciA9IE1lYXN1cmVtZW50QWRhcHRvcjsKSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50
LWNsdXN0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvbWVhc3VyZW1lbnQtY2x1c3Rlci5qcwkocmV2aXNpb24gMTk4NDU3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtY2x1
c3Rlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyd1c2Ugc3RyaWN0JzsKIAog
Y2xhc3MgTWVhc3VyZW1lbnRDbHVzdGVyIHsKICAgICBjb25zdHJ1Y3RvcihyZXNwb25zZSkKQEAg
LTI1LDcgKzI2LDEwIEBAIGNsYXNzIE1lYXN1cmVtZW50Q2x1c3RlciB7CiAKICAgICAgICAgICAg
IGlkTWFwW2lkXSA9IHRydWU7CiAKLSAgICAgICAgICAgIHNlcmllcy5fc2VyaWVzLnB1c2goc2Vs
Zi5fYWRhcHRvci5hZG9wdFRvU2VyaWVzKHJvdywgc2VyaWVzLCBzZXJpZXMuX3Nlcmllcy5sZW5n
dGgpKTsKKyAgICAgICAgICAgIHNlcmllcy5hcHBlbmQoc2VsZi5fYWRhcHRvci5hcHBseVRvKHJv
dykpOwogICAgICAgICB9KTsKICAgICB9CiB9CisKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRl
ZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzLk1lYXN1cmVtZW50Q2x1c3RlciA9IE1lYXN1cmVt
ZW50Q2x1c3RlcjsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL21lYXN1cmVtZW50LXNldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMJKHJldmlzaW9uIDE5ODQ1
NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVt
ZW50LXNldC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcgQEAKKyd1c2Ugc3RyaWN0JzsK
KworaWYgKCFBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMpCisgICAgQXJyYXkucHJvdG90eXBlLmlu
Y2x1ZGVzID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLmluZGV4T2YodmFsdWUpID49
IDA7IH0KIAogY2xhc3MgTWVhc3VyZW1lbnRTZXQgewogICAgIGNvbnN0cnVjdG9yKHBsYXRmb3Jt
SWQsIG1ldHJpY0lkLCBsYXN0TW9kaWZpZWQpCkBAIC05NiwxMCArMTAwLDggQEAgY2xhc3MgTWVh
c3VyZW1lbnRTZXQgewogICAgICAgICAgICAgZWxzZSBpZiAoIWNhbGxiYWNrTGlzdC5pbmNsdWRl
cyhjYWxsYmFjaykpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tMaXN0LnB1c2goY2FsbGJhY2sp
OwogCi0gICAgICAgICAgICBpZiAoc2hvdWxkU3RhcnRGZXRjaCkgewotICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFzaG91bGRJbnZva2VDYWxsYWNrTm93KTsKKyAgICAgICAgICAgIGlm
IChzaG91bGRTdGFydEZldGNoKQogICAgICAgICAgICAgICAgIHRoaXMuX2ZldGNoKGVuZFRpbWUs
IHRydWUpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZElu
dm9rZUNhbGxhY2tOb3cpCkBAIC0xMjEsNyArMTIzLDcgQEAgY2xhc3MgTWVhc3VyZW1lbnRTZXQg
ewogCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKIAotICAgICAgICByZXR1cm4gZ2V0SlNPTldp
dGhTdGF0dXModXJsKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgIHJldHVybiBSZW1v
dGVBUEkuZ2V0SlNPTldpdGhTdGF0dXModXJsKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAg
ICAgICAgICBpZiAoIWNsdXN0ZXJFbmRUaW1lICYmIHVzZUNhY2hlICYmICtkYXRhWydsYXN0TW9k
aWZpZWQnXSA8IHNlbGYuX2xhc3RNb2RpZmllZCkKICAgICAgICAgICAgICAgICBzZWxmLl9mZXRj
aChjbHVzdGVyRW5kVGltZSwgZmFsc2UpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjE4LDE3ICsy
MjAsOCBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgICAgIGZvciAodmFyIGNsdXN0ZXIg
b2YgdGhpcy5fc29ydGVkQ2x1c3RlcnMpCiAgICAgICAgICAgICBjbHVzdGVyLmFkZFRvU2VyaWVz
KHNlcmllcywgY29uZmlnVHlwZSwgaW5jbHVkZU91dGxpZXJzLCBpZE1hcCk7CiAKLSAgICAgICAg
aWYgKGV4dGVuZFRvRnV0dXJlICYmIHNlcmllcy5fc2VyaWVzLmxlbmd0aCkgewotICAgICAgICAg
ICAgdmFyIGxhc3RQb2ludCA9IHNlcmllcy5fc2VyaWVzW3Nlcmllcy5fc2VyaWVzLmxlbmd0aCAt
IDFdOwotICAgICAgICAgICAgc2VyaWVzLl9zZXJpZXMucHVzaCh7Ci0gICAgICAgICAgICAgICAg
c2VyaWVzOiBzZXJpZXMsCi0gICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IHNlcmllcy5fc2Vy
aWVzLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBtZWFzdXJlbWVudDogbnVsbCwKLSAgICAgICAg
ICAgICAgICB0aW1lOiBEYXRlLm5vdygpICsgMzY1ICogMjQgKiAzNjAwICogMTAwMCwKLSAgICAg
ICAgICAgICAgICB2YWx1ZTogbGFzdFBvaW50LnZhbHVlLAotICAgICAgICAgICAgICAgIGludGVy
dmFsOiBsYXN0UG9pbnQuaW50ZXJ2YWwsCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoZXh0ZW5kVG9GdXR1cmUpCisgICAgICAgICAgICBzZXJpZXMuZXh0ZW5kVG9GdXR1
cmUoKTsKIAogICAgICAgICBJbnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgnTWVhc3Vy
ZW1lbnRTZXQnLCAnZmV0Y2hlZFRpbWVTZXJpZXMnKTsKIApAQCAtMjM2LDI1ICsyMjksNSBAQCBj
bGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgfQogfQogCi1UaW1lU2VyaWVzLnByb3RvdHlwZS5m
aW5kQnlJZCA9IGZ1bmN0aW9uIChpZCkKLXsKLSAgICByZXR1cm4gdGhpcy5fc2VyaWVzLmZpbmQo
ZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludC5pZCA9PSBpZCB9KTsKLX0KLQotVGltZVNl
cmllcy5wcm90b3R5cGUuZGF0YUJldHdlZW5Qb2ludHMgPSBmdW5jdGlvbiAoZmlyc3RQb2ludCwg
bGFzdFBvaW50KQotewotICAgIHZhciBkYXRhID0gdGhpcy5fc2VyaWVzOwotICAgIHZhciBmaWx0
ZXJlZERhdGEgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gZmlyc3RQb2ludC5zZXJpZXNJbmRleDsg
aSA8PSBsYXN0UG9pbnQuc2VyaWVzSW5kZXg7IGkrKykgewotICAgICAgICBpZiAoIWRhdGFbaV0u
bWFya2VkT3V0bGllcikKLSAgICAgICAgICAgIGZpbHRlcmVkRGF0YS5wdXNoKGRhdGFbaV0pOwot
ICAgIH0KLSAgICByZXR1cm4gZmlsdGVyZWREYXRhOwotfQotCi1UaW1lU2VyaWVzLnByb3RvdHlw
ZS5maXJzdFBvaW50ID0gZnVuY3Rpb24gKCkKLXsKLSAgICBpZiAoIXRoaXMuX3NlcmllcyB8fCAh
dGhpcy5fc2VyaWVzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgcmV0dXJuIHRo
aXMuX3Nlcmllc1swXTsKLX0KK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAg
IG1vZHVsZS5leHBvcnRzLk1lYXN1cmVtZW50U2V0ID0gTWVhc3VyZW1lbnRTZXQ7CkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Jl
cG9zaXRvcnkuanMJKHJldmlzaW9uIDE5ODQ1NykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0IEBACisndXNlIHN0cmljdCc7CiAKIGNsYXNzIFJlcG9zaXRvcnkgZXh0ZW5kcyBMYWJlbGVk
T2JqZWN0IHsKICAgICBjb25zdHJ1Y3RvcihpZCwgb2JqZWN0KQpAQCAtMzYsMyArMzcsNiBAQCBj
bGFzcyBSZXBvc2l0b3J5IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgfQogCiB9CisKK2lm
ICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzLlJlcG9z
aXRvcnkgPSBSZXBvc2l0b3J5OwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvcm9vdC1zZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvcm9vdC1zZXQuanMJKHJldmlzaW9uIDE5ODQ1NykKKysr
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorJ3VzZSBzdHJpY3QnOwogCiBjbGFzcyBSb290
U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKIApAQCAtNzUsNiArNzYsOCBAQCBjbGFzcyBN
ZWFzdXJlbWVudFJvb3RTZXQgZXh0ZW5kcyBSb290U2V0CiAgICAgICAgIGZvciAodmFyIHZhbHVl
cyBvZiByZXZpc2lvbkxpc3QpIHsKICAgICAgICAgICAgIHZhciByZXBvc2l0b3J5SWQgPSB2YWx1
ZXNbMF07CiAgICAgICAgICAgICB2YXIgcmVwb3NpdG9yeSA9IFJlcG9zaXRvcnkuZmluZEJ5SWQo
cmVwb3NpdG9yeUlkKTsKKyAgICAgICAgICAgIGlmICghcmVwb3NpdG9yeSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFw
W3JlcG9zaXRvcnlJZF0gPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKHJlcG9zaXRvcnksIHty
ZXZpc2lvbjogdmFsdWVzWzFdLCB0aW1lOiB2YWx1ZXNbMl19KTsKICAgICAgICAgICAgIHRoaXMu
X3JlcG9zaXRvcmllcy5wdXNoKHJlcG9zaXRvcnkpOwpAQCAtMTA2LDMgKzEwOSw4IEBAIGNsYXNz
IEN1c3RvbVJvb3RTZXQgewogCiB9CiAKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQn
KSB7CisgICAgbW9kdWxlLmV4cG9ydHMuUm9vdFNldCA9IFJvb3RTZXQ7CisgICAgbW9kdWxlLmV4
cG9ydHMuTWVhc3VyZW1lbnRSb290U2V0ID0gTWVhc3VyZW1lbnRSb290U2V0OworICAgIG1vZHVs
ZS5leHBvcnRzLkN1c3RvbVJvb3RTZXQgPSBDdXN0b21Sb290U2V0OworfQpJbmRleDogV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGltZS1zZXJpZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGltZS1z
ZXJpZXMuanMJKHJldmlzaW9uIDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy90aW1lLXNlcmllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBA
CisKKy8vIHYzIFVJIHN0aWxsIHJlbGllcyBvbiBSdW5zRGF0YSBmb3IgYXNzb2NpYXRpbmcgbWV0
cmljcyB3aXRoIHVuaXRzLgorLy8gVXNlIGRlY2xhcnRpdmUgc3ludGF4IG9uY2UgdGhhdCBkZXBl
bmRlbmN5IGhhcyBiZWVuIHJlbW92ZWQuCitUaW1lU2VyaWVzID0gY2xhc3MgeworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RhdGEgPSBbXTsKKyAgICB9CisKKyAgICBh
cHBlbmQoaXRlbSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZW0uc2VyaWVzID09
PSB1bmRlZmluZWQpOworICAgICAgICBpdGVtLnNlcmllcyA9IHRoaXM7CisgICAgICAgIGl0ZW0u
c2VyaWVzSW5kZXggPSB0aGlzLl9kYXRhLmxlbmd0aDsKKyAgICAgICAgdGhpcy5fZGF0YS5wdXNo
KGl0ZW0pOworICAgIH0KKworICAgIGV4dGVuZFRvRnV0dXJlKCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fZGF0YS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBs
YXN0UG9pbnQgPSB0aGlzLl9kYXRhW3RoaXMuX2RhdGEubGVuZ3RoIC0gMV07CisgICAgICAgIHRo
aXMuX2RhdGEucHVzaCh7CisgICAgICAgICAgICBzZXJpZXM6IHRoaXMsCisgICAgICAgICAgICBz
ZXJpZXNJbmRleDogdGhpcy5fZGF0YS5sZW5ndGgsCisgICAgICAgICAgICB0aW1lOiBEYXRlLm5v
dygpICsgMzY1ICogMjQgKiAzNjAwICogMTAwMCwKKyAgICAgICAgICAgIHZhbHVlOiBsYXN0UG9p
bnQudmFsdWUsCisgICAgICAgICAgICBpbnRlcnZhbDogbGFzdFBvaW50LmludGVydmFsLAorICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmaXJzdFBvaW50KCkgeyByZXR1cm4gdGhpcy5fZGF0YS5s
ZW5ndGggPyB0aGlzLl9kYXRhWzBdIDogbnVsbDsgfQorICAgIGxhc3RQb2ludCgpIHsgcmV0dXJu
IHRoaXMuX2RhdGEubGVuZ3RoID8gdGhpcy5fZGF0YVt0aGlzLl9kYXRhLmxlbmd0aCAtIDFdIDog
bnVsbDsgfQorCisgICAgcHJldmlvdXNQb2ludChwb2ludCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHBvaW50LnNlcmllcyA9PSB0aGlzKTsKKyAgICAgICAgaWYgKCFwb2ludC5zZXJp
ZXNJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YVtwb2ludC5zZXJpZXNJbmRleCAtIDFdOworICAgIH0KKworICAgIG5leHRQb2ludChwb2lu
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBvaW50LnNlcmllcyA9PSB0aGlzKTsK
KyAgICAgICAgaWYgKHBvaW50LnNlcmllc0luZGV4ICsgMSA+PSB0aGlzLl9kYXRhLmxlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVtwb2lu
dC5zZXJpZXNJbmRleCArIDFdOworICAgIH0KKworICAgIGZpbmRQb2ludEJ5SW5kZXgoaW5kZXgp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2RhdGEgfHwgaW5kZXggPCAwIHx8IGluZGV4ID49
IHRoaXMuX2RhdGEubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJl
dHVybiB0aGlzLl9kYXRhW2luZGV4XTsKKyAgICB9CisKKyAgICBmaW5kQnlJZChpZCkgeyByZXR1
cm4gdGhpcy5fZGF0YS5maW5kKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuaWQgPT0g
aWQgfSk7IH0KKworICAgIGZpbmRQb2ludEFmdGVyVGltZSh0aW1lKSB7IHJldHVybiB0aGlzLl9k
YXRhLmZpbmQoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludC50aW1lID49IHRpbWU7IH0p
OyB9CisKKyAgICBkYXRhQmV0d2VlblBvaW50cyhmaXJzdFBvaW50LCBsYXN0UG9pbnQpCisgICAg
eworICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7CisgICAgICAgIHZhciBmaWx0ZXJlZERh
dGEgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IGZpcnN0UG9pbnQuc2VyaWVzSW5kZXg7IGkg
PD0gbGFzdFBvaW50LnNlcmllc0luZGV4OyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZGF0YVtp
XS5tYXJrZWRPdXRsaWVyKQorICAgICAgICAgICAgICAgIGZpbHRlcmVkRGF0YS5wdXNoKGRhdGFb
aV0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmaWx0ZXJlZERhdGE7CisgICAgfQorCit9
OwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1w
YW5lLXN0YXR1cy12aWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS1zdGF0dXMtdmlldy5qcwkocmV2aXNpb24gMTk4
NDU3KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1w
YW5lLXN0YXR1cy12aWV3LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMSArNDQsMzMgQEAgY2xh
c3MgQ2hhcnRQYW5lU3RhdHVzVmlldyBleHRlbmRzIENoYXJ0UwogICAgICAgICAgICAgfTsKIAog
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RyJywge2NsYXNzOiBzZWxlY3RlZCA/ICdzZWxl
Y3RlZCcgOiAnJywgb25jbGljazogYWN0aW9ufSwgWwotICAgICAgICAgICAgICAgIGVsZW1lbnQo
J3RkJywgaW5mby5uYW1lKSwKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGluZm8ucmVw
b3NpdG9yeS5uYW1lKCkpLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywgaW5mby51cmwg
PyBsaW5rKGluZm8ubGFiZWwsIGluZm8ubGFiZWwsIGluZm8udXJsLCB0cnVlKSA6IGluZm8ubGFi
ZWwpLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywge2NsYXNzOiAnY29tbWl0LXZpZXdl
ci1vcGVuZXInfSwgbGluaygnXHUwMEJCJywgYWN0aW9uKSksCiAgICAgICAgICAgICBdKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgaWYgKHRoaXMuX2J1aWxkSW5mbykgewotICAgICAgICAgICAg
dmFyIG51bWJlciA9IHRoaXMuX2J1aWxkSW5mby5idWlsZE51bWJlcigpOwotICAgICAgICAgICAg
dmFyIGJ1aWxkZXIgPSBCdWlsZGVyLmZpbmRCeUlkKHRoaXMuX2J1aWxkSW5mby5idWlsZGVySWQo
KSk7Ci0gICAgICAgICAgICB2YXIgdXJsID0gbnVsbDsKLSAgICAgICAgICAgIGlmIChidWlsZGVy
KQotICAgICAgICAgICAgICAgIHVybCA9IGJ1aWxkZXIudXJsRm9yQnVpbGQobnVtYmVyKTsKLSAg
ICAgICAgICAgIHZhciBidWlsZFRpbWUgPSB0aGlzLl9idWlsZEluZm8uZm9ybWF0dGVkQnVpbGRU
aW1lKCk7CisgICAgICAgICAgICB2YXIgYnVpbGQgPSB0aGlzLl9idWlsZEluZm87CisgICAgICAg
ICAgICB2YXIgbnVtYmVyID0gYnVpbGQuYnVpbGROdW1iZXIoKTsKKyAgICAgICAgICAgIHZhciBi
dWlsZFRpbWUgPSB0aGlzLl9mb3JtYXRUaW1lKGJ1aWxkLmJ1aWxkVGltZSgpKTsKKyAgICAgICAg
ICAgIHZhciB1cmwgPSBidWlsZC51cmwoKTsKIAogICAgICAgICAgICAgdGFibGVDb250ZW50LnVu
c2hpZnQoZWxlbWVudCgndHInLCBbCiAgICAgICAgICAgICAgICAgZWxlbWVudCgndGQnLCAnQnVp
bGQnKSwKLSAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgWwotICAg
ICAgICAgICAgICAgICAgICB1cmwgPyBsaW5rKG51bWJlciwgYEJ1aWxkICR7bnVtYmVyfSBvbiAi
JHtidWlsZGVyLm5hbWUoKX0iYCwgdXJsLCB0cnVlKSA6IG51bWJlciwKLSAgICAgICAgICAgICAg
ICAgICAgYCAoJHtidWlsZFRpbWV9KWBdKSwKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcs
IHtjb2xzcGFuOiAyfSwgW3VybCA/IGxpbmsobnVtYmVyLCBidWlsZC5sYWJlbCgpLCB1cmwsIHRy
dWUpIDogbnVtYmVyLCBgICgke2J1aWxkVGltZX0pYF0pLAogICAgICAgICAgICAgXSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgpLnF1ZXJ5
U2VsZWN0b3IoJy5jaGFydC1wYW5lLXJldmlzaW9ucycpLCB0YWJsZUNvbnRlbnQpOwogICAgIH0K
IAorICAgIF9mb3JtYXRUaW1lKGRhdGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChk
YXRlIGluc3RhbmNlb2YgRGF0ZSk7CisgICAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCku
cmVwbGFjZSgnVCcsICcgJykucmVwbGFjZSgvXC5cZCtaJC8sICcnKTsKKyAgICB9CisKICAgICBz
ZXRDdXJyZW50UmVwb3NpdG9yeShyZXBvc2l0b3J5KQogICAgIHsKICAgICAgICAgdGhpcy5fY3Vy
cmVudFJlcG9zaXRvcnkgPSByZXBvc2l0b3J5OwpAQCAtMTMwLDEyICsxMzIsOCBAQCBjbGFzcyBD
aGFydFBhbmVTdGF0dXNWaWV3IGV4dGVuZHMgQ2hhcnRTCiAgICAgICAgIGlmICghY3VycmVudFBv
aW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBjdXJyZW50TWVhc3VyZW1l
bnQgPSBjdXJyZW50UG9pbnQubWVhc3VyZW1lbnQoKTsKLSAgICAgICAgaWYgKCFjdXJyZW50TWVh
c3VyZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9jaGFy
dC5jdXJyZW50U2VsZWN0aW9uKCkgJiYgY3VycmVudE1lYXN1cmVtZW50KQotICAgICAgICAgICAg
dGhpcy5fYnVpbGRJbmZvID0gY3VycmVudE1lYXN1cmVtZW50OworICAgICAgICBpZiAoIXRoaXMu
X2NoYXJ0LmN1cnJlbnRTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkSW5mbyA9
IGN1cnJlbnRQb2ludC5idWlsZCgpOwogCiAgICAgICAgIGlmIChjdXJyZW50UG9pbnQgJiYgcHJl
dmlvdXNQb2ludCAmJiB0aGlzLl9jaGFydC5jdXJyZW50U2VsZWN0aW9uKCkpIHsKICAgICAgICAg
ICAgIHRoaXMuX3BvaW50c1JhbmdlRm9yQW5hbHlzaXMgPSB7CkBAIC0xNDUsNDAgKzE0MywxNyBA
QCBjbGFzcyBDaGFydFBhbmVTdGF0dXNWaWV3IGV4dGVuZHMgQ2hhcnRTCiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBGSVhNRTogUmV3cml0ZSB0aGUgaW50ZXJmYWNlIHRvIG9idGFpbiB0aGUgbGlz
dCBvZiByZXZpc2lvbiBjaGFuZ2VzLgotICAgICAgICB2YXIgcHJldmlvdXNNZWFzdXJlbWVudCA9
IHByZXZpb3VzUG9pbnQgPyBwcmV2aW91c1BvaW50Lm1lYXN1cmVtZW50KCkgOiBudWxsOworICAg
ICAgICB2YXIgY3VycmVudFJvb3RTZXQgPSBjdXJyZW50UG9pbnQucm9vdFNldCgpOworICAgICAg
ICB2YXIgcHJldmlvdXNSb290U2V0ID0gcHJldmlvdXNQb2ludCA/IHByZXZpb3VzUG9pbnQucm9v
dFNldCgpIDogbnVsbDsKIAotICAgICAgICB2YXIgcmV2aXNpb25zID0gY3VycmVudE1lYXN1cmVt
ZW50LmZvcm1hdHRlZFJldmlzaW9ucyhwcmV2aW91c01lYXN1cmVtZW50KTsKKyAgICAgICAgdmFy
IHJlcG9zaXRvcmllc0luQ3VycmVudFJvb3RTZXQgPSBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVm
ZXJyaW5nT25lc1dpdGhVUkwoY3VycmVudFJvb3RTZXQucmVwb3NpdG9yaWVzKCkpOwogICAgICAg
ICB2YXIgcmV2aXNpb25MaXN0ID0gW107Ci0gICAgICAgIGZvciAodmFyIHJlcG9zaXRvcnlJZCBp
biByZXZpc2lvbnMpIHsKLSAgICAgICAgICAgIHZhciByZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5m
aW5kQnlJZChyZXBvc2l0b3J5SWQpOwotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0gcmV2aXNp
b25zW3JlcG9zaXRvcnlJZF07Ci0gICAgICAgICAgICB2YXIgdXJsID0gcmV2aXNpb24ucHJldmlv
dXNSZXZpc2lvbiA/IHJlcG9zaXRvcnkudXJsRm9yUmV2aXNpb25SYW5nZShyZXZpc2lvbi5wcmV2
aW91c1JldmlzaW9uLCByZXZpc2lvbi5jdXJyZW50UmV2aXNpb24pIDogJyc7Ci0gICAgICAgICAg
ICBpZiAoIXVybCkKLSAgICAgICAgICAgICAgICB1cmwgPSByZXBvc2l0b3J5LnVybEZvclJldmlz
aW9uKHJldmlzaW9uLmN1cnJlbnRSZXZpc2lvbik7Ci0KLSAgICAgICAgICAgIHJldmlzaW9uTGlz
dC5wdXNoKHsKLSAgICAgICAgICAgICAgICBmcm9tOiByZXZpc2lvbi5wcmV2aW91c1JldmlzaW9u
LAotICAgICAgICAgICAgICAgIHRvOiByZXZpc2lvbi5jdXJyZW50UmV2aXNpb24sCi0gICAgICAg
ICAgICAgICAgcmVwb3NpdG9yeTogcmVwb3NpdG9yeSwKLSAgICAgICAgICAgICAgICBuYW1lOiBy
ZXBvc2l0b3J5Lm5hbWUoKSwKLSAgICAgICAgICAgICAgICBsYWJlbDogcmV2aXNpb24ubGFiZWws
Ci0gICAgICAgICAgICAgICAgdXJsOiB1cmwsCi0gICAgICAgICAgICB9KTsKKyAgICAgICAgZm9y
ICh2YXIgcmVwb3NpdG9yeSBvZiByZXBvc2l0b3JpZXNJbkN1cnJlbnRSb290U2V0KSB7CisgICAg
ICAgICAgICB2YXIgY3VycmVudENvbW1pdCA9IGN1cnJlbnRSb290U2V0LmNvbW1pdEZvclJlcG9z
aXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgICAgICB2YXIgcHJldmlvdXNDb21taXQgPSBwcmV2
aW91c1Jvb3RTZXQgPyBwcmV2aW91c1Jvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KSA6IG51bGw7CisgICAgICAgICAgICByZXZpc2lvbkxpc3QucHVzaChjdXJyZW50Q29tbWl0
LmRpZmYocHJldmlvdXNDb21taXQpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFNvcnQgYnkg
cmVwb3NpdG9yeSBuYW1lcyBwcmVmZXJyaW5nIG9uZXMgd2l0aCBVUkwuCi0gICAgICAgIHJldmlz
aW9uTGlzdCA9IHJldmlzaW9uTGlzdC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7Ci0gICAgICAgICAg
ICBpZiAoISFhLnVybCA9PSAhIWIudXJsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGEubmFtZSA+
IGIubmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoYS5uYW1lIDwgYi5uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGIudXJs
KSAvLyBhID4gYgotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJu
IC0xOwotICAgICAgICB9KTsKLQogICAgICAgICB0aGlzLl9yZXZpc2lvbkxpc3QgPSByZXZpc2lv
bkxpc3Q7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="298930"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274491</attachid>
            <date>2016-03-18 19:22:22 -0700</date>
            <delta_ts>2016-03-18 19:42:44 -0700</delta_ts>
            <desc>Add tests for real</desc>
            <filename>bug-155673-20160318192221.patch</filename>
            <type>text/plain</type>
            <size>26252</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NDYyKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDE2LTAzLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciBtZWFzdXJlbWVudC1zZXQuanMgYW5kIG1lYXN1
cmVtZW50LWFkYXB0ZXIuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0cyB3aGljaCB3ZXJlIHN1cHBvc2VkIHRvIGJlIGFkZGVkIGluIHIx
OTg0NjIuCisKKyAgICAgICAgKiB1bml0LXRlc3RzL21lYXN1cmVtZW50LWFkYXB0b3ItdGVzdHMu
anM6IEFkZGVkLgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpz
OiBBZGRlZC4KKyAgICAgICAgKGFzc2VydC5ub3RSZWFjaGVkKTogQWRkZWQuCisgICAgICAgIChn
bG9iYWwuUmVtb3RlQVBJLmdldEpTT04pOiBBZGRlZC4KKyAgICAgICAgKGdsb2JhbC5SZW1vdGVB
UEkuZ2V0SlNPTldpdGhTdGF0dXMpOiBBZGRlZC4gQSBtb2NrLgorCiAyMDE2LTAzLTE4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCB1bml0IHRlc3RzIGZv
ciBtZWFzdXJlbWVudC1zZXQuanMgYW5kIG1lYXN1cmVtZW50LWFkYXB0ZXIuanMKSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LWFkYXB0b3ItdGVz
dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
bWVhc3VyZW1lbnQtYWRhcHRvci10ZXN0cy5qcwkocmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LWFkYXB0b3ItdGVzdHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGFzc2Vy
dCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworCitnbG9iYWwuRGF0YU1vZGVsT2JqZWN0ID0gcmVxdWly
ZSgnLi4vcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzJykuRGF0YU1vZGVsT2JqZWN0Owor
Z2xvYmFsLkxhYmVsZWRPYmplY3QgPSByZXF1aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL2RhdGEt
bW9kZWwuanMnKS5MYWJlbGVkT2JqZWN0OworZ2xvYmFsLkNvbW1pdExvZyA9IHJlcXVpcmUoJy4u
L3B1YmxpYy92My9tb2RlbHMvY29tbWl0LWxvZy5qcycpLkNvbW1pdExvZzsKK2dsb2JhbC5CdWls
ZCA9IHJlcXVpcmUoJy4uL3B1YmxpYy92My9tb2RlbHMvYnVpbGRlci5qcycpLkJ1aWxkOworZ2xv
YmFsLkJ1aWxkZXIgPSByZXF1aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkZXIuanMnKS5C
dWlsZGVyOworZ2xvYmFsLk1lYXN1cmVtZW50Um9vdFNldCA9IHJlcXVpcmUoJy4uL3B1YmxpYy92
My9tb2RlbHMvcm9vdC1zZXQuanMnKS5NZWFzdXJlbWVudFJvb3RTZXQ7CitnbG9iYWwuTWVhc3Vy
ZW1lbnRBZGFwdG9yID0gcmVxdWlyZSgnLi4vcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1h
ZGFwdG9yLmpzJykuTWVhc3VyZW1lbnRBZGFwdG9yOworZ2xvYmFsLlJlcG9zaXRvcnkgPSByZXF1
aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMnKS5SZXBvc2l0b3J5OworZ2xv
YmFsLlJvb3RTZXQgPSByZXF1aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzJyku
Um9vdFNldDsKK2dsb2JhbC5TdGF0aXN0aWNzID0gcmVxdWlyZSgnLi4vcHVibGljL3NoYXJlZC9z
dGF0aXN0aWNzLmpzJyk7CisKK3ZhciBzYW1wbGVDbHVzdGVyID0geworICAgICJjbHVzdGVyU3Rh
cnQiOiA5NDY2ODQ4MDAwMDAsCisgICAgImNsdXN0ZXJTaXplIjogNTE4NDAwMDAwMCwKKyAgICAi
Y29uZmlndXJhdGlvbnMiOiB7CisgICAgICAgICJjdXJyZW50IjogWworICAgICAgICAgICAgWzI4
OTU0OTgzLCAyMTcuOTQ2MDcxNDI4NTcsIDIwLCA0MzU4LjkyMTQyODU3MTQsIDk1MDMwMy4wMjM2
NTQzNCwgZmFsc2UsIFtbOSwgIjEwLjExIDE1RDIxIiwgMF0sIFsxMSwgIjE5MjQ4MyIsIDE0NDc3
MDcwNTU1NzZdLCBbOTk5LCAic29tZSB1bmtub3duIHJldmlzaW9uIiwgMF1dLCAxNDQ3NzA3MDU1
NTc2LCAxODQ2MjksIDE0NDc3NjIyNjYxNTMsICIxNzgiLCAxNzZdLAorICAgICAgICAgICAgWzI4
OTUyMjU3LCAyMjAuMTE0NTUzNTcxNDMsIDIwLCA0NDAyLjI5MTA3MTQyODYsIDk2OTA5OS42NzUw
OTg4NSwgZmFsc2UsIFtbOSwgIjEwLjExIDE1RDIxIiwgMF0sIFsxMSwgIjE5MjQ4NiIsIDE0NDc3
MTM1MDA0NjBdXSwgMTQ0NzcxMzUwMDQ2MCwgMTg0NjE0LCAxNDQ3NzYwMjU1NjgzLCAiMTc3Iiwg
MTc2XQorICAgICAgICBdCisgICAgfSwKKyAgICAiZm9ybWF0TWFwIjogWyJpZCIsICJtZWFuIiwg
Iml0ZXJhdGlvbkNvdW50IiwgInN1bSIsICJzcXVhcmVTdW0iLCAibWFya2VkT3V0bGllciIsICJy
ZXZpc2lvbnMiLAorICAgICAgICAiY29tbWl0VGltZSIsICJidWlsZCIsICJidWlsZFRpbWUiLCAi
YnVpbGROdW1iZXIiLCAiYnVpbGRlciJdLAorICAgICJzdGFydFRpbWUiOiAxNDQ5NTMyODAwMDAw
LAorICAgICJlbmRUaW1lIjogMTQ1NDcxNjgwMDAwMCwKKyAgICAibGFzdE1vZGlmaWVkIjogMTQ1
MjA2NzE5MDAwOCwKKyAgICAiY2x1c3RlckNvdW50IjogMiwKKyAgICAiZWxhcHNlZFRpbWUiOiAy
MTAuNjg0MDYxMDUwNDIsCisgICAgInN0YXR1cyI6ICJPSyIKK307Cit2YXIgc2FtcGxlRGF0YSA9
IHNhbXBsZUNsdXN0ZXIuY29uZmlndXJhdGlvbnMuY3VycmVudFswXTsKKwordmFyIG9zeCA9IG5l
dyBSZXBvc2l0b3J5KDksIHtuYW1lOiAnT1MgWCd9KTsKK3ZhciB3ZWJraXQgPSBuZXcgUmVwb3Np
dG9yeSgxMSwge25hbWU6ICdXZWJLaXQnLCB1cmw6ICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8kMSd9KTsKK3ZhciBidWlsZGVyID0gbmV3IEJ1aWxkZXIoMTc2LCB7bmFtZTogJ1dl
YktpdCBQZXJmIEJ1aWxkZXInLCBidWlsZFVybDogJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1
aWxkZXJzLyRidWlsZGVyTmFtZS8kYnVpbGROdW1iZXInfSk7CisKK2Rlc2NyaWJlKCdNZWFzdXJl
bWVudEFkYXB0b3InLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoJ2FwcGx5VG8nLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgYWRhcHQgaWQnLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB2YXIgYWRvcHRvciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0b3Ioc2FtcGxlQ2x1
c3Rlci5mb3JtYXRNYXApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFkb3B0b3IuYXBwbHlU
byhzYW1wbGVEYXRhKS5pZCwgMjg5NTQ5ODMpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIGFkYXB0IG1lYW4sIHNxdWFyZU1lYW4sIGFuZCBpdGVyYXRpb24gY291bnQnLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgYWRvcHRvciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0
b3Ioc2FtcGxlQ2x1c3Rlci5mb3JtYXRNYXApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFk
b3B0b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS52YWx1ZSwgMjE3Ljk0NjA3MTQyODU3KTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChhZG9wdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuc3VtLCA0MzU4
LjkyMTQyODU3MTQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFkb3B0b3IuYXBwbHlUbyhz
YW1wbGVEYXRhKS5zcXVhcmVTdW0sIDk1MDMwMy4wMjM2NTQzNCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYWRvcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLml0ZXJhdGlvbkNvdW50LCAyMCk7
CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgYWRhcHQgY29tbWl0VGltZSBhcyB0
aGUgY2Fub25pY2FsIHRpbWUnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgYWRvcHRv
ciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0b3Ioc2FtcGxlQ2x1c3Rlci5mb3JtYXRNYXApOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGFkb3B0b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS50aW1lLCAx
NDQ3NzA3MDU1NTc2KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBhZGFwdCBi
dWlsZCBpbmZvcm1hdGlvbiBhcyBhIEJ1aWxkIG9iamVjdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHZhciBhZG9wdG9yID0gbmV3IE1lYXN1cmVtZW50QWRhcHRvcihzYW1wbGVDbHVzdGVy
LmZvcm1hdE1hcCk7CisgICAgICAgICAgICBhc3NlcnQub2soYWRvcHRvci5hcHBseVRvKHNhbXBs
ZURhdGEpLmJ1aWxkKCkgaW5zdGFuY2VvZiBCdWlsZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYWRvcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLmJ1aWxkKCkuaWQoKSwgMTg0NjI5KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChhZG9wdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuYnVpbGQo
KS5idWlsZE51bWJlcigpLCAnMTc4Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYWRvcHRv
ci5hcHBseVRvKHNhbXBsZURhdGEpLmJ1aWxkKCkuYnVpbGRlcigpLCBidWlsZGVyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChhZG9wdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuYnVpbGQoKS5s
YWJlbCgpLCAnQnVpbGQgMTc4IG9uIFdlYktpdCBQZXJmIEJ1aWxkZXInKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChhZG9wdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuYnVpbGQoKS51cmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL1dlYktpdCBQZXJmIEJ1aWxkZXIvMTc4
Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgYWRhcHQgcmV2aXNpb24gaW5m
b3JtYXRpb24gYXMgYSBSb290U2V0IG9iamVjdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHZhciBhZG9wdG9yID0gbmV3IE1lYXN1cmVtZW50QWRhcHRvcihzYW1wbGVDbHVzdGVyLmZvcm1h
dE1hcCk7CisgICAgICAgICAgICB2YXIgcm9vdFNldCA9IGFkb3B0b3IuYXBwbHlUbyhzYW1wbGVE
YXRhKS5yb290U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQub2socm9vdFNldCBpbnN0YW5jZW9m
IFJvb3RTZXQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQubGF0ZXN0Q29tbWl0
VGltZSgpLCAxNDQ3NzA3MDU1NTc2KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3Vs
ZCBhZGFwdCBPUyBYIHZlcnNpb24gYXMgYSBDb21taXRMb2cgb2JqZWN0JywgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdmFyIGFkb3B0b3IgPSBuZXcgTWVhc3VyZW1lbnRBZGFwdG9yKHNhbXBs
ZUNsdXN0ZXIuZm9ybWF0TWFwKTsKKyAgICAgICAgICAgIHZhciByb290U2V0ID0gYWRvcHRvci5h
cHBseVRvKHNhbXBsZURhdGEpLnJvb3RTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhyb290
U2V0IGluc3RhbmNlb2YgUm9vdFNldCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNl
dC5sYXRlc3RDb21taXRUaW1lKCksIDE0NDc3MDcwNTU1NzYpOworCisgICAgICAgICAgICBhc3Nl
cnQub2socm9vdFNldC5yZXBvc2l0b3JpZXMoKS5pbmRleE9mKG9zeCkgPj0gMCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocm9vdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3N4KSwgJzEw
LjExIDE1RDIxJyk7CisKKyAgICAgICAgICAgIHZhciBjb21taXQgPSByb290U2V0LmNvbW1pdEZv
clJlcG9zaXRvcnkob3N4KTsKKyAgICAgICAgICAgIGFzc2VydC5vayhjb21taXQgaW5zdGFuY2Vv
ZiBDb21taXRMb2cpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXBvc2l0b3J5
KCksIG9zeCk7CisgICAgICAgICAgICBhc3NlcnQub2soY29tbWl0LnRpbWUoKSBpbnN0YW5jZW9m
IERhdGUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbigpLCAnMTAu
MTEgMTVEMjEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXQubGFiZWwoKSwgJzEw
LjExIDE1RDIxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0LnRpdGxlKCksICdP
UyBYIGF0IDEwLjExIDE1RDIxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0LnVy
bCgpLCAnJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgYWRhcHQgV2ViS2l0
IHJldmlzaW9uIGFzIGEgQ29tbWl0TG9nIG9iamVjdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHZhciBhZG9wdG9yID0gbmV3IE1lYXN1cmVtZW50QWRhcHRvcihzYW1wbGVDbHVzdGVyLmZv
cm1hdE1hcCk7CisgICAgICAgICAgICB2YXIgcm9vdFNldCA9IGFkb3B0b3IuYXBwbHlUbyhzYW1w
bGVEYXRhKS5yb290U2V0KCk7CisKKyAgICAgICAgICAgIGFzc2VydC5vayhyb290U2V0LnJlcG9z
aXRvcmllcygpLmluZGV4T2Yod2Via2l0KSA+PSAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyb290U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNDgzJyk7CisKKyAg
ICAgICAgICAgIHZhciBjb21taXQgPSByb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0
KTsKKyAgICAgICAgICAgIGFzc2VydC5vayhjb21taXQgaW5zdGFuY2VvZiBDb21taXRMb2cpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXBvc2l0b3J5KCksIHdlYmtpdCk7Cisg
ICAgICAgICAgICBhc3NlcnQub2soY29tbWl0LnRpbWUoKSBpbnN0YW5jZW9mIERhdGUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKCtjb21taXQudGltZSgpLCAxNDQ3NzA3MDU1NTc2KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXQucmV2aXNpb24oKSwgJzE5MjQ4MycpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5sYWJlbCgpLCAncjE5MjQ4MycpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC50aXRsZSgpLCAnV2ViS2l0IGF0IHIxOTI0ODMnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXQudXJsKCksICdodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xOTI0ODMnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3No
b3VsZCBub3QgY3JlYXRlIHNlcGFyYXRlIENvbW1pdExvZyBvYmplY3QgZm9yIHRoZSBzYW1lIHJl
dmlzaW9uJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGFkb3B0b3IgPSBuZXcgTWVh
c3VyZW1lbnRBZGFwdG9yKHNhbXBsZUNsdXN0ZXIuZm9ybWF0TWFwKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChhZG9wdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkucm9vdFNldCgpLmNvbW1pdEZv
clJlcG9zaXRvcnkod2Via2l0KSwKKyAgICAgICAgICAgICAgICBhZG9wdG9yLmFwcGx5VG8oc2Ft
cGxlRGF0YSkucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KSk7CisKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChhZG9wdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkucm9vdFNldCgp
LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSwKKyAgICAgICAgICAgICAgICBhZG9wdG9yLmFwcGx5
VG8oc2FtcGxlRGF0YSkucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CisgICAg
ICAgIH0pOworCisgICAgfSk7Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVz
dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
bWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpzCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0LXRlc3RzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDQ1IEBACisndXNlIHN0cmljdCc7CisKK3ZhciBhc3NlcnQgPSByZXF1
aXJlKCdhc3NlcnQnKTsKKworZ2xvYmFsLkRhdGFNb2RlbE9iamVjdCA9IHJlcXVpcmUoJy4uL3B1
YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcycpLkRhdGFNb2RlbE9iamVjdDsKK2dsb2JhbC5M
YWJlbGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpz
JykuTGFiZWxlZE9iamVjdDsKK2dsb2JhbC5Db21taXRMb2cgPSByZXF1aXJlKCcuLi9wdWJsaWMv
djMvbW9kZWxzL2NvbW1pdC1sb2cuanMnKS5Db21taXRMb2c7CitnbG9iYWwuQnVpbGQgPSByZXF1
aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkZXIuanMnKS5CdWlsZDsKK2dsb2JhbC5CdWls
ZGVyID0gcmVxdWlyZSgnLi4vcHVibGljL3YzL21vZGVscy9idWlsZGVyLmpzJykuQnVpbGRlcjsK
K2dsb2JhbC5NZWFzdXJlbWVudFJvb3RTZXQgPSByZXF1aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxz
L3Jvb3Qtc2V0LmpzJykuTWVhc3VyZW1lbnRSb290U2V0OworZ2xvYmFsLk1lYXN1cmVtZW50QWRh
cHRvciA9IHJlcXVpcmUoJy4uL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5q
cycpLk1lYXN1cmVtZW50QWRhcHRvcjsKK2dsb2JhbC5NZWFzdXJlbWVudENsdXN0ZXIgPSByZXF1
aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMnKS5NZWFzdXJl
bWVudENsdXN0ZXI7CitnbG9iYWwuTWVhc3VyZW1lbnRTZXQgPSByZXF1aXJlKCcuLi9wdWJsaWMv
djMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcycpLk1lYXN1cmVtZW50U2V0OworZ2xvYmFsLlJl
cG9zaXRvcnkgPSByZXF1aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMnKS5S
ZXBvc2l0b3J5OworZ2xvYmFsLlJvb3RTZXQgPSByZXF1aXJlKCcuLi9wdWJsaWMvdjMvbW9kZWxz
L3Jvb3Qtc2V0LmpzJykuUm9vdFNldDsKK2dsb2JhbC5TdGF0aXN0aWNzID0gcmVxdWlyZSgnLi4v
cHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzJyk7CisKK2lmICghYXNzZXJ0Lm5vdFJlYWNoZWQp
CisgICAgYXNzZXJ0Lm5vdFJlYWNoZWQgPSBmdW5jdGlvbiAoKSB7IGFzc2VydChmYWxzZSwgJ1Ro
aXMgY29kZSBwYXRoIHNob3VsZCBub3QgYmUgcmVhY2hlZCcpOyB9CisKK3ZhciByZXF1ZXN0cyA9
IFtdOworCitnbG9iYWwuUmVtb3RlQVBJID0geworICAgIGdldEpTT046IGZ1bmN0aW9uICgpCisg
ICAgeworICAgICAgICBhc3NlcnQubm90UmVhY2hlZCgpOworICAgIH0sCisgICAgZ2V0SlNPTldp
dGhTdGF0dXM6IGZ1bmN0aW9uICh1cmwpCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdCA9IHsK
KyAgICAgICAgICAgIHVybDogdXJsLAorICAgICAgICAgICAgcHJvbWlzZTogbnVsbCwKKyAgICAg
ICAgICAgIHJlc29sdmU6IG51bGwsCisgICAgICAgICAgICByZWplY3Q6IG51bGwsCisgICAgICAg
IH07CisKKyAgICAgICAgcmVxdWVzdC5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgcmVxdWVzdC5yZXNvbHZlID0gcmVzb2x2ZTsK
KyAgICAgICAgICAgIHJlcXVlc3QucmVqZWN0ID0gcmVqZWN0OworICAgICAgICB9KTsKKworICAg
ICAgICByZXF1ZXN0cy5wdXNoKHJlcXVlc3QpOworICAgICAgICByZXR1cm4gcmVxdWVzdC5wcm9t
aXNlOworICAgIH0sCit9OworCitkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCBmdW5jdGlvbiAo
KSB7CisgICAgZGVzY3JpYmUoJ2ZpbmRTZXQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdz
aG91bGQgY3JlYXRlIGEgbmV3IE1lYXN1cmVtZW50U2V0IGZvciBhIG5ldyBwYWlyIG9mIHBsYXRm
b3JtIGFuZCBtYXRyaWMnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQubm90RXF1
YWwoTWVhc3VyZW1lbnRTZXQuZmluZFNldCgxLCAxLCAzMDAwKSwgTWVhc3VyZW1lbnRTZXQuZmlu
ZFNldCgxLCAyLCAzMDAwKSk7CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwoTWVhc3VyZW1l
bnRTZXQuZmluZFNldCgxLCAxLCAzMDAwKSwgTWVhc3VyZW1lbnRTZXQuZmluZFNldCgyLCAxLCAz
MDAwKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90IGNyZWF0ZSBhIG5l
dyBNZWFzdXJlbWVudFNldCB3aGVuIHRoZSBzYW1lIHBhaXIgb2YgcGxhdGZvcm0gYW5kIG1hdHJp
YyBhcmUgcmVxdWVzdGVkJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSksIE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwg
MSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdmZXRjaEJldHdlZW4n
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgcmVxdWVzdHMgPSBbXTsKKyAgICAgICAgICAgIE1lYXN1cmVtZW50U2V0Ll9zZXQgPSBu
dWxsOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGFsd2F5cyByZXF1ZXN0IHRo
ZSBjYWNoZWQgcHJpbWFyeSBjbHVzdGVyIGZpcnN0JywgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwgMzAwMCk7CisgICAgICAg
ICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDEwMDAsIDIwMDAsIGZ1bmN0aW9uICgpIHsgYXNzZXJ0Lm5v
dFJlYWNoZWQoKTsgfSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3Ro
LCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcuLi9kYXRh
L21lYXN1cmVtZW50LXNldC0xLTEuanNvbicpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIG5vdCByZXF1ZXN0IHRoZSBjYWNoZWQgcHJpbWFyeSBjbHVzdGVyIHR3aWNlJywgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQo
MSwgMSwgMzAwMCk7CisgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDEwMDAsIDIwMDAsIGZ1
bmN0aW9uICgpIHsgYXNzZXJ0Lm5vdFJlYWNoZWQoKTsgfSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0c1swXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEuanNvbicpOworICAgICAg
ICAgICAgc2V0LmZldGNoQmV0d2VlbigyMDAwLCAzMDAwLCBmdW5jdGlvbiAoKSB7IGFzc2VydC5u
b3RSZWFjaGVkKCk7IH0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgaW52b2tlIHRoZSBjYWxs
YmFjayB3aGVuIHRoZSB1cC10by1kYXRlIGNhY2hlZCBwcmltYXJ5IGNsdXN0ZXIgaXMgZmV0Y2hl
ZCBhbmQgaXQgbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIHJhbmdlJywgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICAgICAgICAgIHZhciBzZXQgPSBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDMwMDAp
OworICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBzZXQuZmV0Y2hC
ZXR3ZWVuKDIwMDAsIDMwMDAsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjYWxsQ291
bnQrKzsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAn
Li4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLmpzb24nKTsKKworICAgICAgICAgICAgcmVxdWVz
dHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgImNsdXN0ZXJTdGFydCI6IDEwMDAsCisg
ICAgICAgICAgICAgICAgImNsdXN0ZXJTaXplIjogMTAwMCwKKyAgICAgICAgICAgICAgICAiZm9y
bWF0TWFwIjogW10sCisgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb25zIjoge2N1cnJlbnQ6
IFtdfSwKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIjogMjAwMCwKKyAgICAgICAgICAgICAg
ICAiZW5kVGltZSI6IDMwMDAsCisgICAgICAgICAgICAgICAgImxhc3RNb2RpZmllZCI6IDMwMDAs
CisgICAgICAgICAgICAgICAgImNsdXN0ZXJDb3VudCI6IDIsCisgICAgICAgICAgICAgICAgInN0
YXR1cyI6ICJPSyJ9KTsKKworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucHJvbWlzZS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAxKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3Ip
IHsKKyAgICAgICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgYW5kIGZldGNo
IGEgc2Vjb25kYXJ5IGNsdXN0ZXInCisgICAgICAgICAgICArICd3aGVuIHRoZSBjYWNoZWQgcHJp
bWFyeSBjbHVzdGVyIGlzIHVwLXRvLWRhdGUgYW5kIHdpdGhpbiBpbiB0aGUgcmVxdWVzdGVkIHJh
bmdlJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBzZXQgPSBNZWFzdXJlbWVu
dFNldC5maW5kU2V0KDEsIDEsIDMwMDApOworICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7
CisgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDEwMDAsIDMwMDAsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBjYWxsQ291bnQrKzsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLmpzb24n
KTsKKworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAg
ImNsdXN0ZXJTdGFydCI6IDEwMDAsCisgICAgICAgICAgICAgICAgImNsdXN0ZXJTaXplIjogMTAw
MCwKKyAgICAgICAgICAgICAgICAiZm9ybWF0TWFwIjogW10sCisgICAgICAgICAgICAgICAgImNv
bmZpZ3VyYXRpb25zIjoge2N1cnJlbnQ6IFtdfSwKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1l
IjogMjAwMCwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSI6IDMwMDAsCisgICAgICAgICAgICAg
ICAgImxhc3RNb2RpZmllZCI6IDMwMDAsCisgICAgICAgICAgICAgICAgImNsdXN0ZXJDb3VudCI6
IDIsCisgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KTsKKworICAgICAgICAgICAgUHJv
bWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNhbGxDb3VudCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFd
LnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0yMDAwLmpzb24nKTsKKyAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsK
KyAgICAgICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJlcXVlc3QgYWRkaXRpb25hbCBzZWNvbmRhcnkgY2x1
c3RlcnMgYXMgcmVxdWVzdGVkJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBz
ZXQgPSBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDUwMDApOworICAgICAgICAgICAgc2V0
LmZldGNoQmV0d2VlbigyMDAwLCAzMDAwLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0Lm5vdFJlYWNoZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMF0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLmpzb24nKTsKKworICAg
ICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgImNsdXN0ZXJT
dGFydCI6IDEwMDAsCisgICAgICAgICAgICAgICAgImNsdXN0ZXJTaXplIjogMTAwMCwKKyAgICAg
ICAgICAgICAgICAiZm9ybWF0TWFwIjogW10sCisgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRp
b25zIjoge2N1cnJlbnQ6IFtdfSwKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIjogNDAwMCwK
KyAgICAgICAgICAgICAgICAiZW5kVGltZSI6IDUwMDAsCisgICAgICAgICAgICAgICAgImxhc3RN
b2RpZmllZCI6IDUwMDAsCisgICAgICAgICAgICAgICAgImNsdXN0ZXJDb3VudCI6IDMsCisgICAg
ICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KTsKKworICAgICAgICAgICAgUHJvbWlzZS5yZXNv
bHZlKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzFdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0zMDAwLmpzb24nKTsKKworICAg
ICAgICAgICAgICAgIHZhciBjYWxsQ291bnQgPSAwOworICAgICAgICAgICAgICAgIHNldC5mZXRj
aEJldHdlZW4oMCwgNzAwMCwgZnVuY3Rpb24gKCkgeyBjYWxsQ291bnQrKzsgfSk7CisKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAxKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTIwMDAu
anNvbicpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS51cmwsICcu
Li9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtNDAwMC5qc29uJyk7CisKKyAgICAgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIHJlcXVlc3Qgc2Vjb25kYXJ5IGNsdXN0ZXJzIHdoaWNoIGZvcm1z
IGEgc3VwZXJzZXQgb2YgdGhlIHJlcXVlc3RlZCByYW5nZScsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgICAgICB2YXIgc2V0ID0gTWVhc3VyZW1lbnRTZXQuZmluZFNldCgxLCAxLCA1MDAwKTsK
KyAgICAgICAgICAgIHNldC5mZXRjaEJldHdlZW4oMjcwNywgNDIwNywgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIGFzc2VydC5ub3RSZWFjaGVkKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEt
MS5qc29uJyk7CisKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoeworICAgICAgICAg
ICAgICAgICJjbHVzdGVyU3RhcnQiOiAxMDAwLAorICAgICAgICAgICAgICAgICJjbHVzdGVyU2l6
ZSI6IDEwMDAsCisgICAgICAgICAgICAgICAgImZvcm1hdE1hcCI6IFtdLAorICAgICAgICAgICAg
ICAgICJjb25maWd1cmF0aW9ucyI6IHtjdXJyZW50OiBbXX0sCisgICAgICAgICAgICAgICAgInN0
YXJ0VGltZSI6IDQwMDAsCisgICAgICAgICAgICAgICAgImVuZFRpbWUiOiA1MDAwLAorICAgICAg
ICAgICAgICAgICJsYXN0TW9kaWZpZWQiOiA1MDAwLAorICAgICAgICAgICAgICAgICJjbHVzdGVy
Q291bnQiOiAzLAorICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSk7CisKKyAgICAgICAg
ICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMzAw
MC5qc29uJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLnVybCwg
Jy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS00MDAwLmpzb24nKTsKKyAgICAgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIG5vdCByZXF1ZXN0IHNlY29uZGFyeSBjbHVzdGVycyB0aGF0IGFy
ZSBub3QgcmVxdWVzdGVkJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBzZXQg
PSBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEsIDUwMDApOworICAgICAgICAgICAgc2V0LmZl
dGNoQmV0d2VlbigzMjAwLCAzNzAwLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Lm5vdFJlYWNoZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHNbMF0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLmpzb24nKTsKKworICAgICAg
ICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgImNsdXN0ZXJTdGFy
dCI6IDEwMDAsCisgICAgICAgICAgICAgICAgImNsdXN0ZXJTaXplIjogMTAwMCwKKyAgICAgICAg
ICAgICAgICAiZm9ybWF0TWFwIjogW10sCisgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb25z
Ijoge2N1cnJlbnQ6IFtdfSwKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIjogNDAwMCwKKyAg
ICAgICAgICAgICAgICAiZW5kVGltZSI6IDUwMDAsCisgICAgICAgICAgICAgICAgImxhc3RNb2Rp
ZmllZCI6IDUwMDAsCisgICAgICAgICAgICAgICAgImNsdXN0ZXJDb3VudCI6IDMsCisgICAgICAg
ICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KTsKKworICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZl
KCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFd
LnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS00MDAwLmpzb24nKTsKKworICAgICAg
ICAgICAgICAgIHZhciBjYWxsQ291bnQgPSAwOworICAgICAgICAgICAgICAgIHNldC5mZXRjaEJl
dHdlZW4oMTIwNywgMTI5MywgZnVuY3Rpb24gKCkgeyBjYWxsQ291bnQrKzsgfSk7CisKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAwKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLTIwMDAu
anNvbicpOworCisgICAgICAgICAgICAgICAgc2V0LmZldGNoQmV0d2VlbigxOTY0LCAzNDAxLCBm
dW5jdGlvbiAoKSB7IGNhbGxDb3VudCsrOyB9KTsKKworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjYWxsQ291bnQsIDApOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDQpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS51
cmwsICcuLi9kYXRhL21lYXN1cmVtZW50LXNldC0xLTEtMzAwMC5qc29uJyk7CisKKyAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsK
KyAgICAgICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgd2hlbiB0aGUgZmV0
Y2hpbmcgb2YgdGhlIHByaW1yYXkgY2x1c3RlciBmYWlscycsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgICAgICB2YXIgc2V0ID0gTWVhc3VyZW1lbnRTZXQuZmluZFNldCgxLCAxLCAzMDAwKTsK
KyAgICAgICAgICAgIHZhciBjYWxsQ291bnQgPSAwOworICAgICAgICAgICAgc2V0LmZldGNoQmV0
d2VlbigxMDAwLCAzMDAwLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2FsbENvdW50
Kys7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy4u
L2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS5qc29uJyk7CisKKyAgICAgICAgICAgIHJlcXVlc3Rz
WzBdLnJlamVjdCg1MDApOworCisgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAxKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3Ip
IHsKKyAgICAgICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJlcXVlc3QgdGhlIHVuY2FjaGVkIHByaW1hcnkg
Y2x1c3RlciB3aGVuIHRoZSBjYWNoZWQgY2x1c3RlciBpcyBvdXRkYXRlZCcsIGZ1bmN0aW9uIChk
b25lKSB7CisgICAgICAgICAgICB2YXIgc2V0ID0gTWVhc3VyZW1lbnRTZXQuZmluZFNldCgxLCAx
LCAzMDA1KTsKKyAgICAgICAgICAgIHZhciBjYWxsQ291bnQgPSAwOworICAgICAgICAgICAgc2V0
LmZldGNoQmV0d2VlbigxMDAwLCAyMDAwLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
Y2FsbENvdW50Kys7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXF1ZXN0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS5qc29uJyk7CisKKyAgICAgICAgICAg
IHJlcXVlc3RzWzBdLnJlc29sdmUoeworICAgICAgICAgICAgICAgICJjbHVzdGVyU3RhcnQiOiAx
MDAwLAorICAgICAgICAgICAgICAgICJjbHVzdGVyU2l6ZSI6IDEwMDAsCisgICAgICAgICAgICAg
ICAgImZvcm1hdE1hcCI6IFtdLAorICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9ucyI6IHtj
dXJyZW50OiBbXX0sCisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSI6IDIwMDAsCisgICAgICAg
ICAgICAgICAgImVuZFRpbWUiOiAzMDAwLAorICAgICAgICAgICAgICAgICJsYXN0TW9kaWZpZWQi
OiAzMDAwLAorICAgICAgICAgICAgICAgICJjbHVzdGVyQ291bnQiOiAyLAorICAgICAgICAgICAg
ICAgICJzdGF0dXMiOiAiT0sifSk7CisKKyAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQs
IDApOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcuLi9hcGkvbWVh
c3VyZW1lbnQtc2V0P3BsYXRmb3JtPTEmbWV0cmljPTEnKTsKKyAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgICAg
ICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIHJlcXVlc3QgdGhlIHVuY2FjaGVkIHByaW1hcnkgY2x1c3RlciB3aGVuIHRo
ZSBjYWNoZWQgY2x1c3RlciBpcyA0MDQnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAg
dmFyIHNldCA9IE1lYXN1cmVtZW50U2V0LmZpbmRTZXQoMSwgMSwgMzAwNSk7CisgICAgICAgICAg
ICB2YXIgY2FsbENvdW50ID0gMDsKKyAgICAgICAgICAgIHNldC5mZXRjaEJldHdlZW4oMTAwMCwg
MjAwMCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNhbGxDb3VudCsrOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcuLi9kYXRhL21lYXN1
cmVtZW50LXNldC0xLTEuanNvbicpOworCisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZWplY3Qo
NDA0KTsKKworICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMCk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy4uL2FwaS9tZWFzdXJlbWVudC1zZXQ/cGxh
dGZvcm09MSZtZXRyaWM9MScpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
IH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgICAgIGRvbmUoZXJyb3Ip
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgbm90
IHJlcXVlc3QgdGhlIHByaW1hcnkgY2x1c3RlciB0d2ljZSB3aGVuIG11bHRpcGxlIGNsaWVudHMg
cmVxdWVzdCBpdCBidXQgc2hvdWxkIGludm9rZSBhbGwgY2FsbGJhY2tzJywgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICAgICAgICAgIHZhciBzZXQgPSBNZWFzdXJlbWVudFNldC5maW5kU2V0KDEsIDEs
IDMwMDApOworICAgICAgICAgICAgdmFyIGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBzZXQu
ZmV0Y2hCZXR3ZWVuKDIwMDAsIDMwMDAsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBj
YWxsQ291bnQrKzsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0u
dXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVudC1zZXQtMS0xLmpzb24nKTsKKworICAgICAgICAgICAg
dmFyIGFsdGVybmF0aXZlQ2FsbENvdW50ID0gMDsKKyAgICAgICAgICAgIHNldC5mZXRjaEJldHdl
ZW4oMjAwMCwgMzAwMCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFsdGVybmF0aXZl
Q2FsbENvdW50Kys7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgcmVxdWVzdHNbMF0u
cmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgImNsdXN0ZXJTdGFydCI6IDEwMDAsCisgICAgICAg
ICAgICAgICAgImNsdXN0ZXJTaXplIjogMTAwMCwKKyAgICAgICAgICAgICAgICAiZm9ybWF0TWFw
IjogW10sCisgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb25zIjoge2N1cnJlbnQ6IFtdfSwK
KyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIjogMjAwMCwKKyAgICAgICAgICAgICAgICAiZW5k
VGltZSI6IDMwMDAsCisgICAgICAgICAgICAgICAgImxhc3RNb2RpZmllZCI6IDMwMDAsCisgICAg
ICAgICAgICAgICAgImNsdXN0ZXJDb3VudCI6IDIsCisgICAgICAgICAgICAgICAgInN0YXR1cyI6
ICJPSyJ9KTsKKworICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMSk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGFsdGVybmF0aXZlQ2FsbENvdW50LCAxKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBkb25lKGVycm9yKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIGludm9rZSBjYWxsYmFjayBmb3IgZWFjaCBzZWNvbmRhcnkgY2x1
c3RlcnMgdGhhdCBhcmUgZmV0Y2hlZCBvciByZWplY3RlZCcsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgICAgICB2YXIgc2V0ID0gTWVhc3VyZW1lbnRTZXQuZmluZFNldCgxLCAxLCA1MDAwKTsK
KyAgICAgICAgICAgIHZhciBjYWxsQ291bnRGb3I0MDAwID0gMDsKKyAgICAgICAgICAgIHNldC5m
ZXRjaEJldHdlZW4oMzIwMCwgMzcwMCwgZnVuY3Rpb24gKCkgeyBjYWxsQ291bnRGb3I0MDAwKys7
IH0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnLi4vZGF0YS9tZWFzdXJlbWVu
dC1zZXQtMS0xLmpzb24nKTsKKworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7Cisg
ICAgICAgICAgICAgICAgImNsdXN0ZXJTdGFydCI6IDEwMDAsCisgICAgICAgICAgICAgICAgImNs
dXN0ZXJTaXplIjogMTAwMCwKKyAgICAgICAgICAgICAgICAiZm9ybWF0TWFwIjogW10sCisgICAg
ICAgICAgICAgICAgImNvbmZpZ3VyYXRpb25zIjoge2N1cnJlbnQ6IFtdfSwKKyAgICAgICAgICAg
ICAgICAic3RhcnRUaW1lIjogNDAwMCwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSI6IDUwMDAs
CisgICAgICAgICAgICAgICAgImxhc3RNb2RpZmllZCI6IDUwMDAsCisgICAgICAgICAgICAgICAg
ImNsdXN0ZXJDb3VudCI6IDMsCisgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KTsKKwor
ICAgICAgICAgICAgdmFyIGNhbGxDb3VudEZvcjQwMDBUbzUwMDAgPSAwOworICAgICAgICAgICAg
dmFyIGNhbGxDb3VudEZvcjIwMDAgPSAwOworICAgICAgICAgICAgdmFyIGNhbGxDb3VudEZvcjIw
MDBUbzQwMDAgPSAwOworICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDAsIDAp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcuLi9kYXRhL21lYXN1
cmVtZW50LXNldC0xLTEtNDAwMC5qc29uJyk7CisKKyAgICAgICAgICAgICAgICBzZXQuZmV0Y2hC
ZXR3ZWVuKDM3MDgsIDQ4MDAsIGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Rm9yNDAwMFRvNTAwMCsr
OyB9KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9yNDAwMFRvNTAw
MCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7
CisKKyAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVuKDEyMDcsIDEyOTMsIGZ1bmN0aW9u
ICgpIHsgY2FsbENvdW50Rm9yMjAwMCsrOyB9KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY2FsbENvdW50Rm9yMjAwMCwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzJdLnVybCwgJy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS0yMDAwLmpzb24nKTsKKworICAg
ICAgICAgICAgICAgIHJlcXVlc3RzWzJdLnJlc29sdmUoeworICAgICAgICAgICAgICAgICAgICAi
Zm9ybWF0TWFwIjogW10sCisgICAgICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9ucyI6IHtj
dXJyZW50OiBbXX0sCisgICAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiOiAxMDAwLAorICAg
ICAgICAgICAgICAgICAgICAiZW5kVGltZSI6IDIwMDAsCisgICAgICAgICAgICAgICAgICAgICJs
YXN0TW9kaWZpZWQiOiA1MDAwLAorICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0p
OworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNhbGxDb3VudEZvcjQwMDAsIDApOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
YWxsQ291bnRGb3I0MDAwVG81MDAwLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y2FsbENvdW50Rm9yMjAwMCwgMSk7CisKKyAgICAgICAgICAgICAgICBzZXQuZmV0Y2hCZXR3ZWVu
KDE5NjQsIDM0MDEsIGZ1bmN0aW9uICgpIHsgY2FsbENvdW50Rm9yMjAwMFRvNDAwMCsrOyB9KTsK
KworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3IyMDAwVG80MDAwLCAx
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10udXJsLCAnLi4vZGF0YS9tZWFz
dXJlbWVudC1zZXQtMS0xLTMwMDAuanNvbicpOworCisgICAgICAgICAgICAgICAgcmVxdWVzdHNb
M10ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgICAgICJmb3JtYXRNYXAiOiBbXSwKKyAgICAg
ICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb25zIjoge2N1cnJlbnQ6IFtdfSwKKyAgICAgICAg
ICAgICAgICAgICAgInN0YXJ0VGltZSI6IDIwMDAsCisgICAgICAgICAgICAgICAgICAgICJlbmRU
aW1lIjogMzAwMCwKKyAgICAgICAgICAgICAgICAgICAgImxhc3RNb2RpZmllZCI6IDUwMDAsCisg
ICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSk7CisgICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9y
NDAwMCwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjQwMDBU
bzUwMDAsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3IyMDAw
LCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50Rm9yMjAwMFRvNDAw
MCwgMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNCk7
CisKKyAgICAgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHsKKyAgICAgICAgICAgICAg
ICAgICAgImZvcm1hdE1hcCI6IFtdLAorICAgICAgICAgICAgICAgICAgICAiY29uZmlndXJhdGlv
bnMiOiB7Y3VycmVudDogW119LAorICAgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIjogMzAw
MCwKKyAgICAgICAgICAgICAgICAgICAgImVuZFRpbWUiOiA0MDAwLAorICAgICAgICAgICAgICAg
ICAgICAibGFzdE1vZGlmaWVkIjogNTAwMCwKKyAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6
ICJPSyJ9KTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnRGb3I0MDAwLCAxKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY2FsbENvdW50Rm9yNDAwMFRvNTAwMCwgMik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNhbGxDb3VudEZvcjIwMDAsIDEpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjYWxsQ291bnRGb3IyMDAwVG80MDAwLCAzKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgICAg
IGRvbmUoZXJyb3IpOworICAgICAgICAgICAgfSkKKyAgICAgICAgfSk7CisKKyAgICB9KTsKKwor
fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="298932"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>