<?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>228696</bug_id>
          
          <creation_ts>2021-08-02 00:15:44 -0700</creation_ts>
          <short_desc>[Performance test][css-paint] Add test for contain: paint</short_desc>
          <delta_ts>2021-12-08 04:22:44 -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>CSS</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229802</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232883</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=233628</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>cathiechen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1781198</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-08-02 00:15:44 -0700</bug_when>
    <thetext>Add test for contain: paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781203</commentid>
    <comment_count>1</comment_count>
      <attachid>434744</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-08-02 00:47:54 -0700</bug_when>
    <thetext>Created attachment 434744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781231</commentid>
    <comment_count>2</comment_count>
      <attachid>434749</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-08-02 06:49:11 -0700</bug_when>
    <thetext>Created attachment 434749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781410</commentid>
    <comment_count>3</comment_count>
      <attachid>434749</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-02 15:05:38 -0700</bug_when>
    <thetext>Comment on attachment 434749
Patch

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

&gt; PerformanceTests/resources/runner.js:292
&gt; +    PerfTestRunner.addRunTestStartMarker = function () {
&gt; +      if (!window.testRunner || !window.testRunner.telemetryIsRunning)

These two functions are completely useless. Please remove.

&gt; PerformanceTests/resources/runner.js:311
&gt; +        PerfTestRunner.bufferedLog = true;

What is this?

&gt; PerformanceTests/resources/runner.js:315
&gt; +        // Force gc before starting the test to avoid the measured time from
&gt; +        // being affected by gc performance. See crbug.com/667811#c16.

Surely the bug isn&apos;t applicable to WebKit.

&gt; PerformanceTests/resources/runner.js:324
&gt; +        var now = PerfTestRunner.now();

This doesn&apos;t measure frame time at all...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782834</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-09 00:16:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/81684195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783514</commentid>
    <comment_count>5</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-08-11 09:01:32 -0700</bug_when>
    <thetext>Some findings from my M1 Mac Mini:

test                            | ToT        | with containment
large-grid.html                   28.4 runs/s  3.6 runs/s
contain-content-style-change.html 5.7ms        5.4ms
containment-resize.html           5.5ms        5.5ms
contain-update-layer-tree.html    25ms         30ms
scroller.html                     200ms        180ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783516</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-11 09:14:33 -0700</bug_when>
    <thetext>So containment is slower?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783535</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-08-11 09:39:33 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; So containment is slower?

Oops, I mixed up large-grid.html when trying to make my pretty table:
test                            | ToT        | with containment
large-grid.html                   3.6 runs/s   28.4 runs/s

So containment is a big win for large-grid.html and others are same or slightly worse. Anyway we will look into why performance is worse in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787120</commentid>
    <comment_count>8</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-08-25 02:31:28 -0700</bug_when>
    <thetext>Hi,

We found the performance is worse in contain-content-style-change.html

This case creates a lot of containment children(5000) and testing the performance of changing the first children&apos;s height.

If layout containment is not supported, these children&apos;s RenderLayers are normal flow, so they are not self painting RenderLayers.
However, with layout containment, a stacking context is created for each layout containment box.
Then the RenderLayers become self painting RenderLayers.
The self painting RenderLayer has some extra cost in performance, for instance, RenderLayer::collectFragments costs a lot.

The performance regressions are the same, if replacing the containment property in the patch with other CSS property that creates a stacking context,
for instance: `position: relative; z-order: 0;` or `isolation: isolate;`.

Here are the test results running in my local environment.

&quot;CSS Containment&quot; enabled:
:Time -&gt; [604, 552, 687, 704, 702, 696, 683, 684, 695.0000000000018, 712.9999999999982, 699, 699.0000000000018, 689.9999999999982, 681, 698, 694, 684, 685, 697, 693] ms
    mean: 682 ms
    median: 693.5 ms
    stdev: 37.4348556969655 ms
    min: 552 ms
    max: 712.9999999999982 ms

&quot;CSS Containment&quot; disabled:
:Time -&gt; [533, 538.0000000000018, 461.9999999999982, 465, 466, 461, 461, 461, 463, 458, 464, 459, 456, 449, 462, 458, 464, 460, 457, 449] ms
    mean: 467.29999999999995 ms
    median: 461 ms
    stdev: 23.771057147185356 ms
    min: 449 ms
    max: 538.0000000000018 ms

&quot;CSS Containment&quot; disabled + Added `position: relative; z-index: 0;` to `.listItem `:
:Time -&gt; [608, 540, 696, 697, 715, 684, 687, 687, 689, 706, 704, 693, 699, 709, 699, 689, 690, 707, 699, 689] ms
    mean: 684.3499999999999 ms
    median: 694.5 ms
    stdev: 40.20117175563812 ms
    min: 540 ms
    max: 715 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788923</commentid>
    <comment_count>9</comment_count>
      <attachid>434749</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-08-31 08:56:51 -0700</bug_when>
    <thetext>Comment on attachment 434749
Patch

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

&gt; PerformanceTests/IntersectionObserver/scroller.html:34
&gt; +// &apos;true&apos; and run chrome with &quot;--enable-gpu-benchmarking --no-sandbox&quot;.

Maybe you&apos;d like to remove this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789676</commentid>
    <comment_count>10</comment_count>
      <attachid>437139</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-09-02 05:29:23 -0700</bug_when>
    <thetext>Created attachment 437139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790693</commentid>
    <comment_count>11</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-09-06 06:50:40 -0700</bug_when>
    <thetext>We can add https://people.igalia.com/mrego/talks/cssconf-eu-2019-css-containment/examples/css-contain-example.html as a big CSS containment win, basically the subtest times drop from 5/6ms to 0/1ms on my macbook pro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793657</commentid>
    <comment_count>12</comment_count>
      <attachid>438234</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-09-15 03:15:14 -0700</bug_when>
    <thetext>Created attachment 438234
performance-tests-using-requestAnimationFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797820</commentid>
    <comment_count>13</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-09-28 03:30:21 -0700</bug_when>
    <thetext>Another round, this time on my (slow) Macbook pro:

test                            | ToT        | with containment
large-grid.html                   1.21 runs/s  8.2 runs/s
contain-content-style-change.html 17.5ms       19ms
containment-resize.html           30ms         40ms
contain-update-layer-tree.html    16.5ms       16.5ms
scroller.html                     872ms        880ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797875</commentid>
    <comment_count>14</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-09-28 06:54:36 -0700</bug_when>
    <thetext>with contain: paint patch enabled (note scroller.html improves):

test                            | ToT        | with containment
large-grid.html                   1.21 runs/s  8.3 runs/s
contain-content-style-change.html 19ms         20.5ms
containment-resize.html           30ms         40ms
contain-update-layer-tree.html    19ms         20.5ms
scroller.html                     864ms        769ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821504</commentid>
    <comment_count>15</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-12-08 04:22:44 -0800</bug_when>
    <thetext>At this point we should create bugs with single perf tests, so let&apos;s close this perf test import bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434744</attachid>
            <date>2021-08-02 00:47:54 -0700</date>
            <delta_ts>2021-08-02 06:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228696-20210802094752.patch</filename>
            <type>text/plain</type>
            <size>5496</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTE0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5NDkwOTU3NDQ3
M2NiOTE1YmMyODNmZWU2OGM5OTE0ZmNhNzM5YzMuLmRhOWMwNGNiZmQ5OTQ1MjlmZDI5OTZjZWUz
Yzc2YTA3MzU3M2UyZGMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDgt
MDIgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbUGVyZm9ybWFuY2Ug
dGVzdF1bY3NzLXBhaW50XSBBZGQgdGVzdCBmb3IgY29udGFpbjogcGFpbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODY5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTGF5b3V0L2xhcmdlLWdyaWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3J1bm5lci5qczoKKyAgICAgICAgKFBl
cmZUZXN0UnVubmVyLmZvcmNlTGF5b3V0KToKKwogMjAyMS0wNy0yNSAgQ2F0aGllIENoZW4gIDxj
YXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1BlcmZvcm1hbmNlIHRlc3RdW2Nzcy1j
b250YWluXSBBZGQgdGVzdCB0byBjb250YWluOiBzaXplIGxheW91dApkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9MYXlvdXQvbGFyZ2UtZ3JpZC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9M
YXlvdXQvbGFyZ2UtZ3JpZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMDU5ZWU3ZjRlYWM3ZTUzODA4Mzcz
OGM3OTM5MjEzODVjYTk1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0xh
eW91dC9sYXJnZS1ncmlkLmh0bWwKQEAgLTAsMCArMSwxNDEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+CisK
KzxzdHlsZT4KK2h0bWwsIGJvZHkgeyBoZWlnaHQ6IDEwMCUgfQordWktcGFuZSNtYWluIHsKKyAg
ICBjb250YWluOiBzdHJpY3Q7CisgICAgbWluLXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CisgICAg
d2lkdGg6IDEwMCUgIWltcG9ydGFudDsKKyAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsK
KyAgICBtaW4taGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CisgICAgaGVpZ2h0OiAxMDAlICFpbXBv
cnRhbnQ7CisgICAgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50OworICAgIG92ZXJmbG93OiBo
aWRkZW4KK30KKworCitbcm93MV0geworICAgIGdyaWQtcm93LXN0YXJ0OiAxOworICAgIGdyaWQt
cm93LWVuZDogYXV0bworfQorCitbcm93Ml0geworICAgIGdyaWQtcm93LXN0YXJ0OiAyOworICAg
IGdyaWQtcm93LWVuZDogYXV0bworfQorCisKK1tjb2wyXSB7CisgICAgZ3JpZC1jb2x1bW4tc3Rh
cnQ6IDI7CisgICAgZ3JpZC1jb2x1bW4tZW5kOiBhdXRvCit9CisKK3VpLXBhbmUgeworICAgIGRp
c3BsYXk6IGdyaWQ7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGNvbnRhaW46IGNvbnRlbnQKK30K
KworW2hncmlkXSB7CisgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIKK30KKworW3ZncmlkXSB7
CisgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIKK30KKwordWktaWNvbiB7CisgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworfQorCitbY29sbGFwc2VkIF0geyBkaXNwbGF5OiBub25lOyB9
CisKKy5ldmVudENoaWxkcmVuV3JhcCB7CisgICAgZ3JpZC1jb2x1bW46IDEvc3BhbiAzOworICAg
IGNvbnRhaW46IGNvbnRlbnQKK30KKworLmV2ZW50Q2hpbGRyZW5Db250YWluZXIgeworICAgIGRp
c3BsYXk6IGdyaWQ7CisgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzZW0gMHB4IDFmcjsKKyAg
ICBjb250YWluOiBjb250ZW50OworfQorCisuYWN0aW9uQmxvY2tXcmFwIHsKKyAgICBncmlkLWNv
bHVtbjogMzsKKyAgICBhbGlnbi1zZWxmOiBzdGFydDsKKyAgICBjb250YWluOiBsYXlvdXQgc3R5
bGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlCit9CisKKy5hY3Rpb25CbG9jayB7CisgICAgZGlz
cGxheTogZ3JpZDsKKyAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKKyAgICBvdmVyZmxv
dzogaGlkZGVuOworICAgIGNvbnRhaW46IGNvbnRlbnQKK30KKworPC9zdHlsZT4KKworPC9oZWFk
PgorCis8Ym9keT4KKyAgICA8cHJlIGlkPSJsb2ciPjwvcHJlPgorCisgICAgPHVpLXBhbmUgaWQ9
Im1haW4iIHZncmlkPSIiIHN0eWxlPSJncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjsiPgorICAgICAg
ICA8dWktcGFuZSBpZD0ibWlkZGxlIiByb3cxPSIiIGhncmlkPSIiIHN0eWxlPSJncmlkLXRlbXBs
YXRlLWNvbHVtbnM6IDMyMHB4IDFmciAzMDBweDsiPgorICAgICAgICAgICAgPHVpLXBhbmUgY29s
Mj0iIj4KKyAgICAgICAgICAgICAgICA8dWktYm9keSByb3cyPSIiPgorICAgICAgICAgICAgICAg
ICAgICA8dWktcGFuZSBjbGFzcz0iZXZlbnRTaGVldFZpZXdQYW5lIj4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDx1aS1ib2R5IHJvdzI9IiIgY2xhc3M9ImV2ZW50U2hlZXRWaWV3Ij4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idGhpc2lzdGhlb25lIiBjbGFzcz0i
ZXZlbnRDaGlsZHJlbldyYXAiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iZXZlbnRDaGlsZHJlbkNvbnRhaW5lciI+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uQmxvY2tXcmFwIj4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9u
QmxvY2siIGlkPSJpbnNlcnRoZXJlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3VpLWJvZHk+CisgICAg
ICAgICAgICAgICAgICAgIDwvdWktcGFuZT4KKyAgICAgICAgICAgICAgICA8L3VpLWJvZHk+Cisg
ICAgICAgICAgICA8L3VpLXBhbmU+CisgICAgICAgIDwvdWktcGFuZT4KKyAgICA8L3VpLXBhbmU+
CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RoaXNpc3RoZW9uZScpOworCisgICAgICAgIGZ1bmN0aW9uIHNldHVwKCkgeworICAg
ICAgICAgIGxldCBpbnNlcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zZXJ0aGVyZScp
OworICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjc1MDsgKytpKSB7CisgICAgICAgICAg
ICBsZXQgbmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAg
bmFtZS5jbGFzc05hbWUgPSAnYWN0aW9uTmFtZUNlbGwnOworICAgICAgICAgICAgbmFtZS5pbm5l
ckhUTUwgPSAnPHVpLWljb24gc3R5bGU9IndpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7ICI+PC91
aS1pY29uPjxzcGFuIGNsYXNzPSJhY3Rpb25PYmplY3ROYW1lU3BhbiI+QnV0dG9uPC9zcGFuPic7
CisgICAgICAgICAgICBsZXQgZGVzYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICAgICAgZGVzYy5jbGFzc05hbWUgPSAnYWN0aW9uRGVzY0NlbGwnOworICAgICAgICAg
ICAgZGVzYy5pbm5lckhUTUwgPSAnU2V0IHBvc2l0aW9uIHRvIDxldmVudC1wYXJhbWV0ZXIgZGF0
YS1pbmRleD0iMCI+IDx1aS1pY29uIGNsYXNzPSJvYmplY3RQYXJhbWV0ZXJJY29uIiBzdHlsZT0i
d2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDsgIj48L3VpLWljb24+PHNwYW4gY2xhc3M9Im9iamVj
dFBhcmFtZXRlck9iamVjdE5hbWUiPlNwcml0ZTwvc3Bhbj4gPC9ldmVudC1wYXJhbWV0ZXI+IDxl
bT4oaW1hZ2UgcG9pbnQgPGV2ZW50LXBhcmFtZXRlciBkYXRhLWluZGV4PSIxIj4zMjEzMjEzPC9l
dmVudC1wYXJhbWV0ZXI+KTwvZW0+JzsKKyAgICAgICAgICAgIGluc2VydC5hcHBlbmRDaGlsZChu
YW1lKTsKKyAgICAgICAgICAgIGluc2VydC5hcHBlbmRDaGlsZChkZXNjKTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgdGFy
Z2V0LnNldEF0dHJpYnV0ZSgnY29sbGFwc2VkJywgJycpOworICAgICAgICAgICAgUGVyZlRlc3RS
dW5uZXIuZm9yY2VMYXlvdXQoKTsKKyAgICAgICAgICAgIHRhcmdldC5yZW1vdmVBdHRyaWJ1dGUo
J2NvbGxhcHNlZCcpOworICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIuZm9yY2VMYXlvdXQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHNldHVwKCk7CisgICAgICAgIFBlcmZUZXN0UnVubmVyLm1l
YXN1cmVSdW5zUGVyU2Vjb25kKHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiTWVhc3VyZXMg
cGVyZm9ybWFuY2Ugb2YgbGF5aW5nIG91dCBhIGxhcmdlIGdyaWQuIiwKKyAgICAgICAgICAgIHJ1
bjogdGVzdAorICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKworPC9odG1sPgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCmluZGV4IDYwMWJjZDcyNWU2NjVhMjg0YzZh
OGQ3M2Q3NDQ2NDlmNDVlYzY3NjEuLmFiZTg5MmU5NDAxNzYwMWFhOWFlZGQ5NTE4NjdhODhiZThk
YWM2MTUgMTAwNzU1Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMKQEAgLTE0OCw2ICsxNDgs
MTQgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIGZpbmlzaCgpOwogICAgIH0K
IAorICAgIFBlcmZUZXN0UnVubmVyLmZvcmNlTGF5b3V0ID0gZnVuY3Rpb24oZG9jKSB7CisgICAg
ICAgIGRvYyA9IGRvYyB8fCBkb2N1bWVudDsKKyAgICAgICAgaWYgKGRvYy5ib2R5KQorICAgICAg
ICAgICAgZG9jLmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICBlbHNlIGlmIChkb2MuZG9jdW1l
bnRFbGVtZW50KQorICAgICAgICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7
CisgICAgfTsKKwogICAgIGZ1bmN0aW9uIHN0YXJ0KHRlc3QsIHJ1bm5lciwgZG9Ob3RMb2dTdGFy
dCkgewogICAgICAgICBpZiAoIXRlc3QpIHsKICAgICAgICAgICAgIGxvZ0ZhdGFsRXJyb3IoIkdv
dCBhIGJhZCB0ZXN0IG9iamVjdC4iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434749</attachid>
            <date>2021-08-02 06:49:11 -0700</date>
            <delta_ts>2021-09-02 05:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228696-20210802154909.patch</filename>
            <type>text/plain</type>
            <size>16780</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTI2CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5NDkwOTU3NDQ3
M2NiOTE1YmMyODNmZWU2OGM5OTE0ZmNhNzM5YzMuLjM2M2ZjODg2YTE5ZDE3MzAzYTcxNTc1ZmVj
ZTczN2U1OTcwNzI3MDQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDgt
MDIgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbUGVyZm9ybWFuY2Ug
dGVzdF1bY3NzLXBhaW50XSBBZGQgdGVzdCBmb3IgY29udGFpbjogcGFpbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODY5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIvc2Nyb2xsZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogTGF5b3V0L2NvbnRhaW4tY29udGVu
dC1zdHlsZS1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogTGF5b3V0L2xhcmdlLWdyaWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogUGFpbnQvY29udGFpbi11cGRhdGUtbGF5ZXItdHJlZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBQYWludC9jb250YWlubWVudC1yZXNpemUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcmVzb3VyY2VzL3J1bm5lci5qczoKKyAgICAgICAgKFBlcmZUZXN0UnVu
bmVyLmZvcmNlTGF5b3V0KToKKyAgICAgICAgKFBlcmZUZXN0UnVubmVyLmFkZFJ1blRlc3RTdGFy
dE1hcmtlcik6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5hZGRSdW5UZXN0RW5kTWFya2VyKToK
KyAgICAgICAgKFBlcmZUZXN0UnVubmVyLm1lYXN1cmVGcmFtZVRpbWUpOgorICAgICAgICAobWVh
c3VyZUZyYW1lVGltZU9uY2UpOgorCiAyMDIxLTA3LTI1ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNo
ZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5d
IEFkZCB0ZXN0IHRvIGNvbnRhaW46IHNpemUgbGF5b3V0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0ludGVyc2VjdGlvbk9ic2VydmVyL3Njcm9sbGVyLmh0bWwgYi9QZXJmb3JtYW5jZVRl
c3RzL0ludGVyc2VjdGlvbk9ic2VydmVyL3Njcm9sbGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg5NjNj
NjE2NjJmOWJjMTM3ZTcxN2U3YjAxYWY5MWFlZGM0N2VlNAotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIvc2Nyb2xsZXIuaHRtbApAQCAtMCww
ICsxLDg2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICBtYXJn
aW46IDRweDsKKyAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICBib3JkZXI6IDFweCBzb2xpZCBi
bHVlOworfQorLnZzY3JvbGxlciB7CisgIG92ZXJmbG93LXk6IG92ZXJsYXk7CisgIG1heC1oZWln
aHQ6IDMwMHB4OworICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsKKyAgcGFkZGluZzogMnB4Owor
ICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKy5pdGVtLWNvbnRhaW5lciB7CisgIGRpc3Bs
YXk6IGZsZXg7CisgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CisgIGp1c3RpZnktY29udGVudDog
c3RhcnQ7CisgIGNvbnRhaW46IHBhaW50OworfQorLml0ZW0geworICBmb250LXNpemU6IDE4cHg7
CisgIGZsZXg6IDA7CisgIG1hcmdpbjogMXB4IDA7Cit9Cis8L3N0eWxlPgorCis8Ym9keT48L2Jv
ZHk+CisKKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvcnVubmVyLmpzJz48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKKy8vIFRvIGdlbmVyYXRlIHByb2ZpbGUgZGF0YSBmb3IgYW5hbHlzaXMgd2l0aCBw
cHJvZiwgc2V0IGdlbmVyYXRlUHJvZmlsZSB0bworLy8gJ3RydWUnIGFuZCBydW4gY2hyb21lIHdp
dGggIi0tZW5hYmxlLWdwdS1iZW5jaG1hcmtpbmcgLS1uby1zYW5kYm94Ii4KK2NvbnN0IGdlbmVy
YXRlUHJvZmlsZSA9IGZhbHNlOworCisvLyBIb3cgbWFueSBvYnNlcnZlZCBsaXN0IGl0ZW1zLgor
Y29uc3QgbnVtSXRlbXMgPSAxMDAwMDA7CisvLyBIb3cgbWFueSBsZXZlbHMgb2YgRE9NIGhpZXJh
cmNoeSBiZXR3ZWVuIHRoZSBzY3JvbGxpbmcgcm9vdCBhbmQgbGlzdCBpdGVtcy4KK2NvbnN0IGNv
bnRhaW5lckRlcHRoID0gMTAwOworLy8gSG93IGZhciB0byBzY3JvbGwgb24gZWFjaCBmcmFtZS4K
K2NvbnN0IHZlbG9jaXR5ID0gMTAwMDsKKworbGV0IHNjcm9sbGVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CitzY3JvbGxlci5jbGFzc0xpc3QuYWRkKCd2c2Nyb2xsZXInKTsKK2Rv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2Nyb2xsZXIpOworbGV0IHBhcmVudCA9IHNjcm9sbGVy
OworZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJEZXB0aDsgaSsrKSB7CisgIGxldCBjb250
YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgY29udGFpbmVyLmNsYXNz
TGlzdC5hZGQoJ2NvbnRhaW5lcicpOworICBwYXJlbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsK
KyAgcGFyZW50ID0gY29udGFpbmVyOworfQorbGV0IGl0ZW1Db250YWluZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKK2l0ZW1Db250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXRlbS1j
b250YWluZXInKTsKK3BhcmVudC5hcHBlbmRDaGlsZChpdGVtQ29udGFpbmVyKTsKK3BhcmVudCA9
IGl0ZW1Db250YWluZXI7CisKK2xldCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZl
cihlbnRyaWVzID0+IHsKKyAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHsKKyAgICBpZiAoZW50
cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwKSB7CisgICAgICBlbnRyeS50YXJnZXQuY2xhc3NMaXN0
LmFkZCgndmlzaWJsZScpOworICAgIH0gZWxzZSB7CisgICAgICBlbnRyeS50YXJnZXQuY2xhc3NM
aXN0LnJlbW92ZSgndmlzaWJsZScpOworICAgIH0KKyAgfSk7Cit9LCB7IHJvb3Q6IHNjcm9sbGVy
IH0pOworCitmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZW1zOyBpKyspIHsKKyAgbGV0IGl0ZW0g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgaXRlbS5jbGFzc0xpc3QuYWRkKCdp
dGVtJyk7CisgIHBhcmVudC5hcHBlbmRDaGlsZChpdGVtKTsKKyAgb2JzZXJ2ZXIub2JzZXJ2ZShp
dGVtKTsKK30KKworUGVyZlRlc3RSdW5uZXIubWVhc3VyZUZyYW1lVGltZSh7CisgIGRlc2NyaXB0
aW9uOiAnRnJhbWUgdGltZSB3aXRoIG9uZSBJbnRlcnNlY3Rpb25PYnNlcnZlciB3aXRoIGEgc2Ny
b2xsaW5nIHJvb3QgZWxlbWVudCwgb2JzZXJ2aW5nIG1hbnkgaXRlbXMuJywKKyAgc2V0dXA6ICgp
ID0+IHsKKyAgICBsZXQgbWF4X3Njcm9sbCA9IHNjcm9sbGVyLnNjcm9sbEhlaWdodCAtIHNjcm9s
bGVyLmNsaWVudEhlaWdodDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAoc2Nyb2xsZXIuc2Ny
b2xsVG9wICsgdmVsb2NpdHkpICUgbWF4X3Njcm9sbDsKKyAgfSwKKyAgcnVuOiAoKSA9PiB7fSwK
KyAgZG9uZTogKCkgPT4ge30KK30pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvTGF5b3V0L2NvbnRhaW4tY29udGVudC1zdHlsZS1jaGFuZ2UuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvTGF5b3V0L2NvbnRhaW4tY29udGVudC1zdHlsZS1jaGFuZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMTZmMGQ2MTU3YjY3ZjNmYjYyOGVlNjc1MmU4NTc1ZjBjNjM2ZTkwCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvY29udGFpbi1jb250ZW50LXN0eWxl
LWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHRpdGxlPkNvbnRhaW4gbGF5
b3V0IHBlcmZvcm1hbmNlPC90aXRsZT4KKzxzdHlsZT4KKyNsaXN0Q29udGFpbmVyIHsKKyAgbWFy
Z2luOiAwIGF1dG87CisgIHdpZHRoOiA2MDBweDsKKyAgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsK
KyAgY29udGFpbjogY29udGVudDsKK30KKy5saXN0SXRlbSB7CisgIG91dGxpbmU6IDJweCBzb2xp
ZCBncmVlbjsKKyAgcGFkZGluZzogLjRlbTsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgY29udGFp
bjogY29udGVudDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Imxpc3RD
b250YWluZXIiPjwvZGl2PgorPHNjcmlwdD4KK2NvbnN0IExPUkVNX0lQU1VNID0gIkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBl
aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iOworCitsZXQgbGlzdENvbnRh
aW5lciA9IG51bGw7CisKK2Z1bmN0aW9uIGNyZWF0ZUxpc3RJdGVtKCkgeworICBsZXQgaXRlbSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICBpdGVtLmNsYXNzTGlzdC5hZGQoImxp
c3RJdGVtIik7CisgIGl0ZW0udGV4dENvbnRlbnQgPSBMT1JFTV9JUFNVTS5zdWJzdHIoCisgICAg
ICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKSwgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgp
KjIwMCkrMTUwKTsKKyAgbGlzdENvbnRhaW5lci5hcHBlbmRDaGlsZChpdGVtKTsKK30KKwordmFy
IGhlaWdodCA9IDA7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICBoZWlnaHQrKzsKKyAgbGlzdENv
bnRhaW5lci5maXJzdENoaWxkLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CisgIGlmICho
ZWlnaHQgPiA1MCkKKyAgICBoZWlnaHQgPSAwOworfQorCitmdW5jdGlvbiBzZXR1cFRlc3QoKSB7
CisgIGxpc3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlzdENvbnRhaW5l
ciIpOworICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDA7ICsraSkgeworICAgIGNyZWF0ZUxpc3RJ
dGVtKCk7CisgIH0KKyAgUGVyZlRlc3RSdW5uZXIuZm9yY2VMYXlvdXQoKTsKK30KKworZnVuY3Rp
b24gZG9uZSgpIHsKKyAgbGlzdENvbnRhaW5lci5pbm5lckhUTUwgPSAiIjsKK30KKworc2V0dXBU
ZXN0KCk7CisKK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVGcmFtZVRpbWUoeworICAgIGRlc2NyaXB0
aW9uOiAiTWVhc3VyZXMgcGVyZm9ybWFuY2Ugb2YgY2hhbmdpbmcgdGhlIGhlaWdodCBvZiBhIGNo
aWxkIG9mIGEgY29udGFpbjpjb250ZW50cyBvYmplY3QuIiwKKyAgICBpdGVyYXRpb25Db3VudDog
NTAsCisgICAgcnVuOiBydW5UZXN0LAorICAgIGRvbmU6IGRvbmUKK30pOworCis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xhcmdlLWdyaWQuaHRtbCBiL1Bl
cmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xhcmdlLWdyaWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTNhMmFi
ZjM4ZjEyZjczMzRlYWE4M2IyYWFkNTY2MjgzNDk4NWIyCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9MYXlvdXQvbGFyZ2UtZ3JpZC5odG1sCkBAIC0wLDAgKzEsMTUyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorCis8c3R5bGU+Cito
dG1sLCBib2R5IHsgaGVpZ2h0OiAxMDAlIH0KK3VpLXBhbmUjbWFpbiB7CisgICAgY29udGFpbjog
c3RyaWN0OworICAgIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50OworICAgIHdpZHRoOiAxMDAl
ICFpbXBvcnRhbnQ7CisgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CisgICAgbWluLWhl
aWdodDogMTAwJSAhaW1wb3J0YW50OworICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OworICAg
IG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKKyAgICBvdmVyZmxvdzogaGlkZGVuCit9CisK
KworW3JvdzFdIHsKKyAgICBncmlkLXJvdy1zdGFydDogMTsKKyAgICBncmlkLXJvdy1lbmQ6IGF1
dG8KK30KKworW3JvdzJdIHsKKyAgICBncmlkLXJvdy1zdGFydDogMjsKKyAgICBncmlkLXJvdy1l
bmQ6IGF1dG8KK30KKworCitbY29sMl0geworICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAyOworICAg
IGdyaWQtY29sdW1uLWVuZDogYXV0bworfQorCit1aS1wYW5lIHsKKyAgICBkaXNwbGF5OiBncmlk
OworICAgIGhlaWdodDogMTAwJTsKKyAgICBjb250YWluOiBjb250ZW50Cit9CisKK1toZ3JpZF0g
eworICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyCit9CisKK1t2Z3JpZF0geworICAgIGdyaWQt
dGVtcGxhdGUtY29sdW1uczogMWZyCit9CisKK3VpLWljb24geworICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKK30KKworW2NvbGxhcHNlZCBdIHsgZGlzcGxheTogbm9uZTsgfQorCisuZXZlbnRD
aGlsZHJlbldyYXAgeworICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMzsKKyAgICBjb250YWluOiBj
b250ZW50Cit9CisKKy5ldmVudENoaWxkcmVuQ29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBncmlk
OworICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogM2VtIDBweCAxZnI7CisgICAgY29udGFpbjog
Y29udGVudDsKK30KKworLmFjdGlvbkJsb2NrV3JhcCB7CisgICAgZ3JpZC1jb2x1bW46IDM7Cisg
ICAgYWxpZ24tc2VsZjogc3RhcnQ7CisgICAgY29udGFpbjogbGF5b3V0IHN0eWxlOworICAgIHBv
c2l0aW9uOiByZWxhdGl2ZQorfQorCisuYWN0aW9uQmxvY2sgeworICAgIGRpc3BsYXk6IGdyaWQ7
CisgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsK
KyAgICBjb250YWluOiBjb250ZW50Cit9CisKKzwvc3R5bGU+CisKKzwvaGVhZD4KKworPGJvZHk+
CisgICAgPHByZSBpZD0ibG9nIj48L3ByZT4KKworICAgIDx1aS1wYW5lIGlkPSJtYWluIiB2Z3Jp
ZD0iIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7Ij4KKyAgICAgICAgPHVpLXBhbmUg
aWQ9Im1pZGRsZSIgcm93MT0iIiBoZ3JpZD0iIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
OiAzMjBweCAxZnIgMzAwcHg7Ij4KKyAgICAgICAgICAgIDx1aS1wYW5lIGNvbDI9IiI+CisgICAg
ICAgICAgICAgICAgPHVpLWJvZHkgcm93Mj0iIj4KKyAgICAgICAgICAgICAgICAgICAgPHVpLXBh
bmUgY2xhc3M9ImV2ZW50U2hlZXRWaWV3UGFuZSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8
dWktYm9keSByb3cyPSIiIGNsYXNzPSJldmVudFNoZWV0VmlldyI+CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRoaXNpc3RoZW9uZSIgY2xhc3M9ImV2ZW50Q2hpbGRy
ZW5XcmFwIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImV2ZW50Q2hpbGRyZW5Db250YWluZXIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbkJsb2NrV3JhcCI+CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbkJsb2NrIiBpZD0i
aW5zZXJ0aGVyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgPC91aS1ib2R5PgorICAgICAgICAgICAgICAg
ICAgICA8L3VpLXBhbmU+CisgICAgICAgICAgICAgICAgPC91aS1ib2R5PgorICAgICAgICAgICAg
PC91aS1wYW5lPgorCisgICAgICAgIDwvdWktcGFuZT4KKyAgICA8L3VpLXBhbmU+CisKKworICAg
IDxzY3JpcHQ+CisgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGhpc2lzdGhlb25lJyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2V0dXAoKSB7CisgICAgICAgICAg
bGV0IGluc2VydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnNlcnRoZXJlJyk7CisgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNzUwOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBu
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBuYW1lLmNs
YXNzTmFtZSA9ICdhY3Rpb25OYW1lQ2VsbCc7CisgICAgICAgICAgICBuYW1lLmlubmVySFRNTCA9
ICc8dWktaWNvbiBzdHlsZT0id2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDsgIj48L3VpLWljb24+
PHNwYW4gY2xhc3M9ImFjdGlvbk9iamVjdE5hbWVTcGFuIj5CdXR0b248L3NwYW4+JzsKKyAgICAg
ICAgICAgIGxldCBkZXNjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
ICAgICBkZXNjLmNsYXNzTmFtZSA9ICdhY3Rpb25EZXNjQ2VsbCc7CisgICAgICAgICAgICBkZXNj
LmlubmVySFRNTCA9ICdTZXQgcG9zaXRpb24gdG8gPGV2ZW50LXBhcmFtZXRlciBkYXRhLWluZGV4
PSIwIj4gPHVpLWljb24gY2xhc3M9Im9iamVjdFBhcmFtZXRlckljb24iIHN0eWxlPSJ3aWR0aDog
MjBweDsgaGVpZ2h0OiAyMHB4OyAiPjwvdWktaWNvbj48c3BhbiBjbGFzcz0ib2JqZWN0UGFyYW1l
dGVyT2JqZWN0TmFtZSI+U3ByaXRlPC9zcGFuPiA8L2V2ZW50LXBhcmFtZXRlcj4gPGVtPihpbWFn
ZSBwb2ludCA8ZXZlbnQtcGFyYW1ldGVyIGRhdGEtaW5kZXg9IjEiPjMyMTMyMTM8L2V2ZW50LXBh
cmFtZXRlcj4pPC9lbT4nOworICAgICAgICAgICAgaW5zZXJ0LmFwcGVuZENoaWxkKG5hbWUpOwor
ICAgICAgICAgICAgaW5zZXJ0LmFwcGVuZENoaWxkKGRlc2MpOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICB0YXJnZXQuc2V0
QXR0cmlidXRlKCdjb2xsYXBzZWQnLCAnJyk7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5m
b3JjZUxheW91dCgpOworICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgnY29sbGFw
c2VkJyk7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5mb3JjZUxheW91dCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9uZSgpIHsKKyAgICAgICAgICBsZXQgaW5zZXJ0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc2VydGhlcmUnKTsKKyAgICAgICAgICBpbnNlcnQu
aW5uZXJIVE1MID0gIiI7CisgICAgICAgIH0KKworICAgICAgICBzZXR1cCgpOworICAgICAgICBQ
ZXJmVGVzdFJ1bm5lci5tZWFzdXJlUnVuc1BlclNlY29uZCh7CisgICAgICAgICAgICBkZXNjcmlw
dGlvbjogIk1lYXN1cmVzIHBlcmZvcm1hbmNlIG9mIGxheWluZyBvdXQgYSBsYXJnZSBncmlkLiIs
CisgICAgICAgICAgICBydW46IHRlc3QsCisgICAgICAgICAgICBkb25lOiBkb25lCisgICAgICAg
IH0pOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW4tdXBkYXRlLWxheWVyLXRyZWUuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvUGFpbnQvY29udGFpbi11cGRhdGUtbGF5ZXItdHJlZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiY2QwMzQxMmU5Y2UxYzNjYjAwOWFlYTdiZjdhYzYzYzJiMGViYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW4tdXBkYXRlLWxheWVyLXRyZWUu
aHRtbApAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5Db250YWluIHVw
ZGF0ZSBsYXllciB0cmVlIHBlcmZvcm1hbmNlPC90aXRsZT4KKzxzdHlsZT4KKyN3cmFwcGVyIHsK
KyAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmNlbGwgeworICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJvcmRlcjogc29saWQ7CisgIGNvbnRhaW46
IHN0cmljdDsKK30KKy5wcm9ncmVzc2JhciB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVm
dDogMHB4OworICB0b3A6IDVweDsKKyAgaGVpZ2h0OiAxMHB4OworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxwcmUgaWQ9ImxvZyI+
PC9wcmU+Cis8ZGl2IGlkPSJ3cmFwcGVyIj48L2Rpdj4KKzxzY3JpcHQ+CisgIGNvbnN0IENFTExf
V0lEVEggPSAiNTAiOworICBjb25zdCBDRUxMX0hFSUdIVCA9ICIyNSI7CisgIGNvbnN0IE5VTV9S
T1dTID0gMTIwOworICBjb25zdCBOVU1fQ09MVU1OUyA9IDEyMDsKKyAgY29uc3QgRE9NX0RFUFRI
ID0gMTA7CisKKyAgZnVuY3Rpb24gY3JlYXRlQ29udGVudChkZXB0aCkgeworICAgIGxldCBjb250
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgY29udGVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpKTsKKyAgICBjb250ZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcmFncmFwaCIpKTsKKyAgICBpZiAoZGVwdGgg
PiAwKQorICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50KGRlcHRoIC0gMSkp
OworICAgIHJldHVybiBjb250ZW50OworICB9CisKKyAgZnVuY3Rpb24gc2V0dXBUZXN0KCkgewor
ICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndyYXBwZXIiKTsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IE5VTV9ST1dTOyBpKyspIHsKKyAgICAgIGZvciAobGV0IGog
PSAwOyBqIDwgTlVNX0NPTFVNTlM7IGorKykgeworICAgICAgICBsZXQgY2VsbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBpZiAoaSA9PSAwICYmIGogPT0gMCkKKyAg
ICAgICAgICBjZWxsLmlkID0gInRhcmdldCI7CisgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgi
Y2VsbCIpOworICAgICAgICBjZWxsLnN0eWxlLndpZHRoID0gQ0VMTF9XSURUSCArICJweCI7Cisg
ICAgICAgIGNlbGwuc3R5bGUuaGVpZ2h0ID0gQ0VMTF9IRUlHSFQgKyAicHgiOworICAgICAgICBj
ZWxsLnN0eWxlLmxlZnQgPSAoaiAqIENFTExfV0lEVEgpICsgInB4IjsKKyAgICAgICAgY2VsbC5z
dHlsZS50b3AgPSAoaSAqIENFTExfSEVJR0hUKSArICJweCI7CisgICAgICAgIGNlbGwuc3R5bGUu
b3ZlcmZsb3cgPSAidmlzaWJsZSI7CisKKyAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChjcmVhdGVD
b250ZW50KERPTV9ERVBUSCkpOworCisgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoY2VsbCk7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBsZXQg
Y2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICAvLyBUaGlzIGNh
dXNlcyBhIGNhbGwgdG8gUGFpbnRMYXllcjo6U2V0TmVlZHNDb21wb3NpdGluZ0lucHV0c1VwZGF0
ZSgpLgorICAgIGNlbGwuc3R5bGUub3ZlcmZsb3cgPSBjZWxsLnN0eWxlLm92ZXJmbG93ID09ICJo
aWRkZW4iID8gInZpc2libGUiIDogImhpZGRlbiI7CisgIH0KKworICBzZXR1cFRlc3QoKTsKKwor
ICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlRnJhbWVUaW1lKHsKKyAgICBydW46IHJ1blRlc3QKKyAg
fSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvUGFpbnQvY29udGFp
bm1lbnQtcmVzaXplLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW5tZW50LXJl
c2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NThlMjVlYzFmZTRkMjljYjA5ZTlmMmEyOWMyMzkxOTQ0
YTMzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW5t
ZW50LXJlc2l6ZS5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBU
aGlzIGNhc2UgaXMgYmFzZWQgb24gdGhlIHRlc3QgaW4gY3JidWcuY29tLzY5MjYxNC4KKyAgICAg
aHR0cHM6Ly93d3cuc2NpcnJhLmNvbS9sYWJzL2J1Z3MvY29udGFpbmxheW91dHBlcmYtd29ya2Fy
b3VuZC8gLS0+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8c3R5bGU+CisjY29udGFpbmVyIHsKKyAgYm9yZGVyOiAx
cHggc29saWQgZ3JlZW47CisgIGNvbnRhaW46IGNvbnRlbnQ7CisgIHdpZHRoOiA2MDBweDsKK30K
Ky5pdGVtIHsKKyAgb3V0bGluZTogMXB4IHNvbGlkIGJsdWU7CisgIG92ZXJmbG93OiBoaWRkZW47
CisgIGNvbnRhaW46IGNvbnRlbnQ7Cit9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJjb250YWluZXIi
PgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+Citjb25zdCBMT1JFTV9JUFNVTT0iTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFt
ZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGlu
Y2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWlu
aW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNp
IHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xv
ciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUg
ZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0
YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxp
dCBhbmltIGlkIGVzdCBsYWJvcnVtLiI7CitmdW5jdGlvbiBjcmVhdGVMaXN0SXRlbSgpIHsKKyAg
bGV0IHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgbGV0IGl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgaXRlbS5jbGFzc0xpc3QuYWRkKCdpdGVt
Jyk7CisgIGl0ZW0udGV4dENvbnRlbnQgPSBMT1JFTV9JUFNVTTsKKyAgd3JhcC5hcHBlbmRDaGls
ZChpdGVtKTsKKyAgY29udGFpbmVyLmFwcGVuZENoaWxkKHdyYXApOworfTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICBjcmVhdGVMaXN0SXRlbSgpOworCit2YXIgdGFyZ2V0
ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkLmZpcnN0RWxlbWVudENoaWxkOworUGVyZlRl
c3RSdW5uZXIubWVhc3VyZUZyYW1lVGltZSh7CisgIHJ1bjogZnVuY3Rpb24oKSB7CisgICAgdGFy
Z2V0LnN0eWxlLmhlaWdodCA9ICh0YXJnZXQub2Zmc2V0SGVpZ2h0IC0gMSkgKyAncHgnOworICB9
Cit9KTsKKworY29udGFpbmVyLmlubmVySFRNTCA9ICIiOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L3Jlc291cmNlcy9ydW5uZXIuanMKaW5kZXggNjAxYmNkNzI1ZTY2NWEyODRjNmE4ZDczZDc0NDY0
OWY0NWVjNjc2MS4uMTY3OGEyNWFlZmRmMDBiOGZkMTRjNzZlYjZlNjlkMTczMTJhMDg5YyAxMDA3
NTUKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwpAQCAtMTQ4LDYgKzE0OCwxNCBAQCBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgZmluaXNoKCk7CiAgICAgfQogCisgICAgUGVy
ZlRlc3RSdW5uZXIuZm9yY2VMYXlvdXQgPSBmdW5jdGlvbihkb2MpIHsKKyAgICAgICAgZG9jID0g
ZG9jIHx8IGRvY3VtZW50OworICAgICAgICBpZiAoZG9jLmJvZHkpCisgICAgICAgICAgICBkb2Mu
Ym9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgIGVsc2UgaWYgKGRvYy5kb2N1bWVudEVsZW1lbnQp
CisgICAgICAgICAgICBkb2MuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICB9Owor
CiAgICAgZnVuY3Rpb24gc3RhcnQodGVzdCwgcnVubmVyLCBkb05vdExvZ1N0YXJ0KSB7CiAgICAg
ICAgIGlmICghdGVzdCkgewogICAgICAgICAgICAgbG9nRmF0YWxFcnJvcigiR290IGEgYmFkIHRl
c3Qgb2JqZWN0LiIpOwpAQCAtMjgwLDYgKzI4OCw1NCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICAgICAgZmluaXNoKCk7CiAgICAgfQogCisgICAgUGVyZlRlc3RSdW5uZXIuYWRkUnVu
VGVzdFN0YXJ0TWFya2VyID0gZnVuY3Rpb24gKCkgeworICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lciB8fCAhd2luZG93LnRlc3RSdW5uZXIudGVsZW1ldHJ5SXNSdW5uaW5nKQorICAgICAgICAg
IHJldHVybjsKKyAgICAgIGlmIChjb21wbGV0ZWRJdGVyYXRpb25zIDwgMCkKKyAgICAgICAgICBj
b25zb2xlLnRpbWUoJ2JsaW5rX3BlcmYucnVuVGVzdC53YXJtdXAnKTsKKyAgICAgIGVsc2UKKyAg
ICAgICAgICBjb25zb2xlLnRpbWUoJ2JsaW5rX3BlcmYucnVuVGVzdCcpOworICAgIH07CisKKyAg
ICBQZXJmVGVzdFJ1bm5lci5hZGRSdW5UZXN0RW5kTWFya2VyID0gZnVuY3Rpb24gKCkgeworICAg
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LnRlc3RSdW5uZXIudGVsZW1ldHJ5
SXNSdW5uaW5nKQorICAgICAgICAgIHJldHVybjsKKyAgICAgIGlmIChjb21wbGV0ZWRJdGVyYXRp
b25zIDwgMCkKKyAgICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2JsaW5rX3BlcmYucnVuVGVzdC53
YXJtdXAnKTsKKyAgICAgIGVsc2UKKyAgICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2JsaW5rX3Bl
cmYucnVuVGVzdCcpOworICAgIH07CisKKyAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlRnJhbWVU
aW1lID0gZnVuY3Rpb24gKHRlc3QpIHsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIudW5pdCA9ICJt
cyI7CisgICAgICAgIFBlcmZUZXN0UnVubmVyLmJ1ZmZlcmVkTG9nID0gdHJ1ZTsKKyAgICAgICAg
dGVzdC53YXJtVXBDb3VudCA9IHRlc3Qud2FybVVwQ291bnQgfHwgNTsKKyAgICAgICAgdGVzdC5p
dGVyYXRpb25Db3VudCA9IHRlc3QuaXRlcmF0aW9uQ291bnQgfHwgMTA7CisgICAgICAgIC8vIEZv
cmNlIGdjIGJlZm9yZSBzdGFydGluZyB0aGUgdGVzdCB0byBhdm9pZCB0aGUgbWVhc3VyZWQgdGlt
ZSBmcm9tCisgICAgICAgIC8vIGJlaW5nIGFmZmVjdGVkIGJ5IGdjIHBlcmZvcm1hbmNlLiBTZWUg
Y3JidWcuY29tLzY2NzgxMSNjMTYuCisgICAgICAgIFBlcmZUZXN0UnVubmVyLmdjKCk7CisgICAg
ICAgIHN0YXJ0KHRlc3QsIG1lYXN1cmVGcmFtZVRpbWVPbmNlKTsKKyAgICB9CisKKyAgICB2YXIg
bGFzdEZyYW1lVGltZSA9IC0xOworICAgIGZ1bmN0aW9uIG1lYXN1cmVGcmFtZVRpbWVPbmNlKCkg
eworICAgICAgICBpZiAobGFzdEZyYW1lVGltZSAhPSAtMSkKKyAgICAgICAgICBQZXJmVGVzdFJ1
bm5lci5hZGRSdW5UZXN0RW5kTWFya2VyKCk7CisgICAgICAgIHZhciBub3cgPSBQZXJmVGVzdFJ1
bm5lci5ub3coKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGxhc3RGcmFtZVRpbWUgPT0gLTEgPyAt
MSA6IG5vdyAtIGxhc3RGcmFtZVRpbWU7CisgICAgICAgIGxhc3RGcmFtZVRpbWUgPSBub3c7Cisg
ICAgICAgIFBlcmZUZXN0UnVubmVyLmFkZFJ1blRlc3RTdGFydE1hcmtlcigpOworCisgICAgICAg
IHZhciByZXR1cm5WYWx1ZSA9IGN1cnJlbnRUZXN0LnJ1bigpOworICAgICAgICBpZiAocmV0dXJu
VmFsdWUgLSAwID09PSByZXR1cm5WYWx1ZSkgeworICAgICAgICAgICAgaWYgKHJldHVyblZhbHVl
IDwgMCkKKyAgICAgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coInJ1bkZ1bmN0aW9uIHJl
dHVybmVkIGEgbmVnYXRpdmUgdmFsdWU6ICIgKyByZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKwogICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVUaW1lID0gZnVuY3Rpb24gKHRlc3Qp
IHsKICAgICAgICAgUGVyZlRlc3RSdW5uZXIudW5pdCA9ICJtcyI7CiAgICAgICAgIHN0YXJ0KHRl
c3QsIG1lYXN1cmVUaW1lT25jZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437139</attachid>
            <date>2021-09-02 05:29:23 -0700</date>
            <delta_ts>2021-09-02 05:29:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228696-20210902142922.patch</filename>
            <type>text/plain</type>
            <size>15591</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTE4CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI5M2Y5MjFhNWY2
M2FkZWI2NTA0OWE5ZGMxNGZkN2RkMTFkMDdlMWEuLjc4ZjI5YzI3NjA5ZDY3YWY5MWZlNDIxYzg2
NTEwMjE1MGJmMmVlYjMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDkt
MDIgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbUGVyZm9ybWFuY2Ug
dGVzdF1bY3NzLXBhaW50XSBBZGQgdGVzdCBmb3IgY29udGFpbjogcGFpbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODY5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIvc2Nyb2xsZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogTGF5b3V0L2NvbnRhaW4tY29udGVu
dC1zdHlsZS1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogTGF5b3V0L2xhcmdlLWdyaWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogUGFpbnQvY29udGFpbi11cGRhdGUtbGF5ZXItdHJlZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBQYWludC9jb250YWlubWVudC1yZXNpemUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcmVzb3VyY2VzL3J1bm5lci5qczoKKyAgICAgICAgKFBlcmZUZXN0UnVu
bmVyLmZvcmNlTGF5b3V0KToKKyAgICAgICAgKFBlcmZUZXN0UnVubmVyLmFkZFJ1blRlc3RTdGFy
dE1hcmtlcik6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5hZGRSdW5UZXN0RW5kTWFya2VyKToK
KyAgICAgICAgKFBlcmZUZXN0UnVubmVyLm1lYXN1cmVGcmFtZVRpbWUpOgorICAgICAgICAobWVh
c3VyZUZyYW1lVGltZU9uY2UpOgorCiAyMDIxLTA4LTA2ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIE1hbGxvY0JlbmNoOiBmaXggT0RSIHZpb2xh
dGlvbgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9JbnRlcnNlY3Rpb25PYnNlcnZlci9z
Y3JvbGxlci5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9JbnRlcnNlY3Rpb25PYnNlcnZlci9zY3Jv
bGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2N2E3YjM2M2E1ZmUyZWVjMmUwMjNiYmIyNTI0MTAwYTg2
MTVlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0ludGVyc2VjdGlvbk9i
c2VydmVyL3Njcm9sbGVyLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
c3R5bGU+CisuY29udGFpbmVyIHsKKyAgbWFyZ2luOiA0cHg7CisgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsKK30KKy52c2Nyb2xsZXIgeworICBvdmVy
Zmxvdy15OiBvdmVybGF5OworICBtYXgtaGVpZ2h0OiAzMDBweDsKKyAgYm9yZGVyOiAycHggc29s
aWQgYmxhY2s7CisgIHBhZGRpbmc6IDJweDsKKyAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cit9
CisuaXRlbS1jb250YWluZXIgeworICBkaXNwbGF5OiBmbGV4OworICBmbGV4LWRpcmVjdGlvbjog
Y29sdW1uOworICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0OworICBjb250YWluOiBwYWludDsKK30K
Ky5pdGVtIHsKKyAgZm9udC1zaXplOiAxOHB4OworICBmbGV4OiAwOworICBtYXJnaW46IDFweCAw
OworfQorPC9zdHlsZT4KKworPGJvZHk+PC9ib2R5PgorCis8c2NyaXB0IHNyYz0nLi4vcmVzb3Vy
Y2VzL3J1bm5lci5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisvLyBIb3cgbWFueSBvYnNlcnZl
ZCBsaXN0IGl0ZW1zLgorY29uc3QgbnVtSXRlbXMgPSAxMDAwMDA7CisvLyBIb3cgbWFueSBsZXZl
bHMgb2YgRE9NIGhpZXJhcmNoeSBiZXR3ZWVuIHRoZSBzY3JvbGxpbmcgcm9vdCBhbmQgbGlzdCBp
dGVtcy4KK2NvbnN0IGNvbnRhaW5lckRlcHRoID0gMTAwOworLy8gSG93IGZhciB0byBzY3JvbGwg
b24gZWFjaCBmcmFtZS4KK2NvbnN0IHZlbG9jaXR5ID0gMTAwMDsKKworbGV0IHNjcm9sbGVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitzY3JvbGxlci5jbGFzc0xpc3QuYWRkKCd2
c2Nyb2xsZXInKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2Nyb2xsZXIpOworbGV0IHBh
cmVudCA9IHNjcm9sbGVyOworZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJEZXB0aDsgaSsr
KSB7CisgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
Y29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2NvbnRhaW5lcicpOworICBwYXJlbnQuYXBwZW5kQ2hp
bGQoY29udGFpbmVyKTsKKyAgcGFyZW50ID0gY29udGFpbmVyOworfQorbGV0IGl0ZW1Db250YWlu
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2l0ZW1Db250YWluZXIuY2xhc3NM
aXN0LmFkZCgnaXRlbS1jb250YWluZXInKTsKK3BhcmVudC5hcHBlbmRDaGlsZChpdGVtQ29udGFp
bmVyKTsKK3BhcmVudCA9IGl0ZW1Db250YWluZXI7CisKK2xldCBvYnNlcnZlciA9IG5ldyBJbnRl
cnNlY3Rpb25PYnNlcnZlcihlbnRyaWVzID0+IHsKKyAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+
IHsKKyAgICBpZiAoZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwKSB7CisgICAgICBlbnRyeS50
YXJnZXQuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOworICAgIH0gZWxzZSB7CisgICAgICBlbnRy
eS50YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOworICAgIH0KKyAgfSk7Cit9LCB7
IHJvb3Q6IHNjcm9sbGVyIH0pOworCitmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZW1zOyBpKysp
IHsKKyAgbGV0IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgaXRlbS5j
bGFzc0xpc3QuYWRkKCdpdGVtJyk7CisgIHBhcmVudC5hcHBlbmRDaGlsZChpdGVtKTsKKyAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShpdGVtKTsKK30KKworUGVyZlRlc3RSdW5uZXIubWVhc3VyZUZyYW1lVGlt
ZSh7CisgIGRlc2NyaXB0aW9uOiAnRnJhbWUgdGltZSB3aXRoIG9uZSBJbnRlcnNlY3Rpb25PYnNl
cnZlciB3aXRoIGEgc2Nyb2xsaW5nIHJvb3QgZWxlbWVudCwgb2JzZXJ2aW5nIG1hbnkgaXRlbXMu
JywKKyAgc2V0dXA6ICgpID0+IHsKKyAgICBsZXQgbWF4X3Njcm9sbCA9IHNjcm9sbGVyLnNjcm9s
bEhlaWdodCAtIHNjcm9sbGVyLmNsaWVudEhlaWdodDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3Ag
PSAoc2Nyb2xsZXIuc2Nyb2xsVG9wICsgdmVsb2NpdHkpICUgbWF4X3Njcm9sbDsKKyAgfSwKKyAg
cnVuOiAoKSA9PiB7fSwKKyAgZG9uZTogKCkgPT4ge30KK30pOworCis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2NvbnRhaW4tY29udGVudC1zdHlsZS1jaGFu
Z2UuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2NvbnRhaW4tY29udGVudC1zdHlsZS1j
aGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTZmMGQ2MTU3YjY3ZjNmYjYyOGVlNjc1MmU4NTc1ZjBj
NjM2ZTkwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvY29udGFp
bi1jb250ZW50LXN0eWxlLWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHRp
dGxlPkNvbnRhaW4gbGF5b3V0IHBlcmZvcm1hbmNlPC90aXRsZT4KKzxzdHlsZT4KKyNsaXN0Q29u
dGFpbmVyIHsKKyAgbWFyZ2luOiAwIGF1dG87CisgIHdpZHRoOiA2MDBweDsKKyAgYm9yZGVyOiAx
cHggc29saWQgYmx1ZTsKKyAgY29udGFpbjogY29udGVudDsKK30KKy5saXN0SXRlbSB7CisgIG91
dGxpbmU6IDJweCBzb2xpZCBncmVlbjsKKyAgcGFkZGluZzogLjRlbTsKKyAgb3ZlcmZsb3c6IGhp
ZGRlbjsKKyAgY29udGFpbjogY29udGVudDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9Imxpc3RDb250YWluZXIiPjwvZGl2PgorPHNjcmlwdD4KK2NvbnN0IExPUkVNX0lQ
U1VNID0gIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5n
IGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xv
cmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4
ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8g
Y29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1
cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4g
RXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBj
dWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iOwor
CitsZXQgbGlzdENvbnRhaW5lciA9IG51bGw7CisKK2Z1bmN0aW9uIGNyZWF0ZUxpc3RJdGVtKCkg
eworICBsZXQgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICBpdGVtLmNs
YXNzTGlzdC5hZGQoImxpc3RJdGVtIik7CisgIGl0ZW0udGV4dENvbnRlbnQgPSBMT1JFTV9JUFNV
TS5zdWJzdHIoCisgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKSwgTWF0aC5mbG9v
cihNYXRoLnJhbmRvbSgpKjIwMCkrMTUwKTsKKyAgbGlzdENvbnRhaW5lci5hcHBlbmRDaGlsZChp
dGVtKTsKK30KKwordmFyIGhlaWdodCA9IDA7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICBoZWln
aHQrKzsKKyAgbGlzdENvbnRhaW5lci5maXJzdENoaWxkLnN0eWxlLmhlaWdodCA9IGhlaWdodCAr
ICJweCI7CisgIGlmIChoZWlnaHQgPiA1MCkKKyAgICBoZWlnaHQgPSAwOworfQorCitmdW5jdGlv
biBzZXR1cFRlc3QoKSB7CisgIGxpc3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibGlzdENvbnRhaW5lciIpOworICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDA7ICsraSkgewor
ICAgIGNyZWF0ZUxpc3RJdGVtKCk7CisgIH0KKyAgUGVyZlRlc3RSdW5uZXIuZm9yY2VMYXlvdXQo
KTsKK30KKworZnVuY3Rpb24gZG9uZSgpIHsKKyAgbGlzdENvbnRhaW5lci5pbm5lckhUTUwgPSAi
IjsKK30KKworc2V0dXBUZXN0KCk7CisKK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVGcmFtZVRpbWUo
eworICAgIGRlc2NyaXB0aW9uOiAiTWVhc3VyZXMgcGVyZm9ybWFuY2Ugb2YgY2hhbmdpbmcgdGhl
IGhlaWdodCBvZiBhIGNoaWxkIG9mIGEgY29udGFpbjpjb250ZW50cyBvYmplY3QuIiwKKyAgICBp
dGVyYXRpb25Db3VudDogNTAsCisgICAgcnVuOiBydW5UZXN0LAorICAgIGRvbmU6IGRvbmUKK30p
OworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xhcmdl
LWdyaWQuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xhcmdlLWdyaWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNTNhMmFiZjM4ZjEyZjczMzRlYWE4M2IyYWFkNTY2MjgzNDk4NWIyCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGFyZ2UtZ3JpZC5odG1sCkBAIC0w
LDAgKzEsMTUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8aGVhZD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgi
PgorCis8c3R5bGU+CitodG1sLCBib2R5IHsgaGVpZ2h0OiAxMDAlIH0KK3VpLXBhbmUjbWFpbiB7
CisgICAgY29udGFpbjogc3RyaWN0OworICAgIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50Owor
ICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CisgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRh
bnQ7CisgICAgbWluLWhlaWdodDogMTAwJSAhaW1wb3J0YW50OworICAgIGhlaWdodDogMTAwJSAh
aW1wb3J0YW50OworICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKKyAgICBvdmVyZmxv
dzogaGlkZGVuCit9CisKKworW3JvdzFdIHsKKyAgICBncmlkLXJvdy1zdGFydDogMTsKKyAgICBn
cmlkLXJvdy1lbmQ6IGF1dG8KK30KKworW3JvdzJdIHsKKyAgICBncmlkLXJvdy1zdGFydDogMjsK
KyAgICBncmlkLXJvdy1lbmQ6IGF1dG8KK30KKworCitbY29sMl0geworICAgIGdyaWQtY29sdW1u
LXN0YXJ0OiAyOworICAgIGdyaWQtY29sdW1uLWVuZDogYXV0bworfQorCit1aS1wYW5lIHsKKyAg
ICBkaXNwbGF5OiBncmlkOworICAgIGhlaWdodDogMTAwJTsKKyAgICBjb250YWluOiBjb250ZW50
Cit9CisKK1toZ3JpZF0geworICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyCit9CisKK1t2Z3Jp
ZF0geworICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyCit9CisKK3VpLWljb24geworICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKworW2NvbGxhcHNlZCBdIHsgZGlzcGxheTogbm9u
ZTsgfQorCisuZXZlbnRDaGlsZHJlbldyYXAgeworICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMzsK
KyAgICBjb250YWluOiBjb250ZW50Cit9CisKKy5ldmVudENoaWxkcmVuQ29udGFpbmVyIHsKKyAg
ICBkaXNwbGF5OiBncmlkOworICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogM2VtIDBweCAxZnI7
CisgICAgY29udGFpbjogY29udGVudDsKK30KKworLmFjdGlvbkJsb2NrV3JhcCB7CisgICAgZ3Jp
ZC1jb2x1bW46IDM7CisgICAgYWxpZ24tc2VsZjogc3RhcnQ7CisgICAgY29udGFpbjogbGF5b3V0
IHN0eWxlOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZQorfQorCisuYWN0aW9uQmxvY2sgeworICAg
IGRpc3BsYXk6IGdyaWQ7CisgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CisgICAgb3Zl
cmZsb3c6IGhpZGRlbjsKKyAgICBjb250YWluOiBjb250ZW50Cit9CisKKzwvc3R5bGU+CisKKzwv
aGVhZD4KKworPGJvZHk+CisgICAgPHByZSBpZD0ibG9nIj48L3ByZT4KKworICAgIDx1aS1wYW5l
IGlkPSJtYWluIiB2Z3JpZD0iIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7Ij4KKyAg
ICAgICAgPHVpLXBhbmUgaWQ9Im1pZGRsZSIgcm93MT0iIiBoZ3JpZD0iIiBzdHlsZT0iZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zOiAzMjBweCAxZnIgMzAwcHg7Ij4KKyAgICAgICAgICAgIDx1aS1wYW5l
IGNvbDI9IiI+CisgICAgICAgICAgICAgICAgPHVpLWJvZHkgcm93Mj0iIj4KKyAgICAgICAgICAg
ICAgICAgICAgPHVpLXBhbmUgY2xhc3M9ImV2ZW50U2hlZXRWaWV3UGFuZSI+CisgICAgICAgICAg
ICAgICAgICAgICAgICA8dWktYm9keSByb3cyPSIiIGNsYXNzPSJldmVudFNoZWV0VmlldyI+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRoaXNpc3RoZW9uZSIgY2xh
c3M9ImV2ZW50Q2hpbGRyZW5XcmFwIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImV2ZW50Q2hpbGRyZW5Db250YWluZXIiPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbkJsb2NrV3JhcCI+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFj
dGlvbkJsb2NrIiBpZD0iaW5zZXJ0aGVyZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgPC91aS1ib2R5Pgor
ICAgICAgICAgICAgICAgICAgICA8L3VpLXBhbmU+CisgICAgICAgICAgICAgICAgPC91aS1ib2R5
PgorICAgICAgICAgICAgPC91aS1wYW5lPgorCisgICAgICAgIDwvdWktcGFuZT4KKyAgICA8L3Vp
LXBhbmU+CisKKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGhpc2lzdGhlb25lJyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2V0dXAo
KSB7CisgICAgICAgICAgbGV0IGluc2VydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnNl
cnRoZXJlJyk7CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNzUwOyArK2kpIHsKKyAg
ICAgICAgICAgIGxldCBuYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgICAgICBuYW1lLmNsYXNzTmFtZSA9ICdhY3Rpb25OYW1lQ2VsbCc7CisgICAgICAgICAgICBu
YW1lLmlubmVySFRNTCA9ICc8dWktaWNvbiBzdHlsZT0id2lkdGg6IDIwcHg7IGhlaWdodDogMjBw
eDsgIj48L3VpLWljb24+PHNwYW4gY2xhc3M9ImFjdGlvbk9iamVjdE5hbWVTcGFuIj5CdXR0b248
L3NwYW4+JzsKKyAgICAgICAgICAgIGxldCBkZXNjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgICAgICBkZXNjLmNsYXNzTmFtZSA9ICdhY3Rpb25EZXNjQ2VsbCc7Cisg
ICAgICAgICAgICBkZXNjLmlubmVySFRNTCA9ICdTZXQgcG9zaXRpb24gdG8gPGV2ZW50LXBhcmFt
ZXRlciBkYXRhLWluZGV4PSIwIj4gPHVpLWljb24gY2xhc3M9Im9iamVjdFBhcmFtZXRlckljb24i
IHN0eWxlPSJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyAiPjwvdWktaWNvbj48c3BhbiBjbGFz
cz0ib2JqZWN0UGFyYW1ldGVyT2JqZWN0TmFtZSI+U3ByaXRlPC9zcGFuPiA8L2V2ZW50LXBhcmFt
ZXRlcj4gPGVtPihpbWFnZSBwb2ludCA8ZXZlbnQtcGFyYW1ldGVyIGRhdGEtaW5kZXg9IjEiPjMy
MTMyMTM8L2V2ZW50LXBhcmFtZXRlcj4pPC9lbT4nOworICAgICAgICAgICAgaW5zZXJ0LmFwcGVu
ZENoaWxkKG5hbWUpOworICAgICAgICAgICAgaW5zZXJ0LmFwcGVuZENoaWxkKGRlc2MpOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAg
ICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCdjb2xsYXBzZWQnLCAnJyk7CisgICAgICAgICAgICBQ
ZXJmVGVzdFJ1bm5lci5mb3JjZUxheW91dCgpOworICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUF0
dHJpYnV0ZSgnY29sbGFwc2VkJyk7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5mb3JjZUxh
eW91dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9uZSgpIHsKKyAgICAgICAg
ICBsZXQgaW5zZXJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc2VydGhlcmUnKTsKKyAg
ICAgICAgICBpbnNlcnQuaW5uZXJIVE1MID0gIiI7CisgICAgICAgIH0KKworICAgICAgICBzZXR1
cCgpOworICAgICAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlUnVuc1BlclNlY29uZCh7CisgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogIk1lYXN1cmVzIHBlcmZvcm1hbmNlIG9mIGxheWluZyBvdXQg
YSBsYXJnZSBncmlkLiIsCisgICAgICAgICAgICBydW46IHRlc3QsCisgICAgICAgICAgICBkb25l
OiBkb25lCisgICAgICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW4tdXBkYXRlLWxheWVyLXRy
ZWUuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvUGFpbnQvY29udGFpbi11cGRhdGUtbGF5ZXItdHJl
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRiY2QwMzQxMmU5Y2UxYzNjYjAwOWFlYTdiZjdhYzYzYzJiMGVi
YTIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW4tdXBk
YXRlLWxheWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0
aXRsZT5Db250YWluIHVwZGF0ZSBsYXllciB0cmVlIHBlcmZvcm1hbmNlPC90aXRsZT4KKzxzdHls
ZT4KKyN3cmFwcGVyIHsKKyAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmNlbGwgeworICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJvcmRlcjogc29s
aWQ7CisgIGNvbnRhaW46IHN0cmljdDsKK30KKy5wcm9ncmVzc2JhciB7CisgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgbGVmdDogMHB4OworICB0b3A6IDVweDsKKyAgaGVpZ2h0OiAxMHB4OworfQor
PC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4K
KzxwcmUgaWQ9ImxvZyI+PC9wcmU+Cis8ZGl2IGlkPSJ3cmFwcGVyIj48L2Rpdj4KKzxzY3JpcHQ+
CisgIGNvbnN0IENFTExfV0lEVEggPSAiNTAiOworICBjb25zdCBDRUxMX0hFSUdIVCA9ICIyNSI7
CisgIGNvbnN0IE5VTV9ST1dTID0gMTIwOworICBjb25zdCBOVU1fQ09MVU1OUyA9IDEyMDsKKyAg
Y29uc3QgRE9NX0RFUFRIID0gMTA7CisKKyAgZnVuY3Rpb24gY3JlYXRlQ29udGVudChkZXB0aCkg
eworICAgIGxldCBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
Y29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpKTsKKyAgICBj
b250ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcmFncmFwaCIpKTsK
KyAgICBpZiAoZGVwdGggPiAwKQorICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVDb250
ZW50KGRlcHRoIC0gMSkpOworICAgIHJldHVybiBjb250ZW50OworICB9CisKKyAgZnVuY3Rpb24g
c2V0dXBUZXN0KCkgeworICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IndyYXBwZXIiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5VTV9ST1dTOyBpKyspIHsKKyAg
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgTlVNX0NPTFVNTlM7IGorKykgeworICAgICAgICBsZXQg
Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBpZiAoaSA9PSAw
ICYmIGogPT0gMCkKKyAgICAgICAgICBjZWxsLmlkID0gInRhcmdldCI7CisgICAgICAgIGNlbGwu
Y2xhc3NMaXN0LmFkZCgiY2VsbCIpOworICAgICAgICBjZWxsLnN0eWxlLndpZHRoID0gQ0VMTF9X
SURUSCArICJweCI7CisgICAgICAgIGNlbGwuc3R5bGUuaGVpZ2h0ID0gQ0VMTF9IRUlHSFQgKyAi
cHgiOworICAgICAgICBjZWxsLnN0eWxlLmxlZnQgPSAoaiAqIENFTExfV0lEVEgpICsgInB4IjsK
KyAgICAgICAgY2VsbC5zdHlsZS50b3AgPSAoaSAqIENFTExfSEVJR0hUKSArICJweCI7CisgICAg
ICAgIGNlbGwuc3R5bGUub3ZlcmZsb3cgPSAidmlzaWJsZSI7CisKKyAgICAgICAgY2VsbC5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50KERPTV9ERVBUSCkpOworCisgICAgICAgIHdyYXBwZXIuYXBw
ZW5kQ2hpbGQoY2VsbCk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICBsZXQgY2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsK
KyAgICAvLyBUaGlzIGNhdXNlcyBhIGNhbGwgdG8gUGFpbnRMYXllcjo6U2V0TmVlZHNDb21wb3Np
dGluZ0lucHV0c1VwZGF0ZSgpLgorICAgIGNlbGwuc3R5bGUub3ZlcmZsb3cgPSBjZWxsLnN0eWxl
Lm92ZXJmbG93ID09ICJoaWRkZW4iID8gInZpc2libGUiIDogImhpZGRlbiI7CisgIH0KKworICBz
ZXR1cFRlc3QoKTsKKworICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlRnJhbWVUaW1lKHsKKyAgICBy
dW46IHJ1blRlc3QKKyAgfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvUGFpbnQvY29udGFpbm1lbnQtcmVzaXplLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50
L2NvbnRhaW5tZW50LXJlc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NThlMjVlYzFmZTRkMjljYjA5
ZTlmMmEyOWMyMzkxOTQ0YTMzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1BhaW50L2NvbnRhaW5tZW50LXJlc2l6ZS5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPCEtLSBUaGlzIGNhc2UgaXMgYmFzZWQgb24gdGhlIHRlc3QgaW4gY3JidWcuY29t
LzY5MjYxNC4KKyAgICAgaHR0cHM6Ly93d3cuc2NpcnJhLmNvbS9sYWJzL2J1Z3MvY29udGFpbmxh
eW91dHBlcmYtd29ya2Fyb3VuZC8gLS0+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8c3R5bGU+CisjY29udGFpbmVy
IHsKKyAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47CisgIGNvbnRhaW46IGNvbnRlbnQ7CisgIHdp
ZHRoOiA2MDBweDsKK30KKy5pdGVtIHsKKyAgb3V0bGluZTogMXB4IHNvbGlkIGJsdWU7CisgIG92
ZXJmbG93OiBoaWRkZW47CisgIGNvbnRhaW46IGNvbnRlbnQ7Cit9Cis8L3N0eWxlPgorCis8ZGl2
IGlkPSJjb250YWluZXIiPgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVu
bmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCBMT1JFTV9JUFNVTT0iTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVp
dXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEu
IFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFt
Y28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMg
YXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3Nl
IGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBv
Y2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lh
IGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI7CitmdW5jdGlvbiBjcmVhdGVM
aXN0SXRlbSgpIHsKKyAgbGV0IHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgbGV0IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgaXRlbS5jbGFz
c0xpc3QuYWRkKCdpdGVtJyk7CisgIGl0ZW0udGV4dENvbnRlbnQgPSBMT1JFTV9JUFNVTTsKKyAg
d3JhcC5hcHBlbmRDaGlsZChpdGVtKTsKKyAgY29udGFpbmVyLmFwcGVuZENoaWxkKHdyYXApOwor
fTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICBjcmVhdGVMaXN0SXRlbSgp
OworCit2YXIgdGFyZ2V0ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkLmZpcnN0RWxlbWVu
dENoaWxkOworUGVyZlRlc3RSdW5uZXIubWVhc3VyZUZyYW1lVGltZSh7CisgIHJ1bjogZnVuY3Rp
b24oKSB7CisgICAgdGFyZ2V0LnN0eWxlLmhlaWdodCA9ICh0YXJnZXQub2Zmc2V0SGVpZ2h0IC0g
MSkgKyAncHgnOworICB9Cit9KTsKKworY29udGFpbmVyLmlubmVySFRNTCA9ICIiOworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMgYi9Q
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMKaW5kZXggNjAxYmNkNzI1ZTY2NWEy
ODRjNmE4ZDczZDc0NDY0OWY0NWVjNjc2MS4uNDQwZTEzNjcxNjQ2ZGJhYjJjY2Q5YmRjNWQ4NTAw
ZGM1OTg5MDFmZSAxMDA3NTUKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVy
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwpAQCAtMTQ4LDYg
KzE0OCwxNCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgZmluaXNoKCk7CiAg
ICAgfQogCisgICAgUGVyZlRlc3RSdW5uZXIuZm9yY2VMYXlvdXQgPSBmdW5jdGlvbihkb2MpIHsK
KyAgICAgICAgZG9jID0gZG9jIHx8IGRvY3VtZW50OworICAgICAgICBpZiAoZG9jLmJvZHkpCisg
ICAgICAgICAgICBkb2MuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAgIGVsc2UgaWYgKGRvYy5k
b2N1bWVudEVsZW1lbnQpCisgICAgICAgICAgICBkb2MuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhl
aWdodDsKKyAgICB9OworCiAgICAgZnVuY3Rpb24gc3RhcnQodGVzdCwgcnVubmVyLCBkb05vdExv
Z1N0YXJ0KSB7CiAgICAgICAgIGlmICghdGVzdCkgewogICAgICAgICAgICAgbG9nRmF0YWxFcnJv
cigiR290IGEgYmFkIHRlc3Qgb2JqZWN0LiIpOwpAQCAtMjgwLDYgKzI4OCwyOSBAQCBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgZmluaXNoKCk7CiAgICAgfQogCisgICAgUGVyZlRl
c3RSdW5uZXIubWVhc3VyZUZyYW1lVGltZSA9IGZ1bmN0aW9uICh0ZXN0KSB7CisgICAgICAgIFBl
cmZUZXN0UnVubmVyLnVuaXQgPSAibXMiOworICAgICAgICB0ZXN0Lndhcm1VcENvdW50ID0gdGVz
dC53YXJtVXBDb3VudCB8fCA1OworICAgICAgICB0ZXN0Lml0ZXJhdGlvbkNvdW50ID0gdGVzdC5p
dGVyYXRpb25Db3VudCB8fCAxMDsKKyAgICAgICAgc3RhcnQodGVzdCwgbWVhc3VyZUZyYW1lVGlt
ZU9uY2UpOworICAgIH0KKworICAgIHZhciBsYXN0RnJhbWVUaW1lID0gLTE7CisgICAgZnVuY3Rp
b24gbWVhc3VyZUZyYW1lVGltZU9uY2UoKSB7CisgICAgICAgIHZhciBub3cgPSBQZXJmVGVzdFJ1
bm5lci5ub3coKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGxhc3RGcmFtZVRpbWUgPT0gLTEgPyAt
MSA6IG5vdyAtIGxhc3RGcmFtZVRpbWU7CisgICAgICAgIGxhc3RGcmFtZVRpbWUgPSBub3c7CisK
KyAgICAgICAgdmFyIHJldHVyblZhbHVlID0gY3VycmVudFRlc3QucnVuKCk7CisgICAgICAgIGlm
IChyZXR1cm5WYWx1ZSAtIDAgPT09IHJldHVyblZhbHVlKSB7CisgICAgICAgICAgICBpZiAocmV0
dXJuVmFsdWUgPCAwKQorICAgICAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZygicnVuRnVu
Y3Rpb24gcmV0dXJuZWQgYSBuZWdhdGl2ZSB2YWx1ZTogIiArIHJldHVyblZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCiAgICAgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVRpbWUgPSBmdW5jdGlv
biAodGVzdCkgewogICAgICAgICBQZXJmVGVzdFJ1bm5lci51bml0ID0gIm1zIjsKICAgICAgICAg
c3RhcnQodGVzdCwgbWVhc3VyZVRpbWVPbmNlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438234</attachid>
            <date>2021-09-15 03:15:14 -0700</date>
            <delta_ts>2021-09-15 03:15:14 -0700</delta_ts>
            <desc>performance-tests-using-requestAnimationFrame</desc>
            <filename>CSS-containment-performance-tests-002.diff</filename>
            <type>text/plain</type>
            <size>15675</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMjkzZjkyMWE1Zi4uYWMyNzA1MTIyMiAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMS0wOS0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1BlcmZvcm1hbmNlIHRlc3RdW2Nzcy1wYWludF0gQWRkIHRl
c3QgZm9yIGNvbnRhaW46IHBhaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg2OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIFJvYiBCdWlzJ3MgcGF0Y2guIElu
IHRoZSBwcmV2aW91cyBwYXRjaCwgbWVhc3VyZUZyYW1lVGltZSBpcyB1c2luZyBzZXRUaW1lb3V0
IHRvCisgICAgICAgIG1lYXN1cmUgdGhlIHRpbWUgYmV0d2VlbiBmcmFtZXMsIGl0IGlzIG5vdCBh
Y2N1cmF0ZSBlbm91Z2guIFRoaXMgcGF0Y2ggdXNlcyBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlVmFs
dWVBc3luYworICAgICAgICBpbnN0ZWFkLCBhbmQgbWVhc3VyZSB0aGUgdGltZSBieSByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgd2hpY2ggd2lsbCBtYWtlIHRoZSB0ZXN0IHJlc3VsdHMgbW9yZSBhY2N1
cmF0ZSBhbmQgc3RhYmxlci4KKworICAgICAgICAqIEludGVyc2VjdGlvbk9ic2VydmVyL3Njcm9s
bGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIExheW91dC9jb250YWluLWNvbnRlbnQtc3R5bGUt
Y2hhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIExheW91dC9sYXJnZS1ncmlkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIFBhaW50L2NvbnRhaW4tdXBkYXRlLWxheWVyLXRyZWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogUGFpbnQvY29udGFpbm1lbnQtcmVzaXplLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHJlc291cmNlcy9ydW5uZXIuanM6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5mb3Jj
ZUxheW91dCk6CisKIDIwMjEtMDgtMDYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgTWFsbG9jQmVuY2g6IGZpeCBPRFIgdmlvbGF0aW9uCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0ludGVyc2VjdGlvbk9ic2VydmVyL3Njcm9sbGVyLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0ludGVyc2VjdGlvbk9ic2VydmVyL3Njcm9sbGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjAzNzJiMDgwZAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIvc2Nyb2xs
ZXIuaHRtbApAQCAtMCwwICsxLDEwMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisuY29u
dGFpbmVyIHsKKyAgbWFyZ2luOiA0cHg7CisgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgYm9y
ZGVyOiAxcHggc29saWQgYmx1ZTsKK30KKy52c2Nyb2xsZXIgeworICBvdmVyZmxvdy15OiBvdmVy
bGF5OworICBtYXgtaGVpZ2h0OiAzMDBweDsKKyAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cisg
IHBhZGRpbmc6IDJweDsKKyAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cit9CisuaXRlbS1jb250
YWluZXIgeworICBkaXNwbGF5OiBmbGV4OworICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOworICBq
dXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0OworICBjb250YWluOiBwYWludDsKK30KKy5pdGVtIHsKKyAg
Zm9udC1zaXplOiAxOHB4OworICBmbGV4OiAwOworICBtYXJnaW46IDFweCAwOworfQorPC9zdHls
ZT4KKworPGJvZHk+PC9ib2R5PgorCis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3J1bm5lci5q
cyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisvLyBIb3cgbWFueSBvYnNlcnZlZCBsaXN0IGl0ZW1z
LgorY29uc3QgbnVtSXRlbXMgPSAxMDAwMDA7CisvLyBIb3cgbWFueSBsZXZlbHMgb2YgRE9NIGhp
ZXJhcmNoeSBiZXR3ZWVuIHRoZSBzY3JvbGxpbmcgcm9vdCBhbmQgbGlzdCBpdGVtcy4KK2NvbnN0
IGNvbnRhaW5lckRlcHRoID0gMTAwOworLy8gSG93IGZhciB0byBzY3JvbGwgb24gZWFjaCBmcmFt
ZS4KK2NvbnN0IHZlbG9jaXR5ID0gMTAwMDsKKworbGV0IHNjcm9sbGVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CitzY3JvbGxlci5jbGFzc0xpc3QuYWRkKCd2c2Nyb2xsZXInKTsK
K2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2Nyb2xsZXIpOworbGV0IHBhcmVudCA9IHNjcm9s
bGVyOworZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJEZXB0aDsgaSsrKSB7CisgIGxldCBj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgY29udGFpbmVyLmNs
YXNzTGlzdC5hZGQoJ2NvbnRhaW5lcicpOworICBwYXJlbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVy
KTsKKyAgcGFyZW50ID0gY29udGFpbmVyOworfQorbGV0IGl0ZW1Db250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2l0ZW1Db250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXRl
bS1jb250YWluZXInKTsKK3BhcmVudC5hcHBlbmRDaGlsZChpdGVtQ29udGFpbmVyKTsKK3BhcmVu
dCA9IGl0ZW1Db250YWluZXI7CisKK2xldCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNl
cnZlcihlbnRyaWVzID0+IHsKKyAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHsKKyAgICBpZiAo
ZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwKSB7CisgICAgICBlbnRyeS50YXJnZXQuY2xhc3NM
aXN0LmFkZCgndmlzaWJsZScpOworICAgIH0gZWxzZSB7CisgICAgICBlbnRyeS50YXJnZXQuY2xh
c3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOworICAgIH0KKyAgfSk7Cit9LCB7IHJvb3Q6IHNjcm9s
bGVyIH0pOworCitmb3IgKGxldCBpID0gMDsgaSA8IG51bUl0ZW1zOyBpKyspIHsKKyAgbGV0IGl0
ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgaXRlbS5jbGFzc0xpc3QuYWRk
KCdpdGVtJyk7CisgIHBhcmVudC5hcHBlbmRDaGlsZChpdGVtKTsKKyAgb2JzZXJ2ZXIub2JzZXJ2
ZShpdGVtKTsKK30KKworZnVuY3Rpb24gY2hhbmdlU2Nyb2xsVG9wKCkgeworICBsZXQgbWF4X3Nj
cm9sbCA9IHNjcm9sbGVyLnNjcm9sbEhlaWdodCAtIHNjcm9sbGVyLmNsaWVudEhlaWdodDsKKyAg
c2Nyb2xsZXIuc2Nyb2xsVG9wID0gKHNjcm9sbGVyLnNjcm9sbFRvcCArIHZlbG9jaXR5KSAlIG1h
eF9zY3JvbGw7Cit9CisKK3ZhciBpc0RvbmUgPSBmYWxzZTsKK1BlcmZUZXN0UnVubmVyLnByZXBh
cmVUb01lYXN1cmVWYWx1ZXNBc3luYyh7CisgIGRvbmU6ICgpPT4geworICAgIGlzRG9uZSA9IHRy
dWU7CisgIH0sCisgIHVuaXQ6ICdtcycKK30pOworCit2YXIgc3RhcnRUaW1lOworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgaWYgKGlzRG9uZSkKKyAgICByZXR1cm47CisgIHZhciBub3cgPSBQZXJm
VGVzdFJ1bm5lci5ub3coKTsKKyAgaWYgKHN0YXJ0VGltZSkKKyAgICBQZXJmVGVzdFJ1bm5lci5t
ZWFzdXJlVmFsdWVBc3luYyhQZXJmVGVzdFJ1bm5lci5ub3coKSAtIHN0YXJ0VGltZSk7CisKKyAg
aWYgKCFpc0RvbmUpIHsKKyAgICBzdGFydFRpbWUgPSBQZXJmVGVzdFJ1bm5lci5ub3coKTsKKyAg
ICBjaGFuZ2VTY3JvbGxUb3AoKTsKKyAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJ1
blRlc3QpOworICB9Cit9CisKK3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuVGVzdCk7
CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvY29udGFp
bi1jb250ZW50LXN0eWxlLWNoYW5nZS5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvY29u
dGFpbi1jb250ZW50LXN0eWxlLWNoYW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAuLjE0Yzg4YzM3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0xheW91dC9jb250YWluLWNvbnRlbnQtc3R5bGUtY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw3
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5q
cyI+PC9zY3JpcHQ+Cis8dGl0bGU+Q29udGFpbiBsYXlvdXQgcGVyZm9ybWFuY2U8L3RpdGxlPgor
PHN0eWxlPgorI2xpc3RDb250YWluZXIgeworICBtYXJnaW46IDAgYXV0bzsKKyAgd2lkdGg6IDYw
MHB4OworICBib3JkZXI6IDFweCBzb2xpZCBibHVlOworICBjb250YWluOiBjb250ZW50OworfQor
Lmxpc3RJdGVtIHsKKyAgb3V0bGluZTogMnB4IHNvbGlkIGdyZWVuOworICBwYWRkaW5nOiAuNGVt
OworICBvdmVyZmxvdzogaGlkZGVuOworICBjb250YWluOiBjb250ZW50OworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibGlzdENvbnRhaW5lciI+PC9kaXY+Cis8c2NyaXB0
PgorY29uc3QgTE9SRU1fSVBTVU0gPSAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNl
Y3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQg
dXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFt
LCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1
aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXBy
ZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0
IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHBy
b2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlk
IGVzdCBsYWJvcnVtLiI7CisKK2xldCBsaXN0Q29udGFpbmVyID0gbnVsbDsKKworZnVuY3Rpb24g
Y3JlYXRlTGlzdEl0ZW0oKSB7CisgIGxldCBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgIGl0ZW0uY2xhc3NMaXN0LmFkZCgibGlzdEl0ZW0iKTsKKyAgaXRlbS50ZXh0Q29u
dGVudCA9IExPUkVNX0lQU1VNLnN1YnN0cigKKyAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20o
KSoxMDApLCBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjAwKSsxNTApOworICBsaXN0Q29udGFp
bmVyLmFwcGVuZENoaWxkKGl0ZW0pOworfQorCit2YXIgaGVpZ2h0ID0gMDsKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgIGhlaWdodCsrOworICBsaXN0Q29udGFpbmVyLmZpcnN0Q2hpbGQuc3R5bGUu
aGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsKKyAgaWYgKGhlaWdodCA+IDUwKQorICAgIGhlaWdodCA9
IDA7Cit9CisKK2Z1bmN0aW9uIHNldHVwVGVzdCgpIHsKKyAgbGlzdENvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsaXN0Q29udGFpbmVyIik7CisgIGZvciAobGV0IGkgPSAwOyBp
IDwgNTAwMDsgKytpKSB7CisgICAgY3JlYXRlTGlzdEl0ZW0oKTsKKyAgfQorICBQZXJmVGVzdFJ1
bm5lci5mb3JjZUxheW91dCgpOworfQorCitvbmxvYWQgPSBzZXR1cFRlc3Q7CisKK3ZhciBpc0Rv
bmUgPSBmYWxzZTsKK1BlcmZUZXN0UnVubmVyLnByZXBhcmVUb01lYXN1cmVWYWx1ZXNBc3luYyh7
IGRvbmU6IGRvbmUsIHVuaXQ6ICdtcycgfSk7CitmdW5jdGlvbiBkb25lKCkgeworICBpc0RvbmUg
PSB0cnVlOworICBsaXN0Q29udGFpbmVyLmlubmVySFRNTCA9ICIiOworfQorCit2YXIgc3RhcnRU
aW1lOwordmFyIGhlaWdodCA9IDA7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICBpZiAoc3RhcnRU
aW1lKQorICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVWYWx1ZUFzeW5jKFBlcmZUZXN0UnVubmVy
Lm5vdygpIC0gc3RhcnRUaW1lKTsKKworICBpZiAoIWlzRG9uZSkgeworICAgIHN0YXJ0VGltZSA9
IFBlcmZUZXN0UnVubmVyLm5vdygpOworICAgIGxpc3RDb250YWluZXIuZmlyc3RDaGlsZC5zdHls
ZS5oZWlnaHQgPSBoZWlnaHQgKyAicHgiOworICAgIGhlaWdodCsrOworICAgIHdpbmRvdy5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUocnVuVGVzdCk7CisgIH0KK30KK3dpbmRvdy5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUocnVuVGVzdCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvTGF5b3V0L2xhcmdlLWdyaWQuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xhcmdl
LWdyaWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hNTNhMmFi
ZjM4Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGFyZ2UtZ3Jp
ZC5odG1sCkBAIC0wLDAgKzEsMTUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8aGVh
ZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cisg
ICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9VVRGLTgiPgorCis8c3R5bGU+CitodG1sLCBib2R5IHsgaGVpZ2h0OiAxMDAlIH0KK3Vp
LXBhbmUjbWFpbiB7CisgICAgY29udGFpbjogc3RyaWN0OworICAgIG1pbi13aWR0aDogMTAwJSAh
aW1wb3J0YW50OworICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CisgICAgbWF4LXdpZHRoOiAx
MDAlICFpbXBvcnRhbnQ7CisgICAgbWluLWhlaWdodDogMTAwJSAhaW1wb3J0YW50OworICAgIGhl
aWdodDogMTAwJSAhaW1wb3J0YW50OworICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsK
KyAgICBvdmVyZmxvdzogaGlkZGVuCit9CisKKworW3JvdzFdIHsKKyAgICBncmlkLXJvdy1zdGFy
dDogMTsKKyAgICBncmlkLXJvdy1lbmQ6IGF1dG8KK30KKworW3JvdzJdIHsKKyAgICBncmlkLXJv
dy1zdGFydDogMjsKKyAgICBncmlkLXJvdy1lbmQ6IGF1dG8KK30KKworCitbY29sMl0geworICAg
IGdyaWQtY29sdW1uLXN0YXJ0OiAyOworICAgIGdyaWQtY29sdW1uLWVuZDogYXV0bworfQorCit1
aS1wYW5lIHsKKyAgICBkaXNwbGF5OiBncmlkOworICAgIGhlaWdodDogMTAwJTsKKyAgICBjb250
YWluOiBjb250ZW50Cit9CisKK1toZ3JpZF0geworICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZy
Cit9CisKK1t2Z3JpZF0geworICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyCit9CisKK3Vp
LWljb24geworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKworW2NvbGxhcHNlZCBdIHsg
ZGlzcGxheTogbm9uZTsgfQorCisuZXZlbnRDaGlsZHJlbldyYXAgeworICAgIGdyaWQtY29sdW1u
OiAxL3NwYW4gMzsKKyAgICBjb250YWluOiBjb250ZW50Cit9CisKKy5ldmVudENoaWxkcmVuQ29u
dGFpbmVyIHsKKyAgICBkaXNwbGF5OiBncmlkOworICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczog
M2VtIDBweCAxZnI7CisgICAgY29udGFpbjogY29udGVudDsKK30KKworLmFjdGlvbkJsb2NrV3Jh
cCB7CisgICAgZ3JpZC1jb2x1bW46IDM7CisgICAgYWxpZ24tc2VsZjogc3RhcnQ7CisgICAgY29u
dGFpbjogbGF5b3V0IHN0eWxlOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZQorfQorCisuYWN0aW9u
QmxvY2sgeworICAgIGRpc3BsYXk6IGdyaWQ7CisgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAx
ZnI7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBjb250YWluOiBjb250ZW50Cit9CisKKzwv
c3R5bGU+CisKKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHByZSBpZD0ibG9nIj48L3ByZT4KKwor
ICAgIDx1aS1wYW5lIGlkPSJtYWluIiB2Z3JpZD0iIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1yb3dz
OiAxZnI7Ij4KKyAgICAgICAgPHVpLXBhbmUgaWQ9Im1pZGRsZSIgcm93MT0iIiBoZ3JpZD0iIiBz
dHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMjBweCAxZnIgMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDx1aS1wYW5lIGNvbDI9IiI+CisgICAgICAgICAgICAgICAgPHVpLWJvZHkgcm93Mj0iIj4K
KyAgICAgICAgICAgICAgICAgICAgPHVpLXBhbmUgY2xhc3M9ImV2ZW50U2hlZXRWaWV3UGFuZSI+
CisgICAgICAgICAgICAgICAgICAgICAgICA8dWktYm9keSByb3cyPSIiIGNsYXNzPSJldmVudFNo
ZWV0VmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRoaXNp
c3RoZW9uZSIgY2xhc3M9ImV2ZW50Q2hpbGRyZW5XcmFwIj4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV2ZW50Q2hpbGRyZW5Db250YWluZXIiPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbkJs
b2NrV3JhcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImFjdGlvbkJsb2NrIiBpZD0iaW5zZXJ0aGVyZSI+CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAg
PC91aS1ib2R5PgorICAgICAgICAgICAgICAgICAgICA8L3VpLXBhbmU+CisgICAgICAgICAgICAg
ICAgPC91aS1ib2R5PgorICAgICAgICAgICAgPC91aS1wYW5lPgorCisgICAgICAgIDwvdWktcGFu
ZT4KKyAgICA8L3VpLXBhbmU+CisKKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciB0YXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhpc2lzdGhlb25lJyk7CisKKyAgICAgICAgZnVu
Y3Rpb24gc2V0dXAoKSB7CisgICAgICAgICAgbGV0IGluc2VydCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbnNlcnRoZXJlJyk7CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNzUw
OyArK2kpIHsKKyAgICAgICAgICAgIGxldCBuYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgICAgICBuYW1lLmNsYXNzTmFtZSA9ICdhY3Rpb25OYW1lQ2VsbCc7Cisg
ICAgICAgICAgICBuYW1lLmlubmVySFRNTCA9ICc8dWktaWNvbiBzdHlsZT0id2lkdGg6IDIwcHg7
IGhlaWdodDogMjBweDsgIj48L3VpLWljb24+PHNwYW4gY2xhc3M9ImFjdGlvbk9iamVjdE5hbWVT
cGFuIj5CdXR0b248L3NwYW4+JzsKKyAgICAgICAgICAgIGxldCBkZXNjID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBkZXNjLmNsYXNzTmFtZSA9ICdhY3Rpb25E
ZXNjQ2VsbCc7CisgICAgICAgICAgICBkZXNjLmlubmVySFRNTCA9ICdTZXQgcG9zaXRpb24gdG8g
PGV2ZW50LXBhcmFtZXRlciBkYXRhLWluZGV4PSIwIj4gPHVpLWljb24gY2xhc3M9Im9iamVjdFBh
cmFtZXRlckljb24iIHN0eWxlPSJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyAiPjwvdWktaWNv
bj48c3BhbiBjbGFzcz0ib2JqZWN0UGFyYW1ldGVyT2JqZWN0TmFtZSI+U3ByaXRlPC9zcGFuPiA8
L2V2ZW50LXBhcmFtZXRlcj4gPGVtPihpbWFnZSBwb2ludCA8ZXZlbnQtcGFyYW1ldGVyIGRhdGEt
aW5kZXg9IjEiPjMyMTMyMTM8L2V2ZW50LXBhcmFtZXRlcj4pPC9lbT4nOworICAgICAgICAgICAg
aW5zZXJ0LmFwcGVuZENoaWxkKG5hbWUpOworICAgICAgICAgICAgaW5zZXJ0LmFwcGVuZENoaWxk
KGRlc2MpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCdjb2xsYXBzZWQnLCAnJyk7Cisg
ICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5mb3JjZUxheW91dCgpOworICAgICAgICAgICAgdGFy
Z2V0LnJlbW92ZUF0dHJpYnV0ZSgnY29sbGFwc2VkJyk7CisgICAgICAgICAgICBQZXJmVGVzdFJ1
bm5lci5mb3JjZUxheW91dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9uZSgp
IHsKKyAgICAgICAgICBsZXQgaW5zZXJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc2Vy
dGhlcmUnKTsKKyAgICAgICAgICBpbnNlcnQuaW5uZXJIVE1MID0gIiI7CisgICAgICAgIH0KKwor
ICAgICAgICBzZXR1cCgpOworICAgICAgICBQZXJmVGVzdFJ1bm5lci5tZWFzdXJlUnVuc1BlclNl
Y29uZCh7CisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIk1lYXN1cmVzIHBlcmZvcm1hbmNlIG9m
IGxheWluZyBvdXQgYSBsYXJnZSBncmlkLiIsCisgICAgICAgICAgICBydW46IHRlc3QsCisgICAg
ICAgICAgICBkb25lOiBkb25lCisgICAgICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgor
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW4tdXBk
YXRlLWxheWVyLXRyZWUuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvUGFpbnQvY29udGFpbi11cGRh
dGUtbGF5ZXItdHJlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu
LjY3NWI0ODVjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2Nv
bnRhaW4tdXBkYXRlLWxheWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzx0aXRsZT5Db250YWluIHVwZGF0ZSBsYXllciB0cmVlIHBlcmZvcm1hbmNlPC90aXRs
ZT4KKzxzdHlsZT4KKyN3cmFwcGVyIHsKKyAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLmNlbGwg
eworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJv
cmRlcjogc29saWQ7CisgIGNvbnRhaW46IHN0cmljdDsKK30KKy5wcm9ncmVzc2JhciB7CisgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMHB4OworICB0b3A6IDVweDsKKyAgaGVpZ2h0OiAx
MHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48
L3NjcmlwdD4KKzxwcmUgaWQ9ImxvZyI+PC9wcmU+Cis8ZGl2IGlkPSJ3cmFwcGVyIj48L2Rpdj4K
KzxzY3JpcHQ+CisgIGNvbnN0IENFTExfV0lEVEggPSAiNTAiOworICBjb25zdCBDRUxMX0hFSUdI
VCA9ICIyNSI7CisgIGNvbnN0IE5VTV9ST1dTID0gMTU7CisgIGNvbnN0IE5VTV9DT0xVTU5TID0g
MTU7CisgIGNvbnN0IERPTV9ERVBUSCA9IDEwOworCisgIGZ1bmN0aW9uIGNyZWF0ZUNvbnRlbnQo
ZGVwdGgpIHsKKyAgICBsZXQgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKSk7
CisgICAgY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXJhZ3Jh
cGgiKSk7CisgICAgaWYgKGRlcHRoID4gMCkKKyAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoY3Jl
YXRlQ29udGVudChkZXB0aCAtIDEpKTsKKyAgICByZXR1cm4gY29udGVudDsKKyAgfQorCisgIGZ1
bmN0aW9uIHNldHVwVGVzdCgpIHsKKyAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ3cmFwcGVyIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOVU1fUk9XUzsgaSsr
KSB7CisgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE5VTV9DT0xVTU5TOyBqKyspIHsKKyAgICAg
ICAgbGV0IGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgaWYg
KGkgPT0gMCAmJiBqID09IDApCisgICAgICAgICAgY2VsbC5pZCA9ICJ0YXJnZXQiOworICAgICAg
ICBjZWxsLmNsYXNzTGlzdC5hZGQoImNlbGwiKTsKKyAgICAgICAgY2VsbC5zdHlsZS53aWR0aCA9
IENFTExfV0lEVEggKyAicHgiOworICAgICAgICBjZWxsLnN0eWxlLmhlaWdodCA9IENFTExfSEVJ
R0hUICsgInB4IjsKKyAgICAgICAgY2VsbC5zdHlsZS5sZWZ0ID0gKGogKiBDRUxMX1dJRFRIKSAr
ICJweCI7CisgICAgICAgIGNlbGwuc3R5bGUudG9wID0gKGkgKiBDRUxMX0hFSUdIVCkgKyAicHgi
OworICAgICAgICBjZWxsLnN0eWxlLm92ZXJmbG93ID0gInZpc2libGUiOworCisgICAgICAgIGNl
bGwuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudChET01fREVQVEgpKTsKKworICAgICAgICB3cmFw
cGVyLmFwcGVuZENoaWxkKGNlbGwpOworICAgICAgfQorICAgIH0KKyAgfQorICBzZXR1cFRlc3Qo
KTsKKworICB2YXIgaXNEb25lID0gZmFsc2U7CisgIFBlcmZUZXN0UnVubmVyLnByZXBhcmVUb01l
YXN1cmVWYWx1ZXNBc3luYyh7CisgICAgZG9uZTogKCk9PiB7CisgICAgICBpc0RvbmUgPSB0cnVl
OworICAgIH0sCisgICAgdW5pdDogJ21zJworICB9KTsKKworICB2YXIgc3RhcnRUaW1lOworICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmIChzdGFydFRpbWUpCisgICAgICBQZXJmVGVzdFJ1
bm5lci5tZWFzdXJlVmFsdWVBc3luYyhQZXJmVGVzdFJ1bm5lci5ub3coKSAtIHN0YXJ0VGltZSk7
CisKKyAgICBpZiAoIWlzRG9uZSkgeworICAgICAgc3RhcnRUaW1lID0gUGVyZlRlc3RSdW5uZXIu
bm93KCk7CisgICAgICBsZXQgY2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQi
KTsKKyAgICAgIC8vIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBQYWludExheWVyOjpTZXROZWVkc0Nv
bXBvc2l0aW5nSW5wdXRzVXBkYXRlKCkuCisgICAgICBjZWxsLnN0eWxlLm92ZXJmbG93ID0gY2Vs
bC5zdHlsZS5vdmVyZmxvdyA9PSAiaGlkZGVuIiA/ICJ2aXNpYmxlIiA6ICJoaWRkZW4iOworICAg
ICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShydW5UZXN0KTsKKyAgICB9CisgIH0KKyAg
CisgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuVGVzdCk7Cis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvUGFpbnQvY29udGFpbm1lbnQtcmVzaXplLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW5tZW50LXJlc2l6ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg3NWJiMGFiNWIKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1BhaW50L2NvbnRhaW5tZW50LXJlc2l6ZS5odG1sCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBUaGlzIGNhc2UgaXMgYmFzZWQgb24g
dGhlIHRlc3QgaW4gY3JidWcuY29tLzY5MjYxNC4KKyAgICAgaHR0cHM6Ly93d3cuc2NpcnJhLmNv
bS9sYWJzL2J1Z3MvY29udGFpbmxheW91dHBlcmYtd29ya2Fyb3VuZC8gLS0+Cis8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+
Cis8c3R5bGU+CisjY29udGFpbmVyIHsKKyAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47CisgIGNv
bnRhaW46IGNvbnRlbnQ7CisgIHdpZHRoOiA2MDBweDsKK30KKy5pdGVtIHsKKyAgb3V0bGluZTog
MXB4IHNvbGlkIGJsdWU7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIGNvbnRhaW46IGNvbnRlbnQ7
Cit9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorPC9kaXY+CisKKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCBM
T1JFTV9JUFNVTT0iTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp
c2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0
IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3Ry
dWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29t
bW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGlu
IHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlh
dHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50
IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVt
LiI7CitmdW5jdGlvbiBjcmVhdGVMaXN0SXRlbSgpIHsKKyAgbGV0IHdyYXAgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgbGV0IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgaXRlbS5jbGFzc0xpc3QuYWRkKCdpdGVtJyk7CisgIGl0ZW0udGV4dENvbnRl
bnQgPSBMT1JFTV9JUFNVTTsKKyAgd3JhcC5hcHBlbmRDaGlsZChpdGVtKTsKKyAgY29udGFpbmVy
LmFwcGVuZENoaWxkKHdyYXApOworfTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQorICBjcmVhdGVMaXN0SXRlbSgpOworCit2YXIgaXNEb25lID0gZmFsc2U7CitQZXJmVGVzdFJ1
bm5lci5wcmVwYXJlVG9NZWFzdXJlVmFsdWVzQXN5bmMoeworICBkb25lOiAoKSA9PiB7CisgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICBjb250YWluZXIuaW5uZXJIVE1MID0gIiI7CisgIH0sCisgIHVu
aXQ6ICdtcycKK30pOworCit2YXIgdGFyZ2V0ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxk
LmZpcnN0RWxlbWVudENoaWxkOwordmFyIHN0YXJ0VGltZTsKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7
CisgIGlmIChzdGFydFRpbWUpCisgICAgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVZhbHVlQXN5bmMo
UGVyZlRlc3RSdW5uZXIubm93KCkgLSBzdGFydFRpbWUpOworCisgIGlmICghaXNEb25lKSB7Cisg
ICAgc3RhcnRUaW1lID0gUGVyZlRlc3RSdW5uZXIubm93KCk7CisgICAgdGFyZ2V0LnN0eWxlLmhl
aWdodCA9ICh0YXJnZXQub2Zmc2V0SGVpZ2h0IC0gMSkgKyAncHgnOworICAgIHdpbmRvdy5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUocnVuVGVzdCk7CisgIH0KK30KKword2luZG93LnJlcXVlc3RBbmlt
YXRpb25GcmFtZShydW5UZXN0KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9y
dW5uZXIuanMKaW5kZXggNjAxYmNkNzI1ZS4uNmU2ZGMwZGIxNiAxMDA3NTUKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvcmVz
b3VyY2VzL3J1bm5lci5qcwpAQCAtMTQ4LDYgKzE0OCwxNCBAQCBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICAgICAgZmluaXNoKCk7CiAgICAgfQogCisgICAgUGVyZlRlc3RSdW5uZXIuZm9y
Y2VMYXlvdXQgPSBmdW5jdGlvbiAoZG9jKSB7CisgICAgICAgIGRvYyA9IGRvYyB8fCBkb2N1bWVu
dDsKKyAgICAgICAgaWYgKGRvYy5ib2R5KQorICAgICAgICAgICAgZG9jLmJvZHkub2Zmc2V0SGVp
Z2h0OworICAgICAgICBlbHNlIGlmIChkb2MuZG9jdW1lbnRFbGVtZW50KQorICAgICAgICAgICAg
ZG9jLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgfTsKKwogICAgIGZ1bmN0aW9u
IHN0YXJ0KHRlc3QsIHJ1bm5lciwgZG9Ob3RMb2dTdGFydCkgewogICAgICAgICBpZiAoIXRlc3Qp
IHsKICAgICAgICAgICAgIGxvZ0ZhdGFsRXJyb3IoIkdvdCBhIGJhZCB0ZXN0IG9iamVjdC4iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>