<?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>22890</bug_id>
          
          <creation_ts>2008-12-16 15:17:49 -0800</creation_ts>
          <short_desc>Rewrite transition layout tests to take advantage of pauseTransitionAtTimeOnElementWithId()</short_desc>
          <delta_ts>2008-12-18 16:40:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pierre-Olivier Latour">pol</reporter>
          <assigned_to name="Pierre-Olivier Latour">pol</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102711</commentid>
    <comment_count>0</comment_count>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-16 15:17:49 -0800</bug_when>
    <thetext>Rewrite animations layout tests to take advantage of pauseTransitionAtTimeOnElementWithId()

Currently, many the transition tests measure CSS property values after a given
elapsed time and they use setTimeout() a delay of about one second or more.
This slows down the tests quite a bit, has imprecision problems (since you
can&apos;t guarantee you&apos;re measuring at a precise time), and is not scalable
overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102734</commentid>
    <comment_count>1</comment_count>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-16 17:43:07 -0800</bug_when>
    <thetext>Note that all the transition-end-event-XXX tests do expect the transition end event to fire, so they can&apos;t be converted to the pause API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102834</commentid>
    <comment_count>2</comment_count>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-17 16:23:38 -0800</bug_when>
    <thetext>Unfortunately, a number of tests are chaining transitions or interrupt them, so you can&apos;t use the new API to speed them up:
LayoutTests/transitions/interrupted-all-transition.html
LayoutTests/transitions/interrupt-zero-duration.html
LayoutTests/transitions/interrupt-transform-transition.html
LayoutTests/transitions/change-values-during-transition.html
LayoutTests/transitions/retargetted-transition.html
LayoutTests/transitions/matched-transform-functions.html
LayoutTests/transitions/start-transform-transition.html
LayoutTests/transitions/shadow.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102835</commentid>
    <comment_count>3</comment_count>
      <attachid>26106</attachid>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-17 16:33:12 -0800</bug_when>
    <thetext>Created attachment 26106
Patch v1

The speed up is not as significant as for the rewrite of the animation tests, but transition tests now take around 19s instead of 24s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102879</commentid>
    <comment_count>4</comment_count>
      <attachid>26106</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-18 07:31:01 -0800</bug_when>
    <thetext>Comment on attachment 26106
Patch v1

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102940</commentid>
    <comment_count>5</comment_count>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-18 16:40:19 -0800</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Deleting       LayoutTests/transitions/end-event-helpers.js
Sending        LayoutTests/transitions/interrupt-transform-transition-expected.txt
Sending        LayoutTests/transitions/interrupt-transform-transition.html
Sending        LayoutTests/transitions/opacity-transition-zindex.html
Sending        LayoutTests/transitions/start-transform-transition.html
Sending        LayoutTests/transitions/transform-op-list-match-expected.txt
Sending        LayoutTests/transitions/transform-op-list-match.html
Sending        LayoutTests/transitions/transform-op-list-no-match-expected.txt
Sending        LayoutTests/transitions/transform-op-list-no-match.html
Sending        LayoutTests/transitions/transition-end-event-all-properties-expected.txt
Sending        LayoutTests/transitions/transition-end-event-all-properties.html
Sending        LayoutTests/transitions/transition-end-event-attributes-expected.txt
Sending        LayoutTests/transitions/transition-end-event-attributes.html
Sending        LayoutTests/transitions/transition-end-event-container-expected.txt
Sending        LayoutTests/transitions/transition-end-event-container.html
Adding         LayoutTests/transitions/transition-end-event-helpers.js
Sending        LayoutTests/transitions/transition-end-event-left-expected.txt
Sending        LayoutTests/transitions/transition-end-event-left.html
Sending        LayoutTests/transitions/transition-end-event-multiple-01-expected.txt
Sending        LayoutTests/transitions/transition-end-event-multiple-01.html
Sending        LayoutTests/transitions/transition-end-event-multiple-02-expected.txt
Sending        LayoutTests/transitions/transition-end-event-multiple-02.html
Sending        LayoutTests/transitions/transition-end-event-multiple-03-expected.txt
Sending        LayoutTests/transitions/transition-end-event-multiple-03.html
Sending        LayoutTests/transitions/transition-end-event-multiple-04-expected.txt
Sending        LayoutTests/transitions/transition-end-event-multiple-04.html
Sending        LayoutTests/transitions/transition-end-event-nested-expected.txt
Sending        LayoutTests/transitions/transition-end-event-nested.html
Sending        LayoutTests/transitions/transition-end-event-set-none-expected.txt
Sending        LayoutTests/transitions/transition-end-event-set-none.html
Sending        LayoutTests/transitions/transition-end-event-transform-expected.txt
Sending        LayoutTests/transitions/transition-end-event-transform.html
Sending        LayoutTests/transitions/transition-end-event-window-expected.txt
Sending        LayoutTests/transitions/transition-end-event-window.html
Adding         LayoutTests/transitions/transition-test-helpers.js
Adding         LayoutTests/transitions/transition-timing-function-expected.txt
Deleting       LayoutTests/transitions/transition-timing-function-software-expected.txt
Deleting       LayoutTests/transitions/transition-timing-function-software.html
Adding         LayoutTests/transitions/transition-timing-function.html
Sending        LayoutTests/transitions/zero-duration-in-list-expected.txt
Sending        LayoutTests/transitions/zero-duration-in-list.html
Transmitting file data .....................................
Committed revision 39384.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26106</attachid>
            <date>2008-12-17 16:33:12 -0800</date>
            <delta_ts>2008-12-18 07:31:01 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>79985</size>
            <attacher name="Pierre-Olivier Latour">pol</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAKKzIwMDgtMTItMTcgIFBpZXJyZS1PbGl2aWVyIExh
