<?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>155626</bug_id>
          
          <creation_ts>2016-03-17 22:07:48 -0700</creation_ts>
          <short_desc>Add unit tests for config.json and statistics.js</short_desc>
          <delta_ts>2016-03-18 00:15:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176034</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-17 22:07:48 -0700</bug_when>
    <thetext>Add a bunch of Mocha tests (see https://mochajs.org) for validating config.json and statistics.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176037</commentid>
    <comment_count>1</comment_count>
      <attachid>274373</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-17 22:21:09 -0700</bug_when>
    <thetext>Created attachment 274373
Adds tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176089</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 00:15:23 -0700</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176090</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-18 00:15:56 -0700</bug_when>
    <thetext>Committed r198386: &lt;http://trac.webkit.org/changeset/198386&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274373</attachid>
            <date>2016-03-17 22:21:09 -0700</date>
            <delta_ts>2016-03-17 23:48:00 -0700</delta_ts>
            <desc>Adds tests</desc>
            <filename>bug-155626-20160317222108.patch</filename>
            <type>text/plain</type>
            <size>42068</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4Mzc3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ2IEBACisyMDE2LTAzLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciBjb25maWcuanNvbiBhbmQgc3RhdGlzdGljcy5q
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
bW9jaGEgdW5pdCB0ZXN0cyBmb3Igc3RhdGlzdGljcy5qcyBhbmQgdmFsaWRhdGluZyBjb25maWcu
anNvbi4gRm9yIHNlZ21lbnRhdGlvbnMsIEkndmUgZXh0cmFjdGVkCisgICAgICAgIHJlYWwgZGF0
YSBmcm9tIG91ciBpbnRlcm5hbCBwZXJmIGRhc2hib2FyZC4KKworICAgICAgICBBbHNvIGZpeGVk
IHNvbWUgYnVncyBjb3ZlcmVkIGJ5IHRoZXNlIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHB1Ymxp
Yy9zaGFyZWQvc3RhdGlzdGljcy5qczoKKyAgICAgICAgKFN0YXRpc3RpY3MubW92aW5nQXZlcmFn
ZSk6IEZpeGVkIGEgYnVnIHRoYXQgZm9yd2FyZFdpbmRvd1NpemUgd2FzIG5ldmVyIHVzZWQuCisg
ICAgICAgIChTdGF0aXN0aWNzLmV4cG9uZW50aWFsTW92aW5nQXZlcmFnZSk6IEZpeGVkIHRoZSBi
dWcgdGhhdCB0aGUgbW92aW5nIGF2ZXJhZ2Ugc3RhcnRzIGF0IDAuIEl0IHNob3VsZAorICAgICAg
ICBzdGFydCBhdCB0aGUgZmlyc3QgdmFsdWUgaW5zdGVhZC4KKyAgICAgICAgKC5zcGxpdEludG9T
ZWdtZW50c1VudGlsR29vZEVub3VnaCk6IEZpeGVkIHRoZSBidWcgdGhhdCB3ZSBtYXkgdHJ5IHRv
IHNlZ21lbnQgYSB0aW1lIHNlcmllcyBpbnRvCisgICAgICAgIG1vcmUgcGFydHMgdGhhbiB0aGVy
ZSBhcmUgZGF0YSBwb2ludHMuIENsZWFybHksIHRoYXQgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4K
KyAgICAgICAgKC5maW5kT3B0aW1hbFNlZ21lbnRhdGlvbik6IFJlbmFtZWQgbG9jYWwgdmFyaWFi
bGVzIHNvIHRoYXQgdGhleSdyZSBtb3JlIGRlc2NyaXB0aXZlLCBhbmQgcmV3cm90ZQorICAgICAg
ICB0aGUgZGVidWdnaW5nIGNvZGUgd2FzIHRoZSBvbGQgY29kZSB3YXMgZW1pdHRpbmcgc29tZSB1
c2VsZXNzIGRhdGEuIEFsc28gZml4ZWQgdGhlIGJ1ZyB0aGF0IHRoZSBsZW5ndGgKKyAgICAgICAg
b2YgInNlZ21lbnRhdGlvbiIgd2FzIG9mZiBieSBvbmUgKHdlIG5lZWQgc2VnbWVudENvdW50ICsg
MSBlbGVtZW50cyBpbiB0aGUgYXJyYXkgc2luZSB3ZSBhbHdheXMKKyAgICAgICAgaW5jbHVkZSB0
aGUgc3RhcnQgb2YgdGhlIGZpcnN0IHNlZ21lbnQgPSAwIGFuZCB0aGUgZW5kIG9mIHRoZSBsYXN0
IHNlZ21lbnQgPSB2YWx1ZXMubGVuZ3RoKS4KKyAgICAgICAgKC5TYW1wbGVWYXJpYW5jZVVwcGVy
VHJpYW5ndWxhck1hdHJpeCk6CisgICAgICAgIChTdGF0aXN0aWNzKTogTW9kZXJuaXplZCB0aGUg
ZXhwb3J0IGNvZGUuCisgICAgICAgICogdG9vbHMvanM6IEFkZGVkLgorICAgICAgICAqIHRvb2xz
L2pzL2NvbmZpZy5qczogQWRkZWQuCisgICAgICAgIChDb25maWcpOiBBZGRlZC4KKyAgICAgICAg
KENvbmZpZy5wcm90b3R5cGUuY29uZmlnRmlsZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKENvbmZp
Zy5wcm90b3R5cGUudmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKENvbmZpZy5wcm90b3R5cGUucGF0
aCk6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2pzL2RhdGFiYXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKERhdGFiYXNlKTogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZS5wcm90b3R5cGUuY29ubmVj
dCk6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2UucHJvdG90eXBlLmRpc2Nvbm5lY3QpOiBBZGRl
ZC4KKyAgICAgICAgKiB1bml0LXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKiB1bml0LXRlc3RzL2No
ZWNrY29uZmlnLmpzOiBBZGRlZC4gVmFsaWRhdGVzIGNvbmZpZy5qc29uLiBUaGlzIGlzIHVzZWZ1
bCB3aGlsZSBzZXR0aW5nIHVwCisgICAgICAgIGEgbG9jYWwgaW5zdGFuY2Ugb2YgdGhlIHBlcmYg
ZGFzaGJvYXJkLgorICAgICAgICAqIHVuaXQtdGVzdHMvc3RhdGlzdGljcy10ZXN0cy5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQuYWxtb3N0RXF1YWwpOiBBZGRlZC4gQXNzZXJ0cyB0aGF0IHR3
byBmbG9hdGluZyB2YWx1ZXMgYXJlIHdpdGhpbiBhIGdpdmVuIHNpZ25pZmljYW50IGRpZ2l0cy4K
KyAgICAgICAgKC5zdGRldik6CisgICAgICAgICguZGVsdGEpOgorICAgICAgICAoLmNvbXB1dGVX
ZWxjaHNUKToKKwogMjAxNi0wMy0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggYSB0eXBvIHdoaWNoIHdhcyBzdXBwb3NlZCB0byBiZSBmaXhlZCBpbiBy
MTk4MzUxLgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3Rh
dGlzdGljcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3NoYXJlZC9zdGF0aXN0aWNzLmpzCShyZXZpc2lvbiAxOTgzNjEpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjIsNyArMTIyLDcgQEAgdmFyIFN0YXRpc3RpY3MgPSBuZXcgKGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgIHZhciBzdW0gPSAwOwogICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgICAg
IGZvciAodmFyIGogPSBpIC0gYmFja3dhcmRXaW5kb3dTaXplOyBqIDwgaSArIGJhY2t3YXJkV2lu
ZG93U2l6ZTsgaisrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gaSAtIGJhY2t3YXJkV2lu
ZG93U2l6ZTsgaiA8PSBpICsgZm9yd2FyZFdpbmRvd1NpemU7IGorKykgewogICAgICAgICAgICAg
ICAgIGlmIChqID49IDAgJiYgaiA8IHZhbHVlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAg
ICAgc3VtICs9IHZhbHVlc1tqXTsKICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTE0
NSw4ICsxNDUsOSBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogCiAgICAg
dGhpcy5leHBvbmVudGlhbE1vdmluZ0F2ZXJhZ2UgPSBmdW5jdGlvbiAodmFsdWVzLCBzbW9vdGhp
bmdGYWN0b3IpIHsKICAgICAgICAgdmFyIGF2ZXJhZ2VzID0gbmV3IEFycmF5KHZhbHVlcy5sZW5n
dGgpOwotICAgICAgICB2YXIgbW92aW5nQXZlcmFnZSA9IDA7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBtb3ZpbmdBdmVyYWdl
ID0gdmFsdWVzWzBdOworICAgICAgICBhdmVyYWdlc1swXSA9IG1vdmluZ0F2ZXJhZ2U7CisgICAg
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAg
ICBtb3ZpbmdBdmVyYWdlID0gc21vb3RoaW5nRmFjdG9yICogdmFsdWVzW2ldICsgKDEgLSBzbW9v
dGhpbmdGYWN0b3IpICogbW92aW5nQXZlcmFnZTsKICAgICAgICAgICAgIGF2ZXJhZ2VzW2ldID0g
bW92aW5nQXZlcmFnZTsKICAgICAgICAgfQpAQCAtMjgwLDcgKzI4MSw3IEBAIHZhciBTdGF0aXN0
aWNzID0gbmV3IChmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgdmFyIHNlZ21lbnRhdGlvbjsKICAg
ICAgICAgdmFyIG1pblRvdGFsQ29zdCA9IEluZmluaXR5OwotICAgICAgICB2YXIgbWF4SyA9IDUw
OworICAgICAgICB2YXIgbWF4SyA9IE1hdGgubWluKDUwLCB2YWx1ZXMubGVuZ3RoKTsKIAogICAg
ICAgICBmb3IgKHZhciBrID0gMTsgayA8IG1heEs7IGsrKykgewogICAgICAgICAgICAgdmFyIHN0
YXJ0ID0gRGF0ZS5ub3coKTsKQEAgLTMwMiwxMCArMzAzLDEwIEBAIHZhciBTdGF0aXN0aWNzID0g
bmV3IChmdW5jdGlvbiAoKSB7CiAgICAgZnVuY3Rpb24gZmluZE9wdGltYWxTZWdtZW50YXRpb24o
dmFsdWVzLCBjb3N0TWF0cml4LCBzZWdtZW50Q291bnQpIHsKICAgICAgICAgLy8gRHluYW1pYyBw
cm9ncmFtbWluZy4gY29zdFtpXVtrXSA9IFRoZSBjb3N0IHRvIHNlZ21lbnRpbmcgdmFsdWVzIHVw
IHRvIGkgaW50byBrIHNlZ21lbnRzLgogICAgICAgICB2YXIgY29zdCA9IG5ldyBBcnJheSh2YWx1
ZXMubGVuZ3RoKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgICAgIGNvc3RbaV0gPSBuZXcgRmxvYXQzMkFycmF5KHNlZ21lbnRDb3Vu
dCArIDEpOwotICAgICAgICB9CisgICAgICAgIGZvciAodmFyIHNlZ21lbnRFbmQgPSAwOyBzZWdt
ZW50RW5kIDwgdmFsdWVzLmxlbmd0aDsgc2VnbWVudEVuZCsrKQorICAgICAgICAgICAgY29zdFtz
ZWdtZW50RW5kXSA9IG5ldyBGbG9hdDMyQXJyYXkoc2VnbWVudENvdW50ICsgMSk7CiAKKyAgICAg
ICAgLy8gcHJldmlvdXNOb2RlW2ldW2tdID0gVGhlIHN0YXJ0IG9mIHRoZSBsYXN0IHNlZ21lbnQg
aW4gYW4gb3B0aW1hbCBzZWdtZW50YXRpb24gdGhhdCBlbmRzIGF0IGkgd2l0aCBrIHNlZ21lbnRz
LgogICAgICAgICB2YXIgcHJldmlvdXNOb2RlID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykKICAgICAgICAg
ICAgIHByZXZpb3VzTm9kZVtpXSA9IG5ldyBBcnJheShzZWdtZW50Q291bnQgKyAxKTsKQEAgLTMx
Myw0NSArMzE0LDQ4IEBAIHZhciBTdGF0aXN0aWNzID0gbmV3IChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgIGNvc3RbMF0gPSBbMF07IC8vIFRoZSBjb3N0IG9mIHNlZ21lbnRpbmcgc2luZ2xlIHZhbHVl
IGlzIGFsd2F5cyAwLgogICAgICAgICBwcmV2aW91c05vZGVbMF0gPSBbLTFdOwogICAgICAgICBm
b3IgKHZhciBzZWdtZW50U3RhcnQgPSAwOyBzZWdtZW50U3RhcnQgPCB2YWx1ZXMubGVuZ3RoOyBz
ZWdtZW50U3RhcnQrKykgewotICAgICAgICAgICAgdmFyIGNvc3RCeVNlZ21lbnQgPSBjb3N0W3Nl
Z21lbnRTdGFydF07Ci0gICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50IDwgc2Vn
bWVudENvdW50OyBjb3VudCsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzTm9kZVtz
ZWdtZW50U3RhcnRdW2NvdW50XSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdmFyIGNvc3RP
Zk9wdGltYWxTZWdtZW50YXRpb25UaGF0RW5kQXRDdXJyZW50U3RhcnQgPSBjb3N0W3NlZ21lbnRT
dGFydF07CisgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHNlZ21lbnRDb3VudDsgaysr
KSB7CisgICAgICAgICAgICAgICAgdmFyIG5vU2VnbWVudGF0aW9uT2ZMZW5naHRLRW5kc0F0Q3Vy
cmVudFN0YXJ0ID0gcHJldmlvdXNOb2RlW3NlZ21lbnRTdGFydF1ba10gPT09IHVuZGVmaW5lZDsK
KyAgICAgICAgICAgICAgICBpZiAobm9TZWdtZW50YXRpb25PZkxlbmdodEtFbmRzQXRDdXJyZW50
U3RhcnQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGZv
ciAodmFyIHNlZ21lbnRFbmQgPSBzZWdtZW50U3RhcnQgKyAxOyBzZWdtZW50RW5kIDwgdmFsdWVz
Lmxlbmd0aDsgc2VnbWVudEVuZCsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXdDb3N0
ID0gY29zdEJ5U2VnbWVudFtjb3VudF0gKyBjb3N0TWF0cml4LmNvc3RCZXR3ZWVuKHNlZ21lbnRT
dGFydCwgc2VnbWVudEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c05vZGVb
c2VnbWVudEVuZF1bY291bnQgKyAxXSA9PT0gdW5kZWZpbmVkIHx8IG5ld0Nvc3QgPCBjb3N0W3Nl
Z21lbnRFbmRdW2NvdW50ICsgMV0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvc3Rbc2Vn
bWVudEVuZF1bY291bnQgKyAxXSA9IG5ld0Nvc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
cmV2aW91c05vZGVbc2VnbWVudEVuZF1bY291bnQgKyAxXSA9IHNlZ21lbnRTdGFydDsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGNvc3RPZk9wdGltYWxTZWdtZW50YXRpb25PZkxlbmd0aEsgPSBj
b3N0T2ZPcHRpbWFsU2VnbWVudGF0aW9uVGhhdEVuZEF0Q3VycmVudFN0YXJ0W2tdOworICAgICAg
ICAgICAgICAgICAgICB2YXIgY29zdE9mQ3VycmVudFNlZ21lbnQgPSBjb3N0TWF0cml4LmNvc3RC
ZXR3ZWVuKHNlZ21lbnRTdGFydCwgc2VnbWVudEVuZCk7CisgICAgICAgICAgICAgICAgICAgIHZh
ciB0b3RhbENvc3QgPSBjb3N0T2ZPcHRpbWFsU2VnbWVudGF0aW9uT2ZMZW5ndGhLICsgY29zdE9m
Q3VycmVudFNlZ21lbnQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c05vZGVbc2Vn
bWVudEVuZF1bayArIDFdID09PSB1bmRlZmluZWQgfHwgdG90YWxDb3N0IDwgY29zdFtzZWdtZW50
RW5kXVtrICsgMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvc3Rbc2VnbWVudEVuZF1b
ayArIDFdID0gdG90YWxDb3N0OworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNOb2Rl
W3NlZ21lbnRFbmRdW2sgKyAxXSA9IHNlZ21lbnRTdGFydDsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IGlmIChTdGF0aXN0aWNzLmRlYnVnZ2luZ1NlZ21lbnRhdGlvbikgewotICAgICAgICAgICAgY29u
c29sZS5sb2coJ2ZpbmRPcHRpbWFsU2VnbWVudGF0aW9uIHdpdGggaz0nLCBzZWdtZW50Q291bnQp
OwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3N0Lmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHQgPSBjb3N0W2ldOwotICAgICAgICAgICAgICAgIHZhciBzID0g
Jyc7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0Lmxlbmd0aDsgaisrKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBwID0gcHJldmlvdXNOb2RlW2ldW2pdOwotICAgICAg
ICAgICAgICAgICAgICBzICs9ICcoaz0nICsgajsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAg
IT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gJyBjPScgKyB0W2pd
ICsgJyBwPScgKyBwCi0gICAgICAgICAgICAgICAgICAgIHMgKz0gJyknOworICAgICAgICAgICAg
Y29uc29sZS5sb2coJ2ZpbmRPcHRpbWFsU2VnbWVudGF0aW9uIHdpdGgnLCBzZWdtZW50Q291bnQs
ICdzZWdtZW50cycpOworICAgICAgICAgICAgZm9yICh2YXIgZW5kID0gMDsgZW5kIDwgdmFsdWVz
Lmxlbmd0aDsgZW5kKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8PSBz
ZWdtZW50Q291bnQ7IGsrKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBwcmV2
aW91c05vZGVbZW5kXVtrXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09PSB1bmRl
ZmluZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZS5sb2coYEMoc2VnbWVudD1bJHtzdGFydH0sICR7ZW5kICsgMX1dLCBzZWdt
ZW50Q291bnQ9JHtrfSk9JHtjb3N0W2VuZF1ba119YCk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGNvbnNvbGUubG9nKGksIHZhbHVlc1tpXSwgcyk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gdmFsdWVzLmxlbmd0aCAt
IDE7Ci0gICAgICAgIHZhciBzZWdtZW50YXRpb24gPSBuZXcgQXJyYXkoc2VnbWVudENvdW50KTsK
LSAgICAgICAgc2VnbWVudGF0aW9uWzBdID0gdmFsdWVzLmxlbmd0aDsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzZWdtZW50Q291bnQ7IGkrKykgewotICAgICAgICAgICAgY3VycmVudElu
ZGV4ID0gcHJldmlvdXNOb2RlW2N1cnJlbnRJbmRleF1bc2VnbWVudENvdW50IC0gaV07Ci0gICAg
ICAgICAgICBzZWdtZW50YXRpb25baSArIDFdID0gY3VycmVudEluZGV4OworICAgICAgICB2YXIg
c2VnbWVudEVuZCA9IHZhbHVlcy5sZW5ndGggLSAxOworICAgICAgICB2YXIgc2VnbWVudGF0aW9u
ID0gbmV3IEFycmF5KHNlZ21lbnRDb3VudCArIDEpOworICAgICAgICBzZWdtZW50YXRpb25bc2Vn
bWVudENvdW50XSA9IHZhbHVlcy5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGsgPSBzZWdtZW50
Q291bnQ7IGsgPiAwOyBrLS0pIHsKKyAgICAgICAgICAgIHNlZ21lbnRFbmQgPSBwcmV2aW91c05v
ZGVbc2VnbWVudEVuZF1ba107CisgICAgICAgICAgICBzZWdtZW50YXRpb25bayAtIDFdID0gc2Vn
bWVudEVuZDsKICAgICAgICAgfQorICAgICAgICB2YXIgY29zdE9mT3B0aW1hbFNlZ21lbnRhdGlv
biA9IGNvc3RbdmFsdWVzLmxlbmd0aCAtIDFdW3NlZ21lbnRDb3VudF07CisKKyAgICAgICAgaWYg
KFN0YXRpc3RpY3MuZGVidWdnaW5nU2VnbWVudGF0aW9uKQorICAgICAgICAgICAgY29uc29sZS5s
b2coJ09wdGltYWwgc2VnbWVudGF0aW9uOicsIHNlZ21lbnRhdGlvbiwgJ3dpdGggY29zdCA9Jywg
Y29zdE9mT3B0aW1hbFNlZ21lbnRhdGlvbik7CiAKLSAgICAgICAgcmV0dXJuIHtzZWdtZW50YXRp
b246IHNlZ21lbnRhdGlvbi5yZXZlcnNlKCksIGNvc3Q6IGNvc3RbdmFsdWVzLmxlbmd0aCAtIDFd
W3NlZ21lbnRDb3VudF19OworICAgICAgICByZXR1cm4ge3NlZ21lbnRhdGlvbjogc2VnbWVudGF0
aW9uLCBjb3N0OiBjb3N0T2ZPcHRpbWFsU2VnbWVudGF0aW9ufTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBTYW1wbGVWYXJpYW5jZVVwcGVyVHJpYW5ndWxhck1hdHJpeCh2YWx1ZXMpIHsKQEAgLTM4
NSw3ICszODksNSBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogCiB9KSgp
OwogCi1pZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykgewotICAgIGZvciAodmFyIGtl
eSBpbiBTdGF0aXN0aWNzKQotICAgICAgICBtb2R1bGUuZXhwb3J0c1trZXldID0gU3RhdGlzdGlj
c1trZXldOwotfQoraWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcpCisgICAgbW9kdWxl
LmV4cG9ydHMgPSBTdGF0aXN0aWNzOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL2NvbmZpZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dG9vbHMvanMvY29uZmlnLmpzCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL2NvbmZpZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisi
dXNlIHN0cmljdCI7CisKK3ZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7Cit2YXIgcGF0aCA9IHJlcXVp
cmUoJ3BhdGgnKTsKKwordmFyIENvbmZpZyA9IG5ldyAoY2xhc3MgQ29uZmlnIHsKKyAgICBjb25z
dHJ1Y3RvcigpCisgICAgeworICAgICAgICB0aGlzLl9yb290RGlyZWN0b3J5ID0gIHBhdGgucmVz
b2x2ZShfX2Rpcm5hbWUsICcuLi8uLi8nKTsgCisgICAgICAgIHRoaXMuX2NvbmZpZ1BhdGggPSBw
YXRoLnJlc29sdmUodGhpcy5fcm9vdERpcmVjdG9yeSwgJ2NvbmZpZy5qc29uJyk7CisgICAgICAg
IHRoaXMuX2NvbnRlbnQgPSBudWxsOworICAgIH0KKworICAgIGNvbmZpZ0ZpbGVQYXRoKCkgeyBy
ZXR1cm4gdGhpcy5fY29uZmlnUGF0aDsgfQorCisgICAgdmFsdWUoa2V5KQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9jb250ZW50KQorICAgICAgICAgICAgdGhpcy5fY29udGVudCA9IEpTT04u
cGFyc2UoZnMucmVhZEZpbGVTeW5jKHRoaXMuX2NvbmZpZ1BhdGgpKTsKKworICAgICAgICBsZXQg
Y29udGVudCA9IHRoaXMuX2NvbnRlbnQ7CisgICAgICAgIGZvciAodmFyIGtleSBvZiBrZXkuc3Bs
aXQoJy4nKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5IGluIGNvbnRlbnQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnRba2V5XTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0KKworICAgIHBhdGgo
a2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLl9yb290RGlyZWN0
b3J5LCB0aGlzLnZhbHVlKGtleSkpOworICAgIH0KK30pOworCitpZiAodHlwZW9mIG1vZHVsZSAh
PSAndW5kZWZpbmVkJykKKyAgICBtb2R1bGUuZXhwb3J0cyA9IENvbmZpZzsKSW5kZXg6IFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9kYXRhYmFzZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvZGF0YWJhc2UuanMJKHJldmlzaW9uIDAp
CisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvZGF0YWJhc2UuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorInVzZSBzdHJpY3QiOworCit2YXIgcGcgPSByZXF1
aXJlKCdwZycpOwordmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnLmpzJyk7CisKK2NsYXNz
IERhdGFiYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICB0aGlzLl9jbGll
bnQgPSBudWxsOworICAgIH0KKworICAgIGNvbm5lY3Qob3B0aW9ucykKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NsaWVudCA9PT0gbnVsbCk7CisKKyAgICAgICAgbGV0IHVz
ZXJuYW1lID0gY29uZmlnLnZhbHVlKCdkYXRhYmFzZS51c2VybmFtZScpOworICAgICAgICBsZXQg
cGFzc3dvcmQgPSBjb25maWcudmFsdWUoJ2RhdGFiYXNlLnBhc3N3b3JkJyk7CisgICAgICAgIGxl
dCBob3N0ID0gY29uZmlnLnZhbHVlKCdkYXRhYmFzZS5ob3N0Jyk7CisgICAgICAgIGxldCBwb3J0
ID0gY29uZmlnLnZhbHVlKCdkYXRhYmFzZS5wb3J0Jyk7CisgICAgICAgIGxldCBuYW1lID0gY29u
ZmlnLnZhbHVlKCdkYXRhYmFzZS5uYW1lJyk7CisKKyAgICAgICAgLy8gTm8gbmVlZCB0byB3b3Jy
eSBhYm91dCBlc2NhcGluZyBzdHJpbmdzIHNpbmNlIHRoZXkgYXJlIG9ubHkgc2V0IGJ5IHNvbWVv
bmUgd2hvIGNhbiB3cml0ZSB0byBjb25maWcuanNvbi4KKyAgICAgICAgbGV0IGNvbm5lY3Rpb25T
dHJpbmcgPSBgdGNwOi8vJHt1c2VybmFtZX06JHtwYXNzd29yZH1AJHtob3N0fToke3BvcnR9LyR7
bmFtZX1gOworCisgICAgICAgIGxldCBjbGllbnQgPSBuZXcgcGcuQ2xpZW50KGNvbm5lY3Rpb25T
dHJpbmcpOworICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMua2VlcEFsaXZlKSB7Cisg
ICAgICAgICAgICBjbGllbnQub24oJ2RyYWluJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGNsaWVudC5lbmQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fY2xpZW50ID0gY2xpZW50OworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdChmdW5j
dGlvbiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAg
ICAgICAgIHJlamVjdChlcnJvcik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGRpc2Nvbm5lY3QoKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2NsaWVudCkgeworICAgICAgICAgICAgdGhpcy5fY2xpZW50LmVu
ZCgpOworICAgICAgICAgICAgdGhpcy5fY2xpZW50ID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0K
K30KKworaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcpCisgICAgbW9kdWxlLmV4cG9y
dHMgPSBEYXRhYmFzZTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L2NoZWNrY29uZmlnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL2NoZWNrY29uZmlnLmpzCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvY2hlY2tjb25maWcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNjkgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2Vy
dCcpOwordmFyIGZzID0gcmVxdWlyZSgnZnMnKTsKK3ZhciBwZyA9IHJlcXVpcmUoJ3BnJyk7CisK
K3ZhciBDb25maWcgPSByZXF1aXJlKCcuLi90b29scy9qcy9jb25maWcuanMnKTsKK3ZhciBEYXRh
YmFzZSA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL2RhdGFiYXNlLmpzJyk7CisKK2Rlc2NyaWJlKCdj
b25maWcuanNvbicsIGZ1bmN0aW9uICgpIHsKKyAgICBpdCgnc2hvdWxkIGJlIGEgdmFsaWQgZmls
ZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdyhmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBmcy5yZWFkRmlsZVN5bmMoQ29uZmlnLmNvbmZpZ0ZpbGVQYXRoKCkp
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBiZSBhIHZhbGlkIEpTT04n
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoQ29uZmlnLmNvbmZpZ0Zp
bGVQYXRoKCkpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGRlZmlu
ZSBgc2l0ZVRpdGxlYCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVv
ZiBDb25maWcudmFsdWUoJ3NpdGVUaXRsZScpLCAnc3RyaW5nJyk7CisgICAgfSk7CisKKyAgICBp
dCgnc2hvdWxkIGRlZmluZSBgZGF0YURpcmVjdG9yeWAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGFzc2VydC5vayhDb25maWcudmFsdWUoJ2RhdGFEaXJlY3RvcnknKSk7CisgICAgICAgIGFzc2Vy
dC5vayhmcy5leGlzdHNTeW5jKENvbmZpZy5wYXRoKCdkYXRhRGlyZWN0b3J5JykpKTsKKyAgICAg
ICAgYXNzZXJ0Lm9rKGZzLnN0YXRTeW5jKENvbmZpZy5wYXRoKCdkYXRhRGlyZWN0b3J5JykpLmlz
RGlyZWN0b3J5KCkpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBkZWZpbmUgYGpzb25DYWNo
ZU1heEFnZWAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YgQ29u
ZmlnLnZhbHVlKCdqc29uQ2FjaGVNYXhBZ2UnKSwgJ251bWJlcicpOworICAgIH0pOworCisgICAg
aXQoJ3Nob3VsZCBkZWZpbmUgYGpzb25DYWNoZU1heEFnZWAnLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIGFzc2VydC5lcXVhbCh0eXBlb2YgQ29uZmlnLnZhbHVlKCdqc29uQ2FjaGVNYXhBZ2UnKSwg
J251bWJlcicpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBkZWZpbmUgYGNsdXN0ZXJTdGFy
dGAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBjbHVzdGVyU3RhcnQgPSBDb25maWcudmFs
dWUoJ2NsdXN0ZXJTdGFydCcpOworICAgICAgICBhc3NlcnQub2soY2x1c3RlclN0YXJ0IGluc3Rh
bmNlb2YgQXJyYXkpOworICAgICAgICBhc3NlcnQuZXF1YWwoY2x1c3RlclN0YXJ0Lmxlbmd0aCwg
WzIwMDAsIDEsIDEsIDAsIDBdLmxlbmd0aCwKKyAgICAgICAgICAgICdNdXN0IHNwZWNpZnkgeWVh
ciwgbW9udGgsIGRhdGUsIGhvdXIsIGFuZCBtaW51dGUnKTsKKyAgICAgICAgdmFyIG1heFllYXIg
PSAobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkgKyAxOworICAgICAgICBhc3NlcnQub2soY2x1c3Rl
clN0YXJ0WzBdID49IDE5NzAgJiYgY2x1c3RlclN0YXJ0WzBdIDw9IG1heFllYXIsIGB5ZWFyIG11
c3QgYmUgYmV0d2VlbiAxOTcwIGFuZCAke21heFllYXJ9YCk7CisgICAgICAgIGFzc2VydC5vayhj
bHVzdGVyU3RhcnRbMV0gPj0gMSAmJiBjbHVzdGVyU3RhcnRbMV0gPD0gMTIsICdtb250aCBtdXN0
IGJlIGJldHdlZW4gMSBhbmQgMTInKTsKKyAgICAgICAgYXNzZXJ0Lm9rKGNsdXN0ZXJTdGFydFsy
XSA+PSAxICYmIGNsdXN0ZXJTdGFydFsyXSA8PSAzMSwgJ2RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEg
YW5kIDMxJyk7CisgICAgICAgIGFzc2VydC5vayhjbHVzdGVyU3RhcnRbM10gPj0gMCAmJiBjbHVz
dGVyU3RhcnRbM10gPD0gNjAsICdtaW51dGUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYwJyk7Cisg
ICAgICAgIGFzc2VydC5vayhjbHVzdGVyU3RhcnRbNF0gPj0gMCAmJiBjbHVzdGVyU3RhcnRbNF0g
PD0gNjAsICdtaW51dGUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYwJyk7CisgICAgfSk7CisKKyAg
ICBpdCgnc2hvdWxkIGRlZmluZSBgY2x1c3RlclNpemVgJywgZnVuY3Rpb24gKCkgeworICAgICAg
ICB2YXIgY2x1c3RlclNpemUgPSBDb25maWcudmFsdWUoJ2NsdXN0ZXJTaXplJyk7CisgICAgICAg
IGFzc2VydC5vayhjbHVzdGVyU2l6ZSBpbnN0YW5jZW9mIEFycmF5KTsKKyAgICAgICAgYXNzZXJ0
LmVxdWFsKGNsdXN0ZXJTaXplLmxlbmd0aCwgWzAsIDIsIDBdLmxlbmd0aCwKKyAgICAgICAgICAg
ICdNdXN0IHNwZWNpZnkgdGhlIG51bWJlciBvZiB5ZWFycywgbW9udGhzLCBhbmQgZGF5cycpOwor
ICAgICAgICBhc3NlcnQuZXF1YWwodHlwZW9mIGNsdXN0ZXJTaXplWzBdLCAnbnVtYmVyJywgJ3Ro
ZSBudW1iZXIgb2YgeWVhciBtdXN0IGJlIGEgbnVtYmVyJyk7CisgICAgICAgIGFzc2VydC5lcXVh
bCh0eXBlb2YgY2x1c3RlclNpemVbMV0sICdudW1iZXInLCAndGhlIG51bWJlciBvZiBtb250aCBt
dXN0IGJlIGEgbnVtYmVyJyk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YgY2x1c3RlclNp
emVbMl0sICdudW1iZXInLCAndGhlIG51bWJlciBvZiBkYXlzIG11c3QgYmUgYSBudW1iZXInKTsK
KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdgZGFzaGJvYXJkc2AnLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHZhciBkYXNoYm9hcmRzID0gQ29uZmlnLnZhbHVlKCdkYXNoYm9hcmRzJyk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCBleGlzdCBmb3IgdjIgYW5kIHYzIFVJJywgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBkYXNoYm9hcmRzLCAnb2JqZWN0Jyk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGl0KCdkYXNoYm9hcmQgbmFtZXMgdGhhdCBkbyBub3QgY29u
dGFpbiAvJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBkYXNo
Ym9hcmRzKQorICAgICAgICAgICAgICAgIGFzc2VydC5vayhuYW1lLmluZGV4T2YoJy8nKSA8IDAs
ICdEYXNoYm9hcmQgbmFtZSAiJHtuYW1lfSIgc2hvdWxkIG5vdCBjb250YWluICIvIicpOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnZWFjaCBkYXNoYm9hcmQgbXVzdCBiZSBhbiBhcnJheScs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gZGFzaGJvYXJkcykK
KyAgICAgICAgICAgICAgICBhc3NlcnQub2soZGFzaGJvYXJkc1tuYW1lXSBpbnN0YW5jZW9mIEFy
cmF5KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2VhY2ggcm93IGluIGEgZGFzaGJvYXJk
IG11c3QgYmUgYW4gYXJyYXknLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmb3IgKHZhciBu
YW1lIGluIGRhc2hib2FyZHMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciByb3cgb2YgZGFz
aGJvYXJkc1tuYW1lXSkgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChyb3cg
aW5zdGFuY2VvZiBBcnJheSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnZWFjaCBjZWxsIGluIGEgZGFzaGJvYXJkIG11c3QgYmUg
YW4gYXJyYXkgb3IgYSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBuYW1lIGluIGRhc2hib2FyZHMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciByb3cgb2Yg
ZGFzaGJvYXJkc1tuYW1lXSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjZWxsIG9m
IHJvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgaW5zdGFuY2VvZiBBcnJh
eSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQub2soY2VsbC5sZW5ndGggPT0g
MCB8fCBjZWxsLmxlbmd0aCA9PSAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
RWFjaCBjZWxsIG11c3QgYmUgZW1wdHkgb3Igc3BlY2lmeSBbcGxhdGZvcm0sIG1ldHJpY10gcGFp
cicpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YgY2VsbCwgJ3N0cmluZycpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsK
KworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ2BkYXRhYmFzZWAnLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGl0KCdzaG91bGQgZXhpc3QnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3Nl
cnQub2soQ29uZmlnLnZhbHVlKCdkYXRhYmFzZScpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCBkZWZpbmUgYGRhdGFiYXNlLmhvc3RgJywgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBDb25maWcudmFsdWUoJ2RhdGFiYXNlLmhvc3QnKSwg
J3N0cmluZycpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGRlZmluZSBgZGF0
YWJhc2UucG9ydGAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHlw
ZW9mIENvbmZpZy52YWx1ZSgnZGF0YWJhc2UucG9ydCcpLCAnc3RyaW5nJyk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgZGVmaW5lIGBkYXRhYmFzZS51c2VybmFtZWAnLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHlwZW9mIENvbmZpZy52YWx1ZSgn
ZGF0YWJhc2UudXNlcm5hbWUnKSwgJ3N0cmluZycpOworICAgICAgICB9KTsKKworICAgICAgICBp
dCgnc2hvdWxkIGRlZmluZSBgZGF0YWJhc2UucGFzc3dvcmRgJywgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBDb25maWcudmFsdWUoJ2RhdGFiYXNlLnBhc3N3
b3JkJyksICdzdHJpbmcnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBkZWZp
bmUgYGRhdGFiYXNlLm5hbWVgJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHR5cGVvZiBDb25maWcudmFsdWUoJ2RhdGFiYXNlLm5hbWUnKSwgJ3N0cmluZycpOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY29ubmVjdCB0byB0aGUg
ZGF0YWJhc2UnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgbGV0IGRhdGFiYXNlID0g
bmV3IERhdGFiYXNlOworICAgICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLmNvbm5lY3QoKS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS5kaXNjb25uZWN0KCk7Cisg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7
CisgICAgICAgICAgICAgICAgZGF0YWJhc2UuZGlzY29ubmVjdCgpOworICAgICAgICAgICAgICAg
IGRvbmUoZXJyb3IpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisg
ICAgZGVzY3JpYmUoJ29wdGlvbmFsIGNvbmZpZ3VyYXRpb25zJywgZnVuY3Rpb24gKCkgeworICAg
ICAgICBmdW5jdGlvbiBhc3NlcnROdWxsT3JUeXBlKHZhbHVlLCB0eXBlKSB7CisgICAgICAgICAg
ICBpZiAodmFsdWUgIT09IG51bGwpCisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVv
ZiB2YWx1ZSwgdHlwZSk7CisgICAgICAgIH0KKworICAgICAgICBpdCgnYGRlYnVnYCBzaG91bGQg
YmUgYG51bGxgIG9yIGEgYm9vbGVhbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2Vy
dE51bGxPclR5cGUoQ29uZmlnLnZhbHVlKCdkZWJ1ZycpLCAnYm9vbGVhbicpOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnYG1haW50ZW5hbmNlTW9kZWAgc2hvdWxkIGJlIGBudWxsYCBvciBh
IGJvb2xlYW4nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnROdWxsT3JUeXBlKENv
bmZpZy52YWx1ZSgnbWFpbnRlbmFuY2VNb2RlJyksICdib29sZWFuJyk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCdgbWFpbnRlbmFuY2VEaXJlY3RvcnlgIHNob3VsZCBiZSBgbnVsbGAgb3Ig
YSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnROdWxsT3JUeXBlKENv
bmZpZy52YWx1ZSgnbWFpbnRlbmFuY2VEaXJlY3RvcnknKSwgJ3N0cmluZycpOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgnYG1haW50ZW5hbmNlRGlyZWN0b3J5YCBzaG91bGQgYmUgYSBzdHJp
bmcgaWYgYG1haW50ZW5hbmNlTW9kZWAgaXMgdHJ1ZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGlmIChDb25maWcudmFsdWUoJ21haW50ZW5hbmNlTW9kZScpKQorICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChDb25maWcudmFsdWUoJ21haW50ZW5hbmNlRGlyZWN0b3J5JyksICdzdHJp
bmcnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2B1bml2ZXJzYWxTbGF2ZVBhc3N3b3Jk
YCBzaG91bGQgYmUgYG51bGxgIG9yIGEgc3RyaW5nJywgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgYXNzZXJ0TnVsbE9yVHlwZShDb25maWcudmFsdWUoJ3VuaXZlcnNhbFNsYXZlUGFzc3dvcmQn
KSwgJ3N0cmluZycpOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOwpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvc3RhdGlzdGljcy10ZXN0cy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3Rz
LmpzCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
c3RhdGlzdGljcy10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5OSBAQAorInVz
ZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Cit2YXIgU3RhdGlz
dGljcyA9IHJlcXVpcmUoJy4uL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcycpOworCitpZiAo
IWFzc2VydC5hbG1vc3RFcXVhbCkgeworICAgIGFzc2VydC5hbG1vc3RFcXVhbCA9IGZ1bmN0aW9u
IChhY3R1YWwsIGV4cGVjdGVkLCBwcmVjaXNpb24sIG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIHN1
ZmZpZWRNZXNzYWdlID0gKG1lc3NhZ2UgPyBtZXNzYWdlICsgJyAnIDogJycpOworICAgICAgICBp
ZiAoaXNOYU4oZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBhc3NlcnQoaXNOYU4oYWN0dWFsKSwg
YCR7c3VmZmllZE1lc3NhZ2V9ZXhwZWN0ZWQgTmFOIGJ1dCBnb3QgJHthY3R1YWx9YCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXhwZWN0ZWQgPT0gMCkg
eworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwcmVjaXNpb24p
CisgICAgICAgICAgICBwcmVjaXNpb24gPSA2OworICAgICAgICB2YXIgdG9sZXJhbmNlID0gMSAv
IE1hdGgucG93KDEwLCBwcmVjaXNpb24pOworICAgICAgICB2YXIgcmVsYXRpdmVEaWZmZXJlbmNl
ID0gTWF0aC5hYnMoKGFjdHVhbCAtIGV4cGVjdGVkKSAvIGV4cGVjdGVkKTsKKyAgICAgICAgdmFy
IHBlcmNlbnREaWZmZXJlbmNlID0gKHJlbGF0aXZlRGlmZmVyZW5jZSAqIDEwMCkudG9GaXhlZCgy
KTsKKyAgICAgICAgYXNzZXJ0KHJlbGF0aXZlRGlmZmVyZW5jZSA8IHRvbGVyYW5jZSwKKyAgICAg
ICAgICAgIGAke3N1ZmZpZWRNZXNzYWdlfWV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHth
Y3R1YWx9ICgke3BlcmNlbnREaWZmZXJlbmNlfSUgZGlmZmVyZW5jZSlgKTsKKyAgICB9Cit9CisK
K2Rlc2NyaWJlKCdhc3NlcnQuYWxtb3N0RXF1YWwnLCBmdW5jdGlvbiAoKSB7CisgICAgaXQoJ3No
b3VsZCBub3QgdGhyb3cgd2hlbiB2YWx1ZXMgYXJlIGlkZW50aWNhbCcsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdyhmdW5jdGlvbiAoKSB7IGFzc2VydC5hbG1vc3RF
cXVhbCgxLCAxKTsgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCB0aHJvdyB3aGVu
IHZhbHVlcyBhcmUgY2xvc2UnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGFzc2VydC5kb2VzTm90
VGhyb3coZnVuY3Rpb24gKCkgeyBhc3NlcnQuYWxtb3N0RXF1YWwoMS4xMCwgMS4xMDcsIDIpOyB9
KTsKKyAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdyhmdW5jdGlvbiAoKSB7IGFzc2VydC5hbG1v
c3RFcXVhbCgxMjU2LjcsIDEyNTYuNzIsIDQpOyB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91
bGQgdGhyb3cgd2hlbiB2YWx1ZXMgYXJlIG5vdCBjbG9zZScsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7IGFzc2VydC5hbG1vc3RFcXVhbCgxLjEwLCAx
LjI3LCAyKTsgfSk7CisgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgeyBhc3NlcnQu
YWxtb3N0RXF1YWwoNzM1LjQsIDczNS42LCA0KTsgfSk7CisgICAgfSk7Cit9KTsKKworZGVzY3Jp
YmUoJ1N0YXRpc3RpY3MnLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoJ21pbicsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBmaW5kIHRoZSBtaW5pbnVtIHZhbHVlJywgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3MubWluKFsxLCAy
LCAzLCA0XSksIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3MubWluKFs0
LCAzLCAyLCAxXSksIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3MubWlu
KFsyMDAwLCAyMCwgMjAwXSksIDIwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChTdGF0aXN0
aWNzLm1pbihbMC4zLCAwLjA2LCAwLjVdKSwgMC4wNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoU3RhdGlzdGljcy5taW4oWy0wLjMsIDAuMDYsIDAuNV0pLCAtMC4zKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChTdGF0aXN0aWNzLm1pbihbLTAuMywgMC4wNiwgMC41LCBJbmZpbml0eV0p
LCAtMC4zKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChTdGF0aXN0aWNzLm1pbihbLTAuMywg
MC4wNiwgMC41LCAtSW5maW5pdHldKSwgLUluZmluaXR5KTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChTdGF0aXN0aWNzLm1pbihbXSksIEluZmluaXR5KTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBkZXNjcmliZSgnbWF4JywgZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnc2hvdWxk
IGZpbmQgdGhlIG1pbmludW0gdmFsdWUnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoU3RhdGlzdGljcy5tYXgoWzEsIDIsIDMsIDRdKSwgNCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoU3RhdGlzdGljcy5tYXgoWzQsIDMsIDIsIDFdKSwgNCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoU3RhdGlzdGljcy5tYXgoWzIwMDAsIDIwLCAyMDBdKSwgMjAwMCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoU3RhdGlzdGljcy5tYXgoWzAuMywgMC4wNiwgMC41XSks
IDAuNSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoU3RhdGlzdGljcy5tYXgoWy0wLjMsIDAu
MDYsIDAuNV0pLCAwLjUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3MubWF4
KFstMC4zLCAwLjA2LCAwLjUsIEluZmluaXR5XSksIEluZmluaXR5KTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChTdGF0aXN0aWNzLm1heChbLTAuMywgMC4wNiwgMC41LCAtSW5maW5pdHldKSwg
MC41KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChTdGF0aXN0aWNzLm1heChbXSksIC1JbmZp
bml0eSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3N1bScsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBmaW5kIHRoZSBzdW0gb2YgdmFsdWVzJywgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3Muc3VtKFsxLCAy
LCAzLCA0XSksIDEwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChTdGF0aXN0aWNzLnN1bShb
NCwgMywgMiwgMV0pLCAxMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoU3RhdGlzdGljcy5z
dW0oWzIwMDAsIDIwLCAyMDBdKSwgMjIyMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoU3Rh
dGlzdGljcy5zdW0oWzAuMywgMC4wNiwgMC41XSksIDAuODYpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKFN0YXRpc3RpY3Muc3VtKFstMC4zLCAwLjA2LCAwLjVdKSwgMC4yNik7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoU3RhdGlzdGljcy5zdW0oWy0wLjMsIDAuMDYsIDAuNSwgSW5maW5p
dHldKSwgSW5maW5pdHkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3Muc3Vt
KFstMC4zLCAwLjA2LCAwLjUsIC1JbmZpbml0eV0pLCAtSW5maW5pdHkpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3Muc3VtKFtdKSwgMCk7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgZGVzY3JpYmUoJ3NxdWFyZVN1bScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQo
J3Nob3VsZCBmaW5kIHRoZSBzcXVhcmUgc3VtIG9mIHZhbHVlcycsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChTdGF0aXN0aWNzLnNxdWFyZVN1bShbMSwgMiwgMywgNF0p
LCAzMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoU3RhdGlzdGljcy5zcXVhcmVTdW0oWzQs
IDMsIDIsIDFdKSwgMzApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3Muc3F1
YXJlU3VtKFsyMDAwLCAyMCwgMjAwXSksIDIwMDAgKiAyMDAwICsgMjAgKiAyMCArIDIwMCogMjAw
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChTdGF0aXN0aWNzLnNxdWFyZVN1bShbMC4zLCAw
LjA2LCAwLjVdKSwgMC4wOSArIDAuMDAzNiArIDAuMjUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKFN0YXRpc3RpY3Muc3F1YXJlU3VtKFstMC4zLCAwLjA2LCAwLjVdKSwgMC4wOSArIDAuMDAz
NiArIDAuMjUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3Muc3F1YXJlU3Vt
KFstMC4zLCAwLjA2LCAwLjUsIEluZmluaXR5XSksIEluZmluaXR5KTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChTdGF0aXN0aWNzLnNxdWFyZVN1bShbLTAuMywgMC4wNiwgMC41LCAtSW5maW5p
dHldKSwgSW5maW5pdHkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFN0YXRpc3RpY3Muc3F1
YXJlU3VtKFtdKSwgMCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3Nh
bXBsZVN0YW5kYXJkRGV2aWF0aW9uJywgZnVuY3Rpb24gKCkgeworICAgICAgICBmdW5jdGlvbiBz
dGRldih2YWx1ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLnNhbXBsZVN0YW5k
YXJkRGV2aWF0aW9uKHZhbHVlcy5sZW5ndGgsCisgICAgICAgICAgICAgICAgU3RhdGlzdGljcy5z
dW0odmFsdWVzKSwgU3RhdGlzdGljcy5zcXVhcmVTdW0odmFsdWVzKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpdCgnc2hvdWxkIGZpbmQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB2YWx1ZXMn
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoc3RkZXYoWzEs
IDIsIDMsIDRdKSwgMS4yOTA5OTQ0KTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChz
dGRldihbNCwgMywgMiwgMV0pLCAxLjI5MDk5NDQpOworICAgICAgICAgICAgYXNzZXJ0LmFsbW9z
dEVxdWFsKHN0ZGV2KFsyMDAwLCAyMCwgMjAwXSksIDEwOTQuODk3MjYpOworICAgICAgICAgICAg
YXNzZXJ0LmFsbW9zdEVxdWFsKHN0ZGV2KFswLjMsIDAuMDYsIDAuNV0pLCAwLjIyMDMwMjgyMik7
CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoc3RkZXYoWy0wLjMsIDAuMDYsIDAuNV0p
LCAwLjQwMDY2NjExMjAzKTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChzdGRldihb
LTAuMywgMC4wNiwgMC41LCBJbmZpbml0eV0pLCBOYU4pOworICAgICAgICAgICAgYXNzZXJ0LmFs
bW9zdEVxdWFsKHN0ZGV2KFstMC4zLCAwLjA2LCAwLjUsIC1JbmZpbml0eV0pLCBOYU4pOworICAg
ICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKHN0ZGV2KFtdKSwgMCk7CisgICAgICAgIH0pOwor
ICAgIH0pOworCisgICAgZGVzY3JpYmUoJ2NvbmZpZGVuY2VJbnRlcnZhbERlbHRhJywgZnVuY3Rp
b24gKCkgeworICAgICAgICBpdCgnc2hvdWxkIGZpbmQgdGhlIHAtdmFsdWUgb2YgdmFsdWVzIHVz
aW5nIFN0dWRlbnRcJ3MgdCBkaXN0cmlidXRpb24nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBmdW5jdGlvbiBkZWx0YSh2YWx1ZXMsIHByb2JhYmlsdHkpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU3RhdGlzdGljcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YShwcm9iYWJpbHR5LCB2YWx1
ZXMubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBTdGF0aXN0aWNzLnN1bSh2YWx1ZXMpLCBT
dGF0aXN0aWNzLnNxdWFyZVN1bSh2YWx1ZXMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9vbmxpbmVjb3Vyc2VzLnNjaWVuY2UucHN1LmVkdS9zdGF0NDE0L25vZGUv
MTk5CisgICAgICAgICAgICB2YXIgdmFsdWVzID0gWzExOCwgMTE1LCAxMjUsIDExMCwgMTEyLCAx
MzAsIDExNywgMTEyLCAxMTUsIDEyMCwgMTEzLCAxMTgsIDExOSwgMTIyLCAxMjMsIDEyNl07Cisg
ICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEodmFsdWVzLCAwLjk1KSwgMy4wMTUs
IDMpOworCisgICAgICAgICAgICAvLyBGb2xsb3dpbmcgdmFsdWVzIGFyZSBjb21wdXRlZCB1c2lu
ZyBFeGNlbCBPbmxpbmUncyBTVERFViBhbmQgQ09ORklERU5DRS5UCisgICAgICAgICAgICBhc3Nl
cnQuYWxtb3N0RXF1YWwoZGVsdGEoWzEsIDIsIDMsIDRdLCAwLjgpLCAxLjA1NzE1OSk7CisgICAg
ICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEoWzEsIDIsIDMsIDRdLCAwLjkpLCAxLjUx
OTA5MCk7CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEoWzEsIDIsIDMsIDRd
LCAwLjk1KSwgMi4wNTQyNjApOworCisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVs
dGEoWzAuMywgMC4wNiwgMC41XSwgMC44KSwgMC4yMzk4MzUzKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5hbG1vc3RFcXVhbChkZWx0YShbMC4zLCAwLjA2LCAwLjVdLCAwLjkpLCAwLjM3MTM5ODUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKGRlbHRhKFswLjMsIDAuMDYsIDAuNV0sIDAu
OTUpLCAwLjU0NzI2MjUpOworCisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEo
Wy0wLjMsIDAuMDYsIDAuNV0sIDAuOCksIDAuNDM2MTkwMCk7CisgICAgICAgICAgICBhc3NlcnQu
YWxtb3N0RXF1YWwoZGVsdGEoWy0wLjMsIDAuMDYsIDAuNV0sIDAuOSksIDAuNjc1NDY0Nyk7Cisg
ICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEoWy0wLjMsIDAuMDYsIDAuNV0sIDAu
OTUpLCAwLjk5NTMwOTgpOworCisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEo
WzEyMywgMTA3LCAxMDksIDEwNCwgMTExXSwgMC44KSwgNS4wMDExNjcpOworICAgICAgICAgICAg
YXNzZXJ0LmFsbW9zdEVxdWFsKGRlbHRhKFsxMjMsIDEwNywgMTA5LCAxMDQsIDExMV0sIDAuOSks
IDYuOTUzODc0KTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChkZWx0YShbMTIzLCAx
MDcsIDEwOSwgMTA0LCAxMTFdLCAwLjk1KSwgOS4wNTY0OTApOworCisgICAgICAgICAgICBhc3Nl
cnQuYWxtb3N0RXF1YWwoZGVsdGEoWzY3ODUsIDc4MTIsIDY5MDQsIDc1MDMsIDY5NDMsIDcyMDcs
IDY4MTJdLCAwLjgpLCAyMTIuNjE1NSk7CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwo
ZGVsdGEoWzY3ODUsIDc4MTIsIDY5MDQsIDc1MDMsIDY5NDMsIDcyMDcsIDY4MTJdLCAwLjkpLCAy
ODYuOTU4NSk7CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoZGVsdGEoWzY3ODUsIDc4
MTIsIDY5MDQsIDc1MDMsIDY5NDMsIDcyMDcsIDY4MTJdLCAwLjk1KSwgMzYxLjM0NjkpOworCisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvV2VsY2glMjdzX3RfdGVzdAorCisgICAgdmFyIGV4YW1wbGUxID0geworICAgICAgICBBMTog
WzI3LjUsIDIxLjAsIDE5LjAsIDIzLjYsIDE3LjAsIDE3LjksIDE2LjksIDIwLjEsIDIxLjksIDIy
LjYsIDIzLjEsIDE5LjYsIDE5LjAsIDIxLjcsIDIxLjRdLAorICAgICAgICBBMjogWzI3LjEsIDIy
LjAsIDIwLjgsIDIzLjQsIDIzLjQsIDIzLjUsIDI1LjgsIDIyLjAsIDI0LjgsIDIwLjIsIDIxLjks
IDIyLjEsIDIyLjksIDIwLjUsIDI0LjRdLAorICAgICAgICBleHBlY3RlZFQ6IDIuNDYsCisgICAg
ICAgIGV4cGVjdGVkRGVncmVlc09mRnJlZWRvbTogMjUuMCwKKyAgICAgICAgZXhwZWN0ZWRSYW5n
ZTogWzAuOTUsIDAuOThdIC8vIFAgPSAwLjAyMSBzbyAxIC0gUCA9IDAuOTc5IGlzIGJldHdlZW4g
MC45NSBhbmQgMC45OAorICAgIH07CisKKyAgICB2YXIgZXhhbXBsZTIgPSB7CisgICAgICAgIEEx
OiBbMTcuMiwgMjAuOSwgMjIuNiwgMTguMSwgMjEuNywgMjEuNCwgMjMuNSwgMjQuMiwgMTQuNywg
MjEuOF0sCisgICAgICAgIEEyOiBbMjEuNSwgMjIuOCwgMjEuMCwgMjMuMCwgMjEuNiwgMjMuNiwg
MjIuNSwgMjAuNywgMjMuNCwgMjEuOCwgMjAuNywgMjEuNywgMjEuNSwgMjIuNSwgMjMuNiwgMjEu
NSwgMjIuNSwgMjMuNSwgMjEuNSwgMjEuOF0sCisgICAgICAgIGV4cGVjdGVkVDogMS41NywKKyAg
ICAgICAgZXhwZWN0ZWREZWdyZWVzT2ZGcmVlZG9tOiA5LjksCisgICAgICAgIGV4cGVjdGVkUmFu
Z2U6IFswLjgsIDAuOV0gLy8gUCA9IDAuMTQ5IHNvIDEgLSBQID0gMC44NTEgaXMgYmV0d2VlbiAw
LjggYW5kIDAuOQorICAgIH07CisKKyAgICB2YXIgZXhhbXBsZTMgPSB7CisgICAgICAgIEExOiBb
MTkuOCwgMjAuNCwgMTkuNiwgMTcuOCwgMTguNSwgMTguOSwgMTguMywgMTguOSwgMTkuNSwgMjIu
MF0sCisgICAgICAgIEEyOiBbMjguMiwgMjYuNiwgMjAuMSwgMjMuMywgMjUuMiwgMjIuMSwgMTcu
NywgMjcuNiwgMjAuNiwgMTMuNywgMjMuMiwgMTcuNSwgMjAuNiwgMTguMCwgMjMuOSwgMjEuNiwg
MjQuMywgMjAuNCwgMjQuMCwgMTMuMl0sCisgICAgICAgIGV4cGVjdGVkVDogMi4yMiwKKyAgICAg
ICAgZXhwZWN0ZWREZWdyZWVzT2ZGcmVlZG9tOiAyNC41LAorICAgICAgICBleHBlY3RlZFJhbmdl
OiBbMC45NSwgMC45OF0gLy8gUCA9IDAuMDM2IHNvIDEgLSBQID0gMC45NjQgaXMgYmV0ZXdlZW4g
MC45NSBhbmQgMC45OAorICAgIH07CisKKyAgICBkZXNjcmliZSgnY29tcHV0ZVdlbGNoc1QnLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWxjaHNUKHZhbHVlczEsIHZh
bHVlczIsIHByb2JhYmlsaXR5KSB7CisgICAgICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5jb21w
dXRlV2VsY2hzVCh2YWx1ZXMxLCAwLCB2YWx1ZXMxLmxlbmd0aCwgdmFsdWVzMiwgMCwgdmFsdWVz
Mi5sZW5ndGgsIHByb2JhYmlsaXR5KTsKKyAgICAgICAgfQorCisgICAgICAgIGl0KCdzaG91bGQg
ZGV0ZWN0IHRoZSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UgdXNpbmcgV2Vs
Y2hcJ3MgdC10ZXN0JywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bXB1dGVXZWxjaHNUKGV4YW1wbGUxLkExLCBleGFtcGxlMS5BMiwgMC44KS5zaWduaWZpY2FudGx5
RGlmZmVyZW50LCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21wdXRlV2VsY2hz
VChleGFtcGxlMS5BMSwgZXhhbXBsZTEuQTIsIDAuOSkuc2lnbmlmaWNhbnRseURpZmZlcmVudCwg
dHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tcHV0ZVdlbGNoc1QoZXhhbXBsZTEu
QTEsIGV4YW1wbGUxLkEyLCAwLjk1KS5zaWduaWZpY2FudGx5RGlmZmVyZW50LCB0cnVlKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21wdXRlV2VsY2hzVChleGFtcGxlMS5BMSwgZXhhbXBs
ZTEuQTIsIDAuOTgpLnNpZ25pZmljYW50bHlEaWZmZXJlbnQsIGZhbHNlKTsKKworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbXB1dGVXZWxjaHNUKGV4YW1wbGUyLkExLCBleGFtcGxlMi5BMiwg
MC44KS5zaWduaWZpY2FudGx5RGlmZmVyZW50LCB0cnVlKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21wdXRlV2VsY2hzVChleGFtcGxlMi5BMSwgZXhhbXBsZTIuQTIsIDAuOSkuc2lnbmlm
aWNhbnRseURpZmZlcmVudCwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbXB1
dGVXZWxjaHNUKGV4YW1wbGUyLkExLCBleGFtcGxlMi5BMiwgMC45NSkuc2lnbmlmaWNhbnRseURp
ZmZlcmVudCwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbXB1dGVXZWxjaHNU
KGV4YW1wbGUyLkExLCBleGFtcGxlMi5BMiwgMC45OCkuc2lnbmlmaWNhbnRseURpZmZlcmVudCwg
ZmFsc2UpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tcHV0ZVdlbGNoc1QoZXhhbXBs
ZTMuQTEsIGV4YW1wbGUzLkEyLCAwLjgpLnNpZ25pZmljYW50bHlEaWZmZXJlbnQsIHRydWUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbXB1dGVXZWxjaHNUKGV4YW1wbGUzLkExLCBleGFt
cGxlMy5BMiwgMC45KS5zaWduaWZpY2FudGx5RGlmZmVyZW50LCB0cnVlKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21wdXRlV2VsY2hzVChleGFtcGxlMy5BMSwgZXhhbXBsZTMuQTIsIDAu
OTUpLnNpZ25pZmljYW50bHlEaWZmZXJlbnQsIHRydWUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNvbXB1dGVXZWxjaHNUKGV4YW1wbGUzLkExLCBleGFtcGxlMy5BMiwgMC45OCkuc2lnbmlm
aWNhbnRseURpZmZlcmVudCwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hv
dWxkIGZpbmQgdGhlIHQtdmFsdWUgb2YgdmFsdWVzIHVzaW5nIFdlbGNoXCdzIHQtdGVzdCcsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChjb21wdXRlV2VsY2hz
VChleGFtcGxlMS5BMSwgZXhhbXBsZTEuQTIpLnQsIGV4YW1wbGUxLmV4cGVjdGVkVCwgMik7Cisg
ICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoY29tcHV0ZVdlbGNoc1QoZXhhbXBsZTIuQTEs
IGV4YW1wbGUyLkEyKS50LCBleGFtcGxlMi5leHBlY3RlZFQsIDIpOworICAgICAgICAgICAgYXNz
ZXJ0LmFsbW9zdEVxdWFsKGNvbXB1dGVXZWxjaHNUKGV4YW1wbGUzLkExLCBleGFtcGxlMy5BMiku
dCwgZXhhbXBsZTMuZXhwZWN0ZWRULCAyKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3No
b3VsZCBmaW5kIHRoZSBkZWdyZWVlcyBvZiBmcmVlZG9tIHVzaW5nIFdlbGNo4oCTU2F0dGVydGh3
YWl0ZSBlcXVhdGlvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RF
cXVhbChjb21wdXRlV2VsY2hzVChleGFtcGxlMS5BMSwgZXhhbXBsZTEuQTIpLmRlZ3JlZXNPZkZy
ZWVkb20sIGV4YW1wbGUxLmV4cGVjdGVkRGVncmVlc09mRnJlZWRvbSwgMik7CisgICAgICAgICAg
ICBhc3NlcnQuYWxtb3N0RXF1YWwoY29tcHV0ZVdlbGNoc1QoZXhhbXBsZTIuQTEsIGV4YW1wbGUy
LkEyKS5kZWdyZWVzT2ZGcmVlZG9tLCBleGFtcGxlMi5leHBlY3RlZERlZ3JlZXNPZkZyZWVkb20s
IDIpOworICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKGNvbXB1dGVXZWxjaHNUKGV4YW1w
bGUzLkExLCBleGFtcGxlMy5BMikuZGVncmVlc09mRnJlZWRvbSwgZXhhbXBsZTMuZXhwZWN0ZWRE
ZWdyZWVzT2ZGcmVlZG9tLCAyKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBy
ZXNwZWN0IHRoZSBzdGFydCBhbmQgdGhlIGVuZCBpbmRpY2VzJywgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgdmFyIEExID0gZXhhbXBsZTIuQTEuc2xpY2UoKTsKKyAgICAgICAgICAgIHZhciBB
MiA9IGV4YW1wbGUyLkEyLnNsaWNlKCk7CisKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFQgPSBT
dGF0aXN0aWNzLmNvbXB1dGVXZWxjaHNUKEExLCAwLCBBMS5sZW5ndGgsIEEyLCAwLCBBMi5sZW5n
dGgpLnQ7CisKKyAgICAgICAgICAgIEExLnVuc2hpZnQoMjEpOworICAgICAgICAgICAgQTEucHVz
aCgxNSk7CisgICAgICAgICAgICBBMS5wdXNoKDI0KTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1v
c3RFcXVhbChTdGF0aXN0aWNzLmNvbXB1dGVXZWxjaHNUKEExLCAxLCBBMS5sZW5ndGggLSAzLCBB
MiwgMCwgQTIubGVuZ3RoKS50LCBleHBlY3RlZFQpOworCisgICAgICAgICAgICBBMi51bnNoaWZ0
KDI0LjMpOworICAgICAgICAgICAgQTIudW5zaGlmdCgyNS44KTsKKyAgICAgICAgICAgIEEyLnB1
c2goMjMpOworICAgICAgICAgICAgQTIucHVzaCgyNCk7CisgICAgICAgICAgICBBMiA9IEEyLnJl
dmVyc2UoKTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChTdGF0aXN0aWNzLmNvbXB1
dGVXZWxjaHNUKEExLCAxLCBBMS5sZW5ndGggLSAzLCBBMiwgMiwgQTIubGVuZ3RoIC0gNCkudCwg
ZXhwZWN0ZWRUKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgncHJvYmFi
aWxpdHlSYW5nZUZvcldlbGNoc1QnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQg
ZmluZCB0aGUgdC12YWx1ZSBvZiB2YWx1ZXMgdXNpbmcgV2VsY2hcJ3MgdC10ZXN0JywgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKFN0YXRpc3RpY3MucHJvYmFi
aWxpdHlSYW5nZUZvcldlbGNoc1QoZXhhbXBsZTEuQTEsIGV4YW1wbGUxLkEyKS50LCBleGFtcGxl
MS5leHBlY3RlZFQsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKFN0YXRpc3Rp
Y3MucHJvYmFiaWxpdHlSYW5nZUZvcldlbGNoc1QoZXhhbXBsZTIuQTEsIGV4YW1wbGUyLkEyKS50
LCBleGFtcGxlMi5leHBlY3RlZFQsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFs
KFN0YXRpc3RpY3MucHJvYmFiaWxpdHlSYW5nZUZvcldlbGNoc1QoZXhhbXBsZTMuQTEsIGV4YW1w
bGUzLkEyKS50LCBleGFtcGxlMy5leHBlY3RlZFQsIDIpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIGZpbmQgdGhlIGRlZ3JlZWVzIG9mIGZyZWVkb20gdXNpbmcgV2VsY2jigJNT
YXR0ZXJ0aHdhaXRlIGVxdWF0aW9uJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0
LmFsbW9zdEVxdWFsKFN0YXRpc3RpY3MucHJvYmFiaWxpdHlSYW5nZUZvcldlbGNoc1QoZXhhbXBs
ZTEuQTEsIGV4YW1wbGUxLkEyKS5kZWdyZWVzT2ZGcmVlZG9tLAorICAgICAgICAgICAgICAgIGV4
YW1wbGUxLmV4cGVjdGVkRGVncmVlc09mRnJlZWRvbSwgMik7CisgICAgICAgICAgICBhc3NlcnQu
YWxtb3N0RXF1YWwoU3RhdGlzdGljcy5wcm9iYWJpbGl0eVJhbmdlRm9yV2VsY2hzVChleGFtcGxl
Mi5BMSwgZXhhbXBsZTIuQTIpLmRlZ3JlZXNPZkZyZWVkb20sCisgICAgICAgICAgICAgICAgZXhh
bXBsZTIuZXhwZWN0ZWREZWdyZWVzT2ZGcmVlZG9tLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5h
bG1vc3RFcXVhbChTdGF0aXN0aWNzLnByb2JhYmlsaXR5UmFuZ2VGb3JXZWxjaHNUKGV4YW1wbGUz
LkExLCBleGFtcGxlMy5BMikuZGVncmVlc09mRnJlZWRvbSwKKyAgICAgICAgICAgICAgICBleGFt
cGxlMy5leHBlY3RlZERlZ3JlZXNPZkZyZWVkb20sIDIpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIGNvbXB1dGUgdGhlIHJhbmdlIG9mIHByb2JhYmlsaXRlcyB1c2luZyB0aGUg
cC12YWx1ZSBvZiBXZWxjaFwncyB0LXRlc3QnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBh
c3NlcnQuYWxtb3N0RXF1YWwoU3RhdGlzdGljcy5wcm9iYWJpbGl0eVJhbmdlRm9yV2VsY2hzVChl
eGFtcGxlMS5BMSwgZXhhbXBsZTEuQTIpLnJhbmdlWzBdLCBleGFtcGxlMS5leHBlY3RlZFJhbmdl
WzBdKTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1vc3RFcXVhbChTdGF0aXN0aWNzLnByb2JhYmls
aXR5UmFuZ2VGb3JXZWxjaHNUKGV4YW1wbGUxLkExLCBleGFtcGxlMS5BMikucmFuZ2VbMV0sIGV4
YW1wbGUxLmV4cGVjdGVkUmFuZ2VbMV0pOworCisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1
YWwoU3RhdGlzdGljcy5wcm9iYWJpbGl0eVJhbmdlRm9yV2VsY2hzVChleGFtcGxlMi5BMSwgZXhh
bXBsZTIuQTIpLnJhbmdlWzBdLCBleGFtcGxlMi5leHBlY3RlZFJhbmdlWzBdKTsKKyAgICAgICAg
ICAgIGFzc2VydC5hbG1vc3RFcXVhbChTdGF0aXN0aWNzLnByb2JhYmlsaXR5UmFuZ2VGb3JXZWxj
aHNUKGV4YW1wbGUyLkExLCBleGFtcGxlMi5BMikucmFuZ2VbMV0sIGV4YW1wbGUyLmV4cGVjdGVk
UmFuZ2VbMV0pOworCisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoU3RhdGlzdGljcy5w
cm9iYWJpbGl0eVJhbmdlRm9yV2VsY2hzVChleGFtcGxlMy5BMSwgZXhhbXBsZTMuQTIpLnJhbmdl
WzBdLCBleGFtcGxlMy5leHBlY3RlZFJhbmdlWzBdKTsKKyAgICAgICAgICAgIGFzc2VydC5hbG1v
c3RFcXVhbChTdGF0aXN0aWNzLnByb2JhYmlsaXR5UmFuZ2VGb3JXZWxjaHNUKGV4YW1wbGUzLkEx
LCBleGFtcGxlMy5BMikucmFuZ2VbMV0sIGV4YW1wbGUzLmV4cGVjdGVkUmFuZ2VbMV0pOworICAg
ICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdtb3ZpbmdBdmVyYWdlJywgZnVuY3Rp
b24gKCkgeworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgb3JpZ2lhbiB2YWx1ZXMgd2hl
biBib3RoIGZvcndhcmQgYW5kIGJhY2t3YXJkIHdpbmRvdyBzaXplIGlzIDAnLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3MubW92aW5nQXZlcmFn
ZShbMSwgMiwgMywgNCwgNV0sIDAsIDApLCBbMSwgMiwgMywgNCwgNV0pOworICAgICAgICB9KTsK
KworICAgICAgICBpdCgnc2hvdWxkIGZpbmQgdGhlIG1vdmluZyBhdmVyYWdlIHdpdGggYSBwb3Np
dGl2ZSBiYWNrd2FyZCB3aW5kb3cnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKFN0YXRpc3RpY3MubW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDEsIDAp
LAorICAgICAgICAgICAgICAgIFsxLCAoMSArIDIpIC8gMiwgKDIgKyAzKSAvIDIsICgzICsgNCkg
LyAyLCAoNCArIDUpIC8gMl0pOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRp
c3RpY3MubW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDIsIDApLAorICAgICAgICAgICAg
ICAgIFsxLCAoMSArIDIpIC8gMiwgKDEgKyAyICsgMykgLyAzLCAoMiArIDMgKyA0KSAvIDMsICgz
ICsgNCArIDUpIC8gM10pOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3Rp
Y3MubW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDMsIDApLAorICAgICAgICAgICAgICAg
IFsxLCAoMSArIDIpIC8gMiwgKDEgKyAyICsgMykgLyAzLCAoMSArIDIgKyAzICsgNCkgLyA0LCAo
MiArIDMgKyA0ICsgNSkgLyA0XSk7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoU3Rh
dGlzdGljcy5tb3ZpbmdBdmVyYWdlKFsxLCAyLCAzLCA0LCA1XSwgNCwgMCksCisgICAgICAgICAg
ICAgICAgWzEsICgxICsgMikgLyAyLCAoMSArIDIgKyAzKSAvIDMsICgxICsgMiArIDMgKyA0KSAv
IDQsICgxICsgMiArIDMgKyA0ICsgNSkgLyA1XSk7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoU3RhdGlzdGljcy5tb3ZpbmdBdmVyYWdlKFsxLCAyLCAzLCA0LCA1XSwgNSwgMCksCisg
ICAgICAgICAgICAgICAgWzEsICgxICsgMikgLyAyLCAoMSArIDIgKyAzKSAvIDMsICgxICsgMiAr
IDMgKyA0KSAvIDQsICgxICsgMiArIDMgKyA0ICsgNSkgLyA1XSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCdzaG91bGQgZmluZCB0aGUgbW92aW5nIGF2ZXJhZ2Ugd2l0aCBhIHBvc2l0aXZl
IGZvcndhcmQgd2luZG93JywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChTdGF0aXN0aWNzLm1vdmluZ0F2ZXJhZ2UoWzEsIDIsIDMsIDQsIDVdLCAwLCAxKSwKKyAg
ICAgICAgICAgICAgICBbKDEgKyAyKSAvIDIsICgyICsgMykgLyAyLCAoMyArIDQpIC8gMiwgKDQg
KyA1KSAvIDIsIDVdKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNz
Lm1vdmluZ0F2ZXJhZ2UoWzEsIDIsIDMsIDQsIDVdLCAwLCAyKSwKKyAgICAgICAgICAgICAgICBb
KDEgKyAyICsgMykgLyAzLCAoMiArIDMgKyA0KSAvIDMsICgzICsgNCArIDUpIC8gMywgKDQgKyA1
KSAvIDIsIDVdKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLm1v
dmluZ0F2ZXJhZ2UoWzEsIDIsIDMsIDQsIDVdLCAwLCAzKSwKKyAgICAgICAgICAgICAgICBbKDEg
KyAyICsgMyArIDQpIC8gNCwgKDIgKyAzICsgNCArIDUpIC8gNCwgKDMgKyA0ICsgNSkgLyAzLCAo
NCArIDUpIC8gMiwgNV0pOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3Rp
Y3MubW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDAsIDQpLAorICAgICAgICAgICAgICAg
IFsoMSArIDIgKyAzICsgNCArIDUpIC8gNSwgKDIgKyAzICsgNCArIDUpIC8gNCwgKDMgKyA0ICsg
NSkgLyAzLCAoNCArIDUpIC8gMiwgNV0pOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KFN0YXRpc3RpY3MubW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDAsIDUpLAorICAgICAg
ICAgICAgICAgIFsoMSArIDIgKyAzICsgNCArIDUpIC8gNSwgKDIgKyAzICsgNCArIDUpIC8gNCwg
KDMgKyA0ICsgNSkgLyAzLCAoNCArIDUpIC8gMiwgNV0pOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIGZpbmQgdGhlIG1vdmluZyBhdmVyYWdlIHdoZW4gYm90aCBiYWNrd2FyZCBh
bmQgZm9yd2FyZCB3aW5kb3cgc2l6ZXMgYXJlIHNwZWNpZmllZCcsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoU3RhdGlzdGljcy5tb3ZpbmdBdmVyYWdlKFsxLCAy
LCAzLCA0LCA1XSwgMSwgMSksCisgICAgICAgICAgICAgICAgWygxICsgMikgLyAyLCAoMSArIDIg
KyAzKSAvIDMsICgyICsgMyArIDQpIC8gMywgKDMgKyA0ICsgNSkgLyAzLCAoNCArIDUpIC8gMl0p
OworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3MubW92aW5nQXZlcmFn
ZShbMSwgMiwgMywgNCwgNV0sIDEsIDIpLAorICAgICAgICAgICAgICAgIFsoMSArIDIgKyAzKSAv
IDMsICgxICsgMiArIDMgKyA0KSAvIDQsICgyICsgMyArIDQgKyA1KSAvIDQsICgzICsgNCArIDUp
IC8gMywgKDQgKyA1KSAvIDJdKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0
aXN0aWNzLm1vdmluZ0F2ZXJhZ2UoWzEsIDIsIDMsIDQsIDVdLCAyLCAxKSwKKyAgICAgICAgICAg
ICAgICBbKDEgKyAyKSAvIDIsICgxICsgMiArIDMpIC8gMywgKDEgKyAyICsgMyArIDQpIC8gNCwg
KDIgKyAzICsgNCArIDUpIC8gNCwgKDMgKyA0ICsgNSkgLyAzXSk7CisKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoU3RhdGlzdGljcy5tb3ZpbmdBdmVyYWdlKFsxLCAyLCAzLCA0LCA1XSwg
MiwgMiksCisgICAgICAgICAgICAgICAgWygxICsgMiArIDMpIC8gMywgKDEgKyAyICsgMyArIDQp
IC8gNCwgKDEgKyAyICsgMyArIDQgKyA1KSAvIDUsICgyICsgMyArIDQgKyA1KSAvIDQsICgzICsg
NCArIDUpIC8gM10pOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3Mu
bW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDIsIDMpLAorICAgICAgICAgICAgICAgIFso
MSArIDIgKyAzICsgNCkgLyA0LCAoMSArIDIgKyAzICsgNCArIDUpIC8gNSwgKDEgKyAyICsgMyAr
IDQgKyA1KSAvIDUsICgyICsgMyArIDQgKyA1KSAvIDQsICgzICsgNCArIDUpIC8gM10pOworCisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3MubW92aW5nQXZlcmFnZShbMSwg
MiwgMywgNCwgNV0sIDMsIDIpLAorICAgICAgICAgICAgICAgIFsoMSArIDIgKyAzKSAvIDMsICgx
ICsgMiArIDMgKyA0KSAvIDQsICgxICsgMiArIDMgKyA0ICsgNSkgLyA1LCAoMSArIDIgKyAzICsg
NCArIDUpIC8gNSwgKDIgKyAzICsgNCArIDUpIC8gNF0pOworCisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKFN0YXRpc3RpY3MubW92aW5nQXZlcmFnZShbMSwgMiwgMywgNCwgNV0sIDMsIDMp
LAorICAgICAgICAgICAgICAgIFsoMSArIDIgKyAzICsgNCkgLyA0LCAoMSArIDIgKyAzICsgNCAr
IDUpIC8gNSwgKDEgKyAyICsgMyArIDQgKyA1KSAvIDUsICgxICsgMiArIDMgKyA0ICsgNSkgLyA1
LCAoMiArIDMgKyA0ICsgNSkgLyA0XSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVz
Y3JpYmUoJ2N1bXVsYXRpdmVNb3ZpbmdBdmVyYWdlJywgZnVuY3Rpb24gKCkgeworICAgICAgICBp
dCgnc2hvdWxkIGZpbmQgdGhlIGN1bXVsYXRpdmUgbW92aW5nIGF2ZXJhZ2UnLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3MuY3VtdWxhdGl2ZU1v
dmluZ0F2ZXJhZ2UoWzEsIDIsIDMsIDQsIDVdKSwKKyAgICAgICAgICAgICAgICBbMSwgKDEgKyAy
KSAvIDIsICgxICsgMiArIDMpIC8gMywgKDEgKyAyICsgMyArIDQpIC8gNCwgKDEgKyAyICsgMyAr
IDQgKyA1KSAvIDVdKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNz
LmN1bXVsYXRpdmVNb3ZpbmdBdmVyYWdlKFstMSwgNywgMCwgOC41LCAyXSksCisgICAgICAgICAg
ICAgICAgWy0xLCAoLTEgKyA3KSAvIDIsICgtMSArIDcgKyAwKSAvIDMsICgtMSArIDcgKyAwICsg
OC41KSAvIDQsICgtMSArIDcgKyAwICsgOC41ICsgMikgLyA1XSk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgZGVzY3JpYmUoJ2V4cG9uZW50aWFsTW92aW5nQXZlcmFnZScsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBmaW5kIHRoZSBleHBvbmVudGlhbCBtb3ZpbmcgYXZl
cmFnZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBhdmVyYWdlcyA9IFN0YXRpc3Rp
Y3MuZXhwb25lbnRpYWxNb3ZpbmdBdmVyYWdlKFsxLCAyLCAzLCA0LCA1XSwgMC4yKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChhdmVyYWdlc1swXSwgMSk7CisgICAgICAgICAgICBhc3NlcnQu
YWxtb3N0RXF1YWwoYXZlcmFnZXNbMV0sIDAuMiAqIDIgKyAwLjggKiBhdmVyYWdlc1swXSk7Cisg
ICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoYXZlcmFnZXNbMl0sIDAuMiAqIDMgKyAwLjgg
KiBhdmVyYWdlc1sxXSk7CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoYXZlcmFnZXNb
M10sIDAuMiAqIDQgKyAwLjggKiBhdmVyYWdlc1syXSk7CisgICAgICAgICAgICBhc3NlcnQuYWxt
b3N0RXF1YWwoYXZlcmFnZXNbNF0sIDAuMiAqIDUgKyAwLjggKiBhdmVyYWdlc1szXSk7CisKKyAg
ICAgICAgICAgIGF2ZXJhZ2VzID0gU3RhdGlzdGljcy5leHBvbmVudGlhbE1vdmluZ0F2ZXJhZ2Uo
WzAuOCwgLTAuMiwgMC40LCAtMC4zLCAwLjVdLCAwLjEpOworICAgICAgICAgICAgYXNzZXJ0LmFs
bW9zdEVxdWFsKGF2ZXJhZ2VzWzBdLCAwLjgpOworICAgICAgICAgICAgYXNzZXJ0LmFsbW9zdEVx
dWFsKGF2ZXJhZ2VzWzFdLCAwLjEgKiAtMC4yICsgMC45ICogYXZlcmFnZXNbMF0pOworICAgICAg
ICAgICAgYXNzZXJ0LmFsbW9zdEVxdWFsKGF2ZXJhZ2VzWzJdLCAwLjEgKiAwLjQgKyAwLjkgKiBh
dmVyYWdlc1sxXSk7CisgICAgICAgICAgICBhc3NlcnQuYWxtb3N0RXF1YWwoYXZlcmFnZXNbM10s
IDAuMSAqIC0wLjMgKyAwLjkgKiBhdmVyYWdlc1syXSk7CisgICAgICAgICAgICBhc3NlcnQuYWxt
b3N0RXF1YWwoYXZlcmFnZXNbNF0sIDAuMSAqIDAuNSArIDAuOSAqIGF2ZXJhZ2VzWzNdKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnc2VnbWVudFRpbWVTZXJpZXNHcmVl
ZHlXaXRoU3R1ZGVudHNUVGVzdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBz
ZWdtZW50IHRpbWUgc2VyaWVzJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChTdGF0aXN0aWNzLnNlZ21lbnRUaW1lU2VyaWVzR3JlZWR5V2l0aFN0dWRlbnRzVFRl
c3QoWzEsIDEsIDEsIDMsIDMsIDNdLCAxKSwgWzAsIDIsIDZdKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoU3RhdGlzdGljcy5zZWdtZW50VGltZVNlcmllc0dyZWVkeVdpdGhTdHVkZW50
c1RUZXN0KFsxLCAxLjIsIDAuOSwgMS4xLCAxLjUsIDEuNywgMS44XSwgMSksIFswLCA0LCA3XSk7
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3NlZ21lbnRUaW1lU2VyaWVz
QnlNYXhpbWl6aW5nU2Nod2FyekNyaXRlcmlvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQo
J3Nob3VsZCBub3Qgc2VnbWVudCB0aW1lIHNlcmllcyBvZiBsZW5ndGggdHdvIGludG8gdHdvIHBp
ZWNlcycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbMSwgMl07Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3Muc2VnbWVudFRpbWVTZXJpZXNC
eU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9uKHZhbHVlcyksIFswLCAyXSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgc2VnbWVudCB0aW1lIHNlcmllcyBbMSwgMiwgM10gaW50
byB0aHJlZSBwaWVjZXMnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgdmFsdWVzID0g
WzEsIDIsIDNdOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLnNlZ21l
bnRUaW1lU2VyaWVzQnlNYXhpbWl6aW5nU2Nod2FyekNyaXRlcmlvbih2YWx1ZXMpLCBbMCwgMSwg
M10pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHNlZ21lbnQgdGltZSBzZXJp
ZXMgZm9yIHBsYXRmb3JtPTQ3IG1ldHJpYz00ODc1IGJldHdlZW4gMTQ1MzkzODU1Mzc3MiBhbmQg
MTQ1NDYzMDkwMzEwMCBpbnRvIHR3byBwYXJ0cycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHZhciB2YWx1ZXMgPSBbCisgICAgICAgICAgICAgICAgMTU0Ni41NjAzLCAxNTQ4LjE1MzYsIDE1
NjMuNTQ1MiwgMTUzOS43ODIzLCAxNTQ2LjQxODQsIDE1NDguOTI5OSwgMTUzMi41NDQ0LCAxNTQ2
LjI4MDAsIDE1NDcuMTc2MCwgMTU1MS4zNTA3LAorICAgICAgICAgICAgICAgIDE1NDguMzI3Nywg
MTU0NC43NjczLCAxNTQyLjcxNTcsIDE1MzguMTcwMCwgMTUzOC4wOTQ4LCAxNTQzLjAzNjQsIDE1
MzcuOTczNywgMTU0Mi4yNjExLCAxNTQzLjk2ODUsIDE1NDYuNDkwMSwKKyAgICAgICAgICAgICAg
ICAxNTQ0LjQwODAsIDE1NDAuODY3MSwgMTUzNy4zMzUzLCAxNTQ5LjQzMzEsIDE1NDEuNDQzNiwg
MTU0NC4xMjk5LCAxNTUwLjE3NzAsIDE1NTMuMTg3MiwgMTU0OS4zNDE3LCAxNTQyLjM3ODgsCisg
ICAgICAgICAgICAgICAgMTU0My41MDk0LCAxNTQxLjc5MDUsIDE1MzcuNjYyNSwgMTU0Ny4zODQw
LCAxNTM4LjUxODUsIDE1NDkuNjc2NCwgMTU1Ni42MTM4LCAxNTUyLjA0NzYsIDE1NDEuNzYyOSwg
MTU0NC43MDA2LAorICAgICAgICAgICAgICAgIC8qIHNlZ21lbnRzIGNoYW5nZXMgaGVyZSAqLwor
ICAgICAgICAgICAgICAgIDE1ODcuMTM5MCwgMTU5NC41NDUxLCAxNTg2LjI0MzAsIDE1OTYuNzMx
MCwgMTU0OC4xNDIzXTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoU3RhdGlzdGljcy5z
ZWdtZW50VGltZVNlcmllc0J5TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24odmFsdWVzKSwgWzAs
IDM5LCB2YWx1ZXMubGVuZ3RoXSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
c2VnbWVudCB0aW1lIHNlcmllcyBmb3IgcGxhdGZvcm09NTEgbWV0cmljPTQ1NjUgYmV0d2VlZW4g
MTQ1MjE5MTMzMjIzMCBhbmQgMTQ1NDYyODIwNjQ1MyBpbnRvIHR3byBwYXJ0cycsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbCisgICAgICAgICAgICAgICAgMTQ3MjQz
MjE2LCAxNDc3MzYzNTAsIDE0NjY3MDA5MCwgMTQ2NjI5NzIzLCAxNDI3NDkyMjAsIDE0ODIzNDE2
MSwgMTQ3MzAzODIyLCAxNDUxMTIwOTcsIDE0NTg1MjQ2OCwgMTQ3MDk0NzQxLAorICAgICAgICAg
ICAgICAgIDE0NzU2ODg5NywgMTQ1MTYwNTMxLCAxNDgwMjgyNDIsIDE0MTI3MjI3OSwgMTQ0MzIz
MjM2LCAxNDc0OTI1NjcsIDE0NjIxOTE1NiwgMTQ0ODk1NzI2LCAxNDQ0MTg5MjUsIDE0NTQ1NTg3
MywKKyAgICAgICAgICAgICAgICAxNDE5MjQ2OTQsIDE0MTAyNTgzMywgMTQyMDgyMTM5LCAxNDQx
NTQ2OTgsIDE0NTMxMjkzOSwgMTQ4MjgyNTU0LCAxNTE4NTIxMjYsIDE0OTMwMzc0MCwgMTQ5NDMx
NzAzLCAxNTAzMDAyNTcsCisgICAgICAgICAgICAgICAgMTQ4NzUyNDY4LCAxNTA0NDk3NzksIDE1
MDAzMDExOCwgMTUwNTUzNTQyLCAxNTE3NzU0MjEsIDE0NjY2Njc2MiwgMTQ5NDkyNTM1LCAxNDcx
NDMyODQsIDE1MDM1NjgzNywgMTQ3Nzk5NjE2LAorICAgICAgICAgICAgICAgIDE0OTg4OTUyMCwK
KyAgICAgICAgICAgICAgICAyNTg2MzQ3NTEsIDE0NzM5Nzg0MCwgMjU2MTA2MTQ3LCAyNjExMDA1
MzQsIDI1NTkwMzM5MiwgMjU5NjU4MDE5LCAyNTk1MDE0MzMsIDI1NzY4NTY4MiwgMjU4NDYwMzIy
LCAyNTU1NjM2MzMsCisgICAgICAgICAgICAgICAgMjU5MDUwNjYzLCAyNTU1Njc0OTAsIDI1MzI3
NDkxMV07CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3Muc2VnbWVudFRp
bWVTZXJpZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9uKHZhbHVlcyksIFswLCA0MCwgdmFs
dWVzLmxlbmd0aF0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzZWdt
ZW50IHRpbWUgc2VyaWVzIGZvciBwbGF0Zm9ybT01MSBtZXRyaWM9NDgxNyBiZXR3ZWVlbiAxNDUz
OTI2MDQ3NzQ5IGFuZCAxNDU0NjM1NDc5MDUyIGludG8gbXVsdGlwbGUgcGFydHMnLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgdmFsdWVzID0gWworICAgICAgICAgICAgICAgIDU3NjEu
MywgNTcyOS40LCA1NzMzLjQ5LCA1NzI3LjQsIDU3MjYuNTYsIDU3MjcuNDgsIDU3MTYuNzksIDU3
MjEuMjMsIDU2ODIuNSwgNTczNS43MSwKKyAgICAgICAgICAgICAgICA1NzUwLjk5LCA1NzU1LjUx
LCA1NzU2LjAyLCA1NzI1Ljc2LCA1NzEwLjE0LCA1Nzc2LjE3LCA1Nzc0LjI5LCA1NzY5Ljk5LCA1
NzM5LjY1LCA1NzU2LjA1LAorICAgICAgICAgICAgICAgIDU3MjIuODcsIDU3MjYuOCwgNTc3OS4y
MywgNTc3Mi4yLCA1NzYzLjEsIDU4MDcuMDVdOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChTdGF0aXN0aWNzLnNlZ21lbnRUaW1lU2VyaWVzQnlNYXhpbWl6aW5nU2Nod2FyekNyaXRlcmlv
bih2YWx1ZXMpLCBbMCwgdmFsdWVzLmxlbmd0aF0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30p
Owo=
</data>
<flag name="review"
          id="298837"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>