dG91ciAgPHBvbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmV3cm90ZSBzb21lIG9mIHRoZSB0cmFuc2l0aW9uIGxheW91dCB0ZXN0
cyB0aGF0IHdlcmUgdXNpbmcgc2V0VGltZW91dCgpIHRvIHVzZSB0aGUgdHJhbnNpdGlvbiBwYXVz
ZSBBUEkgaW4gRFJUIHdoZW4gYXZhaWxhYmxlLgorCisgICAgICAgIFJld3JvdGUgdGhlIHRyYW5z
aXRpb24gbGF5b3V0IHRlc3RzIHRoYXQgd2VyZSBzcGVjaWZpY2FsbHkgdGVzdGluZyB0aGUgdHJh
bnNpdGlvbiBlbmQgZXZlbnQgdG8gdXNlIGNvbW1vbiBKUyBjb2RlIGZyb20gdHJhbnNpdGlvbi1l
bmQtZXZlbnQtaGVscGVycy5qcy4KKworICAgICAgICBGaXhlZCBzb21lIHR5cG9zLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5MAorCisgICAg
ICAgICogdHJhbnNpdGlvbnMvZW5kLWV2ZW50LWhlbHBlcnMuanM6IFJlbW92ZWQuCisgICAgICAg
ICogdHJhbnNpdGlvbnMvaW50ZXJydXB0LXRyYW5zZm9ybS10cmFuc2l0aW9uLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9pbnRlcnJ1cHQtdHJhbnNmb3JtLXRyYW5zaXRpb24u
aHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9vcGFjaXR5LXRyYW5zaXRpb24temluZGV4Lmh0
bWw6CisgICAgICAgICogdHJhbnNpdGlvbnMvc3RhcnQtdHJhbnNmb3JtLXRyYW5zaXRpb24uaHRt
bDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2Zvcm0tb3AtbGlzdC1tYXRjaC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNmb3JtLW9wLWxpc3QtbWF0Y2guaHRt
bDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2Zvcm0tb3AtbGlzdC1uby1tYXRjaC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNmb3JtLW9wLWxpc3Qtbm8tbWF0
Y2guaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1hbGwt
cHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlv
bi1lbmQtZXZlbnQtYWxsLXByb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90
cmFuc2l0aW9uLWVuZC1ldmVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0
cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1hdHRyaWJ1dGVzLmh0bWw6CisgICAgICAg
ICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtY29udGFpbmVyLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1jb250YWluZXIu
aHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1oZWxwZXJz
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9lbmQtZXZlbnQtaGVscGVy
cy5qcy4KKyAgICAgICAgKHJlY29yZFRyYW5zaXRpb25FbmRFdmVudCk6CisgICAgICAgIChydW5U
cmFuc2l0aW9uVGVzdC5wcm9jZXNzRW5kRXZlbnRzLmNvbXBhcmVFdmVudEluZm8pOgorICAgICAg
ICAocnVuVHJhbnNpdGlvblRlc3QucHJvY2Vzc0VuZEV2ZW50cy5leGFtaW5lUmVzdWx0cyk6Cisg
ICAgICAgIChydW5UcmFuc2l0aW9uVGVzdC5wcm9jZXNzRW5kRXZlbnRzKToKKyAgICAgICAgKHJ1
blRyYW5zaXRpb25UZXN0LnN0YXJ0VGVzdCk6CisgICAgICAgIChydW5UcmFuc2l0aW9uVGVzdC53
aW5kb3cpOgorICAgICAgICAocnVuVHJhbnNpdGlvblRlc3QpOgorICAgICAgICAqIHRyYW5zaXRp
b25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWxlZnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRy
YW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWxlZnQuaHRtbDoKKyAgICAgICAgKiB0cmFu
c2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wMS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDEuaHRt
bDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0w
Mi1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZl
bnQtbXVsdGlwbGUtMDIuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVu
ZC1ldmVudC1tdWx0aXBsZS0wMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDMuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0
aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wNC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDQuaHRtbDoK
KyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1uZXN0ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW5lc3Rl
ZC5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXNldC1u
b25lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1l
dmVudC1zZXQtbm9uZS5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5k
LWV2ZW50LXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbi1lbmQtZXZlbnQtdHJhbnNmb3JtLmh0bWw6CisgICAgICAgICogdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtd2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0cmFu
c2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC13aW5kb3cuaHRtbDoKKyAgICAgICAgKiB0cmFu
c2l0aW9ucy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qczogQWRkZWQuCisgICAgICAgIChydW5U
cmFuc2l0aW9uVGVzdC5pc0Nsb3NlRW5vdWdoKToKKyAgICAgICAgKHJ1blRyYW5zaXRpb25UZXN0
LmNoZWNrRXhwZWN0ZWRWYWx1ZSk6CisgICAgICAgIChydW5UcmFuc2l0aW9uVGVzdC5lbmRUZXN0
KToKKyAgICAgICAgKHJ1blRyYW5zaXRpb25UZXN0LnJ1blRlc3QpOgorICAgICAgICAocnVuVHJh
bnNpdGlvblRlc3Quc3RhcnRUZXN0KToKKyAgICAgICAgKHJ1blRyYW5zaXRpb25UZXN0LmlmKToK
KyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi1leHBlY3Rl
ZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tdGlt
aW5nLWZ1bmN0aW9uLXNvZnR3YXJlLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiB0cmFuc2l0aW9u
cy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi1zb2Z0d2FyZS1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24tc29m
dHdhcmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLXRp
bWluZy1mdW5jdGlvbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi1zb2Z0d2FyZS5odG1sLgorICAgICAgICAqIHRyYW5z
aXRpb25zL3plcm8tZHVyYXRpb24taW4tbGlzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJh
bnNpdGlvbnMvemVyby1kdXJhdGlvbi1pbi1saXN0Lmh0bWw6CisKIDIwMDgtMTItMTcgIEZlbmcg
UWlhbiA8ZmVuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL2VuZC1ldmVudC1oZWxw
ZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL2VuZC1ldmVudC1o
ZWxwZXJzLmpzCShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL2Vu
ZC1ldmVudC1oZWxwZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgwICswLDAgQEAKLXZhciBy
ZXN1bHRzID0gbmV3IEFycmF5KCk7Ci0KLWZ1bmN0aW9uIGNvbXBhcmVFdmVudEluZm8oZTEsIGUy
KSB7Ci0gIC8vIHNvcnQgYnkgcHJvcGVydHkgbmFtZSB0aGVuIGV2ZW50IHRhcmdldCBpZAotICAv
LyBpbmRleCAwIGlzIHRoZSBwcm9wZXJ0eU5hbWUKLSAgaWYgKGUxWzBdPGUyWzBdKSByZXR1cm4g
LTE7Ci0gIGlmIChlMVswXT5lMlswXSkgcmV0dXJuICsxOwotICAvLyBpbmRleCAxIGlzIHRoZSB0
YXJnZXQgaWQKLSAgaWYgKGUxWzFdPGUyWzFdKSByZXR1cm4gLTE7Ci0gIGlmIChlMVsxXT5lMlsx
XSkgcmV0dXJuICsxOwotICByZXR1cm4gMDsKLX0KLQotZnVuY3Rpb24gcmVjb3JkRXZlbnQoZXZl
bnQpIHsKLSAgcmVzdWx0cy5wdXNoKFsKLSAgICBldmVudC5wcm9wZXJ0eU5hbWUsCi0gICAgZXZl
bnQudGFyZ2V0LmlkLAotICAgIGV2ZW50LnR5cGUsCi0gICAgTWF0aC5yb3VuZChldmVudC5lbGFw
c2VkVGltZSAqIDEwMDApIC8gMTAwMCAvLyByb3VuZCBvZmYgYW55IGZsb2F0IGVycm9ycwotICAg
IF0pOwotfQotCi1mdW5jdGlvbiBleGFtaW5lUmVzdWx0cyhleHBlY3RlZCkgewotICAvLyBzb3J0
IHJlc3VsdHMgc28gZXZlbnRzIGFsd2F5cyBkaXNwbGF5IGluIHRoZSBzYW1lIG9yZGVyCi0gIHJl
c3VsdHMuc29ydChjb21wYXJlRXZlbnRJbmZvKTsKLSAgdmFyIHJlc3VsdCA9ICc8cD4nOwotICBm
b3IgKHZhciBpPTA7IGkgPCByZXN1bHRzLmxlbmd0aCAmJiBpIDwgZXhwZWN0ZWQubGVuZ3RoOyAr
K2kpIHsKLSAgICByZXN1bHQgKz0gIkV4cGVjdGVkIFByb3BlcnR5OiAiICsgZXhwZWN0ZWRbaV1b
MF0gKyAiICI7Ci0gICAgcmVzdWx0ICs9ICJUYXJnZXQ6ICIgKyBleHBlY3RlZFtpXVsxXSArICIg
IjsKLSAgICByZXN1bHQgKz0gIlR5cGU6ICIgKyBleHBlY3RlZFtpXVsyXSArICIgIjsKLSAgICBy
ZXN1bHQgKz0gIkVsYXBzZWQgVGltZTogIiArIGV4cGVjdGVkW2ldWzNdICsgIiAtLSAiOwotICAg
IAotICAgIGlmIChleHBlY3RlZFtpXVswXSA9PSByZXN1bHRzW2ldWzBdICYmCi0gICAgICAgIGV4
cGVjdGVkW2ldWzFdID09IHJlc3VsdHNbaV1bMV0gJiYKLSAgICAgICAgZXhwZWN0ZWRbaV1bMl0g
PT0gcmVzdWx0c1tpXVsyXSAmJgotICAgICAgICBleHBlY3RlZFtpXVszXSA9PSByZXN1bHRzW2ld
WzNdKQotICAgICAgcmVzdWx0ICs9ICJQQVNTIjsKLSAgICBlbHNlIHsKLSAgICAgIHJlc3VsdCAr
PSAiRkFJTCAtLSBSZWNlaXZlZCI7Ci0gICAgICByZXN1bHQgKz0gIlByb3BlcnR5OiAiICsgcmVz
dWx0c1tpXVswXSArICIgIjsKLSAgICAgIHJlc3VsdCArPSAiVGFyZ2V0OiAiICsgcmVzdWx0c1tp
XVsxXSArICIgIjsKLSAgICAgIHJlc3VsdCArPSAiVHlwZTogIiArIHJlc3VsdHNbaV1bMl0gKyAi
ICI7Ci0gICAgICByZXN1bHQgKz0gIkVsYXBzZWQgVGltZTogIiArIHJlc3VsdHNbaV1bM107Ci0g
ICAgICAKLSAgICB9Ci0gICAgcmVzdWx0ICs9ICI8YnI+IjsKLSAgfQotICByZXN1bHQgKz0gIjwv
cD4iOwotICAKLSAgaWYgKGV4cGVjdGVkLmxlbmd0aCA+IHJlc3VsdHMubGVuZ3RoKSB7Ci0gICAg
cmVzdWx0ICs9ICI8cD5NaXNzaW5nIGV2ZW50cyAtLSBGQUlMPGJyPiI7Ci0gICAgZm9yIChpPXJl
c3VsdHMubGVuZ3RoOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKLSAgICAgIHJlc3VsdCAr
PSAiTWlzc2luZyBQcm9wZXJ0eTogIiArIGV4cGVjdGVkW2ldWzBdICsgIiAiOwotICAgICAgcmVz
dWx0ICs9ICJUYXJnZXQ6ICIgKyBleHBlY3RlZFtpXVsxXSArICIgIjsKLSAgICAgIHJlc3VsdCAr
PSAiVHlwZTogIiArIGV4cGVjdGVkW2ldWzJdICsgIiAiOwotICAgICAgcmVzdWx0ICs9ICJFbGFw
c2VkIFRpbWU6ICIgKyBleHBlY3RlZFtpXVszXSArICI8YnI+IjsKLSAgICB9Ci0gICAgcmVzdWx0
ICs9ICI8L3A+IjsKLSAgfSBlbHNlIGlmIChleHBlY3RlZC5sZW5ndGggPCByZXN1bHRzLmxlbmd0
aCkgewotICAgIHJlc3VsdCArPSAiPHA+VW5leHBlY3RlZCBldmVudHMgLS0gRkFJTDxicj4iOwot
ICAgIGZvciAoaT1leHBlY3RlZC5sZW5ndGg7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICByZXN1bHQgKz0gIlVuZXhwZWN0ZWQgUHJvcGVydHk6ICIgKyByZXN1bHRzW2ldWzBdICsg
IiAiOwotICAgICAgcmVzdWx0ICs9ICJUYXJnZXQ6ICIgKyByZXN1bHRzW2ldWzFdICsgIiAiOwot
ICAgICAgcmVzdWx0ICs9ICJUeXBlOiAiICsgcmVzdWx0c1tpXVsyXSArICIgIjsKLSAgICAgIHJl
c3VsdCArPSAiRWxhcHNlZCBUaW1lOiAiICsgcmVzdWx0c1tpXVszXSArICI8YnI+IjsKLSAgICB9
Ci0gICAgcmVzdWx0ICs9ICI8L3A+IjsKLSAgfQotICAKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
ZnVuY3Rpb24gY2xlYW51cCgpCi17Ci0gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpKTsKLSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IGV4YW1pbmVSZXN1bHRzKGV4cGVjdGVkKTsKLQotICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW50ZXJy
dXB0LXRyYW5zZm9ybS10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9pbnRlcnJ1cHQtdHJhbnNmb3JtLXRyYW5zaXRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL2ludGVy
cnVwdC10cmFuc2Zvcm0tdHJhbnNpdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzIEBACi1JbnRlcnJ1cHRlZCBoYXJkd2FyZSB0cmFuc2l0aW9uIHNob3VsZCBub3Qg
anVtcCBiYWNrIHRvIHByZS10cmFuc3Rpb24gdHJhbnNmb3JtCitJbnRlcnJ1cHRlZCB0cmFuc2l0
aW9uIHNob3VsZCBub3QganVtcCBiYWNrIHRvIHByZS10cmFuc2l0aW9uIHRyYW5zZm9ybQogCiBQ
QVNTCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9pbnRlcnJ1cHQtdHJhbnNmb3JtLXRy
YW5zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9pbnRl
cnJ1cHQtdHJhbnNmb3JtLXRyYW5zaXRpb24uaHRtbAkocmV2aXNpb24gMzkzNjgpCisrKyBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9pbnRlcnJ1cHQtdHJhbnNmb3JtLXRyYW5zaXRpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGhlYWQ+Ci0gIDx0aXRsZT5J
bnRlcnJ1cHRlZCBoYXJkd2FyZSB0cmFuc2l0aW9uPC90aXRsZT4KKyAgPHRpdGxlPkludGVycnVw
dGVkIFRyYW5zaXRpb248L3RpdGxlPgogICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJz
Y3JlZW4iPgogICAgIC5ib3ggewogICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwpAQCAtMTMsMTAg
KzEzLDYgQEAKICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMnM7CiAgICAgICAt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgIH0KLQotICAgIC5tb3ZlZCB7
Ci0vKiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwMHB4KTsqLwotICAgIH0K
ICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij4KICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CkBAIC01MSw3ICs0
Nyw3IEBACiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+
Ci0gIDxwPkludGVycnVwdGVkIGhhcmR3YXJlIHRyYW5zaXRpb24gc2hvdWxkIG5vdCBqdW1wIGJh
Y2sgdG8gcHJlLXRyYW5zdGlvbiB0cmFuc2Zvcm08L3A+CisgIDxwPkludGVycnVwdGVkIHRyYW5z
aXRpb24gc2hvdWxkIG5vdCBqdW1wIGJhY2sgdG8gcHJlLXRyYW5zaXRpb24gdHJhbnNmb3JtPC9w
PgogICA8ZGl2IGlkPSJib3giIGNsYXNzPSJib3giPgogICA8L2Rpdj4KICAgPGRpdiBpZD0icmVz
dWx0Ij4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL29wYWNpdHktdHJhbnNpdGlvbi16
aW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9vcGFjaXR5
LXRyYW5zaXRpb24temluZGV4Lmh0bWwJKHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvb3BhY2l0eS10cmFuc2l0aW9uLXppbmRleC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC00MSwxOSArNDEsMjEgQEAKICAgICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgfQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKICAgICBmdW5jdGlvbiBy
dW5UZXN0KCkKICAgICB7CiAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ZpcnN0Jyk7CiAgICAgICBjb250YWluZXIuc3R5bGUub3BhY2l0eSA9IDE7CisgICAg
ICAKICAgICAgIC8vIGR1bXAgdGhlIHRyZWUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdHJhbnNpdGlv
bgotICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Ci0gICAgICB9LCAyNTAwKTsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnBhdXNl
VHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCkKKyAgICAgICAgICB3aW5kb3cuc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VUcmFuc2l0aW9uQXRU
aW1lT25FbGVtZW50V2l0aElkKCJvcGFjaXR5IiwgMi41LCAiZmlyc3QiKTsgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7IH0sIDI1MDApOworICAgICAgfQogICAgIH0KICAgICAKICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL3Ry
YW5zaXRpb25zL3N0YXJ0LXRyYW5zZm9ybS10cmFuc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3RhcnQtdHJhbnNmb3JtLXRyYW5zaXRpb24uaHRtbAko
cmV2aXNpb24gMzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGFydC10cmFuc2Zv
cm0tdHJhbnNpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+
CiA8aGVhZD4KLSAgPHRpdGxlPlN0YXJ0IGhhcmR3YXJlIHRyYW5zaXRpb248L3RpdGxlPgorICA8
dGl0bGU+U3RhcnQgVHJhbnNmb3JtIFRyYW5zaXRpb248L3RpdGxlPgogICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgogICAgIC5ib3ggewogICAgICAgcG9zaXRpb246IHJl
bGF0aXZlOwpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNmb3JtLW9wLWxpc3Qt
bWF0Y2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zZm9ybS1vcC1saXN0LW1hdGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkzNjgpCisr
KyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2Zvcm0tb3AtbGlzdC1tYXRjaC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACiBCb3ggc2hvdWxkIHNwaW4gNTQw
IGRlZ3JlZXMgYmVjYXVzZSB0aGF0IGlzIHRoZSBzcGVjaWZpZWQgcm90YXRpb24gYW5kIHRoZSB0
cmFuc2Zvcm0gb3BlcmF0aW9uIGxpc3RzIG1hdGNoLCBzbyB3ZSBzaG91bGQgYW5pbWF0ZSBlYWNo
IG9wZXJhdGlvbiBzZXBhcmF0ZWx5LgogCi1QQVNTCitQQVNTIC0gIi13ZWJraXQtdHJhbnNmb3Jt
LjAiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogLTAuNzA3MTA2NzgxMTg2NTQ3NQorUEFTUyAtICItd2Via2l0LXRyYW5zZm9ybS4wIiBw
cm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA2
LjEyMzIzMzk5NTczNjc2NmUtMTcKKwpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNmb3JtLW9wLWxpc3QtbWF0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy90cmFuc2Zvcm0tb3AtbGlzdC1tYXRjaC5odG1sCShyZXZpc2lvbiAzOTM2OCkKKysr
IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zZm9ybS1vcC1saXN0LW1hdGNoLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE2LDYyICsxNiwyNyBAQAogICAgICAgLXdlYmtpdC10cmFuc2l0aW9u
LXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKICAgICB9CiAgIDwvc3R5bGU+CisgIDxzY3Jp
cHQgc3JjPSJ0cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAgICAKLSAgICByZXN1
bHQgPSAiUEFTUyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVyYW5jZSA9IDEwOwotICAgIAotICAg
IGZ1bmN0aW9uIGlzRXF1YWwoYWN0dWFsLCBkZXNpcmVkLCB0b2xlcmFuY2UpCi0gICAgewotICAg
ICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0b2xlcmFuY2UgPT0gMCkKLSAgICAg
ICAgICAgIHRvbGVyYW5jZSA9IGRlZmF1bHRUb2xlcmFuY2U7Ci0gICAgICAgIHZhciBkaWZmID0g
TWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgICAgIHJldHVybiBkaWZmIDwgdG9sZXJh
bmNlOwotICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBjaGFuZ2VWYWx1ZXMoKQorICAgIGZ1bmN0
aW9uIERlZ3JlZXNUb1JvdGF0aW9uKGFuZ2xlKQogICAgIHsKLSAgICAgICAgdmFyIGJveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKTsKLSAgICAgICAgYm94LnN0eWxlLndlYmtpdFRy
YW5zaXRpb25EdXJhdGlvbiA9ICIwLjFzIjsKKyAgICAgIHJldHVybiBNYXRoLmNvcyhhbmdsZSAq
IE1hdGguUEkgLyAxODApOwogICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBjaGVjayhleHBlY3Rl
ZCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gIlBBU1MiKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIHZhciB0ID0gd2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53ZWJraXRUcmFuc2Zvcm07Ci0gICAg
ICAgIHZhciBhID0gdC5zcGxpdCgiKCIpOwotICAgICAgICBhID0gYVsxXS5zcGxpdCgiLCIpOwot
ICAgICAgICB2YXIgYW5nbGUgPSBNYXRoLmFjb3MoYVswXSkgKiAxODAgLyBNYXRoLlBJOwotICAg
ICAgICBpZiAoIWlzRXF1YWwoYW5nbGUsIGV4cGVjdGVkKSkKLSAgICAgICAgICAgIHJlc3VsdCA9
ICJGQUlMKHdhczoiK3QubTQxKyIsIHMvYjowKSI7Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9u
IHN0YXJ0VGltZW91dCgpCi0gICAgewotICAgICAgICBzZXRUaW1lb3V0KCJjaGVjaygxMzUpIiwg
NTAwKTsKLSAgICAgICAgc2V0VGltZW91dCgiY2hlY2soOTApIiwgMTAwMCk7Ci0gICAgICAgIAot
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgMTEwMCk7Ci0gICAg
fQorICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW3RpbWUsIGVsZW1lbnQt
aWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWzAuNSwgImJv
eCIsICItd2Via2l0LXRyYW5zZm9ybS4wIiwgRGVncmVlc1RvUm90YXRpb24oMTM1KSwgRGVncmVl
c1RvUm90YXRpb24oMTApXSwKKyAgICAgIFsxLjAsICJib3giLCAiLXdlYmtpdC10cmFuc2Zvcm0u
MCIsIERlZ3JlZXNUb1JvdGF0aW9uKDkwKSwgRGVncmVlc1RvUm90YXRpb24oMTApXSwKKyAgICBd
OwogICAgIAotICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3QoKQog
ICAgIHsKLSAgICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKTsK
LSAgICAgICAgYm94LnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDBweCkgcm90
YXRlKDU0MGRlZyknOwotICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgic3RhcnRUaW1lb3V0KCki
LCAwKTsKKyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jyk7Cisg
ICAgICBib3guc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMHB4KSByb3RhdGUo
NTQwZGVnKSc7CiAgICAgfQogICAgIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
Jywgc3RhcnQsIGZhbHNlKTsKKyAgICBydW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZFZhbHVlcywg
c2V0dXBUZXN0KTsKICAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2Zvcm0tb3AtbGlzdC1uby1tYXRjaC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNmb3JtLW9wLWxpc3Qtbm8t
bWF0Y2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zZm9ybS1vcC1saXN0LW5vLW1hdGNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDUgQEAKIEJveCBzaG91bGQgc3BpbiBvbmx5IDE4MCBkZWdyZWVzIGV2
ZW4gdGhvdWdoIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVzIGEgMCB0byA1NDAgZGVncmVlIGFuaW1h
dGlvbi4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvcGVyYXRpb24gbGlzdHMgZG9uJ3QgbWF0Y2gsIHNv
IGl0IGZhbGxzIGJhY2sgdG8gbWF0cml4IGFuaW1hdGlvbiwgd2hpY2ggbm9ybWFsaXplcyB0aGUg
YW5nbGUgdG8gYmV0d2VlbiAwIGFuZCAzNjAgZGVncmVlcy4KIAotUEFTUworUEFTUyAtICItd2Vi
a2l0LXRyYW5zZm9ybS4wIiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjVzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDAuNzA3MTA2NzgxMTg2NTQ3NgorUEFTUyAtICItd2Via2l0LXRy
YW5zZm9ybS4wIiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiA2LjEyMzIzMzk5NTczNjc2NmUtMTcKKwpJbmRleDogTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvdHJhbnNmb3JtLW9wLWxpc3Qtbm8tbWF0Y2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2Zvcm0tb3AtbGlzdC1uby1tYXRjaC5odG1sCShy
ZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zZm9ybS1vcC1s
aXN0LW5vLW1hdGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYyICsxNiwyNyBAQAogICAg
ICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKICAgICB9
CiAgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIH0KLSAgICAKLSAgICByZXN1bHQgPSAiUEFTUyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVy
YW5jZSA9IDEwOwotICAgIAotICAgIGZ1bmN0aW9uIGlzRXF1YWwoYWN0dWFsLCBkZXNpcmVkLCB0
b2xlcmFuY2UpCi0gICAgewotICAgICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0
b2xlcmFuY2UgPT0gMCkKLSAgICAgICAgICAgIHRvbGVyYW5jZSA9IGRlZmF1bHRUb2xlcmFuY2U7
Ci0gICAgICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgICAg
IHJldHVybiBkaWZmIDwgdG9sZXJhbmNlOwotICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBjaGFu
Z2VWYWx1ZXMoKQorICAgIGZ1bmN0aW9uIERlZ3JlZXNUb1JvdGF0aW9uKGFuZ2xlKQogICAgIHsK
LSAgICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKTsKLSAgICAg
ICAgYm94LnN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiA9ICIwLjFzIjsKKyAgICAgIHJl
dHVybiBNYXRoLmNvcyhhbmdsZSAqIE1hdGguUEkgLyAxODApOwogICAgIH0KICAgICAKLSAgICBm
dW5jdGlvbiBjaGVjayhleHBlY3RlZCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gIlBB
U1MiKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIHZhciB0ID0g
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53
ZWJraXRUcmFuc2Zvcm07Ci0gICAgICAgIHZhciBhID0gdC5zcGxpdCgiKCIpOwotICAgICAgICBh
ID0gYVsxXS5zcGxpdCgiLCIpOwotICAgICAgICB2YXIgYW5nbGUgPSBNYXRoLmFjb3MoYVswXSkg
KiAxODAgLyBNYXRoLlBJOwotICAgICAgICBpZiAoIWlzRXF1YWwoYW5nbGUsIGV4cGVjdGVkKSkK
LSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMKHdhczoiK3QubTQxKyIsIHMvYjowKSI7Ci0gICAg
fQotICAgIAotICAgIGZ1bmN0aW9uIHN0YXJ0VGltZW91dCgpCi0gICAgewotICAgICAgICBzZXRU
aW1lb3V0KCJjaGVjayg0NSkiLCA1MDApOwotICAgICAgICBzZXRUaW1lb3V0KCJjaGVjayg5MCki
LCAxMDAwKTsKLSAgICAgICAgCi0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9IHJlc3VsdDsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAg
ICAgICB9LCAxMTAwKTsKLSAgICB9CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAg
ICAvLyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFu
Y2VdCisgICAgICBbMC41LCAiYm94IiwgIi13ZWJraXQtdHJhbnNmb3JtLjAiLCBEZWdyZWVzVG9S
b3RhdGlvbig0NSksIERlZ3JlZXNUb1JvdGF0aW9uKDEwKV0sCisgICAgICBbMS4wLCAiYm94Iiwg
Ii13ZWJraXQtdHJhbnNmb3JtLjAiLCBEZWdyZWVzVG9Sb3RhdGlvbig5MCksIERlZ3JlZXNUb1Jv
dGF0aW9uKDEwKV0sCisgICAgXTsKICAgICAKLSAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgZnVu
Y3Rpb24gc2V0dXBUZXN0KCkKICAgICB7Ci0gICAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm94Jyk7Ci0gICAgICAgIGJveC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAn
cm90YXRlKDU0MGRlZyknOwotICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgic3RhcnRUaW1lb3V0
KCkiLCAwKTsKKyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jyk7
CisgICAgICBib3guc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3JvdGF0ZSg1NDBkZWcpJzsKICAg
ICB9CiAgICAgCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydCwgZmFs
c2UpOworICAgIHJ1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzLCBzZXR1cFRlc3QpOwog
ICAgIAogICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zaXRpb24tZW5kLWV2ZW50LWFsbC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1hbGwt
cHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtYWxsLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiBJbml0aWF0aW5nIHRyYW5zaXRp
b25zIG9uIHZhcmlvdXMgcHJvcGVydGllcyBvZiBhbGwgYm94ZXMuCiAKLUV4cGVjdGVkIFByb3Bl
cnR5OiBiYWNrZ3JvdW5kLWNvbG9yIFRhcmdldDogYm94MiBUeXBlOiB3ZWJraXRUcmFuc2l0aW9u
RW5kIEVsYXBzZWQgVGltZTogMC41IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiBiYWNrZ3Jv
dW5kLWNvbG9yIFRhcmdldDogYm94MyBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQg
VGltZTogMC43IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiBoZWlnaHQgVGFyZ2V0OiBib3gz
IFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjcgLS0gUEFTUwotRXhw
ZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gxIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25F
bmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0gUEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFy
Z2V0OiBib3gyIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0g
UEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gzIFR5cGU6IHdlYmtpdFRy
YW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjcgLS0gUEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6
IHdpZHRoIFRhcmdldDogYm94MyBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGlt
ZTogMC43IC0tIFBBU1MKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IGJhY2tncm91bmQt
Y29sb3IgVGFyZ2V0OiBib3gyIEVsYXBzZWQgVGltZTogMC41CitQQVNTIC0tLSBbRXhwZWN0ZWRd
IFByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yIFRhcmdldDogYm94MyBFbGFwc2VkIFRpbWU6IDAu
NworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogaGVpZ2h0IFRhcmdldDogYm94MyBFbGFw
c2VkIFRpbWU6IDAuNworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6
IGJveDEgRWxhcHNlZCBUaW1lOiAwLjUKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IGxl
ZnQgVGFyZ2V0OiBib3gyIEVsYXBzZWQgVGltZTogMC41CitQQVNTIC0tLSBbRXhwZWN0ZWRdIFBy
b3BlcnR5OiBsZWZ0IFRhcmdldDogYm94MyBFbGFwc2VkIFRpbWU6IDAuNworUEFTUyAtLS0gW0V4
cGVjdGVkXSBQcm9wZXJ0eTogd2lkdGggVGFyZ2V0OiBib3gzIEVsYXBzZWQgVGltZTogMC43CiAK
SW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWFsbC1w
cm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbi1lbmQtZXZlbnQtYWxsLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMzkzNjgpCisr
KyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1hbGwtcHJvcGVy
dGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwzNSArMzAsMzAgQEAKICAgICB9CiAgICAg
CiAgIDwvc3R5bGU+Ci0gIDxzY3JpcHQgc3JjPSJlbmQtZXZlbnQtaGVscGVycy5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSJ0cmFuc2l0aW9uLWVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHZhciBl
eHBlY3RlZCA9IFsKLSAgICAgIFsiYmFja2dyb3VuZC1jb2xvciIsICJib3gyIiwgIndlYmtpdFRy
YW5zaXRpb25FbmQiLCAwLjVdLAotICAgICAgWyJiYWNrZ3JvdW5kLWNvbG9yIiwgImJveDMiLCAi
d2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuN10sCi0gICAgICBbImhlaWdodCIsICJib3gzIiwgIndl
YmtpdFRyYW5zaXRpb25FbmQiLCAwLjddLAotICAgICAgWyJsZWZ0IiwgImJveDEiLCAid2Via2l0
VHJhbnNpdGlvbkVuZCIsIDAuNV0sCi0gICAgICBbImxlZnQiLCAiYm94MiIsICJ3ZWJraXRUcmFu
c2l0aW9uRW5kIiwgMC41XSwKLSAgICAgIFsibGVmdCIsICJib3gzIiwgIndlYmtpdFRyYW5zaXRp
b25FbmQiLCAwLjddLAotICAgICAgWyJ3aWR0aCIsICJib3gzIiwgIndlYmtpdFRyYW5zaXRpb25F
bmQiLCAwLjddCisgICAgCisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8g
W3Byb3BlcnR5LW5hbWUsIGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAg
WyJiYWNrZ3JvdW5kLWNvbG9yIiwgImJveDIiLCAwLjUsIHRydWVdLAorICAgICAgWyJiYWNrZ3Jv
dW5kLWNvbG9yIiwgImJveDMiLCAwLjcsIHRydWVdLAorICAgICAgWyJoZWlnaHQiLCAiYm94MyIs
ICAwLjcsIHRydWVdLAorICAgICAgWyJsZWZ0IiwgImJveDEiLCAwLjUsIHRydWVdLAorICAgICAg
WyJsZWZ0IiwgImJveDIiLCAwLjUsIHRydWVdLAorICAgICAgWyJsZWZ0IiwgImJveDMiLCAwLjcs
IHRydWVdLAorICAgICAgWyJ3aWR0aCIsICJib3gzIiwgMC43LCB0cnVlXQogICAgIF07CiAgICAg
Ci0gICAgZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKCkKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3Qo
KQogICAgIHsKICAgICAgIHZhciBib3hlcyA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgnYm94Jyk7CiAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJveGVzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGJveGVzW2ldLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRp
b25FbmQiLCByZWNvcmRFdmVudCwgZmFsc2UpOwogICAgICAgICBib3hlc1tpXS5jbGFzc05hbWUg
PSAiYm94IGJveCIgKyAoaSsxKTsKICAgICAgIH0KLSAgICAgIAotICAgICAgd2luZG93LnNldFRp
bWVvdXQoY2xlYW51cCwgMTAwMCk7CiAgICAgfQogICAgIAotICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgc3RhcnRUcmFuc2l0aW9uLCBmYWxzZSk7CisgICAgcnVuVHJhbnNpdGlv
blRlc3QoZXhwZWN0ZWRFbmRFdmVudHMsIDEuMCwgc2V0dXBUZXN0KTsKKyAgICAKICAgPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5z
aXRpb24tZW5kLWV2ZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWF0dHJpYnV0ZXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3Ry
YW5zaXRpb24tZW5kLWV2ZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAogSW5pdGlhdGluZyBhIDUwMG1zIHRyYW5zaXRpb24gb24gdGhlIGxl
ZnQgcHJvcGVydHkgb2YgYm94MS4KIAotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBi
b3gxIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0gUEFTUwor
UEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJveDEgRWxhcHNlZCBU
aW1lOiAwLjUKIApJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQt
ZXZlbnQtYXR0cmlidXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gMzkzNjgp
CisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1hdHRyaWJ1
dGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDI4ICsxMywyMiBAQAogICAgICAgLXdlYmtp
dC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwogICAgIH0KICAgPC9zdHlsZT4KLSAgPHNjcmlw
dCBzcmM9ImVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tZW5kLWV2ZW50
LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2Ny
aXB0PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgfQogICAgIAotICAgIHZhciBleHBlY3RlZCA9IFsKLSAgICAg
IFsnbGVmdCcsICdib3gxJywgJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCAwLjVdCisgICAgdmFyIGV4
cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3BlcnR5LW5hbWUsIGVsZW1lbnQtaWQs
IGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyJsZWZ0IiwgImJveDEiLCAwLjVdCiAgICAg
XTsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbigpCisgICAgCisgICAgZnVuY3Rpb24g
c2V0dXBUZXN0KCkKICAgICB7Ci0gICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5ib2R5LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoJ2JveCcpOwotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3hl
cy5sZW5ndGg7ICsraSkgewotICAgICAgICBib3hlc1tpXS5zdHlsZS5sZWZ0ID0gJzIwMHB4JzsK
LSAgICAgIH0KLSAgICAgIAotICAgICAgd2luZG93LnNldFRpbWVvdXQoY2xlYW51cCwgNzAwKTsK
KyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MScpOworICAgICAg
Ym94LnN0eWxlLmxlZnQgPSAnMjAwcHgnOwogICAgIH0KICAgICAKLSAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0VHJhbnNpdGlvbiwgZmFsc2UpOworICAgIHJ1blRyYW5z
aXRpb25UZXN0KGV4cGVjdGVkRW5kRXZlbnRzLCAwLjcsIHNldHVwVGVzdCk7CisgICAgCiAgIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkBAIC00Miw3ICszNiw3IEBACiA8cD5Jbml0aWF0aW5n
IGEgNTAwbXMgdHJhbnNpdGlvbiBvbiB0aGUgbGVmdCBwcm9wZXJ0eSBvZiBib3gxLjwvcD4KIAog
PGRpdiBpZD0iY29udGFpbmVyIj4KLSAgPGRpdiBpZD0iYm94MSIgY2xhc3M9ImJveCIgb253ZWJr
aXR0cmFuc2l0aW9uZW5kPSJyZWNvcmRFdmVudChldmVudCk7Ij48L2Rpdj4KKyAgPGRpdiBpZD0i
Ym94MSIgY2xhc3M9ImJveCIgb253ZWJraXR0cmFuc2l0aW9uZW5kPSJyZWNvcmRUcmFuc2l0aW9u
RW5kRXZlbnQoZXZlbnQpOyI+PC9kaXY+CiA8L2Rpdj4KIAogPGRpdiBpZD0icmVzdWx0Ij48L2Rp
dj4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWNv
bnRhaW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtY29udGFpbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1j
b250YWluZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogSW5p
dGlhdGluZyBhIDUwMG1zIHRyYW5zaXRpb24gb24gdGhlIGxlZnQgcHJvcGVydHkgb2YgYm94MSBh
bmQgY2F0Y2hpbmcgaXQgb24gdGhlIHBhcmVudC4KIAotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQg
VGFyZ2V0OiBib3gxIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjUg
LS0gUEFTUworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJveDEg
RWxhcHNlZCBUaW1lOiAwLjUKIApJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNp
dGlvbi1lbmQtZXZlbnQtY29udGFpbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtY29udGFpbmVyLmh0bWwJKHJldmlzaW9u
IDM5MzY4KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQt
Y29udGFpbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDI5ICsxMywyMyBAQAogICAgICAg
LXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwogICAgIH0KICAgPC9zdHlsZT4KLSAg
PHNjcmlwdCBzcmM9ImVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tZW5k
LWV2ZW50LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
Pjwvc2NyaXB0PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkID0gWwotICAg
ICAgWyJsZWZ0IiwgImJveDEiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuNV0KKyAgICAKKyAg
ICB2YXIgZXhwZWN0ZWRFbmRFdmVudHMgPSBbCisgICAgICAvLyBbcHJvcGVydHktbmFtZSwgZWxl
bWVudC1pZCwgZWxhcHNlZC10aW1lLCBsaXN0ZW5dCisgICAgICBbImxlZnQiLCAiYm94MSIsIDAu
NSwgZmFsc2VdCiAgICAgXTsKICAgICAKLSAgICBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oKQor
ICAgIGZ1bmN0aW9uIHNldHVwVGVzdCgpCiAgICAgewotICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRhaW5lciIpLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQi
LCByZWNvcmRFdmVudCwgZmFsc2UpOwotICAgICAgdmFyIGJveGVzID0gZG9jdW1lbnQuYm9keS5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3gnKTsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Ym94ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYm94ZXNbaV0uc3R5bGUubGVmdCA9ICcyMDBw
eCc7Ci0gICAgICB9CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIiku
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlY29yZFRyYW5zaXRpb25F
bmRFdmVudCwgZmFsc2UpOwogICAgICAgCi0gICAgICB3aW5kb3cuc2V0VGltZW91dChjbGVhbnVw
LCA3MDApOworICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJyk7
CisgICAgICBib3guc3R5bGUubGVmdCA9ICcyMDBweCc7CiAgICAgfQogICAgIAotICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc3RhcnRUcmFuc2l0aW9uLCBmYWxzZSk7CisgICAg
cnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWRFbmRFdmVudHMsIDAuNywgc2V0dXBUZXN0KTsKICAg
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zaXRpb24tZW5kLWV2ZW50LWhlbHBlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5qcwkocmV2aXNpb24g
MzkzNDEpCShmcm9tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL2VuZC1ldmVudC1oZWxwZXJzLmpz
OjM5MzQxKQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQt
aGVscGVycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACit2YXIgcmVzdWx0cyA9
IG5ldyBBcnJheSgpOworCitmdW5jdGlvbiBjb21wYXJlRXZlbnRJbmZvKGUxLCBlMikgeworICAv
LyBzb3J0IGJ5IHByb3BlcnR5IG5hbWUgdGhlbiBldmVudCB0YXJnZXQgaWQKKyAgLy8gaW5kZXgg
MCBpcyB0aGUgcHJvcGVydHlOYW1lCisgIGlmIChlMVswXTxlMlswXSkgcmV0dXJuIC0xOworICBp
ZiAoZTFbMF0+ZTJbMF0pIHJldHVybiArMTsKKyAgLy8gaW5kZXggMSBpcyB0aGUgdGFyZ2V0IGlk
CisgIGlmIChlMVsxXTxlMlsxXSkgcmV0dXJuIC0xOworICBpZiAoZTFbMV0+ZTJbMV0pIHJldHVy
biArMTsKKyAgcmV0dXJuIDA7Cit9CisKK2Z1bmN0aW9uIHJlY29yZEV2ZW50KGV2ZW50KSB7Cisg
IHJlc3VsdHMucHVzaChbCisgICAgZXZlbnQucHJvcGVydHlOYW1lLAorICAgIGV2ZW50LnRhcmdl
dC5pZCwKKyAgICBldmVudC50eXBlLAorICAgIE1hdGgucm91bmQoZXZlbnQuZWxhcHNlZFRpbWUg
KiAxMDAwKSAvIDEwMDAgLy8gcm91bmQgb2ZmIGFueSBmbG9hdCBlcnJvcnMKKyAgICBdKTsKK30K
KworZnVuY3Rpb24gZXhhbWluZVJlc3VsdHMoZXhwZWN0ZWQpIHsKKyAgLy8gc29ydCByZXN1bHRz
IHNvIGV2ZW50cyBhbHdheXMgZGlzcGxheSBpbiB0aGUgc2FtZSBvcmRlcgorICByZXN1bHRzLnNv
cnQoY29tcGFyZUV2ZW50SW5mbyk7CisgIHZhciByZXN1bHQgPSAnPHA+JzsKKyAgZm9yICh2YXIg
aT0wOyBpIDwgcmVzdWx0cy5sZW5ndGggJiYgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7Cisg
ICAgcmVzdWx0ICs9ICJFeHBlY3RlZCBQcm9wZXJ0eTogIiArIGV4cGVjdGVkW2ldWzBdICsgIiAi
OworICAgIHJlc3VsdCArPSAiVGFyZ2V0OiAiICsgZXhwZWN0ZWRbaV1bMV0gKyAiICI7CisgICAg
cmVzdWx0ICs9ICJUeXBlOiAiICsgZXhwZWN0ZWRbaV1bMl0gKyAiICI7CisgICAgcmVzdWx0ICs9
ICJFbGFwc2VkIFRpbWU6ICIgKyBleHBlY3RlZFtpXVszXSArICIgLS0gIjsKKyAgICAKKyAgICBp
ZiAoZXhwZWN0ZWRbaV1bMF0gPT0gcmVzdWx0c1tpXVswXSAmJgorICAgICAgICBleHBlY3RlZFtp
XVsxXSA9PSByZXN1bHRzW2ldWzFdICYmCisgICAgICAgIGV4cGVjdGVkW2ldWzJdID09IHJlc3Vs
dHNbaV1bMl0gJiYKKyAgICAgICAgZXhwZWN0ZWRbaV1bM10gPT0gcmVzdWx0c1tpXVszXSkKKyAg
ICAgIHJlc3VsdCArPSAiUEFTUyI7CisgICAgZWxzZSB7CisgICAgICByZXN1bHQgKz0gIkZBSUwg
LS0gUmVjZWl2ZWQiOworICAgICAgcmVzdWx0ICs9ICJQcm9wZXJ0eTogIiArIHJlc3VsdHNbaV1b
MF0gKyAiICI7CisgICAgICByZXN1bHQgKz0gIlRhcmdldDogIiArIHJlc3VsdHNbaV1bMV0gKyAi
ICI7CisgICAgICByZXN1bHQgKz0gIlR5cGU6ICIgKyByZXN1bHRzW2ldWzJdICsgIiAiOworICAg
ICAgcmVzdWx0ICs9ICJFbGFwc2VkIFRpbWU6ICIgKyByZXN1bHRzW2ldWzNdOworICAgICAgCisg
ICAgfQorICAgIHJlc3VsdCArPSAiPGJyPiI7CisgIH0KKyAgcmVzdWx0ICs9ICI8L3A+IjsKKyAg
CisgIGlmIChleHBlY3RlZC5sZW5ndGggPiByZXN1bHRzLmxlbmd0aCkgeworICAgIHJlc3VsdCAr
PSAiPHA+TWlzc2luZyBldmVudHMgLS0gRkFJTDxicj4iOworICAgIGZvciAoaT1yZXN1bHRzLmxl
bmd0aDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAgICByZXN1bHQgKz0gIk1pc3Np
bmcgUHJvcGVydHk6ICIgKyBleHBlY3RlZFtpXVswXSArICIgIjsKKyAgICAgIHJlc3VsdCArPSAi
VGFyZ2V0OiAiICsgZXhwZWN0ZWRbaV1bMV0gKyAiICI7CisgICAgICByZXN1bHQgKz0gIlR5cGU6
ICIgKyBleHBlY3RlZFtpXVsyXSArICIgIjsKKyAgICAgIHJlc3VsdCArPSAiRWxhcHNlZCBUaW1l
OiAiICsgZXhwZWN0ZWRbaV1bM10gKyAiPGJyPiI7CisgICAgfQorICAgIHJlc3VsdCArPSAiPC9w
PiI7CisgIH0gZWxzZSBpZiAoZXhwZWN0ZWQubGVuZ3RoIDwgcmVzdWx0cy5sZW5ndGgpIHsKKyAg
ICByZXN1bHQgKz0gIjxwPlVuZXhwZWN0ZWQgZXZlbnRzIC0tIEZBSUw8YnI+IjsKKyAgICBmb3Ig
KGk9ZXhwZWN0ZWQubGVuZ3RoOyBpIDwgcmVzdWx0cy5sZW5ndGg7ICsraSkgeworICAgICAgcmVz
dWx0ICs9ICJVbmV4cGVjdGVkIFByb3BlcnR5OiAiICsgcmVzdWx0c1tpXVswXSArICIgIjsKKyAg
ICAgIHJlc3VsdCArPSAiVGFyZ2V0OiAiICsgcmVzdWx0c1tpXVsxXSArICIgIjsKKyAgICAgIHJl
c3VsdCArPSAiVHlwZTogIiArIHJlc3VsdHNbaV1bMl0gKyAiICI7CisgICAgICByZXN1bHQgKz0g
IkVsYXBzZWQgVGltZTogIiArIHJlc3VsdHNbaV1bM10gKyAiPGJyPiI7CisgICAgfQorICAgIHJl
c3VsdCArPSAiPC9wPiI7CisgIH0KKyAgCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9u
IGNsZWFudXAoKQoreworICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250YWluZXInKSk7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSBleGFtaW5lUmVzdWx0cyhleHBlY3RlZCk7CisKKyAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5k
LWV2ZW50LWhlbHBlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5qcwkocmV2aXNpb24gMzkzNDEpCisrKyBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1oZWxwZXJzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDgwICsxLDE0MCBAQAotdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTsK
K3ZhciBfcmVjb3JkZWRFdmVudHMgPSBuZXcgQXJyYXkoKTsKIAotZnVuY3Rpb24gY29tcGFyZUV2
ZW50SW5mbyhlMSwgZTIpIHsKLSAgLy8gc29ydCBieSBwcm9wZXJ0eSBuYW1lIHRoZW4gZXZlbnQg
dGFyZ2V0IGlkCi0gIC8vIGluZGV4IDAgaXMgdGhlIHByb3BlcnR5TmFtZQotICBpZiAoZTFbMF08
ZTJbMF0pIHJldHVybiAtMTsKLSAgaWYgKGUxWzBdPmUyWzBdKSByZXR1cm4gKzE7Ci0gIC8vIGlu
ZGV4IDEgaXMgdGhlIHRhcmdldCBpZAotICBpZiAoZTFbMV08ZTJbMV0pIHJldHVybiAtMTsKLSAg
aWYgKGUxWzFdPmUyWzFdKSByZXR1cm4gKzE7Ci0gIHJldHVybiAwOwotfQorLyogQ2FsbCB0aGlz
IGZ1bmN0aW9uIHRvIHJlY29yZCBtYW51YWxseSB0cmFuc2l0aW9uIGVuZCBldmVudHM6CisKK0Z1
bmN0aW9uIHBhcmFtZXRlcnM6CisgICAgZXZlbnQgW3JlcXVpcmVkXTogdGhlIGV2ZW50IHBhc3Nl
ZCB3aXRoICJ3ZWJraXRUcmFuc2l0aW9uRW5kIgogCi1mdW5jdGlvbiByZWNvcmRFdmVudChldmVu
dCkgewotICByZXN1bHRzLnB1c2goWworKi8KK2Z1bmN0aW9uIHJlY29yZFRyYW5zaXRpb25FbmRF
dmVudChldmVudCkKK3sKKyAgaWYgKGV2ZW50LnR5cGUgIT0gIndlYmtpdFRyYW5zaXRpb25FbmQi
KQorICAgIHRocm93KCJJbnZhbGlkIHRyYW5zaXRpb24gZW5kIGV2ZW50ISIpOworCisgIF9yZWNv
cmRlZEV2ZW50cy5wdXNoKFsKICAgICBldmVudC5wcm9wZXJ0eU5hbWUsCiAgICAgZXZlbnQudGFy
Z2V0LmlkLAotICAgIGV2ZW50LnR5cGUsCi0gICAgTWF0aC5yb3VuZChldmVudC5lbGFwc2VkVGlt
ZSAqIDEwMDApIC8gMTAwMCAvLyByb3VuZCBvZmYgYW55IGZsb2F0IGVycm9ycworICAgIE1hdGgu
cm91bmQoZXZlbnQuZWxhcHNlZFRpbWUgKiAxMDAwKSAvIDEwMDAgLy8gcm91bmQgdG8gbXMgdG8g
YXZvaWQgZmxvYXRpbmcgcG9pbnQgaW1wcmVjaXNpb24KICAgICBdKTsKIH0KIAotZnVuY3Rpb24g
ZXhhbWluZVJlc3VsdHMoZXhwZWN0ZWQpIHsKLSAgLy8gc29ydCByZXN1bHRzIHNvIGV2ZW50cyBh
bHdheXMgZGlzcGxheSBpbiB0aGUgc2FtZSBvcmRlcgotICByZXN1bHRzLnNvcnQoY29tcGFyZUV2
ZW50SW5mbyk7Ci0gIHZhciByZXN1bHQgPSAnPHA+JzsKLSAgZm9yICh2YXIgaT0wOyBpIDwgcmVz
dWx0cy5sZW5ndGggJiYgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7Ci0gICAgcmVzdWx0ICs9
ICJFeHBlY3RlZCBQcm9wZXJ0eTogIiArIGV4cGVjdGVkW2ldWzBdICsgIiAiOwotICAgIHJlc3Vs
dCArPSAiVGFyZ2V0OiAiICsgZXhwZWN0ZWRbaV1bMV0gKyAiICI7Ci0gICAgcmVzdWx0ICs9ICJU
eXBlOiAiICsgZXhwZWN0ZWRbaV1bMl0gKyAiICI7Ci0gICAgcmVzdWx0ICs9ICJFbGFwc2VkIFRp
bWU6ICIgKyBleHBlY3RlZFtpXVszXSArICIgLS0gIjsKLSAgICAKLSAgICBpZiAoZXhwZWN0ZWRb
aV1bMF0gPT0gcmVzdWx0c1tpXVswXSAmJgotICAgICAgICBleHBlY3RlZFtpXVsxXSA9PSByZXN1
bHRzW2ldWzFdICYmCi0gICAgICAgIGV4cGVjdGVkW2ldWzJdID09IHJlc3VsdHNbaV1bMl0gJiYK
LSAgICAgICAgZXhwZWN0ZWRbaV1bM10gPT0gcmVzdWx0c1tpXVszXSkKLSAgICAgIHJlc3VsdCAr
PSAiUEFTUyI7Ci0gICAgZWxzZSB7Ci0gICAgICByZXN1bHQgKz0gIkZBSUwgLS0gUmVjZWl2ZWQi
OwotICAgICAgcmVzdWx0ICs9ICJQcm9wZXJ0eTogIiArIHJlc3VsdHNbaV1bMF0gKyAiICI7Ci0g
ICAgICByZXN1bHQgKz0gIlRhcmdldDogIiArIHJlc3VsdHNbaV1bMV0gKyAiICI7Ci0gICAgICBy
ZXN1bHQgKz0gIlR5cGU6ICIgKyByZXN1bHRzW2ldWzJdICsgIiAiOwotICAgICAgcmVzdWx0ICs9
ICJFbGFwc2VkIFRpbWU6ICIgKyByZXN1bHRzW2ldWzNdOwotICAgICAgCi0gICAgfQotICAgIHJl
c3VsdCArPSAiPGJyPiI7CisvKiBUaGlzIGlzIHRoZSBoZWxwZXIgZnVuY3Rpb24gdG8gcnVuIHRy
YW5zaXRpb24gZW5kIGV2ZW50IHRlc3RzOgorCitUZXN0IHBhZ2UgcmVxdWlyZW1lbnRzOgorLSBU
aGUgYm9keSBtdXN0IGNvbnRhaW4gYW4gZW1wdHkgZGl2IHdpdGggaWQgInJlc3VsdCIKKy0gVGhl
IGJvZHkgbXVzdCBjb250YWluIGEgZGl2IHdpdGggd2l0aCBpZCAiY29udGFpbmVyIgorLSBDYWxs
IHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgZnJvbSB0aGUgPHNjcmlwdD4gaW5zaWRlIHRoZSB0ZXN0
IHBhZ2UKKworRnVuY3Rpb24gcGFyYW1ldGVyczoKKyAgICBleHBlY3RlZCBbcmVxdWlyZWRdOiBh
biBhcnJheSBvZiBhcnJheXMgZGVmaW5pbmcgdGhlIGV4cGVjdGVkIHBhcmFtZXRlciB2YWx1ZXMg
Zm9yIHRoZSByZWNvcmRlZCB0cmFuc2l0aW9uIGVuZCBldmVudHMgKHNlZSBiZWxvdykKKyAgICB0
aW1lb3V0IFtyZXF1aXJlZF06IAorICAgIGNhbGxiYWNrIFtvcHRpb25hbF06IGEgZnVuY3Rpb24g
dG8gYmUgZXhlY3V0ZWQganVzdCBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzIChub25lIGJ5IGRlZmF1
bHQpCisKKyAgICBFYWNoIHN1Yi1hcnJheSBtdXN0IGNvbnRhaW4gdGhlc2UgaXRlbXMgaW4gdGhp
cyBvcmRlcjoKKyAgICAtIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdGhhdCB3YXMgdHJh
bnNpdGlvbmluZworICAgIC0gdGhlIGlkIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBDU1Mg
cHJvcGVydHkgd2FzIHRyYW5zaXRpb25pbmcKKyAgICAtIHRoZSBlbGFwc2VkIHRpbWUgaW4gc2Vj
b25kcyBhdCB3aGljaCB0aGUgQ1NTIHByb3BlcnR5IGZpbmlzaGVkIHRyYW5zaXRpb25pbmcKKyAg
ICAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGFuIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBh
dXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBlbGVtZW50IHRvIHJlY29yZCB0aGUgdHJhbnNpdGlv
biBlbmQgZXZlbnQgb3IgaWYgdGhlIHNjcmlwdCBjYWxscyByZWNvcmRUcmFuc2l0aW9uRW5kRXZl
bnQoKSBkaXJlY3RseQorCisqLworZnVuY3Rpb24gcnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWQs
IHRpbWVvdXQsIGNhbGxiYWNrKQoreworICAKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgIH0KLSAgcmVzdWx0ICs9ICI8L3A+
IjsKICAgCi0gIGlmIChleHBlY3RlZC5sZW5ndGggPiByZXN1bHRzLmxlbmd0aCkgewotICAgIHJl
c3VsdCArPSAiPHA+TWlzc2luZyBldmVudHMgLS0gRkFJTDxicj4iOwotICAgIGZvciAoaT1yZXN1
bHRzLmxlbmd0aDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7Ci0gICAgICByZXN1bHQgKz0g
Ik1pc3NpbmcgUHJvcGVydHk6ICIgKyBleHBlY3RlZFtpXVswXSArICIgIjsKLSAgICAgIHJlc3Vs
dCArPSAiVGFyZ2V0OiAiICsgZXhwZWN0ZWRbaV1bMV0gKyAiICI7Ci0gICAgICByZXN1bHQgKz0g
IlR5cGU6ICIgKyBleHBlY3RlZFtpXVsyXSArICIgIjsKLSAgICAgIHJlc3VsdCArPSAiRWxhcHNl
ZCBUaW1lOiAiICsgZXhwZWN0ZWRbaV1bM10gKyAiPGJyPiI7CisgIGZ1bmN0aW9uIHByb2Nlc3NF
bmRFdmVudHMoZXhwZWN0ZWQpCisgIHsKKworICAgIGZ1bmN0aW9uIGNvbXBhcmVFdmVudEluZm8o
ZTEsIGUyKQorICAgIHsKKyAgICAgIC8vIFNvcnQgYnkgcHJvcGVydHkgbmFtZSB0aGVuIGV2ZW50
IHRhcmdldCBpZAorCisgICAgICAvLyBJbmRleCAwIGlzIHRoZSBwcm9wZXJ0eSBuYW1lCisgICAg
ICBpZiAoZTFbMF08ZTJbMF0pIHJldHVybiAtMTsKKyAgICAgIGlmIChlMVswXT5lMlswXSkgcmV0
dXJuICsxOworCisgICAgICAvLyBJbmRleCAxIGlzIHRoZSB0YXJnZXQgaWQKKyAgICAgIGlmIChl
MVsxXTxlMlsxXSkgcmV0dXJuIC0xOworICAgICAgaWYgKGUxWzFdPmUyWzFdKSByZXR1cm4gKzE7
CisKKyAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXN1bHQgKz0gIjwvcD4iOwotICB9IGVs
c2UgaWYgKGV4cGVjdGVkLmxlbmd0aCA8IHJlc3VsdHMubGVuZ3RoKSB7Ci0gICAgcmVzdWx0ICs9
ICI8cD5VbmV4cGVjdGVkIGV2ZW50cyAtLSBGQUlMPGJyPiI7Ci0gICAgZm9yIChpPWV4cGVjdGVk
Lmxlbmd0aDsgaSA8IHJlc3VsdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgIHJlc3VsdCArPSAiVW5l
eHBlY3RlZCBQcm9wZXJ0eTogIiArIHJlc3VsdHNbaV1bMF0gKyAiICI7Ci0gICAgICByZXN1bHQg
Kz0gIlRhcmdldDogIiArIHJlc3VsdHNbaV1bMV0gKyAiICI7Ci0gICAgICByZXN1bHQgKz0gIlR5
cGU6ICIgKyByZXN1bHRzW2ldWzJdICsgIiAiOwotICAgICAgcmVzdWx0ICs9ICJFbGFwc2VkIFRp
bWU6ICIgKyByZXN1bHRzW2ldWzNdICsgIjxicj4iOworCisgICAgZnVuY3Rpb24gZXhhbWluZVJl
c3VsdHMocmVzdWx0cywgZXhwZWN0ZWQpCisgICAgeworICAgICAgLy8gU29ydCByZWNvcmRlZCBh
bmQgZXhwZWN0ZWQgZXZlbnRzIGFycmF5cyBzbyB0aGV5IGhhdmUgdGhlIHNhbWUgb3JkZXJpbmcK
KyAgICAgIGV4cGVjdGVkLnNvcnQoY29tcGFyZUV2ZW50SW5mbyk7CisgICAgICByZXN1bHRzLnNv
cnQoY29tcGFyZUV2ZW50SW5mbyk7CisKKyAgICAgIHZhciByZXN1bHQgPSAnPHA+JzsKKyAgICAg
IGZvciAodmFyIGk9MDsgaSA8IHJlc3VsdHMubGVuZ3RoICYmIGkgPCBleHBlY3RlZC5sZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgcGFzcyA9IGV4cGVjdGVkW2ldWzBdID09IHJlc3VsdHNbaV1b
MF0gJiYgZXhwZWN0ZWRbaV1bMV0gPT0gcmVzdWx0c1tpXVsxXSAmJiBleHBlY3RlZFtpXVsyXSA9
PSByZXN1bHRzW2ldWzJdOworCisgICAgICAgIGlmIChwYXNzKQorICAgICAgICAgIHJlc3VsdCAr
PSAiUEFTUyAtLS0gIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAt
LS0gIjsKKworICAgICAgICByZXN1bHQgKz0gIltFeHBlY3RlZF0gUHJvcGVydHk6ICIgKyBleHBl
Y3RlZFtpXVswXSArICIgIjsKKyAgICAgICAgcmVzdWx0ICs9ICJUYXJnZXQ6ICIgKyBleHBlY3Rl
ZFtpXVsxXSArICIgIjsKKyAgICAgICAgcmVzdWx0ICs9ICJFbGFwc2VkIFRpbWU6ICIgKyBleHBl
Y3RlZFtpXVsyXTsKKworICAgICAgICBpZiAoIXBhc3MpIHsKKyAgICAgICAgICByZXN1bHQgKz0g
IiAtLS0gIjsKKyAgICAgICAgICByZXN1bHQgKz0gIltSZWNlaXZlZF0gUHJvcGVydHk6ICIgKyBy
ZXN1bHRzW2ldWzBdICsgIiAiOworICAgICAgICAgIHJlc3VsdCArPSAiVGFyZ2V0OiAiICsgcmVz
dWx0c1tpXVsxXSArICIgIjsKKyAgICAgICAgICByZXN1bHQgKz0gIkVsYXBzZWQgVGltZTogIiAr
IHJlc3VsdHNbaV1bMl07CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgKz0gIjxicj4iOwor
ICAgICAgfQorICAgICAgcmVzdWx0ICs9ICI8L3A+IjsKKworICAgICAgaWYgKGV4cGVjdGVkLmxl
bmd0aCA+IHJlc3VsdHMubGVuZ3RoKSB7CisgICAgICAgIHJlc3VsdCArPSAiPHA+RkFJTCAtIE1p
c3NpbmcgZXZlbnRzPGJyPiI7CisgICAgICAgIGZvciAoaT1yZXN1bHRzLmxlbmd0aDsgaSA8IGV4
cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgcmVzdWx0ICs9ICJbTWlzc2luZ10gUHJv
cGVydHk6ICIgKyBleHBlY3RlZFtpXVswXSArICIgIjsKKyAgICAgICAgICByZXN1bHQgKz0gIlRh
cmdldDogIiArIGV4cGVjdGVkW2ldWzFdICsgIiAiOworICAgICAgICAgIHJlc3VsdCArPSAiRWxh
cHNlZCBUaW1lOiAiICsgZXhwZWN0ZWRbaV1bMl0gKyAiPGJyPiI7CisgICAgICAgIH0KKyAgICAg
ICAgcmVzdWx0ICs9ICI8L3A+IjsKKyAgICAgIH0gZWxzZSBpZiAoZXhwZWN0ZWQubGVuZ3RoIDwg
cmVzdWx0cy5sZW5ndGgpIHsKKyAgICAgICAgcmVzdWx0ICs9ICI8cD5GQUlMIC0gVW5leHBlY3Rl
ZCBldmVudHM8YnI+IjsKKyAgICAgICAgZm9yIChpPWV4cGVjdGVkLmxlbmd0aDsgaSA8IHJlc3Vs
dHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICByZXN1bHQgKz0gIltVbmV4cGVjdGVkXSBQcm9w
ZXJ0eTogIiArIHJlc3VsdHNbaV1bMF0gKyAiICI7CisgICAgICAgICAgcmVzdWx0ICs9ICJUYXJn
ZXQ6ICIgKyByZXN1bHRzW2ldWzFdICsgIiAiOworICAgICAgICAgIHJlc3VsdCArPSAiRWxhcHNl
ZCBUaW1lOiAiICsgcmVzdWx0c1tpXVsyXSArICI8YnI+IjsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQgKz0gIjwvcD4iOworICAgICAgfQorCisgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
LSAgICByZXN1bHQgKz0gIjwvcD4iOwotICB9Ci0gIAotICByZXR1cm4gcmVzdWx0OwotfQogCi1m
dW5jdGlvbiBjbGVhbnVwKCkKLXsKLSAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykpOwotICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gZXhhbWluZVJlc3VsdHMoZXhwZWN0ZWQpOworICAgIGRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5l
cicpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0g
ZXhhbWluZVJlc3VsdHMoX3JlY29yZGVkRXZlbnRzLCBleHBlY3RlZCk7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgIH0KIAotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICBmdW5jdGlvbiBzdGFy
dFRlc3QoZXhwZWN0ZWQsIHRpbWVvdXQsIGNhbGxiYWNrKQorICB7CisgICAgaWYgKGNhbGxiYWNr
KQorICAgICAgY2FsbGJhY2soKTsKKyAgICAKKyAgICBmb3IgKHZhciBpPTA7IGkgPCBleHBlY3Rl
ZC5sZW5ndGg7ICsraSkgeworICAgICAgaWYgKGV4cGVjdGVkW2ldWzNdKSB7CisgICAgICAgIHZh
ciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChleHBlY3RlZFtpXVsxXSk7CisgICAgICAg
IGJveC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVjb3JkVHJhbnNp
dGlvbkVuZEV2ZW50LCBmYWxzZSk7CisgICAgICB9CisgICAgfQorICAgIAorICAgIHdpbmRvdy5z
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBwcm9jZXNzRW5kRXZlbnRzKGV4cGVjdGVkKTsgfSwgdGlt
ZW91dCAqIDEwMDApOworICB9CisgIAorICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IGZ1bmN0aW9uKCkgeyBzdGFydFRlc3QoZXhwZWN0ZWQsIHRpbWVvdXQsIGNhbGxiYWNrKSB9LCBm
YWxzZSk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1l
dmVudC1sZWZ0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1sZWZ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkz
NjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1sZWZ0
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKIEluaXRpYXRpbmcg
YSA1MDBtcyB0cmFuc2l0aW9uIG9uIHRoZSBsZWZ0IHByb3BlcnR5IG9mIGJveDEuCiAKLUV4cGVj
dGVkIFByb3BlcnR5OiBsZWZ0IFRhcmdldDogYm94MSBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5k
IEVsYXBzZWQgVGltZTogMC41IC0tIFBBU1MKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6
IGxlZnQgVGFyZ2V0OiBib3gxIEVsYXBzZWQgVGltZTogMC41CiAKSW5kZXg6IExheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LWxlZnQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1sZWZ0Lmh0bWwJ
KHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1l
bmQtZXZlbnQtbGVmdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywyOSArMTMsMjIgQEAKICAg
ICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKICAgICB9CiAgIDwvc3R5bGU+
Ci0gIDxzY3JpcHQgc3JjPSJlbmQtZXZlbnQtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9u
LWVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZCA9IFsK
LSAgICAgIFsibGVmdCIsICJib3gxIiwgIndlYmtpdFRyYW5zaXRpb25FbmQiLCAwLjVdCisgICAg
CisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3BlcnR5LW5hbWUs
IGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyJsZWZ0IiwgImJveDEi
LCAwLjUsIHRydWVdCiAgICAgXTsKICAgICAKLSAgICBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24o
KQorICAgIGZ1bmN0aW9uIHNldHVwVGVzdCgpCiAgICAgewotICAgICAgdmFyIGJveGVzID0gZG9j
dW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3gnKTsKLSAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYm94ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYm94ZXNbaV0uYWRkRXZl
bnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlY29yZEV2ZW50LCBmYWxzZSk7Ci0g
ICAgICAgIGJveGVzW2ldLnN0eWxlLmxlZnQgPSAnMjAwcHgnOwotICAgICAgfQotICAgICAgCi0g
ICAgICB3aW5kb3cuc2V0VGltZW91dChjbGVhbnVwLCA3MDApOworICAgICAgdmFyIGJveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJyk7CisgICAgICBib3guc3R5bGUubGVmdCA9ICcy
MDBweCc7CiAgICAgfQogICAgIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
c3RhcnRUcmFuc2l0aW9uLCBmYWxzZSk7CisgICAgcnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWRF
bmRFdmVudHMsIDAuNywgc2V0dXBUZXN0KTsKKyAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50
LW11bHRpcGxlLTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wMS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQt
ZXZlbnQtbXVsdGlwbGUtMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogSW5pdGlhdGluZyBhIDUwMG1zIHRyYW5zaXRpb24gb24gdGhlIGxlZnQsIGJhY2tncm91
bmQtY29sb3IsIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllcyBvZiBib3gxLgogCi1FeHBlY3Rl
ZCBQcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciBUYXJnZXQ6IGJveDEgVHlwZTogd2Via2l0VHJh
bnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAuNSAtLSBQQVNTCi1FeHBlY3RlZCBQcm9wZXJ0eTog
aGVpZ2h0IFRhcmdldDogYm94MSBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGlt
ZTogMC41IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiBsZWZ0IFRhcmdldDogYm94MSBUeXBl
OiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGltZTogMC41IC0tIFBBU1MKLUV4cGVjdGVk
IFByb3BlcnR5OiB3aWR0aCBUYXJnZXQ6IGJveDEgVHlwZTogd2Via2l0VHJhbnNpdGlvbkVuZCBF
bGFwc2VkIFRpbWU6IDAuNSAtLSBQQVNTCitQQVNTIC0tLSBbRXhwZWN0ZWRdIFByb3BlcnR5OiBi
YWNrZ3JvdW5kLWNvbG9yIFRhcmdldDogYm94MSBFbGFwc2VkIFRpbWU6IDAuNQorUEFTUyAtLS0g
W0V4cGVjdGVkXSBQcm9wZXJ0eTogaGVpZ2h0IFRhcmdldDogYm94MSBFbGFwc2VkIFRpbWU6IDAu
NQorUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJveDEgRWxhcHNl
ZCBUaW1lOiAwLjUKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IHdpZHRoIFRhcmdldDog
Ym94MSBFbGFwc2VkIFRpbWU6IDAuNQogCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wMS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW11bHRpcGxlLTAxLmh0bWwJ
KHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1l
bmQtZXZlbnQtbXVsdGlwbGUtMDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsMzUgKzEzLDI5
IEBACiAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7CiAgICAgfQogICA8
L3N0eWxlPgotICA8c2NyaXB0IHNyYz0iZW5kLWV2ZW50LWhlbHBlcnMuanMiIHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0idHJh
bnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFy
c2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBj
aGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9CiAgICAgCi0gICAgdmFyIGV4
cGVjdGVkID0gWwotICAgICAgWyJiYWNrZ3JvdW5kLWNvbG9yIiwgImJveDEiLCAid2Via2l0VHJh
bnNpdGlvbkVuZCIsIDAuNV0sCi0gICAgICBbImhlaWdodCIsICJib3gxIiwgIndlYmtpdFRyYW5z
aXRpb25FbmQiLCAwLjVdLAotICAgICAgWyJsZWZ0IiwgImJveDEiLCAid2Via2l0VHJhbnNpdGlv
bkVuZCIsIDAuNV0sCi0gICAgICBbIndpZHRoIiwgImJveDEiLCAid2Via2l0VHJhbnNpdGlvbkVu
ZCIsIDAuNV0sCisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3Bl
cnR5LW5hbWUsIGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyJiYWNr
Z3JvdW5kLWNvbG9yIiwgImJveDEiLCAwLjUsIGZhbHNlXSwKKyAgICAgIFsiaGVpZ2h0IiwgImJv
eDEiLCAwLjUsIGZhbHNlXSwKKyAgICAgIFsibGVmdCIsICJib3gxIiwgMC41LCBmYWxzZV0sCisg
ICAgICBbIndpZHRoIiwgImJveDEiLCAwLjUsIGZhbHNlXSwKICAgICBdOwogICAgIAotICAgIGZ1
bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbigpCisgICAgZnVuY3Rpb24gc2V0dXBUZXN0KCkKICAgICB7
Ci0gICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2JveCcpOwotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3hlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICBib3hlc1tpXS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVjb3JkRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgYm94ZXNbaV0uc3R5bGUud2lkdGggPSAiMTUw
cHgiOwotICAgICAgICBib3hlc1tpXS5zdHlsZS5sZWZ0ID0gJzIwMHB4JzsKLSAgICAgICAgYm94
ZXNbaV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JlZCc7Ci0gICAgICAgIGJveGVzW2ldLnN0
eWxlLmhlaWdodCA9ICc4MHB4JzsKLSAgICAgIH0KLSAgICAgIAotICAgICAgd2luZG93LnNldFRp
bWVvdXQoY2xlYW51cCwgNzAwKTsKKyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYm94MSIpOworICAgICAgYm94LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRp
b25FbmQiLCByZWNvcmRUcmFuc2l0aW9uRW5kRXZlbnQsIGZhbHNlKTsKKyAgICAgIGJveC5zdHls
ZS53aWR0aCA9ICIxNTBweCI7CisgICAgICBib3guc3R5bGUubGVmdCA9ICcyMDBweCc7CisgICAg
ICBib3guc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JlZCc7CisgICAgICBib3guc3R5bGUuaGVp
Z2h0ID0gJzgwcHgnOwogICAgIH0KICAgICAKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIHN0YXJ0VHJhbnNpdGlvbiwgZmFsc2UpOworICAgIHJ1blRyYW5zaXRpb25UZXN0KGV4
cGVjdGVkRW5kRXZlbnRzLCAwLjcsIHNldHVwVGVzdCk7CisgICAgCiAgIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVu
ZC1ldmVudC1tdWx0aXBsZS0wMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRp
b24tZW5kLWV2ZW50LW11bHRpcGxlLTAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMSwxMCBAQAogSW5pdGlhdGluZyB0cmFuc2l0aW9ucyBvbiB2YXJpb3VzIHByb3BlcnRp
ZXMgb2YgYWxsIGJveGVzLgogCi1FeHBlY3RlZCBQcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciBU
YXJnZXQ6IGJveDIgVHlwZTogd2Via2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAuNSAt
LSBQQVNTCi1FeHBlY3RlZCBQcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciBUYXJnZXQ6IGJveDMg
VHlwZTogd2Via2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAuNyAtLSBQQVNTCi1FeHBl
Y3RlZCBQcm9wZXJ0eTogaGVpZ2h0IFRhcmdldDogYm94MyBUeXBlOiB3ZWJraXRUcmFuc2l0aW9u
RW5kIEVsYXBzZWQgVGltZTogMC43IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiBsZWZ0IFRh
cmdldDogYm94MSBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGltZTogMC41IC0t
IFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiBsZWZ0IFRhcmdldDogYm94MiBUeXBlOiB3ZWJraXRU
cmFuc2l0aW9uRW5kIEVsYXBzZWQgVGltZTogMC41IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5
OiBsZWZ0IFRhcmdldDogYm94MyBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGlt
ZTogMC43IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiB3aWR0aCBUYXJnZXQ6IGJveDMgVHlw
ZTogd2Via2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAuNyAtLSBQQVNTCitQQVNTIC0t
LSBbRXhwZWN0ZWRdIFByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yIFRhcmdldDogYm94MiBFbGFw
c2VkIFRpbWU6IDAuNQorUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogYmFja2dyb3VuZC1j
b2xvciBUYXJnZXQ6IGJveDMgRWxhcHNlZCBUaW1lOiAwLjcKK1BBU1MgLS0tIFtFeHBlY3RlZF0g
UHJvcGVydHk6IGhlaWdodCBUYXJnZXQ6IGJveDMgRWxhcHNlZCBUaW1lOiAwLjcKK1BBU1MgLS0t
IFtFeHBlY3RlZF0gUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gxIEVsYXBzZWQgVGltZTogMC41
CitQQVNTIC0tLSBbRXhwZWN0ZWRdIFByb3BlcnR5OiBsZWZ0IFRhcmdldDogYm94MiBFbGFwc2Vk
IFRpbWU6IDAuNQorUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJv
eDMgRWxhcHNlZCBUaW1lOiAwLjcKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IHdpZHRo
IFRhcmdldDogYm94MyBFbGFwc2VkIFRpbWU6IDAuNwogCkluZGV4OiBMYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW11bHRpcGxl
LTAyLmh0bWwJKHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MzQgKzMxLDMxIEBACiAgICAgfQogICAgIAogICA8L3N0eWxlPgotICA8c2NyaXB0IHNyYz0iZW5k
LWV2ZW50LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICB9Ci0gICAgdmFyIGV4cGVjdGVkID0gWwotICAgICAgWyJiYWNrZ3JvdW5kLWNv
bG9yIiwgImJveDIiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuNV0sCi0gICAgICBbImJhY2tn
cm91bmQtY29sb3IiLCAiYm94MyIsICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgMC43XSwKLSAgICAg
IFsiaGVpZ2h0IiwgImJveDMiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuN10sCi0gICAgICBb
ImxlZnQiLCAiYm94MSIsICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgMC41XSwKLSAgICAgIFsibGVm
dCIsICJib3gyIiwgIndlYmtpdFRyYW5zaXRpb25FbmQiLCAwLjVdLAotICAgICAgWyJsZWZ0Iiwg
ImJveDMiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuN10sCi0gICAgICBbIndpZHRoIiwgImJv
eDMiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuN10sCisgICAgCisgICAgdmFyIGV4cGVjdGVk
RW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3BlcnR5LW5hbWUsIGVsZW1lbnQtaWQsIGVsYXBz
ZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyJiYWNrZ3JvdW5kLWNvbG9yIiwgImJveDIiLCAwLjUs
IGZhbHNlXSwKKyAgICAgIFsiYmFja2dyb3VuZC1jb2xvciIsICJib3gzIiwgMC43LCBmYWxzZV0s
CisgICAgICBbImhlaWdodCIsICJib3gzIiwgMC43LCBmYWxzZV0sCisgICAgICBbImxlZnQiLCAi
Ym94MSIsIDAuNSwgZmFsc2VdLAorICAgICAgWyJsZWZ0IiwgImJveDIiLCAwLjUsIGZhbHNlXSwK
KyAgICAgIFsibGVmdCIsICJib3gzIiwgMC43LCBmYWxzZV0sCisgICAgICBbIndpZHRoIiwgImJv
eDMiLCAwLjcsIGZhbHNlXSwKICAgICBdOwogCi0gICAgZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9u
KCkKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3QoKQogICAgIHsKICAgICAgIHZhciBib3hlcyA9IGRv
Y3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYm94Jyk7CiAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGJveGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGJveGVzW2ldLmFkZEV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZWNvcmRFdmVudCwgZmFsc2UpOwor
ICAgICAgICBib3hlc1tpXS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwg
cmVjb3JkVHJhbnNpdGlvbkVuZEV2ZW50LCBmYWxzZSk7CiAgICAgICAgIGJveGVzW2ldLmNsYXNz
TmFtZSA9ICJib3ggYm94IiArIChpKzEpOwogICAgICAgfQotICAgICAgCi0gICAgICB3aW5kb3cu
c2V0VGltZW91dChjbGVhbnVwLCAxMDAwKTsKICAgICB9CiAgICAgCi0gICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5zaXRpb24sIGZhbHNlKTsKKyAgICBydW5UcmFu
c2l0aW9uVGVzdChleHBlY3RlZEVuZEV2ZW50cywgMS4wLCBzZXR1cFRlc3QpOworICAgIAogICA8
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW11bHRpcGxl
LTAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wMy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTIgKzEsMTIgQEAKIEluaXRpYXRpbmcgdHJhbnNpdGlvbnMgb24gdmFy
aW91cyBwcm9wZXJ0aWVzIG9mIGFsbCBib3hlcywgd2l0aCBkaWZmZXJlbnQgc3RhcnQgdGltZXMg
b24gdGhlIHRyYW5zaXRpb25zLgogCi1FeHBlY3RlZCBQcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xv
ciBUYXJnZXQ6IGJveDIgVHlwZTogd2Via2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAu
NSAtLSBQQVNTCi1FeHBlY3RlZCBQcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciBUYXJnZXQ6IGJv
eDMgVHlwZTogd2Via2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAuNiAtLSBQQVNTCi1F
eHBlY3RlZCBQcm9wZXJ0eTogaGVpZ2h0IFRhcmdldDogYm94MyBUeXBlOiB3ZWJraXRUcmFuc2l0
aW9uRW5kIEVsYXBzZWQgVGltZTogMC42IC0tIFBBU1MKLUV4cGVjdGVkIFByb3BlcnR5OiBoZWln
aHQgVGFyZ2V0OiBib3g0IFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAw
LjMgLS0gUEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gxIFR5cGU6IHdl
YmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0gUEFTUwotRXhwZWN0ZWQgUHJv
cGVydHk6IGxlZnQgVGFyZ2V0OiBib3gyIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNl
ZCBUaW1lOiAwLjUgLS0gUEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gz
IFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjYgLS0gUEFTUwotRXhw
ZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3g0IFR5cGU6IHdlYmtpdFRyYW5zaXRpb25F
bmQgRWxhcHNlZCBUaW1lOiAwLjMgLS0gUEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6IHdpZHRoIFRh
cmdldDogYm94MyBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGltZTogMC42IC0t
IFBBU1MKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IgVGFy
Z2V0OiBib3gyIEVsYXBzZWQgVGltZTogMC41CitQQVNTIC0tLSBbRXhwZWN0ZWRdIFByb3BlcnR5
OiBiYWNrZ3JvdW5kLWNvbG9yIFRhcmdldDogYm94MyBFbGFwc2VkIFRpbWU6IDAuNgorUEFTUyAt
LS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogaGVpZ2h0IFRhcmdldDogYm94MyBFbGFwc2VkIFRpbWU6
IDAuNgorUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogaGVpZ2h0IFRhcmdldDogYm94NCBF
bGFwc2VkIFRpbWU6IDAuMworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJn
ZXQ6IGJveDEgRWxhcHNlZCBUaW1lOiAwLjUKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6
IGxlZnQgVGFyZ2V0OiBib3gyIEVsYXBzZWQgVGltZTogMC41CitQQVNTIC0tLSBbRXhwZWN0ZWRd
IFByb3BlcnR5OiBsZWZ0IFRhcmdldDogYm94MyBFbGFwc2VkIFRpbWU6IDAuNgorUEFTUyAtLS0g
W0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJveDQgRWxhcHNlZCBUaW1lOiAwLjMK
K1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IHdpZHRoIFRhcmdldDogYm94MyBFbGFwc2Vk
IFRpbWU6IDAuNgogCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVu
ZC1ldmVudC1tdWx0aXBsZS0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW11bHRpcGxlLTAzLmh0bWwJKHJldmlzaW9uIDM5
MzY4KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVs
dGlwbGUtMDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDEsMzUgKzQxLDMzIEBACiAgICAgfQog
CiAgIDwvc3R5bGU+Ci0gIDxzY3JpcHQgc3JjPSJlbmQtZXZlbnQtaGVscGVycy5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSJ0cmFuc2l0aW9uLWVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHZhciBl
eHBlY3RlZCA9IFsKLSAgICAgIFsiYmFja2dyb3VuZC1jb2xvciIsICJib3gyIiwgIndlYmtpdFRy
YW5zaXRpb25FbmQiLCAwLjVdLAotICAgICAgWyJiYWNrZ3JvdW5kLWNvbG9yIiwgImJveDMiLCAi
d2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuNl0sCi0gICAgICBbImhlaWdodCIsICJib3gzIiwgIndl
YmtpdFRyYW5zaXRpb25FbmQiLCAwLjZdLAotICAgICAgWyJoZWlnaHQiLCAiYm94NCIsICJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIiwgMC4zXSwKLSAgICAgIFsibGVmdCIsICJib3gxIiwgIndlYmtpdFRy
YW5zaXRpb25FbmQiLCAwLjVdLAotICAgICAgWyJsZWZ0IiwgImJveDIiLCAid2Via2l0VHJhbnNp
dGlvbkVuZCIsIDAuNV0sCi0gICAgICBbImxlZnQiLCAiYm94MyIsICJ3ZWJraXRUcmFuc2l0aW9u
RW5kIiwgMC42XSwKLSAgICAgIFsibGVmdCIsICJib3g0IiwgIndlYmtpdFRyYW5zaXRpb25FbmQi
LCAwLjNdLAotICAgICAgWyJ3aWR0aCIsICJib3gzIiwgIndlYmtpdFRyYW5zaXRpb25FbmQiLCAw
LjZdCisgICAgCisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3Bl
cnR5LW5hbWUsIGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyJiYWNr
Z3JvdW5kLWNvbG9yIiwgImJveDIiLCAwLjUsIGZhbHNlXSwKKyAgICAgIFsiYmFja2dyb3VuZC1j
b2xvciIsICJib3gzIiwgMC42LCBmYWxzZV0sCisgICAgICBbImhlaWdodCIsICJib3gzIiwgMC42
LCBmYWxzZV0sCisgICAgICBbImhlaWdodCIsICJib3g0IiwgMC4zLCBmYWxzZV0sCisgICAgICBb
ImxlZnQiLCAiYm94MSIsIDAuNSwgZmFsc2VdLAorICAgICAgWyJsZWZ0IiwgImJveDIiLCAwLjUs
IGZhbHNlXSwKKyAgICAgIFsibGVmdCIsICJib3gzIiwgMC42LCBmYWxzZV0sCisgICAgICBbImxl
ZnQiLCAiYm94NCIsIDAuMywgZmFsc2VdLAorICAgICAgWyJ3aWR0aCIsICJib3gzIiwgMC42LCBm
YWxzZV0KICAgICBdOwogICAgIAotICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25FbGVtZW50KGluZGV4
KSB7CisgICAgZnVuY3Rpb24gdHJhbnNpdGlvbkVsZW1lbnQoaW5kZXgpCisgICAgewogICAgICAg
dmFyIGJveGVzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3gnKTsK
ICAgICAgIGJveGVzW2luZGV4LTFdLmNsYXNzTmFtZSA9ICJib3ggYm94IiArIGluZGV4OwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbnMoKQorICAgIGZ1bmN0aW9uIHNldHVw
VGVzdCgpCiAgICAgewogICAgICAgdmFyIGJveGVzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCdib3gnKTsKICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm94ZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgYm94ZXNbaV0uYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJh
bnNpdGlvbkVuZCIsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAgICAgIGJveGVzW2ldLmFkZEV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZWNvcmRUcmFuc2l0aW9uRW5kRXZl
bnQsIGZhbHNlKTsKICAgICAgIH0KIAogICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHRyYW5zaXRpb25FbGVtZW50KDEpOyB9LCAxMDApOwpAQCAtNzcsMTEgKzc1LDEwIEBACiAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdHJhbnNpdGlvbkVsZW1lbnQoMyk7
IH0sIDIwMCk7CiAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdHJhbnNpdGlv
bkVsZW1lbnQoNCk7IH0sIDUwKTsKICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyB0cmFuc2l0aW9uRWxlbWVudCg1KTsgfSwgMTUwKTsKLSAgICAgIAotICAgICAgd2luZG93LnNl
dFRpbWVvdXQoY2xlYW51cCwgMTAwMCk7CiAgICAgfQogICAgIAotICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkJywgc3RhcnRUcmFuc2l0aW9ucywgZmFsc2UpOworICAgIHJ1blRyYW5z
aXRpb25UZXN0KGV4cGVjdGVkRW5kRXZlbnRzLCAxLjAsIHNldHVwVGVzdCk7CisgICAgCiAgIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUt
MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW11bHRpcGxlLTA0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIEluaXRpYXRpbmcgdHJhbnNpdGlvbnMgb24gdHJhbnNm
b3JtIHByb3BlcnRpZXMgb2YgYWxsIGJveGVzLCBzdGFydGluZyBhdCBkaWZmZXJlbnQgdGltZXMg
YW5kIHdpdGggZGlmZmVyZW50IGR1cmF0aW9ucyBhbmQgdmFsdWVzLgogCi1FeHBlY3RlZCBQcm9w
ZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm0gVGFyZ2V0OiBib3gxIFR5cGU6IHdlYmtpdFRyYW5zaXRp
b25FbmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0gUEFTUwotRXhwZWN0ZWQgUHJvcGVydHk6IC13ZWJr
aXQtdHJhbnNmb3JtIFRhcmdldDogYm94MiBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBz
ZWQgVGltZTogMC41NSAtLSBQQVNTCi1FeHBlY3RlZCBQcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zv
cm0gVGFyZ2V0OiBib3g0IFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAw
LjQgLS0gUEFTUworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zv
cm0gVGFyZ2V0OiBib3gxIEVsYXBzZWQgVGltZTogMC41CitQQVNTIC0tLSBbRXhwZWN0ZWRdIFBy
b3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybSBUYXJnZXQ6IGJveDIgRWxhcHNlZCBUaW1lOiAwLjU1
CitQQVNTIC0tLSBbRXhwZWN0ZWRdIFByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybSBUYXJnZXQ6
IGJveDQgRWxhcHNlZCBUaW1lOiAwLjQKIApJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbi1lbmQtZXZlbnQtbXVsdGlwbGUtMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1tdWx0aXBsZS0wNC5odG1s
CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24t
ZW5kLWV2ZW50LW11bHRpcGxlLTA0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI5ICszOCwy
NyBAQAogICAgIH0KIAogICA8L3N0eWxlPgotICA8c2NyaXB0IHNyYz0iZW5kLWV2ZW50LWhlbHBl
cnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0idHJhbnNpdGlvbi1lbmQtZXZlbnQtaGVscGVycy5qcyIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9
Ci0gIAotICAgIHZhciBleHBlY3RlZCA9IFsKLSAgICAgIFsiLXdlYmtpdC10cmFuc2Zvcm0iLCAi
Ym94MSIsICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgMC41XSwKLSAgICAgIFsiLXdlYmtpdC10cmFu
c2Zvcm0iLCAiYm94MiIsICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgMC41NV0sCi0gICAgICBbIi13
ZWJraXQtdHJhbnNmb3JtIiwgImJveDQiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuNF0KKyAg
ICAKKyAgICB2YXIgZXhwZWN0ZWRFbmRFdmVudHMgPSBbCisgICAgICAvLyBbcHJvcGVydHktbmFt
ZSwgZWxlbWVudC1pZCwgZWxhcHNlZC10aW1lLCBsaXN0ZW5dCisgICAgICBbIi13ZWJraXQtdHJh
bnNmb3JtIiwgImJveDEiLCAwLjUsIGZhbHNlXSwKKyAgICAgIFsiLXdlYmtpdC10cmFuc2Zvcm0i
LCAiYm94MiIsIDAuNTUsIGZhbHNlXSwKKyAgICAgIFsiLXdlYmtpdC10cmFuc2Zvcm0iLCAiYm94
NCIsIDAuNCwgZmFsc2VdCiAgICAgXTsKICAgCi0gICAgZnVuY3Rpb24gdHJhbnNpdGlvbkVsZW1l
bnQoaW5kZXgpIHsKKyAgICBmdW5jdGlvbiB0cmFuc2l0aW9uRWxlbWVudChpbmRleCkKKyAgICB7
CiAgICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2JveCcpOwogICAgICAgYm94ZXNbaW5kZXgtMV0uY2xhc3NOYW1lID0gImJveCBib3giICsgaW5k
ZXg7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9ucygpCisgICAgZnVuY3Rp
b24gc2V0dXBUZXN0KCkKICAgICB7CiAgICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5ib2R5Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoJ2JveCcpOwogICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBi
b3hlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBib3hlc1tpXS5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRUcmFuc2l0aW9uRW5kIiwgcmVjb3JkRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgYm94ZXNb
aV0uYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIHJlY29yZFRyYW5zaXRp
b25FbmRFdmVudCwgZmFsc2UpOwogICAgICAgfQogCiAgICAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsgdHJhbnNpdGlvbkVsZW1lbnQoMSk7IH0sIDEwMCk7CkBAIC02OCwxMSArNjYs
MTAgQEAKICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0cmFuc2l0aW9uRWxl
bWVudCgzKTsgfSwgMjAwKTsKICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0
cmFuc2l0aW9uRWxlbWVudCg0KTsgfSwgNTApOwogICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHRyYW5zaXRpb25FbGVtZW50KDUpOyB9LCAxNTApOwotICAgICAgCi0gICAgICB3
aW5kb3cuc2V0VGltZW91dChjbGVhbnVwLCAxMDAwKTsKICAgICB9CiAgICAgCi0gICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5zaXRpb25zLCBmYWxzZSk7CisgICAg
cnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWRFbmRFdmVudHMsIDEuMCwgc2V0dXBUZXN0KTsKKyAg
ICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbmVzdGVk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy90cmFuc2l0aW9uLWVuZC1ldmVudC1uZXN0ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogSW5pdGlhdGluZyB0cmFuc2l0aW9ucyBvbiB2YXJpb3VzIHByb3Bl
cnRpZXMgb2YgYWxsIGJveGVzLgogCi1FeHBlY3RlZCBQcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xv
ciBUYXJnZXQ6IGJveDIgVHlwZTogd2Via2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAu
MiAtLSBQQVNTCi1FeHBlY3RlZCBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJveDEgVHlwZTogd2Vi
a2l0VHJhbnNpdGlvbkVuZCBFbGFwc2VkIFRpbWU6IDAuMiAtLSBQQVNTCi1FeHBlY3RlZCBQcm9w
ZXJ0eTogd2lkdGggVGFyZ2V0OiBib3gzIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNl
ZCBUaW1lOiAwLjMgLS0gUEFTUworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogYmFja2dy
b3VuZC1jb2xvciBUYXJnZXQ6IGJveDIgRWxhcHNlZCBUaW1lOiAwLjIKK1BBU1MgLS0tIFtFeHBl
Y3RlZF0gUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gxIEVsYXBzZWQgVGltZTogMC4yCitQQVNT
IC0tLSBbRXhwZWN0ZWRdIFByb3BlcnR5OiB3aWR0aCBUYXJnZXQ6IGJveDMgRWxhcHNlZCBUaW1l
OiAwLjMKIApJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZl
bnQtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbi1lbmQtZXZlbnQtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDM5MzY4KQorKysgTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtbmVzdGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDU2ICsyNyw1OCBAQAogICAgIH0KICAgICAKICAgPC9zdHlsZT4KLSAg
PHNjcmlwdCBzcmM9ImVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tZW5k
LWV2ZW50LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
Pjwvc2NyaXB0PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkID0gWwotICAg
ICAgWyJiYWNrZ3JvdW5kLWNvbG9yIiwgImJveDIiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAu
Ml0sCi0gICAgICBbImxlZnQiLCAiYm94MSIsICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgMC4yXSwK
LSAgICAgIFsid2lkdGgiLCAiYm94MyIsICJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgMC4zXSwKKyAg
ICAKKyAgICB2YXIgZXhwZWN0ZWRFbmRFdmVudHMgPSBbCisgICAgICAvLyBbcHJvcGVydHktbmFt
ZSwgZWxlbWVudC1pZCwgZWxhcHNlZC10aW1lLCBsaXN0ZW5dCisgICAgICBbImJhY2tncm91bmQt
Y29sb3IiLCAiYm94MiIsIDAuMiwgZmFsc2VdLAorICAgICAgWyJsZWZ0IiwgImJveDEiLCAwLjIs
IGZhbHNlXSwKKyAgICAgIFsid2lkdGgiLCAiYm94MyIsIDAuMywgZmFsc2VdLAogICAgIF07CiAg
ICAgCi0gICAgZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uMSgpCisgICAgZnVuY3Rpb24gaGFuZGxl
RW5kRXZlbnQyKGV2ZW50KQogICAgIHsKLSAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYm94MSIpOwotICAgICAgYm94LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5z
aXRpb25FbmQiLCBoYW5kbGVFbmRFdmVudDEsIGZhbHNlKTsKLSAgICAgIGJveC5jbGFzc05hbWUg
PSAiYm94IGJveDEiOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGhhbmRsZUVuZEV2ZW50MShldmVu
dCkgewotICAgICAgcmVjb3JkRXZlbnQoZXZlbnQpOwotICAgICAgc2V0VGltZW91dChzdGFydFRy
YW5zaXRpb24yLCAxMDApOworICAgICAgcmVjb3JkVHJhbnNpdGlvbkVuZEV2ZW50KGV2ZW50KTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24yKCkKICAgICB7Ci0gICAgICB2
YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDIiKTsKKyAgICAgIHZhciBib3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MyIpOwogICAgICAgYm94LmFkZEV2ZW50TGlz
dGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCBoYW5kbGVFbmRFdmVudDIsIGZhbHNlKTsKLSAg
ICAgIGJveC5jbGFzc05hbWUgPSAiYm94IGJveDIiOworICAgICAgYm94LmNsYXNzTmFtZSA9ICJi
b3ggYm94MyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaGFuZGxlRW5kRXZlbnQyKGV2ZW50KSB7
Ci0gICAgICByZWNvcmRFdmVudChldmVudCk7Ci0gICAgICBzZXRUaW1lb3V0KHN0YXJ0VHJhbnNp
dGlvbjMsIDEwMCk7CisgICAgZnVuY3Rpb24gaGFuZGxlRW5kRXZlbnQxKGV2ZW50KQorICAgIHsK
KyAgICAgIHJlY29yZFRyYW5zaXRpb25FbmRFdmVudChldmVudCk7CisgICAgICAKKyAgICAgIHNl
dFRpbWVvdXQoc3RhcnRUcmFuc2l0aW9uMiwgMTAwKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
dGFydFRyYW5zaXRpb24zKCkKKyAgICBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24xKCkKICAgICB7
Ci0gICAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDMiKTsKLSAgICAg
IGJveC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgaGFuZGxlRW5kRXZl
bnQzLCBmYWxzZSk7Ci0gICAgICBib3guY2xhc3NOYW1lID0gImJveCBib3gzIjsKKyAgICAgIHZh
ciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94MiIpOworICAgICAgYm94LmFkZEV2
ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCBoYW5kbGVFbmRFdmVudDEsIGZhbHNl
KTsKKyAgICAgIGJveC5jbGFzc05hbWUgPSAiYm94IGJveDIiOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIGhhbmRsZUVuZEV2ZW50MyhldmVudCkgewotICAgICAgcmVjb3JkRXZlbnQoZXZlbnQpOwot
ICAgICAgd2luZG93LnNldFRpbWVvdXQoY2xlYW51cCwgMTAwKTsKKyAgICBmdW5jdGlvbiBoYW5k
bGVFbmRFdmVudChldmVudCkKKyAgICB7CisgICAgICByZWNvcmRUcmFuc2l0aW9uRW5kRXZlbnQo
ZXZlbnQpOworICAgICAgCisgICAgICBzZXRUaW1lb3V0KHN0YXJ0VHJhbnNpdGlvbjEsIDEwMCk7
CiAgICAgfQogCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5z
aXRpb24xLCBmYWxzZSk7CisgICAgZnVuY3Rpb24gc2V0dXBUZXN0KCkKKyAgICB7CisgICAgICB2
YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveDEiKTsKKyAgICAgIGJveC5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwgaGFuZGxlRW5kRXZlbnQsIGZhbHNl
KTsKKyAgICAgIGJveC5jbGFzc05hbWUgPSAiYm94IGJveDEiOworICAgIH0KKyAgICAKKyAgICBy
dW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZEVuZEV2ZW50cywgMS4wLCBzZXR1cFRlc3QpOworICAg
IAogICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtc2V0LW5vbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXNldC1u
b25lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1zZXQtbm9uZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACiBJbml0aWF0aW5nIHRyYW5zaXRpb25zIG9uIHZhcmlvdXMg
cHJvcGVydGllcyBvZiBhbGwgYm94ZXMuCiAKLUV4cGVjdGVkIFByb3BlcnR5OiBsZWZ0IFRhcmdl
dDogYm94MSBUeXBlOiB3ZWJraXRUcmFuc2l0aW9uRW5kIEVsYXBzZWQgVGltZTogMC4yIC0tIFBB
U1MKK1BBU1MgLS0tIFtFeHBlY3RlZF0gUHJvcGVydHk6IGxlZnQgVGFyZ2V0OiBib3gxIEVsYXBz
ZWQgVGltZTogMC4yCiAKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24t
ZW5kLWV2ZW50LXNldC1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtc2V0LW5vbmUuaHRtbAkocmV2aXNpb24gMzkzNjgp
CisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC1zZXQtbm9u
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzOCArMjIsMzcgQEAKICAgICAgIGxlZnQ6IDEw
MHB4OwogICAgIH0KICAgPC9zdHlsZT4KLSAgPHNjcmlwdCBzcmM9ImVuZC1ldmVudC1oZWxwZXJz
LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InRyYW5zaXRpb24tZW5kLWV2ZW50LWhlbHBlcnMuanMiIHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQot
Ci0gICAgdmFyIGV4cGVjdGVkID0gWwotICAgICAgWyJsZWZ0IiwgImJveDEiLCAid2Via2l0VHJh
bnNpdGlvbkVuZCIsIDAuMl0sCisgICAgCisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWwor
ICAgICAgLy8gW3Byb3BlcnR5LW5hbWUsIGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVu
XQorICAgICAgWyJsZWZ0IiwgImJveDEiLCAwLjIsIGZhbHNlXSwKICAgICBdOwogICAgIAotICAg
IGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbjEoKQorICAgIGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlv
bigpCiAgICAgewogICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3gx
Iik7Ci0gICAgICBib3guYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsIGhh
bmRsZUVuZEV2ZW50MSwgZmFsc2UpOwotICAgICAgYm94LmNsYXNzTmFtZSA9ICJib3ggYm94MSI7
CisgICAgICBib3guY2xhc3NOYW1lID0gImJveCBib3gyIjsKICAgICB9Ci0KLSAgICBmdW5jdGlv
biBoYW5kbGVFbmRFdmVudDEoZXZlbnQpIHsKLSAgICAgIHJlY29yZEV2ZW50KGV2ZW50KTsKKyAg
ICAKKyAgICBmdW5jdGlvbiBoYW5kbGVFbmRFdmVudChldmVudCkKKyAgICB7CisgICAgICByZWNv
cmRUcmFuc2l0aW9uRW5kRXZlbnQoZXZlbnQpOworICAgICAgCiAgICAgICBldmVudC50YXJnZXQu
c3R5bGUud2Via2l0VHJhbnNpdGlvblByb3BlcnR5ID0gIm5vbmUiOwotICAgICAgd2luZG93LnNl
dFRpbWVvdXQoc3RhcnRUcmFuc2l0aW9uMiwgMTAwKTsKLSAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGNsZWFudXAsIDIwMCk7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChzdGFydFRyYW5zaXRpb24s
IDEwMCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uMigpCisgICAgZnVu
Y3Rpb24gc2V0dXBUZXN0KCkKICAgICB7CiAgICAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImJveDEiKTsKLSAgICAgIGJveC5jbGFzc05hbWUgPSAiYm94IGJveDIiOworICAg
ICAgYm94LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCBoYW5kbGVFbmRF
dmVudCwgZmFsc2UpOworICAgICAgYm94LmNsYXNzTmFtZSA9ICJib3ggYm94MSI7CiAgICAgfQot
Ci0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5zaXRpb24xLCBm
YWxzZSk7CisgICAgCisgICAgcnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWRFbmRFdmVudHMsIDAu
NSwgc2V0dXBUZXN0KTsKKyAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6
IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXRyYW5zZm9ybS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNp
dGlvbi1lbmQtZXZlbnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkzNjgpCisr
KyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC10cmFuc2Zvcm0t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogSW5pdGlhdGluZyBh
IDUwMG1zIHRyYW5zaXRpb24gb24gdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eSBvZiBib3gxLgogCi1F
eHBlY3RlZCBQcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm0gVGFyZ2V0OiBib3gxIFR5cGU6IHdl
YmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0gUEFTUworUEFTUyAtLS0gW0V4
cGVjdGVkXSBQcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm0gVGFyZ2V0OiBib3gxIEVsYXBzZWQg
VGltZTogMC41CiAKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5k
LWV2ZW50LXRyYW5zZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXRyYW5zZm9ybS5odG1sCShyZXZpc2lvbiAzOTM2OCkK
KysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2ZW50LXRyYW5zZm9y
bS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwyOSArMTQsMjIgQEAKICAgICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwcHgpOwogICAgIH0KICAgPC9zdHlsZT4KLSAgPHNjcmlw
dCBzcmM9ImVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tZW5kLWV2ZW50
LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2Ny
aXB0PgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkID0gWwotICAgICAgWyIt
d2Via2l0LXRyYW5zZm9ybSIsICJib3gxIiwgIndlYmtpdFRyYW5zaXRpb25FbmQiLCAwLjVdCisg
ICAgCisgICAgdmFyIGV4cGVjdGVkRW5kRXZlbnRzID0gWworICAgICAgLy8gW3Byb3BlcnR5LW5h
bWUsIGVsZW1lbnQtaWQsIGVsYXBzZWQtdGltZSwgbGlzdGVuXQorICAgICAgWyItd2Via2l0LXRy
YW5zZm9ybSIsICJib3gxIiwgMC41LCB0cnVlXQogICAgIF07CiAgICAgCi0gICAgZnVuY3Rpb24g
c3RhcnRUcmFuc2l0aW9uKCkKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3QoKQogICAgIHsKLSAgICAg
IHZhciBib3hlcyA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYm94Jyk7
Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJveGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IGJveGVzW2ldLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLCByZWNvcmRF
dmVudCwgZmFsc2UpOwotICAgICAgICBib3hlc1tpXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAn
dHJhbnNsYXRlKDIwMHB4KSc7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGNsZWFudXAsIDcwMCk7CisgICAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JveDEnKTsKKyAgICAgIGJveC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAndHJhbnNsYXRl
KDIwMHB4KSc7CiAgICAgfQogICAgIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
Jywgc3RhcnRUcmFuc2l0aW9uLCBmYWxzZSk7CisgICAgcnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0
ZWRFbmRFdmVudHMsIDAuNywgc2V0dXBUZXN0KTsKKyAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tZW5kLWV2
ZW50LXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtd2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLWVuZC1ldmVudC13
aW5kb3ctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogSW5pdGlh
dGluZyBhIDUwMG1zIHRyYW5zaXRpb24gb24gdGhlIGxlZnQgcHJvcGVydHkgb2YgYm94MSBhbmQg
Y2F0Y2hpbmcgaXQgb24gdGhlIHdpbmRvdy4KIAotRXhwZWN0ZWQgUHJvcGVydHk6IGxlZnQgVGFy
Z2V0OiBib3gxIFR5cGU6IHdlYmtpdFRyYW5zaXRpb25FbmQgRWxhcHNlZCBUaW1lOiAwLjUgLS0g
UEFTUworUEFTUyAtLS0gW0V4cGVjdGVkXSBQcm9wZXJ0eTogbGVmdCBUYXJnZXQ6IGJveDEgRWxh
cHNlZCBUaW1lOiAwLjUKIApJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlv
bi1lbmQtZXZlbnQtd2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtd2luZG93Lmh0bWwJKHJldmlzaW9uIDM5MzY4KQor
KysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtd2luZG93Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDI5ICsxMywyNCBAQAogICAgICAgLXdlYmtpdC10cmFu
c2l0aW9uLWR1cmF0aW9uOiAwLjVzOwogICAgIH0KICAgPC9zdHlsZT4KLSAgPHNjcmlwdCBzcmM9
ImVuZC1ldmVudC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tZW5kLWV2ZW50LWhlbHBl
cnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pgog
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkID0gWwotICAgICAgWyJsZWZ0Iiwg
ImJveDEiLCAid2Via2l0VHJhbnNpdGlvbkVuZCIsIDAuNV0KKyAgICAKKyAgICB2YXIgZXhwZWN0
ZWRFbmRFdmVudHMgPSBbCisgICAgICAvLyBbcHJvcGVydHktbmFtZSwgZWxlbWVudC1pZCwgZWxh
cHNlZC10aW1lLCBsaXN0ZW5dCisgICAgICBbImxlZnQiLCAiYm94MSIsIDAuNSwgZmFsc2VdCiAg
ICAgXTsKICAgICAKLSAgICBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oKQorICAgIGZ1bmN0aW9u
IHNldHVwVGVzdCgpCiAgICAgewotICAgICAgdmFyIGJveGVzID0gZG9jdW1lbnQuYm9keS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCdib3gnKTsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm94
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYm94ZXNbaV0uc3R5bGUubGVmdCA9ICcyMDBweCc7
Ci0gICAgICB9CisgICAgICB3aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kID0gcmVjb3JkVHJh
bnNpdGlvbkVuZEV2ZW50OwogICAgICAgCi0gICAgICB3aW5kb3cuc2V0VGltZW91dChjbGVhbnVw
LCA3MDApOworICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJyk7
CisgICAgICBib3guc3R5bGUubGVmdCA9ICcyMDBweCc7CiAgICAgfQogICAgIAotICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc3RhcnRUcmFuc2l0aW9uLCBmYWxzZSk7Ci0gICAg
d2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCA9IHJlY29yZEV2ZW50OworICAgIHJ1blRyYW5z
aXRpb25UZXN0KGV4cGVjdGVkRW5kRXZlbnRzLCAwLjcsIHNldHVwVGVzdCk7CisgICAgCiAgIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEzNyBAQAorLyogVGhpcyBpcyB0aGUgaGVscGVyIGZ1bmN0aW9uIHRvIHJ1
biB0cmFuc2l0aW9uIHRlc3RzOgorCitUZXN0IHBhZ2UgcmVxdWlyZW1lbnRzOgorLSBUaGUgYm9k
eSBtdXN0IGNvbnRhaW4gYW4gZW1wdHkgZGl2IHdpdGggaWQgInJlc3VsdCIKKy0gQ2FsbCB0aGlz
IGZ1bmN0aW9uIGRpcmVjdGx5IGZyb20gdGhlIDxzY3JpcHQ+IGluc2lkZSB0aGUgdGVzdCBwYWdl
CisKK0Z1bmN0aW9uIHBhcmFtZXRlcnM6CisgICAgZXhwZWN0ZWQgW3JlcXVpcmVkXTogYW4gYXJy
YXkgb2YgYXJyYXlzIGRlZmluaW5nIGEgc2V0IG9mIENTUyBwcm9wZXJ0aWVzIHRoYXQgbXVzdCBo
YXZlIGdpdmVuIHZhbHVlcyBhdCBzcGVjaWZpYyB0aW1lcyAoc2VlIGJlbG93KQorICAgIGNhbGxi
YWNrIFtvcHRpb25hbF06IGEgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQganVzdCBiZWZvcmUgdGhl
IHRlc3Qgc3RhcnRzIChub25lIGJ5IGRlZmF1bHQpCisgICAgCisgICAgRWFjaCBzdWItYXJyYXkg
bXVzdCBjb250YWluIHRoZXNlIGl0ZW1zIGluIHRoaXMgb3JkZXI6CisgICAgLSB0aGUgdGltZSBp
biBzZWNvbmRzIGF0IHdoaWNoIHRvIHNuYXBzaG90IHRoZSBDU1MgcHJvcGVydHkKKyAgICAtIHRo
ZSBpZCBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCB0byBnZXQgdGhlIENTUyBwcm9wZXJ0eSB2YWx1
ZQorICAgIC0gdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byBnZXQgWzFdCisgICAgLSB0
aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVydHkKKyAgICAtIHRoZSB0b2xlcmFu
Y2UgdG8gdXNlIHdoZW4gY29tcGFyaW5nIHRoZSBlZmZlY3RpdmUgQ1NTIHByb3BlcnR5IHZhbHVl
IHdpdGggaXRzIGV4cGVjdGVkIHZhbHVlCisgICAgCisgICAgWzFdIElmIHRoZSBDU1MgcHJvcGVy
dHkgbmFtZSBpcyAiLXdlYmtpdC10cmFuc2Zvcm0iLCBleHBlY3RlZCB2YWx1ZSBtdXN0IGJlIGFu
IGFycmF5IG9mIDEgb3IgbW9yZSBudW1iZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1hdHJpeCBl
bGVtZW50cywKKyAgICBvciBhIHN0cmluZyB3aGljaCB3aWxsIGJlIGNvbXBhcmVkIGRpcmVjdGx5
ICh1c2VmdWwgaWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzICJub25lIikKKyAgICBJZiB0aGUgQ1NT
IHByb3BlcnR5IG5hbWUgaXMgIi13ZWJraXQtdHJhbnNmb3JtLk4iLCBleHBlY3RlZCB2YWx1ZSBt
dXN0IGJlIGEgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIE50aCBlbGVtZW50IG9mIHRoZSBt
YXRyaXgKKworKi8KK2Z1bmN0aW9uIHJ1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkLCBjYWxsYmFj
aykKK3sKKyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgdmFyIGhhc1BhdXNlVHJhbnNpdGlvbkFQ
SSA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci5w
YXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQ7CisKKyAgICBmdW5jdGlvbiBpc0Ns
b3NlRW5vdWdoKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQorICAgIHsKKyAgICAgICAgdmFy
IGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKKyAgICAgICAgcmV0dXJuIGRpZmYg
PD0gdG9sZXJhbmNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrRXhwZWN0ZWRWYWx1ZShl
eHBlY3RlZCwgaW5kZXgpCisgICAgeworICAgICAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2luZGV4
XVswXTsKKyAgICAgICAgdmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkW2luZGV4XVsxXTsKKyAgICAg
ICAgdmFyIHByb3BlcnR5ID0gZXhwZWN0ZWRbaW5kZXhdWzJdOworICAgICAgICB2YXIgZXhwZWN0
ZWRWYWx1ZSA9IGV4cGVjdGVkW2luZGV4XVszXTsKKyAgICAgICAgdmFyIHRvbGVyYW5jZSA9IGV4
cGVjdGVkW2luZGV4XVs0XTsKKworICAgICAgICB2YXIgY29tcHV0ZWRWYWx1ZTsKKyAgICAgICAg
dmFyIHBhc3M7CisgICAgICAgIGlmICghcHJvcGVydHkuaW5kZXhPZigiLXdlYmtpdC10cmFuc2Zv
cm0iKSkgeworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLndlYmtpdFRyYW5zZm9ybTsK
KworICAgICAgICAgICAgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09ICJzdHJpbmciKQorICAg
ICAgICAgICAgICAgIHBhc3MgPSAoY29tcHV0ZWRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIG0gPSBjb21wdXRlZFZhbHVlLnNwbGl0KCIoIik7CisgICAgICAg
ICAgICAgICAgdmFyIG0gPSBtWzFdLnNwbGl0KCIsIik7CisgICAgICAgICAgICAgICAgcGFzcyA9
IGlzQ2xvc2VFbm91Z2gocGFyc2VGbG9hdChtW3BhcnNlSW50KHByb3BlcnR5LnN1YnN0cmluZygx
OCkpXSksIGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHZhciBtID0gY29tcHV0ZWRWYWx1ZS5zcGxpdCgiKCIpOworICAgICAg
ICAgICAgICAgIHZhciBtID0gbVsxXS5zcGxpdCgiLCIpOworICAgICAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBleHBlY3RlZFZhbHVlLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKHBhcnNlRmxvYXQobVtpXSksIGV4cGVjdGVkVmFsdWVb
aV0sIHRvbGVyYW5jZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFzcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIpIHsKKyAgICAgICAg
ICAgIGNvbXB1dGVkVmFsdWUgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5saW5lSGVpZ2h0KTsKKyAgICAgICAgICAg
IHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRvbGVy
YW5jZSk7CisgICAgICAgIH0gZWxzZSB7ICAgIAorICAgICAgICAgICAgdmFyIGNvbXB1dGVkU3R5
bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgICAgIGNvbXB1
dGVkVmFsdWUgPSBjb21wdXRlZFN0eWxlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUu
Q1NTX05VTUJFUik7CisgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZh
bHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHBhc3MpCisgICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MgLSBcIiIgKyBwcm9wZXJ0eSArICJc
IiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsgIlwiIGVsZW1lbnQgYXQgIiArIHRpbWUg
KyAicyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAiICsgZXhwZWN0ZWRWYWx1ZSArICI8YnI+IjsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlMIC0gXCIiICsgcHJvcGVy
dHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVtZW50IGF0ICIg
KyB0aW1lICsgInMgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgc2F3OiAiICsg
Y29tcHV0ZWRWYWx1ZSArICI8YnI+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBlbmRUZXN0KCkK
KyAgICB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSByZXN1bHQ7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFsdWVDYWxsYmFjayhleHBlY3RlZCwgaW5kZXgp
CisgICAgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IGNoZWNrRXhwZWN0ZWRWYWx1ZShl
eHBlY3RlZCwgaW5kZXgpOyB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoZXhwZWN0
ZWQpCisgICAgeworICAgICAgICB2YXIgbWF4VGltZSA9IDA7CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHRpbWUg
PSBleHBlY3RlZFtpXVswXTsKKyAgICAgICAgICAgIHZhciBlbGVtZW50SWQgPSBleHBlY3RlZFtp
XVsxXTsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2ldWzJdOworICAgICAg
ICAgICAgaWYgKCFwcm9wZXJ0eS5pbmRleE9mKCItd2Via2l0LXRyYW5zZm9ybSIpKQorICAgICAg
ICAgICAgcHJvcGVydHkgPSAiLXdlYmtpdC10cmFuc2Zvcm0iOworCisgICAgICAgICAgICAvLyBX
ZSBjYW4gb25seSB1c2UgdGhlIHRyYW5zaXRpb24gZmFzdC1mb3J3YXJkIG1lY2hhbmlzbSBpZiBE
UlQgaW1wbGVtZW50cyBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoKQorICAg
ICAgICAgICAgaWYgKGhhc1BhdXNlVHJhbnNpdGlvbkFQSSkgeworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChw
cm9wZXJ0eSwgdGltZSwgZWxlbWVudElkKTsKKyAgICAgICAgICAgICAgICBjaGVja0V4cGVjdGVk
VmFsdWUoZXhwZWN0ZWQsIGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHRpbWUgPiBtYXhUaW1lKQorICAgICAgICAgICAgICAgICAgICBt
YXhUaW1lID0gdGltZTsKKworICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNr
RXhwZWN0ZWRWYWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpKSwgdGltZSAqIDEwMDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heFRpbWUgPiAwKQorICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZW5kVGVzdCwgbWF4VGltZSAqIDEwMDAgKyA1MCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gc3RhcnRUZXN0KGV4cGVjdGVkLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmIChjYWxs
YmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisKKyAgICAgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHJ1blRlc3QoZXhwZWN0ZWQpOyB9LCAwKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFleHBlY3RlZCkKKyAgICAgICAg
dGhyb3coIkV4cGVjdGVkIHJlc3VsdHMgYXJlIG1pc3NpbmchIik7CisgICAgCisgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsgc3RhcnRUZXN0KGV4cGVjdGVk
LCBjYWxsYmFjayk7IH0sIGZhbHNlKTsKK30KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDM5MzQxKQkoZnJvbSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFu
c2l0aW9uLXRpbWluZy1mdW5jdGlvbi1zb2Z0d2FyZS1leHBlY3RlZC50eHQ6MzkzNDEpCisrKyBM
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACitib3gxOiB3aXRoaW4gNSUgb2Yg
MjAwOiBQQVNTRUQKK2JveDI6IHdpdGhpbiA1JSBvZiAzMjA6IFBBU1NFRAorYm94Mzogd2l0aGlu
IDUlIG9mIDEyNTogUEFTU0VECitib3g0OiB3aXRoaW4gNSUgb2YgMjcyOiBQQVNTRUQKK2JveDU6
IHdpdGhpbiA1JSBvZiAyMDA6IFBBU1NFRAorCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi1zb2Z0d2FyZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rp
b24tc29mdHdhcmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLXNvZnR3YXJlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICswLDAgQEAKLWJveDE6IHdpdGhpbiA1JSBvZiAy
MDA6IFBBU1NFRAotYm94Mjogd2l0aGluIDUlIG9mIDMyMDogUEFTU0VECi1ib3gzOiB3aXRoaW4g
NSUgb2YgMTI1OiBQQVNTRUQKLWJveDQ6IHdpdGhpbiA1JSBvZiAyNzI6IFBBU1NFRAotYm94NTog
d2l0aGluIDUlIG9mIDIwMDogUEFTU0VECi0KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25z
L3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLXNvZnR3YXJlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24tc29mdHdh
cmUuaHRtbAkocmV2aXNpb24gMzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFu
c2l0aW9uLXRpbWluZy1mdW5jdGlvbi1zb2Z0d2FyZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDgzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gIDx0aXRsZT5UcmFuc2l0aW9uczwvdGl0bGU+
Ci0gIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Ci0gICAgLmJveCB7Ci0g
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgICBsZWZ0OiAwOwotICAgICAgaGVpZ2h0OiAx
MDBweDsKLSAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgIG1hcmdpbjogMTBweDsKLSAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7Ci0gICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246
IDVzOwotICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwot
ICAgIH0KLSAgPC9zdHlsZT4KLSAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHZhciBrRXhwZWN0ZWRz
ID0gewotICAgICAgJ2JveDEnIDogMjAwLAotICAgICAgJ2JveDInIDogMzIwLAotICAgICAgJ2Jv
eDMnIDogMTI1LAotICAgICAgJ2JveDQnIDogMjcyLAotICAgICAgJ2JveDUnIDogMjAwCi0gICAg
fQotICAgIAotICAgIGZ1bmN0aW9uIG1lYXN1cmVQb3NpdGlvbigpCi0gICAgewotICAgICAgdmFy
IGJveGVzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3gnKTsKLQot
ICAgICAgdmFyIHJlc3VsdCA9ICcnOwotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3hlcy5s
ZW5ndGg7ICsraSkKLSAgICAgIHsKLSAgICAgICAgdmFyIGN1ckJveCA9IGJveGVzW2ldOwotICAg
ICAgICB2YXIgY3VyTGVmdCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGN1ckJv
eCkubGVmdCk7Ci0gICAgICAgIAotICAgICAgICB2YXIgZXhwZWN0ZWQgPSBrRXhwZWN0ZWRzW2N1
ckJveC5pZF07Ci0gICAgICAgIHZhciBwYXNzZWQgPSAoTWF0aC5hYnMoY3VyTGVmdCAtIGV4cGVj
dGVkKSAvIGV4cGVjdGVkKSA8IDAuMDU7Ci0gICAgICAgIHZhciB0aGlzUmVzdWx0OwotICAgICAg
ICBpZiAocGFzc2VkKQotICAgICAgICAgIHRoaXNSZXN1bHQgPSBjdXJCb3guaWQgKyAnOiB3aXRo
aW4gNSUgb2YgJyArIGV4cGVjdGVkICsgJzogUEFTU0VEJzsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgIHRoaXNSZXN1bHQgPSBjdXJCb3guaWQgKyAnOiBleHBlY3RlZCAnICsgZXhwZWN0ZWQgKyAn
LCBnb3QgJyArIGN1ckxlZnQgKyAnOyBvdXRzaWRlIDUlOiBGQUlMJzsKLQotICAgICAgICByZXN1
bHQgKz0gdGhpc1Jlc3VsdCArICc8YnI+JzsKLSAgICAgIH0KLQotICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykpOwotCi0g
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0
OwotCi0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBz
dGFydFRyYW5zaXRpb24oKQotICAgIHsKLSAgICAgIHZhciBib3hlcyA9IGRvY3VtZW50LmJvZHku
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYm94Jyk7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGJveGVzLmxlbmd0aDsgKytpKQotICAgICAgICBib3hlc1tpXS5zdHlsZS5sZWZ0ID0gJzQwMHB4
JzsKLSAgICAgIAotICAgICAgd2luZG93LnNldFRpbWVvdXQobWVhc3VyZVBvc2l0aW9uLCAyNTAw
KTsKLSAgICB9Ci0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5z
aXRpb24sIGZhbHNlKTsKLSAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLQotPGRpdiBpZD0i
Y29udGFpbmVyIj4KLSAgPGRpdiBpZD0iYm94MSIgY2xhc3M9ImJveCIgc3R5bGU9Ii13ZWJraXQt
dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsiPjwvZGl2PgotICA8ZGl2IGlkPSJi
b3gyIiBjbGFzcz0iYm94IiBzdHlsZT0iLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlv
bjogZWFzZTsiPjwvZGl2PgotICA8ZGl2IGlkPSJib3gzIiBjbGFzcz0iYm94IiBzdHlsZT0iLXdl
YmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsiPjwvZGl2PgotICA8ZGl2
IGlkPSJib3g0IiBjbGFzcz0iYm94IiBzdHlsZT0iLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1m
dW5jdGlvbjogZWFzZS1vdXQ7Ij48L2Rpdj4KLSAgPGRpdiBpZD0iYm94NSIgY2xhc3M9ImJveCIg
c3R5bGU9Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OyI+
PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KLQotPC9ib2R5PgotPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24uaHRtbAkocmV2
aXNpb24gMzkzNDEpCShmcm9tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb24tdGlt
aW5nLWZ1bmN0aW9uLXNvZnR3YXJlLmh0bWw6MzkzNDEpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5UcmFuc2l0aW9uczwvdGl0bGU+
CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7Cisg
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICBsZWZ0OiAwOworICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246
IDVzOworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwor
ICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHZhciBrRXhwZWN0ZWRz
ID0geworICAgICAgJ2JveDEnIDogMjAwLAorICAgICAgJ2JveDInIDogMzIwLAorICAgICAgJ2Jv
eDMnIDogMTI1LAorICAgICAgJ2JveDQnIDogMjcyLAorICAgICAgJ2JveDUnIDogMjAwCisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIG1lYXN1cmVQb3NpdGlvbigpCisgICAgeworICAgICAgdmFy
IGJveGVzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3gnKTsKKwor
ICAgICAgdmFyIHJlc3VsdCA9ICcnOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3hlcy5s
ZW5ndGg7ICsraSkKKyAgICAgIHsKKyAgICAgICAgdmFyIGN1ckJveCA9IGJveGVzW2ldOworICAg
ICAgICB2YXIgY3VyTGVmdCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGN1ckJv
eCkubGVmdCk7CisgICAgICAgIAorICAgICAgICB2YXIgZXhwZWN0ZWQgPSBrRXhwZWN0ZWRzW2N1
ckJveC5pZF07CisgICAgICAgIHZhciBwYXNzZWQgPSAoTWF0aC5hYnMoY3VyTGVmdCAtIGV4cGVj
dGVkKSAvIGV4cGVjdGVkKSA8IDAuMDU7CisgICAgICAgIHZhciB0aGlzUmVzdWx0OworICAgICAg
ICBpZiAocGFzc2VkKQorICAgICAgICAgIHRoaXNSZXN1bHQgPSBjdXJCb3guaWQgKyAnOiB3aXRo
aW4gNSUgb2YgJyArIGV4cGVjdGVkICsgJzogUEFTU0VEJzsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIHRoaXNSZXN1bHQgPSBjdXJCb3guaWQgKyAnOiBleHBlY3RlZCAnICsgZXhwZWN0ZWQgKyAn
LCBnb3QgJyArIGN1ckxlZnQgKyAnOyBvdXRzaWRlIDUlOiBGQUlMJzsKKworICAgICAgICByZXN1
bHQgKz0gdGhpc1Jlc3VsdCArICc8YnI+JzsKKyAgICAgIH0KKworICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykpOworCisg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0
OworCisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dGFydFRyYW5zaXRpb24oKQorICAgIHsKKyAgICAgIHZhciBib3hlcyA9IGRvY3VtZW50LmJvZHku
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYm94Jyk7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGJveGVzLmxlbmd0aDsgKytpKQorICAgICAgICBib3hlc1tpXS5zdHlsZS5sZWZ0ID0gJzQwMHB4
JzsKKyAgICAgIAorICAgICAgd2luZG93LnNldFRpbWVvdXQobWVhc3VyZVBvc2l0aW9uLCAyNTAw
KTsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5z
aXRpb24sIGZhbHNlKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0i
Y29udGFpbmVyIj4KKyAgPGRpdiBpZD0iYm94MSIgY2xhc3M9ImJveCIgc3R5bGU9Ii13ZWJraXQt
dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsiPjwvZGl2PgorICA8ZGl2IGlkPSJi
b3gyIiBjbGFzcz0iYm94IiBzdHlsZT0iLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlv
bjogZWFzZTsiPjwvZGl2PgorICA8ZGl2IGlkPSJib3gzIiBjbGFzcz0iYm94IiBzdHlsZT0iLXdl
YmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsiPjwvZGl2PgorICA8ZGl2
IGlkPSJib3g0IiBjbGFzcz0iYm94IiBzdHlsZT0iLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1m
dW5jdGlvbjogZWFzZS1vdXQ7Ij48L2Rpdj4KKyAgPGRpdiBpZD0iYm94NSIgY2xhc3M9ImJveCIg
c3R5bGU9Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OyI+
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3plcm8tZHVyYXRpb24taW4tbGlzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvemVyby1kdXJhdGlvbi1pbi1saXN0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMzkzNjgpCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy96ZXJvLWR1cmF0
aW9uLWluLWxpc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAog
VGVzdHMgdGhhdCB3aXRoIGEgemVybyBkdXJhdGlvbiB0cmFuc2l0aW9uIG9uIHRvcCwgaXQgZG9l
cyBub3QgYW5pbWF0ZQogCi1QQVNTCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94IiBl
bGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDUwCitQQVNTIC0gInRvcCIg
cHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogMTAwCisKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3plcm8tZHVyYXRpb24taW4t
bGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3plcm8tZHVy
YXRpb24taW4tbGlzdC5odG1sCShyZXZpc2lvbiAzOTM2OCkKKysrIExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3plcm8tZHVyYXRpb24taW4tbGlzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw1
MCArMTYsMjQgQEAKICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogdG9wLCBsZWZ0
OwogICAgIH0KICAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9InRyYW5zaXRpb24tdGVzdC1oZWxw
ZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4K
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgfQogICAgIAotICAgIHJlc3VsdCA9ICJQQVNTIjsKLSAgICBjb25zdCBkZWZh
dWx0VG9sZXJhbmNlID0gMTA7CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAv
LyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2Vd
CisgICAgICBbMC4yNSwgImJveCIsICJsZWZ0IiwgNTAsIDEwXSwKKyAgICAgIFswLjI1LCAiYm94
IiwgInRvcCIsIDEwMCwgMTBdLAorICAgIF07CiAgICAgCi0gICAgZnVuY3Rpb24gaXNFcXVhbChh
Y3R1YWwsIGRlc2lyZWQsIHRvbGVyYW5jZSkKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3QoKQogICAg
IHsKLSAgICAgICAgaWYgKHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwgdG9sZXJhbmNlID09IDAp
Ci0gICAgICAgICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNlOwotICAgICAgICB2YXIg
ZGlmZiA9IE1hdGguYWJzKGFjdHVhbCAtIGRlc2lyZWQpOwotICAgICAgICByZXR1cm4gZGlmZiA8
IHRvbGVyYW5jZTsKLSAgICB9Ci0gICAgCi0gICAgZnVuY3Rpb24gY2hlY2soKQotICAgIHsKLSAg
ICAgICAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JveCcpKTsKLSAgICAgICAgaWYgKCFpc0VxdWFsKHBhcnNlSW50KHN0eWxlLmxl
ZnQpLCA1MCwgZGVmYXVsdFRvbGVyYW5jZSkpCi0gICAgICAgICAgICByZXN1bHQgPSAiRkFJTCAo
bGVmdCB3YXM6IiArIHN0eWxlLmxlZnQgKyAiLCBzaG91bGQgYmUgNTApIjsKLSAgICAgICAgZWxz
ZSBpZiAoIWlzRXF1YWwocGFyc2VJbnQoc3R5bGUudG9wKSwgMTAwLCBkZWZhdWx0VG9sZXJhbmNl
KSkKLSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMICh0b3Agd2FzOiIgKyBzdHlsZS50b3AgKyAi
LCBzaG91bGQgYmUgMTAwKSI7Ci0KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jyk7CisgICAg
ICBib3guc3R5bGUudG9wID0gJzEwMHB4JzsKKyAgICAgIGJveC5zdHlsZS5sZWZ0ID0gJzEwMHB4
JzsKICAgICB9CiAgICAgCi0gICAgZnVuY3Rpb24gc3RhcnRUaW1lb3V0KCkKLSAgICB7Ci0gICAg
ICAgIHNldFRpbWVvdXQoY2hlY2ssIDI1MCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RhcnQo
KQotICAgIHsKLSAgICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gn
KTsKLSAgICAgICAgYm94LnN0eWxlLnRvcCA9ICcxMDBweCc7Ci0gICAgICAgIGJveC5zdHlsZS5s
ZWZ0ID0gJzEwMHB4JzsKLSAgICAgICAgc2V0VGltZW91dChzdGFydFRpbWVvdXQsIDApOyAgICAv
LyB0aGlzIGdpdmVzIHRoZSBzdHlsZSB0aW1lIHRvIHJlc29sdmUKLSAgICB9CisgICAgcnVuVHJh
bnNpdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMsIHNldHVwVGVzdCk7CiAgICAgCi0gICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydCwgZmFsc2UpOwogICA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5Pgo=
</data>
<flag name="review"
          id="12311"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>